{"version":3,"file":"kendo.dataviz.mobile.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendodataviz","mobile","js","this","breakpoints","EVENT","defaultBreakpoints","small","medium","large","mediaQuery","query","Object","assign","kendo","defaults","mediaQueryList","window","matchMedia","onEnterCallbacks","onLeaveCallbacks","onChangeHandlers","kendoMediaQuery","onChangeHandler","ev","forEach","cb","matches","addEventListener","onChange","push","onEnter","media","MediaQueryListEvent","onLeave","destroy","removeEventListener","createMediaQuery","packageMetadata","name","productName","productCodes","publishDate","version","replace","licensingDocsUrl","$","undefined$1","Template","cultures","extend","each","isArray","Array","noop","math","Math","JSON","support","percentRegExp","formatRegExp","boxShadowRegExp","numberRegExp","MONTH","HOUR","ZONE","WEEKDAY","QUARTER","DATE_FIELD_MAP","G","y","q","Q","M","L","d","E","c","e","h","H","k","K","m","s","a","t","x","X","z","Z","NAME_TYPES","month","type","minLength","standAlone","quarter","weekday","dayperiod","era","FUNCTION","STRING","NUMBER","OBJECT","NULL","BOOLEAN","UNDEFINED","PREFIX","ARIA_LABELLEDBY","ARIA_LABEL","getterCache","setterCache","slice","cssPropertiesNames","noDepricateExtend","src","copyIsArray","copy","options","clone","target","arguments","i","length","deep","jQuery","isPlainObject","Class","proto","member","fn","base","that","subclass","init","apply","prototype","constructor","_initOptions","deepExtend","isPresent","value","isBlank","isString","isNumeric","isNaN","parseFloat","isDate","getTime","isFunction","preventDefault","_defaultPrevented","isDefaultPrevented","Observable","_events","bind","eventName","handlers","one","idx","original","handler","eventNames","handlersIsFunction","unbind","first","unshift","trigger","events","sender","call","splice","compilePart","part","stringPart","split","join","charAt","rest","substring","argumentNameRegExp","encodeRegExp","escapedCurlyRegExp","curlyRegExp","escapedSharpRegExp","sharpRegExp","zeros","pad","number","digits","end","getHiddenDimensions","element","includeMargin","width","height","css","appendTo","outerWidth","outerHeight","remove","wrapResize","autosize","shouldCorrectWidth","_outerWidth","_outerHeight","parent","wrapper","closest","calculateFromHidden","hasClass","visible","is","wrapperStyle","style","elementHeight","display","position","test","add","show","hide","destination","deepExtendOne","source","property","propValue","propType","propInit","destProp","ObservableArray","data","LazyObservableArray","DataSource","HierarchicalDataSource","RegExp","ArrayBuffer","HTMLElement","Date","testRx","agent","rxs","dflt","rx","hasOwnProperty","toCamelCase","str","strMatch","g1","toUpperCase","getComputedStyles","properties","computedStyle","styles","document","defaultView","getComputedStyle","getPropertyValue","currentStyle","size","paramName","useWithBlock","render","template","html","compile","parts","settings","argumentName","match","functionBody","Function","_slotCount","floor","debugTemplates","Error","format","console","warn","gap","indent","rep","escapable","meta","toString","quote","string","lastIndex","charCodeAt","key","holder","v","partial","mind","toJSON","isFinite","String","valueOf","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","Number","Boolean","stringify","replacer","space","dateFormatRegExp","standardFormatRegExp","literalRegExp","commaRegExp","EMPTY","POINT","SHARP","ZERO","EN","objectToString","findCulture","culture","numberFormat","getCulture","current","pattern","decimals","groupSize","percent","symbol","currency","abbr","calendars","standard","days","names","namesAbbr","namesShort","months","AM","PM","patterns","D","F","g","T","u","Y","firstDay","twoDigitYearMax","cultureName","indexOf","calendar","groupInteger","start","integer","integerLength","newGroupSize","decimalIndex","groupSizes","shift","reverse","round","precision","negative","toFixed","min","fmt","date","minutes","result","sign","getDate","getDay","getMonth","getFullYear","getHours","getMinutes","getSeconds","getMilliseconds","getTimezoneOffset","abs","formatDate","isCurrency","isPercent","customPrecision","formatAndPrecision","fraction","ch","hasGroup","hasNegativeFormat","sharpIndex","zeroIndex","hasZero","hasSharp","currencyIndex","decimal","literals","replacement","toLocaleString","exec","toLowerCase","toExponential","quoteChar","literal","lastIndexOf","rounded","max","formatNumber","values","index","placeholderFormat","parseInt","_extractFormat","_activeElement","activeElement","documentElement","_round","nonBreakingSpaceRegExp","spaceRegExp","exponentRegExp","shortTimeZoneRegExp","longTimeZoneRegExp","dateRegExp","offsetRegExp","FORMATS_SEQUENCE","STANDARD_FORMATS","exact3","outOfRange","designatorPredicate","designator","mapDesignators","designators","map","lowerArray","array","lowerLocalInfo","localInfo","newLocalInfo","parseExact","strict","shouldUnpadZeros","count","pmHour","UTC","amDesignators","pmDesignators","hoursOffset","minutesOffset","lookAhead","longestDesignatorLength","from","sort","b","getNumber","rg","valueIdx","isInteger","unpadZero","substr","getIndexByName","lower","subLength","nameLength","subValue","matchLength","matchIdx","checkLiteral","year","day","hours","seconds","milliseconds","defaultYear","_lowerDays","_lowerMonths","setHours","adjustDST","setFullYear","internalParseDate","formats","tzoffset","offset","parseMicrosoftFormatOffset","timezone","convert","cultureFormats","formatIdx","concat","getDefaultFormats","parseDate","parseExactDate","percentSymbol","_scrollbar","scrollbar","refresh","div","createElement","cssText","innerHTML","body","appendChild","offsetWidth","scrollWidth","removeChild","isRtl","table","tbodyInnerHtml","touch","docStyle","transitions","transforms","elementProto","hasHW3D","WebKitCSSMatrix","cssFlexbox","prefix","hasTransitions","lowPrefix","event","devicePixelRatio","screenWidth","screen","availWidth","innerWidth","screenHeight","availHeight","innerHeight","detectOS","ua","minorVersion","os","notAndroidPhone","agentRxs","wp","fire","android","iphone","ipad","meego","webos","blackberry","playbook","windows","tizen","sailfish","ffos","osRxs","ios","flat","formFactorRxs","tablet","browserRxs","omini","omobile","firefox","mobilesafari","ie","chrome","webkit","navigator","device","browser","majorVersion","flatVersion","cordova","PhoneGap","appMode","standalone","location","protocol","mobileOS","userAgent","wpDevicePixelRatio","hasNativeScrolling","delayedClick","attr","mouseAndTouchPresent","detectBrowser","edge","safari","opera","msie","mozilla","documentMode","chromiumEdge","detectClipboardAccess","commands","queryCommandSupported","cut","paste","clipboard","zoomLevel","ie11WidthCorrection","docEl","scrollHeight","clientHeight","clientWidth","top","cssClass","docElement","addClass","eventCapture","input","placeholder","propertyChangeEvent","types","setAttribute","cssFloat","stableSort","sorted","field","matchesSelector","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","selector","nodeList","querySelectorAll","parentNode","pushState","history","hashChange","customElements","mobileChrome","crios","msPointers","MSPointerEvent","pointers","PointerEvent","kineticScrollNeeded","effects","prepareAnimationOptions","duration","complete","teardown","completeCallback","animate","instance","queue","promise","enabled","Element","dequeue","disable","promiseShim","enable","animatedPromise","kendoStop","clearQueue","gotoEnd","stop","kendoAnimate","kendoAddClass","classes","toggleClass","kendoRemoveClass","kendoToggleClass","toggle","ampRegExp","ltRegExp","quoteRegExp","aposRegExp","gtRegExp","eventTarget","touches","originalEvent","changedTouches","elementFromPoint","clientX","clientY","callback","on","mousedown","mouseup","mousemove","mousecancel","click","resize","localUrlRe","widgets","_widgetRegisteredCallbacks","ui","fx","dataviz","drawing","spreadsheet","messages","keys","INSERT","DELETE","BACKSPACE","TAB","ENTER","ESC","LEFT","UP","RIGHT","DOWN","END","HOME","SPACEBAR","PAGEUP","PAGEDOWN","F2","F10","F12","NUMPAD_PLUS","NUMPAD_MINUS","NUMPAD_DOT","ns","getShadows","shadow","radius","blur","left","right","bottom","wrap","autowidth","percentage","windowOuterWidth","removeClass","percentWidth","percentHeight","forceDimensions","isScrollable","dataset","className","overflow","scrollLeft","el","mozila","browserVersion","obj","toHyphens","getOffset","positioned","pageYOffset","pageXOffset","parseEffects","directions","down","up","in","out","htmlEncode","unescape","decodeURIComponent","error","_","m1","m2","fromCharCode","isLocalUrl","url","expr","expression","safe","members","wrapExpression","exprToArray","filter","getter","fields","setter","innerSetter","val","prop","props","pop","accessor","get","set","guid","random","id","chars","roleSelector","role","directiveSelector","directives","selectors","triggeredByInput","tagName","onWidgetRegistered","len","logToConsole","message","suppressLog","log","Widget","KendoLicensing","validatePackage","_showWatermarkOverlay","addWatermarkOverlay","dataSource","componentTypes","componentType","_hasBindingTarget","kendoBindingTarget","_tabindex","TABINDEX","tabindex","removeAttr","setOptions","_clearCssClasses","_setEvents","_applyCssClasses","force","getSize","currentSize","_size","_resize","dimensions","setSize","removeData","_destroy","validFill","widgetName","protoOptions","__proto__","cssProperties","propertyDictionary","_altname","getValidClass","widget","propName","fillMode","fill","_ariaLabel","labelId","inputElm","inputId","labelElm","ariaLabel","ariaLabelledBy","_generateLabelId","newOptions","currentOptions","themeColor","label","DataBoundWidget","dataItems","flatView","domElement","offsetHeight","notify","templateRegExp","jsonRegExp","jsonFormatRegExp","dashRegExp","parseOption","option","getAttribute","parse","parseOptions","containmentComparer","contains","resizableWidget","inArray","initWidget","roles","fullPath","widgetKeyRegExp","nodeType","widgetKey","isEmptyObject","rolesFromNamespaces","namespaces","find","addBack","widgetsArray","makeArray","widgetInstance","progress","container","leftRight","webkitCorrection","containerScrollLeft","mask","scrollTop","opacity","loading","prependTo","plugin","register","widgetEntry","args","method","ContainerNullObject","nullObject","MobileWidget","autoApplyNS","kendoDestroy","view","viewElement","viewHasNativeScrolling","useNativeScrolling","eq","focusable","isTabIndexNotNaN","nodeName","disabled","href","pseudos","parents","themes","views","touchScroller","elements","useNative","Scroller","kendoMobileScroller","suites","elementData","onResize","setTimeout","unbindResize","off","attrValue","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","kendoFocusable","MOUSE_EVENTS","MouseEventNormalizer","setupMouseMute","mouseTrap","bustClick","captureMouse","stopPropagation","muteMouse","clearTimeout","mouseTrapTimeoutID","unMuteMouse","eventMap","move","cancel","MSPointerEnter","MSPointerLeave","orig","fix","special","delegateType","bindType","handle","ret","related","relatedTarget","handleObj","origType","getEventMap","eventRegEx","applyEventMap","keyDownHandler","kendoKeydown","preventKendoKeydown","kendoJQuery","context","rootjQuery","search","touchstart","touchend","keyDownCallBack","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","Sun","Mon","Tue","Wed","Thu","Fri","Sat","ruleToDate","rule","targetDay","ourDay","time","cache","getUTCDay","setUTCDate","findRule","utcTime","rules","zone","grep","to","zoneAndRule","zones","zoneRules","until","findZone","info","fromOffset","toOffset","diff","tempToOffset","fromLocalOffset","toLocalOffset","toLocalDate","MS_PER_MINUTE","MS_PER_DAY","setDayOfWeek","dir","setDate","dayOfWeek","firstDayOfMonth","calcWeekInYear","weekStartDay","firstWeekInYear","newDate","addDays","moveDateToWeekStart","diffInMS","toInvariantTime","setTime","ignoreDST","difference","today","staticDate","addYear","currentDate","addLiteral","lastPart","isHour12","startsWith","text","searchString","isInDateRange","msValue","msMin","msMax","isInTimeRange","isToday","nextDay","previousDay","toUtcTime","MS_PER_HOUR","splitDateFormat","specifier","patternLength","formatLength","nameType","datePattern","replaceAll","hour12","dateFieldName","dateFields","dateFormatNames","lastDayOfMonth","last","timeOffset","weekInYear","prevWeekDate","nextWeekDate","weekNumber","firstDayOfYear","lastDayOfYear","nextYear","previousYear","stripWhitespace","createNodeIterator","iterator","NodeFilter","SHOW_TEXT","node","FILTER_ACCEPT","FILTER_REJECT","nextNode","referenceNode","textContent","trim","childNodes","child","nodeValue","animationFrame","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","animationQueue","queueAnimation","runNextAnimation","parseQueryStringParams","params","paramParts","elementUnderCursor","client","wheelDeltaY","jQueryEvent","delta","deltaY","wheelDelta","detail","axis","VERTICAL_AXIS","throttle","delay","timeout","lastExecTime","throttled","elapsed","caret","rangeElement","isPosition","selectionStart","focus","setSelectionRange","selectionEnd","selection","createTextRange","collapse","moveStart","moveEnd","select","rangeDuplicated","duplicate","moveToBookmark","createRange","getBookmark","setEndPoint","antiForgeryTokens","tokens","csrf_token","csrf_param","cycleForm","form","firstElement","lastElement","keyCode","shiftKey","focusElement","scrollTopPositions","scrollableParents","parentsUntil","setActive","focusNextElement","focussable","getWidgetFocusableElement","nextFocusable","addAttribute","attribute","removeAttribute","toggleAttribute","matchesMedia","_bootstrapToMedia","bootstrapMedia","xs","sm","md","lg","xl","fileGroupMap","audio","video","image","txt","presentation","programming","pdf","config","zip","getFileGroup","extension","withPrefix","fileTypeMap","groups","getFileSizeMessage","pow","selectorFromClasses","themeColorValues","fillValues","shapeValues","sizeValues","roundedValues","positionModeValues","resizeValues","overflowValues","layoutFlowValues","defaultValues","registerCssClass","shorthand","registerCssClasses","arr","fillModeValues","registerValues","j","newValues","currentValue","dict","widgetValues","validValue","widgetProperties","overridePrefix","registerPrefix","propertyToCssClassMap","getValidCssClass","applyStylesFromKendoAttributes","styleProps","styleProp","currentElement","$currentElement","kendoAttr","whenAll","resolveValues","remaining","deferred","Deferred","failed","rejectContexts","rejectValues","resolveContexts","updateFunc","contexts","notifyWith","done","fail","resolveWith","postToProxy","dataURI","fileName","proxyURL","proxyTarget","action","contentType","base64","submit","fileSaver","downloadAttribute","saveAsBlob","blob","atob","Uint8Array","Blob","buffer","msSaveBlob","saveAsDataURI","URL","createObjectURL","download","createEvent","initMouseEvent","dispatchEvent","revokeObjectURL","saveAs","save","forceProxy","proxyModelSetters","observable","defineProperty","dirty","getSeriesColors","series","colors","item","isElement","HTMLDocument","setDefaults","path","curr","DEBUG_KENDO_TEMPLATES","class2type","_i","setScriptKey","showBanner","scaleProperties","scale","scalex","scaley","scale3d","translateProperties","translate","translatex","translatey","translate3d","hasZoom","zoom","matrix3dRegExp","cssParamsRegExp","translateXRegExp","oldEffectsRegExp","singleEffectRegExp","unitRegExp","transformProps","transform2d","transform2units","rotate","skew","cssPrefix","PX","AUTO","WIDTH","HEIGHT","HIDDEN","ORIGIN","ABORT_ID","OVERFLOW","TRANSLATE","POSITION","COMPLETE_CALLBACK","TRANSITION","TRANSFORM","BACKFACE","PERSPECTIVE","DEFAULT_PERSPECTIVE","TRANSFORM_PERSPECTIVE","transition","vertical","modifier","horizontal","stopQueue","animationProperty","transformValue","step","elem","now","curProxy","cur","parseInteger","parseCSS","strip3DTransforms","normalizeCSS","lowerKey","isTransformed","transformation","cssValues","transform","computed","atan2","exclusive","ease","mirror","redirectedEffect","effect","$1","$2","direction","effectBody","timeoutID","oldKeys","stopTransitionCalled","stopTransition","speeds","merge","acc","propertyName","uniqueSort","unique","taskKeys","retainPosition","EffectSet","restore","run","jdx","children","childrenLength","setReverse","addRestoreProperties","prepare","effectName","reset","setup","resolve","restoreCallback","effectClass","effectSet","parsedEffects","capitalize","useTransition","multiple","single","isFixed","originalPosition","dX","dY","marginLeft","marginTop","Effect","_direction","_additionalEffects","_reverse","play","additional","_duration","compositeRun","_complete","shouldHide","word","createEffect","definition","opt1","opt2","opt3","theDirection","FOUR_DIRECTIONS","IN_OUT","createToggleEffect","defaultStart","defaultEnd","startValue","_startValue","endValue","_endValue","_shouldHide","startDataValue","divisor","tmp","previous","previousDivisor","slideIn","margin","origin","setLength","oldLength","realLength","TRANSFER_START_STATE","outerBox","box","innerBox","currentScale","fillScale","transformOrigin","CLIPS","ROTATIONS","clipInHalf","_container","rotation","zIndex","_clipInHalf","clip","append","face","_face","temporary","back","temp","reverseDirection","faceClone","backClone","staticPage","turningPage","transformStyle","RESTORE_OVERFLOW","_before","_after","transitionClass","_previous","_transitionClass","beforeTransition","afterTransition","_both","_element","_containerClass","containerClass","completeProxy","isAbsolute","both","Animation","_tickProxy","_tick","_started","tick","onEnd","onCancel","Transition","timePassed","startDate","moveTo","movable","initial","_easeProxy","moveAxis","easeOutExpo","easeOutBack","inner","outer","fitScale","CHANGE","SAME","BROKEN_BACK_NAV","hashStrip","absoluteURL","pathPrefix","host","hashDelimiter","bang","locationHash","stripRoot","root","HistoryAdapter","forward","replaceLocation","PushStateAdapter","navigate","title","replaceState","normalize","pathname","change","normalizeCurrent","fixedUrl","hash","hashBang","fixHash","fixBang","HashAdapter","_id","_interval","setInterval","clearInterval","History","adapter","createAdapter","historyLength","locations","_checkUrl","silent","_navigate","backCalled","decode","newLength","navigatingInExisting","prev","backButtonPressed","INIT","ROUTE_MISSING","BACK","optionalParam","namedParam","splatParam","escapeRegExp","namedParamReplace","optional","stripUrl","Route","route","ignoreCase","routeToRegExp","_callback","queryStringParams","_back","worksWith","Router","routes","_urlChangedProxy","_sameProxy","_backProxy","backProxy","urlChangedProxy","_urlChanged","same","_same","initEventObject","logic","or","identity","and","operatorsMap","isnullorempty","isnotnullorempty","doesnotcontain","doesnotendwith","doesnotstartwith","endswith","gt","gte","isempty","isnotempty","isnotnull","isnull","lt","lte","neq","startswith","transformFilter","operator","accentFoldingFiltering","itemProp","toLocaleLowerCase","typedGetter","convertValue","op","transformCompositeFilter","combiner","filters","extendAccentFolding","reduce","NEWLINE","DOUBLELINE","odataFilters","odataFiltersVersionFour","mappers","pageSize","page","useVersionFour","toOdataFilter","$filter","orderby","order","$orderby","skip","$skip","take","$top","defaultDataType","read","dataType","useOdataFour","stripMetadata","hex16","createBoundary","createDelimeter","boundary","close","createCommand","transport","httpVerb","command","transportUrl","commandPrefix","getOperationHeader","changeset","changeId","header","processCollection","colection","skipContent","requestBody","getBoundary","collection","content","getOperations","schemas","odata","results","total","transports","jsonp","update","create","parameterMap","$inlinecount","$format","batch","$count","colections","batchURL","headers","updated","destroyed","created","createBatchRequest","collections","ajax","success","response","responses","responseText","changeBody","status","code","marker","jsonModel","responseMarkers","markerIndex","models","passed","parseBatchResponse","XmlDataReader","model","errors","serialize","modelBase","Model","idField","xpathToMember","modelInstance","evaluate","record","_parse","xmlParse","xml","parseDOM","parsedNode","attributes","attributeCount","firstChild","nextSibling","intermediateResult","tree","parseXML","raw","readers","CREATE","READ","UPDATE","DESTROY","SYNC","GET","ERROR","REQUESTSTART","PROGRESS","REQUESTEND","ITEMSLOADED","ITEMLOAD","crud","o","objectKeys","ObservableObject","wrapAll","_loadPromises","_loadedNodes","at","serializeFunctions","json","object","isGroup","items","_loading","nodes","omitChangeEvent","howMany","omitCache","thisArg","reduceRight","every","some","empty","Symbol","_parent","eventHandler","_notifyChange","ownKeys","ignoreObjectKeys","filteredObjectKeys","protoKeys","getPrototypeOf","isPrimitiveType","getOwnPropertyNames","f","_handlers","uid","shouldSerialize","_set","composite","paths","isSetPrevented","isObservableArray","isDataSource","equal","xtype","parsers","boolean","default","_initializers","dirtyFields","_defaultId","fieldName","getFieldByName","editable","accept","isNew","originalName","functionFields","nullable","defaultValue","Comparer","compare","localeCompare","combine","comparers","StableComparer","asc","valueA","valueB","__position","desc","operators","textOp","impl","ignore","getMatchRegexp","esc","doesnotmatch","Query","normalizeSort","descriptor","descriptors","sortFields","sorts","sortObject","filterExpr","noEval","filterExprNoEval","expressions","fieldFunctions","operatorFunctions","operatorMap","equals","isequalto","equalto","ne","notequals","isnotequalto","notequalto","notequal","islessthan","lessthan","less","le","islessthanorequalto","lessthanequal","isgreaterthan","greaterthan","greater","isgreaterthanorequalto","greaterthanequal","ge","notsubstringof","normalizeOperator","normalizeFilter","compareDescriptor","f1","f2","normalizeDescriptor","fieldComparer","normalizeGroup","skipItemSorting","aggregates","normalizeGroupWithoutCompare","groupValueComparer","calculateAggregate","accumulator","state","aggr","functionName","aggregate","functions","compareFilters","expr1","expr2","filters1","filters2","toArray","range","inPlace","orderBy","orderByDescending","comparer","compiled","group","allData","getFilteredData","groupPaging","groupAllData","cachedFilteredData","hasSubgroups","itemCount","subgroupCount","groupBy","_sortForGrouping","groupValue","_sortGroups","sum","isNumber","average","process","groupDescriptorsWithoutSort","customGroupSort","groupDescriptors","anyGroupDescriptorHasCompare","groupDescriptorsWithoutCompare","normalizedSort","filterCallback","flatGroups","groupDescriptor","virtual","LocalTransport","RemoteTransport","Cache","parameters","operation","_store","clear","serializeRecords","getters","originalFieldNames","fieldNames","setters","convertRecords","convertGroup","wrapDataAccess","originalFunction","converter","wrapDataAccessBase","store","inmemory","DataReader","schema","dataFunction","_dataAccessFunction","groupsFunction","serializeFunction","serializeGetters","fromName","_wrapDataAccessBase","fillLastGroup","originalGroup","newGroup","currOriginal","currentNew","mergeGroups","dest","indexFunction","groupsLength","indexFn","groupIndex","itemIndex","flattenGroups","wrapGroupItems","eachGroupItems","func","replaceInRanges","ranges","replaceInRange","replaceWithObservable","serverGrouping","viewIndex","indexOfPristineModel","indexOfModel","fieldNameFromModel","convertFilterDescriptorsField","convertDescriptorsField","_map","_prefetch","_data","_pristineData","_ranges","_view","_pristineTotal","_destroyed","_pageSize","_page","_sort","_sortFields","_filter","_group","_aggregate","_total","_groupPaging","_groupsState","_shouldDetachObservableParents","Transport","pushCreate","_pushCreate","pushUpdate","_pushUpdate","pushDestroy","_pushDestroy","offlineStorage","_storage","getItem","localStorage","setItem","reader","_detachObservableParents","_observe","_online","serverSorting","serverPaging","serverFiltering","serverAggregates","inPlaceSort","online","sync","offlineData","_isGrouped","_isServerGrouped","_isServerGroupPaged","_isGroupPaged","_push","_readData","_flatData","useRanges","getByUid","_getByUid","_storeData","_addRange","_process","_observeView","insert","_createNewModel","_wrapInEmptyGroup","_insertModelInRange","pushInsert","rangeSpan","_getCurrentRangeSpan","pushed","autoSync","pristine","pristineData","_updatePristineForModel","_removeItems","itemsToRemove","removePristine","shouldRemovePristine","found","_eachItem","_removePristineForModel","pushMove","_moveItems","moved","dataItem","hasGroups","_pushInDestroyed","removeModel","_removeModelFromRanges","notFetched","promises","_sendSubmit","_send","when","then","changedItems","_accept","_syncEnd","_change","cancelChanges","_cancelModel","_changesCanceled","_markOfflineUpdatesAsDirty","__state__","hasChanges","serverGroup","_handleCustomErrors","_executeOnPristineForModel","_eachPristineItem","_pristineForModel","_modelCanceled","_submit","reject","_promise","converted","_params","_queueRequest","isPrevented","_dequeueRequest","_readAggregates","replaceSubset","_serverGroupsTotal","_aggregateResult","itemIds","_skip","endless","_changeHandler","updatePristine","timestamp","_timeStamp","outerStart","outerEnd","_sortRanges","_groupsFlat","_appendToGroupsFlat","_updateOuterRangesLength","_getGroupByUid","xhr","errorThrown","isExcelExportRequest","_requestInProgress","_pending","_shouldWrap","_updateTotalForAction","_operationsForUpdatedFields","updatedFields","_updatedFields","operations","stringified","partialUpdate","_preventPartialUpdate","_calculateAggregates","_take","currentRangeStart","_clearEmptyGroups","_queryProcess","resultData","dataToAggregate","_setView","_setFilterTotal","_mergeState","_currentRangeStart","moreItemsCount","_hasExpandedSubGroups","_findGroupedRange","itemsLength","groupCount","itemsToSkip","taken","_fetchGroupItems","_fetchingGroupItems","skipped","includeParents","excludeHeader","currentItems","_expandedSubGroupItemsCount","includeCurrentItems","subGroup","endSpecified","groupItemsSkip","firstItem","lastItem","expandedSubGroupItemsCount","groupItemCount","getGroupItems","subgroups","_composeItemsFilter","findSubgroups","_timeout","_groupItemsSuccessHandler","totalField","totalCount","_updateRangePristineData","countAdded","_currentRequestTimeStamp","_skipRequestsInProgress","indexOfCurrentGroup","currentGroup","dataLength","indexes","rangesLength","_containsSubGroup","_cloneGroup","subgroup","currentSubGroup","filterTotal","setDefaultValue","fetch","_query","next","totalPages","_pageableQueryOptions","getGroupsFlat","groupsTotal","includeExpanded","_calculateGroupsTotal","itemsField","ignoreState","_groupsTotal","countGroupRange","_emptyAggregates","ceil","inRange","_findRange","lastRange","firstItemUid","enableRequestsInProgress","pageSkip","_processRangeData","_originalPageSkip","_originalSize","_adjustPageSkip","_groupRangeExists","_rangeExists","prefetch","skipIdx","takeIdx","startIndex","endIndex","rangeData","rangeEnd","processed","flatData","prevRangeEnd","remote","groupMapOptions","isGroupPaged","startField","endField","_mergeGroups","_getRangesMismatch","mismatch","prevGroup","eventData","_omitPrefetch","paging","sorting","filtering","_prefetchSuccessHandler","_multiplePrefetch","prevRange","_getPrevRange","_getNextRange","availableItemsCount","_removeModelFromRange","_updateRangesLength","mismatchFound","mismatchLength","lengthDifference","rangeLength","transportOptions","fieldIndex","cells","cell","tbody","tBodies","rows","fieldCount","inferTable","optgroup","firstField","secondField","specified","inferSelect","Node","hasChildren","childrenField","childrenOptions","hasChildrenObject","_childrenOptions","_initChildren","_loaded","_updateChildrenField","loaded","level","_childrenLoaded","load","_matchFilter","dataMethod","_attachBubbleHandlers","_hierarchicalFilter","_childrenLoading","isLoading","_markHierarchicalQuery","_updateHierarchicalFilter","_find","inferList","list","textChild","textField","urlField","spriteCssClassField","imageUrlField","_dataSource","Buffer","viewSize","disablePrefetch","_prefetching","_reset","_syncWithDataSource","setViewSize","_recalculate","itemPresent","dataOffset","prefetchThreshold","midPageThreshold","nextMidRange","nextPageThreshold","nextFullRange","pullBackThreshold","previousMidRange","previousFullRange","_goToRange","nextRange","syncDataSource","prefetchOffset","expanding","_expanding","_syncPending","_firstItemUid","BatchBuffer","batchSize","batchBuffer","endreached","prefetching","prefetched","encode","binders","VALUE","SOURCE","EVENTS","CHECKED","deleteExpando","Binding","dependencies","_access","_parents","dependency","currentSource","EventBinding","TemplateBinding","Binder","bindings","binding","TypedBinder","parsedValue","_parseValue","dataSourceBinding","bindingName","_dataBinding","dataBinding","_dataBound","dataBound","_itemChange","itemChange","bindElement","_ns","removedItems","unbindElementTree","all","addedItems","hds","addedDataItems","multiselect","Select","MultiSelect","DropDownTree","treeview","retrievePrimitiveValues","dataValueField","readonly","dataFormat","invisible","valueUpdate","_initChange","autoBind","valueField","valueAttr","innerText","cloneNode","reference","insertBefore","unbindElementChildren","checked","selectedIndex","selected","valueIndex","valuePrimitive","sourceValue","optionIndex","optionValue","check","_range","floatingLabel","readOnly","_valueIsObservableObject","_valueIsObservableArray","_source","valueLength","sourceItem","dataTextField","isObservableObject","cascadeFrom","listView","bound","_preselect","dropdowntree","oldValues","selectedNode","nonPrimitiveValues","_isMultipleSelection","_getAllChecked","removeIndex","newValue","old","arraySplice","selectedValue","gantt","_isBound","scheduler","grid","badge","addLength","shifted","shiftedLength","BindingTarget","toDestroy","hasValue","hasSource","hasEvents","hasChecked","hasCss","widgetBinding","WidgetBindingTarget","specificBinders","applyBinding","binder","keyValueRegExp","whiteSpaceRegExp","parseBindings","token","colonIndex","createBindings","childrenCopy","unbindElement","bindingTargetForRole","dom","destroyWidget","bindingTarget","destroyWidgets","namespace","observableHierarchy","recursiveRead","TRANSITION_START","TRANSITION_END","SHOW","HIDE","sizzleErrorRegExp","SHOW_START","SAME_VIEW_REQUESTED","VIEW_SHOW","VIEW_TYPE_DETERMINED","AFTER","classNames","View","renderOnInit","_createElement","wrapInSections","_renderSections","_wrap","_evalTemplate","evalTemplate","_useWithBlock","_fragments","detachOnHide","detachOnDestroy","notInitialized","_eachFragment","ViewClone","triggerBeforeShow","triggerBeforeHide","showStart","showEnd","hideEnd","detach","purge","fragments","methodName","getElementById","contents","replaceWith","_wrapper","_createContent","_createHeader","_createFooter","contentSelector","contentElement","footer","Layout","containers","_createContainer","showIn","ViewContainer","Fragment","attach","transitionRegExp","running","after","locationID","theTransition","transitionData","parseTransition","ViewEngine","sandbox","_hideViews","rootView","layouts","viewContainer","showView","remoteViewURLPrefix","_findViewElement","reload","_createView","urlPath","wrapInner","_locate","_findViewElementById","_createSpaView","_createMobileView","defaultTransition","loader","getLayout","getLayoutProxy","modelScope","viewOptions","isJQueryPromise","isNativePromise","catch","signalr","hub","invoke","callbacks","_crud","server","OS","invalidZeroEvents","DEFAULT_MIN_HOLD","DEFAULT_THRESHOLD","PRESS","HOLD","SELECT","START","MOVE","CANCEL","TAP","DOUBLETAP","RELEASE","GESTURECHANGE","GESTUREEND","GESTURETAP","THRESHOLD","api","mouse","pointer","ENABLE_GLOBAL_SURFACE","touchDelta","touch1","touch2","x1","y1","x2","y2","dx","dy","center","distance","sqrt","getTouches","currentTarget","identifier","pointerId","TouchAxis","_updateLocationData","startLocation","velocity","timeStamp","timeDelta","initialDelta","Touch","userEvents","touchInfo","useClickAsTap","threshold","initialTouch","pressEvent","_clicks","supportDoubleTap","_moved","_finished","press","_holdTimeout","_hold","minHold","_trigger","_tap","_clickTimeout","preventMove","_shouldNotMove","_withinIgnoreThreshold","UserEvents","dispose","_start","endTime","activeTouches","isMoved","startTime","xDelta","yDelta","withEachUpEvent","downEvents","_maxTouches","multiTouch","allowSelection","captureUpIfMoved","fastTap","eventNS","surface","ownerDocument","pressed","defaultAction","touchAction","preventDragEvent","surfaceElement","preventIfMovingProxy","preventIfMoving","_isMoved","_disposeAll","capture","_isMultiTouch","_apiCall","_maxTouchesReached","_select","which","_move","_eachTouch","_end","_click","pageX","pageY","matchingTouch","ClickMoveClick","_downStarted","_down","_downTarget","_up","currentMilestone","_preventCancel","clickMoveClick","defaultThreshold","lastDropTarget","$window","draggables","dropTargets","dropAreas","KEYUP","DRAGSTART","DRAG","DRAGEND","DRAGCANCEL","HINTDESTROYED","DRAGENTER","DRAGLEAVE","DROP","numericCssPropery","within","containerBoundaries","minX","minY","TapCapture","_press","_release","attachEvent","captureNext","cancelCapture","PaneDimension","forcedEnabled","measure","scrollSize","makeVirtual","_virtualMin","_virtualMax","virtualSize","outOfBounds","forceEnabled","getTotal","rescale","scaledTotal","minScale","centerOffset","PaneDimensions","forcedMinScale","maxScale","newScale","centerCoordinates","PaneAxis","dimension","dragMove","resistance","translateAxis","Pane","elastic","gesturestart","gesture","gesturechange","coordinates","previousGesture","previousCenter","scaleDelta","offsetX","offsetY","scaleWith","TRANSFORM_STYLE","Movable","webkitTransformOrigin","_saveCoordinates","by","scaleTo","newCoordinates","destroyDroppable","groupName","droppables","DropTarget","draggable","dropTarget","_over","_out","_drop","dropped","destroyGroup","_cache","DropTargetArea","Draggable","_activated","_startClickMoveClick","_drag","_onCancel","hold","_afterEndHandler","_afterEnd","_captureEscape","cursorOffset","holdToDrag","showHintOnHold","autoScroll","preventOsHoldFeatures","cancelHold","_updateHint","boundaries","hintOffset","hint","_shouldIgnoreTarget","ignoreSelector","_hint","currentTargetOffset","cursorElement","_elementUnderCursor","_cursorElement","_scrollableParent","findScrollableParent","_lastEvent","_processMovement","autoScrollVelocity","scrollableViewPort","_scrollCompenstation","_scrollVelocity","_scrollInterval","_autoScroll","_withDropTarget","targetElement","compensation","yIsScrollable","xIsScrollable","isRootNode","scrollableRoot","yInBounds","xInBounds","_cancel","initialTarget","targets","areas","theTarget","theFilter","targetLen","areaLen","checkTarget","mouseX","mouseY","rect","AUTO_SCROLL_AREA","utils","RELEASECLASS","REFRESHCLASS","SCROLL","ZoomSnapBack","tapCapture","DragInertia","freeze","_moveTo","paneAxis","_snapBack","velocityMultiplier","friction","snapBack","AnimatedScroller","_updateCoordinates","setCoordinates","setCallback","ScrollBar","controlsId","elementSize","scrollMovable","alwaysVisible","paneSize","sizeRatio","_ariaValue","visibility","_native","prepend","scrollElement","fixedContainer","avoidScrolling","velocityX","velocityY","horizontalSwipe","verticalSwipe","pane","zoomSnapBack","animatedScroller","scrollTo","mousewheelScrolling","_wheelScroll","pulled","_initAxis","_wheelEnd","_wheel","_wheelY","pullToRefresh","_initPullToRefresh","ctrlKey","_wheelTimeout","pullOffset","visibleScrollHints","pullTemplate","releaseTemplate","refreshTemplate","contentResized","_scale","zoomOut","animatedScrollTo","pullHandled","refreshHint","hintContainer","yinertia","xinertia","_paneChange","_dragEnd","scrollBar","elementId","OPEN","CLOSE","DEACTIVATE","ACTIVATE","CENTER","TOP","BOTTOM","ABSOLUTE","BODY","LOCATION","VISIBLE","EFFECTS","ACTIVE","ACTIVECHILDREN","DOCUMENT_ELEMENT","WINDOW","NS","Popup","parentPopup","collisions","collision","downEvent","anchor","_hovered","scrollArea","animation","open","_animationClose","_mousedownProxy","_mousedown","_resizeProxy","toggleTarget","toggleEvent","viewport","copyAnchorStyles","modal","adjustSize","omitOriginOffsets","_hideActiveClass","_closing","_toggleResize","fixed","_shouldCorrectWidth","listbox","_resizeOnWrap","flipped","_position","_openAnimation","_addActiveClass","_location","skipEffects","openEffects","closeEffects","popup","_resizeTimeout","_scrollableParents","_fit","viewPortSize","output","_flip","anchorSize","boxSize","siblingContainer","parentZIndex","viewportOffset","viewportWidth","viewportHeight","isWindow","origins","positions","siblings","_align","pos","offsetParent","offsets","flipPos","wrapperHeight","appendToOffset","verticalOrigin","horizontalOrigin","verticalPosition","horizontalPosition","anchorOffset","anchorWidth","anchorHeight","tabKeyTrapNS","TabKeyTrap","trap","_keepInTrap","removeTrap","shouldTrap","_focusableElements","sortedElements","_sortFocusableElements","_nextFocusable","_focus","tabIndex","attrName","_haveSelectionRange","contentWindow","elementType","HTMLBase","stylingOptions","_addClasses","previouslyAddedClasses","outerHTML","KI_PREFFIX","KSVG_PREFFIX","FLIP_PREFIX","FLIP_HORIZONTAL","FLIP_VERTICAL","ICON_TYPES","svg","HTMLSvgIcon","font","HTMLFontIcon","FLIP_CLASSES","HTMLBaseIcon","flip","iconClass","_className","icon","currentIconClass","includes","svgElm","regex","iconNameMatch","svgIcons","viewBox","xmlns","renderIcon","iconType","getIconRenderer","accessibilityIcon","aggregateFieldsIcon","alignBottomIcon","alignCenterIcon","alignItemsBaselineAltIcon","alignItemsBaselineIcon","alignItemsCenterAltIcon","alignItemsCenterIcon","alignItemsEndAltIcon","alignItemsEndIcon","alignItemsStartAltIcon","alignItemsStartIcon","alignItemsStretchAltIcon","alignItemsStretchIcon","alignJustifyIcon","alignLeftIcon","alignMiddleIcon","alignRemoveIcon","alignRightIcon","alignSelfCenterAltIcon","alignSelfCenterIcon","alignSelfEndAltIcon","alignSelfEndIcon","alignSelfStartAltIcon","alignSelfStartIcon","alignSelfStretchAltIcon","alignSelfStretchIcon","alignToGridIcon","alignTopIcon","allIcon","anchorIcon","applyFormatIcon","arrowDownIcon","arrowLeftIcon","arrowOverflowDownIcon","arrowRightIcon","arrowRotateCcwIcon","arrowRotateCcwSmallIcon","arrowRotateCwIcon","arrowRotateCwSmallIcon","arrowUpIcon","arrowsAxesIcon","arrowsLeftRightIcon","arrowsMoveIcon","arrowsNoChangeIcon","arrowsNoRepeatIcon","arrowsSwapIcon","arrowsTopBottomIcon","barcodeIcon","barcodeOutlineIcon","barcodeQrCodeScannerIcon","barcodeScannerIcon","behanceBoxIcon","behanceIcon","bellIcon","binocularsIcon","bloggerBoxIcon","bloggerIcon","blurIcon","boldIcon","bookIcon","borderBottomIcon","borderColorIcon","borderLeftIcon","borderRadiusBottomLeftIcon","borderRadiusBottomRightIcon","borderRadiusIcon","borderRadiusTopLeftIcon","borderRadiusTopRightIcon","borderRightIcon","borderStyleBottomIcon","borderStyleIcon","borderStyleLeftIcon","borderStyleRightIcon","borderStyleTopIcon","borderTopIcon","borderTypeIcon","bordersAllIcon","bordersInsideHorizontalIcon","bordersInsideIcon","bordersInsideVerticalIcon","bordersNoneIcon","bordersOutsideIcon","bordersShowHideIcon","boxSizingIcon","brightnessContrastIcon","bringBackwardIcon","bringForwardIcon","bringToBackIcon","bringToFrontIcon","brushIcon","buildingBlocksIcon","buttonIcon","calculatorIcon","calendarDateIcon","calendarIcon","cameraIcon","cancelCircleIcon","cancelIcon","cancelOutlineIcon","caretAltDownIcon","caretAltExpandIcon","caretAltLeftIcon","caretAltRightIcon","caretAltToBottomIcon","caretAltToLeftIcon","caretAltToRightIcon","caretAltToTopIcon","caretAltUpIcon","caretBlIcon","caretBrIcon","caretDoubleAltDownIcon","caretDoubleAltLeftIcon","caretDoubleAltRightIcon","caretDoubleAltUpIcon","caretTlIcon","caretTrIcon","cartIcon","categorizeIcon","cellSplitHorizontallyIcon","cellSplitVerticallyIcon","cellsMergeHorizontallyIcon","cellsMergeIcon","cellsMergeVerticallyIcon","changeManuallyIcon","chartAreaClusteredIcon","chartAreaRangeIcon","chartAreaStacked100Icon","chartAreaStackedIcon","chartBarClusteredIcon","chartBarRangeIcon","chartBarStacked100Icon","chartBarStackedIcon","chartBubbleIcon","chartCandlestickIcon","chartChoroplethIcon","chartColumnClusteredIcon","chartColumnRangeIcon","chartColumnStacked100Icon","chartColumnStackedIcon","chartDoughnutIcon","chartLineIcon","chartLineMarkersIcon","chartLineStacked100Icon","chartLineStacked100MarkersIcon","chartLineStackedIcon","chartLineStackedMarkersIcon","chartOhlcIcon","chartPieIcon","chartRadarFilledIcon","chartRadarIcon","chartRadarMarkersIcon","chartRoseIcon","chartScatterIcon","chartScatterSmoothLinesIcon","chartScatterSmoothLinesMarkersIcon","chartScatterStraightLinesIcon","chartScatterStraightLinesMarkersIcon","checkCircleIcon","checkIcon","checkOutlineIcon","checkboxCheckedIcon","checkboxIcon","checkboxIndeterminateIcon","checkboxNullIcon","chevronDoubleDownIcon","chevronDoubleLeftIcon","chevronDoubleRightIcon","chevronDoubleUpIcon","chevronDownIcon","chevronLeftIcon","chevronRightIcon","chevronUpIcon","circleIcon","clearCssIcon","clipboardCodeIcon","clipboardHtmlIcon","clipboardIcon","clipboardMarkdownIcon","clipboardTextIcon","clipboardWordAltIcon","clipboardWordIcon","clockArrowRotateIcon","clockIcon","closedCaptionsIcon","cloudIcon","codeIcon","codeSnippetIcon","colResizeIcon","columnFreezeIcon","columnsIcon","commentIcon","commentRemoveIcon","commentsRemoveIcon","connectorIcon","convertLowercaseIcon","convertUppercaseIcon","copyFormatIcon","copyIcon","cropIcon","crosstabIcon","crosstabWizardIcon","csIcon","csprojIcon","css3Icon","cssIcon","customFormatIcon","customIconIcon","cutIcon","dataCsvIcon","dataIcon","dataJsonIcon","dataOdsIcon","dataRestIcon","dataSdsIcon","dataSqlIcon","dataWebIcon","decimalDecreaseIcon","decimalIncreaseIcon","decreaseHorizontalSpacingIcon","decreaseVerticalSpacingIcon","deliciousBoxIcon","deliciousIcon","detailSectionIcon","diggBoxIcon","diggIcon","dimensionsIcon","displayBlockIcon","displayFlexIcon","displayInlineBlockIcon","displayInlineFlexIcon","divIcon","divideIcon","documentManagerIcon","dollarIcon","downloadIcon","downloadLightIcon","dragAndDropIcon","dribbbleBoxIcon","dribbbleIcon","dropletIcon","dropletSlashIcon","dropletSliderIcon","editToolsIcon","envelopBoxIcon","envelopIcon","envelopLinkIcon","envelopeBoxIcon","envelopeIcon","envelopeLinkIcon","equalIcon","exclamationCircleIcon","exeIcon","exportIcon","eyeIcon","eyeSlashIcon","eyedropperIcon","facebookBoxIcon","facebookIcon","fileAddIcon","fileAscxIcon","fileAudioIcon","fileBacIcon","fileConfigIcon","fileCsvIcon","fileDataIcon","fileDiscImageIcon","fileErrorIcon","fileExcelIcon","fileFlashIcon","fileFooterIcon","fileHeaderIcon","fileHorizontalIcon","fileIcon","fileImageIcon","fileMdbIcon","filePdfIcon","filePptIcon","filePresentationIcon","fileProgrammingIcon","filePsdIcon","fileReportIcon","fileTxtIcon","fileTypescriptIcon","fileVideoIcon","fileWordIcon","fileWrenchIcon","fileZipIcon","filesErrorIcon","filmIcon","filterAddExpressionIcon","filterAddGroupIcon","filterClearIcon","filterIcon","filterSmallIcon","filterSortAscSmallIcon","filterSortDescSmallIcon","flashManagerIcon","flipHorizontalIcon","flipVerticalIcon","folderAddIcon","folderIcon","folderMoreIcon","folderOpenIcon","folderUpIcon","fontFamilyIcon","fontGrowIcon","fontShrinkIcon","fontSizeIcon","foregroundColorIcon","formElementIcon","formIcon","formatCodeBlockIcon","formulaFxIcon","forwardIcon","fullscreenExitIcon","fullscreenIcon","gapColumnIcon","gapRowIcon","gaugeLinearIcon","gaugeRadialIcon","gearIcon","gearsIcon","globeIcon","globeLinkIcon","globeOutlineIcon","globeUnlinkIcon","googleBoxIcon","googleIcon","googlePlusBoxIcon","googlePlusIcon","graphIcon","grayscaleIcon","greaterOrEqualIcon","gridIcon","gridLayoutIcon","groupBoxIcon","groupCollectionIcon","groupFooterSectionIcon","groupHeaderSectionIcon","groupIcon","groupSectionIcon","h1Icon","h2Icon","h3Icon","h4Icon","h5Icon","h6Icon","handIcon","handleDragIcon","handleResizeAltIcon","handleResizeIcon","hdIcon","heartIcon","heartOutlineIcon","homeIcon","horizontalRuleIcon","html5Icon","hyperlinkOpenIcon","hyperlinkOpenSmIcon","imageAbsolutePositionIcon","imageAddIcon","imageEditIcon","imageExportIcon","imageIcon","imageMapEditorIcon","imageResizeIcon","imagesIcon","importIcon","inboxIcon","increaseHorizontalSpacingIcon","increaseVerticalSpacingIcon","indentIcon","infoCircleIcon","infoSolidIcon","inheritedIcon","insertBottomIcon","insertMiddleIcon","insertTopIcon","invertColorsIcon","italicIcon","jsIcon","justifyContentAroundAltIcon","justifyContentAroundIcon","justifyContentBetweenAltIcon","justifyContentBetweenIcon","justifyContentCenterAltIcon","justifyContentCenterIcon","justifyContentEndAltIcon","justifyContentEndIcon","justifyContentStartAltIcon","justifyContentStartIcon","kpiStatusDenyIcon","kpiStatusHoldIcon","kpiStatusOpenIcon","launchIcon","layout1By4Icon","layout2By2Icon","layoutIcon","layoutSideBySideIcon","layoutStackedIcon","lessOrEqualIcon","letterSpaceIcon","levelDownIcon","levelToTopIcon","levelUpIcon","lineHeightIcon","linkAddIcon","linkIcon","linkVerticalIcon","linkedinBoxIcon","linkedinIcon","listLatinBigIcon","listLatinSmallIcon","listOrderedIcon","listRomanBigIcon","listRomanLowerIcon","listRomanSmallIcon","listRomanUpperIcon","listUnorderedIcon","listUnorderedOutlineIcon","listUnorderedSquareIcon","lockIcon","loginIcon","logoutIcon","makeHorizontalSpacingEqualIcon","makeSameHeightIcon","makeSameSizeIcon","makeSameWidthIcon","makeVerticalSpacingEqualIcon","mapMarkerIcon","mapMarkerTargetIcon","maxHeightIcon","maxWidthIcon","mediaManagerIcon","menuIcon","minHeightIcon","minWidthIcon","minusCircleIcon","minusIcon","minusOutlineIcon","minusSmIcon","mirrorIcon","moreHorizontalIcon","moreVerticalIcon","musicNotesIcon","myspaceBoxIcon","myspaceIcon","nonRecurrenceIcon","notEqualIcon","outdentIcon","outlineOffsetIcon","outlineWidthIcon","overlapIcon","paddingBottomIcon","paddingIcon","paddingLeftIcon","paddingRightIcon","paddingTopIcon","pageFooterSectionIcon","pageHeaderSectionIcon","paletteIcon","paneFreezeIcon","paperPlaneIcon","paperclipAltIcon","paperclipIcon","paragraphAddIcon","paragraphHeightIcon","paragraphMarkIcon","parameterBooleanIcon","parameterDateTimeIcon","parameterFloatIcon","parameterIntegerIcon","parameterStringIcon","parametersByteArrayIcon","parametersIcon","parametersUnknownIcon","passwordIcon","pauseIcon","pauseSmIcon","pencilIcon","percentIcon","photosIcon","pinIcon","pinterestBoxIcon","pinterestIcon","playIcon","playSmIcon","playlistIcon","plusCircleIcon","plusIcon","plusOutlineIcon","plusSmIcon","pointerIcon","positionBottomIcon","positionLeftIcon","positionRightIcon","positionTopIcon","printIcon","puzzlePieceIcon","qrCodeIcon","qrCodeOutlineIcon","qrCodeScannerIcon","questionCircleIcon","radiobuttonCheckedIcon","radiobuttonIcon","redditBoxIcon","redditIcon","redoIcon","regularExpressionIcon","removeHorizontalSpacingIcon","removeVerticalSpacingIcon","reorderIcon","replaceAllIcon","replaceSingleIcon","reportElementIcon","rewindIcon","rightDoubleQuotesIcon","rotateIcon","rotateLeftIcon","rotateRightIcon","roundCornersIcon","rowFreezeIcon","rowsIcon","rssBoxIcon","rssIcon","saveIcon","searchIcon","selectAllIcon","selectBoxIcon","setColumnPositionIcon","shapeLineIcon","shapesIcon","shareIcon","sharpenIcon","signatureIcon","silverlightIcon","sizeToGridIcon","slidersIcon","slnIcon","snapGridIcon","snapToGridlinesIcon","snapToSnaplinesIcon","sortAscIcon","sortAscSmallIcon","sortClearIcon","sortDescIcon","sortDescSmallIcon","sparklesIcon","spellCheckerIcon","starIcon","starOutlineIcon","stickIcon","stopIcon","stopSmIcon","strikethroughIcon","stripAllFormattingIcon","stripCssFormatIcon","stripFontElementsIcon","stripSpanElementsIcon","stripWordFormattingIcon","stumbleUponBoxIcon","stumbleUponIcon","subreportIcon","subscriptIcon","sumIcon","supscriptIcon","symbolIcon","tableAddIcon","tableAlignBottomCenterIcon","tableAlignBottomLeftIcon","tableAlignBottomRightIcon","tableAlignMiddleCenterIcon","tableAlignMiddleLeftIcon","tableAlignMiddleRightIcon","tableAlignRemoveIcon","tableAlignTopCenterIcon","tableAlignTopLeftIcon","tableAlignTopRightIcon","tableBodyIcon","tableCellDeleteIcon","tableCellIcon","tableCellPropertiesIcon","tableColumnDeleteIcon","tableColumnGroupsIcon","tableColumnInsertLeftIcon","tableColumnInsertRightIcon","tableCornerIcon","tableDeleteIcon","tableIcon","tablePositionCenterIcon","tablePositionEndIcon","tablePositionStartIcon","tablePropertiesIcon","tableRowDeleteIcon","tableRowGroupsIcon","tableRowInsertAboveIcon","tableRowInsertBelowIcon","tableUnmergeIcon","tableWizardIcon","tellAFriendBoxIcon","tellAFriendIcon","templateManagerIcon","textClipIcon","textOverflowIcon","textTruncateIcon","textWrapArrowIcon","textWrapIcon","textareaIcon","textboxHiddenIcon","textboxIcon","thumbDownIcon","thumbDownOutlineIcon","thumbUpIcon","thumbUpOutlineIcon","thumbnailsDownIcon","thumbnailsLeftIcon","thumbnailsRightIcon","thumbnailsUpIcon","tocSectionIcon","tocSectionLevelIcon","toggleFullScreenModeIcon","toolbarFloatIcon","trackChangesAcceptAllIcon","trackChangesAcceptIcon","trackChangesEnableIcon","trackChangesIcon","trackChangesRejectAllIcon","trackChangesRejectIcon","transparencyIcon","trashIcon","tumblrBoxIcon","tumblrIcon","twitterBoxIcon","twitterIcon","underlineIcon","undoIcon","ungroupIcon","unlinkIcon","unlinkVerticalIcon","unlockIcon","unpinIcon","unstickIcon","uploadIcon","userIcon","userOutlineIcon","validationDataIcon","validationXhtmlIcon","vbIcon","vbprojIcon","videoExternalIcon","vimeoBoxIcon","vimeoIcon","volumeDownIcon","volumeMuteIcon","volumeUpIcon","warningCircleIcon","warningTriangleIcon","wholeWordIcon","windowIcon","windowMinimizeIcon","windowRestoreIcon","wrenchIcon","xCircleIcon","xIcon","xOutlineIcon","yammerBoxIcon","yammerIcon","youtubeBoxIcon","youtubeIcon","zoomActualSizeIcon","zoomBestFitIcon","zoomInIcon","zoomOutIcon","FontIcon","_icon","SvgIcon","DOCUMENT","ARIAIDSUFFIX","DESCRIBEDBY","CONTENTLOAD","KCONTENTFRAME","TEMPLATE","autoHide","callout","IFRAMETEMPLATE","POSITIONS","REVERSE","DIRCLASSES","DIMENSIONS","restoreTitle","restoreTitleAttributeForElement","saveTitleAttributeForElement","saveTitleAttributes","TooltipBase","_isShownOnMouseEnter","_showOn","showOn","_keydown","showAfter","hideAfter","_saveTitle","_show","_isShownOnClick","_isShownOnFocus","_recalculatePopupDimensions","_positionCallout","elementOffset","offsetAmount","_offset","arrow","arrowWidth","isTopLeft","isFlipped","marginRule","_addDescribedBy","ariaId","describedBy","_removeDescribedBy","arrayAttr","finalArray","finalDescribedbyAttr","tooltipId","currentDescribedBy","_openPopup","Tooltip","_documentKeyDownHandler","_documentKeyDown","_mouseenter","_mouseleave","_blur","_appendContent","iframe","contentOptions","showIframe","_ajaxRequest","_verifyContentLoaded","resources","_initPopup","activate","_closeButtonClick","_closePopup","util","createPromise","promiseAll","extendStatic","namedColors","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgrey","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","matchNamedColor","color","colorNames","regexp","BaseColor","toHSV","toRGB","toHex","toBytes","toCss","toCssRgba","rgb","toDisplay","parseColor","other","NaN","c1","c2","r","Bytes","RGB","ref","HSV","toHSL","l","HSL","hex","alpha","n","p","hue2rgb","alphaFromHex","Color","this$1$1","resolvedColor","resolveColor","formatRegex","re","processor","channels","normalizeByte","padDigit","brightness","percBrightness","isDark","fromBytes","fromRGB","fromHSV","fromHSL","LRUCache","_length","put","entry","_head","_tail","newer","older","REPLACE_REGEX","normalizeText","objectKey","hashKey","defaultMeasureBox","DEFAULT_OPTIONS","baselineMarkerSize","TextMetrics","baseline","cacheKey","cachedResult","measureBox","baselineMarker","_baselineMarker","textStr","offsetTop","measureText","kendoDrawingUtil","kendoUtil","supportBrowser","HasObservers","Class$$1","observers","_observers","addObserver","removeObserver","_suspended","observer","optionsChange","geometryChange","suspend","resume","_observerField","append$1$1","second","arabicToRoman","roman","defined","defId","definitionId","DEG_TO_RAD","PI","MAX_NUM","MAX_VALUE","MIN_NUM","deg","radians","KEY_STR","encodeBase64","utfInput","hi","low","encodeUTF8","chr1","chr2","chr3","enc1","enc2","enc3","enc4","eventCoordinates","eventElement","isTransparent","limitValue","mergeSort","cmp","ai","bi","rad","degrees","power","valueOrDefault","bindEvents","getBoundingClientRect","clientTop","clientLeft","elementStyles","stylesArray","getPixels","size$1","unbindEvents","elementPadding","paddingLeft","paddingTop","Matrix","multiplyCopy","matrix","invert","det","separator","unit","angle","cos","sin","scaleX","scaleY","IDENTITY","matrixRegexp","transformMatrix","matrixString","parseMatrix","elementScale","parentElement","parentMatrix","toString$1","OptionsStore","HasObservers$$1","parentObj","_clear","wrapped","setAccessor","getAccessor","withAccessors","TBase","capitalized","defineAccessors","toMatrix","Point","superclass","staticAccessors","originPoint","translateWith","point","scaleCopy","transformCopy","distanceTo","doRound","arg0","arg1","arguments$1","maxX","maxY","minPoint","maxPoint","defineProperties","Size","Rect","cornerRadius","setOrigin","setCornerRadius","getOrigin","getCornerRadius","topLeft","bottomRight","topRight","bottomLeft","bbox","tl","tr","br","bl","fromPoints","expand","expandCopy","containsPoint","_isOnPath","rectOuter","rectInner","union","intersect","rect1","rect2","Transformation","_matrix","_optionsChange","multiply","transform$1","Element$1","prototypeAccessors","parentTransform","currentTransform","combinedMatrix","elementMatrix","clippedBBox","_clippedBBox","transformedPoint","_hasFill","_containsPoint","_hasStroke","stroke","ellipseExtremeAngles","ry","extremeX","extremeY","PI_DIV_2","Circle$2","Circle","setCenter","setRadius","getCenter","pointAt","_pointAt","extremeAngles","currentPointX","currentPointY","currentPoint","pointDistance","paintable","anonymous","newFill","IDENTITY_MATRIX_HASH","measurable","matrixHash","_bboxCache","_matrixHash","_bbox","strokeWidth","geometryAccessor","withGeometry","defineGeometryAccessors","geometry","rawBBox","_geometry","PRECISION","close$1","tolerance","closeOrLess","pow$1","Arc$2","Arc","radiusX","radiusY","startAngle","endAngle","anticlockwise","xRotation","radian","curvePoints","interval","_arcInterval","intervalAngle","subIntervalsCount","subIntervalAngle","currentAngle","nextAngle","points","_intervalCurvePoints","cp1","cp2","p2","endPoint","currentAngleX","bboxStartAngle","currentAngleY","oldStart","p1","p1Derivative","_derivativeAt","p2Derivative","angleRad","pointRadius","startPoint","intersection","p0","p3","s1x","s2x","s1y","s2y","nx","ny","lineIntersection","calculateAngle","inAngleRange","largeArc","swipe","arcParameters","cosine","sine","xT","yT","xt2","yt2","rx2","ry2","constT","cxT","cyT","cx","cy","uX","uY","vX","vY","acos","angleCosine","signEndAngle","normalizeArcParameters","ElementsArray","_splice","_add","_remove","_clearObserver","_setObserver","GeometryElementsArray","ElementsArray$$1","isOutOfEndPoint","controlPoint","calculateCurveAt","t1","toCubicPolynomial","ComplexNumber","real","img","cNumber","addConstant","negate","multiplyConstant","nthRoot","rad$$1","nthR","isReal","numberSign$1","solveCubicEquation","squareRoot","solveQuadraticEquation","y3","z1","z2","b3a","hasRootsInRange","rootField","polynomial","roots","lineIntersectionsCount","intersects","pointAccessor","withPoints","definePointAccessors","Segment","controlIn","controlOut","bboxTo","toSegment","segmentAnchor","toSegmentAnchor","_curveBoundingBox","_lineBoundingBox","extremesX","_curveExtremesFor","extremesY","xLimits","arrayLimits","yLimits","extremes","_curveExtremes","x3","x4","t2","_intersectionsTo","segment","intersectionsCount","rayIntersection","curveIntersectionsCount","_isOnCurveTo","endSegment","p4","rotatedPoints","_isOnLineTo","_isOnPathTo","WEIGHT","EXTREMUM_ALLOWED_DEVIATION","removeDuplicates","lineFunction","getControlPoints","tangent","xField","yField","restrict","switchOrientation","calculateFunction","isLine","getTangent","monotonic","isMonotonicByField","invertAxis","numberSign","secondCP","secondControlPoint","oldXField","firstCP","firstControlPoint","restrictControlPoint","cp","xValue","yValue","ShapeMap","isRelative","lineTo","curveTo","toLineParamaters","arcTo","lastControlIn","previousCommand","segments","reflectionPoint","cubicControlPoints","quadraticToCubicControlPoints","isVertical","insertPosition","third","scaledPoint","SEGMENT_REGEX","SPLIT_REGEX","parsePath","pathInstance","closePath","parseParameters","elementsBoundingBox","applyTransform","boundingBox","elementBoundingBox","elementsClippedBoundingBox","SPACE","Path","lineJoin","point$$1","lastSegment","arc","_addArcSegments","closed","segmentStart","segmentEnd","currentType","print","pathWidth","segmentBox","MultiPath","fromRect","curveFromPoints","pointsIn","initialControlPoint","lastControlPoint","controlPoints","cp0","controlPoints$1","controlPoints$2","tangent$2","pointsToCurve","fromArc","prototypeAccessors$1","toPath","Text","Image$1","Image","_rect","traversable","traverse","Group","childrenChange","_reparent","insertAt","removeAt","newParent","translateToPoint","transofrm","alignStart","align","sizeField","alignStartReverse","alignContent","justifyContent","alignItems","spacing","orientation","lineSpacing","revers","forEachReverse","Group$$1","_fieldMap","_initMap","fieldMap","groupsSizeField","groupAxis","groupsAxis","justifyAlign","reflow","elementStart","groupBox","_initGroups","groupsSize","ref$1","groupOrigin","elementOrigin","groupStart","arrangeElements","groupIdx","lineSize","bboxes","scaledStart","newStart","_newGroup","addGroup","_addToGroup","Rect$2","Rect$$1","alignElements","alignment","stackElements","stackAxis","otherAxis","previousBBox","createStackElements","wrapElements","stacks","maxSize","stack","stackSize","addElementToStack","getStacks","startElement","elementIdx","StopsArray","optionsAccessor","GradientStop","arg","defineOptionsAccessors","Gradient","stops","_createStops","_userSpace","userSpace","addStop","removeStop","LinearGradient","RadialGradient","_radius","_fallbackFill","fallbackFill","instance$1","easingFunctions","swing","linear","easeOutElastic","asin","AnimationFactory","_items","_options","easing","finish","abort","loop","_stopped","wallTime","easingPosition","PathParser","BaseNode","srcElement","observe","removeSelf","invalidate","Surface$2","Observable$$1","Surface","_kendoExportVisual","exportVisual","_handler","_mousemove","_visual","_enableTracking","draw","domNode","_kendoNode","suspendTracking","_suspendedTracking","resumeTracking","_elementOffset","padding","_surfacePoint","coord","inverseTransform","renderAttr","renderAllAttr","attrs","renderStyle","NODE_MAP","SVG_NS","NONE","styleAttr","replaceStyleAttr","restoreStyleAttr","styleString","applyStyle","renderSVG","testFragment","testContainer","hasParser","DOMParser","namespaceURI","chartDoc","parseFromString","importedDoc","adoptNode","renderSVG$1","DefinitionMap","isDefinition","BaseNode$$1","definitions","clearDefinitions","childNode","createDefinitions","attachTo","setElement","childElement","renderChildren","updateDefinition","accessibilityOptionsChange","allAttr","toggleAttr","allCss","classList","mapTransform","renderTransform","transformChange","mapStyle","cursor","renderOpacity","renderId","renderClassName","renderRole","renderAriaLabel","renderAriaRoleDescription","ariaRoleDescription","renderAriaChecked","ariaChecked","hasDefinitions","definitionChange","refUrl","renderDefinitions","mapDefinitions","skipBaseHref","baseHref","baseUrl","getElementsByTagName","hashIndex","GradientStopNode","Node$$1","renderOffset","GradientNode","loadStops","stopNode","mapCoordinates","renderCoordinates","mapSpace","LinearGradientNode","GradientNode$$1","RadialGradientNode","ClipNode","renderClipRule","DefinitionNode","definitionMap","addDefinitions","removeDefinitions","createDefinition","addDefinition","mapItem","removeDefinition","RootNode","defs","firstElementChild","DASH_ARRAYS","dot","dash","longdash","dashdot","longdashdot","longdashdotdot","SOLID","BUTT","ATTRIBUTE_MAP","PathNode","renderData","mapFill","mapStroke","undefined","renderLinecap","dashType","renderDashType","renderStroke","dashArray","lineCap","renderFill","ArcNode","PathNode$$1","CircleNode","GroupNode","ImageNode","mapPosition","mapSource","renderPosition","renderSource","MultiPathNode","RectNode","ENTITY_REGEX","decodeEntities","TextNode","setY","renderContent","renderTextAnchor","rtl","renderPaintOrder","paintOrder","Surface$3","BaseSurface","_root","_template","_rootElement","ctm","getScreenCTM","alignToScreen","mouseover","mouseout","visual","svgStyles","NODE_MAP$2","Node$2","initClip","clearClip","setClip","ctx","beginPath","renderPoints","setTransform","loadElements","cors","setOpacity","globalAlpha","opactity","GroupNode$2","renderTo","RootNode$2","canvas","getContext","invalidateHandler","_invalidate","_rescale","_devicePixelRatio","fixedScale","clearRect","QuadRoot","shapes","shape","_quadNode","pointShapes","QuadNode","QuadRoot$$1","inBounds","nodeRect","nodeBottomRight","inserted","halfWidth","halfHeight","ROOT_SIZE","ShapesQuadTree","initRoots","rootMap","rootElements","pointShape","sectorRoot","assignZindex","zIndexComparer","levelWeight","_zIndex","bboxChange","_insertShape","elementsArray","_insert","sectors","getSectors","inRoot","bottomX","bottomY","SurfaceCursor","renderPath","prevOut","bezierCurveTo","_resetCursor","_shapeCursor","_current","_defaultCursor","_getCursor","_setCursor","PathNode$2","setLineDash","setLineCap","setLineJoin","setFill","setStroke","hasFill","setGradientFill","fillStyle","gradient","createLinearGradient","createRadialGradient","addColorStop","addGradientStops","strokeStyle","lineWidth","mozDash","webkitLineDash","ArcNode$2","CircleNode$2","ImageNode$2","onLoad","onError","crossOrigin","onload","onerror","drawImage","MultiPathNode$2","RectNode$2","TextNode$2","textAlign","strokeText","fillText","instance$2","support$1","Surface$4","_mouseTrackHandler","_trackMouse","_searchTree","_cursor","rootElement","loadingStates","resolveDataURL","toDataURL","currentShape","_currentShape","hasDocument","SurfaceFactory","implementation","hasFeature","preferred","exportGroup","rootGroup","exportRoot","svg$1","slice$1$1","thing","KENDO_PSEUDO_ELEMENT","KENDO_BULLET_TYPE","IMAGE_CACHE","nodeInfo","microsoft","TextRect","Text$$1","_pdfRect","setCSS","cloneNodes","$el","$clone","dive","canvases","canvas$$1","parseBackgroundImage","tok_linear_gradient","tok_percent","tok_length","tok_keyword","tok_angle","tok_whitespace","tok_popen","tok_pclose","tok_comma","tok_url","tok_content","cache1","cache2","tok","skip_ws","read_stop","to1","to2","num","parseAngle","read_linear_gradient","read_url","splitProperty","last$$1","in_paren","in_string","looking_at","getFontURL","getFontHeight","getFontFaces","doc","styleSheets","doStylesheet","ss","cssRules","ex","styleSheet","family","bold","italic","findFonts","addRule","addRules","incCounter","inc","resetCounter","doCounters","def","updateCounters","counterReset","counterIncrement","parseColor$1","whenImagesAreActuallyLoaded","pending","images","cacheImages","urls","getComputedStyle$1","bg","alphaNumeral","pushNodeInfo","decoration","createsStackingContext","_stackingContext","popNodeInfo","updateClipbox","_clipbox","pseudoElt","defa","pleaseSetPropertyValue","important","setProperty","getBorder","side","saveStyle","getBorderRadius","sanitizeRadius","getContentBox","wt","wr","wb","wl","radiansToDegrees","setTransform$1","setClipping","clipPath","addArcToPath","adjustBorderRadiusForBox","rTL","rTR","rBR","rBL","tl_x","tl_y","tr_x","tr_y","br_x","br_y","bl_x","bl_y","elementRoundBox","bt","bb","pt","pr","pb","pl","roundBox","rTL0","rTR0","rBR0","rBL0","formatCounter","evalPseudoElementContent","displayCounter","getAllCounters","getCounter","getCssText","_renderWithPseudoElements","fake","pseudo","saveClass","_renderElement","kind","place","psel","backgroundColor","textOverflow","saveTextOverflow","backgroundImage","backgroundRepeat","backgroundPosition","backgroundOrigin","backgroundSize","boxes","innerbox","getClientRects","tableBorderLeft","tableBorderTop","tableBox","firstCellBox","adjustBoxes","drawOneBox","_avoidLinks","selectNodeContents","_pdfLink","listStyleType","listStylePosition","_drawBullet","bullet","boxSizing","renderElement","elementIndex","drawBullet","clipit","isFormField","exportDOMVisual","wrap$$1","maybeRenderWidget","bulletType","rectSize","circle","maybeRenderBullet","renderContents","drawEdge","Wtop","Wleft","Wright","rl","rr","transform$$1","drawRoundCorner","ri","drawOneBackground","background","drawBackgroundImage","pxlen","scaledAngle","atan","implicit","img_width","img_height","renderBG","aspect_ratio","orgBox","rewX","rewY","repeatX","isFirst","isLast","drawBackground","shouldDrawLeft","shouldDrawRight","inv","renderImage","zIndexSort","sa","sb","za","zb","pa","renderFormField","tag","renderCheckbox","whiteSpace","selectedOptions","getSelectedOption","serializer","XMLSerializer","serializeToString","svg$$1","serializeSVG","floats","renderText","floating","fontSize","lineHeight","isJustified","columnCount","textTransform","estimateLineLength","prevLineBottom","underline","lineThrough","overline","underlineOffset","forEachRect","underlinePos","drawTextLine","doChunk","selectNode","clientRects","actuallyGetRangeBoundingRect","rectangles","Infinity","origStart","setStart","setEnd","findEOL","eol","startOffset","cc","drawText","textBox","ypos","getTransform","main","_dom_zIndex","groupInStackingContext","mmul","a1","b1","d1","e1","a2","b2","d2","exportImage","surfaceOptions","exportSVG","vAlign","vStack","vWrap","fit","drawDOM","defineFont","doOne","cls","avoidLinks","forceBreak","forcePageBreak","hasPaperSize","paperSize","paperOptions","getPaperOptions","pageWidth","pageHeight","hasMargin","multiPage","_ignoreMargin","makeTemplate","pages","_destructive","adjust","tfoot","ol","li","paddingRight","beforePageBreak","doPageBreak","splitElement","makePage","pageNum","keepTogether","tableLayout","bottomPadding","bottomBorder","saveAdjust","breakAtElement","fall","fallsOnMargin","splitText","firstInParent","colgroup","thead","gridHead","querySelector","repeatHeaders","setStartBefore","setEndBefore","extractContents","preventBulletOnListItem","pageClassName","available","nextnode","findEOP","endOffset","handlePageBreaks","canceled","TOOLTIP_CLOSE_TEMPLATE","SurfaceTooltip","_tooltipOptions","popupOptions","_openPopupHandler","_bindEvents","hideDelay","_showHandler","_showEvent","_surfaceLeaveHandler","_surfaceLeave","_mouseleaveHandler","_mousemoveHandler","_hideClick","_tooltipLeave","getPopup","shared","_tooltipShape","tooltip","_updateContent","tooltipOffset","_instance","surfaceOffset","_showTimeout","_autoHide","_measure","_closeButton","_popupRelatedTarget","DrawingSurface","_triggerInstanceHandler","_triggerInstanceEvent","_bindHandler","hideTooltip","_tooltip","showTooltip","geometryTransform","__common_getter_js","ARC","AXIS_LABEL_CLICK","BLACK","CIRCLE","CROSS","DATE","DEFAULT_FONT","DEFAULT_PRECISION","FORMAT_REGEX","INSIDE","MIN_VALUE","NOTE_CLICK","NOTE_HOVER","NOTE_LEAVE","OUTSIDE","ROUNDED_RECT","TRIANGLE","WHITE","constants","ARROW_UP","ARROW_DOWN","ARROW_LEFT","ARROW_RIGHT","ARIA_ACTIVE_DESCENDANT","COORD_PRECISION","DEFAULT_HEIGHT","DEFAULT_WIDTH","ESCAPE","HIGHLIGHT_ZINDEX","INHERIT","SQUARE","RECT","DEFAULT_SERIES_OPACITY","POINTER","HORIZONTAL","VERTICAL","classArray","SPACE_REGEX","alignPathToPixel","clockwise","angle1","angle2","isObject","styleValue","SIZE_STYLES_REGEX","isSizeField","getSpacing","defaultSpacing","TemplateService","getTemplate","userImplementation","HashMap","Map","TRIGGER","InstanceObserver","handlerMap","callObserver","fnName","requiresHandlers","FontLoader","setDefaultOptions","fetchFonts","fonts","depth","loadFonts","Promise","preloadFonts","addClasses","svgElement","createElementNS","sparseArrayLimits","autoTextColor","DELETED","LegacySet","_index","_values","has","delete","SetWrapper","Set","Matrix$1","row","col","line","includeEmpty","transpose","va","vb","inverse","augment","imax","argmax","returned","i$1","j$1","k$1","i$2","j$2","STRING$1","eventName$1","eventArgs","autoMajorUnit","relativeValue","theta","cosT","sinT","onCircle","Box","targetBox","wrapPoint","arrayPoint","snapTo","alignTo","targetCenter","shrink","dw","dh","unpad","getHash","overlaps","r1","rotatePoint","r2","r3","r4","toRect","hasSize","sizeFunc","Ring","innerRadius","middle","newRadius","radianAngle","ax","ay","adjacentBox","sector","midAndle","midPoint","hw","hh","ca","vector","startVector","endVector","dist","getBBox","angles","allAngles","numericComparer","startAngleIndex","endAngleIndex","Sector","ShapeBuilder","createRing","innerEnd","ChartElement","initUserOptions","currentChild","getRoot","getSender","service","getService","chartService","translateChildren","childrenCount","renderVisual","createVisual","addVisual","createAnimation","renderComplete","chartElement","appendVisual","childVisual","noclip","clipRoot","stackRoot","stackVisual","isStackRoot","visuals","sibling","matched","hasHighlight","highlight","createHighlight","toggleHighlight","customVisual","_highlight","highlightOptions","highlightVisualArgs","category","runningTotal","toggleFocusHighlight","accessibility","focusHighlight","_focusHighlight","highlightColor","focusHighlightOptions","border","createFocusHighlight","createGradientOverlay","gradientOptions","overlay","createGradient","supportsPointInactiveOpacity","BoxElement","shrinkToFit","hasSetSize","borderWidth","reflowPaddingBox","paddingBox","contentBox","hasBox","visualStyle","ShapeElement","pointData","getElement","borderRadius","visualOptions","accessibilityOptions","RADIAL","GRADIENTS","glass","sharpBevel","roundedBevel","roundedGlass","supportVML","sharpGlass","bubbleShadow","boxDiff","RootElement","rootOptions","gradients","currentBox","createBackground","drawingGradient","hashCode","usedSpace","currentStops","currentStop","innerRadialStops","cleanGradients","FloatElement","_initDirection","elementAxis","groupSizeField","elementSizeField","groupSpacing","elementSpacing","vSpacing","reflowChildren","groupOptions","maxGroupElementsSize","groupsCount","groupsStart","groupElements","groupElementsCount","elementSize$$1","groupElementStart","elementBox","groupElementsSize","DrawingText","rectToBox","ROWS_SPLIT_REGEX","TextBox","_initContainer","_autoReflow","floatElement","textOptions","rowIdx","visualFn","_boxReflow","visualBox","visualContext","normalBox","rotatedBox","rotationTransform","getDefaultVisual","boxCenter","Title","_textBox","collapseVerticalMargins","prevBox","buildTitle","defaultOptions","titleOptions","orderTitles","titles","AxisLabel","alignRotation","rotationMatrix","rotationOrigin","alignAxis","distanceAxis","axisAnchor","alignEnd","distanceLeft","distanceRight","alignCenter","Note","childAlias","noteTemplate","auto","aliasFor","wrapperBox","lineStart","linePoints","createLine","defaultVisual","over","current$1","IntlService","FORMAT_REPLACE_REGEX","FormatService","intlService","_intlService","formatString","intl","localeAuto","locale","current$2","ChartService","chart","isPannable","pannable","lock","DomEventsBuilder","services","createAxisTick","tickOptions","tickX","tickY","createAxisGridLine","gridLine","lineEnd","Axis","labels","majorTickSize","minorTickSize","minorTicks","minorTickType","majorTicks","majorTickType","initFields","_deferLabels","createLabels","createTitle","createNotes","labelsRange","labelsCount","normalizeLabelRotation","labelOptions","clearLabels","autoRotateLabels","labelContext","createAxisLabel","clearTitle","lineBox","axisX","axisY","visualSize","notes","parseNoteValue","note","createPlotBands","gridLinesVisual","gridLines","_gridLines","createTicks","lineGroup","majorUnit","tickLineOptions","tickPositions","skipUnit","getMajorTickPositions","getMinorTickPositions","minorUnit","_alignLines","_lineGroup","getActualTickSize","tickSize","_backgroundPath","plotBands","plotArea","_plotbandGroup","altAxis","axes","slotX","slotY","getSlot","createPlotBandLabel","bandRect","textbox","labelTemplate","createGridLines","minorGridLines","majorGridLines","axisLineVisible","linePos","lineOptions","sizeFn","titleSize","maxLabelSize","labelSize","arrangeTitle","arrangeLabels","arrangeNotes","getLabelsTickPositions","labelTickIndex","labelsBetweenTicks","tickIx","firstTickPosition","nextTickPosition","positionStart","positionEnd","positionLabel","labelBox","labelOffset","labelX","labelY","autoRotateLabelAngle","slotWidth","limit","labelAngle","idx$1","slot","shouldRenderNote","noteSlot","secondAxis","axisLabelText","tmpl","defaultText","maxLabelOffset","lastLabel","offsetField","startPosition","endPosition","maxStartOffset","maxEndOffset","startTick","endTick","limitRange","rangeSize","minValue","maxValue","valueRange","seriesMin","seriesMax","lineDir","lineInfo","axisDir","axisOrigin","pointOffset","scaleToDelta","rawScale","justified","prepareUserOptions","axisCrossingValue","MILLISECONDS","SECONDS","MINUTES","HOURS","DAYS","WEEKS","MONTHS","YEARS","TIME_PER_SECOND","TIME_PER_MINUTE","TIME_PER_HOUR","TIME_PER_DAY","TIME_PER_WEEK","TIME_PER_MONTH","TIME_PER_YEAR","TIME_PER_UNIT","years","weeks","absoluteDateDiff","addTicks","ticks","toDate","startOfWeek","daysToSubtract","addDuration","dateValue","roundedDate","setMinutes","tzDiff","addHours","setSeconds","setMilliseconds","floorDate","ceilDate","dateComparer","dateDiff","toTime","dateEquals","timeIndex","baseUnit","dateIndex","baseUnitStep","parseDates","dates","CategoryAxis","_ticks","categoriesHash","categories","srcCategories","definedMin","definedMax","rangeIndices","totalRange","roundedRange","_seriesMax","scaleOptions","hideOutOfRangeLabels","valueAxis","firstLabel","getTicks","labelTicks","tickIndices","stepSize","indices","getTickPositions","_hash","hasMinor","filterOutOfRangePositions","slotBox","singleSlot","limitSlot","limittedSlot","categoryIndex","pointCategoryIndex","getCategory","totalIndex","categoryAt","categoriesCount","translateRange","scaleRange","limitedRangeIndices","minDelta","maxDelta","zoomRange","totalMin","totalMax","hideOutOfRangeNotes","pan","pointsRange","diffStart","diffEnd","rangeMin","rangeMax","_categoriesMap","currentRangeIndices","totalLimit","totalRangeIndices","indexCategories","map$$1","COORDINATE_LIMIT","DateLabelFormats","ZERO_THRESHOLD","BASE_UNITS","FIT","categoryRange","clearCache","EmptyDateRange","displayIndices","displayRange","valuesCount","dateAt","DateRange","roundToBaseUnit","lowerEnd","roundToTotalStep","expandEnd","justifyEnd","valueStart","displayStart","valueEnd","displayEnd","_indices","minIdx","maxIdx","upper","roundedStep","autoBaseUnit","startUnit","startStep","unitSteps","nextStep","categoryLimits","span","autoBaseUnitSteps","maxDateGroups","autoUnit","autoUnitIx","units","totalUnits","initUnit","lastCategory","minDiff","categoryIx","defaultBaseUnit","DateCategoryAxis","dataRange","_parsed","panning","userSetBaseUnit","userSetBaseUnitStep","maxDivisions","safeOptions","forecast","_forecast","before","divisionOptions","dataRangeOptions","divisionRange","rangeLabels","isEmpty","totalLimits","panRange","datesRange","indicesRange","autoBaseUnitStep","maxDiff","rangeDiff","baseUnitIndex","stepIndex","createRangeLabels","arrangeRangeLabels","position$1","autoRotateRangeLabels","hideOverlappingLabels","firstRangeLabel","lastRangeLabel","rangeLabel","unitFormat","dateFormats","createLabel","rotateLabel","dateRange","limitCoordinate","MIN_VALUE_RANGE$1","NumericAxis","autoOptions","narrowRange","autoMin","narrow","axisMin","autoAxisMin","autoMax","axisMax","autoAxisMax","roundToMajorUnit","remainderClose","autoAxisOptions","totalOptions","totalAxisOptions","userOptions","userSetMin","userSetMax","clearNullValues","userSetLimits","axisOptions","totalMajorUnit","getDivisions","stepValue","divisions","skipStep","getValue","isValidRange","ratio","remainder","DateValueAxis","timeUnits","baseUnitTime","userMajorUnit","actualUnits","unitsToAdd","head","tail","applyDefaults","axisCrossingValues","limittedRange","MIN_VALUE_RANGE$2","LogarithmicAxis","logMaxRemainder","autoAxisMax$1","autoAxisMin$1","throwNegativeValuesError","initRange","logMin","logMax","floorMax","traverseMajorTicksPositions","tickPosition","traverseMinorTicksPositions","minorOptions","_minorIntervalOptions","minorStep","GridLinesMixin","majorAngles","minorAngles","skipMajor","majorGridLineAngles","renderMajorGridLines","minorGridLineAngles","renderMinorGridLines","renderGridLines","radiusCallback","gridLineAngles","skipAngles","divs","intervals","altAxisVisible","RadarCategoryAxis","reflowLabels","skipOption","stepOption","divCount","divAngle","majorIntervals","minorIntervals","minorAngle","minorRadius","band","plotBandSlot","ring","totalDivs","slotAngle","fromValue","slotStart","PolarAxis","instanceOptions","RadarNumericAxisMixin","polarAxis","bandStyle","plotBandPoints","innerPoints","outerPoints","innerCircle","outerCircle","radarMajorGridLinePositions","radarMinorGridLinePositions","tickRadius","angleIx","angularDistance","gamma","beta","axisType","RadarNumericAxis","minorSkipStep","RadarLogarithmicAxis","CurveProcessor","dataPoints","tangent$1","Gradients","convertableToNumber","cycleUp","cycleDown","cycleIndex","field$1","getAriaTemplate","ariaTemplate","ariaContent","hasClasses","interpolateValue","mousewheelDelta","iconElement","iconOptions","predicate","createHashSet","supported","defaultErrorHandler","lteDateIndex","sortedDates","high","SASS_THEMES","ExportMixin","skipLegacy","exportPDF","imageDataURL","Point2D","Box2D","mwDelta","BAR_GAP","BAR_SPACING","BLACK$$1","SANS","SANS11","SANS12","SANS16","TRANSPARENT","WHITE$$1","lineSeriesLegendItem","areaSeriesLegendItem","areaNoMarkersSeriesLegendItem","markers","legendItem","areaSeries","rangeAreaSeries","boxPlotSeries","outliersField","meanField","_brightness","downColor","whiskers","mean","median","bulletSeries","lineSeries","radarAreaSeries","radarLineSeries","waterfallSeries","funnelSeries","pyramidSeries","trendlineSeriesDefaults","trendline","seriesDefaults","area","rangeArea","verticalRangeArea","bar","boxPlot","bubble","candlestick","column","heatmap","pie","donut","funnel","pyramid","horizontalWaterfall","ohlc","radarArea","radarLine","radarColumn","polarArea","polarLine","polarScatter","rangeBar","rangeColumn","scatter","scatterLine","verticalArea","verticalBoxPlot","verticalBullet","verticalLine","waterfall","linearTrendline","exponentialTrendline","logarithmicTrendline","polynomialTrendline","powerTrendline","movingAverageTrendline","chartBaseTheme","axisDefaults","categoryAxis","subtitle","legend","SERIES_COLORS","autoTheme","unsetColor","theme","hook","seriesTemplate","mapColor","varName","queryStyle","setInactiveOpacity","seriesTypes","inactiveOpacity","defaultFont","titleFont","paneTitleFont","labelFont","seriesPos","TEXT","SERIES","gaugeBaseTheme","diagramBaseTheme","shapeDefaults","hover","handles","selectable","connectionDefaults","tools","registerTheme","themeName","gauge","diagram","treeMap","fuse","arr1","arr2","inactiveItems","errorBars","chartArea","seriesColors","crosshair","rangePlaceholderColor","connectorDefaults","thumb","connectors","INACTIVE","INACTIVE_SHAPE","AXIS","PRIMARY","DIAGRAM_HOVER","noteStyle","sass","datavizConstants","GeometryPoint","GeometryCircle","ChartAxis","_axis","findAxisByName","ChartPane","chartsVisual","chartContainer","_pane","ChartPlotArea","_plotArea","backgroundVisual","_bgVisual","countNumbers","Aggregates","sumOrNull","avg","getField","SeriesBinder","_valueFields","_otherFields","_nullValue","_undefinedValue","valueFields","otherFields","_makeValue","canonicalFields","bindPoint","pointIx","fieldData","_bindFromArray","srcValueFields","sourceFields","srcPointFields","_bindFromObject","initialValue","srcFields","srcFieldName","sourceFieldName","percentRegex","standardDeviationRegex","ErrorRangeCalculator","errorValue","initGlobalRanges","deviationMatch","valueGetter","createValueGetter","getAverage","deviation","getStandardDeviation","errorRange","globalRange","standardError","getStandardError","getErrorRange","pointValue","percentValue","isSample","squareDifferenceSum","INITIAL_ANIMATION_DURATION","FADEIN","BORDER_BRIGHTNESS","START_SCALE","ERROR_LOW_FIELD","ERROR_HIGH_FIELD","X_ERROR_LOW_FIELD","X_ERROR_HIGH_FIELD","Y_ERROR_LOW_FIELD","Y_ERROR_HIGH_FIELD","INTERPOLATE","GAP","ABOVE","BELOW","SMOOTH","STEP","AREA","BAR","BOX_PLOT","BUBBLE","BULLET","CANDLESTICK","COLUMN","DONUT","FUNNEL","PYRAMID","HEATMAP","HORIZONTAL_WATERFALL","LINE","OHLC","PIE","POLAR_AREA","POLAR_LINE","POLAR_SCATTER","RADAR_AREA","RADAR_COLUMN","RADAR_LINE","RANGE_AREA","RANGE_BAR","RANGE_COLUMN","SCATTER","SCATTER_LINE","VERTICAL_AREA","VERTICAL_BOX_PLOT","VERTICAL_BULLET","VERTICAL_LINE","VERTICAL_RANGE_AREA","WATERFALL","EQUALLY_SPACED_SERIES","TRENDLINE_EXPONENTIAL","TRENDLINE_LINEAR","TRENDLINE_LOGARITHMIC","TRENDLINE_MOVING_AVERAGE","TRENDLINE_POLYNOMIAL","TRENDLINE_POWER","TRENDLINE_SERIES","LEGEND_ITEM_CLICK","LEGEND_ITEM_HOVER","LEGEND_ITEM_LEAVE","SERIES_CLICK","SERIES_HOVER","SERIES_OVER","SERIES_LEAVE","PLOT_AREA_CLICK","PLOT_AREA_HOVER","PLOT_AREA_LEAVE","DRAG_END","DRAG_START","ZOOM_START","ZOOM","ZOOM_END","SELECT_START","SELECT_END","RENDER","SHOW_TOOLTIP","HIDE_TOOLTIP","PANE_RENDER","CHART_POINT_ROLE","CHART_POINT_CLASSNAME","CHART_POINT_ROLE_DESCRIPTION","LEGEND_ITEM_ROLE","LEGEND_ITEM_CLASSNAME","LEGEND_ITEM_ARIA_ROLE_DESCRIPTION","LOGARITHMIC","CATEGORY","INSIDE_END","INSIDE_BASE","OUTSIDE_END","MOUSEWHEEL","MOUSEWHEEL_DELAY","DRILLDOWN","DRILLDOWN_FIELD","MIN_MOVING_AVERAGE_PERIOD","GLASS","TOOLTIP_OFFSET","LINE_MARKER_SIZE","MOUSEWHEEL_ZOOM_RATE","ErrorBarBase","endCaps","valueBox","getAxis","centerBox","capsWidth","getCapsWidth","capValue","capStart","capEnd","createDefaultVisual","CategoricalErrorBar","seriesValueAxis","anyHasZIndex","appendIfNotNull","areNumbers","segmentVisible","pointVisibility","bindSegments","seriesCount","equalsIgnoreCase","evalOptions","dryRun","needsEval","excluded","filterSeriesByType","currentSeries","dateCache","WeakMap","parseDateCategory","hasGradientOverlay","isDateAxis","sampleCategory","dateCategory","singleItemOrArray","AREA_REGEX","hasValue$1","findNext","pointHasValue","outPoint","getter$$1","hasItem","createOutOfRangePoints","hasMinPoint","hasMaxPoint","missingValues","seriesMissingValues","_outOfRangeMinPoint","_outOfRangeMaxPoint","CategoricalChart","seriesCategoryAxis","valueAxisRanges","categoryPoints","seriesPoints","seriesOptions","_evalSeries","traverseDataPoints","addValue","pointOptions","seriesIx","pointType","invertAxes","plotValue","isStacked100","otherValues","categorySum","otherStack","plotRange","isStacked","positive","prevValue","isStackedBar","defaultStack","isNonGroupStack","otherValue","categoryAxisCrossingValue","stackLimits","axisName","stackName","pIx","updateStackRange","chartSeries","limitsCache","limits","errorTotals","addErrorBar","lowValue","highValue","seriesErrorRanges","addPointErrorBar","stackedErrorRange","updateRange","errorBar","createPoint","owner","noteText","evalPointOptions","_defaults","doEval","axisRange","namedValueAxes","categorySlots","chartPoints","categorySlot","valueSlot","pointSlot","aboveAxis","stackValue","reflowPoint","reflowCategories","limitPoints","limitPoint","limitedSlot","axisIndex","_outOfRangeCallback","seriesIx$1","currentCategory","seriesIx$2","outOfRangePoint","formatPointValue","PointEventsMixin","NoteMixin","createNote","LinePoint","tooltipTracking","_rendered","createMarker","createLabelElement","getLabelText","formatValue","getAriaLabelText","markerBorder","markerBox","_childBox","childBox","reflowLabel","noteTargetBox","defaultColor","highlightVisual","halfSize","markerOptions","tooltipAnchor","clipBox","verticalAlign","horizontalAlign","overlapsBox","unclipElements","focusVisual","clearFocusFromVisual","getIndex","LineSegment","toGeometryPoints","segmentVisual","coords","getNearestPoint","StepLineMixin","calculateStepPoints","stepAxis","stepDir","previousPoint","toGeometryPoint","stepPoint","lintPoint","StepLineSegment","SplineSegment","curve","LineChartMixin","renderSegments","_segments","sortedPoints","sortPoints","pointCount","createSegment","_addSegment","nearestPoint","allPoints","nearestPointDistance","ClipAnimation","_setEnd","setX","ClipAnimationMixin","_setChildrenAnimation","animationPoints","LineChart","AreaSegment","prevSegment","stackPoints","createFill","createStroke","strokeSegments","_strokeSegments","createStrokeSegments","segmentsFromPoints","stackSegments","createStackSegments","hasStackSegment","fillSegments","hasStackSegments","fillToAxes","fillPath","crossingValue","endSlot","firstPoint","lastPoint","StepAreaSegment","SplineAreaSegment","curveProcessor","AreaChart","previousSegment","_gapStackPoints","_stackPoints","stackPoint","startIdx","endIdx","currentSeriesIx","_previousSegmentPoint","gapStackPoint","_createGapStackPoint","segmentIx","seriesIdx","AxisGroupRangeTracker","axisRanges","chartAxisRanges","chartRange","BarLabel","alignToClipBox","parentBox","addAccessibilityAttributesToVisual","AccessibilityAttributesMixin","Bar","rectVisual","createRect","strokeOpacity","getBorderColor","baseColor","borderColor","ClusterLayout","slots","slotSize","StackWrap","positionAxis","BarChart","clusterType","stackType","stackOrDefault","negativeColor","cluster","getStackWrap","stackWrap","stackGroup","wraps","_stackGroup","zeroSlot","_setAnimationOptions","pointVisual","Candlestick","ocSlot","lhSlot","realBody","mid","lines","reflowNote","_mainVisual","mainVisual","createOverlay","createBody","createLines","drawLines","lineStyle","normalColor","meanPoints","medianPoints","whiskerPoints","CandlestickChart","splitValue","BoxPlot","whiskerSlot","boxSlot","q1","q3","reflowBoxSlot","reflowWhiskerSlot","medianSlot","meanSlot","calcMeanPoints","calcWhiskerPoints","calcMedianPoints","renderOutliers","outliers","outerFence","outlierValue","markersBorder","reflowOutliers","VerticalBoxPlot","BoxPlotChart","filterOutliers","ScatterErrorBar","seriesAxes","ScatterChart","_initFields","xAxisRanges","yAxisRanges","valueErrorField","lowField","highField","createMissingValue","xAxisName","xAxis","yAxisName","yAxis","xAxisRange","yAxisRange","namedXAxes","namedYAxes","Bubble","highlightGroup","BubbleChart","_maxSize","negativeValues","updateBubblesSize","pointsCount","animationOptions","minR","minSize","maxR","minArea","areaRatio","Target","Bullet","targetValueSlot","targetSlotX","targetSlotY","targetSlot","bodyVisual","BulletChart","seriesItem","wrapData","bulletOptions","BaseTooltip","getStyle","pointColor","paddingBottom","tooltipOptions","CrosshairTooltip","formatService","initAxisName","showAt","stickyMode","formattedValue","getAnchor","ref_options","Crosshair","moveLine","getBox","dim","axisLineBox","currentAxis","ChartContainer","shouldClip","_clipBox","chartsBox","clipRect","unclipLabels","charts","ID","appendAxis","appendAxisAt","appendChart","removeAxis","removeChart","allAxes","vGridLines","hGridLines","notifyRender","axisValueField","length$1","axis$1","lineBox$1","paneIndex","PlotAreaBase","initSeries","crosshairs","originalOptions","originalSeries","_bindCache","createPanes","createCrosshairs","cached","paneDefaults","paneOptions","panes","panesLength","currentPane","crosshairOptions","currentCrosshair","removeCrosshairs","hideCrosshairs","findPane","matchingPane","findPointPane","axisToRemove","filteredAxes","chartToRemove","filteredCharts","addToLegend","inactiveItemsLabels","seriesVisible","visibleInLegend","itemLabelOptions","markerColor","active","groupAxes","xAxes","yAxes","paneIx","paneAxes","axisIx","any","groupSeriesByPane","seriesByPane","seriesPaneName","filterVisibleSeries","reflowPanes","detachLabels","reflowAxes","reflowCharts","redraw","panesArray","crossingAxes","crossingValues","valuesToAdd","alignAxisTo","targetAxis","targetCrossingValue","slotEdge","targetEdge","axisBox","alignAxes","xAnchor","yAnchor","xAnchorCrossings","yAnchorCrossings","leftAnchors","rightAnchors","topAnchors","bottomAnchors","paneId","paneAnchor","anchorCrossings","_overlap","_mirrored","paneYAnchor","pane$1","paneId$1","visible$1","anchor$1","anchorCrossings$1","shrinkAxisWidth","axisGroupBox","overflowX","shrinkAxisHeight","shrinked","overflowY","fitAxes","paneBox","currentAxis$1","reflowPaneAxes","autoRotateAxisLabels","groupedAxes","rotated","allPaneAxes","chartPane","remainingHeight","autoHeightPanes","percents","currentPane$1","currentPane$2","backgroundBox","axesCount","axisA","axisB","chartsBoxes","addBackgroundPaths","multipath","backgroundContainsPoint","pointsByCategoryIndex","pointsBySeriesIndex","seriesIndex","filterPoints","pointsByPointIndex","pointIndex","pointsBySeriesName","findPoint","paneByPoint","detachAxisGroupLabels","labelAxisCount","labelAxis","createLabelAxis","onAxis","isTrendline","trendlineFactory","createTrendlineSeries","modifiedSeries","forSeries","seriesByName","for","trendlineSeries","getFirstPoint","getPointBelow","_getNextPoint","_pointsByVertical","getPointAbove","getPointToTheRight","_pointsByHorizontal","getPointToTheLeft","getPointsFunc","increment","nextIndex","loopPoints","basePoint","isSingleAxis","PlotAreaEventsMixin","_dispatchEvent","SeriesAggregator","defaultAggregates","seriesFields","_seriesFields","rootAggregate","_series","_binder","fieldAggregate","canonicalName","aggregatePoints","srcPoints","_bindPoints","firstDataItem","srcValues","_bindField","setValue","DefaultAggregates","seriesType","RangeBar","fromOptions","toOptions","labelFrom","labelTo","RangeBarChart","plotLimits","RangeLinePoint","RangeAreaPoint","initLabelsFormat","fromPoint","toPoint","copyFields","fromBox","toBox","positionLabels","fromLabelPosition","toLabelPosition","RangeAreaSegment","toPoints","fromSegments","fromPath","SplineRangeAreaSegment","createCurveSegments","StepRangeAreaSegment","RangeAreaChart","fromSlot","toSlot","OHLCPoint","oPoints","cPoints","lhPoints","oSlot","cSlot","OHLCChart","WaterfallSegment","WaterfallChart","createSegments","totalCategories","summary","prevPoint","registry","calculateSlope","sourceValues","slope","intercept","xy","xMin","xMax","checkAllPositive","getTrendlineData","valueMapper","currentRange","valueGetter$1","valueGetter$2","calculateMovingAverage","period","averagePoints","lastValue","valueGetter$3","MIN_ORDER","MAX_ORDER","calculatePolynomial","X$$1","Y$$1","coefficients","Xt","B","linearRegression","valueGetter$4","valueGetter$5","seriesValues","exp","getData","categoryField","getData$1","getData$2","calculatePoints","getData$3","getData$4","getData$5","AREA_SERIES","OUT_OF_RANGE_SERIES","CategoricalPlotArea","namedCategoryAxes","valueAxisRangeTracker","_seriesPointsCache","_currentPointsCache","stack100","createCategoryAxes","aggregateCategories","createCategoryAxesLabels","createCharts","createValueAxes","filterSeries","trendlineAggregateForecast","srcSeries","aggregateSeries","paneSeries","visibleSeries","groupSeriesByCategoryAxis","groupIx","createChartGroup","createAreaChart","createRangeAreaChart","createBarChart","createRangeBarChart","createBulletChart","createCandlestickChart","createBoxPlotChart","createOHLCChart","createWaterfallChart","createLineChart","processedSeries","axisPane","outOfRangePoints","clearSeriesPointsCache","seriesSourcePoints","dateAxis","srcData","aggregator","categoryItem","categoryIdx","categoriesToAdd","defaultPaneName","stackableChartOptions","anyStackedSeries","categoryAxes","axisSeries","groupSeries","firstSeries","barChart","rangeColumnChart","bulletChart","lineChart","areaChart","rangeAreaChart","waterfallChart","axisRequiresRounding","categoryAxisName","categoryAxisIndex","centeredSeries","seriesAxis","aggregatedAxis","primaryAxis","tracker","defaultRange","baseOptions","defaultAxisRange","eventType","_eventCoordinates","pointPane","updateAxisOptions","_siblingsBySeriesIndex","_siblingsByPointIndex","_getSeriesCompareFn","_isInStackedSeries","sortableSeries","stackableSeries","targetOptions","axesOptions","Highlight","_points","arrayPoints","togglePointHighlight","toggleHandler","isHighlighted","acceptKey","mouseKey","altKey","toChartAxisRanges","Pannable","_active","_panAxes","updatedAxes","ZoomSelection","marquee","_marquee","marqueeColor","removeElement","setStyles","zoomPane","_zoomPane","_zoomPaneClipBox","_selectionPosition","elementOffset$$1","selectionPosition","_updateAxisRanges","limitValue$1","valueOrDefault$1","MousewheelZoom","rate","updateRanges","LegendLayout","DEFAULT_MARKER_SIZE","LegendItemMarker","markerHighlightOptions","ChartElement$1","rootBackground","Point$1","Box$1","BoxElement$1","ShapeElement$1","MarkerLineArea","LegendItemLine","centerY","createHighlightLine","createHighlightMarker","highlightLine","highlightMarker","LegendItemSquare","LegendItem","createContainer","markerWrap","createMarkerArea","_marker","_createMarker","_createLine","_createMarkerLine","_createSquare","_highlightOptions","_line","_markerLineArea","_square","_highlightMarkers","_toggleHighlight","_restoreMarkers","eventSink","_itemOverlay","_legendItemHover","_unsetActivePoint","CUSTOM","Legend","createContainers","createLegendTitle","createItems","userAlign","hasTitle","itemsContainer","innerElement","markersOptions","itemOptions","hasItems","getItems","legendBox","containerCustomReflow","containerReflow","alignTarget","containerBox","createTitleLayout","appendTitleLayoutContent","layout","PlotAreaFactory","_registry","trendlines","createDiv","closestHandle","Selection","_dateAxis","initOptions","createElements","onPane","leftMask","rightMask","leftHandle","rightHandle","selectionStyles","leftHandleHeight","rightHandleHeight","borderLeftWidth","borderRightWidth","mousewheel","_mousewheelHandler","_mousewheel","_domEvents","tap","_gesturestart","_gesturechange","gestureend","_gestureend","_mwTimeout","_state","_rangeEventArgs","_value","_pointInPane","modelCoords","_toModelCoordinates","bodyRect","inBody","moveTarget","oldRange","rightClick","_slot","leftMaskWidth","rightMaskWidth","toValue","zDir","relative","SharedTooltip","tooltipPoints","_slotAnchor","_defaultAnchor","categoryText","categoryFormat","slotCenter","BarChartAnimation","fromScale","BubbleAnimation","FadeInAnimation","fadeTo","PieAnimation","ScatterLineChart","missingValue","getScatterTrendlineData","samplingInterval","valueGetter$6","scatterValueGetter","xValueLimits","valueGetter$7","logValueGetter","valueGetter$8","scatterRegistry","getData$6","getData$7","getData$8","getData$9","getData$10","getData$11","XYPlotArea","xAxisRangeTracker","yAxisRangeTracker","filteredSeries","createScatterChart","createScatterLineChart","createBubbleChart","createAxes","xAxisOptions","yAxisOptions","createXYAxis","inferredDate","namedAxes","isLog","typeSamples","seriesAxisName","firstPointValue","xAxesOptions","yAxesOptions","axisPane$1","xValues","yValues","updateAxisOptions$1","PieSegment","labelText","themeLabels","animationDelay","labelsOptions","labelsDistance","lp","labelHeight","labelWidth","createSegmentVisual","borderOptions","singleSegment","tooltipAlignment","RAD_30","RAD_60","PieChartMixin","createLegendItem","legendOptions","pointVisible","legendItems","PieChart","colorsCount","anglePerValue","constantAngle","explode","evalSegmentOptions","segmentOptions","seriesConfigs","minWidth","halfMinWidth","defaultPadding","newBox","newBoxCenter","leftSideLabels","rightSideLabels","seriesConfig","labelComparator","leftLabelsReflow","rightLabelsReflow","distances","distanceBetweenLabels","distributeLabels","lr","firstBox","secondBox","_takeDistance","amount","boxX","labelDistance","boxY","hAlignLabel","_connectorLines","connectorsColor","connectorLine","centerPoint","sr","crossing","pointInCircle","autoFit","pieCenter","bboxBottom","reverseValue","originalX","sector_center","uat","ub","PiePlotArea","createPieChart","pieChart","DonutSegment","DonutChart","holeSize","totalSize","seriesWithoutSize","currentSeries$1","DonutPlotArea","createDonutChart","donutChart","PolarPlotAreaBase","createPolarAxis","createValueAxis","axisDefaultRange","valueAxisOptions","valueAxisBox","heightDiff","PolarScatterChart","valueRadius","PolarLineChart","SplinePolarAreaSegment","_polarAxisCenter","PolarAreaSegment","centerSegment","PolarAreaChart","_hasMissingValuesGap","xComparer","PolarPlotArea","scatterChart","RadarLineChart","seriesSegments","groupBySeriesIx","isFirstDataPoint","isLastDataPoint","SplineRadarAreaSegment","RadarAreaSegment","RadarAreaChart","RadarSegment","RadarClusterLayout","slotSector","RadarStackLayout","childSector","RadarBarChart","RadarPlotArea","_hasBarCharts","_isStacked100","chartOptions","FunnelSegment","chartBox","createPath","FunnelChart","labelPadding","dynamicSlopeReflow","totalHeight","firstSegment","maxSegment","lastUpperSide","previousOffset","previousHeight","nextSegment","nextPercentage","segmentSpacing","constantSlopeReflow","decreasingWidth","neckRatio","finalNarrow","dynamicSlope","dynamicHeight","PyramidChart","FunnelPlotArea","createChart","chartType","HeatmapPoint","labelColor","isRoundRect","halfBorderWidth","HeatmapChart","setRange","minLightnessOffset","hsl","colorScale","indexX","indexY","xRange","yRange","ref$2","xIndex","yIndex","xIn","yIn","HeatmapPlotArea","bindCategories","createAxisLabels","xCategories","yCategories","createHeatmapChart","firstCategory","updateAxisOptions$2","normalizedOffset","axisXItems","_getPointAxisXIndex","targetXValue","compareValues","_getPointAxisYIndex","axisYItems","targetYValue","_getPointAxisIndex","findIndex","axisItem","COLOR","FIRST","MAX","MIN","NOTE_TEXT","errorLow","errorHigh","AXIS_NAMES","MOUSEMOVE","CONTEXTMENU","MOUSELEAVE","KEYDOWN","FOCUS","BLUR","Chart","themeOptions","_initElement","_originalOptions","_theme","_initTheme","_focusState","_initHandlers","_initSurface","fontLoaded","_redraw","_attachEvents","_setElementClass","seriesCopies","aliases","alias","resolveAxisAliases","applySeriesColors","_selections","_destroySelections","_setupSelection","_noTransitionsRedraw","paneName","_model","findPaneByName","findPaneByIndex","seriesName","categoryName","pointByCategoryName","togglePointsHighlight","_sharedTooltip","_surfaceWrap","renderAs","_destroySurface","_surfaceMouseenterHandler","_surfaceMouseleaveHandler","_getModel","_destroyView","_setElementAccessibilityAttributes","_legend","_createTooltip","_createPannable","_createZoomSelection","_createMousewheelZoom","triggerPaneRender","_navState","_cancelDomEvents","_redrawFocusHighlight","ref_focusState","legendInFocus","preserveHighlight","_focusElement","_getFocusedLegendItem","description","exportOptions","clearMissingValues","_pannable","zoomable","_zoomSelection","_mousewheelZoom","_toggleDragZoomEvents","allowDrag","allowZoom","_dragZoomEnabled","_touchAction","_toggleDomEvents","drag","domEvents","toggleDrag","toggleZoom","_createSharedTooltip","themeAxisDefaults","mapAxisOptions","axisColor","applyAxisDefaults","seriesLength","commonDefaults","themeSeriesDefaults","commonThemeDefaults","cleanupNestedSeriesDefaults","applySeriesDefaults","seriesColor","_createPlotArea","_modelOptions","skipSeries","selections","_selectStart","_selectEnd","_clickHandler","_keydownHandler","_focusHandler","_blurHandler","_mousedownHandler","_mouseover","_mouseout","_toDocumentCoordinates","_updateDrilldownPoint","_resetDrilldownPoint","_focusPoint","_startDrilldown","_focusLegendItem","obj$1","_shouldAttachMouseMove","_hoveredPoint","_plotAreaHovered","_hasInactiveOpacity","_activeChartInstance","_applySeriesOpacity","_updateSeriesOpacity","_stopChartHandlers","_gestureDistance","_clearFocusedElement","_zooming","mousewheelZoom","previousGestureDistance","_drawingChartElement","leave","_startNavigation","_suppressHover","ranges$1","_endNavigation","_mousewheelZoomRate","totalDelta","chartEvent","_getChartElement","_elementPadding","_padding","drawingElement","sharedTooltip","_startHover","_trackSharedTooltip","_propagateClick","handlingTap","_isLegendBeforeChart","legendPosition","_preventInitialPointFocus","_focusFirstLegendItem","_focusFirstPoint","focusedElement","isLegendBeforeChart","_navigatePoints","_navigateLegend","_hideTooltip","focusState","moveFocus","focusedPoint","_displayTooltip","cycleFunc","focusedLegendItemIndex","_hasFocus","_focusChart","omitHighlight","_setElementActiveDescendant","_showSeriesInactiveOpacity","_showInactiveOpacity","_clearElementActiveDescendant","_pseudoFocusedElement","_createPseudoFocusedElement","pseudoElement","_hideInactiveOpacity","activePoint","_activePoint","_updateHoveredPoint","_displayInactiveOpacity","multipleSeries","highlightPoints","chartInstance","_chartInstanceFromPoint","inactivePoints","_getInactivePoints","_getInactiveOpacityForSeries","_getAllPointsOfType","hoveredPoint","drilldown","_drilldownState","resetOpacity","currSeries","defaultOpacity","_getDefaultOpacityForSeries","activeSeries","hasDefaultInactiveOpacity","hasInactiveOpacity","defaultInactiveOpacity","_mouseMoveTrackHandler","_mouseMoveTracking","seriesPoint","_trackCrosshairs","overPlotArea","_tooltipCategoryIx","_sharedHighlight","pointArgs","hoverArgs","hideElements","keepTooltipOpen","_deferRedraw","_clearRedrawTimeout","_redrawTimeout","bindCategoryAxisFromSeries","uniqueCategories","seriesOnAxis","hasCategoryBinding","seriesWithData","categorySamples","_isBindable","transitionsState","updateMouseMoveHandler","applyOptions","setDirection","setIntlService","noTransitionsRedraw","DATA_FIELDS","fieldValue","originalValue","nullValue","BREADCRUMB","ARIA_HIDDEN","CLICK","DOT","breadcrumbStyles","textboxWrapper","link","delimiter","rootItem","rootLink","overflowIcon","focused","hidden","inputWrapper","Breadcrumb","_editable","bindToLocation","_resizeHandler","navigational","rootIcon","delimiterIcon","rootTitle","_update","_generateSegments","_split","_path","previousDomItems","prevAll","previousItems","_getItems","isRoot","_edit","oldValue","shouldRestoreValue","isEnter","isEsc","isNavigational","canNavigate","_wrapperKeydown","_wrapperClick","_wrapperFocus","_wrapperBlur","elementIsInput","isLastSegment","isOnlyRoot","showIcon","showText","itemClass","linkClass","renderDelimiter","itemTemplate","iconElm","delimiterElm","encoded","linkElm","linkClasses","getLinkClasses","_displayOverflowIcons","_shrinkItems","lastHidden","delimiterWidth","availableWidth","_showItem","overlayWidth","_stretchItems","trail","ChartBreadcrumb","_attachChartEvents","_renderBreadcrumb","breadcrumb","_onChartDrilldown","_onChartDrilldownLevelChange","resetDrilldownLevel","getKendoChart","breadcrumbElement","_onBreadcrumbClick","KendoChart","MOUSELEAVE_NS","DRILLDOWN_LEVEL_CHANGE","DATABOUND","LEAVE","ChartInstanceObserver","legendItemClick","_seriesVisibility","SeriesVisibilityState","_initDataSource","_bindSeries","_bindCategories","_getThemeOptions","_sourceSeries","setDataSource","_hasDataSource","_onDataChanged","_dataChangeHandler","_hasData","_destroyCrosshairTooltips","findSeries","ChartSeries","findSeriesByName","_createSeries","findSeriesByIndex","originalChartArea","_seriesOptions","_initChart","_createChart","_isRtl","_onInit","_initTooltip","tooltips","_crosshairTooltips","_getCrosshairTooltip","_showTooltip","_onRender","_copyMembers","_tooltipleave","_onLegendItemClick","_legendItemClick","_onDrilldown","drilldownSeriesFactory","resolved","_onDrilldownData","drilldownSeries","_bindData","groupedSeries","grouped","seriesVisibility","applyByGroup","applyByIndex","seriesData","_groupIx","categoriesData","_bindCategoryAxis","proxyMembers","createProxyMember","nameTemplate","seriesClone","legacyTemplate","groupNameTemplate","_groupValue","PDFMixin","persistSeriesVisibility","saveState","geom","mobileScrollerSelector","_mobileScroller","_closeTooltipHandler","_closeTooltip","_clearShowTimeout","sharedTemplate","colspan","colorMarker","nameColumn","sharedTemplateIterator","_ensureElement","showTimeout","fakeContainer","normalizeStyle","_sharedContent","_pointContent","forceHide","_hideElement","fadeOut","always","tooltipTemplate","xLow","xHigh","yLow","yHigh","_chart","_filterPoints","_clearFields","toggleVisibility","_filterData","ChartLegend","mapFn","sortAsc","y0","sortSource","sortTarget","sortLinks","targetLinks","sourceLinks","calcLayer","maxDepth","Sankey$1","nodesOptions","links","nodeWidth","nodePadding","targetColumnIndex","loops","autoLayout","calculate","connectLinksToNodes","calculateNodeValues","circularLinks","calculateNodeHeights","columns","calculateNodeDepths","calculateNodeColumns","calculateNodeBreadths","applyNodesOffset","calculateLinkBreadths","nodesMap","sourceId","targetId","currDepth","currentNodes","nodesLength","currentHeight","eachNode","columnWidth","layer","x0","kSize","uncurlLinksToRight","uncurlLinksToLeft","kValue","targetTopPos","arrangeNodesVertically","sourceTopPos","arrangeUp","arrangeDown","yPos","currentY","link$1","calculateSankey","rotationDirection","p1x","p1y","p2x","p2y","p3x","p3y","expression1","expression2","SankeyElement","SankeyElement$$1","nodeColor","nodeColors","resolveNodeOptions","nodeOptions","Link","xC","BEFORE","Label","totalWidth","nodeBox","textSizeBox","goesOutside","textY","textOrigin","textRect","resolveLabelOptions","Title$1","Title$$1","drawingRect","sortData","areaBackground","areaOpacity","LINK","NODE","Sankey","_setOptions","_initResizeObserver","_destroyResizeObserver","_initSurfaceElement","_createSurface","ResizeObserver","entries","contentRect","_resizeObserver","mouseenter","mouseleave","currentTheme","setLinksOpacity","linksVisuals","linkOptions","setLinksInactivityOpacity","linkValue","targetType","isLink","isNode","isLegendItem","highlightLinks","nodeVisual","nodesVisuals","tooltipTimeOut","tooltipShown","followPointer","tooltipElType","mouseEvent","isLeft","isTop","tooltipData","popupOffset","popupAlign","nextDelay","_destroySurfaceElement","disconnect","_getSize","_render","titleBox","calcOptions","sankeyOptions","disableAutoLayout","sankeyBox","legendArea","titleHeight","calculatedNodes","sankey","nodeEl","nodeOps","nodeInstance","labelVisual","permutation","columnsLength","crosses","link1","link2","f3","f4","linksLength","lNext","nextLink","crossesValue","minCrosses","bestResult","sankeyContext","titleVisual","visualNodes","sortedLinks","sourceNode","targetNode","linkOps","colorType","resolveLinkOptions","linkVisual","diagramWidth","textOps","legendVisual","createSankeyData","linksMap","existingValue","nodesId","nodesArray","linksArray","tooltipContentWrapStyle","TootipText","Square","TooltipTemplates","SankeyTooltip","setContent","setPosition","offsetOption","ContentTemplates","KendoSankey","_initSankey","strokeColor","_createSankey","tooltipShow","tooltipHide","nodeTemplate","linkTemplate","currentTemplate","tooltipUnits","DrawingGroup","DrawingPath","ANGULAR_SPEED","ARROW_POINTER","BAR_POINTER","DEFAULT_LINE_WIDTH","DEGREE","LINEAR","RADIAL_POINTER","RADIAL_RANGE_POINTER","Path$1","buildLabelElement","styleGeometry","styleBox","getRange","Gauge","contextService","pointerValue","_setValueOptions","_draw","_visuals","allValues","arrayValues","_toggleTransitions","_surfaceSize","gaugeArea","_createGaugeArea","_createModel","_gaugeAreaMargin","areaGeometry","_surfaceElement","defaultSize","_defaultSize","Path$2","Group$2","renderAxisTick","tickRenderOptions","renderTicks","tickGroup","LinearScale","renderLabels","scaleLine","renderLine","scaleTicks","renderRanges","linePath","Pointer","_oldValue","repaint","LinearPointer","track","pointerBox","pointerRangeBox","trackBox","trackSize","pointerHalfSize","getElementOptions","_margin","ArrowLinearPointerAnimation","toScale","translateX","translateY","Path$3","ArrowLinearPointer","pointerShape","elementOptions","BarLinearPointerAnimation","newPoints","oldPoints","speed","Group$3","Path$4","BarLinearPointer","minSlot","sizeAxis","pointerPath","oldShape","renderTrack","trackOptions","Group$1","LinearGauge","bboxX","bboxY","_shrinkScaleWidth","_getBox","_alignElements","_shrinkElements","_buildVisual","scaleElements","pointerType","plotAreaBox","scaleBox","GEO_ARC_ADJUST_ANGLE","Path$5","Group$5","drawTicks","tickAngles","getRadiusX","tickStart","tickEnd","rangeSegment","RadialScale","renderArc","labelElements","repositionRanges","hasRanges","ticksSize","labelsGroup","rangeDistance","isInside","hasLabelElements","setRadiusX","setRadiusY","paddingWidth","paddingHeight","labelPos","labelElement","prevLabelPos","labelTransform","rangeRadius","getRangeRadius","rangeSegments","segmentsCount","rangeGeom","tickArc","majorTickAngles","allTicks","_tickDifference","minorTickAngles","normalizeTickAngles","tickCount","repositionTicks","minor","newPoint","xDiff","yDiff","RadialPointerAnimation","newAngle","oldAngle","Group$6","Path$6","RadialPointer","setAngle","_renderNeedle","_renderCap","capSize","cap","needleColor","needlePath","capColor","Group$4","RadialGauge","_initialPlotArea","alignScale","_buildPointers","midDiff","oldDiff","getDiff","staleFlag","getPlotBox","scaleArc","plotBbox","plotBox","plotBoxCenter","paddingX","paddingY","pointersArr","ArcScale","rangeLineCap","placeholderRangeAngle","geometry$$1","setEndAngle","setStartAngle","addRange","RangePointerAnimation","startColor","currentColor","RangePointer","rangeColor","ArcGauge","centerLabelPosition","yLimit","CircularGauge","lowerName","_createInstance","_copyFields","gaugeType","_gaugeType","RadialGaugeWidget","LinearGaugeWidget","ArcGaugeWidget","_centerTemplate","_centerElement","centerTemplate","centerElement","_getCenterElement","CircularGaugeWidget","createExportMethod","exportMethods","numberRegex","alphanumericRegex","getNext","Encoding","quietZoneLength","addQuietZone","initValue","addData","addCheckSum","invalidCharacterError","character","encodings","code39Base","minBaseUnitLength","addStart","addCharacter","pushCheckSum","prepareValues","charData","characterMap","addBase","code39ExtendedBase","addExtended","extendedMappings","shiftCharacters","dataCharacter","specialAsciiCodes","shiftValuesAsciiCodes","code39","checkSumMod","minRatio","maxRatio","gapWidth","splitCharacter","patternString","minBaseUnit","minHeight","getBaseUnit","getBaseWidth","characterLength","addPattern","addCharacterGap","patternMappings","w","W","A","C","I","J","N","O","P","R","S","U","V","code39extended","SHIFT0","SHIFT1","SHIFT2","SHIFT3","code93","cCheckSumTotal","kCheckSumTotal","setBaseUnit","TERMINATION_BAR","checkValues","_getCheckValues","checksum","_findCharacterByValue","cValue","wightedSum","weightedValue","code93extended","state128","encoding","state128AB","FNC4","states","_initMoves","isCode","encodingState","_moves","maxLength","numberMatch","_moveFNC","_shiftState","_moveState","fnc","previousState","SHIFT","states128","next4","dependentStates","_initSubStates","subState","_getSubState","_initSubState","_pushStart","pushData","subStates","_getAll","FNC1","startState","startAI","endAI","nextStart","separatorLength","regexSeparators","getBySeparator","getByLength","validate","getAI","unsupportedAIError","applicationIdentifiers","multiKey","ids","code128Base","_initStates","checkSum","getNextState","STOP","code128a","code128b","code128c","code128","msiBase","checkSumLength","checkSums","checkSumType","Modulo10","evenSum","oddSum","odd","Modulo11","checkValue","weightedSum","Modulo11Modulo10","mod11Value","Modulo10Modulo10","mod10Value","msimod10","msimod11","msimod1110","msimod1010","code11","kCheckSumMinLength","DASH_VALUE","DASH","getWeightedSum","postnet","VALID_CODE_LENGTHS","DIGIT_SEPARATOR","baseHeight","ean13","calculateChecksum","leftKey","leftPart","rightPart","addPieces","addSide","keyTable","arrToAdd","limitedHeight","even","ean8","Barcode","surfaceWrap","textToDisplay","textMargin","barHeight","_getBackground","_getText","_bandsGroup","_getBands","_textbox","terminator","NUMERIC","ALPHA_NUMERIC","BYTE","powersOfTwo","powersOfTwoResult","generatorPolynomials","irregularAlignmentPatternsStartDistance","versionsCodewordsInformation","totalDataCodewords","errorCodewordsPerBlock","finderPattern","alignmentPattern","errorCorrectionPatterns","paddingCodewords","maskPatternConditions","alphaPattern","alphaRegex","alphaNumericRegex","byteRegex","crossPattern","squarePattern","toDecimal","toBitsString","splitInto","QRDataMode","getVersionIndex","getBitsCharacterCount","bitsInCharacterCount","getModeCountString","modeIndicator","getStringBitsLength","modes","inputLength","mod3","characters","mode","modeInstances","FreeCellVisitor","startColumn","getNextCell","getNextRemainderCell","fillFunctionCell","matrices","bit","fillDataCell","fillData","blocks","block","codewordIdx","cellVisitor","blockIdx","padDataString","dataString","dataBitsCount","terminatorIndex","paddingCodewordIndex","xorPolynomials","multiplyPolynomials","multiplyByConstant","generatePowersOfTwo","firstPolynomial","secondPolynomial","generateGeneratorPolynomials","generateErrorCodewords","errorCodewordsCount","generator","generatorPolynomial","steps","errorCodewords","getBlocks","dataStream","versionCodewordsInformation","dataBlock","blockCodewordsCount","groupBlocksCount","messagePolynomial","codeword","codewordStart","dataBlocks","errorBlocks","versionGroups","chooseMode","minNumericBeforeAlpha","minNumericBeforeByte","minAlphaBeforeByte","previousMode","modeString","numeric","numericMatch","alphaMatch","alphaNumeric","alphaNumericMatch","getModes","nextMode","getDataCodewordsCount","getVersion","dataCodewordsCount","errorCorrectionLevel","getDataString","encodeFormatInformation","encodedString","encodeBCH","codeLength","generatorNumber","polynomialLength","valueNumber","valueString","dividePolynomials","numberX","numberY","yLength","xLength","getNumberAt","initMatrices","modules","addFormatInformation","encodeVersionInformation","addVersionInformation","quotient","mod","addCentricPattern","addFinderSeparator","nextX","nextY","addFinderPatterns","addAlignmentPatterns","startDistance","addTimingFunctions","scoreMaskMatrixes","scores","previousBits","darkModules","adjacentSameBits","scoreFinderPatternOccurance","scoreAdjacentSameBits","calculateDarkModulesRatioScore","rowColumn","adjacentBits","mod5","EncodingResult","IsoEncoder","getEncodingResult","inputString","UTF8Encoder","encodingMode","utfBOM","initialModeCountStringLength","encodeCharacter","bytesCount","getBytesCount","bc","significantOnes","QRCodeDataEncoder","encodeData","encodingResult","versionInformation","optimalMatrix","QRCodeDefaults","DEFAULT_SIZE","QUIET_ZONE_LENGTH","DEFAULT_ERROR_CORRECTION_LEVEL","DEFAULT_BACKGROUND","DEFAULT_DARK_MODULE_COLOR","MIN_BASE_UNIT_SIZE","QRCode","quietZoneSize","contentSize","errorCorrection","_calculateBaseUnit","_renderBackground","_renderMatrix","_hasCustomLogo","_renderLogo","_isSwiss","_renderSwissCode","qrSize","imageRect","logoSize","_getLogoSize","logoUrl","imageUrl","crossSize","crossOffset","_renderShape","matrixSize","defautLogoSize","QRCodeFunctions","QRCodeFields","FadeOutAnimation","_initialOpacity","NavigatorHint","chartPadding","scroll","minPos","clearHideTimeout","_visible","tooltipStyle","borderTopWidth","_hideTimeout","_hideAnimation","NAVIGATOR_PANE","NAVIGATOR_AXIS","DEFAULT_PANE","Navigator","chartObserver","clean","_redrawSelf","initSelection","mainAxis","axisClone","ClonedObject","selectStart","selectEnd","filterAxes","redrawSlaves","slavePanes","navigatorAxis","naviRange","inNavigator","liveDrag","showHint","readSelection","ref_selection_options","_zoom","fromIx","toIx","_zoomEnd","__navi","naviOptions","attachAxes","attachSeries","valueAxes","justifyAxis","_collapse","autoBindElements","user","navigatorSeries","dateField","StockChart","stockDefaults","destroyNavigator","_fullRedraw","_dirty","partialRedraw","_seriesCount","copyNavigatorCategories","KendoStockChart","StockInstanceObserver","navigatorFilter","navigatorCreated","_initNavigatorOptions","navigatorOptions","isTouch","isFirefox","hasServerFiltering","hasSelect","dummyAxis","buildFilter","_onNavigatorCreated","_navigator","_initNavigatorDataSource","dsOptions","_navigatorDataChangedHandler","_onNavigatorDataChanged","_navigatorDataSource","_bindNavigatorSeries","naviCategories","axesLength","_removeNavigatorDataSource","_onNavigatorFilter","navigatorDataSource","SharedTooltip$1","NO_CROSSHAIR","wrapNumber","Sparkline","_initialWidth","stage","displayState","_autoWidth","inline","_calculateWidth","currentChart","pointWidth","normalizeOptions","KendoSparkline","SparklineTooltip","renderPos","renderSize","sqr","romanToArabic","memoize","isUnicodeLetter","RX_UNICODE_LETTER","withExit","Return","Location","lat","lng","DISTANCE_ITERATIONS","DISTANCE_CONVERGENCE","DISTANCE_PRECISION","FORMAT","loc","datum","greatCircleTo","bearing","datums","WGS84","fromLat","fromLng","dToR","azimuthFrom","azimuthTo","prevLambda","sinLambda","cosLambda","sino","cosA2","coso","cos2om","sigma","U1","sinU1","cosU1","U2","sinU2","cosU2","lambda","converged","sinA","u2","deltao","fromLngLat","ll","fromLatLng","Extent","nw","se","containsAny","locs","include","includeAll","edges","sw","extent","World","Attribution","_extent","_itemText","inZoomLevel","_inZoomLevel","minZoom","maxZoom","inArea","_inArea","button","BUTTONS","_keyroot","panStep","_pan","ZoomControl","zoomStep","PI_DIV_4","Mercator","MAX_LNG","MAX_LAT","INVERSE_ITERATIONS","INVERSE_CONVERGENCE","centralMeridian","clamp","proj","lng0","_projectLat","ecc","ts","con","_inverseY","ecch","phi","dphi","SphericalMercator","Equirectangular","EPSG3857","_proj","_tm","_itm","toLocation","crs","EPSG3395","EPSG4326","projections","layers","Layer","_beforeReset","_panEnd","_activate","_updateAttribution","_deactivate","_applyExtent","_setVisibility","matchMinZoom","matchMaxZoom","inside","attribution","ShapeLayer","_initRoot","_markers","_dataChange","_translateSurface","_load","_clearMarkers","_loader","GeoJSONLoader","shapeCreated","cancelled","featureCreated","_panning","locationToView","locator","defaultStyle","unwrap","_loadGeometryTo","_featureCreated","_shapeCreated","_loadPolygon","_setLineFill","_loadPoint","_loadShape","rings","_buildPolygon","geojson","features","geometries","BubbleLayer","locationField","opt","scaleType","_scaleType","_createSymbol","_drawSymbol","scales","symbols","SqrtScale","domain","_domain","domainRange","outputRange","_ratio","rel","geo","square","drawingUtil","TileLayer","subdomains","viewType","_viewType","locationToLayer","viewOrigin","tileTitle","_updateView","TileView","extentToPoint","pool","TilePool","tileSize","urlTemplate","_center","_viewOrigin","pointToTileIndex","tileCount","firstTileIndex","indexToPoint","subdomainText","subdomainIndex","_tileTitle","tile","createTile","currentIndex","tileOptions","wrapIndex","roundPoint","subdomain","errorUrlTemplate","wrapValue","ImageTile","errorUrl","urlResult","urlOptions","quadkey","_create","maxDist","BingLayer","_scheme","_onMetadata","_fetchMetadata","imagerySet","uriScheme","resourceSets","resource","imageUrlSubdomains","zoomMin","zoomMax","_addAttribution","BingView","imageryProviders","coverageAreas","tileQuadKey","digit","quadKey","bing","MarkerLayer","_markerClick","titleField","_addOne","Marker","addTo","getLocation","getTitle","renderTooltip","contentTemplate","contentUrl","_getOrigin","_initScroller","_initMarkers","_initControls","_initLayers","controls","layerDefaults","markerDefaults","wraparound","scroller","zoomControl","_setExtent","_getExtent","_layerSize","layerToLocation","viewToLocation","eventOffset","eventToView","eventToLayer","eventToLocation","_setOrigin","_origin","layerWidth","layerHeight","_zoomAround","pivot","_createAttribution","_createNavigator","_createZoomControl","_createControlElement","defaultPos","posSelector","_navigatorPan","_navigatorCenter","bounds","_virtualSize","_scrollEnd","_zoomControlChange","_scroll","_scaleStart","_doubleTap","_scrollOffset","_panComplete","_panEndTS","_scaleToZoom","gestureCenter","centerLocation","tiles","_resetScroller","xBounds","yBounds","_renderLayers","scrollWrap","toZoom","fromZoom","Utils","isNearZero","isDefined","isUndefined","isBoolean","isType","simpleExtend","initArray","serializePoints","res","deserializePoints","randomInteger","DFT","getMatrixAngle","getMatrixScaling","findAngle","sngXComp","sngYComp","findRadian","thisRef","what","fold","constraint","bisort","sortfunc","Easing","Ticker","adapters","lastTime","_this","timerDelegate","onTimerEvent","addAdapter","onComplete","removeHandler","caller","onStep","seekTo","seekFromTo","intervalId","initState","propagate","movement","Range","rangeIntegerScale","EPSILON","plus","minus","times","lengthSquared","middleOf","toPolar","useDegrees","factor","halfpi","Polar","isOnLine","o1","u1","inflate","PathDefiner","rotatedBounds","staicPoint","adornerCenter","thisCenter","scaled","rectBottomRight","intersectLine","start1","end1","start2","end2","isSegment","tangensdiff","Empty","Intersect","rectWithLine","rects","reverseAngle","RectAlign","alignValues","_singleAlign","_left","_right","stretch","_stretch","_top","_middle","_bottom","alignCalc","applyRect","fromSVGMatrix","vm","fromMatrixVector","fromList","translation","scaling","nums","MatrixVector","fromMatrix","randomId","Geometry","_distanceToLineSquared","pt1","pt2","vx","vy","distanceToLine","distanceToPolyline","minimum","HashTable","_buckets","_createGetBucket","_bucketExists","containsKey","hashId","hashes","_hashes","bucket","ht","_hashString","_objectHashId","_hashId","Dictionary","dictionary","_hashTable","forEachValue","forEachKey","Queue","enqueue","kv","outgoing","incoming","weight","associatedShape","shortForm","isVirtual","isIsolated","isLinkedTo","getComplement","getChildren","getParents","balance","adjacentTo","removeLink","hasLinkTo","degree","incidentWith","getLinksWith","getNeighbors","neighbors","connection","sourceFound","targetFound","associatedConnection","getCommonNode","isBridging","v1","v2","getNodes","changeSource","changeTarget","changesNodes","oldSource","oldTarget","directTo","createReverseEdge","reversed","Graph","idOrDiagram","_nodeMap","_hasCachedRelationships","cacheRelationships","forceRebuild","assignLevels","startNode","visited","getConnectedComponents","componentIndex","setItemIndices","componentId","_collectConnectedNodes","components","addNodeAndOutgoings","setIds","nodeIndex","nextId","calcBounds","getSpanningTree","_addNode","levelCount","ni","cn","newLink","addLink","treeLevels","takeRandomNode","excludedNodes","incidenceLessThan","isHealthy","hasNode","sourceOrLink","addExistingLink","foundSource","getNode","addNode","foundTarget","removeAllLinks","hasLink","linkOrId","nodeOrId","_removeNode","removeNode","areConnected","n1","n2","layoutRect","newNode","newLinks","saveMapping","nodeMap","linkMap","nOriginal","nCopy","linkOriginal","linkCopy","linearize","addIds","depthFirstTraversal","foundNode","_dftIterator","breadthFirstTraversal","_stronglyConnectedComponents","excludeSingleItems","lowLinks","connected","component","findCycles","isAcyclic","isSubGraph","otherArray","thisArray","makeAcyclic","oneNode","rev","intensityCatalog","flowIntensity","catalogEqualIntensity","intensity","sourceStack","targetStack","targetLink","sources","si","sourceLink","ril","vertexOrder","kk","reversedEdges","Predefined","EightGraph","Mindmap","ThreeGraph","BinaryTree","levels","createBalancedTree","Linear","Tree","siblingsCount","Forest","trees","createBalancedForest","Workflow","Grid","graphString","previousLink","graph","lin","_addShape","kendoDiagram","undoable","addShape","_addConnection","connect","createDiagramFromGraph","doLayout","randomSize","gli","sourceShape","targetShape","SpringLayout","layoutGraph","limitToView","shi","news","counter","lastAdded","treeCount","createRandomConnectedGraph","nodeCount","maxIncidence","isTree","poolNode","randomAdditions","randomDiagram","shapeCount","normalVariable","Markers","none","arrowStart","filledCircle","arrowEnd","diffNumericOptions","Scale","Translation","toMatrixVector","Length","Rotation","CompositeTransform","_transform","_renderTransform","rotateMatrix","scaleMatrix","translatePoint","AutoSizeableMixin","_setScale","originWidth","_originWidth","originHeight","_originHeight","_setTranslate","_initSize","autoSize","_updateSize","_diffNumericOptions","_originSize","drawingContainer","_hover","_measured","_boundingBox","VisualBase","normalizeDrawingOptions","_fill","getColor","_stroke","strokeOptions","fillOptions","GradientClass","TextBlock","_textColor","_font","_initText","fontFamily","fontOptions","fontStyle","fontWeight","sizeChanged","Rectangle","_initPath","_setPosition","_drawPath","sizeOptions","sizeOptionsOrDefault","MarkerBase","_transformToPath","CircleMarker","positionMarker","targetSegment","ArrowMarker","_linePoints","MarkerPathMixin","_getPath","_normalizeMarkerOptions","startCap","endCap","_removeMarker","_createMarkers","markerType","_positionMarker","_capMap","_redrawMarker","pathChange","pathOptions","pathCapType","optionsCap","_redrawMarkers","_createElements","_setData","Line","Polyline","_updatePath","_pointsDiffer","currentPoints","differ","_initImage","_childrenChange","toFront","toBack","_reorderChildren","toIndex","drawingChildren","fixedPosition","childBoundingBox","_includeInBBox","toDrawingRect","_initCircle","circleOptions","_circle","Canvas","_translate","_viewBox","clearHtml","drawingOptions","Cursors","grip","cross","south","east","west","north","rowresize","colresize","HIT_TEST_DISTANCE","ITEMBOUNDSCHANGE","ROTATED","TARGET","HANDLE_NAMES","PositionAdapter","layoutState","froms","tos","subjects","getShapeById","LayoutUndoUnit","initialState","finalState","_initialState","_finalState","undo","setState","redo","conn","ticker","CompositeUnit","undoUnit","ConnectionEditUnit","redoSource","redoTarget","_redoSource","_redoTarget","_undoSource","_undoTarget","_updateConnector","updateModel","ConnectionEditUndoUnit","undoSource","undoTarget","DeleteConnectionUnit","targetConnector","DeleteShapeUnit","TransformUnit","undoStates","adorner","redoStates","refreshBounds","AddConnectionUnit","AddShapeUnit","deselect","PanUndoUnit","initialPosition","finalPosition","finalPos","RotateUnit","undoRotates","redoRotates","redoAngle","_angle","_innerBounds","_initialize","ToFrontUnit","initialIndices","_toIndex","ToBackUnit","UndoRedoService","capacity","begin","commit","execute","_restart","addCompositeItem","EmptyTool","toolService","tryActivate","getCursor","ScrollerTool","tool","scrollable","movableCanvas","virtualScroll","noMeta","hoveredItem","hoveredAdorner","_hoveredConnector","scrollPos","_storePan","PointerTool","selectSingle","_hitTest","_resizingAdorner","isDragHandle","connections","undoRedoService","SelectionTool","isSelected","selectArea","ConnectionTool","connector","_createConnection","_c","canDrag","connectionHandle","_connectionManipulation","_removeHover","activeConnection","_cachedTouchTarget","cachedTouchTarget","sourceConnector","Shape","getConnector","_syncConnectionChanges","_connectorsAdorner","ConnectionEditTool","isActive","handleName","testKey","ToolService","activeTool","_updateHoveredItem","_activateTool","_updateCursor","updateHovered","keyDown","metaKey","toRemove","_triggerRemove","_syncChanges","_destroyToolBar","_discardNewConnection","selectAll","wheel","zoomRate","zoomOptions","setTool","addToSelection","newConnection","disabledShape","hit","selectedConnections","_selectedItems","Connection","_hitTestItems","_hitTestElements","shapeHit","connectionHit","hitTestShapeConnectors","mainLayer","ConnectionRouterBase","LinearConnectionRouter","hitTest","getBounds","PolylineRouter","CascadingRouter","SAME_SIDE_DISTANCE_RATIO","routePoints","_connectorPoints","_floatingPoints","_resolvedSourceConnector","_resolvedTargetConnector","sourcePoint","targetPoint","_connectorSides","boundsPoint","secondarySign","_connectorSide","sideDistance","minSide","shapeBounds","sides","_sameSideDistance","pointX","pointY","sourceConnectorSide","targetConnectorSide","deltaX","sameSideDistance","shiftX","shiftY","cascadeStartHorizontal","_startHorizontal","sourceSide","AdornerBase","_adorners","ConnectionEditAdorner","_ts","sp","tp","spVisual","epVisual","_initialSource","_initialTarget","sourcePointDistance","targetPointDistance","sourceHandle","targetHandle","modelToLayer","ConnectorsAdorner","_refreshHandler","ctr","_clearVisual","ConnectorVisual","_keepCachedTouchTarget","visualChildren","ResizingAdorner","_manipulating","_initSelection","_createHandles","_internalChange","_rotatedHandler","_resizable","_handleOptions","_bounds","handleBounds","handlesCount","_getHandleBounds","_rotationOffset","_startAngle","_rotates","_positions","initialRotates","initialStates","handleOptions","_sp","_cp","_lp","shapeStates","visibleHandles","dragging","newBounds","staticPoint","dtl","dbr","changed","_truncateAngle","_rotating","shouldSnap","thr","_truncateDistance","hitToOppositeSide","_displaceBounds","newCenter","oldBounds","_truncatePositionToGuides","ruler","truncatePositionToGuides","_truncateSizeToGuides","truncateSizeToGuides","snap","snapOptions","snapAngle","snapSize","_diffStates","_syncShapeChanges","rotationThumb","_rotationThumbBounds","Selector","_ep","_adorn","visualBounds","modelToView","_visualBounds","HyperTree","LayoutBase","subtype","nodeDistance","iterations","horizontalSeparation","verticalSeparation","underneathVerticalTopOffset","underneathHorizontalOffset","underneathVerticalSeparation","componentSpacingX","componentSpacingY","layerSeparation","layeredIterations","startRadialAngle","endRadialAngle","radialSeparation","radialFirstLevelSeparation","keepComponentsInOneRadialLayout","ignoreContainers","layoutContainerChildren","ignoreInvisible","animateTransitions","gridLayoutComponents","maxWidth","startX","resultLinkSet","resultNodeSet","moveToOffset","boundingRect","currentWidth","deltax","deltay","nodeBounds","newpoints","currentHorizontalOffset","transferOptions","DiagramToHyperTreeAdapter","shapeMap","edgeMap","finalNodes","finalLinks","ignoredConnections","ignoredShapes","hyperMap","hyperTree","finalGraph","_renormalizeShapes","_renormalizeConnections","mapConnection","mapShape","getEdge","listToRoot","containerGraph","parentContainer","firstNonIgnorableContainer","isContainer","_isIgnorableItem","isContainerConnection","isDescendantOf","scope","isIgnorableItem","isCollapsed","_isVisible","_isTop","isShapeMapped","leastCommonAncestor","al","xa","xb","_isCollapsed","sink","sinkNode","areConnectedAlready","newEdge","finalNodeSet","LayoutState","initialTemperature","temperature","guessBounds","_expectedBounds","refineStage","_repulsion","_attraction","_shake","rho","_InverseSquareForce","wn","hn","wm","hm","_SquareForce","squareSize","TreeLayoutProcessor","treeGraph","layoutSwitch","layoutLeft","setChildrenDirection","setChildrenLayout","TreeDirection","Width","arrange","layoutRight","layoutUp","layoutDown","treeDirection","layoutRadialTree","previousRoot","calculateAngularWidth","radialLayout","Angle","tipOverTree","startFromLevel","aw","diameter","sectorAngle","sortChildren","basevalue","nl","normalizeAngle","deltaTheta","deltaThetaHalf","parentSector","childAngleFraction","setPolarLocation","BoundingRectangle","includeStart","rootDirection","rootLayout","childrenLayout","givenSize","shapeWidth","shapeHeight","AngleToParent","SectorAngle","pp","childrenwidth","selfLocation","male","female","leftcount","tipOverTreeStartLevel","TreeLayout","layoutComponents","getTree","getTreeForRoot","LayeredLayout","_initRuntimeProperties","downstreamLinkCount","upstreamLinkCount","uBaryCenter","dBaryCenter","upstreamPriority","downstreamPriority","gridPosition","_prepare","targetLayer","layerMap","layerCount","sortedNodes","o2","o1layer","o2layer","minLayer","linksTo","_dummify","_optimizeCrossings","_swapPairs","arrangeNodes","_moveThingsAround","_dedummify","setMinDist","minDist","layerIndex","minDistances","getMinDist","i1","i2","placeLeftToRight","leftClasses","leftPos","classNodes","placeLeft","POSITIVE_INFINITY","rightSibling","nodeLeftClass","upNodes","downNodes","neighbor","intDiv","placeRightToLeft","rightClasses","rightPos","placeRight","NEGATIVE_INFINITY","leftSibling","nodeRightClass","_getLeftWing","leftWing","computeClasses","_getRightWing","rightWing","wingPair","currentWing","wing","ndsinl","_nodesInLink","vnode","wings","classIndex","_isVerticalLayout","_isHorizontalLayout","_isIncreasingLayout","_gridPositionComparer","currentNode","currDown","downNode","placed","sequenceStart","virtualStartIndex","_firstVirtualNode","virtualStart","sequence","_sequencer","virtualEnd","nextVirtualNode","virtualEndIndex","adjustDirections","fromLayerIndex","layerIncrement","maximumHeight","prevBridge","prevBridgeTarget","nextBridge","nextBridgeTarget","getNeighborOnLayer","clayer","j1","j2","_sequenceSingle","combineSequences","pair","leftHeap","_positionDescendingComparer","rightHeap","_positionAscendingComparer","leftRes","rightRes","leftClass","_getComposite","rightClass","it","layoutLayer","gridPos","iconsidered","considered","n1Priority","n2Priority","nodeGridPos","nodeBaryCenter","calcBaryCenter","nodePriority","moveRight","moveLeft","calcDownData","calcUpData","priority","rightNode","rightNodePriority","leftNode","leftNodePriority","mapVirtualNode","nodeToLinkMap","linkToNodeMap","addLinkBetweenLayers","upLayer","downLayer","oLayer","dLayer","oPos","dPos","depthOfDumminess","dedum","prevLink","moves","iter","optimizeLayerCrossings","presorted","n1BaryCenter","n2BaryCenter","compareByIndex","compareValue","inode","maxIterations","downwards","secondPass","hasSwapped","calcCrossings","memCrossings","crossBefore","countLinksCrossingBetweenTwoLayers","node1","node2","node1GridPos","node2GridPos","crossAfter","ulayer","dlayer","n11","n12","n21","n22","l1","l2","crossings","n11gp","n12gp","numerator","denominator","graphOrNodes","diagramOrGraphOrNodes","GraphAdapter","KBUTTONICON","HTMLButton","_textElement","spriteCssClass","newSpan","renderButton","NEXT","DISABLEDSTATE","ARIA_DISABLED","MENU_CLICK","DIRECTIONS","cssClasses","baseItem","IMAGE_TEMPLATE","SPRITE_TEMPLATE","ICON_TEMPLATE","TEXT_TEMPLATE","ITEM_TEMPLATE","LINK_TEMPLATE","findFocusableSibling","getSibling","candidate","ButtonMenu","mainButton","_clickHandlers","_renderList","_renderListItem","menuItem","attributesId","_renderItemButton","class","_hide","_popup","_popupOpenHandler","_popupCloseHandler","_popupExpandHandler","adjustPopupWidth","listItemKeydown","destroyPopup","ARIA_EXPANDED","DISABLED","FOCUSSTATE","SplitButton","_renderButtons","_renderMenu","_enable","_aria","arrowIcon","labelSuffix","wrapperId","arrowButton","_getAppearanceClasses","_mainButton","_arrowButton","menu","kendoButtonMenu","menuOpen","menuOpenHandler","menuClose","menuCloseHandler","menuClick","computedWidth","soft","DropDownButton","iconTemplate","svgIconTemplate","Badge","_content","_appearance","cutoutBorder","roundings","full","sizes","_classNames","_text","_themeColor","_shape","_sizes","_fillMode","_rounded","_roundings","_cutoutBorder","_updateClassNames","keepClassNames","sizeAbbr","roundedAbbr","iconTemplateFunction","MOUSEDOWN","MOUSEUP","FOCUSEDSTATE","ACTIVESTATE","Button","_badge","_removeActive","_addActive","_isNativeButton","err","badgeEelement","badgeOptions","TOGGLE","ARIA_PRESSED","SELECTED","ToggleButton","_selected","KBUTTON","SINGLE","MULTIPLE","ButtonGroup","selectedIndices","_buttons","_renderItems","preventKeyNav","badgeEl","getKendoToggleButton","getKendoButton","_toggleIndex","_resetIndexes","_addButton","btn","_keyDown","buttonGroup","focusableItems","_decorateButtons","buttons","excludedNodesRegExp","MENU","LINK_SELECTOR","ICON_SELECTOR","LAST","TIMER","IMAGE","ZINDEX","POINTERDOWN","allPointers","TOUCHSTART","MOUSEENTER","RESIZE","POPUP_ID_ATTR","POPUP_OPENER_ATTR","KENDOPOPUP","HOVERSTATE","menuSelector","animationContainerSelector","childAnimationContainerSelector","popupSelector","allItemsSelector","itemSelector","availableItemsSelector","exclusionSelector","scrollButtonSelector","touchPointerTypes","ROLE","imageAttr","rendering","wrapperCssClass","firstLevel","itemCssAttributes","imageCssAttributes","imgAttributes","contentCssAttributes","contentAttr","defaultClasses","textClass","groupAttributes","expanded","groupCssClass","groupWrapperCssClass","updateItemClasses","elm","updateArrow","updateFirstLast","getArrowIconName","updateHasAriaPopup","parentLi","getParentLiItems","storeItemSelectEventHandler","selectHandler","getItemSelectEventHandler","setItemData","popupOpenerSelector","popupGroupSelector","getChildPopups","currentPopup","overflowWrapper","childPopupOpener","opener","popupId","popupParentItem","popupElement","itemPopup","parentsScroll","scrollDirection","isPointerTouch","removeSpacesBetweenItems","ul","Menu","_accessors","_templates","_updateClasses","_wrapGroups","_animations","nextItemZIndex","_initOverflow","_attachMenuEventsHandlers","openOnClick","clicked","_ariaId","closeOnClick","hoverDelay","popupCollision","_initData","_overflowWrapper","_checkActiveProxy","_checkActiveElement","_preventClose","_toggleHover","_removeHoverItem","_mouseleavePopup","_mouseenterPopup","_documentClickHandler","_documentClick","_detachMenuEventsHandlers","backwardBtn","forwardBtn","isHorizontal","_openedPopups","_scrollWrapper","templates","scrollButton","_initScrolling","initialWidth","initialCssWidth","_setOverflowWrapperWidth","_toggleScrollButtons","_popupsWrapper","wrapperCssWidth","wrapperWidth","menuWidth","borders","_reinitOverflow","_destroyOverflow","popupWrapper","popupParentLi","mouseWheelDistance","backward","backwardDouble","forwardDouble","scrolling","touchEvents","scrollValue","mouseenterHandler","mousedownHandler","_closeChildPopups","currentScroll","_toggleDisabled","attemptGetItem","referenceItem","_childPopupElement","insertAfter","plain","groupData","renderGroup","itemElement","renderItem","parentItems","_openAfterLoad","visiblePopups","closePopup","_timerTimeout","overflowPopup","_getPopup","_triggerEvent","windowHeight","maxHeight","nextZindex","parentHorizontal","parseDirection","getEffectDirection","kendoPopup","deactivate","_popupOpen","_configurePopupOverflow","_initPopupScrolling","popupOpener","_wrapPopupElement","groupId","skipMouseEvents","_initPopupScrollButtons","scrollButtons","_closeParentPopups","_keyTriggered","_setPopupHeight","popups","_initialHeight","popupOuterHeight","popupOffsetTop","bottomScrollbar","dontClearClose","_isRootItem","_forceClose","_closurePrevented","hoverItem","_hoverItem","_findRootParent","hasFocus","oldHoverItem","_oldHoverItem","_itemHasChildren","pointerTouch","isParentClosing","delegateTarget","rootMenuItems","subMenuItems","toElement","stopImmediatePropagation","_closePopups","rootPopup","groupParent","innerPopup","_innerPopup","openHandle","childGroup","childGroupVisible","shouldCloseTheRootItem","formNode","targetHref","sampleHref","isLocalLink","isTargetLink","_lastClickedElement","handled","_triggerSelect","childPopupId","_parentsUntil","enterKey","overflowMenuParents","itemSelectEventData","_getEventData","isSelectItemDefaultPrevented","isSelectDefaultPrevented","_moveHover","belongsToVertical","_itemBelongsToVertival","_itemDown","_itemUp","_itemEsc","_moveHoverToRoot","menuIsVertical","nextItem","_scrollToItem","_itemRight","parentItem","nextAll","_itemLeft","itemPosition","scrollDir","currentScrollOffset","itemSize","itemOffset","ulSize","scrollButtonSize","_unbindDataSource","_bindDataSource","_errorHandler","_error","findByUid","itemsToUpdate","updateProxy","_updateItem","removeProxy","_removeItem","_appendItems","nextElement","_fieldAccessor","fieldBindings","fieldAccessor","contentHtml","renderItems","itemWrapper","sprite","dataContentField","ContextMenu","_wire","closes","alignToAnchor","_showProxy","_closeProxy","_triggerFocusOnActivate","_focusMenu","_configurePopupScrolling","_setPopupWidth","windowWidth","popupOuterWidth","popupOffsetLeft","_closeTimeoutProxy","_eventOrigin","_targetChild","_closeHandler","sameTarget","containment","normalClick","_preventProxy","contextMenuElement","_triggerProxy","not","TOOLBAR","BUTTON_GROUP","SPLIT_BUTTON","MENU_BUTTON","SPACER_CLASS","STATE_SELECTED","STATE_HIDDEN","FORCE_HIDDEN","GROUP_START","GROUP_END","MENU_LINK","MENU_ITEM","OVERFLOW_ANCHOR","TEMPLATE_ITEM","TOOLBAR_TOOL","MENU_LINK_TOGGLE","DROPDOWNLIST","INPUT_BUTTON","KFOCUS","TABINDEX_MINUS_1","ARIA_CHECKED","SPACER","SEPARATOR","INPUT","GROUP","DATA_UID","DATA_ROLE_SELECTOR","DATA_TOGGLE_SELECTOR","DATA_ROLE_BUTTONMENU","KENDO_FOCUSABLE","OVERFLOW_OPEN","OVERFLOW_CLOSE","OVERFLOW_NEVER","OVERFLOW_AUTO","OVERFLOW_ALWAYS","KENDO_UID_ATTR","NOTHING","COMMA","UID","K_DROP_DOWN_BUTTON","K_SPLIT_BUTTON","K_TOGGLE_BUTTON","K_BUTTON_GROUP","toolbar","WIDGET_TYPES","splitButton","dropDownButton","popupButton","TOOLBAR_TOOLS_CLASSES","ColorPicker","Switch","SAFE_COMPONENTS","POPUP_BUTTON_TEMPLATE","ToolBar","resizable","_extendToolsOptions","_tabIndex","_shrink","overflowAnchor","_toggleOverflowAnchor","navigateOnTab","evaluateTemplates","overflowMenu","chooser","_getUid","_getItem","buttonsPopupItem","getSelectedFromGroup","parentGroupEl","templateEl","toolbarEl","_groupVisibleButtons","_resetTabIndex","_getAllItems","parentGroup","toggleTools","conditions","condition","toToggle","_processOptions","overflowTemplate","_addTemplate","_addCustomWidget","_addDefaultTool","_addSpacer","_addSeparator","_addAttributes","overflowComponent","_addMenuItem","componentOptions","_addToolbarTool","menuitem","togglable","menuButtons","_onMenuItemSelect","_addPopupButton","widgetElement","popupComponent","commandOn","overflowSeparator","spacer","inputsInTemplate","popupRef","hasButtons","primary","_attachWidgetEvents","_resetOpen","extensions","_focusIn","_focusOut","_onClick","_onToggle","_onSelect","_onOpen","_onClose","_childrenWidth","childrenWidth","flatMap","_mapTool","parentMessages","defaultTools","knownUid","uidSelector","buttonsPopups","_getNextElement","focusableItem","visibleBtns","_hideItem","_showMenuItem","_hideMenuItem","templateItem","isOverflowAnchor","_keyDeactivateTemplate","_keyActivateTemplate","_keyOpenOverflow","_keyFocusFirst","_keyFocusLast","_keyFocusNext","innerFocusable","innerWidget","_mapAttributes","toolOptions","dialog","toggleCondition","_mapComponent","componentMessages","componentPlaceholder","_menuItemSelect","shouldSelect","twin","menuEl","overflowItem","_processInner","parentUid","rootUid","_renderOverflow","horizontalDirection","kendoButton","uploadWrapper","files","toFocus","containerWidth","popupBtnElements","commandElement","visibleCommands","itemOuterWidth","hiddenCommands","firstFocusable","Item","OverflowButton","TemplateItem","ToolBarButton","registerComponent","ToggleInputBase","_initSettings","RENDER_INPUT","inputMethod","wrapperClass","HTMLInput","labelPosition","inputClass","labelEl","labelClass","optionalClass","optionalText","wrapperHtml","HTMLCheckBox","HTMLRadioButton","renderCheckBox","renderRadioButton","CheckBox","FOCUSED","STATEDISABLED","STATEREADONLY","FloatingLabel","widgetWrapper","floatCheck","inputInner","kendo$k","$$3","isFunction$1","_floatingLabel","_label","_unwrapFloating","_floatingLabelContainer","removeFloating","beforeElm","FOCUSABLE","ACTION_SHEET_BOTTOM","ACTION_SHEET_FULLSCREEN","ACTIONABLE_BUTTON_SELECTOR","ACTIONSHEET_TITLE_ID","hexColor","HEADER_TEMPLATE","closeButton","defaultItem","iconSize","iconColor","defaultActionButton","ActionSheet","_hasItems","_hasActionButtons","actionButtons","_mapItems","_mapActionButtons","_applyAria","_tabKeyTrap","clickEvent","_clickProxy","fullscreen","footerTemplate","headerTemplate","adaptive","focusOnActivate","defaultItemsMapper","defaultActionButtonsMapper","positionClass","ACTION_SHEET","actionsheetTitleId","popupAnimation","_openHandler","closeButtonPressed","_closeButtonPressed","groupedItems","itemsByGroup","currentItem","topItems","bottomItems","_createItems","contentContainer","hideOverflowContent","inlineStyles","_createActionButtons","actionButtonElement","actionsContainer","_footer","_header","altTarget","_elementHeight","isFullScreen","_focusFirstFocusableElement","firstFocusableElement","_focusLastFocusableElement","lastFocusableElement","_isActionableButton","_triggerAction","isButtonKeyTrigger","allFocusables","lastFocusable","actionButton","percentageUnitsRegex","HOVER","KSELECTED","LOADING","LIST_UL","FIXED_GROUP_HEADER","ITEMSELECTOR","CASCADE","DATA_BINDING","DATA_BOUND","SELECTED_ITEM_CHANGE","HIDDENCLASS","isIE","quotRegExp","alternativeNames","ComboBox","DropDownList","MultiColumnComboBox","ARIA_ACTIVEDESCENDANT","ARIA_BUSY","ARIA_SELECTED","GROUP_ROW_SEL","List","_isSelect","adaptiveMode","largeMQL","mediumMQL","smallMQL","_listSize","_filterHeader","_columnsHeader","_noData","_initValue","noDataTemplate","noData","_renderFooter","_renderNoData","_inputLabel","_focused","_floatCheck","_refreshFloatingLabel","filterTemplate","actionSheetFilterTemplate","_isFilterEnabled","filterInput","filterTitle","$header","columnsHeader","colGroup","currentColumn","columnsHeaderTemplate","currentWidthInt","widthStyle","footerEl","_listOptions","changeEventOption","_listChange","listBoundHandler","_listBound","focusedElm","labelledBy","_activateItem","_deactivateItem","groupTemplate","fixedGroupTemplate","listSize","_initList","opts","skipValueUpdate","listOptions","selectedItemChange","VirtualList","_hasActionSheet","StaticList","_setListValue","_updateSelectionState","_listMousedown","_hideClear","_showClear","_clearValue","_clearText","_accessor","_customOption","enforceMinLength","highlightFirst","_clearFilter","_filterSource","isMultiColumnFiltering","filterFields","resetPageSettings","removed","removeFiltersForField","_clearFilterExpressions","newExpression","_pushFilterExpression","isValidFilterExpr","_cascading","setDSFilter","dataSourceState","filtersToRemove","_toggleNoData","_toggleHeader","_allowOpening","_old","_ignoreCase","widgetOptions","fromFilter","_buildExpression","_open","_clearButton","clearButton","_inputValue","_typingTimeout","_emptySearch","_searchByWord","_form","_resetHandler","selectedDataItems","autocomplete","suggest","_userTriggered","_isValueChanged","unifyType","_valueBeforeCascade","_oldIndex","isFiltered","_typing","typing","_dataValue","_offsetHeight","_height","isMccb","_adjustListWidth","autoWidth","_onCloseButtonPressed","_focusItem","noFocusedItem","scrollToIndex","_calculateGroupPadding","groupHeader","_calculatePopupHeight","_calculateColumnsHeaderPadding","_refreshScroll","enableYScroll","_resizePopup","_createPopup","_createActionSheet","_addFilterHeader","popupFilter","_cachedFilterValue","_removeFilterHeader","_removeStaticHeader","_postCreatePopup","_onActionSheetCreate","listViewValue","_clean","tagList","_toggle","preventFocus","touchEnabled","MSPointers","_prevent","_triggerCascade","_cascadeTriggered","_cascadedValue","userTriggered","_triggerChange","_requestStartHandler","_requestEndHandler","requireValueMapper","_initial","_initialIndex","_parentWidget","_cascadeSelect","_cascadeValue","_accessorInput","_accessorSelect","_custom","_syncValueAndText","custom","_hideBusy","_busy","_arrowIcon","_showBusy","_request","_requestEnd","_firstItem","focusFirst","_lastItem","focusLast","_nextItem","focusNext","_prevItem","focusPrev","_getNormalizedDataItem","isIndex","hasOptionLabel","optionLabel","getElementIndex","dataItemByIndex","_getNormalizedSelectCandidate","normalizedCandidate","moveIndex","selectCandidate","_fetch","_get","activeFilter","shouldTrigger","focusout","scrollWith","_fetchData","dataText","dataValue","htmlElement","formId","_shouldPreventDefaultReset","_removeDataItems","_dataItems","_cascade","_cascadeHandlerProxy","_cascadeHandler","_cascadeFilterRequests","_selectedValue","_toggleCascadeOnFocus","valueBeforeCascade","_clearSelection","_cascadeChange","filterValue","cascadeFromParentField","cascadeFromField","cascadeOnCustomValue","currentHandler","STATIC_LIST_NS","aria","_touchHandlers","_optionID","_selectedIndices","_getter","_createOnScrollProxy","_fixedHeader","startY","endY","tapPosition","_touchTriggered","_triggerClick","_scrollId","itemOffsetTop","itemOffsetHeight","contentScrollTop","contentOffsetHeight","bottomDistance","_getValues","_valueGetter","hasCandidate","focusIndex","skipUpdate","_skipUpdate","singleSelection","uiSelectedIndices","added","filtered","_deselectFiltered","_deselect","_valueComparer","_valueDeferred","_valueIndices","_onScroll","_renderHeader","_valueExpr","normalized","_valueType","_dataItemPosition","valueExpr","templateText","_normalizeIndices","newIndices","_firstVisibleItem","itemHeight","childElementCount","lastChild","previousSibling","isGrouped","visibleItem","_renderItem","itemRole","notFirstItem","hasColumns","altRow","isLastGroupedItem","_renderColumns","cspCompliantHtml","dataContext","_lastDSFilter","skipUpdateOnBind","isItemChange","itemsToMatch","selectedLength","unchanged","mapChangedItems","_bound","LIST_ITEM","TABLE_ITEM","GROUPITEM","LISTBOUND","ITEMCHANGE","VIRTUAL_LIST_NS","lastFrom","isPrimitive","placeholderTemplate","renderedColumns","widthValue","renderColumns","webkitTransform","isActivePromise","mockList","contentClasses","_fetching","TABLE_LIST","_selectedDataItems","_selectedIndexes","_rangesList","_promisesList","_triggerListBound","_selectable","listScreens","oppositeBuffer","mapValueTo","_selectProxy","_deferValueSet","mute","_selectingValue","_highlightSelectedItems","_getElementByDataItem","_mute","_createList","_removeSelectedDataItem","_forcePrefetch","_prefetchByValue","_checkValuesOrder","_removedAddedIndexes","dataView","_dataView","forSelection","mapValueToIndex","mapValueToDataItem","checkboxes","valueMapperOptions","_getIndecies","deferredRange","existingRange","isEmptyList","_activeDeferred","_getSkip","_findDataItem","_getRange","triggerEvent","_getElementByIndex","_focusedIndex","_getElementLocation","_screenHeight","heightContainer","isAlreadySelected","prefetchStarted","_selectDeferred","_deselectCurrentValues","_listCreated","_lastScrollTop","hasData","setScreenHeight","yPosition","yDownPostion","screenEnd","_generateItems","_saveInitialRanges","reorder","_buildValueGetter","_setHeight","getList","_listItems","_whenChanged","_reorderList","padHeight","lastRequestedRange","lastRangeStart","rangeStart","flatGroup","groupLength","_getterDeferred","firstItemIndex","_indexConstraint","currentVisibleGroup","firstVisibleDataItemIndex","firstVisibleDataItem","firstVisibleGroup","fixedGroupText","_itemMapper","listType","_currentGroup","_getDataItemsCollection","lastScrollTop","_listIndex","theValidator","downThreshold","upThreshold","listValidator","theNew","currentOffset","list2","range2","reshift","_bufferSizes","opposite","buffers","selectedIndexes","removedindexesCounter","_deselectSingleItem","oldSkip","nsFocusEvent","READONLY","ARIA_READONLY","CLICKEVENTS","HOVEREVENTS","STATE_FILTER","STATE_ACCEPT","_focusInputHandler","_focusInput","_optionLabel","_inputTemplate","_prev","_word","_span","_mobile","_attachAriaActiveDescendant","_textAccessor","_optionLabelText","_allowFilterPaste","valueTemplate","optionLabelTemplate","_arrow","_focusFilter","_resizeFilterInput","originalPrevent","isInputActive","_optionLabelDataItem","loweredText","_valueSetter","_assignInstance","_buildOptions","optionLabelValue","initialIndex","_presetValue","_selectValue","_filterPaste","_search","_attachFocusHandlers","_focusinHandler","_focusoutHandler","isIFrame","_wrapperMousedown","dropDownWrapper","_keypress","isPopupVisible","_getElementDataItem","_matchText","_shuffleData","splitIndex","optionDataItem","_selectNext","oldFocusedItem","isInLoop","sameCharsOnly","_last","normalizeIndex","charCode","compareElement","jQueryCandidate","_resetOptionLabel","focusedItem","additionalClass","keepState","arrowBtn","SELECTOR","DOMelement","accesskey","unselectable","optionLabelText","ARIASELECTED","CHANGING","UNSELECT","UNSELECTING","MID","SPLITEND","SPLITSTART","RANGESTART","RANGEEND","INPUTSELECTOR_ICONSSELECTOR_FONT","INPUTSELECTOR_ICONSSELECTOR_SVG","INPUTSELECTOR_SVG_PARTS","INPUTSELECTOR","supportEventDelegation","Selectable","dragToSelect","selectableClass","_lastActive","inputSelectors","ignoreOverlapped","addIdToRanges","toggleable","_isElement","selectedClass","whichCode","buttonCode","_allowSelection","_lastRange","compareElements","selectRange","_firstSelectee","_notify","_unselect","_isActivated","useAllItems","_selectElement","_invalidateSelectables","rangeSelectedAttr","_currentlyActive","toSelect","_collidesWithActiveElement","marqueeRect","activeElementRect","activeElements","elemRect","tempRect","selectElement","selectedRanges","rangeId","mapLocation","selectedSingleItems","preventNotify","_allowPreventDefault","allowPaste","resetTouchEvents","continuousItems","RangeSelectable","cellSelectorValid","_mouseEnter","TOUCHEND","_mouseLeave","resetOnStart","cellSelector","preventFlagUpdate","tables","lastCell","firstCell","clearVariables","clearStartEnd","selectFrom","selectTo","_useStart","_useEnd","_clearFlags","toDateObject","toCompare","elementPosition","firstRect","secondRect","selectableMode","asLowerString","extractFormat","transitionOrigin","cellTemplate","dateString","emptyCellTemplate","otherMonthCellTemplate","weekNumberTemplate","KEYDOWN_NS","SLIDE","CENTURY","NAVIGATE","OTHERMONTH","EMPTYCELL","CELLSELECTOR","CELLSELECTORVALID","FOCUS_WITH_NS","MOUSEENTER_WITH_NS","PREVARROW","NEXTARROW","decade","century","HEADERSELECTOR","Calendar","disableDates","getDisabledExpr","_viewWrapper","hasFooter","_today","mousetoggle","_isSingleSelection","_focusView","focusOnNav","_isRangeSelection","rangeSelectable","_setCurrent","_selectDates","restrictValue","_addClassProxy","_cell","todayString","toDateString","getToday","_cellByDate","_removeClassProxy","selectDates","allowReverse","centuryCellsFormat","showOtherMonthDays","weekColumnHeader","navigateTo","parentViews","classic","actionAttr","linksSelector","modern","_destroySelectable","_title","_table","_bindTable","_option","navigateToPast","navigateToFuture","navigateUp","navigateDown","isEqualDate","currentView","_oldTable","future","viewWrapper","_changeView","isWeekColumnVisible","_animate","_visualizeSelectedDatesInView","_selectCell","validSelectedDates","datesUnique","_validateValue","createDate","isInRange","selectedDates","selectableOptions","_onRelatedTarget","_restoreSelection","_preventChange","startInRange","endInRange","visibleRange","_visibleRange","_dateInViews","initialRange","useEnd","useStart","_toggleSelection","_cellsBySelector","_addSelectedCellsToArray","_rangeSelection","currentCell","toDateCell","daysDifference","fromDate","daysBetweenTwoDates","addDaysToArray","currentDateIndex","_dateInView","firstDateInView","_isNavigatable","cellIndex","isDisabled","lastDateInView","prevent","lastActive","_todayClick","_keyboardToggleSelection","focusedDate","_nextNavigatable","_keyboardRangeSelection","focusedCell","navigatableDate","_horizontal","viewWidth","_vertical","_selectedCell","isBigger","value1","value2","isEqualMonth","isTodayDisabled","todayClass","_todayClass","executeTemplate","_updateAria","valueType","firstVisibleDay","calendarInfo","tzOffsetBefore","resultDATE","tzOffsetDiff","getCalendarInfo","navigateUrl","showHeader","hasUrl","currentCalendar","firstDayIdx","shiftArray","shortNames","perRow","build","weekNumberBuild","date1","date2","month1","year1","month2","year2","calendarMonths","namesFull","setMonth","minYear","maxYear","modular","cellsPerRow","otherMonthTemplate","multiplier","endDate","fromDateUTC","endDateUTC","numberOfDays","dateObject","disabledDates","convertDatesArray","createDisabledExpr","isEqualDatePart","viewsEnum","extendStatics","setPrototypeOf","__extends","TypeError","__","Direction","cloneDate","hour","addMonths","expectedMonth","Day","isEqual","expected","timezones","zoneOffset","ruleOffset","CURRENT_UTC_TIME","zoneRule","currentRule","NO_TZ_INFO","formatMessage","flattenValues","getZoneRules","_a","addMinutes","dayAbbr","monthAbbr","padNumber","isZoneMissingHour","prevHour","shiftZoneMissingHour","utcDate","dstOffset","convertTimezoneUTC","utcLocal","fromTimezone","toTimezone","baseDiff","midDate","midOffset","ZonedDate","_utcDate","tzOffset","timezoneOffset","localDate","_localDate","enumerable","configurable","fromLocalDate","shiftZone","fixedOffset","adjDate","fromUTCDate","toUTCDate","addTime","utcMid","utcResult","stripTime","getUTCMilliseconds","ms","setUTCMilliseconds","sec","setUTCSeconds","setUTCMinutes","setUTCHours","setUTCMonth","setUTCFullYear","toISOString","timeString","toTimeString","formatOffset","abbrev","abbrTimezone","locales","toLocaleDateString","toLocaleTimeString","toUTCString","toPrimitive","getVarDate","formatUTC","DateInputInteractionMode","Mask","partMap","Constants","Key","padZero","dateSymbolMap","parseToInt","_b","setYears","areDatePartsEqualTo","isValidDate","SHORT_PATTERN_LENGTH_REGEXP","DateObject","formatPlaceholder","cycleTime","_d","_e","autoCorrectParts","leadingZero","typedMonthPart","knownParts","_partiallyInvalidDate","invalidDateParts","startDateOffset","sampleFormat","dateFormatString","setExisting","resetInvalidDate","localeId","cldrKeys","cldr","numbers","monthNames","allFormattedMonths","dayPeriods","allDayPeriods","modifyExisting","getExisting","getFormattedDate","getTextAndFormat","customFormat","partiallyInvalidText","formattedDate","formattedDates","getFormattedInvalidDates","getInvalidDatePartValue","partsForSegment","getPartsForSegment","datePartText","formattedDatesForSymbol","getInvalidDatePart","formattedInvalidDate","modifyPart","invalidDateFound","timeModified","isMonth","isDay","symbolExists","invalidDatePartValue","resetInvalidDateSymbol","monthValue","dayValue","dateCandidate","newValueCandidate","modifyDateSymbolWithValue","dateCandidateExists","markDatePartsAsExisting","setInvalidDatePart","shouldNormalizeCentury","normalizeCentury","parsePart","currentChar","resetSegmentValue","cycleSegmentValue","rawInputValue","rawTextValue","isDeleting","originalFormat","isInCaretMode","dateParts","datePartsLiterals","datePartIndex","flatDateParts","datePart","parseResult","switchToNext","resetPart","hasInvalidDatePart","resetLeadingZero","rawValueStartsWithLiteral","rawValueEndsWithLiteral","endsWith","rawValueHasConsecutiveLiterals","baseDate","baseFormat","replaced","basePrefix","baseSuffix","suffix","convertedBaseFormat","hasFixedFormat","datePartStartIndex","segmentLength","formatToTextLengthDiff","parsedDate","matchMonth","dayPeriod","matchDayPeriod","isZeroCurrentChar","isAbbrMonth","incrementLeadingZero","partPattern","patternValue","currentMaxLength","tryParse","middleNumber","candidateDateString","autoCorrectedPrefixAndSuffix","isCurrentCharParsable","monthNumber","peekedValue","peek","peekedDateString","peekedDate","patternSatisfied","datePartValue","textToParse","month_1","valueCandidate","symbolMap","hasLeadingZero","setLeadingZero","getLeadingZero","twoDigitYear","cropTwoDigitYear","centuryBase","getNormalizedCenturyBase","peekValue","typedChar","monthAsNum","lowerChart","am","pm","dateFormatParts","partLength","returnValue","resultText","resultFormat","processTextSymbolsEnded","ignoreFormatSymbolsCount","formatSymbolIndex","formatSymbolIndexModifier","resetInvalidDatePart","shouldResetInvalidDate","modifyDateSymbolWithOffset","partIndex","segmentPart","maskPartIndex","KeyCode","defaultPrevented","TOUCH_START","MOUSE_DOWN","MOUSE_UP","KEY_DOWN","PASTE","MOUSE_SCROLL","MOUSE_WHEEL","VALUE_CHANGE","INPUT_END","BLUR_END","FOCUS_END","defaultDateInputOptions","hasPlaceholder","millisecond","minute","selectNearestSegmentOnFocus","selectPreviousSegmentOnBackspace","enableMouseWheel","allowCaretMode","autoSwitchParts","autoSwitchKeys","autoFill","DateInput","_super","currentText","currentFormat","interactionMode","None","previousElementSelection","createDateObject","setTextAndFormat","forceUpdate","onElementDragStart","onElementDrop","onElementClick","onElementMouseDown","onElementMouseUp","onElementInput","onElementKeyDown","onElementFocus","onElementBlur","onElementChange","onElementPaste","onElementMouseWheel","setDateObjectOptions","getDateObjectOptions","resetLocale","Caret","selectNearestSegment","mouseDownStarted","focusedPriorToMouseDown","switchedPartOnPreviousKeyAction","selectionPresent","placeholderToggled","setSelection","selectionByIndex","triggerInput","isPasteInProgress","updateOnPaste","keyDownEvent","isBackspaceKey","isDeleteKey","originalInteractionMode","hasCaret","restorePreviousInputEventState","oldExistingDateValue","oldDateValue","oldText","newText","formatPattern","keyEvent","oldTextSeparator","oldSegmentText","newSegmentText","deletedSymbol","approximateStringMatching","previousElementValue","elementValue","navigationOnly","parsePartsResults","switchPart","parsePartResult","symbolForSelection","lastParseResult","lastParseResultHasNoValue","parsingFailedOnDelete","newExistingDateValue","hasExistingDateValueChanged","newDateValue","currentSelection","diffChar","forceUpdateWithSelection","switchDateSegment","selectionBySymbol","tryTriggerValueChange","triggerInputEnd","triggerFocus","refreshElementValue","triggerFocusEnd","triggerBlur","triggerBlurEnd","triggerChange","triggerKeyDown","keyEventMatchesAutoSwitchKeys","isTabKey","getStepFromSymbol","shouldPreventDefault","modifyDateSegmentValue","triggerMouseWheel","inputFormat","oldDateObjectValue","writeValue","displayFormat","currentSymbol","symbolCandidate","previousFormatSymbol","msDigits","triggerValueChange","elementValueLength","selectionOffset","setElementValue","restorePreviousElementValue","restorePreviousElementSelection","verifyValue","getDateObject","showPlaceholder","newElementValue","selectDateSegment","keyObject","DateInputCommon","STATEINVALID","buildKeys","cultureInfo","getCultureFormat","skipStyling","_validationIcon","dateInputInstance","inputEnd","_blinkInvalidState","keydown","_emptyMask","_formElement","_hasDateInput","_bindInput","_unbindInput","_addInvalidState","_invalidStateTimeout","_removeInvalidState","_paste","DIV","parseFormats","DateView","bigScreenMQL","smallScreenMQL","omitPopup","dateDiv","_dateViewID","_calendar","popupHovered","selectIsClicked","disabledDate","DatePicker","_initialOptions","_createDateView","_createDateViewProxy","dateView","_createDateInput","_oldText","ARIATemplate","dateInput","_updateARIA","_dateIcon","_dateInput","_navigateCalendarHandler","_navigateCalendar","_isReset","dateChanged","valueUpdated","textFormatted","_setCalendarAttribute","isSameType","optionsValue","_ariaTemplate","$$1","addInputPrefixSuffixContainers","prefixInsertBefore","suffixInsertAfter","prefixContainer","suffixContainer","prefixOptions","suffixOptions","hasPrefixContent","hasSuffixContent","layoutFlow","containerOrientation","INPUT_SEPARATOR","_prefixContainer","_suffixContainer","placeholderSupported","SPIN","INTEGER_REGEXP","NumericTextBox","inputType","isStep","_focusout","_arrows","_validation","_input","_focusin","selectValue","restrictDecimals","spinners","selectOnFocus","upArrowText","downArrowText","_toggleText","_upArrowEventHandler","_downArrowEventHandler","_spin","_upArrow","_downArrow","_keyup","_inputHandler","_placeholder","_arrowsWrap","_adjust","arrows","_spinning","buttonHtml","release","_focusing","groupRegExp","extractRegExp","_format","caretPosition","_getFactorValue","_culture","accessKey","_numPadDot","_cachedCaret","_step","decimalSeparator","minInvalid","_isPasted","_numericRegex","fractionRule","_separator","_floatRegExp","truncate","isNotNull","DOMElement","INVALIDMSG","invalidMsgRegExp","INVALIDINPUT","VALIDINPUT","VALIDATIONSUMMARY","INVALIDLABEL","MESSAGEBOX","ARIAINVALID","emailRegExp","ALLOWED_URL_PROTOCOLS","CHECKBOXSELECTOR","NUMBERINPUTSELECTOR","NAME","FORM","NOVALIDATE","VALIDATE","VALIDATE_INPUT","patternMatcher","hasAttribute","parseHtml","parseHTML","searchForMessageContainer","isLabelFor","validator","allowSubmit","validateOnInit","SUMMARYTEMPLATE","Validator","resolvers","ruleResolvers","resolveRules","validateAttributeSelector","_errorTemplate","errorTemplate","_summaryTemplate","validationSummary","_inputSelector","_checkboxSelector","_errors","_isValidated","_validateOnInit","required","email","dateCompare","captcha","noNameCheckbox","namedCheckbox","checkbox","radio","raise","matcher","isValidated","isValid","getCaptchaId","_validating","_checkElement","validateOnBlur","_allowSubmit","validateInput","inputs","invalid","showValidationSummary","valid","_checkValidity","lbl","_findMessageContainer","messageText","_extractMessage","messageLabel","wasValid","isInputInner","lblId","_decorateMessageContainer","prevElement","_inputWrapper","inputWrap","inputLabel","errorId","_associateMessageContainer","hideMessages","_disassociateMessageContainers","hideValidationSummary","locators","messageLocators","locate","decorate","ruleKey","nonDefaultMessage","customMessage","_getInputNames","_errorsByName","inputNames","_renderSummary","_summaryClick","errorsList","nameSpecialCharRegExp","EQUAL_SET","specialRules","fieldType","createAttributes","ruleName","validation","DATATYPE","BINDING","stringRule","attributeName","addIdAttribute","kendoEditors","editors","kendoNumericTextBox","editorOptions","kendoDatePicker","kendoTextBox","kendoCheckBox","renderHiddenForMvcCheckbox","convertItems","kendoEditor","editor","tagElement","getEditorTag","mobileEditors","addValidationRules","modelField","shouldRenderHidden","Editable","_isMobile","_validateProxy","_validate","clearContainer","skipFocus","isHidden","isCustomEditor","isKendoEditor","preventChangeTrigger","_validationEventInProgress","bindAttribute","bindingRegex","validatable","modelFields","bindAttr","isAntiForgeryToken","antiForgeryTokenName","convertToValueBinding","queueMicrotask","_focusEditor","MODAL_NS","KWINDOW","KWINDOWTITLE","KWINDOWTITLEBAR","KWINDOWCONTENT","KWINDOWRESIZEHANDLES","KOVERLAY","KWINDOWMINIMIZED","LOADINGICONCLASS","KHOVERSTATE","KFOCUSEDSTATE","MAXIMIZEDSTATE","INLINE_FLEX","KHIDDEN","CURSOR","REFRESH","RESIZESTART","RESIZEEND","RESTORE","DATADOCOVERFLOWRULE","MINIMIZE_MAXIMIZEICONSELECTORS","KPINICONCLASSSELECTOR","KUNPINICONCLASSSELECTOR","PIN_UNPINICONCLASSSELECTOR","TITLEBAR_BUTTONSSELECTOR","REFRESHICONSELECTOR","WINDOWEVENTSHANDLED","zero","SIZE","toInt","constrain","executableScript","getPosition","offsetLeft","parentOverflowX","parentOverflowY","Window","windowContent","globalWindow","suppressActions","actions","_createWindow","_dimensions","_footerTemplate","_footerMessages","minTop","minLeft","maxTop","maxLeft","_overlay","_buttonEnter","_buttonLeave","_windowActionHandler","_keydownContent","_draggable","pinned","pin","_onDocumentResize","sizeClass","contentBoxSizing","lrBorderWidth","tbBorderWidth","_isPinned","_updateBoundaries","containmentTop","containmentLeft","_animationOptions","resizing","toggleMaximization","resizeHandle","WindowResizing","WindowDragging","dragHandle","_actions","windowSpecificCommands","icons","maximize","cachedOptions","_containerScrollTop","_containerScrollLeft","_enableDocumentScrolling","fade","autoFocus","isMaximized","isMinimized","_closable","_close","newWidth","newHeight","unpin","minimize","preventScroll","_stopDocumentScrolling","_actionForIcon","_modals","windowInstance","windowElements","modals","_object","newTop","newLeft","documentWindow","_scrollIsAppended","titleBar","titleElement","titlebar","scrollContainer","otherModalsVisible","showOptions","Fade","overlayFx","fadeIn","_removeOverlay","suppressAnimation","hideOverlay","hideOptions","systemTriggered","lastModal","_actionable","_shouldFocus","avoidFocus","currentWindow","containmentContext","openAnimation","originalZIndex","windowObject","zIndexNew","windowTop","restoreOptions","_sizingAction","actionId","_storeOverflowRule","$body","$html","_restoreOverflowRule","$element","_isOverflowStored","overflowRule","win","wnd","contentFrame","_triggerRefresh","_ajaxComplete","_loadingIconTimeout","_ajaxError","_ajaxSuccess","_showLoading","iframeSrcAttributes","_preventDragging","dragstart","dragend","addOverlay","removeOverlay","dragcancel","iconName","resizeDirection","initialSize","containerOffset","wrapperPosition","relativeElMarginLeft","relativeElMarginTop","_relativeElMarginLeft","_relativeElMarginTop","windowBottom","windowRight","leftRtlOffset","scrollOffset","newWindowTop","initialWindowPosition","initialPointerPosition","_finishDrag","CASCADING","MAXINT","ITEMROTATE","PAN","TRANSFORMED","MOUSEWHEEL_NS","BUTTON_TEMPLATE","DefaultConnectors","defaultButtons","imageClass","isAutoConnector","closestConnector","resCtr","minimumDistance","indicesOfItems","extra","DiagramElement","serializable","_contentVisual","_updateContentVisual","_createContentVisual","elementTemplate","_canSelect","Connector","shapeId","tempStr","updateOptionsFromModel","createShapeVisual","updateBounds","_createConnectors","_setOptionsFromModel","modelOptions","filterShapeDataItem","redrawVisual","_isEditable","_redrawVisual","syncChanges","_suspendModelRefresh","_resumeModelRefresh","_rotate","_alignContent","contentVisual","containerRect","aligner","contentBounds","alignedBounds","_transformedBounds","_rotatedBounds","_setBounds","_triggerBoundsChange","_layouting","refreshConnections","cloneDataItem","deselected","_internalSelection","_selectionChanged","deltaAngle","newPosition","sc","cons","nameOrPoint","_transformPoint","boundsChange","shapeOptions","shapeVisual","_visualOptions","_updateConnectors","_showConnectors","rotatedPoint","visualTemplate","_initRouter","_sourcePoint","_targetPoint","_setSource","_setTarget","definers","fromConnector","toConnector","dataMap","_dataMap","fromX","fromY","toX","toY","filterConnectionDataItem","connectionsDataSource","clearField","shapeSource","defaultConnector","_removeFromSourceConnector","_clearSourceConnector","_setFromOptions","sourceDefiner","_sourceDefiner","shapeTarget","_removeFromTargetConnector","_clearTargetConnector","_setToOptions","targetDefiner","_targetDefiner","connectorName","setNewTarget","inactiveItem","_inactiveShapeItems","_deferredConnectionUpdates","onActivate","alignToPath","midIdx","_router","pts","_resolveConnectors","_refreshPath","sourceConnectors","targetConnectors","_resolveAutoConnectors","minNonConflictSource","minNonConflictTarget","minSource","minTarget","sourceIdx","targetIdx","minNonConflict","_testRoutePoints","router","passRoute","exclude","_getRouteExclude","_shapesQuadTree","hitTestRect","_isPointInsideShape","boundsX","boundsY","Diagram","_initElements","_extendLayoutOptions","_initDefaults","_interactionDefaults","_initCanvas","adornerLayer","_createHandlers","_clipboard","pauseMouseHandlers","_fetchFreshData","_createGlobalToolBar","_createOptionElements","toolBar","DiagramToolBar","_toolBarClick","createShape","createModel","_createShape","edit","createConnection","_connectionsDataMap","addConnection","editModel","editorType","cancelEdit","shapeEditors","shapeTemplate","connectionSelectorHandler","connectionSelector","connectionEditors","connectionTemplate","PopupEditor","_editArgs","_getEditDataSource","_destroyEditor","saveEdit","userShapeDefaults","copyDefaultOptions","canvasContainer","viewPort","_userEvents","_dragStart","_gestureStart","_gestureChange","_gestureEnd","doubleTap","_mouseMove","_mouseDown","_mouseUp","_syncHandler","_pauseMouseHandlers","_eventPositions","_meta","_createToolBar","ctrlPressed","origEvent","documentToModel","initialCenter","_gesture","_initialCenter","documentToView","updateZoom","_getValidZoom","zoomedPoint","_panTransform","_updateAdorners","pointPosition","shapesLength","_createShapes","_createConnections","_findConnectionTarget","destroyScroller","_destroyGlobalToolBar","_parseBounds","splitDiagramElements","_removeShapeDataItem","_removeConnectionDataItem","_getDiagramItems","_fixOrdering","bringIntoView","newPan","_zoomMainLayer","alignShapes","_getPan","_copyOffset","copied","mapping","_updateCopiedConnection","sourceConnection","di","_containerOffset","viewToDocument","viewToModel","_transformWithMatrix","_matrixInvert","_layerMatrix","layerToModel","_layerMatrixInvert","viewPoint","modelToDocument","setConnectionsDataSource","_connectionDataSource","_redrawConnections","getShapeByModelId","getShapeByModelUid","getConnectionByModelId","getConnectionByModelUid","_transformMainLayer","_finishPan","_storeViewMatrix","_storeLayerMatrix","canvasTransform","shapePos","conPos","removedConnections","_removeShape","_removeConnection","recursive","_removeShapeConnections","_addDataItem","_addDataItemByUid","_addDataItems","parentShape","_refreshSource","_bindingRoots","_addItem","preventClosing","singleToolBar","popupZIndex","popupWidth","popupHeight","connectionBounds","_normalizePointZoom","InactiveItemsCollection","undone","redone","_loadingShapes","_loadingConnections","ds","_shapesRefreshHandler","_shapesRequestStartHandler","_shapesErrorHandler","_refreshShapes","_shapesRequestStart","_treeDataSource","_connectionsRefreshHandler","_connectionsRequestStartHandler","_connectionsErrorHandler","_refreshConnections","_connectionsRequestStart","_connectionsError","_shouldRefresh","_removeShapes","_updateShapes","_syncShapes","_rebindShapesAndConnections","_addShapes","_addConnections","_removeConnections","_updateConnections","_addConnectionDataItem","_validateConnector","adorners","_refresh","viewRect","clipWrap","deferredConnectionUpdates","_tools","createToolBar","createTools","appendTools","createPopup","getKendoPopup","_toolBar","kendoToolBar","getKendoToolBar","createTool","toolName","_setAttributes","editTool","deleteTool","rotateAnticlockwiseTool","_appendGroup","_rotateGroup","rotateClockwiseTool","createShapeTool","_createGroup","createConnectionTool","undoTool","_historyGroup","redoTool","_getAttributes","selectedElements","selectedElemens","rotateClockwise","rotateAnticlockwise","Editor","_getFields","createEditable","formContent","_renderTemplate","_renderFields","_cancelClick","_attachButtonEvents","_createButton","_cancelClickHandler","_updateClickHandler","_updateClick","_editUpdateClickHandler","kendoDropDownList","InactiveItem","deffered","_testRect","overlapsBounds","childIdx","shapeIdx","boundsChangeHandler","_boundsChange","rootSize","xIdx","yIdx","mainOptions","ITEM_CREATED","MOUSEOVER_NS","TreeMap","_setLayout","colorField","_layout","SliceAndDice","SliceAndDiceView","Squarified","SquarifiedView","_onDataChange","_wrapItem","htmlSize","compute","_setColors","createRoot","_colorIdx","colorRange","minRGBtoDecimal","rgbToDecimal","maxRGBtoDecimal","isDarker","colorBrightness","rgbColor","colorByIndex","buildColorFromRGB","colorsByLength","leafNodes","_contentSize","renderHeight","_removeActiveState","_resizeItems","setItemSize","leaf","layoutChildren","parentArea","totalArea","itemsArea","minimumSideValue","layoutHorizontal","squarify","initElement","computeDim","worstAspectRatio","newCoords","layoutRow","layoutLast","layoutV","layoutH","layoutVertical","layoutChange","areaSum","maxArea","rootCoord","newRootCoord","_totalArea","ans","_createTitle","_compile","_createWrap","rootWrap","_createLeaf","_createTile","_tileColorBrightness","_itemCoordinates","titleTemplate","sliceAndDice","minColor","maxColor","currentStep","decimalToRgb","colorLength","colorToRGB","rgbToHex","eventProxy","_triggerTouch","gestureEventProxy","enableSwipe","_swipestart","_swipemove","_dragstart","minXDelta","maxYDelta","maxDuration","doubleTapTimeout","lastTap"],"sources":["kendo.dataviz.mobile.js"],"mappings":"CAAA,SAAWA,EAAQC,GACI,iBAAZC,SAA0C,oBAAXC,OAAyBA,OAAOD,QAAUD,EAAQG,QAAQ,WAC9E,mBAAXC,QAAyBA,OAAOC,IAAMD,OAAO,CAAC,UAAWJ,KAC/DD,EAA+B,oBAAfO,WAA6BA,WAAaP,GAAUQ,MAAcC,aAAeT,EAAOS,cAAgB,CAAC,EAAGT,EAAOS,aAAaC,OAASV,EAAOS,aAAaC,QAAU,CAAC,EAAGV,EAAOS,aAAaC,OAAOC,GAAKV,IAC/N,CAJD,CAIGW,MAAM,WACL,IAAIC,EACJ,MAAMC,EAAQ,SAERC,EAAqB,CACvBC,MAAO,qBACPC,OAAQ,8CACRC,MAAO,wBAqEX,SAASC,EAAWC,GAChB,GAAKA,EAYL,OARAP,EACIA,GACAQ,OAAOC,OAAO,CAAC,EAAGP,EAAoBQ,MAAMC,SAASX,aAErDO,KAASP,IACTO,EAAQP,EAAYO,IA5E5B,SAA0BA,GACtB,IAAIK,EAAiBC,OAAOC,WAAWP,GACnCQ,EAAmB,GACnBC,EAAmB,GACnBC,EAAmB,GACnBC,EAAkB,CAAEN,kBAExB,MAAMO,EAAmBC,IACrBH,EAAiBI,SAASC,GAAOA,EAAGF,KAEhCA,EAAGG,QACHR,EAAiBM,SAASC,GAAOA,EAAGF,KAEpCJ,EAAiBK,SAASC,GAAOA,EAAGF,IACxC,EAiDJ,OA9CAR,EAAeY,iBAAiBvB,EAAOkB,GAyCvCD,EAAgBO,SAvCEH,IACdL,EAAiBS,KAAKJ,GACfJ,GAsCXA,EAAgBS,QAnCCL,IAGb,GAFAP,EAAiBW,KAAKJ,GAElBV,EAAeW,QAAS,CACxB,MAAMK,EAAQhB,EAAegB,MAQ7BN,EALW,IAAIO,oBAAoB5B,EAAO,CACtC2B,QACAL,SAJY,IAQpB,CAEA,OAAOL,CAAe,EAqB1BA,EAAgBY,QAlBCR,IACbN,EAAiBU,KAAKJ,GACfJ,GAiBXA,EAAgBa,QAdA,KACRnB,GACAA,EAAeoB,oBAAoB/B,EAAOkB,GAE9CJ,EAAmB,KACnBC,EAAmB,KACnBC,EAAmB,KACnBL,EAAiB,KACjBM,EAAkB,IAAI,EAQnBA,CACX,CAeWe,CAAiB1B,EAC5B,CAEA,IAOI2B,EAAkB,CAClBC,KAAM,qBACNC,YAAa,WACbC,aAAc,CAAC,kBAAmB,UAAW,YAAa,WAAY,cACtEC,YAAa,EACbC,QAAS,aAAaC,QAAQ,aAAc,IAC5CC,iBAAkB,iLAItB,SAAUC,EAAG7B,EAAQ8B,GACjB,IAMIC,EANAlC,EAAQG,EAAOH,MAAQG,EAAOH,OAAS,CAAEmC,SAAU,CAAC,GACpDC,EAASJ,EAAEI,OACXC,EAAOL,EAAEK,KACTC,EAAUC,MAAMD,QAChBE,EAAOR,EAAEQ,KACTC,EAAOC,KAEPC,EAAOxC,EAAOwC,MAAQ,CAAC,EACvBC,EAAU,CAAC,EACXC,EAAgB,IAChBC,EAAe,uBACfC,EAAkB,sEAClBC,EAAe,uBACfC,EAAQ,QACRC,EAAO,OACPC,EAAO,OACPC,EAAU,UACVC,EAAU,UACVC,EAAiB,CACbC,EAAK,MACLC,EAAK,OACLC,EAAKJ,EACLK,EAAKL,EACLM,EAAKV,EACLW,EAAKX,EACLY,EAAK,MACLC,EAAKV,EACLW,EAAKX,EACLY,EAAKZ,EACLa,EAAKf,EACLgB,EAAKhB,EACLiB,EAAKjB,EACLkB,EAAKlB,EACLmB,EAAK,SACLC,EAAK,SACLC,EAAK,YACLC,EAAK,YACLC,EAAKtB,EACLuB,EAAKvB,EACLwB,EAAKxB,EACLyB,EAAKzB,GAET0B,EAAa,CACTC,MAAO,CACHC,KAAM,SACNC,UAAW,EACXC,WAAY,KAGhBC,QAAS,CACLH,KAAM,WACNC,UAAW,EACXC,WAAY,KAGhBE,QAAS,CACLJ,KAAM,OACNC,UAAW,CACPlB,EAAG,EACHC,EAAG,EACHC,EAAG,GAEPiB,WAAY,KAGhBG,UAAW,CACPL,KAAM,aACNC,UAAW,GAGfK,IAAK,CACDN,KAAM,OACNC,UAAW,IAGnBM,EAAW,WACXC,EAAS,SACTC,EAAS,SACTC,EAAS,SACTC,EAAO,OACPC,EAAU,UACVC,EAAY,YACZC,EAAS,SACTC,EAAkB,kBAClBC,EAAa,aAEbC,EAAc,CAAC,EACfC,EAAc,CAAC,EACfC,EAAQ,GAAGA,MACXC,EAAqB,CAAE,aAAc,WAAY,QAAS,OAAQ,UAAW,gBAE7EC,EAAoB,WAChB,IAAIC,EAAKC,EAAaC,EAAM9E,EAAM+E,EAASC,EACvCC,EAASC,UAAW,IAAO,CAAC,EAC5BC,EAAI,EACJC,EAASF,UAAUE,OACnBC,GAAO,EAsBX,IAnBuB,kBAAXJ,IACRI,EAAOJ,EAGPA,EAASC,UAAWC,IAAO,CAAC,EAC5BA,KAImB,iBAAXF,GAAyC,mBAAXA,IACtCA,EAAS,CAAC,GAITE,IAAMC,IACPH,EAASrH,KACTuH,KAGIA,EAAIC,EAAQD,IAGhB,GAAqC,OAA9BJ,EAAUG,UAAWC,IAGxB,IAAMnF,KAAQ+E,EAGE,WAAR/E,GAA6B,UAARA,GAA4B,KAARA,IAG7C4E,EAAMK,EAAQjF,GAITiF,KAHLH,EAAOC,EAAS/E,MAQXqF,GAAQP,IAAUQ,OAAOC,cAAeT,KACvCD,EAAc/D,MAAMD,QAASiE,MAE1BD,GACDA,GAAc,EACdG,EAAQJ,GAAO9D,MAAMD,QAAS+D,GAAQA,EAAM,IAG5CI,EAAQJ,GAAOU,OAAOC,cAAeX,GAAQA,EAAM,CAAC,EAIxDK,EAAQjF,GAAS2E,EAAmBU,EAAML,EAAOF,IAGzCA,IAAStE,IACjByE,EAAQjF,GAAS8E,KAOjC,OAAOG,CACX,EAIJ,SAASO,IAAS,CAFlBjH,EAAM6B,QAAU,aAAaC,QAAQ,aAAc,IAInDmF,EAAM7E,OAAS,SAAS8E,GACpB,IACIC,EAKAC,EANAC,EAAO,WAAY,EAEnBC,EAAOjI,KACPkI,EAAWL,GAASA,EAAMM,KAAON,EAAMM,KAAO,WAC1CF,EAAKG,MAAMpI,KAAMsH,UACrB,EAMJ,IAAKQ,KAHLE,EAAKK,UAAYJ,EAAKI,UACtBN,EAAKG,EAASH,GAAKG,EAASG,UAAY,IAAIL,EAE7BH,EACU,MAAjBA,EAAMC,IAAmBD,EAAMC,GAAQQ,cAAgB7H,OAEvDsH,EAAGD,GAAU/E,GAAO,EAAM,CAAC,EAAGiF,EAAKK,UAAUP,GAASD,EAAMC,IAE5DC,EAAGD,GAAUD,EAAMC,GAO3B,OAHAC,EAAGO,YAAcJ,EACjBA,EAASnF,OAASkF,EAAKlF,OAEhBmF,CACX,EAEAN,EAAMS,UAAUE,aAAe,SAASpB,GACpCnH,KAAKmH,QAAUqB,GAAW,CAAC,EAAGxI,KAAKmH,QAASA,EAChD,EAEkBxG,EAAM8H,UAAaC,GAAoB,OAAVA,GAAkBA,IAAU9F,EAC3DjC,EAAMgI,QAAWD,GAAoB,OAAVA,GAAkBA,IAAU9F,EACtDjC,EAAMiI,SAAYF,GAA2B,iBAAVA,EAClC/H,EAAMkI,UAAaH,IAAWI,MAAMJ,EAAQK,WAAWL,IAC1D/H,EAAMqI,OAAUN,GAAUA,GAASA,EAAMO,QAJxD,MAKMC,EAAavI,EAAMuI,WAAcR,GAA2B,mBAAVA,EAExD,IAAIS,EAAiB,WACjBnJ,KAAKoJ,mBAAoB,CAC7B,EAEIC,EAAqB,WACrB,OAAkC,IAA3BrJ,KAAKoJ,iBAChB,EAEIE,EAAa1B,EAAM7E,OAAO,CAC1BoF,KAAM,WACFnI,KAAKuJ,QAAU,CAAC,CACpB,EAEAC,KAAM,SAASC,EAAWC,EAAUC,GAChC,IACIC,EAEApC,EACAqC,EACAC,EALA7B,EAAOjI,KAEP+J,SAAoBN,IAAcvD,EAAS,CAACuD,GAAaA,EAIzDO,SAA4BN,IAAazD,EAG7C,GAAIyD,IAAa9G,EAAa,CAC1B,IAAKgH,KAAOH,EACRxB,EAAKuB,KAAKI,EAAKH,EAAUG,IAE7B,OAAO3B,CACX,CAEA,IAAK2B,EAAM,EAAGpC,EAASuC,EAAWvC,OAAQoC,EAAMpC,EAAQoC,IACpDH,EAAYM,EAAWH,IAEvBE,EAAUE,EAAqBN,EAAWA,EAASD,MAG3CE,IACAE,EAAWC,EACXA,EAAU,WACN7B,EAAKgC,OAAOR,EAAWK,GACvBD,EAASzB,MAAMH,EAAMX,UACzB,EACAwC,EAAQD,SAAWA,IAEd5B,EAAKsB,QAAQE,GAAaxB,EAAKsB,QAAQE,IAAc,IACvD9H,KAAKmI,IAIpB,OAAO7B,CACX,EAEA0B,IAAK,SAASI,EAAYL,GACtB,OAAO1J,KAAKwJ,KAAKO,EAAYL,GAAU,EAC3C,EAEAQ,MAAO,SAAST,EAAWC,GACvB,IACIE,EAEApC,EACAsC,EAJA7B,EAAOjI,KAEP+J,SAAoBN,IAAcvD,EAAS,CAACuD,GAAaA,EAGzDO,SAA4BN,IAAazD,EAG7C,IAAK2D,EAAM,EAAGpC,EAASuC,EAAWvC,OAAQoC,EAAMpC,EAAQoC,IACpDH,EAAYM,EAAWH,IAEvBE,EAAUE,EAAqBN,EAAWA,EAASD,MAGtCxB,EAAKsB,QAAQE,GAAaxB,EAAKsB,QAAQE,IAAc,IACvDU,QAAQL,GAIvB,OAAO7B,CACX,EAEAmC,QAAS,SAASX,EAAW9E,GACzB,IAEIiF,EACApC,EAHAS,EAAOjI,KACPqK,EAASpC,EAAKsB,QAAQE,GAI1B,GAAIY,EAAQ,CAaR,KAZA1F,EAAIA,GAAK,CAAC,GAER2F,OAASrC,EAEXtD,EAAEyE,mBAAoB,EAEtBzE,EAAEwE,eAAiBA,EAEnBxE,EAAE0E,mBAAqBA,EAIlBO,EAAM,EAAGpC,GAFd6C,EAASA,EAAOxD,SAEcW,OAAQoC,EAAMpC,EAAQoC,IAChDS,EAAOT,GAAKW,KAAKtC,EAAMtD,GAG3B,OAA+B,IAAxBA,EAAEyE,iBACb,CAEA,OAAO,CACX,EAEAa,OAAQ,SAASR,EAAWK,GACxB,IAEIF,EAFA3B,EAAOjI,KACPqK,EAASpC,EAAKsB,QAAQE,GAG1B,GAAIA,IAAc7G,EACdqF,EAAKsB,QAAU,CAAC,OACb,GAAIc,EACP,GAAIP,EACA,IAAKF,EAAMS,EAAO7C,OAAS,EAAGoC,GAAO,EAAGA,IAChCS,EAAOT,KAASE,GAAWO,EAAOT,GAAKC,WAAaC,GACpDO,EAAOG,OAAOZ,EAAK,QAI3B3B,EAAKsB,QAAQE,GAAa,GAIlC,OAAOxB,CACX,IAIH,SAASwC,EAAYC,EAAMC,GACvB,GAAIA,EACA,MAAO,IACHD,EAAKE,MAAM,KAAKC,KAAK,OAChBD,MAAM,OAAOC,KAAK,WAClBpI,QAAQ,MAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,MAAO,OAAS,IAEjC,IAAIyH,EAAQQ,EAAKI,OAAO,GACpBC,EAAOL,EAAKM,UAAU,GAE1B,MAAc,MAAVd,EACO,KAAOa,EAAO,KACJ,MAAVb,EACA,qBAAuBa,EAAO,KAE9B,IAAML,EAAO,iBAGhC,CAED,IAAIO,EAAqB,OACrBC,EAAe,iBACfC,EAAqB,QACrBC,EAAc,aACdC,EAAqB,OACrBC,EAAc,aACdC,EAAQ,CAAC,GAAI,IAAK,KAAM,MAAO,QAkEvC,SAASC,GAAIC,EAAQC,EAAQC,GAKzB,OAFAA,GADAD,EAASA,GAAU,IADnBD,GAAkB,IAEIjE,QAGX+D,EAAMG,GAAQV,UAAU,EAAGW,GAAOF,EAGtCA,CACX,CA03CI,SAASG,GAAoBC,EAASC,GAClC,IAAI1E,EAAO2E,EAAOC,EAYlB,OAVA5E,EAAQyE,EAAQzE,SACV6E,IAAI,UAAW,IACrB7E,EAAM6E,IAAI,aAAc,UACxB7E,EAAM8E,SAASvJ,EAAE,SAEjBoJ,EAAQ3E,EAAM+E,WAAWL,IAAiB,GAC1CE,EAAS5E,EAAMgF,YAAYN,IAAiB,GAE5C1E,EAAMiF,SAEC,CACHN,MAAOA,GAAS,EAChBC,OAAQA,GAAU,EAE1B,CA+DA,SAASM,GAAWT,EAASU,EAAUC,GACnC,IACIL,EAAaxL,EAAM8L,YACnBL,EAAczL,EAAM+L,aACpBC,EAASd,EAAQc,SACjBC,EAAUf,EAAQgB,QAAQ,0BAC1BC,EAAsBjB,EAAQkB,SAAS,aACvCC,EAAUnB,EAAQoB,GAAG,YACrBC,EAAeP,EAAO,GAAGQ,MACzBC,EAAgBvB,EAAQ,GAAGsB,MAAMnB,OAEjCY,EAAQK,GAAG,YACXL,EAAQX,IAAI,CACRoB,QAAS,GACTC,SAAU,KAIL9J,EAAc+J,KAAKL,EAAanB,QAAUvI,EAAc+J,KAAKL,EAAalB,UAG9EgB,GACDnB,EAAQ2B,IAAIb,GAAQc,OAEpBjB,GACAG,EAAOV,IAAI,QAAS,IAExBU,EAAOV,IAAI,CACPF,MAAOQ,EAAWJ,EAAWN,GAAS,EAAOiB,GAAuB,EAAIX,EAAWN,GAAS,EAAOiB,KAGjF,SAAlBM,EACAvB,EAAQI,IAAI,CAAED,OAAQI,EAAYO,KAElCA,EAAOV,IAAI,CACPD,OAAQI,EAAYP,KAIvBmB,GACDnB,EAAQ6B,OAGpB,CAEA,SAASlF,GAAWmF,GAChB,IAAIpG,EAAI,EACJC,EAASF,UAAUE,OAEvB,IAAKD,EAAI,EAAGA,EAAIC,EAAQD,IACpBqG,GAAcD,EAAarG,UAAUC,IAGzC,OAAOoG,CACX,CAEA,SAASC,GAAcD,EAAaE,GAChC,IAIIC,EACAC,EACAC,EACAC,EACAC,EARAC,EAAkBxN,EAAMyN,KAAKD,gBAC7BE,EAAsB1N,EAAMyN,KAAKC,oBACjCC,EAAa3N,EAAMyN,KAAKE,WACxBC,EAAyB5N,EAAMyN,KAAKG,uBAOxC,IAAKT,KAAYD,IAKTI,GAHJD,SADAD,EAAYF,EAAOC,OAGF1H,GAAwB,OAAd2H,EACZA,EAAUzF,YAEV,OAIX2F,IAAa/K,OAAS+K,IAAaE,GAAmBF,IAAaI,GACnEJ,IAAaK,GAAcL,IAAaM,GAA0BN,IAAaO,QAC7E7N,EAAMuI,WAAWpI,EAAO2N,cAAgBR,IAAaQ,aAAkBV,aAAqBW,YAevFV,IAAazH,IACpBoH,EAAYG,GAAYC,GAdpBA,aAAqBY,KACrBhB,EAAYG,GAAY,IAAIa,KAAKZ,EAAU9E,WACpCC,EAAW6E,EAAU3G,OAC5BuG,EAAYG,GAAYC,EAAU3G,SAElC8G,EAAWP,EAAYG,GAEnBH,EAAYG,UADL,IAAe1H,GACE8H,GAEA,CAAC,EAE7BN,GAAcD,EAAYG,GAAWC,IAOjD,OAAOJ,CACX,CAEA,SAASiB,GAAOC,EAAOC,EAAKC,GACxB,IAAK,IAAIC,KAAMF,EACX,GAAIA,EAAIG,eAAeD,IAAOF,EAAIE,GAAIzB,KAAKsB,GACvC,OAAOG,EAGf,OAAOD,IAASnM,EAAcmM,EAAOF,CACzC,CAQA,SAASK,GAAYC,GACjB,OAAOA,EAAI1M,QAAQ,WAAW,SAAS2M,EAAUC,GAC7C,OAAOA,EAAGC,aACd,GACJ,CAEA,SAASC,GAAkB1D,EAAS2D,GAChC,IAAiBC,EAAbC,EAAS,CAAC,EAwBd,OAtBIC,SAASC,aAAeD,SAASC,YAAYC,kBAC7CJ,EAAgBE,SAASC,YAAYC,iBAAiBhE,EAAS,IAE3D2D,GACA7M,EAAEK,KAAKwM,GAAY,SAAS5F,EAAKlB,GAC7BgH,EAAOhH,GAAS+G,EAAcK,iBAAiBpH,EACnD,MAGJ+G,EAAgB5D,EAAQkE,aAEpBP,GACA7M,EAAEK,KAAKwM,GAAY,SAAS5F,EAAKlB,GAC7BgH,EAAOhH,GAAS+G,EAAcP,GAAYxG,GAC9C,KAIH/H,EAAMqP,KAAKN,KACZA,EAASD,GAGNC,CACX,CA1qDA7M,EAAW,CACPoN,UAAW,OACXC,cAAc,EACdC,OAAQ,SAASC,EAAUhC,GACvB,IAAIxE,EACApC,EACA6I,EAAO,GAEX,IAAKzG,EAAM,EAAGpC,EAAS4G,EAAK5G,OAAQoC,EAAMpC,EAAQoC,IAC9CyG,GAAQD,EAAShC,EAAKxE,IAG1B,OAAOyG,CACX,EACAC,QAAS,SAASF,EAAUjJ,GACxB,IAKIY,EACAwI,EACA3G,EAPA4G,EAAWzN,EAAO,CAAC,EAAG/C,KAAMmH,GAC5B8I,EAAYO,EAASP,UACrBQ,EAAeR,EAAUS,MAAMzF,GAAoB,GACnDiF,EAAeM,EAASN,aACxBS,EAAe,yDAKnB,GAAIzH,EAAWkH,GACX,OAAOA,EAcX,IAXAO,GAAgBT,EAAe,QAAUD,EAAY,KAAO,GAE5DU,GAAgB,gBAEhBJ,EAAQH,EACH3N,QAAQ0I,EAAoB,aAC5B1I,QAAQyI,EAAc,2BACtBzI,QAAQ2I,EAAa,KACrB3I,QAAQ4I,EAAoB,aAC5BT,MAAM,KAENhB,EAAM,EAAGA,EAAM2G,EAAM/I,OAAQoC,IAC9B+G,GAAgBlG,EAAY8F,EAAM3G,GAAMA,EAAM,GAAM,GAGxD+G,GAAgBT,EAAe,KAAO,IAItCS,GAFAA,GAAgB,wBAEYlO,QAAQ6I,EAAa,KAEjD,IAII,OAFAvD,EAAK,IAAI6I,SAASH,EAAcE,IAC7BE,WAAaxN,KAAKyN,MAAMP,EAAM/I,OAAS,GACnCO,CACX,CAAE,MAAOpD,GACL,IAAIhE,EAAMoQ,eAGN,MAAM,IAAIC,MAAMrQ,EAAMsQ,OAAO,8CAA+Cb,EAAUO,IAFtF7P,EAAOoQ,QAAQC,KAAK,qBAAqBf,sBAA6BO,KAI9E,CACJ,GAgBR,WACI,IACIS,EACAC,EAUAC,EAZAC,EAAY,2HAGZC,EAAO,CACH,KAAM,MACN,KAAM,MACN,KAAM,MACN,KAAM,MACN,KAAM,MACN,IAAM,MACN,KAAM,QAGVC,EAAW,CAAC,EAAEA,SAsBlB,SAASC,EAAMC,GAEX,OADAJ,EAAUK,UAAY,EACfL,EAAUhE,KAAKoE,GAAU,IAAOA,EAAOlP,QAAQ8O,GAAW,SAASrM,GACtE,IAAIR,EAAI8M,EAAKtM,GACb,cAAcR,IAAMwB,EAASxB,EACzB,OAAS,OAASQ,EAAE2M,WAAW,GAAGJ,SAAS,KAAK5K,OAAO,EAC/D,IAAK,IAAO,IAAO8K,EAAS,GAChC,CAEA,SAASxC,EAAI2C,EAAKC,GACd,IAAIxK,EACAzC,EACAkN,EACAxK,EAEAyK,EAEAvM,EAHAwM,EAAOd,EAEP1I,EAAQqJ,EAAOD,GAYnB,GATIpJ,UAAgBA,IAAUtC,UAAiBsC,EAAMyJ,SAAWlM,IAC5DyC,EAAQA,EAAMyJ,OAAOL,WAGdR,IAAQrL,IACfyC,EAAQ4I,EAAI/G,KAAKwH,EAAQD,EAAKpJ,KAGlChD,SAAcgD,KACDxC,EACT,OAAOwL,EAAMhJ,GACV,GAAIhD,IAASS,EAChB,OAAOiM,SAAS1J,GAAS2J,OAAO3J,GAASrC,EACtC,GAAIX,IAASY,GAAWZ,IAASW,EACpC,OAAOgM,OAAO3J,GACX,GAAIhD,IAASU,EAAQ,CACxB,IAAKsC,EACD,OAAOrC,EAIX,GAFA+K,GAAOC,EACPY,EAAU,GACoB,mBAA1BR,EAASrJ,MAAMM,GAA6B,CAE5C,IADAlB,EAASkB,EAAMlB,OACVD,EAAI,EAAGA,EAAIC,EAAQD,IACpB0K,EAAQ1K,GAAK4H,EAAI5H,EAAGmB,IAAUrC,EAMlC,OAJA2L,EAAuB,IAAnBC,EAAQzK,OAAe,KAAO4J,EAC9B,MAAQA,EAAMa,EAAQpH,KAAK,MAAQuG,GAAO,KAAOc,EAAO,IACxD,IAAMD,EAAQpH,KAAK,KAAO,IAC9BuG,EAAMc,EACCF,CACX,CACA,GAAIV,UAAcA,IAAQlL,EAEtB,IADAoB,EAAS8J,EAAI9J,OACRD,EAAI,EAAGA,EAAIC,EAAQD,WACT+J,EAAI/J,KAAOrB,IAElB8L,EAAI7C,EADJrK,EAAIwM,EAAI/J,GACGmB,KAEPuJ,EAAQtQ,KAAK+P,EAAM5M,IAAMsM,EAAM,KAAO,KAAOY,QAKzD,IAAKlN,KAAK4D,EACFjI,OAAOwO,eAAe1E,KAAK7B,EAAO5D,KAClCkN,EAAI7C,EAAIrK,EAAG4D,KAEPuJ,EAAQtQ,KAAK+P,EAAM5M,IAAMsM,EAAM,KAAO,KAAOY,GAU7D,OAJAA,EAAuB,IAAnBC,EAAQzK,OAAe,KAAO4J,EAC9B,MAAQA,EAAMa,EAAQpH,KAAK,MAAQuG,GAAO,KAAOc,EAAO,IACxD,IAAMD,EAAQpH,KAAK,KAAO,IAC9BuG,EAAMc,EACCF,CACX,CACJ,QAlGWrD,KAAKtG,UAAU8J,SAAWlM,IAEjC0I,KAAKtG,UAAU8J,OAAS,WACpB,IAAIlK,EAAOjI,KAEX,OAAOoS,SAASnK,EAAKqK,WACjB9G,GAAIvD,EAAKsK,iBAAkB,GAAK,IAChC/G,GAAIvD,EAAKuK,cAAgB,GAAK,IAC9BhH,GAAIvD,EAAKwK,cAAgB,IACzBjH,GAAIvD,EAAKyK,eAAiB,IAC1BlH,GAAIvD,EAAK0K,iBAAmB,IAC5BnH,GAAIvD,EAAK2K,iBAAmB,IAAM,IAC1C,EAEAP,OAAOhK,UAAU8J,OAASU,OAAOxK,UAAU8J,OAASW,QAAQzK,UAAU8J,OAAS,WAC3E,OAAOnS,KAAKsS,SAChB,UAoFOhP,EAAKyP,YAAc9M,IAC1B3C,EAAKyP,UAAY,SAASrK,EAAOsK,EAAUC,GACvC,IAAI1L,EAIJ,GAHA6J,EAAM,GACNC,EAAS,UAEE4B,IAAU9M,EACjB,IAAKoB,EAAI,EAAGA,EAAI0L,EAAO1L,GAAK,EACxB8J,GAAU,gBAGA4B,IAAU/M,IACxBmL,EAAS4B,GAIb,GADA3B,EAAM0B,EACFA,UAAmBA,IAAa/M,WAAoB+M,IAAa5M,UAAiB4M,EAASxL,SAAWrB,GACtG,MAAM,IAAI6K,MAAM,kBAGpB,OAAO7B,EAAI,GAAI,CAAE,GAAIzG,GACzB,EAEP,CA5ID,GA+IA,WACI,IAAIwK,EAAmB,qGACnBC,EAAuB,oBACvBC,EAAgB,uCAChBC,EAAc,MACdC,EAAQ,GACRC,EAAQ,IAERC,EAAQ,IACRC,EAAO,IAEPC,EAAK,QACLC,EAAiB,CAAC,EAAElC,SAoEvB,SAASmC,EAAYC,GAClB,GAAIA,EAAS,CACT,GAAIA,EAAQC,aACR,OAAOD,EAGX,UAAWA,IAAY3N,EAAQ,CAC3B,IAAIpD,EAAWnC,EAAMmC,SACrB,OAAOA,EAAS+Q,IAAY/Q,EAAS+Q,EAAQjJ,MAAM,KAAK,KAAO,IACnE,CAEA,OAAO,IACX,CAEA,OAAO,IACX,CAEA,SAASmJ,EAAWF,GAKhB,OAJIA,IACAA,EAAUD,EAAYC,IAGnBA,GAAWlT,EAAMmC,SAASkR,OACrC,CAxFArT,EAAMmC,SAAWnC,EAAMmC,UAAY,CAAC,EACpCnC,EAAMmC,SAAS,SAAW,CACtBV,KAAMsR,EACNI,aAAc,CACVG,QAAS,CAAC,MACVC,SAAU,EACV,IAAK,IACL,IAAK,IACLC,UAAW,CAAC,GACZC,QAAS,CACLH,QAAS,CAAC,OAAQ,OAClBC,SAAU,EACV,IAAK,IACL,IAAK,IACLC,UAAW,CAAC,GACZE,OAAQ,KAEZC,SAAU,CACNlS,KAAM,YACNmS,KAAM,MACNN,QAAS,CAAC,OAAQ,MAClBC,SAAU,EACV,IAAK,IACL,IAAK,IACLC,UAAW,CAAC,GACZE,OAAQ,MAGhBG,UAAW,CACPC,SAAU,CACNC,KAAM,CACFC,MAAO,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YAC1EC,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACtDC,WAAY,CAAE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAEtDC,OAAQ,CACJH,MAAO,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YACtHC,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,QAE7FG,GAAI,CAAE,KAAM,KAAM,MAClBC,GAAI,CAAE,KAAM,KAAM,MAClBC,SAAU,CACNzQ,EAAG,WACH0Q,EAAG,sBACHC,EAAG,iCACHC,EAAG,mBACHlR,EAAG,sBACHc,EAAG,UACHV,EAAG,UACHW,EAAG,8BACHE,EAAG,UACHkQ,EAAG,aACHC,EAAG,iCACHnR,EAAG,aACHoR,EAAG,cAEP,IAAK,IACL,IAAK,IACLC,SAAU,EACVC,gBAAiB,QA0C7B9U,EAAMkT,QAAU,SAAS6B,GACrB,IAA+B7B,EAZEW,EAY7B1R,EAAWnC,EAAMmC,SAErB,GAAI4S,IAAgB9S,EAMhB,OApB6B4R,EAmBD1R,EAASkR,QAAQQ,WAjBlCC,SAASM,IAAMP,EAAUC,SAASM,GAAGvN,QAChDgN,EAAUC,SAASO,IAAMR,EAAUC,SAASO,GAAGxN,QAC/CgN,EAAUC,SAASM,GAAGY,QAAQ,QAAU,IACxCnB,EAAUC,SAASM,GAAGY,QAAQ,OAAS,GAAKnB,EAAUC,SAASO,GAAGW,QAAQ,OAAS,KACnFnB,EAAUC,SAASM,GAAGpT,KAAK,IAAK,IAAK,MAAO,MAAO,OAAQ,QAC3D6S,EAAUC,SAASO,GAAGrT,KAAK,IAAK,IAAK,MAAO,MAAO,OAAQ,SAapDmB,EAASkR,SALhBH,EAAUD,EAAY8B,IAAgB5S,EAAS4Q,IACvCkC,SAAW/B,EAAQW,UAAUC,SACrC3R,EAASkR,QAAUH,CAK3B,EAEAlT,EAAMiT,YAAcA,EACpBjT,EAAMoT,WAAaA,EAGnBpT,EAAMkT,QAAQH,GAuad,IAAImC,EAAe,SAASpK,EAAQqK,EAAOnK,EAAKmI,GAC5C,IAGIiC,EAASC,EACTpM,EAAK2G,EAAO7H,EACZuN,EALAC,EAAezK,EAAOkK,QAAQ7B,EAAaP,IAC3C4C,EAAarC,EAAaK,UAAUtN,QACpCsN,EAAYgC,EAAWC,QAU3B,GALAzK,GAAwB,IAAlBuK,EAAsBA,EAAevK,EAAM,GAGjDqK,GADAD,EAAUtK,EAAOT,UAAU8K,EAAOnK,IACVnE,SAEH2M,EAAW,CAI5B,IAHAvK,EAAMoM,EACNzF,EAAQ,GAED3G,GAAO,GASV,IARAlB,EAAQqN,EAAQ/K,UAAUpB,EAAMuK,EAAWvK,KAEvC2G,EAAM5O,KAAK+G,GAEfkB,GAAOuK,EAIW,KAFlBA,GADA8B,EAAeE,EAAWC,WACGxT,EAAcqT,EAAe9B,GAErC,CACbvK,EAAM,GACN2G,EAAM5O,KAAKoU,EAAQ/K,UAAU,EAAGpB,IAEpC,KACJ,CAGJmM,EAAUxF,EAAM8F,UAAUxL,KAAKiJ,EAvkB3B,MAwkBJrI,EAASA,EAAOT,UAAU,EAAG8K,GAASC,EAAUtK,EAAOT,UAAUW,EACrE,CAEA,OAAOF,CACX,EAEI6K,EAAQ,SAAS5N,EAAO6N,EAAWC,GAanC,OAZAD,EAAYA,GAAa,EAEzB7N,EAAQA,EAAM+I,WAAW7G,MAAM,KAC/BlC,EAAQrF,KAAKiT,QAAQ5N,EAAM,GAAK,KAAOA,EAAM,IAAOA,EAAM,GAAK6N,EAAaA,KAExEC,IACA9N,GAASA,IAIbA,KADAA,EAAQA,EAAM+I,WAAW7G,MAAM,MACf,GAAK,KAAOlC,EAAM,IAAOA,EAAM,GAAK6N,GAAcA,KAErDE,QAAQpT,KAAKqT,IAAIH,EAAW,IAC7C,EAEI9E,EAAW,SAAS/I,EAAOiO,EAAK9C,GAChC,GAAI8C,EAAK,CACL,GAAmC,kBAA/BhD,EAAepJ,KAAK7B,GACpB,OAjeZ,SAAoBkO,EAAM3F,EAAQ4C,GAG9B,IAAI+B,GAFJ/B,EAAUE,EAAWF,IAEEW,UAAUC,SAC7BC,EAAOkB,EAASlB,KAChBI,EAASc,EAASd,OAItB,OAFA7D,EAASA,EAAOgD,SAAW2B,EAASX,SAAShE,IAAWA,GAE1CxO,QAAQyQ,GAAkB,SAASxC,GAC7C,IAAImG,EACAC,EACAC,EAmEJ,MAjEc,MAAVrG,EACAoG,EAASF,EAAKI,UACG,OAAVtG,EACPoG,EAAStL,GAAIoL,EAAKI,WACD,QAAVtG,EACPoG,EAASpC,EAAKE,UAAUgC,EAAKK,UACZ,SAAVvG,GAA8B,SAAVA,EAC3BoG,EAASpC,EAAKC,MAAMiC,EAAKK,UACR,MAAVvG,EACPoG,EAASF,EAAKM,WAAa,EACV,OAAVxG,EACPoG,EAAStL,GAAIoL,EAAKM,WAAa,GACd,QAAVxG,EACPoG,EAAShC,EAAOF,UAAUgC,EAAKM,YACd,SAAVxG,EACPoG,EAAShC,EAAOH,MAAMiC,EAAKM,YACV,OAAVxG,EACPoG,EAAStL,GAAIoL,EAAKO,cAAgB,KACjB,SAAVzG,EACPoG,EAAStL,GAAIoL,EAAKO,cAAe,GAChB,MAAVzG,EACPoG,EAASF,EAAKQ,WAAa,IAAM,GAChB,OAAV1G,EACPoG,EAAStL,GAAIoL,EAAKQ,WAAa,IAAM,IACpB,MAAV1G,EACPoG,EAASF,EAAKQ,WACG,OAAV1G,EACPoG,EAAStL,GAAIoL,EAAKQ,YACD,MAAV1G,EACPoG,EAASF,EAAKS,aACG,OAAV3G,EACPoG,EAAStL,GAAIoL,EAAKS,cACD,MAAV3G,EACPoG,EAASF,EAAKU,aACG,OAAV5G,EACPoG,EAAStL,GAAIoL,EAAKU,cACD,MAAV5G,EACPoG,EAAS1T,EAAK0N,MAAM8F,EAAKW,kBAAoB,KAC5B,OAAV7G,IACPoG,EAASF,EAAKW,mBACD,KACTT,EAAS1T,EAAK0N,MAAMgG,EAAS,KAEjCA,EAAStL,GAAIsL,IACI,QAAVpG,EACPoG,EAAStL,GAAIoL,EAAKW,kBAAmB,GACpB,OAAV7G,GAA4B,OAAVA,EACzBoG,EAASF,EAAKQ,WAAa,GAAKxB,EAASb,GAAG,GAAKa,EAASZ,GAAG,GAC5C,QAAVtE,GAEPqG,GADAF,EAAUD,EAAKY,qBACE,EAEjBV,EAAS1T,EAAKqU,IAAIZ,EAAU,IAAIpF,WAAW7G,MAAM,KAAK,GACtDiM,EAAUzT,EAAKqU,IAAIZ,GAAqB,GAATC,EAE/BA,GAAUC,EAAO,IAAM,KAAOvL,GAAIsL,GAClCA,GAAU,IAAMtL,GAAIqL,IACH,OAAVnG,GAA4B,MAAVA,IAEzBqG,GADAD,EAASF,EAAKY,oBAAsB,IACpB,EAEhBV,EAAS1T,EAAKqU,IAAIX,GAAQrF,WAAW7G,MAAM,KAAK,GAChDkM,GAAUC,EAAO,IAAM,MAAkB,OAAVrG,EAAiBlF,GAAIsL,GAAUA,IAG3DA,IAAWlU,EAAckU,EAASpG,EAAM7J,MAAM,EAAG6J,EAAMlJ,OAAS,EAC3E,GACJ,CAgZmBkQ,CAAWhP,EAAOiO,EAAK9C,GAC3B,UAAWnL,IAAUvC,EACxB,OA/YZ,SAAsBsF,EAAQwF,EAAQ4C,GAGlC,IAKIQ,EACAsD,EAAYC,EACZC,EACAC,EAEA/B,EACAgC,EACA/B,EAIApM,EACApC,EACAwQ,EACAC,EACAC,EACAhC,EACAiC,EACAC,EACAC,EAASC,EAETC,EAGA5M,EA7BAmI,GAFJD,EAAUE,EAAWF,IAEMC,aACvB0E,EAAU1E,EAAaP,GACvBgD,EAAYzC,EAAaI,SACzBD,EAAUH,EAAaG,QAAQ,GAC/BwE,EAAW,GAKXjC,EAAW/K,EAAS,EAKpBiN,EAAcpF,EACd5K,EAAQ4K,EAaRwC,GAAS,EAIb,GAAIrK,IAAW7I,EACX,OAAO0Q,EAGX,IAAKlB,SAAS3G,GACV,OAAOA,EAIX,IAAKwF,EACD,OAAO4C,EAAQzR,KAAKoF,OAASiE,EAAOkN,iBAAmBlN,EAAOgG,WAMlE,GAHAqG,EAAqB3E,EAAqByF,KAAK3H,GAGvB,CAsBpB,GAlBA2G,EAAuB,OAHvB3G,EAAS6G,EAAmB,GAAGe,iBAE/BlB,EAAwB,MAAX1G,IAGK2G,KAGdY,GADA1E,EAAe6D,EAAa7D,EAAaQ,SAAWR,EAAaM,SAC1Cb,GACvBgD,EAAYzC,EAAaI,SACzBG,EAASP,EAAaO,OACtBJ,EAAUH,EAAaG,QAAQuC,EAAW,EAAI,KAGlDqB,EAAkBC,EAAmB,MAGjCvB,GAAasB,GAIF,MAAX5G,EAGA,OAFU4G,EAAkBpM,EAAOqN,cAAcvC,GAAa9K,EAAOqN,iBAE1DrW,QAAQ8Q,EAAOO,EAAaP,IA0B3C,GAtBIqE,IACAnM,GAAU,KAId+K,GADA/K,EAAS6K,EAAM7K,EAAQ8K,IACH,EAGpBR,GAFAtK,EAASA,EAAOb,MAAM2I,IAEL,GACjBwE,EAAWtM,EAAO,GAGd+K,IACAT,EAAUA,EAAQ/K,UAAU,IAGhCtC,EAAQmN,EAAaE,EAAS,EAAGA,EAAQvO,OAAQsM,GAE7CiE,IACArP,GAAS8P,EAAUT,GAGR,MAAX9G,IAAmBuF,EACnB,OAAO9N,EAKX,IAFA+C,EAAS6H,EAEJ1J,EAAM,EAAGpC,EAASyM,EAAQzM,OAAQoC,EAAMpC,EAAQoC,IAI7C6B,GADO,OAFXuM,EAAK/D,EAAQnJ,OAAOlB,IAGNlB,EACI,MAAPsP,GAAqB,MAAPA,EACX3D,EAEA2D,EAIlB,OAAOvM,CACX,CAkBA,IAZIwF,EAAO0E,QAAQ,MAAQ,GAAK1E,EAAO0E,QAAQ,MAAS,GAAK1E,EAAO0E,QAAQ,OAAS,KACjF1E,EAASA,EAAOxO,QAAQ2Q,GAAe,SAAS1C,GAC5C,IAAIqI,EAAYrI,EAAM5F,OAAO,GAAGrI,QAAQ,KAAM,IAC1CuW,EAAUtI,EAAM7J,MAAM,GAAGpE,QAAQsW,EAAW,IAIhD,OAFAN,EAAS9W,KAAKqX,GArVR,IAwVV,KAGJ/H,EAASA,EAAOrG,MAAM,KAClB4L,GAAYvF,EAAO,GAEnBA,EAASA,EAAO,GAChBiH,GAAoB,OACjB,GAAe,IAAXzM,GAAgBwF,EAAO,IAG9B,IAA8B,IAD9BA,EAASA,EAAO,IACL0E,QAAQnC,KAAyC,GAAzBvC,EAAO0E,QAAQlC,GAE9C,OAAOxC,OAGXA,EAASA,EAAO,GAmCpB,IA7BA2G,GAA6B,GAHd3G,EAAO0E,QAAQ,QAQ1BlK,GAAU,MAJdkM,GAA+B,IAH/BY,EAAgBtH,EAAO0E,QAAQ,QAUiB,OAA9B1E,EAAOsH,EAAgB,KACrCtH,EAASA,EAAOrG,MAAM,MAAMC,KAAK,IACjC8M,GAAa,IAGbA,GAAcC,KAGdY,GADA1E,EAAe6D,EAAa7D,EAAaQ,SAAWR,EAAaM,SAC1Cb,GACvBgD,EAAYzC,EAAaI,SACzBG,EAASP,EAAaO,SAG1B4D,EAAWhH,EAAO0E,QAtYV,MAsY4B,KAEhC1E,EAASA,EAAOxO,QAAQ4Q,EAAaC,IAGzC4C,EAAejF,EAAO0E,QAAQpC,GAC9B/L,EAASyJ,EAAOzJ,QAEK,GAAjB0O,EAqBA,GAdA6B,GAJIA,GAFJA,EAAWtM,EAAOgG,WAAW7G,MAAM,MACtB,GACE0L,EAAM7K,EAAQpI,KAAKoU,IAAIM,EAAS,KAEhCA,EAAS,IAEJnN,MAAM2I,GAAO,IAAMD,EAGvC+E,GAFAD,EAAYnH,EAAOgI,YAAYxF,GAAQyC,IAEhB,EACvBoC,GAFAH,EAAalH,EAAOgI,YAAYzF,GAAS0C,IAEhB,EACzBtM,EAAMmO,EAASvQ,OAEV6Q,GAAYC,IAEb9Q,GADAyJ,EAASA,EAAOjG,UAAU,EAAGkL,GAAgBjF,EAAOjG,UAAUkL,EAAe,IAC7D1O,OAChB0O,GAAgB,EAChBtM,EAAM,GAGNyO,GAAWD,EAAYD,EACvBvO,EAAMwO,OACH,GAAID,EAAaC,EACpB,GAAIE,GAAY1O,EAAMuO,EAAY,CAG9B,IAFA,IAAIe,EAAU5C,EAAM7K,EAAQ0M,EAAY3B,GAEjC0C,EAAQpO,OAAOoO,EAAQ1R,OAAS,KAAOiM,GAAQ0E,EAAa,GAAKA,EAAaC,GACjFD,IAEAe,EAAU5C,EAAM7K,EAAQ0M,EAAY3B,GAGxC5M,EAAMuO,CACV,MAAWE,GAAWzO,EAAMwO,IACxBxO,EAAMwO,GAmClB,GA9BA3M,EAAS6K,EAAM7K,EAAQ7B,EAAK4M,GAE5B2B,EAAalH,EAAO0E,QAAQnC,GACX4E,EAAYnH,EAAO0E,QAAQlC,GAIxCqC,GADe,GAAfqC,IAAkC,GAAdC,EACZA,GACc,GAAfD,IAAkC,GAAdC,EACnBD,EAEAA,EAAaC,EAAYA,EAAYD,EAGjDA,EAAalH,EAAOgI,YAAYzF,GAChC4E,EAAYnH,EAAOgI,YAAYxF,GAI3B9H,GADe,GAAfwM,IAAkC,GAAdC,EACdA,GACgB,GAAfD,IAAkC,GAAdC,GAGrBD,EAAaC,EAFbD,EAEsCC,EAG5CtC,GAAStO,IACTmE,EAAMmK,IAGI,GAAVA,EAAa,CAkBb,IAhBAC,GADArN,EAAQ+C,EAAOgG,WAAW7G,MAAM2I,IAChB,GAChBwE,EAAWrP,EAAM,IAAM4K,EAEvB0C,EAAgBD,EAAQvO,OACPuQ,EAASvQ,OAEtBgP,IAAuB,EAAV/K,GAAgB,IAC7B+K,GAAW,GAGf/K,EAASwF,EAAOjG,UAAU,EAAG8K,GAEzBU,IAAa0B,IACbzM,GAAU,KAGT7B,EAAMkM,EAAOlM,EAAMpC,EAAQoC,IAAO,CAGnC,GAFAoO,EAAK/G,EAAOnG,OAAOlB,IAEE,GAAjBsM,GACA,GAAIvK,EAAM/B,EAAMoM,EAAe,CAC3BvK,GAAUsK,EACV,KACJ,OAWA,IATkB,GAAdqC,GAAmBA,EAAYxO,IAC/B8O,EAAcpF,GAGb4C,EAAetM,GAAQoM,GAAiBE,EAAetM,GAAO,IAC/D6B,GAAUsK,EACVnM,EAAMsM,GAGNA,IAAiBtM,EAAK,CACtB6B,IAAWsM,EAAWS,EAAUlF,GAASyE,EACzCnO,GAAO+B,EAAMuK,EAAe,EAC5B,QACJ,CAGA8B,IAAOvE,GACPhI,GAAUuM,EACVU,EAAcV,GACPA,IAAOxE,IACd/H,GAAUiN,EAElB,CAWA,GATIT,IACAxM,EAASoK,EAAapK,EAAQqK,GAASU,IAAa0B,EAAoB,EAAI,GAAI7U,KAAK8V,IAAIxN,EAAMqK,EAAgBF,GAAShC,IAGxHnI,GAAOmK,IACPrK,GAAUwF,EAAOjG,UAAUW,EAAM,IAIjCgM,GAAcC,EAAW,CAEzB,IADAlP,EAAQ4K,EACH1J,EAAM,EAAGpC,EAASiE,EAAOjE,OAAQoC,EAAMpC,EAAQoC,IAEhDlB,GAAiB,OADjBsP,EAAKvM,EAAOX,OAAOlB,KACY,MAAPoO,EAAc3D,EAAS2D,EAEnDvM,EAAS/C,CACb,CAIA,GAFAlB,EAASiR,EAASjR,OAGd,IAAKoC,EAAM,EAAGA,EAAMpC,EAAQoC,IACxB6B,EAASA,EAAOhJ,QA1hBd,KA0hBmCgW,EAAS7O,GAG1D,CAEA,OAAO6B,CACX,CAgEmB2N,CAAa1Q,EAAOiO,EAAK9C,EAExC,CAEA,OAAOnL,IAAU9F,EAAc8F,EAAQ,EAC3C,EAEA/H,EAAMsQ,OAAS,SAAS0F,GACpB,IAAI0C,EAAS/R,UAEb,OAAOqP,EAAIlU,QAAQgB,GAAc,SAASiN,EAAO4I,EAAOC,GACpD,IAAI7Q,EAAQ2Q,EAAOG,SAASF,EAAO,IAAM,GAEzC,OAAO7H,EAAS/I,EAAO6Q,EAAoBA,EAAkBvO,UAAU,GAAK,GAChF,GACJ,EAEArK,EAAM8Y,eAAiB,SAASxI,GAK5B,MAJ0B,QAAtBA,EAAOpK,MAAM,EAAE,KACfoK,EAASA,EAAOpK,MAAM,EAAGoK,EAAOzJ,OAAS,IAGtCyJ,CACX,EAEAtQ,EAAM+Y,eAAiB,WACnB,IACI,OAAO/J,SAASgK,aACpB,CAAE,MAAOhV,GACL,OAAOgL,SAASiK,gBAAgBD,aACpC,CACJ,EAEAhZ,EAAMkZ,OAASvD,EACf3V,EAAM8L,YAAc,SAASZ,EAASC,EAAegB,GAEjD,OADAjB,EAAUlJ,EAAEkJ,GACRiB,EACOlB,GAAoBC,EAASC,GAAeC,MAGhDpJ,EAAEkJ,GAASM,WAAWL,IAAiB,IAAU,CAC5D,EACAnL,EAAM+L,aAAe,SAASb,EAASC,EAAegB,GAElD,OADAjB,EAAUlJ,EAAEkJ,GACRiB,EACOlB,GAAoBC,EAASC,GAAeE,OAGhDrJ,EAAEkJ,GAASO,YAAYN,IAAiB,IAAU,CAC7D,EACAnL,EAAM8Q,SAAWA,CACpB,CA7pBD,GAgqBA,WACI,IAAIqI,EAAyB,UACzBC,EAAc,MACdC,EAAiB,mBACjBC,EAAsB,gBACtBC,EAAqB,uBACrBC,EAAa,sBACbC,EAAe,UACfC,EAAmB,CAAE,GAAI,CAAE,IAAK,IAAK,KAAO,CAAE,IAAK,IAAK,IAAK,IAAK,IAAK,MACvEC,EAAmB,CACf,CACA,iCACA,8BACA,6BACA,0BACA,2BACA,yBACA,sBACA,qBACA,sBACA,sBACA,uBACG,CACH,mBACA,mBACA,oBACG,CACH,aACA,aACA,WACA,UAGJ3W,EAAe,CACX,EAAG,WACH,EAAG,WACH,EAAG,SACH4W,OAAQ,UAEZ5G,EAAiB,CAAC,EAAElC,SAExB,SAAS+I,EAAW9R,EAAOoN,EAAOnK,GAC9B,QAASjD,GAASoN,GAASpN,GAASiD,EACxC,CAEA,SAAS8O,EAAoBC,GACzB,OAAOA,EAAW5P,OAAO,EAC7B,CAEA,SAAS6P,EAAeC,GACpB,OAAOjY,EAAEkY,IAAID,EAAaH,EAC9B,CASA,SAASK,EAAW1M,GAKhB,IAJA,IAAIxE,EAAM,EACNpC,EAAS4G,EAAK5G,OACduT,EAAQ,GAELnR,EAAMpC,EAAQoC,IACjBmR,EAAMnR,IAAQwE,EAAKxE,GAAO,IAAIiP,cAGlC,OAAOkC,CACX,CAEA,SAASC,EAAeC,GACpB,IAAuBnN,EAAnBoN,EAAe,CAAC,EAEpB,IAAKpN,KAAYmN,EACbC,EAAapN,GAAYgN,EAAWG,EAAUnN,IAGlD,OAAOoN,CACX,CAMA,SAASC,EAAWzS,EAAOuI,EAAQ4C,EAASuH,EAAQC,GAChD,IAAK3S,EACD,OAAO,KAGX,IAyFIsP,EAAIsD,EAAO9T,EAAQyM,EACnBsH,EAAQC,EAAKha,EACbia,EAAeC,EACfC,EAAaC,EACJlL,EA7FTmL,EAAY,SAASnL,GAEjB,IADA,IAAInJ,EAAI,EACD0J,EAAOrH,KAAS8G,GACnBnJ,IACAqC,IAKJ,OAHIrC,EAAI,IACJqC,GAAO,GAEJrC,CACX,EACAuU,EAA2BlB,GAAgB1X,MAAM6Y,KAAKnB,GAAaoB,MAAK,CAAC9W,EAAG+W,IAAMA,EAAEzU,OAAStC,EAAEsC,SAAQ,GAAGA,OAC1G0U,EAAY,SAASlM,GACjB,IAAImM,EAAIzL,EAAOhG,EAAO,GACtB,GAAa,IAATsF,EACA,IAAK,IAAIzI,EAAI,EAAGA,GAAKyI,EAAMzI,IACvBmD,GAAQhC,EAAM0T,EAAW7U,IAAM,GAcvC,OARImD,EADA2Q,GAAoB3Q,EAAKgG,MAAM/M,EAAa4W,SAAW1H,OAAOwJ,UAAUxJ,OAAOnI,KAAUmI,OAAOnI,GAAQ,EA9BxH,SAAmBhC,GACf,OAAOA,EAAMjG,QAAQ,MAAO,GAChC,CA6BuB6Z,CAAU5R,GAEVhC,EAAM6T,OAAOH,EAAUpM,GAGlCmM,EAAKxY,EAAaqM,IAAS,IAAIxB,OAAO,UAAYwB,EAAO,MACzDU,EAAQhG,EAAKgG,MAAMyL,KAGfzL,EAAQA,EAAM,GACd0L,GAAY1L,EAAMlJ,OACXgS,SAAS9I,EAAO,KAEpB,IACX,EACA8L,EAAiB,SAAS7H,EAAO8H,EAAOC,GAQpC,IAPA,IAEIta,EAAMua,EAGNC,EALArV,EAAI,EACJC,EAASmN,EAAMnN,OAEfqV,EAAc,EACdC,EAAW,EAGRvV,EAAIC,EAAQD,IAEfoV,GADAva,EAAOuS,EAAMpN,IACKC,OAClBoV,EAAWlU,EAAM6T,OAAOH,EAAUM,GAAaC,GAE3CF,IACAG,EAAWA,EAAS/D,eAGpB+D,GAAYxa,GAAQua,EAAaE,IACjCA,EAAcF,EACdG,EAAWvV,GAInB,OAAIsV,GACAT,GAAYS,EACLC,EAAW,GAGf,IACX,EACAC,EAAe,WACX,IAAIjG,GAAS,EAKb,OAJIpO,EAAMoC,OAAOsR,KAAcnL,EAAOrH,KAClCwS,IACAtF,GAAS,GAENA,CACX,EACAlB,EAAW/B,EAAQW,UAAUC,SAC7BuI,EAAO,KACPvX,EAAQ,KACRwX,EAAM,KACNC,EAAQ,KACRrG,EAAU,KACVsG,EAAU,KACVC,EAAe,KACfxT,EAAM,EACNwS,EAAW,EACXpD,GAAU,EACVpC,EAAO,IAAIjI,KACX8G,EAAkBG,EAASH,iBAAmB,KAC9C4H,EAAczG,EAAKO,cAoBvB,IAbKlG,IACDA,EAAS,MAIbgD,EAAU2B,EAASX,SAAShE,MAExBA,EAASgD,GAIbzM,GADAyJ,EAASA,EAAOrG,MAAM,KACNpD,OAEToC,EAAMpC,EAAQoC,IAGjB,GAFAoO,EAAK/G,EAAOrH,GAERoP,EACW,MAAPhB,EACAgB,GAAU,EAEV+D,SAGJ,GAAW,MAAP/E,EAAY,CAMZ,GALAsD,EAAQO,EAAU,KACbjG,EAAS0H,aACV1H,EAAS0H,WAAatC,EAAepF,EAASlB,OAGtC,OAARuI,GAAgB3B,EAAQ,EACxB,SAKJ,GAAY,QAFZ2B,EAAM3B,EAAQ,EAAIY,EAAU,GAAKM,EAAe5G,EAAS0H,WAAoB,GAAThC,EAAa,YAAc,UAAU,KAErFd,EAAWyC,EAAK,EAAG,IACnC,OAAO,IAEf,MAAO,GAAW,MAAPjF,EAAY,CAOnB,GANAsD,EAAQO,EAAU,KACbjG,EAAS2H,eACV3H,EAAS2H,aAAevC,EAAepF,EAASd,SAItC,QAFdrP,EAAQ6V,EAAQ,EAAIY,EAAU,GAAKM,EAAe5G,EAAS2H,aAAsB,GAATjC,EAAa,YAAc,UAAU,KAEvFd,EAAW/U,EAAO,EAAG,IACvC,OAAO,KAEXA,GAAS,CACb,MAAO,GAAW,MAAPuS,EAAY,CAInB,GAAa,QAFbgF,EAAOd,EADPZ,EAAQO,EAAU,OAId,OAAO,KAGE,GAATP,IAC+B,iBAApB7F,IACPA,EAAkB4H,EAAc7D,SAAS/D,EAAiB,MAG9DuH,EAAQK,EAAcA,EAAc,IAAOL,GAChCvH,IACPuH,GAAQ,KAGpB,MAAO,GAAW,MAAPhF,GAMP,GALA6D,EAAU,KAEG,KADbqB,EAAQhB,EAAU,MAEdgB,EAAQ,GAEE,OAAVA,GAAkB1C,EAAW0C,EAAO,EAAG,IACvC,OAAO,UAER,GAAW,MAAPlF,GAGP,GAFA6D,EAAU,KAEI,QADdqB,EAAQhB,EAAU,KACI1B,EAAW0C,EAAO,EAAG,IACvC,OAAO,UAER,GAAW,MAAPlF,GAGP,GAFA6D,EAAU,KAEM,QADhBhF,EAAUqF,EAAU,KACI1B,EAAW3D,EAAS,EAAG,IAC3C,OAAO,UAER,GAAW,MAAPmB,GAGP,GAFA6D,EAAU,KAEM,QADhBsB,EAAUjB,EAAU,KACI1B,EAAW2C,EAAS,EAAG,IAC3C,OAAO,UAER,GAAW,MAAPnF,GAYP,GAXAsD,EAAQO,EAAU,KAElBnL,EAAQhI,EAAM6T,OAAOH,EAAUd,GAAO5K,MAAM/M,EAAa,IAGpC,QAFrByZ,EAAelB,EAAUZ,MAGrB8B,EAAerU,WAAW,KAAO2H,EAAM,GAAI,IAC3C0M,EAAezc,EAAMkZ,OAAOuD,EAAc,GAC1CA,GAAgB,KAGC,OAAjBA,GAAyB5C,EAAW4C,EAAc,EAAG,KACrD,OAAO,UAGR,GAAW,MAAPpF,GAWP,GAVAsD,EAAQO,EAAU,KAClBJ,EAAgB7F,EAASb,GACzB2G,EAAgB9F,EAASZ,GAEX,IAAVsG,IACAG,EAAgBd,EAAec,GAC/BC,EAAgBf,EAAee,MAGnCH,EAASiB,EAAed,GAAe,EAAOI,EAAwBJ,OACtDc,EAAef,GAAe,EAAOK,EAAwBL,IACzE,OAAO,UAGV,GAAW,MAAPzD,EAAY,CAIjB,GAHAwD,GAAM,EACNF,EAAQO,EAAU,KAEgB,MAA9BnT,EAAM6T,OAAOH,EAAU,GAAY,CACnCW,IACA,QACJ,CAKA,KAHAvb,EAAUkH,EAAM6T,OAAOH,EAAU,GACjB1L,MAAM4K,EAAQ,EAAIpB,EAAqBD,IAGnD,OAAO,KAeX,GAVA0B,GAFAna,EAAUA,EAAQ,GAAGoJ,MAAM,MAEL,KACtBgR,EAAgBpa,EAAQ,KAEFma,EAAYnU,OAAS,IACvC4U,EAAWT,EAAYnU,OAAS,EAChCoU,EAAgBD,EAAY3Q,UAAUoR,GACtCT,EAAcA,EAAY3Q,UAAU,EAAGoR,IAIvC5B,EADJmB,EAAcnC,SAASmC,EAAa,KACP,GAAI,IAC7B,OAAO,KAGX,GAAIL,EAAQ,IACRM,EAAgBpa,EAAQ,GAAG,GAAKoa,EAChCA,EAAgBpC,SAASoC,EAAe,IACpC9S,MAAM8S,IAAkBpB,EAAWoB,GAAgB,GAAI,KACvD,OAAO,IAGnB,MAAO,GAAW,MAAP5D,EACPgB,GAAU,EACV+D,SACG,IAAKA,IACR,OAAO,KAOnB,OAAI3B,IAAW,QAAQ7N,KAAK7E,EAAM6T,OAAOH,IAC9B,MAKE,OAATY,GAA2B,OAAVvX,GAA0B,OAARwX,IAFnB,OAAVC,GAA8B,OAAZrG,GAAoBsG,GAAW,OAGvDH,EAAOK,EACP5X,EAAQmR,EAAKM,WACb+F,EAAMrG,EAAKI,YAEE,OAATgG,IACAA,EAAOK,GAGC,OAARJ,IACAA,EAAM,IAIV1B,GAAU2B,EAAQ,KAClBA,GAAS,IAGT1B,GACIG,IACAuB,IAAUvB,GAGVC,IACA/E,IAAY+E,GAGhBlT,EAAQ,IAAIiG,KAAKA,KAAK6M,IAAIwB,EAAMvX,EAAOwX,EAAKC,EAAOrG,EAASsG,EAASC,KApV7E,SAAmBxG,EAAMsG,GAChBA,GAA6B,KAApBtG,EAAKQ,YACfR,EAAK4G,SAAS5G,EAAKQ,WAAa,EAExC,CAmVQqG,CADA/U,EAAQ,IAAIiG,KAAKqO,EAAMvX,EAAOwX,EAAKC,EAAOrG,EAASsG,EAASC,GAC3CF,GAGjBF,EAAO,KACPtU,EAAMgV,YAAYV,GAGlBtU,EAAMsO,YAAciG,GAAOzB,IAAQ5Y,EAC5B,KAGJ8F,EACX,CA6BA,SAASiV,EAAkBjV,EAAOkV,EAAS/J,EAASuH,EAAQC,GACxD,GAAmC,kBAA/B1H,EAAepJ,KAAK7B,GACpB,OAAOA,EAGX,IAEIlB,EACAqW,EAHAjU,EAAM,EACNgN,EAAO,KAIX,GAAIlO,GAAiC,IAAxBA,EAAMiN,QAAQ,QACvBiB,EAAOuD,EAAWvB,KAAKlQ,IAanB,OAXAkO,EAAOA,EAAK,GACZiH,EAAWzD,EAAaxB,KAAKhC,EAAK5L,UAAU,IAE5C4L,EAAO,IAAIjI,KAAK6K,SAAS5C,EAAM,KAE3BiH,IACAA,EA9ChB,SAAoCC,GAChC,IAAI/G,EAA+B,MAAxB+G,EAAOvB,OAAO,EAAG,IAAc,EAAI,EAK9C,OAHAuB,EAASA,EAAO9S,UAAU,GAGnB+L,GAFuC,GAApCyC,SAASsE,EAAOvB,OAAO,EAAG,GAAI,IAAY/C,SAASsE,EAAO9S,UAAU,GAAI,IAGtF,CAuC2B+S,CAA2BF,EAAS,IAC/CjH,EAAOjW,EAAMqd,SAAS5V,MAAMwO,EAAM,GAClCA,EAAOjW,EAAMqd,SAASC,QAAQrH,EAAM,GAAI,EAAIiH,IAGzCjH,EAaf,IATA/C,EAAUlT,EAAMoT,WAAWF,GAEtB+J,IACDA,EAjDR,SAA2B/J,GACvB,IAGIqK,EAAgBC,EAAWvU,EAH3BpC,EAASpE,EAAK+V,IAAIkB,EAAiB7S,OAAQ8S,EAAiB9S,QAE5DyN,GADWpB,EAAQ+B,UAAY/B,EAAQW,UAAUC,UAC7BQ,SAEpB2I,EAAU,GAEd,IAAKhU,EAAM,EAAGA,EAAMpC,EAAQoC,IAAO,CAE/B,IADAsU,EAAiB7D,EAAiBzQ,GAC7BuU,EAAY,EAAGA,EAAYD,EAAe1W,OAAQ2W,IACnDP,EAAQjc,KAAKsT,EAASiJ,EAAeC,KAEzCP,EAAUA,EAAQQ,OAAO9D,EAAiB1Q,GAC9C,CAEA,OAAOgU,CACX,CAiCkBS,CAAkBxK,IAIhCrM,GADAoW,EAAU3a,EAAQ2a,GAAWA,EAAU,CAACA,IACvBpW,OAEVoC,EAAMpC,EAAQoC,IAEjB,GADAgN,EAAOuE,EAAWzS,EAAOkV,EAAQhU,GAAMiK,EAASuH,EAAQC,GAEpD,OAAOzE,EAIf,OAAOA,CACX,CAEAjW,EAAM2d,UAAY,SAAS5V,EAAOkV,EAAS/J,EAASwH,GAChD,OAAOsC,EAAkBjV,EAAOkV,EAAS/J,GAAS,EAAOwH,EAC7D,EAEA1a,EAAM4d,eAAiB,SAAS7V,EAAOkV,EAAS/J,GAC5C,OAAO8J,EAAkBjV,EAAOkV,EAAS/J,GAAS,EACtD,EAEAlT,EAAM6Y,SAAW,SAAS9Q,EAAOmL,GAC7B,IAAIiD,EAASnW,EAAMoI,WAAWL,EAAOmL,GAIrC,OAHIiD,IACAA,GAAkB,GAEfA,CACX,EAEAnW,EAAMoI,WAAa,SAASL,EAAOmL,EAAS5C,GACxC,IAAKvI,GAAmB,IAAVA,EACX,OAAO,KAGV,UAAWA,IAAUvC,EAClB,OAAOuC,EAGVA,EAAQA,EAAM+I,WAGd,IAMIlB,EAAOqH,EANPnM,GAFJoI,EAAUlT,EAAMoT,WAAWF,IAENC,aACjBM,EAAU3I,EAAO2I,QACjBE,EAAW7I,EAAO6I,SAClBD,EAASC,EAASD,OAClBmK,EAAgBpK,EAAQC,OACxBmC,EAAW9N,EAAMiN,QAAQ,KAI7B,OAAIqE,EAAezM,KAAK7E,IACpBA,EAAQK,WAAWL,EAAMjG,QAAQgJ,EAAO,KAAM,MAC1C3C,MAAMJ,KACNA,EAAQ,MAELA,GAGP8N,EAAW,EACJ,MAEPA,EAAWA,GAAY,EAGvB9N,EAAMiN,QAAQtB,IAAW,GAAMpD,GAAUA,EAAO4H,cAAclD,QAAQ,MAAQ,GAE9EpF,GADA9E,EAAS6I,GACML,QAAQ,GAAGxR,QAAQ,IAAK4R,GAAQzJ,MAAM,KACjDlC,EAAMiN,QAAQpF,EAAM,KAAO,GAAK7H,EAAMiN,QAAQpF,EAAM,KAAO,IAC3D7H,EAAQA,EAAMjG,QAAQ8N,EAAM,GAAI,IAAI9N,QAAQ8N,EAAM,GAAI,IACtDiG,GAAW,IAER9N,EAAMiN,QAAQ6I,IAAkB,IACvC5G,GAAY,EACZnM,EAAS2I,EACTC,EAASmK,GAGb9V,EAAQA,EAAMjG,QAAQ,IAAK,IACbA,QAAQ4R,EAAQ,IAChB5R,QAAQqX,EAAwB,KAChClP,MAAMa,EAAO,KAAKhJ,QAAQqX,EAAwB,MAAMjP,KAAK,IAC7DpI,QAAQsX,EAAa,IACrBtX,QAAQgJ,EAAO,KAAM,KAEnC/C,EAAQK,WAAWL,GAEfI,MAAMJ,GACNA,EAAQ,KACD8N,IACP9N,IAAU,GAGVA,GAASkP,IACTlP,GAAS,KAGNA,EACX,CACH,CA1jBD,GAs2BI,WACInF,EAAQkb,WAAa7b,EAErBW,EAAQmb,UAAY,SAASC,GACzB,GAAK7V,MAAMvF,EAAQkb,aAAgBE,EAE5B,CACH,IACI7H,EADA8H,EAAMjP,SAASkP,cAAc,OAWjC,OARAD,EAAIzR,MAAM2R,QAAU,oEACpBF,EAAIG,UAAY,SAChBpP,SAASqP,KAAKC,YAAYL,GAE1Brb,EAAQkb,WAAa3H,EAAS8H,EAAIM,YAAcN,EAAIO,YAEpDxP,SAASqP,KAAKI,YAAYR,GAEnB9H,CACX,CAdI,OAAOvT,EAAQkb,UAevB,EAEAlb,EAAQ8b,MAAQ,SAASxT,GACrB,OAAOlJ,EAAEkJ,GAASgB,QAAQ,UAAUrF,OAAS,CACjD,EAEA,IAAI8X,EAAQ3P,SAASkP,cAAc,SAGnC,IACIS,EAAMP,UAAY,qBAElBxb,EAAQgc,gBAAiB,CAC7B,CAAE,MAAO5a,GACLpB,EAAQgc,gBAAiB,CAC7B,CAEAhc,EAAQic,MAAQ,iBAAkB1e,EAElC,IAAI2e,EAAW9P,SAASiK,gBAAgBzM,MACpCuS,EAAcnc,EAAQmc,aAAc,EACpCC,EAAapc,EAAQoc,YAAa,EAClCC,EAAe,gBAAiB9e,EAAS4N,YAAYrG,UAAY,GAErE9E,EAAQsc,QAAW,oBAAqB/e,GAAU,QAAS,IAAIA,EAAOgf,iBAAsB,mBAAoBL,GAAY,kBAAmBA,EAC/Ilc,EAAQwc,WAAc,aAAcN,GAAc,mBAAoBA,GAAc,eAAgBA,EAEpGzc,EAAK,CAAE,MAAO,SAAU,IAAK,OAAQ,WACjC,IAAIgd,EAAShgB,KAAKyR,WACdwO,SAAwBX,EAAMnS,MAAM6S,EAAS,gBAAkB9Z,EAEnE,GAAI+Z,UAAyBX,EAAMnS,MAAM6S,EAAS,eAAiB9Z,EAAQ,CACvE,IAAIga,EAAYF,EAAOnH,cAavB,OAXA8G,EAAa,CACT1T,IAAmB,MAAbiU,EAAqB,IAAMA,EAAY,IAAM,GACnDF,OAAQA,EACRG,MAAsB,MAAdD,GAAmC,WAAdA,EAA0BA,EAAY,IAGnED,KACAP,EAAcC,GACFQ,MAAQT,EAAYS,MAAQT,EAAYS,MAAQ,gBAAkB,kBAG3E,CACX,CACJ,IAEAb,EAAQ,KAER/b,EAAQoc,WAAaA,EACrBpc,EAAQmc,YAAcA,EAEtBnc,EAAQ6c,iBAAmBtf,EAAOsf,mBAAqBxd,EAAc,EAAI9B,EAAOsf,iBAEhF,IACI7c,EAAQ8c,YAAcvf,EAAOqL,YAAcrL,EAAOwf,OAASxf,EAAOwf,OAAOC,WAAazf,EAAO0f,WAC7Fjd,EAAQkd,aAAe3f,EAAOsL,aAAetL,EAAOwf,OAASxf,EAAOwf,OAAOI,YAAc5f,EAAO6f,WACpG,CAAE,MAAOhc,GAELpB,EAAQ8c,YAAcvf,EAAOwf,OAAOC,WACpChd,EAAQkd,aAAe3f,EAAOwf,OAAOI,WACzC,CAEAnd,EAAQqd,SAAW,SAASC,GACxB,IAAgBC,EAAZC,GAAK,EAAqBrQ,EAAQ,GAClCsQ,GAAmB,iBAAiBzT,KAAKsT,GACzCI,EAAW,CACPC,GAAI,gDACJC,KAAM,+BACNC,QAAS,qEACTC,OAAQ,2CACRC,KAAM,kCACNC,MAAO,2CACPC,MAAO,gCACPC,WAAY,oDACZC,SAAU,kDACVC,QAAS,gCACTC,MAAO,2CACPC,SAAU,gDACVC,KAAM,8CAEVC,EAAQ,CACJC,IAAK,sBACLZ,QAAS,kBACTK,WAAY,wBACZE,QAAS,UACTT,GAAI,KACJe,KAAM,uBACNV,MAAO,SAEXW,EAAgB,CACZC,OAAQ,uBAEZC,EAAa,CACTC,MAAO,eACPC,QAAS,eACTC,QAAS,kBACTC,aAAc,qBACdC,GAAI,uBACJC,OAAQ,gBACRC,OAAQ,WAGhB,IAAK,IAAI9T,KAASoS,EACd,GAAIA,EAAShS,eAAeJ,KACxB6B,EAAQmQ,EAAGnQ,MAAMuQ,EAASpS,KACf,CACP,GAAa,WAATA,GAAsB,YAAa+T,UAAa,OAAO,GAE3D7B,EAAK,CAAC,GACH8B,OAAShU,EACZkS,EAAGoB,OAASvT,GAAOC,EAAOqT,GAAe,GACzCnB,EAAG+B,QAAUlU,GAAOiS,EAAIuB,EAAY,WACpCrB,EAAG3e,KAAOwM,GAAOC,EAAOkT,GACxBhB,EAAGA,EAAG3e,OAAQ,EACd2e,EAAGgC,aAAerS,EAAM,GACxBqQ,EAAGD,cAAgBpQ,EAAM,IAAM,KAAKjO,QAAQ,IAAK,KACjDqe,EAAeC,EAAGD,aAAare,QAAQ,IAAK,IAAI8Z,OAAO,EAAG,GAC1DwE,EAAGiC,YAAcjC,EAAGgC,aAAejC,EAAgB,IAAI5d,MAAM,GAAK4d,EAAatZ,OAAS,EAAIsZ,EAAatZ,OAAS,IAAIqD,KAAK,KAC3HkW,EAAGkC,eAAiBniB,EAAOoiB,WAAa3c,UAAoBzF,EAAOmiB,UAAY1c,EAC/Ewa,EAAGoC,QAAUriB,EAAO8hB,UAAUQ,YAAc,mBAAqB7V,KAAKzM,EAAOuiB,SAASC,WAAavC,EAAGkC,QAElGlC,EAAGK,UAAY7d,EAAQ6c,iBAAmB,KAAOW,EAAGiC,YAAc,KAAOhC,KAAqBzd,EAAQ8c,YAAc,KAAO9c,EAAQkd,aAAe,OAClJM,EAAGoB,OAAStT,GAGhB,KACJ,CAGR,OAAOkS,CACX,EAEA,IAAIwC,EAAWhgB,EAAQggB,SAAWhgB,EAAQqd,SAASgC,UAAUY,WAE7DjgB,EAAQkgB,mBAAqBF,EAASrC,GAAKZ,OAAOvU,MAAQ,IAAM,EAEhExI,EAAQmgB,oBAAqB,GAEzBH,EAASvB,KAAQuB,EAASnC,SAAWmC,EAASR,aAAe,GAAMQ,EAASrC,MAC5E3d,EAAQmgB,mBAAqBH,GAGjChgB,EAAQogB,aAAe,WAGnB,GAAIpgB,EAAQic,MAAO,CAGf,GAAI+D,EAASvB,IACT,OAAO,EAGX,GAAIuB,EAASnC,QAET,OAAK7d,EAAQuf,QAAQJ,UAKjBnf,EAAQuf,QAAQtgB,QAAU,OAKrBG,EAAE,uBAAuBihB,KAAK,YAAc,IAAIlT,MAAM,oBAEvE,CAEA,OAAO,CACX,EAEAnN,EAAQsgB,qBAAuBtgB,EAAQic,SAAWjc,EAAQggB,SAASvB,KAAOze,EAAQggB,SAASnC,SAE3F7d,EAAQugB,cAAgB,SAASjD,GAC7B,IAAIiC,GAAU,EACVpS,EAAQ,GAER0R,EAAa,CACT2B,KAAM,uBACNpB,OAAQ,+BACRqB,OAAQ,yBACRC,MAAO,sCACPC,KAAM,mCACNC,QAAS,kCAGjB,IAAK,IAAItV,KAASuT,EACd,GAAIA,EAAWnT,eAAeJ,KAC1B6B,EAAQmQ,EAAGnQ,MAAM0R,EAAWvT,KACjB,EACPiU,EAAU,CAAC,GACHjU,IAAS,EACjBiU,EAAQpS,EAAM,GAAGmI,cAAcjO,MAAM,KAAK,GAAGA,MAAM,KAAK,KAAM,EAC9DkY,EAAQtgB,QAAUgX,SAAS7J,SAASyU,cAAgB1T,EAAM,GAAI,IAE1DoS,EAAQJ,QACY7B,EAAGnQ,MAAM,yBAGzBoS,EAAQuB,cAAe,GAI/B,KACJ,CAIR,OAAOvB,CACX,EAEAvf,EAAQuf,QAAUvf,EAAQugB,cAAclB,UAAUY,YAE7CD,GAAYhgB,EAAQic,OAASjc,EAAQuf,QAAQkB,SAC9CT,EAAWhgB,EAAQggB,SAAW,CAC1BvB,KAAK,EACLG,OAAQ,SACRU,OAAQ,OACRE,aAAc,KAItBxf,EAAQ+gB,sBAAwB,WAC5B,IAAIC,EAAW,CACXrd,OAAMyI,SAAS6U,uBAAwB7U,SAAS6U,sBAAsB,QACtEC,MAAK9U,SAAS6U,uBAAwB7U,SAAS6U,sBAAsB,OACrEE,QAAO/U,SAAS6U,uBAAwB7U,SAAS6U,sBAAsB,UAY3E,OATIjhB,EAAQuf,QAAQJ,SAEhB6B,EAASG,OAAQ,EACbnhB,EAAQuf,QAAQtgB,SAAW,KAC3B+hB,EAASrd,MAAO,EAChBqd,EAASE,KAAM,IAIhBF,CACX,EAEAhhB,EAAQohB,UAAYphB,EAAQ+gB,wBAE5B/gB,EAAQqhB,UAAY,WAChB,IACI,IAAI9B,EAAUvf,EAAQuf,QAClB+B,EAAsB,EACtBC,EAAQnV,SAASiK,gBAMrB,OAJIkJ,EAAQoB,MAA2B,IAAnBpB,EAAQtgB,SAAiBsiB,EAAMC,aAAeD,EAAME,eAAiBzhB,EAAQic,QAC7FqF,EAAsBthB,EAAQmb,aAG3Bnb,EAAQic,MAASsF,EAAMG,YAAcnkB,EAAO0f,WAC5CsC,EAAQoB,MAAQpB,EAAQtgB,SAAW,KAAQ0iB,KAAOpkB,GAAQ6O,SAASiK,gBAAgBsF,YAAc2F,IAAwBK,KAAOpkB,GAAQ0f,WAAc,CACjK,CAAE,MAAO7b,GACL,OAAO,CACX,CACJ,EAEA,SAAUme,GAEN,IAAIqC,EAAW,GACXC,EAAaziB,EAAEgN,SAASiK,iBACxBmJ,EAAevJ,SAASsJ,EAAQtgB,QAAS,IAEzCsgB,EAAQoB,KACRiB,EAAW,KACJrC,EAAQqB,QACfgB,EAAW,KACJrC,EAAQkB,OACfmB,EAAW,SACJrC,EAAQH,OACfwC,EAAW,SACJrC,EAAQmB,MACfkB,EAAW,QACJrC,EAAQiB,OACfoB,EAAW,QAGXA,IACAA,EAAW,KAAOA,EAAW,MAAQA,EAAWpC,GAEhDxf,EAAQggB,WACR4B,GAAY,aAGX5hB,EAAQwc,aACToF,GAAY,iBAGhBC,EAAWC,SAASF,EACvB,CAhCD,CAgCG5hB,EAAQuf,SAEXvf,EAAQ+hB,aAAe3V,SAASiK,gBAAgBnY,iBAEhD,IAAI8jB,EAAQ5V,SAASkP,cAAc,SAEnCtb,EAAQiiB,YAAc,gBAAiBD,EACvChiB,EAAQkiB,oBAAsB,qBAAsBF,EAEpDhiB,EAAQgiB,MAAQ,WAQZ,IAPA,IAKI7f,EALAggB,EAAQ,CAAC,SAAU,OAAQ,OAAQ,QAAS,OAAQ,WAAY,kBAChEle,EAASke,EAAMle,OACfkB,EAAQ,OACRoO,EAAS,CAAC,EACVlN,EAAM,EAGJA,EAAMpC,EAAQoC,IAChBlE,EAAOggB,EAAM9b,GACb2b,EAAMI,aAAa,OAAQjgB,GAC3B6f,EAAM7c,MAAQA,EAEdoO,EAAOpR,EAAKjD,QAAQ,IAAK,KAAsB,SAAf8iB,EAAM7f,MAAmB6f,EAAM7c,QAAUA,EAG7E,OAAOoO,CACV,CAjBe,GAmBhByO,EAAMpY,MAAM2R,QAAU,cAEtBvb,EAAQqiB,WAAaL,EAAMpY,MAAMyY,SAEjCL,EAAQ,KAERhiB,EAAQsiB,WAAa,WAUjB,IAPA,IAEIC,EAAS,CAAC,CACVxM,MAAO,EACPyM,MAAO,MAGFxe,EAAI,EAAGA,EAPA,IAOeA,IAC3Bue,EAAOnkB,KAAK,CACR2X,MAAO/R,EACPwe,MAAO,MAQf,OAJAD,EAAO9J,MAAK,SAAS9W,EAAG+W,GACpB,OAAO/W,EAAE6gB,MAAQ9J,EAAE8J,MAAQ,EAAK7gB,EAAE6gB,MAAQ9J,EAAE8J,OAAS,EAAI,CAC7D,IAE2B,IAApBD,EAAO,GAAGxM,KACpB,CAtBoB,GAwBrB/V,EAAQyiB,gBAAkBpG,EAAaqG,uBAAyBrG,EAAasG,oBACnDtG,EAAauG,mBAAqBvG,EAAawG,kBAC/CxG,EAAaoG,iBAAmBpG,EAAape,SACrE,SAAU6kB,GAIN,IAHA,IAAIC,EAAW3W,SAAS4W,kBAAqBvmB,KAAKwmB,YAAc7W,UAAW4W,iBAAkBF,IAAc,GAAK1jB,EAAE0jB,GAC9G9e,EAAI+e,EAAS9e,OAEVD,KACH,GAAI+e,EAAS/e,IAAMvH,KACf,OAAO,EAIf,OAAO,CACX,EAEFuD,EAAQxC,WAAa,eAAgBD,EAErCyC,EAAQkjB,UAAY3lB,EAAO4lB,SAAW5lB,EAAO4lB,QAAQD,UAErDljB,EAAQojB,WAAa,iBAAkB7lB,EAEvCyC,EAAQqjB,eAAiB,oBAAqB9lB,EAAO6O,SAErD,IAAI+S,EAASnf,EAAQuf,QAAQJ,OACzBmE,EAAetjB,EAAQuf,QAAQgE,MAC/B3C,EAAU5gB,EAAQuf,QAAQqB,QAC1BH,EAASzgB,EAAQuf,QAAQkB,OAC7BzgB,EAAQwjB,YAAcrE,GAAU5hB,EAAOkmB,eACvCzjB,EAAQ0jB,UAAYvE,IAAWmE,IAAiB1C,IAAYH,GAAUljB,EAAOomB,aAC7E3jB,EAAQ4jB,oBAAsB5D,IAAiC,SAApBA,EAASV,QAAqBU,EAASR,aAAe,MAAQxf,EAAQic,OAASjc,EAAQwjB,YAAcxjB,EAAQ0jB,SAC3J,CApZD,GAodA,IAAIG,GAAU,CAAC,EAyCf,SAASC,GAAwBlgB,EAASmgB,EAAUjR,EAASkR,GA6BzD,cA5BWpgB,IAAYjB,IAIfgD,EAAWoe,KACXC,EAAWD,EACXA,EAAW,IACXjR,GAAU,GAGVnN,EAAWmN,KACXkR,EAAWlR,EACXA,GAAU,UAGHiR,IAAahhB,IACpB+P,EAAUiR,EACVA,EAAW,KAGfngB,EAAU,CACNigB,QAASjgB,EACTmgB,SAAUA,EACVjR,QAASA,EACTkR,SAAUA,IAIXxkB,EAAO,CAEVqkB,QAAS,CAAC,EACVE,SAAU,IACVjR,SAAS,EACTlO,KAAMhF,EACNqkB,SAAUrkB,EACVuK,MAAM,GACPvG,EAAS,CAAEsgB,iBAAkBtgB,EAAQogB,SAAUA,SAAUpkB,GAEhE,CAEA,SAASukB,GAAQ7b,EAAS1E,EAASmgB,EAAUjR,EAASkR,GAKlD,IAJA,IAEII,EAFA/d,EAAM,EACNpC,EAASqE,EAAQrE,OAGdoC,EAAMpC,EAAQoC,KACjB+d,EAAWhlB,EAAEkJ,EAAQjC,KACZge,OAAM,WACXR,GAAQS,QAAQF,EAAUN,GAAwBlgB,EAASmgB,EAAUjR,EAASkR,GAClF,IAGJ,OAAO1b,CACX,CA7FAlJ,EAAEI,OAAOqkB,GAAS,CACdU,SAAS,EACTC,QAAS,SAASlc,GACd7L,KAAK6L,QAAUlJ,EAAEkJ,EACrB,EAEAgc,QAAS,SAAShc,EAAS1E,GAClB0E,EAAQoB,GAAG,aACZpB,EAAQI,IAAI,CAAEoB,QAASxB,EAAQuC,KAAK,eAAiB,UAAWnC,IAAI,WAGpE9E,EAAQuG,MACR7B,EAAQuC,KAAK,aAAcvC,EAAQI,IAAI,YAAYyB,OAGnDvG,EAAQgB,MACRhB,EAAQgB,OAGRhB,EAAQsgB,kBACRtgB,EAAQsgB,iBAAiB5b,GAG7BA,EAAQmc,SACZ,EAEAC,QAAS,WACLjoB,KAAK8nB,SAAU,EACf9nB,KAAK6nB,QAAU7nB,KAAKkoB,WACxB,EAEAC,OAAQ,WACJnoB,KAAK8nB,SAAU,EACf9nB,KAAK6nB,QAAU7nB,KAAKooB,eACxB,IAGJhB,GAAQc,YAAcd,GAAQS,QAsExB,iBAAkBllB,EAAEoF,IACtBhF,EAAOJ,EAAEoF,GAAI,CACTsgB,UAAW,SAASC,EAAYC,GAC5B,OAAOvoB,KAAKwoB,KAAKF,EAAYC,EACjC,EAEAE,aAAc,SAASthB,EAASmgB,EAAUjR,EAASkR,GAC/C,OAAOG,GAAQ1nB,KAAMmH,EAASmgB,EAAUjR,EAASkR,EACrD,EAEAmB,cAAe,SAASC,EAASxhB,GAC7B,OAAOxG,EAAMioB,YAAY5oB,KAAM2oB,EAASxhB,GAAS,EACrD,EAEA0hB,iBAAkB,SAASF,EAASxhB,GAChC,OAAOxG,EAAMioB,YAAY5oB,KAAM2oB,EAASxhB,GAAS,EACrD,EACA2hB,iBAAkB,SAASH,EAASxhB,EAAS4hB,GACzC,OAAOpoB,EAAMioB,YAAY5oB,KAAM2oB,EAASxhB,EAAS4hB,EACrD,IAIR,IAAIC,GAAY,KACZC,GAAW,KACXC,GAAc,KACdC,GAAa,KACbC,GAAW,KAsBf,IAAIC,GAAc,SAAS1kB,GACvB,OAAOA,EAAE0C,MACb,EAEI9D,EAAQic,QAER6J,GAAc,SAAS1kB,GACnB,IAAI2kB,EAAU,kBAAmB3kB,EAAIA,EAAE4kB,cAAcC,eAAiB,mBAAoB7kB,EAAIA,EAAE6kB,eAAiB,KAEjH,OAAOF,EAAU3Z,SAAS8Z,iBAAiBH,EAAQ,GAAGI,QAASJ,EAAQ,GAAGK,SAAWhlB,EAAE0C,MAC3F,EAEArE,EAAK,CAAC,QAAS,YAAa,aAAc,UAAW,YAAa,YAAa,QAAQ,SAASgC,EAAG0D,GAC/F/F,EAAEoF,GAAGW,GAAS,SAASkhB,GACnB,OAAO5pB,KAAK6pB,GAAGnhB,EAAOkhB,EAC1B,CACJ,KAGArmB,EAAQic,MACHjc,EAAQggB,UAQThgB,EAAQumB,UAAY,aACpBvmB,EAAQwmB,QAAU,WAClBxmB,EAAQymB,UAAY,YACpBzmB,EAAQ0mB,YAAc,cACtB1mB,EAAQ2mB,MAAQ,WAChB3mB,EAAQ4mB,OAAS,sBAZjB5mB,EAAQumB,UAAY,uBACpBvmB,EAAQwmB,QAAU,mBAClBxmB,EAAQymB,UAAY,sBACpBzmB,EAAQ0mB,YAAc,yBACtB1mB,EAAQ2mB,MAAQ,QAChB3mB,EAAQ4mB,OAAS,UASd5mB,EAAQ0jB,UACf1jB,EAAQymB,UAAY,cACpBzmB,EAAQumB,UAAY,cACpBvmB,EAAQwmB,QAAU,YAClBxmB,EAAQ0mB,YAAc,gBACtB1mB,EAAQ2mB,MAAQ,YAChB3mB,EAAQ4mB,OAAS,4BACV5mB,EAAQwjB,YACfxjB,EAAQymB,UAAY,gBACpBzmB,EAAQumB,UAAY,gBACpBvmB,EAAQwmB,QAAU,cAClBxmB,EAAQ0mB,YAAc,kBACtB1mB,EAAQ2mB,MAAQ,cAChB3mB,EAAQ4mB,OAAS,6BAEjB5mB,EAAQymB,UAAY,YACpBzmB,EAAQumB,UAAY,YACpBvmB,EAAQwmB,QAAU,UAClBxmB,EAAQ0mB,YAAc,aACtB1mB,EAAQ2mB,MAAQ,QAChB3mB,EAAQ4mB,OAAS,UAGrB,IA4BAC,GAAa,mBAEbrnB,EAAOpC,EAAO,CACV0pB,QAAS,GACTC,2BAA4B,GAC5BC,GAAI5pB,EAAM4pB,IAAM,CAAC,EACjBC,GAAI7pB,EAAM6pB,IA9Pd,SAAY3e,GACR,OAAO,IAAIlL,EAAMymB,QAAQW,QAAQlc,EACrC,EA6PIub,QAASzmB,EAAMymB,SAAWA,GAC1BtnB,OAAQa,EAAMb,QAAU,CAAE,EAC1BsO,KAAMzN,EAAMyN,MAAQ,CAAC,EACrBqc,QAAS9pB,EAAM8pB,SAAW,CAAC,EAC3BC,QAAS/pB,EAAM+pB,SAAW,CAAC,EAC3BC,YAAa,CAAEC,SAAU,CAAC,GAC1BC,KAAM,CACFC,OAAQ,GACRC,OAAQ,GACRC,UAAW,EACXC,IAAK,EACLC,MAAO,GACPC,IAAK,GACLC,KAAM,GACNC,GAAI,GACJC,MAAO,GACPC,KAAM,GACNC,IAAK,GACLC,KAAM,GACNC,SAAU,GACVC,OAAQ,GACRC,SAAU,GACVC,GAAI,IACJC,IAAK,IACLC,IAAK,IACLC,YAAa,IACbC,aAAc,IACdC,WAAY,KAEhB3oB,QAAS5C,EAAM4C,SAAWA,EAC1BmkB,QAAS/mB,EAAM+mB,SAAWA,GAC1ByE,GAAI,GACJvI,KAAM,SAASlb,GACX,MAAO,QAAU/H,EAAMwrB,GAAKzjB,CAChC,EACA0jB,WA5hCJ,SAAoBvgB,GAChB,IAAIwgB,EAASxgB,EAAQI,IAAItL,EAAM4C,QAAQmc,YAAYzT,IAAM,eAAiBJ,EAAQI,IAAI,cAClFqgB,EAASD,GAASA,EAAO3b,MAAMhN,IAAwC,CAAE,EAAG,EAAG,EAAG,EAAG,GACrF6oB,EAAOnpB,EAAK+V,KAAMmT,EAAO,KAAOA,EAAO,IAAM,IAEjD,MAAO,CACHE,MAAQF,EAAO,GAAMC,EACrBE,OAASH,EAAO,GAAMC,EACtBG,QAAUJ,EAAO,GAAMC,EAE/B,EAmhCII,KA9/BJ,SAAc9gB,EAASU,EAAU4d,EAAQ3d,GAAqB,EAAMogB,GAChE,IAAIC,EACA1gB,EAAaxL,EAAM8L,YACnBL,EAAczL,EAAM+L,aACpBC,EAASd,EAAQc,SACjBmgB,EAAmB3gB,EAAWrL,GAIlC,GAFA6L,EAAOA,SAASogB,YAAY,4BAEvBpgB,EAAOI,SAAS,+BAmCjBT,GAAWT,EAASU,EAAUC,OAnCmB,CACjD,IAAIT,EAAQF,EAAQ,GAAGsB,MAAMpB,MACzBC,EAASH,EAAQ,GAAGsB,MAAMnB,OAC1BghB,EAAexpB,EAAc+J,KAAKxB,GAClCkhB,EAAgBzpB,EAAc+J,KAAKvB,GACnCkhB,EAAkBrhB,EAAQkB,SAAS,cAAgBlB,EAAQoB,GAAG,qCAC9DH,EAAsBjB,EAAQkB,SAAS,aAE3C8f,EAAaG,GAAgBC,GAExBD,KAAkBzgB,GAAaA,GAAYR,GAAUmhB,KAAoBnhB,EAAQQ,EAAWJ,EAAWN,GAAS,EAAOiB,GAAuB,EAAIX,EAAWN,GAAS,EAAOiB,MAC7KmgB,KAAmB1gB,GAAaA,GAAYP,IAAYkhB,KAAmBlhB,EAASI,EAAYP,GAAS,EAAOiB,IAErHjB,EAAQ8gB,KACJhqB,EAAE,UACD0iB,SAAS,+BACTpZ,IAAI,CACDF,MAAO6gB,EAAY,OAAS7gB,EAC5BC,OAAQA,MAEhBW,EAASd,EAAQc,UAEVggB,KACMhqB,EAAE,UACD0iB,SAAS,yBACTzB,KAAK,OAAQ,WAGvBiJ,GACAhhB,EAAQI,IAAI,CACRF,MAAO,OACPC,OAAQ,QAGpB,CAeA,OATI8gB,EAAmB3gB,EAFvBQ,EAASA,EAAOA,YAGZA,EAAO0Y,SAAS,4BAChB8E,GAAS,GAGTA,GACA7d,GAAWT,EAASU,EAAUC,GAG3BG,CACX,EAo8BInE,WAAYA,GACZ+G,kBAAmBA,GACnB4d,aA5yBJ,SAAsBthB,GAClB,GAAiD,UAA7CA,EAAQuhB,QAAQzsB,EAAMwrB,GAAK,cAC3B,OAAO,EAGX,GAAItgB,GAAWA,EAAQwhB,WAA2C,iBAAvBxhB,EAAiB,WAAkBA,EAAQwhB,UAAU1X,QAAQ,sBAAwB,EAC5H,OAAO,EAGX,IAAI2X,EAAW/d,GAAkB1D,EAAS,CAAC,aAAayhB,SACxD,OAAOA,EAAS3X,QAAQ,SAAW,GAAK2X,EAAS3X,QAAQ,WAAa,CAC1E,EAkyBI4X,WAhyBJ,SAASA,EAAW1hB,EAASnD,GACzB,IAGI8kB,EAAInO,EAHJsD,EAASpf,EAAQuf,QAAQH,OACzB8K,EAASlqB,EAAQuf,QAAQqB,QACzBuJ,EAAiBnqB,EAAQuf,QAAQtgB,QAGrC,GAAIqJ,aAAmBlJ,GAAK+F,IAAU9F,EAClCiJ,EAAQ7I,MAAK,SAASuE,EAAG5C,GACrB4oB,EAAW5oB,EAAG+D,EAClB,SAOJ,GAHI8kB,EAAK3hB,aAAmBlJ,EAAIkJ,EAAQ,GAAKA,EAG7C,CAQA,GAJAwT,EAAQ9b,EAAQ8b,MAAMxT,GAIlBnD,IAAU9F,EASV,OAAIyc,GAASsD,IAAW+K,EAAiB,IAAMnqB,EAAQuf,QAAQkB,QACpDwJ,EAAGrO,YAAcqO,EAAGvI,YAAcuI,EAAGD,WAErClqB,KAAKoU,IAAI+V,EAAGD,YAXnBlO,GAASsD,IAAW+K,EAAiB,IAAMnqB,EAAQuf,QAAQkB,QAC3DwJ,EAAGD,WAAaC,EAAGrO,YAAcqO,EAAGvI,YAAcvc,EAElD8kB,EAAGD,WADIlO,IAAUoO,GAAU9K,IAAWja,EAAQ,GAC7BA,EAEDA,CAZxB,CAqBJ,EA0vBIsH,KAjWJ,SAAc2d,GACV,IAAgB7b,EAAZgF,EAAS,EACb,IAAKhF,KAAO6b,EACJA,EAAI1e,eAAe6C,IAAe,UAAPA,GAC3BgF,IAIR,OAAOA,CACX,EAyVI5H,YAAaA,GACb0e,UAx1BJ,SAAmBze,GACf,OAAOA,EAAI1M,QAAQ,iBAAiB,SAAS2S,GACzC,OAAOA,EAAEtK,OAAO,GAAK,IAAMsK,EAAEtK,OAAO,GAAG+N,aAC3C,GACJ,EAq1BIgV,UAAWltB,EAAMktB,WAzVrB,SAAmBhiB,EAASnG,EAAMooB,GACzBpoB,IACDA,EAAO,UAGX,IAAIoY,EAASjS,EAAQnG,KAEjBoR,EAAS,CACToO,IAAKpH,EAAOoH,IACZuH,MAAO3O,EAAO2O,MACdC,OAAQ5O,EAAO4O,OACfF,KAAM1O,EAAO0O,MAIjB,GAAIjpB,EAAQuf,QAAQoB,OAAS3gB,EAAQ0jB,UAAY1jB,EAAQwjB,cAAgB+G,EAAY,CACjF,IAAI/W,EAAOxT,EAAQ8b,MAAMxT,GAAW,GAAK,EAEzCiL,EAAOoO,KAAQpkB,EAAOitB,YAAepe,SAASiK,gBAAyB,UACvE9C,EAAO0V,MAAS1rB,EAAOktB,YAAejX,EAAOpH,SAASiK,gBAAgB2T,UAC1E,CAEA,OAAOzW,CACX,EAmUImX,aAActtB,EAAMstB,cAtTxB,SAAsB1I,GAClB,IAAI6B,EAAU,CAAC,EAMf,OAJApkB,EAAuB,iBAAVuiB,EAAqBA,EAAM3a,MAAM,KAAO2a,GAAQ,SAAS3b,GAClEwd,EAAQxd,GAAO5J,IACnB,IAEOonB,CACX,EA+SIwB,YAAajoB,EAAMioB,aAxMvB,SAAqB/c,EAAS8c,EAASxhB,EAASqG,GAS5C,OARImb,IACAA,EAAUA,EAAQ/d,MAAM,KAExB5H,EAAK2lB,GAAS,SAAS/e,EAAKlB,GACxBmD,EAAQ+c,YAAYlgB,EAAO8E,EAC/B,KAGG3B,CACX,EA+LIqiB,WAAYvtB,EAAMutB,YAnUL,CACb1B,KAAM,CAAEnW,QAAS,SACjBoW,MAAO,CAAEpW,QAAS,QAClB8X,KAAM,CAAE9X,QAAS,MACjB+X,GAAI,CAAE/X,QAAS,QACf6O,IAAK,CAAE7O,QAAS,UAChBqW,OAAQ,CAAErW,QAAS,OACnBgY,GAAM,CAAEhY,QAAS,OACjBiY,IAAK,CAAEjY,QAAS,OA4ThB/M,WAAYA,EACZ1B,MAAOA,EACP/E,SAAUA,EACVuN,SAAUvN,EAASyN,QAAQ9G,KAAK3G,GAChCsN,OAAQtN,EAASsN,OAAO3G,KAAK3G,GAC7BkQ,UAAWzP,EAAKyP,UAAUvJ,KAAKlG,GAC/B+lB,YAAaA,GACbkF,WAzKJ,SAAoB7lB,GAChB,OAAQ,GAAKA,GAAOjG,QAAQumB,GAAW,SAASvmB,QAAQwmB,GAAU,QAAQxmB,QAAQ2mB,GAAU,QAAQ3mB,QAAQymB,GAAa,UAAUzmB,QAAQ0mB,GAAY,QAC3J,EAwKIqF,SAtKJ,SAAkB9lB,GACd,IAAI0H,EAEJ,IACIA,EAAWtP,EAAO2tB,mBAAmB/lB,EACzC,CAAE,MAAOgmB,GAILte,EAAW1H,EAAMjG,QAAQ,kCAAkC,SAASksB,EAAGC,EAAIC,GACvE,OAAOxc,OAAOyc,aAAatV,SAAS,MAAQoV,GAAMC,GAAK,IAC3D,GACJ,CAEA,OAAOze,CACX,EAwJI2e,WAAY,SAASC,GACjB,OAAOA,IAAQ5E,GAAW7c,KAAKyhB,EACnC,EACAzuB,WAAYA,EAEZ0uB,KAAM,SAASC,EAAYC,EAAMlf,GAuB7B,cApBWkf,GAAQjpB,IACf+J,EAAYkf,EACZA,GAAO,GAGXlf,EAAYA,GAAa,KAPzBif,EAAaA,GAAc,KASgB,MAAzBA,EAAWpkB,OAAO,KAChCokB,EAAa,IAAMA,GAGnBC,GAGAD,EAlHS,SAASE,EAASnf,GACnC,IACIqJ,EACA1P,EACApC,EACAM,EAJAgP,EAAS7G,GAAa,IAKtBqL,EAAQ,EAEZ,IAAK1R,EAAM,EAAGpC,EAAS4nB,EAAQ5nB,OAAQoC,EAAMpC,EAAQoC,IAElC,MADf9B,EAASsnB,EAAQxlB,MAIC,KAFd0P,EAAQxR,EAAO6N,QAAQ,SAGL,GAAV2D,EACAxR,EAAS,IAAMA,GAEfwT,IACAxT,EAAS,IAAMA,EAAOkD,UAAU,EAAGsO,GAAS,UAAYxR,EAAOkD,UAAUsO,KAIjFgC,IACAxE,GAAUhP,GAAW8B,EAAMpC,EAAS,EAAK,UAAY,MAG7D,OAAO,IAAItE,MAAMoY,GAAOzQ,KAAK,KAAOiM,CACxC,CAuFyBuY,EADbH,GADAA,EAAaA,EAAWzsB,QAAQ,sBAAsB,kBAC9BA,QAAQ,sBAAsB,kBACfmI,MAAM,KAAMqF,GACnDif,EAAaA,EAAWzsB,QAAQ,aAAc,MAE9CysB,EAAajf,EAAYif,EAGtBA,CACX,EAEAI,YAAa,CAACJ,EAAYC,KACtBD,EAAaA,GAAc,IAETvZ,QAAQ,MAAQ,GAAKuZ,EAAWvZ,QAAQ,MAAQ,EAC9DuZ,EAAWtkB,MAAM,UAAUiQ,KAAI7I,GAAKA,EAAEvP,QAAQ,QAAS,MAAK8sB,QAAOvd,GAAKA,IACzD,KAAfkd,EAAoB,GAAK,CAACA,GAGlCM,OAAQ,SAASN,EAAYC,GACzB,IAAIrd,EAAMod,EAAaC,EAEvB,OAAOxoB,EAAYmL,GAAOnL,EAAYmL,IAAQ,CAAE6b,IAC5C,MAAM8B,EAAS9uB,EAAM2uB,YAAYJ,EAAYC,GAE7C,IAAIrY,EAAS6W,EACb,IAAK,IAAI/jB,EAAM,EAAGA,EAAM6lB,EAAOjoB,OAAQoC,IAEnC,GADAkN,EAASA,EAAO2Y,EAAO7lB,KAClBjJ,EAAM8H,UAAUqO,IAAWqY,EAC5B,OAAOrY,EAIf,OAAOA,CACV,EACL,EAEA4Y,OAAQ,SAASR,GACb,OAAOtoB,EAAYsoB,GAActoB,EAAYsoB,IAAe,EAAEvB,EAAKjlB,KAC/D,MAAM+mB,EAAS9uB,EAAM2uB,YAAYJ,GAE3BS,EAAc,EAAGhjB,SAAQijB,MAAKC,OAAMC,YAClCA,EAAMtoB,QACNmF,EAASA,EAAOmjB,EAAM1Z,SACtBuZ,EAAY,CAAEhjB,SAAQijB,MAAKC,OAAMC,WAEjCnjB,EAAOkjB,GAAQD,CACnB,EAGJD,EAAY,CACRhjB,OAAQghB,EACRiC,IAAKlnB,EACLmnB,KAAMJ,EAAOM,MACbD,MAAOL,GAEd,EACL,EAEAO,SAAU,SAASd,GACf,MAAO,CACHe,IAAKtvB,EAAM6uB,OAAON,GAClBgB,IAAKvvB,EAAM+uB,OAAOR,GAE1B,EAEAiB,KAAM,WACF,IAAa5oB,EAAG6oB,EAAZC,EAAK,GAAeC,EAAQ,SAIhC,IAFAD,GAAMC,EAAMjtB,KAAKyN,MAAMzN,KAAK+sB,SAAW/sB,KAAKyN,MAAMwf,KAE7C/oB,EAAI,EAAGA,EAAI,GAAIA,IAChB6oB,EAAyB,GAAhBhtB,EAAKgtB,SAAgB,EAErB,GAAL7oB,GAAe,IAALA,GAAgB,IAALA,GAAgB,IAALA,IAChC8oB,GAAM,KAEVA,IAAY,IAAL9oB,EAAU,EAAU,IAALA,EAAoB,EAAT6oB,EAAa,EAAKA,GAAS3e,SAAS,IAGzE,OAAO4e,CACX,EAEAE,aAAc,SAASC,GACnB,OAAOA,EAAK/tB,QAAQ,SAAU,IAAM9B,EAAMijB,KAAK,QAAU,SAAS/c,MAAM,GAAI,EAChF,EAEA4pB,kBAAmB,SAASC,GACxB,IAAIC,EAAYD,EAAW9lB,MAAM,KAEjC,GAAI+lB,EACA,IAAK,IAAIppB,EAAI,EAAGA,EAAIopB,EAAUnpB,OAAQD,IACd,QAAhBopB,EAAUppB,KACVopB,EAAUppB,GAAKopB,EAAUppB,GAAG9E,QAAQ,8BAA+B,UAK/E,OAAOkuB,EAAU9lB,KAAK,KAAKpI,QAAQ,SAAU,oBAAoBoE,MAAM,GAAI,EAC/E,EAEA+pB,iBAAkB,SAASjsB,GACvB,MAAO,mCAAqC4I,KAAK5I,EAAE0C,OAAOwpB,QAC9D,EAEAC,mBAAoB,SAASlH,GACzB,IAAK,IAAIriB,EAAI,EAAGwpB,EAAMpwB,EAAM0pB,QAAQ7iB,OAAQD,EAAIwpB,EAAKxpB,IACjDqiB,EAASjpB,EAAM0pB,QAAQ9iB,IAG3B5G,EAAM2pB,2BAA2B3oB,KAAKioB,EAC1C,EAEAoH,aAAc,SAASC,EAASvrB,GAC5B,IAAIwL,EAAUpQ,EAAOoQ,SAEhBvQ,EAAMuwB,kBAAkC,IAAb,GAA4BhgB,EAAQigB,KAChEjgB,EAAQxL,GAAQ,OAAOurB,EAE/B,IAGJ,IAAIG,GAAS9nB,EAAWvG,OAAQ,CAC5BoF,KAAM,SAAS0D,EAAS1E,GACpB,IAAIc,EAAOjI,KA86ERqxB,eAAeC,gBAAgBnvB,KA36E9B8F,EAAKspB,sBAAwBC,IAGjCvpB,EAAK4D,QAAUlL,EAAM+G,OAAOmE,GAAS/B,QAAQ7B,GAE7CqB,EAAWvB,GAAGI,KAAKoC,KAAKtC,GAExB,IACI6nB,EADA2B,EAAatqB,EAAUA,EAAQsqB,WAAa,KAG5CtqB,IACA2oB,GAAS7nB,EAAKypB,gBAAkB,CAAC,IAAIvqB,GAAW,CAAC,GAAGwqB,gBAGpDF,IAEAtqB,EAAUpE,EAAO,CAAC,EAAGoE,EAAS,CAAEsqB,WAAY,CAAC,KAGjDtqB,EAAUc,EAAKd,QAAUpE,GAAO,EAAM,CAAC,EAAGkF,EAAKd,QAASc,EAAKrH,SAAUkvB,GAAS,CAAC,EAAG3oB,GAEhFsqB,IACAtqB,EAAQsqB,WAAaA,GAGpBxpB,EAAK4D,QAAQ+X,KAAKjjB,EAAMijB,KAAK,UAC9B3b,EAAK4D,QAAQ+X,KAAKjjB,EAAMijB,KAAK,SAAUzc,EAAQ/E,MAAQ,IAAIyW,eAG/D5Q,EAAK4D,QAAQuC,KAAK,QAAUjH,EAAQ6Y,OAAS7Y,EAAQ/E,KAAM6F,GAE3DA,EAAKuB,KAAKvB,EAAKoC,OAAQlD,EAC3B,EAEAkD,OAAQ,GAERlD,QAAS,CACL6Y,OAAQ,IAGZ4R,kBAAmB,WACf,QAAS5xB,KAAK6L,QAAQ,GAAGgmB,kBAC7B,EAEAC,UAAW,SAASzqB,GAChBA,EAASA,GAAUrH,KAAK4M,QAExB,IAAIf,EAAU7L,KAAK6L,QACfkmB,EAAW,WACXC,EAAW3qB,EAAOuc,KAAKmO,IAAalmB,EAAQ+X,KAAKmO,GAErDlmB,EAAQomB,WAAWF,GAEnB1qB,EAAOuc,KAAKmO,EAAWjpB,MAAMkpB,GAAuB,EAAXA,EAC7C,EAEAE,WAAY,SAAS/qB,GACjBnH,KAAKmyB,iBAAiBhrB,GACtBnH,KAAKoyB,WAAWjrB,GAChBxE,EAAEI,OAAO/C,KAAKmH,QAASA,GACvBnH,KAAKqyB,kBACT,EAEAD,WAAY,SAASjrB,GAMjB,IALA,IAGIxC,EAHAsD,EAAOjI,KACP4J,EAAM,EACNpC,EAASS,EAAKoC,OAAO7C,OAGlBoC,EAAMpC,EAAQoC,IACjBjF,EAAIsD,EAAKoC,OAAOT,GACZ3B,EAAKd,QAAQxC,IAAMwC,EAAQxC,KAC3BsD,EAAKgC,OAAOtF,EAAGsD,EAAKd,QAAQxC,IACxBsD,EAAKsB,SAAWtB,EAAKsB,QAAQ5E,WACtBsD,EAAKsB,QAAQ5E,IAKhCsD,EAAKuB,KAAKvB,EAAKoC,OAAQlD,EAC3B,EAEAgjB,OAAQ,SAASmI,GACb,IAAItiB,EAAOhQ,KAAKuyB,UACZC,EAAcxyB,KAAKyyB,OAEnBH,IAAUtiB,EAAKjE,MAAQ,GAAKiE,EAAKhE,OAAS,MAAQwmB,GAAexiB,EAAKjE,QAAUymB,EAAYzmB,OAASiE,EAAKhE,SAAWwmB,EAAYxmB,WACjIhM,KAAKyyB,MAAQziB,EACbhQ,KAAK0yB,QAAQ1iB,EAAMsiB,GACnBtyB,KAAKoK,QAAQ,SAAU4F,GAE/B,EAEAuiB,QAAS,WACL,OAAO5xB,EAAMgyB,WAAW3yB,KAAK6L,QACjC,EAEAmE,KAAM,SAASA,GACX,IAAKA,EACD,OAAOhQ,KAAKuyB,UAEZvyB,KAAK4yB,QAAQ5iB,EAErB,EAEA4iB,QAASjwB,EAAEQ,KACXuvB,QAAS/vB,EAAEQ,KAEXnB,QAAS,WACL,IAAIiG,EAAOjI,KAEXiI,EAAK4D,QAAQgnB,WAAW,QAAU5qB,EAAKd,QAAQ6Y,OAAS/X,EAAKd,QAAQ/E,MACrE6F,EAAK4D,QAAQgnB,WAAW,WACxB5qB,EAAKgC,QACT,EACA6oB,SAAU,WACN9yB,KAAKgC,SACT,EAEAqwB,iBAAkB,SAASxmB,GACvB,IAIItE,EAAGsoB,EAAMkD,EAAWC,EAJpBC,EAAejzB,KAAKkzB,UAAU/rB,QAC9BA,EAAUnH,KAAKmH,QACfqmB,EAAK3hB,GAAW7L,KAAK4M,SAAW5M,KAAK6L,QACrC8c,EAAU,GAGd,GAAKhoB,EAAMwyB,cAAcC,mBAAmBH,EAAa7wB,MAAzD,CAIA,IAAKmF,EAAI,EAAGA,EAAIT,EAAmBU,OAAQD,IACvCsoB,EAAO/oB,EAAmBS,GAC1ByrB,EAAahzB,KAAKmH,QAAQksB,UAAYJ,EAAa7wB,KAE/C6wB,EAAahkB,eAAe4gB,KACf,eAATA,GACAkD,EAAYpyB,EAAMwyB,cAAcG,cAAc,CAC1CC,OAAQP,EACRQ,SAAU,WACV9qB,MAAOvB,EAAQssB,aAGFV,EAAUvrB,QACvBmhB,EAAQhnB,KAAKhB,EAAMwyB,cAAcG,cAAc,CAC3CC,OAAQP,EACRQ,SAAU3D,EACVnnB,MAAOvB,EAAQ0oB,GACf6D,KAAMvsB,EAAQssB,YAItB9K,EAAQhnB,KAAKhB,EAAMwyB,cAAcG,cAAc,CAC3CC,OAAQP,EACRQ,SAAU3D,EACVnnB,MAAOvB,EAAQ0oB,OAM/BrC,EAAGnI,SAASsD,EAAQ9d,KAAK,KAhCzB,CAiCJ,EAEA8oB,WAAY,SAAStsB,GACjB,IAMIusB,EALAC,EADO7zB,KACS6L,QAChBioB,EAAUD,EAASjQ,KAAK,MACxBmQ,EAAWpxB,EAAE,cAAiBmxB,EAAU,MACxCE,EAAYH,EAASjQ,KAAKld,GAC1ButB,EAAiBJ,EAASjQ,KAAKnd,GAG/BY,EAAO,KAAOwsB,EAAS,KAIvBG,EACA3sB,EAAOuc,KAAKld,EAAYstB,GACjBC,EACP5sB,EAAOuc,KAAKnd,EAAiBwtB,GACtBF,EAASvsB,SAChBosB,EAAUG,EAASnQ,KAAK,OAjBjB5jB,KAiB+Bk0B,iBAAiBH,EAAUD,GAAWnzB,EAAMwvB,QAClF9oB,EAAOuc,KAAKnd,EAAiBmtB,IAErC,EAEAzB,iBAAkB,SAASgC,EAAYtoB,GACnC,IAGItE,EAAGsoB,EAAMmD,EAHTC,EAAejzB,KAAKkzB,UAAU/rB,QAC9BitB,EAAiBp0B,KAAKmH,QACtBqmB,EAAK3hB,GAAW7L,KAAK4M,SAAW5M,KAAK6L,QAGzC,GAAKlL,EAAMwyB,cAAcC,mBAAmBH,EAAa7wB,MAIzD,IAAKmF,EAAI,EAAGA,EAAIT,EAAmBU,OAAQD,IACvCsoB,EAAO/oB,EAAmBS,GAC1ByrB,EAAahzB,KAAKmH,QAAQksB,UAAYJ,EAAa7wB,KAE/C6wB,EAAahkB,eAAe4gB,IAASsE,EAAWllB,eAAe4gB,KAClD,eAATA,EACArC,EAAGT,YAAYpsB,EAAMwyB,cAAcG,cAAc,CAC7CC,OAAQP,EACRQ,SAAU3D,EACVnnB,MAAO0rB,EAAevE,GACtB6D,KAAMU,EAAeX,aAGZ,aAAT5D,GACArC,EAAGT,YAAYpsB,EAAMwyB,cAAcG,cAAc,CAC7CC,OAAQP,EACRQ,SAAU,aACV9qB,MAAO0rB,EAAeC,WACtBX,KAAMU,EAAeX,YAI7BjG,EAAGT,YAAYpsB,EAAMwyB,cAAcG,cAAc,CAC7CC,OAAQP,EACRQ,SAAU3D,EACVnnB,MAAO0rB,EAAevE,OAK1C,EAEAqE,iBAAkB,SAASI,EAAOR,GAC9B,IAAIF,EAAUE,EA9nGJ,SAkoGV,OAFAQ,EAAM1Q,KAAK,KAAMgQ,GAEVA,CACX,IAGAW,GAAkBnD,GAAOruB,OAAO,CAChCyxB,UAAW,WACP,OAAOx0B,KAAKyxB,WAAWgD,UAC3B,IAGJ9zB,EAAMgyB,WAAa,SAAS9mB,EAAS8mB,GACjC,IAAI+B,EAAa7oB,EAAQ,GAMzB,OAJI8mB,GACA9mB,EAAQI,IAAI0mB,GAGT,CAAE5mB,MAAO2oB,EAAWxV,YAAalT,OAAQ0oB,EAAWC,aAC/D,EAEAh0B,EAAMi0B,OAASzxB,EAEf,IAAI0xB,GAAiB,aACjBC,GAAa,oDACbC,GAAmB,wCACnBC,GAAa,WAEjB,SAASC,GAAYppB,EAASqpB,GAC1B,IAAIxsB,EAUJ,GAR+B,IAA3BwsB,EAAOvf,QAAQ,UAEfuf,GADAA,EAASA,EAAOlqB,UAAU,IACVF,OAAO,GAAG+N,cAAgBqc,EAAOlqB,UAAU,IAG/DkqB,EAASA,EAAOzyB,QAAQuyB,GAAY,OAGtB,QAFdtsB,EAAQmD,EAAQspB,aAAa,QAAUx0B,EAAMwrB,GAAK+I,IAG9CxsB,EAAQ9F,OACL,GAAc,SAAV8F,EACPA,EAAQ,UACL,GAAc,SAAVA,EACPA,GAAQ,OACL,GAAc,UAAVA,EACPA,GAAQ,OACL,GAAI/E,EAAa4J,KAAK7E,IAAoB,QAAVwsB,GAA8B,UAAVA,EACvDxsB,EAAQK,WAAWL,QAChB,GAAIosB,GAAWvnB,KAAK7E,KAAWqsB,GAAiBxnB,KAAK7E,GACxD,IACIA,EAAQpF,EAAK8xB,MAAM1sB,EACvB,CAAE,MAAOgmB,GAELhmB,EAAQ,IAAIkI,SAAS,WAAalI,EAAQ,IAAlC,EACZ,CAGJ,OAAOA,CACX,CAEA,SAAS2sB,GAAaxpB,EAAS1E,EAAS0G,GACpC,IACIqnB,EACAxsB,EAFAoO,EAAS,CAAC,EAGV0Z,EAAO3kB,EAAQspB,aAAa,QAAUx0B,EAAMwrB,GAAK,QAErD,IAAK+I,KAAU/tB,GACXuB,EAAQusB,GAAYppB,EAASqpB,MAEftyB,IAENiyB,GAAetnB,KAAK2nB,IAAmB,UAAR1E,IACV,iBAAV9nB,EACH/F,EAAE,IAAM+F,GAAOlB,OACfkB,EAAQ/H,EAAMyP,SAASzN,EAAE,IAAM+F,GAAO2H,QAC/BxC,IACPnF,EAAQ/H,EAAMyP,SAASvC,EAAOnF,KAGlCA,EAAQmD,EAAQspB,aAAaD,IAIrCpe,EAAOoe,GAAUxsB,GAIzB,OAAOoO,CACX,CAoIA,SAASwe,GAAoBpwB,EAAG+W,GAC5B,OAAOtZ,EAAE4yB,SAASrwB,EAAG+W,IAAM,EAAI,CACnC,CAEA,SAASuZ,KACL,IAAIjC,EAAS5wB,EAAE3C,MACf,OAAQ2C,EAAE8yB,QAAQlC,EAAO3P,KAAK,QAAUjjB,EAAMwrB,GAAK,QAAS,CAAC,SAAU,cAAe,gBAAkB,GAAMoH,EAAOtmB,GAAG,WAC5H,CAzIAtM,EAAM+0B,WAAa,SAAS7pB,EAAS1E,EAASwuB,GAC1C,IAAI7e,EACAoe,EACA3B,EACA3pB,EACApC,EACAgpB,EACA9nB,EACA+oB,EACAmE,EACAC,EAaJ,GAVKF,EAEMA,EAAMA,QACbA,EAAQA,EAAMA,OAFdA,EAAQh1B,EAAM4pB,GAAGoL,MAOrBnF,GAFA3kB,EAAUA,EAAQiqB,SAAWjqB,EAAUA,EAAQ,IAEhCspB,aAAa,QAAUx0B,EAAMwrB,GAAK,QAEjD,CAWIoH,GAPJqC,GAAkC,IAAvBpF,EAAK7a,QAAQ,MAOXggB,EAAMnF,GAEN7vB,EAAM6uB,OAAOgB,EAAb7vB,CAAmBG,GAGhC,IAAIsN,EAAOzL,EAAEkJ,GAASuC,OAClB2nB,EAAYxC,EAAS,QAAUA,EAAOxrB,GAAGZ,QAAQ6Y,OAASuT,EAAOxrB,GAAGZ,QAAQ/E,KAAO,GAQvF,IAAK,IAAI0P,KALL+jB,EADAD,EACkB,IAAIpnB,OAAO,WAAagiB,EAAO,IAAK,KAEpC,IAAIhiB,OAAO,IAAMunB,EAAY,IAAK,KAGxC3nB,EACZ,GAAI0D,EAAIpB,MAAMmlB,GAAkB,CAE5B,GAAI/jB,IAAQikB,EAGR,OAAO3nB,EAAK0D,GAFZgF,EAAS1I,EAAK0D,EAItB,CAGJ,GAAKyhB,EAAL,CAgBA,IAZA9B,EAAawD,GAAYppB,EAAS,cAElC1E,EAAUxE,EAAEI,OAAO,CAAC,EAAGsyB,GAAaxpB,EAASlJ,EAAEI,OAAO,CAAC,EAAGwwB,EAAOxrB,GAAGZ,QAASosB,EAAOxrB,GAAGnH,WAAauG,GAEhGsqB,IAEItqB,EAAQsqB,kBADDA,IAAevrB,EACDvF,EAAM6uB,OAAOiC,EAAb9wB,CAAyBG,GAEzB2wB,GAIxB7nB,EAAM,EAAGpC,EAAS+rB,EAAOxrB,GAAGsC,OAAO7C,OAAQoC,EAAMpC,EAAQoC,KAG1DlB,EAAQusB,GAAYppB,EAFpBqpB,EAAS3B,EAAOxrB,GAAGsC,OAAOT,OAIZhH,IACVuE,EAAQ+tB,GAAUv0B,EAAM6uB,OAAO9mB,EAAb/H,CAAoBG,IAU9C,OANKgW,EAEOnU,EAAEqzB,cAAc7uB,IACxB2P,EAAOob,WAAW/qB,GAFlB2P,EAAS,IAAIyc,EAAO1nB,EAAS1E,GAK1B2P,CA9BP,CApCA,CAmEJ,EAEAnW,EAAMs1B,oBAAsB,SAASC,GACjC,IACItsB,EACApC,EAFAmuB,EAAQ,GAQZ,IAJKO,EAAW,KACZA,EAAa,CAACv1B,EAAM4pB,GAAI5pB,EAAM8pB,QAAQF,KAGrC3gB,EAAM,EAAGpC,EAAS0uB,EAAW1uB,OAAQoC,EAAMpC,EAAQoC,IACpD+rB,EAAM/rB,GAAOssB,EAAWtsB,GAAK+rB,MAGjC,OAAO5yB,EAAOqF,MAAM,KAAM,CAAC,CAAC,GAAGgW,OAAOuX,EAAMtf,WAChD,EAEA1V,EAAMwH,KAAO,SAAS0D,GAClB,IAAI8pB,EAAQh1B,EAAMs1B,oBAAoBpvB,EAAM0D,KAAKjD,UAAW,IAE5D3E,EAAEkJ,GAASsqB,KAAK,SAAWx1B,EAAMwrB,GAAK,SAASiK,UAAUpzB,MAAK,WAC1DrC,EAAM+0B,WAAW11B,KAAM,CAAC,EAAG21B,EAC/B,GACJ,EAEAh1B,EAAMqB,QAAU,SAAS6J,GACrBlJ,EAAEkJ,GAASsqB,KAAK,SAAWx1B,EAAMwrB,GAAK,SAASiK,UAAUpzB,MAAK,WAC1D,IAAIoL,EAAOzL,EAAE3C,MAAMoO,OAEnB,IAAK,IAAI0D,KAAO1D,EACiB,IAAzB0D,EAAI6D,QAAQ,iBAAyBvH,EAAK0D,GAAK9P,UAAYiE,GAC3DmI,EAAK0D,GAAK9P,SAGtB,GACJ,EAWArB,EAAMwpB,OAAS,SAASte,EAASymB,GAC7B,IAAIjI,EAAU1nB,EAAEkJ,GAASsqB,KAAK,SAAWx1B,EAAMwrB,GAAK,SAASiK,UAAU7G,OAAOiG,IAE9E,GAAKnL,EAAQ7iB,OAAb,CAKA,IAAI6uB,EAAe1zB,EAAE2zB,UAAUjM,GAC/BgM,EAAara,KAAKsZ,IAGlB3yB,EAAEK,KAAKqzB,GAAc,WACjB,IAAI9C,EAAS5yB,EAAM41B,eAAe5zB,EAAE3C,OAChCuzB,GACAA,EAAOpJ,OAAOmI,EAEtB,GAZA,CAaJ,EAEA3xB,EAAM00B,aAAeA,GAErBtyB,EAAOpC,EAAM4pB,GAAI,CACb6G,OAAQA,GACRmD,gBAAiBA,GACjBoB,MAAO,CAAC,EACRa,SAAU,SAASC,EAAW1N,EAAQ5hB,GAClC,IAGIkY,EAAOqX,EAAWC,EAAkBC,EAAqBzR,EAHzD0R,EAAOJ,EAAUN,KAAK,mBACtB5yB,EAAU5C,EAAM4C,QAChBuf,EAAUvf,EAAQuf,QAUlBqC,GAPAhe,EAAUxE,EAAEI,OAAO,CAAC,EAAG,CACnBgJ,MAAO,OACPC,OAAQ,OACRkZ,IAAKuR,EAAUK,YACfC,SAAS,GACV5vB,IAEgB4vB,QAAU,0BAA4B,iBAEzDhO,EACK8N,EAAKrvB,SAENkvB,GADArX,EAAQ9b,EAAQ8b,MAAMoX,IACF,QAAU,OAC9BG,EAAsBj2B,EAAM4sB,WAAWkJ,GACvCE,EAAmB7T,EAAQH,QAAWtD,EAAYoX,EAAU,GAAGtX,YAAcsX,EAAU1qB,QAAU,EAAI6qB,EAAuB,EAE5HC,EAAOl0B,EAAEhC,EAAMsQ,OAAO,uKAAwKkU,EAAUxkB,EAAM4pB,GAAGiM,SAAS5L,SAASoM,UAC9NjrB,MAAM5E,EAAQ4E,OAAOC,OAAO7E,EAAQ6E,QACpCC,IAAI,MAAO9E,EAAQ+d,KACnBjZ,IAAIyqB,EAAWrzB,KAAKoU,IAAImf,GAAuBD,GAC/CM,UAAUR,IAEZI,GACPA,EAAKxqB,QAEb,EACA6qB,OAAQ,SAAS3D,EAAQ4D,EAAUnX,GAC/B,IACIwP,EADAptB,EAAOmxB,EAAOxrB,GAAGZ,QAAQ/E,KAI7B4d,EAASA,GAAU,IADnBmX,EAAWA,GAAYx2B,EAAM4pB,IAGpBnoB,GAAQmxB,EAEjB4D,EAASxB,MAAMvzB,EAAKyW,eAAiB0a,EAErC/D,EAAS,WAAaxP,EAAS5d,EAG/B,IAAIg1B,EAAc,CAAEh1B,KAFpBA,EAAO,QAAU4d,EAAS5d,EAEMmxB,OAAQA,EAAQvT,OAAQA,GAAU,IAClErf,EAAM0pB,QAAQ1oB,KAAKy1B,GAEnB,IAAK,IAAI7vB,EAAI,EAAGwpB,EAAMpwB,EAAM2pB,2BAA2B9iB,OAAQD,EAAIwpB,EAAKxpB,IACpE5G,EAAM2pB,2BAA2B/iB,GAAG6vB,GAGxCz0B,EAAEoF,GAAG3F,GAAQ,SAAS+E,GAClB,IACIkwB,EADA3uB,EAAQ1I,KAkCZ,cA/BWmH,IAAYjB,GACnBmxB,EAAOxwB,EAAM0D,KAAKjD,UAAW,GAE7BtH,KAAKgD,MAAK,WACN,IACIs0B,EACAxgB,EAFAyc,EAAS5wB,EAAEyL,KAAKpO,KAAMoC,GAI1B,IAAKmxB,EACD,MAAM,IAAIviB,MAAMrQ,EAAMsQ,OAAO,2DAA4D9J,EAAS/E,IAKtG,UAFAk1B,EAAS/D,EAAOpsB,MAEMlB,EAClB,MAAM,IAAI+K,MAAMrQ,EAAMsQ,OAAO,kCAAmC9J,EAAS/E,IAK7E,IAFA0U,EAASwgB,EAAOlvB,MAAMmrB,EAAQ8D,MAEfz0B,EAEX,OADA8F,EAAQoO,GACD,CAEf,KAEA9W,KAAKgD,MAAK,WACN,OAAO,IAAIuwB,EAAOvzB,KAAMmH,EAC5B,IAGGuB,CACX,EAEA/F,EAAEoF,GAAG3F,GAAMmxB,OAASA,EAEpB5wB,EAAEoF,GAAGynB,GAAU,WACX,OAAOxvB,KAAKoO,KAAKhM,EACrB,CACJ,IAGJzB,EAAM4pB,GAAGiM,SAAS5L,SAAW,CACzBoM,QAAS,cAGb,IAAIO,GAAsB,CAAE/tB,KAAM,WAAa,OAAOxJ,IAAM,EAAGw3B,YAAY,EAAMrwB,QAAS,CAAC,GAEvFswB,GAAerG,GAAOruB,OAAO,CAC7BoF,KAAM,SAAS0D,EAAS1E,GACpBiqB,GAAOrpB,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAAS1E,GACnCnH,KAAK6L,QAAQ6rB,cACb13B,KAAK4M,QAAU5M,KAAK6L,QACpB7L,KAAK6L,QAAQwZ,SAAS,YAC1B,EAEArjB,QAAS,WACLovB,GAAOrpB,GAAG/F,QAAQuI,KAAKvK,MACvBA,KAAK6L,QAAQ8rB,cACjB,EAEAxwB,QAAS,CACL6Y,OAAQ,UAGZ3V,OAAQ,GAERutB,KAAM,WACF,IAAIC,EAAc73B,KAAK6L,QAAQgB,QAAQlM,EAAM4vB,aAAa,oCAC1D,OAAO5vB,EAAM41B,eAAesB,EAAal3B,EAAMb,OAAOyqB,KAAOgN,EACjE,EAEAO,uBAAwB,WACpB,IAAIF,EAAO53B,KAAK43B,OAChB,OAAOA,GAAQA,EAAKzwB,QAAQ4wB,kBAChC,EAEAtB,UAAW,WACP,IAAI5qB,EAAU7L,KAAK6L,QAAQgB,QAAQlM,EAAM4vB,aAAa,2CACtD,OAAO5vB,EAAM41B,eAAe1qB,EAAQmsB,GAAG,GAAIr3B,EAAMb,OAAOyqB,KAAOgN,EACnE,IAkIJ,SAASU,GAAUpsB,EAASqsB,GACxB,IAAIC,EAAWtsB,EAAQssB,SAAStf,cAEhC,OAAQ,sCAAsCtL,KAAK4qB,IAC1CtsB,EAAQusB,SACI,MAAbD,GACAtsB,EAAQwsB,MACRH,IAKZ,SAAiBrsB,GACb,OAAOlJ,EAAEssB,KAAKqJ,QAAQtrB,QAAQnB,KACzBlJ,EAAEkJ,GAAS0sB,UAAUnC,UAAU7G,QAAO,WACnC,MAAoC,WAA7B5sB,EAAEsJ,IAAIjM,KAAK,aACtB,IAAGwH,MACX,CARQwF,CAAQnB,EAChB,CAzIA9I,EAAOpC,EAAMb,OAAQ,CACjBqI,KAAM,SAAS0D,GACXlL,EAAMwH,KAAK0D,EAASlL,EAAMb,OAAOyqB,GAAI5pB,EAAM4pB,GAAI5pB,EAAM8pB,QAAQF,GACjE,EAEAoL,MAAO,CAAC,EAERpL,GAAI,CACA6G,OAAQqG,GACRlD,gBAAiBA,GAAgBxxB,OAAO00B,GAAapvB,WACrDstB,MAAO,CAAC,EACRuB,OAAQ,SAAS3D,GACb5yB,EAAM4pB,GAAG2M,OAAO3D,EAAQ5yB,EAAMb,OAAOyqB,GAAI,SAC7C,KAIR/hB,GAAW7H,EAAM8pB,QAAS,CACtBtiB,KAAM,SAAS0D,GACXlL,EAAMwH,KAAK0D,EAASlL,EAAM8pB,QAAQF,GACtC,EACAA,GAAI,CACAoL,MAAO,CAAC,EACR6C,OAAQ,CAAC,EACTC,MAAO,GACPvB,OAAQ,SAAS3D,GACb5yB,EAAM4pB,GAAG2M,OAAO3D,EAAQ5yB,EAAM8pB,QAAQF,GAC1C,GAEJoL,MAAO,CAAC,IAGZh1B,EAAM+3B,cAAgB,SAASC,EAAUxxB,GAMrC,OAJKA,IAAWA,EAAU,CAAC,GAE3BA,EAAQyxB,WAAY,EAEbj2B,EAAEg2B,GAAU9d,KAAI,SAASjR,EAAKiC,GAEjC,OADAA,EAAUlJ,EAAEkJ,MACRtI,EAAQ4jB,sBAAuBxmB,EAAMb,OAAOyqB,GAAGsO,UAAahtB,EAAQuC,KAAK,0BACzEvC,EAAQitB,oBAAoB3xB,GACrB0E,EAAQuC,KAAK,uBAI5B,IAAG,EACP,EAEAzN,EAAMwI,eAAiB,SAASxE,GAC5BA,EAAEwE,gBACN,EAEAxI,EAAM41B,eAAiB,SAAS1qB,EAASktB,GACrC,IACkBxxB,EAAGC,EADjBgpB,EAAO3kB,EAAQuC,KAAKzN,EAAMwrB,GAAK,QAC/B9B,EAAU,GACV2O,EAAcntB,EAAQuC,KAAK,aAE/B,GAAIoiB,EAAM,CAQN,GANa,YAATA,IACAA,EAAO,YAKE,SAATA,GAAmBwI,EACnB,OAAOA,EAGX,GAAID,EACA,GAAIA,EAAO,GACP,IAAKxxB,EAAI,EAAGC,EAASuxB,EAAOvxB,OAAQD,EAAIC,EAAQD,IAC5C8iB,EAAQ1oB,KAAKo3B,EAAOxxB,GAAGouB,MAAMnF,SAGjCnG,EAAQ1oB,KAAKo3B,EAAOpD,MAAMnF,SAI9BnG,EAAU,CAAE1pB,EAAM4pB,GAAGoL,MAAMnF,GAAO7vB,EAAM8pB,QAAQF,GAAGoL,MAAMnF,GAAO7vB,EAAMb,OAAOyqB,GAAGoL,MAAMnF,IAO1F,IAJIA,EAAK7a,QAAQ,MAAQ,IACrB0U,EAAU,CAAE1pB,EAAM6uB,OAAOgB,EAAb7vB,CAAmBG,KAG9ByG,EAAI,EAAGC,EAAS6iB,EAAQ7iB,OAAQD,EAAIC,EAAQD,IAAM,CACnD,IAAIgsB,EAASlJ,EAAQ9iB,GACrB,GAAIgsB,EAAQ,CACR,IAAI5L,EAAW9b,EAAQuC,KAAK,QAAUmlB,EAAOxrB,GAAGZ,QAAQ6Y,OAASuT,EAAOxrB,GAAGZ,QAAQ/E,MACnF,GAAIulB,EACA,OAAOA,CAEf,CACJ,CACJ,CACJ,EAEAhnB,EAAMs4B,SAAW,SAASrP,GACtB,IAAI9f,EAAU8f,EAMd,OALIrmB,EAAQggB,SAASnC,UACjBtX,EAAU,WAAaovB,WAAWtP,EAAU,IAAM,GAGtDjnB,EAAE7B,GAAQ+oB,GAAGtmB,EAAQ4mB,OAAQrgB,GACtBA,CACX,EAEAnJ,EAAMw4B,aAAe,SAASvP,GAC1BjnB,EAAE7B,GAAQs4B,IAAI71B,EAAQ4mB,OAAQP,EAClC,EAEAjpB,EAAM04B,UAAY,SAASxtB,EAASiG,GAChC,OAAOjG,EAAQuC,KAAKzN,EAAMwrB,GAAKra,EACnC,EAEAnR,EAAM+T,KAAO,CACT4kB,OAAQ,EACRC,OAAQ,EACRC,QAAS,EACTC,UAAW,EACXC,SAAU,EACVC,OAAQ,EACRC,SAAU,GAsBdj3B,EAAEI,OAAOJ,EAAEssB,KAAKqJ,QAAS,CACrBuB,eAAgB,SAAShuB,GACrB,IAAIjC,EAAMjH,EAAEihB,KAAK/X,EAAS,YAC1B,OAAOosB,GAAUpsB,GAAU/C,MAAMc,IAAQA,GAAO,EACpD,IAGJ,IAAIkwB,GAAe,CAAC,YAAa,YAAa,aAAc,aAAc,YAAa,WAAY,UAAW,SAG1GC,GAAuB,CACvBC,eAAgB,WACZ,IAAIpwB,EAAM,EACNpC,EAASsyB,GAAatyB,OACtBqE,EAAU8D,SAASiK,gBAEvB,IAAImgB,GAAqBE,WAAc12B,EAAQ+hB,aAA/C,CAIAyU,GAAqBE,WAAY,EAEjCF,GAAqBG,WAAY,EACjCH,GAAqBI,cAAe,EAepC,IAbA,IAAIrwB,EAAU,SAASnF,GACfo1B,GAAqBI,eACN,UAAXx1B,EAAEe,KACEq0B,GAAqBG,YAAcv3B,EAAEgC,EAAE0C,QAAQ4F,GApBrC,uCAqBVtI,EAAEwE,iBACFxE,EAAEy1B,mBAGNz1B,EAAEy1B,kBAGd,EAEOxwB,EAAMpC,EAAQoC,IACjBiC,EAAQpK,iBAAiBq4B,GAAalwB,GAAME,GAAS,EArBzD,CAuBJ,EAEAuwB,UAAW,SAAS11B,GAChBo1B,GAAqBI,cAAe,EAChCx1B,EAAEyJ,KAAK8rB,YACPH,GAAqBG,WAAY,GAErCI,aAAaP,GAAqBQ,mBACtC,EAEAC,YAAa,WACTF,aAAaP,GAAqBQ,oBAClCR,GAAqBQ,mBAAqBrB,YAAW,WACjDa,GAAqBI,cAAe,EACpCJ,GAAqBG,WAAY,CACrC,GAAG,IACP,GAGAO,GAAW,CACXtM,KAAM,uBACNuM,KAAM,sBACNtM,GAAI,+BACJuM,OAAQ,0BAGRp3B,EAAQic,QAAUjc,EAAQggB,SAASvB,KAAOze,EAAQggB,SAASnC,SAC3DqZ,GAAW,CACPtM,KAAM,aACNuM,KAAM,YACNtM,GAAI,uBACJuM,OAAQ,eAELp3B,EAAQ0jB,SACfwT,GAAW,CACPtM,KAAM,cACNuM,KAAM,cACNtM,GAAI,YACJuM,OAAQ,8BAELp3B,EAAQwjB,aACf0T,GAAW,CACPtM,KAAM,gBACNuM,KAAM,gBACNtM,GAAI,cACJuM,OAAQ,mCAIZp3B,EAAQwjB,cAAgB,qBAAsBjmB,IAE9C6B,EAAEK,KAAK,CACH43B,eAAgB,gBAChBC,eAAgB,iBACjB,SAAUC,EAAMC,GACfp4B,EAAEwd,MAAM6a,QAASF,GAAS,CACtBG,aAAcF,EACdG,SAAUH,EAEVI,OAAQ,SAAUhb,GACd,IAAIib,EAEAC,EAAUlb,EAAMmb,cAChBC,EAAYpb,EAAMob,UAStB,OALMF,IAAYA,IANLr7B,MAM4B2C,EAAE4yB,SAN9Bv1B,KAMgDq7B,MACzDlb,EAAMza,KAAO61B,EAAUC,SACvBJ,EAAMG,EAAUzxB,QAAQ1B,MAAOpI,KAAMsH,WACrC6Y,EAAMza,KAAOq1B,GAEVK,CACX,EAER,IAIJ,IAAIK,GAAc,SAAS92B,GAAK,OAAQ81B,GAAS91B,IAAMA,CAAI,EACvD+2B,GAAa,WAEjB/6B,EAAMg7B,cAAgB,SAAStxB,EAAQ8hB,GAOnC,OANA9hB,EAASA,EAAO5H,QAAQi5B,GAAYD,IAEhCtP,IACA9hB,EAASA,EAAO5H,QAAQi5B,GAAY,MAAQvP,IAGzC9hB,CACX,EAEA1J,EAAMi7B,eAAiB,SAASj3B,EAAG4uB,GAC/B,IAAIlpB,EAASkpB,EAAOhqB,QAAQsyB,aAE5B,IAAKxxB,EACD,OAAO,EAGXA,EAASA,EAAOxD,QAChBlC,EAAE2F,OAASipB,EACX5uB,EAAEm3B,qBAAsB,EACxB,IAAK,IAAIlyB,EAAM,EAAGpC,EAAS6C,EAAO7C,OAAQoC,EAAMpC,EAAQoC,IACpDS,EAAOT,GAAKW,KAAKgpB,EAAQ5uB,GAG7B,OAAQA,EAAEm3B,mBACd,EAEA,IAAIjS,GAAKlnB,EAAEoF,GAAG8hB,GAEd,SAASkS,GAAY1V,EAAU2V,GAC3B,OAAO,IAAID,GAAYh0B,GAAGI,KAAKke,EAAU2V,EAC7C,CAEAj1B,GAAkB,EAAMg1B,GAAap5B,GAErCo5B,GAAYh0B,GAAKg0B,GAAY1zB,UAAY,IAAI1F,EAE7Co5B,GAAYh0B,GAAGO,YAAcyzB,GAE7BA,GAAYh0B,GAAGI,KAAO,SAASke,EAAU2V,GAKrC,OAJIA,GAAWA,aAAmBr5B,KAAOq5B,aAAmBD,MACxDC,EAAUD,GAAYC,IAGnBr5B,EAAEoF,GAAGI,KAAKoC,KAAKvK,KAAMqmB,EAAU2V,EAASC,GACnD,EAEAF,GAAYh0B,GAAGI,KAAKE,UAAY0zB,GAAYh0B,GAE5C,IAAIk0B,GAAaF,GAAYpsB,UAE7B5M,EAAOg5B,GAAYh0B,GAAI,CACnB+B,QAAS,SAASA,GAEd,OADA9J,KAAKoO,KAAK,UAAWtE,GACd9J,IACX,EAEA03B,YAAa,SAASvL,GAElB,OADAnsB,KAAKoO,KAAK,UAAW+d,GAAMxrB,EAAMwvB,QAC1BnwB,IACX,EAEA6pB,GAAI,WACA,IAAI5hB,EAAOjI,KACPmsB,EAAKlkB,EAAKmG,KAAK,WAGnB,GAAyB,IAArB9G,UAAUE,OACV,OAAOqiB,GAAGtf,KAAKtC,EAAMX,UAAU,IAGnC,IAAI00B,EAAU/zB,EACVovB,EAAOxwB,EAAM0D,KAAKjD,kBAEX+vB,EAAKA,EAAK7vB,OAAS,KAAOjB,GACjC8wB,EAAKtH,MAGT,IAAInG,EAAWyN,EAAKA,EAAK7vB,OAAS,GAC9B6C,EAAS1J,EAAMg7B,cAActE,EAAK,GAAIlL,GAG1C,GAAI5oB,EAAQsgB,sBAAwBxZ,EAAO6xB,OAAO,gBAAkB,GAAKl8B,KAAK,KAAO2P,SAASiK,gBAAiB,CAC3GmgB,GAAqBC,iBAErB,IAAI3T,EAA2B,IAAhBgR,EAAK7vB,OAAe,KAAO6vB,EAAK,GAC3C6C,EAAY7vB,EAAOsL,QAAQ,UAAY,GAAKtL,EAAOsL,QAAQ,aAAe,EAE9EkU,GAAGtf,KAAKvK,KACJ,CACIm8B,WAAYpC,GAAqBM,UACjC+B,SAAUrC,GAAqBS,aAEnCnU,EACA,CACI6T,UAAWA,GAEvB,CAEA,IAAyC,IAArC5yB,UAAU,GAAGqO,QAAQ,YAAqB0hB,EAAK,IAAMA,EAAK,GAAGlwB,QAAS,CACtEkwB,EAAK,GAAKhtB,EACV,IAAIkpB,EAAS8D,EAAK,GACdgF,EAAkBhF,EAAKA,EAAK7vB,OAAS,GAOzC,OANA6vB,EAAKA,EAAK7vB,OAAS,GAAK,SAAS7C,GAC7B,GAAIhE,EAAMi7B,eAAej3B,EAAG4uB,GACzB,OAAO8I,EAAgBj0B,MAAMpI,KAAM,CAAC2E,GAE3C,EACAklB,GAAGzhB,MAAMH,EAAMovB,GACRpvB,CACX,CAeA,cAbW2hB,IAAa1jB,IACpB81B,EAAU/zB,EAAKmG,KAAK,WACpBwb,EAAWoS,EAAQpS,GAEnByN,EAAKA,EAAK7vB,OAAS,GAAK,SAAS7C,GAC7BilB,EAASrf,KAAKyxB,EAASr3B,EAC3B,GAGJ0yB,EAAK,GAAKhtB,EAEVwf,GAAGzhB,MAAMH,EAAMovB,GAERpvB,CACX,EAEA0vB,aAAc,SAASxL,GAOnB,OANAA,EAAKA,GAAMnsB,KAAKoO,KAAK,aAGjBpO,KAAKo5B,IAAI,IAAMjN,GAGZnsB,IACX,IAGJW,EAAM+G,OAASq0B,GACfp7B,EAAM85B,SAAWA,GAEjB95B,EAAMqd,SAAW,WACb,IAAIlJ,EAAS,CAAEwnB,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,GAAIC,IAAK,IACzGvoB,EAAO,CAAEwoB,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,GAElE,SAASC,EAAWzgB,EAAM0gB,GACtB,IAAI9mB,EACA+mB,EACAC,EACAn4B,EAAQi4B,EAAK,GACb7T,EAAK6T,EAAK,GACVG,EAAOH,EAAK,GACZI,EAAQJ,EAAK,GAMjB,OAJKI,IACDJ,EAAK,GAAKI,EAAQ,CAAC,GAGnBA,EAAM9gB,GACC8gB,EAAM9gB,IAGZlU,MAAM+gB,GAEuB,IAAvBA,EAAGlU,QAAQ,SAClBiB,EAAO,IAAIjI,KAAKA,KAAK6M,IAAIwB,EAAMlI,EAAOrP,GAAS,EAAG,EAAGo4B,EAAK,GAAK,GAAIA,EAAK,GAAIA,EAAK,GAAI,IAErFF,EAAYjpB,EAAKmV,EAAGtN,OAAO,EAAG,IAC9BqhB,EAAShnB,EAAKmnB,YAEdnnB,EAAKonB,WAAWpnB,EAAKnE,aAAekrB,EAAYC,GAAUD,EAAYC,EAAS,EAAI,KAC5E/T,EAAGlU,QAAQ,OAAS,GAC3BiB,EAAO,IAAIjI,KAAKA,KAAK6M,IAAIwB,EAAMlI,EAAOrP,GAAQokB,EAAGtN,OAAO,GAAIshB,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAI,IAEvFF,EAAYjpB,EAAKmV,EAAGtN,OAAO,EAAG,IAC9BqhB,EAAShnB,EAAKmnB,YAEdnnB,EAAKonB,WAAWpnB,EAAKnE,aAAekrB,EAAYC,GAAUD,EAAYC,EAAS,EAAI,KAC5E/T,EAAGlU,QAAQ,OAAS,IAC3BiB,EAAO,IAAIjI,KAAKA,KAAK6M,IAAIwB,EAAMlI,EAAOrP,GAAQokB,EAAGtN,OAAO,GAAIshB,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAI,IAEvFF,EAAYjpB,EAAKmV,EAAGtN,OAAO,EAAG,IAC9BqhB,EAAShnB,EAAKmnB,YAEdnnB,EAAKonB,WAAWpnB,EAAKnE,aAAekrB,EAAYC,GAAUD,EAAYC,EAAS,EAAI,KArBnFhnB,EAAO,IAAIjI,KAAKA,KAAK6M,IAAIwB,EAAMlI,EAAOrP,GAAQokB,EAAIgU,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAI,IAwB1EC,EAAM9gB,GAAQpG,EACzB,CAEA,SAASqnB,EAASC,EAASC,EAAOC,GAG9B,KAFAD,EAAQA,EAAMC,IAEF,CACR,IAAIP,EAAOO,EAAKxzB,MAAM,KAClBkT,EAAS,EAMb,OAJI+f,EAAKr2B,OAAS,IACdsW,EAAmB,GAAV+f,EAAK,GAAUhrB,OAAOgrB,EAAK,KAGjC,EAAE,IAAS,MAAO,IAAK,MAAO,EAAG,CAAC,EAAG,EAAG,GAAI/f,EAAQ,IAC/D,CAEA,IAAId,EAAO,IAAIrO,KAAKuvB,GAAS3rB,iBAE7B4rB,EAAQz2B,OAAO22B,KAAKF,GAAO,SAAST,GAChC,IAAI3hB,EAAO2hB,EAAK,GACZY,EAAKZ,EAAK,GAEd,OAAO3hB,GAAQiB,IAASshB,GAAMthB,GAASjB,GAAQiB,GAAc,QAANshB,GAAuB,OAANA,EAC5E,IAEAH,EAAMx8B,KAAKu8B,GAEXC,EAAMniB,MAAK,SAAS9W,EAAG+W,GASnB,MARgB,iBAAL/W,IACPA,EAAI2N,OAAO4qB,EAAWzgB,EAAM9X,KAGhB,iBAAL+W,IACPA,EAAIpJ,OAAO4qB,EAAWzgB,EAAMf,KAGzB/W,EAAI+W,CACf,IAEA,IAAIyhB,EAAOS,EAAMz2B,OAAO+tB,QAAQyI,EAASC,GAAS,IAAMA,EAAMA,EAAM32B,OAAS,GAE7E,OAAOsB,MAAM40B,GAAQA,EAAO,IAChC,CA8BA,SAASa,EAAYL,EAASM,EAAOL,EAAOngB,UAC7BkgB,GAAW/3B,IAClB+3B,EAAUvvB,KAAK6M,IAAI0iB,EAAQ/mB,cAAe+mB,EAAQhnB,WAC9CgnB,EAAQlnB,UAAWknB,EAAQ9mB,WAAY8mB,EAAQ7mB,aAC/C6mB,EAAQ5mB,aAAc4mB,EAAQ3mB,oBAGtC,IAAI6mB,EAnCR,SAAkBF,EAASM,EAAOxgB,GAC9B,IAAIygB,EAAYD,EAAMxgB,GAMtB,GAJyB,iBAAdygB,IACPA,EAAYD,EAAMC,KAGjBA,EACD,MAAM,IAAIztB,MAAM,aAAegN,EAAW,qEAG9C,IAAK,IAAIpU,EAAM60B,EAAUj3B,OAAS,EAAGoC,GAAO,EAAGA,IAAO,CAClD,IAAI80B,EAAQD,EAAU70B,GAAK,GAE3B,GAAI80B,GAASR,EAAUQ,EACnB,KAER,CAEA,IAAIN,EAAOK,EAAU70B,EAAM,GAE3B,IAAKw0B,EACD,MAAM,IAAIptB,MAAM,aAAegN,EAAW,kBAAoBkgB,EAAU,KAG5E,OAAOE,CACX,CASeO,CAAST,EAASM,EAAOxgB,GAEpC,MAAO,CACHogB,KAAMA,EACNV,KAAMO,EAASC,EAASC,EAAOC,EAAK,IAE5C,CAqEA,MAAO,CACJI,MAAO,CAAC,EACRL,MAAO,CAAC,EACRrgB,OAtEH,SAAgBogB,EAASlgB,GACrB,GAAgB,WAAZA,GAAqC,WAAZA,EACzB,OAAO,EAGX,IAAI4gB,EAAOL,EAAYL,EAASl+B,KAAKw+B,MAAOx+B,KAAKm+B,MAAOngB,GACpDogB,EAAOQ,EAAKR,KACZV,EAAOkB,EAAKlB,KAEhB,OAAO/8B,EAAMoI,WAAW20B,EAAOU,EAAK,GAAKV,EAAK,GAAKU,EAAK,GAC5D,EA6DGngB,QA3CH,SAAiBrH,EAAMioB,EAAYC,GAC/B,IACIC,EADAC,EAAeF,SAGRD,GAAc34B,IACrB24B,EAAa7+B,KAAK8d,OAAOlH,EAAMioB,WAGxBC,GAAY54B,IACnB44B,EAAW9+B,KAAK8d,OAAOlH,EAAMkoB,IAGjC,IAAIG,EAAkBroB,EAAKY,oBAIvB0nB,GAFJtoB,EAAO,IAAIjI,KAAKiI,EAAK3N,UAAsC,KAAzB41B,EAAaC,KAEtBtnB,oBAQzB,cANWwnB,GAAgB94B,IACvB84B,EAAeh/B,KAAK8d,OAAOlH,EAAMooB,IAGrCD,EAAQG,EAAgBD,GAAoBH,EAAWE,GAEhD,IAAIrwB,KAAKiI,EAAK3N,UAAmB,IAAP81B,EACrC,EAmBG32B,MAjBH,SAAewO,EAAMoH,GAClB,OAAOhe,KAAKie,QAAQrH,EAAMA,EAAKY,oBAAqBwG,EACvD,EAgBG3R,OAdH,SAAgBuK,EAAMoH,GACnB,OAAOhe,KAAKie,QAAQrH,EAAMoH,EAAUpH,EAAKY,oBAC5C,EAaGjD,KA9DH,SAAc2pB,EAASlgB,GACnB,IAAI4gB,EAAOL,EAAYL,EAASl+B,KAAKw+B,MAAOx+B,KAAKm+B,MAAOngB,GACpDogB,EAAOQ,EAAKR,KACZV,EAAOkB,EAAKlB,KAEZ11B,EAAOo2B,EAAK,GAEhB,OAAIp2B,EAAK2N,QAAQ,MAAQ,EACd3N,EAAK4C,MAAM,KAAK8yB,IAASA,EAAK,GAAK,EAAI,GACvC11B,EAAK2N,QAAQ,OAAS,EACtB3N,EAAKvF,QAAQ,KAAQi7B,GAAmB,KAAXA,EAAK,GAAkBA,EAAK,GAAV,IAGnD11B,CACX,EAiDGm3B,YAZH,SAAqBtB,GACjB,OAAO79B,KAAKoI,MAAM,IAAIuG,KAAKkvB,GAAO,UACtC,EAYH,CAnNgB,GAqNjBl9B,EAAMiW,KAAO,WACT,IAAIwoB,EAAgB,IAChBC,EAAa,MAEjB,SAAS5hB,EAAU7G,EAAMsG,GACrB,OAAc,IAAVA,GAAmC,KAApBtG,EAAKQ,aACpBR,EAAK4G,SAAS5G,EAAKQ,WAAa,IACzB,EAIf,CAEA,SAASkoB,EAAa1oB,EAAMqG,EAAKsiB,GAC7B,IAAIriB,EAAQtG,EAAKQ,WAEjBmoB,EAAMA,GAAO,EACbtiB,GAAQA,EAAMrG,EAAKK,SAAa,EAAIsoB,GAAQ,EAE5C3oB,EAAK4oB,QAAQ5oB,EAAKI,UAAYiG,GAC9BQ,EAAU7G,EAAMsG,EACpB,CAEA,SAASuiB,EAAU7oB,EAAMqG,EAAKsiB,GAG1B,OADAD,EADA1oB,EAAO,IAAIjI,KAAKiI,GACGqG,EAAKsiB,GACjB3oB,CACX,CAEA,SAAS8oB,EAAgB9oB,GACrB,OAAO,IAAIjI,KACPiI,EAAKO,cACLP,EAAKM,WACL,EAER,CA8BA,SAASyoB,EAAe/oB,EAAMgpB,GAC1B,IAAIC,EAAkB,IAAIlxB,KAAKiI,EAAKO,cAAe,EAAG,GAAI,GAEtD2oB,EAXR,SAA6BlpB,EAAMgpB,GAC/B,OAAqB,IAAjBA,EACOG,EAAQN,EAAU7oB,EAAMgpB,GAAe,GAAI,GAG/CG,EAAQnpB,EAAO,GAAKA,EAAKK,UAAY,GAChD,CAKkB+oB,CAAoBppB,EAAMgpB,GAEpCK,EAAWH,EAAQ72B,UAAY42B,EAAgB52B,UAE/CyL,EAAOrR,KAAKyN,MAAMmvB,EAAWZ,GAEjC,OAAO,EAAIh8B,KAAKyN,MAAM4D,EAAO,EACjC,CAuBA,SAASsC,EAAQJ,GAGb,OADA6G,EADA7G,EAAO,IAAIjI,KAAKiI,EAAKO,cAAeP,EAAKM,WAAYN,EAAKI,UAAW,EAAG,EAAG,GAC3D,GACTJ,CACX,CAQA,SAASW,EAAgBX,GACrB,OAAOspB,EAAgBtpB,GAAM3N,UAAY+N,EAAQkpB,EAAgBtpB,GACrE,CA0CA,SAASmpB,EAAQnpB,EAAMkH,GACnB,IAAIZ,EAAQtG,EAAKQ,WAKjB,OAFA+oB,EAFIvpB,EAAO,IAAIjI,KAAKiI,GAENkH,EAASuhB,GACvB5hB,EAAU7G,EAAMsG,GACTtG,CACX,CAEA,SAASupB,EAAQvpB,EAAMwG,EAAcgjB,GACjC,IACIC,EADAviB,EAASlH,EAAKY,oBAGlBZ,EAAKupB,QAAQvpB,EAAK3N,UAAYmU,GAEzBgjB,IACDC,EAAazpB,EAAKY,oBAAsBsG,EACxClH,EAAKupB,QAAQvpB,EAAK3N,UAAYo3B,EAAajB,GAEnD,CAQA,SAASkB,IACL,OAAOtpB,EAAQ,IAAIrI,KACvB,CAMA,SAASuxB,EAAgBtpB,GACrB,IAAI2pB,EAAa,IAAI5xB,KAAK,KAAM,EAAG,EAAG,EAAG,EAAG,GAM5C,OAJIiI,GACA2pB,EAAW/iB,SAAS5G,EAAKQ,WAAYR,EAAKS,aAAcT,EAAKU,aAAcV,EAAKW,mBAG7EgpB,CACX,CAEA,SAASC,EAAQ5pB,EAAMkH,GACnB,IAAI2iB,EAAc,IAAI9xB,KAAKiI,GAE3B,OAAO,IAAIjI,KAAK8xB,EAAY/iB,YAAY+iB,EAAYtpB,cAAgB2G,GACxE,CAEA,SAAS4iB,EAAWnwB,EAAO7H,GACvB,IAAIi4B,EAAWpwB,EAAMA,EAAM/I,OAAS,GAChCm5B,GAA8B,YAAlBA,EAASj7B,KACrBi7B,EAAS1sB,SAAWvL,EAEpB6H,EAAM5O,KAAK,CACP+D,KAAM,UACNuO,QAASvL,GAGrB,CAEA,SAASk4B,EAAS3sB,GACd,MAAmB,MAAZA,GAA+B,MAAZA,CAC9B,CAeA,SAAS4sB,EAAWC,EAAMC,EAAczzB,GAEpC,OADAA,EAAWA,GAAY,EAChBwzB,EAAKnrB,QAAQorB,EAAczzB,KAAcA,CACpD,CAgHA,MAAO,CACHmQ,UAAWA,EACXgiB,UAAWA,EACXH,aAAcA,EACdtoB,QAASA,EACTgqB,cAtNJ,SAAuBt4B,EAAOgO,EAAKyC,GAC/B,IAEI8nB,EAFAC,EAAQxqB,EAAIzN,UACZk4B,EAAQhoB,EAAIlQ,UAShB,OANIi4B,GAASC,IACTA,GAAS9B,IAGb4B,EAAUv4B,EAAMO,YAEEi4B,GAASD,GAAWE,CAC1C,EA2MIC,cAjPJ,SAAuB14B,EAAOgO,EAAKyC,GAC/B,IAEI8nB,EAFAC,EAAQ3pB,EAAgBb,GACxByqB,EAAQ5pB,EAAgB4B,GAG5B,OAAKzQ,GAASw4B,GAASC,IAInBzqB,GAAOyC,IACPA,GAAOkmB,GAKP6B,GAFJD,EAAU1pB,EAAgB7O,MAGtBu4B,GAAW5B,GAGX8B,EAAQD,IACRC,GAAS9B,GAGN4B,GAAWC,GAASD,GAAWE,EAC1C,EA0NIE,QA3KJ,SAAiBzqB,GACd,OAAOI,EAAQJ,GAAM3N,WAAaq3B,IAAQr3B,SAC7C,EA0KIq4B,QAAS,SAAS1qB,GACd,OAAOmpB,EAAQnpB,EAAM,EACzB,EACA2qB,YAAa,SAAS3qB,GAClB,OAAOmpB,EAAQnpB,GAAO,EAC1B,EACA4qB,UAnQJ,SAAmB5qB,GACf,OAAOjI,KAAK6M,IAAI5E,EAAKO,cAAeP,EAAKM,WAC7BN,EAAKI,UAAWJ,EAAKQ,WAAYR,EAAKS,aACtCT,EAAKU,aAAcV,EAAKW,kBACxC,EAgQI8nB,WAAYA,EACZoC,YAAa,GAAKrC,EAClBA,cAAeA,EACfe,QAASA,EACT3iB,SAjMJ,SAAkB5G,EAAMinB,GAGpB,OADApgB,EADA7G,EAAO,IAAIjI,KAAKiI,EAAKO,cAAeP,EAAKM,WAAYN,EAAKI,UAAW6mB,EAAKzmB,WAAYymB,EAAKxmB,aAAcwmB,EAAKvmB,aAAcumB,EAAKtmB,mBACjHsmB,EAAKzmB,YACdR,CACX,EA8LImpB,QAASA,EACTO,MAAOA,EACPJ,gBAAiBA,EACjBR,gBAAiBA,EACjBgC,gBApHJ,SAAyBzwB,GAerB,IAdA,IAOI0wB,EACAj8B,EACAgF,EACAiK,EACAhP,EACAi8B,EAjDcC,EACdC,EAqCA7tB,EApBR,SAAqBhD,EAAQ2tB,GACzB,IACI9nB,EADAlB,EAAWgpB,EAAKhpB,SAcpB,MAZsB,iBAAX3E,IAEH6F,EADAlB,EAASX,SAAShE,GACT2E,EAASX,SAAShE,GAElBA,GAIZ6F,IACDA,EAASlB,EAASX,SAASzQ,GAGxBsS,CACX,CAIkBirB,CAAY9wB,EADftQ,EAAMkT,WACuBmuB,WAAW,OAAQ,QAAQA,WAAW,MAAO,OAAOv/B,QAAQ,KAAM,MACtG8N,EAAQ,GACR2C,EAAmB,yLAEnBtB,EAAYsB,EAAiBtB,UAAY,EACzClB,EAAQwC,EAAiB0F,KAAK3E,GAQ3BvD,GAAO,CACV,IAAIhI,EAAQgI,EAAM,GAEdkB,EAAYlB,EAAM4I,OAClBonB,EAAWnwB,EAAO0D,EAAQjJ,UAAU4G,EAAWlB,EAAM4I,QAGrDunB,EAAWn4B,EAAO,MAAQm4B,EAAWn4B,EAAO,KAC5Cg4B,EAAWnwB,EAAO7H,IAElBi5B,EAAYj5B,EAAM,GAElBgC,EAAO,CACHhF,KAFJA,EAAOzB,EAAe09B,GAGlB1tB,QAASvL,GAGA,SAAThD,IACAgF,EAAKu3B,OAASrB,EAASl4B,KAG3BiM,EAAQnP,EAAWE,MAGfC,EAAuC,iBAApBgP,EAAMhP,UAAyBgP,EAAMhP,UAAYgP,EAAMhP,UAAUg8B,IACpFC,EAAgBl5B,EAAMlB,SAED7B,GAAuB,OAAV+C,IAC9BgC,EAAKiK,MAAQ,CACTjP,KAAMiP,EAAMjP,KACZo8B,UAjFFD,EAiFyBD,EAhFvCE,SACAD,GAAgB,EAChBC,EAAW,cACa,IAAjBD,EACPC,EAAW,OACa,IAAjBD,IACPC,EAAW,UAGRA,GAwEal8B,WAAY+O,EAAM/O,aAAe+7B,KAK7CpxB,EAAM5O,KAAK+I,IAGfkH,EAAYsB,EAAiBtB,UAC7BlB,EAAQwC,EAAiB0F,KAAK3E,EAClC,CAMA,OAJIrC,EAAYqC,EAAQzM,QACpBk5B,EAAWnwB,EAAO0D,EAAQjJ,UAAU4G,IAGjCrB,CACX,EAsDI2xB,cAjCJ,SAAuB/6B,GAKnB,OAJaxG,EAAMkT,UACK+B,SAASusB,WACAh7B,EAAQzB,OAAS,CAAC,GAE9ByB,EAAQ26B,SACjC,EA4BIM,gBArDJ,SAAyBj7B,GACrB,IAAIzB,KAAEA,EAAIo8B,SAAEA,GAAa36B,EACzB,MAAMy3B,EAAOj+B,EAAMkT,UACF,SAAbiuB,IACAA,EAAW,SAEE,gBAAbA,IACAA,EAAW,aAEE,WAAbA,IACAA,EAAW,cAEf,IAAIhrB,EAAS8nB,EAAKhpB,SAASlQ,GAAMo8B,GAIjC,OAHKhrB,IACDA,EAAS8nB,EAAKhpB,SAASlQ,GAAY,MAEhCoR,CACX,EAqCIurB,eAnVJ,SAAwBzrB,GACpB,IAAI0rB,EAAO,IAAI3zB,KAAKiI,EAAKO,cAAeP,EAAKM,WAAa,EAAG,GACzDhN,EAAQw1B,EAAgB9oB,GACxB2rB,EAAal/B,KAAKoU,IAAI6qB,EAAK9qB,oBAAsBtN,EAAMsN,qBAM3D,OAJI+qB,GACAD,EAAK9kB,SAAStT,EAAMkN,WAAcmrB,EAAa,IAG5CD,CACX,EA0UIE,WA5SJ,SAAoB5rB,EAAMgpB,GAClBA,IAAiBh9B,IACjBg9B,EAAej/B,EAAMkT,UAAU+B,SAASJ,UAG5C,IAAIitB,EAAe1C,EAAQnpB,GAAO,GAC9B8rB,EAAe3C,EAAQnpB,EAAM,GAE7B+rB,EAAahD,EAAe/oB,EAAMgpB,GAEtC,OAAmB,IAAf+C,EACOhD,EAAe8C,EAAc7C,GAAgB,EAGrC,KAAf+C,GAAqBhD,EAAe+C,EAAc9C,GAAgB,EAC3D,EAGJ+C,CACX,EA0RIprB,gBAAiBA,EACjBqrB,eA1UJ,SAAwBhsB,GACpB,OAAO,IAAIjI,KAAKiI,EAAKO,cAAe,EAAG,EAC3C,EAyUI0rB,cAvUJ,SAAuBjsB,GACnB,OAAO,IAAIjI,KAAKiI,EAAKO,cAAe,GAAI,GAC5C,EAsUI2rB,SAAU,SAASlsB,GACf,OAAO4pB,EAAQ5pB,EAAM,EACzB,EACAmsB,aAAc,SAASnsB,GACnB,OAAO4pB,EAAQ5pB,GAAO,EAC1B,EAEP,CApYY,GAuYbjW,EAAMqiC,gBAAkB,SAASn3B,GAC7B,GAAI8D,SAASszB,mBAKT,IAJA,IAAIC,EAAWvzB,SAASszB,mBAAmBp3B,EAASs3B,WAAWC,WAAW,SAASC,GAC3E,OAAOA,EAAK7c,YAAc3a,EAAUs3B,WAAWG,cAAgBH,WAAWI,aAC9E,IAAG,GAEAL,EAASM,YACRN,EAASO,gBAAkBP,EAASO,cAAcC,YAAYC,QAC9DT,EAASO,cAAcjd,WAAWpH,YAAY8jB,EAASO,oBAI/D,IAAK,IAAIl8B,EAAI,EAAGA,EAAIsE,EAAQ+3B,WAAWp8B,OAAQD,IAAK,CAChD,IAAIs8B,EAAQh4B,EAAQ+3B,WAAWr8B,GAET,GAAlBs8B,EAAM/N,UAAkB,KAAKvoB,KAAKs2B,EAAMC,aACxCj4B,EAAQuT,YAAYykB,GACpBt8B,KAGkB,GAAlBs8B,EAAM/N,UACNn1B,EAAMqiC,gBAAgBa,EAE9B,CAER,EAEA,IAAIE,GAAiBjjC,EAAOkjC,uBACNljC,EAAOmjC,6BACPnjC,EAAOojC,0BACPpjC,EAAOqjC,wBACPrjC,EAAOsjC,yBACP,SAASxa,GAAYsP,WAAWtP,EAAU,IAAO,GAAK,EAE5EjpB,EAAMojC,eAAiB,SAASna,GAC5Bma,GAAex5B,KAAKzJ,EAAQ8oB,EAChC,EAEA,IAAIya,GAAiB,GAErB1jC,EAAM2jC,eAAiB,SAAS1a,GAC5Bya,GAAeA,GAAe78B,QAAUoiB,EACV,IAA1Bya,GAAe78B,QACf7G,EAAM4jC,kBAEd,EAEA5jC,EAAM4jC,iBAAmB,WACrB5jC,EAAMojC,gBAAe,WACbM,GAAe,KACfA,GAAejuB,OAAfiuB,GACIA,GAAe,IACf1jC,EAAM4jC,mBAGlB,GACJ,EAEA5jC,EAAM6jC,uBAAyB,SAASxV,GAOpC,IANA,IACIyV,EAAS,CAAC,EACVC,GAFc1V,EAAIpkB,MAAM,KAAK,IAAM,IAEVA,MAAM,OAC/BpD,EAASk9B,EAAWl9B,OACpBoC,EAAM,EAEHA,EAAMpC,EAAQoC,GAAO,EACA,KAApB86B,EAAW96B,KACX66B,EAAOhW,mBAAmBiW,EAAW96B,KAAS6kB,mBAAmBiW,EAAW96B,EAAM,KAI1F,OAAO66B,CACX,EAEA9jC,EAAMgkC,mBAAqB,SAAShgC,GAChC,QAAyB,IAAdA,EAAES,EAAEw/B,OACX,OAAOj1B,SAAS8Z,iBAAiB9kB,EAAES,EAAEw/B,OAAQjgC,EAAER,EAAEygC,OAEzD,EAEAjkC,EAAMkkC,YAAc,SAASC,GACzB,IAEIC,EAFApgC,EAAImgC,EAAYvb,cAChByb,EAASrgC,EAAEkgC,YAWf,OARQlgC,EAAEsgC,YACED,IAAWpiC,GAAeoiC,KAC1BD,EAAQpgC,EAAEsgC,YAEPtgC,EAAEugC,QAAUvgC,EAAEwgC,OAASxgC,EAAEygC,gBAChCL,EAAsB,IAAZpgC,EAAEugC,QAGbH,CACX,EAEApkC,EAAM0kC,SAAW,SAASt9B,EAAIu9B,GAC1B,IAAIC,EACAC,EAAe,EAEnB,IAAKF,GAASA,GAAS,EACnB,OAAOv9B,EAGX,IAAI09B,EAAY,WACZ,IAAIx9B,EAAOjI,KACP0lC,GAAW,IAAI/2B,KAAS62B,EACxBnO,EAAO/vB,UAEX,SAASsR,IACL7Q,EAAGK,MAAMH,EAAMovB,GACfmO,GAAgB,IAAI72B,IACxB,CAGA,IAAK62B,EACD,OAAO5sB,IAGP2sB,GACAjL,aAAaiL,GAGbG,EAAUJ,EACV1sB,IAEA2sB,EAAUrM,WAAWtgB,EAAM0sB,EAAQI,EAE3C,EAMA,OAJAD,EAAU9K,OAAS,WACfL,aAAaiL,EACjB,EAEOE,CACX,EAGA9kC,EAAMglC,MAAQ,SAAS95B,EAASiK,EAAOnK,GACnC,IAAIi6B,EACAC,EAAa/vB,IAAUlT,EAU3B,GARI+I,IAAQ/I,IACR+I,EAAMmK,GAGNjK,EAAQ,KACRA,EAAUA,EAAQ,KAGlBg6B,IAAch6B,EAAQusB,SAA1B,CAIA,IACI,GAAIvsB,EAAQi6B,iBAAmBljC,EAC3B,GAAIijC,EAAY,CACZh6B,EAAQk6B,QACR,IAAIjmC,EAASyD,EAAQggB,SACjBzjB,EAAOohB,IAAMphB,EAAOshB,QACpB8X,YAAW,WAAartB,EAAQm6B,kBAAkBlwB,EAAOnK,EAAM,GAAG,GAGlEE,EAAQm6B,kBAAkBlwB,EAAOnK,EAEzC,MACImK,EAAQ,CAACjK,EAAQi6B,eAAgBj6B,EAAQo6B,mBAE1C,GAAIt2B,SAASu2B,UAOhB,GANIvjC,EAAEkJ,GAASoB,GAAG,aACdpB,EAAQk6B,QAGZH,EAAe/5B,EAAQs6B,kBAEnBN,EACAD,EAAaQ,UAAS,GACtBR,EAAaS,UAAU,YAAavwB,GACpC8vB,EAAaU,QAAQ,YAAa36B,EAAMmK,GACxC8vB,EAAaW,aACV,CACH,IACIT,EAAgBG,EADhBO,EAAkBZ,EAAaa,YAG/Bb,EAAac,eAAe/2B,SAASu2B,UAAUS,cAAcC,eAC7DJ,EAAgBK,YAAY,aAAcjB,GAE1CK,GADAH,EAAiBU,EAAgB1F,KAAKt5B,QACNo+B,EAAa9E,KAAKt5B,OAEtDsO,EAAQ,CAACgwB,EAAgBG,EAC7B,CAER,CAAE,MAAOthC,GAELmR,EAAQ,EACZ,CAEA,OAAOA,CA7CP,CA8CJ,EAEAnV,EAAMmmC,kBAAoB,WACtB,IAAIC,EAAS,CAAE,EACXC,EAAarkC,EAAE,0CAA0CihB,KAAK,WAC9DqjB,EAAatkC,EAAE,iDAAiDihB,KAAK,WAUzE,OARAjhB,EAAE,6CAA6CK,MAAK,WAChD+jC,EAAO/mC,KAAKoC,MAAQpC,KAAK0I,KAC7B,IAEIu+B,IAAerkC,GAAeokC,IAAepkC,IAC/CmkC,EAAOE,GAAcD,GAGhBD,CACX,EAEApmC,EAAMumC,UAAY,SAASC,GACvB,IAAIC,EAAeD,EAAKhR,KAAK,kDAAkDjsB,QAC3Em9B,EAAcF,EAAKhR,KAAK,qBAAqBmM,OAEjD,SAASyD,EAAMvY,GACX,IAAI+F,EAAS5yB,EAAM41B,eAAe/I,GAE9B+F,GAAUA,EAAOwS,MACnBxS,EAAOwS,QAEPvY,EAAGpjB,QAAQ,QAEjB,CAEAi9B,EAAYxd,GAAG,WAAW,SAASllB,GAC7BA,EAAE2iC,SAAW3mC,EAAMkqB,KAAKI,KAAQtmB,EAAE4iC,WACpC5iC,EAAEwE,iBACF48B,EAAMqB,GAEV,IAEAA,EAAavd,GAAG,WAAW,SAASllB,GAC9BA,EAAE2iC,SAAW3mC,EAAMkqB,KAAKI,KAAOtmB,EAAE4iC,WACnC5iC,EAAEwE,iBACF48B,EAAMsB,GAEV,GACJ,EAEA1mC,EAAM6mC,aAAe,SAAS37B,GAC1B,IAAI47B,EAAqB,GACrBC,EAAoB77B,EAAQ87B,aAAa,QACpCpY,QAAO,SAASjW,EAAOzN,GAEpB,MAAkC,YADdlL,EAAM4O,kBAAkB1D,EAAS,CAAC,aACjCyhB,QACzB,IACC9f,IAAI1M,GAEb4mC,EAAkB1kC,MAAK,SAASsW,EAAO3M,GACnC86B,EAAmBnuB,GAAS3W,EAAEgK,GAAQmqB,WAC1C,IAEA,IAEIjrB,EAAQ,GAAG+7B,WACf,CAAE,MAAOjjC,GACLkH,EAAQ,GAAGk6B,OACf,CAEA2B,EAAkB1kC,MAAK,SAASsW,EAAO3M,GACnChK,EAAEgK,GAAQmqB,UAAU2Q,EAAmBnuB,GAC3C,GACJ,EAEA3Y,EAAMknC,iBAAmB,WACrB,GAAIl4B,SAASgK,cAAe,CACxB,IAAImuB,EAAanlC,EAAE,mBACf2W,EAAQwuB,EAAWxuB,MAAM3J,SAASgK,eAEtC,GAAIL,GAAS,GACQwuB,EAAWxuB,EAAQ,IAAMwuB,EAAW,IAC1C/B,OAEnB,CACJ,EAEAplC,EAAMgjC,KAAO,SAASj7B,GAClB,OAAMA,EACKA,EAAM+I,WAAWkyB,OAEjB,EAEf,EAEAhjC,EAAMonC,0BAA4B,SAASl8B,GACvC,IAAIm8B,EAAgBn8B,EAAQgB,QAAQ,mBAChC0pB,EAAiB51B,EAAM41B,eAAe1qB,GAa1C,OAVIm8B,EAAcxgC,OACLwgC,EACFzR,EACkC,WAAhCA,EAAepvB,QAAQ/E,KAC5BO,EAAE4zB,EAAevX,MACjBuX,EAAe3pB,QAAQupB,KAAK,mBAAmBjsB,QAE1C2B,CAIjB,EAEAlL,EAAMsnC,aAAe,SAASp8B,EAASq8B,EAAWx/B,GAC9C,IAAIsL,EAAUnI,EAAQ+X,KAAKskB,IAAc,GAErCl0B,EAAQ2B,QAAQjN,GAAS,GACzBmD,EAAQ+X,KAAKskB,GAAYl0B,EAAU,IAAMtL,GAAOi7B,OAExD,EAEAhjC,EAAMwnC,gBAAkB,SAASt8B,EAASq8B,EAAWx/B,GACjD,IAAIsL,EAAUnI,EAAQ+X,KAAKskB,IAAc,GAEzCr8B,EAAQ+X,KAAKskB,EAAWl0B,EAAQvR,QAAQiG,EAAO,IAAIi7B,OACvD,EAEAhjC,EAAMynC,gBAAkB,SAASv8B,EAASq8B,EAAWx/B,IACnCmD,EAAQ+X,KAAKskB,IAAc,IAE7BvyB,QAAQjN,GAAS,EACzB/H,EAAMsnC,aAAap8B,EAASq8B,EAAWx/B,GAEvC/H,EAAMwnC,gBAAgBt8B,EAASq8B,EAAWx/B,EAElD,EAEA/H,EAAM0nC,aAAe,SAAS9nC,GAC1B,IAAIsB,EAAQlB,EAAM2nC,kBAAkB/nC,IAAeA,EACnD,OAAOgD,EAAQxC,YAAcD,EAAOC,WAAWc,GAAOL,OAC1D,EAEAb,EAAM2nC,kBAAoB,SAASC,GAC/B,MAAO,CACHC,GAAM,qBACNC,GAAM,qBACNC,GAAM,qBACNC,GAAM,qBACNC,GAAM,uBACRL,EACN,EAEA5nC,EAAMkoC,aAAe,CACjBC,MAAO,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QACxGC,MAAO,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAChG,MAAO,OAAQ,OAAQ,QAC/BC,MAAO,CAAC,MAAO,OAAQ,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QACxF,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,QAAS,OAAQ,SAChEC,IAAK,CAAC,OAAQ,QAAS,OAAQ,SAAU,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,OAAQ,QAClGC,aAAc,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,SAC/C96B,KAAM,CAAC,OAAQ,OAAQ,SACvB+6B,YAAa,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,OAAQ,QACzF,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,MAC1F,OAAQ,OAAQ,UAC9BC,IAAK,CAAC,QACNC,OAAQ,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,UAAW,OAAQ,QAC5EC,IAAK,CAAC,MAAO,OAAQ,MAAO,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,UAAW,KAAM,OAAQ,SACtG,aAAc,CAAC,OAAQ,OAAQ,SAAU,OAAQ,OAAQ,OAAQ,SAGrE3oC,EAAM4oC,aAAe,SAASC,EAAWC,GACrC,IAAIC,EAAc/oC,EAAMkoC,aACpBc,EAASlpC,OAAOoqB,KAAK6e,GACrBhkC,EAAO,OAEX,GAAI8jC,IAAc5mC,IAAgB4mC,EAAUhiC,OACxC,OAAO9B,EAGX,IAAK,IAAI6B,EAAI,EAAGA,EAAIoiC,EAAOniC,OAAQD,GAAK,EAAG,CAGvC,GAFiBmiC,EAAYC,EAAOpiC,IAErBoO,QAAQ6zB,EAAU3wB,gBAAkB,EAChD,OAAO4wB,EAAa,QAAUE,EAAOpiC,GAAKoiC,EAAOpiC,EAExD,CAEA,OAAO7B,CACX,EAEA/E,EAAMipC,mBAAqB,SAAS55B,GAGhC,GAAa,IAATA,EACA,MAAO,SAGX,IAAIzI,EAAIiS,SAASnW,KAAKyN,MAAMzN,KAAK8tB,IAAInhB,GAAQ3M,KAAK8tB,IAAI,OAAQ,IAC9D,OAAO9tB,KAAKiT,MAAMtG,EAAO3M,KAAKwmC,IAAI,KAAMtiC,GAAI,GAAK,IAPrC,CAAC,QAAS,KAAM,KAAM,KAAM,MAOqBA,EACjE,EAEA5G,EAAMmpC,oBAAsB,SAASnhB,GACjC,MAAO,IAAMA,EAAQ/d,MAAM,KAAKC,KAAK,IACzC,EAIA,IAAIk/B,GAAmB,CAAC,OAAQ,UAAW,YAAa,WAAY,UAAW,OAAQ,UAAW,UAAW,QAAS,OAAQ,QAAS,WACnIC,GAAa,CAAC,QAAS,UAAW,QAElCC,GAAc,CAAC,YAAa,UAC5BC,GAAa,CAAE,CAAC,QAAS,MAAO,CAAC,SAAU,MAAO,CAAC,QAAS,OAC5DC,GAAgB,CAAE,CAAC,QAAS,MAAO,CAAC,SAAU,MAAO,CAAC,QAAS,OAE/DC,GAAqB,CAAE,QAAS,SAAU,SAAU,YACpDC,GAAe,CAAE,CAAC,OAAQ,UAAW,CAAC,aAAc,YAAa,CAAC,WAAY,aAC9EC,GAAiB,CAAE,OAAQ,SAAU,UAAW,SAAU,QAC1DC,GAAmB,CAAE,CAAC,WAAY,eAAgB,CAAC,aAAc,gBAErE5pC,EAAMwyB,cAAiB,WACnB,IAAIqX,EAAgB,CAAC,EAuCrB,SAASC,EAAiBjX,EAAU9qB,EAAOgiC,GAClCF,EAAchX,KACfgX,EAAchX,GAAY,CAAC,GAG/BgX,EAAchX,GAAU9qB,GAASgiC,GAAahiC,CAClD,CAEA,SAASiiC,EAAmBnX,EAAUoX,GAClC,IAAK,IAAIrjC,EAAI,EAAGA,EAAIqjC,EAAIpjC,OAAQD,IACxBtE,EAAQ2nC,EAAIrjC,IACZkjC,EAAiBjX,EAAUoX,EAAIrjC,GAAG,GAAIqjC,EAAIrjC,GAAG,IAE7CkjC,EAAiBjX,EAAUoX,EAAIrjC,GAG3C,CAuDA,OAVAojC,EAAmB,aAAcZ,IACjCY,EAAmB,WAAYX,IAC/BW,EAAmB,QAASV,IAC5BU,EAAmB,OAAQT,IAC3BS,EAAmB,eAAgBP,IACnCO,EAAmB,UAAWR,IAC9BQ,EAAmB,SAAUN,IAC7BM,EAAmB,WAAYL,IAC/BK,EAAmB,aAAcJ,IAE1B,CACHH,mBAAoBA,GACpBD,cAAeA,GACfD,WAAYA,GACZD,YAAaA,GACbY,eAAgBb,GAChBD,iBAAkBA,GAElBS,cAAeA,EACfpX,mBAtHqB,CAAC,EAwHtB0X,eA5GJ,SAAwBvX,EAAQ8D,GAC5B,IACI9vB,EAAGwjC,EAAGlb,EAAMxW,EAAQ2xB,EAAWC,EAD/BC,EAAOvqC,EAAMwyB,cAAcC,mBAG/B,IAAK7rB,EAAI,EAAGA,EAAI8vB,EAAK7vB,OAAQD,IAUzB,IATAsoB,EAAOwH,EAAK9vB,GAAGsoB,KACfmb,EAAY3T,EAAK9vB,GAAG8R,OAEf6xB,EAAK3X,GAAQ1D,KACdqb,EAAK3X,GAAQ1D,GAAQ,CAAC,GAG1BxW,EAAS6xB,EAAK3X,GAAQ1D,GAEjBkb,EAAI,EAAGA,EAAIC,EAAUxjC,OAAQujC,IAC9BE,EAAeD,EAAUD,GAErB9nC,EAAQ+nC,EAAUD,IAClB1xB,EAAO4xB,EAAa,IAAMA,EAAa,GAEvC5xB,EAAO4xB,GAAgBA,CAIvC,EAqFI3X,cAjEJ,SAAuB+D,GACnB,IAQI8T,EAAcC,EAAYprB,EAR1BuT,EAAS8D,EAAK9D,OACdC,EAAW6D,EAAK7D,SAChB9qB,EAAQ2uB,EAAK3uB,MACbgrB,EAAO2D,EAAK3D,KACZP,EAAgBxyB,EAAMwyB,cACtBqX,EAAgBrX,EAAcqX,cAAchX,GAC5C6X,EAAmBlY,EAAcC,mBAAmBG,GACpD+X,EAAiBjU,EAAKrX,OAG1B,OAAKqrB,IAKLD,GADAD,EAAeE,EAAiB7X,KACJ2X,EAAaziC,IAAiC8hC,EAAc9hC,KAIhFsX,EADa,eAAbwT,EACS6X,EAAiB7kC,GAAUktB,EAAO,IACvB,iBAAbF,EACE,SACW,YAAbA,EACE,aACW,WAAbA,EACE,KACW,aAAbA,EACE,cACW,eAAbA,EACE,GAEA6X,EAAiB7kC,IAG9BwZ,EAASsrB,GAAkBtrB,GAEXorB,GAzBT,EA6Bf,EAyBIG,eAxHJ,SAAwBhY,EAAQvT,GAC5B,IAAIkrB,EAAOvqC,EAAMwyB,cAAcC,mBAE1B8X,EAAK3X,KACN2X,EAAK3X,GAAU,CAAC,GAGpB2X,EAAK3X,GAAQ/sB,GAAUwZ,CAC3B,EAkHJ,CA9HsB,GAiItBrf,EAAM8pC,iBAAmB,SAASjX,EAAU9qB,EAAOgiC,GAC1C/pC,EAAM6qC,sBAAsBhY,KAC7B7yB,EAAM6qC,sBAAsBhY,GAAY,CAAC,GAG7C7yB,EAAM6qC,sBAAsBhY,GAAU9qB,GAASgiC,GAAahiC,CAChE,EAEA/H,EAAMgqC,mBAAqB,SAASnX,EAAUoX,GAC1C,IAAK,IAAIrjC,EAAI,EAAGA,EAAIqjC,EAAIpjC,OAAQD,IACxBtE,EAAQ2nC,EAAIrjC,IACZ5G,EAAM8pC,iBAAiBjX,EAAUoX,EAAIrjC,GAAG,GAAIqjC,EAAIrjC,GAAG,IAEnD5G,EAAM8pC,iBAAiBjX,EAAUoX,EAAIrjC,GAGjD,EAEA5G,EAAM8qC,iBAAmB,SAASzrB,EAAQwT,EAAU9qB,GAChD,IAAI0iC,EAAazqC,EAAM6qC,sBAAsBhY,GAAU9qB,GAEvD,GAAI0iC,EACA,OAAOprB,EAASorB,CAExB,EAEAzqC,EAAM6qC,sBAAwB,CAAC,EAE/B7qC,EAAMgqC,mBAAmB,aAAcZ,IACvCppC,EAAMgqC,mBAAmB,OAAQX,IAEjCrpC,EAAMgqC,mBAAmB,QAASV,IAClCtpC,EAAMgqC,mBAAmB,OAAQT,IAEjCvpC,EAAMgqC,mBAAmB,eAAgBP,IAEzCzpC,EAAM+qC,+BAAiC,SAAS7/B,EAAS8/B,GACrD,IAAItlB,EAAWslB,EAAW9wB,KAAI+wB,GAAY,IAAIjrC,EAAMijB,KAAK,SAASgoB,UAAiB/gC,KAAK,KACxFgB,EAAQsqB,KAAK9P,GAAU+P,QAAQ/P,GAAUrjB,MAAK,CAAC2rB,EAAGkd,KAC9C,IAAIC,EAAkBnpC,EAAEkpC,GACxBF,EAAWrqC,SAAQ,SAASsqC,GACxB,IAAIG,EAAYprC,EAAMijB,KAAK,SAASgoB,KAChCE,EAAgBloB,KAAKmoB,KACrBD,EAAgB7/B,IAAI2/B,EAAWE,EAAgBloB,KAAKmoB,IACpDD,EAAgB7Z,WAAW8Z,GAEnC,GAAE,GAEV,EAKAprC,EAAMqrC,QAAU,SAASjxB,GACrB,IASIrS,EATAujC,EAAoC,GAApB3kC,UAAUE,QAAetE,MAAMD,QAAQ8X,GAASA,EAAQ7X,MAAMmF,UAAUxB,MAAM0D,KAAKjD,WACnGE,EAASykC,EAAczkC,OACvB0kC,EAAY1kC,EACZ2kC,EAAWxpC,EAAEypC,WACb7kC,EAAI,EACJ8kC,EAAS,EACTC,EAAiBppC,MAAMsE,GACvB+kC,EAAerpC,MAAMsE,GACrBglC,EAAkBtpC,MAAMsE,GAG5B,SAASilC,EAAWnzB,EAAOozB,EAAUrzB,GACjC,OAAO,WACCA,GAAU4yB,GACVI,IAGJF,EAASQ,WACLD,EAASpzB,GAAStZ,KAClBqZ,EAAOC,GAASpW,MAAMmF,UAAUxB,MAAM0D,KAAKjD,cAGvC4kC,GACJC,GAAWE,EAAqB,SAAZ,WAAwB,QAAQK,EAAUrzB,EAEtE,CACJ,CAEA,KAAO9R,EAAIC,EAAQD,KACVmB,EAAQujC,EAAc1kC,KAAO5G,EAAMuI,WAAWR,EAAMmf,SACrDnf,EAAMmf,UACD+kB,KAAKH,EAAWllC,EAAGilC,EAAiBP,IACpCY,KAAKJ,EAAWllC,EAAG+kC,EAAgBC,KAIxCJ,EAASQ,WAAW3sC,KAAM0I,KACxBwjC,GAQV,OAJKA,GACDC,EAASW,YAAYN,EAAiBP,GAGnCE,EAAStkB,SACpB,EAGA,WACI,SAASklB,EAAYC,EAASC,EAAUC,EAAUC,GAC9C,IAAIhG,EAAOxkC,EAAE,UAAUihB,KAAK,CACxBwpB,OAAQF,EACR5V,OAAQ,OACRjwB,OAAQ8lC,IAGR/+B,EAAOzN,EAAMmmC,oBACjB14B,EAAK6+B,SAAWA,EAEhB,IAAI18B,EAAQy8B,EAAQpiC,MAAM,YAI1B,IAAK,IAAIxI,KAHTgM,EAAKi/B,YAAc98B,EAAM,GAAG9N,QAAQ,QAAS,IAC7C2L,EAAKk/B,OAAS/8B,EAAM,GAEHnC,EACTA,EAAKa,eAAe7M,IACpBO,EAAE,WAAWihB,KAAK,CACdlb,MAAO0F,EAAKhM,GACZA,KAAMA,EACNsD,KAAM,WACPwG,SAASi7B,GAIpBA,EAAKj7B,SAAS,QAAQqhC,SAASlhC,QACnC,CAEA,IAAImhC,EAAY79B,SAASkP,cAAc,KACnC4uB,EAAoB,aAAcD,IAAc7sC,EAAM4C,QAAQuf,QAAQiB,KAE1E,SAAS2pB,EAAWV,EAASC,GACzB,IAAIU,EAAOX,EAEX,GAAsB,iBAAXA,EAAqB,CAM5B,IALA,IAAIz8B,EAAQy8B,EAAQpiC,MAAM,YACtByiC,EAAc98B,EAAM,GACpB+8B,EAASM,KAAKr9B,EAAM,IACpBwK,EAAQ,IAAI8yB,WAAWP,EAAO9lC,QAEzBoC,EAAM,EAAGA,EAAM0jC,EAAO9lC,OAAQoC,IACnCmR,EAAMnR,GAAO0jC,EAAOz7B,WAAWjI,GAEnC+jC,EAAO,IAAIG,KAAK,CAAC/yB,EAAMgzB,QAAS,CAAEroC,KAAM2nC,GAC5C,CAEAzqB,UAAUorB,WAAWL,EAAMV,EAC/B,CAEA,SAASgB,EAAcjB,EAASC,GACxBnsC,EAAOgtC,MAAQd,aAAmBc,OAClCd,EAAUkB,IAAIC,gBAAgBnB,IAGlCQ,EAAUY,SAAWnB,EACrBO,EAAUnV,KAAO2U,EAEjB,IAAIroC,EAAIgL,SAAS0+B,YAAY,eAC7B1pC,EAAE2pC,eAAe,SAAS,GAAM,EAAOxtC,EACnC,EAAG,EAAG,EAAG,EAAG,GAAG,GAAO,GAAO,GAAO,EAAO,EAAG,MAElD0sC,EAAUe,cAAc5pC,GACxBu0B,YAAW,WACPgV,IAAIM,gBAAgBxB,EACxB,GACJ,CAEArsC,EAAM8tC,OAAS,SAAStnC,GACpB,IAAIunC,EAAO3B,EAEN5lC,EAAQwnC,aACLlB,EACAiB,EAAOT,EACArrB,UAAUorB,aACjBU,EAAOhB,IAIfgB,EAAKvnC,EAAQ6lC,QAAS7lC,EAAQ8lC,SAAU9lC,EAAQ+lC,SAAU/lC,EAAQgmC,YACtE,CACH,CAhFD,GAmFAxsC,EAAMiuC,kBAAoB,SAA2BxgC,GACjD,IAAIygC,EAAa,CAAC,EAclB,OAZApuC,OAAOoqB,KAAKzc,GAAQ,CAAC,GAAG9M,SAAQ,SAASwM,GACvCrN,OAAOquC,eAAeD,EAAY/gC,EAAU,CAC1CmiB,IAAK,WACH,OAAO7hB,EAAKN,EACd,EACAoiB,IAAK,SAASxnB,GACZ0F,EAAKN,GAAYpF,EACjB0F,EAAK2gC,OAAQ,CACf,GAEJ,IAEOF,CACX,EAEAluC,EAAMquC,gBAAkB,WACpB,IAMIC,EAAStsC,EANc,sNAOvBusC,EAAS,GAUb,OARAD,EAAO/iC,SAASvJ,EAAE,SAElBssC,EAAOjsC,MAAK,SAASuE,EAAG4nC,GACpBD,EAAOvtC,KAAKgB,EAAEwsC,GAAMljC,IAAI,oBAC5B,IAEAgjC,EAAO5iC,SAEA6iC,CACX,EAEAvuC,EAAMyuC,UAAY,SAASvjC,GACvB,OAAOA,aAAmBkc,SAAWlc,aAAmBwjC,YAC5D,EAKI1uC,EAAMC,SAAWD,EAAMC,UAAY,CAAC,EACpCD,EAAM2uC,YAAc,SAASx9B,EAAKpJ,GAC9B,IAAI6mC,EAAOz9B,EAAIlH,MAAM,KACjB4kC,EAAO7uC,EAAMC,SAEjBkR,EAAMy9B,EAAKxf,MAEXwf,EAAKjuC,SAAQ,SAASoJ,GACd8kC,EAAK9kC,KAAU9H,IACf4sC,EAAK9kC,GAAQ,CAAC,GAGlB8kC,EAAOA,EAAK9kC,EAChB,IAEIhC,EAAMJ,cAAgB7H,OACtB+uC,EAAK19B,GAAOtJ,GAAW,CAAC,EAAGgnC,EAAK19B,GAAMpJ,GAEtC8mC,EAAK19B,GAAOpJ,CAEpB,EAGA/H,EAAMoQ,eAAiBjQ,EAAO2uC,sBAG9B9uC,EAAM2uC,YAAY,cAAenvC,GAKjCQ,EAAM+uC,WAAa,CAAC,EAEpBhoC,OAAO1E,KAAM,uEAAuE4H,MAAO,MACvF,SAAU+kC,EAAIvtC,GACVzB,EAAM+uC,WAAY,WAAattC,EAAO,KAAQA,EAAKyW,aACvD,IAEJlY,EAAM+E,KAAO,SAASioB,GAClB,OAAY,MAAPA,EACMA,EAAM,GAIK,iBAARA,GAAmC,mBAARA,EACrChtB,EAAM+uC,WAAWjvC,OAAO4H,UAAUoJ,SAASlH,KAAKojB,KAAS,gBAClDA,CACf,EAGJ,IAAI0D,eAAiB,CAAEC,gBAAiB,WAAa,OAAO,CAAM,EAAEse,aAAc,WAAY,GAU9F,SAASpe,GAAoBhE,GACzB6D,eAAeG,qBAAuBH,eAAeG,oBAAoBhE,EAAIrrB,GAC7EkvB,eAAewe,YAAcxe,eAAewe,WAAW1tC,EAC3D,CAXArB,EAAOuwB,eAAiB,CACpBue,aAAcve,eAAeue,aAYpC,CAl6KD,CAk6KGloC,OAAQ5G,QACGH,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACf6pB,EAAK7pB,EAAMymB,QACXpkB,EAAOL,EAAEK,KACTD,EAASJ,EAAEI,OACXQ,EAAU5C,EAAM4C,QAChBuf,EAAUvf,EAAQuf,QAClBnD,EAAapc,EAAQoc,WACrBD,EAAcnc,EAAQmc,YACtBowB,EAAkB,CAAEC,MAAO,EAAGC,OAAQ,EAAGC,OAAQ,EAAGC,QAAS,GAC7DC,EAAsB,CAAEC,UAAW,EAAGC,WAAY,EAAGC,WAAY,EAAGC,YAAa,GACjFC,OAA0D,IAAxC7gC,SAASiK,gBAAgBzM,MAAMsjC,OAA0B9wB,EAC3E+wB,EAAiB,iGACjBC,EAAkB,oDAClBC,EAAmB,gBACnBC,EAAmB,0BACnBC,EAAqB,qBACrBC,EAAa,SACbC,EAAiB,CAAC,cAAe,SAAU,UAAW,UAAW,UAAW,WAAY,QAAS,SAAU,SAAU,SAAU,UAAW,OAAQ,QAAS,QAAS,YAAa,aAAc,aAAc,aAAc,cAAe,SAAU,YACpPC,EAAc,CAAC,SAAU,QAAS,SAAU,SAAU,OAAQ,QAAS,QAAS,YAAa,aAAc,aAAc,UACzHC,EAAkB,CAAEC,OAAU,MAAOpB,MAAO,GAAIqB,KAAM,KAAMhB,UAAW,MACvEiB,EAAY1xB,EAAW1T,IACvBqK,EAAQjT,KAAKiT,MAEbg7B,EAAK,KAELC,EAAO,OACPC,EAAQ,QACRC,EAAS,SACTC,EAAS,SACTC,EAAS,SACTC,EAAW,UACXC,EAAW,WACXC,EAAY,YACZC,EAAW,WACXC,EAAoB,mBACpBC,EAAaZ,EAAY,aACzBa,EAAYb,EAAY,YACxBc,EAAWd,EAAY,sBACvBe,EAAcf,EAAY,cAC1BgB,EAAsB,SACtBC,EAAwB,eAAiBD,EAAsB,IAC/DnkB,EAAa,CACT1B,KAAM,CACFnW,QAAS,QACTvI,SAAU,OACVykC,WAAY,aACZC,UAAU,EACVC,UAAW,GAEfhmB,MAAO,CACHpW,QAAS,OACTvI,SAAU,OACVykC,WAAY,aACZC,UAAU,EACVC,SAAU,GAEdtkB,KAAM,CACF9X,QAAS,KACTvI,SAAU,MACVykC,WAAY,aACZC,UAAU,EACVC,SAAU,GAEdrkB,GAAI,CACA/X,QAAS,OACTvI,SAAU,MACVykC,WAAY,aACZC,UAAU,EACVC,UAAW,GAEfvtB,IAAK,CACD7O,QAAS,UAEbqW,OAAQ,CACJrW,QAAS,OAEbgY,GAAM,CACFhY,QAAS,MACTo8B,UAAW,GAEfnkB,IAAK,CACDjY,QAAS,KACTo8B,SAAU,GAGdD,SAAU,CACNn8B,QAAS,YAGbq8B,WAAY,CACRr8B,QAAS,eAkBrB,GAdA1V,EAAMutB,WAAaA,EAEnBnrB,EAAOJ,EAAEoF,GAAI,CACTsgB,UAAW,SAASC,EAAYC,GAC5B,OAAI7I,EACO8K,EAAGmoB,UAAU3yC,KAAMsoB,IAAc,EAAOC,IAAW,GAEnDvoB,KAAKwoB,KAAKF,EAAYC,EAErC,IAKA5I,IAAeD,EAAa,CAC5B1c,EAAKiuC,GAAa,SAASrnC,EAAKlB,GAC5B/F,EAAEoF,GAAGW,GAAS,SAASknB,GACnB,QAAkB,IAAPA,EACP,OAAOgjB,EAAkB5yC,KAAM0I,GAE/B,IAAIT,EAAOtF,EAAE3C,MAAM,GACf6yC,EAAiBnqC,EAAQ,IAAMknB,EAAMshB,EAAgBxoC,EAAMjG,QAAQsuC,EAAY,KAAO,IAQ9F,OANkD,GAA1C9oC,EAAKkF,MAAM2R,QAAQnJ,QAAQu8B,GAC3BvvC,EAAE3C,MAAMiM,IAAIimC,EAAWW,GAEvB5qC,EAAKkF,MAAM2R,QAAU7W,EAAKkF,MAAM2R,QAAQrc,QAAQ,IAAI+L,OAAO9F,EAAQ,YAAa,KAAMmqC,GAGvF7yC,IACX,EAEA2C,EAAE6nB,GAAGsoB,KAAKpqC,GAAS,SAAS8hB,GACxB7nB,EAAE6nB,EAAGuoB,MAAMrqC,GAAO8hB,EAAGwoB,IACzB,CACJ,IAEA,IAAIC,EAAWtwC,EAAE6nB,GAAGniB,UAAU6qC,IAC9BvwC,EAAE6nB,GAAGniB,UAAU6qC,IAAM,WACjB,OAAuC,GAAnCjC,EAAYt7B,QAAQ3V,KAAK6vB,MAClB9mB,WAAWpG,EAAE3C,KAAK+yC,MAAM/yC,KAAK6vB,SAGjCojB,EAAS7qC,MAAMpI,KAAMsH,UAChC,CACJ,CA6DA,SAAS6rC,EAAazqC,GAClB,OAAO8Q,SAAS9Q,EAAO,GAC3B,CAEA,SAAS0qC,EAASvnC,EAASiC,GACvB,OAAOqlC,EAAatnC,EAAQI,IAAI6B,GACpC,CAUA,SAASulC,EAAkB7jC,GACvB,IAAK,IAAIsC,KAAOtC,GACwB,GAAhCwhC,EAAer7B,QAAQ7D,KAA2C,GAA7Bm/B,EAAYt7B,QAAQ7D,WAClDtC,EAAWsC,GAI1B,OAAOtC,CACX,CAEA,SAAS8jC,EAAaznC,EAAS2D,GAC3B,IAAyC+jC,EAAUzhC,EAAKpJ,EAAO8qC,EAA3DC,EAAiB,GAAIC,EAAY,CAAC,EAEtC,IAAK5hC,KAAOtC,EACR+jC,EAAWzhC,EAAI+G,cACf26B,EAAgB7zB,IAAmD,GAArCqxB,EAAer7B,QAAQ49B,IAEhDhwC,EAAQsc,SAAW2zB,IAAmD,GAAlCvC,EAAYt7B,QAAQ49B,UAClD/jC,EAAWsC,IAElBpJ,EAAQ8G,EAAWsC,GAEf0hC,EACAC,EAAe9xC,KAAKmQ,EAAM,IAAMpJ,EAAQ,KAExCgrC,EAAU5hC,GAAOpJ,GAS7B,OAJI+qC,EAAejsC,SACfksC,EAAUxB,GAAauB,EAAe5oC,KAAK,MAGxC6oC,CACX,CAsGA,SAASd,EAAkB/mC,EAASiC,GAChC,GAAI6R,EAAY,CACZ,IAAIg0B,EAAY9nC,EAAQI,IAAIimC,GAC5B,GA5UG,QA4UCyB,EACA,MAAmB,SAAZ7lC,EAAsB,EAAI,EAGrC,IAAI4C,EAAQijC,EAAUjjC,MAAM,IAAIlC,OAAOV,EAAW,0BAC9C8lC,EAAW,EAmBf,OAjBIljC,EACAkjC,EAAWT,EAAaziC,EAAM,KAE9BA,EAAQijC,EAAUjjC,MAAMggC,IAAmB,CAAC,EAAG,EAAG,EAAG,EAAG,GACxD5iC,EAAWA,EAAS+K,cAEhB+3B,EAAiBrjC,KAAKO,GACtB8lC,EAAW7qC,WAAW2H,EAAM,GAAKA,EAAM,IACpB,cAAZ5C,EACP8lC,EAAW7qC,WAAW2H,EAAM,GAAKA,EAAM,IACpB,SAAZ5C,EACP8lC,EAAW7qC,WAAW2H,EAAM,IACT,UAAZ5C,IACP8lC,EAAW7qC,WAAW1F,KAAKwwC,MAAMnjC,EAAM,GAAIA,EAAM,OAIlDkjC,CACX,CACI,OAAO7qC,WAAW8C,EAAQI,IAAI6B,GAEtC,CAnPAnN,EAAMioB,YAAc,SAAS/c,EAAS8c,EAASxhB,EAASqG,GAsBpD,OArBImb,IACAA,EAAUA,EAAQ/d,MAAM,KAEpB8U,IACAvY,EAAUpE,EAAO,CACb+wC,UAAW,MACXxsB,SAAU,IACVysB,KAAM,YACP5sC,GAEH0E,EAAQI,IAAIgmC,EAAY9qC,EAAQ2sC,UAAY,IAAM3sC,EAAQmgB,SAAW,MAAQngB,EAAQ4sC,MACrF7a,YAAW,WACPrtB,EAAQI,IAAIgmC,EAAY,IAAIhmC,IAAIwlC,EACpC,GAAGtqC,EAAQmgB,WAGftkB,EAAK2lB,GAAS,SAAS/e,EAAKlB,GACxBmD,EAAQ+c,YAAYlgB,EAAO8E,EAC/B,KAGG3B,CACX,EAEAlL,EAAMstB,aAAe,SAAS1I,EAAOyuB,GACjC,IAAI5sB,EAAU,CAAC,EA8Bf,MA5BqB,iBAAV7B,EACPviB,EAAKuiB,EAAM3a,MAAM,MAAM,SAAShB,EAAKlB,GACjC,IAAIurC,GAAoBnD,EAAmBvjC,KAAK7E,GAI5CwrC,EAHWxrC,EAAMjG,QAAQouC,GAAkB,SAASngC,EAAOyjC,EAAIC,GAC3D,OAAOD,EAAK,IAAMC,EAAGv7B,aACzB,IACkBjO,MAAM,KACxBypC,EAAYH,EAAO,GACnBI,EAAa,CAAC,EAEdJ,EAAO1sC,OAAS,IAChB8sC,EAAWD,UAAaL,GAAUC,EAAmB/lB,EAAWmmB,GAAWh+B,QAAUg+B,GAGzFjtB,EAAQ8sB,EAAO,IAAMI,CACzB,IAEAtxC,EAAKuiB,GAAO,SAAS3b,GACjB,IAAIyqC,EAAYr0C,KAAKq0C,UAEjBA,GAAaL,IAAWlD,EAAmBvjC,KAAK3D,KAChD5J,KAAKq0C,UAAYnmB,EAAWmmB,GAAWh+B,SAG3C+Q,EAAQxd,GAAO5J,IACnB,IAGGonB,CACX,EAuDI1H,GACA3c,EAAOynB,EAAI,CACP+nB,WAAY,SAAS1mC,EAAS2D,EAAYrI,GACtC,IAAI8E,EAGAsoC,EAFAjP,EAAQ,EACRkP,EAAU3oC,EAAQuC,KAAK,SAAW,GAGtCjH,EAAUpE,EAAO,CACTukB,SAAU,IACVysB,KAAM,WACNxsB,SAAU,KACVusB,UAAW,OAEf3sC,GAGJ,IAAIstC,GAAuB,EAEvBC,EAAiB,WACZD,IACDA,GAAuB,EAEnBF,IACAja,aAAaia,GACbA,EAAY,MAGhB1oC,EACCgnB,WAAW+e,GACX5pB,UACA/b,IAAIgmC,EAAY,IAChBhmC,IAAIgmC,GAEL9qC,EAAQogB,SAAShd,KAAKsB,GAE9B,EAEA1E,EAAQmgB,SAAW3kB,EAAE6nB,IAAK7nB,EAAE6nB,GAAGmqB,OAAOxtC,EAAQmgB,WAAgCngB,EAAQmgB,SAEtFrb,EAAMqnC,EAAaznC,EAAS2D,GAE5B7M,EAAEiyC,MAAMJ,EAvFpB,SAAc7mB,GACV,IAAIknB,EAAM,GACV,IAAK,IAAIC,KAAgBnnB,EACrBknB,EAAIlzC,KAAKmzC,GAEb,OAAOD,CACX,CAiF6BhqB,CAAK5e,IAElBtJ,EAAEsM,eAAe,cACjBpD,EACKuC,KAAK,OAAQzL,EAAEoyC,WAAWP,IAC1BxoC,SAELH,EACKuC,KAAK,OAAQzL,EAAEqyC,OAAOR,IACtBxoC,SAGTH,EAAQI,IAAIgmC,EAAY9qC,EAAQ2sC,UAAY,IAAM3sC,EAAQmgB,SAAW,MAAQngB,EAAQ4sC,MAAM9nC,IAAIgmC,GAC/FpmC,EAAQI,IAAIA,GAAKA,IAAIimC,GAQjBxyB,EAAYS,QACZtU,EAAQlC,IAAI+V,EAAYS,MAAOu0B,GACN,IAArBvtC,EAAQmgB,WACRge,EAAQ,MAIhBiP,EAAYrb,WAAWwb,EAAgBvtC,EAAQmgB,SAAWge,GAC1Dz5B,EAAQuC,KAAKwjC,EAAU2C,GACvB1oC,EAAQuC,KAAK4jC,EAAmB0C,EACpC,EAEA/B,UAAW,SAAS9mC,EAASyc,EAAYC,GACrC,IAAImrB,EACAuB,EAAWppC,EAAQuC,KAAK,QACxB8mC,GAAmB3sB,GAAW0sB,EAC9BxtB,EAAmB5b,EAAQuC,KAAK4jC,GAcpC,OAZIkD,IACAxB,EAAY/yC,EAAM4O,kBAAkB1D,EAAQ,GAAIopC,IAGhDxtB,GACAA,IAGAytB,GACArpC,EAAQI,IAAIynC,GAGT7nC,EACEgnB,WAAW,QACXrK,KAAKF,EAClB,IAqCR,IAAI6sB,EAAYx0C,EAAMiH,MAAM7E,OAAO,CAC/BoF,KAAM,SAAS0D,EAAS1E,GACpB,IAAIc,EAAOjI,KAEXiI,EAAK4D,QAAUA,EACf5D,EAAKmf,QAAU,GACfnf,EAAKd,QAAUA,EACfc,EAAKmtC,QAAU,EACnB,EAEAC,IAAK,SAASjuB,GACV,IACI8sB,EACAtqC,EAAK0rC,EAOLjuC,EACAkuC,EACAC,EAXAvtC,EAAOjI,KAGPwH,EAAS4f,EAAQ5f,OACjBqE,EAAU5D,EAAK4D,QACf1E,EAAUc,EAAKd,QACfglC,EAAWxpC,EAAEypC,WACbt2B,EAAQ,CAAC,EACTnK,EAAM,CAAC,EAWX,IANA1D,EAAKmf,QAAUA,EAEf+kB,EAASS,KAAK3kC,EAAKsf,SAAS/d,KAAKvB,IAEjC4D,EAAQuC,KAAK,aAAa,GAErBxE,EAAM,EAAGA,EAAMpC,EAAQoC,IAYxB,KAXAsqC,EAAS9sB,EAAQxd,IAEV6rC,WAAWtuC,EAAQkP,SAC1B69B,EAAOhiB,WAAW/qB,GAElBc,EAAKytC,qBAAqBxB,EAAOkB,SAEjClB,EAAOyB,QAAQ7/B,EAAOnK,GAIjB2pC,EAAM,EAAGE,GAFdD,EAAWrB,EAAOqB,YAEsB/tC,OAAQ8tC,EAAME,EAAgBF,IAClEC,EAASD,GAAKhuB,SAASngB,EAAQmgB,UAAU+tB,MAKjD,IAAK,IAAIO,KAAczuC,EAAQigB,QAC3BrkB,EAAO4I,EAAKxE,EAAQigB,QAAQwuB,GAAYpmC,YAyB5C,IArBK3D,EAAQoB,GAAG,aACZlK,EAAO+S,EAAO,CAAEzI,QAASxB,EAAQuC,KAAK,eAAiB,UAGvDuR,IAAexY,EAAQ0uC,QACvBxuC,EAASwE,EAAQuC,KAAK,sBAGlB0H,EAAQ/S,EAAOsE,EAAQyO,IAI/BA,EAAQw9B,EAAaznC,EAASiK,GAE1B6J,IAAeD,IACf5J,EAAQu9B,EAAkBv9B,IAG9BjK,EAAQI,IAAI6J,GACJ7J,IAAIimC,GAEPtoC,EAAM,EAAGA,EAAMpC,EAAQoC,IACxBwd,EAAQxd,GAAKksC,QAUjB,OAPI3uC,EAAQgB,MACRhB,EAAQgB,OAGZ0D,EAAQuC,KAAK,kBAAmBzC,GAChC6e,EAAG9C,QAAQ7b,EAASF,EAAK5I,EAAO,CAAC,EAAGoE,EAAS,CAAEogB,SAAU4kB,EAAS4J,WAE3D5J,EAAStkB,SACpB,EAEAW,KAAM,WACF7lB,EAAE3C,KAAK6L,SAASwc,WAAU,GAAM,EACpC,EAEAqtB,qBAAsB,SAASN,GAM3B,IALA,IACI1sC,EADAmD,EAAU7L,KAAK6L,QAEftE,EAAI,EACJC,EAAS4tC,EAAQ5tC,OAEdD,EAAIC,EAAQD,IACfmB,EAAQ0sC,EAAQ7tC,GAEhBvH,KAAKo1C,QAAQzzC,KAAK+G,GAEbmD,EAAQuC,KAAK1F,IACdmD,EAAQuC,KAAK1F,EAAOmD,EAAQI,IAAIvD,GAG5C,EAEAstC,gBAAiB,WAGb,IAFA,IAAInqC,EAAU7L,KAAK6L,QAEVtE,EAAI,EAAGC,EAASxH,KAAKo1C,QAAQ5tC,OAAQD,EAAIC,EAAQD,IAAM,CAC5D,IAAImB,EAAQ1I,KAAKo1C,QAAQ7tC,GACzBsE,EAAQI,IAAIvD,EAAOmD,EAAQuC,KAAK1F,GACpC,CACJ,EAEA6e,SAAU,WACN,IAAItf,EAAOjI,KACP4J,EAAM,EACNiC,EAAU5D,EAAK4D,QACf1E,EAAUc,EAAKd,QACfigB,EAAUnf,EAAKmf,QACf5f,EAAS4f,EAAQ5f,OAgBrB,IAdAqE,EACKgnB,WAAW,aACX7K,UAED7gB,EAAQuG,MACR7B,EAAQuC,KAAK,aAAcvC,EAAQI,IAAI,YAAYyB,OAGvD1N,KAAKg2C,kBAEDxF,IAAY7wB,GACZuZ,WAAWl5B,KAAKg2C,gBAAgBxsC,KAAKxJ,MAAO,GAGzC4J,EAAMpC,EAAQoC,IACjBwd,EAAQxd,GAAK4d,WAGbrgB,EAAQsgB,kBACRtgB,EAAQsgB,iBAAiB5b,EAEjC,IAGJ2e,EAAG3C,QAAU,SAAShc,EAAS1E,GAC3B,IACI8uC,EAGA/B,EAJA9sB,EAAU,GAEV8uB,EAAY,IAAIf,EAAUtpC,EAAS1E,GACnCgvC,EAAgBx1C,EAAMstB,aAAa9mB,EAAQigB,SAK/C,IAAK,IAAIwuB,KAFTzuC,EAAQigB,QAAU+uB,EAEKA,GACnBF,EAAczrB,EAAG4rB,EAAWR,OAGxB1B,EAAS,IAAI+B,EAAYpqC,EAASsqC,EAAcP,GAAYvB,WAC5DjtB,EAAQzlB,KAAKuyC,IAIjB9sB,EAAQ,GACR8uB,EAAUb,IAAIjuB,IAETvb,EAAQoB,GAAG,aACZpB,EAAQI,IAAI,CAAEoB,QAASxB,EAAQuC,KAAK,eAAiB,UAAWnC,IAAI,WAGpE9E,EAAQgB,MACRhB,EAAQgB,OAGZ0D,EAAQmc,UACRkuB,EAAU3uB,WAElB,EAEAxkB,EAAOynB,EAAI,CACP9C,QAAS,SAASiR,EAAUnpB,EAAYrI,GACpC,IAAIkvC,GAAuC,IAAvBlvC,EAAQorC,kBACrBprC,EAAQorC,WAEX7yB,GAAe,eAAgB8K,GAAM6rB,EACrC7rB,EAAG+nB,WAAW5Z,EAAUnpB,EAAYrI,GAEhCwY,EACAgZ,EAASjR,QAAQ2rB,EAAkB7jC,GAAa,CAAEoY,OAAO,EAAOna,MAAM,EAAOC,MAAM,EAAO4Z,SAAUngB,EAAQmgB,SAAUC,SAAUpgB,EAAQogB,WAExIoR,EAAS31B,MAAK,WACV,IAAI6I,EAAUlJ,EAAE3C,MACZs2C,EAAW,CAAC,EAEhBtzC,EAAKguC,GAAgB,SAASpnC,EAAKlB,GAC/B,IAAI+7B,EACAwG,EAAez7B,EAAaA,EAAW9G,GAAS,IAAM,KAE1D,GAAIuiC,EAAc,CACd,IAAIsL,EAAS/mC,EAEb,GAAI9G,KAASonC,GAAmBtgC,EAAW9G,KAAW9F,EAClD6hC,EAASwG,EAAav6B,MAAMigC,GACxBhxB,GACA5c,EAAOwzC,EAAQ,CAAExG,OAAQtL,EAAO,UAGpC,GAAI/7B,KAASynC,GAAuB3gC,EAAW9G,KAAW9F,EAAa,CACnE,IAAI0K,EAAWzB,EAAQI,IAAI8lC,GACvByE,EAAuB,YAAZlpC,GAAsC,SAAZA,EAEpCzB,EAAQuC,KAAK0jC,KACV0E,EACA3qC,EAAQuC,KAAK0jC,EAAW,CACpB5sB,IAAKkuB,EAASvnC,EAAS,QAAU,EACjC2gB,KAAM4mB,EAASvnC,EAAS,SAAW,EACnC6gB,OAAQ0mB,EAASvnC,EAAS,UAC1B4gB,MAAO2mB,EAASvnC,EAAS,WAG7BA,EAAQuC,KAAK0jC,EAAW,CACpB5sB,IAAKkuB,EAASvnC,EAAS,cAAgB,EACvC2gB,KAAM4mB,EAASvnC,EAAS,eAAiB,KAKrD,IAAI4qC,EAAmB5qC,EAAQuC,KAAK0jC,GAGpC,GADArN,EAASwG,EAAav6B,MAAMigC,GAChB,CAER,IAAI+F,EAAKhuC,GAASopC,EAAY,IAAM,GAASrN,EAAO,GAChDkS,EAAKjuC,GAASopC,EAAY,KAAOrN,EAAO,IAAMA,EAAO,GAErD+R,GACK1tC,MAAM2tC,EAAiBhqB,OAGnB3jB,MAAM4tC,IAAO3zC,EAAOwzC,EAAQ,CAAE/pB,KAAMiqB,EAAiBjqB,KAAOkqB,IAF5D5tC,MAAM4tC,IAAO3zC,EAAOwzC,EAAQ,CAAE9pB,MAAOgqB,EAAiBhqB,MAAQiqB,IAKlE5tC,MAAM2tC,EAAiB/pB,QAGnB5jB,MAAM6tC,IAAO5zC,EAAOwzC,EAAQ,CAAErxB,IAAKuxB,EAAiBvxB,IAAMyxB,IAF1D7tC,MAAM6tC,IAAO5zC,EAAOwzC,EAAQ,CAAE7pB,OAAQ+pB,EAAiB/pB,OAASiqB,MAKpE7tC,MAAM4tC,IAAO3zC,EAAOwzC,EAAQ,CAAEK,WAAYH,EAAiBjqB,KAAOkqB,IAClE5tC,MAAM6tC,IAAO5zC,EAAOwzC,EAAQ,CAAEM,UAAWJ,EAAiBvxB,IAAMyxB,IAE7E,CACJ,EAGCh3B,GAAuB,SAATjX,GAAoBA,KAAS6tC,UACrCA,EAAO7tC,GAGd6tC,GACAxzC,EAAOuzC,EAAUC,EAEzB,CACJ,IAEIzzB,EAAQoB,aACDoyB,EAASvG,MAGpBlkC,EAAQ6b,QAAQ4uB,EAAU,CAAE1uB,OAAO,EAAOna,MAAM,EAAOC,MAAM,EAAO4Z,SAAUngB,EAAQmgB,SAAUC,SAAUpgB,EAAQogB,UACtH,GAGZ,IAGJiD,EAAGpC,gBAAkBoC,EAAG3C,QAExB,IAAIivB,EAASn2C,EAAMiH,MAAM7E,OAAO,CAC5BoF,KAAM,SAAS0D,EAASwoC,GACpB,IAAIpsC,EAAOjI,KACXiI,EAAK4D,QAAUA,EACf5D,EAAK8uC,WAAa1C,EAClBpsC,EAAKd,QAAU,CAAC,EAChBc,EAAK+uC,mBAAqB,GAErB/uC,EAAKmtC,UACNntC,EAAKmtC,QAAU,GAEvB,EAGA/+B,QAAS,WAEL,OADArW,KAAKi3C,UAAW,EACTj3C,KAAKq1C,KAChB,EAEA6B,KAAM,WAEF,OADAl3C,KAAKi3C,UAAW,EACTj3C,KAAKq1C,KAChB,EAEA7nC,IAAK,SAAS2pC,GAEV,OADAn3C,KAAKg3C,mBAAmBr1C,KAAKw1C,GACtBn3C,IACX,EAEAq0C,UAAW,SAAS3rC,GAEhB,OADA1I,KAAK+2C,WAAaruC,EACX1I,IACX,EAEAsnB,SAAU,SAASA,GAEf,OADAtnB,KAAKo3C,UAAY9vB,EACVtnB,IACX,EAEAq3C,aAAc,WACV,IAAIpvC,EAAOjI,KACPk2C,EAAY,IAAIf,EAAUltC,EAAK4D,QAAS,CAAEwK,QAASpO,EAAKgvC,SAAU3vB,SAAUrf,EAAKmvC,YACjFhwB,EAAUnf,EAAK+uC,mBAAmB54B,OAAO,CAAEnW,IAE/C,OAAOiuC,EAAUb,IAAIjuB,EACzB,EAEAiuB,IAAK,WACD,GAAIr1C,KAAKg3C,oBAAsBh3C,KAAKg3C,mBAAmB,GACnD,OAAOh3C,KAAKq3C,eAGhB,IAKI3uC,EAIArB,EATAY,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACfjC,EAAM,EACNwrC,EAAUntC,EAAKmtC,QACf5tC,EAAS4tC,EAAQ5tC,OAEjB2kC,EAAWxpC,EAAEypC,WACbt2B,EAAQ,CAAC,EACTnK,EAAM,CAAC,EAEP4pC,EAAWttC,EAAKstC,WAChBC,EAAiBD,EAAS/tC,OAM9B,IAJA2kC,EAASS,KAAK3kC,EAAKqvC,UAAU9tC,KAAKvB,IAElC4D,EAAQuC,KAAK,aAAa,GAErBxE,EAAM,EAAGA,EAAMpC,EAAQoC,IACxBlB,EAAQ0sC,EAAQxrC,GAEXiC,EAAQuC,KAAK1F,IACdmD,EAAQuC,KAAK1F,EAAOmD,EAAQI,IAAIvD,IAIxC,IAAKkB,EAAM,EAAGA,EAAM4rC,EAAgB5rC,IAChC2rC,EAAS3rC,GAAK0d,SAASrf,EAAKmvC,WAAW/B,MA8B3C,OA3BAptC,EAAK0tC,QAAQ7/B,EAAOnK,GAEfE,EAAQoB,GAAG,aACZlK,EAAO+S,EAAO,CAAEzI,QAASxB,EAAQuC,KAAK,eAAiB,UAGvDuR,IACAtY,EAASwE,EAAQuC,KAAK,sBAGlB0H,EAAQ/S,EAAOsE,EAAQyO,IAI/BA,EAAQw9B,EAAaznC,EAASiK,GAE1B6J,IAAeD,IACf5J,EAAQu9B,EAAkBv9B,IAG9BjK,EAAQI,IAAI6J,GAAO7J,IAAIimC,GAEvBjqC,EAAK6tC,QAELjqC,EAAQuC,KAAK,kBAAmBzC,GAChC6e,EAAG9C,QAAQ7b,EAASF,EAAK,CAAE2b,SAAUrf,EAAKmvC,UAAW7vB,SAAU4kB,EAAS4J,UAEjE5J,EAAStkB,SACpB,EAEAW,KAAM,WACF,IAAI5e,EAAM,EACN2rC,EAAWv1C,KAAKu1C,WAChBC,EAAiBD,EAAS/tC,OAE9B,IAAKoC,EAAM,EAAGA,EAAM4rC,EAAgB5rC,IAChC2rC,EAAS3rC,GAAK4e,OAIlB,OADA7lB,EAAE3C,KAAK6L,SAASwc,WAAU,GAAM,GACzBroB,IACX,EAEAg2C,gBAAiB,WAGb,IAFA,IAAInqC,EAAU7L,KAAK6L,QAEVtE,EAAI,EAAGC,EAASxH,KAAKo1C,QAAQ5tC,OAAQD,EAAIC,EAAQD,IAAM,CAC5D,IAAImB,EAAQ1I,KAAKo1C,QAAQ7tC,GACzBsE,EAAQI,IAAIvD,EAAOmD,EAAQuC,KAAK1F,GACpC,CACJ,EAEA4uC,UAAW,WACP,IAAIrvC,EAAOjI,KACP6L,EAAU5D,EAAK4D,QAEnBA,EACKgnB,WAAW,aACX7K,UAEL/f,EAAK+tC,kBAED/tC,EAAKsvC,cACL1rC,EAAQuC,KAAK,aAAcvC,EAAQI,IAAI,YAAYyB,OAGnD8iC,IAAY7wB,GACZuZ,WAAWjxB,EAAK+tC,gBAAgBxsC,KAAKvB,GAAO,GAGhDA,EAAKuf,UACT,EAGA0K,WAAY,SAAS/qB,GACjBpE,GAAO,EAAM/C,KAAKmH,QAASA,EAC/B,EAEAouC,SAAU,WACN,MAAO,EACX,EAEAgC,WAAY50C,EAAEQ,KAEd2yC,MAAOnzC,EAAEQ,KACTwyC,QAAShzC,EAAEQ,KACXqkB,SAAU7kB,EAAEQ,KACZ+qB,WAAY,GAEZunB,WAAY,SAASp/B,GAEjB,OADArW,KAAKi3C,SAAW5gC,EACTrW,IACX,IAGJ,SAASo2C,EAAWoB,GAChB,OAAOA,EAAK1sC,OAAO,GAAGwE,cAAgBkoC,EAAKxsC,UAAU,EACzD,CAEA,SAASysC,EAAar1C,EAAMs1C,GACxB,IAAIzB,EAAca,EAAO/zC,OAAO20C,GAC5BxpB,EAAa+nB,EAAY5tC,UAAU6lB,WAEvC1D,EAAG4rB,EAAWh0C,IAAS6zC,EAEvBzrB,EAAGzC,QAAQ1f,UAAUjG,GAAQ,SAASiyC,EAAWsD,EAAMC,EAAMC,GACzD,OAAO,IAAI5B,EAAYj2C,KAAK6L,QAASwoC,EAAWsD,EAAMC,EAAMC,EAChE,EAEA70C,EAAKkrB,GAAY,SAAStkB,EAAKkuC,GAC3BttB,EAAGzC,QAAQ1f,UAAUjG,EAAOg0C,EAAW0B,IAAiB,SAASH,EAAMC,EAAMC,GACzE,OAAO,IAAI5B,EAAYj2C,KAAK6L,QAASisC,EAAcH,EAAMC,EAAMC,EACnE,CACJ,GACJ,CAEA,IAAIE,EAAkB,CAAC,OAAQ,QAAS,KAAM,QAC1CC,EAAS,CAAC,KAAM,OAmEpB,SAASC,GAAmB71C,EAAM0L,EAAUoqC,EAAcC,GACtDV,EAAar1C,EAAM,CACf8rB,WAAY8pB,EAEZI,WAAY,SAAS1vC,GAEjB,OADA1I,KAAKq4C,YAAc3vC,EACZ1I,IACX,EAEAs4C,SAAU,SAAS5vC,GAEf,OADA1I,KAAKu4C,UAAY7vC,EACV1I,IACX,EAEAu3C,WAAY,WACT,OAAOv3C,KAAKw4C,WACf,EAEA7C,QAAS,SAAS7/B,EAAOnK,GACrB,IACIysC,EACAE,EACAhqB,EAA0B,QAApBtuB,KAAK+2C,WACX0B,EAJOz4C,KAIe6L,QAAQuC,KAAKN,GAInCsqC,IAHwBtvC,MAAM2vC,IAAmBA,GAAkBP,GAGtDO,OACsB,IAArBz4C,KAAKq4C,YACNr4C,KAAKq4C,YAEL/pB,EAAM4pB,EAAeC,EAIlCG,OAD0B,IAAnBt4C,KAAKu4C,UACDv4C,KAAKu4C,UAELjqB,EAAM6pB,EAAaD,EAG9Bl4C,KAAKi3C,UACLnhC,EAAMhI,GAAYwqC,EAClB3sC,EAAImC,GAAYsqC,IAEhBtiC,EAAMhI,GAAYsqC,EAClBzsC,EAAImC,GAAYwqC,GA1BTt4C,KA6BNw4C,YAAc7sC,EAAImC,KAAcqqC,CACzC,GAER,CApHAV,EAAa,UAAW,CACpBvpB,WAAY6pB,EAEZW,QAAS,SAAShwC,GAEd,OADA1I,KAAKmH,QAAQuxC,QAAUhwC,EAChB1I,IACX,EAEA21C,QAAS,SAAS7/B,EAAOnK,GACrB,IACIgtC,EADA1wC,EAAOjI,KAEP6L,EAAU5D,EAAK4D,QACfM,EAAaxL,EAAM8L,YACnBL,EAAczL,EAAM+L,aACpB2nC,EAAYnmB,EAAWjmB,EAAK8uC,YAE5BqB,GADU/D,EAAU5B,UAAY4B,EAAU7B,SAAWpmC,EAAYP,GAAWM,EAAWN,KAChE5D,EAAKd,SAAWc,EAAKd,QAAQuxC,SAAW,GAAKpH,EAGpErpC,EAAKgvC,WACL0B,EAAM7iC,EACNA,EAAQnK,EACRA,EAAMgtC,GAGNh5B,GACA7J,EAAMu+B,EAAU9B,YAAc6F,EAC9BzsC,EAAI0oC,EAAU9B,YAVH,QAYXz8B,EAAMu+B,EAAUvmC,UAAYsqC,EAC5BzsC,EAAI0oC,EAAUvmC,UAbH,MAenB,IAGJ2pC,EAAa,OAAQ,CACjBvpB,WAAY6pB,EAEZ5vC,KAAM,SAAS0D,EAASwoC,EAAWuE,GAC/B9B,EAAOzuC,UAAUF,KAAKoC,KAAKvK,KAAM6L,EAASwoC,GAC1Cr0C,KAAKmH,QAAU,CAAEyxC,SAAUA,EAC/B,EAEAC,gBAAiB,SAASnwC,GAEtB,OADA1I,KAAKmH,QAAQ0xC,gBAAkBnwC,EACxB1I,IACX,EAEAu1C,SAAU,WACN,IAAIttC,EAAOjI,KACPqW,EAAUpO,EAAKgvC,SACf2B,EAAW3wC,EAAKd,QAAQyxC,SACxBF,EAAUzwC,EAAKd,QAAQ0xC,iBAAmB,EAC1CtZ,EAAMt3B,EAAK8uC,WAEXxB,EAAW,CAAE50C,EAAM6pB,GAAGviB,EAAK4D,SAASitC,QAAQvZ,GAAKkW,WAAWp/B,IAMhE,OAJIuiC,GACArD,EAAS5zC,KAAMhB,EAAM6pB,GAAGouB,GAAUE,QAAQ5qB,EAAWqR,GAAKlpB,SAASqiC,QAAQA,GAASjD,YAAYp/B,IAG7Fk/B,CACX,IAwDJ0C,GAAmB,OAAQ,UAAW,EAAG,GACzCA,GAAmB,OAAQ,QAAS,EAAG,KAEvCR,EAAa,cAAe,CACxB9B,QAAS,SAAS7/B,EAAOnK,GACrB,IAKIotC,EALA9wC,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACf1E,EAAUc,EAAKd,QACf6xC,EAASntC,EAAQuC,KAAKujC,GACtB7zB,EAAS3W,EAAQ2W,OAEjBzH,EAAUpO,EAAKgvC,SAEd5gC,GAAsB,OAAX2iC,GACZntC,EAAQuC,KAAKujC,EAAQ5oC,WAAW8C,EAAQI,IAAI,UAAY9E,EAAQg+B,QAGpE4T,EAAUltC,EAAQuC,KAAKujC,IAAW,EAClChmC,EAAI,UAAYxE,EAAQg+B,MAAS9uB,EAA4B0iC,EAAlBA,EAASj7B,CACxD,IAGJ25B,EAAa,UAAW,CACpB9B,QAAS,SAAS7/B,EAAOnK,GACrB,IAAI1D,EAAOjI,KACP6L,EAAU5D,EAAK4D,QAEfiS,EADU7V,EAAKd,QACE2W,OAAOlT,MAAM,KAC9ByL,EAAUpO,EAAKgvC,SAEft3B,GACAhU,EAAI0kC,WAAch6B,EAAsB,EAAZyH,EAAO,GACnCnS,EAAI2kC,WAAcj6B,EAAsB,EAAZyH,EAAO,KAEnCnS,EAAI6gB,KAAQnW,EAAsB,EAAZyH,EAAO,GAC7BnS,EAAIuZ,IAAO7O,EAAsB,EAAZyH,EAAO,IAEhCjS,EAAQI,IAAI,OAChB,IAGJwrC,EAAa,SAAU,CACnBvpB,WAAY,CAAC,aAAc,YAE3BknB,QAAS,CAAEvD,GAEX8D,QAAS,SAAS7/B,EAAOnK,GACrB,IAAI1D,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACf1E,EAAUc,EAAKd,QACfkP,EAAUpO,EAAKgvC,SACfnpC,EAA+B,aAApB7F,EAAK8uC,WAA4BtF,EAASD,EACrDyH,EAAYptC,EAAQ,GAAGsB,MAAMW,GAC7BorC,EAAYrtC,EAAQuC,KAAKN,GACzBtG,EAASuB,WAAWmwC,GAAaD,GACjCE,EAAa7iC,EAAMzK,EAAQI,IAAI6B,EAAUyjC,GAAMzjC,MAEnDgI,EAAMwX,SAAWokB,EAEjBlqC,EAAUL,GAAWA,EAAQ0uC,MAASsD,GAAc3xC,EAASA,GAAU2xC,EAEvExtC,EAAImC,IAAauI,EAAU,EAAI7O,GAAU8pC,EACzCx7B,EAAMhI,IAAauI,EAAU7O,EAAS,GAAK8pC,EAEvC4H,IAAct2C,GACdiJ,EAAQuC,KAAKN,EAAUmrC,EAE/B,EAEA1B,WAAY,WACT,OAAOv3C,KAAKi3C,QACf,EAEAzvB,SAAU,WACN,IACI3b,EADO7L,KACQ6L,QACfiC,EAA+B,aAFxB9N,KAES+2C,WAA4BtF,EAASD,EACrDhqC,EAASqE,EAAQuC,KAAKN,GAEtBtG,GAAU+pC,GAphCV,KAohCkB/pC,GAClB0xB,YAAW,WAAartB,EAAQI,IAAI6B,EAAUyjC,GAAMtlC,IAAI6B,EAAW,GAAG,EAE9E,IAGJ,IAAIsrC,GAAuB,CAAE9rC,SAAU,WAAYspC,WAAY,EAAGC,UAAW,EAAG9G,MAAO,GAOvF0H,EAAa,WAAY,CACrBtvC,KAAM,SAAS0D,EAASxE,GACpBrH,KAAK6L,QAAUA,EACf7L,KAAKmH,QAAU,CAAEE,OAAQA,GACzBrH,KAAKo1C,QAAU,EACnB,EAEAU,MAAO,WACH91C,KAAK6L,QAAQK,SAASyD,SAASqP,KACnC,EAEA22B,QAAS,SAAS7/B,EAAOnK,GACrB,IAAI1D,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACfwtC,EAAW7uB,EAAG8uB,IAAIztC,GAClB0tC,EAAW/uB,EAAG8uB,IAAIrxC,EAAKd,QAAQE,QAC/BmyC,EAAe5G,EAAkB/mC,EAAS,SAC1CkkC,EAAQvlB,EAAGivB,UAAUF,EAAUF,GAC/BK,EAAkBlvB,EAAGkvB,gBAAgBH,EAAUF,GAEnDt2C,EAAO+S,EAAOsjC,IACdztC,EAAIokC,MAAQ,EAEZlkC,EAAQI,IAAIimC,EAAW,YAAYjmC,IAAIimC,GACvCrmC,EAAQI,IAAIimC,EAAW,SAAWsH,EAAe,KAEjD1jC,EAAMoP,IAAMm0B,EAASn0B,IACrBpP,EAAM0W,KAAO6sB,EAAS7sB,KACtB1W,EAAM4jC,gBAAkBA,EAAgBt0C,EAAIksC,EAAK,IAAMoI,EAAgBv1C,EAAImtC,EAEvErpC,EAAKgvC,SACLnhC,EAAMi6B,MAAQA,EAEdpkC,EAAIokC,MAAQA,CAEpB,IAIJ,IAAI4J,GAAQ,CACRz0B,IAAK,6BACLwH,OAAQ,6BACRF,KAAM,6BACNC,MAAO,8BAGPmtB,GAAY,CACZ10B,IAAK,CAAEpP,MAAO,gBAAiBnK,IAAK,mBACpC+gB,OAAQ,CAAE5W,MAAO,mBAAoBnK,IAAK,iBAC1C6gB,KAAM,CAAE1W,MAAO,gBAAiBnK,IAAK,oBACrC8gB,MAAO,CAAE3W,MAAO,kBAAmBnK,IAAK,kBAG5C,SAASkuC,GAAWpjB,EAAW4d,GAC3B,IACIrkC,EAAQymB,EADG91B,EAAMutB,WAAWmmB,GAAW7B,SACVf,EAASD,KAAW,EAAK,KAE1D,OAAOmI,GAAMtF,GAAW5xC,QAAQ,QAASuN,EAC7C,CAEAynC,EAAa,cAAe,CACxBvpB,WAAY6pB,EAEZ5vC,KAAM,SAAS0D,EAASwoC,EAAW5d,GAC/BqgB,EAAOzuC,UAAUF,KAAKoC,KAAKvK,KAAM6L,EAASwoC,GAC1Cr0C,KAAK85C,WAAarjB,CACtB,EAEAkf,QAAS,SAAS7/B,EAAOnK,GACrB,IAAI1D,EAAOjI,KACPqW,EAAUpO,EAAKgvC,SACf5C,EAAYh+B,EAAU6X,EAAWjmB,EAAK8uC,YAAY1gC,QAAUpO,EAAK8uC,WACjEgD,EAAWH,GAAUvF,GAEzBv+B,EAAMkkC,OAAS,EAEX/xC,EAAKgyC,cACNnkC,EAAMokC,KAAOL,GAAW5xC,EAAK6xC,WAAYn5C,EAAMutB,WAAWmmB,GAAWh+B,UAGxEP,EAAMq8B,GAAYT,EAElB/lC,EAAIumC,GAAaI,GAAyBj8B,EAAU0jC,EAASjkC,MAAQikC,EAASpuC,KAC9EmK,EAAMo8B,GAAaI,GAAyBj8B,EAAU0jC,EAASpuC,IAAMouC,EAASjkC,MAClF,EAEAggC,MAAO,WACH91C,KAAK85C,WAAWK,OAAOn6C,KAAK6L,QAChC,EAEAuuC,KAAM,SAAS1xC,GAEX,OADA1I,KAAKq6C,MAAQ3xC,EACN1I,IACX,EAEAu3C,WAAY,WACR,IACIlhC,EADOrW,KACQi3C,SACfmD,EAFOp6C,KAEKq6C,MAEhB,OAAQhkC,IAAY+jC,IAAW/jC,GAAW+jC,CAC9C,EAEAP,WAAY,SAASnxC,GAEjB,OADA1I,KAAKi6C,YAAcvxC,EACZ1I,IACX,EAEAs6C,UAAW,WAEP,OADAt6C,KAAK6L,QAAQwZ,SAAS,aACfrlB,IACX,IAGJy3C,EAAa,aAAc,CACvBvpB,WAAY6pB,EAEZ5vC,KAAM,SAAS0D,EAASwoC,EAAW5d,GAC/BqgB,EAAOzuC,UAAUF,KAAKoC,KAAKvK,KAAM6L,EAASwoC,GAC1Cr0C,KAAK85C,WAAarjB,CACtB,EAEA2e,QAAS,CAAC,QAEVO,QAAS,SAAS7/B,EAAOnK,GACrB,IAAI1D,EAAOjI,KACPq0C,EAAYpsC,EAAKgvC,SAAW/oB,EAAWjmB,EAAK8uC,YAAY1gC,QAAUpO,EAAK8uC,WAE3EjhC,EAAMokC,KAAOL,GAAW5xC,EAAK6xC,WAAYzF,GACzCv+B,EAAMihB,QAAU,KAChBprB,EAAIorB,QAAU,CAClB,EAEAwgB,WAAY,WACR,IACIlhC,EADOrW,KACQi3C,SACfmD,EAFOp6C,KAEKq6C,MAEhB,OAAQhkC,IAAY+jC,IAAW/jC,GAAW+jC,CAC9C,EAEAA,KAAM,SAAS1xC,GAEX,OADA1I,KAAKq6C,MAAQ3xC,EACN1I,IACX,IAGJy3C,EAAa,WAAY,CACrBvpB,WAAY,CAAC,aAAc,YAE3B/lB,KAAM,SAAS0D,EAASwoC,EAAW+F,EAAMG,GACrCzD,EAAOzuC,UAAUF,KAAKoC,KAAKvK,KAAM6L,EAASwoC,GAC1Cr0C,KAAKmH,QAAU,CAAC,EAChBnH,KAAKmH,QAAQizC,KAAOA,EACpBp6C,KAAKmH,QAAQozC,KAAOA,CACxB,EAEAhF,SAAU,WACN,IAKIiF,EALAvyC,EAAOjI,KACPmH,EAAUc,EAAKd,QACfktC,EAAgC,eAApBpsC,EAAK8uC,WAA8B,OAAS,MACxD0D,EAAmB95C,EAAMutB,WAAWmmB,GAAWh+B,QAC/CA,EAAUpO,EAAKgvC,SAEfyD,EAAYvzC,EAAQizC,KAAKhzC,OAAM,GAAM6qB,WAAW,MAChD0oB,EAAYxzC,EAAQozC,KAAKnzC,OAAM,GAAM6qB,WAAW,MAChDpmB,EAAU5D,EAAK4D,QAQnB,OANIwK,IACAmkC,EAAOnG,EACPA,EAAYoG,EACZA,EAAmBD,GAGhB,CACH75C,EAAM6pB,GAAGrjB,EAAQizC,MAAMQ,WAAWvG,EAAWxoC,GAASuuC,MAAK,GAAM3E,WAAWp/B,GAC5E1V,EAAM6pB,GAAGrjB,EAAQozC,MAAMK,WAAWH,EAAkB5uC,GAAS4pC,WAAWp/B,GACxE1V,EAAM6pB,GAAGkwB,GAAWG,YAAYxG,EAAWxoC,GAASuuC,MAAK,GAAMP,YAAW,GAAMS,YAAY7E,WAAWp/B,GACvG1V,EAAM6pB,GAAGmwB,GAAWE,YAAYJ,EAAkB5uC,GAASguC,YAAW,GAAMS,YAAY7E,WAAWp/B,GAE3G,EAEAs/B,QAAS,SAAS7/B,EAAOnK,GACrBmK,EAAMs8B,GAAeC,EACrBv8B,EAAMglC,eAAiB,cAEvBhlC,EAAMihB,QAAU,KAChBprB,EAAIorB,QAAU,CAClB,EAEAvP,SAAU,WACNxnB,KAAK6L,QAAQsqB,KAAK,cAAc9pB,QACpC,IAGJorC,EAAa,OAAQ,CACjBvpB,WAAY,CAAC,aAAc,YAE3B/lB,KAAM,SAAS0D,EAASwoC,EAAW+F,EAAMG,GACrCzD,EAAOzuC,UAAUF,KAAKoC,KAAKvK,KAAM6L,EAASwoC,GAC1Cr0C,KAAKmH,QAAU,CAAC,EAChBnH,KAAKmH,QAAQizC,KAAOA,EACpBp6C,KAAKmH,QAAQozC,KAAOA,CACxB,EAEAhF,SAAU,WACN,IAKIiF,EALAvyC,EAAOjI,KACPmH,EAAUc,EAAKd,QACfktC,EAAgC,eAApBpsC,EAAK8uC,WAA8B,OAAS,MACxD0D,EAAmB95C,EAAMutB,WAAWmmB,GAAWh+B,QAC/CA,EAAUpO,EAAKgvC,SAEfprC,EAAU5D,EAAK4D,QAQnB,OANIwK,IACAmkC,EAAOnG,EACPA,EAAYoG,EACZA,EAAmBD,GAGhB,CACH75C,EAAM6pB,GAAGrjB,EAAQizC,MAAMS,YAAYxG,EAAWxoC,GAASuuC,MAAK,GAAM3E,WAAWp/B,GAC7E1V,EAAM6pB,GAAGrjB,EAAQozC,MAAMM,YAAYJ,EAAkB5uC,GAAS4pC,WAAWp/B,GAEjF,EAEAs/B,QAAS,SAAS7/B,GACdA,EAAMs8B,GAAeC,EACrBv8B,EAAMglC,eAAiB,aAC3B,IAGJ,IAAIC,IAAoBx3C,EAAQggB,SAASnC,QAGzCq2B,EAAa,UAAW,CACpBuD,QAASr4C,EAAEQ,KACX83C,OAAQt4C,EAAEQ,KACVgF,KAAM,SAAS0D,EAAS+sC,EAAUsC,GAC9BpE,EAAOzuC,UAAUF,KAAKoC,KAAKvK,KAAM6L,GACjC7L,KAAKm7C,UAAYx4C,EAAEi2C,GACnB54C,KAAKo7C,iBAAmBF,CAC5B,EAEA5zB,SAAU,WACN,MAAM,IAAItW,MAAM,gIACpB,EAEAqqC,iBAAkB,SAASzxB,GAEvB,OADA5pB,KAAKg7C,QAAUpxB,EACR5pB,IACX,EAEAs7C,gBAAiB,SAAS1xB,GAEtB,OADA5pB,KAAKi7C,OAASrxB,EACP5pB,IACX,EAEAu7C,MAAO,WACH,OAAO54C,IAAI6K,IAAIxN,KAAKw7C,UAAUhuC,IAAIxN,KAAKm7C,UAC3C,EAEAM,gBAAiB,WACb,IAAIpH,EAAYr0C,KAAK+2C,WACjB2E,EAAiB,wBAA0B17C,KAAKo7C,iBAUpD,OARI/G,IACAqH,GAAkB,SAAWrH,GAG7Br0C,KAAKi3C,WACLyE,GAAkB,iBAGfA,CACX,EAEAn0B,SAAU,SAAS5iB,GACf,MAAK3E,KAAKmsC,UAAaxnC,GAAKhC,EAAEgC,EAAE0C,QAAQ4F,GA7CT,iDA6C/B,CAIA,IAAIwpB,EAAYz2B,KAAKy2B,UAErBA,EACK1J,YAAY,YACZA,YAAY/sB,KAAKy7C,mBACjBriB,IAAI1Z,EAAYS,MAAOngB,KAAK27C,eAEjC37C,KAAKm7C,UAAUztC,OAAOqf,YAAY,gBAClC/sB,KAAK6L,QAAQkhB,YAAY,aAErBguB,IACAtkB,EAAUxqB,IAAI4lC,EAAU,IAGvB7xC,KAAK47C,YACN57C,KAAKu7C,QAAQtvC,IAAI8lC,EAAU,IAG/B/xC,KAAKmsC,SAAS4J,iBACP/1C,KAAKmsC,QArBZ,CAsBJ,EAEAkJ,IAAK,WACD,GAAIr1C,KAAKg3C,oBAAsBh3C,KAAKg3C,mBAAmB,GACnD,OAAOh3C,KAAKq3C,eAGhB,IAAIpvC,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACf+sC,EAAW3wC,EAAKkzC,UAChB1kB,EAAY5qB,EAAQ0sB,UAAUhJ,OAAOqpB,EAASrgB,WAAWruB,QACzD2xC,EAAO5zC,EAAKszC,QACZpP,EAAWxpC,EAAEypC,WACbqK,EAAmB5qC,EAAQI,IAAI8lC,GA0CnC,OAtCKtb,EAAUjvB,SACXivB,EAAY5qB,EAAQc,UAGxB3M,KAAKy2B,UAAYA,EACjBz2B,KAAKmsC,SAAWA,EAChBnsC,KAAK47C,WAAiC,YAApBnF,EAEbz2C,KAAK47C,YACNC,EAAK5vC,IAAI8lC,EAAU,YAGnBgJ,KACmBtkB,EAAUxqB,IAAI4lC,GACjCpb,EAAUxqB,IAAI4lC,EAAU,WAGvBnyB,GAGD7T,EAAQwZ,SAAS,eAEjBoR,EAAUpR,SAASrlB,KAAKy7C,mBAExBz7C,KAAK27C,cAAgB37C,KAAKunB,SAAS/d,KAAKxJ,MACxCy2B,EAAU5M,GAAGnK,EAAYS,MAAOngB,KAAK27C,eAErCh7C,EAAMojC,gBAAe,WACjBl4B,EAAQkhB,YAAY,eAAe1H,SAAS,aAC5CuzB,EAAS3sC,IAAI,UAAW,IAAIoZ,SAAS,gBACrCpd,EAAK+yC,QAAQpC,EAAU/sC,GACvBlL,EAAMojC,gBAAe,WACjBtN,EAAU1J,YAAY,cAAc1H,SAAS,YAC7Cpd,EAAKgzC,OAAOrC,EAAU/sC,EAC1B,GACJ,KAjBA7L,KAAKunB,WAoBF4kB,EAAStkB,SACpB,EAEAW,KAAM,WACFxoB,KAAKunB,UACT,IAGJ,IAAIu0B,GAAYn7C,EAAMiH,MAAM7E,OAAO,CAC/BoF,KAAM,WACF,IAAIF,EAAOjI,KACXiI,EAAK8zC,WAAa9zC,EAAK+zC,MAAMxyC,KAAKvB,GAClCA,EAAKg0C,UAAW,CACpB,EAEAC,KAAMv5C,EAAEQ,KACRypC,KAAMjqC,EAAEQ,KACRg5C,MAAOx5C,EAAEQ,KACTi5C,SAAUz5C,EAAEQ,KAEZ2S,MAAO,WACE9V,KAAK8nB,YAIL9nB,KAAK4sC,OAIN5sC,KAAKm8C,SAHLn8C,KAAKi8C,UAAW,EAChBt7C,EAAMojC,eAAe/jC,KAAK+7C,aAIlC,EAEAj0B,QAAS,WACL,OAAO,CACX,EAEA6S,OAAQ,WACJ36B,KAAKi8C,UAAW,EAChBj8C,KAAKo8C,UACT,EAEAJ,MAAO,WACH,IAAI/zC,EAAOjI,KACNiI,EAAKg0C,WAEVh0C,EAAKi0C,OAEAj0C,EAAK2kC,QAGN3kC,EAAKg0C,UAAW,EAChBh0C,EAAKk0C,SAHLx7C,EAAMojC,eAAe97B,EAAK8zC,YAKlC,IAGAM,GAAaP,GAAU/4C,OAAO,CAC9BoF,KAAM,SAAShB,GAEXpE,EADW/C,KACEmH,GACb20C,GAAU/zC,GAAGI,KAAKoC,KAFPvK,KAGf,EAEA4sC,KAAM,WACF,OAAO5sC,KAAKs8C,cAAgBt8C,KAAKsnB,QACrC,EAEAg1B,WAAY,WACR,OAAOj5C,KAAKqT,IAAI1W,KAAKsnB,SAAU,IAAK3Y,KAAU3O,KAAKu8C,UACvD,EAEAC,OAAQ,SAASr1C,GACb,IAAIc,EAAOjI,KACPy8C,EAAUx0C,EAAKw0C,QAEnBx0C,EAAKy0C,QAAUD,EAAQx0C,EAAKk9B,MAC5Bl9B,EAAK88B,MAAQ59B,EAAQkc,SAAWpb,EAAKy0C,QAErCz0C,EAAKqf,SAAsC,iBAApBngB,EAAQmgB,SAAuBngB,EAAQmgB,SAAW,IAEzErf,EAAKi0C,KAAOj0C,EAAK00C,WAAWx1C,EAAQ4sC,MAEpC9rC,EAAKs0C,UAAY,IAAI5tC,KACrB1G,EAAK6N,OACT,EAEA6mC,WAAY,SAAS5I,GACjB,IAAI9rC,EAAOjI,KAEX,OAAO,WACHiI,EAAKw0C,QAAQG,SAAS30C,EAAKk9B,KAAM4O,EAAK9rC,EAAKq0C,aAAcr0C,EAAKy0C,QAASz0C,EAAK88B,MAAO98B,EAAKqf,UAC5F,CACJ,IAGJvkB,EAAOs5C,GAAY,CACfQ,YAAa,SAAS13C,EAAG8W,EAAGvX,EAAGF,GAC3B,OAAQW,GAAKX,EAAKyX,EAAIvX,EAAIA,GAAiC,EAA3BrB,KAAKwmC,IAAI,GAAI,GAAK1kC,EAAIX,IAAUyX,CACpE,EAEA6gC,YAAa,SAAS33C,EAAG8W,EAAGvX,EAAGF,EAAGS,GAE9B,OAAOP,IAAMS,EAAIA,EAAIX,EAAI,GAAKW,KAD9BF,EAAI,SACoC,GAAKE,EAAIF,GAAK,GAAKgX,CAC/D,IAGJuO,EAAGsxB,UAAYA,GACftxB,EAAG6xB,WAAaA,GAChB7xB,EAAGitB,aAAeA,EAElBjtB,EAAG8uB,IAAM,SAASztC,GAEd,IAAIiL,GADJjL,EAAUlJ,EAAEkJ,IACSiS,SAGrB,OAFAhH,EAAO/K,MAAQpL,EAAM8L,YAAYZ,GACjCiL,EAAO9K,OAASrL,EAAM+L,aAAab,GAC5BiL,CACX,EAEA0T,EAAGkvB,gBAAkB,SAASqD,EAAOC,GACjC,IAAI53C,GAAK23C,EAAMvwB,KAAOwwB,EAAMxwB,MAAQwwB,EAAMjxC,OAASixC,EAAMjxC,MAAQgxC,EAAMhxC,OACnE5H,GAAK44C,EAAM73B,IAAM83B,EAAM93B,KAAO83B,EAAMhxC,QAAUgxC,EAAMhxC,OAAS+wC,EAAM/wC,QAEvE,MAAO,CACH5G,EAAG0D,MAAM1D,GAAK,EAAIA,EAClBjB,EAAG2E,MAAM3E,GAAK,EAAIA,EAE1B,EAEAqmB,EAAGivB,UAAY,SAASsD,EAAOC,GAC3B,OAAO35C,KAAKqT,IAAIqmC,EAAMhxC,MAAQixC,EAAMjxC,MAAOgxC,EAAM/wC,OAASgxC,EAAMhxC,OACpE,EAEAwe,EAAGyyB,SAAW,SAASF,EAAOC,GAC1B,OAAO35C,KAAK8V,IAAI4jC,EAAMhxC,MAAQixC,EAAMjxC,MAAOgxC,EAAM/wC,OAASgxC,EAAMhxC,OACpE,CACH,CAriDD,CAqiDGlL,OAAOH,MAAM+G,QACF/G,OAWd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfu8C,EAAS,SAETC,EAAO,OACP55C,EAAU5C,EAAM4C,QAChB8f,EAAWviB,OAAOuiB,SAClBqD,EAAU5lB,OAAO4lB,QAEjB02B,EAAkBz8C,EAAM4C,QAAQuf,QAAQoB,KACxCm5B,EAAY,MACZ1tC,EAAW7O,OAAO6O,SAEtB,SAAS2tC,EAAY/N,EAAMgO,GACvB,OAAKA,GAIDhO,EAAO,MAAQgO,IACfhO,EAAOgO,GAGC,IAAI/uC,OAAO,IAAM+uC,EAAY,KAE9BhwC,KAAKgiC,KACZA,EAAOgO,EAAa,IAAMhO,GAGvBlsB,EAASC,SAAW,MAAQD,EAASm6B,KAAO,IAAMjO,GAAM9sC,QAAQ,SAAU,MAbtE8sC,CAcf,CAEA,SAASkO,EAAcC,GACnB,OAAOA,EAAO,KAAO,GACzB,CAEA,SAASC,EAAaF,GAClB,IAAIplB,EAAOhV,EAASgV,KAGpB,MAAsB,OAAlBolB,GAA0BplB,EAAK1iB,QAAQ,MAAQ,GAAK0iB,EAAK1iB,QAAQ,MAAQ,EAClE,KAGJ0iB,EAAKztB,MAAM6yC,GAAe,IAAM,EAC3C,CAEA,SAASG,EAAUC,EAAM7uB,GACrB,OAA0B,IAAtBA,EAAIrZ,QAAQkoC,GACJ7uB,EAAIzS,OAAOshC,EAAKr2C,QAAS/E,QAAQ,QAAS,KAE3CusB,CAEf,CAEA,IAAI8uB,EAAiBn9C,EAAMiH,MAAM7E,OAAO,CACpCw3C,KAAM,WACE6C,EACAlkB,YAAW,WAAaxS,EAAQ6zB,MAAQ,IAExC7zB,EAAQ6zB,MAEhB,EAEAwD,QAAS,WACDX,EACAlkB,YAAW,WAAaxS,EAAQq3B,SAAW,IAE3Cr3B,EAAQq3B,SAEhB,EAEAv2C,OAAQ,WACJ,OAAOkf,EAAQlf,MACnB,EAEAw2C,gBAAiB,SAAShvB,GACtB3L,EAAS5gB,QAAQusB,EACrB,IAGAivB,EAAmBH,EAAe/6C,OAAO,CACzCoF,KAAM,SAAS01C,GACX79C,KAAK69C,KAAOA,CAChB,EAEAK,SAAU,SAAS5f,GACf5X,EAAQD,UAAU,CAAC,EAAG9W,EAASwuC,MAAOb,EAAYhf,EAAIt+B,KAAK69C,MAC/D,EAEAp7C,QAAS,SAAS67B,GACd5X,EAAQ03B,aAAa,CAAC,EAAGzuC,EAASwuC,MAAOb,EAAYhf,EAAIt+B,KAAK69C,MAClE,EAEAQ,UAAW,SAASrvB,GAChB,OAAO4uB,EAAU59C,KAAK69C,KAAM7uB,EAChC,EAEAhb,QAAS,WACL,IAAIA,EAAUqP,EAASi7B,SAMvB,OAJIj7B,EAAS6Y,SACTloB,GAAWqP,EAAS6Y,QAGjB0hB,EAAU59C,KAAK69C,KAAM7pC,EAChC,EAEAuqC,OAAQ,SAAS30B,GACbjnB,EAAE7B,QAAQ0I,KAAK,iBAAkBogB,EACrC,EAEApB,KAAM,WACF7lB,EAAE7B,QAAQmJ,OAAO,iBACrB,EAEAu0C,iBAAkB,SAASr3C,GACvB,IAAIs3C,EACAZ,EAAO12C,EAAQ02C,KACfS,EAAWj7B,EAASi7B,SACpBI,EAAOf,EAAaF,EAAct2C,EAAQw3C,WAE1Cd,IAASS,EAAW,MACpBG,EAAWZ,GAGXA,IAASS,GAAYI,IACrBD,EAAWnB,EAAYoB,EAAKj8C,QAAQ46C,EAAW,IAAKQ,IAGpDY,GACA/3B,EAAQD,UAAU,CAAC,EAAG9W,EAASwuC,MAAOM,EAE9C,IAGJ,SAASG,EAAQ5vB,GACb,OAAOA,EAAIvsB,QAAQ,QAAS,IAChC,CAEA,SAASo8C,EAAQ7vB,GACb,OAAOA,EAAIvsB,QAAQ,YAAa,KACpC,CAEA,IAAIq8C,EAAchB,EAAe/6C,OAAO,CACpCoF,KAAM,SAASu1C,GACX19C,KAAK++C,IAAMp+C,EAAMwvB,OACjBnwB,KAAKggB,OAASy9B,EAAcC,GAC5B19C,KAAK+6B,IAAM2iB,EAAOmB,EAAUD,CAChC,EAEAV,SAAU,SAAS5f,GACfjb,EAASq7B,KAAO1+C,KAAK+6B,IAAIuD,EAC7B,EAEA77B,QAAS,SAAS67B,GACdt+B,KAAKg+C,gBAAgBh+C,KAAK+6B,IAAIuD,GAClC,EAEA+f,UAAW,SAASrvB,GAChB,OAAIA,EAAIrZ,QAAQ3V,KAAKggB,QAAU,EACrBgP,EAECA,EAAIpkB,MAAM5K,KAAKggB,QAAQ,EAEtC,EAEAu+B,OAAQ,SAAS30B,GACTrmB,EAAQojB,WACRhkB,EAAE7B,QAAQ+oB,GAAG,cAAgB7pB,KAAK++C,IAAKn1B,GAEvC5pB,KAAKg/C,UAAYC,YAAYr1B,EAlKhB,GAoKrB,EAEApB,KAAM,WACF7lB,EAAE7B,QAAQs4B,IAAI,cAAgBp5B,KAAK++C,KACnCG,cAAcl/C,KAAKg/C,UACvB,EAEAhrC,QAAS,WACL,OAAO2pC,EAAa39C,KAAKggB,OAC7B,EAEAw+B,iBAAkB,SAASr3C,GACvB,IAAIm3C,EAAWj7B,EAASi7B,SACpBT,EAAO12C,EAAQ02C,KAEnB,SAAI12C,EAAQsf,WAAao3B,IAASS,KAC9Bt+C,KAAKg+C,gBAAgBH,EAAO79C,KAAKggB,OAAS49B,EAAUC,EAAMS,KACnD,EAIf,IAGAa,EAAUx+C,EAAM2I,WAAWvG,OAAO,CAClC+S,MAAO,SAAS3O,GAKZ,GAJAA,EAAUA,GAAW,CAAC,EAEtBnH,KAAKwJ,KAAK,CAAC0zC,EArMR,OAqMsBC,GAAOh2C,IAE5BnH,KAAKi8C,SAAT,CAIAj8C,KAAKi8C,UAAW,EAEhB90C,EAAQ02C,KAAO12C,EAAQ02C,MAAQ,IAE/B,IACI7pC,EADAorC,EAAUp/C,KAAKq/C,cAAcl4C,GAI7Bi4C,EAAQZ,iBAAiBr3C,KAI7B6M,EAAUorC,EAAQprC,UAElBrR,EAAEI,OAAO/C,KAAM,CACXo/C,QAASA,EACTvB,KAAM12C,EAAQ02C,KACdyB,cAAeF,EAAQ53C,SACvBwM,QAASA,EACTurC,UAAW,CAACvrC,KAGhBorC,EAAQb,OAAOv+C,KAAKw/C,UAAUh2C,KAAKxJ,OAxBnC,CAyBJ,EAEAq/C,cAAe,SAASl4C,GACrB,OAAO5D,EAAQkjB,WAAatf,EAAQsf,UAAY,IAAIw3B,EAAiB92C,EAAQ02C,MAAQ,IAAIiB,EAAY33C,EAAQw3C,SAChH,EAEAn2B,KAAM,WACGxoB,KAAKi8C,WAGVj8C,KAAKo/C,QAAQ52B,OACbxoB,KAAKiK,OAAOizC,GACZl9C,KAAKi8C,UAAW,EACpB,EAEAsC,OAAQ,SAAS30B,GACb5pB,KAAKwJ,KAAK0zC,EAAQtzB,EACtB,EAEAnnB,QAAS,SAAS67B,EAAImhB,GAElBz/C,KAAK0/C,UAAUphB,EAAImhB,GAAQ,SAASL,GAChCA,EAAQ38C,QAAQ67B,GAChBt+B,KAAKu/C,UAAUv/C,KAAKu/C,UAAU/3C,OAAS,GAAKxH,KAAKgU,OACrD,GACJ,EAEAkqC,SAAU,SAAS5f,EAAImhB,GACnB,GAAW,WAAPnhB,EAGA,OAFAt+B,KAAK2/C,YAAa,OAClB3/C,KAAKo/C,QAAQ7E,OAIjBv6C,KAAK0/C,UAAUphB,EAAImhB,GAAQ,SAASL,GAChCA,EAAQlB,SAAS5f,GACjBt+B,KAAKu/C,UAAU59C,KAAK3B,KAAKgU,QAC7B,GACJ,EAEA0rC,UAAW,SAASphB,EAAImhB,EAAQ71B,GAC5B,IAAIw1B,EAAUp/C,KAAKo/C,QAEnB9gB,EAAK8gB,EAAQf,UAAU/f,GAEnBt+B,KAAKgU,UAAYsqB,GAAMt+B,KAAKgU,UAAYya,mBAAmB6P,IAK1DmhB,GACGz/C,KAAKoK,QAAQ8yC,EAAQ,CAAEluB,IAAKsP,EAAIshB,QAAQ,MAKhD5/C,KAAKgU,QAAUsqB,EAEf1U,EAASrf,KAAKvK,KAAMo/C,GAEpBp/C,KAAKs/C,cAAgBF,EAAQ53C,UAdzBxH,KAAKoK,QAAQ+yC,EAerB,EAEAqC,UAAW,WACP,IAAIJ,EAAUp/C,KAAKo/C,QACfprC,EAAUorC,EAAQprC,UAClB6rC,EAAYT,EAAQ53C,SACpBs4C,EAAuB9/C,KAAKs/C,gBAAkBO,EAC9CtF,EAAOvmC,IAAYhU,KAAKu/C,UAAUv/C,KAAKu/C,UAAU/3C,OAAS,IAAMs4C,EAChEH,EAAa3/C,KAAK2/C,WAClBI,EAAO//C,KAAKgU,QAEhB,OAAgB,OAAZA,GAAoBhU,KAAKgU,UAAYA,GAAWhU,KAAKgU,UAAYya,mBAAmBza,KAIxFhU,KAAKs/C,cAAgBO,EACrB7/C,KAAK2/C,YAAa,EAElB3/C,KAAKgU,QAAUA,EAEXumC,GAAQv6C,KAAKoK,QAAQ,OAAQ,CAAE4kB,IAAK+wB,EAAMzhB,GAAItqB,KAC9CorC,EAAQrB,eACR/9C,KAAKgU,QAAU+rC,IAIf//C,KAAKoK,QAAQ8yC,EAAQ,CAAEluB,IAAKhb,EAASgsC,mBAAoBL,KACrDpF,EACA6E,EAAQrB,WAERqB,EAAQ7E,OACRv6C,KAAKs/C,sBAETt/C,KAAKgU,QAAU+rC,SAIfxF,EACAv6C,KAAKu/C,UAAUxvB,MAEf/vB,KAAKu/C,UAAU59C,KAAKqS,IAE5B,IAGJrT,EAAMw+C,QAAUA,EAChBx+C,EAAMw+C,QAAQrB,eAAiBA,EAC/Bn9C,EAAMw+C,QAAQL,YAAcA,EAC5Bn+C,EAAMw+C,QAAQlB,iBAAmBA,EACjCt9C,EAAM28C,YAAcA,EACpB38C,EAAM+lB,QAAU,IAAIy4B,CACvB,CArVD,CAqVGr+C,OAAOH,MAAM+G,QACF/G,OAEd,WACI,IAAIA,EAAQG,OAAOH,MACf+lB,EAAU/lB,EAAM+lB,QAChBpd,EAAa3I,EAAM2I,WACnB22C,EAAO,OACPC,EAAgB,eAChBhD,EAAS,SACTiD,EAAO,OACPhD,EAAO,OACPiD,EAAgB,aAChBC,EAAa,eACbC,EAAa,SACbC,EAAe,2BAEnB,SAASC,EAAkB9vC,EAAO+vC,GAC9B,OAAOA,EAAW/vC,EAAQ,SAC9B,CAUA,SAASgwC,EAAS1xB,GACd,OAAOA,EAAIvsB,QAAQ,gBAAiB,GACxC,CAEA,IAAIk+C,EAAQhgD,EAAMiH,MAAM7E,OAAO,CAC3BoF,KAAM,SAASy4C,EAAOh3B,EAAUi3B,GACtBD,aAAiBpyC,SACnBoyC,EAfZ,SAAuBA,EAAOC,GAC1B,OAAO,IAAIryC,OAAO,IAAMoyC,EACnBn+C,QAAQ89C,EAAc,QACtB99C,QAAQ29C,EAAe,WACvB39C,QAAQ49C,EAAYG,GACpB/9C,QAAQ69C,EAAY,SAAW,IAAKO,EAAa,IAAM,GAChE,CASoBC,CAAcF,EAAOC,IAGjC7gD,KAAK4gD,MAAQA,EACb5gD,KAAK+gD,UAAYn3B,CACrB,EAEAA,SAAU,SAASoF,EAAKurB,EAAMqF,GAC1B,IAAInb,EAEAj9B,EADAoC,EAAM,EAENo3C,EAAoBrgD,EAAM6jC,uBAAuBxV,GAOrD,GANIgyB,EAAkBC,MAAQ1G,EAE9BvrB,EAAM0xB,EAAS1xB,GAEfxnB,GADAi9B,EAASzkC,KAAK4gD,MAAMhoC,KAAKoW,GAAKnoB,MAAM,IACpBW,OAEZo4C,EACA,KAAOh2C,EAAMpC,EAAQoC,SACU,IAAhB66B,EAAO76B,KACd66B,EAAO76B,GAAO6kB,mBAAmBgW,EAAO76B,KAKpD66B,EAAO9iC,KAAKq/C,GAEZhhD,KAAK+gD,UAAU34C,MAAM,KAAMq8B,EAC/B,EAEAyc,UAAW,SAASlyB,EAAKurB,EAAMqF,GAC3B,QAAI5/C,KAAK4gD,MAAMrzC,KAAKmzC,EAAS1xB,MACzBhvB,KAAK4pB,SAASoF,EAAKurB,EAAMqF,IAClB,EAIf,IAGAuB,EAAS73C,EAAWvG,OAAO,CAC3BoF,KAAM,SAAShB,GACNA,IACDA,EAAU,CAAC,GAGfmC,EAAWvB,GAAGI,KAAKoC,KAAKvK,MAExBA,KAAKohD,OAAS,GACdphD,KAAKymB,UAAYtf,EAAQsf,UACzBzmB,KAAK2+C,SAAWx3C,EAAQw3C,SACxB3+C,KAAK69C,KAAO12C,EAAQ02C,KACpB79C,KAAK6gD,YAAoC,IAAvB15C,EAAQ05C,WAE1B7gD,KAAKwJ,KAAK,CAACy2C,EAAMC,EAAehD,EAAQC,EAAMgD,GAAOh5C,EACzD,EAEAnF,QAAS,WACL0kB,EAAQzc,OAAOizC,EAAQl9C,KAAKqhD,kBAC5B36B,EAAQzc,OAAOkzC,EAAMn9C,KAAKshD,YAC1B56B,EAAQzc,OAAOk2C,EAAMngD,KAAKuhD,YAC1BvhD,KAAKiK,QACT,EAEA6L,MAAO,WACH,IAAI7N,EAAOjI,KAEPwhD,EAAY,SAAS78C,GAAKsD,EAAKg5C,MAAMt8C,EAAI,EACzC88C,EAAkB,SAAS98C,GAAKsD,EAAKy5C,YAAY/8C,EAAI,EAEzD+hB,EAAQ5Q,MAAM,CACV6rC,KALY,WAAa15C,EAAK25C,OAAS,EAMvCrD,OAAQkD,EACRlH,KAAMiH,EACN/6B,UAAWxe,EAAKwe,UAChBk4B,SAAU12C,EAAK02C,SACfd,KAAM51C,EAAK41C,OAIf,IAAIgE,EAAkB,CAAE7yB,IAAKtI,EAAQ1S,SAAW,IAAK7K,eAAgBxG,EAAEQ,MAElE8E,EAAKmC,QAAQ61C,EAAM4B,IACpB55C,EAAKy5C,YAAYG,GAGrB7hD,KAAKqhD,iBAAmBI,EACxBzhD,KAAKuhD,WAAaC,CACtB,EAEAZ,MAAO,SAASA,EAAOh3B,GACnB5pB,KAAKohD,OAAOz/C,KAAK,IAAIg/C,EAAMC,EAAOh3B,EAAU5pB,KAAK6gD,YACrD,EAEA3C,SAAU,SAASlvB,EAAKywB,GACpB9+C,EAAM+lB,QAAQw3B,SAASlvB,EAAKywB,EAChC,EAEAh9C,QAAS,SAASusB,EAAKywB,GACnB9+C,EAAM+lB,QAAQjkB,QAAQusB,EAAKywB,EAC/B,EAEAwB,MAAO,SAASt8C,GACR3E,KAAKoK,QAAQ+1C,EAAM,CAAEnxB,IAAKrqB,EAAEqqB,IAAKsP,GAAI35B,EAAE25B,MACvC35B,EAAEwE,gBAEV,EAEAy4C,MAAO,WACH5hD,KAAKoK,QAAQ+yC,EACjB,EAEAuE,YAAa,SAAS/8C,GAClB,IAAIqqB,EAAMrqB,EAAEqqB,IACR4wB,IAAWj7C,EAAEi7C,OACbrF,EAAO51C,EAAEq7C,kBAMb,GAJKhxB,IACDA,EAAM,KAGNhvB,KAAKoK,QAAQ8yC,EAAQ,CAAEluB,IAAKrqB,EAAEqqB,IAAKyV,OAAQ9jC,EAAM6jC,uBAAuB7/B,EAAEqqB,KAAMgxB,kBAAmBzF,IACnG51C,EAAEwE,qBADN,CAUA,IALA,IAAIS,EAAM,EACNw3C,EAASphD,KAAKohD,OAEd55C,EAAS45C,EAAO55C,OAEboC,EAAMpC,EAAQoC,IAGhB,GAFQw3C,EAAOx3C,GAELs3C,UAAUlyB,EAAKurB,EAAMqF,GAC5B,OAIJ5/C,KAAKoK,QAAQ81C,EAAe,CAAElxB,IAAKA,EAAKyV,OAAQ9jC,EAAM6jC,uBAAuBxV,GAAMgxB,kBAAmBzF,KACtG51C,EAAEwE,gBAhBN,CAkBJ,IAGJxI,EAAMwgD,OAASA,CAClB,CApLD,GAsMA,MAAMW,EAAQ,CACVC,GAAM,CACF3jC,OAAQ,CAACy2B,EAAK9sC,IAAO7C,GAAK2vC,EAAI3vC,IAAM6C,EAAG7C,GACvC88C,SAAU,KAAM,GAEpBC,IAAO,CACH7jC,OAAQ,CAACy2B,EAAK9sC,IAAO7C,GAAK2vC,EAAI3vC,IAAM6C,EAAG7C,GACvC88C,SAAU,KAAM,IAIlBE,EAAe,CACjBC,cAAgBj9C,GAAMvE,MAAMgI,QAAQzD,IAAY,KAANA,EAC1Ck9C,iBAAmBl9C,GAAMvE,MAAM8H,UAAUvD,IAAY,KAANA,EAC/CqwB,SAAU,CAACrwB,EAAG+W,KAAO/W,EAAI,IAAIyQ,QAAQsG,IAAM,EAC3ComC,eAAgB,CAACn9C,EAAG+W,KAA+B,KAAxB/W,EAAI,IAAIyQ,QAAQsG,GAC3CqmC,eAAgB,CAACp9C,EAAG+W,KAAO/W,EAAI,IAAIyQ,QAAQsG,GAAI/W,GAAK,IAAIsC,QAAUyU,GAAK,IAAIzU,QAAU,EACrF+6C,iBAAkB,CAACr9C,EAAG+W,KAAsC,KAA/B/W,EAAI,IAAI+T,YAAYgD,EAAG,GACpDumC,SAAU,CAACt9C,EAAG+W,KAAO/W,EAAI,IAAIyQ,QAAQsG,GAAI/W,GAAK,IAAIsC,QAAUyU,GAAK,IAAIzU,SAAW,EAChFwwB,GAAI,CAAC9yB,EAAG+W,IAAM/W,IAAM+W,EACpBwmC,GAAI,CAACv9C,EAAG+W,IAAM/W,EAAI+W,EAClBymC,IAAK,CAACx9C,EAAG+W,IAAM/W,GAAK+W,EACpB0mC,QAAUz9C,GAAY,KAANA,EAChB09C,WAAa19C,GAAY,KAANA,EACnB29C,UAAY39C,GAAMvE,MAAM8H,UAAUvD,GAClC49C,OAAS59C,GAAMvE,MAAMgI,QAAQzD,GAC7B69C,GAAI,CAAC79C,EAAG+W,IAAM/W,EAAI+W,EAClB+mC,IAAK,CAAC99C,EAAG+W,IAAM/W,GAAK+W,EACpBgnC,IAAK,CAAC/9C,EAAG+W,IAAM/W,GAAK+W,EACpBinC,WAAY,CAACh+C,EAAG+W,IAAqC,KAA9B/W,EAAI,IAAI+T,YAAYgD,EAAG,IAG5C9B,EAAa,sBAgDbgpC,EAAkB,EAAGp9B,QAAO86B,aAAYn4C,QAAO06C,WAAW,KAAMC,6BAClEt9B,EAASplB,MAAM8H,UAAUsd,GAAkBA,EAAT7gB,GAAKA,EAEvC27C,GAAalgD,MAAM8H,UAAUo4C,IAAcA,EAE3C,MAAMyC,EArCU,EAACzzB,EAAMnnB,EAAOm4C,EAAYwC,KAC1C,IAAK1iD,MAAM8H,UAAUC,GACjB,OAAOmnB,EAGX,IAAIglB,EAAMhlB,EAEV,GAAIlvB,MAAMiI,SAASF,GAAQ,CACvB,MAAMkO,EAAOuD,EAAWvB,KAAKlQ,GACzBkO,EACAlO,EAAQ,IAAIiG,MAAMiI,EAAK,IAEvBi+B,EAAM3vC,IACF,MAAME,EAAIyqB,EAAK3qB,GACf,MAAiB,iBAANE,GAAkBy7C,EAClBwC,EAAyBj+C,EAAEm+C,kBAAkBF,GAA0Bj+C,EAAEyT,cAEzElY,MAAMkI,UAAUzD,GAAKA,EAAI,GAAKA,CACzC,CAGZ,CAEA,OAAIzE,MAAMqI,OAAON,GACNxD,IACH,MAAME,EAAIyvC,EAAI3vC,GACd,OAAOvE,MAAMqI,OAAO5D,GAAKA,EAAE6D,UAAY7D,CAAC,EAGzCyvC,CAAG,EAQO2O,CACb7iD,MAAMuI,WAAW6c,GAASA,EAAQplB,MAAM6uB,OAAOzJ,GAAO,GACtDrd,EACAm4C,EACAwC,GAGJ36C,EA1DiB,EAACA,EAAOm4C,EAAYwC,KACrC,GAAa,MAAT36C,GAAiB/H,MAAMiI,SAASF,GAAQ,CACxC,MAAMkO,EAAOuD,EAAWvB,KAAKlQ,GAC7B,GAAIkO,EACA,OAAO,IAAIjI,MAAMiI,EAAK,IAAI3N,UACvB,GAAI43C,EACP,OAAOwC,EAAyB36C,EAAM66C,kBAAkBF,GAA0B36C,EAAMmQ,aAEhG,MAAO,GAAa,MAATnQ,GAAiB/H,MAAMqI,OAAON,GACrC,OAAOA,EAAMO,UAEjB,OAAOP,CAAK,EA+CJ+6C,CAAa/6C,EAAOm4C,EAAYwC,GAExC,MAAMK,EAAK/iD,MAAMuI,WAAWk6C,GAAYA,EAAWlB,EAAakB,GAEhE,OAAOl+C,GAAKw+C,EAAGJ,EAASp+C,GAAIwD,EAAOm4C,EAAW,EAK5C8C,EAA4Bp0B,IAC9B,MAAM8zB,EAAyB9zB,EAAO8zB,uBAChCO,EAAW9B,EAAMvyB,EAAOuyB,OAAS,OACvC,OAAOvyB,EAAOs0B,QACTt0B,OAAO5uB,MAAM8H,WACboS,KAAIzV,IAAK,OAPmByI,EAOUzI,EAPCzE,MAAM8H,UAAUoF,EAAOg2C,SAOnBF,EAAyBG,EAAoB1+C,EAAGi+C,IAA2BF,EAAgBW,EAAoB1+C,EAAGi+C,IAPlI,IAACx1C,CAO0J,IACtLk2C,OAAOH,EAASxlC,OAAQwlC,EAAS5B,SAAS,EAG7C8B,EAAsB,CAACv0B,EAAQ8zB,IAA4B1iD,MAAM8H,UAAU46C,GAA0B5iD,OAAOC,OAAO6uB,EAAQ,CAAE8zB,2BAA4B9zB,GAc/J,SAAU5sB,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfoC,EAASJ,EAAEI,OACXihD,EAAU,OACVC,EAAa,WACb/6C,EAAavI,EAAMuI,WACnBg7C,EAAe,CACXlsB,GAAI,KACJirB,IAAK,KACLR,GAAI,KACJC,IAAK,KACLK,GAAI,KACJC,IAAK,KACLztB,SAAU,cACV8sB,eAAgB,cAChBG,SAAU,WACVU,WAAY,aACZJ,OAAQ,KACRD,UAAW,KACXV,cAAe,KACfC,iBAAkB,KAClBO,QAAS,KACTC,WAAY,MAEhBuB,EAA0BphD,EAAO,CAAC,EAAGmhD,EAAc,CAC/C3uB,SAAU,aAEd6uB,EAAU,CACNC,SAAU1hD,EAAEQ,KACZmhD,KAAM3hD,EAAEQ,KACRosB,OAAQ,SAASkV,EAAQlV,EAAQg1B,GACzBh1B,IACAA,EAASi1B,EAAcj1B,EAAQg1B,MAE3B9f,EAAOggB,QAAUl1B,EAG7B,EACAvT,KAAM,SAASyoB,EAAQigB,GACnB,IAAIz1B,EAAOtsB,EAAEkY,IAAI6pC,GAAS,SAASh8C,GAC/B,IAAIi8C,EAAQj8C,EAAMqd,MAAMtjB,QAAQ,MAAO,KAMvC,MAJkB,SAAdiG,EAAM62B,MACNolB,GAAS,SAGNA,CACX,IAAG95C,KAAK,KAEJokB,IACAwV,EAAOmgB,SAAW31B,EAE1B,EACA41B,KAAM,SAASpgB,EAAQogB,GACfA,IACApgB,EAAOqgB,MAAQD,EAEvB,EACAE,KAAM,SAAStgB,EAAQsgB,GACfA,IACAtgB,EAAOugB,KAAOD,EAEtB,GAEJE,EAAkB,CACdC,KAAM,CACFC,SAAU,UAItB,SAASX,EAAcj1B,EAAQ61B,GAC3B,IAEIx7C,EACApC,EACAue,EACArgB,EACAuL,EACAmyC,EACA16C,EACAm4C,EATA/pC,EAAS,GACTgrC,EAAQvyB,EAAOuyB,OAAS,MASxB+B,EAAUt0B,EAAOs0B,QAErB,IAAKj6C,EAAM,EAAGpC,EAASq8C,EAAQr8C,OAAQoC,EAAMpC,EAAQoC,IAEjDmc,GADAwJ,EAASs0B,EAAQj6C,IACFmc,MACfrd,EAAQ6mB,EAAO7mB,MACf06C,EAAW7zB,EAAO6zB,SAEd7zB,EAAOs0B,QACPt0B,EAASi1B,EAAcj1B,EAAQ61B,IAE/BvE,EAAatxB,EAAOsxB,WACpB96B,EAAQA,EAAMtjB,QAAQ,MAAO,KAC7B8sB,EAAS20B,EAAad,GAClBgC,IACA71B,EAAS40B,EAAwBf,IAGpB,kBAAbA,EACA7zB,EAAS5uB,EAAMsQ,OAAO,6BAA8B8U,EAAOwJ,GACvC,qBAAb6zB,EACP7zB,EAAS5uB,EAAMsQ,OAAO,8BAA+B8U,EAAOwJ,GACxC,WAAb6zB,GAAsC,cAAbA,EAChC7zB,EAAS5uB,EAAMsQ,OAAO,eAAgB8U,EAAOwJ,GACzB,YAAb6zB,GAAuC,eAAbA,EACjC7zB,EAAS5uB,EAAMsQ,OAAO,aAAc8U,EAAOwJ,GACpCA,GA3G3B,YA2GqC7mB,IAEJ,YADbhD,EAAO/E,EAAM+E,KAAKgD,KAEduI,EAAS,QACTvI,EAAQA,EAAMjG,QAAQ,KAAM,OAET,IAAfo+C,IACA96B,EAAQ,WAAaA,EAAQ,MAGjB,SAATrgB,EACH0/C,GACAn0C,EAAS,gCACTvI,EAAQ/H,EAAMqd,SAAS5V,MAAMM,EAAO,YAEpCuI,EAAS,oCAGbA,EAAS,MAGTse,EAAO/nB,OAAS,EACD,gBAAX+nB,EACAte,EAAS,WAAaA,EAAS,KAE/BA,EAAS,OAASA,EAAS,QACV,mBAAbmyC,IACIgC,GACAn0C,EAAS,uBACTse,EAAS,WAETte,GAAU,cAKtBA,EAAS,WAAaA,EAG1Bse,EAAS5uB,EAAMsQ,OAAOA,EAAQse,EAAQ7mB,EAAOqd,KAIrDjP,EAAOnV,KAAK4tB,GAShB,OANAA,EAASzY,EAAOjM,KAAK,IAAMi3C,EAAQ,KAE/BhrC,EAAOtP,OAAS,IAChB+nB,EAAS,IAAMA,EAAS,KAGrBA,CACX,CAEA,SAAS81B,EAAc13B,GACnB,IAAK,IAAIvrB,KAAQurB,EACkB,IAA3BvrB,EAAKuT,QAAQ,kBACNgY,EAAIvrB,EAGvB,CAEA,SAASkjD,IACL,OAAOjiD,KAAKyN,MAA4B,OAArB,EAAIzN,KAAK+sB,WAAqB3e,SAAS,IAAI8K,OAAO,EACzE,CAEA,SAASgpC,EAAevlC,GACpB,OAAOA,EAASslC,IAAU,IAAMA,IAAU,IAAMA,GACpD,CAEA,SAASE,EAAgBC,EAAUC,GAC/B,IAAI5uC,EAASktC,EAAU,KAAOyB,EAM9B,OAJIC,IACA5uC,GAAU,MAGPA,CACX,CAEA,SAAS6uC,EAAcC,EAAWzW,EAAM0W,EAAUC,GAC7C,IAAIC,EAAeH,EAAUz+C,QAAQ2+C,GAAS92B,IAC1Cg3B,EAAgBrlD,EAAMsQ,OAAO,OAAQ40C,GAEzC,OAAI38C,EAAW68C,GACJC,EAAgBD,EAAa5W,GAE7B6W,EAAgBD,CAEhC,CAEA,SAASE,EAAmBC,EAAWC,GACnC,IAAIC,EAAS,GAOb,OALAA,GAAUZ,EAAgBU,GAAW,GACrCE,GAAUpC,EAAU,iCACpBoC,GAAUpC,EAAU,oCACpBoC,GAAUpC,EAAU,eAAiBmC,CAGzC,CA4BA,SAASE,EAAkBC,EAAWb,EAAUS,EAAWC,EAAUP,EAAWE,EAASS,GACrF,IAAIC,EAAc,GAOlB,OALAA,GAQJ,SAAqBf,EAASS,GAC1B,IAAIM,EAAc,GAKlB,OAHAA,GAAe,KAAOf,EAAWzB,EACjCwC,GAAe,2CAA6CN,EAAYlC,EAEjEwC,CACX,CAfmBC,CAAYhB,EAAUS,GACrCM,GApBJ,SAAuBE,EAAYR,EAAWC,EAAUL,EAASF,EAAWW,GAGxE,IAFA,IAXyBpX,EACrBwX,EAUAH,EAAc,GAETj/C,EAAI,EAAGA,EAAIm/C,EAAWl/C,OAAQD,IACnCi/C,GAAeP,EAAmBC,EAAWC,GAC7CK,GAAevC,EAAa0B,EAAcC,EAAWc,EAAWn/C,GAAIq+C,EAAUz+C,QAAQ2+C,GAASpgD,KAAMogD,GAAW,YAC3GS,IACDC,IAjBiBrX,EAiBkBuX,EAAWn/C,GAhBlDo/C,WAAU,GAEdA,GAAW3C,EAAU,uDACrB2C,GAAW3C,EAAU,gCACrB2C,GAAW1C,EAAatjD,EAAMoS,UAAUo8B,KAcpCqX,GAAexC,EACfmC,IAGJ,OAAOK,CACX,CAMmBI,CAAcN,EAAWJ,EAAWC,EAAUL,EAASF,EAAWW,GACjFC,GAAehB,EAAgBU,GAAW,GAC1CM,GAAexC,CAGnB,CA6FAjhD,GAAO,EAAMpC,EAAMyN,KAAM,CACrBy4C,QAAS,CACLC,MAAO,CACHphD,KAAM,OACN0I,KAAM,SAASA,GACX,OAAOA,EAAK5J,EAAEuiD,SAAW,CAAC34C,EAAK5J,EACnC,EACAwiD,MAAO,cAGfC,WAAY,CACRH,MAAO,CACH5B,KAAM,CACFpnB,OAAO,EACPqnB,SAAU,QACV+B,MAAO,aAEXC,OAAQ,CACJrpB,OAAO,EACPqnB,SAAU,OACV9X,YAAa,mBACb3nC,KAAM,OAEV0hD,OAAQ,CACJtpB,OAAO,EACPqnB,SAAU,OACV9X,YAAa,mBACb3nC,KAAM,QAEV1D,QAAS,CACL87B,OAAO,EACPqnB,SAAU,OACVz/C,KAAM,UAEV2hD,aAAc,SAASlgD,EAASzB,EAAM6+C,GAClC,IAAI9f,EACA/7B,EACAwsB,EACAiwB,EAOJ,GALAh+C,EAAUA,GAAW,CAAC,EACtBzB,EAAOA,GAAQ,OAEfy/C,GADAA,GAAYnlD,KAAKmH,SAAW89C,GAAiBv/C,IACvBy/C,EAASA,SAAW,OAE7B,SAATz/C,EASA,IAAKwvB,KARLuP,EAAS,CACL6iB,aAAc,YAGF,QAAZnC,IACA1gB,EAAO8iB,QAAU,QAGNpgD,EACPi9C,EAAQlvB,GACRkvB,EAAQlvB,GAAQuP,EAAQt9B,EAAQ+tB,GAASqvB,GAEzC9f,EAAOvP,GAAU/tB,EAAQ+tB,OAG9B,CACH,GAAiB,SAAbiwB,EACA,MAAM,IAAIn0C,MAAM,sCAAwCtL,EAAO,eAGnE,GAAa,YAATA,EAAoB,CACpB,IAAKwvB,KAAU/tB,EAEU,iBADrBuB,EAAQvB,EAAQ+tB,MAEZ/tB,EAAQ+tB,GAAUxsB,EAAQ,IAIlC+7B,EAAS9jC,EAAMoS,UAAU5L,EAC7B,CACJ,CAEA,OAAOs9B,CACX,MAKZ1hC,GAAO,EAAMpC,EAAMyN,KAAM,CACrBy4C,QAAS,CACL,WAAY,CACRnhD,KAAM,OACN0I,KAAM,SAASA,GACX,GAAIlL,MAAMD,QAAQmL,GAAO,CACrB,IAAK,IAAI7G,EAAI,EAAGA,EAAI6G,EAAK5G,OAAQD,IAC7B89C,EAAcj3C,EAAK7G,IAEvB,OAAO6G,CACX,CAII,OAFAi3C,EADAj3C,EAAOzL,EAAEI,OAAO,CAAC,EAAGqL,IAGhBA,EAAK1F,MACE0F,EAAK1F,MAET,CAAC0F,EAEhB,EACA44C,MAAO,SAAS54C,GACZ,OAAOA,EAAK,eAChB,IAGR64C,WAAY,CACR,WAAY,CACRO,MAAO,CACH9hD,KAAM,QAEVw/C,KAAM,CACFpnB,OAAO,EACPqnB,SAAU,QAEdgC,OAAQ,CACJrpB,OAAO,EACPqnB,SAAU,OACV9X,YAAa,0CACb3nC,KAAM,OAEV0hD,OAAQ,CACJtpB,OAAO,EACPqnB,SAAU,OACV9X,YAAa,0CACb3nC,KAAM,QAEV1D,QAAS,CACL87B,OAAO,EACPqnB,SAAU,OACVz/C,KAAM,UAEV2hD,aAAc,SAASlgD,EAASzB,GAC5B,IAAIoR,EAASnW,EAAMyN,KAAK64C,WAAWH,MAAMO,aAAalgD,EAASzB,GAAM,GAarE,MAZY,QAARA,IACAoR,EAAO2wC,QAAS,SACT3wC,EAAOwwC,cAG7BxwC,GAAUA,EAAO2tC,UAEpB3tC,EAAO2tC,QAAU3tC,EAAO2tC,QAAQhiD,QAAQ,sEAAsE,SAAS2C,GACtH,OAAOA,EAAE4F,UAAU,EAAG5F,EAAEoC,OAAS,EAClC,KAGqBsP,CACX,EACAy2B,OAAQ,SAAS5oC,GACb,IACIwC,EA3OpB,SAA4By+C,EAAW8B,GACzC,IAAIvgD,EAAUpE,EAAO,CAAC,EAAG6iD,EAAUz+C,QAAQqgD,OACjC/B,EAAWF,EAAe,aAC1BiB,EAAc,GACdL,EAAW,EACXwB,EAAW/B,EAAUz+C,QAAQqgD,MAAMx4B,IACnCk3B,EAAYX,EAAe,iBA4B/B,OA1BAp+C,EAAQzB,KAAOkgD,EAAUz+C,QAAQqgD,MAAM9hD,KACvCyB,EAAQ6nB,IAAM9lB,EAAWy+C,GAAYA,IAAaA,EACxDxgD,EAAQygD,QAAU7kD,EAAOoE,EAAQygD,SAAW,CAAC,EAAG,CAC/C,eAAgB,6BAA+BnC,IAGtCiC,EAAWG,QAAQrgD,SACnBg/C,GAAeH,EAAkBqB,EAAWG,QAASpC,EAAUS,EAAWC,EAAUP,EAAW,UAAU,GACzGO,GAAYuB,EAAWG,QAAQrgD,OAC/B0+C,EAAYX,EAAe,kBAG3BmC,EAAWI,UAAUtgD,SACrBg/C,GAAeH,EAAkBqB,EAAWI,UAAWrC,EAAUS,EAAWC,EAAUP,EAAW,WAAW,GAC5GO,GAAYuB,EAAWI,UAAUtgD,OACjC0+C,EAAYX,EAAe,kBAG3BmC,EAAWK,QAAQvgD,SACnBg/C,GAAeH,EAAkBqB,EAAWK,QAAStC,EAAUS,EAAWC,EAAUP,EAAW,UAAU,IAG7GY,GAAehB,EAAgBC,GAAU,GAEzCt+C,EAAQiH,KAAOo4C,EAERr/C,CACX,CAwM8B6gD,CADHhoD,KAC4B2E,EAAEyJ,MACrC65C,EAActjD,EAAEyJ,MAEf65C,EAAYJ,QAAQrgD,QAAWygD,EAAYH,UAAUtgD,QAAWygD,EAAYF,QAAQvgD,SAIzF7E,EAAEulD,KAAKnlD,GAAO,EAAM,CAAC,EAAG,CACpBolD,QAAS,SAASC,GACd,IAEIp0C,EAFAq0C,EA/M5B,SAA4BC,GACxB,IAGIC,EACAC,EACAC,EACAC,EACAC,EAPAC,EAAkBN,EAAa53C,MAAM,qCACrCm4C,EAAc,EACdZ,EAAc,GAOlBA,EAAYtmD,KAAK,CAAEmnD,OAAQ,GAAIC,QAAQ,IAEvC,IAAK,IAAIxhD,EAAI,EAAGA,EAAIqhD,EAAgBphD,OAAQD,KACxCmhD,EAASE,EAAgBrhD,IACd0R,YAAY,KAAMyvC,EAAOlhD,OAAS,GACrCD,EAAIqhD,EAAgBphD,OAAS,GAC7BygD,EAAYtmD,KAAK,CAAEmnD,OAAQ,GAAIC,QAAQ,KAQ3CF,EAHCA,EAGaP,EAAa3yC,QAAQ+yC,EAAQG,EAAcH,EAAOlhD,QAFlD8gD,EAAa3yC,QAAQ+yC,GAMvCF,GADAD,EAAaD,EAAat9C,UAAU69C,EAAaP,EAAa3yC,QAAQ,KAAMkzC,EAAc,KACtEn4C,MAAM,gCAAgCqf,OAC1D04B,EAAO9nD,EAAMoI,WAAWy/C,EAAO93C,MAAM,UAAUqf,SAEnC,KAAO04B,GAAQ,KACvBE,EAAYJ,EAAW73C,MAAM,cAEzBu3C,EAAYA,EAAYzgD,OAAS,GAAGshD,OAAOnnD,KAAK2B,KAAK8xB,MAAMuzB,EAAU,KAGzEV,EAAYA,EAAYzgD,OAAS,GAAGuhD,QAAS,GAKrD,OAAOd,CACX,CAoKwCe,CAAmBZ,GAC/B9uC,EAAQ,EAGR2uC,EAAYJ,QAAQrgD,UACpBwM,EAAUq0C,EAAU/uC,IACRyvC,QAERpkD,EAAEwjD,QAAQn0C,EAAQ80C,OAAOthD,OAASwM,EAAQ80C,OAAS,GAAI,UAE3DxvC,KAEA2uC,EAAYH,UAAUtgD,UACtBwM,EAAUq0C,EAAU/uC,IACRyvC,QAGRpkD,EAAEwjD,QAAQ,GAAI,WAElB7uC,KAEA2uC,EAAYF,QAAQvgD,SACpBwM,EAAUq0C,EAAU/uC,IACRyvC,QACRpkD,EAAEwjD,QAAQn0C,EAAQ80C,OAAQ,SAGtC,EACAp6B,MAAO,SAAS05B,EAAUI,EAAQ95B,GAC9B/pB,EAAE+pB,MAAM05B,EAAUI,EAAQ95B,EAC9B,GACDvnB,GACP,KAKf,CAzhBD,CAyhBGrG,OAAOH,MAAM+G,QACF/G,OAWd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfsC,EAAUC,MAAMD,QAChB0E,EAAgBhF,EAAEgF,cAClBkT,EAAMlY,EAAEkY,IACR7X,EAAOL,EAAEK,KACTD,EAASJ,EAAEI,OACXysB,EAAS7uB,EAAM6uB,OAGfy5B,EAFQtoD,EAAMiH,MAEQ7E,OAAO,CAC7BoF,KAAM,SAAShB,GACX,IAAIc,EAAOjI,KACPgnD,EAAQ7/C,EAAQ6/C,MAChBkC,EAAQ/hD,EAAQ+hD,MAChB9zB,EAAQjuB,EAAQiuB,MAChB+zB,EAAShiD,EAAQgiD,OACjBC,EAAYjiD,EAAQiiD,UACpBh7C,EAAOjH,EAAQiH,KAEnB,GAAI86C,EAAO,CACP,GAAIvhD,EAAcuhD,GAAQ,CACtB,IAAIlhD,EAAOb,EAAQkiD,WAAa1oD,EAAMyN,KAAKk7C,MAEvCJ,EAAMz5B,QACNzsB,EAAKkmD,EAAMz5B,QAAQ,SAAS1J,EAAOrd,GAC3Bf,EAAce,IAAUA,EAAMqd,MACzBplB,EAAMuI,WAAWR,EAAMqd,SACxBrd,EAAQ3F,EAAO2F,EAAO,CAAEqd,MAAO9d,EAAKunB,OAAO9mB,EAAMqd,UAGrDrd,EAAQ,CAAEqd,MAAO9d,EAAKunB,OAAO9mB,IAEjCwgD,EAAMz5B,OAAO1J,GAASrd,CAC1B,IAGJ,IAAI2nB,EAAK64B,EAAM74B,GACf,GAAIA,EAAI,CACJ,IAAIk5B,EAAU,CAAC,EAEfA,EAAQthD,EAAKuhD,cAAcn5B,GAAI,IAAS,CAAEtK,MAAO9d,EAAKunB,OAAOa,IAC7D64B,EAAMz5B,OAAS1sB,EAAOwmD,EAASL,EAAMz5B,QACrCy5B,EAAM74B,GAAKpoB,EAAKuhD,cAAcn5B,EAClC,CACA64B,EAAQlhD,EAAKvI,OAAOypD,EACxB,CAEAjhD,EAAKihD,MAAQA,CACjB,CAwDA,GAtDIlC,IACoB,iBAATA,GACPA,EAAQ/+C,EAAKunB,OAAOw3B,GACpB/+C,EAAK++C,MAAQ,SAAS54C,GAClB,OAAOoL,SAASwtC,EAAM54C,GAAO,GACjC,GACuB,mBAAT44C,IACd/+C,EAAK++C,MAAQA,IAIjBmC,IACqB,iBAAVA,GACPA,EAASlhD,EAAKunB,OAAO25B,GACrBlhD,EAAKkhD,OAAS,SAAS/6C,GACnB,OAAO+6C,EAAO/6C,IAAS,IAC3B,GACwB,mBAAV+6C,IACdlhD,EAAKkhD,OAASA,IAIlB/6C,IACmB,iBAARA,GACPA,EAAOnG,EAAKuhD,cAAcp7C,GAC1BnG,EAAKmG,KAAO,SAAS1F,GACjB,IACI+gD,EADA3yC,EAAS7O,EAAKyhD,SAAShhD,EAAO0F,GAKlC,OAFA0I,EAAS7T,EAAQ6T,GAAUA,EAAS,CAACA,GAEjC7O,EAAKihD,OAASA,EAAMz5B,QACpBg6B,EAAgB,IAAIxhD,EAAKihD,MAElBruC,EAAI/D,GAAQ,SAASpO,GACxB,GAAIA,EAAO,CACP,IAAiBqd,EAAb4jC,EAAS,CAAC,EAEd,IAAK5jC,KAASmjC,EAAMz5B,OAChBk6B,EAAO5jC,GAAS0jC,EAAcG,OAAO7jC,EAAOmjC,EAAMz5B,OAAO1J,GAAOA,MAAMrd,IAG1E,OAAOihD,CACX,CACJ,KAGG7yC,CACX,GACsB,mBAAR1I,IACdnG,EAAKmG,KAAOA,IAIA,mBAATgnB,EAAqB,CAC5B,IAAIy0B,EAAW5hD,EAAKmtB,MAEpBntB,EAAKmtB,MAAQ,SAAShnB,GAClB,IAAI07C,EAAM10B,EAAM7qB,KAAKtC,EAAMmG,GAC3B,OAAOy7C,EAASt/C,KAAKtC,EAAM6hD,EAC/B,CACJ,CAEwB,mBAAbV,IACPnhD,EAAKmhD,UAAYA,EAEzB,EACApC,MAAO,SAASlwC,GACZ,OAAO9W,KAAKoO,KAAK0I,GAAQtP,MAC7B,EACA2hD,OAAQ,SAAS/6C,GACb,OAAOA,EAAOA,EAAK+6C,OAAS,IAChC,EACAC,UAAW,SAASh7C,GAChB,OAAOA,CACX,EACA27C,SAAU,SAASl+C,GACf,IACIm+C,EACA3mB,EACAvN,EACAqC,EACArwB,EACAogC,EAGAt+B,EATAkN,EAAS,CAAC,EAOVmzC,EAAap+C,EAAQo+C,WACrBC,EAAiBD,EAAWziD,OAGhC,IAAKoC,EAAM,EAAGA,EAAMsgD,EAAgBtgD,IAEhCkN,EAAO,KADPoxB,EAAY+hB,EAAWrgD,IACAuuB,UAAY+P,EAAUpE,UAGjD,IAAKT,EAAOx3B,EAAQs+C,WAAY9mB,EAAMA,EAAOA,EAAK+mB,YAG7B,KAFjBt0B,EAAWuN,EAAKvN,WAEmB,IAAbA,EAElBhf,EAAO,SAAWusB,EAAKS,UACH,IAAbhO,IAEPk0B,EAAahqD,KAAK+pD,SAAS1mB,GAI3Bv7B,EAASgP,EAFTqhB,EAAWkL,EAAKlL,UAIZl1B,EAAQ6E,GAERA,EAAOnG,KAAKqoD,GAEZliD,EAlKxB,YAiK+BA,EACE,CAACA,EAAQkiD,GAETA,EAGblzC,EAAOqhB,GAAYrwB,GAG3B,OAAOgP,CACX,EAEA4yC,SAAU,SAAShhD,EAAOwmB,GAQtB,IAPA,IACIpnB,EACAgP,EACAtP,EACA6iD,EACAzgD,EALAwlB,EAAUF,EAAWtkB,MAAM,KAOxB9C,EAASsnB,EAAQhZ,SAGpB,GAFA1N,EAAQA,EAAMZ,GAEV7E,EAAQyF,GAAQ,CAIhB,IAHAoO,EAAS,GACToY,EAAaE,EAAQvkB,KAAK,KAErBjB,EAAM,EAAGpC,EAASkB,EAAMlB,OAAQoC,EAAMpC,EAAQoC,IAC/CygD,EAAqBrqD,KAAK0pD,SAAShhD,EAAMkB,GAAMslB,GAE/Cm7B,EAAqBpnD,EAAQonD,GAAsBA,EAAqB,CAACA,GAEzEvzC,EAAOnV,KAAKyG,MAAM0O,EAAQuzC,GAG9B,OAAOvzC,CACX,CAGJ,OAAOpO,CACX,EAEA0sB,MAAO,SAAS00B,GACZ,IAAIlwC,EACA0wC,EACAxzC,EAAS,CAAC,EAQd,OANA8C,EAAkBkwC,EAAIlwC,iBAAmBjX,EAAE4nD,SAAST,GAAKlwC,gBAEzD0wC,EAAOtqD,KAAK+pD,SAASnwC,GAErB9C,EAAO8C,EAAgBue,UAAYmyB,EAE5BxzC,CACX,EAEA0yC,cAAe,SAAS1hD,EAAQ0iD,GAC5B,OAAK1iD,GAILA,EAASA,EAAOrF,QAAQ,MAAO,IACfA,QAAQ,MAAO,MAEpBkT,QAAQ,MAAQ,EAEhB7N,EAAOrF,QAAQ,WAAY+nD,EAAM,KAAO,UAG/C1iD,EAAO6N,QAAQ,WAAa,EAErB7N,EAAOrF,QAAQ,gBAAiB+nD,EAAM,QAAU,aAGpD1iD,EAhBI,EAiBf,EACA0nB,OAAQ,SAAS1nB,GACb,OAAO0nB,EAAOxvB,KAAKwpD,cAAc1hD,IAAS,EAC9C,IAGJnF,EAAEI,QAAO,EAAMpC,EAAMyN,KAAM,CACvB66C,cAAeA,EACfwB,QAAS,CACLX,IAAKb,IAGhB,CAxPD,CAwPGnoD,OAAOH,MAAM+G,QACF/G,OA2Bd,SAAUgC,EAAGC,GACT,IAMIiY,EANA9X,EAASJ,EAAEI,OACX4E,EAAgBhF,EAAEgF,cAClBquB,EAAgBrzB,EAAEqzB,cAClB/yB,EAAUC,MAAMD,QAChBo7B,EAAO17B,EAAE07B,KACT6pB,EAAOvlD,EAAEulD,KAETllD,EAAOL,EAAEK,KACTG,EAAOR,EAAEQ,KACTxC,EAAQG,OAAOH,MACfuI,EAAavI,EAAMuI,WACnBI,EAAa3I,EAAM2I,WACnB1B,EAAQjH,EAAMiH,MACd1B,EAAS,SACTD,EAAW,WAEXykD,EAAS,SACTC,EAAO,OACPC,EAAS,SACTC,EAAU,UACV3N,EAAS,SACT4N,EAAO,OACPC,EAAM,MACNC,EAAQ,QACRC,EAAe,eACfC,EAAW,WACXC,EAAa,aACbC,EAAc,cACdC,EAAW,WACXC,EAAO,CAACZ,EAAQC,EAAMC,EAAQC,GAC9B7I,EAAW,SAASuJ,GAAK,OAAOA,CAAG,EACnC/7B,EAAS7uB,EAAM6uB,OACfzc,EAAYpS,EAAMoS,UAClB3P,EAAOC,KACP1B,EAAO,GAAGA,KACVkJ,EAAO,GAAGA,KACVklB,EAAM,GAAGA,IACTvlB,EAAS,GAAGA,OACZ4L,EAAQ,GAAGA,MACXvP,EAAQ,GAAGA,MACXsD,EAAU,GAAGA,QACbsH,EAAW,CAAC,EAAEA,SACdoU,EAAallB,EAAM4C,QAAQsiB,WAC3B1L,EAAa,sBACbqxC,EAAa,GAEbr9C,EAAkB7E,EAAWvG,OAAO,CACpCoF,KAAM,SAAS4S,EAAOrV,GAClB,IAAIuC,EAAOjI,KAEXiI,EAAKvC,KAAOA,GAAQ+lD,EAEpBniD,EAAWvB,GAAGI,KAAKoC,KAAKtC,GAExBA,EAAKT,OAASuT,EAAMvT,OAEpBS,EAAKyjD,QAAQ3wC,EAAO9S,GACpBA,EAAK0jD,cAAgB,GACrB1jD,EAAK2jD,aAAe,EACxB,EAEAC,GAAI,SAASvyC,GACT,OAAOtZ,KAAKsZ,EAChB,EAEAnH,OAAQ,SAAS25C,GACb,IAAIliD,EAA2BlB,EAAtBlB,EAASxH,KAAKwH,OAAeukD,EAAO,IAAI7oD,MAAMsE,GAEvD,IAAKoC,EAAM,EAAGA,EAAMpC,EAAQoC,KACxBlB,EAAQ1I,KAAK4J,cAEQ6hD,IACjB/iD,EAAQA,EAAMyJ,OAAO25C,IAGzBC,EAAKniD,GAAOlB,EAGhB,OAAOqjD,CACX,EAEAp/C,OAAQxJ,EAERuoD,QAAS,SAAS79C,EAAQxG,GACtB,IACIuC,EACApC,EAFAS,EAAOjI,KAGP2M,EAAS,WACL,OAAO1E,CACX,EAIJ,IAFAZ,EAASA,GAAU,GAEduC,EAAM,EAAGpC,EAASqG,EAAOrG,OAAQoC,EAAMpC,EAAQoC,IAChDvC,EAAOuC,GAAO3B,EAAK0kB,KAAK9e,EAAOjE,GAAM+C,GAGzC,OAAOtF,CACX,EAEAslB,KAAM,SAASq/B,EAAQr/C,GACnB,IAAI1E,EAAOjI,KA0CX,OAvCe,OAAXgsD,GAA6C,oBAA1Bv6C,EAASlH,KAAKyhD,KACpBA,aAAkB/jD,EAAKvC,MAAQsmD,aAAkB1C,KAG1D0C,EAASA,aAAkBP,EAAmBO,EAAO75C,SAAW65C,EAChEA,EAAS,IAAI/jD,EAAKvC,KAAKsmD,IAG3BA,EAAOr/C,OAASA,EAEhBq/C,EAAOxiD,KAAK0zC,GAAQ,SAASv4C,GACzB,IAAIsnD,EAAUD,EAAO/8C,eAAe,gBACpChH,EAAKmC,QAAQ8yC,EAAQ,CACjBn3B,MAAOphB,EAAEohB,MACTsd,KAAM1+B,EAAE0+B,KACR/pB,MAAO3U,EAAE2U,MACT4yC,MAAOvnD,EAAEunD,OAAS,CAAClsD,MACnBotC,OAAQzoC,EAAE0+B,MAAQ4oB,EAAWtnD,EAAEyoC,QAAU,aAAgB,cAEjE,IAEA4e,EAAOxiD,KAAK6hD,GAAU,SAAS1mD,GAC3BsD,EAAK0jD,cAAchqD,KAAKgD,EAAEkjB,SAC1B5f,EAAKkkD,UAAW,EAEhBxnD,EAAEkjB,QAAQ+kB,MAAK,WACX3kC,EAAK2jD,aAAajqD,KAAKgD,EAAE0+B,MACzB,IAAI/pB,EAAQrR,EAAK0jD,cAAch2C,QAAQhR,EAAEkjB,SACzC5f,EAAK0jD,cAAcnhD,OAAO8O,EAAO,GAE5BrR,EAAK0jD,cAAcnkD,SACpBS,EAAKkkD,UAAW,EAChBlkD,EAAKmC,QAAQghD,EAAa,CAAE1E,WAAYz+C,EAAMmkD,MAAOnkD,EAAK2jD,eAC1D3jD,EAAK2jD,aAAe,GAE5B,GACJ,KAGGI,CACX,EAEAh1B,QAAS,WACL,OAAOh3B,KAAKmsD,QAChB,EAEAxqD,KAAM,WACF,IAEImV,EAFAwC,EAAQtZ,KAAKwH,OACb0kD,EAAQlsD,KAAK0rD,QAAQpkD,WAazB,OAVAwP,EAASnV,EAAKyG,MAAMpI,KAAMksD,GAErBlsD,KAAKqsD,iBACNrsD,KAAKoK,QAAQ8yC,EAAQ,CACjB9P,OAAQ,MACR9zB,MAAOA,EACP4yC,MAAOA,IAIRp1C,CACX,EAEAjQ,MAAOA,EAEPmV,KAAM,GAAGA,KAETnR,KAAMA,EAENklB,IAAK,WACD,IAAIvoB,EAASxH,KAAKwH,OAAQsP,EAASiZ,EAAI3nB,MAAMpI,MAU7C,OARIwH,GACAxH,KAAKoK,QAAQ8yC,EAAQ,CACjB9P,OAAQ,SACR9zB,MAAO9R,EAAS,EAChB0kD,MAAO,CAACp1C,KAITA,CACX,EAEAtM,OAAQ,SAAS8O,EAAOgzC,EAASnd,GAC7B,IACIr4B,EAAQvP,EAAGwpB,EADXm7B,EAAQlsD,KAAK0rD,QAAQ7kD,EAAM0D,KAAKjD,UAAW,IAK/C,IAFAwP,EAAStM,EAAOpC,MAAMpI,KAAM,CAACsZ,EAAOgzC,GAASluC,OAAO8tC,KAEzC1kD,OAUP,IATKxH,KAAKqsD,kBACNrsD,KAAKoK,QAAQ8yC,EAAQ,CACjB9P,OAAQ,SACR9zB,MAAOA,EACP4yC,MAAOlsD,KAAKusD,WAAavsD,KAAKusD,UAAU/kD,OAASsP,EAAOsH,OAAOpe,KAAKusD,WAAaz1C,IAErF9W,KAAKusD,UAAY,IAGhBhlD,EAAI,EAAGwpB,EAAMja,EAAOtP,OAAQD,EAAIwpB,EAAKxpB,IAClCuP,EAAOvP,IAAMuP,EAAOvP,GAAGguC,UACvBz+B,EAAOvP,GAAG0C,OAAOizC,GAc7B,OATI/N,IACKnvC,KAAKqsD,iBACNrsD,KAAKoK,QAAQ8yC,EAAQ,CACjB9P,OAAQ,MACR9zB,MAAOA,EACP4yC,MAAOA,KAIZp1C,CACX,EAEAV,MAAO,WACH,IAAI5O,EAASxH,KAAKwH,OAAQsP,EAASV,EAAMhO,MAAMpI,MAU/C,OARIwH,GACAxH,KAAKoK,QAAQ8yC,EAAQ,CACjB9P,OAAQ,SACR9zB,MAAO,EACP4yC,MAAO,CAACp1C,KAITA,CACX,EAEA3M,QAAS,WACL,IACI2M,EADAo1C,EAAQlsD,KAAK0rD,QAAQpkD,WAWzB,OARAwP,EAAS3M,EAAQ/B,MAAMpI,KAAMksD,GAE7BlsD,KAAKoK,QAAQ8yC,EAAQ,CACjB9P,OAAQ,MACR9zB,MAAO,EACP4yC,MAAOA,IAGJp1C,CACX,EAEAnB,QAAS,SAASw5B,GACd,IACIvlC,EACApC,EAEJ,IAAKoC,EAAM,EAAGpC,EAJHxH,KAIiBwH,OAAQoC,EAAMpC,EAAQoC,IAC9C,GALO5J,KAKE4J,KAASulC,EACd,OAAOvlC,EAGf,OAAQ,CACZ,EAEAtI,QAAS,SAASsoB,EAAU4iC,GAKxB,IAJA,IAAI5iD,EAAM,EACNpC,EAASxH,KAAKwH,OACdw0B,EAAUwwB,GAAW1rD,OAElB8I,EAAMpC,EAAQoC,IACjBggB,EAASrf,KAAKyxB,EAASh8B,KAAK4J,GAAMA,EAAK5J,KAE/C,EAEA6a,IAAK,SAAS+O,EAAU4iC,GAMpB,IALA,IAAI5iD,EAAM,EACNkN,EAAS,GACTtP,EAASxH,KAAKwH,OACdw0B,EAAUwwB,GAAW1rD,OAElB8I,EAAMpC,EAAQoC,IACjBkN,EAAOlN,GAAOggB,EAASrf,KAAKyxB,EAASh8B,KAAK4J,GAAMA,EAAK5J,MAGzD,OAAO8W,CACX,EAEAitC,OAAQ,SAASn6B,GACb,IACI9S,EADAlN,EAAM,EAENpC,EAASxH,KAAKwH,OAQlB,IANwB,GAApBF,UAAUE,OACVsP,EAASxP,UAAU,GACZsC,EAAMpC,IACbsP,EAAS9W,KAAK4J,MAGXA,EAAMpC,EAAQoC,IACjBkN,EAAS8S,EAAS9S,EAAQ9W,KAAK4J,GAAMA,EAAK5J,MAG9C,OAAO8W,CACX,EAEA21C,YAAa,SAAS7iC,GAClB,IACI9S,EADAlN,EAAM5J,KAAKwH,OAAS,EASxB,IANwB,GAApBF,UAAUE,OACVsP,EAASxP,UAAU,GACZsC,EAAM,IACbkN,EAAS9W,KAAK4J,MAGXA,GAAO,EAAGA,IACbkN,EAAS8S,EAAS9S,EAAQ9W,KAAK4J,GAAMA,EAAK5J,MAG9C,OAAO8W,CACX,EAEAyY,OAAQ,SAAS3F,EAAU4iC,GAOvB,IANA,IAEIrd,EAFAvlC,EAAM,EACNkN,EAAS,GAETtP,EAASxH,KAAKwH,OACdw0B,EAAUwwB,GAAW1rD,OAElB8I,EAAMpC,EAAQoC,IACjBulC,EAAOnvC,KAAK4J,GACRggB,EAASrf,KAAKyxB,EAASmT,EAAMvlC,EAAK5J,QAClC8W,EAAOA,EAAOtP,QAAU2nC,GAIhC,OAAOr4B,CACX,EAEAqf,KAAM,SAASvM,EAAU4iC,GAMrB,IALA,IACIrd,EADAvlC,EAAM,EAENpC,EAASxH,KAAKwH,OACdw0B,EAAUwwB,GAAW1rD,OAElB8I,EAAMpC,EAAQoC,IAEjB,GADAulC,EAAOnvC,KAAK4J,GACRggB,EAASrf,KAAKyxB,EAASmT,EAAMvlC,EAAK5J,MAClC,OAAOmvC,CAGnB,EAEAud,MAAO,SAAS9iC,EAAU4iC,GAMtB,IALA,IACIrd,EADAvlC,EAAM,EAENpC,EAASxH,KAAKwH,OACdw0B,EAAUwwB,GAAW1rD,OAElB8I,EAAMpC,EAAQoC,IAEjB,GADAulC,EAAOnvC,KAAK4J,IACPggB,EAASrf,KAAKyxB,EAASmT,EAAMvlC,EAAK5J,MACnC,OAAO,EAIf,OAAO,CACX,EAEA2sD,KAAM,SAAS/iC,EAAU4iC,GAMrB,IALA,IACIrd,EADAvlC,EAAM,EAENpC,EAASxH,KAAKwH,OACdw0B,EAAUwwB,GAAW1rD,OAElB8I,EAAMpC,EAAQoC,IAEjB,GADAulC,EAAOnvC,KAAK4J,GACRggB,EAASrf,KAAKyxB,EAASmT,EAAMvlC,EAAK5J,MAClC,OAAO,EAIf,OAAO,CACX,EAGAqM,OAAQ,SAAS8iC,GACb,IAAIvlC,EAAM5J,KAAK2V,QAAQw5B,IAEV,IAATvlC,GACA5J,KAAKwK,OAAOZ,EAAK,EAEzB,EAEAgjD,MAAO,WACH5sD,KAAKwK,OAAO,EAAGxK,KAAKwH,OACxB,IAIkB,oBAAXqlD,QAA0BA,OAAO3pB,WAAa/0B,EAAgB9F,UAAUwkD,OAAO3pB,YACtF/0B,EAAgB9F,UAAUwkD,OAAO3pB,UAAY,GAAG2pB,OAAO3pB,WAG3D,IAAI70B,EAAsBF,EAAgBpL,OAAO,CAC7CoF,KAAM,SAASiG,EAAM1I,EAAM2E,GAGvBf,EAAWvB,GAAGI,KAAKoC,KAAKvK,MAExBA,KAAK0F,KAAOA,GAAQ+lD,EAEhBphD,IACArK,KAAKuJ,QAAUc,GAGnB,IAAK,IAAIT,EAAM,EAAGA,EAAMwE,EAAK5G,OAAQoC,IACjC5J,KAAK4J,GAAOwE,EAAKxE,GAGrB5J,KAAKwH,OAASoC,EACd5J,KAAK8sD,QAfU,WAAa,OAAO9sD,IAAM,EAejBwJ,KAAKxJ,MAC7BA,KAAK2rD,cAAgB,GACrB3rD,KAAK4rD,aAAe,EACxB,EACAC,GAAI,SAASvyC,GACT,IAAI61B,EAAOnvC,KAAKsZ,GAQhB,OANM61B,aAAgBnvC,KAAK0F,KAGvBypC,EAAKxiC,OAAS3M,KAAK8sD,QAFnB3d,EAAOnvC,KAAKsZ,GAAStZ,KAAK2sB,KAAKwiB,EAAMnvC,KAAK8sD,SAKvC3d,CACX,IAGJ,SAAS4d,EAAa/wB,EAASt2B,EAAMqgB,EAAO/F,GACxC,OAAO,SAASrb,GACZ,IAAgBmN,EAAZqO,EAAQ,CAAC,EAEb,IAAKrO,KAAOnN,EACRwb,EAAMrO,GAAOnN,EAAEmN,GAIfqO,EAAM4F,MADN/F,EACc+F,EAAQ,IAAMphB,EAAEohB,MAEhBA,EAGdrgB,GAAQw3C,GAAUlhB,EAAQgxB,eAC1BhxB,EAAQgxB,cAAc7sC,GAG1B6b,EAAQ5xB,QAAQ1E,EAAMya,EAC1B,CACJ,CAQA,SAAS8sC,EAAQvkD,EAAOwkD,GACpB,IAEIriC,EAAMsiC,EAFNr9B,EAAQ,GACRs9B,EAAY,GAehB,IAvBJ,SAAyB1kD,GACrB,MAAyB,iBAAVA,GAAsBjI,OAAO4sD,eAAe3kD,KAAWjI,OAAO4sD,eAAe,CAAC,IAClF5sD,OAAO4sD,eAAe3kD,KAAWjI,OAAO4sD,eAAe,IAAI1+C,OAC1C,iBAAVjG,CACpB,CASO4kD,CAFL5kD,EAAQA,GAAS,CAAC,KAGd0kD,EAAY3sD,OAAO8sD,oBAAoB9sD,OAAO4sD,eAAe3kD,IAAQ6mB,QAAOi+B,GAAyB,IAApBA,EAAE73C,QAAQ,SAG/FkV,EAAOpqB,OAAO8sD,oBAAoB7kD,GAAO0V,OAAOgvC,GAEhDD,EAAqB3B,EAAWj8B,QAAO,SAASzd,GAC5C,OAAO+Y,EAAKlV,QAAQ7D,GAAO,CAC/B,IAEOpJ,GACHjI,OAAO8sD,oBAAoB7kD,GAAOpH,SAAQ,SAASuuB,IAClB,IAAzBC,EAAMna,QAAQka,MAAkBq9B,GAAoBC,EAAmBx3C,QAAQka,GAAQ,IACvFC,EAAMnuB,KAAKkuB,EAEnB,IACAnnB,EAAQjI,OAAO4sD,eAAe3kD,GAGlC,OAAOonB,CACX,CAEA07B,EAAayB,EAAQ,CAAC,GAAG,GAEzB,IAAIxB,EAAmBniD,EAAWvG,OAAO,CACrCoF,KAAM,SAASO,GACX,IACIZ,EADAG,EAAOjI,KAEP6qB,EAAOoiC,EAAQvkD,GAAO,GACtBiE,EAAS,WACL,OAAO1E,CACX,EAEJqB,EAAWvB,GAAGI,KAAKoC,KAAKvK,MAExBA,KAAKytD,UAAY,CAAC,EAElB5iC,EAAKvpB,SAAQ,SAASykB,GAGI,iBAFtBje,EAASY,EAAMqd,KAEmBje,IAAWA,EAAOmB,SAA8B,KAAnB8c,EAAMjb,OAAO,KACxEhD,EAASG,EAAK0kB,KAAK7kB,EAAQie,EAAOpZ,IAGtC1E,EAAK8d,GAASje,CAClB,IAEAG,EAAKylD,IAAM/sD,EAAMwvB,MACrB,EAEAw9B,gBAAiB,SAAS5nC,EAAO+lC,GAC7B,OAAO9rD,KAAKiP,eAAe8W,IAAoB,cAAVA,GAAmC,YAAVA,IAAyB+lC,GAAsBA,EAAmB/lC,WAAkB/lB,KAAK+lB,KAAW9f,IAAuB,QAAV8f,CACnL,EAEAzkB,QAAS,SAASksD,GACd,IAAK,IAAIjmD,KAAKvH,KACNA,KAAK2tD,gBAAgBpmD,IACrBimD,EAAExtD,KAAKuH,GAAIA,EAGvB,EAEA4K,OAAQ,SAAS25C,GACb,IAAiBpjD,EAAOqd,EAApBjP,EAAS,CAAC,EAEd,IAAKiP,KAAS/lB,KACNA,KAAK2tD,gBAAgB5nC,EAAO+lC,OAC5BpjD,EAAQ1I,KAAK+lB,cAEQ0lC,GAAoB/iD,aAAiByF,KACtDzF,EAAQA,EAAMyJ,OAAO25C,IAGzBh1C,EAAOiP,GAASrd,GAIxB,OAAOoO,CACX,EAEAmZ,IAAK,SAASlK,GACV,IAAI9d,EAAOjI,KAUX,OARAiI,EAAKmC,QAAQ2gD,EAAK,CAAEhlC,MAAOA,IAEb,SAAVA,EACS9d,EAEAtH,EAAM6uB,OAAOzJ,GAAO,EAApBplB,CAA0BsH,EAI3C,EAEA2lD,KAAM,SAAS7nC,EAAOrd,GAClB,IACImlD,EAAY9nC,EAAMpQ,QAAQ,MAAQ,EAEtC,GAAIk4C,EAIA,IAHA,IAAIC,EAAQ/nC,EAAMnb,MAAM,KACpB2kC,EAAO,GAEJue,EAAMtmD,OAAS,GAAG,CACrB+nC,GAAQue,EAAM13C,QACd,IAAIuX,EAAMhtB,EAAM6uB,OAAO+f,GAAM,EAAnB5uC,CATPX,MAUH,GAAI2tB,aAAe89B,EAEf,OADA99B,EAAIuC,IAAI49B,EAAMjjD,KAAK,KAAMnC,GAClBmlD,EAEXte,GAAQ,GACZ,CAKJ,OAFA5uC,EAAM+uB,OAAO3J,EAAbplB,CAlBWX,KAkBe0I,GAEnBmlD,CACX,EAEA39B,IAAK,SAASnK,EAAOrd,GACjB,IAAIT,EAAOjI,KACP+tD,GAAiB,EACjBF,EAAY9nC,EAAMpQ,QAAQ,MAAQ,EAClC3B,EAAUrT,EAAM6uB,OAAOzJ,GAAO,EAApBplB,CAA0BsH,GAsBxC,OApBI+L,IAAYtL,IACRsL,aAAmB1K,GAActJ,KAAKytD,UAAU1nC,KAC5C/lB,KAAKytD,UAAU1nC,GAAOkK,KACvBjc,EAAQ/J,OAAO8gD,EAAK/qD,KAAKytD,UAAU1nC,GAAOkK,KAE7Cjc,EAAQ/J,OAAOizC,EAAQl9C,KAAKytD,UAAU1nC,GAAOw4B,UAGjDwP,EAAiB9lD,EAAKmC,QAAQ,MAAO,CAAE2b,MAAOA,EAAOrd,MAAOA,OAGnDmlD,IACDnlD,EAAQT,EAAK0kB,KAAKjkB,EAAOqd,GAAO,WAAa,OAAO9d,CAAM,OAExDA,EAAK2lD,KAAK7nC,EAAOrd,IAAUqd,EAAMpQ,QAAQ,MAAQ,GAAKoQ,EAAMpQ,QAAQ,MAAQ,IAC9E1N,EAAKmC,QAAQ8yC,EAAQ,CAAEn3B,MAAOA,MAKnCgoC,CACX,EAEAphD,OAAQxJ,EAERwpB,KAAM,SAASq/B,EAAQjmC,EAAOpZ,GAC1B,IACIsjB,EACAsuB,EAFAt2C,EAAOjI,KAGP0F,EAAO+L,EAASlH,KAAKyhD,GAEzB,GAAc,MAAVA,IAA4B,oBAATtmD,GAAuC,mBAATA,GAA4B,CAC7E,IAAIsoD,EAAoBhC,aAAkB79C,EACtC8/C,EAAejC,aAAkB19C,GAExB,oBAAT5I,GAA+BuoD,GAAiBD,GAWhC,mBAATtoD,GAA6BsoD,GAAqBC,KACpDD,GAAsBC,IACvBjC,EAAS,IAAI79C,EAAgB69C,IAGjCzN,EAASwO,EAAa9kD,EAAMi1C,EAAQn3B,GAAO,GAE3CimC,EAAOxiD,KAAK0zC,EAAQqB,GAEpBt2C,EAAKwlD,UAAU1nC,GAAS,CAAEw4B,OAAQA,KAnB5ByN,aAAkBP,IACpBO,EAAS,IAAIP,EAAiBO,IAGlC/7B,EAAM88B,EAAa9kD,EAAM8iD,EAAKhlC,GAAO,GACrCimC,EAAOxiD,KAAKuhD,EAAK96B,GACjBsuB,EAASwO,EAAa9kD,EAAMi1C,EAAQn3B,GAAO,GAC3CimC,EAAOxiD,KAAK0zC,EAAQqB,GAEpBt2C,EAAKwlD,UAAU1nC,GAAS,CAAEkK,IAAKA,EAAKsuB,OAAQA,IAahDyN,EAAOr/C,OAASA,CACpB,CAEA,OAAOq/C,CACX,IAGJ,SAASkC,EAAM9oD,EAAGjB,GACd,GAAIiB,IAAMjB,EACN,OAAO,EAGX,IAAkD4hB,EAA9CooC,EAAQxtD,EAAM+E,KAAKN,GAEvB,GAAI+oD,IAF+BxtD,EAAM+E,KAAKvB,GAG1C,OAAO,EAGX,GAAc,SAAVgqD,EACA,OAAO/oD,EAAE6D,YAAc9E,EAAE8E,UAG7B,GAAc,WAAVklD,GAAgC,UAAVA,EACtB,OAAO,EAGX,IAAKpoC,KAAS3gB,EACV,IAAK8oD,EAAM9oD,EAAE2gB,GAAQ5hB,EAAE4hB,IACnB,OAAO,EAIf,OAAO,CACX,CAEA,IAAIqoC,EAAU,CACV3iD,OAAU,SAAS/C,GACf,cAAWA,IAAUxC,GAAkC,SAAxBwC,EAAMmQ,cAC1B,KAEJlY,EAAMoI,WAAWL,EAC5B,EAEAkO,KAAQ,SAASlO,GACb,cAAWA,IAAUxC,GAAkC,SAAxBwC,EAAMmQ,cAC1B,KAEJlY,EAAM2d,UAAU5V,EAC3B,EAEA2lD,QAAW,SAAS3lD,GAChB,cAAWA,IAAUxC,EACW,SAAxBwC,EAAMmQ,cACC,KAEwB,SAAxBnQ,EAAMmQ,cAGL,MAATnQ,IAAkBA,EAAQA,CACrC,EAEAiJ,OAAU,SAASjJ,GACf,cAAWA,IAAUxC,GAAkC,SAAxBwC,EAAMmQ,cAC1B,KAEK,MAATnQ,EAAiBA,EAAQ,GAAMA,CAC1C,EAEA4lD,QAAW,SAAS5lD,GAChB,OAAOA,CACX,GAGA8hC,GAAgB,CAChB74B,OAAU,GACVlG,OAAU,EACVmL,KAAQ,IAAIjI,KACZ0/C,SAAW,EACXC,QAAW,IAkBf,IAAIhF,GAAQmC,EAAiB1oD,OAAO,CAChCoF,KAAM,SAASiG,GACX,IAAInG,EAAOjI,KAEX,KAAKoO,GAAQzL,EAAEqzB,cAAc5nB,MACzBA,EAAOzL,EAAEI,OAAO,CAAC,EAAGkF,EAAKrH,SAAUwN,GAE/BnG,EAAKsmD,eACL,IAAK,IAAI3kD,EAAM,EAAGA,EAAM3B,EAAKsmD,cAAc/mD,OAAQoC,IAAO,CACrD,IAAIxH,EAAO6F,EAAKsmD,cAAc3kD,GAC9BwE,EAAKhM,GAAQ6F,EAAKrH,SAASwB,IAChC,CAIRqpD,EAAiB1jD,GAAGI,KAAKoC,KAAKtC,EAAMmG,GAEpCnG,EAAK8mC,OAAQ,EACb9mC,EAAKumD,YAAc,CAAC,EAEhBvmD,EAAKshD,UACLthD,EAAKooB,GAAKpoB,EAAKgoB,IAAIhoB,EAAKshD,SAEpBthD,EAAKooB,KAAOztB,IACZqF,EAAKooB,GAAKpoB,EAAKwmD,YAG3B,EAEAd,gBAAiB,SAAS5nC,GACtB,OAAO0lC,EAAiB1jD,GAAG4lD,gBAAgBpjD,KAAKvK,KAAM+lB,IACxC,QAAVA,KAAsC,OAAjB/lB,KAAKupD,SAA8B,OAAVxjC,IACpC,UAAVA,GAA+B,gBAAVA,GAAqC,eAAVA,CACxD,EAEA6jC,OAAQ,SAAS7jC,EAAOrd,GACpB,IAGI0sB,EAFAs5B,EAAY3oC,EACZ0J,EAFOzvB,KAEQyvB,QAAU,CAAC,EAc9B,OAXA1J,EAAQ0J,EAAO1J,MAEXA,EA1DZ,SAAwB4H,EAAKvrB,GACzB,IAAI2jB,EACA2oC,EAEJ,IAAKA,KAAa/gC,EAAK,CAEnB,GADA5H,EAAQ4H,EAAI+gC,GACR/mD,EAAcoe,IAAUA,EAAMA,OAASA,EAAMA,QAAU3jB,EACvD,OAAO2jB,EACJ,GAAIA,IAAU3jB,EACjB,OAAO2jB,CAEf,CACA,OAAO,IACX,CA6CoB4oC,CAAel/B,EAAQi/B,IAE/B3oC,KACAqP,EAAQrP,EAAMqP,QACArP,EAAMrgB,OAChB0vB,EAAQg5B,EAAQroC,EAAMrgB,KAAKmT,gBAI5Buc,EAAQA,EAAM1sB,GAASA,CAClC,EAEAskD,cAAe,SAASroD,GACpB,IAAIyoC,EAASzoC,EAAEyoC,OAED,OAAVA,GAA6B,UAAVA,IACnBptC,KAAK+uC,OAAQ,EACb/uC,KAAKwuD,YAAY7pD,EAAEohB,QAAS,EAEpC,EAEA6oC,SAAU,SAAS7oC,GAEf,QADAA,GAAS/lB,KAAKyvB,QAAU,CAAC,GAAG1J,MACM,IAAnBA,EAAM6oC,QACzB,EAEA1+B,IAAK,SAASnK,EAAOrd,GACjB,IAAIT,EAAOjI,KACP+uC,EAAQ9mC,EAAK8mC,MAEb9mC,EAAK2mD,SAAS7oC,KAGTmoC,EAFLxlD,EAAQT,EAAK2hD,OAAO7jC,EAAOrd,GAETT,EAAKgoB,IAAIlK,IAYvB9d,EAAKmC,QAAQ,WAAY,CAAE2b,MAAOA,EAAOrd,MAAOA,KAXhDT,EAAK8mC,OAAQ,EACb9mC,EAAKumD,YAAYzoC,IAAS,EAEtB0lC,EAAiB1jD,GAAGmoB,IAAI3lB,KAAKtC,EAAM8d,EAAOrd,KAAWqmC,IACrD9mC,EAAK8mC,MAAQA,EAER9mC,EAAK8mC,QACN9mC,EAAKumD,YAAYzoC,IAAS,KAO9C,EAEA8oC,OAAQ,SAASzgD,GACb,IAEI2X,EAFA9d,EAAOjI,KACP2M,EAAS,WAAa,OAAO1E,CAAM,EAGvC,IAAK8d,KAAS3X,EAAM,CAChB,IAAI1F,EAAQ0F,EAAK2X,GAEM,KAAnBA,EAAMjb,OAAO,KACbpC,EAAQT,EAAK0kB,KAAKve,EAAK2X,GAAQA,EAAOpZ,IAG1C1E,EAAK2lD,KAAK7nC,EAAOrd,EACrB,CAEIT,EAAKshD,UACLthD,EAAKooB,GAAKpoB,EAAKgoB,IAAIhoB,EAAKshD,UAG5BthD,EAAK8mC,OAAQ,EACb9mC,EAAKumD,YAAc,CAAC,CACxB,EAEAM,MAAO,WACH,OAAO9uD,KAAKqwB,KAAOrwB,KAAKyuD,UAC5B,IAGJnF,GAAM7pD,OAAS,SAASuI,EAAMb,GACtBA,IAAYvE,IACZuE,EAAUa,EACVA,EAAOshD,IAGX,IAAIJ,EAEA9mD,EACA2jB,EACArgB,EACAgD,EACAkB,EACApC,EAEAunD,EARAlnD,EAAQ9E,EAAO,CAAEnC,SAAU,CAAC,GAAKuG,GAOjCsoB,EAAS,CAAC,EAEVY,EAAKxoB,EAAMwoB,GACX2+B,EAAiB,GAcrB,GAZI3+B,IACAxoB,EAAM0hD,QAAUl5B,GAGhBxoB,EAAMwoB,WACCxoB,EAAMwoB,GAGbA,IACAxoB,EAAMjH,SAASyvB,GAAMxoB,EAAM4mD,WAAa,IAGR,mBAAhCh9C,EAASlH,KAAK1C,EAAM4nB,QAA8B,CAClD,IAAK7lB,EAAM,EAAGpC,EAASK,EAAM4nB,OAAOjoB,OAAQoC,EAAMpC,EAAQoC,WACtDmc,EAAQle,EAAM4nB,OAAO7lB,MACA1D,EACjBupB,EAAO1J,GAAS,CAAC,EACVA,EAAMA,QACb0J,EAAO1J,EAAMA,OAASA,GAG9Ble,EAAM4nB,OAASA,CACnB,CAEA,IAAKrtB,KAAQyF,EAAM4nB,OAEf/pB,GADAqgB,EAAQle,EAAM4nB,OAAOrtB,IACRsD,MAAQ,UACrBgD,EAAQ,KACRqmD,EAAe3sD,EAEfA,SAAe2jB,EAAW,QAAM7f,EAAS6f,EAAMA,MAAQ3jB,EAElD2jB,EAAMkpC,WAAYlpC,EAAMmpC,cAGJ,mBAFrBxmD,EAAQb,EAAMjH,SAASmuD,IAAiB3sD,EAAO2sD,EAAe3sD,GAAQ2jB,EAAMmpC,eAAiBtsD,EAAcmjB,EAAMmpC,aAAe1kB,GAAc9kC,EAAKmT,iBAG/Im2C,EAAertD,KAAKS,GAIxB+E,EAAQkpB,KAAOjuB,IACfyF,EAAM4mD,WAAa/lD,GAGvBb,EAAMjH,SAASmuD,IAAiB3sD,EAAO2sD,EAAe3sD,GAAQsG,EAE1D/F,EAAEgF,cAAcoe,GAChBA,EAAMqP,MAAQrP,EAAMqP,OAASg5B,EAAQ1oD,GAErCqgB,EAAQ,CACJqP,MAAOg5B,EAAQ1oD,IAmB3B,OAdIspD,EAAexnD,OAAS,IACxBK,EAAM0mD,cAAgBS,IAG1B9F,EAAQlhD,EAAKjF,OAAO8E,IACdpI,OAAS,SAAS0H,GACpB,OAAOmiD,GAAM7pD,OAAOypD,EAAO/hD,EAC/B,EAEIU,EAAM4nB,SACNy5B,EAAMz5B,OAAS5nB,EAAM4nB,OACrBy5B,EAAMK,QAAU1hD,EAAM0hD,SAGnBL,CACX,EAEA,IAAIiG,GAAW,CACX9oC,SAAU,SAASN,GACf,OAAO7c,EAAW6c,GAASA,EAAQyJ,EAAOzJ,EAC9C,EAEAqpC,QAAS,SAASrpC,GACd,IAAIM,EAAWrmB,KAAKqmB,SAASN,GAC7B,OAAO,SAAS7gB,EAAG+W,GAIf,OAHA/W,EAAImhB,EAASnhB,GACb+W,EAAIoK,EAASpK,GAEJ,MAAL/W,GAAkB,MAAL+W,EACN,EAGF,MAAL/W,GACQ,EAGH,MAAL+W,EACO,EAGP/W,EAAEmqD,cACKnqD,EAAEmqD,cAAcpzC,GAGpB/W,EAAI+W,EAAI,EAAK/W,EAAI+W,GAAK,EAAI,CACrC,CACJ,EAEAmrC,OAAQ,SAASprC,GACb,IAAIozC,EAAUpzC,EAAKozC,SAAWpvD,KAAKovD,QAAQpzC,EAAK+J,OAEhD,MAAgB,QAAZ/J,EAAKujB,IACE,SAASr6B,EAAG+W,GACf,OAAOmzC,EAAQnzC,EAAG/W,GAAG,EACzB,EAGGkqD,CACX,EAEAE,QAAS,SAASC,GACd,OAAO,SAASrqD,EAAG+W,GACf,IACIrS,EACApC,EAFAsP,EAASy4C,EAAU,GAAGrqD,EAAG+W,GAI7B,IAAKrS,EAAM,EAAGpC,EAAS+nD,EAAU/nD,OAAQoC,EAAMpC,EAAQoC,IACnDkN,EAASA,GAAUy4C,EAAU3lD,GAAK1E,EAAG+W,GAGzC,OAAOnF,CACX,CACJ,GAGA04C,GAAiBzsD,EAAO,CAAC,EAAGosD,GAAU,CACtCM,IAAK,SAAS1pC,GACV,IAAIM,EAAWrmB,KAAKqmB,SAASN,GAC7B,OAAO,SAAS7gB,EAAG+W,GACf,IAAIyzC,EAASrpC,EAASnhB,GAClByqD,EAAStpC,EAASpK,GAOtB,OALIyzC,GAAUA,EAAOzmD,SAAW0mD,GAAUA,EAAO1mD,UAC7CymD,EAASA,EAAOzmD,UAChB0mD,EAASA,EAAO1mD,WAGhBymD,IAAWC,EACJzqD,EAAE0qD,WAAa3zC,EAAE2zC,WAGd,MAAVF,GACQ,EAGE,MAAVC,EACO,EAGPD,EAAOL,cACAK,EAAOL,cAAcM,GAGzBD,EAASC,EAAS,GAAK,CAClC,CACJ,EAEAE,KAAM,SAAS9pC,GACX,IAAIM,EAAWrmB,KAAKqmB,SAASN,GAC7B,OAAO,SAAS7gB,EAAG+W,GACf,IAAIyzC,EAASrpC,EAASnhB,GAClByqD,EAAStpC,EAASpK,GAOtB,OALIyzC,GAAUA,EAAOzmD,SAAW0mD,GAAUA,EAAO1mD,UAC7CymD,EAASA,EAAOzmD,UAChB0mD,EAASA,EAAO1mD,WAGhBymD,IAAWC,EACJzqD,EAAE0qD,WAAa3zC,EAAE2zC,WAGd,MAAVF,EACO,EAGG,MAAVC,GACQ,EAGRA,EAAON,cACAM,EAAON,cAAcK,GAGzBA,EAASC,EAAS,GAAK,CAClC,CACJ,EACAvI,OAAQ,SAASprC,GACd,OAAOhc,KAAKgc,EAAKujB,KAAKvjB,EAAK+J,MAC9B,IAGJlL,EAAM,SAASE,EAAO6O,GAClB,IAAIhgB,EAAKpC,EAASuT,EAAMvT,OAAQsP,EAAS,IAAI5T,MAAMsE,GAEnD,IAAKoC,EAAM,EAAGA,EAAMpC,EAAQoC,IACxBkN,EAAOlN,GAAOggB,EAAS7O,EAAMnR,GAAMA,EAAKmR,GAG5C,OAAOjE,CACX,EAEA,IAAIg5C,GAAY,WAEZ,SAASp+C,EAAMvC,GAIX,MAHkB,iBAAPA,IACPA,EAAMA,EAAI1M,QAAQ,WAAY,KAE3Ba,KAAKyP,UAAU5D,EAC1B,CAEA,SAAS4gD,EAAOC,GACZ,OAAO,SAAS9qD,EAAG+W,EAAGg0C,EAAQ5M,GAM1B,OALApnC,GAAK,GACDg0C,IACA/qD,EAAI,IAAMA,EAAI,qBAAuB,EAA2B,uBAAyBm+C,EAAyB,KAAO,kBACzHpnC,EAAK,EAA2BA,EAAEsnC,kBAAkBF,GAA0BpnC,EAAEpD,eAE7Em3C,EAAK9qD,EAAGwM,EAAMuK,GAAIg0C,EAC7B,CACJ,CAEA,SAAS7M,EAASM,EAAIx+C,EAAG+W,EAAGg0C,EAAQ5M,GAChC,GAAS,MAALpnC,EAAW,CACX,UAAWA,IAAM/V,EAAQ,CACrB,IAAI0Q,EAAOuD,EAAWvB,KAAKqD,GACvBrF,EACAqF,EAAI,IAAItN,MAAMiI,EAAK,IACZq5C,GACPh0C,EAAIvK,EAAO,EAA2BuK,EAAEsnC,kBAAkBF,GAA0BpnC,EAAEpD,eACtF3T,EAAI,KAAOA,EAAI,eAAiB,EAA2B,uBAAyBm+C,EAAyB,KAAO,mBAEpHpnC,EAAIvK,EAAMuK,EAElB,CAEIA,EAAEhT,UAEF/D,EAAI,IAAMA,EAAI,KAAOA,EAAI,YAAcA,EAAI,cAAgBA,EAAI,IAC/D+W,EAAIA,EAAEhT,UAEd,CAEA,OAAO/D,EAAI,IAAMw+C,EAAK,IAAMznC,CAChC,CAEA,SAASi0C,EAAej8C,GASpB,IAAK,IAAIjF,EAAK,KAAMmhD,GAAM,EAAO5oD,EAAI,EAAGA,EAAI0M,EAAQzM,SAAUD,EAAG,CAC7D,IAAIyQ,EAAK/D,EAAQnJ,OAAOvD,GACxB,GAAI4oD,EACAnhD,GAAM,KAAOgJ,MACV,IAAU,KAANA,EAAW,CAClBm4C,GAAM,EACN,QACJ,CAAiB,KAANn4C,EACPhJ,GAAM,KACO,KAANgJ,EACPhJ,GAAM,IACC,kCAAqC2G,QAAQqC,IAAO,EAC3DhJ,GAAM,KAAOgJ,EAEbhJ,GAAMgJ,CACV,CACAm4C,GAAM,CACV,CACA,OAAOnhD,EAAK,IAChB,CAEA,MAAO,CACH0C,MAAO,SAAShJ,GACZ,OAAIA,GAASA,EAAMO,QACR,YAAcP,EAAMO,UAAY,IAEpCyI,EAAMhJ,EACjB,EACAsvB,GAAI,SAAS9yB,EAAG+W,EAAGg0C,EAAQ5M,GACvB,OAAOD,EAAS,KAAMl+C,EAAG+W,EAAGg0C,EAAQ5M,EACxC,EACAJ,IAAK,SAAS/9C,EAAG+W,EAAGg0C,EAAQ5M,GACxB,OAAOD,EAAS,KAAMl+C,EAAG+W,EAAGg0C,EAAQ5M,EACxC,EACAZ,GAAI,SAASv9C,EAAG+W,EAAGg0C,GACf,OAAO7M,EAAS,IAAKl+C,EAAG+W,EAAGg0C,EAC/B,EACAvN,IAAK,SAASx9C,EAAG+W,EAAGg0C,GAChB,OAAO7M,EAAS,KAAMl+C,EAAG+W,EAAGg0C,EAChC,EACAlN,GAAI,SAAS79C,EAAG+W,EAAGg0C,GACf,OAAO7M,EAAS,IAAKl+C,EAAG+W,EAAGg0C,EAC/B,EACAjN,IAAK,SAAS99C,EAAG+W,EAAGg0C,GAChB,OAAO7M,EAAS,KAAMl+C,EAAG+W,EAAGg0C,EAChC,EACA/M,WAAY6M,GAAO,SAAS7qD,EAAG+W,GAC3B,OAAO/W,EAAI,gBAAkB+W,EAAI,WACrC,IACAsmC,iBAAkBwN,GAAO,SAAS7qD,EAAG+W,GACjC,OAAO/W,EAAI,gBAAkB+W,EAAI,YACrC,IACAumC,SAAUuN,GAAO,SAAS7qD,EAAG+W,GAEzB,OAAO/W,EAAI,YAAc+W,EAAI,KAAO/W,EAAI,cADhC+W,EAAIA,EAAEzU,OAAS,EAAI,GACgC,QAC/D,IACA86C,eAAgByN,GAAO,SAAS7qD,EAAG+W,GAE/B,OAAO/W,EAAI,YAAc+W,EAAI,KAAO/W,EAAI,cADhC+W,EAAIA,EAAEzU,OAAS,EAAI,GACgC,OAC/D,IACA+tB,SAAUw6B,GAAO,SAAS7qD,EAAG+W,GACzB,OAAO/W,EAAI,YAAc+W,EAAI,QACjC,IACAomC,eAAgB0N,GAAO,SAAS7qD,EAAG+W,GAC/B,OAAO/W,EAAI,YAAc+W,EAAI,SACjC,IACAza,QAASuuD,GAAO,SAAS7qD,EAAG+W,GAExB,OAAOi0C,EADPj0C,EAAIA,EAAEjR,UAAU,EAAGiR,EAAEzU,OAAS,IACH,SAAWtC,EAAI,GAC9C,IACAkrD,aAAcL,GAAO,SAAS7qD,EAAG+W,GAE7B,MAAO,IAAMi0C,EADbj0C,EAAIA,EAAEjR,UAAU,EAAGiR,EAAEzU,OAAS,IACG,SAAWtC,EAAI,GACpD,IACAy9C,QAAS,SAASz9C,GACd,OAAOA,EAAI,SACf,EACA09C,WAAY,SAAS19C,GACjB,OAAOA,EAAI,SACf,EACA49C,OAAQ,SAAS59C,GACb,MAAO,IAAMA,EAAI,WACrB,EACA29C,UAAW,SAAS39C,GAChB,MAAO,IAAMA,EAAI,WACrB,EACAi9C,cAAe,SAASj9C,GACpB,MAAO,IAAMA,EAAI,kBAAoBA,EAAI,UAC7C,EACAk9C,iBAAkB,SAASl9C,GACvB,MAAO,IAAMA,EAAI,kBAAoBA,EAAI,UAC7C,EAEP,CAlJe,GAoJhB,SAASmrD,GAAMjiD,GACXpO,KAAKoO,KAAOA,GAAQ,EACxB,CA+DA,SAASkiD,GAAcvqC,EAAOwZ,GAC1B,GAAIxZ,EAAO,CACP,IAAIwqC,SAAoBxqC,IAAU7f,EAAS,CAAE6f,MAAOA,EAAOwZ,IAAKA,GAAQxZ,EACxEyqC,EAAcvtD,EAAQstD,GAAcA,EAAcA,IAAe3tD,EAAc,CAAC2tD,GAAc,GAE9F,OAAOlyB,EAAKmyB,GAAa,SAAShsD,GAAK,QAASA,EAAE+6B,GAAK,GAC3D,CACJ,CAEA,SAASkxB,GAAWC,EAAOnxB,GACvB,IAAIoxB,EAAa,CAAC,EAElB,GAAID,EAIA,IAHA,IAAIH,SAAoBG,IAAUxqD,EAAS,CAAE6f,MAAO2qC,EAAOnxB,IAAKA,GAAQmxB,EACxEF,EAAcvtD,EAAQstD,GAAcA,EAAcA,IAAe3tD,EAAc,CAAC2tD,GAAc,GAErFhpD,EAAI,EAAGA,EAAIipD,EAAYhpD,OAAQD,IACpCopD,EAAWH,EAAYjpD,GAAGwe,OAAS,CAAEwZ,IAAKixB,EAAYjpD,GAAGg4B,IAAKjmB,MAAO/R,EAAI,GAIjF,OAAOopD,CACX,CAlFAN,GAAMO,WAAa,SAAS1hC,EAAY/nB,EAAU,CAAE0pD,QAAQ,IACxD,GAAI1pD,EAAQ0pD,OAER,OA7iEa,SAAS5hC,GAC9B,OAAO00B,EAAyB10B,EACpC,CA2iEmB6hC,CAAiB5hC,GAG5B,IAEItlB,EACApC,EACA+nB,EACAN,EAGAlJ,EACAq9B,EATA2N,EAAc,GAMdC,EAAiB,GACjBC,EAAoB,GAGpBpN,EAAU30B,EAAW20B,QAEzB,IAAKj6C,EAAM,EAAGpC,EAASq8C,EAAQr8C,OAAQoC,EAAMpC,EAAQoC,IAEjDmc,GADAwJ,EAASs0B,EAAQj6C,IACFmc,MACfq9B,EAAW7zB,EAAO6zB,SAEd7zB,EAAOs0B,SAGPt0B,GAFAN,EAAOohC,GAAMO,WAAWrhC,IAEVL,WACbzsB,QAAQ,iBAAiB,SAASiO,EAAO4I,GAEtC,OADAA,GAASA,EACF,QAAU23C,EAAkBzpD,OAAS8R,GAAS,GACzD,IACC7W,QAAQ,iBAAiB,SAASiO,EAAO4I,GAEtC,OADAA,GAASA,EACF,QAAU03C,EAAexpD,OAAS8R,GAAS,GACtD,IAEA23C,EAAkBtvD,KAAKyG,MAAM6oD,EAAmBhiC,EAAK6gC,WACrDkB,EAAervD,KAAKyG,MAAM4oD,EAAgB/hC,EAAKQ,iBAEpC1J,IAAU9f,GACjBgpB,EAAO,OAAS+hC,EAAexpD,OAAS,OACxCwpD,EAAervD,KAAKokB,IAEpBkJ,EAAOtuB,EAAMsuB,KAAKlJ,UAGXq9B,IAAan9C,GACpBspB,EAAS,OAAS0hC,EAAkBzpD,OAAS,KAAOynB,EAAO,KAAO6gC,GAAUp+C,MAAM6d,EAAO7mB,OAAS,IAClGuoD,EAAkBtvD,KAAKyhD,IAEvB7zB,EAASugC,IAAW1M,GAAY,MAAMvqC,eAAeoW,EAAMM,EAAO7mB,MAAO6mB,EAAOsxB,aAAej+C,GAAc2sB,EAAOsxB,WAAmB3xB,EAAWm0B,yBAI1J0N,EAAYpvD,KAAK4tB,GAGrB,MAAO,CAAEL,WAAY,IAAM6hC,EAAYlmD,KAlD3B,CAAEo3C,IAAK,OAAQF,GAAI,QAkDmB7yB,EAAW4yB,QAAU,IAAKryB,OAAQuhC,EAAgBlB,UAAWmB,EACnH,EA0BA,IAAIC,GAAc,CACd,KAAM,KACNC,OAAQ,KACRC,UAAW,KACXC,QAAS,KACTnD,MAAO,KACP,KAAM,MACNoD,GAAI,MACJC,UAAW,MACXC,aAAc,MACdC,WAAY,MACZC,SAAU,MACV,IAAK,KACLC,WAAY,KACZC,SAAU,KACVC,KAAM,KACN,KAAM,MACNC,GAAI,MACJC,oBAAqB,MACrBC,cAAe,MACf,IAAK,KACLC,cAAe,KACfC,YAAa,KACbC,QAAS,KACT,KAAM,MACNC,uBAAwB,MACxBC,iBAAkB,MAClBC,GAAI,MACJC,eAAgB,iBAChBzP,OAAQ,SACRH,QAAS,UACTC,WAAY,cAGhB,SAAS4P,GAAkBtjC,GACvB,IAAItlB,EACJpC,EACA+nB,EACA6zB,EACAS,EAAU30B,EAAW20B,QAErB,GAAIA,EACA,IAAKj6C,EAAM,EAAGpC,EAASq8C,EAAQr8C,OAAQoC,EAAMpC,EAAQoC,KAEjDw5C,GADA7zB,EAASs0B,EAAQj6C,IACCw5C,kBAEKA,IAAal9C,IAChCqpB,EAAO6zB,SAAW8N,GAAY9N,EAASvqC,gBAAkBuqC,GAG7DoP,GAAkBjjC,EAG9B,CAEA,SAASkjC,GAAgBvjC,GACrB,GAAIA,IAAe8G,EAAc9G,GAU7B,OATIjsB,EAAQisB,IAAgBA,EAAW20B,UACnC30B,EAAa,CACT4yB,MAAO,MACP+B,QAAS5gD,EAAQisB,GAAcA,EAAa,CAACA,KAIrDsjC,GAAkBtjC,GAEXA,CAEf,CAIA,SAASwjC,GAAkBC,EAAIC,GAC3B,OAAID,EAAG7Q,QAAS8Q,EAAG9Q,QAIZ6Q,EAAG5sC,QAAU6sC,EAAG7sC,OAAS4sC,EAAGjqD,QAAUkqD,EAAGlqD,OAASiqD,EAAGvP,WAAawP,EAAGxP,SAChF,CAEA,SAASyP,GAAoBtjC,GAGzB,OAAIyG,EAFJzG,EAASA,GAAU,CAAC,GAGT,CAAEuyB,MAAO,MAAO+B,QAAS,IAG7B4O,GAAgBljC,EAC3B,CAEA,SAASujC,GAAc5tD,EAAG+W,GACtB,OAAIA,EAAE6lC,OAAU58C,EAAE6gB,MAAQ9J,EAAE8J,MACjB,EACA7gB,EAAE6gB,MAAQ9J,EAAE8J,OACX,EAED,CAEf,CA2CA,SAASgtC,GAAehtC,EAAOwZ,EAAK6vB,EAAS4D,GACzC,IAAIzC,SAAoBxqC,IAAU7f,EAAS,CAAE6f,MAAOA,EAAOwZ,IAAKA,EAAK6vB,QAASA,EAAS4D,gBAAiBA,GAAoBjtC,EAC5HyqC,EAAcvtD,EAAQstD,GAAcA,EAAcA,IAAe3tD,EAAc,CAAC2tD,GAAc,GAE9F,OAAO11C,EAAI21C,GAAa,SAAShsD,GAC7B,MAAO,CACHuhB,MAAOvhB,EAAEuhB,MACTwZ,IAAK/6B,EAAE+6B,KAAO,MACd0zB,WAAYzuD,EAAEyuD,WACd7D,QAAS5qD,EAAE4qD,QACX4D,gBAAiBxuD,EAAEwuD,gBAE3B,GACJ,CAEA,SAASE,GAA6BntC,EAAOwZ,EAAK6vB,GAG9C,IAFA,IAAIoB,EAAcuC,GAAehtC,EAAOwZ,EAAK6vB,GAEpC7nD,EAAI,EAAGA,EAAIipD,EAAYhpD,OAAQD,WAC7BipD,EAAYjpD,GAAG6nD,QAG1B,OAAOoB,CACX,CAgRA,SAAS2C,GAAmBjuD,EAAG+W,GAC3B,OAAI/W,GAAKA,EAAE+D,SAAWgT,GAAKA,EAAEhT,QAClB/D,EAAE+D,YAAcgT,EAAEhT,UAEtB/D,IAAM+W,CACjB,CAEA,SAASm3C,GAAmBC,EAAaJ,EAAY9jB,EAAM71B,EAAO9R,EAAQ8rD,GAEtE,IAAI1pD,EACA2pD,EACAC,EACAziC,GAJJkiC,EAAaA,GAAc,IAINzrD,OAErB,IAAKoC,EAAM,EAAGA,EAAMmnB,EAAKnnB,IAAO,CAE5B4pD,GADAD,EAAON,EAAWrpD,IACE6pD,UACpB,IAAI1tC,EAAQwtC,EAAKxtC,MACjBstC,EAAYttC,GAASstC,EAAYttC,IAAU,CAAC,EAC5CutC,EAAMvtC,GAASutC,EAAMvtC,IAAU,CAAC,EAChCutC,EAAMvtC,GAAOytC,GAAgBF,EAAMvtC,GAAOytC,IAAiB,CAAC,EAC5DH,EAAYttC,GAAOytC,GAAgBE,GAAUF,EAAa36C,eAAew6C,EAAYttC,GAAOytC,GAAerkB,EAAMxuC,EAAMqvB,SAASjK,GAAQzM,EAAO9R,EAAQ8rD,EAAMvtC,GAAOytC,GACxK,CACJ,CArYAnD,GAAMoC,gBAAkBA,GAiExBpC,GAAMsD,eAnCN,SAASA,EAAeC,EAAOC,GAI3B,GAHAD,EAAQf,GAAoBe,GAC5BC,EAAQhB,GAAoBgB,GAExBD,EAAM9R,QAAU+R,EAAM/R,MACtB,OAAO,EAGX,IAAI6Q,EAAIC,EACJkB,GAAYF,EAAM/P,SAAW,IAAIh9C,QACjCktD,GAAYF,EAAMhQ,SAAW,IAAIh9C,QAErC,GAAIitD,EAAStsD,SAAWusD,EAASvsD,OAC7B,OAAO,EAGXssD,EAAWA,EAAS93C,KAAK82C,IACzBiB,EAAWA,EAAS/3C,KAAK82C,IAEzB,IAAK,IAAIlpD,EAAM,EAAGA,EAAMkqD,EAAStsD,OAAQoC,IAIrC,GAHA+oD,EAAKmB,EAASlqD,GACdgpD,EAAKmB,EAASnqD,GAEV+oD,EAAG7Q,OAAS8Q,EAAG9Q,OACf,IAAK6R,EAAehB,EAAIC,GACpB,OAAO,OAER,IAAKF,GAAkBC,EAAIC,GAC9B,OAAO,EAIf,OAAO,CACX,EA6CAvC,GAAMhoD,UAAY,CACd2rD,QAAS,WACL,OAAOh0D,KAAKoO,IAChB,EACA6lD,MAAO,SAAS36C,EAAOgC,GACnB,OAAO,IAAI+0C,GAAMrwD,KAAKoO,KAAKvH,MAAMyS,EAAOA,EAAQgC,GACpD,EACAupC,KAAM,SAASvpC,GACX,OAAO,IAAI+0C,GAAMrwD,KAAKoO,KAAKvH,MAAMyU,GACrC,EACAypC,KAAM,SAASzpC,GACX,OAAO,IAAI+0C,GAAMrwD,KAAKoO,KAAKvH,MAAM,EAAGyU,GACxC,EACAirB,OAAQ,SAASlgB,GACb,OAAO,IAAIgqC,GAAMx1C,EAAI7a,KAAKoO,KAAMiY,GACpC,EACAs+B,MAAO,SAASt+B,EAAUkZ,EAAK20B,GAC3B,IAAIl4C,EAAO,CAAEujB,IAAKA,GAUlB,OARIlZ,IACIA,EAAS+oC,QACTpzC,EAAKozC,QAAU/oC,EAAS+oC,QAExBpzC,EAAK+J,MAAQM,GAKV,IAAIgqC,GADX6D,EACiBl0D,KAAKoO,KAAK4N,KAAKmzC,GAAS/H,OAAOprC,IAGnChc,KAAKoO,KAAKvH,MAAM,GAAGmV,KAAKmzC,GAAS/H,OAAOprC,IAC7D,EACAm4C,QAAS,SAAS9tC,EAAU6tC,GACxB,OAAOl0D,KAAK2kD,MAAMt+B,EAAU,MAAO6tC,EACvC,EACAE,kBAAmB,SAAS/tC,EAAU6tC,GAClC,OAAOl0D,KAAK2kD,MAAMt+B,EAAU,OAAQ6tC,EACxC,EACAl4C,KAAM,SAAS+J,EAAOwZ,EAAK80B,EAAUH,GACjC,IAAItqD,EACJpC,EACAgpD,EAAcF,GAAcvqC,EAAOwZ,GACnCgwB,EAAY,GAIZ,GAFA8E,EAAWA,GAAYlF,GAEnBqB,EAAYhpD,OAAQ,CACpB,IAAKoC,EAAM,EAAGpC,EAASgpD,EAAYhpD,OAAQoC,EAAMpC,EAAQoC,IACrD2lD,EAAU5tD,KAAK0yD,EAASjN,OAAOoJ,EAAY5mD,KAG/C,OAAO5J,KAAKm0D,QAAQ,CAAE/E,QAASiF,EAAS/E,QAAQC,IAAc2E,EAClE,CAEA,OAAOl0D,IACX,EAEAuvB,OAAQ,SAASwhC,GACb,IAAIuD,EACJlmD,EAAOpO,KAAKoO,KAKZ,OAFA2iD,EAAc0B,GAAgB1B,KAEqB,IAA/BA,EAAYlN,QAAQr8C,QAIxC8sD,EAAWjE,GAAMO,WAAWG,EAAa,CAAEF,QAAQ,IAG5C,IAAIR,GADFjiD,EAAKmhB,OAAO+kC,KALVt0D,IAOf,EAEAu0D,MAAO,SAAS/D,EAAagE,EAASrtD,GAClCqpD,EAAcuC,GAAevC,GAAe,IAC5CgE,EAAUA,GAAWx0D,KAAKoO,KAE1B,IAEAmiD,EADAz5C,EAAS,IAAIu5C,GADFrwD,KACaoO,MAGpBqmD,EAAkB,CAACr/C,EAAGhH,IACtBA,EAAOA,GAAQ,IAAIiiD,GAAMmE,GAASjlC,OAAO,CAAC,CACtCxJ,MAAO3Q,EAAE2Q,MACTq9B,SAAU,KACV16C,MAAO0M,EAAE1M,MACTm4C,YAAY,KAwCpB,OAlCI2P,EAAYhpD,OAAS,IACrB+oD,EAAaC,EAAY,GAGrB15C,EADA3P,GAAWA,EAAQutD,YACV,IAAIrE,GAAMmE,GAASG,aAAapE,EAAYiE,GAASjuB,QAAO,SAASguB,GAC1E,IAAIK,EAEA1I,EAAQsE,EAAYhpD,OAAS,EAAI,IAAI6oD,GAAMkE,EAAMrI,OAAOqI,MAAM/D,EAAY3pD,MAAM,GAAI4tD,EAAgBF,EAAOK,GAAoBZ,UAAW7sD,GAAS6sD,UAAYO,EAAMrI,MAEzK,MAAO,CACHnmC,MAAOwuC,EAAMxuC,MACbrd,MAAO6rD,EAAM7rD,MACbmsD,aAAcrE,EAAYhpD,OAAS,EACnC0kD,MAAOA,EACP+G,WAAY1C,EAAW0C,YAAc1C,EAAW0C,WAAWzrD,OAASitD,EAAgBF,EAAOK,GAAoBnB,UAAUlD,EAAW0C,YAAc,CAAC,EACnJvF,IAAK/sD,EAAMwvB,OACX2kC,UAAW5I,EAAM1kD,OACjButD,cAAe7I,EAAM1kD,OAE7B,IAGSsP,EAAOk+C,QAAQzE,GAAYhqB,QAAO,SAASguB,GAChD,IAAIK,EACJ,MAAO,CACH7uC,MAAOwuC,EAAMxuC,MACbrd,MAAO6rD,EAAM7rD,MACbwjD,MAAOsE,EAAYhpD,OAAS,EAAI,IAAI6oD,GAAMkE,EAAMrI,OAAOqI,MAAM/D,EAAY3pD,MAAM,GAAI4tD,EAAgBF,EAAOK,GAAoBZ,WAAWA,UAAYO,EAAMrI,MAC3J2I,aAAcrE,EAAYhpD,OAAS,EACnCyrD,WAAY1C,EAAW0C,YAAc1C,EAAW0C,WAAWzrD,OAASitD,EAAgBF,EAAOK,GAAoBnB,UAAUlD,EAAW0C,YAAc,CAAC,EAE3J,KAGDn8C,CACX,EAEAk+C,QAAS,SAASzE,GAGd,GAAIv6B,EAAcu6B,KAAgBvwD,KAAKoO,KAAK5G,OACxC,OAAO,IAAI6oD,GAAM,IAGrB,IAGIlhB,EAOAlE,EACArhC,EACAmnB,EAZAhL,EAAQwqC,EAAWxqC,MACnBD,EAASyqC,EAAWyC,gBAAkBhzD,KAAKoO,KAAOpO,KAAKi1D,iBAAiBlvC,EAAOwqC,EAAWhxB,KAAO,OACjGvP,EAAWrvB,EAAMqvB,SAASjK,GAE1BmvC,EAAallC,EAASC,IAAInK,EAAO,GAAIC,GACrCwuC,EAAQ,CACJxuC,MAAOA,EACPrd,MAAOwsD,EACPhJ,MAAO,IAKXp1C,EAAS,CAACy9C,GAEd,IAAK3qD,EAAM,EAAGmnB,EAAMjL,EAAOte,OAAQoC,EAAMmnB,EAAKnnB,IAC1CulC,EAAOrpB,EAAOlc,GAETupD,GAAmB+B,EADxBjqB,EAAejb,EAASC,IAAIkf,EAAMppB,MAG9BwuC,EAAQ,CACJxuC,MAAOA,EACPrd,MAHJwsD,EAAajqB,EAITihB,MAAO,IAEXp1C,EAAOnV,KAAK4yD,IAEhBA,EAAMrI,MAAMvqD,KAAKwtC,GAKrB,OAAO,IAAIkhB,GAFXv5C,EApCW9W,KAoCGm1D,YAAYr+C,EAAQy5C,GAGtC,EAEAoE,aAAc,SAASpE,EAAYiE,GAC/B,GAAIx+B,EAAcu6B,IAAevwD,KAAKoO,OAASpO,KAAKoO,KAAK5G,OACrD,OAAO,IAAI6oD,GAAM,IAGrB,IAGIlhB,EAOAlE,EACArhC,EACAmnB,EAZAhL,EAAQwqC,EAAWxqC,MACnBD,EAASyqC,EAAWyC,gBAAkBwB,EAAU,IAAInE,GAAMmE,GAASx4C,KAAK+J,EAAOwqC,EAAWhxB,KAAO,MAAOiwB,IAAgBwE,UACxHhkC,EAAWrvB,EAAMqvB,SAASjK,GAE1BmvC,EAAallC,EAASC,IAAInK,EAAO,GAAIC,GACrCwuC,EAAQ,CACJxuC,MAAOA,EACPrd,MAAOwsD,EACPhJ,MAAO,IAKXp1C,EAAS,CAACy9C,GAEd,IAAK3qD,EAAM,EAAGmnB,EAAMjL,EAAOte,OAAQoC,EAAMmnB,EAAKnnB,IAC1CulC,EAAOrpB,EAAOlc,GAETupD,GAAmB+B,EADxBjqB,EAAejb,EAASC,IAAIkf,EAAMppB,MAG9BwuC,EAAQ,CACJxuC,MAAOA,EACPrd,MAHJwsD,EAAajqB,EAITihB,MAAO,IAEXp1C,EAAOnV,KAAK4yD,IAEhBA,EAAMrI,MAAMvqD,KAAKwtC,GAKrB,OAAO,IAAIkhB,GAFXv5C,EAAS9W,KAAKm1D,YAAYr+C,EAAQy5C,GAGtC,EAEA0E,iBAAkB,SAASlvC,EAAOwZ,GAC9B,IAAI31B,EAAKpC,EACL4G,EAAOpO,KAAKoO,KAEhB,IAAKyX,EAAY,CACb,IAAKjc,EAAM,EAAGpC,EAAS4G,EAAK5G,OAAQoC,EAAMpC,EAAQoC,IAC9CwE,EAAKxE,GAAKgmD,WAAahmD,EAK3B,IAAKA,EAAM,EAAGpC,GAFd4G,EAAO,IAAIiiD,GAAMjiD,GAAM4N,KAAK+J,EAAOwZ,EAAKiwB,IAAgBwE,WAE5BxsD,OAAQoC,EAAMpC,EAAQoC,WACvCwE,EAAKxE,GAAKgmD,WAErB,OAAOxhD,CACX,CAEA,OAAOpO,KAAKgc,KAAK+J,EAAOwZ,GAAKy0B,SACjC,EAEAmB,YAAa,SAASxrB,EAAQ4mB,GAC1B,IAAIz5C,EAAS6yB,EAMb,OAJI4mB,GAAcrnD,EAAWqnD,EAAWnB,WACpCt4C,EAAS,IAAIu5C,GAAMv5C,GAAQ6tC,MAAM,CAAEyK,QAASmB,EAAWnB,SAAWmB,EAAWhxB,KAxsDzE,OAwsD2Fy0B,WAG5Fl9C,CACX,EAEA28C,UAAW,SAASR,GAChB,IAAIrpD,EACAmnB,EACAja,EAAS,CAAC,EACVw8C,EAAQ,CAAC,EAEb,GAAIL,GAAcA,EAAWzrD,OACzB,IAAKoC,EAAM,EAAGmnB,EAAM/wB,KAAKoO,KAAK5G,OAAQoC,EAAMmnB,EAAKnnB,IAC7CwpD,GAAmBt8C,EAAQm8C,EAAYjzD,KAAKoO,KAAKxE,GAAMA,EAAKmnB,EAAKuiC,GAGzE,OAAOx8C,CACX,GA4BJ,IAAI48C,GAAY,CACZ0B,IAAK,SAAS/B,EAAalkB,EAAMnf,GAC7B,IAAItnB,EAAQsnB,EAASC,IAAIkf,GAQzB,OANKkmB,GAAShC,GAEHgC,GAAS3sD,KAChB2qD,GAAe3qD,GAFf2qD,EAAc3qD,EAKX2qD,CACX,EACA/3C,MAAO,SAAS+3C,GACZ,OAAQA,GAAe,GAAK,CAChC,EACAiC,QAAS,SAASjC,EAAalkB,EAAMnf,EAAU1W,EAAO9R,EAAQ8rD,GAC1D,IAAI5qD,EAAQsnB,EAASC,IAAIkf,GAmBzB,OAjBImkB,EAAMh4C,QAAU1Y,IAChB0wD,EAAMh4C,MAAQ,GAGb+5C,GAAShC,GAEHgC,GAAS3sD,KAChB2qD,GAAe3qD,GAFf2qD,EAAc3qD,EAKd2sD,GAAS3sD,IACT4qD,EAAMh4C,QAGNhC,GAAS9R,EAAS,GAAK6tD,GAAShC,KAChCA,GAA4BC,EAAMh4C,OAE/B+3C,CACX,EACAl6C,IAAK,SAASk6C,EAAalkB,EAAMnf,GAC7B,IAAItnB,EAAQsnB,EAASC,IAAIkf,GASzB,OAPKkmB,GAAShC,IAAiBrqD,GAAOqqD,KAClCA,EAAc3qD,GAGd2qD,EAAc3qD,IAAU2sD,GAAS3sD,IAAUM,GAAON,MAClD2qD,EAAc3qD,GAEX2qD,CACX,EACA38C,IAAK,SAAS28C,EAAalkB,EAAMnf,GAC7B,IAAItnB,EAAQsnB,EAASC,IAAIkf,GASzB,OAPKkmB,GAAShC,IAAiBrqD,GAAOqqD,KAClCA,EAAc3qD,GAGd2qD,EAAc3qD,IAAU2sD,GAAS3sD,IAAUM,GAAON,MAClD2qD,EAAc3qD,GAEX2qD,CACX,GAGJ,SAASgC,GAASzlC,GACd,MAAsB,iBAARA,IAAqB9mB,MAAM8mB,EAC7C,CAEA,SAAS5mB,GAAO4mB,GACZ,OAAOA,GAAOA,EAAI3mB,OACtB,CAEA,SAASkJ,GAAO4I,GACZ,IAAInR,EAAKpC,EAASuT,EAAMvT,OAAQsP,EAAS,IAAI5T,MAAMsE,GAEnD,IAAKoC,EAAM,EAAGA,EAAMpC,EAAQoC,IACxBkN,EAAOlN,GAAOmR,EAAMnR,GAAKuI,SAG7B,OAAO2E,CACX,CAEAu5C,GAAM0C,eAAiBA,GACvB1C,GAAMC,cAAgBA,GAEtBD,GAAMkF,QAAU,SAASnnD,EAAMjH,EAAS+sD,GAGpC,IAMIsB,EACAxO,EAPAuN,GAFJptD,EAAUA,GAAW,CAAC,GAEFotD,MAChBkB,EA/XR,SAAsCC,GAGlC,IAFA,IAAIlF,EAAcvtD,EAAQyyD,GAAoBA,EAAmB,CAACA,GAEzDnuD,EAAI,EAAGA,EAAIipD,EAAYhpD,OAAQD,IACpC,GAAIipD,EAAYjpD,IAAM2B,EAAWsnD,EAAYjpD,GAAG6nD,SAC5C,OAAO,EAIf,OAAO,CACX,CAqX0BuG,CAA6B5C,GAAewB,GAAS,KACvE/zD,EAAQ,IAAI6vD,GAAMjiD,GAClBwnD,EAAiC1C,GAA6BqB,GAAS,IACvEsB,EAAiBvF,GAAcnpD,EAAQ6U,MAAQ,IAC/CA,EAAOy5C,EAAkBI,EAAiBD,EAA+Bx3C,OAAOy3C,GAGhFC,EAAiB3uD,EAAQ2uD,eACzBvmC,EAASpoB,EAAQooB,OACjBs1B,EAAO19C,EAAQ09C,KACfE,EAAO59C,EAAQ49C,KAwDnB,OAtDI/oC,GAAQk4C,IACR1zD,EAAQA,EAAMwb,KAAKA,EAAMpZ,EAAaA,EAAasxD,IAGnD3kC,IACA/uB,EAAQA,EAAM+uB,OAAOA,GAEjBumC,IACAt1D,EAAQs1D,EAAet1D,IAG3BwmD,EAAQxmD,EAAMwzD,UAAUxsD,QAGxBwU,IACKk4C,IACD1zD,EAAQA,EAAMwb,KAAKA,IAGnBu4C,IACAnmD,EAAO5N,EAAMwzD,YAIjByB,GACAj1D,EAAQA,EAAM+zD,MAAMA,EAAOnmD,EAAMjH,GAE7B09C,IAASjiD,GAAemiD,IAASniD,GAAgBuE,EAAQutD,cACzDl0D,EAAQ,IAAI6vD,GAAM0F,GAAWv1D,EAAMwzD,YAAYC,MAAMpP,EAAME,GAE3DyQ,EAA8B36C,EAAI+6C,GAAgC,SAASI,GACvE,OAAOjzD,EAAO,CAAC,EAAGizD,EAAiB,CAC/BhD,iBAAiB,GAEzB,IAEAxyD,EAAQA,EAAM+zD,MAAMiB,EAA6BpnD,EAAMjH,MAGvD09C,IAASjiD,GAAemiD,IAASniD,IAG7BiiD,EAAOE,GAFXiC,EAAQxmD,EAAM4N,KAAK5G,SAEQL,EAAQ8uD,UAE/BpR,GADAA,GAAQA,EAAOE,EAAOiC,GACR,EAAI,EAAInC,GAE1BrkD,EAAQA,EAAMyzD,MAAMpP,EAAME,KAG1BwP,GAAWv+B,EAAcu+B,IAA2B,IAAjBA,EAAM/sD,SACzChH,EAAQA,EAAM+zD,MAAMA,EAAOnmD,EAAMjH,KAIlC,CACH6/C,MAAOA,EACP54C,KAAM5N,EAAMwzD,UAEpB,EAEA,IAAIkC,GAAiBtuD,EAAM7E,OAAO,CAC9BoF,KAAM,SAAShB,GACXnH,KAAKoO,KAAOjH,EAAQiH,IACxB,EAEA82C,KAAM,SAAS/9C,GACXA,EAAQghD,QAAQnoD,KAAKoO,KACzB,EACA+4C,OAAQ,SAAShgD,GACbA,EAAQghD,QAAQhhD,EAAQiH,KAC5B,EACAg5C,OAAQ,SAASjgD,GACbA,EAAQghD,QAAQhhD,EAAQiH,KAC5B,EACApM,QAAS,SAASmF,GACdA,EAAQghD,QAAQhhD,EAAQiH,KAC5B,IAGA+nD,GAAkBvuD,EAAM7E,OAAQ,CAChCoF,KAAM,SAAShB,GACX,IAAiBkgD,EAAbp/C,EAAOjI,KAEXmH,EAAUc,EAAKd,QAAUpE,EAAO,CAAC,EAAGkF,EAAKd,QAASA,GAElDnE,EAAKsoD,GAAM,SAAShyC,EAAO5T,UACZyB,EAAQzB,KAAUQ,IACzBiB,EAAQzB,GAAQ,CACZspB,IAAK7nB,EAAQzB,IAGzB,IAEAuC,EAAK61B,MAAQ32B,EAAQ22B,MAAQs4B,GAAMhP,OAAOjgD,EAAQ22B,OAAS,CACvD3H,KAAMhzB,EACNqK,IAAKrK,GAGTkkD,EAAelgD,EAAQkgD,aAEnBlgD,EAAQomC,SACRtlC,EAAKslC,OAASpmC,EAAQomC,QAGtBrkC,EAAW/B,EAAQxF,QACnBsG,EAAKtG,KAAOwF,EAAQxF,MAGnBsG,EAAKtG,OACNsG,EAAKtG,KAAOqgD,GAGhB/5C,EAAKo/C,aAAen+C,EAAWm+C,GAAgBA,EAAe,SAASlgD,GACnE,IAAI2P,EAAS,CAAC,EAcd,OAZA9T,EAAKmE,GAAS,SAAS+tB,EAAQxsB,GACvBwsB,KAAUmyB,IACVnyB,EAASmyB,EAAanyB,GAClBvtB,EAAcutB,KACdxsB,EAAQwsB,EAAOxsB,MAAMA,GACrBwsB,EAASA,EAAOpjB,MAIxBgF,EAAOoe,GAAUxsB,CACrB,IAEOoO,CACX,CACJ,EAEA3P,QAAS,CACLkgD,aAAcrF,GAGlBoF,OAAQ,SAASjgD,GACb,OAAO+gD,EAAKloD,KAAK81C,MAAM3uC,EAASujD,GACpC,EAEAxF,KAAM,SAAS/9C,GACX,IACIghD,EAEArxC,EACAgnB,EAJO99B,KAIM89B,MAEjB32B,EANWnH,KAMI81C,MAAM3uC,EAASwjD,GAE9BxC,EAAUhhD,EAAQghD,SAAWhlD,EACrBgE,EAAQunB,OAEhB5X,EAASgnB,EAAM3H,KAAKhvB,EAAQiH,SAEbxL,EACXulD,EAAQrxC,IAER3P,EAAQghD,QAAU,SAASrxC,GACvBgnB,EAAMtwB,IAAIrG,EAAQiH,KAAM0I,GAExBqxC,EAAQrxC,EACZ,EAEAnU,EAAEulD,KAAK/gD,GAEf,EAEAggD,OAAQ,SAAShgD,GACb,OAAO+gD,EAAKloD,KAAK81C,MAAM3uC,EAASyjD,GACpC,EAEA5oD,QAAS,SAASmF,GACd,OAAO+gD,EAAKloD,KAAK81C,MAAM3uC,EAAS0jD,GACpC,EAEA/U,MAAO,SAAS3uC,EAASzB,GACrByB,EAAUA,GAAW,CAAC,EAEtB,IACIkvD,EACAC,EAFOt2D,KAEUmH,QAAQzB,GACzB0I,EAAOlF,EAAWotD,EAAUloD,MAAQkoD,EAAUloD,KAAKjH,EAAQiH,MAAQkoD,EAAUloD,KAWjF,OATAjH,EAAUpE,GAAO,EAAM,CAAC,EAAGuzD,EAAWnvD,GACtCkvD,EAAatzD,GAAO,EAAM,CAAC,EAAGqL,EAAMjH,EAAQiH,MAE5CjH,EAAQiH,KARGpO,KAQSqnD,aAAagP,EAAY3wD,GAEzCwD,EAAW/B,EAAQ6nB,OACnB7nB,EAAQ6nB,IAAM7nB,EAAQ6nB,IAAIqnC,IAGvBlvD,CACX,IAGAivD,GAAQxuD,EAAM7E,OAAO,CACrBoF,KAAM,WACFnI,KAAKu2D,OAAS,CAAC,CACnB,EACA/oD,IAAK,SAASsE,EAAK1D,GACX0D,IAAQlP,IACR5C,KAAKu2D,OAAOxjD,EAAUjB,IAAQ1D,EAEtC,EACA+nB,KAAM,SAASrkB,GACX,OAAO9R,KAAKu2D,OAAOxjD,EAAUjB,GACjC,EACA0kD,MAAO,WACHx2D,KAAKu2D,OAAS,CAAC,CACnB,EACAlqD,OAAQ,SAASyF,UACN9R,KAAKu2D,OAAOxjD,EAAUjB,GACjC,IAmBJ,SAAS2kD,GAAiBroD,EAAMsoD,EAASjN,EAAekN,EAAoBC,GACxE,IAAIjN,EACAn6B,EACAu/B,EACAnlD,EAEApC,EADAqvD,EAAU,CAAC,EAGf,IAAKjtD,EAAM,EAAGpC,EAAS4G,EAAK5G,OAAQoC,EAAMpC,EAAQoC,IAE9C,IAAK4lB,KADLm6B,EAASv7C,EAAKxE,GACC8sD,GACX3H,EAAe6H,EAAWpnC,KAENu/B,IAAiBv/B,IAC5BqnC,EAAQ9H,KACT8H,EAAQ9H,GAAgBpuD,EAAM+uB,OAAOq/B,IAEzC8H,EAAQ9H,GAAcpF,EAAQ+M,EAAQlnC,GAAQm6B,WACvCA,EAAOn6B,GAI9B,CAEA,SAASsnC,GAAe1oD,EAAMsoD,EAASjN,EAAekN,EAAoBC,GACtE,IAAIjN,EACAn6B,EACAu/B,EACAnlD,EACApC,EAEJ,IAAKoC,EAAM,EAAGpC,EAAS4G,EAAK5G,OAAQoC,EAAMpC,EAAQoC,IAE9C,IAAK4lB,KADLm6B,EAASv7C,EAAKxE,GACC8sD,EACX/M,EAAOn6B,GAAUi6B,EAAcG,OAAOp6B,EAAQknC,EAAQlnC,GAAQm6B,KAE9DoF,EAAe6H,EAAWpnC,KACNu/B,IAAiBv/B,UAC1Bm6B,EAAOoF,EAI9B,CAEA,SAASgI,GAAa3oD,EAAMsoD,EAASjN,EAAekN,EAAoBC,GACpE,IAAIjN,EACA//C,EACA8kD,EACAlnD,EAEJ,IAAKoC,EAAM,EAAGpC,EAAS4G,EAAK5G,OAAQoC,EAAMpC,EAAQoC,KAG9C8kD,EAAYiI,GAFZhN,EAASv7C,EAAKxE,IAEwBmc,SACrB2oC,GAAa/E,EAAO5jC,QACjC4jC,EAAO5jC,MAAQ2oC,GAGnB/E,EAAOjhD,MAAQ+gD,EAAcG,OAAOD,EAAO5jC,MAAO4jC,EAAOjhD,OAErDihD,EAAOuC,QACHvC,EAAOkL,aACPkC,GAAapN,EAAOuC,MAAOwK,EAASjN,EAAekN,EAAoBC,GAEvEE,GAAenN,EAAOuC,MAAOwK,EAASjN,EAAekN,EAAoBC,GAIzF,CAEA,SAASI,GAAeC,EAAkB/N,EAAOgO,EAAWR,EAASC,EAAoBC,GACrF,OAAO,SAASxoD,GAGZ,OAFAA,EAAO6oD,EAAiB7oD,GAEjB+oD,GAAmBjO,EAAOgO,EAAWR,EAASC,EAAoBC,EAAlEO,CAA8E/oD,EACzF,CACJ,CAEA,SAAS+oD,GAAmBjO,EAAOgO,EAAWR,EAASC,EAAoBC,GACvE,OAAO,SAASxoD,GAUZ,OARIA,IAAS4nB,EAAc0gC,KACK,mBAAxBjlD,EAASlH,KAAK6D,IAAgCA,aAAgBD,IAC9DC,EAAO,CAACA,IAGZ8oD,EAAU9oD,EAAMsoD,EAAS,IAAIxN,EAASyN,EAAoBC,IAGvDxoD,GAAQ,EACnB,CACJ,CA3GAgoD,GAAMhP,OAAS,SAASjgD,GACpB,IAAIiwD,EAAQ,CACRC,SAAY,WAAa,OAAO,IAAIjB,EAAS,GAGjD,OAAIzuD,EAAcR,IAAY+B,EAAW/B,EAAQgvB,MACtChvB,GAGK,IAAZA,EACO,IAAIivD,GAGRgB,EAAMjwD,IACjB,EA+FA,IAAImwD,GAAa1vD,EAAM7E,OAAO,CAC1BoF,KAAM,SAASovD,GACX,IAAiBzvD,EAAQmoB,EAAKi5B,EAAOlhD,EAAjCC,EAAOjI,KAIX,IAAK8H,KAFLyvD,EAASA,GAAU,CAAC,EAGhBtnC,EAAMsnC,EAAOzvD,GAEbG,EAAKH,UAAiBmoB,IAAQ/pB,EAASspB,EAAOS,GAAOA,EAGzDjoB,EAAOuvD,EAAOlO,WAAaC,GAEvB3hD,EAAcM,EAAKihD,SACnBjhD,EAAKihD,MAAQA,EAAQlhD,EAAKvI,OAAOwI,EAAKihD,QAG1C,IAAIsO,EAAevvD,EAAKmG,KAAK5E,KAAKvB,GAIlC,GAFAA,EAAKwvD,oBAAsBD,EAEvBvvD,EAAKihD,MAAO,CACZ,IAOIwF,EACAtsD,EARAs1D,EAAiBzvD,EAAK0hC,OAAOngC,KAAKvB,GAClC0vD,EAAoB1vD,EAAKmhD,UAAU5/C,KAAKvB,GACxC0uD,EAAqB,CAAC,EACtBD,EAAU,CAAC,EACXkB,EAAmB,CAAC,EACpBhB,EAAa,CAAC,EACdjJ,GAAkB,GAItBzE,EAAQjhD,EAAKihD,OAEHz5B,SACNzsB,EAAKkmD,EAAMz5B,QAAQ,SAAS1J,EAAOrd,GAC/B,IAAImvD,EAEJnJ,EAAY3oC,EAERpe,EAAce,IAAUA,EAAMqd,MAC9B2oC,EAAYhmD,EAAMqd,aACJrd,IAAUxC,IACxBwoD,EAAYhmD,GAGZf,EAAce,IAAUA,EAAMqT,OAC9B87C,EAAWnvD,EAAMqT,MAGrB4xC,EAAkBA,GAAoBkK,GAAYA,IAAa9xC,GAAU2oC,IAAc3oC,EACvF3jB,EAAOy1D,GAAYnJ,EACnBgI,EAAQ3wC,IAAgC,IAAvB3jB,EAAKuT,QAAQ,KAAc6Z,EAAOptB,GAAM,GAAQotB,EAAOptB,GACxEw1D,EAAiB7xC,GAASyJ,EAAOzJ,GACjC4wC,EAAmBkB,GAAYnJ,GAAa3oC,EAC5C6wC,EAAW7wC,GAAS8xC,GAAYnJ,CACpC,KAEK6I,EAAOnO,WAAauE,IACrB1lD,EAAKmhD,UAAY4N,GAAeW,EAAmBzO,EAAOuN,GAAkBmB,EAAkBjB,EAAoBC,KAI1H3uD,EAAKwvD,oBAAsBD,EAC3BvvD,EAAK6vD,oBAAsBX,GAAmBjO,EAAO4N,GAAgBJ,EAASC,EAAoBC,GAClG3uD,EAAKmG,KAAO4oD,GAAeQ,EAActO,EAAO4N,GAAgBJ,EAASC,EAAoBC,GAC7F3uD,EAAK0hC,OAASqtB,GAAeU,EAAgBxO,EAAO6N,GAAcL,EAASC,EAAoBC,EACnG,CACJ,EACAzN,OAAQ,SAAS/6C,GACb,OAAOA,EAAOA,EAAK+6C,OAAS,IAChC,EACA/zB,MAAO4sB,EACP5zC,KAAM4zC,EACNgF,MAAO,SAAS54C,GACZ,OAAOA,EAAK5G,MAChB,EACAmiC,OAAQqY,EACRiR,WAAY,WACR,MAAO,CAAC,CACZ,EACA7J,UAAW,SAASh7C,GAChB,OAAOA,CACX,IAGJ,SAAS2pD,GAAcC,EAAeC,GAClC,IAAIC,EACAC,EAEJ,GAAIF,EAAS/L,OAAS+L,EAAS/L,MAAM1kD,OACjC,IAAK,IAAID,EAAI,EAAGA,EAAI0wD,EAAS/L,MAAM1kD,OAAQD,IACvC2wD,EAAeF,EAAc9L,MAAM8L,EAAc9L,MAAM1kD,OAAS,GAChE2wD,EAAaF,EAAS/L,MAAM3kD,GACxB2wD,GAAgBC,EACZD,EAAarD,cAAgBqD,EAAaxvD,OAASyvD,EAAWzvD,MAC9DqvD,GAAcG,EAAcC,GACrBD,EAAanyC,OAASmyC,EAAaxvD,OAASyvD,EAAWzvD,OAC9DwvD,EAAahM,MAAMG,iBAAkB,EACrC6L,EAAahM,MAAMvqD,KAAKyG,MAAM8vD,EAAahM,MAAOiM,EAAWjM,OAC7DgM,EAAahM,MAAMG,iBAAkB,IAErC2L,EAAc9L,MAAMG,iBAAkB,EACtC2L,EAAc9L,MAAMvqD,KAAKyG,MAAM4vD,EAAc9L,MAAO,CAACiM,IACrDH,EAAc9L,MAAMG,iBAAkB,GAEnC8L,IACPH,EAAc9L,MAAMG,iBAAkB,EACtC2L,EAAc9L,MAAMvqD,KAAKyG,MAAM4vD,EAAc9L,MAAO,CAACiM,IACrDH,EAAc9L,MAAMG,iBAAkB,EAItD,CACA,SAAS+L,GAAY/wD,EAAQgxD,EAAMxT,EAAME,GAKrC,IAJA,IAAIwP,EAEArI,EADAtiD,EAAM,EAGHyuD,EAAK7wD,QAAUu9C,GAAM,CAIxB,IAAIv9C,GAFJ0kD,GADAqI,EAAQ8D,EAAKzuD,IACCsiD,OAEK1kD,OA+BnB,GA7BIH,GAAUA,EAAO0e,QAAUwuC,EAAMxuC,OAAS1e,EAAOqB,QAAU6rD,EAAM7rD,OAC7DrB,EAAOwtD,cAAgBxtD,EAAO6kD,MAAM1kD,OACpC4wD,GAAY/wD,EAAO6kD,MAAM7kD,EAAO6kD,MAAM1kD,OAAS,GAAI+sD,EAAMrI,MAAOrH,EAAME,IAEtEmH,EAAQA,EAAMrlD,MAAMg+C,EAAMA,EAAOE,GACjC19C,EAAO6kD,MAAQ7kD,EAAO6kD,MAAM9tC,OAAO8tC,IAEvCmM,EAAK7tD,OAAOZ,IAAO,IACZ2qD,EAAMM,cAAgB3I,EAAM1kD,QACnC4wD,GAAY7D,EAAOrI,EAAOrH,EAAME,GAC3BwP,EAAMrI,MAAM1kD,QACb6wD,EAAK7tD,OAAOZ,IAAO,KAGvBsiD,EAAQA,EAAMrlD,MAAMg+C,EAAMA,EAAOE,GACjCwP,EAAMrI,MAAQA,EAETqI,EAAMrI,MAAM1kD,QACb6wD,EAAK7tD,OAAOZ,IAAO,IAIN,IAAjBsiD,EAAM1kD,OACNq9C,GAAQr9C,GAERq9C,EAAO,EACPE,GAAQmH,EAAM1kD,UAGZoC,GAAOyuD,EAAK7wD,OACd,KAER,CAEIoC,EAAMyuD,EAAK7wD,QACX6wD,EAAK7tD,OAAOZ,EAAKyuD,EAAK7wD,OAASoC,EAEvC,CAEA,SAASmsD,GAAWpsB,EAAQ2uB,GASxB,IARA,IAEI/D,EACArI,EAHAp1C,EAAS,GACTyhD,GAAgB5uB,GAAU,IAAIniC,OAG9BgxD,EAAUtvD,EAAWovD,GAAiBA,EAAgB,SAASv9C,EAAOzB,GACtE,OAAOyB,EAAMzB,EACjB,EAESm/C,EAAa,EAAGA,EAAaF,EAAcE,IAGhD,IAFAlE,EAAQiE,EAAQ7uB,EAAQ8uB,IAEd5D,aACN/9C,EAASA,EAAOsH,OAAO23C,GAAWxB,EAAMrI,YACrC,CACHA,EAAQqI,EAAMrI,MAEd,IAAK,IAAIwM,EAAY,EAAGA,EAAYxM,EAAM1kD,OAAQkxD,IAC9C5hD,EAAOnV,KAAK62D,EAAQtM,EAAOwM,GAEnC,CAEJ,OAAO5hD,CACX,CAEA,SAAS6hD,GAAcvqD,GACnB,IAAIxE,EAEApC,EACA0kD,EACAwM,EAHA5hD,EAAS,GAKb,IAAKlN,EAAM,EAAGpC,EAAS4G,EAAK5G,OAAQoC,EAAMpC,EAAQoC,IAAO,CACrD,IAAI2qD,EAAQnmD,EAAKy9C,GAAGjiD,GACpB,GAAI2qD,EAAMrI,MACN,GAAIqI,EAAMM,aACN/9C,EAASA,EAAOsH,OAAOu6C,GAAcpE,EAAMrI,aAG3C,IADAA,EAAQqI,EAAMrI,MACTwM,EAAY,EAAGA,EAAYxM,EAAM1kD,OAAQkxD,IAC1C5hD,EAAOnV,KAAKuqD,EAAML,GAAG6M,GAIrC,CACA,OAAO5hD,CACX,CAEA,SAAS8hD,GAAexqD,EAAM86C,GAC1B,IAAIt/C,EAAKpC,EAAQ+sD,EACjB,GAAIrL,EACA,IAAKt/C,EAAM,EAAGpC,EAAS4G,EAAK5G,OAAQoC,EAAMpC,EAAQoC,KAC9C2qD,EAAQnmD,EAAKy9C,GAAGjiD,IACNsiD,QACFqI,EAAMM,aACN+D,GAAerE,EAAMrI,MAAOhD,GAE5BqL,EAAMrI,MAAQ,IAAI79C,EAAoBkmD,EAAMrI,MAAOhD,EAAOqL,EAAMrI,MAAM3iD,SAK1F,CAEA,SAASsvD,GAAezqD,EAAM0qD,GAC1B,IAAK,IAAIlvD,EAAM,EAAGA,EAAMwE,EAAK5G,OAAQoC,IACjC,GAAIwE,EAAKxE,GAAKirD,cACV,GAAIgE,GAAezqD,EAAKxE,GAAKsiD,MAAO4M,GAChC,OAAO,OAER,GAAIA,EAAK1qD,EAAKxE,GAAKsiD,MAAO99C,EAAKxE,IAClC,OAAO,CAGnB,CAEA,SAASmvD,GAAgBC,EAAQ5qD,EAAM+gC,EAAMN,GACzC,IAAK,IAAIjlC,EAAM,EAAGA,EAAMovD,EAAOxxD,QACvBwxD,EAAOpvD,GAAKwE,OAASA,IAGrB6qD,GAAeD,EAAOpvD,GAAKwE,KAAM+gC,EAAMN,GAJRjlC,KAQ3C,CAEA,SAASqvD,GAAe/M,EAAO/c,EAAMN,GACjC,IAAK,IAAIjlC,EAAM,EAAGpC,EAAS0kD,EAAM1kD,OAAQoC,EAAMpC,EAAQoC,IAAO,CAC1D,GAAIsiD,EAAMtiD,IAAQsiD,EAAMtiD,GAAKirD,aACzB,OAAOoE,GAAe/M,EAAMtiD,GAAKsiD,MAAO/c,EAAMN,GAC3C,GAAIqd,EAAMtiD,KAASulC,GAAQ+c,EAAMtiD,KAASilC,EAE9C,OADAqd,EAAMtiD,GAAOilC,GACN,CAEd,CACJ,CAEA,SAASqqB,GAAsBthC,EAAMxpB,EAAM4qD,EAAQtzD,EAAMyzD,GACrD,IAAK,IAAIC,EAAY,EAAG5xD,EAASowB,EAAKpwB,OAAQ4xD,EAAY5xD,EAAQ4xD,IAAa,CAC3E,IAAIjqB,EAAOvX,EAAKwhC,GAEhB,GAAKjqB,KAAQA,aAAgBzpC,GAI7B,GAAIypC,EAAK0lB,eAAiBjyD,GAAgBu2D,GAGtC,IAAK,IAAIvvD,EAAM,EAAGA,EAAMwE,EAAK5G,OAAQoC,IACjC,GAAIwE,EAAKxE,KAASulC,EAAM,CACpBvX,EAAKwhC,GAAahrD,EAAKy9C,GAAGjiD,GAC1BmvD,GAAgBC,EAAQ5qD,EAAM+gC,EAAMvX,EAAKwhC,IACzC,KACJ,OAPJF,GAAsB/pB,EAAK+c,MAAO99C,EAAM4qD,EAAQtzD,EAAMyzD,EAU9D,CACJ,CAoBA,SAASE,GAAqBjrD,EAAM86C,GAChC,OAAIA,EACOvzC,GAAQvH,GAAM,SAAS+gC,GAC1B,OAAQA,EAAKue,KAAOve,EAAKue,KAAOxE,EAAMwE,KAASve,EAAK+Z,EAAMK,WAAaL,EAAM74B,IAAM64B,EAAM74B,KAAO64B,EAAMuF,UAC1G,KAEI,CACZ,CAEA,SAAS6K,GAAalrD,EAAM86C,GACxB,OAAIA,EACOvzC,GAAQvH,GAAM,SAAS+gC,GAC1B,OAAOA,EAAKue,KAAOxE,EAAMwE,GAC7B,KAEI,CACZ,CAEA,SAAS/3C,GAAQvH,EAAMimD,GACnB,IAAIzqD,EAAKpC,EACT,GAAK4G,EAAL,CAIA,IAAKxE,EAAM,EAAGpC,EAAS4G,EAAK5G,OAAQoC,EAAMpC,EAAQoC,IAC9C,GAAIyqD,EAASjmD,EAAKxE,IACd,OAAOA,EAIf,OAAQ,CARR,CASJ,CAEA,SAAS2vD,GAAmB9pC,EAAQrtB,GAChC,GAAIqtB,IAAWuG,EAAcvG,GAAS,CAClC,IACIi/B,EADA6B,EAAa9gC,EAAOrtB,GAQxB,OALIssD,EADA/mD,EAAc4oD,GACFA,EAAWx0C,MAAQw0C,EAAWxqC,OAAS3jB,EAEvCqtB,EAAOrtB,IAASA,EAG5B8G,EAAWwlD,GACJtsD,EAGJssD,CACX,CACA,OAAOtsD,CACX,CAEA,SAASo3D,GAA8BjJ,EAAYrH,GAC/C,IAAIt/C,EACApC,EACAH,EAAS,CAAC,EAEd,IAAK,IAAI0e,KAASwqC,EACA,YAAVxqC,IACA1e,EAAO0e,GAASwqC,EAAWxqC,IAInC,GAAIwqC,EAAW1M,QAEX,IADAx8C,EAAOw8C,QAAU,GACZj6C,EAAM,EAAGpC,EAAS+oD,EAAW1M,QAAQr8C,OAAQoC,EAAMpC,EAAQoC,IAC5DvC,EAAOw8C,QAAQj6C,GAAO4vD,GAA8BjJ,EAAW1M,QAAQj6C,GAAMs/C,QAGjF7hD,EAAO0e,MAAQwzC,GAAmBrQ,EAAMz5B,OAAQpoB,EAAO0e,OAE3D,OAAO1e,CACX,CAEA,SAASoyD,GAAwBjJ,EAAatH,GAC1C,IAAIt/C,EACApC,EAEAH,EACAkpD,EAFAz5C,EAAS,GAIb,IAAKlN,EAAM,EAAGpC,EAASgpD,EAAYhpD,OAAQoC,EAAMpC,EAAQoC,IAAQ,CAK7D,IAAK,IAAImc,KAJT1e,EAAS,CAAC,EAEVkpD,EAAaC,EAAY5mD,GAGrBvC,EAAO0e,GAASwqC,EAAWxqC,GAG/B1e,EAAO0e,MAAQwzC,GAAmBrQ,EAAMz5B,OAAQpoB,EAAO0e,OAEnD1e,EAAO4rD,YAAchwD,EAAQoE,EAAO4rD,cACpC5rD,EAAO4rD,WAAawG,GAAwBpyD,EAAO4rD,WAAY/J,IAEnEpyC,EAAOnV,KAAK0F,EAChB,CACA,OAAOyP,CACX,CAEA,IAAIxI,GAAahF,EAAWvG,OAAO,CAC/BoF,KAAM,SAAShB,GACX,IAAwBiH,EAApBnG,EAAOjI,KA2CX,GAzCImH,IACAiH,EAAOjH,EAAQiH,MAGnBjH,EAAUc,EAAKd,QAAUpE,EAAO,CAAC,EAAGkF,EAAKd,QAASA,GAElDc,EAAKyxD,KAAO,CAAC,EACbzxD,EAAK0xD,UAAY,CAAC,EAClB1xD,EAAK2xD,MAAQ,GACb3xD,EAAK4xD,cAAgB,GACrB5xD,EAAK6xD,QAAU,GACf7xD,EAAK8xD,MAAQ,GACb9xD,EAAK+xD,eAAiB,EACtB/xD,EAAKgyD,WAAa,GAClBhyD,EAAKiyD,UAAY/yD,EAAQk9C,SACzBp8C,EAAKkyD,MAAQhzD,EAAQm9C,OAASn9C,EAAQk9C,SAAW,EAAIzhD,GACrDqF,EAAKmyD,MAAQ9J,GAAcnpD,EAAQ6U,MACnC/T,EAAKoyD,YAAc5J,GAAWtpD,EAAQ6U,MACtC/T,EAAKqyD,QAAU7H,GAAgBtrD,EAAQooB,QACvCtnB,EAAKsyD,OAASxH,GAAe5rD,EAAQotD,OACrCtsD,EAAKuyD,WAAarzD,EAAQssD,UAC1BxrD,EAAKwyD,OAAStzD,EAAQ6/C,MACtB/+C,EAAKyyD,aAAevzD,EAAQutD,YAExBzsD,EAAKyyD,eACLzyD,EAAK0yD,aAAe,CAAC,GAEzB1yD,EAAK2yD,gCAAiC,EAEtCtxD,EAAWvB,GAAGI,KAAKoC,KAAKtC,GAExBA,EAAK29C,UAAYiV,GAAUzT,OAAOjgD,EAASiH,EAAMnG,GAE7CiB,EAAWjB,EAAK29C,UAAUjkD,OAC1BsG,EAAK29C,UAAUjkD,KAAK,CAChBm5D,WAAY7yD,EAAK8yD,YAAYvxD,KAAKvB,GAClC+yD,WAAY/yD,EAAKgzD,YAAYzxD,KAAKvB,GAClCizD,YAAajzD,EAAKkzD,aAAa3xD,KAAKvB,KAId,MAA1Bd,EAAQi0D,eACR,GAAqC,iBAA1Bj0D,EAAQi0D,eAA4B,CAC3C,IAAItpD,EAAM3K,EAAQi0D,eAElBnzD,EAAKozD,SAAW,CACZC,QAAS,WACL,OAAOh4D,KAAK8xB,MAAMmmC,aAAaD,QAAQxpD,GAC3C,EACA0pD,QAAS,SAASrsB,GACdosB,aAAaC,QAAQ1pD,EAAKiB,EAAU9K,EAAKwzD,OAAOrS,UAAUja,IAC9D,EAER,MACIlnC,EAAKozD,SAAWl0D,EAAQi0D,eAIhCnzD,EAAKwzD,OAAS,IAAI96D,EAAMyN,KAAKq8C,QAAQtjD,EAAQowD,OAAO7xD,MAAQ,QAASyB,EAAQowD,QAErEtvD,EAAKwzD,OAAOvS,MAEpBjhD,EAAKyzD,2BAELzzD,EAAK2xD,MAAQ3xD,EAAK0zD,SAAS1zD,EAAK2xD,OAChC3xD,EAAK2zD,SAAU,EAEf3zD,EAAKuB,KAAK,CAAC,OAAQwhD,EAAO9N,EAAQ+N,EAAcH,EAAMK,EAAYD,GAAW/jD,EACjF,EAEAA,QAAS,CACLiH,KAAM,KACNmpD,OAAQ,CACLlO,UAAWC,IAEd8R,eAAgB,KAChBS,eAAe,EACfC,cAAc,EACdC,iBAAiB,EACjB5C,gBAAgB,EAChB6C,kBAAkB,EAClBxU,OAAO,EACPyU,aAAa,GAGjB70D,MAAO,WACH,OAAOpH,IACX,EAEAk8D,OAAQ,SAASxzD,GACb,OAAIA,IAAU9F,EACN5C,KAAK47D,SAAWlzD,IAChB1I,KAAK47D,QAAUlzD,EAEXA,GACO1I,KAAKm8D,OAIbx5D,EAAEypC,WAAW2J,UAAUluB,UAEvB7nB,KAAK47D,OAEpB,EAEAQ,YAAa,SAAS9I,GAClB,OAAmC,MAA/BtzD,KAAKmH,QAAQi0D,eACN,KAGP9H,IAAU1wD,EACH5C,KAAKq7D,SAASG,QAAQlI,GAG1BtzD,KAAKq7D,SAASC,WAAa,EACtC,EAEAe,WAAY,WAGR,OAFYr8D,KAAKu0D,SAAW,IAEf/sD,MACjB,EAEA80D,iBAAkB,WACd,IAAI/H,EAAQv0D,KAAKu0D,SAAW,GAE5B,OAAOv0D,KAAKmH,QAAQgyD,gBAAkB5E,EAAM/sD,MAChD,EAEA+0D,oBAAqB,WACjB,OAAOv8D,KAAKs8D,oBAAsBt8D,KAAK06D,YAC3C,EAEA8B,cAAe,WACX,IAAIjI,EAAQv0D,KAAKu6D,QAAU,GAE3B,OAAOv6D,KAAK06D,cAAgBnG,EAAM/sD,MACtC,EAEAuzD,YAAa,SAASjkD,GAClB9W,KAAKy8D,MAAM3lD,EAAQ,aACvB,EAEAmkD,YAAa,SAASnkD,GAClB9W,KAAKy8D,MAAM3lD,EAAQ,aACvB,EAEAqkD,aAAc,SAASrkD,GACnB9W,KAAKy8D,MAAM3lD,EAAQ,cACvB,EAEA2lD,MAAO,SAAS3lD,EAAQw/C,GACpB,IAAIloD,EAAOpO,KAAK08D,UAAU5lD,GAErB1I,IACDA,EAAO0I,GAGX9W,KAAKs2D,GAAWloD,EACpB,EAEAuuD,UAAW,SAASvuD,EAAMy2C,GACtB,GAAIz2C,EAAM,CACN,GAAIpO,KAAKs8D,mBACL,OAAO3D,GAAcvqD,GAGzB,IAAKy2C,EACD,IAAK,IAAIj7C,EAAM,EAAGA,EAAMwE,EAAK5G,OAAQoC,IACjCwE,EAAKy9C,GAAGjiD,EAGpB,CAEA,OAAOwE,CACX,EAEAzB,OAAQxJ,EAER8sB,IAAK,SAASI,GACV,IAAIzmB,EAAKpC,EAAQ4G,EAAOpO,KAAK28D,UAAU38D,KAAK45D,MAAO55D,KAAKmH,QAAQy1D,WAEhE,IAAKhzD,EAAM,EAAGpC,EAAS4G,EAAK5G,OAAQoC,EAAMpC,EAAQoC,IAC9C,GAAIwE,EAAKxE,GAAKymB,IAAMA,EAChB,OAAOjiB,EAAKxE,EAGxB,EAEAizD,SAAU,SAASxsC,GACf,OAAOrwB,KAAK88D,UAAUzsC,EAAIrwB,KAAK45D,MACnC,EAEAkD,UAAW,SAASzsC,EAAImE,GACpB,IAAI5qB,EAAKpC,EAAQ4G,EAAOpO,KAAK28D,UAAUnoC,EAAWx0B,KAAKmH,QAAQy1D,WAE/D,GAAKxuD,EAIL,IAAKxE,EAAM,EAAGpC,EAAS4G,EAAK5G,OAAQoC,EAAMpC,EAAQoC,IAC9C,GAAIwE,EAAKxE,GAAK8jD,KAAOr9B,EACjB,OAAOjiB,EAAKxE,EAGxB,EAEA+L,QAAS,SAASuzC,GACd,OAAOoQ,GAAat5D,KAAK45D,MAAO1Q,EACpC,EAEA2C,GAAI,SAASvyC,GACT,OAAOtZ,KAAK45D,MAAM/N,GAAGvyC,EACzB,EAEAlL,KAAM,SAAS1F,GACX,IAAIT,EAAOjI,KACX,GAAI0I,IAAU9F,EAgBP,CACH,GAAIqF,EAAK2xD,MACL,IAAK,IAAIhwD,EAAM,EAAGA,EAAM3B,EAAK2xD,MAAMpyD,OAAQoC,IACvC3B,EAAK2xD,MAAM/N,GAAGjiD,GAItB,OAAO3B,EAAK2xD,KAChB,CAvBI3xD,EAAKyzD,2BACLzzD,EAAK2xD,MAAQ55D,KAAK27D,SAASjzD,GAE3BT,EAAK4xD,cAAgBnxD,EAAM7B,MAAM,GAEjCoB,EAAK80D,aAEL90D,EAAK6xD,QAAU,GACf7xD,EAAKmC,QAAQ,SACbnC,EAAK+0D,UAAU/0D,EAAK2xD,OAEpB3xD,EAAKwyD,OAASxyD,EAAK2xD,MAAMpyD,OACzBS,EAAK+xD,eAAiB/xD,EAAKwyD,OAE3BxyD,EAAKg1D,SAASh1D,EAAK2xD,MAU3B,EAEAhiC,KAAM,SAASlvB,GACX,GAAIA,IAAU9F,EACV,OAAO5C,KAAK+5D,MAEZ/5D,KAAK+5D,MAAQ/5D,KAAKk9D,aAAax0D,EAEvC,EAEAw0D,aAAc,SAAS9uD,GACnB,IAAInG,EAAOjI,KACXk5D,GAAsB9qD,EAAMnG,EAAK2xD,MAAO3xD,EAAK6xD,QAAS7xD,EAAKwzD,OAAOvS,OAASuC,EAAkBxjD,EAAKq0D,oBAElG,IAAI1kC,EAAO,IAAIvpB,EAAoBD,EAAMnG,EAAKwzD,OAAOvS,OAErD,OADAtxB,EAAKjrB,OAAS,WAAa,OAAO1E,EAAK0E,QAAU,EAC1CirB,CACX,EAEAnD,SAAU,WAGN,OAFaz0B,KAAKu0D,SAAW,IAElB/sD,OACAmxD,GAAc34D,KAAK+5D,OAEnB/5D,KAAK+5D,KAEpB,EAEAvsD,IAAK,SAAS07C,GACV,OAAOlpD,KAAKm9D,OAAOn9D,KAAK45D,MAAMpyD,OAAQ0hD,EAC1C,EAEAkU,gBAAiB,SAASlU,GACtB,OAAIlpD,KAAKy7D,OAAOvS,MACL,IAAIlpD,KAAKy7D,OAAOvS,MAAMA,GAG7BA,aAAiBuC,EACVvC,EAGJ,IAAIuC,EAAiBvC,EAChC,EAEAiU,OAAQ,SAAS7jD,EAAO4vC,GAkBpB,OAjBKA,IACDA,EAAQ5vC,EACRA,EAAQ,GAGN4vC,aAAiBI,KACnBJ,EAAQlpD,KAAKo9D,gBAAgBlU,IAG7BlpD,KAAKs8D,mBACLt8D,KAAK45D,MAAMpvD,OAAO8O,EAAO,EAAGtZ,KAAKq9D,kBAAkBnU,IAEnDlpD,KAAK45D,MAAMpvD,OAAO8O,EAAO,EAAG4vC,GAGhClpD,KAAKs9D,oBAAoBhkD,EAAO4vC,GAEzBA,CACX,EAEAqU,WAAY,SAASjkD,EAAO4yC,GACxB,IACIsR,EADOx9D,KACUy9D,uBAEhBvR,IACDA,EAAQ5yC,EACRA,EAAQ,GAGPrW,EAAQipD,KACTA,EAAQ,CAACA,IAGb,IAAIwR,EAAS,GACTC,EAAW39D,KAAKmH,QAAQw2D,SAC5B39D,KAAKmH,QAAQw2D,UAAW,EAExB,IACI,IAAK,IAAI/zD,EAAM,EAAGA,EAAMsiD,EAAM1kD,OAAQoC,IAAQ,CAC1C,IAAIulC,EAAO+c,EAAMtiD,GAEbkN,EAAS9W,KAAKm9D,OAAO7jD,EAAO61B,GAEhCuuB,EAAO/7D,KAAKmV,GAEZ,IAAI8mD,EAAW9mD,EAAO3E,SAElBnS,KAAKs8D,qBACLsB,EAAW59D,KAAKq9D,kBAAkBO,IAGtC59D,KAAK65D,cAAcl4D,KAAKi8D,GAEpBJ,GAAaA,EAAUh2D,QACvB7E,EAAE66D,GAAWl7B,OAAO,GAAGu7B,aAAal8D,KAAKi8D,GAG7CtkD,GACJ,CACJ,CAAE,QACEtZ,KAAKmH,QAAQw2D,SAAWA,CAC5B,CAEID,EAAOl2D,QACPxH,KAAKoK,QAAQ,OAAQ,CACjB1E,KAAM,SACNwmD,MAAOwR,GAGnB,EAEA5C,WAAY,SAAS5O,GACjBlsD,KAAKu9D,WAAWv9D,KAAK45D,MAAMpyD,OAAQ0kD,EACvC,EAEA8O,WAAY,SAAS9O,GACZjpD,EAAQipD,KACTA,EAAQ,CAACA,IAKb,IAFA,IAAIwR,EAAS,GAEJ9zD,EAAM,EAAGA,EAAMsiD,EAAM1kD,OAAQoC,IAAQ,CAC1C,IAAIulC,EAAO+c,EAAMtiD,GACbs/C,EAAQlpD,KAAKo9D,gBAAgBjuB,GAE7B9nC,EAASrH,KAAKiwB,IAAIi5B,EAAM74B,IAExBhpB,GACAq2D,EAAO/7D,KAAK0F,GAEZA,EAAOwnD,OAAO1f,GAEd9nC,EAAO+C,QAAQ8yC,GAEfl9C,KAAK89D,wBAAwBz2D,EAAQ8nC,IAErCnvC,KAAK86D,WAAW3rB,EAExB,CAEIuuB,EAAOl2D,QACPxH,KAAKoK,QAAQ,OAAQ,CACjB1E,KAAM,SACNwmD,MAAOwR,GAGnB,EAEAxC,YAAa,SAAShP,GAClB,IAAIwR,EAAS19D,KAAK+9D,aAAa7R,GAE3BwR,EAAOl2D,QACPxH,KAAKoK,QAAQ,OAAQ,CACjB1E,KAAM,UACNwmD,MAAOwR,GAGnB,EAEAK,aAAc,SAASC,EAAeC,GAC7Bh7D,EAAQ+6D,KACTA,EAAgB,CAACA,IAGrB,IAAIE,OAAiD,IAAnBD,GAAiCA,EAE/DnW,EAAY,GACZ6V,EAAW39D,KAAKmH,QAAQw2D,SAC5B39D,KAAKmH,QAAQw2D,UAAW,EACxB,IACI,IAAK,IAAI/zD,EAAM,EAAGA,EAAMo0D,EAAcx2D,OAAQoC,IAAQ,CAClD,IAAIulC,EAAO6uB,EAAcp0D,GACrBs/C,EAAQlpD,KAAKo9D,gBAAgBjuB,GAC7BgvB,GAAQ,EACR7kD,EAAQ1P,EAEZ5J,KAAKo+D,UAAUp+D,KAAK45D,OAAO,SAAS1N,GAE5B5yC,IAAU0kD,EAAcx2D,OAAS,GACjC0kD,EAAMG,iBAAkB,EACxBH,EAAMK,UAAY,IAElBL,EAAMG,iBAAkB,EAG5B,IAAK,IAAIziD,EAAM,EAAGA,EAAMsiD,EAAM1kD,OAAQoC,IAAO,CACzC,IAAIulC,EAAO+c,EAAML,GAAGjiD,GACpB,GAAIulC,EAAK9e,KAAO64B,EAAM74B,GAAI,CAGlB67B,EAAMG,iBACNH,EAAMK,UAAU5qD,KAAKwtC,GAEzB2Y,EAAUnmD,KAAKwtC,GACf+c,EAAM1hD,OAAOZ,EAAK,GAClBu0D,GAAQ,EACR,KACJ,CACJ,CACJ,IAEIA,GAASD,IACTl+D,KAAKq+D,wBAAwBnV,GAC7BlpD,KAAKi6D,WAAWlqC,MAExB,CACJ,CAAE,QACE/vB,KAAKmH,QAAQw2D,SAAWA,CAC5B,CAEA,OAAO7V,CACX,EAEAwW,SAAU,SAAShlD,EAAO4yC,GACtB,IAAIwR,EAAS19D,KAAKu+D,WAAWjlD,EAAO4yC,GAEhCwR,EAAOl2D,QACPxH,KAAKoK,QAAQ,OAAQ,CACjB1E,KAAM,SACNwmD,MAAOwR,GAGnB,EAEAa,WAAY,SAASjlD,EAAO4yC,GACnBjpD,EAAQipD,KACTA,EAAQ,CAACA,IAGb,IAAIsS,EAAQ,GACRb,EAAW39D,KAAKmH,QAAQw2D,SAC5B39D,KAAKmH,QAAQw2D,UAAW,EAExB,IACI,IAAK,IAAIp2D,EAAI,EAAGA,EAAI2kD,EAAM1kD,OAAQD,IAAM,CACpC,IAAI4nC,EAAO+c,EAAM3kD,GAEjBvH,KAAKo+D,UAAUp+D,KAAK45D,OAAO,SAASplC,GAChC,IAAK,IAAI5qB,EAAM,EAAGA,EAAM4qB,EAAUhtB,OAAQoC,IAAO,CAC7C,IAAI60D,EAAWjqC,EAAUq3B,GAAGjiD,GAC5B,GAAI60D,EAAS/Q,MAAQve,EAAKue,IAAK,CAC3B8Q,EAAM78D,KAAK88D,GACXjqC,EAAUhqB,OAAO8O,GAAS1P,IAAQ0P,EAAQA,EAAO,EAAGkb,EAAUhqB,OAAOZ,EAAK,GAAG,IAC7E0P,IACA,KACJ,CACJ,CACJ,GACJ,CACJ,CAAE,QACEtZ,KAAKmH,QAAQw2D,SAAWA,CAC5B,CAEA,OAAOa,CACX,EAEAnyD,OAAQ,SAAS68C,GACb,IAAIpyC,EACA7O,EAAOjI,KACP0+D,EAAYz2D,EAAKq0D,mBAgBrB,OAdIoC,IAAaxV,EAAMwE,KAASxE,EAAM4F,OAAU5F,EAAM4F,SAClD7mD,EAAK02D,iBAAiBzV,GAG1BlpD,KAAKo+D,UAAUn2D,EAAK2xD,OAAO,SAAS1N,GAGhC,GAFAp1C,EA7nBZ,SAAqB1I,EAAM86C,GACvB,GAAK96C,EAAL,CAGA,IACIqwD,EACA70D,EAFApC,EAAS4G,EAAK5G,OAIlB,IAAKoC,EAAM,EAAGA,EAAMpC,EAAQoC,IAGxB,IAFA60D,EAAWrwD,EAAKxE,IAEH8jD,KAAO+Q,EAAS/Q,KAAOxE,EAAMwE,IAEtC,OADAt/C,EAAK5D,OAAOZ,EAAK,GACV60D,CAVf,CAaJ,CA6mBqBG,CAAY1S,EAAOhD,GAExBpyC,GAAU4nD,EACV,OAAO,CAEf,IAEA1+D,KAAK6+D,uBAAuB3V,GAErBA,CACX,EAEApB,UAAW,WACP,OAAO9nD,KAAKi6D,UAChB,EAEAlS,QAAS,WACL,IAAIn+C,EACApC,EACAsP,EAAS,GACT1I,EAAOpO,KAAK28D,UAAU38D,KAAK45D,MAAO55D,KAAKmH,QAAQy1D,WAEnD,IAAKhzD,EAAM,EAAGpC,EAAS4G,EAAK5G,OAAQoC,EAAMpC,EAAQoC,IAC1CwE,EAAKxE,GAAKklD,OAAS1gD,EAAKxE,GAAKklD,UAAY1gD,EAAKxE,GAAKk1D,YACnDhoD,EAAOnV,KAAKyM,EAAKxE,IAGzB,OAAOkN,CACX,EAEA+wC,QAAS,WACL,IAAIj+C,EACApC,EACAsP,EAAS,GACT1I,EAAOpO,KAAK28D,UAAU38D,KAAK45D,MAAO55D,KAAKmH,QAAQy1D,WAEnD,IAAKhzD,EAAM,EAAGpC,EAAS4G,EAAK5G,OAAQoC,EAAMpC,EAAQoC,IACzCwE,EAAKxE,GAAKklD,QAAU1gD,EAAKxE,GAAKklD,SAAY1gD,EAAKxE,GAAKmlC,OACrDj4B,EAAOnV,KAAKyM,EAAKxE,IAGzB,OAAOkN,CACX,EAEAqlD,KAAM,WACF,IAAIl0D,EAAOjI,KACP+nD,EAAU,GACVF,EAAU,GACVC,EAAY7/C,EAAKgyD,WAEjBpyC,EAAUllB,EAAEypC,WAAW2J,UAAUluB,UAErC,GAAI5f,EAAKi0D,SAAU,CAEf,IAAKj0D,EAAKwzD,OAAOvS,MACb,OAAOrhC,EAGXkgC,EAAU9/C,EAAK8/C,UACfF,EAAU5/C,EAAK4/C,UAEf,IAAIkX,EAAW,GAEX92D,EAAKd,QAAQqgD,OAASv/C,EAAK29C,UAAUrY,OACrCwxB,EAAW92D,EAAK+2D,YAAYjX,EAASF,EAASC,IAE9CiX,EAASp9D,KAAKyG,MAAM22D,EAAU92D,EAAKg3D,MAAM,SAAUlX,IACnDgX,EAASp9D,KAAKyG,MAAM22D,EAAU92D,EAAKg3D,MAAM,SAAUpX,IACnDkX,EAASp9D,KAAKyG,MAAM22D,EAAU92D,EAAKg3D,MAAM,UAAWnX,KAGxDjgC,EAAUllB,EAAEu8D,KACV92D,MAAM,KAAM22D,GACZI,MAAK,WACH,IAAIv1D,EAAKpC,EAAQ43D,EAAe,GAEhC,IAAKx1D,EAAM,EAAGpC,EAASF,UAAUE,OAAQoC,EAAMpC,EAAQoC,IAC/CtC,UAAUsC,KACV3B,EAAKo3D,QAAQ/3D,UAAUsC,IACvBw1D,EAAe93D,UAAUsC,GAAKk/C,QAItC7gD,EAAK80D,YAAW,GAEhB90D,EAAKq3D,WAELr3D,EAAKs3D,QAAQ,CAAEnyB,OAAQ,OAAQgyB,aAAcA,IAE7Cn3D,EAAKmC,QAAQ0gD,GAET7iD,EAAKs0D,uBACLt0D,EAAKi9C,MAEb,GACJ,MACIj9C,EAAK80D,YAAW,GAEhB90D,EAAKq3D,WAELr3D,EAAKs3D,QAAQ,CAAEnyB,OAAQ,SAG3B,OAAOvlB,CACX,EAEAy3C,SAAUn8D,EAEVq8D,cAAe,SAAStW,GACpB,IAAIjhD,EAAOjI,KAEPkpD,aAAiBvoD,EAAMyN,KAAKk7C,MAC5BrhD,EAAKw3D,aAAavW,IAElBjhD,EAAKgyD,WAAa,GAClBhyD,EAAKyzD,2BACLzzD,EAAK2xD,MAAQ3xD,EAAK0zD,SAAS1zD,EAAK4xD,eAC5B5xD,EAAKd,QAAQ20D,eACb7zD,EAAKwyD,OAASxyD,EAAK+xD,gBAGvB/xD,EAAK6xD,QAAU,GACf7xD,EAAK+0D,UAAU/0D,EAAK2xD,MAAO,GAE3B3xD,EAAKy3D,mBAELz3D,EAAKs3D,UAELt3D,EAAK03D,6BAED13D,EAAKq0D,oBACLr0D,EAAKi9C,OAGjB,EAEAwa,iBAAkBv8D,EAElBw8D,2BAA4B,WACxB,IAAI13D,EAAOjI,KAEwB,MAA/BiI,EAAKd,QAAQi0D,gBACbnzD,EAAKm2D,UAAUn2D,EAAK2xD,OAAO,SAAS1N,GAChC,IAAK,IAAItiD,EAAM,EAAGA,EAAMsiD,EAAM1kD,OAAQoC,IAAO,CACzC,IAAIulC,EAAO+c,EAAML,GAAGjiD,GACE,UAAlBulC,EAAKywB,WAA2C,UAAlBzwB,EAAKywB,YACnCzwB,EAAKJ,OAAQ,EAErB,CACJ,GAER,EAEA8wB,WAAY,WACR,IAAIj2D,EACApC,EACA4G,EAAOpO,KAAK28D,UAAU38D,KAAK45D,MAAO55D,KAAKmH,QAAQy1D,WAEnD,GAAI58D,KAAKi6D,WAAWzyD,OAChB,OAAO,EAGX,IAAKoC,EAAM,EAAGpC,EAAS4G,EAAK5G,OAAQoC,EAAMpC,EAAQoC,IAC9C,GAAKwE,EAAKxE,GAAKklD,OAAS1gD,EAAKxE,GAAKklD,SAAY1gD,EAAKxE,GAAKmlC,MACpD,OAAO,EAIf,OAAO,CACX,EAEAswB,QAAS,SAASvoD,GACd,IAOItP,EAPAS,EAAOjI,KACP8oD,EAAShyC,EAAOgyC,OAChBV,EAAWtxC,EAAOsxC,SAClBx+C,EAAM,EACNk2D,EAAc73D,EAAKq0D,mBACnBsB,EAAW31D,EAAK4xD,cAChBn0D,EAAOoR,EAAOpR,KAKlB,GAFAuC,EAAKmC,QAAQ+gD,EAAY,CAAE/C,SAAUA,EAAU1iD,KAAMA,IAEjD0iD,IAAapyB,EAAcoyB,GAAW,CAGtC,GAFAA,EAAWngD,EAAKwzD,OAAOrmC,MAAMgzB,GAEzBngD,EAAK83D,oBAAoB3X,GACzB,OAGJA,EAAWngD,EAAKwzD,OAAOrtD,KAAKg6C,GAEvBnlD,EAAQmlD,KACTA,EAAW,CAACA,GAEpB,MACIA,EAAWzlD,EAAEkY,IAAIiuC,GAAQ,SAASI,GAAS,OAAOA,EAAM/2C,QAAU,IAOtE,IAJa,YAATzM,IACAuC,EAAKgyD,WAAa,IAGjBrwD,EAAM,EAAGpC,EAASshD,EAAOthD,OAAQoC,EAAMpC,EAAQoC,IACnC,YAATlE,GACAojD,EAAOl/C,GAAKilD,OAAOzG,EAASx+C,IAEf,WAATlE,EACAk4D,EAASj8D,KAAKm+D,EAAc73D,EAAKo1D,kBAAkBvU,EAAOl/C,GAAKuI,UAAYi2C,EAASx+C,IACpE,WAATlE,GACPuC,EAAK61D,wBAAwBhV,EAAOl/C,GAAMw+C,EAASx+C,KAGvD3B,EAAKo2D,wBAAwBvV,EAAOl/C,GAGhD,EAEAk0D,wBAAyB,SAAS5U,EAAO7vC,GACrCrZ,KAAKggE,2BAA2B9W,GAAO,SAAS5vC,EAAO4yC,GACnDvrD,EAAM6H,WAAW0jD,EAAM5yC,GAAQD,EACnC,GACJ,EAEA2mD,2BAA4B,SAAS9W,EAAOt/B,GACxC5pB,KAAKigE,mBACD,SAAS/T,GACL,IAAI5yC,EAAQ+/C,GAAqBnN,EAAOhD,GACxC,GAAI5vC,GAAS,EAET,OADAsQ,EAAStQ,EAAO4yC,IACT,CAEf,GACR,EAEAmS,wBAAyB,SAASnV,GAC9BlpD,KAAKggE,2BAA2B9W,GAAO,SAAS5vC,EAAO4yC,GACnDA,EAAM1hD,OAAO8O,EAAO,EACxB,GACJ,EAEAojD,UAAW,SAAStuD,GAEhB,OADYpO,KAAKs8D,mBAAwCt8D,KAAKy7D,OAAO9xB,OAA/B3pC,KAAKy7D,OAAOrtD,MACtC7D,KAAKvK,KAAKy7D,OAAQrtD,EAClC,EAEA6xD,kBAAmB,SAASr2C,GACxB,IAAI3hB,EAAOjI,KACPmH,EAAUc,EAAKd,QACfq2D,EAAYv1D,EAAKw1D,uBAErBx1D,EAAKm2D,UAAUn2D,EAAK4xD,cAAejwC,GAE/BziB,EAAQ20D,cAAgB30D,EAAQy1D,WAChC55D,EAAKw6D,GAAW,SAASj2D,EAAG0sD,GACxBhsD,EAAKm2D,UAAUnK,EAAM4J,aAAcj0C,EACvC,GAER,EAEDw0C,UAAW,SAAShwD,EAAMwb,GACjBxb,GAAQA,EAAK5G,SACTxH,KAAKs8D,mBACLzD,GAAezqD,EAAMwb,GAErBA,EAASxb,GAGrB,EAEA8xD,kBAAmB,SAAShX,GACxB,IAAI0U,EACAh0D,EAWJ,OAFA5J,KAAKigE,mBARU,SAAS/T,GAEhB,IADAtiD,EAAMyvD,GAAqBnN,EAAOhD,KACvB,EAEP,OADA0U,EAAW1R,EAAMtiD,IACV,CAEf,IAIGg0D,CACX,EAEA6B,aAAc,SAASvW,GACnB,IAAIjhD,EAAOjI,KACP49D,EAAW59D,KAAKkgE,kBAAkBhX,GAEtClpD,KAAKo+D,UAAUp+D,KAAK45D,OAAO,SAAS1N,GAChC,IAAItiD,EAAM0vD,GAAapN,EAAOhD,GAC1Bt/C,GAAO,KACHg0D,GAAc1U,EAAM4F,UAAW8O,EAASgC,WAQxC33D,EAAKk4D,eAAejX,GAEpBgD,EAAM1hD,OAAOZ,EAAK,GAElB3B,EAAK42D,uBAAuB3V,KAX5BgD,EAAMtiD,GAAKilD,OAAO+O,GAEQ,UAAtBA,EAASgC,YACT1T,EAAMtiD,GAAKmlC,OAAQ,IAWnC,GACJ,EAEAoxB,eAAgBh9D,EAEhBi9D,QAAS,SAASrB,EAAU3wD,GACxB,IAAInG,EAAOjI,KAEXiI,EAAKmC,QAAQ6gD,EAAc,CAAEvlD,KAAM,WAEnCuC,EAAKmC,QAAQ8gD,GAEbjjD,EAAK29C,UAAUrY,OAAOxqC,EAAO,CACzBolD,QAAS,SAASC,EAAU1iD,GACxB,IAAImiB,EAAUllB,EAAE07B,KAAK0gC,GAAU,SAAS35D,GACpC,OAAOA,EAAEM,MAAQA,CACrB,IAAG,GAECmiB,GACAA,EAAQkuB,QAAQ,CACZqS,SAAUA,EACVU,OAAQjhC,EAAQihC,OAChBpjD,KAAMA,GAGlB,EACAgpB,MAAO,SAAS05B,EAAUI,EAAQ95B,GAC9B,IAAK,IAAI9kB,EAAM,EAAGA,EAAMm1D,EAASv3D,OAAQoC,IACrCm1D,EAASn1D,GAAKy2D,OAAOjY,GAGzBngD,EAAKymB,MAAM05B,EAAUI,EAAQ95B,EACjC,GACDtgB,GACP,EAEA4wD,YAAa,SAASjX,EAASF,EAASC,GACpC,IAAI7/C,EAAOjI,KACP++D,EAAW,GAiCf,OA/BI92D,EAAKd,QAAQqgD,QACTO,EAAQvgD,QACRu3D,EAASp9D,KAAKgB,EAAEypC,UAAS,SAASD,GAC9BA,EAASzmC,KAAO,SAChBymC,EAAS2c,OAASf,CACtB,KAGAF,EAAQrgD,QACRu3D,EAASp9D,KAAKgB,EAAEypC,UAAS,SAASD,GAC9BA,EAASzmC,KAAO,SAChBymC,EAAS2c,OAASjB,CACtB,KAGAC,EAAUtgD,QACVu3D,EAASp9D,KAAKgB,EAAEypC,UAAS,SAASD,GAC9BA,EAASzmC,KAAO,UAChBymC,EAAS2c,OAAShB,CACtB,KAGJ7/C,EAAKm4D,QAAQrB,EAAU,CACnB3wD,KAAM,CACF25C,QAAS9/C,EAAKwzD,OAAOrS,UAAUj3C,GAAO41C,IACtCF,QAAS5/C,EAAKwzD,OAAOrS,UAAUj3C,GAAO01C,IACtCC,UAAW7/C,EAAKwzD,OAAOrS,UAAUj3C,GAAO21C,QAK7CiX,CACX,EAEAuB,SAAU,SAASlyD,EAAM06C,EAAQpjD,GAC7B,IAAIuC,EAAOjI,KAEX,OAAO2C,EAAEypC,UAAS,SAASD,GACvBlkC,EAAKmC,QAAQ6gD,EAAc,CAAEvlD,KAAMA,IAEnCuC,EAAKmC,QAAQ8gD,GAEbjjD,EAAK29C,UAAUlgD,GAAM6E,KAAKtC,EAAK29C,UAAW7iD,EAAO,CAC7ColD,QAAS,SAASC,GACdjc,EAAS4J,QAAQ,CACbqS,SAAUA,EACVU,OAAQA,EACRpjD,KAAMA,GAEd,EACAgpB,MAAO,SAAS05B,EAAUI,EAAQ95B,GAC9Byd,EAASk0B,OAAOjY,GAChBngD,EAAKymB,MAAM05B,EAAUI,EAAQ95B,EACjC,GACDtgB,GACP,IAAGyZ,SACP,EAEAo3C,MAAO,SAAS3nC,EAAQlpB,GACpB,IACIxE,EACApC,EAFAS,EAAOjI,KAGP++D,EAAW,GACXwB,EAAYt4D,EAAKwzD,OAAOrS,UAAUj3C,GAAO/D,IAE7C,GAAInG,EAAKd,QAAQqgD,MACTp5C,EAAK5G,QACLu3D,EAASp9D,KAAKsG,EAAKq4D,SAAU,CAAElyD,KAAM,CAAE06C,OAAQyX,IAAenyD,EAAOkpB,SAGzE,IAAK1tB,EAAM,EAAGpC,EAAS4G,EAAK5G,OAAQoC,EAAMpC,EAAQoC,IAC9Cm1D,EAASp9D,KAAKsG,EAAKq4D,SAAU,CAAElyD,KAAMmyD,EAAU32D,IAAQ,CAAEwE,EAAKxE,IAAQ0tB,IAI9E,OAAOynC,CACX,EAEA7Z,KAAM,SAAS92C,GACX,IAAInG,EAAOjI,KAAMykC,EAASx8B,EAAKu4D,QAAQpyD,GACnC+9B,EAAWxpC,EAAEypC,WAsCjB,OApCAnkC,EAAKw4D,cAAch8B,GAAQ,WACvB,IAAIi8B,EAAcz4D,EAAKmC,QAAQ6gD,EAAc,CAAEvlD,KAAM,SAChDg7D,GA4BDz4D,EAAK04D,kBAELx0B,EAAS4J,QAAQ2qB,KA7BjBz4D,EAAKmC,QAAQ8gD,GAEbjjD,EAAK6xD,QAAU,GACf7xD,EAAKmC,QAAQ,SACTnC,EAAKi0D,SACLj0D,EAAK29C,UAAUV,KAAK,CAChB92C,KAAMq2B,EACN0jB,QAAS,SAAS/5C,GACdnG,EAAK6xD,QAAU,GACf7xD,EAAKkgD,QAAQ/5C,EAAMq2B,GAEnB0H,EAAS4J,SACb,EACArnB,MAAO,WACH,IAAI2I,EAAOxwB,EAAM0D,KAAKjD,WAEtBW,EAAKymB,MAAMtmB,MAAMH,EAAMovB,GAEvB8U,EAASk0B,OAAOj4D,MAAM+jC,EAAU9U,EACpC,IAEkC,MAA/BpvB,EAAKd,QAAQi0D,iBACpBnzD,EAAKkgD,QAAQlgD,EAAKm0D,cAAe33B,GAEjC0H,EAAS4J,WAOrB,IAEO5J,EAAStkB,SACpB,EAEA+4C,gBAAiB,SAASxyD,GACtB,OAAOpO,KAAKy7D,OAAOxI,WAAW7kD,EAClC,EAEA+5C,QAAS,SAAS/5C,GACd,IAEI89C,EACA2U,EAHA54D,EAAOjI,KACPmH,EAAUc,EAAKd,QAMnB,GAFAc,EAAKmC,QAAQ+gD,EAAY,CAAE/C,SAAUh6C,EAAM1I,KAAM,SAE7CuC,EAAKi0D,SAAU,CAGf,GAFA9tD,EAAOnG,EAAKwzD,OAAOrmC,MAAMhnB,GAErBnG,EAAK83D,oBAAoB3xD,GAEzB,YADAnG,EAAK04D,kBAIT14D,EAAKwyD,OAASxyD,EAAKwzD,OAAOzU,MAAM54C,GAE5BnG,EAAKs0D,wBACLt0D,EAAK64D,mBAAqB74D,EAAKwyD,QAG/BxyD,EAAKiyD,UAAYjyD,EAAKwyD,SACtBxyD,EAAKiyD,UAAYjyD,EAAKwyD,OAClBxyD,EAAKd,QAAQk9C,UAAYp8C,EAAKd,QAAQk9C,SAAWp8C,EAAKiyD,YACtDjyD,EAAKiyD,UAAYjyD,EAAKd,QAAQk9C,WAIlCp8C,EAAKuyD,YAAcrzD,EAAQ60D,mBAC3B/zD,EAAK84D,iBAAmB94D,EAAK24D,gBAAgBxyD,IAGjDA,EAAOnG,EAAKy0D,UAAUtuD,GAEtBnG,EAAKgyD,WAAa,EACtB,KAAO,CACH7rD,EAAOnG,EAAKy0D,UAAUtuD,GAEtB89C,EAAQ,GACR,IAGItiD,EAHAo3D,EAAU,CAAC,EACX9X,EAAQjhD,EAAKwzD,OAAOvS,MACpBK,EAAUL,EAAQA,EAAMK,QAAU,KAGtC,IAAK3/C,EAAM,EAAGA,EAAM5J,KAAKi6D,WAAWzyD,OAAQoC,IAAO,CAC/C,IAAIymB,EAAKrwB,KAAKi6D,WAAWrwD,GAAK2/C,GAC9ByX,EAAQ3wC,GAAMA,CAClB,CAEA,IAAKzmB,EAAM,EAAGA,EAAMwE,EAAK5G,OAAQoC,IAAO,CACpC,IAAIulC,EAAO/gC,EAAKxE,GAEH,WADDulC,EAAKywB,UAERoB,EAAQ7xB,EAAKoa,KACdvpD,KAAK2+D,iBAAiB3+D,KAAKo9D,gBAAgBjuB,IAG/C+c,EAAMvqD,KAAKwtC,EAEnB,CAEA/gC,EAAO89C,EAEPjkD,EAAKwyD,OAASrsD,EAAK5G,MACvB,CAKA,GAHAS,EAAK+xD,eAAiB/xD,EAAKwyD,OAC3BoG,EAAgB54D,EAAKg5D,OAASh5D,EAAK2xD,MAAMpyD,QAAUS,EAAKg5D,MAAQh5D,EAAK2xD,MAAMpyD,OAEvES,EAAKd,QAAQ+5D,QAAS,CAClBL,GACA54D,EAAK4xD,cAAcrvD,OAAOvC,EAAKg5D,MAAOh5D,EAAK4xD,cAAcryD,QAE7D0kD,EAAQ99C,EAAKvH,MAAM,GACnB,IAAK,IAAIkkC,EAAI,EAAGA,EAAImhB,EAAM1kD,OAAQujC,IAC9B9iC,EAAK4xD,cAAcl4D,KAAKuqD,EAAMnhB,GAEtC,MACI9iC,EAAK4xD,cAAgBzrD,EAAKvH,MAAM,GAKpC,GAFAoB,EAAKyzD,2BAEDzzD,EAAKd,QAAQ+5D,QAAS,CACtBj5D,EAAK2xD,MAAM3vD,OAAOizC,EAAQj1C,EAAKk5D,gBAE3Bl5D,EAAKq0D,oBAAsBr0D,EAAK2xD,MAAM3xD,EAAK2xD,MAAMpyD,OAAS,GAAGkB,QAAU0F,EAAK,GAAG1F,QAC/EqvD,GAAc9vD,EAAK2xD,MAAM3xD,EAAK2xD,MAAMpyD,OAAS,GAAI4G,EAAK,IACtDA,EAAKgI,SAGThI,EAAOnG,EAAK0zD,SAASvtD,GACjByyD,GACA54D,EAAK2xD,MAAMpvD,OAAOvC,EAAKg5D,MAAOh5D,EAAK2xD,MAAMpyD,QAE7C,IAAK,IAAID,EAAI,EAAGA,EAAI6G,EAAK5G,OAAQD,IAC7BU,EAAK2xD,MAAMj4D,KAAKyM,EAAK7G,IAEzBU,EAAK2xD,MAAMpwD,KAAK0zC,EAAQj1C,EAAKk5D,eACjC,MACIl5D,EAAK2xD,MAAQ3xD,EAAK0zD,SAASvtD,GAG/BnG,EAAK03D,6BAEL13D,EAAK80D,aAEL90D,EAAK+0D,UAAU/0D,EAAK2xD,OAEpB3xD,EAAKg1D,SAASh1D,EAAK2xD,OAEnB3xD,EAAK04D,iBACT,EAEAjF,yBAA0B,WACtB,GAAI17D,KAAK45D,OAAS55D,KAAK46D,+BACnB,IAAK,IAAIhxD,EAAM,EAAGA,EAAM5J,KAAK45D,MAAMpyD,OAAQoC,IACnC5J,KAAK45D,MAAMhwD,GAAK+C,SAChB3M,KAAK45D,MAAMhwD,GAAK+C,OAASxJ,EAIzC,EAEA45D,WAAY,SAASqE,GACjB,IAAIjI,EAAiBn5D,KAAKs8D,mBACtBpT,EAAQlpD,KAAKy7D,OAAOvS,MA4BxB,GAAmC,MAA/BlpD,KAAKmH,QAAQi0D,eAAwB,CAKrC,IAJA,IAAI9H,EA3BR,SAASpH,EAAM99C,GAGX,IAFA,IAAIklD,EAAQ,GAEH1pD,EAAM,EAAGA,EAAMwE,EAAK5G,OAAQoC,IAAO,CACxC,IAAI60D,EAAWrwD,EAAKy9C,GAAGjiD,GACnBulC,EAAOsvB,EAAStsD,SAEhBgnD,GAAkBsF,EAASvS,MAC3B/c,EAAK+c,MAAQA,EAAMuS,EAASvS,QAE5B/c,EAAKue,IAAM+Q,EAAS/Q,IAEhBxE,IACIuV,EAAS3P,QACT3f,EAAKywB,UAAY,SACVnB,EAAS1vB,QAChBI,EAAKywB,UAAY,YAI7BtM,EAAM3xD,KAAKwtC,EACf,CAEA,OAAOmkB,CACX,CAGgBpH,CAAMlsD,KAAK45D,OAEnB9R,EAAY,GAEPl+C,EAAM,EAAGA,EAAM5J,KAAKi6D,WAAWzyD,OAAQoC,IAAO,CACnD,IAAIulC,EAAOnvC,KAAKi6D,WAAWrwD,GAAKuI,SAChCg9B,EAAKywB,UAAY,UACjB9X,EAAUnmD,KAAKwtC,EACnB,CAEAnvC,KAAKo8D,YAAY9I,EAAMl1C,OAAO0pC,IAE1BsZ,IACAphE,KAAK65D,cAAgB75D,KAAKy7D,OAAOA,OAASz7D,KAAKy7D,OAAOA,OAAO3D,oBAAoBxE,GAAStzD,KAAKy7D,OAAO3D,oBAAoBxE,GAElI,CACJ,EAEA0J,UAAW,SAAS5uD,EAAMy2C,GACtB,IAEIl5C,EAFA1D,EAAOjI,KACP8V,OAA0B,IAAX,EAAyB+uC,EAAQ58C,EAAKg5D,OAAS,EAE9DhN,EAAQ,CACJ7lD,KAAMA,EACNyvD,aAAczvD,EAAK+D,SACnBkvD,UAAWp5D,EAAKq5D,cAGpBthE,KAAKw8D,iBACL7wD,EAAMmK,EAAQ1H,EAAK5G,OACnBysD,EAAMsN,WAAazrD,EACnBm+C,EAAMuN,SAAW71D,GAEjBA,EAAMmK,EAAQ7N,EAAK00D,UAAUvuD,GAAM,GAAM5G,OAG7CysD,EAAMn+C,MAAQA,EACdm+C,EAAMtoD,IAAMA,EACZ1D,EAAK6xD,QAAQn4D,KAAKsyD,GAClBhsD,EAAKw5D,cAEDx5D,EAAKu0D,kBACAv0D,EAAKy5D,cACNz5D,EAAKy5D,YAAc,IAEvBz5D,EAAK05D,oBAAoB1N,EAAM7lD,MAC/BnG,EAAK25D,2BAEb,EAEAD,oBAAqB,SAASvzD,GAG1B,IAFA,IAAI5G,EAAS4G,EAAK5G,OAETD,EAAI,EAAGA,EAAIC,EAAQD,IACxBvH,KAAK0hE,YAAY//D,KAAKyM,EAAK7G,GAEnC,EAEAs6D,eAAgB,SAASnU,GAIrB,IAHA,IACI6G,EADA/sD,EAASxH,KAAK0hE,YAAYl6D,OAGrBD,EAAI,EAAGA,EAAIC,EAAQD,IAExB,IADAgtD,EAAQv0D,KAAK0hE,YAAYn6D,IACfmmD,MAAQA,EACd,OAAO6G,CAGnB,EAEAkN,YAAa,WACTzhE,KAAK85D,QAAQ99C,MAAK,SAAS5W,EAAGjB,GAC1B,OAAOiB,EAAE0Q,MAAQ3R,EAAE2R,KACvB,GACJ,EAEA4Y,MAAO,SAASozC,EAAKtZ,EAAQuZ,GACzB/hE,KAAK2gE,kBACL3gE,KAAKoK,QAAQ+gD,EAAY,CAAE,GAC3BnrD,KAAKoK,QAAQ4gD,EAAO,CAAE8W,IAAKA,EAAKtZ,OAAQA,EAAQuZ,YAAaA,GACjE,EAEAvB,QAAS,SAASpyD,GACd,IAAInG,EAAOjI,KACPmH,EAAUpE,EAAO,CACbgiD,KAAM98C,EAAK88C,OACXF,KAAM58C,EAAK48C,OACXP,KAAMr8C,EAAKq8C,OACXD,SAAUp8C,EAAKo8C,WACfroC,KAAM/T,EAAKmyD,MACX7qC,OAAQtnB,EAAKqyD,QACb/F,MAAOtsD,EAAKsyD,OACZ9G,UAAWxrD,EAAKuyD,WAChB9F,cAAezsD,EAAKyyD,aACpBsH,qBAAsB/5D,EAAKd,QAAQ66D,sBACpC5zD,GAyCP,OAvCKnG,EAAKd,QAAQ20D,sBACP30D,EAAQ49C,YACR59C,EAAQ09C,YACR19C,EAAQm9C,YACRn9C,EAAQk9C,UAGdp8C,EAAKd,QAAQgyD,eAEPlxD,EAAKwzD,OAAOvS,OAAS/hD,EAAQotD,QACpCptD,EAAQotD,MAAQkF,GAAwBtyD,EAAQotD,MAAOtsD,EAAKwzD,OAAOvS,eAF5D/hD,EAAQotD,MAKdtsD,EAAKd,QAAQ40D,gBAEP9zD,EAAKwzD,OAAOvS,OAAS/hD,EAAQooB,SACrCpoB,EAAQooB,OAASiqC,GAA8BryD,EAAQooB,OAAQtnB,EAAKwzD,OAAOvS,eAFnE/hD,EAAQooB,OAKdtnB,EAAKd,QAAQ00D,cAEP5zD,EAAKwzD,OAAOvS,OAAS/hD,EAAQ6U,OACpC7U,EAAQ6U,KAAOy9C,GAAwBtyD,EAAQ6U,KAAM/T,EAAKwzD,OAAOvS,eAF1D/hD,EAAQ6U,KAKd/T,EAAKd,QAAQ60D,iBAEP/zD,EAAKwzD,OAAOvS,OAAS/hD,EAAQssD,YACpCtsD,EAAQssD,UAAYgG,GAAwBtyD,EAAQssD,UAAWxrD,EAAKwzD,OAAOvS,eAFpE/hD,EAAQssD,UAKdxrD,EAAKd,QAAQutD,aAAiBzsD,EAAKd,QAAQ20D,cAAgB7zD,EAAKd,QAAQgyD,uBAClEhyD,EAAQutD,YAGdzsD,EAAKd,QAAQ66D,6BACP76D,EAAQ66D,qBAGZ76D,CACX,EAEAs5D,cAAe,SAASt5D,EAASyiB,GAC7B,IAAI3hB,EAAOjI,KACNiI,EAAKg6D,mBAKNh6D,EAAKi6D,SAAW,CAAEt4C,SAAUA,EAASpgB,KAAKvB,GAAOd,QAASA,IAJ1Dc,EAAKg6D,oBAAqB,EAC1Bh6D,EAAKi6D,SAAWt/D,EAChBgnB,IAIR,EAEA+2C,gBAAiB,WACb,IAAI14D,EAAOjI,KACXiI,EAAKg6D,oBAAqB,EACtBh6D,EAAKi6D,UACLj6D,EAAKw4D,cAAcx4D,EAAKi6D,SAAS/6D,QAASc,EAAKi6D,SAASt4C,SAEhE,EAEAm2C,oBAAqB,SAAS3X,GAC1B,GAAIpoD,KAAKy7D,OAAOtS,OAAQ,CACpB,IAAIA,EAASnpD,KAAKy7D,OAAOtS,OAAOf,GAChC,GAAIe,EAEA,OADAnpD,KAAKoK,QAAQ4gD,EAAO,CAAE8W,IAAK,KAAMtZ,OAAQ,cAAeuZ,YAAa,eAAgB5Y,OAAQA,KACtF,CAEf,CACA,OAAO,CACX,EAEAgZ,YAAa,SAAS/zD,GAClB,IAAI86C,EAAQlpD,KAAKy7D,OAAOvS,MAExB,SAAIA,IAAS96C,EAAK5G,WACL4G,EAAK,aAAc86C,EAIpC,EAEAyS,SAAU,SAASvtD,GACf,IAAInG,EAAOjI,KACPkpD,EAAQjhD,EAAKwzD,OAAOvS,OAExBjhD,EAAK2yD,gCAAiC,EAElCxsD,aAAgBD,IAChBlG,EAAK2yD,gCAAiC,EAClC3yD,EAAKk6D,YAAY/zD,KACjBA,EAAK1I,KAAOuC,EAAKwzD,OAAOvS,MACxB96C,EAAKs9C,QAAQt9C,EAAMA,MAIvBA,EAAO,IADSnG,EAAKo8C,aAAep8C,EAAKd,QAAQ20D,aAAeztD,EAAsBF,GACjEC,EAAMnG,EAAKwzD,OAAOvS,QAClCv8C,OAAS,WAAa,OAAO1E,EAAK0E,QAAU,EAcrD,OAXI1E,EAAKq0D,oBACL1D,GAAexqD,EAAM86C,KAGrBjhD,EAAKk5D,gBAAkBl5D,EAAK2xD,OAAS3xD,EAAK2xD,iBAAiBzrD,IACzDlG,EAAKd,QAAQy1D,WAAa30D,EAAKd,QAAQ20D,aAGzC7zD,EAAKk5D,eAAiBl5D,EAAKs3D,QAAQ/1D,KAAKvB,GAFxCA,EAAK2xD,MAAM3vD,OAAOizC,EAAQj1C,EAAKk5D,gBAK5B/yD,EAAK5E,KAAK0zC,EAAQj1C,EAAKk5D,eAClC,EAEAiB,sBAAuB,SAASh1B,EAAQ8e,GACpC,IAAIjkD,EAAOjI,KAEPgnD,EAAQxtC,SAASvR,EAAKwyD,OAAQ,IAE7BpF,GAASptD,EAAKwyD,UACfzT,EAAQxtC,SAASvR,EAAK+xD,eAAgB,KAE3B,QAAX5sB,EACA4Z,GAASkF,EAAM1kD,OACG,WAAX4lC,EACP4Z,GAASkF,EAAM1kD,OACG,eAAX4lC,GAAsC,SAAXA,GAAsBnlC,EAAKd,QAAQ20D,aAEnD,SAAX1uB,IACP4Z,EAAQ/+C,EAAK+xD,eAAiBxgD,SAASvR,EAAKwyD,OAAQ,KAFpDzT,EAAQ/+C,EAAK+xD,eAKjB/xD,EAAKwyD,OAASzT,CAClB,EAEAqb,4BAA6B,WACzB,MAAMp6D,EAAOjI,KACTsiE,EAAgBr6D,EAAKs6D,gBAAkB,GACvCC,EAAa,CAAC,EAElB,IACIC,EADAtE,GAAQ,EAWZ,OARAqE,EAAWxmD,KAAO/T,EAAKmyD,MACvBoI,EAAWjzC,OAAStnB,EAAKqyD,QACzBkI,EAAWjO,MAAQtsD,EAAKsyD,OACxBiI,EAAW/O,UAAYxrD,EAAKuyD,WAE5BiI,EAAc1vD,EAAUyvD,GACxBrE,EAAQmE,EAAc3V,MAAKr3C,GAAKmtD,EAAY9sD,QAAQ,YAAaL,OAAU,KAEnE6oD,CACZ,EAEAQ,iBAAkB,SAASzV,GACRlpD,KAAKi6D,WAAW9jC,MAAK,SAASgZ,GACzC,OAAOA,EAAKue,MAAQxE,EAAMwE,GAC9B,KAEI1tD,KAAKi6D,WAAWt4D,KAAKunD,EAE7B,EAEAqW,QAAS,SAAS56D,GACd,IAAiBiF,EAAKsiD,EAAO1kD,EAAzBS,EAAOjI,KAA0BotC,EAASzoC,EAAIA,EAAEyoC,OAAS,GAE7D,GAAe,WAAXA,EACA,IAAKxjC,EAAM,EAAGpC,EAAS7C,EAAEunD,MAAM1kD,OAAQoC,EAAMpC,EAAQoC,IAC5CjF,EAAEunD,MAAMtiD,GAAKklD,OAAUnqD,EAAEunD,MAAMtiD,GAAKklD,SACrC7mD,EAAK02D,iBAAiBh6D,EAAEunD,MAAMtiD,IAc1C,GATIjF,IACAunD,EAAQvnD,EAAEunD,OAAS,GACnBvnD,EAAE+9D,cAAgBz6D,EAAKo6D,gCAAkCp6D,EAAK06D,sBAE7C,eAAbh+D,EAAEyoC,QAA2B8e,EAAMS,MAAKplD,GAAKA,EAAEinD,gBAC/CvmD,EAAKs6D,eAAiB9hE,OAAOoqB,KAAKlmB,EAAEunD,MAAM,GAAGsC,gBAIjDvmD,EAAKd,QAAQw2D,UAAwB,QAAXvwB,GAA+B,WAAXA,GAAkC,eAAXA,EAkBrEnlC,EAAKm6D,sBAAsBh1B,EAAQzoC,EAAIA,EAAEunD,MAAQ,IAEjDjkD,EAAKg1D,SAASh1D,EAAK2xD,MAAOj1D,OApBqE,CAChF,QAAXyoC,IACAnlC,EAAK06D,uBAAwB,GAGjC,IAAI74D,EAAU,SAASutB,GACC,SAAhBA,EAAK+V,SACLnlC,EAAK06D,uBAAwB,EAC7B16D,EAAKgC,OAAO,SAAUH,GACtB7B,EAAKm6D,sBAAsBh1B,EAAQzoC,EAAEunD,OAE7C,EAEAjkD,EAAKiC,MAAM,SAAUJ,GAErB7B,EAAKk0D,MAET,CAKJ,EAEAyG,qBAAsB,SAASx0D,EAAMjH,GACjCA,EAAUA,GAAW,CAAC,EAEtB,IAAI3G,EAAQ,IAAI6vD,GAAMjiD,GAClB6kD,EAAa9rD,EAAQssD,UACrBlkC,EAASpoB,EAAQooB,OAMrB,OAJIA,IACA/uB,EAAQA,EAAM+uB,OAAOA,IAGlB/uB,EAAMizD,UAAUR,EAC3B,EAEAgK,SAAU,SAAS7uD,EAAMzJ,GACrB,IAEImS,EAFA7O,EAAOjI,KACPmH,EAAU,CAAC,EA8Cf,IA3CkC,IAA9Bc,EAAKd,QAAQ20D,eACb30D,EAAQ09C,KAAO58C,EAAKg5D,MACpB95D,EAAQ49C,KAAO98C,EAAK46D,OAAS56D,EAAKiyD,UAE9B/yD,EAAQ09C,OAASjiD,GAAeqF,EAAKkyD,QAAUv3D,GAAeqF,EAAKiyD,YAAct3D,IACjFuE,EAAQ09C,MAAQ58C,EAAKkyD,MAAQ,GAAKlyD,EAAKiyD,WAGvCjyD,EAAKd,QAAQy1D,YACbz1D,EAAQ09C,KAAO58C,EAAK66D,uBAIO,IAA/B76D,EAAKd,QAAQ00D,gBACb10D,EAAQ6U,KAAO/T,EAAKmyD,QAGa,IAAjCnyD,EAAKd,QAAQ40D,kBACb50D,EAAQooB,OAAStnB,EAAKqyD,UAGU,IAAhCryD,EAAKd,QAAQgyD,iBACbhyD,EAAQotD,MAAQtsD,EAAKsyD,SAGa,IAAlCtyD,EAAKd,QAAQ60D,mBACb70D,EAAQssD,UAAYxrD,EAAKuyD,YAGzBvyD,EAAKd,QAAQgyD,gBACblxD,EAAK86D,kBAAkB30D,GAG3BjH,EAAQutD,YAAczsD,EAAKyyD,aAGvB5jD,EADA7O,EAAKu0D,iBAAmB73D,IAAmB,SAAbA,EAAEyoC,QAAkC,gBAAbzoC,EAAEyoC,QAAyC,kBAAbzoC,EAAEyoC,QAC5EnlC,EAAK+6D,cAAc50D,EAAM,CAC9BqlD,UAAWxrD,EAAKuyD,aAGXvyD,EAAK+6D,cAAc50D,EAAMjH,GAGlCc,EAAKqyD,SAAW31D,GAAkB,QAAbA,EAAEyoC,OAAkB,CACzC,IAAI8b,EAAQvkD,EAAEunD,MAAM,GAChB+W,EAAansD,EAAO1I,KAEpBnG,EAAKo0D,eAAiBr8D,KAAKs8D,qBAC3B2G,EAAatK,GAAcsK,IAGXA,EAAW9sC,MAAK,SAASgZ,GACzC,OAAOA,EAAKue,MAAQxE,EAAMwE,GAC9B,MAGI52C,EAAO1I,KAAK5D,OAAO0+C,EAAM5vC,MAAO,EAAGrR,EAAKo0D,aAAep0D,EAAKo1D,kBAAkBnU,GAASA,GACvFpyC,EAAOkwC,QAEf,EAEsC,IAAlC/+C,EAAKd,QAAQ60D,mBAGb/zD,EAAK84D,iBAAmB94D,EAAK26D,qBAAqB9rD,EAAOosD,iBAAmB90D,EAAMjH,IAGtFc,EAAKk7D,SAASrsD,EAAQ3P,EAASxC,GAE/BsD,EAAKm7D,gBAAgBtsD,EAAOkwC,OAAO,IAEnCriD,EAAIA,GAAK,CAAC,GAERunD,MAAQvnD,EAAEunD,OAASjkD,EAAK8xD,MAE1B9xD,EAAKmC,QAAQ8yC,EAAQv4C,EACzB,EAEAw+D,SAAU,SAASrsD,EAAQ3P,EAASxC,GAChC,IAAIsD,EAAOjI,KAEX,GAAIiI,EAAKu0D,kBAAoBv0D,EAAKq0D,mBAC9B,IAAI33D,GAAmB,SAAbA,EAAEyoC,QAAkC,gBAAbzoC,EAAEyoC,QAAyC,kBAAbzoC,EAAEyoC,OAG1D,CACHnlC,EAAK6xD,QAAU,GACf,IAAIt5D,EAAQ,IAAI6vD,GAAMv5C,EAAO1I,MAC7BnG,EAAK+0D,UAAU/0D,EAAK0zD,SAAS7kD,EAAO1I,OAEhCjH,EAAQ09C,KAAO19C,EAAQ49C,KAAOjuC,EAAO1I,KAAK5G,SAC1CL,EAAQ09C,KAAOxhD,KAAK8V,IAAI,EAAGrC,EAAO1I,KAAK5G,OAASL,EAAQ49C,OAG5D98C,EAAK2vB,KAAKp3B,EAAMyzD,MAAM9sD,EAAQ09C,KAAM19C,EAAQ49C,MAAMiP,UACtD,MAZI/rD,EAAK2vB,KAAK9gB,EAAO1I,MACjBnG,EAAK25D,gCAcT35D,EAAK2vB,KAAK9gB,EAAO1I,KAEzB,EAEA20D,kBAAmB,SAAS30D,GACxB,IAAK,IAAIxE,EAAMwE,EAAK5G,OAAS,EAAGoC,GAAO,EAAGA,IAAO,CAC7C,IAAI2qD,EAAQnmD,EAAKxE,GACb2qD,EAAMM,cACN70D,KAAK+iE,kBAAkBxO,EAAMrI,QAG7BqI,EAAMrI,OAAUqI,EAAMrI,MAAM1kD,QAAW+sD,EAAMO,WAC7CtqD,EAAOpC,MAAMmsD,EAAM5nD,SAAU,CAAC/C,EAAK,GAE3C,CACJ,EAEAo5D,cAAe,SAAS50D,EAAMjH,GAC1B,OAAInH,KAAKmH,QAAQ80D,YACN5L,GAAMkF,QAAQnnD,EAAMjH,EAASnH,KAAKmH,QAAQ80D,aAG1C5L,GAAMkF,QAAQnnD,EAAMjH,EAEnC,EAEAk8D,YAAa,SAASl8D,GAClB,IA3rFoB4pD,EA2rFhB9oD,EAAOjI,KA0CX,OAxCImH,IAAYvE,IACZqF,EAAKiyD,UAAY/yD,EAAQk9C,SACzBp8C,EAAKkyD,MAAQhzD,EAAQm9C,KACrBr8C,EAAKmyD,MAAQjzD,EAAQ6U,KACrB/T,EAAKqyD,QAAUnzD,EAAQooB,OACvBtnB,EAAKsyD,OAASpzD,EAAQotD,MACtBtsD,EAAKuyD,WAAarzD,EAAQssD,UAC1BxrD,EAAKg5D,MAAQh5D,EAAKq7D,mBAAqBn8D,EAAQ09C,KAC/C58C,EAAK46D,MAAQ17D,EAAQ49C,KAEjB98C,EAAKg5D,QAAUr+D,IACfqF,EAAKg5D,MAAQh5D,EAAKq7D,mBAAqBr7D,EAAK48C,OAC5C19C,EAAQ09C,KAAO58C,EAAK48C,QAGpB58C,EAAK46D,QAAUjgE,GAAeqF,EAAKiyD,YAAct3D,IACjDqF,EAAK46D,MAAQ56D,EAAKiyD,UAClB/yD,EAAQ49C,KAAO98C,EAAK46D,OAGpB56D,EAAKd,QAAQ8uD,UACb9uD,EAAQ8uD,QAAUhuD,EAAKd,QAAQ8uD,SAG/B9uD,EAAQ6U,OACR/T,EAAKmyD,MAAQjzD,EAAQ6U,KAAOs0C,GAAcnpD,EAAQ6U,MAClD/T,EAAKoyD,YAAc5J,GAAWtpD,EAAQ6U,OAGtC7U,EAAQooB,SACRtnB,EAAKqyD,QAAUnzD,EAAQooB,OAAUtnB,EAAKd,QAAQk8C,yBAA2B1gD,EAAEqzB,cAAc7uB,EAAQooB,QAAW5sB,EAAEI,OAAO,CAAC,EAAG0vD,GAAgBtrD,EAAQooB,QAAS,CAAE8zB,uBAAwBp7C,EAAKd,QAAQk8C,yBAA4BoP,GAAgBtrD,EAAQooB,SAGrPpoB,EAAQotD,QACRtsD,EAAKsyD,OAASpzD,EAAQotD,MAAQxB,GAAe5rD,EAAQotD,QAErDptD,EAAQssD,YACRxrD,EAAKuyD,WAAarzD,EAAQssD,WAluFd1C,EAkuF6C5pD,EAAQssD,UAjuFtExwD,EAAQ8tD,GAAeA,EAAc,CAACA,MAouFlC5pD,CACX,EAEA3G,MAAO,SAAS2G,GACZ,IAAI2P,EAGJ,GAFa9W,KAAKmH,QAAQ00D,eAAiB77D,KAAKmH,QAAQ20D,cAAgB97D,KAAKmH,QAAQ40D,iBAAmB/7D,KAAKmH,QAAQgyD,gBAAkBn5D,KAAKmH,QAAQ60D,mBAEpIh8D,KAAK45D,QAAUh3D,GAAqC,IAAtB5C,KAAK45D,MAAMpyD,UAAkBxH,KAAKi6D,WAAWzyD,OAAS,CAChG,GAAIxH,KAAKmH,QAAQ+5D,QAAS,CACtB,IAAIqC,EAAiBp8D,EAAQk9C,SAAWrkD,KAAKqkD,WACzCkf,EAAiB,GACjBA,EAAiBvjE,KAAKqkD,WACtBl9C,EAAQm9C,KAAOn9C,EAAQk9C,SAAWkf,EAClCp8D,EAAQk9C,SAAWkf,IAEnBp8D,EAAQm9C,KAAO,EACftkD,KAAKmH,QAAQ+5D,SAAU,EAE/B,CACA,OAAOlhE,KAAKklD,KAAKllD,KAAKqjE,YAAYl8D,GACtC,CAEA,IAAIu5D,EAAc1gE,KAAKoK,QAAQ6gD,EAAc,CAAEvlD,KAAM,SAgBrD,OAfKg7D,IACD1gE,KAAKoK,QAAQ8gD,GACT/jD,IACAA,EAAQutD,YAAc10D,KAAK06D,cAE/B5jD,EAAS9W,KAAKgjE,cAAchjE,KAAK45D,MAAO55D,KAAKqjE,YAAYl8D,IAEzDnH,KAAKojE,gBAAgBtsD,EAAOkwC,OAAO,GAEnChnD,KAAK+gE,iBAAmB/gE,KAAK4iE,qBAAqB9rD,EAAOosD,iBAAmBljE,KAAK45D,MAAOzyD,GACxFnH,KAAKmjE,SAASrsD,EAAQ3P,GACtBnH,KAAKoK,QAAQ+gD,EAAY,CAAEzlD,KAAM,SACjC1F,KAAKoK,QAAQ8yC,EAAQ,CAAEgP,MAAOp1C,EAAO1I,KAAMg/B,OAAQjmC,EAAUA,EAAQimC,OAAS,MAG3EzqC,EAAEypC,WAAW2J,QAAQ2qB,GAAa74C,SAC7C,EAEA27C,sBAAuB,SAASjP,GAC5B,IAAIz9C,GAAS,EACTtP,EAAS+sD,EAAMrI,MAAQqI,EAAMrI,MAAM1kD,OAAS,EAEhD,IAAK+sD,EAAMM,aACP,OAAO,EAGX,IAAK,IAAIttD,EAAI,EAAGA,EAAIC,EAAQD,IACxB,GAAIvH,KAAK26D,aAAapG,EAAMrI,MAAM3kD,GAAGmmD,KAAM,CACvC52C,GAAS,EACT,KACJ,CAEJ,OAAOA,CACX,EAEA2sD,kBAAmB,SAASr1D,EAAM0I,EAAQ3P,EAASoxB,EAAS3O,GASxD,IARA,IAEI2qC,EACAvgD,EACA0vD,EACAC,EACAC,EANA37D,EAAOjI,KACPwH,EAAS4G,EAAK5G,OAOTD,EAAI,EAAGA,EAAIC,IAChB+sD,EAAQnmD,EAAK7G,KAETJ,EAAQ08D,OAAS18D,EAAQ49C,OAHLx9C,IAWxB,GAJKU,EAAK45D,eAAetN,EAAM7G,MAC3BzlD,EAAKy5D,YAAY//D,KAAK4yD,GAGtBtsD,EAAK0yD,aAAapG,EAAM7G,KAAM,CAC9B,GAAIzlD,EAAKs0D,sBAAuB,CAC7B,GAAIt0D,EAAK67D,iBAAiBvP,EAAOptD,EAASoxB,EAAS3O,GAE9C,YADA3hB,EAAK87D,qBAAsB,GAKhC,GAFAJ,GAAcpP,EAAMQ,eAAiBR,EAAMO,WAAa,EACxD8O,EAAcz8D,EAAQ09C,KAAO19C,EAAQ68D,SAChC/7D,EAAKu7D,sBAAsBjP,IAAUqP,EAAcD,EAAY,CAChEx8D,EAAQ68D,SAAWL,EACnB,QACJ,CACH,CAUA,GARIx8D,EAAQ88D,gBAAkB98D,EAAQ68D,QAAU78D,EAAQ09C,MACpD19C,EAAQ68D,UACRzP,EAAM2P,eAAgB,GACf/8D,EAAQ88D,iBACf98D,EAAQ08D,QACRtP,EAAM2P,eAAgB,GAGtB3P,EAAMM,cAAgBN,EAAMrI,OAASqI,EAAMrI,MAAM1kD,OACjD+sD,EAAM4P,aAAe,GAEhB5rC,IACDA,EAAU,IAEdA,EAAQ52B,KAAK4yD,GAEbtsD,EAAKw7D,kBAAkBlP,EAAMrI,MAAOqI,EAAM4P,aAAch9D,EAASoxB,EAAS3O,GAC1E2O,EAAQxI,MAEJwkC,EAAM4P,aAAa38D,QAAUL,EAAQ08D,MAAQ,EAC7C/sD,EAAOnV,KAAK4yD,GAEZA,EAAM2P,eAAgB,MAEvB,CACHlwD,EAAU,GACV0vD,EAAcnP,EAAMrI,MAAM1kD,OAE1B,IAAK,IAAIujC,EAAI,EAAGA,EAAI24B,EAAa34B,IAC7B,GAAI5jC,EAAQ68D,QAAU78D,EAAQ09C,KAC1B19C,EAAQ68D,cADZ,CAKA,GAAI78D,EAAQ08D,OAAS18D,EAAQ49C,KACzB,MAEJ/wC,EAAQrS,KAAK4yD,EAAMrI,MAAMnhB,IACzB5jC,EAAQ08D,OANR,CASA7vD,EAAQxM,QAAUL,EAAQ08D,MAAQ,GAClCtP,EAAM4P,aAAenwD,EACrB8C,EAAOnV,KAAK4yD,IAEZA,EAAM2P,eAAgB,CAE9B,CACJ,KAAO,CACH,GAAI/8D,EAAQ68D,QAAU78D,EAAQ09C,KAAM,CAChC19C,EAAQ68D,UACR,QACJ,CACAltD,EAAOnV,KAAK4yD,GACZptD,EAAQ08D,OACZ,CAER,EAEAO,4BAA6B,SAAS7P,EAAO5oD,EAAK04D,GAC9C,IAEIC,EAGA9pB,EALAvyC,EAAOjI,KACP8W,EAAS,EAETytD,EAA8B,iBAAR54D,EACtBnE,EAAS+8D,EAAe54D,EAAM4oD,EAAMQ,cAGxC,IAAKR,EAAMM,aACP,OAAO/9C,EAGX,IAAK,IAAIvP,EAAI,EAAGA,EAAIC,IAChB88D,EAAW/P,EAAMrI,MAAM3kD,IADCA,IA6BxB,GAtBI+8D,EAASzP,cAAgB5sD,EAAK0yD,aAAapG,EAAM7G,MAEjD52C,GADA0jC,EAAOvyC,EAAKm8D,4BAA4BE,EAAU98D,GAAQ,GAGtD+8D,IACA/8D,GAAUgzC,KAEN8pB,EAASzP,cAAgB5sD,EAAK0yD,aAAa2J,EAAS5W,OAE5D52C,GADA0jC,EAAO8pB,EAASpY,MAAQoY,EAASpY,MAAM1kD,OAAS,EAE5C+8D,IACA/8D,GAAUgzC,IAId6pB,IACAvtD,GAAU,EACNytD,IACA/8D,GAAU,IAId+8D,GAAgBztD,EAAStP,EACzB,OAAOsP,EAIf,OAAOA,CACX,EAEAgtD,iBAAkB,SAASvP,EAAOptD,EAASoxB,EAAS3O,GAChD,IACI46C,EACAC,EACAC,EAKAC,EARA18D,EAAOjI,KAIP4kE,EAAiBrQ,EAAMM,aAAeN,EAAMQ,cAAgBR,EAAMO,UAClE/P,EAAO59C,EAAQ49C,KACfif,EAAU78D,EAAQ68D,QAClB3f,EAAWp8C,EAAK88C,OAWpB,OARI59C,EAAQ88D,iBACJD,EAAU78D,EAAQ09C,KAClBmf,GAAW,EAEXjf,GAAQ,IAIXwP,EAAMrI,OAAUqI,EAAMrI,QAAUqI,EAAMrI,MAAM1kD,QAC7CS,EAAK48D,cAActQ,EAAOptD,EAASoxB,EAAS3O,EAAU,IAC/C,IAEP+6C,EAA6B3kE,KAAKokE,4BAA4B7P,EAAOptD,EAAQ09C,KAAOmf,MACpFQ,EAAiBnhE,KAAK8V,IAAIhS,EAAQ09C,MAAQmf,EAAUW,GAA6B,KAE3DC,KAItBH,EAAYlQ,EAAMrI,MAAMsY,GACxBE,EAAWnQ,EAAMrI,MAAM7oD,KAAKqT,IAAI8tD,EAAiBzf,EAAM6f,EAAiB,IAEpEH,EAAU3F,YACV72D,EAAK48D,cAActQ,EAAOptD,EAASoxB,EAAS3O,EAAU46C,EAAgBphE,EAAKkT,OAAOkuD,EAAiBngB,GAAYA,KACxG,GAGPqgB,EAAS5F,YACT72D,EAAK48D,cAActQ,EAAOptD,EAASoxB,EAAS3O,EAAUxmB,EAAK+V,IAAI/V,EAAK0N,OAAO0zD,EAAiBngB,GAAYA,GAAW,GAAKA,EAAUjhD,EAAKkT,OAAOkuD,EAAiBngB,GAAYA,KACpK,QAFX,GAKR,EAEAwgB,cAAe,SAAStQ,EAAOptD,EAASoxB,EAAS3O,EAAU46C,EAAgBlgB,GACvE,IACIS,EACAx1B,EACAnhB,EACA02D,EAJA78D,EAAOjI,KAMNu0D,EAAMrI,QACPqI,EAAMrI,MAAQ,IAGlBnH,EAAO98C,EAAK88C,OACZx1B,EAASvvB,KAAK+kE,oBAAoBxQ,EAAOh8B,GACzCnqB,EAAO,CACHk2C,KAAMA,GAAQ,EACdD,SAAUU,EACVF,KAAM2f,EACNzf,KAAMA,EACNx1B,OAAQA,EACRkkC,UAAWxrD,EAAKuyD,WAChBx+C,KAAM/T,EAAKmyD,QAEf0K,EAAY78D,EAAK+8D,cAAczQ,KAEduQ,EAAUt9D,SACvB4G,EAAKmmD,MAAQuQ,GAGjB12D,EAAKsmD,aAAc,EAEnBp6B,aAAaryB,EAAKg9D,UAClBh9D,EAAKg9D,SAAW/rC,YAAW,WACvBjxB,EAAKw4D,cAAcryD,GAAM,WAChBnG,EAAKmC,QAAQ6gD,EAAc,CACxBvlD,KAAM,SAWVuC,EAAK04D,kBATL14D,EAAK29C,UAAUV,KAAK,CAChB92C,KAAMA,EACN+5C,QAASlgD,EAAKi9D,0BAA0B3Q,EAAOptD,EAAQ09C,KAAM58C,EAAK88C,OAAQn7B,EAAU46C,GACpF91C,MAAO,WACH,IAAI2I,EAAOxwB,EAAM0D,KAAKjD,WACtBW,EAAKymB,MAAMtmB,MAAMH,EAAMovB,EAC3B,GAKZ,GACJ,GAAG,IACP,EAEA6tC,0BAA2B,SAAS3Q,EAAO1P,EAAME,EAAMn7B,EAAU46C,GAC7D,IAAIv8D,EAAOjI,KACPqhE,EAAYp5D,EAAKq5D,aACrB13C,EAAW1gB,EAAW0gB,GAAYA,EAAWzmB,EAC7C,IAAIgiE,EAAal9D,EAAKd,QAAQowD,QAAUtvD,EAAKd,QAAQowD,OAAOvQ,MAAQ/+C,EAAKd,QAAQowD,OAAOvQ,MAAQ,QAEhG,OAAO,SAAS54C,GACZ,IAAIosC,EAEA4qB,EADAlc,EAAQI,GAAM7pD,OAAOwI,EAAKd,QAAQowD,OAAOrO,OAG7CjhD,EAAK04D,kBAEL14D,EAAKmC,QAAQ+gD,EAAY,CACrB/C,SAAUh6C,EACV1I,KAAM,SAIN0/D,EADAl8D,EAAWi8D,GACEA,EAAW/2D,GAEXA,EAAK+2D,GAGtB/2D,EAAOnG,EAAKwzD,OAAOrmC,MAAMhnB,GAErBmmD,EAAMM,cACNra,EAAOvyC,EAAKwzD,OAAO9xB,OAAOv7B,GAC1BmmD,EAAMQ,cAAgBqQ,GAGtB5qB,GADAA,EAAOvyC,EAAKwzD,OAAOrtD,KAAKA,IACZyM,KAAI,SAASs0B,GACrB,OAAO,IAAI+Z,EAAM/Z,EACrB,IAGJolB,EAAMrI,MAAMG,iBAAkB,EAC9B,IAAK,IAAI9kD,EAAI,EAAGA,EAAI69D,EAAY79D,IACxBA,GAAKi9D,GAAkBj9D,EAAKi9D,EAAiBzf,EAC7CwP,EAAMrI,MAAM1hD,OAAOjD,EAAG,EAAGizC,EAAKjzC,EAAIi9D,IAE7BjQ,EAAMrI,MAAM3kD,IACbgtD,EAAMrI,MAAM1hD,OAAOjD,EAAG,EAAG,CAAEu3D,YAAY,IAInDvK,EAAMrI,MAAMG,iBAAkB,EAE9BpkD,EAAKo9D,yBAAyB9Q,GAC9BtsD,EAAK87D,qBAAsB,EAEtBxP,EAAM+Q,aACPr9D,EAAK64D,oBAAsBsE,EAC3B7Q,EAAM+Q,YAAa,GAGvBr9D,EAAKgsD,MAAMpP,EAAME,EAAMn7B,EAAU,gBAE7By3C,GAAap5D,EAAKs9D,2BAA6Bt9D,EAAKu9D,0BACpDv9D,EAAKmC,QAAQ8yC,EAAQ,CAAC,EAE9B,CACJ,EAEA8nB,cAAe,SAASzQ,GACpB,IAAIkR,EAAsBzlE,KAAKu6D,OAAO1/C,KAAI,SAASzF,GAC/C,OAAOA,EAAE2Q,KACb,IAAGpQ,QAAQ4+C,EAAMxuC,OAEjB,OAAO/lB,KAAKu6D,OAAO1zD,MAAM4+D,EAAsB,EAAGzlE,KAAKu6D,OAAO/yD,OAClE,EAEAu9D,oBAAqB,SAASxQ,EAAOh8B,GACjC,IAAIhJ,EAAS,CACTuyB,MAAO,MACP+B,QAAS,IAcb,GAXI7jD,KAAKuvB,UACLA,EAAOs0B,QAAQliD,KAAK3B,KAAKuvB,WAG7BA,EAASxsB,GAAO,EAAM,CAAC,EAAGwsB,IACnBs0B,QAAQliD,KAAK,CAChBokB,MAAOwuC,EAAMxuC,MACbq9B,SAAU,KACV16C,MAAO6rD,EAAM7rD,QAGb6vB,EACA,IAAK,IAAIhxB,EAAI,EAAGA,EAAIgxB,EAAQ/wB,OAAQD,IAChCgoB,EAAOs0B,QAAQliD,KAAK,CAChBokB,MAAOwS,EAAQhxB,GAAGwe,MAClBq9B,SAAU,KACV16C,MAAO6vB,EAAQhxB,GAAGmB,QAK9B,OAAO6mB,CACX,EAEA81C,yBAA0B,SAAS9Q,GAW/B,IAVA,IAGI/Z,EACAkrB,EACAzR,EACA0R,EACAC,EAPA39D,EAAOjI,KACPg5D,EAAS/wD,EAAK6xD,QACd+L,EAAe7M,EAAOxxD,OAQjBD,EAAI,EAAGA,EAAIs+D,EAAct+D,IAAK,CAEnCo+D,GADA1R,EAAQ+E,EAAOzxD,IACI6G,KAAK5G,OACxBo+D,EAAU,GACVprB,EAAO,KAEP,IAAK,IAAIzP,EAAI,EAAGA,EAAI46B,IAChBD,EAAezR,EAAM7lD,KAAK28B,GAC1B66B,EAAQjkE,KAAKopC,KAER26B,EAAahY,MAAQ6G,EAAM7G,KAASgY,EAAa7Q,cAAgB6Q,EAAaxZ,MAAM1kD,QAAUS,EAAK69D,kBAAkBJ,EAAcnR,EAAOqR,KAJnH76B,IAO5B66B,EAAQ71C,MAGZ,GAAI61C,EAAQp+D,OAAQ,CAGhB,IAFAgzC,EAAOwe,EAAOzxD,GAAGs2D,aAEV+H,EAAQp+D,OAAS,GAEpBgzC,EAAOA,EADGorB,EAAQp7D,OAAO,EAAG,GAAG,IACV0hD,MAEzB1R,EAAKorB,EAAQ,IAAM39D,EAAK89D,YAAYxR,GACpC,KACJ,CACJ,CACJ,EAEAuR,kBAAmB,SAASvR,EAAOyR,EAAUJ,GACzC,IAEIK,EADAz+D,EAAS+sD,EAAMrI,MAAM1kD,OAGzB,GAAI+sD,EAAMM,cAAgBrtD,EACtB,IAAK,IAAID,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAG7B,GAFA0+D,EAAkB1R,EAAMrI,MAAM3kD,GAC9Bq+D,EAAQjkE,KAAK4F,GACT0+D,EAAgBvY,MAAQsY,EAAStY,KAC5BuY,EAAgBpR,cACjBoR,EAAgB/Z,MAAM1kD,QAV3BxH,KAWU8lE,kBAAkBG,EAAiBD,EAAUJ,GACtD,OAAO,EAEXA,EAAQ71C,KACZ,CAGR,EAEAg2C,YAAa,SAASxR,GAClB,IAAItsD,EAAOjI,KASX,OARAu0D,EAA+B,mBAAhBA,EAAMpiD,OAAuBoiD,EAAMpiD,SAAWoiD,GAEnDrI,OAASqI,EAAMrI,MAAM1kD,SAC3B+sD,EAAMrI,MAAQqI,EAAMrI,MAAMrxC,KAAI,SAASs0B,GACnC,OAAOlnC,EAAK89D,YAAY52B,EAC5B,KAGGolB,CACX,EAEA6O,gBAAiB,SAAS8C,EAAaC,GACnC,IAAIl+D,EAAOjI,KAENiI,EAAKd,QAAQ40D,kBACVmK,IAAgBtjE,EAChBqF,EAAKwyD,OAASyL,EACPC,IACPl+D,EAAKwyD,OAASxyD,EAAK2xD,MAAMpyD,QAGrC,EAEA4+D,MAAO,SAASx8C,GACZ,IAAI3hB,EAAOjI,KAOX,OAAOA,KAAKqmE,SAASz5B,MANZ,SAAS8zB,IACM,IAAhBA,GAAwBx3D,EAAW0gB,IACnCA,EAASrf,KAAKtC,EAEtB,GAGJ,EAEAo+D,OAAQ,SAASl/D,GACb,IAAIc,EAAOjI,KAEX,OAAOiI,EAAKzH,MAAMuC,EAAO,CAAC,EAAG,CACzBuhD,KAAMr8C,EAAKq8C,OACXD,SAAUp8C,EAAKo8C,WACfroC,KAAM/T,EAAK+T,OACXuT,OAAQtnB,EAAKsnB,SACbglC,MAAOtsD,EAAKssD,QACZd,UAAWxrD,EAAKwrD,aACjBtsD,GACP,EAEAm/D,KAAM,SAASn/D,GACX,IAAIc,EAAOjI,KACPskD,EAAOr8C,EAAKq8C,OACZ0C,EAAQ/+C,EAAK++C,QAIjB,GAFA7/C,EAAUA,GAAW,CAAC,EAEjBm9C,KAAS0C,GAAS1C,EAAO,EAAIr8C,EAAKs+D,cAWvC,OAPAt+D,EAAKg5D,MAAQh5D,EAAKq7D,mBAAqBhf,EAAOr8C,EAAK88C,OAEnDT,GAAQ,EACRn9C,EAAQm9C,KAAOA,EAEfr8C,EAAKo+D,OAAOl/D,GAELm9C,CACX,EAEAvE,KAAM,SAAS54C,GACX,IAAIc,EAAOjI,KACPskD,EAAOr8C,EAAKq8C,OAIhB,GAFAn9C,EAAUA,GAAW,CAAC,EAEjBm9C,GAAiB,IAATA,EAWb,OAPAr8C,EAAKg5D,MAAQh5D,EAAKq7D,mBAAqBr7D,EAAKg5D,MAAQh5D,EAAK88C,OAEzDT,GAAQ,EACRn9C,EAAQm9C,KAAOA,EAEfr8C,EAAKo+D,OAAOl/D,GAELm9C,CACX,EAEAA,KAAM,SAAS10B,GACX,IACAi1B,EADI58C,EAAOjI,KAGX,GAAI4vB,IAAQhtB,EAAa,CACrBgtB,EAAMxsB,EAAK+V,IAAI/V,EAAKsT,IAAItT,EAAK+V,IAAIyW,EAAK,GAAI3nB,EAAKs+D,cAAe,GAC9D,IAAIxhB,EAAO98C,EAAK88C,OAEhB,OAAI98C,EAAKu0D,iBACL5sC,GAAO,OACP3nB,EAAKgsD,MAAMrkC,EAAMm1B,EAAMA,EAAM,KAAM,cAGvC98C,EAAKo+D,OAAOp+D,EAAKu+D,sBAAsB,CAAEliB,KAAM10B,IAEnD,CAGA,OAFAi1B,EAAO58C,EAAK48C,UAEIjiD,EAAcQ,EAAKkT,OAAOuuC,GAAQ,IAAM58C,EAAK88C,QAAU,IAAM,EAAIniD,CACrF,EAEAyhD,SAAU,SAASz0B,GACf,IAAI3nB,EAAOjI,KAEX,GAAI4vB,IAAQhtB,EAKZ,OAAOqF,EAAK88C,OAJR98C,EAAKo+D,OAAOp+D,EAAKu+D,sBAAsB,CAAEniB,SAAUz0B,EAAK00B,KAAM,IAKtE,EAEAtoC,KAAM,SAAS4T,GACX,IAAI3nB,EAAOjI,KAEX,OAAI4vB,IAAQhtB,GACRqF,EAAKmC,QAAQ,aACbnC,EAAKo+D,OAAO,CAAErqD,KAAM4T,KAIjB3nB,EAAKmyD,KAChB,EAEA7qC,OAAQ,SAASK,GACb,IAAI3nB,EAAOjI,KAEX,GAAI4vB,IAAQhtB,EACR,OAAOqF,EAAKqyD,QAGhBryD,EAAKmC,QAAQ,SACbnC,EAAKo+D,OAAO,CAAE92C,OAAQK,EAAK00B,KAAM,GACrC,EAEAiQ,MAAO,SAAS3kC,GACZ,IAAI3nB,EAAOjI,KACPmH,EAAU,CAAEotD,MAAO3kC,GAUvB,GARI3nB,EAAKyyD,eAED9qC,IAAQhtB,GAAiBgtB,GAAQA,EAAIpoB,SACrCS,EAAK6xD,QAAU,IAEnB3yD,EAAQm9C,KAAO,GAGf10B,IAAQhtB,EAKZ,OAAOqF,EAAKsyD,OAJRtyD,EAAKo+D,OAAOl/D,EAKpB,EAEAs/D,cAAe,SAASr4D,GACpB,IAAIxE,EAEApC,EADAsP,EAAS,GAGb,IAAKlN,EAAM,EAAGpC,EAAS4G,EAAK5G,OAAQoC,EAAMpC,EAAQoC,IAAO,CACrD,IAAI2qD,EAAQnmD,EAAKxE,GACb2qD,EAAMM,eACN/9C,EAASA,EAAOsH,OAAOpe,KAAKymE,cAAclS,EAAMrI,SAGpDp1C,EAAOnV,KAAK4yD,EAChB,CAEA,OAAOz9C,CACX,EAEAkwC,MAAO,WACH,OAAOxtC,SAASxZ,KAAKy6D,QAAU,EAAG,GACtC,EAEAiM,YAAa,SAASC,GAClB,IAAI1+D,EAAOjI,KAEX,OAAKiI,EAAKsyD,OAAO/yD,OAIbS,EAAKq0D,oBACDr0D,EAAK64D,qBAGT74D,EAAK64D,mBAAqB74D,EAAK++C,SAFpB/+C,EAAK64D,oBAOb74D,EAAK2+D,sBAAsB3+D,EAAK6xD,QAAQtyD,OAASS,EAAK6xD,QAAQ,GAAG1rD,KAAO,GAAIu4D,GAZxE1+D,EAAK++C,OAapB,EAEA4f,sBAAuB,SAASj9B,EAAQg9B,EAAiBE,EAAYC,GACjE,IAEI9f,EACAx/C,EAHAS,EAAOjI,KAKX,GAJA6mE,EAAaA,GAAc,QAIvB5+D,EAAKsyD,OAAO/yD,QAAUmiC,EAAQ,CAC9Bqd,EAAQ,EACRx/C,EAASmiC,EAAOniC,OAEhB,IAAK,IAAID,EAAI,EAAGA,EAAIC,EAAQD,IACxBy/C,GAAS/+C,EAAK07D,WAAWh6B,EAAOpiC,GAAIo/D,EAAiBE,EAAYC,GAGrE,OADA7+D,EAAK8+D,aAAe/f,EACbA,CACX,CAGA,OADA/+C,EAAK8+D,aAAe9+D,EAAK2xD,MAAMpyD,OACxBS,EAAK8+D,YAChB,EAEApD,WAAY,SAASpP,EAAOoS,EAAiBE,EAAYC,GACrD,IAAI7+D,EAAOjI,KACPgnD,EAAQ,EAoBZ,OAlBIuN,EAAMM,cAAgB5sD,EAAK0yD,aAAapG,EAAM7G,OAC1CiZ,IAAoBpS,EAAM2P,eAAiB4C,KAC3C9f,GAAS,GAGbuN,EAAMsS,GAAYvlE,SAAQ,SAAS0kE,GAC/Bhf,GAAS/+C,EAAK07D,WAAWqC,EAAUW,EAAiBE,EAAYC,EACpE,KAEI7+D,EAAK0yD,aAAapG,EAAM7G,OACpBiZ,IAAoBpS,EAAM2P,eAAiB4C,IAC3C9f,IAEJA,GAASuN,EAAMsS,GAActS,EAAMsS,GAAYr/D,OAAS,GAExDw/C,IAGDA,CACX,EAEAggB,gBAAiB,SAAS/S,GAItB,IAHA,IAAIjN,EAAQ,EACRx/C,EAASysD,EAAMzsD,OAEVD,EAAI,EAAGA,EAAIC,EAAQD,IACxBy/C,GAAShnD,KAAK2jE,WAAW1P,EAAM1sD,IAAI,GAGvC,OAAOy/C,CACX,EAEAyM,UAAW,SAAS7jC,GAGhB,GAAIA,IAAQhtB,EAKZ,OAPW5C,KAOCw6D,WAPDx6D,KAGFqmE,OAAO,CAAE5S,UAAW7jC,GAKjC,EAEAqjC,WAAY,WACR,IAAIn8C,EAAS9W,KAAK+gE,iBAMlB,OAJI/qC,EAAclf,KACdA,EAAS9W,KAAKinE,iBAAiBjnE,KAAKyzD,cAGjC38C,CACX,EAEAmwD,iBAAkB,SAAShU,GACvB,IAAIn8C,EAAS,CAAC,EAEd,IAAKkf,EAAci9B,GAAa,CAC5B,IAAIQ,EAAY,CAAC,EAEZxwD,EAAQgwD,KACTA,EAAa,CAACA,IAGlB,IAAK,IAAIrpD,EAAM,EAAGA,EAAMqpD,EAAWzrD,OAAQoC,IACvC6pD,EAAUR,EAAWrpD,GAAK6pD,WAAa,EACvC38C,EAAOm8C,EAAWrpD,GAAKmc,OAAS0tC,CAExC,CAEA,OAAO38C,CACX,EAEA0vD,sBAAuB,SAASr/D,GAC5B,OAAOA,CACX,EAEAk2D,kBAAmB,SAASnU,GACxB,IACIv8C,EACA4nD,EACA3qD,EAHA+/B,EAAS3pC,KAAKu0D,QAMlB,IAAK3qD,EAAM+/B,EAAOniC,OAAS,EAAY,EAAGoC,GAAH,EAAkBA,IACrD2qD,EAAQ5qB,EAAO//B,GACf+C,EAAS,CACLjE,MAAOwgD,EAAMj5B,IAAMi5B,EAAMj5B,IAAIskC,EAAMxuC,OAASmjC,EAAMqL,EAAMxuC,OACxDA,MAAOwuC,EAAMxuC,MACbmmC,MAAOv/C,EAAS,CAACA,GAAU,CAACu8C,GAC5B2L,eAAgBloD,EAChBsmD,WAAYjzD,KAAKinE,iBAAiB1S,EAAMtB,aAIhD,OAAOtmD,CACX,EAEA45D,WAAY,WACR,IAAIt+D,EAAOjI,KACPqkD,EAAWp8C,EAAKo8C,YAAcp8C,EAAK++C,QACnCA,EAAQ/+C,EAAKu0D,gBAAkBv0D,EAAKy+D,aAAY,GAAQz+D,EAAK++C,QAEjE,OAAO5jD,EAAK8jE,MAAMlgB,GAAS,GAAK3C,EACpC,EAEA8iB,QAAS,SAAStiB,EAAME,GACpB,IAAI98C,EAAOjI,KACP2L,EAAMvI,EAAKsT,IAAImuC,EAAOE,EAAM98C,EAAK++C,SAErC,OAAK/+C,EAAKd,QAAQ20D,cAAgB7zD,EAAK2xD,MAAMpyD,OAAS,GAI/CS,EAAKm/D,WAAWviB,EAAMl5C,GAAKnE,OAAS,CAC/C,EAEA6/D,UAAW,WACP,IAAIrO,EAASh5D,KAAK85D,QAClB,OAAOd,EAAOA,EAAOxxD,OAAS,IAAM,CAAEsO,MAAO,EAAGnK,IAAK,EAAGyC,KAAM,GAClE,EAEAk5D,aAAc,WACV,IAAItO,EAASh5D,KAAK85D,QAClB,OAAOd,EAAOxxD,QAAUwxD,EAAO,GAAG5qD,KAAK5G,QAAUwxD,EAAO,GAAG5qD,KAAK,GAAGs/C,GACvE,EAEA6Z,yBAA0B,WACtBvnE,KAAKwlE,yBAA0B,CACnC,EAEAlE,WAAY,WACR,OAAO,IAAI3yD,MAAO1F,SACtB,EAEAgrD,MAAO,SAASpP,EAAME,EAAMn7B,EAAUwjB,GAClCptC,KAAKulE,yBAA2BvlE,KAAKshE,aACrCthE,KAAKwlE,yBAA0B,EAC/B,IAAIxe,EAAQhnD,KAAKw8D,gBAAkBx8D,KAAK0mE,aAAY,GAAQ1mE,KAAKgnD,QAElD,gBAAX5Z,GAAuC,kBAAXA,GAC5BptC,KAAK4hE,2BAGT/c,EAAOzhD,EAAKsT,IAAImuC,GAAQ,EAAGmC,GAC3Bp9B,EAAW1gB,EAAW0gB,GAAYA,EAAWzmB,EAE7C,IAGIiL,EAHAnG,EAAOjI,KACPwnE,EAAWpkE,EAAK+V,IAAI/V,EAAK0N,MAAM+zC,EAAOE,GAAO,GAAKA,EAClD/0C,EAAO5M,EAAKsT,IAAI8wD,EAAWziB,EAAMiC,GAKrC,KAFA54C,EAAOnG,EAAKm/D,WAAWviB,EAAMzhD,EAAKsT,IAAImuC,EAAOE,EAAMiC,GAAQp9B,IAEjDpiB,QAAoB,IAAVw/C,KAAiB/+C,EAAK87D,oBAOtC,OANA97D,EAAKw/D,kBAAkBr5D,EAAMy2C,EAAME,EAAM98C,EAAKy/D,mBAAqBF,EAAUv/D,EAAK0/D,eAAiB33D,EAAM,CACrGo9B,OAAQA,IAEZnlC,EAAKy/D,kBAAoB,KACzBz/D,EAAK0/D,cAAgB,UACrB/9C,IAIA3hB,EAAKu0D,kBACLv0D,EAAKy/D,kBAAoBF,EACzBv/D,EAAK0/D,cAAgB33D,EAErBw3D,EAAWpkE,EAAK+V,IAAI/V,EAAK0N,MAAM7I,EAAK2/D,gBAAgB/iB,EAAME,GAAQA,GAAO,GAAKA,EAC9E/0C,EAAO5M,EAAKsT,IAAI8wD,EAAWziB,EAAMiC,IAGjCjC,IAASniD,GAAgBqF,EAAK87D,sBACzB97D,EAAKu0D,kBAAoBv0D,EAAK4/D,kBAAkBL,EAAUziB,KAAW98C,EAAK6/D,aAAaN,EAAUx3D,GAClG/H,EAAK8/D,SAASP,EAAUziB,GAAM,WACtBF,EAAO2iB,GAAYx3D,EAAO/H,EAAK++C,UAAY/+C,EAAK6/D,aAAa93D,EAAM5M,EAAKsT,IAAI1G,EAAO+0C,EAAM98C,EAAK++C,UAC9F/+C,EAAK8/D,SAAS/3D,EAAM+0C,GAAM,WACtB98C,EAAKgsD,MAAMpP,EAAME,EAAMn7B,EAC3B,IAEA3hB,EAAKgsD,MAAMpP,EAAME,EAAMn7B,EAE/B,IACO49C,EAAW3iB,GAClB58C,EAAK8/D,SAAS/3D,EAAM+0C,GAAM,WACtB98C,EAAKgsD,MAAMpP,EAAME,EAAMn7B,EAC3B,IAGZ,EAEAw9C,WAAY,SAAStxD,EAAOnK,EAAKie,GAC7B,IAEIqqC,EAEA+T,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAGAC,EACAjtD,EACA9T,EAQAghE,EAvBAvgE,EAAOjI,KACPg5D,EAAS/wD,EAAK6xD,QAEd1rD,EAAO,GAQPjH,EAAUc,EAAKd,QACfshE,EAASthE,EAAQ00D,eAAiB10D,EAAQ20D,cAAgB30D,EAAQ40D,iBAAmB50D,EAAQgyD,gBAAkBhyD,EAAQ60D,iBAIvH0M,EAAkB,CACV3jB,KAAMp5C,EAAMmK,EACZ+uC,KAAM/uC,EACNkuD,QAAS,EACTH,MAAO,EACPI,gBAAgB,GAGxB0E,EAAe1gE,EAAKu0D,gBACpBoM,EAAaD,EAAe,aAAe,QAC3CE,EAAWF,EAAe,WAAa,MAG3C,IAAKX,EAAU,EAAGxgE,EAASwxD,EAAOxxD,OAAQwgE,EAAUxgE,EAAQwgE,IAAW,CAGnE,GAFA/T,EAAQ+E,EAAOgP,GAEXW,EAAc,CACd,GAAI1U,EAAMsN,YAAc51D,EACpB,MAAO,GAGX,GAAImK,EAAQm+C,EAAMuN,SAAU,CACxBkH,EAAgB1E,SAAW/P,EAAMuN,UAAYgH,GAAgB,GAC7DA,EAAevU,EAAMuN,SACrB,QACJ,CAMA,QAJ4B,IAAjBgH,GAAgCA,GAAgBvU,EAAMsN,aAC7DmH,EAAgB1E,SAAW/P,EAAMsN,WAAaiH,GAG9CE,EAAgB1E,QAAU0E,EAAgB7jB,KAC1C,MAAO,GAQX,SAL4B,IAAjB2jB,GAAgC1yD,EAAQ,GAAKm+C,EAAMn+C,MAAQ,IAClE4yD,EAAgB1E,QAAU/P,EAAMsN,YAGpC0G,EAAUD,IACG,CAIT,GAHAhoE,KAAKyjE,kBAAkBxP,EAAM7lD,KAAMA,EAAMs6D,EAAiB,KAAM9+C,GAC5C3hB,EAAK2+D,sBAAsBx4D,GAAM,EAAM,iBAElCs6D,EAAgB3jB,KACrC,OAAO32C,EAGX,GAAInG,EAAK87D,oBACL,MAAO,GAIX,IAAI/K,IAFJiP,IAEuBjP,EAAOiP,GAAS1G,aAAetN,EAAMuN,SAGxD,MAFAvN,EAAQ+E,EAAOiP,EAIvB,CACJ,MAAO,GAAInyD,GAASm+C,EAAM2U,IAAe9yD,GAASm+C,EAAM4U,GAAW,CAG/D,IAFAvtD,EAAQ,EAEH2sD,EAAUD,EAASC,EAAUzgE,EAAQygE,IAItC,GAHAhU,EAAQ+E,EAAOiP,IACfM,EAAWtgE,EAAK00D,UAAU1I,EAAM7lD,MAAM,IAEzB5G,QAAUsO,EAAQwF,GAAS24C,EAAMn+C,MAAO,CAIjD,GAHAsyD,EAAYnU,EAAM7lD,KAClBi6D,EAAWpU,EAAMtoD,KAEZ88D,EAAQ,CACT,GAAIthE,EAAQ80D,YACRqM,EAAYrgE,EAAK+6D,cAAc/O,EAAM7lD,KAAM,CAAEmhB,OAAQtnB,EAAKsnB,eACvD,CACH,IAAIvT,EAAOk3C,GAA6BjrD,EAAKssD,SAAW,IAAIn2C,OAAOkyC,GAAcroD,EAAK+T,QAAU,KAChGssD,EAAYrgE,EAAK+6D,cAAc/O,EAAM7lD,KAAM,CAAE4N,KAAMA,EAAMuT,OAAQtnB,EAAKsnB,UAC1E,CACAg5C,EAAWH,EAAYE,EAAUl6D,KAE7Bk6D,EAAUthB,QAAUpkD,IACpBylE,EAAWC,EAAUthB,MAE7B,CAaA,GAXAkhB,EAAa,EACTpyD,EAAQwF,EAAQ24C,EAAMn+C,QACtBoyD,EAAcpyD,EAAQwF,EAAS24C,EAAMn+C,OAEzCqyD,EAAWI,EAAS/gE,OAChB6gE,EAAW18D,IACXw8D,GAAuBE,EAAW18D,GAEtC2P,GAAS6sD,EAAWD,EACpB95D,EAAOnG,EAAK6gE,aAAa16D,EAAMg6D,EAAWF,EAAYC,GAElDx8D,GAAOsoD,EAAMtoD,KAAO2P,GAAS3P,EAAMmK,EACnC,OAAO1H,CAEf,CAEJ,KACJ,CACAo6D,EAAevU,EAAMuN,QACzB,CACA,MAAO,EACX,EAEAuH,mBAAoB,SAASvB,GAMzB,IALA,IACIxO,EADOh5D,KACO85D,QACdkP,EAAW,EACXzhE,EAAI,IAEK,CACT,IAAI0sD,EAAQ+E,EAAOzxD,GACnB,IAAK0sD,GAASA,EAAMsN,WAAaiG,EAC7B,MAGAvT,EAAMuN,UAAYvN,EAAMtoD,MACxBq9D,EAAW/U,EAAMuN,SAAWvN,EAAMtoD,KAEtCpE,GACJ,CAEA,OAAOyhE,CACX,EAEAF,aAAc,SAAS16D,EAAM6lD,EAAOpP,EAAME,GACtC,GAAI/kD,KAAKs8D,mBAAoB,CACzB,IACI2M,EADAzuB,EAAOyZ,EAAM9hD,SASjB,OANI/D,EAAK5G,SACLyhE,EAAY76D,EAAKA,EAAK5G,OAAS,IAGnC4wD,GAAY6Q,EAAWzuB,EAAMqK,EAAME,GAE5B32C,EAAKgQ,OAAOo8B,EACvB,CACA,OAAOpsC,EAAKgQ,OAAO61C,EAAMptD,MAAMg+C,EAAME,GACzC,EAEA0iB,kBAAmB,SAASr5D,EAAMy2C,EAAME,EAAMyiB,EAAUx3D,EAAMk5D,GAC1D,IAAIjhE,EAAOjI,KAEXiI,EAAKi6D,SAAWt/D,EAEhBqF,EAAKg5D,MAAQpc,EAAO58C,EAAK48C,SAAW58C,EAAKkhE,cAAgB/lE,EAAKsT,IAAI1G,GAAO/H,EAAKs+D,aAAe,GAAKt+D,EAAK88C,QAAUyiB,EAEjHv/D,EAAKq7D,mBAAqBze,EAE1B58C,EAAK46D,MAAQ9d,EAEb,IAAIqkB,EAASnhE,EAAKd,QAAQ20D,aACtBuN,EAAUphE,EAAKd,QAAQ00D,cACvByN,EAAYrhE,EAAKd,QAAQ40D,gBACzB9I,EAAahrD,EAAKd,QAAQ60D,iBAC9B,IACI/zD,EAAKd,QAAQ20D,cAAe,EACvB7zD,EAAKq0D,oBAAwBr0D,EAAKssD,SAAWtsD,EAAKssD,QAAQ/sD,SAC3DS,EAAKd,QAAQ00D,eAAgB,GAEjC5zD,EAAKd,QAAQ40D,iBAAkB,EAC/B9zD,EAAKd,QAAQ20D,cAAe,EAC5B7zD,EAAKd,QAAQ60D,kBAAmB,EAE5BoN,IACAnhE,EAAKyzD,2BACLzzD,EAAK2xD,MAAQxrD,EAAOnG,EAAK0zD,SAASvtD,IAEtCnG,EAAKg1D,SAAS7uD,EAAM86D,EACxB,CAAE,QACEjhE,EAAKd,QAAQ20D,aAAesN,EAC5BnhE,EAAKd,QAAQ00D,cAAgBwN,EAC7BphE,EAAKd,QAAQ40D,gBAAkBuN,EAC/BrhE,EAAKd,QAAQ60D,iBAAmB/I,CACpC,CACJ,EAEApO,KAAM,WACF,IAAI58C,EAAOjI,KAEX,OAAIiI,EAAKg5D,QAAUr+D,EACPqF,EAAKkyD,QAAUv3D,GAAeqF,EAAKkyD,MAAQ,IAAMlyD,EAAK88C,QAAU,GAAKniD,EAE1EqF,EAAKg5D,KAChB,EAEA6B,kBAAmB,WACf,OAAO9iE,KAAKsjE,oBAAsB,CACtC,EAEAve,KAAM,WACF,OAAO/kD,KAAK6iE,OAAS7iE,KAAKk6D,SAC9B,EAEAqP,wBAAyB,SAAS1kB,EAAM70C,EAAM4Z,EAAU0I,GACpD,IAAIrqB,EAAOjI,KACPqhE,EAAYp5D,EAAKq5D,aAErB,OAAO,SAASlzD,GACZ,IAEIxE,EACApC,EACAgzC,EAJA2jB,GAAQ,EACRlK,EAAQ,CAAEn+C,MAAO+uC,EAAMl5C,IAAKqE,EAAM5B,KAAM,GAAIizD,UAAWp5D,EAAKq5D,cAahE,GARAr5D,EAAK04D,kBAEL14D,EAAKmC,QAAQ+gD,EAAY,CAAE/C,SAAUh6C,EAAM1I,KAAM,SAEjD0I,EAAOnG,EAAKwzD,OAAOrmC,MAAMhnB,IAEzBosC,EAAOvyC,EAAKy0D,UAAUtuD,IAEb5G,OAAQ,CACb,IAAKoC,EAAM,EAAGpC,EAASS,EAAK6xD,QAAQtyD,OAAQoC,EAAMpC,EAAQoC,IACtD,GAAI3B,EAAK6xD,QAAQlwD,GAAKkM,QAAU+uC,EAAM,CAClCsZ,GAAQ,EACRlK,EAAQhsD,EAAK6xD,QAAQlwD,GAEhB3B,EAAKu0D,kBACNvI,EAAM4J,aAAerjB,EACrByZ,EAAM7lD,KAAOnG,EAAK0zD,SAASnhB,GAC3ByZ,EAAMtoD,IAAMsoD,EAAMn+C,MAAQ7N,EAAK00D,UAAU1I,EAAM7lD,MAAM,GAAM5G,OAC3DS,EAAKw5D,eAGT,KACJ,CAGCtD,GACDl2D,EAAK+0D,UAAU/0D,EAAK0zD,SAASnhB,GAAOqK,EAE5C,CAEA58C,EAAKwyD,OAASxyD,EAAKwzD,OAAOzU,MAAM54C,IAE5BkkB,GAAU+uC,GAAap5D,EAAKs9D,2BAA6Bt9D,EAAKu9D,2BAC1D57C,GAAY4wB,EAAKhzC,OACjBoiB,IAEA3hB,EAAKmC,QAAQ8yC,EAAQ,CAAC,GAGlC,CACJ,EAEA6qB,SAAU,SAASljB,EAAME,EAAMn7B,GAC3B,IAAI3hB,EAAOjI,KACPgQ,EAAO5M,EAAKsT,IAAImuC,EAAOE,EAAM98C,EAAK++C,SAClC7/C,EAAU,CACN49C,KAAMA,EACNF,KAAMA,EACNP,KAAMO,EAAOE,EAAO,EACpBV,SAAUU,EACV/oC,KAAM/T,EAAKmyD,MACX7qC,OAAQtnB,EAAKqyD,QACb/F,MAAOtsD,EAAKsyD,OACZ9G,UAAWxrD,EAAKuyD,YAInBvyD,EAAKu0D,kBAAoBv0D,EAAKq0D,oBAAsBr0D,EAAK4/D,kBAAkBhjB,EAAM70C,GAC9E4Z,GACAA,IAKH3hB,EAAKs0D,wBAA0Bt0D,EAAK4/D,kBAAkBhjB,EAAM70C,KAAW/H,EAAK6/D,aAAajjB,EAAM70C,IAChGsqB,aAAaryB,EAAKg9D,UAElBh9D,EAAKg9D,SAAW/rC,YAAW,WACvBjxB,EAAKw4D,cAAct5D,GAAS,WACnBc,EAAKmC,QAAQ6gD,EAAc,CAAEvlD,KAAM,SAapCuC,EAAK04D,mBAZD14D,EAAKkhE,eACLlhE,EAAKmC,QAAQ8gD,GAEjBjjD,EAAK29C,UAAUV,KAAK,CAChB92C,KAAMnG,EAAKu4D,QAAQr5D,GACnBghD,QAASlgD,EAAKshE,wBAAwB1kB,EAAM70C,EAAM4Z,GAClD8E,MAAO,WACH,IAAI2I,EAAOxwB,EAAM0D,KAAKjD,WACtBW,EAAKymB,MAAMtmB,MAAMH,EAAMovB,EAC3B,IAKZ,GACJ,GAAG,MACIzN,GACPA,GAER,EAEA4/C,kBAAmB,SAAS3kB,EAAME,EAAMn7B,GACpC,IAAI3hB,EAAOjI,KACPgQ,EAAO5M,EAAKsT,IAAImuC,EAAOE,EAAM98C,EAAK++C,SAClC7/C,EAAU,CACN49C,KAAMA,EACNF,KAAMA,EACNP,KAAMO,EAAOE,EAAO,EACpBV,SAAUU,EACV/oC,KAAM/T,EAAKmyD,MACX7qC,OAAQtnB,EAAKqyD,QACb/F,MAAOtsD,EAAKsyD,OACZ9G,UAAWxrD,EAAKuyD,YAGnBvyD,EAAK6/D,aAAajjB,EAAM70C,GAOlB4Z,GACPA,IAPK3hB,EAAKmC,QAAQ6gD,EAAc,CAAEvlD,KAAM,UACpCuC,EAAK29C,UAAUV,KAAK,CAChB92C,KAAMnG,EAAKu4D,QAAQr5D,GACnBghD,QAASlgD,EAAKshE,wBAAwB1kB,EAAM70C,EAAM4Z,GAAU,IAM5E,EAEAg+C,gBAAiB,SAAS9xD,EAAOivC,GAC7B,IAEIjuC,EAEAkyD,EAJA/gE,EAAOjI,KACPypE,EAAYxhE,EAAKyhE,cAAc5zD,GAE/BkxC,EAAQ/+C,EAAK++C,QAGjB,GAAIyiB,EAAW,CAGX,KAFAT,EAAW/gE,EAAK8gE,mBAAmBjzD,IAG/B,OAAOA,EAEXA,GAASkzD,CACb,CAGA,IAFAlyD,EAAS1T,EAAK+V,IAAI/V,EAAK0N,MAAMgF,EAAQivC,GAAO,GAAKA,GAEpCiC,EACT,QACIlwC,GAAUiuC,GACGiC,KAKrB,OAAOlwC,CACX,EAEA6yD,cAAe,SAASh+D,GACpB,IAEI/B,EACApC,EAFAwxD,EADOh5D,KACO85D,QAIlB,IAAKlwD,EAAM,EAAGpC,EAASwxD,EAAOxxD,OAAQoC,EAAMpC,EAAQoC,IAChD,GAAIovD,EAAOpvD,GAAKkM,OAASnK,GAAOqtD,EAAOpvD,GAAK+B,KAAOA,EAC/C,OAAOqtD,EAAOpvD,EAG1B,EAEA8/D,cAAe,SAAS5zD,GACpB,IAEIlM,EACAqqD,EAFA+E,EADOh5D,KACO85D,QAKlB,IAAKlwD,EAFQovD,EAAOxxD,OAEA,EAAGoC,GAAO,EAAGA,IAC7B,GAAIovD,EAAOpvD,GAAK23D,YAAczrD,EAAO,CACjCm+C,EAAQ+E,EAAOpvD,GACf,KACJ,CAIJ,OAAOqqD,CACX,EAEA6T,aAAc,SAAShyD,EAAOnK,GAC1B,IAEI/B,EACApC,EAFAwxD,EADOh5D,KACO85D,QAIlB,IAAKlwD,EAAM,EAAGpC,EAASwxD,EAAOxxD,OAAQoC,EAAMpC,EAAQoC,IAChD,GAAIovD,EAAOpvD,GAAKkM,OAASA,GAASkjD,EAAOpvD,GAAK+B,KAAOA,EACjD,OAAO,EAIf,OAAO,CACX,EAEAk8D,kBAAmB,SAAS/xD,EAAOnK,GAC/B,IAEI/B,EACApC,EAHAS,EAAOjI,KACPg5D,EAAS/wD,EAAK6xD,QAGd8P,EAAsB,EACtB5iB,EAAQ/+C,EAAKy+D,aAAY,GAM7B,IAJI/6D,EAAMq7C,IAAU/+C,EAAKq0D,qBACrB3wD,EAAMq7C,GAGLp9C,EAAM,EAAGpC,EAASwxD,EAAOxxD,OAAQoC,EAAMpC,EAAQoC,IAAO,CACvD,IAAIqqD,EAAQ+E,EAAOpvD,GACfqqD,EAAMsN,YAAczrD,GAASm+C,EAAMuN,UAAY1rD,EAC/C8zD,GAAuB3V,EAAMuN,SAAW1rD,EACjCm+C,EAAMsN,YAAc51D,GAAOsoD,EAAMuN,UAAY71D,IACpDi+D,GAAuBj+D,EAAMsoD,EAAMsN,WAE3C,CAEA,OAAOqI,GAAuBj+D,EAAMmK,CACxC,EAEA2nD,qBAAsB,WAClB,IAKIxJ,EACArqD,EANA3B,EAAOjI,KACPg5D,EAAS/wD,EAAK6xD,QACdhkD,EAAQ7N,EAAK66D,oBACbn3D,EAAMmK,GAAS7N,EAAK88C,QAAU,GAC9ByY,EAAY,GAGZh2D,EAASwxD,EAAOxxD,OAEpB,IAAKoC,EAAM,EAAGA,EAAMpC,EAAQoC,MACxBqqD,EAAQ+E,EAAOpvD,IAEJkM,OAASA,GAASm+C,EAAMtoD,KAAOmK,GAAWm+C,EAAMn+C,OAASA,GAASm+C,EAAMn+C,OAASnK,IACxF6xD,EAAU77D,KAAKsyD,GAIvB,OAAOuJ,CACX,EAEAqB,uBAAwB,SAAS3V,GAI7B,IAHA,IACI+K,EAEKrqD,EAAM,EAAGpC,EAASxH,KAAK85D,QAAQtyD,OAAQoC,EAAMpC,EAAQoC,IAC1DqqD,EAAQj0D,KAAK85D,QAAQlwD,GAJd5J,KAMF6pE,sBAAsB5V,EAAO/K,GAN3BlpD,KASN8pE,qBACT,EAEAD,sBAAuB,SAAS5V,EAAO/K,GACnClpD,KAAKo+D,UAAUnK,EAAM7lD,MAAM,SAASA,GAChC,GAAKA,EAGL,IAAK,IAAIxE,EAAM,EAAGA,EAAMwE,EAAK5G,OAAQoC,IAAO,CACxC,IAAI60D,EAAWrwD,EAAKxE,GAEpB,GAAI60D,EAAS/Q,KAAO+Q,EAAS/Q,KAAOxE,EAAMwE,IAAK,CAC3C,GAAGljD,OAAOD,KAAK6D,EAAMxE,EAAK,GAC1B,KACJ,CACJ,CACJ,GACJ,EAEA0zD,oBAAqB,SAAShkD,EAAO4vC,GACjC,IAGI+K,EACA1sD,EAJAU,EAAOjI,KACPg5D,EAAS/wD,EAAK6xD,SAAW,GACzB+L,EAAe7M,EAAOxxD,OAI1B,IAAKD,EAAI,EAAGA,EAAIs+D,EAAct+D,IAG1B,IAFA0sD,EAAQ+E,EAAOzxD,IAELuO,OAASwD,GAAS26C,EAAMtoD,KAAO2N,EAAO,CACvCrR,EAAK60D,UAAU5T,EAAMwE,IAAKuG,EAAM7lD,QAC7BnG,EAAKq0D,mBACLrI,EAAM7lD,KAAK5D,OAAO8O,EAAO,EAAGrR,EAAKo1D,kBAAkBnU,IAEnD+K,EAAM7lD,KAAK5D,OAAO8O,EAAO,EAAG4vC,IAIpC,KACJ,CAGJjhD,EAAK6hE,qBACT,EAEAA,oBAAqB,WACjB,IAOI7V,EACA1sD,EARAU,EAAOjI,KACPg5D,EAAS/wD,EAAK6xD,SAAW,GACzB+L,EAAe7M,EAAOxxD,OACtBuiE,GAAgB,EAChBC,EAAiB,EACjBC,EAAmB,EAKvB,IAAK1iE,EAAI,EAAGA,EAAIs+D,EAAct+D,IAC1B0sD,EAAQ+E,EAAOzxD,GAEf0iE,GADchiE,EAAKu0D,gBAAkBvI,EAAM7lD,KAAK5G,OAASS,EAAK00D,UAAU1I,EAAM7lD,MAAM,GAAM5G,QACzDpE,EAAKqU,IAAIw8C,EAAMtoD,IAAMsoD,EAAMn+C,OAEvDi0D,GAAsC,IAArBE,EAOlBF,IACA9V,EAAMn+C,OAASk0D,EACf/V,EAAMtoD,KAAOq+D,IARbD,GAAgB,EAChBC,EAAiBC,EACjBhW,EAAMtoD,KAAOq+D,EASzB,EAEApI,yBAA0B,WACtB,IAII3N,EACA1sD,EACAkiE,EACAS,EAPAjiE,EAAOjI,KACPg5D,EAAS/wD,EAAK6xD,SAAW,GACzB+L,EAAe7M,EAAOxxD,OACtBwiE,EAAiB,EAMrB,IAAKziE,EAAI,EAAGA,EAAIs+D,EAAct+D,IAC1B0sD,EAAQ+E,EAAOzxD,GACf2iE,EAAcjiE,EAAKu0D,gBAAkBv0D,EAAK2+D,sBAAsB3S,EAAM7lD,MAAM,EAAM,SAAS,GAAQnG,EAAK00D,UAAU1I,EAAM7lD,MAAM,GAAM5G,OAEhIiiE,GACIA,EAAU99D,KAAOsoD,EAAMn+C,QACvBk0D,EAAiB/V,EAAMn+C,MAAQ2zD,EAAU99D,KAE7CsoD,EAAMsN,WAAakI,EAAUjI,SAAWwI,EACxCA,EAAiB,GAEjB/V,EAAMsN,WAAatN,EAAMn+C,MAG7Bm+C,EAAMuN,SAAWvN,EAAMsN,WAAa2I,EACpCT,EAAYxV,CAEpB,IAGA4G,GAAY,CAAC,EAEjBA,GAAUzT,OAAS,SAASjgD,EAASiH,EAAMqjB,GACvC,IAAIm0B,EACAukB,EAAmBhjE,EAAQy+C,UAAYjjD,EAAEI,OAAO,CAAC,EAAGoE,EAAQy+C,WAAa,KA8B7E,OA5BIukB,GACAA,EAAiBjlB,YAAcilB,EAAiBjlB,OAASh/C,EAAS,CAAE8oB,IAAKm7C,EAAiBjlB,MAASilB,EAAiBjlB,KAE/F,SAAjB/9C,EAAQzB,OACRykE,EAAiB14C,WAAaA,GAG9BtqB,EAAQzB,OACR/E,EAAMyN,KAAK64C,WAAatmD,EAAMyN,KAAK64C,YAAc,CAAC,EAClDtmD,EAAMyN,KAAKy4C,QAAUlmD,EAAMyN,KAAKy4C,SAAW,CAAC,EAEvClmD,EAAMyN,KAAK64C,WAAW9/C,EAAQzB,MAEvBiC,EAAchH,EAAMyN,KAAK64C,WAAW9/C,EAAQzB,OAGpDykE,EAAmBpnE,GAAO,EAAM,CAAC,EAAGpC,EAAMyN,KAAK64C,WAAW9/C,EAAQzB,MAAOykE,GAFzEvkB,EAAY,IAAIjlD,EAAMyN,KAAK64C,WAAW9/C,EAAQzB,MAAM3C,EAAOonE,EAAkB,CAAE/7D,KAAMA,KAFrFzN,EAAMqwB,aAAa,sCAAwC7pB,EAAQzB,KAAO,8FAA+F,QAO7KyB,EAAQowD,OAASx0D,GAAO,EAAM,CAAC,EAAGpC,EAAMyN,KAAKy4C,QAAQ1/C,EAAQzB,MAAOyB,EAAQowD,SAG3E3R,IACDA,EAAY18C,EAAWihE,EAAiBjlB,MAAQilB,EAAmB,IAAIhU,GAAgBgU,KAG3FvkB,EAAY,IAAIsQ,GAAe,CAAE9nD,KAAMjH,EAAQiH,MAAQ,KAEpDw3C,CACX,EAEAt3C,GAAW84C,OAAS,SAASjgD,IACrBlE,EAAQkE,IAAYA,aAAmBgH,KACxChH,EAAU,CAAEiH,KAAMjH,IAGrB,IAKIyC,EACApC,EAEAue,EARA0L,EAAatqB,GAAW,CAAC,EACzBiH,EAAOqjB,EAAWrjB,KAClBqhB,EAASgC,EAAWhC,OACpBnQ,EAAQmS,EAAWnS,MACnBinB,EAAS9U,EAAW8U,OAGpB2iB,EAAQ,CAAC,EAeb,GAZK96C,IAAQqhB,GAAWgC,EAAWm0B,YAC3BtmC,EACAlR,EAiFZ,SAAoBkR,EAAOmQ,GACvB,IAEA7lB,EACApC,EACA4iE,EAGAC,EACA1gB,EACA2gB,EACA1d,EAVI2d,EAAQ5nE,EAAE2c,GAAO,GAAGkrD,QAAQ,GAChCC,EAAOF,EAAQA,EAAME,KAAO,GAI5BC,EAAaj7C,EAAOjoB,OACpB4G,EAAO,GAMP,IAAKxE,EAAM,EAAGpC,EAASijE,EAAKjjE,OAAQoC,EAAMpC,EAAQoC,IAAO,CAKrD,IAJA+/C,EAAS,CAAC,EACViD,GAAQ,EACRyd,EAAQI,EAAK7gE,GAAKygE,MAEbD,EAAa,EAAGA,EAAaM,EAAYN,IAEN,QADpCE,EAAOD,EAAMD,IACJjyC,SAAStf,gBACd+zC,GAAQ,EACRjD,EAAOl6B,EAAO26C,GAAYrkD,OAASukD,EAAKvrD,WAG3C6tC,GACDx+C,EAAKzM,KAAKgoD,EAElB,CAEA,OAAOv7C,CACX,CAhHmBu8D,CAAWrrD,EAAOmQ,GAClB8W,IACPn4B,EA+BZ,SAAqBm4B,EAAQ9W,GACzB8W,EAAS5jC,EAAE4jC,GAAQ,GACnB,IAKI38B,EAAKpC,EACLojE,EACA11C,EACAy0B,EACAjhD,EATAvB,EAAUo/B,EAAOp/B,QACjB0jE,EAAap7C,EAAO,GACpBq7C,EAAcr7C,EAAO,GAErBrhB,EAAO,GAOX,IAAKxE,EAAM,EAAGpC,EAASL,EAAQK,OAAQoC,EAAMpC,EAAQoC,IACjD+/C,EAAS,CAAC,GAEVihB,GADA11C,EAAS/tB,EAAQyC,IACC4c,cAED+f,IACbqkC,EAAW,MAGX11C,EAAOkD,UAAawyC,GAAYA,EAASxyC,WAIzCwyC,IACAjhB,EAAOihB,SAAWA,EAASt2C,OAG/Bq1B,EAAOkhB,EAAW9kD,OAASmP,EAAO4L,KAK9Bp4B,GAHJA,EAAQwsB,EAAO+0B,WAAWvhD,QAEbA,EAAMqiE,UACP71C,EAAOxsB,MAEPwsB,EAAO4L,KAGnB6oB,EAAOmhB,EAAY/kD,OAASrd,EAE5B0F,EAAKzM,KAAKgoD,IAGd,OAAOv7C,CACX,CA7EmB48D,CAAYzkC,EAAQ9W,GAEvBgC,EAAW8iC,QAAU3xD,GAAewL,EAAK,IAAMA,EAAK,GAAGw8D,WAAahoE,IACpE6uB,EAAW8iC,MAAQ,cAK3B5zD,EAAMyN,KAAKk7C,OAAS75B,KAAYgC,EAAW8lC,SAAW9lC,EAAW8lC,OAAOrO,OAAQ,CAChF,IAAKt/C,EAAM,EAAGpC,EAASioB,EAAOjoB,OAAQoC,EAAMpC,EAAQoC,KAChDmc,EAAQ0J,EAAO7lB,IACLlE,OACNwjD,EAAMnjC,EAAMA,OAASA,GAIxBiQ,EAAckzB,KACfz3B,EAAW8lC,OAASx0D,GAAO,EAAM0uB,EAAW8lC,OAAQ,CAAErO,MAAO,CAAEz5B,OAAQy5B,KAE/E,CASA,OAPAz3B,EAAWrjB,KAAOA,EAElBm4B,EAAS,KACT9U,EAAW8U,OAAS,KACpBjnB,EAAQ,KACRmS,EAAWnS,MAAQ,KAEZmS,aAAsBnjB,GAAamjB,EAAa,IAAInjB,GAAWmjB,EAC1E,EAmFA,IAAIw5C,GAAO3hB,GAAM7pD,OAAO,CACpB8pD,QAAS,KAETphD,KAAM,SAASO,GACX,IAAIT,EAAOjI,KACPkrE,EAAcjjE,EAAKijE,aAAexiE,GAASA,EAAMwiE,YACjDC,EAAgB,QAChBC,EAAkB,CAAC,EAiCvB,GA/BAzqE,EAAMyN,KAAKk7C,MAAMvhD,GAAGI,KAAKoC,KAAKtC,EAAMS,UAEzBT,EAAKstC,WAAarvC,IACzBilE,EAAgBljE,EAAKstC,UAGzB61B,EAAkB,CACd7T,OAAQ,CACJnpD,KAAM+8D,EACNjiB,MAAO,CACHgiB,YAAaA,EACb76C,GAAIpoB,EAAKshD,QACT95B,OAAQxnB,EAAKwnB,iBAKdxnB,EAAKstC,WAAarvC,GACzBnD,EAAOqoE,EAAiBnjE,EAAKstC,UAGjC61B,EAAgBh9D,KAAO1F,EAElBwiE,IACDA,EAAcE,EAAgB7T,OAAOnpD,aAG9B88D,IAAgBhlE,IACvBglE,EAAcvqE,EAAM6uB,OAAO07C,IAG3BhiE,EAAWgiE,GAAc,CACzB,IAAIG,EAAoBH,EAAY3gE,KAAKtC,EAAMA,GAE3CojE,GAAkD,IAA7BA,EAAkB7jE,OACvCS,EAAKijE,aAAc,EAEnBjjE,EAAKijE,cAAgBG,CAE7B,CAEApjE,EAAKqjE,iBAAmBF,EAEpBnjE,EAAKijE,aACLjjE,EAAKsjE,gBAGTtjE,EAAKujE,WAAa9iE,IAASA,EAAM8iE,QACrC,EAEAD,cAAe,WACX,IACIh2B,EAAUqQ,EAAWyB,EADrBp/C,EAAOjI,KAGLiI,EAAKstC,oBAAoBhnC,KAG3Bq3C,GAFArQ,EAAWttC,EAAKstC,SAAW,IAAIhnC,GAAuBtG,EAAKqjE,mBAEtC1lB,UACrByB,EAAezB,EAAUyB,aAEzBzB,EAAUyB,aAAe,SAASj5C,EAAM1I,GAOpC,OANA0I,EAAKnG,EAAKshD,SAAW,MAAQthD,EAAKooB,GAE9Bg3B,IACAj5C,EAAOi5C,EAAa98C,KAAKtC,EAAMmG,EAAM1I,IAGlC0I,CACX,EAEAmnC,EAAS5oC,OAAS,WACd,OAAO1E,CACX,EAEAstC,EAAS/rC,KAAK0zC,GAAQ,SAASv4C,GAC3BA,EAAE0+B,KAAO1+B,EAAE0+B,MAAQp7B,EACnBA,EAAKmC,QAAQ8yC,EAAQv4C,EACzB,IAEA4wC,EAAS/rC,KAAKwhD,GAAO,SAASrmD,GAC1B,IAAI+hD,EAAaz+C,EAAK0E,SAElB+5C,IACA/hD,EAAE0+B,KAAO1+B,EAAE0+B,MAAQp7B,EACnBy+C,EAAWt8C,QAAQ4gD,EAAOrmD,GAElC,IAEA4wC,EAAS/rC,KAAK4hD,GAAa,SAASzmD,GAChC,IAAI+hD,EAAaz+C,EAAK0E,SAElB+5C,GACAA,EAAWt8C,QAAQghD,EAAazmD,EAExC,IAEAsD,EAAKwjE,uBAEb,EAEAtxB,OAAQ,SAAS+O,GACblpD,KAAKurE,gBACLvrE,KAAK0rE,QAAO,GACZ1rE,KAAKu1C,SAAS/nC,IAAI07C,EACtB,EAEAgiB,aAAa,EAEbS,MAAO,WAIH,IAHA,IAAInlD,EAAaxmB,KAAKwmB,aAClBmlD,EAAQ,EAELnlD,GAAcA,EAAWA,YAC5BmlD,IACAnlD,EAAaA,EAAWA,WAAaA,EAAWA,aAAe,KAGnE,OAAOmlD,CACX,EAEAF,qBAAsB,WAGlBzrE,KAFgBA,KAAKsrE,iBAAiB/T,OAAOnpD,MAE3B,SAAWpO,KAAKu1C,SAASnnC,MAC/C,EAEAw9D,gBAAiB,WACb5rE,KAAKwrE,SAAU,EAEfxrE,KAAKyrE,sBACT,EAEAI,KAAM,WACF,IAEIt2B,EAAU1tB,EAFV1gB,EAAU,CAAC,EACXmwB,EAAS,SA6Bb,OA1BIt3B,KAAKkrE,aACLlrE,KAAKurE,gBAELh2B,EAAWv1C,KAAKu1C,SAEhBpuC,EAAQnH,KAAKupD,SAAW,MAAQvpD,KAAKqwB,GAEhCrwB,KAAKwrE,UACNj2B,EAASqkB,MAAQh3D,EACjB00B,EAAS,QAGbie,EAAS5rC,IAAIuzC,EAAQl9C,KAAK4rE,gBAAgBpiE,KAAKxJ,OAE3CA,KAAK8rE,eACL3kE,EAAQooB,OAAS,CAAExJ,MAAO,eAAgBq9B,SAAU,KAAM16C,OAAO,IAGrEmf,EAAU0tB,EAASje,GAAQnwB,GACtBnH,KAAKwrE,SACNxrE,KAAKoK,QAAQihD,EAAU,CAAExjC,QAASA,EAASwb,KAAMrjC,QAGrDA,KAAK0rE,QAAO,GAGT7jD,GAAWllB,EAAEypC,WAAW2J,UAAUluB,SAC7C,EAEArB,WAAY,WAGR,OAFYxmB,KAAK2M,SAEJA,QACjB,EAEA++D,OAAQ,SAAShjE,GACb,GAAIA,IAAU9F,EAGV,OAAO5C,KAAKwrE,QAFZxrE,KAAKwrE,QAAU9iE,CAIvB,EAEAilD,gBAAiB,SAAS5nC,GACtB,OAAOujC,GAAMvhD,GAAG4lD,gBAAgBpjD,KAAKvK,KAAM+lB,IACzB,aAAVA,GACU,YAAVA,GACU,gBAAVA,GACU,qBAAVA,CACZ,IAGJ,SAASgmD,GAAW3pE,GAChB,OAAO,WACH,IAAIgM,EAAOpO,KAAK45D,MACZ9iD,EAASxI,GAAWvG,GAAG3F,GAAMgG,MAAMpI,KAAM6G,EAAM0D,KAAKjD,YAMxD,OAJItH,KAAK45D,OAASxrD,GACdpO,KAAKgsE,wBAGFl1D,CACX,CACJ,CAEA,IAAIvI,GAAyBD,GAAWvL,OAAO,CAC3CoF,KAAM,SAAShB,GACX,IAAIk8B,EAAO4nC,GAAKxrE,OAAO,CACnB81C,SAAUpuC,IAGVA,EAAQooB,SAAWpoB,EAAQ40D,kBAC3B/7D,KAAKisE,oBAAsB9kE,EAAQooB,OACnCpoB,EAAQooB,OAAS,MAGrBjhB,GAAWvG,GAAGI,KAAKoC,KAAKvK,KAAM+C,GAAO,EAAM,CAAC,EAAG,CAAEw0D,OAAQ,CAAElO,UAAWhmB,EAAM6lB,MAAO7lB,IAAUl8B,IAE7FnH,KAAKgsE,uBACT,EAEAA,sBAAuB,WACnB,IAAI/jE,EAAOjI,KAEXiI,EAAK2xD,MAAMpwD,KAAKwhD,GAAO,SAASrmD,GAC5BsD,EAAKmC,QAAQ4gD,EAAOrmD,EACxB,IAEAsD,EAAK2xD,MAAMpwD,KAAK4hD,GAAa,SAASzmD,GAClCsD,EAAKmC,QAAQghD,EAAazmD,EAC9B,GACJ,EAEAqyB,QAAS,WACL,QAAIh3B,KAAK45D,QACE55D,KAAK45D,MAAM5iC,WAAah3B,KAAKksE,mBAG5C,EAEAA,iBAAkB,WACd,IAAIC,GAAY,EAMhB,OALAnsE,KAAK45D,MAAMt4D,SAAQ,SAAS+hC,GACpBA,EAAK6nC,aAAe7nC,EAAKkS,SAASve,YAClCm1C,GAAY,EAEpB,IACOA,CACX,EAEAjnB,KAAM,SAAS92C,GACX,IAAI0I,EAASxI,GAAWvG,GAAGm9C,KAAK36C,KAAKvK,KAAMoO,GAY3C,OAVIpO,KAAKisE,sBACDjsE,KAAK45D,OAAS55D,KAAK45D,MAAMpyD,OAAS,EAClCxH,KAAKuvB,OAAOvvB,KAAKisE,sBAEjBjsE,KAAKmH,QAAQooB,OAASvvB,KAAKisE,oBAC3BjsE,KAAKs6D,QAAU7H,GAAgBzyD,KAAKmH,QAAQooB,QAC5CvvB,KAAKisE,oBAAsB,OAI5Bn1D,CACX,EAEAzK,OAAQ,SAASg3B,GACb,IAEIvsB,EAFA0P,EAAa6c,EAAK7c,aAClBiL,EAAazxB,KAajB,OAVIwmB,GAAcA,EAAW+kD,gBACzB95C,EAAajL,EAAW+uB,UAG5Bz+B,EAASxI,GAAWvG,GAAGsE,OAAO9B,KAAKknB,EAAY4R,GAE3C7c,IAAeiL,EAAWrjB,OAAO5G,SACjCgf,EAAW0kD,aAAc,GAGtBp0D,CACX,EAEAqxC,QAAS4jB,GAAW,WAEpB39D,KAAM29D,GAAW,QAEjB5O,OAAQ,SAAS7jD,EAAO4vC,GACpB,IAAI1iC,EAAaxmB,KAAK2M,SAOtB,OALI6Z,GAAcA,EAAW+kD,gBACzB/kD,EAAW0kD,aAAc,EACzB1kD,EAAW+kD,iBAGRj9D,GAAWvG,GAAGo1D,OAAO5yD,KAAKvK,KAAMsZ,EAAO4vC,EAClD,EAEA35B,OAAQ,SAASK,GACb,GAAIA,IAAQhtB,EACP,OAAO5C,KAAKs6D,SAGZt6D,KAAKmH,QAAQ40D,iBAAmB/7D,KAAKosE,uBAAuBx8C,KAC7DA,EAAM,CAAEkyB,MAAO,KAAM+B,QAAS,CAACj0B,EAAK,CAAE7J,MAAO,eAAgBq9B,SAAU,SAAU16C,OAAO,MAG5F1I,KAAKoK,QAAQ,SACbpK,KAAKqmE,OAAO,CAAE92C,OAAQK,EAAK00B,KAAM,GACrC,EAEA8nB,uBAAwB,SAASrb,GAC7B,IAAIuD,EACAjR,EAAyBrjD,KAAKmH,QAAQk8C,uBAI1C,OAFA0N,EAAc1N,EAAyB1gD,EAAEI,OAAO,CAAC,EAAG0vD,GAAgB1B,GAAc,CAAE1N,uBAAwBA,IAA4BoP,GAAgB1B,KAErG,IAA/BA,EAAYlN,QAAQr8C,QAKxC8sD,EAAWjE,GAAMO,WAAWG,EAAa,CAAEF,QAAQ,IAEnD7wD,KAAKqsE,0BAA0B/X,IACxB,IAPHt0D,KAAKqsE,2BAA0B,WAAY,OAAO,CAAK,KAChD,EAOf,EAECA,0BAA2B,SAAS98C,GAKjC,IAJA,IAAIvb,EACA5F,EAAOpO,KAAK45D,MACZ9iD,GAAS,EAEJlN,EAAM,EAAGA,EAAMwE,EAAK5G,OAAQoC,KAChCoK,EAAU5F,EAAKxE,IAEHshE,aACRl3D,EAAQ83D,aAAe93D,EAAQuhC,SAAS82B,0BAA0B98C,GAC9Dvb,EAAQ83D,eACT93D,EAAQ83D,aAAev8C,EAAOvb,KAGlCA,EAAQ83D,aAAev8C,EAAOvb,GAG9BA,EAAQ83D,eACRh1D,GAAS,GAGjB,OAAOA,CACX,EAEAw1D,MAAO,SAASh1C,EAAQ5uB,GACpB,IAAIkB,EAAKpC,EAAQ67B,EAAMkS,EACnBnnC,EAAOpO,KAAK45D,MAEhB,GAAKxrD,EAAL,CAMA,GAFAi1B,EAAO/0B,GAAWvG,GAAGuvB,GAAQ/sB,KAAKvK,KAAM0I,GAGpC,OAAO26B,EAKX,IAAKz5B,EAAM,EAAGpC,GAFd4G,EAAOpO,KAAK28D,UAAU38D,KAAK45D,QAECpyD,OAAQoC,EAAMpC,EAAQoC,IAG9C,IAFA2rC,EAAWnnC,EAAKxE,GAAK2rC,oBAEKhnC,KAI1B80B,EAAOkS,EAASje,GAAQ5uB,IAGpB,OAAO26B,CApBf,CAuBJ,EAEApT,IAAK,SAASI,GACV,OAAOrwB,KAAKssE,MAAM,MAAOj8C,EAC7B,EAEAwsC,SAAU,SAASnP,GACf,OAAO1tD,KAAKssE,MAAM,WAAY5e,EAClC,IAGJ,SAAS6e,GAAUC,EAAM/8C,GACrB,IACI7lB,EACApC,EAEAmiD,EAKAxa,EACA9e,EACAo8C,EACAp/C,EACAkoB,EAbA2W,EAAQvpD,EAAE6pE,GAAMj3B,WAGhBnnC,EAAO,GAEPs+D,EAAYj9C,EAAO,GAAG1J,MACtB4mD,EAAWl9C,EAAO,IAAMA,EAAO,GAAG1J,MAClC6mD,EAAsBn9C,EAAO,IAAMA,EAAO,GAAG1J,MAC7C8mD,EAAgBp9C,EAAO,IAAMA,EAAO,GAAG1J,MAO3C,SAAS4S,EAAS+tB,EAAY71B,GAC1B,OAAO61B,EAAWn3B,OAAOsB,GAASrjB,IAAIk5C,EAAWvwB,KAAKtF,GAC1D,CAEA,IAAKjnB,EAAM,EAAGpC,EAAS0kD,EAAM1kD,OAAQoC,EAAMpC,EAAQoC,IAC/C+/C,EAAS,CAAE6hB,SAAS,GAGpBiB,GAFAt9B,EAAO+c,EAAMl0B,GAAGpuB,IAEC,GAAGugD,WAEpBqiB,GADAj3B,EAAWpG,EAAKoG,YACAhmB,OAAO,MACvBgmB,EAAWA,EAAShmB,OAAO,aAE3Bc,EAAK8e,EAAKvrB,KAAK,cAGX+lC,EAAOt5B,GAAKA,GAGZo8C,IACA9iB,EAAO+iB,GAAmC,GAAtBD,EAAU32C,SAAgB22C,EAAU3oC,UAAYyR,EAASzU,QAG7E6rC,IACAhjB,EAAOgjB,GAAYh0C,EAAS4c,EAAU,KAAK3xB,KAAK,SAGhDipD,IACAljB,EAAOkjB,GAAiBl0C,EAAS4c,EAAU,OAAO3xB,KAAK,QAGvDgpD,IACAv/C,EAAYsL,EAAS4c,EAAU,aAAa1lB,KAAK,aACjD85B,EAAOijB,GAAuBv/C,GAAa1sB,EAAMgjC,KAAKtW,EAAU5qB,QAAQ,WAAY,MAGpF+pE,EAAKhlE,SACLmiD,EAAOuC,MAAQqgB,GAAUC,EAAKx0C,GAAG,GAAIvI,IAGJ,QAAjC0f,EAAKvrB,KAAK,sBACV+lC,EAAOuhB,aAAc,GAGzB98D,EAAKzM,KAAKgoD,GAGd,OAAOv7C,CACX,CAEAG,GAAuB64C,OAAS,SAASjgD,GAGrC,IAAIsqB,GAFJtqB,EAAUA,GAAWA,EAAQxF,KAAO,CAAEyM,KAAMjH,GAAYA,IAE5B,CAAC,EACzBiH,EAAOqjB,EAAWrjB,KAClBqhB,EAASgC,EAAWhC,OACpB+8C,EAAO/6C,EAAW+6C,KAEtB,OAAIp+D,GAAQA,EAAK0+D,YACN1+D,EAAK0+D,aAGX1+D,IAAQqhB,GAAWgC,EAAWm0B,WAC3B4mB,IACAp+D,EAAOm+D,GAAUC,EAAM/8C,IAI/BgC,EAAWrjB,KAAOA,EAEXqjB,aAAsBljB,GAAyBkjB,EAAa,IAAIljB,GAAuBkjB,GAClG,EAEA,IAAIs7C,GAASpsE,EAAM2I,WAAWvG,OAAO,CACjCoF,KAAM,SAASspB,EAAYu7C,EAAUC,GACjCtsE,EAAM2I,WAAWvB,GAAGI,KAAKoC,KAAKvK,MAE9BA,KAAKktE,cAAe,EACpBltE,KAAKyxB,WAAaA,EAClBzxB,KAAK+nE,UAAYkF,EAEjB,IAAIl/B,EAAS/tC,KAEbyxB,EAAWjoB,KAAK,UAAU,WACtBukC,EAAOwxB,SACX,IAEA9tC,EAAWjoB,KAAK,SAAS,WACrBukC,EAAOo/B,QACX,IAEAntE,KAAKotE,sBAELptE,KAAKqtE,YAAYL,EACrB,EAEAK,YAAa,SAASL,GAClBhtE,KAAKgtE,SAAWA,EAChBhtE,KAAKstE,cACT,EAEAzhB,GAAI,SAASvyC,GACT,IAAI+qC,EAAWrkD,KAAKqkD,SAChBkpB,GAAc,EAElB,OAAIj0D,GAAStZ,KAAKgnD,SACdhnD,KAAKoK,QAAQ,aAAc,CAAEkP,MAAOA,IAC7B,MAGNtZ,KAAK48D,UAGN58D,KAAK48D,YAEDtjD,EAAQtZ,KAAKwtE,YAAcl0D,GAAStZ,KAAK6kD,KAAOR,KAChDkpB,EAAcvtE,KAAKi0D,MAAM5wD,KAAKyN,MAAMwI,EAAQ+qC,GAAYA,IAIxD/qC,IAAUtZ,KAAKytE,mBACfztE,KAAK25D,YAILrgD,IAAUtZ,KAAK0tE,iBACf1tE,KAAKi0D,MAAMj0D,KAAK2tE,cAAc,GAGzBr0D,IAAUtZ,KAAK4tE,kBACpB5tE,KAAKi0D,MAAMj0D,KAAK6tE,eAGXv0D,IAAUtZ,KAAK8tE,oBAChB9tE,KAAK8d,SAAW9d,KAAK6kD,KACrB7kD,KAAKi0D,MAAMj0D,KAAK+tE,kBAEhB/tE,KAAKi0D,MAAMj0D,KAAKguE,oBAIpBT,EACOvtE,KAAKyxB,WAAWo6B,GAAGvyC,EAAQtZ,KAAKwtE,aAEvCxtE,KAAKoK,QAAQ,aAAc,CAAEkP,MAAOA,IAC7B,YAhCf,EAFUtZ,KAAKyxB,WAAWmG,OAAOte,EAqCrC,EAEA3D,QAAS,SAASw5B,GACd,OAAOnvC,KAAKyxB,WAAWrjB,OAAOuH,QAAQw5B,GAAQnvC,KAAKwtE,UACvD,EAEAxmB,MAAO,WACH,OAAOxtC,SAASxZ,KAAKyxB,WAAWu1B,QAAS,GAC7C,EAEAsf,KAAM,WACF,IAAIv4B,EAAS/tC,KACTqkD,EAAWtW,EAAOsW,SAClBvmC,EAASiwB,EAAO8W,KAAO9W,EAAOi/B,SAAW3oB,EACzCmjB,EAAWpkE,EAAK+V,IAAI/V,EAAK0N,MAAMgN,EAASumC,GAAW,GAAKA,EAE5DrkD,KAAK8d,OAASA,EACd9d,KAAKyxB,WAAWs2C,SAASP,EAAUnjB,GAAU,WACzCtW,EAAOkgC,WAAWnwD,GAAQ,EAC9B,GACJ,EAEAm2C,MAAO,SAASn2C,EAAQowD,GACpB,GAAIluE,KAAK8d,SAAWA,EAChB,OAAO,EAGX,IAAIiwB,EAAS/tC,KACTqkD,EAAWrkD,KAAKqkD,SAChBmjB,EAAWpkE,EAAK+V,IAAI/V,EAAK0N,MAAMgN,EAASumC,GAAW,GAAKA,EACxD5yB,EAAazxB,KAAKyxB,WAMtB,OAJIy8C,IACA1G,GAAYnjB,GAGZ5yB,EAAW01C,QAAQrpD,EAAQumC,IAC3BrkD,KAAK8d,OAASA,EACd9d,KAAKstE,eACLttE,KAAKiuE,WAAWnwD,IACT,IACA9d,KAAK+nE,WACZt2C,EAAWs2C,SAASP,EAAUnjB,GAAU,WACpCtW,EAAOjwB,OAASA,EAChBiwB,EAAOu/B,eACPv/B,EAAOkgC,WAAWnwD,GAAQ,EAC9B,KACO,EAIf,EAEAqwD,eAAgB,WACZ,IAAIrwD,EAAS9d,KAAK8d,OAClB9d,KAAK8d,OAAS,KACd9d,KAAKi0D,MAAMn2C,EACf,EAEA9b,QAAS,WACLhC,KAAKiK,QACT,EAEA0vD,UAAW,WACP,IAAI5rB,EAAS/tC,KACTqkD,EAAWrkD,KAAKqkD,SAChB+pB,EAAiBpuE,KAAK6kD,KAAOR,EAC7B5yB,EAAazxB,KAAKyxB,WAEjBA,EAAW01C,QAAQiH,EAAgB/pB,IAAcrkD,KAAKktE,eAAgBltE,KAAK+nE,WAC5E/nE,KAAKktE,cAAe,EACpBltE,KAAKoK,QAAQ,cAAe,CAAEy6C,KAAMupB,EAAgBrpB,KAAMV,IAE1D5yB,EAAWs2C,SAASqG,EAAgB/pB,GAAU,WAC1CtW,EAAOm/B,cAAe,EACtBn/B,EAAO3jC,QAAQ,aAAc,CAAEy6C,KAAMupB,EAAgBrpB,KAAMV,GAC/D,IAER,EAEA4pB,WAAY,SAASnwD,EAAQuwD,GACrBruE,KAAK8d,SAAWA,IAIpB9d,KAAKwtE,WAAa1vD,EAClB9d,KAAKsuE,WAAaD,EAClBruE,KAAKyxB,WAAWwiC,MAAMn2C,EAAQ9d,KAAKqkD,UACnCrkD,KAAKyxB,WAAW81C,2BACpB,EAEA4F,OAAQ,WACJntE,KAAKuuE,cAAe,CACxB,EAEAhP,QAAS,WACL,IAAI9tC,EAAazxB,KAAKyxB,WAEtBzxB,KAAKwH,OAASxH,KAAK48D,UAAYnrC,EAAW41C,YAAY17D,IAAM8lB,EAAWmG,OAAOpwB,OAE1ExH,KAAKuuE,eACLvuE,KAAKotE,sBACLptE,KAAKstE,eACLttE,KAAKuuE,cAAe,EACpBvuE,KAAKoK,QAAQ,QAAS,CAAE0T,OAAQ9d,KAAK8d,UAGzC9d,KAAKoK,QAAQ,UAETpK,KAAKsuE,YACLtuE,KAAKoK,QAAQ,iBAGVpK,KAAKsuE,UAChB,EAEAlB,oBAAqB,WACjB,IAAI37C,EAAazxB,KAAKyxB,WAEtBzxB,KAAKwuE,cAAgB/8C,EAAW61C,eAChCtnE,KAAKwtE,WAAaxtE,KAAK8d,OAAS2T,EAAWozB,QAAU,EACrD7kD,KAAKqkD,SAAW5yB,EAAW4yB,WAC3BrkD,KAAK48D,UAAYnrC,EAAWtqB,QAAQ20D,YACxC,EAEAwR,aAAc,WACV,IAAIjpB,EAAWrkD,KAAKqkD,SAChBvmC,EAAS9d,KAAK8d,OACdkvD,EAAWhtE,KAAKgtE,SAChBnoB,EAAOxhD,KAAK6jE,KAAKppD,EAASumC,GAAYA,EAE1CrkD,KAAK6kD,KAAOA,EACZ7kD,KAAK0tE,iBAAmB7oB,EAAOR,EAAW,EAC1CrkD,KAAK4tE,kBAAoB/oB,EAAOmoB,EAAW,EAC3ChtE,KAAKytE,kBAAoB5oB,EAAOxhD,KAAKyN,MAAMuzC,EAAW,EAAI,GAC1DrkD,KAAK8tE,kBAAoB9tE,KAAK8d,OAAS,EAEvC9d,KAAK2tE,aAAe9oB,EAAOR,EAAW2oB,EACtChtE,KAAK6tE,cAAgBhpB,EACrB7kD,KAAK+tE,iBAAmBjwD,EAASkvD,EACjChtE,KAAKguE,kBAAoBnpB,EAAOR,CACpC,IAGAoqB,GAAc9tE,EAAM2I,WAAWvG,OAAO,CACtCoF,KAAM,SAASspB,EAAYi9C,GACvB,IAAIC,EAAc3uE,KAElBW,EAAM2I,WAAWvB,GAAGI,KAAKoC,KAAKokE,GAE9B3uE,KAAKyxB,WAAaA,EAClBzxB,KAAK0uE,UAAYA,EACjB1uE,KAAKy6D,OAAS,EAEdz6D,KAAK+tC,OAAS,IAAIg/B,GAAOt7C,EAAwB,EAAZi9C,GAErC1uE,KAAK+tC,OAAOvkC,KAAK,CACbolE,WAAc,SAASjqE,GACnBgqE,EAAYvkE,QAAQ,aAAc,CAAEkP,MAAO3U,EAAE2U,OACjD,EACAu1D,YAAe,SAASlqE,GACpBgqE,EAAYvkE,QAAQ,cAAe,CAAEy6C,KAAMlgD,EAAEkgD,KAAME,KAAMpgD,EAAEogD,MAC/D,EACA+pB,WAAc,SAASnqE,GACnBgqE,EAAYvkE,QAAQ,aAAc,CAAEy6C,KAAMlgD,EAAEkgD,KAAME,KAAMpgD,EAAEogD,MAC9D,EACAlP,MAAS,WACL84B,EAAYlU,OAAS,EACrBkU,EAAYvkE,QAAQ,QACxB,EACA+f,OAAU,WACNwkD,EAAYlU,OAASp3D,KAAK6jE,KAAKlnE,KAAKwH,OAASmnE,EAAYD,WACzDC,EAAYvkE,QAAQ,SAAU,CAAE48C,MAAO2nB,EAAY3nB,QAASlpC,OAAQ9d,KAAK8d,QAC7E,GAER,EAEAqwD,eAAgB,WACZnuE,KAAK+tC,OAAOogC,gBAChB,EAEAtiB,GAAI,SAASvyC,GACT,IAII61B,EAJApB,EAAS/tC,KAAK+tC,OACd8W,EAAOvrC,EAAQtZ,KAAK0uE,UACpB3pB,EAAO/kD,KAAK0uE,UACZ92C,EAAO,GAGPmW,EAAOjwB,OAAS+mC,GAChB9W,EAAO8d,GAAG9d,EAAOjwB,OAAS,GAG9B,IAAK,IAAIvW,EAAI,EAAGA,EAAIw9C,GAGH,QAFb5V,EAAOpB,EAAO8d,GAAGhH,EAAOt9C,IADFA,IAOtBqwB,EAAKj2B,KAAKwtC,GAGd,OAAOvX,CACX,EAEAovB,MAAO,WACH,OAAOhnD,KAAKy6D,MAChB,EAEAz4D,QAAS,WACLhC,KAAK+tC,OAAO/rC,UACZhC,KAAKiK,QACT,IAGJlH,GAAO,EAAMpC,EAAMyN,KAAM,CACrBq8C,QAAS,CACLsB,KAAMuL,IAEVjH,MAAOA,GACP/hD,WAAYA,GACZC,uBAAwBA,GACxB08D,KAAMA,GACN9b,SAAUA,GACV1D,iBAAkBA,EAClBt9C,gBAAiBA,EACjBE,oBAAqBA,EACrB6nD,eAAgBA,GAChBC,gBAAiBA,GACjBC,MAAOA,GACPkB,WAAYA,GACZhO,MAAOA,GACPyjB,OAAQA,GACR0B,YAAaA,IAEpB,CA7hND,CA6hNG3tE,OAAOH,MAAM+G,QACF/G,OAWd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfouE,EAASpuE,EAAM4tB,WACfjlB,EAAa3I,EAAM2I,WACnBmiD,EAAmB9qD,EAAMyN,KAAKq9C,iBAC9Bt9C,EAAkBxN,EAAMyN,KAAKD,gBAC7BsD,EAAW,CAAC,EAAEA,SACdu9D,EAAU,CAAC,EACXpnE,EAAQjH,EAAMiH,MACdqnE,EAAQ,QACRC,EAAS,SACTC,EAAS,SACTC,EAAU,UAEVC,GAAgB,EAChBppE,EAAW,WACXi3C,EAAS,UAEb,WACI,IAAIh4C,EAAIyK,SAASkP,cAAc,KAE/B,WACW3Z,EAAEqI,IACb,CAAE,MAAO5I,GACL0qE,GAAgB,CACpB,CACH,CARD,GAUA,IAAIC,EAAUhmE,EAAWvG,OAAQ,CAC7BoF,KAAM,SAASowB,EAASgX,GACpB,IAAItnC,EAAOjI,KAEXsJ,EAAWvB,GAAGI,KAAKoC,KAAKtC,GAExBA,EAAK4F,OAAS0qB,EAAQ,GACtBtwB,EAAKswB,QAAUA,EACftwB,EAAKsnC,KAAOA,EACZtnC,EAAKsnE,aAAe,CAAC,EACrBtnE,EAAKsnE,aAAahgC,IAAQ,EAC1BtnC,EAAK4mC,WAAa5mC,EAAK4F,kBAAkBvE,EAEzCrB,EAAKunE,QAAU,SAAS7qE,GACpBsD,EAAKsnE,aAAa5qE,EAAEohB,QAAS,CACjC,EAEI9d,EAAK4mC,aACL5mC,EAAKs3D,QAAU,SAAS56D,GACpBsD,EAAKs2C,OAAO55C,EAChB,EAEAsD,EAAK4F,OAAOrE,KAAK0zC,EAAQj1C,EAAKs3D,SAEtC,EAEAkQ,SAAU,WACN,IAAIl3C,EAAUv4B,KAAKu4B,QACf7vB,EAAQ1I,KAAKiwB,MAEjB,GAAIvnB,GAAgC,mBAAhBA,EAAMiE,OAAsB,CAC5C,IAAIA,EAASjE,EAAMiE,SAEfhK,EAAE8yB,QAAQ9oB,EAAQ4rB,GAAW,IAC7BA,EAAU,CAAC5rB,GAAQyR,OAAOma,GAElC,CAEA,OAAOA,CACX,EAEAgmB,OAAQ,SAAS55C,GACb,IAAI+qE,EACA13D,EACA+N,EAAQphB,EAAEohB,MACV9d,EAAOjI,KAEX,GAAkB,SAAdiI,EAAKsnC,KACLtnC,EAAKmC,QAAQ8yC,EAAQv4C,QAErB,IAAK+qE,KAAcznE,EAAKsnE,aACpB,GAAkC,IAA9BG,EAAW/5D,QAAQoQ,OACpB/N,EAAK03D,EAAW5kE,OAAOib,EAAMve,UAEX,MAAPwQ,GAAqB,MAAPA,GAAY,CAChC/P,EAAKmC,QAAQ8yC,EAAQv4C,GACrB,KACL,CAIf,EAEAmR,MAAO,SAASjI,GACZA,EAAOrE,KAAK,MAAOxJ,KAAKwvE,QAC5B,EAEAhnD,KAAM,SAAS3a,GACXA,EAAO5D,OAAO,MAAOjK,KAAKwvE,QAC9B,EAEAv/C,IAAK,WAED,IAAIhoB,EAAOjI,KACP6N,EAAS5F,EAAK4F,OACdyL,EAAQ,EACRi2B,EAAOtnC,EAAKsnC,KACZz4B,EAASjJ,EAEb,IAAK5F,EAAK4mC,WACN,OAAO/3B,EAQX,IALA7O,EAAK6N,MAAM7N,EAAK4F,QAEhBiJ,EAASjJ,EAAOoiB,IAAIsf,GAGbz4B,IAAWlU,GAAeiL,IAE7BA,EAAS5F,EAAKswB,UAAUjf,cAEFmyC,IAClB30C,EAASjJ,EAAOoiB,IAAIsf,IAK5B,GAAIz4B,IAAWlU,EAGX,IAFAiL,EAAS5F,EAAK4F,OAEPiJ,IAAWlU,GAAeiL,IAC7BA,EAASA,EAAOlB,oBAEM8+C,IAClB30C,EAASjJ,EAAOoiB,IAAIsf,IAsChC,MAhCsB,mBAAXz4B,KACPwC,EAAQi2B,EAAKt2B,YAAY,MAGb,IACRpL,EAASA,EAAOoiB,IAAIsf,EAAKvkC,UAAU,EAAGsO,KAI1CrR,EAAK6N,MAAMjI,GAGPiJ,EADAjJ,IAAW5F,EAAK4F,OACPiJ,EAAOvM,KAAKsD,EAAQ5F,EAAK4F,QAEzBiJ,EAAOvM,KAAKsD,GAGzB5F,EAAKugB,KAAK3a,IAIVA,GAAUA,IAAW5F,EAAK4F,SAE1B5F,EAAK0nE,cAAgB9hE,EAGrBA,EAAO5D,OAAOizC,EAAQj1C,EAAKs3D,SACpB/1D,KAAK0zC,EAAQj1C,EAAKs3D,UAG7Bt3D,EAAKugB,KAAKvgB,EAAK4F,QAERiJ,CACX,EAEAoZ,IAAK,SAASxnB,GACV,IAAImF,EAAS7N,KAAK2vE,eAAiB3vE,KAAK6N,OAEpCkY,EAAQplB,EAAM6uB,OAAOxvB,KAAKuvC,KAAlB5uC,CAAwBkN,GAEf,mBAAVkY,EACHlY,IAAW7N,KAAK6N,OAChBkY,EAAMxb,KAAKsD,EAAQ7N,KAAK6N,OAAQnF,GAEhCqd,EAAMxb,KAAKsD,EAAQnF,GAGvBmF,EAAOqiB,IAAIlwB,KAAKuvC,KAAM7mC,EAE9B,EAEA1G,QAAS,WACDhC,KAAK6uC,aACL7uC,KAAK6N,OAAO5D,OAAOizC,EAAQl9C,KAAKu/D,SAC5Bv/D,KAAK2vE,eACL3vE,KAAK2vE,cAAc1lE,OAAOizC,EAAQl9C,KAAKu/D,UAI/Cv/D,KAAKiK,QACT,IAGA2lE,EAAeN,EAAQvsE,OAAQ,CAC/BktB,IAAK,WACD,IAGInmB,EAHA+D,EAAS7N,KAAK6N,OACd0hC,EAAOvvC,KAAKuvC,KACZj2B,EAAQ,EAKZ,IAFAxP,EAAU+D,EAAOoiB,IAAIsf,IAEbzlC,GAAW+D,IACfA,EAAS7N,KAAKu4B,UAAUjf,cAEFmyC,IAClB3hD,EAAU+D,EAAOoiB,IAAIsf,IAI7B,GAAKzlC,EAIL,OAAOA,EAAQN,KAAKqE,EACxB,IAGAgiE,EAAkBP,EAAQvsE,OAAQ,CAClCoF,KAAM,SAAS0F,EAAQ0hC,EAAMn/B,GAGzBk/D,EAAQvnE,GAAGI,KAAKoC,KAFLvK,KAEgB6N,EAAQ0hC,GAFxBvvC,KAINoQ,SAAWA,CACpB,EAEAD,OAAQ,SAASzH,GACb,IAAI2H,EAQJ,OANArQ,KAAK8V,MAAM9V,KAAK6N,QAEhBwC,EAAO1P,EAAMwP,OAAOnQ,KAAKoQ,SAAU1H,GAEnC1I,KAAKwoB,KAAKxoB,KAAK6N,QAERwC,CACX,IAGAy/D,EAASloE,EAAM7E,OAAO,CACtBoF,KAAM,SAAS0D,EAASkkE,EAAU5oE,GAC9BnH,KAAK6L,QAAUA,EACf7L,KAAK+vE,SAAWA,EAChB/vE,KAAKmH,QAAUA,CACnB,EAEAqC,KAAM,SAASwmE,EAAS9nC,GACpB,IAAIjgC,EAAOjI,MAEXgwE,EAAU9nC,EAAY8nC,EAAQ9nC,GAAa8nC,GAEnCxmE,KAAK0zC,GAAQ,SAASv4C,GAC1BsD,EAAK0W,QAAQupB,GAAavjC,EAC9B,IAEAsD,EAAK0W,QAAQupB,EACjB,EAEAlmC,QAAS,WACT,IAGAiuE,EAAcH,EAAO/sE,OAAO,CAC5BoiD,SAAU,WAEN,OADenlD,KAAK6L,QAAQspB,aAAa,QAAUx0B,EAAMwrB,GAAK,SAAWnsB,KAAK6L,QAAQnG,MAAQ,QAC9EmT,aACpB,EAEAq3D,YAAa,WACT,OAAOlwE,KAAKmwE,YAAYnwE,KAAK6L,QAAQnD,MAAO1I,KAAKmlD,WACrD,EAEAgrB,YAAa,SAASznE,EAAOy8C,GAezB,MAdgB,QAAZA,EACAz8C,EAAQ/H,EAAM2d,UAAU5V,EAAO,cACZ,kBAAZy8C,EACPz8C,EAAQ/H,EAAM2d,UAAU5V,EAAO,CAAC,sBAAuB,qBACpC,UAAZy8C,EACPz8C,EAAQ/H,EAAMoI,WAAWL,GACN,WAAZy8C,IACPz8C,EAAQA,EAAMmQ,cAEVnQ,EAD4B,OAA5B/H,EAAMoI,WAAWL,GACToK,QAAQnS,EAAMoI,WAAWL,IAEA,SAAxBA,EAAMmQ,eAGhBnQ,CACX,IA8kBJ,SAAS0nE,EAAkBC,EAAa3hB,EAAWh/B,GAC/C,OAAOogD,EAAO/sE,OAAO,CACjBoF,KAAM,SAASorB,EAAQw8C,EAAU5oE,GAC7B,IAAIc,EAAOjI,KAEX8vE,EAAO/nE,GAAGI,KAAKoC,KAAKtC,EAAMsrB,EAAO1nB,QAAQ,GAAIkkE,EAAU5oE,GAEvDc,EAAKsrB,OAASA,EACdtrB,EAAKqoE,aAAeroE,EAAKsoE,YAAY/mE,KAAKvB,GAC1CA,EAAKuoE,WAAavoE,EAAKwoE,UAAUjnE,KAAKvB,GACtCA,EAAKyoE,YAAczoE,EAAK0oE,WAAWnnE,KAAKvB,EAC5C,EAEA0oE,WAAY,SAAShsE,GACjBisE,EAAYjsE,EAAEwqC,KAAK,GAAIxqC,EAAEyJ,KAAMpO,KAAK6wE,IAAIlsE,EAAEwnB,IAAK,CAACxnB,EAAEyJ,MAAMgQ,OAAOpe,KAAK+vE,SAASM,GAAaZ,YAC9F,EAEAc,YAAa,SAAS5rE,GAClB,IAAIiF,EACApC,EACA+rB,EAASvzB,KAAKuzB,OACd24B,EAAQvnD,EAAEmsE,cAAgBv9C,EAAO24B,QAErC,IAAKtiD,EAAM,EAAGpC,EAAS0kD,EAAM1kD,OAAQoC,EAAMpC,EAAQoC,IAC/CmnE,EAAkB7kB,EAAMtiD,IAAM,EAEtC,EAEAinE,IAAK,SAAS1kD,GACVA,EAAKA,GAAMxrB,EAAM4pB,GACjB,IAAIymD,EAAM,CAAErwE,EAAM4pB,GAAI5pB,EAAM8pB,QAAQF,GAAI5pB,EAAMb,OAAOyqB,IAIrD,OAHAymD,EAAIxmE,OAAO7H,EAAE8yB,QAAQtJ,EAAI6kD,GAAM,GAC/BA,EAAI7mE,QAAQgiB,GAELxrB,EAAMs1B,oBAAoB+6C,EACrC,EAEAP,UAAW,SAAS9rE,GAChB,IAAIiF,EACApC,EAIAowB,EACAW,EAJAhF,EAASvzB,KAAKuzB,OACd24B,EAAQvnD,EAAEssE,YAAc19C,EAAO24B,QAC/Bz6B,EAAa8B,EAAOm7B,GAGpBwiB,EAAMvwE,EAAMyN,KAAKG,uBAErB,KAAI2iE,GAAOz/C,aAAsBy/C,IAM7BhlB,EAAM1kD,OAIN,IAHAowB,EAAOjzB,EAAEwsE,gBAAkB1/C,EAAWgD,WACtC8D,EAAUv4B,KAAK+vE,SAASM,GAAaZ,WAEhC7lE,EAAM,EAAGpC,EAASowB,EAAKpwB,OAAQoC,EAAMpC,EAAQoC,IAC1CsiD,EAAMtiD,IACNgnE,EAAY1kB,EAAMtiD,GAAMguB,EAAKhuB,GAAM5J,KAAK6wE,IAAIlsE,EAAEwnB,IAAK,CAACyL,EAAKhuB,IAAMwU,OAAOma,GAItF,EAEA5Z,QAAS,SAASha,GACd,IACIkJ,EAEA04B,EAAQ6qC,EAHRnpE,EAAOjI,KAEPuzB,EAAStrB,EAAKsrB,QAGlB5uB,EAAIA,GAAK,CAAC,GAEHyoC,SACHnlC,EAAKjG,UAELuxB,EAAO/pB,KAAK,cAAevB,EAAKqoE,cAChC/8C,EAAO/pB,KAAK,YAAavB,EAAKuoE,YAC9Bj9C,EAAO/pB,KAAK,aAAcvB,EAAKyoE,aAE/B7iE,EAAS5F,EAAK8nE,SAASM,GAAapgD,MAEhCsD,EAAOm7B,aAAsB/tD,EAAMyN,KAAKE,YAAcilB,EAAOm7B,IAAc7gD,IACvEA,aAAkBlN,EAAMyN,KAAKE,WAC7BilB,EAAO7D,GAAQ7hB,GACRA,GAAUA,EAAOi/D,YACxBv5C,EAAO7D,GAAQ7hB,EAAOi/D,cAEtBvmC,EAAS5lC,EAAM4pB,GAAG8mD,QAAU99C,aAAkB5yB,EAAM4pB,GAAG8mD,OACvDD,EAAczwE,EAAM4pB,GAAG+mD,aAAe/9C,aAAkB5yB,EAAM4pB,GAAG+mD,YAClD3wE,EAAM4pB,GAAGgnD,cAAgBh+C,aAAkB5yB,EAAM4pB,GAAGgnD,aAK/Dh+C,EAAOi+C,SAAS9iB,GAAWtgD,KAAKP,GAFhC0lB,EAAOm7B,GAAWtgD,KAAKP,GAKvB5F,EAAK8nE,SAASrnE,QAAU69B,GAAU6qC,IAClC79C,EAAO7qB,MAAM+oE,EAAwBxpE,EAAK8nE,SAASrnE,MAAMunB,MAAOsD,EAAOpsB,QAAQuqE,mBAKnG,EAEA1vE,QAAS,WACL,IAAIuxB,EAASvzB,KAAKuzB,OAElBA,EAAOtpB,OAAO,cAAejK,KAAKswE,cAClC/8C,EAAOtpB,OAAO,YAAajK,KAAKwwE,YAChCj9C,EAAOtpB,OAAO,aAAcjK,KAAK0wE,YACrC,GAER,CA7rBA1B,EAAQprD,KAAOksD,EAAO/sE,OAAO,CACzB4b,QAAS,SAAS7M,GACd9R,KAAK6L,QAAQ8Z,aAAa7T,EAAK9R,KAAK+vE,SAASnsD,KAAK9R,GAAKme,MAC3D,IAGJ++C,EAAQ/iE,IAAM6jE,EAAO/sE,OAAO,CACxBoF,KAAM,SAAS0D,EAASkkE,EAAU5oE,GAC9B2oE,EAAO/nE,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAASkkE,EAAU5oE,GAC7CnH,KAAK2oB,QAAU,CAAC,CACpB,EACAhK,QAAS,SAAS0O,GACd,IAAIxhB,EAAUlJ,EAAE3C,KAAK6L,SACjBmkE,EAAUhwE,KAAK+vE,SAAS9jE,IAAIohB,IACjBrtB,KAAK2oB,QAAQ0E,GAAa2iD,EAAQ//C,OAE7CpkB,EAAQwZ,SAASgI,GAEjBxhB,EAAQkhB,YAAYM,EAE5B,IAGJ2hD,EAAQ7hE,MAAQ2iE,EAAO/sE,OAAO,CAC1B4b,QAAS,SAAS7M,GACd9R,KAAK6L,QAAQsB,MAAM2E,GAAO9R,KAAK+vE,SAAS5iE,MAAM2E,GAAKme,OAAS,EAChE,IAGJ++C,EAAQlnD,QAAUgoD,EAAO/sE,OAAO,CAC5B4b,QAAS,WACD3e,KAAK+vE,SAASjoD,QAAQmI,MACtBjwB,KAAK6L,QAAQs8B,gBAAgB,YAE7BnoC,KAAK6L,QAAQ8Z,aAAa,WAAY,WAE9C,IAGJqpD,EAAQ2C,SAAW7B,EAAO/sE,OAAO,CAC9B4b,QAAS,WACA3e,KAAK+vE,SAAS4B,SAAS1hD,MACvBjwB,KAAK6L,QAAQ8Z,aAAa,WAAY,YAEtC3lB,KAAK6L,QAAQs8B,gBAAgB,WAEtC,IAGH6mC,EAAQ52C,SAAW03C,EAAO/sE,OAAO,CAC7B4b,QAAS,WACD3e,KAAK+vE,SAAS33C,SAASnI,MACvBjwB,KAAK6L,QAAQ8Z,aAAa,WAAY,YAEtC3lB,KAAK6L,QAAQs8B,gBAAgB,WAErC,IAGJ6mC,EAAQ3kE,OAASylE,EAAO/sE,OAAO,CAC3BoF,KAAM,SAAS0D,EAASkkE,EAAU5oE,GAC9B2oE,EAAO/nE,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAASkkE,EAAU5oE,GAC7CnH,KAAK0J,SAAW,CAAC,CACrB,EAEAiV,QAAS,SAAS7M,GACd,IAAIjG,EAAUlJ,EAAE3C,KAAK6L,SACjBmkE,EAAUhwE,KAAK+vE,SAAS1lE,OAAOyH,GAC/BhI,EAAU9J,KAAK0J,SAASoI,GAExBhI,GACA+B,EAAQutB,IAAItnB,EAAKhI,GAGrBA,EAAU9J,KAAK0J,SAASoI,GAAOk+D,EAAQ//C,MAEvCpkB,EAAQge,GAAG/X,EAAKk+D,EAAQniE,OAAQ/D,EACpC,EAEA9H,QAAS,WACL,IACI8H,EADA+B,EAAUlJ,EAAE3C,KAAK6L,SAGrB,IAAK/B,KAAW9J,KAAK0J,SACjBmC,EAAQutB,IAAItvB,EAAS9J,KAAK0J,SAASI,GAE3C,IAGJklE,EAAQluC,KAAOgvC,EAAO/sE,OAAO,CACzB4b,QAAS,WACL,IAAImiB,EAAO9gC,KAAK+vE,SAASjvC,KAAK7Q,MAC1B2hD,EAAa5xE,KAAK6L,QAAQspB,aAAa,QAAUx0B,EAAMwrB,GAAK,WAAa,GACjE,MAAR2U,IACAA,EAAO,IAGXn+B,EAAE3C,KAAK6L,SAASi1B,KAAKngC,EAAM8Q,SAASqvB,EAAM8wC,GAC9C,IAGJ5C,EAAQhiE,QAAU8iE,EAAO/sE,OAAO,CAC5B4b,QAAS,WACD3e,KAAK+vE,SAAS/iE,QAAQijB,MACtBjwB,KAAK6L,QAAQsB,MAAME,QAAU,GAE7BrN,KAAK6L,QAAQsB,MAAME,QAAU,MAErC,IAGJ2hE,EAAQ6C,UAAY/B,EAAO/sE,OAAO,CAC9B4b,QAAS,WACA3e,KAAK+vE,SAAS8B,UAAU5hD,MAGzBjwB,KAAK6L,QAAQsB,MAAME,QAAU,OAF7BrN,KAAK6L,QAAQsB,MAAME,QAAU,EAIrC,IAGJ2hE,EAAQ3+D,KAAOy/D,EAAO/sE,OAAO,CACzB4b,QAAS,WACL3e,KAAK6L,QAAQkT,UAAY/e,KAAK+vE,SAAS1/D,KAAK4f,KAChD,IAGJ++C,EAAQtmE,MAAQunE,EAAYltE,OAAO,CAC/BoF,KAAM,SAAS0D,EAASkkE,EAAU5oE,GAC9B8oE,EAAYloE,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAASkkE,EAAU5oE,GAElDnH,KAAKu/D,QAAUv/D,KAAKu+C,OAAO/0C,KAAKxJ,MAChCA,KAAKyJ,UAAYtC,EAAQ2qE,aAAe50B,EAExCv6C,EAAE3C,KAAK6L,SAASge,GAAG7pB,KAAKyJ,UAAWzJ,KAAKu/D,SAExCv/D,KAAK+xE,aAAc,CACvB,EAEAxzB,OAAQ,WACJv+C,KAAK+xE,YAAc/xE,KAAKyJ,WAAayzC,EAErCl9C,KAAK+vE,SAASd,GAAO/+C,IAAIlwB,KAAKkwE,eAE9BlwE,KAAK+xE,aAAc,CACvB,EAEApzD,QAAS,WACL,IAAK3e,KAAK+xE,YAAa,CACnB,IAAIrpE,EAAQ1I,KAAK+vE,SAASd,GAAOh/C,MAEpB,MAATvnB,IACAA,EAAQ,IAGZ,IAAIhD,EAAO1F,KAAKmlD,WAEJ,QAARz/C,EACAgD,EAAQ/H,EAAM8Q,SAAS/I,EAAO,cACf,kBAARhD,IACPgD,EAAQ/H,EAAM8Q,SAAS/I,EAAO,wBAGlC1I,KAAK6L,QAAQnD,MAAQA,CACzB,CAEA1I,KAAK+xE,aAAc,CACvB,EAEA/vE,QAAS,WACLW,EAAE3C,KAAK6L,SAASutB,IAAIp5B,KAAKyJ,UAAWzJ,KAAKu/D,QAC7C,IAGJyP,EAAQnhE,OAASiiE,EAAO/sE,OAAO,CAC3BoF,KAAM,SAAS0D,EAASkkE,EAAU5oE,GAC9B2oE,EAAO/nE,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAASkkE,EAAU5oE,GAE7C,IAAI0G,EAAS7N,KAAK+vE,SAASliE,OAAOoiB,MAE9BpiB,aAAkBlN,EAAMyN,KAAKE,aAAmC,IAArBnH,EAAQ6qE,UACnDnkE,EAAOu4D,OAEf,EAEAznD,QAAS,SAASha,GACd,IAAIsD,EAAOjI,KACP6N,EAAS5F,EAAK8nE,SAASliE,OAAOoiB,MAE9BpiB,aAAkBM,GAAmBN,aAAkBlN,EAAMyN,KAAKE,WAGlD,QAFhB3J,EAAIA,GAAK,CAAC,GAEJyoC,OACFnlC,EAAKuF,IAAI7I,EAAE2U,MAAO3U,EAAEunD,OACD,UAAZvnD,EAAEyoC,OACTnlC,EAAKoE,OAAO1H,EAAE2U,MAAO3U,EAAEunD,OACJ,cAAZvnD,EAAEyoC,QACTnlC,EAAKkI,SAGTlI,EAAKkI,QAEb,EAEAsmB,UAAW,WACP,IAAI5qB,EAAU7L,KAAK6L,QASnB,MAPsC,SAAlCA,EAAQssB,SAAStf,gBACZhN,EAAQ2+D,QAAQ,IACjB3+D,EAAQoT,YAAYtP,SAASkP,cAAc,UAE/ChT,EAAUA,EAAQ2+D,QAAQ,IAGvB3+D,CACX,EAEAuE,SAAU,WACN,IAAIjJ,EAAUnH,KAAKmH,QACfiJ,EAAWjJ,EAAQiJ,SACnB+nB,EAAWn4B,KAAKy2B,YAAY0B,SAAStf,cAuBzC,OArBKzI,IAGOA,EAFQ,UAAZ+nB,EACIhxB,EAAQ8qE,YAAc9qE,EAAQulE,UAClBt+D,IACR,MAAM8jE,EAAYvxE,EAAM6uB,OAAOroB,EAAQ8qE,YAAc9qE,EAAQulE,UAA3C/rE,CAAsDyN,GAClE+jE,EAAYxxE,EAAM6uB,OAAOroB,EAAQulE,WAAavlE,EAAQ8qE,WAA1CtxE,CAAsDyN,GACxE,MAAO,kBAAkB2gE,EAAOmD,OAAenD,EAAOoD,aAAqB,EAGnE/jE,GAAS,WAAW2gE,EAAO3gE,cAExB,SAAZ+pB,EACK/pB,GAAS,WAAW2gE,EAAO3gE,eACpB,MAAZ+pB,GAAgC,MAAZA,EACf/pB,GAAS,OAAO2gE,EAAO3gE,UAEvBA,GAAS,GAAG2gE,EAAO3gE,KAEnCgC,EAAWzP,EAAMyP,SAASA,IAGvBA,CACX,EAEA5C,IAAK,SAAS8L,EAAO4yC,GACjB,IACI3zB,EACA3uB,EACApC,EACAq8B,EAJAh4B,EAAU7L,KAAKy2B,YAKfrvB,EAAQyE,EAAQumE,WAAU,GAC1BC,EAAYxmE,EAAQ0pC,SAASj8B,GAIjC,GAFA3W,EAAEyE,GAAOiJ,KAAK1P,EAAMwP,OAAOnQ,KAAKoQ,WAAY87C,IAExC9kD,EAAMmuC,SAAS/tC,OAGf,IAFA+wB,EAAUv4B,KAAK+vE,SAASliE,OAAO4hE,WAE1B7lE,EAAM,EAAGpC,EAAS0kD,EAAM1kD,OAAQoC,EAAMpC,EAAQoC,IAC/Ci6B,EAAQz8B,EAAMmuC,SAAS,GACvB1pC,EAAQymE,aAAazuC,EAAOwuC,GAAa,MACzCzB,EAAY/sC,EAAOqoB,EAAMtiD,GAAM5J,KAAKmH,QAAQwuB,MAAO,CAACu2B,EAAMtiD,IAAMwU,OAAOma,GAGnF,EAEAlsB,OAAQ,SAASiN,EAAO4yC,GACpB,IAAItiD,EAAKiC,EAAU7L,KAAKy2B,YAExB,IAAK7sB,EAAM,EAAGA,EAAMsiD,EAAM1kD,OAAQoC,IAAO,CACrC,IAAIi6B,EAAQh4B,EAAQ0pC,SAASj8B,GAC7By3D,EAAkBltC,GAAO,GACrBA,EAAMrd,YAAc3a,GACpBA,EAAQuT,YAAYykB,EAE5B,CACJ,EAEA1zB,OAAQ,WACJ,IACIooB,EACA3uB,EACApC,EAHAqG,EAAS7N,KAAK+vE,SAASliE,OAAOoiB,MAI9BpkB,EAAU7L,KAAKy2B,YACfrmB,EAAWpQ,KAAKoQ,WAEpB,GAAc,MAAVvC,EAYJ,GARIA,aAAkBlN,EAAMyN,KAAKE,aAC7BT,EAASA,EAAO+pB,QAGd/pB,aAAkBM,GAA8C,mBAA1BsD,EAASlH,KAAKsD,KACtDA,EAAS,CAACA,IAGV7N,KAAK+vE,SAAS3/D,UAKd,GAJAmiE,EAAsB1mE,GAAS,GAE/BlJ,EAAEkJ,GAASwE,KAAKrQ,KAAK+vE,SAAS3/D,SAASD,OAAOtC,IAE1ChC,EAAQ0pC,SAAS/tC,OAGjB,IAFA+wB,EAAUv4B,KAAK+vE,SAASliE,OAAO4hE,WAE1B7lE,EAAM,EAAGpC,EAASqG,EAAOrG,OAAQoC,EAAMpC,EAAQoC,IAChDgnE,EAAY/kE,EAAQ0pC,SAAS3rC,GAAMiE,EAAOjE,GAAM5J,KAAKmH,QAAQwuB,MAAO,CAAC9nB,EAAOjE,IAAMwU,OAAOma,SAIjG51B,EAAEkJ,GAASwE,KAAK1P,EAAMwP,OAAOC,EAAUvC,GAE/C,IAGJmhE,EAAQzpD,MAAQ,CACZitD,QAASvC,EAAYltE,OAAO,CACxBoF,KAAM,SAAS0D,EAASkkE,EAAU5oE,GAC9B8oE,EAAYloE,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAASkkE,EAAU5oE,GAClDnH,KAAKu/D,QAAUv/D,KAAKu+C,OAAO/0C,KAAKxJ,MAEhC2C,EAAE3C,KAAK6L,SAAS0yC,OAAOv+C,KAAKu/D,QAChC,EAEAhhB,OAAQ,WACJ,IAAI1yC,EAAU7L,KAAK6L,QACfnD,EAAQ1I,KAAK0I,QAEjB,GAAoB,SAAhBmD,EAAQnG,KACRgD,EAAQ1I,KAAKkwE,cACblwE,KAAK+vE,SAASX,GAASl/C,IAAIxnB,QACxB,GAAoB,YAAhBmD,EAAQnG,KAAoB,CACnC,IACI4T,EADAzL,EAAS7N,KAAK+vE,SAASX,GAASn/C,MAGpC,GAAIpiB,aAAkBM,EAAiB,CAEnC,IADAzF,EAAQ1I,KAAKkwE,yBACQvhE,MACjB,IAAK,IAAIpH,EAAI,EAAGA,EAAIsG,EAAOrG,OAAQD,IAC/B,GAAIsG,EAAOtG,aAAcoH,OAASd,EAAOtG,KAAQmB,EAAO,CACpD4Q,EAAQ/R,EACR,KACJ,OAGJ+R,EAAQzL,EAAO8H,QAAQjN,GAEvB4Q,GAAS,EACTzL,EAAOrD,OAAO8O,EAAO,GAErBzL,EAAOlM,KAAK+G,EAEpB,MACI1I,KAAK+vE,SAASX,GAASl/C,IAAIxnB,EAEnC,CACJ,EAEAiW,QAAS,WACL,IAAIjW,EAAQ1I,KAAK+vE,SAASX,GAASn/C,MAC/BpiB,EAASnF,EACThD,EAAO1F,KAAKmlD,WACZt5C,EAAU7L,KAAK6L,QAEnB,GAAoB,YAAhBA,EAAQnG,KACR,GAAImI,aAAkBM,EAAiB,CACnC,IAAImL,GAAS,EAEb,IADA5Q,EAAQ1I,KAAKkwE,yBACQvhE,MACjB,IAAK,IAAIpH,EAAI,EAAGA,EAAIsG,EAAOrG,OAAQD,IAC/B,GAAIsG,EAAOtG,aAAcoH,OAASd,EAAOtG,KAAQmB,EAAO,CACpD4Q,EAAQ/R,EACR,KACJ,OAGJ+R,EAAQzL,EAAO8H,QAAQjN,GAE3BmD,EAAQ2mE,QAAWl5D,GAAS,CAChC,MACIzN,EAAQ2mE,QAAU3kE,MAEC,SAAhBhC,EAAQnG,OACH,QAARA,EACAgD,EAAQ/H,EAAM8Q,SAAS/I,EAAO,cACf,kBAARhD,IACPgD,EAAQ/H,EAAM8Q,SAAS/I,EAAO,wBAG9BA,SAAmDmD,EAAQnD,QAAUA,EAAM+I,WAC3E5F,EAAQ2mE,SAAU,EAElB3mE,EAAQ2mE,SAAU,EAG9B,EAEA9pE,MAAO,WACH,IAAImD,EAAU7L,KAAK6L,QACfnD,EAAQmD,EAAQnD,MAMpB,MAJoB,YAAhBmD,EAAQnG,OACRgD,EAAQmD,EAAQ2mE,SAGb9pE,CACX,EACA1G,QAAS,WACLW,EAAE3C,KAAK6L,SAASutB,IAAI8jB,EAAQl9C,KAAKu/D,QACrC,KAIRyP,EAAQzoC,OAAS,CACb14B,OAAQmhE,EAAQnhE,OAAO9K,OAAO,CAC1B4b,QAAS,SAASha,GACd,IAAIsD,EAAOjI,KACP6N,EAAS5F,EAAK8nE,SAASliE,OAAOoiB,MAElC,GAAIpiB,aAAkBM,GAAmBN,aAAkBlN,EAAMyN,KAAKE,YAElE,GAAgB,QADhB3J,EAAIA,GAAK,CAAC,GACJyoC,OACFnlC,EAAKuF,IAAI7I,EAAE2U,MAAO3U,EAAEunD,YACjB,GAAgB,UAAZvnD,EAAEyoC,OACTnlC,EAAKoE,OAAO1H,EAAE2U,MAAO3U,EAAEunD,YACpB,IAAgB,cAAZvnD,EAAEyoC,QAA0BzoC,EAAEyoC,SAAWxqC,KAChDqF,EAAKkI,SACDlI,EAAK8nE,SAASrnE,OACVT,EAAK8nE,SAASrnE,OAAO,CACrB,IAAIknB,EAAM6hD,EAAwBxpE,EAAK8nE,SAASrnE,MAAMunB,MAAOttB,EAAEsF,EAAK4D,SAASuC,KAAK,eACtE,OAARwhB,EACA3nB,EAAK4D,QAAQ4mE,eAAiB,EAE9BxqE,EAAK4D,QAAQnD,MAAQknB,CAE7B,OAIR3nB,EAAKkI,QAEb,IAEJzH,MAAOunE,EAAYltE,OAAO,CACtBoF,KAAM,SAASd,EAAQ0oE,EAAU5oE,GAC7B8oE,EAAYloE,GAAGI,KAAKoC,KAAKvK,KAAMqH,EAAQ0oE,EAAU5oE,GAEjDnH,KAAKu/D,QAAUv/D,KAAKu+C,OAAO/0C,KAAKxJ,MAChC2C,EAAE3C,KAAK6L,SAAS0yC,OAAOv+C,KAAKu/D,QAChC,EAEA2Q,YAAa,WACT,IAEIxnE,EAAOwsB,EAAQtrB,EAAKpC,EAFpB29C,EAAWnlD,KAAKmlD,WAChB9rC,EAAS,GAEb,IAAKzP,EAAM,EAAGpC,EAASxH,KAAK6L,QAAQ1E,QAAQK,OAAQoC,EAAMpC,EAAQoC,KAC9DsrB,EAASl1B,KAAK6L,QAAQ1E,QAAQyC,IAEnB8oE,WAIHhqE,GAHJA,EAAQwsB,EAAO+0B,WAAWvhD,QAEbA,EAAMqiE,UACP71C,EAAOxsB,MAEPwsB,EAAO4L,KAGnBznB,EAAO1X,KAAK3B,KAAKmwE,YAAYznE,EAAOy8C,KAG5C,OAAO9rC,CACX,EAEAklC,OAAQ,WACJ,IAEI1wC,EAGAqnB,EACAy9C,EACAjqE,EACAkB,EACApC,EATA6R,EAAS,GACTxN,EAAU7L,KAAK6L,QAEfka,EAAQ/lB,KAAKmH,QAAQ8qE,YAAcjyE,KAAKmH,QAAQulE,UAChDkG,EAAiB5yE,KAAKmH,QAAQyrE,eAOlC,IAAKhpE,EAAM,EAAGpC,EAASqE,EAAQ1E,QAAQK,OAAQoC,EAAMpC,EAAQoC,KACzDsrB,EAASrpB,EAAQ1E,QAAQyC,IAEd8oE,WAIHhqE,GAHJA,EAAQwsB,EAAO+0B,WAAWvhD,QAEbA,EAAMqiE,UACP71C,EAAOxsB,MAEPwsB,EAAO4L,KAGf/a,EACA1M,EAAO1X,KAAK+G,GAEZ2Q,EAAO1X,KAAK3B,KAAKmwE,YAAYznE,EAAO1I,KAAKmlD,cAMrD,GAAIp/B,EAMA,KALAlY,EAAS7N,KAAK+vE,SAASliE,OAAOoiB,iBACRtvB,EAAMyN,KAAKE,aAC7BT,EAASA,EAAO+pB,QAGf+6C,EAAa,EAAGA,EAAat5D,EAAO7R,OAAQmrE,IAC7C,IAAK/oE,EAAM,EAAGpC,EAASqG,EAAOrG,OAAQoC,EAAMpC,EAAQoC,IAAO,CACvD,IAAIipE,EAAchlE,EAAOjE,GAAKqmB,IAAIlK,GAElC,GADa1T,OAAOwgE,KAAiBx5D,EAAOs5D,GACjC,CACPt5D,EAAOs5D,GAAc9kE,EAAOjE,GAC5B,KACJ,CACJ,EAIRlB,EAAQ1I,KAAK+vE,SAASd,GAAOh/C,iBACR9hB,EACjBzF,EAAM8B,OAAOpC,MAAMM,EAAO,CAAC,EAAGA,EAAMlB,QAAQ4W,OAAO/E,IAC3Cu5D,KAAmBlqE,aAAiB+iD,GAA8B,OAAV/iD,GAAkBA,IAAU9F,IAAgBmjB,EAG5G/lB,KAAK+vE,SAASd,GAAO/+C,IAAI7W,EAAO,GAAG4W,IAAIlK,IAFvC/lB,KAAK+vE,SAASd,GAAO/+C,IAAI7W,EAAO,GAIxC,EACAsF,QAAS,WACL,IAAIm0D,EAQAC,EAPAlnE,EAAU7L,KAAK6L,QACf1E,EAAU0E,EAAQ1E,QAClBuB,EAAQ1I,KAAK+vE,SAASd,GAAOh/C,MAC7B5W,EAAS3Q,EACTqd,EAAQ/lB,KAAKmH,QAAQ8qE,YAAcjyE,KAAKmH,QAAQulE,UAEhDhnE,EAAO1F,KAAKmlD,WAGV9rC,aAAkBlL,IACpBkL,EAAS,IAAIlL,EAAgB,CAACzF,KAGlCmD,EAAQ4mE,eAAiB,EAEzB,IAAK,IAAIE,EAAa,EAAGA,EAAat5D,EAAO7R,OAAQmrE,IAcjD,IAbAjqE,EAAQ2Q,EAAOs5D,GAGX5sD,GAASrd,aAAiB+iD,IAC1B/iD,EAAQA,EAAMunB,IAAIlK,IAGV,QAARrgB,EACAgD,EAAQ/H,EAAM8Q,SAAS4H,EAAOs5D,GAAa,cAC5B,kBAARjtE,IACPgD,EAAQ/H,EAAM8Q,SAAS4H,EAAOs5D,GAAa,wBAG1CG,EAAc,EAAGA,EAAc3rE,EAAQK,OAAQsrE,IAG5B,MAFpBC,EAAc5rE,EAAQ2rE,GAAapqE,QAEC,KAAVA,IACtBqqE,EAAc5rE,EAAQ2rE,GAAahyC,MAG1B,MAATp4B,GAAiBqqE,GAAerqE,EAAM+I,aACtCtK,EAAQ2rE,GAAaJ,UAAW,GACxB,EAIxB,EACA1wE,QAAS,WACLW,EAAE3C,KAAK6L,SAASutB,IAAI8jB,EAAQl9C,KAAKu/D,QACrC,KAwHRyP,EAAQz7C,OAAS,CACblpB,OAAQylE,EAAO/sE,OAAO,CAClBoF,KAAM,SAASorB,EAAQw8C,EAAU5oE,GAC7B2oE,EAAO/nE,GAAGI,KAAKoC,KAAKvK,KAAMuzB,EAAO1nB,QAAQ,GAAIkkE,EAAU5oE,GACvDnH,KAAKuzB,OAASA,EACdvzB,KAAK0J,SAAW,CAAC,CACrB,EAEAiV,QAAS,SAAS7M,GACd,IAAIk+D,EAAUhwE,KAAK+vE,SAAS1lE,OAAOyH,GAC/BhI,EAAU9J,KAAK0J,SAASoI,GAExBhI,GACA9J,KAAKuzB,OAAOtpB,OAAO6H,EAAKhI,GAG5BA,EAAUkmE,EAAQ//C,MAElBjwB,KAAK0J,SAASoI,GAAO,SAASnN,GAC1BA,EAAEyJ,KAAO4hE,EAAQniE,OAEjB/D,EAAQnF,GAEJA,EAAEyJ,OAAS4hE,EAAQniE,eACZlJ,EAAEyJ,IAEjB,EAEApO,KAAKuzB,OAAO/pB,KAAKsI,EAAK9R,KAAK0J,SAASoI,GACxC,EAEA9P,QAAS,WACL,IAAI8H,EAEJ,IAAKA,KAAW9J,KAAK0J,SACjB1J,KAAKuzB,OAAOtpB,OAAOH,EAAS9J,KAAK0J,SAASI,GAElD,IAGJ0oE,QAAS1C,EAAO/sE,OAAO,CACnBoF,KAAM,SAASorB,EAAQw8C,EAAU5oE,GAC7B2oE,EAAO/nE,GAAGI,KAAKoC,KAAKvK,KAAMuzB,EAAO1nB,QAAQ,GAAIkkE,EAAU5oE,GAEvDnH,KAAKuzB,OAASA,EACdvzB,KAAKu/D,QAAUv/D,KAAKu+C,OAAO/0C,KAAKxJ,MAChCA,KAAKuzB,OAAO/pB,KAAK0zC,EAAQl9C,KAAKu/D,QAClC,EACAhhB,OAAQ,WACJv+C,KAAK+vE,SAASX,GAASl/C,IAAIlwB,KAAK0I,QACpC,EAEAiW,QAAS,WACL,IAAIiR,EAAM5vB,KAAK+vE,SAASX,GAASn/C,MAEP,UAAtBjwB,KAAK6L,QAAQnG,KACTkqB,IAAQhtB,EACR5C,KAAKuzB,OAAOy/C,MAAMpjD,EAAIne,aAAezR,KAAK0I,SAE1C1I,KAAKuzB,OAAOy/C,OAAM,GAGtBhzE,KAAKuzB,OAAOy/C,OAAc,IAARpjD,EAE1B,EAEAlnB,MAAO,WACH,IAAImD,EAAU7L,KAAK6L,QACfnD,EAAQmD,EAAQnD,MAMpB,MAJa,MAATA,GAA0B,OAATA,GAAuC,YAArB1I,KAAK6L,QAAQnG,OAChDgD,EAAQmD,EAAQ2mE,SAGb9pE,CACX,EAEA1G,QAAS,WACLhC,KAAKuzB,OAAOtpB,OAAOizC,EAAQl9C,KAAKu/D,QACpC,IAGJzpD,MAAOg6D,EAAO/sE,OAAO,CACjBoF,KAAM,SAASorB,EAAQw8C,EAAU5oE,GAC7B2oE,EAAO/nE,GAAGI,KAAKoC,KAAKvK,KAAMuzB,EAAO1nB,QAAQ,GAAIkkE,EAAU5oE,GACvDnH,KAAKu/D,QAAUv/D,KAAKu+C,OAAO/0C,KAAKxJ,MAChCA,KAAKuzB,OAASA,EACdvzB,KAAKuzB,OAAO/pB,KAAK0zC,EAAQl9C,KAAKu/D,QAClC,EAEAhhB,OAAQ,WACJv+C,KAAK+vE,SAASj6D,MAAMoa,IAAIlwB,KAAKuzB,OAAO0gC,QAAQn+C,MAChD,EAEA6I,QAAS,WACL,IACI7I,EAAQ9V,KAAK+vE,SAASj6D,MAAMma,MAC5BtkB,EAFO3L,KAEIuzB,OAAO0/C,OAFXjzE,KAEyBuzB,OAAO0/C,OAAOtnE,IAAM,KACxD3L,KAAKuzB,OAAO0gC,MAAM,CAAEn+C,MAAOA,EAAOnK,IAAKA,GAC3C,EAEA3J,QAAS,WACLhC,KAAKuzB,OAAOtpB,OAAOizC,EAAQl9C,KAAKu/D,QACpC,IAGJ5zD,IAAKmkE,EAAO/sE,OAAO,CACfoF,KAAM,SAASorB,EAAQw8C,EAAU5oE,GAC7B2oE,EAAO/nE,GAAGI,KAAKoC,KAAKvK,KAAMuzB,EAAO1nB,QAAQ,GAAIkkE,EAAU5oE,GACvDnH,KAAKu/D,QAAUv/D,KAAKu+C,OAAO/0C,KAAKxJ,MAChCA,KAAKuzB,OAASA,EACdvzB,KAAKuzB,OAAO/pB,KAAK0zC,EAAQl9C,KAAKu/D,QAClC,EAEAhhB,OAAQ,WACJv+C,KAAK+vE,SAASpkE,IAAIukB,IAAIlwB,KAAKuzB,OAAO0gC,QAAQtoD,IAC9C,EAEAgT,QAAS,WACL,IACIhT,EAAM3L,KAAK+vE,SAASpkE,IAAIskB,MACxBna,EAFO9V,KAEMuzB,OAAO0/C,OAFbjzE,KAE2BuzB,OAAO0/C,OAAOn9D,MAAQ,KAC5D9V,KAAKuzB,OAAO0gC,MAAM,CAAEn+C,MAAOA,EAAOnK,IAAKA,GAC3C,EAEA3J,QAAS,WACLhC,KAAKuzB,OAAOtpB,OAAOizC,EAAQl9C,KAAKu/D,QACpC,IAGJvyD,QAAS8iE,EAAO/sE,OAAO,CACnBoF,KAAM,SAASorB,EAAQw8C,EAAU5oE,GAC7B2oE,EAAO/nE,GAAGI,KAAKoC,KAAKvK,KAAMuzB,EAAO1nB,QAAQ,GAAIkkE,EAAU5oE,GAEvDnH,KAAKuzB,OAASA,CAClB,EAEA5U,QAAS,WACL,IAAI3R,EAAUhN,KAAK+vE,SAAS/iE,QAAQijB,MACpCjwB,KAAKuzB,OAAO3mB,QAAQ,GAAGO,MAAME,QAAUL,EAAU,GAAK,MAC1D,IAGJ6kE,UAAW/B,EAAO/sE,OAAO,CACrBoF,KAAM,SAASorB,EAAQw8C,EAAU5oE,GAC7B2oE,EAAO/nE,GAAGI,KAAKoC,KAAKvK,KAAMuzB,EAAO1nB,QAAQ,GAAIkkE,EAAU5oE,GAEvDnH,KAAKuzB,OAASA,CAClB,EAEA5U,QAAS,WACL,IAAIkzD,EAAY7xE,KAAK+vE,SAAS8B,UAAU5hD,MACxCjwB,KAAKuzB,OAAO3mB,QAAQ,GAAGO,MAAME,QAAUwkE,EAAY,OAAS,EAChE,IAGJqB,cAAepD,EAAO/sE,OAAO,CACzBoF,KAAM,SAASorB,EAAQw8C,EAAU5oE,GAC7B2oE,EAAO/nE,GAAGI,KAAKoC,KAAKvK,KAAMuzB,EAAO1nB,QAAQ,GAAIkkE,EAAU5oE,GAElDosB,EAAO2/C,eAIZ3/C,EAAO2/C,cAAcv0D,SACzB,IAGJmJ,QAASgoD,EAAO/sE,OAAO,CACnBoF,KAAM,SAASorB,EAAQw8C,EAAU5oE,GAC7B2oE,EAAO/nE,GAAGI,KAAKoC,KAAKvK,KAAMuzB,EAAO1nB,QAAQ,GAAIkkE,EAAU5oE,GAEvDnH,KAAKuzB,OAASA,EACdvzB,KAAK2xE,SAAW3xE,KAAK6L,QAAQsnE,QACjC,EAEAx0D,QAAS,WACD3e,KAAKuzB,OAAOpL,QACZnoB,KAAKuzB,OAAOpL,OAAOnoB,KAAK+vE,SAASjoD,QAAQmI,OAEzCjwB,KAAK2xE,UAAY3xE,KAAKuzB,OAAOo+C,UAC7B3xE,KAAKuzB,OAAOo+C,SAAS3xE,KAAK2xE,SAElC,IAGJv5C,SAAU03C,EAAO/sE,OAAO,CACpBoF,KAAM,SAASorB,EAAQw8C,EAAU5oE,GAC7B2oE,EAAO/nE,GAAGI,KAAKoC,KAAKvK,KAAMuzB,EAAO1nB,QAAQ,GAAIkkE,EAAU5oE,GAEvDnH,KAAKuzB,OAASA,CAClB,EAEA5U,QAAS,WACD3e,KAAKuzB,OAAOpL,QACZnoB,KAAKuzB,OAAOpL,QAAQnoB,KAAK+vE,SAAS33C,SAASnI,MAEnD,IAGJpiB,OAAQuiE,EAAkB,SAAU,aAAc,iBAElD1nE,MAAOonE,EAAO/sE,OAAO,CACjBoF,KAAM,SAASorB,EAAQw8C,EAAU5oE,GAC7B2oE,EAAO/nE,GAAGI,KAAKoC,KAAKvK,KAAMuzB,EAAO1nB,QAAQ,GAAIkkE,EAAU5oE,GAEvDnH,KAAKuzB,OAASA,EACdvzB,KAAKu/D,QAAUv/D,KAAKu+C,OAAO/0C,KAAKxJ,MAChCA,KAAKuzB,OAAOrpB,MAAMgzC,EAAQl9C,KAAKu/D,SAE/B,IAAI72D,EAAQ1I,KAAK+vE,SAASrnE,MAAMunB,MAEhCjwB,KAAKozE,0BAA4BjsE,EAAQyrE,iBAA4B,MAATlqE,GAAiBA,aAAiB+iD,GAC9FzrD,KAAKqzE,wBAA0B3qE,aAAiByF,EAChDnO,KAAK+xE,aAAc,CACvB,EAEAuB,QAAS,WACL,IAAIzlE,EAEJ,OAAI7N,KAAKuzB,OAAOkrC,WACZ5wD,EAAS7N,KAAKuzB,OAAOkrC,aACP5wD,aAAkB49C,EACrB,CAAC59C,IAIZ7N,KAAK+vE,SAASliE,SACdA,EAAS7N,KAAK+vE,SAASliE,OAAOoiB,SAG7BpiB,GAAUA,aAAkBlN,EAAMyN,KAAKE,cACxCT,EAAS7N,KAAKuzB,OAAO9B,WAAWgD,YAG7B5mB,EACX,EAEA0wC,OAAQ,WACJ,IAIIo0B,EAAYY,EACZC,EAAYX,EACZjpE,EAAKpC,EAAQqG,EANbnF,EAAQ1I,KAAKuzB,OAAO7qB,QACpBqd,EAAQ/lB,KAAKmH,QAAQuqE,gBAAkB1xE,KAAKmH,QAAQssE,cACpDxwE,EAAmC,mBAAzBwO,EAASlH,KAAK7B,GACxBgrE,EAAqB1zE,KAAKozE,yBACD/5D,EAAS,GAMtC,GAFArZ,KAAK+xE,aAAc,EAEfhsD,EAEA,GAAc,KAAVrd,IAAiBgrE,GAAsB1zE,KAAKmH,QAAQyrE,gBACpDlqE,EAAQ,SACL,CAQH,IAPAmF,EAAS7N,KAAKszE,UAEVrwE,IACAswE,EAAc7qE,EAAMlB,OACpB6R,EAAS3Q,EAAM7B,MAAM,IAGpB+C,EAAM,EAAGpC,EAASqG,EAAOrG,OAAQoC,EAAMpC,EAAQoC,IAIhD,GAFAipE,GADAW,EAAa3lE,EAAOjE,IACKqmB,IAAIlK,GAEzB9iB,GACA,IAAK0vE,EAAa,EAAGA,EAAaY,EAAaZ,IAC3C,GAAIE,GAAex5D,EAAOs5D,GAAa,CACnCt5D,EAAOs5D,GAAca,EACrB,KACJ,OAED,GAAIX,GAAenqE,EAAO,CAC7BA,EAAQgrE,EAAqBF,EAAaX,EAC1C,KACJ,CAGAx5D,EAAO,KAEH3Q,EADA1I,KAAKqzE,wBACGh6D,EACDq6D,IAAuB3tD,EACtB1M,EAAO,GAEPA,EAAO,GAAG4W,IAAIlK,GAGlC,CAGJ/lB,KAAK+vE,SAASrnE,MAAMwnB,IAAIxnB,GACxB1I,KAAK+xE,aAAc,CACvB,EAEApzD,QAAS,WACL,IAAK3e,KAAK+xE,YAAa,CACnB,IAMavqE,EANT+rB,EAASvzB,KAAKuzB,OACdpsB,EAAUosB,EAAOpsB,QACjBulE,EAAYvlE,EAAQssE,cACpBxB,EAAa9qE,EAAQuqE,gBAAkBhF,EACvChkE,EAAQ1I,KAAK+vE,SAASrnE,MAAMunB,MAC5B6Q,EAAO35B,EAAQ25B,MAAQ,GACvBl3B,EAAM,EACNyP,EAAS,GAMb,GAJI3Q,IAAU9F,IACV8F,EAAQ,MAGRupE,EACA,GAAIvpE,aAAiByF,EAAiB,CAClC,IAAK3G,EAASkB,EAAMlB,OAAQoC,EAAMpC,EAAQoC,IACtCyP,EAAOzP,GAAOlB,EAAMkB,GAAKqmB,IAAIgiD,GAEjCvpE,EAAQ2Q,CACZ,MAAW3Q,aAAiB+iD,IACxB3qB,EAAOp4B,EAAMunB,IAAIy8C,GACjBhkE,EAAQA,EAAMunB,IAAIgiD,KAID,IAArB9qE,EAAQ6qE,UAAuB7qE,EAAQwsE,cAAepgD,EAAOqgD,UAAargD,EAAOqgD,SAASC,QAW1FtgD,EAAO7qB,MAAMA,IAVTgkE,IAAcuF,GAAenxC,IAC7BA,EAAOp4B,GAGNo4B,IAASp4B,GAAmB,IAAVA,IAAgBvB,EAAQyrE,eAG3Cr/C,EAAOugD,WAAWprE,EAAOo4B,GAFzBvN,EAAO7qB,MAAMA,GAOzB,CAEA1I,KAAK+xE,aAAc,CACvB,EAEA/vE,QAAS,WACLhC,KAAKuzB,OAAOtpB,OAAOizC,EAAQl9C,KAAKu/D,QACpC,IAEJwU,aAAc,CACVrrE,MAAOonE,EAAO/sE,OAAO,CACjBoF,KAAM,SAASorB,EAAQw8C,EAAU5oE,GAC7B2oE,EAAO/nE,GAAGI,KAAKoC,KAAKvK,KAAMuzB,EAAO1nB,QAAQ,GAAIkkE,EAAU5oE,GAEvDnH,KAAKuzB,OAASA,EACdvzB,KAAKu/D,QAAUv/D,KAAKu+C,OAAO/0C,KAAKxJ,MAChCA,KAAKuzB,OAAOrpB,MAAMgzC,EAAQl9C,KAAKu/D,SAC/Bv/D,KAAK+xE,aAAc,CACvB,EAEAxzB,OAAQ,WACJ,IAAIt2C,EAAOjI,KACPg0E,EAAY/rE,EAAK8nE,SAASd,GAAOh/C,MACjC2iD,EAAiB3qE,EAAKd,QAAQyrE,eAC9BqB,EAAehsE,EAAKsrB,OAAOi+C,SAASjrC,SACpC2tC,EAAqBjsE,EAAKsrB,OAAO4gD,uBAAyBlsE,EAAKsrB,OAAO6gD,iBAAoBnsE,EAAKsrB,OAAOi+C,SAAS/S,SAASwV,IAAiBhsE,EAAKsrB,OAAO7qB,QACrJsiC,EAAa4nC,IAAmD,IAAjC3qE,EAAKsrB,OAAOpsB,QAAQ6qE,SAAsB/pE,EAAKsrB,OAAO7qB,QAAUwrE,EAE/FnuD,EAAQ/lB,KAAKmH,QAAQuqE,gBAAkB1xE,KAAKmH,QAAQssE,cAMxD,GAJAzoC,EAAYA,EAAUnkC,MAAQmkC,EAAUnkC,MAAM,GAAKmkC,EAEnD/iC,EAAK8pE,aAAc,EAEfiC,aAAqB7lE,EAAiB,CAUtC,IATA,IAKIkmE,EACAC,EACAnW,EAPA9xD,EAAS,GACTwzC,EAAY7U,EAAUxjC,OACtBD,EAAI,EAAGwjC,EAAI,EACXwpC,EAAMP,EAAUzsE,GAMbgtE,IAAQ3xE,GAAa,CAExB,IADAu7D,GAAQ,EACHpzB,EAAI,EAAGA,EAAI8U,EAAW9U,IAUvB,GATI6nC,EACO5nC,EAAUD,IAAMwpC,GAIvBD,GAFAA,EAAWtpC,EAAUD,IAED9a,IAAMqkD,EAASrkD,IAAIlK,GAASuuD,KAC5BC,EAAItkD,IAAMskD,EAAItkD,IAAIlK,GAASwuD,GAGzC,CACNvpC,EAAUxgC,OAAOugC,EAAG,GACpB8U,GAAa,EACbse,GAAQ,EACR,KACJ,CAGCA,EAKD52D,GAAK,GAJL8E,EAAO1K,KAAK4yE,GACZC,EAAYR,EAAWzsE,EAAG,GAC1B8sE,EAAc9sE,GAKlBgtE,EAAMP,EAAUzsE,EACpB,CAEAitE,EAAYR,EAAWA,EAAUxsE,OAAQ,EAAGwjC,GAExC3+B,EAAO7E,QACPwsE,EAAU5pE,QAAQ,SAAU,CACxBgjC,OAAQ,SACR8e,MAAO7/C,EACPiN,MAAO+6D,IAIXrpC,EAAUxjC,QACVwsE,EAAU5pE,QAAQ,SAAU,CACxBgjC,OAAQ,MACR8e,MAAOlhB,EACP1xB,MAAO06D,EAAUxsE,OAAS,GAGtC,MACIS,EAAK8nE,SAASd,GAAO/+C,IAAI8a,GAG7B/iC,EAAK8pE,aAAc,CACvB,EAEApzD,QAAS,WACL,IAAK3e,KAAK+xE,YAAa,CACnB,IAKavqE,EAETitE,EAPAttE,EAAUnH,KAAKmH,QACfosB,EAASvzB,KAAKuzB,OACdxN,EAAQ5e,EAAQuqE,gBAAkBvqE,EAAQssE,cAC1C/qE,EAAQ1I,KAAK+vE,SAASrnE,MAAMunB,MAC5B7hB,EAAO1F,EACPkB,EAAM,EACNyP,EAAS,GAGb,GAAI0M,EACA,GAAIrd,aAAiByF,EAAiB,CAClC,IAAK3G,EAASkB,EAAMlB,OAAQoC,EAAMpC,EAAQoC,IACtC6qE,EAAgB/rE,EAAMkB,GACtByP,EAAOzP,GAAO6qE,EAAcxkD,IAAMwkD,EAAcxkD,IAAIlK,GAAS0uD,EAEjE/rE,EAAQ2Q,CACZ,MAAW3Q,aAAiB+iD,IACxB/iD,EAAQA,EAAMunB,IAAIlK,KAGD,IAArB5e,EAAQ6qE,WAAiD,IAA3B7qE,EAAQyrE,eACtCr/C,EAAOugD,WAAW1lE,EAAM1F,GAExB6qB,EAAO7qB,MAAMA,EAEtB,CACH,EAEA1G,QAAS,WACLhC,KAAKuzB,OAAOtpB,OAAOizC,EAAQl9C,KAAKu/D,QACpC,KAGRmV,MAAO,CACHnF,aAAca,EAAkB,eAAgB,eAAgB,8BAGpEgB,YAAa,CACT1oE,MAAOonE,EAAO/sE,OAAO,CACjBoF,KAAM,SAASorB,EAAQw8C,EAAU5oE,GAC7B2oE,EAAO/nE,GAAGI,KAAKoC,KAAKvK,KAAMuzB,EAAO1nB,QAAQ,GAAIkkE,EAAU5oE,GAEvDnH,KAAKuzB,OAASA,EACdvzB,KAAKu/D,QAAUv/D,KAAKu+C,OAAO/0C,KAAKxJ,MAChCA,KAAKuzB,OAAOrpB,MAAMgzC,EAAQl9C,KAAKu/D,SAC/Bv/D,KAAK+xE,aAAc,CACvB,EAEAxzB,OAAQ,WACJ,IAAIt2C,EAAOjI,KACPg0E,EAAY/rE,EAAK8nE,SAASd,GAAOh/C,MACjC2iD,EAAiB3qE,EAAKd,QAAQyrE,eAC9B5nC,EAAY4nC,EAAiB3qE,EAAKsrB,OAAO7qB,QAAUT,EAAKsrB,OAAOiB,YAE/DzO,EAAQ/lB,KAAKmH,QAAQuqE,gBAAkB1xE,KAAKmH,QAAQssE,cAMxD,GAJAzoC,EAAYA,EAAUnkC,MAAM,GAE5BoB,EAAK8pE,aAAc,EAEfiC,aAAqB7lE,EAAiB,CAYtC,IAXA,IAOIkmE,EACAC,EACAnW,EATA9xD,EAAS,GAETwzC,EAAY7U,EAAUxjC,OAEtBD,EAAI,EAAGwjC,EAAI,EACXwpC,EAAMP,EAAUzsE,GAMbgtE,IAAQ3xE,GAAa,CAExB,IADAu7D,GAAQ,EACHpzB,EAAI,EAAGA,EAAI8U,EAAW9U,IAUvB,GATI6nC,EACO5nC,EAAUD,IAAMwpC,GAIvBD,GAFAA,EAAWtpC,EAAUD,IAED9a,IAAMqkD,EAASrkD,IAAIlK,GAASuuD,KAC5BC,EAAItkD,IAAMskD,EAAItkD,IAAIlK,GAASwuD,GAGzC,CACNvpC,EAAUxgC,OAAOugC,EAAG,GACpB8U,GAAa,EACbse,GAAQ,EACR,KACJ,CAGCA,EAKD52D,GAAK,GAJL8E,EAAO1K,KAAK4yE,GACZC,EAAYR,EAAWzsE,EAAG,GAC1B8sE,EAAc9sE,GAKlBgtE,EAAMP,EAAUzsE,EACpB,CAEAitE,EAAYR,EAAWA,EAAUxsE,OAAQ,EAAGwjC,GAExC3+B,EAAO7E,QACPwsE,EAAU5pE,QAAQ,SAAU,CACxBgjC,OAAQ,SACR8e,MAAO7/C,EACPiN,MAAO+6D,IAIXrpC,EAAUxjC,QACVwsE,EAAU5pE,QAAQ,SAAU,CACxBgjC,OAAQ,MACR8e,MAAOlhB,EACP1xB,MAAO06D,EAAUxsE,OAAS,GAGtC,MACIS,EAAK8nE,SAASd,GAAO/+C,IAAI8a,GAG7B/iC,EAAK8pE,aAAc,CACvB,EAEApzD,QAAS,WACL,IAAK3e,KAAK+xE,YAAa,CACnB,IAKavqE,EAETitE,EAPAttE,EAAUnH,KAAKmH,QACfosB,EAASvzB,KAAKuzB,OACdxN,EAAQ5e,EAAQuqE,gBAAkBvqE,EAAQssE,cAC1C/qE,EAAQ1I,KAAK+vE,SAASrnE,MAAMunB,MAC5B7hB,EAAO1F,EACPkB,EAAM,EACNyP,EAAS,GAOb,GAJI3Q,IAAU9F,IACV8F,EAAQ,MAGRqd,EACA,GAAIrd,aAAiByF,EAAiB,CAClC,IAAK3G,EAASkB,EAAMlB,OAAQoC,EAAMpC,EAAQoC,IACtC6qE,EAAgB/rE,EAAMkB,GACtByP,EAAOzP,GAAO6qE,EAAcxkD,IAAMwkD,EAAcxkD,IAAIlK,GAAS0uD,EAEjE/rE,EAAQ2Q,CACZ,MAAW3Q,aAAiB+iD,IACxB/iD,EAAQA,EAAMunB,IAAIlK,KAID,IAArB5e,EAAQ6qE,WAAiD,IAA3B7qE,EAAQyrE,gBAA4Br/C,EAAOohD,WAGzEphD,EAAO7qB,MAAMA,GAFb6qB,EAAOugD,WAAW1lE,EAAM1F,EAIhC,CACJ,EAEA1G,QAAS,WACLhC,KAAKuzB,OAAOtpB,OAAOizC,EAAQl9C,KAAKu/D,QACpC,KAIRqV,UAAW,CACP/mE,OAAQuiE,EAAkB,SAAU,aAAc,iBAAiBrtE,OAAO,CACtE0tE,UAAW,SAAS9rE,GAChB,IAAIiF,EACApC,EAGA4G,EAAMmqB,EAFNhF,EAASvzB,KAAKuzB,OACdoF,EAAWh0B,EAAEssE,YAAc19C,EAAO24B,QAGtC,GAAIvzB,EAASnxB,OAIT,IAHA4G,EAAOzJ,EAAEwsE,gBAAkB59C,EAAOiB,YAClC+D,EAAUv4B,KAAK+vE,SAASliE,OAAO4hE,WAE1B7lE,EAAM,EAAGpC,EAAS4G,EAAK5G,OAAQoC,EAAMpC,EAAQoC,IAC9CgnE,EAAYj4C,EAAS/uB,GAAMwE,EAAKxE,GAAM5J,KAAK6wE,IAAIlsE,EAAEwnB,IAAK,CAAC/d,EAAKxE,IAAMwU,OAAOma,GAGrF,KAIRs8C,KAAM,CACFhnE,OAAQuiE,EAAkB,SAAU,aAAc,iBAAiBrtE,OAAO,CACtE0tE,UAAW,SAAS9rE,GAChB,IAAIiF,EACJpC,EAGA+wB,EACAnqB,EAHAmlB,EAASvzB,KAAKuzB,OACdoF,EAAWh0B,EAAEssE,YAAc19C,EAAO24B,QAIlC,GAAIvzB,EAASnxB,OAIT,IAHA4G,EAAOzJ,EAAEwsE,gBAAkB59C,EAAOiB,YAClC+D,EAAUv4B,KAAK+vE,SAASliE,OAAO4hE,WAE1B7lE,EAAM,EAAGpC,EAAS4G,EAAK5G,OAAQoC,EAAMpC,EAAQoC,IAC9CgnE,EAAYj4C,EAAS/uB,GAAMwE,EAAKxE,GAAM5J,KAAK6wE,IAAIlsE,EAAEwnB,IAAK,CAAC/d,EAAKxE,IAAMwU,OAAOma,GAGrF,KAIRu8C,MAAO,CACHh0C,KAAMgvC,EAAO/sE,OAAO,CAChBoF,KAAM,SAASorB,EAAQw8C,EAAU5oE,GAC7B2oE,EAAO/nE,GAAGI,KAAKoC,KAAKvK,KAAMuzB,EAAO1nB,QAAQ,GAAIkkE,EAAU5oE,GAEvDnH,KAAKuzB,OAASA,CAClB,EACA5U,QAAS,WACL,IAAImiB,EAAO9gC,KAAK+vE,SAASjvC,KAAK7Q,MAElB,MAAR6Q,IACAA,EAAO,IAEX9gC,KAAKuzB,OAAOuN,KAAKA,EACrB,MAKZ,IAAI0zC,EAAc,SAAS5pC,EAAKhhC,EAAKyC,EAAQmB,GAEzCnB,EAASA,GAAU,EAEnB,IAKIiN,EALAy7D,GAHJvnE,EAAMA,GAAO,IAGOhG,OAChB0xC,EAAYtO,EAAIpjC,OAEhBwtE,EAAU,GAAGnuE,MAAM0D,KAAKqgC,EAAKhhC,EAAMyC,GACnC4oE,EAAgBD,EAAQxtE,OAG5B,GAAIutE,EAAW,CAIX,IAHAA,EAAYnrE,EAAMmrE,EAClBz7D,EAAQ,EAED1P,EAAMmrE,EAAWnrE,IACpBghC,EAAIhhC,GAAO4D,EAAI8L,GACfA,IAGJsxB,EAAIpjC,OAASutE,CACjB,MAAO,GAAI1oE,EAIP,IAHAu+B,EAAIpjC,OAASoC,EAEbyC,GAAUzC,EACHA,EAAMyC,UACFu+B,IAAMv+B,GAIrB,GAAI4oE,EAAe,CAIf,IAHAA,EAAgBrrE,EAAMqrE,EACtB37D,EAAQ,EAED1P,EAAMqrE,EAAerrE,IACxBghC,EAAIhhC,GAAOorE,EAAQ17D,GACnBA,IAGJsxB,EAAIpjC,OAASytE,CACjB,CAIA,IAFArrE,EAAMghC,EAAIpjC,OAEHoC,EAAMsvC,UACFtO,EAAIhhC,GACXA,GAER,EAEIsrE,EAAgBttE,EAAM7E,OAAQ,CAC9BoF,KAAM,SAASd,EAAQF,GACnBnH,KAAKqH,OAASA,EACdrH,KAAKmH,QAAUA,EACfnH,KAAKm1E,UAAY,EACrB,EAEA3rE,KAAM,SAASumE,GACX,IAAIj+D,EACAsjE,EACAC,EACAC,EACAC,EACAC,EACAC,EAAgBz1E,gBAAgB01E,EAChCC,EAAkB31E,KAAKgvE,UAE3B,IAAKl9D,KAAOi+D,EACJj+D,GAAOm9D,EACPmG,GAAW,EACJtjE,GAAOo9D,EACdmG,GAAY,EACLvjE,GAAOq9D,GAAWsG,EAElB3jE,GAAOs9D,EACdmG,GAAa,EAnsDnB,OAosDazjE,EACP0jE,GAAS,EAETx1E,KAAK41E,aAAa9jE,EAAKi+D,EAAU4F,GANjCL,GAAY,EAShBD,GACAr1E,KAAK41E,aAAa1G,EAAQa,EAAU4F,GAGpCP,GACAp1E,KAAK41E,aAAa3G,EAAOc,EAAU4F,GAGnCJ,GACAv1E,KAAK41E,aAAaxG,EAASW,EAAU4F,GAGrCL,IAAcG,GACdz1E,KAAK41E,aAAazG,EAAQY,EAAU4F,GAGpCH,IAAWC,GACXz1E,KAAK41E,aA3tDP,MA2tDyB7F,EAAU4F,GAGjCF,GAAiBz1E,KAAKqH,QAAUrH,KAAKqH,OAAO6rE,eAC5ClzE,KAAK41E,aAAa,gBAAiB7F,EAAU4F,EAErD,EAEA3G,QAAS,WACL,OAAOA,EAAQhvE,KAAKqH,OAAO8wB,SAAStf,gBAAkB,CAAC,CAC3D,EAEA+8D,aAAc,SAASxzE,EAAM2tE,EAAU4F,GACnC,IAEIztC,EAFA2tC,EAASF,EAAgBvzE,IAAS4sE,EAAQ5sE,GAC1C+yE,EAAYn1E,KAAKm1E,UAEjBnF,EAAUD,EAAS3tE,GAEvB,GAAIyzE,EAKA,GAJAA,EAAS,IAAIA,EAAO71E,KAAKqH,OAAQ0oE,EAAU/vE,KAAKmH,SAEhDguE,EAAUxzE,KAAKk0E,GAEX7F,aAAmBV,EACnBuG,EAAOrsE,KAAKwmE,GACZmF,EAAUxzE,KAAKquE,QAEf,IAAK9nC,KAAa8nC,EACd6F,EAAOrsE,KAAKwmE,EAAS9nC,GACrBitC,EAAUxzE,KAAKquE,EAAQ9nC,SAG5B,GAAa,aAAT9lC,EACP,MAAM,IAAI4O,MAAM,OAAS5O,EAAO,oCAAsCpC,KAAKqH,OAAO8wB,SAAStf,cAAgB,WAEnH,EAEA7W,QAAS,WACL,IAAI4H,EACApC,EACA2tE,EAAYn1E,KAAKm1E,UAErB,IAAKvrE,EAAM,EAAGpC,EAAS2tE,EAAU3tE,OAAQoC,EAAMpC,EAAQoC,IACnDurE,EAAUvrE,GAAK5H,SAEvB,IAGA0zE,EAAsBR,EAAcnyE,OAAQ,CAC5CisE,QAAS,WACL,OAAOA,EAAQz7C,OAAOvzB,KAAKqH,OAAOF,QAAQ/E,KAAKyW,gBAAkB,CAAC,CACtE,EAEA+8D,aAAc,SAASxzE,EAAM2tE,EAAU4F,GACnC,IAEIztC,EAFA2tC,EAASF,EAAgBvzE,IAAS4sE,EAAQz7C,OAAOnxB,GACjD+yE,EAAYn1E,KAAKm1E,UAEjBnF,EAAUD,EAAS3tE,GAEvB,IAAIyzE,EAgBA,MAAM,IAAI7kE,MAAM,OAAS5O,EAAO,oCAAsCpC,KAAKqH,OAAOF,QAAQ/E,KAAO,WAVjG,GALAyzE,EAAS,IAAIA,EAAO71E,KAAKqH,OAAQ0oE,EAAU/vE,KAAKqH,OAAOF,SAEvDguE,EAAUxzE,KAAKk0E,GAGX7F,aAAmBV,EACnBuG,EAAOrsE,KAAKwmE,GACZmF,EAAUxzE,KAAKquE,QAEf,IAAK9nC,KAAa8nC,EACd6F,EAAOrsE,KAAKwmE,EAAS9nC,GACrBitC,EAAUxzE,KAAKquE,EAAQ9nC,GAMvC,IAWJ,IAAI4tC,EAAiB,wCACjBC,EAAmB,MAEvB,SAASC,EAAcxsE,GACnB,IACII,EACApC,EACAyuE,EACAC,EACApkE,EACApJ,EACAq+B,EAPAjwB,EAAS,CAAC,EAWd,IAAKlN,EAAM,EAAGpC,GAFdu/B,EAASv9B,EAAKkH,MAAMolE,IAEUtuE,OAAQoC,EAAMpC,EAAQoC,IAEhDssE,GADAD,EAAQlvC,EAAOn9B,IACI+L,QAAQ,KAE3B7D,EAAMmkE,EAAMjrE,UAAU,EAAGkrE,GAGF,MAFvBxtE,EAAQutE,EAAMjrE,UAAUkrE,EAAa,IAE3BprE,OAAO,KACbpC,EAAQstE,EAActtE,IAG1BoO,EAAOhF,GAAOpJ,EAGlB,OAAOoO,CACX,CAEA,SAASq/D,EAAepG,EAAUliE,EAAQnI,GACtC,IAAIsqE,EACAl5D,EAAS,CAAC,EAEd,IAAKk5D,KAAWD,EACZj5D,EAAOk5D,GAAW,IAAItqE,EAAKmI,EAAQkiE,EAASC,IAGhD,OAAOl5D,CACX,CAEA,SAAS85D,EAAY/kE,EAASgC,EAAQ8nB,EAAO4C,GAEzC,GAAK1sB,IAAWA,EAAQspB,aAAa,QAAUx0B,EAAMwrB,GAAK,QAA1D,CAIA,IACIviB,EAIAmmE,EAEA1oE,EAPAmpB,EAAO3kB,EAAQspB,aAAa,QAAUx0B,EAAMwrB,GAAK,QAEjD3iB,EAAOqC,EAAQspB,aAAa,QAAUx0B,EAAMwrB,GAAK,QACjDiqD,EAAe,GACf3uE,GAAO,EAEPN,EAAU,CAAC,EAGfoxB,EAAUA,GAAW,CAAC1qB,IAElB2iB,GAAQhnB,IACR6sE,EAAcxqE,GAAS,GAGvB2kB,IACAnpB,EAzER,SAA8BwE,EAAS8pB,GACnC,IAAIpC,EAAS5yB,EAAM+0B,WAAW7pB,EAAS,CAAC,EAAG8pB,GAE3C,GAAIpC,EACA,OAAO,IAAImiD,EAAoBniD,EAEvC,CAmEiB+iD,CAAqBzqE,EAAS8pB,IAGvCnsB,IACAA,EAAOwsE,EAAcxsE,EAAK/G,QAAQszE,EAAkB,KAE/C1uE,KACDF,EAAUxG,EAAM00B,aAAaxpB,EAAS,CAAE6gE,UAAW,GAAIuF,WAAY,GAAI7hE,SAAU,GAAI0hE,YAAa50B,EAAQ01B,gBAAgB,EAAOZ,UAAU,GAAQnkE,IAC3I8nB,MAAQA,EAChBtuB,EAAS,IAAI6tE,EAAcrpE,EAAS1E,IAGxCE,EAAOwG,OAASA,EAEhBkiE,EAAWoG,EAAe3sE,EAAM+uB,EAAS+2C,GAErCnoE,EAAQiJ,WACR2/D,EAAS3/D,SAAW,IAAIy/D,EAAgBt3C,EAAS,GAAIpxB,EAAQiJ,WAG7D2/D,EAAS7lD,QACT1gB,EAAKa,OAASb,EAAKa,QAAU,CAAC,EAC9Bb,EAAKa,OAAO6f,MAAQ1gB,EAAK0gB,MACzB6lD,EAAS7lD,MAAMloB,iBACR+tE,EAAS7lD,OAGhB6lD,EAASliE,SACTpG,GAAO,GAGP+B,EAAKoa,OACLmsD,EAASnsD,KAAOuyD,EAAe3sE,EAAKoa,KAAM2U,EAAS+2C,IAGnD9lE,EAAK2D,QACL4iE,EAAS5iE,MAAQgpE,EAAe3sE,EAAK2D,MAAOorB,EAAS+2C,IAGrD9lE,EAAKa,SACL0lE,EAAS1lE,OAAS8rE,EAAe3sE,EAAKa,OAAQkuB,EAASq3C,IAGvDpmE,EAAKyC,MACL8jE,EAAS9jE,IAAMkqE,EAAe3sE,EAAKyC,IAAKssB,EAAS+2C,IAGrDjoE,EAAOmC,KAAKumE,IAGZ1oE,IACAwE,EAAQgmB,mBAAqBxqB,GAGjC,IAAIkuC,EAAW1pC,EAAQ0pC,SACvB,GAAI9tC,GAAQ8tC,IAAa1pC,EAAQspB,aAAa,QAAUx0B,EAAMwrB,GAAK,QAAS,CAExE,IAAKviB,EAAM,EAAGA,EAAM2rC,EAAS/tC,OAAQoC,IACjCwsE,EAAaxsE,GAAO2rC,EAAS3rC,GAGjC,IAAKA,EAAM,EAAGA,EAAMwsE,EAAa5uE,OAAQoC,IACrCgnE,EAAYwF,EAAaxsE,GAAMiE,EAAQ8nB,EAAO4C,EAEtD,CAlFA,CAmFJ,CAEA,SAAS/uB,EAAK+sE,EAAKvqB,GACf,IAAIpiD,EACApC,EACA67B,EACA1N,EAAQh1B,EAAMs1B,oBAAoB,GAAGpvB,MAAM0D,KAAKjD,UAAW,IAK/D,IAHA0kD,EAASrrD,EAAMkuC,WAAWmd,GAGrBpiD,EAAM,EAAGpC,GAFd+uE,EAAM5zE,EAAE4zE,IAEmB/uE,OAAQoC,EAAMpC,EAAQoC,IAEvB,KADtBy5B,EAAOkzC,EAAI3sE,IACFksB,UACL86C,EAAYvtC,EAAM2oB,EAAQr2B,EAGtC,CAEA,SAAS0gD,EAAcxqE,EAAS2qE,GAC5B,IAAIC,EAAgB5qE,EAAQgmB,mBAc5B,GAZI4kD,IACAA,EAAcz0E,UAEVqtE,SACOxjE,EAAQgmB,mBACRhmB,EAAQs8B,gBACft8B,EAAQs8B,gBAAgB,sBAExBt8B,EAAQgmB,mBAAqB,MAIjC2kD,EAAe,CACf,IAAIjjD,EAAS5yB,EAAM41B,eAAe5zB,EAAEkJ,IAChC0nB,UAAiBA,EAAOvxB,UAAYiE,GACpCstB,EAAOvxB,SAEf,CACJ,CAEA,SAAS+uE,EAAkBllE,EAAS6qE,GAE3B7qE,IAILwqE,EAAcxqE,EAAS6qE,GAEvBnE,EAAsB1mE,EAAS6qE,GACnC,CAEA,SAASnE,EAAsB1mE,EAAS6qE,GACpC,IAAInhC,EAAW1pC,EAAQ0pC,SAEvB,GAAIA,EACA,IAAK,IAAI3rC,EAAM,EAAGpC,EAAS+tC,EAAS/tC,OAAQoC,EAAMpC,EAAQoC,IACtDmnE,EAAkBx7B,EAAS3rC,GAAM8sE,EAG7C,CAqBA,SAASjF,EAAwB/oE,EAAOupE,GACpC,IAEIzqE,EACA2nC,EAHA91B,EAAS,GACTzP,EAAM,EAIV,IAAKqoE,EACD,OAAOvpE,EAGX,GAAIA,aAAiByF,EAAiB,CAClC,IAAK3G,EAASkB,EAAMlB,OAAQoC,EAAMpC,EAAQoC,IACtCulC,EAAOzmC,EAAMkB,GACbyP,EAAOzP,GAAOulC,EAAKlf,IAAMkf,EAAKlf,IAAIgiD,GAAc9iC,EAAK8iC,GAEzDvpE,EAAQ2Q,CACZ,MAAW3Q,aAAiB+iD,IACxB/iD,EAAQA,EAAMunB,IAAIgiD,IAGtB,OAAOvpE,CACX,CAEA/H,EAAMsJ,OA1CN,SAAgBssE,GACZ,IAAI3sE,EAAKpC,EAIT,IAAKoC,EAAM,EAAGpC,GAFd+uE,EAAM5zE,EAAE4zE,IAEmB/uE,OAAQoC,EAAMpC,EAAQoC,IAC7CmnE,EAAkBwF,EAAI3sE,IAAM,EAEpC,EAmCAjJ,EAAM6I,KAAOA,EACb7I,EAAMyN,KAAK4gE,QAAUA,EACrBruE,EAAMyN,KAAK0hE,OAASA,EACpBnvE,EAAMi0B,OApCN,SAAgBrB,EAAQojD,GACpB,IAAI9qE,EAAU0nB,EAAO1nB,QACjB4qE,EAAgB5qE,EAAQ,GAAGgmB,mBAE3B4kD,GACAjtE,EAAKqC,EAAS4qE,EAAc5oE,OAAQ8oE,EAE5C,EA+BAh2E,EAAMkuC,WAAa,SAASmd,GAKxB,OAJMA,aAAkBP,IACpBO,EAAS,IAAIP,EAAiBO,IAG3BA,CACX,EAEArrD,EAAMi2E,oBAAsB,SAAS77D,GACjC,IAAI0W,EAAa9wB,EAAMyN,KAAKG,uBAAuB64C,OAAOrsC,GAwB1D,OANA0W,EAAW20C,QAhBX,SAASyQ,EAAczoE,GACnB,IAAI7G,EAAGguC,EAEP,IAAKhuC,EAAI,EAAGA,EAAI6G,EAAK5G,OAAQD,IACzB6G,EAAK7G,GAAGgkE,iBAERh2B,EAAWnnC,EAAK7G,GAAGguC,UAEV6wB,QAETh4D,EAAK7G,GAAG2kD,MAAQ3W,EAASnnC,OAEzByoE,EAAczoE,EAAK7G,GAAG2kD,MAE9B,CAIA2qB,CAAcplD,EAAWrjB,QAEzBqjB,EAAWmoC,MAAMkT,YAAcr7C,EAExBA,EAAWmoC,KACtB,CAEH,CArlED,CAqlEG94D,OAAOH,MAAM+G,QACF/G,OAWd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfijB,EAAOjjB,EAAMijB,KACb2G,EAAK5pB,EAAM4pB,GACX8O,EAAY14B,EAAM04B,UAElB/vB,GADoB3I,EAAM8vB,kBACb9vB,EAAM2I,YACnB8nB,EAASzwB,EAAM4pB,GAAG6G,OAClBb,EAAe5vB,EAAM4vB,aAGrB0vB,EAAO,OACP62B,EAAmB,kBACnBC,EAAiB,gBACjBC,EAAO,OACPC,EAAO,OAGPC,EAAoB,0BAIpBC,EAAa,YACbC,EAAsB,oBACtBC,EAAY,WACZC,EAAuB,qBACvBC,EAAQ,QACRC,EACS,YADTA,EAEM,SAFNA,EAGe,mBAHfA,EAIQ,WAJRA,EAKQ,WALRA,EAMQ,WAGRC,EAAO92E,EAAM4pB,GAAG6G,OAAOruB,OAAO,CAC9BoF,KAAM,SAASw+C,EAASx/C,GACpB,IAAIc,EAAOjI,KACXmH,EAAUA,GAAW,CAAC,EACtBc,EAAKooB,GAAK1vB,EAAMwvB,OAEhB7mB,EAAWvB,GAAGI,KAAKoC,KAAKtC,GACxBjI,KAAKmH,QAAUxE,EAAEI,OAAO,CAAC,EAAG/C,KAAKmH,QAASA,GAE1Cc,EAAK0+C,QAAUA,EAEX1+C,EAAKd,QAAQuwE,cACbtmD,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAMA,EAAK0vE,iBAAkBxwE,GAGjDc,EAAKd,QAAQywE,gBACb3vE,EAAK4vE,kBAGT5vE,EAAK4oB,QAAU1pB,EAAQ0pB,SAAW,MAClC5oB,EAAKihD,MAAQ/hD,EAAQ+hD,MACrBjhD,EAAK6vE,OAAyB,IAAjB3wE,EAAQwlB,KACrB3sB,KAAK+3E,cAAgB5wE,EAAQ6wE,eAAgB,EAC7Ch4E,KAAKi4E,cAAgB9wE,EAAQ+I,aAC7BjI,EAAKiwE,WAAa,CAAC,EAEnBjwE,EAAKuB,KAAK,CAAEy2C,EAAM+2B,EAAMC,EAAMH,EAAkBC,GAAkB5vE,EACtE,EAEAA,QAAS,CACL/E,KAAM,OACNs1E,cAAc,EACdE,gBAAgB,EAChBO,cAAc,EACdC,iBAAiB,GAGrBjoE,OAAQ,SAASsmB,GACb,IAAIxuB,EAAOjI,KACPq4E,GAAkBpwE,EAAK4D,QAsB3B,OAlBIwsE,IACApwE,EAAK4D,QAAU5D,EAAK0vE,kBAGpBlhD,GACA9zB,EAAE8zB,GAAW0jB,OAAOlyC,EAAK4D,SAGzBwsE,IACA13E,EAAM6I,KAAKvB,EAAK4D,QAAS5D,EAAKihD,OAC9BjhD,EAAKmC,QAAQ61C,IAGbxpB,IACAxuB,EAAKqwE,cA7EJ,UA8EDrwE,EAAKmC,QAAQ4sE,IAGV/uE,EAAK4D,OAChB,EAEAzE,MAAO,WACH,OAAO,IAAImxE,EAAUv4E,KACzB,EAEAw4E,kBAAmB,WACf,OAAO,CACX,EAEAC,kBAAmB,WACf,OAAO,CACX,EAEAC,UAAW,WACP,IACI7sE,EADO7L,KACQmQ,SAEftE,GACAA,EAAQI,IAAI,UAAW,IAG3BjM,KAAKoK,QAAQ+sE,EAAY,CAAEv/C,KAAM53B,MACrC,EAEA24E,QAAS,WACT,EAEAC,QAAS,WACL54E,KAAK0N,MACT,EAEA2tC,iBAAkB,SAAS31C,GACvB1F,KAAKoK,QAAQ0sE,EAAkB,CAAEpxE,KAAMA,GAC3C,EAEA41C,gBAAiB,SAAS51C,GACtB1F,KAAKoK,QAAQ2sE,EAAgB,CAAErxE,KAAMA,GACzC,EAEAgI,KAAM,WACE1N,KAAKmH,QAAQgxE,eACbn4E,KAAKs4E,cA3HJ,UA4HD31E,EAAE3C,KAAK6L,SAASgtE,UAGpB74E,KAAKoK,QAAQ6sE,EACjB,EAEAj1E,QAAS,WACL,IAAIiG,EAAOjI,KACP6L,EAAU5D,EAAK4D,QAEfA,IACAulB,EAAOrpB,GAAG/F,QAAQuI,KAAKtC,GAEvBtH,EAAMsJ,OAAO4B,GACblL,EAAMqB,QAAQ6J,GAEV5D,EAAKd,QAAQixE,iBACbvsE,EAAQQ,SAGpB,EAGAysE,MAAO,WACH,IAAI7wE,EAAOjI,KAEXiI,EAAKjG,UACLW,EAAEsF,EAAK4D,SAAS2B,IAAIvF,EAAK0+C,SAASn5C,IAAIvF,EAAK2E,SAASwsB,MAAM/sB,QAC9D,EAEA0sE,UAAW,SAASA,GAChBp2E,EAAEI,OAAO/C,KAAKk4E,WAAYa,EAC9B,EAEAT,cAAe,SAASU,GACpB,IAAK,IAAIxzD,KAAexlB,KAAKk4E,WACzBl4E,KAAKk4E,WAAW1yD,GAAawzD,GAAYh5E,KAAMwlB,EAEvD,EAEAmyD,eAAgB,WACZ,IAEI9rE,EACA86C,EAHA1+C,EAAOjI,KACP4M,EAAU,IAAM3E,EAAK4oB,QAAU,IAInC,IAjLK,YAkLD81B,EAAUhkD,EAAEgN,SAASspE,eAAehxE,EAAK0+C,UAAY1+C,EAAK0+C,UAE9C,GAAG91B,UACX81B,EAAUA,EAAQt2C,OAE1B,CAAE,MAAO1L,GACDuyE,EAAkB3pE,KAAK5I,EAAEssB,WACzB01B,EAAU1+C,EAAK0+C,QAEvB,CAEA,GAAuB,iBAAZA,EACPA,EAAUA,EAAQlkD,QAAQ,aAAc,IACpCwF,EAAK8vE,gBACLpxB,EAAUhmD,EAAMyP,SAASu2C,EAAS,CAAEz2C,aAAcjI,EAAKgwE,eAA7Ct3E,CAA8DsH,EAAKihD,OAAS,CAAC,IAG3Fr9C,EAAUlJ,EAAEiK,GAASutC,OAAOwM,GAMvB1+C,EAAK6vE,QACPjsE,EAAUA,EAAQqtE,gBAElB,CAEH,GADArtE,EAAU86C,EACN1+C,EAAK8vE,cAAe,CACpB,IAAIjhE,EAASnU,EAAEhC,EAAMyP,SAASzN,EAAE,WAAWw3C,OAAOtuC,EAAQzE,OAAM,IAAOiJ,OAAQ,CAAEH,aAAcjI,EAAKgwE,eAArFt3E,CAAsGsH,EAAKihD,OAAS,CAAC,IAGhIvmD,EAAE4yB,SAAS5lB,SAAU9D,EAAQ,KAC7BA,EAAQstE,YAAYriE,GAGxBjL,EAAUiL,CACd,CACI7O,EAAK6vE,QACLjsE,EAAUA,EAAQ6/C,QAAQ9+C,GAASD,SAE3C,CAEA,OAAOd,CACX,EAEAgsE,gBAAiB,WACb,IAAI5vE,EAAOjI,KAEPiI,EAAKd,QAAQywE,iBACb3vE,EAAKmxE,WACLnxE,EAAKoxE,iBACLpxE,EAAKqxE,gBACLrxE,EAAKsxE,gBAEb,EAEAH,SAAU,WACN,IAAInxE,EAAOjI,KACP2mD,EAAU1+C,EAAK0+C,QAEfA,EAAQ15C,GAAGsjB,EAAa,SACxBtoB,EAAK2E,QAAU3E,EAAK0+C,QAEpB1+C,EAAK2E,QAAU+5C,EACVh6B,KAAK,aAAehsB,EAAMwrB,GAAK,uBAAyBxrB,EAAMwrB,GAAK,oBAAsBxrB,EAAMwrB,GAAK,+BACpGxf,SAGT,IAAIC,EAAU3E,EAAK2E,QAEnBA,EAAQgX,KAAK,KAAM3b,EAAKooB,IAExBzjB,EAAQyY,SAASmyD,GACjB5qE,EAAQyY,SAASmyD,GACjB5qE,EAAQgX,KAAK,OAAQ,OACzB,EAEAy1D,eAAgB,WACZ,IACIzsE,EAAUjK,EADH3C,KACU4M,SACjB4sE,EAAkBjpD,EAAa,WAE9B3jB,EAAQ2oC,SAASikC,GAAiB,IACZ5sE,EAAQ2oC,WAAWhmB,QAAO,WAC7C,IAAIsU,EAAQlhC,EAAE3C,MACd,IAAK6jC,EAAM52B,GAAGsjB,EAAa,aAAesT,EAAM52B,GAAGsjB,EAAa,WAC5D,OAAOsT,CAEf,IAEiBlX,KAAK,QAAU/I,EAAK,QAAU,qBAInD5jB,KAAKy5E,eAAiB7sE,EAAQ2oC,SAAShlB,EAAa,YAEpDvwB,KAAKy5E,eACAp0D,SAASmyD,GACTnyD,SAASmyD,EAClB,EAEA8B,cAAe,WACX,IACI1sE,EADO5M,KACQ4M,QAEnB5M,KAAKomD,OAASx5C,EAAQ2oC,SAAShlB,EAAa,WAAWlL,SAASmyD,EACpE,EAEA+B,cAAe,WACX,IACI3sE,EADO5M,KACQ4M,QAEnB5M,KAAK05E,OAAS9sE,EAAQ2oC,SAAShlB,EAAa,WAAWlL,SAASmyD,EACpE,IAGAe,EAAY53E,EAAMiH,MAAM7E,OAAO,CAC/BoF,KAAM,SAASyvB,GACXj1B,EAAEI,OAAO/C,KAAM,CACX6L,QAAS+rB,EAAK/rB,QAAQzE,OAAM,GAC5BmrC,WAAY3a,EAAK2a,WACjBliB,GAAIuH,EAAKvH,KAGbuH,EAAK/rB,QAAQc,SAASwtC,OAAOn6C,KAAK6L,QACtC,EAEA+sE,QAAS,WACL54E,KAAK6L,QAAQQ,QACjB,EAEAgvC,iBAAkB14C,EAAEQ,KACpBm4C,gBAAiB34C,EAAEQ,OAGnBw2E,EAASlC,EAAK10E,OAAO,CACrBoF,KAAM,SAASw+C,EAASx/C,GACpBswE,EAAK1vE,GAAGI,KAAKoC,KAAKvK,KAAM2mD,EAASx/C,GACjCnH,KAAK45E,WAAa,CAAC,CACvB,EAEAnjD,UAAW,SAASpQ,GAChB,IAAIoQ,EAAYz2B,KAAK45E,WAAWvzD,GAOhC,OALKoQ,IACDA,EAAYz2B,KAAK65E,iBAAiBxzD,GAClCrmB,KAAK45E,WAAWvzD,GAAYoQ,GAGzBA,CACX,EAEAqjD,OAAQ,SAASzzD,EAAUuR,EAAM2a,GAC7BvyC,KAAKy2B,UAAUpQ,GAAU5Y,KAAKmqB,EAAM2a,EACxC,EAEAsnC,iBAAkB,SAASxzD,GACvB,IAEIoQ,EAFAonB,EAAO79C,KAAKmQ,SACZtE,EAAUgyC,EAAK1nB,KAAK9P,GAGxB,IAAKxa,EAAQrE,QAAUq2C,EAAK5wC,GAAGoZ,GAAW,CACtC,IAAIw3B,EAAK5wC,GAAGoZ,GAIR,MAAM,IAAIrV,MAAM,6CAA+CqV,EAAW,aAH1Exa,EAAUgyC,CAKlB,CAQA,OANApnB,EAAY,IAAIsjD,EAAcluE,IAEpBrC,KAAK,YAAY,SAAS7E,GAChCA,EAAEizB,KAAKznB,OAAOtE,EAClB,IAEO4qB,CACX,IAGAujD,EAAWvC,EAAK10E,OAAO,CACvBk3E,OAAQ,SAASriD,EAAMpS,GACnBoS,EAAK/rB,QAAQsqB,KAAK3Q,GAAa2zD,YAAYn5E,KAAKmQ,SACpD,EAEA0oE,OAAQ,WACR,IAGAqB,EAAmB,4BAgBvB,IAAIH,EAAgBzwE,EAAWvG,OAAO,CAClCoF,KAAM,SAASsuB,GACXntB,EAAWvB,GAAGI,KAAKoC,KAAKvK,MACxBA,KAAKy2B,UAAYA,EACjBz2B,KAAK0mB,QAAU,GACf1mB,KAAK43B,KAAO,KACZ53B,KAAKm6E,SAAU,CACnB,EAEAC,MAAO,WACHp6E,KAAKm6E,SAAU,EACfn6E,KAAKoK,QAAQ,WAAY,CAAEwtB,KAAM53B,KAAK43B,OACtC53B,KAAKoK,QAAQ,QACjB,EAEAuB,IAAK,WACD3L,KAAK43B,KAAK+gD,UACV34E,KAAK44C,SAASggC,UACd54E,KAAKo6E,OACT,EAEA3sE,KAAM,SAASmqB,EAAM2a,EAAY8nC,GAC7B,IAAKziD,EAAK4gD,qBAAwBx4E,KAAK43B,OAAS53B,KAAK43B,KAAK6gD,oBAEtD,OADAz4E,KAAKoK,QAAQ,UACN,EAGXiwE,EAAaA,GAAcziD,EAAKvH,GAEhC,IAAIpoB,EAAOjI,KACPgU,EAAW4jB,IAAS3vB,EAAK2vB,KAAQA,EAAKxwB,QAAUa,EAAK2vB,KACrDlR,EAAUze,EAAKye,QAEf6zB,GADgB7zB,EAAQA,EAAQlf,OAAS,IAAM,CAAC,GAC3B6oB,KAAOgqD,EAG5BC,EAAgB/nC,IAAgBgI,EAAO7zB,EAAQA,EAAQlf,OAAS,GAAG+qC,WAAa3a,EAAK2a,YACrFgoC,EAnDZ,SAAyBhoC,GACrB,IAAKA,EACD,MAAO,CAAC,EAGZ,IAAI/wC,EAAU+wC,EAAW7hC,MAAMwpE,IAAqB,GAEpD,MAAO,CACHx0E,KAAMlE,EAAQ,GACd6yC,UAAW7yC,EAAQ,GACnB6U,QAAwB,YAAf7U,EAAQ,GAEzB,CAuC6Bg5E,CAAgBF,GAqBrC,OAnBIryE,EAAKkyE,SACLlyE,EAAKisC,OAAO1rB,OAGM,SAAlB8xD,IACAA,EAAgB,MAGpBryE,EAAKmC,QAAQ,WAAY,CAAEwtB,KAAMA,IACjC3vB,EAAK2vB,KAAOA,EACZ3vB,EAAK2wC,SAAW5kC,EAChB/L,EAAKkyE,SAAU,EAEV5/B,EAGD7zB,EAAQqJ,MAFRrJ,EAAQ/kB,KAAK,CAAE0uB,GAAIgqD,EAAY9nC,WAAY+nC,IAK1CtmE,GAOAsmE,GAAkB35E,EAAMymB,QAAQU,SAMjC8P,EAAK/rB,QAAQwZ,SAAS,eACtBuS,EAAK8gD,YAEDn+B,IAAShI,IACTgoC,EAAelkE,SAAWkkE,EAAelkE,SAG7CpO,EAAKisC,OAASvzC,EAAM6pB,GAAGoN,EAAK/rB,SAASpJ,QAAQuR,EAAQnI,QAAS0uE,EAAe70E,MACxE21C,kBAAiB,WACdzjB,EAAKyjB,iBAAiB,QACtBrnC,EAAQqnC,iBAAiB,OAC7B,IACCC,iBAAgB,WACb1jB,EAAK0jB,gBAAgB,QACrBtnC,EAAQsnC,gBAAgB,OAC5B,IACCjH,UAAUkmC,EAAelmC,WACzBoB,WAAW8kC,EAAelkE,SAE/BpO,EAAKisC,OAAOmB,MAAM8pB,MAAK,WAAal3D,EAAK0D,KAAO,MAxBhDisB,EAAK8gD,YACLzwE,EAAK0D,QA0BF,IAlCHisB,EAAK8gD,YACL9gD,EAAK+gD,UACL1wE,EAAKmyE,SACE,EAgCf,EAEAp4E,QAAS,WACL,IACI41B,EADO53B,KACK43B,KAEZA,GAAQA,EAAK51B,SACb41B,EAAK51B,SAEb,IAGAy4E,EAAanxE,EAAWvG,OAAO,CAC/BoF,KAAM,SAAShB,GACX,IACIsxB,EACAhC,EAFAxuB,EAAOjI,KAIXsJ,EAAWvB,GAAGI,KAAKoC,KAAKtC,GACxBA,EAAKd,QAAUA,EAEfxE,EAAEI,OAAOkF,EAAMd,GACfc,EAAKyyE,QAAU/3E,EAAE,WACjB8zB,EAAYxuB,EAAKwuB,UAEjBgC,EAAQxwB,EAAK0yE,WAAWlkD,GACxBxuB,EAAK2yE,SAAWniD,EAAMvuB,QACtBjC,EAAK4yE,QAAU,CAAC,EAEhB5yE,EAAK6yE,cAAgB,IAAIn6E,EAAMo5E,cAAc9xE,EAAKwuB,WAElDxuB,EAAK6yE,cAActxE,KAAK,YAAY,SAAS7E,GACzCA,EAAEizB,KAAK6M,OAASx8B,EAAKw8B,MACzB,IAEAx8B,EAAK6yE,cAActxE,KAAK,YAAY,SAAS7E,GACzCsD,EAAKmC,QAAQitE,EAAW,CAAEz/C,KAAMjzB,EAAEizB,MACtC,IAEA3vB,EAAK6yE,cAActxE,KAAK+tE,GAAO,WAC3BtvE,EAAKmC,QAAQmtE,EACjB,IAEAv3E,KAAKwJ,KAAKxJ,KAAKqK,OAAQlD,EAC3B,EAEAkD,OAAQ,CACJ8sE,EACAI,EACAF,EArgBS,YACG,eAugBZD,EACAE,GAGJt1E,QAAS,WACL,IAAIiG,EAAOjI,KACP86E,EAAgB7yE,EAAK6yE,cAIzB,IAAK,IAAIzqD,KAFT1vB,EAAMqB,QAAQiG,EAAKwuB,WAEJxuB,EAAK4yE,QAChB76E,KAAK66E,QAAQxqD,GAAIruB,UAGjB84E,GACAA,EAAc94E,SAEtB,EAEA41B,KAAM,WACF,OAAO53B,KAAK86E,cAAcljD,IAC9B,EAEAmjD,SAAU,SAAS/rD,EAAKujB,EAAY9N,GAMhC,GAJY,MADZzV,EAAMA,EAAIvsB,QAAQ,IAAI+L,OAAO,IAAMxO,KAAKg7E,qBAAsB,MAC5Ch7E,KAAKg7E,sBACnBhsD,EAAM,KAGNA,EAAIvsB,QAAQ,KAAM,MAAQzC,KAAKgvB,IAE/B,OADAhvB,KAAKoK,QAAQgtE,IACN,EAGXp3E,KAAKoK,QAAQ+sE,GAEb,IAAIlvE,EAAOjI,KACP6L,EAAU5D,EAAKgzE,iBAAiBjsD,GAChC4I,EAAOj3B,EAAM41B,eAAe1qB,GAahC,OAXA5D,EAAK+mB,IAAMA,EAAIvsB,QAAQ,KAAM,IAE7BwF,EAAKw8B,OAASA,EAEV7M,GAAQA,EAAKsjD,SACbtjD,EAAKkhD,QACLjtE,EAAU,IAGd7L,KAAKoK,QAAQktE,EAAsB,CAAE7O,OAA2B,IAAnB58D,EAAQrE,OAAcwnB,IAAKA,KAEpEnjB,EAAQ,KACH+rB,IACDA,EAAO3vB,EAAKkzE,YAAYtvE,IAGrB5D,EAAK6yE,cAAcrtE,KAAKmqB,EAAM2a,EAAYvjB,GAIzD,EAEAmrB,OAAQ,SAAS9pC,EAAM2e,GACnB,IAGIyJ,EACAb,EAJA8iD,EAAU16E,KAAK06E,QACfU,GAAWpsD,GAAO,IAAIpkB,MAAM,KAAK,GACjC6rB,EAAYz2B,KAAKy2B,UA2BrB,OAvBIpmB,EAAKsF,QAAQ,UAAY,IACzBtF,EAAO1N,EAAE,SAASw3C,OAAO9pC,GAAMA,QAGnCqqE,EAAQ,GAAG37D,UAAY1O,EAEvBomB,EAAU0jB,OAAOugC,EAAQnlC,SAAS,mBAGlC3d,GADAa,EAAQz4B,KAAK26E,WAAWD,IACXxwE,SAGH1C,SACNixB,EAAQb,EAAO8iD,EAAQW,UAAU,0BAA0B9lC,YAG3D6lC,GACAxjD,EAAKlqB,OAAOkW,KAAKA,EAAK,OAAQw3D,GAGlC3kD,EAAU0jB,OAAO1hB,GAEjBpoB,EAAO,KACArQ,KAAKm7E,YAAYvjD,EAC5B,EAEA0jD,QAAS,SAAS3qD,GACd,OAAOJ,EAAaI,EACxB,EAEAsqD,iBAAkB,SAASjsD,GACvB,IAAInjB,EACAuvE,EAAUpsD,EAAIpkB,MAAM,KAAK,GAE7B,OAAKwwE,IAILvvE,EAAU7L,KAAKy2B,UAAU8e,SAAS,IAAM3xB,EAAK,OAAS,KAAOw3D,EAAU,OAG1D,KAAgC,IAA1BA,EAAQzlE,QAAQ,OAC/B9J,EAAU7L,KAAKy2B,UAAU8e,SAA+B,MAAtB6lC,EAAQtwE,OAAO,GAAaswE,EAAU,IAAMA,IAG7EvvE,EAAQ,KACTA,EAAU7L,KAAKu7E,qBAAqBvsD,IAGjCnjB,GAdI7L,KAAK46E,QAepB,EAEAW,qBAAsB,SAASlrD,GAE3B,OADcrwB,KAAKy2B,UAAU8e,SAAS,QAAUllB,EAAK,KAEzD,EAEA8qD,YAAa,SAAStvE,GAElB,OAAO7L,KAAKw7E,eAAe3vE,EAC/B,EAEA4vE,kBAAmB,SAAS5vE,GACxB,OAAOlL,EAAM+0B,WAAW7pB,EAAS,CAC7B6vE,kBAAmB17E,KAAKuyC,WACxBopC,OAAQ37E,KAAK27E,OACbllD,UAAWz2B,KAAKy2B,UAChBmlD,UAAW57E,KAAK67E,eAChBC,WAAY97E,KAAK87E,WACjBZ,OAAQ7hD,EAAUxtB,EAAS,WAC5B0e,EAAGoL,MACV,EAEA6lD,eAAgB,SAAS3vE,GACrB,IAAIkwE,GAAe/7E,KAAKmH,SAAW,CAAC,GAAG40E,aAAe,CAAC,EACvD,OAAO,IAAIp7E,EAAM82E,KAAK5rE,EAAS,CAC3B6rE,aAAcqE,EAAYrE,aAC1B/qD,KAAMovD,EAAYpvD,OAAQ,EAC1BirD,eAAgBmE,EAAYnE,eAC5BO,aAAc4D,EAAY5D,aAC1BC,gBAAiB2D,EAAY3D,iBAErC,EAEAuC,WAAY,SAASlkD,GACjB,OAAOA,EAAU8e,SAASv1C,KAAKs7E,QAAQ,SAAS5tE,MACpD,IAGJ/M,EAAM85E,WAAaA,EAEnB95E,EAAMo5E,cAAgBA,EACtBp5E,EAAMq5E,SAAWA,EACjBr5E,EAAMg5E,OAASA,EACfh5E,EAAM82E,KAAOA,EACb92E,EAAM43E,UAAYA,CAErB,CAlsBD,CAksBGz3E,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,GACN,IAAIhC,EAAQG,OAAOH,MACfuI,EAAavI,EAAMuI,WAEvB,SAAS8yE,EAAgBn0D,GACrB,OAAOA,GAAW3e,EAAW2e,EAAQ+kB,OAAS1jC,EAAW2e,EAAQglB,KACrE,CAEA,SAASovC,EAAgBp0D,GACrB,OAAOA,GAAW3e,EAAW2e,EAAQs3C,OAASj2D,EAAW2e,EAAQq0D,MACrE,CAEA,IAAIt2B,EAAYjlD,EAAMyN,KAAK+nD,gBAAgBpzD,OAAO,CAC9CoF,KAAM,SAAShB,GACX,IAAIg1E,EAAUh1E,GAAWA,EAAQg1E,QAAUh1E,EAAQg1E,QAAU,CAAC,EAE1Dt0D,EAAUs0D,EAAQt0D,QAEtB,IAAKA,EACD,MAAM,IAAI7W,MAAM,qCAGpB,IAAKgrE,EAAgBn0D,KAAao0D,EAAgBp0D,GAC9C,MAAM,IAAI7W,MAAM,2CAGpBhR,KAAK6nB,QAAUA,EAEf,IAAIu0D,EAAMD,EAAQC,IAElB,IAAKA,EACD,MAAM,IAAIprE,MAAM,iCAGpB,GAAqB,mBAAVorE,EAAIvyD,IAAyC,mBAAduyD,EAAIC,OAC1C,MAAM,IAAIrrE,MAAM,sDAGpBhR,KAAKo8E,IAAMA,EAEXz7E,EAAMyN,KAAK+nD,gBAAgBpuD,GAAGI,KAAKoC,KAAKvK,KAAMmH,EAClD,EAEAxF,KAAM,SAAS26E,GACX,IAAI13C,EAAS5kC,KAAKmH,QAAQg1E,QAAQv3C,QAAU,CAAC,EAEzCA,EAAOwiB,QACPpnD,KAAKo8E,IAAIvyD,GAAG+a,EAAOwiB,OAAQk1B,EAAUxhB,YAGrCl2B,EAAOuiB,QACPnnD,KAAKo8E,IAAIvyD,GAAG+a,EAAOuiB,OAAQm1B,EAAUthB,YAGrCp2B,EAAO5iC,SACPhC,KAAKo8E,IAAIvyD,GAAG+a,EAAO5iC,QAASs6E,EAAUphB,YAE9C,EAEAqhB,MAAO,SAASp1E,EAASzB,GACrB,IAAI02E,EAAMp8E,KAAKo8E,IACXv0D,EAAU7nB,KAAK6nB,QACf20D,EAASx8E,KAAKmH,QAAQg1E,QAAQK,OAElC,IAAKA,IAAWA,EAAO92E,GACnB,MAAM,IAAIsL,MAAMrQ,EAAMsQ,OAAO,uCAAwCvL,IAGzE,IAAI2xB,EAAO,CAACmlD,EAAO92E,IAEf0I,EAAOpO,KAAKqnD,aAAalgD,EAAQiH,KAAM1I,GAEtC/C,EAAEqzB,cAAc5nB,IACjBipB,EAAK11B,KAAKyM,GAGV4tE,EAAgBn0D,GAChBA,EAAQ+kB,MAAK,WACTwvC,EAAIC,OAAOj0E,MAAMg0E,EAAK/kD,GACXuV,KAAKzlC,EAAQghD,SACbtb,KAAK1lC,EAAQunB,MAC5B,IACOutD,EAAgBp0D,IACvBA,EAAQs3C,MAAK,WACTid,EAAIC,OAAOj0E,MAAMg0E,EAAK/kD,GACX8nC,KAAKh4D,EAAQghD,SACb+zB,MAAM/0E,EAAQunB,MAC7B,GAER,EAEAw2B,KAAM,SAAS/9C,GACXnH,KAAKu8E,MAAMp1E,EAAS,OACxB,EAEAigD,OAAQ,SAASjgD,GACbnH,KAAKu8E,MAAMp1E,EAAS,SACxB,EAEAggD,OAAQ,SAAShgD,GACbnH,KAAKu8E,MAAMp1E,EAAS,SACxB,EAEAnF,QAAS,SAASmF,GACdnH,KAAKu8E,MAAMp1E,EAAS,UACxB,IAGJxE,EAAEI,QAAO,EAAMpC,EAAMyN,KAAM,CACvB64C,WAAY,CACRk1B,QAASv2B,IAIpB,CAlHD,CAkHG9kD,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACf4C,EAAU5C,EAAM4C,QAChBqE,EAAQjH,EAAMiH,MACd0B,EAAa3I,EAAM2I,WACnB0pC,EAAMrkC,KAAKqkC,IACXjwC,EAASJ,EAAEI,OACX05E,EAAKl5E,EAAQggB,SACbm5D,EAAoBD,GAAMA,EAAGr7D,QAC7Bu7D,EAAmB,IAEnBC,EAAoBr5E,EAAQuf,QAAQoB,KAAO,EAAI,EAG/C24D,EAAQ,QACRC,EAAO,OACPC,EAAS,SACTC,EAAQ,QACRC,EAAO,OACPzxD,EAAM,MACN0xD,EAAS,SACTC,EAAM,MACNC,EAAY,YACZC,EAAU,UAEVC,EAAgB,gBAChBC,EAAa,aACbC,EAAa,aAEbC,EAAY,CACZC,IAAO,EACPl+D,MAAS,EACTm+D,MAAS,EACTC,QAAW,GAGXC,GAA0Bt6E,EAAQic,OAASjc,EAAQsgB,qBAEvD,SAASi6D,EAAWC,EAAQC,GACxB,IAAIC,EAAKF,EAAO34E,EAAEie,SACd66D,EAAKH,EAAO55E,EAAEkf,SACd86D,EAAKH,EAAO54E,EAAEie,SACd+6D,EAAKJ,EAAO75E,EAAEkf,SACdg7D,EAAKJ,EAAKE,EACVG,EAAKJ,EAAKE,EAEd,MAAO,CACHG,OAAQ,CACLn5E,GAAI64E,EAAKE,GAAM,EACfh6E,GAAI+5E,EAAKE,GAAM,GAGlBI,SAAUn7E,KAAKo7E,KAAKJ,EAAKA,EAAKC,EAAKA,GAE3C,CAEA,SAASI,EAAW/5E,GAChB,IAGa6C,EACTgiB,EACAhK,EALA8J,EAAU,GACVC,EAAgB5kB,EAAE4kB,cAClBo1D,EAAgBh6E,EAAEg6E,cAClB/0E,EAAM,EAIV,GAAIjF,EAAE+4E,IACFp0D,EAAQ3nB,KAAK,CACT0uB,GAAI,EACJlQ,MAAOxb,EACP0C,OAAQ1C,EAAE0C,OACVs3E,cAAeh6E,EAAE0C,OACjBgc,SAAU1e,EACVe,KAAM,aAGT,GAAIf,EAAEe,KAAKgL,MAAM,SAElB,IAAKlJ,GADLgiB,EAAiBD,EAAgBA,EAAcC,eAAiB,IACnChiB,OAAQoC,EAAMpC,EAAQoC,IAC/C4V,EAAQgK,EAAe5f,GACvB0f,EAAQ3nB,KAAK,CACT0hB,SAAU7D,EACVW,MAAOxb,EACP0C,OAAQmY,EAAMnY,OACds3E,cAAeA,EACftuD,GAAI7Q,EAAMo/D,WACVl5E,KAAM,eAITnC,EAAQ0jB,UAAY1jB,EAAQwjB,WACjCuC,EAAQ3nB,KAAK,CACT0hB,SAAUkG,EACVpJ,MAAOxb,EACP0C,OAAQ1C,EAAE0C,OACVs3E,cAAeA,EACftuD,GAAI9G,EAAcs1D,UAClBn5E,KAAM,YAGV4jB,EAAQ3nB,KAAK,CACT0uB,GAAI,EACJlQ,MAAOxb,EACP0C,OAAQ1C,EAAE0C,OACVs3E,cAAeA,EACft7D,SAAU1e,EACVe,KAAM,UAId,OAAO4jB,CACX,CAEA,IAAIw1D,EAAYl3E,EAAM7E,OAAO,CACzBoF,KAAM,SAASg9B,EAAM9hB,GACjB,IAAIpb,EAAOjI,KAEXiI,EAAKk9B,KAAOA,EAEZl9B,EAAK82E,oBAAoB17D,GAEzBpb,EAAK+2E,cAAgB/2E,EAAKob,SAC1Bpb,EAAKg3E,SAAWh3E,EAAK88B,MAAQ,EAC7B98B,EAAKi3E,UAAYlsC,GACrB,EAEAtY,KAAM,SAASrX,GACX,IAAIpb,EAAOjI,KACP8d,EAASuF,EAAS,OAASpb,EAAKk9B,MAChC+5C,EAAYlsC,IACZmsC,EAAaD,EAAYj3E,EAAKi3E,WAAc,GAE3CphE,GAAU4+D,IAIfz0E,EAAK88B,MAAQjnB,EAAS7V,EAAKob,SAE3Bpb,EAAK82E,oBAAoB17D,GAEzBpb,EAAKm3E,aAAethE,EAAS7V,EAAK+2E,cAClC/2E,EAAKg3E,SAAWh3E,EAAK88B,MAAQo6C,EAC7Bl3E,EAAKi3E,UAAYA,EACrB,EAEAH,oBAAqB,SAAS17D,GAC1B,IAAIpb,EAAOjI,KAAMmlC,EAAOl9B,EAAKk9B,KAE7Bl9B,EAAKob,SAAWA,EAAS,OAAS8hB,GAClCl9B,EAAK28B,OAASvhB,EAAS,SAAW8hB,GAClCl9B,EAAKqY,OAAS+C,EAAS,SAAW8hB,EACtC,IAGAk6C,EAAQz3E,EAAM7E,OAAO,CACrBoF,KAAM,SAASm3E,EAAYj4E,EAAQk4E,GAC/Bx8E,EAAO/C,KAAM,CACToF,EAAG,IAAI05E,EAAU,IAAKS,EAAUl8D,UAChClf,EAAG,IAAI26E,EAAU,IAAKS,EAAUl8D,UAChC3d,KAAM65E,EAAU75E,KAChB85E,cAAeF,EAAWE,cAC1BC,UAAWH,EAAWG,WAAahC,EAAU8B,EAAU75E,MACvD45E,WAAYA,EACZj4E,OAAQA,EACRs3E,cAAeY,EAAUZ,cACzBe,aAAcH,EAAUl4E,OACxBgpB,GAAIkvD,EAAUlvD,GACdsvD,WAAYJ,EACZK,QAASN,EAAWM,QACpBC,iBAAkBP,EAAWO,iBAC7BC,QAAQ,EACRC,WAAW,GAEnB,EAEAC,MAAO,WACHhgF,KAAKigF,aAAe/mD,WAAWl5B,KAAKkgF,MAAM12E,KAAKxJ,MAAOA,KAAKs/E,WAAWa,SACtEngF,KAAKogF,SAASvD,EAAO78E,KAAK2/E,WAC9B,EAEAU,KAAM,SAASd,GACX,IAAIt3E,EAAOjI,KACXiI,EAAKq3E,WAAWM,UACe,GAA3B33E,EAAKq3E,WAAWM,UAChB33E,EAAKq4E,cAAgBpnD,YAAW,WACG,GAA3BjxB,EAAKq3E,WAAWM,QAChB33E,EAAKm4E,SAASjD,EAAKoC,GAGnBt3E,EAAKm4E,SAAShD,EAAWmC,GAE7Bt3E,EAAKq3E,WAAWM,QAAU,CAC9B,GApLM,KAsLd,EAEAM,MAAO,WACHlgF,KAAKogF,SAAStD,EAAM98E,KAAK2/E,WAC7B,EAEAjlD,KAAM,SAAS6kD,GACX,IAAIt3E,EAAOjI,KACPugF,EAAiC,QAAnBhB,EAAU75E,MAAkBuC,EAAKq3E,WAAWkB,eAE9D,IAAIv4E,EAAK83E,YAAaQ,EAAtB,CAKA,GAHAt4E,EAAK7C,EAAEs1B,KAAK6kD,EAAUl8D,UACtBpb,EAAK9D,EAAEu2B,KAAK6kD,EAAUl8D,WAEjBpb,EAAK63E,OAAQ,CACd,GAAI73E,EAAKw4E,yBACL,OAGJ,GAAKC,EAAW1sE,SAAW0sE,EAAW1sE,UAAY/L,EAAKq3E,WAGnD,OAAOr3E,EAAK04E,UAFZ14E,EAAK24E,OAAOrB,EAIpB,CAGKt3E,EAAK83E,WACN93E,EAAKm4E,SAASnD,EAAMsC,EAnBqB,CAqBjD,EAEA5zE,IAAK,SAAS4zE,GACVv/E,KAAK6gF,QAAU7tC,IAEXhzC,KAAK+/E,YAGT//E,KAAK+/E,WAAY,EAEjB//E,KAAKogF,SAAS/C,EAASkC,GAEnBv/E,KAAK8/E,OACL9/E,KAAKogF,SAAS50D,EAAK+zD,GAEdv/E,KAAKw/E,gBACFx/E,KAAK6/E,iBACL7/E,KAAKqgF,KAAKd,GAGVv/E,KAAKogF,SAASjD,EAAKoC,IAK/BjlD,aAAat6B,KAAKigF,cAElBjgF,KAAK2gF,UACT,EAEAA,QAAS,WACL,IACIG,EADa9gF,KAAKs/E,WACSh2D,QAE/BtpB,KAAK+/E,WAAY,EACjB//E,KAAK2/E,WAAa,KAClBrlD,aAAat6B,KAAKigF,cAElBa,EAAct2E,OAAO7H,EAAE8yB,QAAQz1B,KAAM8gF,GAAgB,EACzD,EAEAj8B,KAAM,WACF7kD,KAAK2gF,SACT,EAEAhmD,OAAQ,WACJ36B,KAAK2gF,SACT,EAEAI,QAAS,WACL,OAAO/gF,KAAK8/E,MAChB,EAEAc,OAAQ,SAASrB,GACbjlD,aAAat6B,KAAKigF,cAElBjgF,KAAKghF,UAAYhuC,IACjBhzC,KAAK8/E,QAAS,EACd9/E,KAAKogF,SAASpD,EAAOuC,EACzB,EAEAa,SAAU,SAASh+E,EAAMm9E,GACrB,IAAIt3E,EAAOjI,KACP8kC,EAAcy6C,EAAUp/D,MACxB/R,EAAO,CACHoR,MAAOvX,EACP7C,EAAG6C,EAAK7C,EACRjB,EAAG8D,EAAK9D,EACRkD,OAAQY,EAAKZ,OACb8Y,MAAO2kB,GAGX78B,EAAKq3E,WAAW1qD,OAAOxyB,EAAMgM,IAC7B02B,EAAY37B,gBAEpB,EAEAs3E,uBAAwB,WACpB,IAAIQ,EAASjhF,KAAKoF,EAAEg6E,aAChB8B,EAASlhF,KAAKmE,EAAEi7E,aAEpB,OAAO/7E,KAAKo7E,KAAKwC,EAASA,EAASC,EAASA,IAAWlhF,KAAKy/E,SAChE,IAGJ,SAAS0B,EAAgBv3D,GAKrB,IAJA,IAAIw3D,EAAazgF,EAAM85B,SAASrM,GAAGxjB,MAAM,KACrChB,EAAM,EACNpC,EAAS45E,EAAW55E,OAEjBoC,EAAMpC,EAAQoC,IACjBggB,EAASw3D,EAAWx3E,GAE5B,CAEA,IAAI82E,EAAap3E,EAAWvG,OAAO,CAC/BoF,KAAM,SAAS0D,EAAS1E,GACpB,IACIooB,EADAtnB,EAAOjI,KAEPmsB,EAAKxrB,EAAMwvB,OAoCf,GAlCAhpB,EAAUA,GAAW,CAAC,EACtBooB,EAAStnB,EAAKsnB,OAASpoB,EAAQooB,OAC/BtnB,EAAKw3E,UAAYt4E,EAAQs4E,WAAa7C,EACtC30E,EAAKk4E,QAAUh5E,EAAQg5E,SAAWxD,EAClC10E,EAAKqhB,QAAU,GACfrhB,EAAKo5E,YAAcl6E,EAAQm6E,WAAa,EAAI,EAC5Cr5E,EAAKs5E,eAAiBp6E,EAAQo6E,eAC9Bt5E,EAAKu5E,iBAAmBr6E,EAAQq6E,iBAChCv5E,EAAKu3E,eAAiBr4E,EAAQs6E,UAAYl+E,EAAQogB,eAClD1b,EAAKy5E,QAAUv1D,EACflkB,EAAK23E,QAAU,EACf33E,EAAK43E,iBAAmB14E,EAAQ04E,iBAEhCh0E,EAAUlJ,EAAEkJ,GAAS/B,QAAQ7B,GAC7BqB,EAAWvB,GAAGI,KAAKoC,KAAKtC,GAExBlF,EAAOkF,EAAM,CACT4D,QAASA,EAET81E,QAASx6E,EAAQ/H,QAAUy+E,EAAwBl7E,EAAEkJ,EAAQ,GAAG+1E,cAAchoE,iBAAmBjX,EAAEwE,EAAQw6E,SAAW91E,GACtHuuB,gBAAiBjzB,EAAQizB,gBACzBynD,SAAS,IAGb55E,EAAK05E,QAAQ73E,QAAQ7B,GAChB4hB,GAAGlpB,EAAMg7B,cAAc,OAAQxP,GAAK,SACpCtC,GAAGlpB,EAAMg7B,cAAc,YAAaxP,GAAK,QAE9CtgB,EAAQge,GAAGlpB,EAAMg7B,cAAc,OAAQxP,GAAKoD,EAAQ,UAEhDtnB,EAAKu3E,eACL3zE,EAAQge,GAAGlpB,EAAMg7B,cAAc,QAASxP,GAAKoD,EAAQ,UAGrDhsB,EAAQ0jB,UAAY1jB,EAAQwjB,WAE5B,GAAIxjB,EAAQuf,QAAQtgB,QAAU,GAAI,CAC9B,IAAIs/E,EAAgB,6BACpBj2E,EAAQI,IAAI,mBAAoB9E,EAAQ46E,aAAsC,QAAvB56E,EAAQ46E,YAAwBD,EAAgB,IAAM36E,EAAQ46E,YAAcD,EACvI,MACIj2E,EAAQI,IAAI,eAAgB9E,EAAQ46E,aAAe,QAU3D,GANI56E,EAAQ66E,kBACRn2E,EAAQge,GAAGlpB,EAAMg7B,cAAc,YAAaxP,GAAKxrB,EAAMwI,gBAG3D0C,EAAQge,GAAGlpB,EAAMg7B,cAAc,YAAaxP,GAAKoD,EAAQ,CAAEsuB,KAAMhyC,GAAW,WAExE5D,EAAKu5E,kBAAoBj+E,EAAQ+hB,aAAc,CAC/C,IAAI28D,EAAiBh6E,EAAK05E,QAAQ,GAC9BO,EAAuBj6E,EAAKk6E,gBAAgB34E,KAAKvB,GAErDk5E,GAAgB,SAAS13E,GACrBw4E,EAAexgF,iBAAiBgI,EAAWy4E,GAAsB,EACrE,GACJ,CAEAj6E,EAAKuB,KAAK,CACVqzE,EACAC,EACAK,EACAC,EACAJ,EACAC,EACAzxD,EACA6xD,EACAH,EAhXW,eAkXXI,EACAC,EACAC,EACAT,GACG51E,EACP,EAEAg7E,gBAAiB,SAASx9E,GAClB3E,KAAKoiF,YACLz9E,EAAEwE,gBAEV,EAEAnH,QAAS,WACL,IAAIiG,EAAOjI,KAEX,IAAIiI,EAAKgyD,WAAT,CAMA,GAFAhyD,EAAKgyD,YAAa,EAEdhyD,EAAKu5E,kBAAoBj+E,EAAQ+hB,aAAc,CAC/C,IAAI28D,EAAiBh6E,EAAK05E,QAAQ,GAClCR,GAAgB,SAAS13E,GACrBw4E,EAAehgF,oBAAoBwH,EAAWxB,EAAKk6E,gBACvD,GACJ,CAEAl6E,EAAK4D,QAAQ8rB,aAAa1vB,EAAKy5E,SAC/Bz5E,EAAK05E,QAAQhqD,aAAa1vB,EAAKy5E,SAC/Bz5E,EAAK4D,QAAQgnB,WAAW,WACxB5qB,EAAK05E,QAAQ9uD,WAAW,WACxB5qB,EAAKo6E,cAELp6E,EAAKgC,gBACEhC,EAAK05E,eACL15E,EAAK4D,eACL5D,EAAK02E,aApBZ,CAqBJ,EAEA2D,QAAS,WACL5B,EAAW1sE,QAAUhU,IACzB,EAEA26B,OAAQ,WACJ36B,KAAKqiF,cACLriF,KAAKoK,QAAQ8yE,EACjB,EAEAtoD,OAAQ,SAASnrB,EAAW2E,GACxB,IACIkb,EADOtpB,KACQspB,QAEnB,GAAItpB,KAAKuiF,gBAAiB,CACtB,OAAQ94E,GACJ,KAAKwzE,EACDxzE,EAAY6zE,EACZ,MACJ,KAAK9xD,EACD/hB,EAAY8zE,EACZ,MACJ,KAAKJ,EACD1zE,EAAY+zE,EAIpBz6E,EAAOqL,EAAM,CAAEkb,QAASA,GAAWw0D,EAAWx0D,EAAQ,GAAIA,EAAQ,IACtE,CAEA,OAAOtpB,KAAKoK,QAAQX,EAAW1G,EAAOqL,EAAM,CAAE1I,KAAM+D,IACxD,EAGAu2E,MAAO,SAAS56E,EAAGjB,EAAGkD,GAClBrH,KAAKwiF,SAAS,SAAUp9E,EAAGjB,EAAGkD,EAClC,EAEAqzB,KAAM,SAASt1B,EAAGjB,GACdnE,KAAKwiF,SAAS,QAASp9E,EAAGjB,EAC9B,EAEAwH,IAAK,SAASvG,EAAGjB,GACbnE,KAAKwiF,SAAS,OAAQp9E,EAAGjB,EAC7B,EAEAo+E,cAAe,WACX,OAAOviF,KAAKspB,QAAQ9hB,OAAS,CACjC,EAEAi7E,mBAAoB,WAChB,OAAOziF,KAAKspB,QAAQ9hB,QAAUxH,KAAKqhF,WACvC,EAEAgB,YAAa,WAET,IADA,IAAI/4D,EAAUtpB,KAAKspB,QACZA,EAAQ9hB,OAAS,GACpB8hB,EAAQyG,MAAM4wD,SAEtB,EAEAyB,SAAU,WACN,OAAOz/E,EAAE07B,KAAKr+B,KAAKspB,SAAS,SAAS9J,GACjC,OAAOA,EAAMuhE,SACjB,IAAGv5E,MACP,EAEAk7E,QAAS,SAAS/9E,GACV3E,KAAKuhF,iBAAkBvhF,KAAKoK,QAAQ2yE,EAAQ,CAAE58D,MAAOxb,KACtDA,EAAEwE,gBAET,EAEAy3E,OAAQ,SAASj8E,GACb,IAGI0C,EAGAmY,EANAvX,EAAOjI,KACP4J,EAAM,EACN2lB,EAAStnB,EAAKsnB,OAEdjG,EAAUo1D,EAAW/5E,GACrB6C,EAAS8hB,EAAQ9hB,OAEjBm7E,EAAQh+E,EAAEg+E,MAEd,KAAKA,GAASA,EAAQ,GAAO16E,EAAKw6E,sBAYlC,IARA/B,EAAW1sE,QAAU,KAErB/L,EAAK02E,cAAgBh6E,EAAEg6E,cAEnB12E,EAAKmyB,iBACLz1B,EAAEy1B,kBAGCxwB,EAAMpC,IACLS,EAAKw6E,qBADQ74E,IAKjB4V,EAAQ8J,EAAQ1f,IAGZvC,EADAkoB,EACS5sB,EAAE6c,EAAMm/D,eAER12E,EAAK4D,SAGNrE,SAIZgY,EAAQ,IAAI6/D,EAAMp3E,EAAMZ,EAAQmY,GAChCvX,EAAKqhB,QAAQ3nB,KAAK6d,GAClBA,EAAMwgE,QAEF/3E,EAAKs6E,iBACLt6E,EAAK2sB,OAAO,eAAgB,CAAC,GAGzC,EAEAguD,MAAO,SAASj+E,GACZ3E,KAAK6iF,WAAW,OAAQl+E,EAC5B,EAEAm+E,KAAM,SAASn+E,GACX3E,KAAK6iF,WAAW,MAAOl+E,EAC3B,EAEAo+E,OAAQ,SAASp+E,GACb,IAAIyJ,EAAO,CACPoR,MAAO,CACHkgE,aAAc/6E,EAAE0C,OAChBA,OAAQ1E,EAAEgC,EAAEg6E,eACZkC,QAAS7tC,IACT5tC,EAAG,CACCie,SAAU1e,EAAEq+E,MACZp+C,OAAQjgC,EAAE+kB,SAEdvlB,EAAG,CACCkf,SAAU1e,EAAEs+E,MACZr+C,OAAQjgC,EAAEglB,UAGlBvkB,EAAGT,EAAEq+E,MACL7+E,EAAGQ,EAAEs+E,MACL57E,OAAQ1E,EAAEgC,EAAEg6E,eACZx+D,MAAOxb,EACPe,KAAM,OAGN1F,KAAKoK,QAAQ,MAAOgE,IACpBzJ,EAAEwE,gBAEV,EAEA05E,WAAY,SAAS7J,EAAYr0E,GAC7B,IAIIiF,EACA4V,EACA+/D,EACA2D,EANAh4C,EAAO,CAAC,EACR5hB,EAAUo1D,EAAW/5E,GACrBm8E,EAHO9gF,KAGcspB,QAMzB,IAAK1f,EAAM,EAAGA,EAAMk3E,EAAct5E,OAAQoC,IAEtCshC,GADA1rB,EAAQshE,EAAcl3E,IACXymB,IAAM7Q,EAGrB,IAAK5V,EAAM,EAAGA,EAAM0f,EAAQ9hB,OAAQoC,KAEhCs5E,EAAgBh4C,GADhBq0C,EAAYj2D,EAAQ1f,IACWymB,MAG3B6yD,EAAclK,GAAYuG,EAGtC,EAEAiD,SAAU,SAAS98E,EAAMN,EAAGjB,EAAGkD,GAC3BrH,KAAK0F,GAAM,CACPg4E,KAAK,EACLsF,MAAO59E,EACP69E,MAAO9+E,EACPulB,QAAStkB,EACTukB,QAASxlB,EACTkD,OAAQ1E,EAAE0E,GAAUrH,KAAK6L,SAAS,GAClCuuB,gBAAiBz3B,EAAEQ,KACnBgG,eAAgBxG,EAAEQ,MAE1B,IAGAggF,EAAiB75E,EAAWvG,OAAO,CACnCoF,KAAM,SAAS0D,EAAS1E,GACpB,IACIooB,EADAtnB,EAAOjI,KAEPmsB,EAAKxrB,EAAMwvB,OAEfhpB,EAAUA,GAAW,CAAC,EACtBooB,EAAStnB,EAAKsnB,OAASpoB,EAAQooB,OAC/BtnB,EAAKqhB,QAAU,GACfrhB,EAAKo5E,YAAc,EACnBp5E,EAAKy5E,QAAUv1D,EACflkB,EAAKm7E,aAAe,EAEpBv3E,EAAUlJ,EAAEkJ,GAAS/B,QAAQ7B,GAC7BqB,EAAWvB,GAAGI,KAAKoC,KAAKtC,GAExBlF,EAAOkF,EAAM,CACT4D,QAASA,EAET81E,QAASx6E,EAAQ/H,QAAUy+E,EAAwBl7E,EAAEkJ,EAAQ,GAAG+1E,cAAchoE,iBAAmBjX,EAAEwE,EAAQw6E,SAAW91E,GACtHuuB,gBAAiBjzB,EAAQizB,gBACzBynD,SAAS,IAGb55E,EAAK05E,QAAQ73E,QAAQ7B,GAChB4hB,GAAGlpB,EAAMg7B,cAAc,OAAQxP,GAAK,SACpCtC,GAAGlpB,EAAMg7B,cAAc,YAAaxP,GAAK,UAE9CtgB,EAAQge,GAAGlpB,EAAMg7B,cAAc,OAAQxP,GAAKoD,EAAQ,SAC/C1F,GAAGlpB,EAAMg7B,cAAc,KAAMxP,GAAKoD,EAAQ,OAE/CtnB,EAAKuB,KAAK,CACNwzE,EACAC,EACAzxD,EACAsxD,EACAI,EACAH,GACD51E,EACP,EAEAk8E,MAAO,SAAS1+E,GACRA,EAAEg+E,OAASh+E,EAAEg+E,MAAQ,EACrB3iF,KAAK26B,UAEL36B,KAAKojF,cAAe,IAAIz0E,MAAO1F,UAC/BjJ,KAAKsjF,YAAc3+E,EAAE0C,OAE7B,EAEAk8E,IAAK,SAAS5+E,GACV,IAAI6+E,GAAmB,IAAI70E,MAAO1F,UAC9B01E,EAAgBh6E,EAAE0C,SAEhB1C,EAAEg+E,OAAqB,IAAZh+E,EAAEg+E,QACfa,EAAmBxjF,KAAKojF,aAnqBlB,KAoqBNzE,IAAkB3+E,KAAKsjF,aACftjF,KAAKspB,SAAWtpB,KAAKspB,QAAQ9hB,OAAS,EACtCxH,KAAK8iF,KAAKn+E,GAEV3E,KAAK4gF,OAAOj8E,GAGhB3E,KAAKyjF,gBAAiB,GAE1BzjF,KAAK26B,SAGT36B,KAAKojF,aAAe,EACpBpjF,KAAKsjF,YAAc,IACvB,EAEAthF,QAAS,WACL,IAAIiG,EAAOjI,KAEPiI,EAAKgyD,aAIThyD,EAAKgyD,YAAa,EAElBhyD,EAAK4D,QAAQ8rB,aAAa1vB,EAAKy5E,SAC/Bz5E,EAAK05E,QAAQhqD,aAAa1vB,EAAKy5E,SAC/Bz5E,EAAK4D,QAAQgnB,WAAW,WACxB5qB,EAAK05E,QAAQ9uD,WAAW,WACxB5qB,EAAKo6E,cAELp6E,EAAKgC,gBACEhC,EAAK05E,eACL15E,EAAK4D,eACL5D,EAAK02E,cAChB,EAEA2D,QAAS,WACLa,EAAenvE,QAAUhU,IAC7B,EAEA26B,OAAQ,WACA36B,KAAKyjF,eACLzjF,KAAKyjF,gBAAiB,EAEfzjF,KAAKspB,SAAWtpB,KAAKspB,QAAQ9hB,OAAS,IAC7CxH,KAAKqiF,cACLriF,KAAKoK,QAAQ8yE,GAErB,EAEAtoD,OAAQ,SAASnrB,EAAW2E,GAExB,OADAA,EAAKs1E,gBAAiB,EACf1jF,KAAKoK,QAAQX,EAAW1G,EAAOqL,EAAM,CAAE1I,KAAM+D,IACxD,EAEAg5E,mBAAoB,WAChB,OAAOziF,KAAKspB,QAAQ9hB,QAAUxH,KAAKqhF,WACvC,EAEAgB,YAAa,WAGT,IAFA,IAAI/4D,EAAUtpB,KAAKspB,QAEZA,EAAQ9hB,OAAS,GACpB8hB,EAAQyG,MAAM4wD,SAEtB,EAEAC,OAAQ,SAASj8E,GACb,IAGI0C,EAGAmY,EANAvX,EAAOjI,KACP4J,EAAM,EACN2lB,EAAStnB,EAAKsnB,OAEdjG,EAAUo1D,EAAW/5E,GACrB6C,EAAS8hB,EAAQ9hB,OAEjBm7E,EAAQh+E,EAAEg+E,MAEd,KAAKA,GAASA,EAAQ,GAAO16E,EAAKw6E,sBAYlC,IARAU,EAAenvE,QAAU,KAEzB/L,EAAK02E,cAAgBh6E,EAAEg6E,cAEnB12E,EAAKmyB,iBACLz1B,EAAEy1B,kBAGCxwB,EAAMpC,IACLS,EAAKw6E,qBADQ74E,IAKjB4V,EAAQ8J,EAAQ1f,IAGZvC,EADAkoB,EACS5sB,EAAE6c,EAAMm/D,eAER12E,EAAK4D,SAGNrE,SAIZgY,EAAQ,IAAI6/D,EAAMp3E,EAAMZ,EAAQmY,GAChCvX,EAAKqhB,QAAQ3nB,KAAK6d,GAClBA,EAAMwgE,QACNxgE,EAAMohE,OAAOphE,GAErB,EAEAojE,MAAO,SAASj+E,GACZ3E,KAAK6iF,WAAW,OAAQl+E,EAC5B,EAEAm+E,KAAM,SAASn+E,GACX3E,KAAK6iF,WAAW,OAAQl+E,GACxB3E,KAAK6iF,WAAW,MAAOl+E,EAC3B,EAEAk+E,WAAY,SAAS7J,EAAYr0E,GAC7B,IAIIiF,EACA4V,EACA+/D,EACA2D,EANAh4C,EAAO,CAAC,EACR5hB,EAAUo1D,EAAW/5E,GACrBm8E,EAHO9gF,KAGcspB,QAMzB,IAAK1f,EAAM,EAAGA,EAAMk3E,EAAct5E,OAAQoC,IAEtCshC,GADA1rB,EAAQshE,EAAcl3E,IACXymB,IAAM7Q,EAGrB,IAAK5V,EAAM,EAAGA,EAAM0f,EAAQ9hB,OAAQoC,KAEhCs5E,EAAgBh4C,GADhBq0C,EAAYj2D,EAAQ1f,IACWymB,OAG3B6yD,EAAc99E,EAAEs1B,KAAK6kD,EAAUl8D,UAC/B6/D,EAAc/+E,EAAEu2B,KAAK6kD,EAAUl8D,UAC/B6/D,EAAclK,GAAYuG,GAGtC,IAGJmB,EAAWiD,iBAAmB,SAASj7E,GACnCk0E,EAAoBl0E,CACxB,EAEAg4E,EAAWP,QAAU,SAASz3E,GAC1Bi0E,EAAmBj0E,CACvB,EAEA/H,EAAM+9E,WAAaA,EACnB/9E,EAAMm9E,WAAaA,EACnBn9E,EAAM+/E,WAAaA,EACnB//E,EAAMwiF,eAAiBA,CACzB,CAj1BF,CAi1BIriF,OAAOH,MAAM+G,QACH/G,OAUd,SAAUgC,EAAGC,GACT,IAcIghF,EAdAjjF,EAAQG,OAAOH,MACf4C,EAAU5C,EAAM4C,QAChBoM,EAAW7O,OAAO6O,SAClBk0E,EAAUlhF,EAAE7B,QACZ8G,EAAQjH,EAAMiH,MACdwpB,EAASzwB,EAAM4pB,GAAG6G,OAClB9nB,EAAa3I,EAAM2I,WACnBo3E,EAAa//E,EAAM+/E,WACnByC,EAAiBxiF,EAAMwiF,eACvBpgF,EAASJ,EAAEI,OACX8qB,EAAYltB,EAAMktB,UAClBi2D,EAAa,CAAC,EACdC,EAAc,CAAC,EACfC,EAAY,CAAC,EAEbr/C,EAAqBhkC,EAAMgkC,mBAC3Bs/C,EAAQ,QACR/mC,EAAS,SAGTgnC,EAAY,YACZpH,EAAO,OACPqH,EAAO,OACPC,EAAU,UACVC,EAAa,aACbC,EAAgB,gBAGhBC,EAAY,YACZC,EAAY,YACZC,EAAO,OAUX,SAASC,EAAkB74E,EAASiC,GAChC,OAAO0L,SAAS3N,EAAQI,IAAI6B,GAAW,KAAO,CAClD,CAEA,SAAS62E,EAAOj8E,EAAOurD,GACnB,OAAO5wD,KAAKqT,IAAIrT,KAAK8V,IAAIzQ,EAAOurD,EAAMv9C,KAAMu9C,EAAM96C,IACtD,CAEA,SAASyrE,EAAoBnuD,EAAW5qB,GACpC,IAAIiS,EAAS+P,EAAU4I,GACnBtqB,EAAaxL,EAAM8L,YACnBL,EAAczL,EAAM+L,aACpBm4E,EAAO/mE,EAAO0O,KAAOk4D,EAAkBjuD,EAAW,mBAAqBiuD,EAAkBjuD,EAAW,eACpGquD,EAAOhnE,EAAOoH,IAAMw/D,EAAkBjuD,EAAW,kBAAoBiuD,EAAkBjuD,EAAW,cAItG,MAAO,CACHrxB,EAAG,CAAEsR,IAAKmuE,EAAM1rE,IAJT0rE,EAAOpuD,EAAU1qB,QAAUI,EAAWN,GAAS,IAKtD1H,EAAG,CAAEuS,IAAKouE,EAAM3rE,IAJT2rE,EAAOruD,EAAUzqB,SAAWI,EAAYP,GAAS,IAMhE,CA4BA,IAmTIukC,EAnTA20C,EAAaz7E,EAAWvG,OAAO,CAC/BoF,KAAM,SAAS0D,EAAS1E,GACpB,IAAIc,EAAOjI,KACP00B,EAAa7oB,EAAQ,GAEzB5D,EAAKq6E,SAAU,EAEX5tD,EAAWjzB,kBACXkB,EAAEK,KAAKrC,EAAM85B,SAAStM,KAAKvjB,MAAM,MAAM,WACnC8pB,EAAWjzB,iBAAiBzB,KAAMiI,EAAK+8E,OAAOx7E,KAAKvB,IAAO,EAC9D,IACAtF,EAAEK,KAAKrC,EAAM85B,SAASrM,GAAGxjB,MAAM,MAAM,WACjC8pB,EAAWjzB,iBAAiBzB,KAAMiI,EAAKg9E,SAASz7E,KAAKvB,IAAO,EAChE,MAEAtF,EAAEK,KAAKrC,EAAM85B,SAAStM,KAAKvjB,MAAM,MAAM,WACnC8pB,EAAWwwD,YAAYllF,KAAMiI,EAAK+8E,OAAOx7E,KAAKvB,GAClD,IACAtF,EAAEK,KAAKrC,EAAM85B,SAASrM,GAAGxjB,MAAM,MAAM,WACjC8pB,EAAWwwD,YAAYllF,KAAMiI,EAAKg9E,SAASz7E,KAAKvB,GACpD,KAGJqB,EAAWvB,GAAGI,KAAKoC,KAAKtC,GAExBA,EAAKuB,KAAK,CAAC,QAAS,WAAYrC,GAAW,CAAC,EAChD,EAEAg+E,YAAa,WACTnlF,KAAKsiF,SAAU,CACnB,EAEA8C,cAAe,WACXplF,KAAKsiF,SAAU,CACnB,EAEA0C,OAAQ,SAASrgF,GACF3E,KACNoK,QAAQ,SADFpK,KAEFsiF,SACL39E,EAAEwE,gBAEV,EAEA87E,SAAU,SAAStgF,GACf,IAAIsD,EAAOjI,KACXiI,EAAKmC,QAAQ,WAETnC,EAAKq6E,UACL39E,EAAEwE,iBACFlB,EAAKm9E,gBAEb,IAGAC,EAAgB/7E,EAAWvG,OAAO,CAClCoF,KAAM,SAAShB,GACX,IAAIc,EAAOjI,KACXsJ,EAAWvB,GAAGI,KAAKoC,KAAKtC,GAExBA,EAAKq9E,eAAgB,EAErB3iF,EAAEI,OAAOkF,EAAMd,GAEfc,EAAK8nC,MAAQ,EAET9nC,EAAKyqC,YACLzqC,EAAKs9E,QAAU,cACft9E,EAAKu9E,WAAa,cAClBv9E,EAAKk9B,KAAO,MAEZl9B,EAAKs9E,QAAU,eACft9E,EAAKu9E,WAAa,eAClBv9E,EAAKk9B,KAAO,IAEpB,EAEAsgD,YAAa,WACT9iF,EAAEI,OAAO/C,KAAM,CACXi2D,SAAS,EACTqvB,eAAe,EACfI,YAAa,EACbC,YAAa,GAErB,EAEAC,YAAa,SAASlvE,EAAKyC,GACnBnZ,KAAK0lF,cAAgBhvE,GAAO1W,KAAK2lF,cAAgBxsE,IACjDnZ,KAAK0lF,YAAchvE,EACnB1W,KAAK2lF,YAAcxsE,EACnBnZ,KAAKmnD,SAEb,EAEA0+B,YAAa,SAAS/nE,GAClB,OAAOA,EAAS9d,KAAKmZ,KAAO2E,EAAS9d,KAAK0W,GAC9C,EAEAovE,aAAc,WACV9lF,KAAKslF,eAAgB,CACzB,EAEA/yD,QAAS,WACL,OAAOvyB,KAAKy2B,UAAU,GAAGz2B,KAAKulF,QAClC,EAEAQ,SAAU,WACN,OAAO/lF,KAAK6L,QAAQ,GAAG7L,KAAKwlF,WAChC,EAEAQ,QAAS,SAASj2C,GACd/vC,KAAK+vC,MAAQA,CACjB,EAEAoX,OAAQ,SAAS1H,GACb,IAAIx3C,EAAOjI,KACPgnD,EAAQ/+C,EAAKguD,QAAUhuD,EAAK09E,YAAc19E,EAAK89E,WAC/CE,EAAcj/B,EAAQ/+C,EAAK8nC,MAC3B//B,EAAO/H,EAAKsqB,WAEF,IAAVy0B,GAAgB/+C,EAAKq9E,iBAIzBr9E,EAAKkR,IAAMlR,EAAKguD,SAAWhuD,EAAKy9E,YAAc,EAC9Cz9E,EAAK+H,KAAOA,EACZ/H,EAAK++C,MAAQi/B,EACbh+E,EAAKyO,IAAMrT,KAAKqT,IAAIzO,EAAKkR,IAAKnJ,EAAOi2E,GACrCh+E,EAAKi+E,SAAWl2E,EAAOg3C,EACvB/+C,EAAKk+E,cAAgBF,EAAcj2E,GAAQ,EAE3C/H,EAAK6f,QAAU7f,EAAKq9E,eAAkBW,EAAcj2E,EAE/CyvC,GACDx3C,EAAKmC,QAAQ8yC,EAAQj1C,GAE7B,IAGAm+E,EAAiB98E,EAAWvG,OAAO,CACnCoF,KAAM,SAAShB,GACX,IAAIc,EAAOjI,KAEXsJ,EAAWvB,GAAGI,KAAKoC,KAAKtC,GAExBA,EAAK7C,EAAI,IAAIigF,EAActiF,EAAO,CAAE2vC,YAAY,GAAQvrC,IACxDc,EAAK9D,EAAI,IAAIkhF,EAActiF,EAAO,CAAE2vC,YAAY,GAASvrC,IACzDc,EAAKwuB,UAAYtvB,EAAQsvB,UACzBxuB,EAAKo+E,eAAiBl/E,EAAQ++E,SAC9Bj+E,EAAKq+E,SAAWn/E,EAAQm/E,UAAY,IAEpCr+E,EAAKuB,KAAK0zC,EAAQ/1C,EACtB,EAEA6+E,QAAS,SAASO,GACdvmF,KAAKoF,EAAE4gF,QAAQO,GACfvmF,KAAKmE,EAAE6hF,QAAQO,GACfvmF,KAAK2e,SACT,EAEA6nE,kBAAmB,WACf,MAAO,CAAEphF,EAAG/B,KAAKqT,IAAI,GAAI1W,KAAKoF,EAAE+gF,cAAehiF,EAAGd,KAAKqT,IAAI,GAAI1W,KAAKmE,EAAEgiF,cAC1E,EAEAxnE,QAAS,WACL,IAAI1W,EAAOjI,KACXiI,EAAK7C,EAAE+hD,SACPl/C,EAAK9D,EAAEgjD,SACPl/C,EAAK6f,QAAU7f,EAAK7C,EAAE0iB,SAAW7f,EAAK9D,EAAE2jB,QACxC7f,EAAKi+E,SAAWj+E,EAAKo+E,gBAAkBhjF,KAAKqT,IAAIzO,EAAK7C,EAAE8gF,SAAUj+E,EAAK9D,EAAE+hF,UACxEj+E,EAAKg1C,SAAW55C,KAAK8V,IAAIlR,EAAK7C,EAAE8gF,SAAUj+E,EAAK9D,EAAE+hF,UACjDj+E,EAAKmC,QAAQ8yC,EACjB,IAGAupC,EAAWn9E,EAAWvG,OAAO,CAC7BoF,KAAM,SAAShB,GAEXpE,EADW/C,KACEmH,GACbmC,EAAWvB,GAAGI,KAAKoC,KAFRvK,KAGf,EAEA6lF,YAAa,WACT,OAAO7lF,KAAK0mF,UAAUb,YAAY7lF,KAAKy8C,QAAQz8C,KAAKmlC,MACxD,EAEAwhD,SAAU,SAAS5hD,GACf,IAAI98B,EAAOjI,KACP0mF,EAAYz+E,EAAKy+E,UACjBvhD,EAAOl9B,EAAKk9B,KACZsX,EAAUx0C,EAAKw0C,QACfnvC,EAAWmvC,EAAQtX,GAAQJ,EAE1B2hD,EAAU5+D,WAIVxa,EAAWo5E,EAAUhwE,KAAOquB,EAAQ,GAAOz3B,EAAWo5E,EAAUvtE,KAAO4rB,EAAQ,KAChFA,GAAS98B,EAAK2+E,YAGlBnqC,EAAQoqC,cAAc1hD,EAAMJ,GAC5B98B,EAAKmC,QAAQ8yC,EAAQj1C,GACzB,IAGA6+E,EAAOl/E,EAAM7E,OAAO,CAEpBoF,KAAM,SAAShB,GACX,IACI/B,EACAjB,EACAyiF,EACAnqC,EAJAx0C,EAAOjI,KAMX+C,EAAOkF,EAAM,CAAE8+E,SAAS,GAAQ5/E,GAEhCy/E,EAAa3+E,EAAK8+E,QAAU,GAAM,EAClCtqC,EAAUx0C,EAAKw0C,QAEfx0C,EAAK7C,EAAIA,EAAI,IAAIqhF,EAAS,CACtBthD,KAAM,IACNuhD,UAAWz+E,EAAK0qB,WAAWvtB,EAC3BwhF,WAAYA,EACZnqC,QAASA,IAGbx0C,EAAK9D,EAAIA,EAAI,IAAIsiF,EAAS,CACtBthD,KAAM,IACNuhD,UAAWz+E,EAAK0qB,WAAWxuB,EAC3ByiF,WAAYA,EACZnqC,QAASA,IAGbx0C,EAAKq3E,WAAW91E,KAAK,CAAC,QAAS,OAAQ,MAAO,eAAgB,iBAAkB,CAC5Ew9E,aAAc,SAASriF,GACnBsD,EAAKg/E,QAAUtiF,EACfsD,EAAK6V,OAAS7V,EAAK0qB,WAAW8D,UAAU3Y,QAC5C,EAEAkiE,MAAO,SAASr7E,GACRhC,EAAEgC,EAAEwb,MAAM9Y,QAAQwF,QAAQ,KAAKI,GAAG,kCAClCtI,EAAE2F,OAAOqwB,QAEjB,EAEAusD,cAAe,SAASviF,GACpB,IASIwiF,EATAC,EAAkBn/E,EAAKg/E,QACvBI,EAAiBD,EAAgB7I,OAEjCA,EAAS55E,EAAE45E,OAEX+I,EAAa3iF,EAAE65E,SAAW4I,EAAgB5I,SAE1C0H,EAAWj+E,EAAK0qB,WAAWuzD,SAC3BI,EAAWr+E,EAAK0qB,WAAW2zD,SAG3B7pC,EAAQ1M,OAASm2C,GAAYoB,EAAa,IAE1CA,GAAiC,IAAlB,EAAIA,IAGnB7qC,EAAQ1M,MAAQu3C,GAAchB,IAC9BgB,EAAahB,EAAW7pC,EAAQ1M,OAGpC,IAAIw3C,EAAU9qC,EAAQr3C,EAAI6C,EAAK6V,OAAO0O,KAClCg7D,EAAU/qC,EAAQt4C,EAAI8D,EAAK6V,OAAOoH,IAEtCiiE,EAAc,CACV/hF,GAAImiF,EAAUF,EAAejiF,GAAKkiF,EAAa/I,EAAOn5E,EAAImiF,EAC1DpjF,GAAIqjF,EAAUH,EAAeljF,GAAKmjF,EAAa/I,EAAOp6E,EAAIqjF,GAG9D/qC,EAAQgrC,UAAUH,GAElBliF,EAAEuhF,SAASQ,EAAY/hF,GACvBjB,EAAEwiF,SAASQ,EAAYhjF,GAEvB8D,EAAK0qB,WAAWqzD,QAAQvpC,EAAQ1M,OAChC9nC,EAAKg/E,QAAUtiF,EACfA,EAAEwE,gBACN,EAEAuxB,KAAM,SAAS/1B,GACPA,EAAEwb,MAAM9Y,OAAOwpB,QAAQngB,MAAM,qBAI7BtL,EAAEshF,UAAU5+D,SAAW3jB,EAAEuiF,UAAU5+D,SACnC1iB,EAAEuhF,SAAShiF,EAAES,EAAE2/B,OACf5gC,EAAEwiF,SAAShiF,EAAER,EAAE4gC,OACfpgC,EAAEwE,kBAEFxE,EAAE6a,MAAMqlC,OAEhB,EAEAl5C,IAAK,SAAShH,GACVA,EAAEwE,gBACN,GAER,IAGAu+E,EAAkBnkF,EAAQmc,YAAYM,OAAS,YAK/CowB,EADA7sC,EAAQsc,QACI,SAASza,EAAGjB,EAAG4rC,GACvB,MAAO,eAAiB3qC,EAAI,MAAQjB,EAAI,eAAiB4rC,EAAQ,GACrE,EAEY,SAAS3qC,EAAGjB,EAAG4rC,GACvB,MAAO,aAAe3qC,EAAI,MAAQjB,EAAI,aAAe4rC,EAAQ,GACjE,EAGJ,IAAI43C,EAAUr+E,EAAWvG,OAAO,CAC5BoF,KAAM,SAAS0D,GACX,IAAI5D,EAAOjI,KAEXsJ,EAAWvB,GAAGI,KAAKoC,KAAKtC,GAExBA,EAAK4D,QAAUlJ,EAAEkJ,GACjB5D,EAAK4D,QAAQ,GAAGsB,MAAMy6E,sBAAwB,WAC9C3/E,EAAK7C,EAAI,EACT6C,EAAK9D,EAAI,EACT8D,EAAK8nC,MAAQ,EACb9nC,EAAK4/E,iBAAiBz3C,EAAUnoC,EAAK7C,EAAG6C,EAAK9D,EAAG8D,EAAK8nC,OACzD,EAEA82C,cAAe,SAAS1hD,EAAM2iD,GAC1B9nF,KAAKmlC,IAAS2iD,EACd9nF,KAAK2e,SACT,EAEAopE,QAAS,SAASh4C,GACd/vC,KAAK+vC,MAAQA,EACb/vC,KAAK2e,SACT,EAEA8oE,UAAW,SAASH,GAChBtnF,KAAK+vC,OAASu3C,EACdtnF,KAAK2e,SACT,EAEAyxB,UAAW,SAAS+2C,GAChBnnF,KAAKoF,GAAK+hF,EAAY/hF,EACtBpF,KAAKmE,GAAKgjF,EAAYhjF,EACtBnE,KAAK2e,SACT,EAEAi+B,SAAU,SAASzX,EAAMz8B,GACrB1I,KAAKmlC,GAAQz8B,EACb1I,KAAK2e,SACT,EAEA69B,OAAQ,SAAS2qC,GACbpkF,EAAO/C,KAAMmnF,GACbnnF,KAAK2e,SACT,EAEAA,QAAS,WACL,IAGIqpE,EAHA//E,EAAOjI,KACPoF,EAAI6C,EAAK7C,EACTjB,EAAI8D,EAAK9D,EAGT8D,EAAKqO,QACLlR,EAAI/B,KAAKiT,MAAMlR,GACfjB,EAAId,KAAKiT,MAAMnS,KAGnB6jF,EAAiB53C,EAAUhrC,EAAGjB,EAAG8D,EAAK8nC,SAEhB9nC,EAAKk/E,cACnBxmF,EAAM4C,QAAQuf,QAAQoB,MAAQvjB,EAAM4C,QAAQuf,QAAQtgB,QAAU,IAC9DyF,EAAK4D,QAAQ,GAAGsB,MAAMG,SAAW,WACjCrF,EAAK4D,QAAQ,GAAGsB,MAAMqf,KAAOvkB,EAAK7C,EAAI,KACtC6C,EAAK4D,QAAQ,GAAGsB,MAAM+X,IAAMjd,EAAK9D,EAAI,MAGrC8D,EAAK4D,QAAQ,GAAGsB,MAAMu6E,GAAmBM,EAE7C//E,EAAK4/E,iBAAiBG,GACtB//E,EAAKmC,QAAQ8yC,GAErB,EAEA2qC,iBAAkB,SAASV,GACvBnnF,KAAKmnF,YAAcA,CACvB,IAGJ,SAASc,EAAiBvhC,EAAYnzB,GAClC,IAEAhsB,EAFI2gF,EAAY30D,EAAOpsB,QAAQotD,MAC/B4zB,EAAazhC,EAAWwhC,GAKxB,GAFA92D,EAAOrpB,GAAG/F,QAAQuI,KAAKgpB,GAEnB40D,EAAW3gF,OAAS,GACpB,IAAKD,EAAI,EAAGA,EAAI4gF,EAAW3gF,OAAQD,IAC/B,GAAI4gF,EAAW5gF,IAAMgsB,EAAQ,CACzB40D,EAAW39E,OAAOjD,EAAG,GACrB,KACJ,OAGJ4gF,EAAW3gF,OAAS,SACbk/C,EAAWwhC,EAE1B,CAEA,IAAIE,EAAah3D,EAAOruB,OAAO,CAC3BoF,KAAM,SAAS0D,EAAS1E,GACpB,IAAIc,EAAOjI,KAEXoxB,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GAEnC,IAAIotD,EAAQtsD,EAAKd,QAAQotD,MAEnBA,KAASwvB,EAGXA,EAAYxvB,GAAO5yD,KAAMsG,GAFzB87E,EAAYxvB,GAAS,CAAEtsD,EAI/B,EAEAoC,OAAQ,CACJk6E,EACAC,EACAC,GAGJt9E,QAAS,CACL/E,KAAM,aACNmyD,MAAO,WAGXvyD,QAAS,WACLimF,EAAiBlE,EAAa/jF,KAClC,EAEAogF,SAAU,SAAS32E,EAAW9E,GAC1B,IACI0jF,EAAYvE,EADL9jF,KACqBmH,QAAQotD,OAExC,GAAI8zB,EACA,OAJOroF,KAIKoK,QAAQX,EAAW1G,EAAO,CAAC,EAAG4B,EAAEwb,MAAO,CACxCkoE,UAAWA,EACXC,WAAY3jF,EAAE2jF,aAGjC,EAEAC,MAAO,SAAS5jF,GACZ3E,KAAKogF,SAASmE,EAAW5/E,EAC7B,EAEA6jF,KAAM,SAAS7jF,GACX3E,KAAKogF,SAASoE,EAAW7/E,EAC7B,EAEA8jF,MAAO,SAAS9jF,GACZ,IACI0jF,EAAYvE,EADL9jF,KACqBmH,QAAQotD,OAEpC8zB,IACAA,EAAUK,SAJH1oF,KAImBogF,SAASqE,EAAM9/E,GAEjD,IAGJyjF,EAAWO,aAAe,SAAST,GAC/B,IACI3gF,EADAgtD,EAAQwvB,EAAYmE,IAAclE,EAAUkE,GAGhD,GAAI3zB,EAAO,CACP,IAAKhtD,EAAI,EAAGA,EAAIgtD,EAAM/sD,OAAQD,IAC1B6pB,EAAOrpB,GAAG/F,QAAQuI,KAAKgqD,EAAMhtD,IAGjCgtD,EAAM/sD,OAAS,SACRu8E,EAAYmE,UACZlE,EAAUkE,EACrB,CACJ,EAEAE,EAAWQ,OAAS7E,EAEpB,IAAI8E,EAAiBT,EAAWrlF,OAAO,CACnCoF,KAAM,SAAS0D,EAAS1E,GACpB,IAAIc,EAAOjI,KAEXoxB,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GAEnC,IAAIotD,EAAQtsD,EAAKd,QAAQotD,MAEnBA,KAASyvB,EAGXA,EAAUzvB,GAAO5yD,KAAMsG,GAFvB+7E,EAAUzvB,GAAS,CAAEtsD,EAI7B,EAEAjG,QAAS,WACLimF,EAAiBjE,EAAWhkF,KAChC,EAEAmH,QAAS,CACL/E,KAAM,iBACNmyD,MAAO,UACPhlC,OAAQ,QAIZu5D,EAAY13D,EAAOruB,OAAO,CAC1BoF,KAAM,SAAS0D,EAAS1E,GACpB,IAAIc,EAAOjI,KAEXoxB,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GAEnCc,EAAK8gF,YAAa,EAEd/oF,KAAKmH,QAAQu8E,iBACbz7E,EAAKy7E,eAAiB,IAAIP,EAAel7E,EAAK4D,QAAS,CACnDzM,QAAQ,EACRmwB,OAAQtnB,EAAKd,QAAQooB,OACrBzZ,MAAO7N,EAAK+gF,qBAAqBx/E,KAAKvB,GACtCyyB,KAAMzyB,EAAKghF,MAAMz/E,KAAKvB,GACtB0D,IAAK1D,EAAK66E,KAAKt5E,KAAKvB,GACpB0yB,OAAQ1yB,EAAKihF,UAAU1/E,KAAKvB,MAIpCA,EAAKq3E,WAAa,IAAIoB,EAAWz4E,EAAK4D,QAAS,CAC3CzM,QAAQ,EACRmiF,gBAAgB,EAChBhyD,OAAQtnB,EAAKd,QAAQooB,OACrBkwD,UAAWx3E,EAAKd,QAAQq3E,SACxB1oE,MAAO7N,EAAK24E,OAAOp3E,KAAKvB,GACxBkhF,KAAMlhF,EAAKi4E,MAAM12E,KAAKvB,GACtByyB,KAAMzyB,EAAKghF,MAAMz/E,KAAKvB,GACtB0D,IAAK1D,EAAK66E,KAAKt5E,KAAKvB,GACpB0yB,OAAQ1yB,EAAKihF,UAAU1/E,KAAKvB,GAC5Bs+B,OAAQt+B,EAAKy6E,QAAQl5E,KAAKvB,GAC1B+3E,MAAO/3E,EAAK+8E,OAAOx7E,KAAKvB,KAGxBtH,EAAM4C,QAAQic,OACdvX,EAAK4D,QAAQsqB,KAAKluB,EAAKd,QAAQooB,QAAQtjB,IAAI,eAAgB,QAG/DhE,EAAKmhF,iBAAmBnhF,EAAKohF,UAAU7/E,KAAKvB,GAC5CA,EAAKqhF,eAAiBrhF,EAAKqhF,eAAe9/E,KAAKvB,EACnD,EAEAoC,OAAQ,CACJyyE,EACAoH,EACAC,EACAC,EACAC,EACAC,GAGJn9E,QAAS,CACL/E,KAAM,YACNo8E,SAAY79E,EAAM4C,QAAQic,MAAQ,EAAI,EACtC+0C,MAAO,UACPg1B,aAAc,KACdpkD,KAAM,KACN1O,UAAW,KACXlH,OAAQ,KACR0gC,OAAQ,KACRu5B,YAAY,EACZC,gBAAgB,EAChBC,YAAY,EACZhB,SAAS,EACThF,gBAAgB,EAChBiG,uBAAuB,GAG3BC,WAAY,WACR5pF,KAAK+oF,YAAa,CACtB,EAEAO,eAAgB,SAAS3kF,GACrB,IAAIsD,EAAOjI,KAEP2E,EAAE2iC,UAAY3mC,EAAMkqB,KAAKM,MACzBljB,EAAKq3E,WAAW3kD,SAEZ1yB,EAAKy7E,gBACLz7E,EAAKy7E,eAAe/oD,SAGxB36B,KAAKogF,SAASiE,EAAY,CAAElkE,MAAOxb,IAE3C,EAEAklF,YAAa,SAASllF,GAClB,IACIwiF,EADAl/E,EAAOjI,KAEPmH,EAAUc,EAAKd,QACf2iF,EAAa7hF,EAAK6hF,WAClB3kD,EAAOh+B,EAAQg+B,KACfokD,EAAethF,EAAKd,QAAQoiF,aAE5BA,EACDpC,EAAc,CAAE36D,KAAM7nB,EAAES,EAAEie,SAAWkmE,EAAa/8D,KAAMtH,IAAKvgB,EAAER,EAAEkf,SAAWkmE,EAAarkE,KAEtE,IAAdvgB,EAAES,EAAE2/B,OAA6B,IAAdpgC,EAAER,EAAE4gC,OACvB98B,EAAK8hF,WAAWv9D,MAAQ7nB,EAAES,EAAE2/B,MAC5B98B,EAAK8hF,WAAW7kE,KAAOvgB,EAAER,EAAE4gC,MAC3BoiD,EAAcxkF,EAAEI,OAAO,CAAC,EAAGkF,EAAK8hF,cAEhC9hF,EAAK8hF,WAAWv9D,KAAO7nB,EAAES,EAAE45E,cAAgBr6E,EAAES,EAAEg6E,aAC/Cn3E,EAAK8hF,WAAW7kE,IAAMvgB,EAAER,EAAE66E,cAAgBr6E,EAAER,EAAEi7E,aAC9C+H,EAAcxkF,EAAEI,OAAO,CAAC,EAAGkF,EAAK8hF,aAIpCD,IACA3C,EAAYjiE,IAAMy/D,EAAOwC,EAAYjiE,IAAK4kE,EAAW3lF,GACrDgjF,EAAY36D,KAAOm4D,EAAOwC,EAAY36D,KAAMs9D,EAAW1kF,IAG9C,MAAT+/B,SACOgiD,EAAYjiE,IACH,MAATigB,UACAgiD,EAAY36D,KAGvBvkB,EAAK+hF,KAAK/9E,IAAIk7E,EAClB,EAEA8C,oBAAqB,SAAS5iF,GAC1B,IAAI6iF,EAAiBlqF,KAAKmH,QAAQ8oD,OAClC,OAAOi6B,GAAkBvnF,EAAE0E,GAAQ4F,GAAGi9E,EAC1C,EAEAxH,QAAS,SAAS/9E,GACT3E,KAAKiqF,oBAAoBtlF,EAAEwb,MAAM9Y,SAClC1C,EAAEwE,gBAEV,EAEA6/E,qBAAsB,SAASrkF,GAC3B3E,KAAK+oF,YAAa,EAElB/oF,KAAK4gF,OAAOj8E,EAChB,EAEAwlF,MAAO,WACH,IAAIliF,EAAOjI,KACPgqF,EAAO/hF,EAAKd,QAAQ6iF,KAExB,GAAIA,EAAM,CACF/hF,EAAK+hF,MACL/hF,EAAK+hF,KAAKxhE,MAAK,GAAM,GAAMnc,SAG/BpE,EAAK+hF,KAAOrpF,EAAMuI,WAAW8gF,GAAQrnF,EAAEqnF,EAAKz/E,KAAKtC,EAAMA,EAAK02E,gBAAkBqL,EAE9E,IAAIlsE,EAAS+P,EAAU5lB,EAAK02E,eAC5B12E,EAAK8hF,WAAajsE,EAElB7V,EAAK+hF,KAAK/9E,IAAK,CACXqB,SAAU,WACV0sC,OAAQ,IACRxtB,KAAM1O,EAAO0O,KACbtH,IAAKpH,EAAOoH,MAEfhZ,SAASyD,EAASqP,KACvB,CACJ,EAEA4hE,OAAQ,SAASj8E,GACb,IAAIsD,EAAOjI,KACPmH,EAAUc,EAAKd,QACfsvB,EAAYtvB,EAAQsvB,UAAY9zB,EAAEwE,EAAQsvB,WAAa,KACvDuzD,EAAO7iF,EAAQ6iF,KAEfhqF,KAAKiqF,oBAAoBtlF,EAAE6a,MAAMkgE,eAAkBv4E,EAAQqiF,aAAevhF,EAAK8gF,WAC/E9gF,EAAKq3E,WAAW3kD,UAIpB1yB,EAAK02E,cAAgBh6E,EAAE0C,OACvBY,EAAKmiF,oBAAsBv8D,EAAU5lB,EAAK02E,eAEtCqL,GACA/hF,EAAKkiF,QAGTrG,EAAW38E,EAAQotD,OAAStsD,EAE5BA,EAAKygF,SAAU,EAEXjyD,IACAxuB,EAAK6hF,WAAalF,EAAoBnuD,EAAWxuB,EAAK+hF,OAG1DrnF,EAAEgN,GAAUka,GAAGo6D,EAAOh8E,EAAKqhF,gBAEvBrhF,EAAKm4E,SAAS8D,EAAWv/E,KACzBsD,EAAKq3E,WAAW3kD,SAEZ1yB,EAAKy7E,gBACLz7E,EAAKy7E,eAAe/oD,SAGxB1yB,EAAKohF,aAGTphF,EAAKq3E,WAAWgD,UACpB,EAEApC,MAAO,SAASv7E,GACZ3E,KAAK2+E,cAAgBh6E,EAAE0C,OAEnBrH,KAAKogF,SAAStD,EAAMn4E,GACpB3E,KAAKs/E,WAAW3kD,UAEhB36B,KAAK+oF,YAAa,EACd/oF,KAAKmH,QAAQsiF,gBACbzpF,KAAKmqF,QAGjB,EAEAlB,MAAO,SAAStkF,GACZA,EAAEwE,iBAEF,IAAIkhF,EAAgBrqF,KAAKsqF,oBAAoB3lF,GAU7C,GARI3E,KAAKmH,QAAQuiF,YAAc1pF,KAAKuqF,iBAAmBF,IACnDrqF,KAAKwqF,kBAAoBC,EAAqBJ,GAC9CrqF,KAAKuqF,eAAiBF,GAG1BrqF,KAAK0qF,WAAa/lF,EAClB3E,KAAK2qF,iBAAiBhmF,EAAG0lF,GAErBrqF,KAAKmH,QAAQuiF,YAET1pF,KAAKwqF,kBAAkB,GAAI,CAC3B,IAAIvL,EAAW2L,EAAmBjmF,EAAES,EAAEie,SAAU1e,EAAER,EAAEkf,SAAUwnE,EAAmB7qF,KAAKwqF,oBAGtFxqF,KAAK8qF,qBAAuBnoF,EAAEI,OAAO,CAAC,EAAG/C,KAAK+pF,YAC9C/pF,KAAK+qF,gBAAkB9L,EAEJ,IAAfA,EAAS96E,GAA0B,IAAf86E,EAAS75E,GAC7B85C,cAAcl/C,KAAKgrF,iBACnBhrF,KAAKgrF,gBAAkB,MACfhrF,KAAKgrF,kBACbhrF,KAAKgrF,gBAAkB/rC,YAAYj/C,KAAKirF,YAAYzhF,KAAKxJ,MAAO,IAExE,CAGAA,KAAKgqF,MACLhqF,KAAK6pF,YAAYllF,EAEzB,EAEAgmF,iBAAkB,SAAShmF,EAAG0lF,GAC1BrqF,KAAKkrF,gBAAgBb,GAAe,SAAShjF,EAAQ8jF,GACjD,GAAK9jF,EAAL,CAQA,GAAIu8E,EAAgB,CAChB,GAAIuH,IAAkBvH,EAAeuH,cACjC,OAGJvH,EAAexD,SAASoE,EAAWzhF,EAAO4B,EAAG,CAAE2jF,WAAY3lF,EAAEihF,EAAeuH,iBAChF,CAEA9jF,EAAO+4E,SAASmE,EAAWxhF,EAAO4B,EAAG,CAAE2jF,WAAY3lF,EAAEwoF,MACrDvH,EAAiB7gF,EAAOsE,EAAQ,CAAE8jF,cAAeA,GAXjD,MALQvH,IACAA,EAAexD,SAASoE,EAAWzhF,EAAO4B,EAAG,CAAE2jF,WAAY3lF,EAAEihF,EAAeuH,kBAC5EvH,EAAiB,KAe7B,IAEA5jF,KAAKogF,SAAS+D,EAAMphF,EAAO4B,EAAG,CAAE2jF,WAAY1E,EAAgBj/C,mBAAoB0lD,IACpF,EAEAY,YAAa,WACT,IAAIt+E,EAAS3M,KAAKwqF,kBAAkB,GAChCvL,EAAWj/E,KAAK+qF,gBAChBK,EAAeprF,KAAK8qF,qBAExB,GAAKn+E,EAAL,CAIA,IAGI0+E,EAAeC,EAHfjB,EAAgBrqF,KAAKsqF,oBAAoBtqF,KAAK0qF,YAClD1qF,KAAK2qF,iBAAiB3qF,KAAK0qF,WAAYL,GAIvC,IAAIkB,EAAa5+E,IAAW6+E,IAAiB,GAEzCD,GACAF,EAAgB17E,EAASqP,KAAK+F,aAAe8+D,EAAQ73E,SACrDs/E,EAAgB37E,EAASqP,KAAKG,YAAc0kE,EAAQ93E,UAEpDs/E,EAAgB1+E,EAAOgoB,cAAgBhoB,EAAOoY,aAC9CumE,EAAgB3+E,EAAOuS,aAAevS,EAAOwS,aAGjD,IAAI+hE,EAASv0E,EAAOmqB,UAAYmoD,EAAS96E,EACrCsnF,EAAYJ,GAAiBnK,EAAS,GAAKA,EAASv0E,EAAOoY,aAE3Dk8D,EAASt0E,EAAO4gB,WAAa0xD,EAAS75E,EACtCsmF,EAAYJ,GAAiBrK,EAAS,GAAKA,EAASt0E,EAAOwS,YAE3DssE,EACA9+E,EAAOmqB,WAAamoD,EAAS96E,EACtBknF,GAAiBnK,EAAS,IACjCv0E,EAAOmqB,UAAY,GAGnB40D,EACA/+E,EAAO4gB,YAAc0xD,EAAS75E,EACvBkmF,GAAiBrK,EAAS,IACjCt0E,EAAO4gB,WAAa,GAGpBvtB,KAAKgqF,MAAQuB,IAAeG,GAAaD,KACrCA,IACAL,EAAalmE,KAAO+5D,EAAS96E,GAG7BunF,IACAN,EAAa5+D,MAAQyyD,EAAS75E,GAGlCpF,KAAKgqF,KAAK/9E,IAAIm/E,GA5ClB,CA8CJ,EAEApG,OAAQ,SAAS3jF,GACTrB,KAAKmH,QAAQwiF,wBACbtoF,EAAGgG,OAAO4E,IAAI,sBAAuB,QACrC5K,EAAGgG,OAAOuc,KAAK,eAAgB,MAC/BviB,EAAGgG,OAAOsC,IAAI,eAAgBtI,IAC1BA,EAAG8H,gBAAgB,IAG/B,EAEA25E,KAAM,SAASn+E,GACX3E,KAAKkrF,gBAAgBlrF,KAAKsqF,oBAAoB3lF,IAAI,SAAS0C,EAAQ8jF,GAC3D9jF,IACAA,EAAOohF,MAAM1lF,EAAO,CAAC,EAAG4B,EAAG,CAAE2jF,WAAY3lF,EAAEwoF,MAC3CvH,EAAiB,KAEzB,IAEA1kC,cAAcl/C,KAAKgrF,iBACnBhrF,KAAKgrF,gBAAkB,KACvBhrF,KAAK2rF,QAAQ3rF,KAAKogF,SAASgE,EAASz/E,GACxC,EAEAukF,UAAW,SAASvkF,GAChB3E,KAAK2rF,UACL3rF,KAAKogF,SAASiE,EAAY,CAAElkE,MAAOxb,GACvC,EAEAgnF,QAAS,SAAStiF,GACd,IAAIpB,EAAOjI,KAEXiI,EAAKuiF,kBAAoB,KACzBxqF,KAAKuqF,eAAiB,KACtBrrC,cAAcl/C,KAAKgrF,iBACnB/iF,EAAK8gF,YAAa,EAEd9gF,EAAK+hF,OAAS/hF,EAAKygF,QACnBxvD,YAAW,WACPjxB,EAAK+hF,KAAKxhE,MAAK,GAAM,GAEjBnf,EACApB,EAAKmhF,mBAELnhF,EAAK+hF,KAAKtiE,QAAQzf,EAAKmiF,oBAAqB,OAAQniF,EAAKmhF,iBAEjE,GAAG,GAEHnhF,EAAKohF,WAEb,EAEAjJ,SAAU,SAAS32E,EAAW9E,GAG1B,OAFW3E,KAECoK,QACRX,EAAW1G,EACX,CAAC,EACD4B,EAAEwb,MACF,CACI/a,EAAGT,EAAES,EACLjB,EAAGQ,EAAER,EACLw6E,cATG3+E,KASiB2+E,cACpBiN,cAAejnF,EAAE6a,MAAQ7a,EAAE6a,MAAMkgE,aAAe,KAChD4I,WAAY3jF,EAAE2jF,WACd3jD,mBAAoBhgC,EAAEggC,mBACtB++C,eAAgB/+E,EAAE++E,iBAG9B,EAEA4G,oBAAqB,SAAS3lF,GAC1B,IAAI0C,EAASs9B,EAAmBhgC,GAC5BqlF,EAAOhqF,KAAKgqF,KAYhB,OAVIA,GAv9BZ,SAAkBr9E,EAAQk3B,GACtB,IACI,OAAOlhC,EAAE4yB,SAAS5oB,EAAQk3B,IAAUl3B,GAAUk3B,CAClD,CAAE,MAAOl/B,GACL,OAAO,CACX,CACJ,CAi9BoB4wB,CAASy0D,EAAK,GAAI3iF,KAC1B2iF,EAAKt8E,QACLrG,EAASs9B,EAAmBhgC,MAGxB0C,EAASs9B,EAAmBhgC,IAEhCqlF,EAAKv8E,QAGFpG,CACX,EAEA6jF,gBAAiB,SAASr/E,EAAS+d,GAC/B,IAAI9S,EACAy9C,EAAQv0D,KAAKmH,QAAQotD,MACrBs3B,EAAU9H,EAAYxvB,GACtBu3B,EAAQ9H,EAAUzvB,IAElBs3B,GAAWA,EAAQrkF,QAAUskF,GAASA,EAAMtkF,UAC5CsP,EA58BZ,SAAqBzP,EAAQwkF,EAASC,GAKlC,IAJA,IAAIC,EAAWC,EAAWzkF,EAAI,EAC1B0kF,EAAYJ,GAAWA,EAAQrkF,OAC/B0kF,EAAUJ,GAASA,EAAMtkF,OAEtBH,GAAUA,EAAOmf,YAAY,CAChC,IAAKjf,EAAI,EAAGA,EAAI0kF,EAAW1kF,IAEvB,IADAwkF,EAAYF,EAAQtkF,IACNsE,QAAQ,KAAOxE,EACzB,MAAO,CAAEA,OAAQ0kF,EAAWZ,cAAe9jF,GAInD,IAAKE,EAAI,EAAGA,EAAI2kF,EAAS3kF,IAErB,GADAykF,EAAYF,EAAMvkF,GACd5E,EAAE4yB,SAASy2D,EAAUngF,QAAQ,GAAIxE,IAAW9D,EAAQyiB,gBAAgBzb,KAAKlD,EAAQ2kF,EAAU7kF,QAAQooB,QACnG,MAAO,CAAEloB,OAAQ2kF,EAAWb,cAAe9jF,GAInDA,EAASA,EAAOmf,UACpB,CAGJ,CAo7BqB2lE,CAAYtgF,EAASggF,EAASC,GAEnCh1E,EACA8S,EAAS9S,EAAOzP,OAAQyP,EAAOq0E,eAE/BvhE,IAGZ,EAEA5nB,QAAS,WACL,IAAIiG,EAAOjI,KAEXoxB,EAAOrpB,GAAG/F,QAAQuI,KAAKtC,GAEvBA,EAAKohF,YAELphF,EAAKq3E,WAAWt9E,UAEZiG,EAAKy7E,gBACLz7E,EAAKy7E,eAAe1hF,UAGxBhC,KAAKwqF,kBAAoB,KACzBxqF,KAAKuqF,eAAiB,KACtBrrC,cAAcl/C,KAAKgrF,iBAEnB/iF,EAAK02E,cAAgB,IACzB,EAEA0K,UAAW,WACP,IAAIphF,EAAOjI,KAEPiI,EAAK+hF,MACL/hF,EAAK+hF,KAAK39E,gBAGPy3E,EAAW77E,EAAKd,QAAQotD,OAE/BtsD,EAAKmC,QAAQ,WACbnC,EAAKmC,QAAQk6E,GACb3hF,EAAEgN,GAAUypB,IAAI6qD,EAAOh8E,EAAKqhF,eAChC,IAeJ,SAASuB,EAAmBh/E,GACxB,IACIiS,EACAoH,EACAsH,EAHAqxB,EAAO2tC,IAAiB,GAK5B,OAAI3/E,EAAQ,KAAOgyC,EAIR,CACH34B,IAJJA,EAAM24B,EAAK/mB,UAKPtK,KAJJA,EAAOqxB,EAAKtwB,WAKRb,OAAQxH,EAAM2+D,EAAQ73E,SACtBygB,MAAOD,EAAOq3D,EAAQ93E,WAG1B+R,EAASjS,EAAQiS,UACV4O,OAAS5O,EAAOoH,IAAMrZ,EAAQG,SACrC8R,EAAO2O,MAAQ3O,EAAO0O,KAAO3gB,EAAQE,QAC9B+R,EAEf,CAEA,SAAS0tE,IACL,OAAO7oF,EAAEhC,EAAM4C,QAAQuf,QAAQiB,MAAQpjB,EAAM4C,QAAQuf,QAAQkB,OAASrU,EAASqP,KAAOrP,EAASiK,gBACnG,CAEA,SAAS6wE,EAAqB5+E,GAC1B,IAAIgyC,EAAO2tC,IAEX,IAAK3/E,GAAWA,IAAY8D,EAASqP,MAAQnT,IAAY8D,EAASiK,gBAC9D,OAAOikC,EAKX,IAFA,IAAIlxC,EAAShK,EAAEkJ,GAAS,GAEjBc,IAAWhM,EAAMwsB,aAAaxgB,IAAWA,IAAWgD,EAASqP,MAChErS,EAASA,EAAO6Z,WAGpB,OAAI7Z,IAAWgD,EAASqP,KACb6+B,EAGJl7C,EAAEgK,EACb,CAEA,SAASi+E,EAAmBwB,EAAQC,EAAQC,GACxC,IAAIrN,EAAW,CAAE75E,EAAG,EAAGjB,EAAG,GAEtBooF,EAAmB,GAcvB,OAZIH,EAASE,EAAK9/D,KAAO+/D,EACrBtN,EAAS75E,IAAMmnF,GAAoBH,EAASE,EAAK9/D,OAC1C8/D,EAAK7/D,MAAQ2/D,EAASG,IAC7BtN,EAAS75E,EAAImnF,GAAoBD,EAAK7/D,MAAQ2/D,IAG9CC,EAASC,EAAKpnE,IAAMqnE,EACpBtN,EAAS96E,IAAMooF,GAAoBF,EAASC,EAAKpnE,MAC1ConE,EAAK5/D,OAAS2/D,EAASE,IAC9BtN,EAAS96E,EAAIooF,GAAoBD,EAAK5/D,OAAS2/D,IAG5CpN,CACX,CA9EAt+E,EAAM4pB,GAAG2M,OAAOkxD,GAChBznF,EAAM4pB,GAAG2M,OAAO2xD,GAChBloF,EAAM4pB,GAAG2M,OAAO4xD,GAChBnoF,EAAMokF,WAAaA,EACnBpkF,EAAMikF,oBAAsBA,EAE5B7hF,EAAOpC,EAAM4pB,GAAI,CACbu8D,KAAMA,EACNV,eAAgBA,EAChBuB,QAASA,IAwEbhnF,EAAM4pB,GAAGu+D,UAAU0D,MAAQ,CACvB5B,mBAAoBA,EACpBC,mBAAoBA,EACpBJ,qBAAsBA,EAG5B,CAhpCF,CAgpCI3pF,OAAOH,MAAM+G,QACH/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfb,EAASa,EAAMb,OACf0qB,EAAK7pB,EAAMymB,QACXmD,EAAKzqB,EAAOyqB,GACZxnB,EAASJ,EAAEI,OACXquB,EAAS7G,EAAG6G,OACZxpB,EAAQjH,EAAMiH,MACd+/E,EAAUhnF,EAAM4pB,GAAGo9D,QACnBb,EAAOnmF,EAAM4pB,GAAGu8D,KAChBV,EAAiBzlF,EAAM4pB,GAAG67D,eAC1B/pC,EAAa7xB,EAAG6xB,WAChBP,EAAYtxB,EAAGsxB,UACfrkC,EAAMpU,KAAKoU,IAQXg1E,EAAe,sBACfC,EAAe,sBAEfxvC,EAAS,SAETyvC,EAAS,SAGTC,EAAe9wC,EAAU/4C,OAAO,CAChCoF,KAAM,SAAShB,GACX,IAAIc,EAAOjI,KACX87C,EAAU/zC,GAAGI,KAAKoC,KAAKtC,GACvBlF,EAAOkF,EAAMd,GAEbc,EAAKq3E,WAAW91E,KAAK,aAAcvB,EAAK6N,MAAMtM,KAAKvB,IACnDA,EAAK4kF,WAAWrjF,KAAK,QAASvB,EAAK0yB,OAAOnxB,KAAKvB,GACnD,EAEA6f,QAAS,WACP,OAAO9nB,KAAKy8C,QAAQ1M,MAAQ/vC,KAAK2yB,WAAWuzD,QAC9C,EAEAt5C,KAAM,WACF,OAAO5sC,KAAK2yB,WAAWuzD,SAAWlmF,KAAKy8C,QAAQ1M,MAAQ,GAC3D,EAEAmM,KAAM,WACF,IAAIO,EAAUz8C,KAAKy8C,QACnBA,EAAQgrC,UAAU,KAClBznF,KAAK2yB,WAAWqzD,QAAQvpC,EAAQ1M,MACpC,EAEAoM,MAAO,WACH,IAAIM,EAAUz8C,KAAKy8C,QACnBA,EAAQsrC,QAAQ/nF,KAAK2yB,WAAWuzD,UAChClmF,KAAK2yB,WAAWqzD,QAAQvpC,EAAQ1M,MACpC,IAGA+8C,EAAchxC,EAAU/4C,OAAO,CAC/BoF,KAAM,SAAShB,GACX,IAAIc,EAAOjI,KAEX87C,EAAU/zC,GAAGI,KAAKoC,KAAKtC,GAEvBlF,EAAOkF,EAAMd,EAAS,CAClBorC,WAAY,IAAI8J,EAAW,CACvBlX,KAAMh+B,EAAQg+B,KACdsX,QAASt1C,EAAQs1C,QACjBN,MAAO,WAAal0C,EAAK66E,MAAQ,MAIzC76E,EAAK4kF,WAAWrjF,KAAK,SAAS,WAAavB,EAAK0yB,QAAU,IAC1D1yB,EAAKq3E,WAAW91E,KAAK,MAAOvB,EAAK6N,MAAMtM,KAAKvB,IAC5CA,EAAKq3E,WAAW91E,KAAK,aAAcvB,EAAK6N,MAAMtM,KAAKvB,IACnDA,EAAKq3E,WAAW91E,KAAK,MAAOvB,EAAKk0C,MAAM3yC,KAAKvB,GAChD,EAEAm0C,SAAU,WACNp8C,KAAKuyC,WAAW5X,QACpB,EAEAoyD,OAAQ,SAAS1pE,GACFrjB,KACN26B,SADM36B,KAENgtF,QAAQ3pE,EACjB,EAEA84B,MAAO,WACH,IAAIl0C,EAAOjI,KACPiI,EAAKglF,SAASpH,cACd59E,EAAKilF,YAELjlF,EAAK66E,MAEb,EAEAl2C,KAAM,WACF,OAAOn1B,EAAIzX,KAAKi/E,UAAY,CAChC,EAEAnpE,MAAO,SAASnR,GACZ,IACIs6E,EADAh3E,EAAOjI,KAGNiI,EAAKy+E,UAAU5+D,UAEhB7f,EAAKglF,SAASpH,cACV59E,EAAKsqC,WAAW0J,UAChBh0C,EAAKsqC,WAAW5X,SAChB1yB,EAAKg3E,SAAW57E,KAAKqT,IAAI/R,EAAE6a,MAAMvX,EAAKk9B,MAAM85C,SAAWh3E,EAAKklF,mBA9FzD,IAgGHrxC,EAAU/zC,GAAG+N,MAAMvL,KAAKtC,IAExBA,EAAKilF,aAGTjO,EA5FS,IA4FEt6E,EAAE6a,MAAM6Q,GAAwB,EAAI1rB,EAAE6a,MAAMvX,EAAKk9B,MAAM85C,SAClEh3E,EAAKg3E,SAAW57E,KAAK8V,IAAI9V,KAAKqT,IAAIuoE,EAAWh3E,EAAKklF,mBAtG3C,SAwGPllF,EAAK4kF,WAAW1H,cAChBrpC,EAAU/zC,GAAG+N,MAAMvL,KAAKtC,IAEhC,EAEAi0C,KAAM,WACF,IAAIj0C,EAAOjI,KACP0mF,EAAYz+E,EAAKy+E,UACjB0G,EAAWnlF,EAAKglF,SAASpH,cA/GR,GA+GiD59E,EAAKmlF,SACvEroD,EAAS98B,EAAKg3E,UAAYmO,EAC1B/pE,EAAWpb,EAAKw0C,QAAQx0C,EAAKk9B,MAAQJ,GAEhC98B,EAAK8+E,SAAWL,EAAUb,YAAYxiE,KACvCA,EAAWhgB,KAAK8V,IAAI9V,KAAKqT,IAAI2M,EAAUqjE,EAAUvtE,KAAMutE,EAAUhwE,KACjEzO,EAAKg3E,SAAW,GAGxBh3E,EAAKw0C,QAAQG,SAAS30C,EAAKk9B,KAAM9hB,EACrC,EAEAy/D,KAAM,WACF9iF,KAAK6sF,WAAWzH,gBAChBplF,KAAK2L,KACT,EAEAuhF,UAAW,WACP,IAAIjlF,EAAOjI,KACP0mF,EAAYz+E,EAAKy+E,UACjB2G,EAAWplF,EAAKw0C,QAAQx0C,EAAKk9B,MAAQuhD,EAAUvtE,IAAMutE,EAAUvtE,IAAMutE,EAAUhwE,IACnFzO,EAAK+kF,QAAQK,EACjB,EAEAL,QAAS,SAAS3pE,GACdrjB,KAAKuyC,WAAWiK,OAAO,CAAEn5B,SAAUA,EAAUiE,SA7I7B,IA6I0DysB,KAAMsI,EAAWQ,aAC/F,IAGAywC,EAAmBxxC,EAAU/4C,OAAO,CACpCoF,KAAM,SAAShB,GAGXxG,EAAMymB,QAAQ00B,UAAU/zC,GAAGI,KAAKoC,KAAKvK,MAErC+C,EAJW/C,KAIEmH,EAAS,CAClB6xC,OAAQ,CAAC,EACTrrC,YAAa,CAAC,EACdmQ,OAAQ,CAAC,GAEjB,EAEAo+B,KAAM,WACFl8C,KAAKutF,qBACLvtF,KAAKw8C,OAAOx8C,KAAKg5C,OACrB,EAEApM,KAAM,WACF,OAAOn1B,EAAIzX,KAAK8d,OAAO3Z,GA9JG,GA8JiCsT,EAAIzX,KAAK8d,OAAO1Y,GA9JjD,CA+J9B,EAEA+2C,MAAO,WACHn8C,KAAKw8C,OAAOx8C,KAAK2N,aACb3N,KAAK4pB,UACL5pB,KAAK4pB,SAASrf,MAEtB,EAEAijF,eAAgB,SAASzxE,EAAMuiB,GAC3Bt+B,KAAK8d,OAAS,CAAC,EACf9d,KAAKg5C,OAASj9B,EACd/b,KAAK2N,YAAc2wB,CACvB,EAEAmvD,YAAa,SAAS7jE,GACdA,GAAYjpB,EAAMuI,WAAW0gB,GAC7B5pB,KAAK4pB,SAAWA,EAEhBA,EAtMhB,SAwMQ,EAEA2jE,mBAAoB,WAChBvtF,KAAK8d,OAAS,CACV1Y,GAAIpF,KAAK2N,YAAYvI,EAAIpF,KAAKg5C,OAAO5zC,GAAK,EAC1CjB,GAAInE,KAAK2N,YAAYxJ,EAAInE,KAAKg5C,OAAO70C,GAAK,GAG9CnE,KAAKg5C,OAAS,CACV70C,EAAGnE,KAAKg5C,OAAO70C,EAAInE,KAAK8d,OAAO3Z,EAC/BiB,EAAGpF,KAAKg5C,OAAO5zC,EAAIpF,KAAK8d,OAAO1Y,EAEvC,IAGAsoF,EAAY9lF,EAAM7E,OAAO,CACzBoF,KAAM,SAAShB,GACX,IAAIc,EAAOjI,KACP0yC,EAA8B,MAAjBvrC,EAAQg+B,KACrBt5B,EAAUlJ,EAAE,wCAA0CwE,EAAQwmF,WAAa,mCAAqCj7C,EAAa,aAAe,YAAc,kBAE1JA,GACA7mC,EAAQ+X,KAAK,mBAAoB,cAGrC7gB,EAAOkF,EAAMd,EAAS,CAClB0E,QAASA,EACT+hF,YAAa,EACbnxC,QAAS,IAAIkrC,EAAQ97E,GACrBgiF,cAAe1mF,EAAQs1C,QACvBqxC,cAAe3mF,EAAQ2mF,cACvB99E,KAAM0iC,EAAa,QAAU,WAGjCzqC,EAAK4lF,cAAcrkF,KAAK0zC,EAAQj1C,EAAK0W,QAAQnV,KAAKvB,IAClDA,EAAKwuB,UAAU0jB,OAAOtuC,GAClB1E,EAAQ2mF,eACR7lF,EAAKwF,MAEb,EAEAkR,QAAS,WACL,IAAI1W,EAAOjI,KACPmlC,EAAOl9B,EAAKk9B,KACZuhD,EAAYz+E,EAAKy+E,UACjBqH,EAAWrH,EAAU12E,KACrB69E,EAAgB5lF,EAAK4lF,cACrBG,EAAYD,EAAWrH,EAAU1/B,MACjC15C,EAAWjK,KAAKiT,OAAOu3E,EAAc1oD,GAAQ6oD,GAC7Ch+E,EAAO3M,KAAKiT,MAAMy3E,EAAWC,GAEzBA,GAAa,EACbhuF,KAAK6L,QAAQI,IAAI,UAAW,QAE5BjM,KAAK6L,QAAQI,IAAI,UAAW,IAG5BqB,EAAW0C,EAAO+9E,EAClB/9E,EAAO+9E,EAAWzgF,EACXA,EAAW,IAClB0C,GAAQ1C,EACRA,EAAW,GAGfrF,EAAK2lF,aAAe59E,IACpB/H,EAAK4D,QAAQI,IAAIhE,EAAK+H,KAAMA,EAAO,MACnC/H,EAAK2lF,YAAc59E,GAGvB/H,EAAKgmF,WAAW3gF,EAAUo5E,EAAU12E,KAAO/H,EAAK2lF,aAEhD3lF,EAAKw0C,QAAQG,SAASzX,EAAM73B,EAChC,EAEAG,KAAM,WACFzN,KAAK6L,QAAQI,IAAI,CAAE8qB,QApQH,GAoQ+Bm3D,WAAY,WAC/D,EAEAxgF,KAAM,WACG1N,KAAK8tF,eACN9tF,KAAK6L,QAAQI,IAAI,CAAE8qB,QAAS,GAEpC,EAEAk3D,WAAY,SAASj6E,EAASgzC,GAC1B,IAAIn7C,EAAU7L,KAAK6L,QAEfmI,EAAUgzC,IACVhzC,EAAUgzC,GAGdn7C,EAAQ+X,KAAK,gBAAiBojC,GAC9Bn7C,EAAQ+X,KAAK,gBAAiB5P,EAClC,IAGA6kB,EAAWzH,EAAOruB,OAAO,CACzBoF,KAAM,SAAS0D,EAAS1E,GACpB,IAAIc,EAAOjI,KAMX,GALAoxB,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GAEnC0E,EAAU5D,EAAK4D,QAEf5D,EAAKkmF,QAAUlmF,EAAKd,QAAQyxB,WAAaj4B,EAAM4C,QAAQmgB,mBACnDzb,EAAKkmF,QASL,OARAtiF,EAAQwZ,SAAS,sBACZ+oE,QAAQ,wCAEbrrF,EAAOkF,EAAM,CACTomF,cAAexiF,EACfyiF,eAAgBziF,EAAQ0pC,WAAWrrC,UAM3C2B,EACKI,IAAI,WAAY,UAChBoZ,SAAS,qBACTg2D,UAAU,sCACV+S,QAAQ,mCAEb,IAAIrxC,EAAQlxC,EAAQ0pC,WAAWvd,GAAG,GAE9B60D,EAAa,IAAIlsF,EAAMokF,WAAWl5E,GAElC4wC,EAAU,IAAIkrC,EAAQ5qC,GAEtBpqB,EAAa,IAAIyzD,EAAe,CAC5Bv6E,QAASkxC,EACTtmB,UAAW5qB,EACXy5E,cAAer9E,EAAKd,QAAQspC,OAGhC89C,EAAiBvuF,KAAKmH,QAAQonF,eAE9BjP,EAAa,IAAI3+E,EAAM+/E,WAAW70E,EAAS,CACvCk2E,YAAa,QACbN,SAAS,EACTF,gBAAgB,EAChBS,kBAAkB,EAClBR,kBAAkB,EAClBF,WAAYr5E,EAAKd,QAAQspC,KACzBovC,iBAAkB53E,EAAKd,QAAQ04E,iBAC/B/pE,MAAO,SAASnR,GACZguB,EAAWhU,UAEX,IAAI6vE,EAAY/2E,EAAI9S,EAAES,EAAE65E,UACpBwP,EAAYh3E,EAAI9S,EAAER,EAAE86E,UACpByP,EAA8B,EAAZF,GAAiBC,EAEnCE,EAA4B,EAAZF,GAAiBD,GADF7rF,EAAE4yB,SAASttB,EAAKqmF,eAAe,GAAI3pF,EAAEwb,MAAM9Y,UAIxCknF,EAAe5pF,IAAMsD,EAAK6f,UAAY6K,EAAWvtB,EAAE0iB,SAAW4mE,GAAmB/7D,EAAWxuB,EAAE2jB,SAAW6mE,GAC3IrP,EAAWgD,UAEXhD,EAAW3kD,QAEnB,IAGJi0D,EAAO,IAAI9H,EAAK,CACZrqC,QAASA,EACT9pB,WAAYA,EACZ2sD,WAAYA,EACZyH,QAAS9+E,EAAKd,QAAQ4/E,UAG1B8H,EAAe,IAAIjC,EAAa,CAC5BnwC,QAASA,EACT9pB,WAAYA,EACZ2sD,WAAYA,EACZuN,WAAYA,IAGhBiC,EAAmB,IAAIxB,EAAiB,CACpC9wC,OAAQ,SAAS2qC,GACbl/E,EAAK8mF,SAAS5H,EAAY/hF,EAAG+hF,EAAYhjF,EAC7C,IAGRs4C,EAAQjzC,KAAK0zC,GAAQ,WACjBj1C,EAAK6uB,WAAc2lB,EAAQt4C,EAC3B8D,EAAKslB,YAAekvB,EAAQr3C,EAE5B6C,EAAKmC,QAAQuiF,EAAQ,CACjB71D,UAAW7uB,EAAK6uB,UAChBvJ,WAAYtlB,EAAKslB,YAEzB,IAEItlB,EAAKd,QAAQ6nF,qBACbnjF,EAAQge,GAAG,4BAA6B7pB,KAAKivF,aAAazlF,KAAKxJ,OAGnE+C,EAAOkF,EAAM,CACTw0C,QAASA,EACT9pB,WAAYA,EACZk8D,aAAcA,EACdC,iBAAkBA,EAClBxP,WAAYA,EACZsP,KAAMA,EACN/B,WAAYA,EACZqC,QAAQ,EACRpnE,SAAS,EACTumE,cAAetxC,EACfjmB,UAAW,EACXvJ,WAAY,EACZ+gE,eAAgBziF,EAAQ0pC,WAAWrrC,UAGvCjC,EAAKknF,UAAU,KACflnF,EAAKknF,UAAU,KAGflnF,EAAKmnF,UAAY,WACbnnF,EAAKonF,QAAS,EACdpnF,EAAKq3E,WAAW3zE,IAAI,EAAG1D,EAAKqnF,QAChC,EAEA38D,EAAWhU,UAEP1W,EAAKd,QAAQooF,eACbtnF,EAAKunF,oBAEb,EAEAP,aAAc,SAAStqF,GACnB,IAAIA,EAAE8qF,QAAN,CAIKzvF,KAAKqvF,SACNrvF,KAAKqvF,QAAS,EACdrvF,KAAKsvF,QAAU,EACftvF,KAAKs/E,WAAWU,MAAM,EAAGhgF,KAAKsvF,UAGlCh1D,aAAat6B,KAAK0vF,eAClB1vF,KAAK0vF,cAAgBx2D,WAAWl5B,KAAKovF,UAAW,IAEhD,IAAIrqD,EAAQpkC,EAAMkkC,YAAYlgC,GAE1BogC,IACA/kC,KAAKsvF,SAAWvqD,EAChB/kC,KAAKs/E,WAAW5kD,KAAK,EAAG16B,KAAKsvF,UAGjC3qF,EAAEwE,gBAlBF,CAmBJ,EAEAs8E,YAAa,WACTzlF,KAAK2yB,WAAWxuB,EAAEshF,aACtB,EAEAG,YAAa,SAASlvE,EAAKyC,GACvBnZ,KAAK2yB,WAAWxuB,EAAEyhF,YAAYlvE,EAAKyC,EACvC,EAEAnN,OAAQ,WACJ,OAAOhM,KAAK2yB,WAAWxuB,EAAE6L,IAC7B,EAEA+U,aAAc,WACV,OAAO/kB,KAAKquF,cAAc,GAAGtpE,YACjC,EAEA5F,YAAa,WACT,OAAOnf,KAAKquF,cAAc,GAAGlvE,WACjC,EAEAhY,QAAS,CACL/E,KAAM,WACNquC,MAAM,EACNk/C,WAAY,IACZC,oBAAoB,EACpB7I,SAAS,EACTnuD,WAAW,EACXo2D,qBAAqB,EACrBT,eAAgB,WAAa,OAAO,CAAO,EAC3CgB,eAAe,EACf3kE,SAAU,CACNilE,aAAc,kBACdC,gBAAiB,qBACjBC,gBAAiB,eAIzB1lF,OAAQ,CAldD,OAodHsiF,EAldK,UAsdTj6D,QAAS,WACA1yB,KAAKmuF,SACNnuF,KAAKgwF,gBAEb,EAEA99D,WAAY,SAAS/qB,GAEjBiqB,EAAOrpB,GAAGmqB,WAAW3nB,KADVvK,KACqBmH,GAC5BA,EAAQooF,eAFDvvF,KAGFwvF,oBAEb,EAEA35C,MAAO,WACC71C,KAAKmuF,QACLnuF,KAAKquF,cAAcv3D,UAAU,IAE7B92B,KAAKy8C,QAAQD,OAAO,CAAEp3C,EAAG,EAAGjB,EAAG,IAC/BnE,KAAKiwF,OAAO,GAEpB,EAEAD,eAAgB,WACZhwF,KAAK2yB,WAAWhU,UACZ3e,KAAK4uF,KAAKxpF,EAAEygF,eACZ7lF,KAAKy8C,QAAQG,SAAS,IAAK58C,KAAK2yB,WAAWvtB,EAAEsR,KAG7C1W,KAAK4uF,KAAKzqF,EAAE0hF,eACZ7lF,KAAKy8C,QAAQG,SAAS,IAAK58C,KAAK2yB,WAAWxuB,EAAEuS,IAErD,EAEAw5E,QAAS,WACL,IAAIv9D,EAAa3yB,KAAK2yB,WACtBA,EAAWhU,UACX3e,KAAKiwF,OAAOt9D,EAAWsqB,UACvBj9C,KAAKy8C,QAAQD,OAAO7pB,EAAW6zD,oBACnC,EAEAr+D,OAAQ,WACJnoB,KAAK8nB,SAAU,CACnB,EAEAG,QAAS,WACLjoB,KAAK8nB,SAAU,CACnB,EAEAinE,SAAU,SAAS3pF,EAAGjB,GACdnE,KAAKmuF,SACLxtF,EAAM4sB,WAAWvtB,KAAKquF,cAAe52E,EAAIrS,IACzCpF,KAAKquF,cAAcv3D,UAAUrf,EAAItT,MAEjCnE,KAAK2yB,WAAWhU,UAChB3e,KAAKy8C,QAAQD,OAAO,CAAEp3C,EAAGA,EAAGjB,EAAGA,IAEvC,EAEAgsF,iBAAkB,SAAS/qF,EAAGjB,EAAGylB,GAC7B,IAAI7N,EACAuiB,EAEAt+B,KAAKmuF,QACLnuF,KAAK+uF,SAAS3pF,EAAGjB,IAEjB4X,EAAO,CAAE3W,EAAGpF,KAAKy8C,QAAQr3C,EAAGjB,EAAGnE,KAAKy8C,QAAQt4C,GAC5Cm6B,EAAK,CAAEl5B,EAAGA,EAAGjB,EAAGA,GAEhBnE,KAAK8uF,iBAAiBtB,eAAezxE,EAAMuiB,GAC3Ct+B,KAAK8uF,iBAAiBrB,YAAY7jE,GAClC5pB,KAAK8uF,iBAAiBh5E,QAE9B,EAEAs6E,YAAa,WACT,IAAInoF,EAAOjI,KACXiI,EAAKooF,YAAYtjE,YAAY2/D,GAC7BzkF,EAAKqoF,cAAcjgF,KAAKpI,EAAK4nF,aAAa,CAAC,IAC3C5nF,EAAKsoF,SAASp0C,QACdl0C,EAAKuoF,SAASr0C,QACdl0C,EAAKq3E,WAAW3kD,QACpB,EAEA34B,QAAS,WACLovB,EAAOrpB,GAAG/F,QAAQuI,KAAKvK,MACnBA,KAAKs/E,YACLt/E,KAAKs/E,WAAWt9E,SAExB,EAEAiuF,OAAQ,SAASlgD,GACb/vC,KAAK2yB,WAAWqzD,QAAQj2C,GACxB/vC,KAAKy8C,QAAQsrC,QAAQh4C,EACzB,EAEAy/C,mBAAoB,WAChB,IAAIvnF,EAAOjI,KAEXiI,EAAK0qB,WAAWxuB,EAAE2hF,eAClB79E,EAAK4nF,aAAelvF,EAAMyP,SAASnI,EAAKd,QAAQyjB,SAASilE,cACzD5nF,EAAK6nF,gBAAkBnvF,EAAMyP,SAASnI,EAAKd,QAAQyjB,SAASklE,iBAC5D7nF,EAAK8nF,gBAAkBpvF,EAAMyP,SAASnI,EAAKd,QAAQyjB,SAASmlE,iBAE5D9nF,EAAKomF,cAAcD,QAAQ,oKAAsKnmF,EAAK4nF,aAAa,CAAC,GAAK,kBACzN5nF,EAAKooF,YAAcpoF,EAAKomF,cAAc94C,WAAWrrC,QACjDjC,EAAKqoF,cAAgBroF,EAAKooF,YAAY96C,SAAS,gBAE/CttC,EAAK2mF,KAAKzqF,EAAEqF,KAAK,SAAUvB,EAAKwoF,YAAYjnF,KAAKvB,IACjDA,EAAKq3E,WAAW91E,KAAK,MAAOvB,EAAKyoF,SAASlnF,KAAKvB,GACnD,EAEAyoF,SAAU,WACN,IAAIzoF,EAAOjI,KAENiI,EAAKinF,SAIVjnF,EAAKinF,QAAS,EACdjnF,EAAKooF,YAAYtjE,YAAY0/D,GAAcpnE,SAASqnE,GACpDzkF,EAAKqoF,cAAcjgF,KAAKpI,EAAK8nF,gBAAgB,CAAC,IAC9C9nF,EAAKsoF,SAASxD,OAAO9kF,EAAKd,QAAQwoF,WAAa,GAC/C1nF,EAAKmC,QAAQ,QACjB,EAEAqmF,YAAa,WACT,IAAIxoF,EAAOjI,KAEPiI,EAAKw0C,QAAQt4C,EA7lBI,GA6lByB8D,EAAKd,QAAQwoF,WAClD1nF,EAAKinF,SACNjnF,EAAKinF,QAAS,EACdjnF,EAAKooF,YAAYtjE,YAAY2/D,GAAcrnE,SAASonE,GACpDxkF,EAAKqoF,cAAcjgF,KAAKpI,EAAK6nF,gBAAgB,CAAC,KAE3C7nF,EAAKinF,SACZjnF,EAAKinF,QAAS,EACdjnF,EAAKooF,YAAYtjE,YAAY0/D,GAC7BxkF,EAAKqoF,cAAcjgF,KAAKpI,EAAK4nF,aAAa,CAAC,IAEnD,EAEAV,UAAW,SAAShqD,GAChB,IAMIwrD,EANA1oF,EAAOjI,KACP4wF,EAAY3oF,EAAK4D,QAAQ+X,KAAK,MAC9B64B,EAAUx0C,EAAKw0C,QACfiqC,EAAYz+E,EAAK0qB,WAAWwS,GAC5B0nD,EAAa5kF,EAAK4kF,WAClBI,EAAWhlF,EAAK2mF,KAAKzpD,GAGpByrD,IACDA,EAAYjwF,EAAMwvB,OAClBloB,EAAK4D,QAAQ+X,KAAK,KAAMgtE,IAG5BD,EAAY,IAAIjD,EAAU,CACtBvoD,KAAMA,EACNsX,QAASA,EACTiqC,UAAWA,EACXjwD,UAAWxuB,EAAK4D,QAChBiiF,cAAe7lF,EAAKd,QAAQyoF,mBAC5BjC,WAAYiD,IAGhBlK,EAAUl9E,KAAK0zC,GAAQ,WACnByzC,EAAUhyE,SACd,IAEAsuE,EAASzjF,KAAK0zC,GAAQ,WAClByzC,EAAUljF,MACd,IAEAxF,EAAKk9B,EAAO,WAAa,IAAI2nD,EAAY,CACrC3nD,KAAMA,EACN8nD,SAAUA,EACVxwC,QAASA,EACTowC,WAAYA,EACZvN,WAAYr3E,EAAKq3E,WACjBoH,UAAWA,EACXK,QAAS9+E,EAAKd,QAAQ4/E,QACtBqG,SAAUnlF,EAAKd,QAAQimF,UAppBpB,IAqpBHD,mBAAoBllF,EAAKd,QAAQgmF,oBAppBnB,GAqpBdxhF,IAAK,WACDglF,EAAUjjF,OACVzF,EAAKmC,QAAQ,YAAa,CACtB+6B,KAAMA,EACNrO,UAAW7uB,EAAK6uB,UAChBvJ,WAAYtlB,EAAKslB,YAEzB,GAER,IAGJhD,EAAG2M,OAAO2B,EACb,CAnrBD,CAmrBG/3B,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACf4pB,EAAK5pB,EAAM4pB,GACX6G,EAAS7G,EAAG6G,OACZxpB,EAAQjH,EAAMiH,MACdrE,EAAU5C,EAAM4C,QAChBsqB,EAAYltB,EAAMktB,UAClB1hB,EAAaxL,EAAM8L,YACnBL,EAAczL,EAAM+L,aACpBmkF,EAAO,OACPC,EAAQ,QACRC,EAAa,aACbC,EAAW,WACXC,EAAS,SACT7lE,EAAO,OACPE,EAAQ,QACR4lE,EAAM,MACNC,EAAS,SACTC,EAAW,WACX1/C,EAAS,SACT2/C,EAAO,OACPC,EAAW,WACXv/C,EAAW,WACXw/C,EAAU,UACVC,EAAU,UACVC,EAAS,WACTC,EAAiB,4CAEjBC,EAAmBhvF,EAAEgN,SAASiK,iBAC9Bg4E,EAASjvF,EAAE7B,QACX6rF,EAAS,SAETz6C,EADY3uC,EAAQmc,YAAYzT,IACR,YACxBlJ,EAASJ,EAAEI,OACX8uF,EAAK,cACLniF,EAAS,CAAC,YACA,cACA,eACA,aACA,cACA,eAEd,SAAS6lB,EAASkB,EAAWpvB,GACzB,SAAKovB,IAAcpvB,KAGZovB,IAAcpvB,GAAU1E,EAAE4yB,SAASkB,EAAWpvB,GACzD,CAEA,IAAIyqF,EAAQ1gE,EAAOruB,OAAO,CACtBoF,KAAM,SAAS0D,EAAS1E,GACpB,IAAiB4qF,EAAb9pF,EAAOjI,MAEXmH,EAAUA,GAAW,CAAC,GAEVkY,QACRlY,EAAQ6xC,OAAS7xC,EAAQ6xC,QAAUm4C,EAAS,IAAM7lE,EAClDnkB,EAAQmG,SAAWnG,EAAQmG,UAAY4jF,EAAM,IAAM5lE,GAGvD8F,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GAEnC0E,EAAU5D,EAAK4D,QACf1E,EAAUc,EAAKd,QAEfc,EAAK+pF,WAAa7qF,EAAQ8qF,UAAY9qF,EAAQ8qF,UAAUrnF,MAAM,KAAO,GACrE3C,EAAKiqF,UAAYvxF,EAAMg7B,cAvCf,OAuCwCh7B,EAAMwvB,QAEvB,IAA3BloB,EAAK+pF,WAAWxqF,QAChBS,EAAK+pF,WAAWrwF,KAAKsG,EAAK+pF,WAAW,IAGzCD,EAAcpvF,EAAEsF,EAAKd,QAAQgrF,QAAQtlF,QAAQ,qBAAqB0iB,OAAO,sBAEzEpoB,EAAQ+E,SAAWvJ,EAAEA,EAAEwE,EAAQ+E,UAAU,IAAM6lF,EAAY,IAAMpiF,SAASqP,MAE1E/W,EAAK4D,QAAQ6B,OACR2X,SAAS,WACTuD,YAAY,UAAWzhB,EAAQkY,OAC/BnT,SAAS/E,EAAQ+E,UACjB0X,KAAK,eAAe,GACpBiG,GAAG,aAAegoE,GAAI,WACnB5pF,EAAKmqF,UAAW,CACpB,IACCvoE,GAAG,QAAUgoE,GAAI,SAASltF,GACvB,IAAI6nE,EAAO7pE,EAAEgC,EAAE0C,QAAQ8uB,KAAK,WACxBk8D,EAAa7lB,EAAK7/D,SAClB6/D,EAAKhlE,QAAUglE,EAAKv/D,GAAG,cAA4C,IAA3BolF,EAAWv7D,aAAqBnyB,EAAE4kB,cAAcyb,OAAS,GAChGqtD,EAAWv7D,cAAgBu7D,EAAWxiE,KAAK,gBAAkBwiE,EAAWxiE,KAAK,iBAAmBlrB,EAAE4kB,cAAcyb,OAAS,IACvHrgC,EAAEwE,gBAEb,IACC0gB,GAAG,aAAegoE,GAAI,WACnB5pF,EAAKmqF,UAAW,CACpB,IAEJnqF,EAAK2E,QAAUjK,KAEW,IAAtBwE,EAAQmrF,YACRnrF,EAAQmrF,UAAY,CAAEC,KAAM,CAAEnrE,QAAS,CAAC,GAAKs+B,MAAO,CAAEh4C,MAAM,EAAM0Z,QAAS,CAAC,KAGhFrkB,EAAOoE,EAAQmrF,UAAUC,KAAM,CAC3BhrE,SAAU,WACNtf,EAAK2E,QAAQyY,SAAS,+BACtBpd,EAAK2E,QAAQX,IAAI,WAAW,IAC5BhE,EAAK8gF,YAAa,EAClB9gF,EAAKm4E,SAAS4Q,EAClB,IAGJjuF,EAAOoE,EAAQmrF,UAAU5sC,MAAO,CAC5Bn+B,SAAU,WACNtf,EAAKuqF,iBACT,IAGJvqF,EAAKwqF,gBAAkB,SAAS9tF,GAC5BsD,EAAKyqF,WAAW/tF,EACpB,EAEIpB,EAAQggB,SAASnC,QACjBnZ,EAAK0qF,aAAe,SAAShuF,GACzBu0B,YAAW,WACPjxB,EAAKyqB,QAAQ/tB,EACjB,GAAG,IACP,EAEAsD,EAAK0qF,aAAe,SAAShuF,GACzBsD,EAAKyqB,QAAQ/tB,EACjB,EAGAwC,EAAQyrF,cACRjwF,EAAEwE,EAAQyrF,cAAc/oE,GAAG1iB,EAAQ0rF,YAAchB,EAAI5pF,EAAK8gB,OAAOvf,KAAKvB,GAE9E,EAEAoC,OAAQ,CACJwmF,EACAG,EACAF,EACAC,GAGJ5pF,QAAS,CACL/E,KAAM,QACNywF,YAAa,QACb75C,OAAQm4C,EAAS,IAAM/lE,EACvB9d,SAAU4jF,EAAM,IAAM9lE,EACtB+mE,OAAQd,EACRnlF,SAAU,KACV+lF,UAAW,WACXa,SAAUhyF,OACViyF,kBAAkB,EAClBxmF,UAAU,EACVqgB,WAAW,EACXomE,OAAO,EACPC,WAAY,CACRlnF,MAAO,EACPC,OAAQ,GAEZsmF,UAAW,CACPC,KAAM,CACFnrE,QAAS,eACTmrB,YAAY,EACZjrB,SAAU,KAEdo+B,MAAO,CACHp+B,SAAU,IACV5Z,MAAM,IAGdwlF,mBAAmB,GAGvBV,gBAAiB,WACb,IAAIvqF,EAAOjI,KACPqjB,EAAWpb,EAAK2E,QAAQwB,KAAKkjF,GAEjCrpF,EAAK2E,QAAQc,OAET2V,GACApb,EAAK2E,QAAQX,IAAIoX,GAGjBpb,EAAKd,QAAQgrF,QAAUd,GACvBppF,EAAKkrF,mBAGTlrF,EAAKmrF,UAAW,EAChBnrF,EAAKm4E,SAAS2Q,EAClB,EAEA/uF,QAAS,WACL,IAGI2K,EAHA1E,EAAOjI,KACPmH,EAAUc,EAAKd,QACf0E,EAAU5D,EAAK4D,QAAQutB,IAAIy4D,GAG/BzgE,EAAOrpB,GAAG/F,QAAQuI,KAAKtC,GAEnBd,EAAQyrF,cACRjwF,EAAEwE,EAAQyrF,cAAcx5D,IAAIy4D,GAG3B1qF,EAAQ6rF,QACTrB,EAAiBv4D,IAAInxB,EAAKiqF,UAAWjqF,EAAKwqF,iBAC1CxqF,EAAKorF,eAAc,IAGvB1yF,EAAMqB,QAAQiG,EAAK4D,QAAQ0pC,YAC3B1pC,EAAQgnB,aAEJ1rB,EAAQ+E,SAAS,KAAOyD,SAASqP,QACjCrS,EAASd,EAAQgB,QAAQ,2BAEd,GACPF,EAAON,SAEPR,EAAQQ,SAGpB,EAEAkmF,KAAM,SAASntF,EAAGjB,GACd,IAKImuF,EAAW1lF,EAIXD,EATA1E,EAAOjI,KACPszF,EAAQ,CAAE98C,SAAU1tC,MAAM0Q,SAASrV,EAAE,KAAMiB,EAAGA,EAAGjB,EAAGA,GACpDqI,EAAqBvE,EAAKsrF,oBAC1B1nF,EAAU5D,EAAK4D,QACf1E,EAAUc,EAAKd,QAEfgrF,EAASxvF,EAAEwE,EAAQgrF,QACnBryF,EAAS+L,EAAQ,IAAMA,EAAQkB,SAAS,aACxCymF,EAAU3nF,EAAQsqB,KAAK,oBAG3B,IAAKluB,EAAK+E,UAAW,CAQjB,GAPI7F,EAAQ4rF,mBACJjzF,GAAuB,aAAb4P,EAAO,IACjBA,EAAO0G,QAEXvK,EAAQI,IAAItL,EAAM4O,kBAAkB4iF,EAAO,GAAIziF,KAG/CzH,EAAK4D,QAAQc,SAASyB,KAAK,cAAgBnG,EAAKm4E,SAASyQ,GACzD,OAGJ5oF,EAAK8gF,YAAa,EAEb5hF,EAAQ6rF,QACTrB,EAAiBv4D,IAAInxB,EAAKiqF,UAAWjqF,EAAKwqF,iBAC7B5oE,GAAG5hB,EAAKiqF,UAAWjqF,EAAKwqF,iBAIrCxqF,EAAKorF,eAAc,GACnBprF,EAAKorF,eAAc,IAGvBprF,EAAK2E,QAAUA,EAAUjM,EAAMgsB,KAAK9gB,EAAS1E,EAAQoF,SAAUpF,EAAQssF,cAAejnF,EAAoBrF,EAAQylB,WAC7G3gB,IAAI,CACDqhB,SAAUokB,EACVrkC,QAAS,QACTC,SAAU8jF,IAEbxtE,KAAK,eAAe,GAEzBjX,EAASd,EAAQc,SAEb6mF,EAAQ5vE,KAAK,cACbhX,EAAQgX,KAAK,aAAc4vE,EAAQ5vE,KAAK,eACjC4vE,EAAQ5vE,KAAK,oBACpBhX,EAAQgX,KAAK,kBAAmB4vE,EAAQ5vE,KAAK,oBAG7CrgB,EAAQggB,SAASnC,SACjBzU,EAAOV,IAAIimC,EAAW,iBAG1BtlC,EAAQX,IAAI8lC,GAERpvC,EAAEwE,EAAQ+E,UAAU,IAAMyD,SAASqP,MACnCpS,EAAQX,IAAIilF,EAAK,YAGrBjpF,EAAKyrF,QAAUzrF,EAAK0rF,UAAUL,GAC9BhB,EAAYrqF,EAAK2rF,iBAEbzsF,EAAQgrF,QAAUd,GAASppF,EAAK4D,QAAQkB,SAAS,cACjD9E,EAAK4rF,kBAGTlnF,EAAOe,OACP7B,EAAQ4B,OACRxF,EAAK2E,QAAQa,OAEbd,EAAOyB,KAAKojF,EAASc,EAAUlrE,SACvBiB,WAAU,GACVI,aAAa6pE,GAGrBzmF,EAAQ+X,KAAK,eAAe,EAChC,CACJ,EAEAkwE,UAAW,SAASt9C,GAChB,IAGI5pC,EAHA3E,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACf1E,EAAUc,EAAKd,QAEfgrF,EAASxvF,EAAEwE,EAAQgrF,QACnBryF,EAAS+L,EAAQ,IAAMA,EAAQkB,SAAS,aAExC5F,EAAQ4rF,mBACJjzF,GAAuB,aAAb4P,EAAO,IACjBA,EAAO0G,QAEXvK,EAAQI,IAAItL,EAAM4O,kBAAkB4iF,EAAO,GAAIziF,KAGnDzH,EAAK2E,QAAUA,EAAUjM,EAAMgsB,KAAK9gB,EAAS1E,EAAQoF,UAC5BN,IAAI,CACDqhB,SAAUokB,EACVrkC,QAAS,QACTC,SAAU8jF,IAGlC7tF,EAAQggB,SAASnC,SACjBxU,EAAQX,IAAIimC,EAAW,iBAG3BtlC,EAAQX,IAAI8lC,GAERpvC,EAAEwE,EAAQ+E,UAAU,IAAMyD,SAASqP,MACnCpS,EAAQX,IAAIilF,EAAK,YAGrBjpF,EAAK0rF,UAAUn9C,GAAW,CAAC,GAE3B,IAAI14B,EAASlR,EAAQkR,SACrB,MAAO,CACH/R,MAAOpL,EAAM8L,YAAYG,GACzBZ,OAAQrL,EAAM+L,aAAaE,GAC3B4f,KAAM1O,EAAO0O,KACbtH,IAAKpH,EAAOoH,IAEpB,EAEA0uE,eAAgB,WACZ,IAAItB,EAAYvvF,GAAO,EAAM,CAAC,EAAG/C,KAAKmH,QAAQmrF,UAAUC,MAGxD,OAFAD,EAAUlrE,QAAUzmB,EAAMstB,aAAaqkE,EAAUlrE,QAASpnB,KAAK0zF,SAExDpB,CACX,EAEAa,iBAAkB,WACDxwF,EAAE3C,KAAKmH,QAAQgrF,QAEvB58C,SAASm8C,GACT3kE,YAAY0kE,EAErB,EAEAoC,gBAAiB,WACblxF,EAAE3C,KAAKmH,QAAQgrF,QACV58C,SAASm8C,GACTrsE,SAASosE,EAClB,EAEAnkF,SAAU,WACFtN,KAAKgN,YACLhN,KAAK0zF,QAAU1zF,KAAK2zF,YAE5B,EAEA5qE,OAAQ,WACO/oB,UAEDgN,UAAY8jF,EAAQD,IAClC,EAEA7jF,QAAS,WACL,OAAOhN,KAAK4M,QAAQK,GAAG,IAAMskF,IAAYvxF,KAAK6L,QAAQoB,GAAG,IAAMskF,EACnE,EAEA7rC,MAAO,SAASquC,GACZ,IAE4BpnE,EACxB2lE,EAAW0B,EAAaC,EAHxBhsF,EAAOjI,KACP2M,EAAS1E,EAAK4D,QAAQc,SACtBxF,EAAUc,EAAKd,QAGnB,GAAIc,EAAK+E,UAAW,CAKhB,GAJA2f,EAAQ1kB,EAAK2E,QAAQ,GAAK3E,EAAK2E,QAAUjM,EAAMgsB,KAAK1kB,EAAK4D,SAAS6B,OAElEzF,EAAKorF,eAAc,GAEfprF,EAAKmrF,UAAYnrF,EAAKm4E,SAAS0Q,GAE/B,YADA7oF,EAAKorF,eAAc,GAIvBprF,EAAK2E,QAAQmgB,YAAY,+BAGzB9kB,EAAK4D,QAAQsqB,KAAK,YAAYnzB,MAAK,WAC/B,IACIkxF,EADOvxF,EAAE3C,MACIoO,KAAK,cAElB8lF,GACAA,EAAMxuC,MAAMquC,EAEpB,IAEApC,EAAiBv4D,IAAInxB,EAAKiqF,UAAWjqF,EAAKwqF,iBAEtCsB,EACAzB,EAAY,CAAE5kF,MAAM,EAAM0Z,QAAS,CAAC,IAEpCkrE,EAAYvvF,GAAO,EAAM,CAAC,EAAGoE,EAAQmrF,UAAU5sC,OAC/CsuC,EAAcrnF,EAAOyB,KAAKojF,KAC1ByC,EAAe3B,EAAUlrE,WAEHzmB,EAAMqP,KAAKikF,IAAiBD,GAAerzF,EAAMqP,KAAKgkF,KACxE1B,EAAUlrE,QAAU4sE,EACpB1B,EAAUj8E,SAAU,GAGxBpO,EAAKmrF,UAAW,GAGpBzmF,EAAO0b,WAAU,GACjBpgB,EAAK4D,QAAQ+X,KAAK,eAAe,GACjC+I,EACK1gB,IAAI,CAAEqhB,SAAUokB,IAChB9tB,KAAK,eAAe,GACzBjX,EAAO8b,aAAa6pE,GAEhByB,GACA9rF,EAAKuqF,iBAEb,CACJ,EAEApS,SAAU,SAAS/+E,GACf,OAAOrB,KAAKoK,QAAQ/I,EAAI,CAAEqE,KAAMrE,GACpC,EAEAqxB,QAAS,SAAS/tB,GACd,IAAIsD,EAAOjI,MAE6B,IAApCuD,EAAQ4mB,OAAOxU,QAAQhR,EAAEe,OACzB40B,aAAaryB,EAAKksF,gBAClBlsF,EAAKksF,eAAiBj7D,YAAW,WAC7BjxB,EAAK0rF,YACL1rF,EAAKksF,eAAiB,IAC1B,GAAG,OAEElsF,EAAKmqF,UAAanqF,EAAK8gF,YAAc9gF,EAAK4D,QAAQsqB,KAAK,WAAW3uB,OAAS,IAC5ES,EAAKy9C,OAGjB,EAEA2tC,cAAe,SAAStqE,GACpB,IAAIuO,EAASvO,EAAS,KAAO,MACzBhf,EAAaxG,EAAQ4mB,OAEnB5mB,EAAQggB,SAASvB,KAAOze,EAAQggB,SAASnC,SAAW7d,EAAQuf,QAAQkB,SACtEja,GAAc,IAAM4iF,GAGpB5jE,IAAW/oB,KAAK0nC,oBAChB1nC,KAAK0nC,kBAAoB1nC,KAAKo0F,sBAG9Bp0F,KAAK0nC,mBAAqB1nC,KAAK0nC,kBAAkBlgC,QACjDxH,KAAK0nC,kBAAkBpQ,GAAQq1D,EAAQ3sF,KAAK2yF,cAGhDf,EAAOt6D,GAAQvtB,EAAY/J,KAAK2yF,aACpC,EAEAD,WAAY,SAAS/tF,GACjB,IAAIsD,EAAOjI,KACPy2B,EAAYxuB,EAAK4D,QAAQ,GACzB1E,EAAUc,EAAKd,QACfgrF,EAASxvF,EAAEwE,EAAQgrF,QAAQ,GAC3BS,EAAezrF,EAAQyrF,aACvBvrF,EAAS1G,EAAM0oB,YAAY1kB,GAC3BuvF,EAAQvxF,EAAE0E,GAAQwF,QAAQ,YAC1B/M,EAASo0F,EAAMvnF,SAASA,OAAO,YAAYnF,OAE/C0sF,EAAQA,EAAM,IACTp0F,GAAUo0F,GAASA,IAAUjsF,EAAK4D,QAAQ,IAKF,YAAzClJ,EAAEgC,EAAE0C,QAAQwF,QAAQ,KAAKuB,KAAK,SAI7BmnB,EAASkB,EAAWpvB,IAAYkuB,EAAS48D,EAAQ9qF,IAAaurF,GAAgBr9D,EAAS5yB,EAAEiwF,GAAc,GAAIvrF,IAC5GY,EAAKy9C,QAEb,EAEA2uC,KAAM,SAAS/mF,EAAU0C,EAAMskF,GAC3B,IAAIC,EAAS,EAUb,OARIjnF,EAAW0C,EAAOskF,IAClBC,EAASD,GAAgBhnF,EAAW0C,IAGpC1C,EAAW,IACXinF,GAAUjnF,GAGPinF,CACX,EAEAC,MAAO,SAAS12E,EAAQ9N,EAAMykF,EAAYH,EAAct7C,EAAQ1rC,EAAUonF,GACtE,IAAIH,EAAS,EAYb,OAXIG,EAAUA,GAAW1kF,EAErB1C,IAAa0rC,GAAU1rC,IAAa2jF,GAAUj4C,IAAWi4C,IACrDnzE,EAAS42E,EAAUJ,IACnBC,KAAYE,EAAazkF,IAGzB8N,EAASy2E,EAAS,IAClBA,GAAUE,EAAazkF,IAGxBukF,CACX,EAEAH,mBAAoB,WAChB,OAAOzxF,EAAE3C,KAAKmH,QAAQgrF,QACVxqD,aAAa,QACbpY,QAAO,SAASjW,EAAOzN,GACpB,OAAOlL,EAAMwsB,aAAathB,EAC9B,GACf,EAEA8nF,UAAW,SAASL,GAChB,IAYIqB,EAAkBp8D,EAClBq8D,EAGAptF,EAAQqtF,EAAgBC,EAAeC,EAhBvC9sF,EAAOjI,KAEP6L,EAAU5D,EAAK4D,QACfe,EAAU3E,EAAK2E,QACfzF,EAAUc,EAAKd,QACf2rF,EAAWnwF,EAAEwE,EAAQ2rF,UACrBluE,EAAYrhB,EAAQqhB,YACpBowE,KAAelC,EAAS,IAAMhyF,QAAWA,OAAO0f,YAAeoE,GAAa,MAC5EutE,EAASxvF,EAAEwE,EAAQgrF,QACnB8C,EAAU9tF,EAAQ6xC,OAAOngC,cAAcjO,MAAM,KAC7CsqF,EAAY/tF,EAAQmG,SAASuL,cAAcjO,MAAM,KACjDonF,EAAa/pF,EAAK+pF,WAEJh4C,EAAS,MACvBpwC,EAAM,EACNkb,EAAQnV,SAASiK,iBAIjBi7E,EADA1tF,EAAQ2rF,WAAahyF,OACJ,CACbokB,IAAMpkB,OAAOitB,aAAepe,SAASiK,gBAAgBkd,WAAa,EAClEtK,KAAO1rB,OAAOktB,aAAere,SAASiK,gBAAgB2T,YAAc,GAGvDulE,EAASh1E,SAG1Bk3E,GACAF,EAAgBh0F,OAAO0f,WACvBu0E,EAAiBj0F,OAAO6f,cAExBm0E,EAAgBhC,EAAS/mF,QACzBgpF,EAAiBjC,EAAS9mF,UAG1BgpF,GAAYlwE,EAAMC,aAAeD,EAAME,aAAe,KAGrD8vE,IAFW3tF,EAAQkY,OAAS,EAAI,GAER1e,EAAM4C,QAAQmb,aAK3C,IAFAi2E,EAAmBxC,EAAO55D,UAAUhJ,OAAO3iB,EAAQuoF,aAE9B,GAKjB,GAJAP,EAAevxF,KAAK8V,IAAItG,OAAO8hF,EAAiB1oF,IAAI,WAAY,GAK5D+tC,EAAS46C,EAAe,QAGxB,IAAKptF,GADL+wB,EAAU45D,EAAOxqD,aAAagtD,IACRntF,OAAQoC,EAAMpC,EAAQoC,KACxCgrF,EAAe/hF,OAAOlQ,EAAE41B,EAAQ3uB,IAAMqC,IAAI,aACtB+tC,EAAS46C,IACzB56C,EAAS46C,EAAe,IAMxChoF,EAAQX,IAAI,SAAU+tC,GAElBs5C,GAASA,EAAM98C,QACf5pC,EAAQX,IAAI,CAAEugB,KAAM8mE,EAAMluF,EAAG8f,IAAKouE,EAAMnvF,IAExCyI,EAAQX,IAAIhE,EAAKmtF,OAAOH,EAASC,IAGrC,IAAIG,EAAMxnE,EAAUjhB,EAASmlC,EAAUogD,EAAO,KAAOvlF,EAAQ0oF,eAAe,IACxEx3E,EAAS+P,EAAUjhB,GACJulF,EAAOmD,eAAe3oF,OAAO,4CAE/BnF,SACb6tF,EAAMxnE,EAAUjhB,EAASmlC,GAAU,GACnCj0B,EAAS+P,EAAUjhB,IAGvBkR,EAAOoH,KAAO2vE,EAAe3vE,IAC7BpH,EAAO0O,MAAQqoE,EAAeroE,KAEzBvkB,EAAK2E,QAAQwB,KAAKkjF,IACnB1kF,EAAQwB,KAAKkjF,EAAUvuF,EAAO,CAAC,EAAGsyF,IAGtC,IAAIE,EAAUxyF,EAAO,CAAC,EAAG+a,GACrBuF,EAAWtgB,EAAO,CAAC,EAAGsyF,GACtBpC,EAAa9rF,EAAQ8rF,WAEH,QAAlBjB,EAAW,KACX3uE,EAAS6B,KAAOjd,EAAKosF,KAAKkB,EAAQrwE,IAAK9Y,EAAYQ,GAAWqmF,EAAWjnF,OAAQ+oF,EAAiBnwE,IAGhF,QAAlBotE,EAAW,KACX3uE,EAASmJ,MAAQvkB,EAAKosF,KAAKkB,EAAQ/oE,KAAMrgB,EAAWS,GAAWqmF,EAAWlnF,MAAO+oF,EAAgBlwE,IAGrG,IAAI4wE,EAAUzyF,EAAO,CAAC,EAAGsgB,GACrBjW,EAAgBhB,EAAYP,GAC5B4pF,EAAgBrpF,EAAYQ,GAgBhC,OAdKA,EAAQZ,UAAYoB,IACrBqoF,GAAgCroF,GAGd,SAAlB4kF,EAAW,KACX3uE,EAAS6B,KAAOjd,EAAKusF,MAAMe,EAAQrwE,IAAK9X,EAAehB,EAAY+lF,GAAS4C,EAAiBnwE,EAAWqwE,EAAQ,GAAIC,EAAU,GAAIO,IAGhH,SAAlBzD,EAAW,KACX3uE,EAASmJ,MAAQvkB,EAAKusF,MAAMe,EAAQ/oE,KAAMrgB,EAAWN,GAAUM,EAAWgmF,GAAS2C,EAAgBlwE,EAAWqwE,EAAQ,GAAIC,EAAU,GAAI/oF,EAAWS,KAGvJA,EAAQX,IAAIoX,GAEJA,EAASmJ,MAAQgpE,EAAQhpE,MAAQnJ,EAAS6B,KAAOswE,EAAQtwE,GACrE,EAEAkwE,OAAQ,SAASp8C,EAAQ1rC,GACrB,IASIooF,EATAztF,EAAOjI,KACP6L,EAAU5D,EAAK2E,QACfulF,EAASxvF,EAAEsF,EAAKd,QAAQgrF,QACxBwD,EAAiB38C,EAAO,GACxB48C,EAAmB58C,EAAO,GAC1B68C,EAAmBvoF,EAAS,GAC5BwoF,EAAqBxoF,EAAS,GAC9ByoF,EAAeloE,EAAUskE,GACzBjmF,EAAWvJ,EAAEsF,EAAKd,QAAQ+E,UAE1BH,EAAQI,EAAWN,GACnBG,EAASI,EAAYP,IAAYO,EAAYP,EAAQsqB,KAAK,gCAAgCof,WAAWrrC,SACrG8rF,EAAc7pF,EAAWgmF,GACzB8D,EAAe7pF,EAAY+lF,GAC3BjtE,EAAMjd,EAAKd,QAAQ+rF,kBAAoB,EAAI6C,EAAa7wE,IACxDsH,EAAOvkB,EAAKd,QAAQ+rF,kBAAoB,EAAI6C,EAAavpE,KACzDlW,EAAQjT,KAAKiT,MAyCjB,OAvCIpK,EAAS,IAAMyD,SAASqP,OAExBkG,IADAwwE,EAAiB7nE,EAAU3hB,IACLgZ,IACtBsH,GAAQkpE,EAAelpE,MAIvBmpE,IAAmBxE,IACnBjsE,GAAO+wE,GAGPN,IAAmB1E,IACnB/rE,GAAO5O,EAAM2/E,EAAe,IAG5BJ,IAAqB1E,IACrBjsE,GAAOlZ,GAGP6pF,IAAqB5E,IACrB/rE,GAAO5O,EAAMtK,EAAS,IAGtB4pF,IAAqBtqE,IACrBkB,GAAQwpE,GAGRJ,IAAqB3E,IACrBzkE,GAAQlW,EAAM0/E,EAAc,IAG5BF,IAAuBxqE,IACvBkB,GAAQzgB,GAGR+pF,IAAuB7E,IACvBzkE,GAAQlW,EAAMvK,EAAQ,IAGnB,CACHmZ,IAAKA,EACLsH,KAAMA,EAEd,IAGJjC,EAAG2M,OAAO46D,GAEV,IAAIjsE,EAAallB,EAAM4C,QAAQsiB,WAC3BqwE,EAAe,kBAEfC,EAAavuF,EAAM7E,OAAO,CAC1BoF,KAAM,SAAS0D,EAAS1E,GACpBnH,KAAK6L,QAAUlJ,EAAEkJ,GACjB7L,KAAK6L,QAAQ6rB,YAAYw+D,EAC7B,EAEAE,KAAM,WACFp2F,KAAK6L,QAAQge,GAAG,UAAW7pB,KAAKq2F,YAAY7sF,KAAKxJ,MACrD,EAEAs2F,WAAY,WACRt2F,KAAK6L,QAAQ8rB,aAAau+D,EAC9B,EAEAl0F,QAAS,WACLhC,KAAK6L,QAAQ8rB,aAAau+D,GAC1Bl2F,KAAK6L,QAhvBjB,SAivBQ,EAEA0qF,WAAY,WACR,OAAO,CACX,EAEAF,YAAa,SAAS1xF,GAClB,GAAgB,IAAZA,EAAEg+E,OAAgB3iF,KAAKu2F,eAAgB5xF,EAAE0E,qBAA7C,CAIA,IAAIsvB,EAAW34B,KAAKw2F,qBAChBC,EAAiBz2F,KAAK02F,uBAAuB/9D,GAC7C2tC,EAAOtmE,KAAK22F,eAAehyF,EAAG8xF,GAE9BnwB,GACAtmE,KAAK42F,OAAOtwB,GAGhB3hE,EAAEwE,gBAVF,CAWJ,EACAqtF,mBAAoB,WAChB,IAAI79D,EAAW34B,KAAK6L,QAAQsqB,KAxCP,+KAwCoC5G,QAAO,SAAShoB,EAAG4nC,GACxE,OAAOA,EAAK0nD,UAAY,GAAKl0F,EAAEwsC,GAAMliC,GAAG,cAAgBtK,EAAEwsC,GAAMliC,GAAG,aACvE,IAMA,OAJIjN,KAAK6L,QAAQoB,GAAG,eAChB0rB,EAASh3B,KAAK3B,KAAK6L,QAAQ,IAGxB8sB,CACX,EACA+9D,uBAAwB,SAAS/9D,GAC7B,IAAI89D,EAEJ,GAAI5wE,EACA4wE,EAAiB99D,EAAS3c,MAAK,SAAS+jC,EAAMumB,GAC1C,OAAOvmB,EAAK82C,SAAWvwB,EAAKuwB,QAChC,QACG,CACH,IAAIC,EAAW,YACfn+D,EAAS31B,MAAK,SAASuE,EAAG4nC,GACtBA,EAAKxpB,aAAamxE,EAAUvvF,EAChC,IAEAkvF,EAAiB99D,EAAS3c,MAAK,SAAS+jC,EAAMumB,GAC1C,OAAOvmB,EAAK82C,WAAavwB,EAAKuwB,SAC1Br9E,SAASumC,EAAK5qB,aAAa2hE,GAAW,IAAMt9E,SAAS8sD,EAAKnxC,aAAa2hE,GAAW,IAClF/2C,EAAK82C,SAAWvwB,EAAKuwB,QAC7B,IAEAl+D,EAAS1G,WAAW6kE,EACxB,CAEA,OAAOL,CACX,EACAE,eAAgB,SAAShyF,EAAGg0B,GACxB,IAAIrd,EAAQqd,EAASnxB,OACjBwM,EAAU2kB,EAASrf,MAAM3U,EAAE0C,QAE/B,OAAOsxB,EAAS1I,KAAKjc,GAAWrP,EAAE4iC,UAAY,EAAI,IAAMjsB,EAC5D,EACAs7E,OAAQ,SAAS/qF,GACW,UAApBA,EAAQssB,UAKZtsB,EAAQk6B,QAEgB,SAApBl6B,EAAQssB,UAAuBtsB,EAAQm6B,mBAAqBhmC,KAAK+2F,oBAAoBlrF,IACrFA,EAAQm6B,kBAAkB,EAAGn6B,EAAQnD,MAAMlB,SAP3CqE,EAAQmrF,cAAcrnF,SAASqP,KAAK+mB,OAS5C,EACAgxD,oBAAqB,SAASlrF,GAC1B,IAAIorF,EAAcprF,EAAQnG,KAAKmT,cAE/B,MAAuB,SAAhBo+E,GAA0C,WAAhBA,GACjB,QAAhBA,GAAyC,QAAhBA,GACT,aAAhBA,CACJ,IAEJ1sE,EAAGunE,MAAMqE,WAAaA,CACzB,CAp0BD,CAo0BGr1F,OAAOH,MAAM+G,QACF/G,OAWd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfiH,EAAQjH,EAAMiH,MAElBjH,EAAM0P,KAAO1P,EAAM0P,MAAQ,CAAC,EAE5B,IAAI6mF,EAAWtvF,EAAM7E,OAAO,CACxBoF,KAAM,SAAS0D,EAAS1E,GACTnH,KACN6L,QAAUlJ,EAAEkJ,UACjB1E,EAAUA,GAAW,CAAC,GACP/E,KAHJpC,KAINuI,aAAapB,EACtB,EACAA,QAAS,CACLgwF,eAAgB,IAEpBC,YAAa,WACT,IAAInvF,EAAOjI,KACPmH,EAAUc,EAAKd,QACfgwF,EAAiBhwF,EAAQgwF,eACzBE,EAAyBpvF,EAAK2E,QAAQwB,KAAK,iBAE/C+oF,EAAiBA,EAAet8E,KAAI,SAASqa,GACzC,IAAInC,EAEJ,MAAe,eAAXmC,IACAnC,EAAYpyB,EAAMwyB,cAAcG,cAAc,CAC1CC,OAAQpsB,EAAQ/E,KAChBoxB,SAAU,WACV9qB,MAAOvB,EAAQssB,aAGoB,IAArBV,EAAUvrB,OAKzB7G,EAAMwyB,cAAcG,cAAc,CACrCC,OAAQpsB,EAAQ/E,KAChBoxB,SAAU0B,EACVxsB,MAAOvB,EAAQ+tB,GACfxB,KAAMvsB,EAAQssB,WARH,EAUnB,IAEI4jE,GACApvF,EAAK2E,QAAQmgB,YAAYsqE,EAAuBxsF,KAAK,MAGzD5C,EAAK2E,QAAQwB,KAAK,gBAAiB+oF,GACnClvF,EAAK2E,QAAQyY,SAAS8xE,EAAetsF,KAAK,KAC9C,EACAwF,KAAM,WAGF,OAFWrQ,KAEC4M,QAAQ,GAAG0qF,SAC3B,IAGJ30F,EAAEI,OAAOpC,EAAM0P,KAAM,CACjB6mF,SAAUA,GAGjB,CAhED,CAgEGp2F,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfoC,EAASJ,EAAEI,OACXm0F,EAAWv2F,EAAM0P,KAAK6mF,SAGtBK,EAAa,OAEbC,EAAe,WAEfC,EAAc,UACdC,EAAkB,GAAGD,KACrBE,EAAgB,GAAGF,KAInBG,EAAa,CACbC,IAAO,CAAChsF,EAAS1E,IAAY,IAAI2wF,EAAYjsF,EAAS1E,GACtD4wF,KAAQ,CAAClsF,EAAS1E,IAAY,IAAI6wF,EAAansF,EAAS1E,IAGxD8wF,EAAe,CACf3pC,QAAS,GACT5b,WAAYglD,EACZllD,SAAUmlD,EACV97C,KAAM,GAAG67C,KAAmBC,KA8B5BO,EAAehB,EAASn0F,OAAO,CAC/BoF,KAAM,SAAS0D,EAAS1E,GAEpB+vF,EAASnvF,GAAGI,KAAKoC,KADNvK,KACiB6L,EAAS1E,GAD1BnH,KAENo5E,UACT,EACAjyE,QAAS,CACL/E,KAAM,WACN4N,KAAM,OACNqkB,WAAY,OACZ8jE,KAAM,UACNC,UAAW,GACXjB,eAAgB,CAAE,OAAQ,aAAc,SAE5C/d,SAAU,WACKp5E,KAENo3F,aACT,EACAA,YAAa,WACT,IAAInvF,EAAOjI,KACPmH,EAAUc,EAAKd,QACfgwF,EAAiBhwF,EAAQgwF,eACzBE,EAAyBpvF,EAAK2E,QAAQwB,KAAK,iBAE/C+oF,EAAiBA,EAAet8E,KAAI,SAASqa,GACzC,MAAe,eAAXA,EACOv0B,EAAMwyB,cAAcG,cAAc,CACrCC,OAAQpsB,EAAQ/E,KAChBoxB,SAAU0B,EACVxsB,MAAOvB,EAAQ+tB,GACflV,OAxEK,aA4EE,SAAXkV,EACO+iE,EAAa9wF,EAAQgxF,MAGzBx3F,EAAMwyB,cAAcG,cAAc,CACrCC,OAAQpsB,EAAQ/E,KAChBoxB,SAAU0B,EACVxsB,MAAOvB,EAAQ+tB,GACfxB,KAAMvsB,EAAQssB,UAEtB,IAEI4jE,GACApvF,EAAK2E,QAAQmgB,YAAYsqE,EAAuB9nE,QAAOnqB,GAAKA,IAAM6C,EAAKowF,aAAYxtF,KAAK,MAG5F5C,EAAK2E,QAAQwB,KAAK,gBAAiB+oF,EAAe/4E,OAAO,CAACnW,EAAKowF,cAC/DpwF,EAAK2E,QAAQyY,SAAS8xE,EAAetsF,KAAK,KAC9C,IAGAmtF,EAAeE,EAAan1F,OAAO,CACnCoF,KAAM,SAAS0D,EAAS1E,GACpB+wF,EAAanwF,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAAS1E,EAC7C,EACAA,QAASpE,EAAO,CAAC,EAAGm1F,EAAanwF,GAAGZ,QAAS,CACzC/E,KAAM,eACNk2F,KAAM,OAEVlf,SAAU,WACN,IAAInxE,EAAOjI,KAEPu4F,EAAmBtwF,EAAK4D,QAAQ,GAAGwhB,UAAUziB,MAAM,KAAKurB,MAAK/wB,GAAKA,EAAEozF,SAASjB,KAC7ElqE,EAAYplB,EAAKd,QAAQmxF,KAAO,GAAGrwF,EAAKd,QAAQmxF,KAAKz3D,WAAW02D,GAAc,GAAKA,IAAatvF,EAAKd,QAAQmxF,OAAS,GAE1HrwF,EAAKowF,WAAahrE,EAClBplB,EAAK2E,QAAU3E,EAAK4D,QACfwZ,SA1HG,sBA2HH0H,YAAYwrE,GACZlzE,SAASgI,GACThI,SAASpd,EAAKd,QAAQixF,WAAa,IAExCF,EAAanwF,GAAGqxE,SAAS7uE,KAAKvK,KAClC,IAGA83F,EAAcI,EAAan1F,OAAO,CAClCoF,KAAM,SAAS0D,EAAS1E,GAEpB0E,EAAQ+gD,QACRsrC,EAAanwF,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAAS1E,EAC7C,EACAA,QAASpE,EAAO,CAAC,EAAGm1F,EAAanwF,GAAGZ,QAAS,CACzC/E,KAAM,cACNk2F,KAAM,OAEVlf,SAAU,WACN,IAMI/rD,EANAplB,EAAOjI,KACPs4F,EAAOrwF,EAAKd,QAAQmxF,KACpBF,EAAYnwF,EAAKd,QAAQixF,UAEzBG,EAAmBtwF,EAAK4D,QAAQ,GAAGwhB,UAAUziB,MAAM,KAAKurB,MAAK/wB,GAAKA,EAAEozF,SAAShB,KAC7EiB,EAAS91F,EAAE,eAGf,IAAK21F,GAAQF,EAAW,CAEpB,MAAMM,EAAQ,qBACd,IAAIC,EAAgBP,EAAU1nF,MAAMgoF,GAChCC,IACAL,EAAOK,EAAc,GACrBP,EAAYA,EAAU31F,QAAQk2F,EAAc,GAAI,IAExD,CAEIh4F,EAAMiI,SAAS0vF,KAEfA,EAAOA,EAAK71F,QAAQ,OAAQ,IAAIA,QAAQ,OAAO2C,GAAGA,EAAE,GAAGkK,gBACvDgpF,EAAO33F,EAAM4pB,GAAGquE,SAASN,IAAS33F,EAAM4pB,GAAGquE,SAAS,GAAGN,UAG3DjrE,EAAYirE,GAAQA,EAAKl2F,KAAO,GAAGo1F,IAAec,EAAKl2F,OAAS,GAChE6F,EAAKowF,WAAahrE,EAElBplB,EAAK2E,QAAU3E,EAAK4D,QACfwZ,SAxKE,qBAyKF0H,YAAYwrE,GACZlzE,SAASgI,GACThI,SAAS+yE,GAAa,IACtBx0E,KAAK,eAAe,GAErBjhB,EAAEgF,cAAc2wF,KAChBG,EAAO70E,KAAK,UAAW00E,EAAKO,SAAW,IAClCj1E,KAAK,CACFi1E,QAAWP,EAAKO,SAAW,GAC3B5gE,UAAa,QACb6gE,MAAS,+BAEZzoF,KAAKioF,EAAK3xC,SAAW,IAE1B1+C,EAAK2E,QAAQutC,OAAOs+C,EAAO,GAAGnB,YAGlCY,EAAanwF,GAAGqxE,SAAS7uE,KAAKvK,KAClC,IAGJ2C,EAAEI,OAAOpC,EAAM0P,KAAM,CACjB0oF,WA1Ka,SAASltF,EAAS1E,GAgB/B,QAfK0E,GAAWlJ,EAAEgF,cAAckE,IAAYlL,EAAMiI,SAASiD,MACvD1E,EAAU0E,EACVA,EAAUlJ,EAAE,kBAGZhC,EAAMiI,SAASzB,KACfA,EAAU,CACNmxF,KAAMnxF,IAITxG,EAAM8H,UAAUtB,EAAQzB,QACzByB,EAAQzB,KAAO/E,EAAMC,SAASo4F,SAAWr4F,EAAMC,SAASo4F,SAAW,OAGnEr4F,EAAMuI,WAAW/B,EAAQzB,MAClByB,EAAQzB,KAAKmG,EAAS1E,GAG5BxG,EAAMuI,WAAW0uF,EAAWzwF,EAAQzB,OAIjCkyF,EAAWzwF,EAAQzB,MAAMmG,EAAS1E,GAAUkJ,OAHzC,IAIf,EAkJI2nF,aAAcA,EACdF,YAAaA,EACbmB,gBAAkBvzF,GAASkyF,EAAWlyF,KAG1C/E,EAAMwyB,cAAcoY,eAAe,eAAgB,WAEnD5qC,EAAMwyB,cAAc2X,eAAe,eAAgB,CAAC,CAChDjb,KAAM,OACNxW,OAAQ1Y,EAAMwyB,cAAc+W,WAAW9rB,OAAO,CAAC,CAAC,SAAU,MAAO,CAAC,SAAU,MAAO,CAAC,UAAW,OAAQ,CAAC,WAAY,WACrH,CACCyR,KAAM,aACNxW,OAAQ,CAAC,UAAW,YAAa,WAAY,UAAW,OAAQ,UAAW,UAAW,QAAS,OAAQ,QAAS,cAGpH1Y,EAAMwyB,cAAcoY,eAAe,cAAe,WAElD5qC,EAAMwyB,cAAc2X,eAAe,cAAe,CAAC,CAC/Cjb,KAAM,OACNxW,OAAQ1Y,EAAMwyB,cAAc+W,WAAW9rB,OAAO,CAAC,CAAC,SAAU,MAAO,CAAC,SAAU,MAAO,CAAC,UAAW,OAAQ,CAAC,WAAY,WACrH,CACCyR,KAAM,aACNxW,OAAQ,CAAC,UAAW,YAAa,WAAY,UAAW,OAAQ,UAAW,UAAW,QAAS,OAAQ,QAAS,aAEvH,CA/ND,CA+NGvY,OAAOH,MAAM+G,QACF/G,MA88Hd,IAAIi4F,EAAwBn4F,OAAOssF,OAAO,CACtC75D,UAAW,KACXgmE,kBA5qFsB,CACtB92F,KAAM,gBACNukD,QAAS,8JACTkyC,QAAS,eA0qFTM,oBA3oBwB,CACxB/2F,KAAM,mBACNukD,QAAS,6UACTkyC,QAAS,eAyoBTO,gBAhwDoB,CACpBh3F,KAAM,eACNukD,QAAS,uEACTkyC,QAAS,eA8vDTQ,gBArvDoB,CACpBj3F,KAAM,eACNukD,QAAS,kIACTkyC,QAAS,eAmvDTS,0BA5+D8B,CAC9Bl3F,KAAM,2BACNukD,QAAS,iIACTkyC,QAAS,eA0+DTU,uBA3gE2B,CAC3Bn3F,KAAM,uBACNukD,QAAS,mIACTkyC,QAAS,eAygETW,wBAhgE4B,CAC5Bp3F,KAAM,yBACNukD,QAAS,6FACTkyC,QAAS,eA8/DTY,qBA/hEyB,CACzBr3F,KAAM,qBACNukD,QAAS,4FACTkyC,QAAS,eA6hETa,qBA5/DyB,CACzBt3F,KAAM,sBACNukD,QAAS,2EACTkyC,QAAS,eA0/DTc,kBA3hEsB,CACtBv3F,KAAM,kBACNukD,QAAS,yEACTkyC,QAAS,eAyhETe,uBA1gE2B,CAC3Bx3F,KAAM,wBACNukD,QAAS,uEACTkyC,QAAS,eAwgETgB,oBAziEwB,CACxBz3F,KAAM,oBACNukD,QAAS,wEACTkyC,QAAS,eAuiETiB,yBA1/D6B,CAC7B13F,KAAM,0BACNukD,QAAS,yFACTkyC,QAAS,eAw/DTkB,sBAzhE0B,CAC1B33F,KAAM,sBACNukD,QAAS,yFACTkyC,QAAS,eAuhETmB,iBApvDqB,CACrB53F,KAAM,gBACNukD,QAAS,2HACTkyC,QAAS,eAkvDToB,cAvwDkB,CAClB73F,KAAM,aACNukD,QAAS,0HACTkyC,QAAS,eAqwDTqB,gBApxDoB,CACpB93F,KAAM,eACNukD,QAAS,uEACTkyC,QAAS,eAkxDTsB,gBAjvDoB,CACpB/3F,KAAM,eACNukD,QAAS,4QACTkyC,QAAS,eA+uDTuB,eA9vDmB,CACnBh4F,KAAM,cACNukD,QAAS,+HACTkyC,QAAS,eA4vDTwB,uBAruE2B,CAC3Bj4F,KAAM,wBACNukD,QAAS,iHACTkyC,QAAS,eAmuETyB,oBAxvEwB,CACxBl4F,KAAM,oBACNukD,QAAS,+GACTkyC,QAAS,eAsvET0B,oBAjuEwB,CACxBn4F,KAAM,qBACNukD,QAAS,8FACTkyC,QAAS,eA+tET2B,iBApvEqB,CACrBp4F,KAAM,iBACNukD,QAAS,2FACTkyC,QAAS,eAkvET4B,sBA/uE0B,CAC1Br4F,KAAM,uBACNukD,QAAS,yFACTkyC,QAAS,eA6uET6B,mBAlwEuB,CACvBt4F,KAAM,mBACNukD,QAAS,2FACTkyC,QAAS,eAgwET8B,wBA7jE4B,CAC5Bv4F,KAAM,yBACNukD,QAAS,4GACTkyC,QAAS,eA2jET+B,qBApkEyB,CACzBx4F,KAAM,qBACNukD,QAAS,2GACTkyC,QAAS,eAkkETgC,gBAjrEoB,CACpBz4F,KAAM,gBACNukD,QAAS,uGACTkyC,QAAS,eA+qETiC,aAtyDiB,CACjB14F,KAAM,YACNukD,QAAS,qEACTkyC,QAAS,eAoyDTkC,QA33DY,CACZ34F,KAAM,MACNukD,QAAS,2gCACTkyC,QAAS,eAy3DTmC,WAtwCe,CACf54F,KAAM,SACNukD,QAAS,sWACTkyC,QAAS,eAowCToC,gBAj2CoB,CACpB74F,KAAM,eACNukD,QAAS,qfACTkyC,QAAS,eA+1CTqC,cAx1HkB,CAClB94F,KAAM,aACNukD,QAAS,2DACTkyC,QAAS,eAs1HTsC,cAn1HkB,CAClB/4F,KAAM,aACNukD,QAAS,4DACTkyC,QAAS,eAi1HTuC,sBAp4H0B,CAC1Bh5F,KAAM,sBACNukD,QAAS,2DACTkyC,QAAS,eAk4HTwC,eAj2HmB,CACnBj5F,KAAM,cACNukD,QAAS,oDACTkyC,QAAS,eA+1HTyC,mBA9pGuB,CACvBl5F,KAAM,mBACNukD,QAAS,2NACTkyC,QAAS,eA4pGT0C,wBA7oG4B,CAC5Bn5F,KAAM,yBACNukD,QAAS,+NACTkyC,QAAS,eA2oGT2C,kBA1pGsB,CACtBp5F,KAAM,kBACNukD,QAAS,0NACTkyC,QAAS,eAwpGT4C,uBAzoG2B,CAC3Br5F,KAAM,wBACNukD,QAAS,2NACTkyC,QAAS,eAuoGT6C,YA52HgB,CAChBt5F,KAAM,WACNukD,QAAS,8DACTkyC,QAAS,eA02HT8C,eA7zHmB,CACnBv5F,KAAM,cACNukD,QAAS,iGACTkyC,QAAS,eA2zHT+C,oBA1rHwB,CACxBx5F,KAAM,oBACNukD,QAAS,mEACTkyC,QAAS,eAwrHTgD,eA3yFmB,CACnBz5F,KAAM,cACNukD,QAAS,6HACTkyC,QAAS,eAyyFTiD,mBAp5HuB,CACvB15F,KAAM,mBACNukD,QAAS,6DACTkyC,QAAS,eAk5HTkD,mBA3pGuB,CACvB35F,KAAM,mBACNukD,QAAS,uiBACTkyC,QAAS,eAypGTmD,eA5zHmB,CACnB55F,KAAM,cACNukD,QAAS,yFACTkyC,QAAS,eA0zHToD,oBAzrHwB,CACxB75F,KAAM,oBACNukD,QAAS,oEACTkyC,QAAS,eAurHTqD,YAhtFgB,CAChB95F,KAAM,UACNukD,QAAS,iOACTkyC,QAAS,eA8sFTsD,mBAvtFuB,CACvB/5F,KAAM,kBACNukD,QAAS,oPACTkyC,QAAS,eAqtFTuD,yBAprF6B,CAC7Bh6F,KAAM,0BACNukD,QAAS,kXACTkyC,QAAS,eAkrFTwD,mBA7sFuB,CACvBj6F,KAAM,kBACNukD,QAAS,0VACTkyC,QAAS,eA2sFTyD,eAlxBmB,CACnBl6F,KAAM,cACNukD,QAAS,woDACTkyC,QAAS,eAgxBT0D,YAzxBgB,CAChBn6F,KAAM,UACNukD,QAAS,w/CACTkyC,QAAS,eAuxBT2D,SA5+Ea,CACbp6F,KAAM,OACNukD,QAAS,yPACTkyC,QAAS,eA0+ET4D,eAr7CmB,CACnBr6F,KAAM,aACNukD,QAAS,mZACTkyC,QAAS,eAm7CT6D,eAt9BmB,CACnBt6F,KAAM,cACNukD,QAAS,wcACTkyC,QAAS,eAo9BT8D,YA79BgB,CAChBv6F,KAAM,UACNukD,QAAS,8XACTkyC,QAAS,eA29BT+D,SAp1Ea,CACbx6F,KAAM,OACNukD,QAAS,2GACTkyC,QAAS,eAk1ETgE,SA39Da,CACbz6F,KAAM,OACNukD,QAAS,ynBACTkyC,QAAS,eAy9DTiE,SA5/Ca,CACb16F,KAAM,OACNukD,QAAS,gPACTkyC,QAAS,eA0/CTkE,iBA3qDqB,CACrB36F,KAAM,gBACNukD,QAAS,6dACTkyC,QAAS,eAyqDTmE,gBAhwGoB,CACpB56F,KAAM,eACNukD,QAAS,sRACTkyC,QAAS,eA8vGToE,eAvqDmB,CACnB76F,KAAM,cACNukD,QAAS,odACTkyC,QAAS,eAqqDTqE,2BApsH+B,CAC/B96F,KAAM,4BACNukD,QAAS,yJACTkyC,QAAS,eAksHTsE,4BA/rHgC,CAChC/6F,KAAM,6BACNukD,QAAS,yJACTkyC,QAAS,eA6rHTuE,iBA9qHqB,CACrBh7F,KAAM,gBACNukD,QAAS,sHACTkyC,QAAS,eA4qHTwE,wBA3rH4B,CAC5Bj7F,KAAM,yBACNukD,QAAS,2JACTkyC,QAAS,eAyrHTyE,yBAtrH6B,CAC7Bl7F,KAAM,0BACNukD,QAAS,0JACTkyC,QAAS,eAorHT0E,gBAvqDoB,CACpBn7F,KAAM,eACNukD,QAAS,ieACTkyC,QAAS,eAqqDT2E,sBA5qH0B,CAC1Bp7F,KAAM,sBACNukD,QAAS,wFACTkyC,QAAS,eA0qHT4E,gBArpHoB,CACpBr7F,KAAM,eACNukD,QAAS,qFACTkyC,QAAS,eAmpHT6E,oBAxqHwB,CACxBt7F,KAAM,oBACNukD,QAAS,qFACTkyC,QAAS,eAsqHT8E,qBAnqHyB,CACzBv7F,KAAM,qBACNukD,QAAS,wFACTkyC,QAAS,eAiqHT+E,mBA9pHuB,CACvBx7F,KAAM,mBACNukD,QAAS,sFACTkyC,QAAS,eA4pHTgF,cA/rDkB,CAClBz7F,KAAM,aACNukD,QAAS,keACTkyC,QAAS,eA6rDTiF,eAxwGmB,CACnB17F,KAAM,cACNukD,QAAS,oXACTkyC,QAAS,eAswGTkF,eA/tDmB,CACnB37F,KAAM,cACNukD,QAAS,4GACTkyC,QAAS,eA6tDTmF,4BA9sDgC,CAChC57F,KAAM,4BACNukD,QAAS,2dACTkyC,QAAS,eA4sDToF,kBArtDsB,CACtB77F,KAAM,iBACNukD,QAAS,mYACTkyC,QAAS,eAmtDTqF,0BA1sD8B,CAC9B97F,KAAM,0BACNukD,QAAS,geACTkyC,QAAS,eAwsDTsF,gBA7qDoB,CACpB/7F,KAAM,eACNukD,QAAS,ykBACTkyC,QAAS,eA2qDTuF,mBA9tDuB,CACvBh8F,KAAM,kBACNukD,QAAS,2MACTkyC,QAAS,eA4tDTwF,oBAzqDwB,CACxBj8F,KAAM,oBACNukD,QAAS,kMACTkyC,QAAS,eAuqDTyF,cA5pHkB,CAClBl8F,KAAM,aACNukD,QAAS,gXACTkyC,QAAS,eA0pHT0F,uBA74E2B,CAC3Bn8F,KAAM,sBACNukD,QAAS,6gCACTkyC,QAAS,eA24ET2F,kBAt0EsB,CACtBp8F,KAAM,iBACNukD,QAAS,oFACTkyC,QAAS,eAo0ET4F,iBA70EqB,CACrBr8F,KAAM,gBACNukD,QAAS,6EACTkyC,QAAS,eA20ET6F,gBAp1EoB,CACpBt8F,KAAM,gBACNukD,QAAS,kIACTkyC,QAAS,eAk1ET8F,iBA31EqB,CACrBv8F,KAAM,iBACNukD,QAAS,4FACTkyC,QAAS,eAy1ET+F,UA16Ec,CACdx8F,KAAM,QACNukD,QAAS,ydACTkyC,QAAS,eAw6ETgG,mBAv2CuB,CACvBz8F,KAAM,kBACNukD,QAAS,2RACTkyC,QAAS,eAq2CTiG,WAppDe,CACf18F,KAAM,SACNukD,QAAS,wNACTkyC,QAAS,eAkpDTkG,eAv1FmB,CACnB38F,KAAM,aACNukD,QAAS,2IACTkyC,QAAS,eAq1FTmG,iBA1oDqB,CACrB58F,KAAM,gBACNukD,QAAS,43BACTkyC,QAAS,eAwoDToG,aArrGiB,CACjB78F,KAAM,WACNukD,QAAS,6QACTkyC,QAAS,eAmrGTqG,WA9/Ee,CACf98F,KAAM,SACNukD,QAAS,6SACTkyC,QAAS,eA4/ETsG,iBA7lGqB,CACrB/8F,KAAM,gBACNukD,QAAS,ufACTkyC,QAAS,eA2lGTuG,WA1mGe,CACfh9F,KAAM,SACNukD,QAAS,gcACTkyC,QAAS,eAwmGTwG,kBArmGsB,CACtBj9F,KAAM,iBACNukD,QAAS,8aACTkyC,QAAS,eAmmGTyG,iBA9gIqB,CACrBl9F,KAAM,iBACNukD,QAAS,qCACTkyC,QAAS,eA4gIT0G,mBAn9HuB,CACvBn9F,KAAM,mBACNukD,QAAS,6DACTkyC,QAAS,eAi9HT2G,iBA1gIqB,CACrBp9F,KAAM,iBACNukD,QAAS,qCACTkyC,QAAS,eAwgIT4G,kBAvhIsB,CACtBr9F,KAAM,kBACNukD,QAAS,qCACTkyC,QAAS,eAqhIT6G,qBA1/HyB,CACzBt9F,KAAM,sBACNukD,QAAS,8DACTkyC,QAAS,eAw/HT8G,mBAr/HuB,CACvBv9F,KAAM,oBACNukD,QAAS,6DACTkyC,QAAS,eAm/HT+G,oBAlgIwB,CACxBx9F,KAAM,qBACNukD,QAAS,8DACTkyC,QAAS,eAggITgH,kBAzgIsB,CACtBz9F,KAAM,mBACNukD,QAAS,6DACTkyC,QAAS,eAugITiH,eAliImB,CACnB19F,KAAM,eACNukD,QAAS,qCACTkyC,QAAS,eAgiITkH,YA/iIgB,CAChB39F,KAAM,WACNukD,QAAS,qCACTkyC,QAAS,eA6iITmH,YAtjIgB,CAChB59F,KAAM,WACNukD,QAAS,qCACTkyC,QAAS,eAojIToH,uBAz+H2B,CAC3B79F,KAAM,wBACNukD,QAAS,kEACTkyC,QAAS,eAu+HTqH,uBAp+H2B,CAC3B99F,KAAM,wBACNukD,QAAS,qEACTkyC,QAAS,eAk+HTsH,wBAj/H4B,CAC5B/9F,KAAM,yBACNukD,QAAS,4DACTkyC,QAAS,eA++HTuH,qBAx/HyB,CACzBh+F,KAAM,sBACNukD,QAAS,6DACTkyC,QAAS,eAs/HTwH,YA/iIgB,CAChBj+F,KAAM,WACNukD,QAAS,qCACTkyC,QAAS,eA6iITyH,YAlkIgB,CAChBl+F,KAAM,WACNukD,QAAS,qCACTkyC,QAAS,eAgkIT0H,SAz2Fa,CACbn+F,KAAM,OACNukD,QAAS,kPACTkyC,QAAS,eAu2FT2H,eAx3HmB,CACnBp+F,KAAM,aACNukD,QAAS,2HACTkyC,QAAS,eAs3HT4H,0BAzvC8B,CAC9Br+F,KAAM,0BACNukD,QAAS,sNACTkyC,QAAS,eAuvCT6H,wBApvC4B,CAC5Bt+F,KAAM,wBACNukD,QAAS,wNACTkyC,QAAS,eAkvCT8H,2BAvwC+B,CAC/Bv+F,KAAM,2BACNukD,QAAS,6JACTkyC,QAAS,eAqwCT+H,eA9wCmB,CACnBx+F,KAAM,cACNukD,QAAS,4JACTkyC,QAAS,eA4wCTgI,yBAnwC6B,CAC7Bz+F,KAAM,yBACNukD,QAAS,+JACTkyC,QAAS,eAiwCTiI,mBAlnDuB,CACvB1+F,KAAM,kBACNukD,QAAS,ynBACTkyC,QAAS,eAgnDTkI,uBArR2B,CAC3B3+F,KAAM,uBACNukD,QAAS,8JACTkyC,QAAS,eAmRTmI,mBApQuB,CACvB5+F,KAAM,mBACNukD,QAAS,yFACTkyC,QAAS,eAkQToI,wBA3Q4B,CAC5B7+F,KAAM,wBACNukD,QAAS,6EACTkyC,QAAS,eAyQTqI,qBAlRyB,CACzB9+F,KAAM,qBACNukD,QAAS,iIACTkyC,QAAS,eAgRTsI,sBAjT0B,CAC1B/+F,KAAM,sBACNukD,QAAS,oFACTkyC,QAAS,eA+STuI,kBAhSsB,CACtBh/F,KAAM,kBACNukD,QAAS,oGACTkyC,QAAS,eA8RTwI,uBAvS2B,CAC3Bj/F,KAAM,uBACNukD,QAAS,qGACTkyC,QAAS,eAqSTyI,oBA9SwB,CACxBl/F,KAAM,oBACNukD,QAAS,oGACTkyC,QAAS,eA4ST0I,gBAvLoB,CACpBn/F,KAAM,eACNukD,QAAS,scACTkyC,QAAS,eAqLT2I,qBAlLyB,CACzBp/F,KAAM,oBACNukD,QAAS,0JACTkyC,QAAS,eAgLT4I,oBA/IwB,CACxBr/F,KAAM,mBACNukD,QAAS,qZACTkyC,QAAS,eA6IT6I,yBAhV6B,CAC7Bt/F,KAAM,yBACNukD,QAAS,oFACTkyC,QAAS,eA8UT8I,qBA/TyB,CACzBv/F,KAAM,qBACNukD,QAAS,mGACTkyC,QAAS,eA6TT+I,0BAtU8B,CAC9Bx/F,KAAM,0BACNukD,QAAS,qGACTkyC,QAAS,eAoUTgJ,uBA7U2B,CAC3Bz/F,KAAM,uBACNukD,QAAS,sGACTkyC,QAAS,eA2UTiJ,kBAlOsB,CACtB1/F,KAAM,iBACNukD,QAAS,s8BACTkyC,QAAS,eAgOTkJ,cA7QkB,CAClB3/F,KAAM,aACNukD,QAAS,0PACTkyC,QAAS,eA2QTmJ,qBA5PyB,CACzB5/F,KAAM,qBACNukD,QAAS,i+CACTkyC,QAAS,eA0PToJ,wBAnQ4B,CAC5B7/F,KAAM,wBACNukD,QAAS,+GACTkyC,QAAS,eAiQTqJ,+BAlPmC,CACnC9/F,KAAM,gCACNukD,QAAS,67CACTkyC,QAAS,eAgPTsJ,qBA3QyB,CACzB//F,KAAM,qBACNukD,QAAS,+IACTkyC,QAAS,eAyQTuJ,4BA1PgC,CAChChgG,KAAM,6BACNukD,QAAS,k3CACTkyC,QAAS,eAwPTwJ,cAzLkB,CAClBjgG,KAAM,aACNukD,QAAS,qIACTkyC,QAAS,eAuLTyJ,aAhPiB,CACjBlgG,KAAM,YACNukD,QAAS,owBACTkyC,QAAS,eA8OT0J,qBAzKyB,CACzBngG,KAAM,qBACNukD,QAAS,4LACTkyC,QAAS,eAuKT2J,eAtLmB,CACnBpgG,KAAM,cACNukD,QAAS,kVACTkyC,QAAS,eAoLT4J,sBAjL0B,CAC1BrgG,KAAM,sBACNukD,QAAS,sjCACTkyC,QAAS,eA+KT6J,cAtKkB,CAClBtgG,KAAM,aACNukD,QAAS,sTACTkyC,QAAS,eAoKT8J,iBAzOqB,CACrBvgG,KAAM,gBACNukD,QAAS,4kBACTkyC,QAAS,eAuOT+J,4BA9NgC,CAChCxgG,KAAM,6BACNukD,QAAS,oiBACTkyC,QAAS,eA4NTgK,mCArOuC,CACvCzgG,KAAM,qCACNukD,QAAS,qrCACTkyC,QAAS,eAmOTiK,8BApNkC,CAClC1gG,KAAM,+BACNukD,QAAS,2GACTkyC,QAAS,eAkNTkK,qCA3NyC,CACzC3gG,KAAM,uCACNukD,QAAS,itBACTkyC,QAAS,eAyNTmK,gBAxoGoB,CACpB5gG,KAAM,eACNukD,QAAS,8IACTkyC,QAAS,eAsoGToK,UArpGc,CACd7gG,KAAM,QACNukD,QAAS,uEACTkyC,QAAS,eAmpGTqK,iBAhpGqB,CACrB9gG,KAAM,gBACNukD,QAAS,uNACTkyC,QAAS,eA8oGTsK,oBA3nFwB,CACxB/gG,KAAM,mBACNukD,QAAS,6GACTkyC,QAAS,eAynFTuK,aAloFiB,CACjBhhG,KAAM,WACNukD,QAAS,qDACTkyC,QAAS,eAgoFTwK,0BAvnF8B,CAC9BjhG,KAAM,yBACNukD,QAAS,0EACTkyC,QAAS,eAqnFTyK,iBAlnFqB,CACrBlhG,KAAM,gBACNukD,QAAS,2LACTkyC,QAAS,eAgnFT0K,sBAvuH0B,CAC1BnhG,KAAM,sBACNukD,QAAS,2HACTkyC,QAAS,eAquHT2K,sBAluH0B,CAC1BphG,KAAM,sBACNukD,QAAS,qHACTkyC,QAAS,eAguHT4K,uBA7tH2B,CAC3BrhG,KAAM,uBACNukD,QAAS,gHACTkyC,QAAS,eA2tHT6K,oBAxtHwB,CACxBthG,KAAM,oBACNukD,QAAS,yHACTkyC,QAAS,eAstHT8K,gBAz/HoB,CACpBvhG,KAAM,eACNukD,QAAS,yFACTkyC,QAAS,eAu/HT+K,gBAp/HoB,CACpBxhG,KAAM,eACNukD,QAAS,yFACTkyC,QAAS,eAk/HTgL,iBAjgIqB,CACrBzhG,KAAM,gBACNukD,QAAS,yFACTkyC,QAAS,eA+/HTiL,cAxgIkB,CAClB1hG,KAAM,aACNukD,QAAS,yFACTkyC,QAAS,eAsgITkL,WArnFe,CACf3hG,KAAM,SACNukD,QAAS,oGACTkyC,QAAS,eAmnFTmL,aA1+CiB,CACjB5hG,KAAM,YACNukD,QAAS,kjBACTkyC,QAAS,eAw+CToL,kBArhDsB,CACtB7hG,KAAM,iBACNukD,QAAS,oWACTkyC,QAAS,eAmhDTqL,kBApgDsB,CACtB9hG,KAAM,iBACNukD,QAAS,4YACTkyC,QAAS,eAkgDTsL,cA7hDkB,CAClB/hG,KAAM,YACNukD,QAAS,gQACTkyC,QAAS,eA2hDTuL,sBAhgD0B,CAC1BhiG,KAAM,qBACNukD,QAAS,0WACTkyC,QAAS,eA8/CTwL,kBA3/CsB,CACtBjiG,KAAM,iBACNukD,QAAS,2UACTkyC,QAAS,eAy/CTyL,qBA9gDyB,CACzBliG,KAAM,qBACNukD,QAAS,iXACTkyC,QAAS,eA4gDT0L,kBArhDsB,CACtBniG,KAAM,iBACNukD,QAAS,qYACTkyC,QAAS,eAmhDT2L,qBA9wFyB,CACzBpiG,KAAM,qBACNukD,QAAS,mQACTkyC,QAAS,eA4wFT4L,UAnxGc,CACdriG,KAAM,QACNukD,QAAS,iNACTkyC,QAAS,eAixGT6L,mBAptFuB,CACvBtiG,KAAM,kBACNukD,QAAS,szBACTkyC,QAAS,eAktFT8L,UA3pBc,CACdviG,KAAM,QACNukD,QAAS,0QACTkyC,QAAS,eAypBT+L,SAltBa,CACbxiG,KAAM,OACNukD,QAAS,4KACTkyC,QAAS,eAgtBTgM,gBA/vDoB,CACpBziG,KAAM,eACNukD,QAAS,khBACTkyC,QAAS,eA6vDTiM,cAt9HkB,CAClB1iG,KAAM,aACNukD,QAAS,kHACTkyC,QAAS,eAo9HTkM,iBAjyCqB,CACrB3iG,KAAM,gBACNukD,QAAS,+NACTkyC,QAAS,eA+xCTmM,YA93HgB,CAChB5iG,KAAM,UACNukD,QAAS,sEACTkyC,QAAS,eA43HToM,YAvmDgB,CAChB7iG,KAAM,UACNukD,QAAS,gNACTkyC,QAAS,eAqmDTqM,kBAlmDsB,CACtB9iG,KAAM,iBACNukD,QAAS,uTACTkyC,QAAS,eAgmDTsM,mBA7lDuB,CACvB/iG,KAAM,kBACNukD,QAAS,4XACTkyC,QAAS,eA2lDTuM,cAh7FkB,CAClBhjG,KAAM,YACNukD,QAAS,6QACTkyC,QAAS,eA86FTwM,qBArkEyB,CACzBjjG,KAAM,oBACNukD,QAAS,ofACTkyC,QAAS,eAmkETyM,qBAhkEyB,CACzBljG,KAAM,oBACNukD,QAAS,qfACTkyC,QAAS,eA8jET0M,eA3/CmB,CACnBnjG,KAAM,cACNukD,QAAS,idACTkyC,QAAS,eAy/CT2M,SA9jDa,CACbpjG,KAAM,OACNukD,QAAS,8MACTkyC,QAAS,eA4jDT4M,SAjkFa,CACbrjG,KAAM,OACNukD,QAAS,gJACTkyC,QAAS,eA+jFT6M,aAtsCiB,CACjBtjG,KAAM,WACNukD,QAAS,gNACTkyC,QAAS,eAosCT8M,mBAjsCuB,CACvBvjG,KAAM,kBACNukD,QAAS,+tBACTkyC,QAAS,eA+rCT+M,OA9rBW,CACXxjG,KAAM,KACNukD,QAAS,wlBACTkyC,QAAS,eA4rBTgN,WA3sBe,CACfzjG,KAAM,SACNukD,QAAS,2gCACTkyC,QAAS,eAysBTiN,SAhvBa,CACb1jG,KAAM,OACNukD,QAAS,8NACTkyC,QAAS,eA8uBTkN,QA/tBY,CACZ3jG,KAAM,MACNukD,QAAS,gjCACTkyC,QAAS,eA6tBTmN,iBAhvCqB,CACrB5jG,KAAM,gBACNukD,QAAS,gmCACTkyC,QAAS,eA8uCToN,eArpDmB,CACnB7jG,KAAM,cACNukD,QAAS,6dACTkyC,QAAS,eAmpDTqN,QAlkDY,CACZ9jG,KAAM,MACNukD,QAAS,w4BACTkyC,QAAS,eAgkDTsN,YA/lBgB,CAChB/jG,KAAM,WACNukD,QAAS,6oDACTkyC,QAAS,eA6lBTuN,SAlqBa,CACbhkG,KAAM,OACNukD,QAAS,oWACTkyC,QAAS,eAgqBTwN,aA3lBiB,CACjBjkG,KAAM,YACNukD,QAAS,y5DACTkyC,QAAS,eAylBTyN,YA9vHgB,CAChBlkG,KAAM,WACNukD,QAAS,k1DACTkyC,QAAS,eA4vHT0N,aAzdiB,CACjBnkG,KAAM,YACNukD,QAAS,8oEACTkyC,QAAS,eAudT2N,YA1gHgB,CAChBpkG,KAAM,WACNukD,QAAS,0ZACTkyC,QAAS,eAwgHT4N,YAzlBgB,CAChBrkG,KAAM,WACNukD,QAAS,y/DACTkyC,QAAS,eAulBT6N,YAplBgB,CAChBtkG,KAAM,WACNukD,QAAS,4mCACTkyC,QAAS,eAklBT8N,oBA/uCwB,CACxBvkG,KAAM,mBACNukD,QAAS,irBACTkyC,QAAS,eA6uCT+N,oBAtvCwB,CACxBxkG,KAAM,mBACNukD,QAAS,uqBACTkyC,QAAS,eAovCTgO,8BAv0EkC,CAClCzkG,KAAM,8BACNukD,QAAS,oMACTkyC,QAAS,eAq0ETiO,4BAhzEgC,CAChC1kG,KAAM,4BACNukD,QAAS,yMACTkyC,QAAS,eA8yETkO,iBA/mCqB,CACrB3kG,KAAM,gBACNukD,QAAS,8JACTkyC,QAAS,eA6mCTmO,cAtnCkB,CAClB5kG,KAAM,YACNukD,QAAS,uDACTkyC,QAAS,eAonCToO,kBAroBsB,CACtB7kG,KAAM,iBACNukD,QAAS,qPACTkyC,QAAS,eAmoBTqO,YAtmCgB,CAChB9kG,KAAM,WACNukD,QAAS,iUACTkyC,QAAS,eAomCTsO,SA7mCa,CACb/kG,KAAM,OACNukD,QAAS,uLACTkyC,QAAS,eA2mCTuO,eAlxEmB,CACnBhlG,KAAM,aACNukD,QAAS,sLACTkyC,QAAS,eAgxETwO,iBAjwHqB,CACrBjlG,KAAM,gBACNukD,QAAS,sFACTkyC,QAAS,eA+vHTyO,gBA5vHoB,CACpBllG,KAAM,eACNukD,QAAS,2FACTkyC,QAAS,eA0vHT0O,uBAvgH2B,CAC3BnlG,KAAM,uBACNukD,QAAS,2FACTkyC,QAAS,eAqgHT2O,sBAxvH0B,CAC1BplG,KAAM,sBACNukD,QAAS,6HACTkyC,QAAS,eAsvHT4O,QA3kEY,CACZrlG,KAAM,MACNukD,QAAS,8/BACTkyC,QAAS,eAykET6O,WA15Fe,CACftlG,KAAM,SACNukD,QAAS,2CACTkyC,QAAS,eAw5FT8O,oBArrDwB,CACxBvlG,KAAM,mBACNukD,QAAS,qaACTkyC,QAAS,eAmrDT+O,WAxxCe,CACfxlG,KAAM,SACNukD,QAAS,msCACTkyC,QAAS,eAsxCTgP,aArkGiB,CACjBzlG,KAAM,WACNukD,QAAS,2EACTkyC,QAAS,eAmkGTiP,kBA1hHsB,CACtB1lG,KAAM,iBACNukD,QAAS,yEACTkyC,QAAS,eAwhHTkP,gBAr/HoB,CACpB3lG,KAAM,gBACNukD,QAAS,0DACTkyC,QAAS,eAm/HTmP,gBAh8BoB,CACpB5lG,KAAM,eACNukD,QAAS,m8BACTkyC,QAAS,eA87BToP,aAv8BiB,CACjB7lG,KAAM,WACNukD,QAAS,4rCACTkyC,QAAS,eAq8BTqP,YApjFgB,CAChB9lG,KAAM,UACNukD,QAAS,+SACTkyC,QAAS,eAkjFTsP,iBAn5EqB,CACrB/lG,KAAM,gBACNukD,QAAS,+zBACTkyC,QAAS,eAi5ETuP,kBA9vHsB,CACtBhmG,KAAM,iBACNukD,QAAS,qWACTkyC,QAAS,eA4vHTwP,cArvDkB,CAClBjmG,KAAM,aACNukD,QAAS,+SACTkyC,QAAS,eAmvDTyP,eA9mCmB,CACnBlmG,KAAM,cACNukD,QAAS,mcACTkyC,QAAS,eA4mCT0P,YArnCgB,CAChBnmG,KAAM,UACNukD,QAAS,mVACTkyC,QAAS,eAmnCT2P,gBAp+CoB,CACpBpmG,KAAM,eACNukD,QAAS,8zBACTkyC,QAAS,eAk+CT4P,gBAjgHoB,CACpBrmG,KAAM,eACNukD,QAAS,mcACTkyC,QAAS,eA+/GT6P,aAt/GiB,CACjBtmG,KAAM,WACNukD,QAAS,mVACTkyC,QAAS,eAo/GT8P,iBA7/GqB,CACrBvmG,KAAM,gBACNukD,QAAS,8zBACTkyC,QAAS,eA2/GT+P,UAp8Fc,CACdxmG,KAAM,QACNukD,QAAS,oDACTkyC,QAAS,eAk8FTgQ,sBA/pF0B,CAC1BzmG,KAAM,qBACNukD,QAAS,iNACTkyC,QAAS,eA6pFTiQ,QAlwBY,CACZ1mG,KAAM,MACNukD,QAAS,2VACTkyC,QAAS,eAgwBTkQ,WAjde,CACf3mG,KAAM,SACNukD,QAAS,yWACTkyC,QAAS,eA+cTmQ,QAthGY,CACZ5mG,KAAM,MACNukD,QAAS,qiBACTkyC,QAAS,eAohGToQ,aAviHiB,CACjB7mG,KAAM,YACNukD,QAAS,0uBACTkyC,QAAS,eAqiHTqQ,eAx0EmB,CACnB9mG,KAAM,aACNukD,QAAS,+ZACTkyC,QAAS,eAs0ETsQ,gBA/mCoB,CACpB/mG,KAAM,eACNukD,QAAS,0SACTkyC,QAAS,eA6mCTuQ,aAtnCiB,CACjBhnG,KAAM,WACNukD,QAAS,qIACTkyC,QAAS,eAonCTwQ,YAj4BgB,CAChBjnG,KAAM,WACNukD,QAAS,+JACTkyC,QAAS,eA+3BTyQ,aAh0BiB,CACjBlnG,KAAM,YACNukD,QAAS,6MACTkyC,QAAS,eA8zBT0Q,cArkBkB,CAClBnnG,KAAM,aACNukD,QAAS,yUACTkyC,QAAS,eAmkBT2Q,YA5zBgB,CAChBpnG,KAAM,WACNukD,QAAS,iKACTkyC,QAAS,eA0zBT4Q,eAz0BmB,CACnBrnG,KAAM,cACNukD,QAAS,o1BACTkyC,QAAS,eAu0BT6Q,YA13BgB,CAChBtnG,KAAM,WACNukD,QAAS,kkCACTkyC,QAAS,eAw3BT8Q,aAvjBiB,CACjBvnG,KAAM,YACNukD,QAAS,uVACTkyC,QAAS,eAqjBT+Q,kBAljBsB,CACtBxnG,KAAM,kBACNukD,QAAS,yyBACTkyC,QAAS,eAgjBTgR,cA3hBkB,CAClBznG,KAAM,aACNukD,QAAS,oNACTkyC,QAAS,eAyhBTiR,cAx3BkB,CAClB1nG,KAAM,aACNukD,QAAS,iNACTkyC,QAAS,eAs3BTkR,cAr1BkB,CAClB3nG,KAAM,aACNukD,QAAS,0SACTkyC,QAAS,eAm1BTmR,eAltBmB,CACnB5nG,KAAM,cACNukD,QAAS,mMACTkyC,QAAS,eAgtBToR,eAztBmB,CACnB7nG,KAAM,cACNukD,QAAS,kMACTkyC,QAAS,eAutBTqR,mBA5uBuB,CACvB9nG,KAAM,kBACNukD,QAAS,+HACTkyC,QAAS,eA0uBTsR,SAr5Ba,CACb/nG,KAAM,OACNukD,QAAS,+HACTkyC,QAAS,eAm5BTuR,cA5kBkB,CAClBhoG,KAAM,aACNukD,QAAS,kSACTkyC,QAAS,eA0kBTwR,YAn3BgB,CAChBjoG,KAAM,WACNukD,QAAS,yNACTkyC,QAAS,eAi3BTyR,YAx2BgB,CAChBloG,KAAM,WACNukD,QAAS,wqCACTkyC,QAAS,eAs2BT0R,YA/2BgB,CAChBnoG,KAAM,WACNukD,QAAS,waACTkyC,QAAS,eA62BT2R,qBA1kByB,CACzBpoG,KAAM,oBACNukD,QAAS,mkBACTkyC,QAAS,eAwkBT4R,oBAzjBwB,CACxBroG,KAAM,mBACNukD,QAAS,sXACTkyC,QAAS,eAujBT6R,YAt2BgB,CAChBtoG,KAAM,WACNukD,QAAS,ojCACTkyC,QAAS,eAo2BT8R,eA/xHmB,CACnBvoG,KAAM,cACNukD,QAAS,2PACTkyC,QAAS,eA6xHT+R,YAl5BgB,CAChBxoG,KAAM,WACNukD,QAAS,4MACTkyC,QAAS,eAg5BTgS,mBAzhBuB,CACvBzoG,KAAM,kBACNukD,QAAS,+ZACTkyC,QAAS,eAuhBTiS,cAlmBkB,CAClB1oG,KAAM,aACNukD,QAAS,o5BACTkyC,QAAS,eAgmBTkS,aAn4BiB,CACjB3oG,KAAM,YACNukD,QAAS,kQACTkyC,QAAS,eAi4BTmS,eApsEmB,CACnB5oG,KAAM,cACNukD,QAAS,sgBACTkyC,QAAS,eAksEToS,YA/0BgB,CAChB7oG,KAAM,WACNukD,QAAS,2XACTkyC,QAAS,eA60BTqS,eA1iBmB,CACnB9oG,KAAM,cACNukD,QAAS,uSACTkyC,QAAS,eAwiBTsS,SA30Ba,CACb/oG,KAAM,OACNukD,QAAS,+TACTkyC,QAAS,eAy0BTuS,wBAppG4B,CAC5BhpG,KAAM,wBACNukD,QAAS,0JACTkyC,QAAS,eAkpGTwS,mBA/oGuB,CACvBjpG,KAAM,mBACNukD,QAAS,oLACTkyC,QAAS,eA6oGTyS,gBA9qGoB,CACpBlpG,KAAM,eACNukD,QAAS,iIACTkyC,QAAS,eA4qGT0S,WArrGe,CACfnpG,KAAM,SACNukD,QAAS,0DACTkyC,QAAS,eAmrGT2S,gBA1qGoB,CACpBppG,KAAM,eACNukD,QAAS,4DACTkyC,QAAS,eAwqGT4S,uBArqG2B,CAC3BrpG,KAAM,wBACNukD,QAAS,4FACTkyC,QAAS,eAmqGT6S,wBAhqG4B,CAC5BtpG,KAAM,yBACNukD,QAAS,8FACTkyC,QAAS,eA8pGT8S,iBA7qDqB,CACrBvpG,KAAM,gBACNukD,QAAS,uRACTkyC,QAAS,eA2qDT+S,mBAxpFuB,CACvBxpG,KAAM,kBACNukD,QAAS,sEACTkyC,QAAS,eAspFTgT,iBAnpFqB,CACrBzpG,KAAM,gBACNukD,QAAS,qEACTkyC,QAAS,eAipFTiT,cAx8BkB,CAClB1pG,KAAM,aACNukD,QAAS,6MACTkyC,QAAS,eAs8BTkT,WAr9Be,CACf3pG,KAAM,SACNukD,QAAS,oKACTkyC,QAAS,eAm9BTmT,eA97BmB,CACnB5pG,KAAM,cACNukD,QAAS,0WACTkyC,QAAS,eA47BToT,eAj9BmB,CACnB7pG,KAAM,cACNukD,QAAS,+RACTkyC,QAAS,eA+8BTqT,aAt8BiB,CACjB9pG,KAAM,YACNukD,QAAS,8LACTkyC,QAAS,eAo8BTsT,eA/rEmB,CACnB/pG,KAAM,cACNukD,QAAS,uDACTkyC,QAAS,eA6rETuT,aAxhHiB,CACjBhqG,KAAM,YACNukD,QAAS,+GACTkyC,QAAS,eAshHTwT,eAnhHmB,CACnBjqG,KAAM,cACNukD,QAAS,kHACTkyC,QAAS,eAihHTyT,aAp0CiB,CACjBlqG,KAAM,YACNukD,QAAS,wKACTkyC,QAAS,eAk0CT0T,oBA7rEwB,CACxBnqG,KAAM,mBACNukD,QAAS,kGACTkyC,QAAS,eA2rET2T,gBAh4DoB,CACpBpqG,KAAM,eACNukD,QAAS,yiBACTkyC,QAAS,eA83DT4T,SAv4Da,CACbrqG,KAAM,OACNukD,QAAS,maACTkyC,QAAS,eAq4DT6T,oBA1kDwB,CACxBtqG,KAAM,oBACNukD,QAAS,sSACTkyC,QAAS,eAwkDT8T,cAz3CkB,CAClBvqG,KAAM,aACNukD,QAAS,+oDACTkyC,QAAS,eAu3CT+T,YAp3FgB,CAChBxqG,KAAM,UACNukD,QAAS,sDACTkyC,QAAS,eAk3FTgU,mBAn+EuB,CACvBzqG,KAAM,kBACNukD,QAAS,qHACTkyC,QAAS,eAi+ETiU,eA1+EmB,CACnB1qG,KAAM,aACNukD,QAAS,gHACTkyC,QAAS,eAw+ETkU,cA7zHkB,CAClB3qG,KAAM,aACNukD,QAAS,wFACTkyC,QAAS,eA2zHTmU,WAxzHe,CACf5qG,KAAM,UACNukD,QAAS,wFACTkyC,QAAS,eAszHToU,gBArlHoB,CACpB7qG,KAAM,eACNukD,QAAS,4IACTkyC,QAAS,eAmlHTqU,gBAhlHoB,CACpB9qG,KAAM,eACNukD,QAAS,miBACTkyC,QAAS,eA8kHTsU,SA3mGa,CACb/qG,KAAM,OACNukD,QAAS,quBACTkyC,QAAS,eAymGTuU,UAtmGc,CACdhrG,KAAM,QACNukD,QAAS,w8CACTkyC,QAAS,eAomGTwU,UAvxCc,CACdjrG,KAAM,QACNukD,QAAS,2fACTkyC,QAAS,eAqxCTyU,cA9jDkB,CAClBlrG,KAAM,aACNukD,QAAS,sjCACTkyC,QAAS,eA4jDT0U,iBA/xCqB,CACrBnrG,KAAM,gBACNukD,QAAS,knBACTkyC,QAAS,eA6xCT2U,gBA1jDoB,CACpBprG,KAAM,eACNukD,QAAS,i+BACTkyC,QAAS,eAwjDT4U,cAzqCkB,CAClBrrG,KAAM,aACNukD,QAAS,ovDACTkyC,QAAS,eAuqCT6U,WAhrCe,CACftrG,KAAM,SACNukD,QAAS,0wDACTkyC,QAAS,eA8qCT8U,kBA/pCsB,CACtBvrG,KAAM,kBACNukD,QAAS,oyDACTkyC,QAAS,eA6pCT+U,eAtqCmB,CACnBxrG,KAAM,cACNukD,QAAS,gyDACTkyC,QAAS,eAoqCTgV,UAzhBc,CACdzrG,KAAM,QACNukD,QAAS,uJACTkyC,QAAS,eAuhBTiV,cA5mFkB,CAClB1rG,KAAM,YACNukD,QAAS,o/BACTkyC,QAAS,eA0mFTkV,mBArgGuB,CACvB3rG,KAAM,mBACNukD,QAAS,2FACTkyC,QAAS,eAmgGTmV,SA1kIa,CACb5rG,KAAM,OACNukD,QAAS,8LACTkyC,QAAS,eAwkIToV,eArkImB,CACnB7rG,KAAM,cACNukD,QAAS,2HACTkyC,QAAS,eAmkITqV,aAt3DiB,CACjB9rG,KAAM,YACNukD,QAAS,i7DACTkyC,QAAS,eAo3DTsV,oBAvsBwB,CACxB/rG,KAAM,mBACNukD,QAAS,qKACTkyC,QAAS,eAqsBTuV,uBA1wB2B,CAC3BhsG,KAAM,uBACNukD,QAAS,8GACTkyC,QAAS,eAwwBTwV,uBAjxB2B,CAC3BjsG,KAAM,uBACNukD,QAAS,8GACTkyC,QAAS,eA+wBTyV,UApkIc,CACdlsG,KAAM,QACNukD,QAAS,0FACTkyC,QAAS,eAkkIT0V,iBA/uBqB,CACrBnsG,KAAM,gBACNukD,QAAS,8GACTkyC,QAAS,eA6uBT2V,OA9qEW,CACXpsG,KAAM,KACNukD,QAAS,81BACTkyC,QAAS,eA4qET4V,OAzqEW,CACXrsG,KAAM,KACNukD,QAAS,mhCACTkyC,QAAS,eAuqET6V,OApqEW,CACXtsG,KAAM,KACNukD,QAAS,kxCACTkyC,QAAS,eAkqET8V,OA/pEW,CACXvsG,KAAM,KACNukD,QAAS,osBACTkyC,QAAS,eA6pET+V,OA1pEW,CACXxsG,KAAM,KACNukD,QAAS,yjCACTkyC,QAAS,eAwpETgW,OArpEW,CACXzsG,KAAM,KACNukD,QAAS,ouCACTkyC,QAAS,eAmpETiW,SAl9Fa,CACb1sG,KAAM,OACNukD,QAAS,8yBACTkyC,QAAS,eAg9FTkW,eAjkImB,CACnB3sG,KAAM,cACNukD,QAAS,mDACTkyC,QAAS,eA+jITmW,oBAl1HwB,CACxB5sG,KAAM,oBACNukD,QAAS,6CACTkyC,QAAS,eAg1HToW,iBA70HqB,CACrB7sG,KAAM,gBACNukD,QAAS,mGACTkyC,QAAS,eA20HTqW,OAl4FW,CACX9sG,KAAM,KACNukD,QAAS,mnBACTkyC,QAAS,eAg4FTsW,UAn1Fc,CACd/sG,KAAM,QACNukD,QAAS,qLACTkyC,QAAS,eAi1FTuW,iBA11FqB,CACrBhtG,KAAM,gBACNukD,QAAS,+ZACTkyC,QAAS,eAw1FTwW,SAz/Ha,CACbjtG,KAAM,OACNukD,QAAS,qYACTkyC,QAAS,eAu/HTyW,mBAxjEuB,CACvBltG,KAAM,kBACNukD,QAAS,wGACTkyC,QAAS,eAsjET0W,UAn4Bc,CACdntG,KAAM,QACNukD,QAAS,8NACTkyC,QAAS,eAi4BT2W,kBAprGsB,CACtBptG,KAAM,iBACNukD,QAAS,yHACTkyC,QAAS,eAkrGT4W,oBA/qGwB,CACxBrtG,KAAM,oBACNukD,QAAS,yHACTkyC,QAAS,eA6qGT6W,0BAl3C8B,CAC9BttG,KAAM,0BACNukD,QAAS,qaACTkyC,QAAS,eAg3CT8W,aAnyDiB,CACjBvtG,KAAM,YACNukD,QAAS,oSACTkyC,QAAS,eAiyDT+W,cA9xDkB,CAClBxtG,KAAM,aACNukD,QAAS,mdACTkyC,QAAS,eA4xDTgX,gBA7vFoB,CACpBztG,KAAM,eACNukD,QAAS,wRACTkyC,QAAS,eA2vFTiX,UApwFc,CACd1tG,KAAM,QACNukD,QAAS,4PACTkyC,QAAS,eAkwFTkX,mBA3xDuB,CACvB3tG,KAAM,mBACNukD,QAAS,+XACTkyC,QAAS,eAyxDTmX,gBA9uFoB,CACpB5tG,KAAM,eACNukD,QAAS,sJACTkyC,QAAS,eA4uFToX,WAv1He,CACf7tG,KAAM,SACNukD,QAAS,0bACTkyC,QAAS,eAq1HTqX,WA1kBe,CACf9tG,KAAM,SACNukD,QAAS,gNACTkyC,QAAS,eAwkBTsX,UA3xCc,CACd/tG,KAAM,QACNukD,QAAS,2IACTkyC,QAAS,eAyxCTuX,8BAp+EkC,CAClChuG,KAAM,8BACNukD,QAAS,sMACTkyC,QAAS,eAk+ETwX,4BA78EgC,CAChCjuG,KAAM,4BACNukD,QAAS,sMACTkyC,QAAS,eA28ETyX,WA5pEe,CACfluG,KAAM,SACNukD,QAAS,2JACTkyC,QAAS,eA0pET0X,eAryFmB,CACnBnuG,KAAM,cACNukD,QAAS,qOACTkyC,QAAS,eAmyFT2X,cAlmHkB,CAClBpuG,KAAM,aACNukD,QAAS,+JACTkyC,QAAS,eAgmHT4X,cAnsBkB,CAClBruG,KAAM,YACNukD,QAAS,qHACTkyC,QAAS,eAisBT6X,iBAxoEqB,CACrBtuG,KAAM,gBACNukD,QAAS,8FACTkyC,QAAS,eAsoET8X,iBA/oEqB,CACrBvuG,KAAM,gBACNukD,QAAS,6FACTkyC,QAAS,eA6oET+X,cAtpEkB,CAClBxuG,KAAM,aACNukD,QAAS,4FACTkyC,QAAS,eAopETgY,iBAvqFqB,CACrBzuG,KAAM,gBACNukD,QAAS,iIACTkyC,QAAS,eAqqFTiY,WAtxEe,CACf1uG,KAAM,SACNukD,QAAS,uGACTkyC,QAAS,eAoxETkY,OAz4BW,CACX3uG,KAAM,KACNukD,QAAS,2fACTkyC,QAAS,eAu4BTmY,4BA1yEgC,CAChC5uG,KAAM,6BACNukD,QAAS,sFACTkyC,QAAS,eAwyEToY,yBAz0E6B,CAC7B7uG,KAAM,yBACNukD,QAAS,yFACTkyC,QAAS,eAu0ETqY,6BAlzEiC,CACjC9uG,KAAM,8BACNukD,QAAS,sFACTkyC,QAAS,eAgzETsY,0BAj1E8B,CAC9B/uG,KAAM,0BACNukD,QAAS,yFACTkyC,QAAS,eA+0ETuY,4BAh0EgC,CAChChvG,KAAM,6BACNukD,QAAS,yEACTkyC,QAAS,eA8zETwY,yBA/1E6B,CAC7BjvG,KAAM,yBACNukD,QAAS,wEACTkyC,QAAS,eA61ETyY,yBA5zE6B,CAC7BlvG,KAAM,0BACNukD,QAAS,yEACTkyC,QAAS,eA0zET0Y,sBA31E0B,CAC1BnvG,KAAM,sBACNukD,QAAS,0EACTkyC,QAAS,eAy1ET2Y,2BA10E+B,CAC/BpvG,KAAM,4BACNukD,QAAS,uEACTkyC,QAAS,eAw0ET4Y,wBAz2E4B,CAC5BrvG,KAAM,wBACNukD,QAAS,sEACTkyC,QAAS,eAu2ET6Y,kBApmGsB,CACtBtvG,KAAM,kBACNukD,QAAS,+CACTkyC,QAAS,eAkmGT8Y,kBA/lGsB,CACtBvvG,KAAM,kBACNukD,QAAS,mCACTkyC,QAAS,eA6lGT+Y,kBA1lGsB,CACtBxvG,KAAM,kBACNukD,QAAS,oGACTkyC,QAAS,eAwlGTgZ,WA7sGe,CACfzvG,KAAM,SACNukD,QAAS,uHACTkyC,QAAS,eA2sGTiZ,eApmImB,CACnB1vG,KAAM,gBACNukD,QAAS,0GACTkyC,QAAS,eAkmITkZ,eA/lImB,CACnB3vG,KAAM,gBACNukD,QAAS,wFACTkyC,QAAS,eA6lITmZ,WA5mIe,CACf5vG,KAAM,SACNukD,QAAS,+HACTkyC,QAAS,eA0mIToZ,qBA3lIyB,CACzB7vG,KAAM,sBACNukD,QAAS,oFACTkyC,QAAS,eAylITqZ,kBAtlIsB,CACtB9vG,KAAM,iBACNukD,QAAS,8GACTkyC,QAAS,eAolITsZ,gBA/kGoB,CACpB/vG,KAAM,gBACNukD,QAAS,4FACTkyC,QAAS,eA6kGTuZ,gBAp3HoB,CACpBhwG,KAAM,eACNukD,QAAS,6HACTkyC,QAAS,eAk3HTwZ,cA/rIkB,CAClBjwG,KAAM,aACNukD,QAAS,oEACTkyC,QAAS,eA6rITyZ,eAprImB,CACnBlwG,KAAM,eACNukD,QAAS,gFACTkyC,QAAS,eAkrIT0Z,YA3rIgB,CAChBnwG,KAAM,WACNukD,QAAS,6DACTkyC,QAAS,eAyrIT2Z,eAl3HmB,CACnBpwG,KAAM,cACNukD,QAAS,2HACTkyC,QAAS,eAg3HT4Z,YAvpDgB,CAChBrwG,KAAM,WACNukD,QAAS,ieACTkyC,QAAS,eAqpDT6Z,SAp8Ga,CACbtwG,KAAM,OACNukD,QAAS,6ZACTkyC,QAAS,eAk8GT8Z,iBAz7GqB,CACrBvwG,KAAM,gBACNukD,QAAS,yZACTkyC,QAAS,eAu7GT+Z,gBApuCoB,CACpBxwG,KAAM,eACNukD,QAAS,+UACTkyC,QAAS,eAkuCTga,aA3uCiB,CACjBzwG,KAAM,WACNukD,QAAS,2NACTkyC,QAAS,eAyuCTia,iBAl3HqB,CACrB1wG,KAAM,iBACNukD,QAAS,g9BACTkyC,QAAS,eAg3HTka,mBA72HuB,CACvB3wG,KAAM,mBACNukD,QAAS,ouCACTkyC,QAAS,eA22HTma,gBAltEoB,CACpB5wG,KAAM,eACNukD,QAAS,onCACTkyC,QAAS,eAgtEToa,iBAz2HqB,CACrB7wG,KAAM,iBACNukD,QAAS,gVACTkyC,QAAS,eAu2HTqa,mBAhoBuB,CACvB9wG,KAAM,mBACNukD,QAAS,2oBACTkyC,QAAS,eA8nBTsa,mBAr2HuB,CACvB/wG,KAAM,mBACNukD,QAAS,2oBACTkyC,QAAS,eAm2HTua,mBAxoBuB,CACvBhxG,KAAM,mBACNukD,QAAS,gVACTkyC,QAAS,eAsoBTwa,kBAjtEsB,CACtBjxG,KAAM,iBACNukD,QAAS,yRACTkyC,QAAS,eA+sETya,yBAl2H6B,CAC7BlxG,KAAM,yBACNukD,QAAS,ydACTkyC,QAAS,eAg2HT0a,wBA71H4B,CAC5BnxG,KAAM,wBACNukD,QAAS,0HACTkyC,QAAS,eA21HT2a,SA17Ga,CACbpxG,KAAM,OACNukD,QAAS,gSACTkyC,QAAS,eAw7GT4a,UA7wGc,CACdrxG,KAAM,QACNukD,QAAS,wEACTkyC,QAAS,eA2wGT6a,WAxwGe,CACftxG,KAAM,SACNukD,QAAS,uEACTkyC,QAAS,eAswGT8a,+BAjiFmC,CACnCvxG,KAAM,gCACNukD,QAAS,4FACTkyC,QAAS,eA+hFT+a,mBAxiFuB,CACvBxxG,KAAM,mBACNukD,QAAS,4KACTkyC,QAAS,eAsiFTgb,iBArjFqB,CACrBzxG,KAAM,iBACNukD,QAAS,wRACTkyC,QAAS,eAmjFTib,kBAhjFsB,CACtB1xG,KAAM,kBACNukD,QAAS,iLACTkyC,QAAS,eA8iFTkb,6BA7gFiC,CACjC3xG,KAAM,8BACNukD,QAAS,4FACTkyC,QAAS,eA2gFTmb,cA53CkB,CAClB5xG,KAAM,aACNukD,QAAS,8KACTkyC,QAAS,eA03CTob,oBAv3CwB,CACxB7xG,KAAM,oBACNukD,QAAS,qPACTkyC,QAAS,eAq3CTqb,cAl2HkB,CAClB9xG,KAAM,aACNukD,QAAS,8GACTkyC,QAAS,eAg2HTsb,aA71HiB,CACjB/xG,KAAM,YACNukD,QAAS,4GACTkyC,QAAS,eA21HTub,iBAl0DqB,CACrBhyG,KAAM,gBACNukD,QAAS,gWACTkyC,QAAS,eAg0DTwb,SAjmIa,CACbjyG,KAAM,OACNukD,QAAS,uEACTkyC,QAAS,eA+lITyb,cA11HkB,CAClBlyG,KAAM,aACNukD,QAAS,iIACTkyC,QAAS,eAw1HT0b,aAr1HiB,CACjBnyG,KAAM,YACNukD,QAAS,+HACTkyC,QAAS,eAm1HT2b,gBA12GoB,CACpBpyG,KAAM,eACNukD,QAAS,wHACTkyC,QAAS,eAw2GT4b,UAv3Gc,CACdryG,KAAM,QACNukD,QAAS,mCACTkyC,QAAS,eAq3GT6b,iBAl3GqB,CACrBtyG,KAAM,gBACNukD,QAAS,gMACTkyC,QAAS,eAg3GT8b,YA3pGgB,CAChBvyG,KAAM,WACNukD,QAAS,oCACTkyC,QAAS,eAypGT+b,WA9yFe,CACfxyG,KAAM,SACNukD,QAAS,2HACTkyC,QAAS,eA4yFTgc,mBA7lIuB,CACvBzyG,KAAM,kBACNukD,QAAS,iOACTkyC,QAAS,eA2lITic,iBApmIqB,CACrB1yG,KAAM,gBACNukD,QAAS,mOACTkyC,QAAS,eAkmITkc,eA78FmB,CACnB3yG,KAAM,cACNukD,QAAS,gNACTkyC,QAAS,eA28FTmc,eA5vCmB,CACnB5yG,KAAM,cACNukD,QAAS,kgBACTkyC,QAAS,eA0vCToc,YAnwCgB,CAChB7yG,KAAM,UACNukD,QAAS,wbACTkyC,QAAS,eAiwCTqc,kBAp+HsB,CACtB9yG,KAAM,iBACNukD,QAAS,uiBACTkyC,QAAS,eAk+HTsc,aAroGiB,CACjB/yG,KAAM,YACNukD,QAAS,qHACTkyC,QAAS,eAmoGTuc,YApuEgB,CAChBhzG,KAAM,UACNukD,QAAS,2JACTkyC,QAAS,eAkuETwc,kBA71HsB,CACtBjzG,KAAM,iBACNukD,QAAS,mGACTkyC,QAAS,eA21HTyc,iBAx1HqB,CACrBlzG,KAAM,gBACNukD,QAAS,mGACTkyC,QAAS,eAs1HT0c,YAjmIgB,CAChBnzG,KAAM,UACNukD,QAAS,gEACTkyC,QAAS,eA+lIT2c,kBAp1HsB,CACtBpzG,KAAM,iBACNukD,QAAS,qNACTkyC,QAAS,eAk1HT4c,YA7zHgB,CAChBrzG,KAAM,UACNukD,QAAS,oNACTkyC,QAAS,eA2zHT6c,gBAh1HoB,CACpBtzG,KAAM,eACNukD,QAAS,oNACTkyC,QAAS,eA80HT8c,iBA30HqB,CACrBvzG,KAAM,gBACNukD,QAAS,sNACTkyC,QAAS,eAy0HT+c,eAt0HmB,CACnBxzG,KAAM,cACNukD,QAAS,qNACTkyC,QAAS,eAo0HTgd,sBAv3B0B,CAC1BzzG,KAAM,sBACNukD,QAAS,sLACTkyC,QAAS,eAq3BTid,sBA93B0B,CAC1B1zG,KAAM,sBACNukD,QAAS,sLACTkyC,QAAS,eA43BTkd,YAvxFgB,CAChB3zG,KAAM,UACNukD,QAAS,g+BACTkyC,QAAS,eAqxFTmd,eA9jDmB,CACnB5zG,KAAM,cACNukD,QAAS,0OACTkyC,QAAS,eA4jDTod,eA3uHmB,CACnB7zG,KAAM,cACNukD,QAAS,mWACTkyC,QAAS,eAyuHTqd,iBAlgHqB,CACrB9zG,KAAM,gBACNukD,QAAS,gcACTkyC,QAAS,eAggHTsd,cAzgHkB,CAClB/zG,KAAM,YACNukD,QAAS,0RACTkyC,QAAS,eAugHTud,iBA19DqB,CACrBh0G,KAAM,gBACNukD,QAAS,uIACTkyC,QAAS,eAw9DTwd,oBArmHwB,CACxBj0G,KAAM,mBACNukD,QAAS,4LACTkyC,QAAS,eAmmHTyd,kBA5mHsB,CACtBl0G,KAAM,iBACNukD,QAAS,8JACTkyC,QAAS,eA0mHT0d,qBAr0ByB,CACzBn0G,KAAM,oBACNukD,QAAS,yPACTkyC,QAAS,eAm0BT2d,sBAh0B0B,CAC1Bp0G,KAAM,sBACNukD,QAAS,yVACTkyC,QAAS,eA8zBT4d,mBA3zBuB,CACvBr0G,KAAM,kBACNukD,QAAS,4nBACTkyC,QAAS,eAyzBT6d,qBAtzByB,CACzBt0G,KAAM,oBACNukD,QAAS,i3BACTkyC,QAAS,eAozBT8d,oBAjzBwB,CACxBv0G,KAAM,mBACNukD,QAAS,4qCACTkyC,QAAS,eA+yBT+d,wBAtvB4B,CAC5Bx0G,KAAM,wBACNukD,QAAS,+tBACTkyC,QAAS,eAovBTge,eA/2BmB,CACnBz0G,KAAM,aACNukD,QAAS,gjBACTkyC,QAAS,eA62BTie,sBAlvB0B,CAC1B10G,KAAM,qBACNukD,QAAS,mMACTkyC,QAAS,eAgvBTke,aA3+DiB,CACjB30G,KAAM,WACNukD,QAAS,4XACTkyC,QAAS,eAy+DTme,UA1iGc,CACd50G,KAAM,QACNukD,QAAS,oDACTkyC,QAAS,eAwiGToe,YAn+FgB,CAChB70G,KAAM,WACNukD,QAAS,oDACTkyC,QAAS,eAi+FTqe,WApiHe,CACf90G,KAAM,SACNukD,QAAS,oMACTkyC,QAAS,eAkiHTse,YAzgDgB,CAChB/0G,KAAM,UACNukD,QAAS,6UACTkyC,QAAS,eAugDTue,WA9nFe,CACfh1G,KAAM,SACNukD,QAAS,0bACTkyC,QAAS,eA4nFTwe,QAr6CY,CACZj1G,KAAM,MACNukD,QAAS,8HACTkyC,QAAS,eAm6CTye,iBAtxCqB,CACrBl1G,KAAM,gBACNukD,QAAS,8rBACTkyC,QAAS,eAoxCT0e,cA7xCkB,CAClBn1G,KAAM,YACNukD,QAAS,gmBACTkyC,QAAS,eA2xCT2e,SAxjGa,CACbp1G,KAAM,OACNukD,QAAS,iCACTkyC,QAAS,eAsjGT4e,WAj/Fe,CACfr1G,KAAM,UACNukD,QAAS,mCACTkyC,QAAS,eA++FT6e,aA9/FiB,CACjBt1G,KAAM,WACNukD,QAAS,qKACTkyC,QAAS,eA4/FT8e,eA/6GmB,CACnBv1G,KAAM,cACNukD,QAAS,kJACTkyC,QAAS,eA66GT+e,SA57Ga,CACbx1G,KAAM,OACNukD,QAAS,iEACTkyC,QAAS,eA07GTgf,gBAv7GoB,CACpBz1G,KAAM,eACNukD,QAAS,2NACTkyC,QAAS,eAq7GTif,WAptGe,CACf11G,KAAM,UACNukD,QAAS,gEACTkyC,QAAS,eAktGTkf,YA7lGgB,CAChB31G,KAAM,UACNukD,QAAS,gFACTkyC,QAAS,eA2lGTmf,mBA91HuB,CACvB51G,KAAM,kBACNukD,QAAS,wEACTkyC,QAAS,eA41HTof,iBAz1HqB,CACrB71G,KAAM,gBACNukD,QAAS,wEACTkyC,QAAS,eAu1HTqf,kBAp1HsB,CACtB91G,KAAM,iBACNukD,QAAS,2EACTkyC,QAAS,eAk1HTsf,gBA/0HoB,CACpB/1G,KAAM,eACNukD,QAAS,2EACTkyC,QAAS,eA60HTuf,UA5jHc,CACdh2G,KAAM,QACNukD,QAAS,gVACTkyC,QAAS,eA0jHTwf,gBAzvDoB,CACpBj2G,KAAM,eACNukD,QAAS,ksIACTkyC,QAAS,eAuvDTyf,WAloGe,CACfl2G,KAAM,UACNukD,QAAS,ukCACTkyC,QAAS,eAgoGT0f,kBAzoGsB,CACtBn2G,KAAM,kBACNukD,QAAS,yxBACTkyC,QAAS,eAuoGT2f,kBA9nGsB,CACtBp2G,KAAM,kBACNukD,QAAS,4iBACTkyC,QAAS,eA4nGT4f,mBAj6FuB,CACvBr2G,KAAM,kBACNukD,QAAS,0XACTkyC,QAAS,eA+5FT6f,uBAp7F2B,CAC3Bt2G,KAAM,sBACNukD,QAAS,6QACTkyC,QAAS,eAk7FT8f,gBA37FoB,CACpBv2G,KAAM,cACNukD,QAAS,yKACTkyC,QAAS,eAy7FT+f,cAhyCkB,CAClBx2G,KAAM,aACNukD,QAAS,otHACTkyC,QAAS,eA8xCTggB,WAvyCe,CACfz2G,KAAM,SACNukD,QAAS,muHACTkyC,QAAS,eAqyCTigB,SA5nHa,CACb12G,KAAM,OACNukD,QAAS,wGACTkyC,QAAS,eA0nHTkgB,sBAr1H0B,CAC1B32G,KAAM,qBACNukD,QAAS,oOACTkyC,QAAS,eAm1HTmgB,4BApmFgC,CAChC52G,KAAM,4BACNukD,QAAS,wUACTkyC,QAAS,eAkmFTogB,0BA7kF8B,CAC9B72G,KAAM,0BACNukD,QAAS,kUACTkyC,QAAS,eA2kFTqgB,YAprIgB,CAChB92G,KAAM,UACNukD,QAAS,wEACTkyC,QAAS,eAkrITsgB,eAn1HmB,CACnB/2G,KAAM,cACNukD,QAAS,wMACTkyC,QAAS,eAi1HTugB,kBA90HsB,CACtBh3G,KAAM,iBACNukD,QAAS,wKACTkyC,QAAS,eA40HTwgB,kBAz0HsB,CACtBj3G,KAAM,iBACNukD,QAAS,8IACTkyC,QAAS,eAu0HTygB,WApkGe,CACfl3G,KAAM,SACNukD,QAAS,oDACTkyC,QAAS,eAkkGT0gB,sBAr0H0B,CAC1Bn3G,KAAM,sBACNukD,QAAS,0fACTkyC,QAAS,eAm0HT2gB,WAx2Fe,CACfp3G,KAAM,SACNukD,QAAS,m6BACTkyC,QAAS,eAs2FT4gB,eA71FmB,CACnBr3G,KAAM,cACNukD,QAAS,yHACTkyC,QAAS,eA21FT6gB,gBAp2FoB,CACpBt3G,KAAM,eACNukD,QAAS,uHACTkyC,QAAS,eAk2FT8gB,iBAjxFqB,CACrBv3G,KAAM,gBACNukD,QAAS,sJACTkyC,QAAS,eA+wFT+gB,cApnDkB,CAClBx3G,KAAM,aACNukD,QAAS,+NACTkyC,QAAS,eAknDTghB,SArsIa,CACbz3G,KAAM,OACNukD,QAAS,uEACTkyC,QAAS,eAmsITihB,WAltCe,CACf13G,KAAM,UACNukD,QAAS,gYACTkyC,QAAS,eAgtCTkhB,QAztCY,CACZ33G,KAAM,MACNukD,QAAS,gSACTkyC,QAAS,eAutCTmhB,SA9lHa,CACb53G,KAAM,OACNukD,QAAS,yLACTkyC,QAAS,eA4lHTohB,WAjyGe,CACf73G,KAAM,SACNukD,QAAS,mRACTkyC,QAAS,eA+xGTqhB,cA9kEkB,CAClB93G,KAAM,aACNukD,QAAS,6oBACTkyC,QAAS,eA4kETshB,cAnkEkB,CAClB/3G,KAAM,aACNukD,QAAS,4QACTkyC,QAAS,eAikETuhB,sBAhnG0B,CAC1Bh4G,KAAM,sBACNukD,QAAS,oNACTkyC,QAAS,eA8mGTwhB,cAj1FkB,CAClBj4G,KAAM,aACNukD,QAAS,qDACTkyC,QAAS,eA+0FTyhB,WAlyFe,CACfl4G,KAAM,SACNukD,QAAS,84BACTkyC,QAAS,eAgyFT0hB,UA38Cc,CACdn4G,KAAM,QACNukD,QAAS,yZACTkyC,QAAS,eAy8CT2hB,YA1yFgB,CAChBp4G,KAAM,UACNukD,QAAS,6DACTkyC,QAAS,eAwyFT4hB,cAnpGkB,CAClBr4G,KAAM,YACNukD,QAAS,ucACTkyC,QAAS,eAipGT6hB,gBA96DoB,CACpBt4G,KAAM,cACNukD,QAAS,gbACTkyC,QAAS,eA46DT8hB,eAzqFmB,CACnBv4G,KAAM,eACNukD,QAAS,uGACTkyC,QAAS,eAuqFT+hB,YA50FgB,CAChBx4G,KAAM,UACNukD,QAAS,sYACTkyC,QAAS,eA00FTgiB,QAngCY,CACZz4G,KAAM,MACNukD,QAAS,qIACTkyC,QAAS,eAigCTiiB,aA9lFiB,CACjB14G,KAAM,YACNukD,QAAS,yOACTkyC,QAAS,eA4lFTkiB,oBAzlFwB,CACxB34G,KAAM,oBACNukD,QAAS,iSACTkyC,QAAS,eAulFTmiB,oBAplFwB,CACxB54G,KAAM,oBACNukD,QAAS,mRACTkyC,QAAS,eAklFToiB,YA78GgB,CAChB74G,KAAM,WACNukD,QAAS,oEACTkyC,QAAS,eA28GTqiB,iBA57GqB,CACrB94G,KAAM,iBACNukD,QAAS,wDACTkyC,QAAS,eA07GTsiB,cAn8GkB,CAClB/4G,KAAM,aACNukD,QAAS,2IACTkyC,QAAS,eAi8GTuiB,aA18GiB,CACjBh5G,KAAM,YACNukD,QAAS,mEACTkyC,QAAS,eAw8GTwiB,kBAz7GsB,CACtBj5G,KAAM,kBACNukD,QAAS,sDACTkyC,QAAS,eAu7GTyiB,aAlsHiB,CACjBl5G,KAAM,WACNukD,QAAS,4NACTkyC,QAAS,eAgsHT0iB,iBA7nDqB,CACrBn5G,KAAM,gBACNukD,QAAS,glDACTkyC,QAAS,eA2nDT2iB,SA5gGa,CACbp5G,KAAM,OACNukD,QAAS,gHACTkyC,QAAS,eA0gGT4iB,gBAnhGoB,CACpBr5G,KAAM,eACNukD,QAAS,wNACTkyC,QAAS,eAihGT6iB,UAlpGc,CACdt5G,KAAM,QACNukD,QAAS,gPACTkyC,QAAS,eAgpGT8iB,SA/mGa,CACbv5G,KAAM,OACNukD,QAAS,iCACTkyC,QAAS,eA6mGT+iB,WAxiGe,CACfx5G,KAAM,UACNukD,QAAS,mCACTkyC,QAAS,eAsiGTgjB,kBAj6EsB,CACtBz5G,KAAM,gBACNukD,QAAS,+pDACTkyC,QAAS,eA+5ETijB,uBA51D2B,CAC3B15G,KAAM,uBACNukD,QAAS,gdACTkyC,QAAS,eA01DTkjB,mBAv1DuB,CACvB35G,KAAM,mBACNukD,QAAS,oxEACTkyC,QAAS,eAq1DTmjB,sBAl1D0B,CAC1B55G,KAAM,sBACNukD,QAAS,uhBACTkyC,QAAS,eAg1DTojB,sBA70D0B,CAC1B75G,KAAM,sBACNukD,QAAS,wrCACTkyC,QAAS,eA20DTqjB,wBAx0D4B,CAC5B95G,KAAM,wBACNukD,QAAS,sbACTkyC,QAAS,eAs0DTsjB,mBA30CuB,CACvB/5G,KAAM,mBACNukD,QAAS,ycACTkyC,QAAS,eAy0CTujB,gBAl1CoB,CACpBh6G,KAAM,eACNukD,QAAS,4RACTkyC,QAAS,eAg1CTwjB,cAzgCkB,CAClBj6G,KAAM,YACNukD,QAAS,ubACTkyC,QAAS,eAugCTyjB,cAp6EkB,CAClBl6G,KAAM,YACNukD,QAAS,2pBACTkyC,QAAS,eAk6ET0jB,QA/mDY,CACZn6G,KAAM,MACNukD,QAAS,8FACTkyC,QAAS,eA6mDT2jB,cAh6EkB,CAClBp6G,KAAM,YACNukD,QAAS,0pBACTkyC,QAAS,eA85ET4jB,WA3mDe,CACfr6G,KAAM,SACNukD,QAAS,0TACTkyC,QAAS,eAymDT6jB,aA1xDiB,CACjBt6G,KAAM,YACNukD,QAAS,wOACTkyC,QAAS,eAwxDT8jB,2BA7tE+B,CAC/Bv6G,KAAM,4BACNukD,QAAS,4GACTkyC,QAAS,eA2tET+jB,yBApuE6B,CAC7Bx6G,KAAM,0BACNukD,QAAS,yGACTkyC,QAAS,eAkuETgkB,0BAztE8B,CAC9Bz6G,KAAM,2BACNukD,QAAS,yGACTkyC,QAAS,eAutETikB,2BAlvE+B,CAC/B16G,KAAM,4BACNukD,QAAS,4GACTkyC,QAAS,eAgvETkkB,yBAzvE6B,CAC7B36G,KAAM,0BACNukD,QAAS,yGACTkyC,QAAS,eAuvETmkB,0BA9uE8B,CAC9B56G,KAAM,2BACNukD,QAAS,yGACTkyC,QAAS,eA4uETokB,qBAvtEyB,CACzB76G,KAAM,qBACNukD,QAAS,0PACTkyC,QAAS,eAqtETqkB,wBAxwE4B,CAC5B96G,KAAM,yBACNukD,QAAS,2GACTkyC,QAAS,eAswETskB,sBA/wE0B,CAC1B/6G,KAAM,uBACNukD,QAAS,uGACTkyC,QAAS,eA6wETukB,uBApwE2B,CAC3Bh7G,KAAM,wBACNukD,QAAS,wGACTkyC,QAAS,eAkwETwkB,cArjDkB,CAClBj7G,KAAM,aACNukD,QAAS,yMACTkyC,QAAS,eAmjDTykB,oBApuDwB,CACxBl7G,KAAM,oBACNukD,QAAS,4PACTkyC,QAAS,eAkuDT0kB,cArxDkB,CAClBn7G,KAAM,aACNukD,QAAS,kLACTkyC,QAAS,eAmxDT2kB,wBAhxD4B,CAC5Bp7G,KAAM,wBACNukD,QAAS,wcACTkyC,QAAS,eA8wDT4kB,sBAnvD0B,CAC1Br7G,KAAM,sBACNukD,QAAS,8UACTkyC,QAAS,eAivDT6kB,sBApjD0B,CAC1Bt7G,KAAM,sBACNukD,QAAS,0NACTkyC,QAAS,eAkjDT8kB,0BA7wD8B,CAC9Bv7G,KAAM,2BACNukD,QAAS,gKACTkyC,QAAS,eA2wDT+kB,2BAxwD+B,CAC/Bx7G,KAAM,4BACNukD,QAAS,8JACTkyC,QAAS,eAswDTglB,gBAjjDoB,CACpBz7G,KAAM,eACNukD,QAAS,6MACTkyC,QAAS,eA+iDTilB,gBAtuDoB,CACpB17G,KAAM,eACNukD,QAAS,yRACTkyC,QAAS,eAouDTklB,UAzyDc,CACd37G,KAAM,QACNukD,QAAS,6LACTkyC,QAAS,eAuyDTmlB,wBAh0B4B,CAC5B57G,KAAM,wBACNukD,QAAS,kKACTkyC,QAAS,eA8zBTolB,qBA3zByB,CACzB77G,KAAM,qBACNukD,QAAS,6JACTkyC,QAAS,eAyzBTqlB,uBAx0B2B,CAC3B97G,KAAM,uBACNukD,QAAS,sKACTkyC,QAAS,eAs0BTslB,oBAvyDwB,CACxB/7G,KAAM,mBACNukD,QAAS,mZACTkyC,QAAS,eAqyDTulB,mBAxvDuB,CACvBh8G,KAAM,mBACNukD,QAAS,uVACTkyC,QAAS,eAsvDTwlB,mBAnjDuB,CACvBj8G,KAAM,mBACNukD,QAAS,mNACTkyC,QAAS,eAijDTylB,wBA5wD4B,CAC5Bl8G,KAAM,yBACNukD,QAAS,iKACTkyC,QAAS,eA0wDT0lB,wBAvwD4B,CAC5Bn8G,KAAM,yBACNukD,QAAS,8JACTkyC,QAAS,eAqwDT2lB,iBA5sDqB,CACrBp8G,KAAM,gBACNukD,QAAS,gMACTkyC,QAAS,eA0sDT4lB,gBA3lDoB,CACpBr8G,KAAM,eACNukD,QAAS,6tBACTkyC,QAAS,eAylDT6lB,mBAt2CuB,CACvBt8G,KAAM,oBACNukD,QAAS,4iBACTkyC,QAAS,eAo2CT8lB,gBA72CoB,CACpBv8G,KAAM,gBACNukD,QAAS,keACTkyC,QAAS,eA22CT+lB,oBAtlEwB,CACxBx8G,KAAM,mBACNukD,QAAS,w0CACTkyC,QAAS,eAolETgmB,aAnyHiB,CACjBz8G,KAAM,YACNukD,QAAS,wFACTkyC,QAAS,eAiyHTimB,iBAtzHqB,CACrB18G,KAAM,gBACNukD,QAAS,yGACTkyC,QAAS,eAozHTkmB,iBA3yHqB,CACrB38G,KAAM,gBACNukD,QAAS,kHACTkyC,QAAS,eAyyHTmmB,kBAlzHsB,CACtB58G,KAAM,kBACNukD,QAAS,miBACTkyC,QAAS,eAgzHTomB,aAzzEiB,CACjB78G,KAAM,YACNukD,QAAS,0IACTkyC,QAAS,eAuzETqmB,aAhoEiB,CACjB98G,KAAM,WACNukD,QAAS,stEACTkyC,QAAS,eA8nETsmB,kBArnEsB,CACtB/8G,KAAM,iBACNukD,QAAS,42CACTkyC,QAAS,eAmnETumB,YA5nEgB,CAChBh9G,KAAM,UACNukD,QAAS,shCACTkyC,QAAS,eA0nETwmB,cAnxHkB,CAClBj9G,KAAM,aACNukD,QAAS,oRACTkyC,QAAS,eAixHTymB,qBA1xHyB,CACzBl9G,KAAM,qBACNukD,QAAS,2kBACTkyC,QAAS,eAwxHT0mB,YAzwHgB,CAChBn9G,KAAM,WACNukD,QAAS,wRACTkyC,QAAS,eAuwHT2mB,mBAhxHuB,CACvBp9G,KAAM,mBACNukD,QAAS,ukBACTkyC,QAAS,eA8wHT4mB,mBAjyFuB,CACvBr9G,KAAM,kBACNukD,QAAS,wFACTkyC,QAAS,eA+xFT6mB,mBA5xFuB,CACvBt9G,KAAM,kBACNukD,QAAS,qFACTkyC,QAAS,eA0xFT8mB,oBAzyFwB,CACxBv9G,KAAM,mBACNukD,QAAS,uFACTkyC,QAAS,eAuyFT+mB,iBAhzFqB,CACrBx9G,KAAM,gBACNukD,QAAS,sFACTkyC,QAAS,eA8yFTgnB,eA3gCmB,CACnBz9G,KAAM,cACNukD,QAAS,sNACTkyC,QAAS,eAygCTinB,oBA97BwB,CACxB19G,KAAM,oBACNukD,QAAS,qOACTkyC,QAAS,eA47BTknB,yBAnrD6B,CAC7B39G,KAAM,0BACNukD,QAAS,uVACTkyC,QAAS,eAirDTmnB,iBA5sDqB,CACrB59G,KAAM,gBACNukD,QAAS,+eACTkyC,QAAS,eA0sDTonB,0BA7kE8B,CAC9B79G,KAAM,2BACNukD,QAAS,4gBACTkyC,QAAS,eA2kETqnB,uBAplE2B,CAC3B99G,KAAM,uBACNukD,QAAS,ybACTkyC,QAAS,eAklETsnB,uBA3lE2B,CAC3B/9G,KAAM,uBACNukD,QAAS,4bACTkyC,QAAS,eAylETunB,iBAlmEqB,CACrBh+G,KAAM,gBACNukD,QAAS,snBACTkyC,QAAS,eAgmETwnB,0BArkE8B,CAC9Bj+G,KAAM,2BACNukD,QAAS,umBACTkyC,QAAS,eAmkETynB,uBA5kE2B,CAC3Bl+G,KAAM,uBACNukD,QAAS,2hBACTkyC,QAAS,eA0kET0nB,iBA35FqB,CACrBn+G,KAAM,eACNukD,QAAS,wGACTkyC,QAAS,eAy5FT2nB,UAprHc,CACdp+G,KAAM,QACNukD,QAAS,oQACTkyC,QAAS,eAkrHT4nB,cAz3CkB,CAClBr+G,KAAM,aACNukD,QAAS,kfACTkyC,QAAS,eAu3CT6nB,WAh4Ce,CACft+G,KAAM,SACNukD,QAAS,sWACTkyC,QAAS,eA83CT8nB,eA/2CmB,CACnBv+G,KAAM,cACNukD,QAAS,0oBACTkyC,QAAS,eA62CT+nB,YAt3CgB,CAChBx+G,KAAM,UACNukD,QAAS,4iBACTkyC,QAAS,eAo3CTgoB,cA/gFkB,CAClBz+G,KAAM,YACNukD,QAAS,yMACTkyC,QAAS,eA6gFTioB,SAlwHa,CACb1+G,KAAM,OACNukD,QAAS,2GACTkyC,QAAS,eAgwHTkoB,YAv2IgB,CAChB3+G,KAAM,UACNukD,QAAS,4FACTkyC,QAAS,eAq2ITmoB,WApqHe,CACf5+G,KAAM,SACNukD,QAAS,wqBACTkyC,QAAS,eAkqHTooB,mBAzpHuB,CACvB7+G,KAAM,kBACNukD,QAAS,2qBACTkyC,QAAS,eAupHTqoB,WA9oHe,CACf9+G,KAAM,SACNukD,QAAS,4RACTkyC,QAAS,eA4oHTsoB,UA7jDc,CACd/+G,KAAM,QACNukD,QAAS,6HACTkyC,QAAS,eA2jDTuoB,YAtuGgB,CAChBh/G,KAAM,UACNukD,QAAS,4VACTkyC,QAAS,eAouGTwoB,WAv9Ge,CACfj/G,KAAM,SACNukD,QAAS,uEACTkyC,QAAS,eAq9GTyoB,SApjDa,CACbl/G,KAAM,OACNukD,QAAS,+KACTkyC,QAAS,eAkjDT0oB,gBAjxHoB,CACpBn/G,KAAM,eACNukD,QAAS,8UACTkyC,QAAS,eA+wHT2oB,mBAltDuB,CACvBp/G,KAAM,kBACNukD,QAAS,goBACTkyC,QAAS,eAgtDT4oB,oBAztDwB,CACxBr/G,KAAM,mBACNukD,QAAS,mjDACTkyC,QAAS,eAutDT6oB,OAtnCW,CACXt/G,KAAM,KACNukD,QAAS,0hBACTkyC,QAAS,eAonCT8oB,WAnoCe,CACfv/G,KAAM,SACNukD,QAAS,80BACTkyC,QAAS,eAioCT+oB,kBAphEsB,CACtBx/G,KAAM,iBACNukD,QAAS,mHACTkyC,QAAS,eAkhETgpB,aAr0CiB,CACjBz/G,KAAM,YACNukD,QAAS,00BACTkyC,QAAS,eAm0CTipB,UA50Cc,CACd1/G,KAAM,QACNukD,QAAS,4sBACTkyC,QAAS,eA00CTkpB,eAjsGmB,CACnB3/G,KAAM,cACNukD,QAAS,qGACTkyC,QAAS,eA+rGTmpB,eAtrGmB,CACnB5/G,KAAM,cACNukD,QAAS,wKACTkyC,QAAS,eAorGTopB,aA7rGiB,CACjB7/G,KAAM,YACNukD,QAAS,yQACTkyC,QAAS,eA2rGTqpB,kBAx4HsB,CACtB9/G,KAAM,iBACNukD,QAAS,yIACTkyC,QAAS,eAs4HTspB,oBAn4HwB,CACxB//G,KAAM,mBACNukD,QAAS,uEACTkyC,QAAS,eAi4HTupB,cA58HkB,CAClBhgH,KAAM,aACNukD,QAAS,wkCACTkyC,QAAS,eA08HTwpB,WA/8Ge,CACfjgH,KAAM,SACNukD,QAAS,uDACTkyC,QAAS,eA68GTypB,mBAp8GuB,CACvBlgH,KAAM,kBACNukD,QAAS,mCACTkyC,QAAS,eAk8GT0pB,kBA38GsB,CACtBngH,KAAM,iBACNukD,QAAS,iFACTkyC,QAAS,eAy8GT2pB,WAp7Ge,CACfpgH,KAAM,SACNukD,QAAS,mZACTkyC,QAAS,eAk7GT4pB,YA/mHgB,CAChBrgH,KAAM,WACNukD,QAAS,6NACTkyC,QAAS,eA6mHT6pB,MA5nHU,CACVtgH,KAAM,IACNukD,QAAS,qIACTkyC,QAAS,eA0nHT8pB,aAvnHiB,CACjBvgH,KAAM,YACNukD,QAAS,qSACTkyC,QAAS,eAqnHT+pB,cAp4CkB,CAClBxgH,KAAM,aACNukD,QAAS,wzBACTkyC,QAAS,eAk4CTgqB,WA34Ce,CACfzgH,KAAM,SACNukD,QAAS,mwBACTkyC,QAAS,eAy4CTiqB,eA10CmB,CACnB1gH,KAAM,cACNukD,QAAS,usBACTkyC,QAAS,eAw0CTkqB,YAj1CgB,CAChB3gH,KAAM,UACNukD,QAAS,8bACTkyC,QAAS,eA+0CTmqB,mBA1iGuB,CACvB5gH,KAAM,mBACNukD,QAAS,gVACTkyC,QAAS,eAwiGToqB,gBAriGoB,CACpB7gH,KAAM,gBACNukD,QAAS,iWACTkyC,QAAS,eAmiGTqqB,WA56Ge,CACf9gH,KAAM,UACNukD,QAAS,kUACTkyC,QAAS,eA06GTsqB,YAv6GgB,CAChB/gH,KAAM,WACNukD,QAAS,wSACTkyC,QAAS,kBA+6Gb,SAAUl2F,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACf0P,EAAO1P,EAAM0P,KAEb+gB,EADKzwB,EAAM4pB,GACC6G,OACZruB,EAASJ,EAAEI,OAEXqgH,EAAWhyF,EAAOruB,OAAO,CACzBoF,KAAM,SAAS0D,EAAS1E,GACpB,IAAIc,EAAOjI,KACXoxB,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,UAE5BA,EAAQ/E,KACf6F,EAAKo7G,MAAQ,IAAIhzG,EAAK2nF,aAAansF,EAASlJ,EAAEI,OAAO,CAAC,EAAGoE,IACzDc,EAAK4D,QAAU5D,EAAK2E,QAAU3E,EAAKo7G,MAAMx3G,QAEzClL,EAAMi0B,OAAO3sB,EACjB,EACAd,QAASpE,EAAO,CAAC,EAAGsN,EAAK2nF,aAAajwF,GAAGZ,QAAS,CAC9C/E,KAAM,aAEV8vB,WAAY,SAAS/qB,GACjB,IAAIc,EAAOjI,KAEXoxB,EAAOrpB,GAAGmqB,WAAW3nB,KAAKtC,EAAMd,GAEhCc,EAAKo7G,MAAQ,IAAIhzG,EAAK2nF,aAAa/vF,EAAK4D,QAASlJ,EAAEI,OAAO,CAAC,EAAGkF,EAAKd,SACvE,IAGAm8G,EAAUlyF,EAAOruB,OAAO,CACxBoF,KAAM,SAAS0D,EAAS1E,GACpB,IAAIc,EAAOjI,KACXoxB,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,UAE5BA,EAAQ/E,KACf6F,EAAKo7G,MAAQ,IAAIhzG,EAAKynF,YAAYjsF,EAASlJ,EAAEI,OAAO,CAAC,EAAGoE,IACxDc,EAAK4D,QAAU5D,EAAK2E,QAAU3E,EAAKo7G,MAAMx3G,QAEzClL,EAAMi0B,OAAO3sB,EACjB,EACAd,QAASpE,EAAO,CAAC,EAAGsN,EAAKynF,YAAY/vF,GAAGZ,QAAS,CAC7C/E,KAAM,YAEV8vB,WAAY,SAAS/qB,GACjB,IAAIc,EAAOjI,KAEXoxB,EAAOrpB,GAAGmqB,WAAW3nB,KAAKtC,EAAMd,GAE5BA,EAAQmxF,MACRt4F,KAAK6L,QAAQwE,KAAK,IAGtBpI,EAAKo7G,MAAQ,IAAIhzG,EAAKynF,YAAY7vF,EAAK4D,QAASlJ,EAAEI,OAAO,CAAC,EAAGkF,EAAKd,SACtE,IAGJxG,EAAM4pB,GAAG2M,OAAOksF,GAChBziH,EAAM4pB,GAAG2M,OAAOosF,GAEhB3iH,EAAM2uC,YAAY,WAAY,OAC9B3uC,EAAM4pB,GAAGquE,SAAWA,EACpBj4F,EAAM4pB,GAAG+tE,KAAOjoF,EAAK0oF,UACxB,CA/DD,CA+DGj4F,OAAOH,MAAM+G,QACF/G,OAgBd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfywB,EAASzwB,EAAM4pB,GAAG6G,OAClB0gE,EAAQnxF,EAAM4pB,GAAGunE,MACjB5oF,EAAavI,EAAMuI,WACnBvB,EAAgBhF,EAAEgF,cAClB5E,EAASJ,EAAEI,OACXwgH,EAAW5gH,EAAEgN,UACbof,EAAapuB,EAAMouB,WACnBy0F,EAAe,aACfC,EAAc,mBACdzsC,EAAO,OACPC,EAAO,OACPjsB,EAAQ,QACR04D,EAAc,cACdz4D,EAAe,eACf04D,EAAgB,kBAChBC,EAAW,EAAGC,WAAUC,UAASvkF,SAC7B,uCAAwCskF,EAAmC,GAAxB,gEAE7CA,EAAqH,GAA1G,iCAAiCljH,EAAM4pB,GAAG+tE,KAAK31F,EAAE,+BAAgC,CAAE21F,KAAM,gBACrGwrB,EAAU,mCAAmCvkF,YAAgB,IAClE,SACJwkF,EAAiBpjH,EAAMyP,UAAS,EAAGu2C,aAC/B,kCAAkCg9D,WAAuBh9D,EAAQ33B,qEAIrE6iE,EAAK,gBACLmyB,EAAY,CACRt3F,OAAQ,CACJssB,OAAQ,gBACR1rC,SAAU,cAEd4X,IAAK,CACD8zB,OAAQ,aACR1rC,SAAU,iBAEdkf,KAAM,CACFwsB,OAAQ,cACR1rC,SAAU,eACV2kF,UAAW,YAEfxlE,MAAO,CACHusB,OAAQ,eACR1rC,SAAU,cACV2kF,UAAW,YAEf1T,OAAQ,CACJjxE,SAAU,gBACV0rC,OAAQ,kBAGhBirE,EAAU,CACN/+F,IAAO,SACPwH,OAAU,MACVF,KAAQ,QACRC,MAAS,OACT8xD,OAAU,UAEd2lC,EAAa,CACTx3F,OAAQ,IACRxH,IAAK,IACLsH,KAAM,IACNC,MAAO,IACP8xD,OAAQ,KAEZ4lC,EAAa,CACTzxE,WAAc,CAAE50B,OAAQ,MAAO9N,KAAM,eACrCwiC,SAAY,CAAE10B,OAAQ,OAAQ9N,KAAM,eAM5C,SAASo0G,EAAav4G,GAClB,KAAOA,EAAQrE,SACP68G,EAAgCx4G,IAGpCA,EAAUA,EAAQc,QAE1B,CAEA,SAAS03G,EAAgCx4G,GACrC,IAAIsyC,EAAQtyC,EAAQuC,KAAKzN,EAAMwrB,GAAK,SACpC,GAAIgyB,EAGA,OAFAtyC,EAAQ+X,KAAK,QAASu6B,GACtBtyC,EAAQgnB,WAAWlyB,EAAMwrB,GAAK,UACvB,CAEf,CAEA,SAASm4F,EAA6Bz4G,GAClC,IAAIsyC,EAAQtyC,EAAQ+X,KAAK,SACzB,GAAIu6B,EAGA,OAFAtyC,EAAQuC,KAAKzN,EAAMwrB,GAAK,QAASgyB,GACjCtyC,EAAQ+X,KAAK,QAAS,KACf,CAEf,CAEA,SAAS2gG,EAAoB14G,GACzB,KAAOA,EAAQrE,SAAWqE,EAAQoB,GAAG,UAC7Bq3G,EAA6Bz4G,IAGjCA,EAAUA,EAAQc,QAE1B,CAEA,IAAI63G,EAAcpzF,EAAOruB,OAAO,CAC5BoF,KAAM,SAAS0D,EAAS1E,GACpB,IACIg+B,EADAl9B,EAAOjI,KAGXoxB,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GAEnCg+B,EAAOl9B,EAAKd,QAAQmG,SAASoD,MAAM,cAAgB,aAAe,WAElEzI,EAAK0qB,WAAawxF,EAAWh/E,GAEzBxkC,EAAM4C,QAAQic,OAASxf,KAAKykH,wBAC5Bx8G,EAAK4D,QAAQge,GAAGlpB,EAAM4C,QAAQumB,UAAY+nE,EAAI5pF,EAAKd,QAAQooB,OAAQtnB,EAAKy8G,QAAQl7G,KAAKvB,IAGzFA,EAAK4D,QAAQge,GAAG5hB,EAAKd,QAAQw9G,OAAS9yB,EAAI5pF,EAAKd,QAAQooB,OAAQtnB,EAAKy8G,QAAQl7G,KAAKvB,IAErD,UAAxBA,EAAKd,QAAQw9G,QACb18G,EAAK4D,QAAQge,GAAG,UAAYgoE,EAAI5pF,EAAKd,QAAQooB,OAAQtnB,EAAK28G,SAASp7G,KAAKvB,GAEhF,EAEAd,QAAS,CACL/E,KAAM,cACNmtB,OAAQ,GACRzR,OAAQ,EACR+mG,UAAW,IACXC,UAAW,IACXhB,SAAS,EACTx2G,SAAU,SACVq3G,OAAQ,aACRryB,UAAW,CACPC,KAAM,CACFnrE,QAAS,UACTE,SAAU,GAEdo+B,MAAO,CACHp+B,SAAU,GACV5Z,MAAM,KAKlB1L,QAAS,WACL,IAAIkyF,EAAQl0F,KAAKk0F,MAEbA,IACAA,EAAMroF,QAAQutB,IAAIy4D,GAClBqC,EAAMlyF,WAGVs4B,aAAat6B,KAAKulC,SAElBnU,EAAOrpB,GAAG/F,QAAQuI,KAAKvK,KAC3B,EAEA0N,KAAM,WACE1N,KAAKk0F,OACLl0F,KAAKk0F,MAAMxuC,OAEnB,EAEAj4C,KAAM,SAASpG,GACXA,EAASA,GAAUrH,KAAK6L,QAExB7L,KAAK+kH,WAAW19G,GAChBrH,KAAKglH,MAAM39G,EACf,EAEAA,OAAQ,WACJ,OAAIrH,KAAKk0F,MACEl0F,KAAKk0F,MAAM/sF,QAAQgrF,OAEvB,IACX,EAEAyyB,SAAU,SAASjgH,GACf,IAAIg6E,EAAgBh8E,EAAEgC,EAAEg6E,eAEpBh6E,EAAE2iC,SAAW3mC,EAAMkqB,KAAKK,OACxBlrB,KAAKglH,MAAMrmC,EAEnB,EAEA+lC,QAAS,SAAS//G,GACd,IAAIsD,EAAOjI,KAEP2+E,EAAgBh8E,EAAEgC,EAAEg6E,eACpB12E,EAAKg9G,oBAAsBh9G,EAAKw8G,uBAChCx8G,EAAK+8G,MAAMrmC,GACJ12E,EAAKi9G,mBACZj9G,EAAK88G,WAAWpmC,GAChB12E,EAAK+8G,MAAMrmC,KAEXrkD,aAAaryB,EAAKs9B,SAElBt9B,EAAKs9B,QAAUrM,YAAW,WACtBjxB,EAAK+8G,MAAMrmC,EACf,GAAG12E,EAAKd,QAAQ09G,WAExB,EAEAK,gBAAiB,WACb,OAAOllH,KAAKmH,QAAQw9G,QAAU3kH,KAAKmH,QAAQw9G,OAAOj0G,MAAM,QAC5D,EAEA+zG,qBAAsB,WAClB,OAAOzkH,KAAKmH,QAAQw9G,QAAU3kH,KAAKmH,QAAQw9G,OAAOj0G,MAAM,aAC5D,EAEAu0G,gBAAiB,WACb,OAAOjlH,KAAKmH,QAAQw9G,QAAU3kH,KAAKmH,QAAQw9G,OAAOj0G,MAAM,QAC5D,EAEAy0G,4BAA6B,WACzB,IAAIl9G,EAAOjI,KACXiI,EAAKisF,MAAMtnF,QAAQX,IAAI,SAAUtL,EAAM+L,aAAazE,EAAKisF,MAAMroF,SAAW,MAC1E5D,EAAKisF,MAAMtnF,QAAQX,IAAI,QAAStL,EAAM8L,YAAYxE,EAAKisF,MAAMroF,SAAW,MACxE5D,EAAKisF,MAAM5mF,WACXrF,EAAKm9G,kBACT,EAEAA,iBAAkB,WACd,IAAIn9G,EAAOjI,KACPsN,EAAWrF,EAAKd,QAAQmG,SACxBqlB,EAAa1qB,EAAK0qB,WAClB7U,EAAS6U,EAAW7U,OACpBo2E,EAAQjsF,EAAKisF,MACb/B,EAAS+B,EAAM/sF,QAAQgrF,OACvB4D,EAAepzF,EAAEwvF,GAAQr0E,SACzBunG,EAAgB1iH,EAAEuxF,EAAMroF,SAASiS,SACjCqH,EAAW++F,EAAWhwB,EAAMR,QAAUuwB,EAAQ32G,GAAYA,GAC1Dg4G,EAAevvB,EAAaj4E,GAAUunG,EAAcvnG,GAAWnb,EAAEwvF,GAAQx/D,EAAW3iB,QAAU,EAElG/H,EAAKs9G,QAAQj4G,EAAUrF,EAAKd,QAAQ2W,QAEpC7V,EAAKu9G,MACDz4F,YAAY,mDACZ1H,SAAS,aAAeF,GACxBlZ,IAAI6R,EAAQwnG,EACpB,EAEAC,QAAS,SAASj4G,EAAUg4G,EAAcG,GACtC,IAAIx9G,EAAOjI,KACP0lH,EAAwB,OAAZp4G,GAAiC,QAAZA,EACjCq4G,EAAY19G,EAAKisF,MAAMR,QACvBr/C,EAAaqxE,GAAaC,IAAgBD,IAAcC,EAAa,GAAK,EAC1EC,EAAaF,EAAY,UAAYp4G,EAAW,UAAY22G,EAAQ32G,GACpEwQ,GAAW2nG,GAAc9kH,EAAM8L,YAAYxE,EAAKu9G,QAAU,EAAKF,EAEnEr9G,EAAKisF,MAAMtnF,QAAQX,IAAI25G,EAAY9nG,EAASu2B,EAAY,KAC5D,EAEAwxE,gBAAiB,WACb,IAAI59G,EAAOjI,KACPmyF,EAASlqF,EAAKisF,MAAM/sF,QAAQgrF,OAC5B2zB,EAAS3zB,EAAO,GAAG9hE,IAAMpoB,EAAK4D,QAAQ,GAAGwkB,IAAM1vB,EAAMwvB,OACrD41F,EAAc,GAEd5zB,EAAOvuE,KAAK6/F,IACZsC,EAAYpkH,KAAKwwF,EAAOvuE,KAAK6/F,IAG7BqC,IACAC,EAAYpkH,KAAKmkH,EAAStC,GAC1BrxB,EAAOvuE,KAAK6/F,EAAasC,EAAYl7G,KAAK,MAC1C5C,EAAKisF,MAAMroF,QAAQ+X,KAAK,KAAMkiG,EAAStC,GAG/C,EAEAwC,mBAAoB,SAAS3+G,GACzB,IAEI4+G,EAAWC,EAAYC,EAFvBC,EAAYpmH,KAAKk0F,MAAMroF,QAAQ+X,KAAK,MACpCyiG,EAAqBh/G,EAAOuc,KAAK6/F,GAGhC4C,KAILJ,EAAYI,EAAmBz7G,MAAM,OAEpBq7G,EAAUz+G,OAAS,IAChC0+G,EAAaD,EAAU12F,QAAO,SAASK,GACnC,OAAOA,IAAQw2F,CACnB,KAGAF,GAAcA,EAAW1+G,OAAS,GAClC2+G,EAAuBD,EAAWr7G,KAAK,KACvCxD,EAAOuc,KAAK6/F,EAAa0C,IAEzB9+G,EAAO4qB,WAAWwxF,GAE1B,EAEA6C,WAAY,WACHtmH,KAAKk0F,QAIVl0F,KAAKk0F,MAAM9B,UAAW,EACtBpyF,KAAKk0F,MAAMX,qBAAsB,EACjCvzF,KAAKk0F,MAAM3B,OACf,IAEJ5xF,EAAM4pB,GAAG2M,OAAOstF,GAEhB,IAAI+B,EAAU/B,EAAYzhH,OAAO,CAC7BoF,KAAM,SAAS0D,EAAS1E,GACpB,IACIg+B,EADAl9B,EAAOjI,KAGXwkH,EAAYz8G,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GAExCg+B,EAAOl9B,EAAKd,QAAQmG,SAASoD,MAAM,cAAgB,aAAe,WAElEzI,EAAK0qB,WAAawxF,EAAWh/E,GAE7Bl9B,EAAKu+G,wBAA0Bv+G,EAAKw+G,iBAAiBj9G,KAAKvB,IAEtDjI,KAAKykH,wBAA0BzkH,KAAKilH,oBACpCh9G,EAAK4D,QAAQge,GAAG,aAAegoE,EAAI5pF,EAAKd,QAAQooB,OAAQtnB,EAAKy+G,YAAYl9G,KAAKvB,IAG9EjI,KAAKmH,QAAQ08G,UAAY7jH,KAAKykH,wBAAoD,WAA1BzkH,KAAKmH,QAAQmG,UACrErF,EAAK4D,QAAQge,GAAG,aAAegoE,EAAI5pF,EAAKd,QAAQooB,OAAQtnB,EAAK0+G,YAAYn9G,KAAKvB,IAG9EjI,KAAKmH,QAAQ08G,UAAY7jH,KAAKklH,mBAC9Bj9G,EAAK4D,QAAQge,GAAG,OAASgoE,EAAI5pF,EAAKd,QAAQooB,OAAQtnB,EAAK2+G,MAAMp9G,KAAKvB,IAGlEtH,EAAM4C,QAAQic,OACdvX,EAAK4D,QAAQge,GAAGlpB,EAAM4C,QAAQumB,UAAY+nE,EAAI5pF,EAAKd,QAAQooB,OAAQtnB,EAAKy+G,YAAYl9G,KAAKvB,GAEjG,EAEAd,QAAS,CACL/E,KAAM,UACNmtB,OAAQ,GACRo3B,QAzRa,SAAShiD,GACtB,OAAOA,EAAE0C,OAAO+G,KAAKzN,EAAMwrB,GAAK,QACpC,EAwRI04F,UAAW,IACXf,SAAS,EACThmG,OAAQ,EACRxQ,SAAU,SACVq3G,OAAQ,aACRd,UAAU,EACV93G,MAAO,KACPC,OAAQ,KACRsmF,UAAW,CACPC,KAAM,CACFnrE,QAAS,UACTE,SAAU,GAEdo+B,MAAO,CACHp+B,SAAU,GACV5Z,MAAM,KAKlBrD,OAAQ,CAAE2sE,EAAMC,EAAMysC,EAAa14D,EAAOC,GAE1Cy7D,YAAa,SAAS/hH,GAClB4/G,EAAoB5hH,EAAEgC,EAAEg6E,eAC5B,EAEAomC,WAAY,SAAS19G,GACjBk9G,EAAoBl9G,EACxB,EAEAw/G,eAAgB,SAASx/G,GACrB,IAIIy/G,EAJA7+G,EAAOjI,KACP+mH,EAAiB9+G,EAAKd,QAAQw/C,QAC9B96C,EAAU5D,EAAK0+C,QACfqgE,EAAa/+G,EAAKd,QAAQ2/G,OAG1Bn/G,EAAco/G,IAAmBA,EAAe/3F,KAC1C,WAAY/mB,EAAKd,UACnB6/G,GAAcj4F,EAAWg4F,EAAe/3F,MAG5C/mB,EAAKmC,QAAQ6gD,EAAc,CAAE9jD,QAAS4/G,EAAgB1/G,OAAQA,IAEzD2/G,GAODn7G,EAAQ6B,QAERo5G,EAASj7G,EAAQsqB,KAAK,IAAMwtF,GAAe,IAIvCmD,EAAO9/G,IAAM+/G,EAAe/3F,KAAO83F,EAAO9/G,IAE1C6E,EAAQwE,KAAK0zG,EAAe,CAAEp9D,QAASogE,KAG3Cl7G,EAAQsqB,KAAK,IAAMwtF,GACdvqF,IAAI,OAASy4D,GACbhoE,GAAG,OAASgoE,GAAI,WACb5pF,EAAKmC,QAAQs5G,GACb73G,EAAQ4B,MACZ,MAtBJ5B,EAAQ+gD,QACRjsD,EAAM4pB,GAAGiM,SAAS3qB,GAAS,GAG3B5D,EAAKg/G,aAAaF,KAoBfA,GAAkB79G,EAAW69G,IACpCA,EAAiBA,EAAe,CAAEz8G,OAAQtK,KAAMqH,OAAQA,IACxDwE,EAAQwE,KAAK02G,GAAkB,KAE/Bl7G,EAAQwE,KAAK02G,EAErB,EAEA,oBAAAG,GACI,IAAIj/G,EAAOjI,KAEPmnH,EADUl/G,EAAK0+C,QACKxwB,KAAK,SACzB3uB,EAAS2/G,EAAU3/G,OACnBkkE,EAAS,EAEM,IAAXlkE,EAKJ2/G,EAAUt9F,GAAG,QAAQ,WACjB6hD,IAEElkE,IAAWkkE,GACbzjE,EAAKk9G,6BAET,IAVIl9G,EAAKk9G,6BAWjB,EAEA8B,aAAc,SAAS9/G,GACnB,IAAIc,EAAOjI,KAWX0H,OAAOwgD,KAAKnlD,EAAO,CACf2C,KAAM,MACNy/C,SAAU,OACVrnB,OAAO,EACPpP,MAAO,SAASozC,EAAKtZ,GACjB7nD,EAAM4pB,GAAGiM,SAASvuB,EAAK0+C,SAAS,GAEhC1+C,EAAKk9G,8BAELl9G,EAAKmC,QAAQ4gD,EAAO,CAAExC,OAAQA,EAAQsZ,IAAKA,GAC/C,EACA3Z,QArBY,SAAS/5C,GACjBzN,EAAM4pB,GAAGiM,SAASvuB,EAAK0+C,SAAS,GAEhC1+C,EAAK0+C,QAAQt2C,KAAKjC,GAElBnG,EAAKi/G,uBAELj/G,EAAKmC,QAAQs5G,EACjB,EAamBl6G,KAAKvB,IACzBd,GACP,EAEAs/G,iBAAkB,SAAS9hH,GACnBA,EAAE2iC,UAAY3mC,EAAMkqB,KAAKM,KACzBnrB,KAAK0N,MAEb,EAEAiR,QAAS,WACL,IACIu1E,EADOl0F,KACMk0F,MAEbA,GAASA,EAAM/sF,QAAQgrF,QAHhBnyF,KAIF6mH,eAAe3yB,EAAM/sF,QAAQgrF,OAE1C,EAEA6yB,MAAO,SAAS39G,GACZ,IAAIY,EAAOjI,KACPgU,EAAU/L,EAAKZ,SAEdY,EAAKisF,OACNjsF,EAAKm/G,aAGLpzG,GAAWA,EAAQ,IAAM3M,EAAO,KAChCY,EAAKisF,MAAMxuC,OAAM,GACjBz9C,EAAKisF,MAAMroF,QAAQwc,WAAU,GAAM,IAGlCrU,GAAWA,EAAQ,IAAM3M,EAAO,KACjCY,EAAK4+G,eAAex/G,GACpBY,EAAKisF,MAAM/sF,QAAQgrF,OAAS9qF,GAGhCY,EAAKisF,MAAMvqF,IAAI,cAAc,WACzBy6G,EAAa/8G,GAEbY,EAAK+9G,mBAAmB3+G,GAExBrH,KAAK6L,QACAomB,WAAW,MACXrO,KAAK,eAAe,GAEzB2/F,EAASnqF,IAAI,UAAYy4D,EAAI5pF,EAAKu+G,wBACtC,IAEAv+G,EAAKq+G,YACT,EAEAc,WAAY,WACR,IAAIn/G,EAAOjI,KACPmH,EAAUc,EAAKd,QACfyF,EAAUjK,EAAEhC,EAAMyP,SAASwzG,EAAfjjH,CAAyB,CACjCmjH,QAAS38G,EAAQ28G,SAAgC,WAArB38G,EAAQmG,SACpCiyB,IAAK2kF,EAAW/8G,EAAQmG,UACxBu2G,SAAU18G,EAAQ08G,YAG1B57G,EAAKisF,MAAQ,IAAIpC,EAAMllF,EAAS7J,EAAO,CACnCwJ,UAAU,EACV86G,SAAU,WACNp/G,EAAK49G,kBAED1+G,EAAQ28G,QACR77G,EAAKm9G,mBAELn9G,EAAKs9G,QAAQt9G,EAAKd,QAAQmG,SAAUrF,EAAKd,QAAQ2W,QAGrD9d,KAAK6L,QAAQomB,WAAW,eAExBsxF,EAAS15F,GAAG,UAAYgoE,EAAI5pF,EAAKu+G,yBAEjCv+G,EAAKmC,QAAQ4sE,GACb/uE,EAAKisF,MAAM9B,SAviB/B,SAwiBgB,EACA1sC,MAAO,WACHz9C,EAAKmC,QAAQ6sE,EACjB,EACA8b,kBAAkB,EAClBT,UAAWnrF,EAAQmrF,WACpB0xB,EAAU78G,EAAQmG,YAErBV,EAAQX,IAAI,CACRF,MAAO5E,EAAQ4E,MACfC,OAAQ7E,EAAQ6E,SAGpB/D,EAAK0+C,QAAU/5C,EAAQupB,KAAK,sBAC5BluB,EAAKu9G,MAAQ54G,EAAQupB,KAAK,cAEtBhvB,EAAQ08G,UAAY7jH,KAAKykH,uBACzB73G,EAAQid,GAAG,aAAegoE,EAAI5pF,EAAK0+G,YAAYn9G,KAAKvB,IAEpD2E,EAAQid,GAAG,QAAUgoE,EAAI,oBAAqB5pF,EAAKq/G,kBAAkB99G,KAAKvB,GAElF,EAEAq/G,kBAAmB,SAAS3iH,GACxBA,EAAEwE,iBACFnJ,KAAK0N,MACT,EAEAi5G,YAAa,SAAShiH,GAClB,IAAIsD,EAAOjI,KAEXs6B,aAAaryB,EAAKs9B,SAElBt9B,EAAKs9B,QAAUrM,YAAW,WACtBjxB,EAAKs/G,YAAY5iH,EAAEg6E,cACvB,GAAG12E,EAAKd,QAAQ29G,UACpB,EAEA8B,MAAO,SAASjiH,GACZ3E,KAAKunH,YAAY5iH,EAAEg6E,cACvB,EAEA4oC,YAAa,SAASlgH,GACdrH,KAAKk0F,QAAUl0F,KAAKk0F,MAAM9B,SAC1BpyF,KAAKk0F,MAAMxuC,QAEX0+D,EAAazhH,EAAE0E,GAEvB,EAEArF,QAAS,WACLhC,KAAK6L,QAAQutB,IAAIy4D,GAEjB0xB,EAASnqF,IAAI,UAAYy4D,EAAI7xF,KAAKwmH,yBAElChC,EAAYz8G,GAAG/F,QAAQuI,KAAKvK,KAChC,IAGJW,EAAM4pB,GAAG2M,OAAOqvF,EACnB,CApmBD,CAomBGzlH,OAAOH,MAAM+G,QACF/G,OAEd,SAAUgC,GA0BNhC,MAAM+pB,QAAQ88F,KAAO7mH,MAAM+pB,QAAQ88F,MAAQ,CAAC,EAC5C7mH,MAAM6H,WAAW7H,MAAM+pB,QAAQ88F,KAAM,CACjCC,cA1BJ,WACI,OAAO9kH,EAAEypC,UACb,EAyBIs7E,WAvBJ,SAAoB3oD,GAChB,OAAOp8D,EAAEu8D,KAAK92D,MAAMzF,EAAGo8D,EAC3B,EAsBI4oD,aApBJ,SAAsBtvD,EAAMrxD,GACxB,GAAKA,EAIL,GAA6B,mBAAlBA,EAAIksB,UACXmlC,EAAKnlC,UAAYlsB,OAEjB,IAAK,IAAIc,KAAUd,EACXA,EAAIiI,eAAenH,KACnBuwD,EAAKvwD,GAAUd,EAAIc,GAInC,GASH,CAjCD,CAiCGhH,OAAOH,MAAM+G,QAmBhB5G,OAAOH,MAAQG,OAAOH,OAAS,CAAC,EAEhC,IAAIiH,EAAQjH,MAAMiH,MACdrE,EAAU5C,MAAM4C,QAEhBqkH,EAAc,CACdC,UAAW,SAAUC,aAAc,SAAUC,KAAM,SACnDC,WAAY,SAAUC,MAAO,SAAUC,MAAO,SAC9CC,OAAQ,SAAUC,MAAO,SAAUC,eAAgB,SACnDC,KAAM,SAAUC,WAAY,SAAUC,MAAO,SAC7CC,UAAW,SAAUC,UAAW,SAAUC,WAAY,SACtDC,UAAW,SAAUC,MAAO,SAAUC,eAAgB,SACtDC,SAAU,SAAUC,QAAS,SAAUC,KAAM,SAC7CC,SAAU,SAAUC,SAAU,SAAUC,cAAe,SACvDC,SAAU,SAAUC,SAAU,SAAUC,UAAW,SACnDC,UAAW,SAAUC,YAAa,SAAUC,eAAgB,SAC5DC,WAAY,SAAUC,WAAY,SAAUC,QAAS,SACrDC,WAAY,SAAUC,aAAc,SAAUC,cAAe,SAC7DC,cAAe,SAAUC,cAAe,SAAUC,cAAe,SACjEC,WAAY,SAAUC,SAAU,SAAUC,YAAa,SACvDC,QAAS,SAAUC,QAAS,SAAUC,WAAY,SAClDC,UAAW,SAAUC,YAAa,SAAUC,YAAa,SACzDC,QAAS,SAAUC,UAAW,SAAUC,WAAY,SACpDC,KAAM,SAAUC,UAAW,SAAUC,KAAM,SAC3CC,KAAM,SAAUC,MAAO,SAAUC,YAAa,SAC9CC,SAAU,SAAUC,QAAS,SAAUC,UAAW,SAClDC,OAAQ,SAAUC,MAAO,SAAUC,MAAO,SAC1CC,SAAU,SAAUC,cAAe,SAAUC,UAAW,SACxDC,aAAc,SAAUC,UAAW,SAAUC,WAAY,SACzDC,UAAW,SAAUC,qBAAsB,SAAUC,UAAW,SAChEC,UAAW,SAAUC,WAAY,SAAUC,UAAW,SACtDC,YAAa,SAAUC,cAAe,SAAUC,aAAc,SAC9DC,eAAgB,SAAUC,eAAgB,SAAUC,eAAgB,SACpEC,YAAa,SAAUC,KAAM,SAAUC,UAAW,SAClDC,MAAO,SAAUC,QAAS,SAAUC,OAAQ,SAC5CC,iBAAkB,SAAUC,WAAY,SAAUC,aAAc,SAChEC,aAAc,SAAUC,eAAgB,SAAUC,gBAAiB,SACnEC,kBAAmB,SAAUC,gBAAiB,SAAUC,gBAAiB,SACzEC,aAAc,SAAUC,UAAW,SAAUC,UAAW,SACxDC,SAAU,SAAUC,YAAa,SAAUC,KAAM,SACjDC,QAAS,SAAUC,MAAO,SAAUC,UAAW,SAC/CC,OAAQ,SAAUC,UAAW,SAAUC,OAAQ,SAC/CC,cAAe,SAAUC,UAAW,SAAUC,cAAe,SAC7DC,cAAe,SAAUC,WAAY,SAAUC,UAAW,SAC1DC,KAAM,SAAUC,KAAM,SAAUC,KAAM,SACtCC,WAAY,SAAUC,OAAQ,SAAUC,IAAK,SAC7CC,UAAW,SAAUC,UAAW,SAAUC,YAAa,SACvDC,OAAQ,SAAUC,WAAY,SAAUC,SAAU,SAClDC,SAAU,SAAUC,OAAQ,SAAUC,OAAQ,SAC9CC,QAAS,SAAUC,UAAW,SAAUC,UAAW,SACnDC,UAAW,SAAUC,KAAM,SAAUC,YAAa,SAClDC,UAAW,SAAUC,IAAK,SAAUC,KAAM,SAC1CC,QAAS,SAAUC,OAAQ,SAAUC,UAAW,SAChDC,OAAQ,SAAUC,MAAO,SAAUC,MAAO,SAC1CC,WAAY,SAAUC,OAAQ,SAAUC,YAAa,UAGrDjuG,EAAUvf,EAAQuf,QAElBkuG,EAAkB,SAAUC,GAC5B,IAAIC,EAAazwH,OAAOoqB,KAAK+8F,GAC7BsJ,EAAWvvH,KAAK,eAEhB,IAAIwvH,EAAS,IAAI3iH,OAAO,KAAO0iH,EAAWrmH,KAAK,KAAO,WAAY,KAGlE,OAFAmmH,EAAkB,SAAUC,GAAS,OAAOE,EAAOv4G,KAAKq4G,EAAQ,EAEzDE,EAAOv4G,KAAKq4G,EACvB,EAEIG,EAAYxpH,EAAM7E,OAAO,CACzBoF,KAAM,WAAc,EAEpBkpH,MAAO,WAAa,OAAOrxH,IAAM,EAEjCsxH,MAAO,WAAa,OAAOtxH,IAAM,EAEjCuxH,MAAO,SAASpqH,GAAW,OAAOnH,KAAKwxH,UAAUD,MAAMpqH,EAAU,EAEjEqqH,QAAS,WAAa,OAAOxxH,IAAM,EAEnCyxH,MAAO,SAAStqH,GAAW,MAAO,IAAMnH,KAAKuxH,MAAMpqH,EAAU,EAE7DuqH,UAAW,WACP,IAAIC,EAAM3xH,KAAKwxH,UACf,MAAQ,QAAWG,EAAK,EAAI,KAAQA,EAAK,EAAI,KAAQA,EAAK,EAAI,KAAQ5oH,WAAY8J,OAAO7S,KAAKkF,GAAIuR,QAAQ,IAAO,GACrH,EAEAm7G,UAAW,WACP,OAAI9uG,EAAQoB,MAAQpB,EAAQtgB,QAAU,EAC3BxC,KAAKyxH,QAETzxH,KAAK0xH,WAChB,EAEAvgE,OAAQ,SAASzsD,GACb,OAAOA,IAAM1E,MAAS,MAAC0E,GAAkC1E,KAAK0xH,cAAgBG,EAAWntH,GAAGgtH,WAChG,EAEA3yF,KAAM,SAAS+yF,GACX,GAAc,OAAVA,EACA,OAAOC,IAGX,IAAIC,EAAKhyH,KAAKwxH,UACVS,EAAKH,EAAMN,UAEf,OAAOnuH,KAAKo7E,KAAKp7E,KAAKwmC,IAAoB,IAAfmoF,EAAGE,EAAID,EAAGC,GAAW,GAC/B7uH,KAAKwmC,IAAoB,KAAfmoF,EAAG58G,EAAI68G,EAAG78G,GAAW,GAC/B/R,KAAKwmC,IAAoB,KAAfmoF,EAAG/1G,EAAIg2G,EAAGh2G,GAAW,GACpD,EAEA7U,MAAO,WACH,IAAI1C,EAAI1E,KAAKwxH,UAKb,OAJI9sH,IAAM1E,OACN0E,EAAI,IAAIytH,EAAMztH,EAAEwtH,EAAGxtH,EAAE0Q,EAAG1Q,EAAEuX,EAAGvX,EAAEQ,IAG5BR,CACX,IAGA0tH,EAAMhB,EAAUruH,OAAO,CACvBoF,KAAM,SAAS+pH,EAAG98G,EAAG6G,EAAG/W,GACpBksH,EAAUrpH,GAAGI,KAAKoC,KAAKvK,MAEvBA,KAAKkyH,EAAIA,EACTlyH,KAAKoV,EAAIA,EACTpV,KAAKic,EAAIA,EACTjc,KAAKkF,EAAIA,CACb,EAEAmsH,MAAO,WACH,IAQIzsH,EAAGK,EARHotH,EAAMryH,KACNkyH,EAAIG,EAAIH,EACR98G,EAAIi9G,EAAIj9G,EACR6G,EAAIo2G,EAAIp2G,EACRvF,EAAMrT,KAAKqT,IAAIw7G,EAAG98G,EAAG6G,GACrB9C,EAAM9V,KAAK8V,IAAI+4G,EAAG98G,EAAG6G,GACrB8oB,EAAQ5rB,EAAMzC,EACd1E,EAAImH,EAGR,OAAc,IAAV4rB,EACO,IAAIutF,EAAI,EAAG,EAAGtgH,EAAGhS,KAAKkF,IAGrB,IAARiU,GACAlU,EAAI8/B,EAAQ5rB,EAERvU,EADAstH,IAAM/4G,GACD/D,EAAI6G,GAAK8oB,EACP3vB,IAAM+D,EACT,GAAK8C,EAAIi2G,GAAKntF,EAEd,GAAKmtF,EAAI98G,GAAK2vB,GAGtBngC,GAAK,IACG,IACJA,GAAK,OAGTK,EAAI,EACJL,GAAK,GAGF,IAAI0tH,EAAI1tH,EAAGK,EAAG+M,EAAGhS,KAAKkF,GACjC,EAEAqtH,MAAO,WACH,IAMI3tH,EAAGK,EANHotH,EAAMryH,KACNkyH,EAAIG,EAAIH,EACR98G,EAAIi9G,EAAIj9G,EACR6G,EAAIo2G,EAAIp2G,EACR9C,EAAM9V,KAAK8V,IAAI+4G,EAAG98G,EAAG6G,GACrBvF,EAAMrT,KAAKqT,IAAIw7G,EAAG98G,EAAG6G,GACfu2G,GAAKr5G,EAAMzC,GAAO,EAE5B,GAAIyC,IAAQzC,EACR9R,EAAIK,EAAI,MACL,CACH,IAAIT,EAAI2U,EAAMzC,EAEd,OADAzR,EAAIutH,EAAI,GAAMhuH,GAAK,EAAI2U,EAAMzC,GAAOlS,GAAK2U,EAAMzC,GACvCyC,GACR,KAAK+4G,EAAGttH,GAAKwQ,EAAI6G,GAAKzX,GAAK4Q,EAAI6G,EAAI,EAAI,GAAI,MAC3C,KAAK7G,EAAGxQ,GAAKqX,EAAIi2G,GAAK1tH,EAAI,EAAG,MAC7B,KAAKyX,EAAGrX,GAAKstH,EAAI98G,GAAK5Q,EAAI,EAG9B,CAEA,OAAO,IAAIiuH,EAAQ,GAAJ7tH,EAAY,IAAJK,EAAa,IAAJutH,EAASxyH,KAAKkF,EAClD,EAEAssH,QAAS,WACL,OAAO,IAAIW,EAAe,IAATnyH,KAAKkyH,EAAkB,IAATlyH,KAAKoV,EAAkB,IAATpV,KAAKic,EAASjc,KAAKkF,EACpE,IAGAitH,EAAQC,EAAIrvH,OAAO,CACnBoF,KAAM,SAAS+pH,EAAG98G,EAAG6G,EAAG/W,GACpBktH,EAAIrqH,GAAGI,KAAKoC,KAAKvK,KAAMqD,KAAKiT,MAAM47G,GAAI7uH,KAAKiT,MAAMlB,GAAI/R,KAAKiT,MAAM2F,GAAI/W,EACxE,EAEAosH,MAAO,WACH,OAAO,IAAIc,EAAIpyH,KAAKkyH,EAAI,IAAKlyH,KAAKoV,EAAI,IAAKpV,KAAKic,EAAI,IAAKjc,KAAKkF,EAClE,EAEAmsH,MAAO,WACH,OAAOrxH,KAAKsxH,QAAQD,OACxB,EAEAkB,MAAO,WACH,OAAOvyH,KAAKsxH,QAAQiB,OACxB,EAEAhB,MAAO,SAASpqH,GACZ,IAAIuB,EAAQgqH,EAAI1yH,KAAKkyH,EAAG,GAAKQ,EAAI1yH,KAAKoV,EAAG,GAAKs9G,EAAI1yH,KAAKic,EAAG,GAM1D,OAJI9U,GAAWA,EAAQwrH,QACnBjqH,GAASgqH,EAAIrvH,KAAKiT,MAAe,IAATtW,KAAKkF,GAAU,IAGpCwD,CACX,EAEA8oH,QAAS,WACL,OAAOxxH,IACX,IAGJ,SAAS0yH,EAAIE,EAAG7mH,EAAOP,QACP,IAARA,IAAkBA,EAAM,KAG5B,IADA,IAAIsL,EAAS87G,EAAEnhH,SAAS,IACjB1F,EAAQ+K,EAAOtP,QAClBsP,EAAStL,EAAMsL,EAGnB,OAAOA,CACX,CAEA,IAAIw7G,EAAMlB,EAAUruH,OAAO,CACvBoF,KAAM,SAASvD,EAAGK,EAAG+M,EAAG9M,GACpBksH,EAAUrpH,GAAGI,KAAKoC,KAAKvK,MAEvBA,KAAK4E,EAAIA,EACT5E,KAAKiF,EAAIA,EACTjF,KAAKgS,EAAIA,EACThS,KAAKkF,EAAIA,CACb,EAEAosH,MAAO,WACH,IAIIY,EAAG98G,EAAG6G,EAJNo2G,EAAMryH,KACN4E,EAAIytH,EAAIztH,EACRK,EAAIotH,EAAIptH,EACR+M,EAAIqgH,EAAIrgH,EAGZ,GAAU,IAAN/M,EACAitH,EAAI98G,EAAI6G,EAAIjK,MACT,CACHpN,GAAK,GAEL,IAAI2C,EAAIlE,KAAKyN,MAAMlM,GACf4oD,EAAI5oD,EAAI2C,EACRsrH,EAAI7gH,GAAK,EAAI/M,GACbb,EAAI4N,GAAK,EAAI/M,EAAIuoD,GACjBroD,EAAI6M,GAAK,EAAI/M,GAAK,EAAIuoD,IAE1B,OAAQjmD,GACR,KAAK,EAAG2qH,EAAIlgH,EAAGoD,EAAIjQ,EAAG8W,EAAI42G,EAAG,MAC7B,KAAK,EAAGX,EAAI9tH,EAAGgR,EAAIpD,EAAGiK,EAAI42G,EAAG,MAC7B,KAAK,EAAGX,EAAIW,EAAGz9G,EAAIpD,EAAGiK,EAAI9W,EAAG,MAC7B,KAAK,EAAG+sH,EAAIW,EAAGz9G,EAAIhR,EAAG6X,EAAIjK,EAAG,MAC7B,KAAK,EAAGkgH,EAAI/sH,EAAGiQ,EAAIy9G,EAAG52G,EAAIjK,EAAG,MAC7B,QAASkgH,EAAIlgH,EAAGoD,EAAIy9G,EAAG52G,EAAI7X,EAE/B,CAEA,OAAO,IAAIguH,EAAIF,EAAG98G,EAAG6G,EAAGjc,KAAKkF,EACjC,EAEAqtH,MAAO,WACH,OAAOvyH,KAAKsxH,QAAQiB,OACxB,EAEAf,QAAS,WACL,OAAOxxH,KAAKsxH,QAAQE,SACxB,IAGAiB,EAAMrB,EAAUruH,OAAO,CACvBoF,KAAM,SAASvD,EAAGK,EAAGutH,EAAGttH,GACpBksH,EAAUrpH,GAAGI,KAAKoC,KAAKvK,MAEvBA,KAAK4E,EAAIA,EACT5E,KAAKiF,EAAIA,EACTjF,KAAKwyH,EAAIA,EACTxyH,KAAKkF,EAAIA,CACb,EAEAosH,MAAO,WACH,IAGIY,EAAG98G,EAAG6G,EAHNrX,EAAI5E,KAAK4E,EAAI,IACbK,EAAIjF,KAAKiF,EAAI,IACbutH,EAAIxyH,KAAKwyH,EAAI,IAGjB,GAAU,IAANvtH,EACAitH,EAAI98G,EAAI6G,EAAIu2G,MACT,CACH,IAAIpuH,EAAIouH,EAAI,GAAMA,GAAK,EAAIvtH,GAAKutH,EAAIvtH,EAAIutH,EAAIvtH,EACxC4tH,EAAI,EAAIL,EAAIpuH,EAChB8tH,EAAIY,EAAQD,EAAGzuH,EAAGQ,EAAI,EAAI,GAC1BwQ,EAAI09G,EAAQD,EAAGzuH,EAAGQ,GAClBqX,EAAI62G,EAAQD,EAAGzuH,EAAGQ,EAAI,EAAI,EAC9B,CAEA,OAAO,IAAIwtH,EAAIF,EAAG98G,EAAG6G,EAAGjc,KAAKkF,EACjC,EAEAmsH,MAAO,WACH,OAAOrxH,KAAKsxH,QAAQD,OACxB,EAEAG,QAAS,WACL,OAAOxxH,KAAKsxH,QAAQE,SACxB,IAGJ,SAASsB,EAAQD,EAAGzuH,EAAGa,GACnB,IAAIE,EAAIF,EAUR,OARIE,EAAI,IACJA,GAAK,GAGLA,EAAI,IACJA,GAAK,GAGLA,EAAI,EAAI,EACD0tH,EAAc,GAATzuH,EAAIyuH,GAAS1tH,EAGzBA,EAAI,GACGf,EAGPe,EAAI,EAAI,EACD0tH,GAAKzuH,EAAIyuH,IAAM,EAAI,EAAI1tH,GAAK,EAGhC0tH,CACX,CAEA,SAASE,EAAa7tH,GAClB,OAAO6D,WAAWA,WAAWyQ,SAAStU,EAAG,IAAM,KAAMuR,QAAQ,GACjE,CAEA,SAASo7G,EAAWnpH,EAAOymB,GACvB,IAAInqB,EAAGo2B,EAEP,GAAa,MAAT1yB,GAA2B,SAAVA,EACjB,OAAO,KAGX,GAAIA,aAAiB0oH,EACjB,OAAO1oH,EAGX,IAAIuoH,EAAQvoH,EAAMmQ,cAClB,GAAK7T,EAAIgsH,EAAgBC,GAOrB,OALIA,EADS,gBAATjsH,EAAE,GACM,IAAIotH,EAAI,EAAG,EAAG,EAAG,GAEjBP,EAAWjK,EAAY5iH,EAAE,IAAKmqB,IAEpCze,MAAQ,CAAE1L,EAAE,IACXisH,EAsCX,IApCKjsH,EAAI,gDAAgD4T,KAAKq4G,IAC1D71F,EAAM,IAAI+2F,EAAM34G,SAASxU,EAAE,GAAI,IAC3BwU,SAASxU,EAAE,GAAI,IACfwU,SAASxU,EAAE,GAAI,IAAK,IAChBA,EAAI,uCAAuC4T,KAAKq4G,IACxD71F,EAAM,IAAI+2F,EAAM34G,SAASxU,EAAE,GAAKA,EAAE,GAAI,IAClCwU,SAASxU,EAAE,GAAKA,EAAE,GAAI,IACtBwU,SAASxU,EAAE,GAAKA,EAAE,GAAI,IAAK,IACvBA,EAAI,iDAAiD4T,KAAKq4G,IAClE71F,EAAM,IAAI+2F,EAAM34G,SAASxU,EAAE,GAAKA,EAAE,GAAI,IAClCwU,SAASxU,EAAE,GAAKA,EAAE,GAAI,IACtBwU,SAASxU,EAAE,GAAKA,EAAE,GAAI,IACtB+tH,EAAa/tH,EAAE,GAAKA,EAAE,MAClBA,EAAI,6DAA6D4T,KAAKq4G,IAC9E71F,EAAM,IAAI+2F,EAAM34G,SAASxU,EAAE,GAAI,IAC3BwU,SAASxU,EAAE,GAAI,IACfwU,SAASxU,EAAE,GAAI,IACf+tH,EAAa/tH,EAAE,MACXA,EAAI,uDAAuD4T,KAAKq4G,IACxE71F,EAAM,IAAI+2F,EAAM34G,SAASxU,EAAE,GAAI,IAC3BwU,SAASxU,EAAE,GAAI,IACfwU,SAASxU,EAAE,GAAI,IAAK,IAChBA,EAAI,wEAAwE4T,KAAKq4G,IACzF71F,EAAM,IAAI+2F,EAAM34G,SAASxU,EAAE,GAAI,IAC3BwU,SAASxU,EAAE,GAAI,IACfwU,SAASxU,EAAE,GAAI,IAAK+D,WAAW/D,EAAE,MAC7BA,EAAI,qFAAqF4T,KAAKq4G,IACtG71F,EAAM,IAAIg3F,EAAIrpH,WAAW/D,EAAE,IAAM,IAC7B+D,WAAW/D,EAAE,IAAM,IACnB+D,WAAW/D,EAAE,IAAM,IAAK,IACpBA,EAAI,sGAAsG4T,KAAKq4G,MACvH71F,EAAM,IAAIg3F,EAAIrpH,WAAW/D,EAAE,IAAM,IAC7B+D,WAAW/D,EAAE,IAAM,IACnB+D,WAAW/D,EAAE,IAAM,IAAK+D,WAAW/D,EAAE,MAGzCo2B,EACAA,EAAI1qB,MAAQ1L,OACT,IAAKmqB,EACR,MAAM,IAAIne,MAAM,uBAAyBigH,GAG7C,OAAO71F,CACX,CAEA,IAEI43F,EAAQprH,EAAM7E,OAAO,CACrBoF,KAAM,SAASO,GACX,IAAIuqH,EAAWjzH,KAEf,GAAyB,IAArBsH,UAAUE,OAIV,IAHA,IAAIoW,EAAUo1G,EAAMp1G,QAChBs1G,EAAgBlzH,KAAKmzH,aAAazqH,GAE7BkB,EAAM,EAAGA,EAAMgU,EAAQpW,OAAQoC,IAAO,CAC3C,IAAIwpH,EAAcx1G,EAAQhU,GAAKypH,GAC3BC,EAAY11G,EAAQhU,GAAK2rD,QACzBhlD,EAAQ6iH,EAAYx6G,KAAKs6G,GAE7B,GAAI3iH,EAAO,CACP,IAAIgjH,EAAWD,EAAU/iH,GACzB0iH,EAASf,EAAIqB,EAAS,GACtBN,EAAS79G,EAAIm+G,EAAS,GACtBN,EAASh3G,EAAIs3G,EAAS,EAC1B,CACJ,MAEAvzH,KAAKkyH,EAAI5qH,UAAU,GACnBtH,KAAKoV,EAAI9N,UAAU,GACnBtH,KAAKic,EAAI3U,UAAU,GAGvBtH,KAAKkyH,EAAIlyH,KAAKwzH,cAAcxzH,KAAKkyH,GACjClyH,KAAKoV,EAAIpV,KAAKwzH,cAAcxzH,KAAKoV,GACjCpV,KAAKic,EAAIjc,KAAKwzH,cAAcxzH,KAAKic,EACrC,EAEAs1G,MAAO,WACH,IAAI/lH,EAAMxL,KAAKyzH,SACXvB,EAAIlyH,KAAKkyH,EAAEzgH,SAAS,IACpB2D,EAAIpV,KAAKoV,EAAE3D,SAAS,IACpBwK,EAAIjc,KAAKic,EAAExK,SAAS,IAExB,MAAO,IAAMjG,EAAI0mH,GAAK1mH,EAAI4J,GAAK5J,EAAIyQ,EACvC,EAEAk3G,aAAc,SAASzqH,GACnB,IAAIuoH,EAAQvoH,GAAS,QAUrB,MARwB,MAApBuoH,EAAMnmH,OAAO,KACbmmH,EAAQA,EAAM10G,OAAO,EAAG,IAI5B00G,GADAA,EAAQA,EAAMxuH,QAAQ,KAAM,KACdoW,cACdo4G,EAAQ+B,EAAMpL,YAAYqJ,IAAUA,CAGxC,EAEAuC,cAAe,SAAS9qH,GACpB,OAAIA,EAAQ,GAAKI,MAAMJ,GACZ,EAGJA,EAAQ,IAAM,IAAMA,CAC/B,EAEA+qH,SAAU,SAAS/qH,GACf,OAAyB,IAAjBA,EAAMlB,OAAgB,IAAMkB,EAAQA,CAChD,EAEAgrH,WAAY,SAAShrH,GACjB,IAAI4N,EAAQjT,KAAKiT,MAMjB,OAJAtW,KAAKkyH,EAAI57G,EAAMtW,KAAKwzH,cAAcxzH,KAAKkyH,EAAIxpH,IAC3C1I,KAAKoV,EAAIkB,EAAMtW,KAAKwzH,cAAcxzH,KAAKoV,EAAI1M,IAC3C1I,KAAKic,EAAI3F,EAAMtW,KAAKwzH,cAAcxzH,KAAKic,EAAIvT,IAEpC1I,IACX,EAEA2zH,eAAgB,WACZ,OAAOtwH,KAAKo7E,KAAK,KAAQz+E,KAAKkyH,EAAIlyH,KAAKkyH,EAAI,KAAQlyH,KAAKoV,EAAIpV,KAAKoV,EAAI,KAAQpV,KAAKic,EAAIjc,KAAKic,EAC/F,EAEA23G,OAAQ,WACJ,OAAO5zH,KAAK2zH,iBAnFA,GAoFhB,IAGJX,EAAMa,UAAY,SAAS3B,EAAG98G,EAAG6G,EAAG/W,GAChC,OAAO,IAAIitH,EAAMD,EAAG98G,EAAG6G,EAAQ,MAAL/W,EAAYA,EAAI,EAC9C,EAEA8tH,EAAMc,QAAU,SAAS5B,EAAG98G,EAAG6G,EAAG/W,GAC9B,OAAO,IAAIktH,EAAIF,EAAG98G,EAAG6G,EAAQ,MAAL/W,EAAYA,EAAI,EAC5C,EAEA8tH,EAAMe,QAAU,SAASnvH,EAAGK,EAAG+M,EAAG9M,GAC9B,OAAO,IAAIotH,EAAI1tH,EAAGK,EAAG+M,EAAQ,MAAL9M,EAAYA,EAAI,EAC5C,EAEA8tH,EAAMgB,QAAU,SAASpvH,EAAGK,EAAGutH,EAAGttH,GAC9B,OAAO,IAAIutH,EAAI7tH,EAAGK,EAAGutH,EAAQ,MAALttH,EAAYA,EAAI,EAC5C,EAEA8tH,EAAMp1G,QAAU,CAAE,CACdy1G,GAAI,+CACJ99D,QAAS,SAAShlD,GACd,MAAO,CACHiJ,SAASjJ,EAAM,GAAI,IAAKiJ,SAASjJ,EAAM,GAAI,IAAKiJ,SAASjJ,EAAM,GAAI,IAE3E,GACD,CACC8iH,GAAI,0BACJ99D,QAAS,SAAShlD,GACd,MAAO,CACHiJ,SAASjJ,EAAM,GAAI,IAAKiJ,SAASjJ,EAAM,GAAI,IAAKiJ,SAASjJ,EAAM,GAAI,IAE3E,GACD,CACC8iH,GAAI,0BACJ99D,QAAS,SAAShlD,GACd,MAAO,CACHiJ,SAASjJ,EAAM,GAAKA,EAAM,GAAI,IAC9BiJ,SAASjJ,EAAM,GAAKA,EAAM,GAAI,IAC9BiJ,SAASjJ,EAAM,GAAKA,EAAM,GAAI,IAEtC,IAGJyiH,EAAMpL,YAAcA,EAEpBjnH,MAAM6H,WAAW7H,MAAO,CACpBkxH,WAAYA,EACZjK,YAAaA,EACboL,MAAOA,IAUX,SAAUrwH,GAGV7B,OAAOH,MAAM6mH,KAAO1mH,OAAOH,MAAM6mH,MAAQ,CAAC,EAE1C,IAAIyM,EAAWtzH,MAAMiH,MAAM7E,OAAO,CAC9BoF,KAAM,SAAS6H,GAEXhQ,KAAKyyB,MAAQziB,EACbhQ,KAAKk0H,QAAU,EACfl0H,KAAK05D,KAAO,CAAC,CACjB,EAEAy6D,IAAK,SAASriH,EAAKpJ,GACf,IAAImS,EAAM7a,KAAK05D,KACX06D,EAAQ,CAAEtiH,IAAKA,EAAKpJ,MAAOA,GAE/BmS,EAAI/I,GAAOsiH,EAENp0H,KAAKq0H,OAGNr0H,KAAKs0H,MAAMC,MAAQH,EACnBA,EAAMI,MAAQx0H,KAAKs0H,MACnBt0H,KAAKs0H,MAAQF,GAJbp0H,KAAKq0H,MAAQr0H,KAAKs0H,MAAQF,EAO1Bp0H,KAAKk0H,SAAWl0H,KAAKyyB,OACrB5X,EAAI7a,KAAKq0H,MAAMviH,KAAO,KACtB9R,KAAKq0H,MAAQr0H,KAAKq0H,MAAME,MACxBv0H,KAAKq0H,MAAMG,MAAQ,MAEnBx0H,KAAKk0H,SAEb,EAEAjkG,IAAK,SAASne,GACV,IAAIsiH,EAAQp0H,KAAK05D,KAAK5nD,GAEtB,GAAIsiH,EAmBA,OAlBIA,IAAUp0H,KAAKq0H,OAASD,IAAUp0H,KAAKs0H,QACvCt0H,KAAKq0H,MAAQD,EAAMG,MACnBv0H,KAAKq0H,MAAMG,MAAQ,MAGnBJ,IAAUp0H,KAAKs0H,QACXF,EAAMI,QACNJ,EAAMI,MAAMD,MAAQH,EAAMG,MAC1BH,EAAMG,MAAMC,MAAQJ,EAAMI,OAG9BJ,EAAMI,MAAQx0H,KAAKs0H,MACnBF,EAAMG,MAAQ,KAEdv0H,KAAKs0H,MAAMC,MAAQH,EACnBp0H,KAAKs0H,MAAQF,GAGVA,EAAM1rH,KAErB,IAGA+rH,EAAgB,eAGpB,SAASC,EAAc5zF,GACnB,OAAOzuB,OAAOyuB,GAAMr+B,QAAQgyH,EAHpB,IAIZ,CAEA,SAASE,EAAU3oE,GACf,IAAIz7C,EAAQ,GACZ,IAAK,IAAIuB,KAAOk6C,EACZz7C,EAAM5O,KAAKmQ,EAAMk6C,EAAOl6C,IAG5B,OAAOvB,EAAMyL,OAAOnR,KAAK,GAC7B,CAIA,SAAS+pH,EAAQzlH,GAKb,IAFA,IAAIuvC,EAAO,WAEFn3C,EAAI,EAAGA,EAAI4H,EAAI3H,SAAUD,EAC9Bm3C,IAASA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,IACzEA,GAAQvvC,EAAI0C,WAAWtK,GAG3B,OAAOm3C,IAAS,CACpB,CAMA,IAIIm2E,EAJAC,EAAkB,CAClBC,mBAAoB,GAKA,oBAAbplH,YACPklH,EAAoBllH,SAASkP,cAAc,QACzB1R,MAAM2R,QAAU,wQAKtC,IAAIk2G,EAAcr0H,MAAMiH,MAAM7E,OAAO,CACjCoF,KAAM,SAAShB,GAEXnH,KAAK4oF,OAAS,IAAIqrC,EAAS,KAC3Bj0H,KAAKmH,QAAUxE,EAAEI,OAAO,CAAC,EAAG+xH,EAAiB3tH,EACjD,EAEAo+E,QAAS,SAASzkD,EAAM3zB,EAAOhG,GAG3B,QAFgB,IAAZA,IAAsBA,EAAU,CAAC,GAEjC,MAAO25B,EACP,MA3BD,CAAE/0B,MAAO,EAAGC,OAAQ,EAAGipH,SAAU,GA8BpC,IACIC,EAAWN,EAAQ9zF,EADR6zF,EAAUxnH,IAErBgoH,EAAen1H,KAAK4oF,OAAO34D,IAAIilG,GAEnC,GAAIC,EACA,OAAOA,EAGX,IAAInlH,EAtCD,CAAEjE,MAAO,EAAGC,OAAQ,EAAGipH,SAAU,GAuChCG,EAAajuH,EAAQmyC,KAAOu7E,EAC5BQ,EAAiBr1H,KAAKs1H,kBAAkBljD,WAAU,GAEtD,IAAK,IAAItgE,KAAO3E,EAAO,CACnB,IAAIzE,EAAQyE,EAAM2E,QACG,IAAVpJ,IACP0sH,EAAWjoH,MAAM2E,GAAOpJ,EAEhC,CAEA,IAAI6sH,GAAoC,IAA1BpuH,EAAQutH,cAA0BA,EAAc5zF,GAAQzuB,OAAOyuB,GAkB7E,OAhBAs0F,EAAW1xF,YAAc6xF,EACzBH,EAAWn2G,YAAYo2G,GACvB1lH,SAASqP,KAAKC,YAAYm2G,GAEtBG,EAAQ/tH,SACRwI,EAAKjE,MAAQqpH,EAAWl2G,YAAclf,KAAKmH,QAAQ4tH,mBACnD/kH,EAAKhE,OAASopH,EAAWzgG,aACzB3kB,EAAKilH,SAAWI,EAAeG,UAAYx1H,KAAKmH,QAAQ4tH,oBAGxD/kH,EAAKjE,MAAQ,GAAKiE,EAAKhE,OAAS,GAChChM,KAAK4oF,OAAOurC,IAAIe,EAAUllH,GAG9BolH,EAAW5uG,WAAWpH,YAAYg2G,GAE3BplH,CACX,EAEAslH,gBAAiB,WACb,IAAI5sE,EAAS/4C,SAASkP,cAAc,OAIpC,OAHA6pC,EAAOv7C,MAAM2R,QAAU,0DACnB9e,KAAKmH,QAAQ4tH,mBAAqB,eAAiB/0H,KAAKmH,QAAQ4tH,mBAAqB,uBAElFrsE,CACX,IAGJssE,EAAYhhH,QAAU,IAAIghH,EAM1Br0H,MAAM6H,WAAW7H,MAAM6mH,KAAM,CACzByM,SAAUA,EACVe,YAAaA,EACbS,YAPJ,SAAqB30F,EAAM3zB,EAAOioH,GAC9B,OAAOJ,EAAYhhH,QAAQuxE,QAAQzkD,EAAM3zB,EAAOioH,EACpD,EAMIT,UAAWA,EACXC,QAASA,EACTF,cAAeA,GAGlB,CA7LD,CA6LG5zH,OAAOH,MAAM+G,QAShB,SAAU/E,GAGV7B,OAAOH,MAAQG,OAAOH,OAAS,CAAC,EAChC,IACI+0H,EADe/0H,MAAM+pB,QACW88F,KAChCG,EAAe+N,EAAiB/N,aAChC//G,EAAQjH,MAAMiH,MACd+tH,EAAYh1H,MAAM6mH,KAElBoO,EADUj1H,MAAM4C,QACSuf,QACzByL,EAAa5tB,MAAM4tB,WAEnBk5F,EAAgBiO,EAAiBjO,cACjCC,EAAagO,EAAiBhO,WAE9BmO,EAAgB,SAAUC,GAC1B,SAASD,IACLC,EAAS1tH,MAAMpI,KAAMsH,UACzB,CA4EA,OA1EAqgH,EAAakO,EAAcC,GAC3BD,EAAaxtH,UAAY5H,OAAO2mD,OAAQ0uE,GAAYA,EAASztH,WAC7DwtH,EAAaxtH,UAAUC,YAAcutH,EACrCA,EAAa9tH,GAAK8tH,EAAaxtH,UAC/BwtH,EAAa9tH,GAAGI,KAAO0tH,EAAa9tH,GAAGO,YAEvCutH,EAAaxtH,UAAU0tH,UAAY,WAE/B,OADA/1H,KAAKg2H,WAAah2H,KAAKg2H,YAAc,GAC9Bh2H,KAAKg2H,UAChB,EAEAH,EAAaxtH,UAAU4tH,YAAc,SAAsBpqH,GAMvD,OALK7L,KAAKg2H,WAGNh2H,KAAKg2H,WAAWr0H,KAAKkK,GAFrB7L,KAAKg2H,WAAa,CAAEnqH,GAIjB7L,IACX,EAEA61H,EAAaxtH,UAAU6tH,eAAiB,SAAyBrqH,GAC7D,IAAIkqH,EAAY/1H,KAAK+1H,YACjBz8G,EAAQy8G,EAAUpgH,QAAQ9J,GAI9B,OAHe,IAAXyN,GACAy8G,EAAUvrH,OAAO8O,EAAO,GAErBtZ,IACX,EAEA61H,EAAaxtH,UAAU+B,QAAU,SAAkB4uE,EAAY74D,GAC3D,IAAI41G,EAAY/1H,KAAKg2H,WAErB,GAAID,IAAc/1H,KAAKm2H,WACnB,IAAK,IAAIvsH,EAAM,EAAGA,EAAMmsH,EAAUvuH,OAAQoC,IAAO,CAC7C,IAAIwsH,EAAWL,EAAUnsH,GACrBwsH,EAASp9C,IACTo9C,EAASp9C,GAAY74D,EAE7B,CAEJ,OAAOngB,IACX,EAEA61H,EAAaxtH,UAAUguH,cAAgB,SAAwB1xH,QACjD,IAANA,IAAgBA,EAAI,CAAC,GAEzBA,EAAEkH,QAAU7L,KACZA,KAAKoK,QAAQ,gBAAiBzF,EAClC,EAEAkxH,EAAaxtH,UAAUiuH,eAAiB,WACpCt2H,KAAKoK,QAAQ,iBAAkB,CAC3ByB,QAAS7L,MAEjB,EAEA61H,EAAaxtH,UAAUkuH,QAAU,WAE7B,OADAv2H,KAAKm2H,YAAcn2H,KAAKm2H,YAAc,GAAK,EACpCn2H,IACX,EAEA61H,EAAaxtH,UAAUmuH,OAAS,WAE5B,OADAx2H,KAAKm2H,WAAa9yH,KAAK8V,KAAKnZ,KAAKm2H,YAAc,GAAK,EAAG,GAChDn2H,IACX,EAEA61H,EAAaxtH,UAAUouH,eAAiB,SAAyB1wG,EAAOrd,GAChE1I,KAAK+lB,IACL/lB,KAAK+lB,GAAOmwG,eAAel2H,MAE/BA,KAAK+lB,GAASrd,EACdA,EAAMutH,YAAYj2H,KACtB,EAEO61H,CACX,CAhFmB,CAgFjBjuH,GAEF,SAAS8uH,EAAWxsH,EAAOysH,GAEvB,OADAzsH,EAAMvI,KAAKyG,MAAM8B,EAAOysH,GACjBzsH,CACX,CAIA,IAAIuO,EAAW,CACX,EAAO,IAAW,GAAO,IAAW,IAAO,IAC3C,EAAO,KAAW,GAAO,KAAW,IAAO,KAC3C,EAAO,MAAW,GAAO,MAAW,IAAO,MAC3C,EAAO,KAAW,GAAO,KAAW,IAAO,KAC3C,EAAO,IAAW,GAAO,IAAW,IAAO,IAC3C,EAAO,KAAW,GAAO,KAAW,IAAO,KAC3C,EAAO,MAAW,GAAO,MAAW,IAAO,MAC3C,EAAO,OAAW,GAAO,OAAW,IAAO,OAC3C,EAAO,KAAW,GAAO,KAAW,IAAO,KAC3C,IAAO,KAGX,SAASm+G,EAAchE,GAOnB,IANA,IAAIv5G,EAAS,CAAE,IACX,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACzC,GAAM,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACzC,EAAM,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,GAEzCw9G,EAAQ,GACLjE,EAAI,GACHA,EAAIv5G,EAAO,GACXA,EAAOjD,SAEPygH,GAASp+G,EAASY,EAAO,IACzBu5G,GAAKv5G,EAAO,IAGpB,OAAOw9G,CACX,CAEA,IAAItwH,EAAY,YAEhB,SAASuwH,EAAQpuH,GACb,cAAcA,IAAUnC,CAC5B,CAEA,IAAIwwH,EAAQ,EAEZ,SAASC,IACL,MAAO,OAASD,GACpB,CAEA,IAAIE,EAAa5zH,KAAK6zH,GAAK,IACvBC,EAAUtkH,OAAOukH,UACjBC,GAAWxkH,OAAOukH,UAEtB,SAASE,EAAIC,GACT,OAAOA,EAAUN,CACrB,CAEA,IAAInoG,EAAezc,OAAOyc,aA+C1B,IAAI0oG,EAAU,oEAEd,SAASC,EAAalyG,GAMlB,IALA,IAAIgvE,EAAS,GACThtF,EAAI,EAEJmwH,EAlDR,SAAoBnyG,GAGhB,IAFA,IAAIgvE,EAAS,GAEJhtF,EAAI,EAAGA,EAAIge,EAAM/d,OAAQD,IAAK,CACnC,IAAIkhD,EAAOljC,EAAM1T,WAAWtK,GAE5B,GAAI,OAAUkhD,GAAQA,GAAQ,MAAQ,CAClC,IAAIkvE,EAAKlvE,EACLmvE,EAAMryG,EAAM1T,aAAatK,GAExBuB,MAAM8uH,KAGPnvE,EAAuB,MAAfkvE,EAAK,QACLC,EAAM,OAAU,MAEhC,CAEInvE,EAAO,IAEP8rC,GAAUzlE,EAAa25B,GAChBA,EAAO,MAEd8rC,GAAUzlE,EAAa,IAAQ25B,IAAS,GACxC8rC,GAAUzlE,EAAa,IAAe,GAAP25B,IACxBA,EAAO,OAEd8rC,GAAUzlE,EAAa,IAAQ25B,IAAS,IACxC8rC,GAAUzlE,EAAa,IAAQ25B,IAAS,EAAI,IAC5C8rC,GAAUzlE,EAAa,IAAe,GAAP25B,IACxBA,EAAO,UAEd8rC,GAAUzlE,EAAa,IAAQ25B,IAAS,IACxC8rC,GAAUzlE,EAAa,IAAQ25B,IAAS,GAAK,IAC7C8rC,GAAUzlE,EAAa,IAAQ25B,IAAS,EAAI,IAC5C8rC,GAAUzlE,EAAa,IAAe,GAAP25B,GAEvC,CAEA,OAAO8rC,CACX,CAUmBsjC,CAAWtyG,GAEnBhe,EAAImwH,EAASlwH,QAAQ,CACxB,IAAIswH,EAAOJ,EAAS7lH,WAAWtK,KAC3BwwH,EAAOL,EAAS7lH,WAAWtK,KAC3BywH,EAAON,EAAS7lH,WAAWtK,KAE3B0wH,EAAOH,GAAQ,EACfI,GAAgB,EAAPJ,IAAa,EAAMC,GAAQ,EACpCI,GAAgB,GAAPJ,IAAc,EAAMC,GAAQ,EACrCI,EAAc,GAAPJ,EAEPlvH,MAAMivH,GACNI,EAAOC,EAAO,GACPtvH,MAAMkvH,KACbI,EAAO,IAGX7jC,EAASA,EACLijC,EAAQ1sH,OAAOmtH,GAAQT,EAAQ1sH,OAAOotH,GACtCV,EAAQ1sH,OAAOqtH,GAAQX,EAAQ1sH,OAAOstH,EAC9C,CAEA,OAAO7jC,CACX,CAEA,SAAS8jC,EAAiB1zH,GACtB,OAAImyH,GAASnyH,EAAES,GAAK,CAAC,GAAGie,UACb,CACHje,EAAGT,EAAES,EAAEie,SACPlf,EAAGQ,EAAER,EAAEkf,UAIR,CACHje,EAAGT,EAAEq+E,OAASr+E,EAAE+kB,SAAW,EAC3BvlB,EAAGQ,EAAEs+E,OAASt+E,EAAEglB,SAAW,EAEnC,CAEA,SAAS2uG,EAAa3zH,GAGlB,YAFU,IAANA,IAAgBA,EAAI,CAAC,GAElBA,EAAE6a,MAAQ7a,EAAE6a,MAAMkgE,aAAe/6E,EAAE0C,MAC9C,CAEA,SAASkxH,EAActH,GACnB,MAAiB,KAAVA,GAA0B,OAAVA,GAA4B,SAAVA,GAA8B,gBAAVA,IAA4B6F,EAAQ7F,EACrG,CAEA,SAAS3uF,EAAKvnB,GACV,GAAIA,EACA,OAAOA,EAAMA,EAAMvT,OAAS,EAEpC,CAEA,SAASgxH,EAAW9vH,EAAOgO,EAAKyC,GAC5B,OAAO9V,KAAK8V,IAAI9V,KAAKqT,IAAIhO,EAAOyQ,GAAMzC,EAC1C,CAQA,SAAS+hH,EAAUvzH,EAAGwzH,GAClB,GAAIxzH,EAAEsC,OAAS,EACX,OAAOtC,EAAE2B,QAmBb,OAAO,SAAUmV,EAAK9W,GAClB,GAAIA,EAAEsC,QAAU,EACZ,OAAOtC,EAEX,IAAIF,EAAI3B,KAAKyN,MAAM5L,EAAEsC,OAAS,GAC1BglB,EAAOtnB,EAAE2B,MAAM,EAAG7B,GAClBynB,EAAQvnB,EAAE2B,MAAM7B,GAGpB,OA1BJ,SAAeE,EAAG+W,GAEd,IADA,IAAIi2G,EAAI,GAAIyG,EAAK,EAAGC,EAAK,EAAGrxH,EAAI,EACzBoxH,EAAKzzH,EAAEsC,QAAUoxH,EAAK38G,EAAEzU,QACvBkxH,EAAIxzH,EAAEyzH,GAAK18G,EAAE28G,KAAQ,EACrB1G,EAAE3qH,KAAOrC,EAAEyzH,KAEXzG,EAAE3qH,KAAO0U,EAAE28G,KASnB,OANID,EAAKzzH,EAAEsC,QACP0qH,EAAEvwH,KAAKyG,MAAM8pH,EAAGhtH,EAAE2B,MAAM8xH,IAExBC,EAAK38G,EAAEzU,QACP0qH,EAAEvwH,KAAKyG,MAAM8pH,EAAGj2G,EAAEpV,MAAM+xH,IAErB1G,CACX,CAUWt9E,CAFPpoB,EAAOxQ,EAAKwQ,GACZC,EAAQzQ,EAAKyQ,GAEhB,CAVM,CAUJvnB,EACP,CAEA,IAAI8tC,EAAMrkC,KAAKqkC,KAAO,WAClB,OAAO,IAAIrkC,MAAO1F,SACtB,EAEA,SAAS4vH,EAAIC,GACT,OAAOA,EAAU7B,CACrB,CAUA,SAAS3gH,EAAM5N,EAAO6N,GAClB,IATSs8G,EASLkG,GATKlG,EASOt8G,GAPLlT,KAAKwmC,IAAI,GAAIgpF,GAGjB,EAKP,OAAOxvH,KAAKiT,MAAM5N,EAAQqwH,GAASA,CACvC,CAEA,SAASC,EAAetwH,EAAOwmD,GAC3B,OAAO4nE,EAAQpuH,GAASA,EAAQwmD,CACpC,CAEA,SAAS+pE,EAAWptH,EAASxB,GACzB,IAAK,IAAIZ,KAAaY,EAElB,IADA,IAAIN,EAAaN,EAAUk6B,OAAO/4B,MAAM,KAC/BhB,EAAM,EAAGA,EAAMG,EAAWvC,OAAQoC,IACvCiC,EAAQpK,iBAAiBsI,EAAWH,GAAMS,EAAOZ,IAAY,EAGzE,CAEA,SAAS47G,EAAcx5G,GACnB,IAAIytC,EAAMztC,EAAQqtH,wBAEdt/G,EAAkBjK,SAASiK,gBAE/B,MAAO,CACHsL,IAAKo0B,EAAIp0B,KAAOpkB,OAAOitB,aAAenU,EAAgBkd,YAAcld,EAAgBu/G,WAAa,GACjG3sG,KAAM8sB,EAAI9sB,MAAQ1rB,OAAOktB,aAAepU,EAAgB2T,aAAe3T,EAAgBw/G,YAAc,GAE7G,CAEA,SAASC,EAAcxtH,EAAS6D,GAK5B,IAJA,IAAIoH,EAAS,CAAC,EACV3J,EAAQrM,OAAO+O,iBAAiBhE,IAAY,CAAC,EAC7CytH,EAAcp2H,MAAMD,QAAQyM,GAAUA,EAAS,CAAEA,GAE5C9F,EAAM,EAAGA,EAAM0vH,EAAY9xH,OAAQoC,IAAO,CAC/C,IAAImc,EAAQuzG,EAAY1vH,GACxBkN,EAAOiP,GAAS5Y,EAAM4Y,EAC1B,CAEA,OAAOjP,CACX,CAEA,SAASyiH,EAAU7wH,GACf,OAAII,MAAMJ,GACCA,EAEJA,EAAQ,IACnB,CAEA,SAASklF,EAAY/hF,EAASmE,GAC1B,IAAIA,EAYG,CACH,IAAIwpH,EAASH,EAAcxtH,EAAS,CAAE,QAAS,WAE/C,MAAO,CACHE,MAAOyN,SAASggH,EAAOztH,MAAO,IAC9BC,OAAQwN,SAASggH,EAAOxtH,OAAQ,IAExC,CAlBI,IAAID,EAAQiE,EAAKjE,MACbC,EAASgE,EAAKhE,OAEd8qH,EAAQ/qH,KACRF,EAAQsB,MAAMpB,MAAQwtH,EAAUxtH,IAGhC+qH,EAAQ9qH,KACRH,EAAQsB,MAAMnB,OAASutH,EAAUvtH,GAW7C,CAEA,SAASytH,EAAa5tH,EAASxB,GAG3B,IAAK,IAAIjI,UAFM,IAAXiI,IAAqBA,EAAS,CAAC,GAElBA,EAEb,IADA,IAAIN,EAAa3H,EAAKuhC,OAAO/4B,MAAM,KAC1BhB,EAAM,EAAGA,EAAMG,EAAWvC,OAAQoC,IACvCiC,EAAQ5J,oBAAoB8H,EAAWH,GAAMS,EAAOjI,IAAO,EAGvE,CAEA,SAASs3H,EAAe7tH,GACpB,IAAIwmH,EAAMgH,EAAcxtH,EAAS,CAAE,cAAe,eAC9C8tH,EAActH,EAAIsH,YAClBC,EAAavH,EAAIuH,WACrB,MAAO,CACH10G,IAAKnc,WAAW6wH,GAChBptG,KAAMzjB,WAAW4wH,GAEzB,CAEA,IAAIE,EAAU,SAAU/D,GACpB,SAAS+D,EAAO30H,EAAG+W,EAAGvX,EAAGF,EAAGG,EAAG6oD,QACjB,IAANtoD,IAAgBA,EAAI,QACd,IAAN+W,IAAgBA,EAAI,QACd,IAANvX,IAAgBA,EAAI,QACd,IAANF,IAAgBA,EAAI,QACd,IAANG,IAAgBA,EAAI,QACd,IAAN6oD,IAAgBA,EAAI,GAExBsoE,EAASvrH,KAAKvK,MAEdA,KAAKkF,EAAIA,EACTlF,KAAKic,EAAIA,EACTjc,KAAK0E,EAAIA,EACT1E,KAAKwE,EAAIA,EACTxE,KAAK2E,EAAIA,EACT3E,KAAKwtD,EAAIA,CACb,CAwGA,OAtGAm6D,EAAakS,EAAQ/D,GACrB+D,EAAOxxH,UAAY5H,OAAO2mD,OAAQ0uE,GAAYA,EAASztH,WACvDwxH,EAAOxxH,UAAUC,YAAcuxH,EAC/BA,EAAO9xH,GAAK8xH,EAAOxxH,UACnBwxH,EAAO9xH,GAAGI,KAAO0xH,EAAO9xH,GAAGO,YAE3BuxH,EAAOxxH,UAAUyxH,aAAe,SAAuBC,GACnD,OAAO,IAAIF,EACP75H,KAAKkF,EAAI60H,EAAO70H,EAAIlF,KAAK0E,EAAIq1H,EAAO99G,EACpCjc,KAAKic,EAAI89G,EAAO70H,EAAIlF,KAAKwE,EAAIu1H,EAAO99G,EACpCjc,KAAKkF,EAAI60H,EAAOr1H,EAAI1E,KAAK0E,EAAIq1H,EAAOv1H,EACpCxE,KAAKic,EAAI89G,EAAOr1H,EAAI1E,KAAKwE,EAAIu1H,EAAOv1H,EACpCxE,KAAKkF,EAAI60H,EAAOp1H,EAAI3E,KAAK0E,EAAIq1H,EAAOvsE,EAAIxtD,KAAK2E,EAC7C3E,KAAKic,EAAI89G,EAAOp1H,EAAI3E,KAAKwE,EAAIu1H,EAAOvsE,EAAIxtD,KAAKwtD,EAErD,EAEAqsE,EAAOxxH,UAAU2xH,OAAS,WACtB,IAAI3H,EAAMryH,KACNkF,EAAImtH,EAAIntH,EACR+W,EAAIo2G,EAAIp2G,EACRzX,EAAI6tH,EAAI3tH,EACRC,EAAI0tH,EAAI7tH,EACR4Q,EAAIi9G,EAAI1tH,EACRC,EAAIytH,EAAI7kE,EACRysE,EAAM/0H,EAAIP,EAAIsX,EAAIzX,EAEtB,OAAY,IAARy1H,EACO,KAGJ,IAAIJ,EAAOl1H,EAAIs1H,GAAMh+G,EAAIg+G,GAAMz1H,EAAIy1H,EAAK/0H,EAAI+0H,GAC9Cz1H,EAAII,EAAID,EAAIyQ,GAAK6kH,GAAMh+G,EAAI7G,EAAIlQ,EAAIN,GAAKq1H,EACjD,EAEAJ,EAAOxxH,UAAUjB,MAAQ,WACrB,OAAO,IAAIyyH,EAAO75H,KAAKkF,EAAGlF,KAAKic,EAAGjc,KAAK0E,EAAG1E,KAAKwE,EAAGxE,KAAK2E,EAAG3E,KAAKwtD,EACnE,EAEAqsE,EAAOxxH,UAAU8oD,OAAS,SAAiB2gE,GACvC,QAAKA,IAIE9xH,KAAKkF,IAAM4sH,EAAM5sH,GAAKlF,KAAKic,IAAM61G,EAAM71G,GAC1Cjc,KAAK0E,IAAMotH,EAAMptH,GAAK1E,KAAKwE,IAAMstH,EAAMttH,GACvCxE,KAAK2E,IAAMmtH,EAAMntH,GAAK3E,KAAKwtD,IAAMskE,EAAMtkE,EAC/C,EAEAqsE,EAAOxxH,UAAUiO,MAAQ,SAAkBC,GAQvC,OAPAvW,KAAKkF,EAAIoR,EAAMtW,KAAKkF,EAAGqR,GACvBvW,KAAKic,EAAI3F,EAAMtW,KAAKic,EAAG1F,GACvBvW,KAAK0E,EAAI4R,EAAMtW,KAAK0E,EAAG6R,GACvBvW,KAAKwE,EAAI8R,EAAMtW,KAAKwE,EAAG+R,GACvBvW,KAAK2E,EAAI2R,EAAMtW,KAAK2E,EAAG4R,GACvBvW,KAAKwtD,EAAIl3C,EAAMtW,KAAKwtD,EAAGj3C,GAEhBvW,IACX,EAEA65H,EAAOxxH,UAAU2rD,QAAU,SAAkBz9C,GACzC,IAAIO,EAAS,CAAE9W,KAAKkF,EAAGlF,KAAKic,EAAGjc,KAAK0E,EAAG1E,KAAKwE,EAAGxE,KAAK2E,EAAG3E,KAAKwtD,GAE5D,GAAIspE,EAAQvgH,GACR,IAAK,IAAIhP,EAAI,EAAGA,EAAIuP,EAAOtP,OAAQD,IAC/BuP,EAAOvP,GAAK+O,EAAMQ,EAAOvP,GAAIgP,GAIrC,OAAOO,CACX,EAEA+iH,EAAOxxH,UAAUoJ,SAAW,SAAmB8E,EAAW2jH,GAGtD,YAFkB,IAAdA,IAAwBA,EAAY,KAEjCl6H,KAAKg0D,QAAQz9C,GAAW1L,KAAKqvH,EACxC,EAEAL,EAAOzpF,UAAY,SAAoBhrC,EAAGjB,GACtC,OAAO,IAAI01H,EAAO,EAAG,EAAG,EAAG,EAAGz0H,EAAGjB,EACrC,EAEA01H,EAAOM,KAAO,WACV,OAAO,IAAIN,EAAO,EAAG,EAAG,EAAG,EAAG,EAAG,EACrC,EAEAA,EAAO1oF,OAAS,SAAiBipF,EAAOh1H,EAAGjB,GACvC,IAAI41H,EAAS,IAAIF,EAQjB,OAPAE,EAAO70H,EAAI7B,KAAKg3H,IAAIxB,EAAIuB,IACxBL,EAAO99G,EAAI5Y,KAAKi3H,IAAIzB,EAAIuB,IACxBL,EAAOr1H,GAAKq1H,EAAO99G,EACnB89G,EAAOv1H,EAAIu1H,EAAO70H,EAClB60H,EAAOp1H,EAAKS,EAAIA,EAAI20H,EAAO70H,EAAIf,EAAI41H,EAAO99G,GAAM,EAChD89G,EAAOvsE,EAAKrpD,EAAIA,EAAI41H,EAAO70H,EAAIE,EAAI20H,EAAO99G,GAAM,EAEzC89G,CACX,EAEAF,EAAO9pF,MAAQ,SAAgBwqF,EAAQC,GACnC,OAAO,IAAIX,EAAOU,EAAQ,EAAG,EAAGC,EAAQ,EAAG,EAC/C,EAEOX,CACX,CA1Ha,CA0HXjyH,GAEFiyH,EAAOY,SAAWZ,EAAOM,OAEzB,IAAIO,EAAe,iBAYnB,SAASC,EAAgB9uH,GACrB,IAAI8nC,EAAY9jC,iBAAiBhE,GAAS8nC,UAE1C,MAAkB,SAAdA,EACOkmF,EAAOM,OAdtB,SAAqBS,GACjB,IAAIlqH,EAAQkqH,EAAalqH,MAAMgqH,GAC/B,GAAc,OAAVhqH,GAAmC,IAAjBA,EAAMlJ,OACxB,OAAOqyH,EAAOM,OAGlB,IAAI/qG,EAAU1e,EAAM,GAAG9F,MAAM,KAAKiQ,KAAI,SAAUzV,GAAK,OAAO2D,WAAW3D,EAAI,IAC3E,OAAO,IAAKwL,SAASvI,UAAUmB,KAAKpB,MAAOyxH,EAAQ,CAAE,MAAOz7G,OAAQgR,IACxE,CASWyrG,CAAYlnF,EACvB,CAEA,SAASmnF,EAAajvH,GAClB,IAAKA,EACD,OAAOguH,EAAOM,OAKlB,IAFA,IAAIJ,EAASY,EAAgB9uH,GACzBc,EAASd,EAAQkvH,cACdpuH,GAAQ,CACX,IAAIquH,EAAeL,EAAgBhuH,GACnCotH,EAASA,EAAOD,aAAakB,GAC7BruH,EAASA,EAAOouH,aACpB,CAGA,OADAhB,EAAO99G,EAAI89G,EAAOr1H,EAAIq1H,EAAOp1H,EAAIo1H,EAAOvsE,EAAI,EACrCusE,CACX,CAEA,IAAIvS,EAAO,CACVrtE,OAAQu8E,EACRE,cAAeA,EACfnP,cAAeA,EACfqP,QAASA,EACTE,aAAcA,EACdM,IAAKA,EACLG,aAAcA,EACdY,iBAAkBA,EAClBC,aAAcA,EACdC,cAAeA,EACfj2F,KAAMA,EACNk2F,WAAYA,EACZC,UAAWA,EACXzlF,IAAKA,EACL00E,WAAYA,EACZmR,IAAKA,EACLviH,MAAOA,EACP0iH,eAAgBA,EAChBC,WAAYA,EACZ5T,cAAeA,EACfz3B,YAAaA,EACbyrC,cAAeA,EACfI,aAAcA,EACdC,eAAgBA,EAChBoB,aAAcA,EACd7D,WAAYA,EACZE,QAASA,EACTE,QAASA,GAGN4D,EAAa,CAAC,EAAExpH,SAEhBypH,EAAgB,SAAUC,GAC1B,SAASD,EAAa/zH,EAAS6Y,GAQ3B,IAAK,IAAI+F,UANM,IAAX/F,IAAqBA,EAAS,IAElCm7G,EAAgB5wH,KAAKvK,MAErBA,KAAKggB,OAASA,EAEI7Y,EAAS,CACvB,IAAIW,EAASX,EAAQ4e,GACrBje,EATW9H,KASO83E,MAAMhwE,EAAQie,GATrB/lB,KAUF+lB,GAASje,CACtB,CACJ,CAqFA,OAnFA6/G,EAAauT,EAAcC,GAC3BD,EAAa7yH,UAAY5H,OAAO2mD,OAAQ+zE,GAAmBA,EAAgB9yH,WAC3E6yH,EAAa7yH,UAAUC,YAAc4yH,EACrCA,EAAanzH,GAAKmzH,EAAa7yH,UAC/B6yH,EAAanzH,GAAGI,KAAO+yH,EAAanzH,GAAGO,YAEvC4yH,EAAa7yH,UAAU4nB,IAAM,SAAclK,GAIvC,IAHA,IAAIxV,EAAQwV,EAAMnb,MAAM,KACpBkM,EAAS9W,KAENuQ,EAAM/I,QAAUsP,GAAQ,CAE3BA,EAASA,EADEvG,EAAM6F,QAErB,CAEA,OAAOU,CACX,EAEAokH,EAAa7yH,UAAU6nB,IAAM,SAAcnK,EAAOrd,GAChC1I,KAAKiwB,IAAIlK,KAEPrd,IACZ1I,KAAK4tD,KAAK7nC,EAAO/lB,KAAK83E,MAAMpvE,EAAOqd,IACnC/lB,KAAKq2H,cAAc,CACftwG,MAAO/lB,KAAKggB,OAAS+F,EACrBrd,MAAOA,IAGnB,EAEAwyH,EAAa7yH,UAAUulD,KAAO,SAAe7nC,EAAOrd,GAChD,IAEImlD,EAAY9nC,EAAMpQ,QAAQ,MAAQ,EAClCylH,EAAYp7H,KACZ0uD,EAAY3oC,EAEhB,GAAI8nC,EAAW,CAIX,IAHA,IAAIt9C,EAAQm+C,EAAU9jD,MAAM,KACxBoV,EAAShgB,KAAKggB,OAEXzP,EAAM/I,OAAS,GAAG,CAErBwY,IADA0uC,EAAYn+C,EAAM6F,SACI,IAEtB,IAAIuX,EAAMytG,EAAU1sE,GAEf/gC,KACDA,EAAM,IAAIutG,EAAa,CAAC,EAAGl7G,IACvBi2G,YAlBDj2H,MAmBHo7H,EAAU1sE,GAAa/gC,GAE3BytG,EAAYztG,CAChB,CACA+gC,EAAYn+C,EAAM,EACtB,CAEA6qH,EAAUC,OAAO3sE,GACjB0sE,EAAU1sE,GAAahmD,CAC3B,EAEAwyH,EAAa7yH,UAAUgzH,OAAS,SAAiBt1G,GAC7C,IAAI/R,EAAUhU,KAAK+lB,GACf/R,GAAWA,EAAQkiH,gBACnBliH,EAAQkiH,eAAel2H,KAE/B,EAEAk7H,EAAa7yH,UAAUyvE,MAAQ,SAAgB9rB,EAAQjmC,GACnD,IAAIrgB,EAAOu1H,EAAW1wH,KAAKyhD,GACvBsvE,EAAUtvE,EAUd,OARgB,OAAZsvE,GAAoBxE,EAAQwE,IAAqB,oBAAT51H,IAClCsmD,aAAkBkvE,GAAmBlvE,aAAkBpkD,IACzD0zH,EAAU,IAAIJ,EAAaI,EAASt7H,KAAKggB,OAAS+F,EAAQ,MAG9Du1G,EAAQrF,YAAYj2H,OAGjBs7H,CACX,EAEOJ,CACX,CApGmB,CAoGjBrF,GAEF,SAAS0F,EAAYx1G,GACjB,OAAO,SAASrd,GAMZ,OALI1I,KAAK+lB,KAAWrd,IAChB1I,KAAK+lB,GAASrd,EACd1I,KAAKs2H,kBAGFt2H,IACX,CACJ,CAEA,SAASw7H,EAAYz1G,GACjB,OAAO,WACH,OAAO/lB,KAAK+lB,EAChB,CACJ,CAaA,IAAI01G,EAAgB,SAAUC,EAAO/mH,GACjC,IAAImC,EAAU,SAAU4kH,GACpB,SAAS5kH,IACL4kH,EAAMtzH,MAAMpI,KAAMsH,UACtB,CAMA,OANCqgH,EAAa7wG,EAAQ4kH,GACtB5kH,EAAOzO,UAAY5H,OAAO2mD,OAAQs0E,GAASA,EAAMrzH,WACjDyO,EAAOzO,UAAUC,YAAcwO,EAC/BA,EAAO/O,GAAK+O,EAAOzO,UACnByO,EAAO/O,GAAGI,KAAO2O,EAAO/O,GAAGO,YAEpBwO,CACX,CAVa,CAUX4kH,GAGF,OAzBJ,SAAyB3zH,EAAI0nB,GACzB,IAAK,IAAIloB,EAAI,EAAGA,EAAIkoB,EAAOjoB,OAAQD,IAAK,CACpC,IAAInF,EAAOqtB,EAAOloB,GACdo0H,EAAcv5H,EAAK0I,OAAO,GAAGwE,cACflN,EAAK4I,UAAU,EAAG5I,EAAKoF,QAEzCO,EAAG,MAAQ4zH,GAAeJ,EAAYn5H,GACtC2F,EAAG,MAAQ4zH,GAAeH,EAAYp5H,EAC1C,CACJ,CAcIw5H,CAAgB9kH,EAAOzO,UAAWsM,GAE3BmC,CACX,EAEA,SAAS+kH,EAASpoF,GACd,OAAIA,GAAmD,mBAA1BA,EAAesmF,OACjCtmF,EAAesmF,SAGnBtmF,CACX,CAEA,IAAIqoF,EAAS,SAAUC,GACnB,SAASD,EAAM12H,EAAGjB,GACd43H,EAAWxxH,KAAKvK,MAEhBA,KAAKoF,EAAIA,GAAK,EACdpF,KAAKmE,EAAIA,GAAK,CAClB,CAEAwjH,EAAamU,EAAOC,GACpBD,EAAMzzH,UAAY5H,OAAO2mD,OAAQ20E,GAAcA,EAAW1zH,WAC1DyzH,EAAMzzH,UAAUC,YAAcwzH,EAC9BA,EAAM/zH,GAAK+zH,EAAMzzH,UACjByzH,EAAM/zH,GAAGI,KAAO2zH,EAAM/zH,GAAGO,YAEzB,IAAI0zH,EAAkB,CAAEvoH,KAAM,CAAC,GAwK/B,OAtKAqoH,EAAMzzH,UAAU8oD,OAAS,SAAiB2gE,GACtC,OAAOA,GAASA,EAAM1sH,IAAMpF,KAAKoF,GAAK0sH,EAAM3tH,IAAMnE,KAAKmE,CAC3D,EAEA23H,EAAMzzH,UAAUjB,MAAQ,WACpB,OAAO,IAAI00H,EAAM97H,KAAKoF,EAAGpF,KAAKmE,EAClC,EAEA23H,EAAMzzH,UAAU8oC,OAAS,SAAiBipF,EAAOphF,GAC7C,IAAIijF,EAAcH,EAAM10E,OAAOpO,IAAW8iF,EAAMroH,KAEhD,OAAOzT,KAAK2zC,UAAUkmF,EAAO1oF,OAAOipF,EAAO6B,EAAY72H,EAAG62H,EAAY93H,GAC1E,EAEA23H,EAAMzzH,UAAU+nC,UAAY,SAAoBhrC,EAAGjB,GAM/C,OALAnE,KAAKoF,GAAKA,EACVpF,KAAKmE,GAAKA,EAEVnE,KAAKs2H,iBAEEt2H,IACX,EAEA87H,EAAMzzH,UAAU6zH,cAAgB,SAAwBC,GACpD,OAAOn8H,KAAKowC,UAAU+rF,EAAM/2H,EAAG+2H,EAAMh4H,EACzC,EAEA23H,EAAMzzH,UAAUqyB,KAAO,SAAet1B,EAAGjB,GAErC,OADAnE,KAAKoF,EAAIpF,KAAKmE,EAAI,EACXnE,KAAKowC,UAAUhrC,EAAGjB,EAC7B,EAEA23H,EAAMzzH,UAAU0nC,MAAQ,SAAgBwqF,EAAQC,GAQ5C,YAPe,IAAXA,IAAqBA,EAASD,GAElCv6H,KAAKoF,GAAKm1H,EACVv6H,KAAKmE,GAAKq2H,EAEVx6H,KAAKs2H,iBAEEt2H,IACX,EAEA87H,EAAMzzH,UAAU+zH,UAAY,SAAoB7B,EAAQC,GACpD,OAAOx6H,KAAKoH,QAAQ2oC,MAAMwqF,EAAQC,EACtC,EAEAsB,EAAMzzH,UAAUsrC,UAAY,SAAoBF,GAC5C,IAAIsmF,EAAS8B,EAASpoF,GAElBruC,EADMpF,KACEoF,EACRjB,EAFMnE,KAEEmE,EAOZ,OALAnE,KAAKoF,EAAI20H,EAAO70H,EAAIE,EAAI20H,EAAOr1H,EAAIP,EAAI41H,EAAOp1H,EAC9C3E,KAAKmE,EAAI41H,EAAO99G,EAAI7W,EAAI20H,EAAOv1H,EAAIL,EAAI41H,EAAOvsE,EAE9CxtD,KAAKs2H,iBAEEt2H,IACX,EAEA87H,EAAMzzH,UAAUg0H,cAAgB,SAAwB5oF,GACpD,IAAI0oF,EAAQn8H,KAAKoH,QAMjB,OAJIqsC,GACA0oF,EAAMxoF,UAAUF,GAGb0oF,CACX,EAEAL,EAAMzzH,UAAUi0H,WAAa,SAAqBH,GAC9C,IAAI99C,EAAKr+E,KAAKoF,EAAI+2H,EAAM/2H,EACpBk5E,EAAKt+E,KAAKmE,EAAIg4H,EAAMh4H,EAExB,OAAOd,KAAKo7E,KAAKJ,EAAKA,EAAKC,EAAKA,EACpC,EAEAw9C,EAAMzzH,UAAUiO,MAAQ,SAAkB5K,GAMtC,OALA1L,KAAKoF,EAAIkR,EAAMtW,KAAKoF,EAAGsG,GACvB1L,KAAKmE,EAAImS,EAAMtW,KAAKmE,EAAGuH,GAEvB1L,KAAKs2H,iBAEEt2H,IACX,EAEA87H,EAAMzzH,UAAU2rD,QAAU,SAAkBtoD,GACxC,IAAI6wH,EAAUzF,EAAQprH,GAItB,MAAO,CAHC6wH,EAAUjmH,EAAMtW,KAAKoF,EAAGsG,GAAU1L,KAAKoF,EACvCm3H,EAAUjmH,EAAMtW,KAAKmE,EAAGuH,GAAU1L,KAAKmE,EAGnD,EAEA23H,EAAMzzH,UAAUoJ,SAAW,SAAmB/F,EAAQwuH,QAChC,IAAdA,IAAwBA,EAAY,KAExC,IACI90H,EADMpF,KACEoF,EACRjB,EAFMnE,KAEEmE,EAOZ,OALI2yH,EAAQprH,KACRtG,EAAIkR,EAAMlR,EAAGsG,GACbvH,EAAImS,EAAMnS,EAAGuH,IAGVtG,EAAI80H,EAAY/1H,CAC3B,EAEA23H,EAAM10E,OAAS,SAAiBo1E,EAAMC,GAClC,GAAI3F,EAAQ0F,GACR,OAAIA,aAAgBV,EACTU,EACqB,IAArBl1H,UAAUE,QAAgC,IAAhBg1H,EAAKh1H,OAC/B,IAAIs0H,EAAMU,EAAK,GAAIA,EAAK,IAG5B,IAAIV,EAAMU,EAAMC,EAE/B,EAEAX,EAAMplH,IAAM,WAMR,IALA,IAAIgmH,EAAcp1H,UAEdu9E,EAAOsyC,EACPryC,EAAOqyC,EAEF5vH,EAAI,EAAGA,EAAID,UAAUE,OAAQD,IAAK,CACvC,IAAI40H,EAAQO,EAAYn1H,GACxBs9E,EAAOxhF,KAAKqT,IAAIylH,EAAM/2H,EAAGy/E,GACzBC,EAAOzhF,KAAKqT,IAAIylH,EAAMh4H,EAAG2gF,EAC7B,CAEA,OAAO,IAAIg3C,EAAMj3C,EAAMC,EAC3B,EAEAg3C,EAAM3iH,IAAM,WAMR,IALA,IAAIujH,EAAcp1H,UAEdq1H,EAAOtF,EACPuF,EAAOvF,EAEF9vH,EAAI,EAAGA,EAAID,UAAUE,OAAQD,IAAK,CACvC,IAAI40H,EAAQO,EAAYn1H,GACxBo1H,EAAOt5H,KAAK8V,IAAIgjH,EAAM/2H,EAAGu3H,GACzBC,EAAOv5H,KAAK8V,IAAIgjH,EAAMh4H,EAAGy4H,EAC7B,CAEA,OAAO,IAAId,EAAMa,EAAMC,EAC3B,EAEAd,EAAMe,SAAW,WACb,OAAO,IAAIf,EAAMzE,EAASA,EAC9B,EAEAyE,EAAMgB,SAAW,WACb,OAAO,IAAIhB,EAAM3E,EAASA,EAC9B,EAEA6E,EAAgBvoH,KAAKwc,IAAM,WACvB,OAAO,IAAI6rG,EAAM,EAAG,EACxB,EAEAr7H,OAAOs8H,iBAAkBjB,EAAOE,GAEzBF,CACX,CAvLY,CAuLVL,EAAc5F,EAAc,CAAE,IAAK,OAEjCmH,EAAQ,SAAUjB,GAClB,SAASiB,EAAKjxH,EAAOC,GACjB+vH,EAAWxxH,KAAKvK,MAEhBA,KAAK+L,MAAQA,GAAS,EACtB/L,KAAKgM,OAASA,GAAU,CAC5B,CAEA27G,EAAaqV,EAAMjB,GACnBiB,EAAK30H,UAAY5H,OAAO2mD,OAAQ20E,GAAcA,EAAW1zH,WACzD20H,EAAK30H,UAAUC,YAAc00H,EAC7BA,EAAKj1H,GAAKi1H,EAAK30H,UACf20H,EAAKj1H,GAAGI,KAAO60H,EAAKj1H,GAAGO,YAEvB,IAAI0zH,EAAkB,CAAEvoH,KAAM,CAAC,GAoC/B,OAlCAupH,EAAK30H,UAAU8oD,OAAS,SAAiB2gE,GACrC,OAAOA,GAASA,EAAM/lH,QAAU/L,KAAK+L,OAAS+lH,EAAM9lH,SAAWhM,KAAKgM,MACxE,EAEAgxH,EAAK30H,UAAUjB,MAAQ,WACnB,OAAO,IAAI41H,EAAKh9H,KAAK+L,MAAO/L,KAAKgM,OACrC,EAEAgxH,EAAK30H,UAAU2rD,QAAU,SAAkBtoD,GACvC,IAAI6wH,EAAUzF,EAAQprH,GAItB,MAAO,CAHK6wH,EAAUjmH,EAAMtW,KAAK+L,MAAOL,GAAU1L,KAAK+L,MAC1CwwH,EAAUjmH,EAAMtW,KAAKgM,OAAQN,GAAU1L,KAAKgM,OAG7D,EAEAgxH,EAAK51E,OAAS,SAAiBo1E,EAAMC,GACjC,GAAI3F,EAAQ0F,GACR,OAAIA,aAAgBQ,EACTR,EACqB,IAArBl1H,UAAUE,QAAgC,IAAhBg1H,EAAKh1H,OAC/B,IAAIw1H,EAAKR,EAAK,GAAIA,EAAK,IAG3B,IAAIQ,EAAKR,EAAMC,EAE9B,EAEAT,EAAgBvoH,KAAKwc,IAAM,WACvB,OAAO,IAAI+sG,EAAK,EAAG,EACvB,EAEAv8H,OAAOs8H,iBAAkBC,EAAMhB,GAExBgB,CACX,CAnDW,CAmDTvB,EAAc5F,EAAc,CAAE,QAAS,YAErCoH,GAAQ,SAAU9B,GAClB,SAAS8B,EAAKjkF,EAAQhpC,EAAMktH,QACT,IAAXlkF,IAAqBA,EAAS,IAAI8iF,QACzB,IAAT9rH,IAAmBA,EAAO,IAAIgtH,QACb,IAAjBE,IAA2BA,EAAe,GAE9C/B,EAAgB5wH,KAAKvK,MAErBA,KAAKm9H,UAAUnkF,GACfh5C,KAAK4yB,QAAQ5iB,GACbhQ,KAAKo9H,gBAAgBF,EACzB,CAwKA,OAtKAvV,EAAasV,EAAM9B,GACnB8B,EAAK50H,UAAY5H,OAAO2mD,OAAQ+zE,GAAmBA,EAAgB9yH,WACnE40H,EAAK50H,UAAUC,YAAc20H,EAC7BA,EAAKl1H,GAAKk1H,EAAK50H,UACf40H,EAAKl1H,GAAGI,KAAO80H,EAAKl1H,GAAGO,YAEvB20H,EAAK50H,UAAUjB,MAAQ,WACnB,OAAO,IAAI61H,EACPj9H,KAAKg5C,OAAO5xC,QACZpH,KAAKgQ,KAAK5I,QAElB,EAEA61H,EAAK50H,UAAU8oD,OAAS,SAAiB2gE,GACrC,OAAOA,GACAA,EAAM94E,OAAOmY,OAAOnxD,KAAKg5C,SACzB84E,EAAM9hH,KAAKmhD,OAAOnxD,KAAKgQ,KAClC,EAEAitH,EAAK50H,UAAU80H,UAAY,SAAoBz0H,GAG3C,OAFA1I,KAAKy2H,eAAe,SAAUqF,EAAM10E,OAAO1+C,IAC3C1I,KAAKs2H,iBACEt2H,IACX,EAEAi9H,EAAK50H,UAAUg1H,UAAY,WACvB,OAAOr9H,KAAKg5C,MAChB,EAEAikF,EAAK50H,UAAU+0H,gBAAkB,SAA0B9wG,GAIvD,OAHAtsB,KAAKk9H,aAAeh6H,MAAMD,QAAQqpB,GAAUA,EAAS,CAAEA,EAAQA,GAE/DtsB,KAAKs2H,iBACEt2H,IACX,EAEAi9H,EAAK50H,UAAUi1H,gBAAkB,WAC7B,OAAOt9H,KAAKk9H,YAChB,EAEAD,EAAK50H,UAAUuqB,QAAU,SAAkBlqB,GAGvC,OAFA1I,KAAKy2H,eAAe,OAAQuG,EAAK51E,OAAO1+C,IACxC1I,KAAKs2H,iBACEt2H,IACX,EAEAi9H,EAAK50H,UAAUkqB,QAAU,WACrB,OAAOvyB,KAAKgQ,IAChB,EAEAitH,EAAK50H,UAAU0D,MAAQ,WACnB,OAAO/L,KAAKgQ,KAAKjE,KACrB,EAEAkxH,EAAK50H,UAAU2D,OAAS,WACpB,OAAOhM,KAAKgQ,KAAKhE,MACrB,EAEAixH,EAAK50H,UAAUk1H,QAAU,WACrB,OAAOv9H,KAAKg5C,OAAO5xC,OACvB,EAEA61H,EAAK50H,UAAUm1H,YAAc,WACzB,OAAOx9H,KAAKg5C,OAAO5xC,QAAQgpC,UAAUpwC,KAAK+L,QAAS/L,KAAKgM,SAC5D,EAEAixH,EAAK50H,UAAUo1H,SAAW,WACtB,OAAOz9H,KAAKg5C,OAAO5xC,QAAQgpC,UAAUpwC,KAAK+L,QAAS,EACvD,EAEAkxH,EAAK50H,UAAUq1H,WAAa,WACxB,OAAO19H,KAAKg5C,OAAO5xC,QAAQgpC,UAAU,EAAGpwC,KAAKgM,SACjD,EAEAixH,EAAK50H,UAAUk2E,OAAS,WACpB,OAAOv+E,KAAKg5C,OAAO5xC,QAAQgpC,UAAUpwC,KAAK+L,QAAU,EAAG/L,KAAKgM,SAAW,EAC3E,EAEAixH,EAAK50H,UAAUs1H,KAAO,SAAe5D,GACjC,IAAI6D,EAAK59H,KAAKu9H,UAAUlB,cAActC,GAClC8D,EAAK79H,KAAKy9H,WAAWpB,cAActC,GACnC+D,EAAK99H,KAAKw9H,cAAcnB,cAActC,GACtCgE,EAAK/9H,KAAK09H,aAAarB,cAActC,GAEzC,OAAOkD,EAAKe,WAAWJ,EAAIC,EAAIC,EAAIC,EACvC,EAEAd,EAAK50H,UAAUg0H,cAAgB,SAAwBr3H,GACnD,OAAOi4H,EAAKe,WACRh+H,KAAKu9H,UAAU5pF,UAAU3uC,GACzBhF,KAAKw9H,cAAc7pF,UAAU3uC,GAErC,EAEAi4H,EAAK50H,UAAU41H,OAAS,SAAiB74H,EAAGjB,GAQxC,YAPU,IAANA,IAAgBA,EAAIiB,GAExBpF,KAAKgQ,KAAKjE,OAAS,EAAI3G,EACvBpF,KAAKgQ,KAAKhE,QAAU,EAAI7H,EAExBnE,KAAKg5C,OAAO5I,WAAWhrC,GAAIjB,GAEpBnE,IACX,EAEAi9H,EAAK50H,UAAU61H,WAAa,SAAqB94H,EAAGjB,GAChD,OAAOnE,KAAKoH,QAAQ62H,OAAO74H,EAAGjB,EAClC,EAEA84H,EAAK50H,UAAU81H,cAAgB,SAAwBhC,GACnD,IAAInjF,EAASh5C,KAAKg5C,OACdwkF,EAAcx9H,KAAKw9H,cACvB,QAASrB,EAAM/2H,EAAI4zC,EAAO5zC,GAAK+2H,EAAMh4H,EAAI60C,EAAO70C,GAAKq5H,EAAYp4H,EAAI+2H,EAAM/2H,GAAKo4H,EAAYr5H,EAAIg4H,EAAMh4H,EAC1G,EAEA84H,EAAK50H,UAAU+1H,UAAY,SAAoBjC,EAAOpwH,GAClD,IAAIsyH,EAAYr+H,KAAKk+H,WAAWnyH,EAAOA,GACnCuyH,EAAYt+H,KAAKk+H,YAAYnyH,GAAQA,GAEzC,OAAOsyH,EAAUF,cAAchC,KAAWmC,EAAUH,cAAchC,EACtE,EAEAc,EAAKe,WAAa,WACd,IAAIT,EAAUzB,EAAMplH,IAAItO,MAAM,KAAMd,WAChCk2H,EAAc1B,EAAM3iH,IAAI/Q,MAAM,KAAMd,WAMxC,OAAO,IAAI21H,EAAKM,EALL,IAAIP,EACXQ,EAAYp4H,EAAIm4H,EAAQn4H,EACxBo4H,EAAYr5H,EAAIo5H,EAAQp5H,GAIhC,EAEA84H,EAAKsB,MAAQ,SAAgBr5H,EAAG+W,GAC5B,OAAOghH,EAAKe,WACRlC,EAAMplH,IAAIxR,EAAEq4H,UAAWthH,EAAEshH,WACzBzB,EAAM3iH,IAAIjU,EAAEs4H,cAAevhH,EAAEuhH,eAErC,EAEAP,EAAKuB,UAAY,SAAoBt5H,EAAG+W,GACpC,IAAIwiH,EAAQ,CACRjyG,KAAMtnB,EAAEq4H,UAAUn4H,EAClB8f,IAAKhgB,EAAEq4H,UAAUp5H,EACjBsoB,MAAOvnB,EAAEs4H,cAAcp4H,EACvBsnB,OAAQxnB,EAAEs4H,cAAcr5H,GAGxBu6H,EAAQ,CACRlyG,KAAMvQ,EAAEshH,UAAUn4H,EAClB8f,IAAKjJ,EAAEshH,UAAUp5H,EACjBsoB,MAAOxQ,EAAEuhH,cAAcp4H,EACvBsnB,OAAQzQ,EAAEuhH,cAAcr5H,GAG5B,GAAIs6H,EAAMjyG,MAAQkyG,EAAMjyG,OACpBiyG,EAAMlyG,MAAQiyG,EAAMhyG,OACpBgyG,EAAMv5G,KAAOw5G,EAAMhyG,QACnBgyG,EAAMx5G,KAAOu5G,EAAM/xG,OACnB,OAAOuwG,EAAKe,WACR,IAAIlC,EAAMz4H,KAAK8V,IAAIslH,EAAMjyG,KAAMkyG,EAAMlyG,MAAOnpB,KAAK8V,IAAIslH,EAAMv5G,IAAKw5G,EAAMx5G,MACtE,IAAI42G,EAAMz4H,KAAKqT,IAAI+nH,EAAMhyG,MAAOiyG,EAAMjyG,OAAQppB,KAAKqT,IAAI+nH,EAAM/xG,OAAQgyG,EAAMhyG,SAGvF,EAEOuwG,CACX,CApLW,CAoLTpH,GAEE8I,GAAkB,SAAUxD,GAC5B,SAASwD,EAAe5E,QACL,IAAXA,IAAqBA,EAASF,EAAOM,QAEzCgB,EAAgB5wH,KAAKvK,MAErBA,KAAK4+H,QAAU7E,CACnB,CAkFA,OAhFApS,EAAagX,EAAgBxD,GAC7BwD,EAAet2H,UAAY5H,OAAO2mD,OAAQ+zE,GAAmBA,EAAgB9yH,WAC7Es2H,EAAet2H,UAAUC,YAAcq2H,EACvCA,EAAe52H,GAAK42H,EAAet2H,UACnCs2H,EAAe52H,GAAGI,KAAOw2H,EAAe52H,GAAGO,YAE3Cq2H,EAAet2H,UAAUjB,MAAQ,WAC7B,OAAO,IAAIu3H,EACP3+H,KAAK4+H,QAAQx3H,QAErB,EAEAu3H,EAAet2H,UAAU8oD,OAAS,SAAiB2gE,GAC/C,OAAOA,GACAA,EAAM8M,QAAQztE,OAAOnxD,KAAK4+H,QACrC,EAEAD,EAAet2H,UAAU+nC,UAAY,SAAoBhrC,EAAGjB,GAIxD,OAHAnE,KAAK4+H,QAAU5+H,KAAK4+H,QAAQ9E,aAAaD,EAAOzpF,UAAUhrC,EAAGjB,IAE7DnE,KAAK6+H,iBACE7+H,IACX,EAEA2+H,EAAet2H,UAAU0nC,MAAQ,SAAgBwqF,EAAQC,EAAQxhF,QAC9C,IAAXwhF,IAAqBA,EAASD,QACnB,IAAXvhF,IAAqBA,EAAS,MAElC,IAAIijF,EAAcjjF,EAclB,OAZIijF,IACAA,EAAcH,EAAM10E,OAAO60E,GAC3Bj8H,KAAK4+H,QAAU5+H,KAAK4+H,QAAQ9E,aAAaD,EAAOzpF,UAAU6rF,EAAY72H,EAAG62H,EAAY93H,KAGzFnE,KAAK4+H,QAAU5+H,KAAK4+H,QAAQ9E,aAAaD,EAAO9pF,MAAMwqF,EAAQC,IAE1DyB,IACAj8H,KAAK4+H,QAAU5+H,KAAK4+H,QAAQ9E,aAAaD,EAAOzpF,WAAW6rF,EAAY72H,GAAI62H,EAAY93H,KAG3FnE,KAAK6+H,iBACE7+H,IACX,EAEA2+H,EAAet2H,UAAU8oC,OAAS,SAAiBipF,EAAOphF,GACtD,IAAIijF,EAAcH,EAAM10E,OAAOpO,IAAW8iF,EAAMroH,KAKhD,OAHAzT,KAAK4+H,QAAU5+H,KAAK4+H,QAAQ9E,aAAaD,EAAO1oF,OAAOipF,EAAO6B,EAAY72H,EAAG62H,EAAY93H,IAEzFnE,KAAK6+H,iBACE7+H,IACX,EAEA2+H,EAAet2H,UAAUy2H,SAAW,SAAmBrrF,GACnD,IAAIsmF,EAAS8B,EAASpoF,GAKtB,OAHAzzC,KAAK4+H,QAAU5+H,KAAK4+H,QAAQ9E,aAAaC,GAEzC/5H,KAAK6+H,iBACE7+H,IACX,EAEA2+H,EAAet2H,UAAU0xH,OAAS,SAAiBrxH,GAC/C,OAAIA,GACA1I,KAAK4+H,QAAUl2H,EACf1I,KAAK6+H,iBACE7+H,MAGJA,KAAK4+H,OAChB,EAEAD,EAAet2H,UAAUw2H,eAAiB,WACtC7+H,KAAKq2H,cAAc,CACftwG,MAAO,YACPrd,MAAO1I,MAEf,EAEO2+H,CACX,CA1FqB,CA0FnB9I,GAEF,SAASkJ,GAAYhF,GACjB,OAAe,OAAXA,EACO,KAGPA,aAAkB4E,GACX5E,EAGJ,IAAI4E,GAAe5E,EAC9B,CAEA,IAAIiF,GAAa,SAAU7D,GACvB,SAASpzG,EAAQ5gB,GACbg0H,EAAgB5wH,KAAKvK,MAErBA,KAAKuI,aAAapB,EACtB,CAEAwgH,EAAa5/F,EAASozG,GACtBpzG,EAAQ1f,UAAY5H,OAAO2mD,OAAQ+zE,GAAmBA,EAAgB9yH,WACtE0f,EAAQ1f,UAAUC,YAAcyf,EAChCA,EAAQhgB,GAAKggB,EAAQ1f,UACrB0f,EAAQhgB,GAAGI,KAAO4f,EAAQhgB,GAAGO,YAE7B,IAAI22H,EAAqB,CAAEnpG,SAAU,CAAC,GAiJtC,OA/IAmpG,EAAmBnpG,SAAS7F,IAAM,WAC9B,MAAO,MACX,EAEAlI,EAAQ1f,UAAUE,aAAe,SAAuBpB,QACpC,IAAZA,IAAsBA,EAAU,CAAC,GAErC,IAAI+yC,EAAO/yC,EAAQ+yC,KACfvG,EAAYxsC,EAAQwsC,UAEpBA,IACAxsC,EAAQwsC,UAAYorF,GAAYprF,IAGhCuG,IAASA,EAAK7pB,KACd6pB,EAAK7pB,GAAK2mG,KAGdh3H,KAAKmH,QAAU,IAAI+zH,EAAa/zH,GAChCnH,KAAKmH,QAAQ8uH,YAAYj2H,KAC7B,EAEA+nB,EAAQ1f,UAAUsrC,UAAY,SAAoBjrC,GAC9C,IAAIouH,EAAQpuH,GAGR,OAAO1I,KAAKmH,QAAQ8oB,IAAI,aAFxBjwB,KAAKmH,QAAQ+oB,IAAI,YAAa6uG,GAAYr2H,GAIlD,EAEAqf,EAAQ1f,UAAU62H,gBAAkB,WAIhC,IAHA,IACIlE,EADAnvH,EAAU7L,KAGP6L,EAAQc,QAAQ,CAEnB,IAAI8mC,GADJ5nC,EAAUA,EAAQc,QACWgnC,YACzBF,IACAunF,EAAevnF,EAAesmF,SAASD,aAAakB,GAAgBnB,EAAOM,QAEnF,CAEA,GAAIa,EACA,OAAO+D,GAAY/D,EAE3B,EAEAjzG,EAAQ1f,UAAU82H,iBAAmB,SAA2BD,QACpC,IAApBA,IAA8BA,EAAkBl/H,KAAKk/H,mBAEzD,IAIIE,EAHAC,EAAgBxD,EADG77H,KAAK2zC,aAGxBqnF,EAAea,EAASqD,GAS5B,GALIE,EADAC,GAAiBrE,EACAA,EAAalB,aAAauF,GAE1BA,GAAiBrE,EAIlC,OAAO+D,GAAYK,EAE3B,EAEAr3G,EAAQ1f,UAAU2E,QAAU,SAAkBtE,GAC1C,OAAIouH,EAAQpuH,IACR1I,KAAKmH,QAAQ+oB,IAAI,UAAWxnB,GACrB1I,OAG4B,IAAhCA,KAAKmH,QAAQ8oB,IAAI,UAC5B,EAEAlI,EAAQ1f,UAAU6xC,KAAO,SAAexxC,GACpC,IAAIvB,EAAUnH,KAAKmH,QACnB,OAAI2vH,EAAQpuH,IACJA,IAAUA,EAAM2nB,KAChB3nB,EAAM2nB,GAAK2mG,KAEf7vH,EAAQ+oB,IAAI,OAAQxnB,GACb1I,MAGJmH,EAAQ8oB,IAAI,OACvB,EAEAlI,EAAQ1f,UAAU0uB,QAAU,SAAkBruB,GAC1C,OAAIouH,EAAQpuH,IACR1I,KAAKmH,QAAQ+oB,IAAI,UAAWxnB,GACrB1I,MAGJg5H,EAAeh5H,KAAKmH,QAAQ8oB,IAAI,WAAY,EACvD,EAEAlI,EAAQ1f,UAAUglB,UAAY,SAAoB3kB,GAC9C,OAAIouH,EAAQpuH,IACR1I,KAAKmH,QAAQ+oB,IAAI,YAAaxnB,GACvB1I,MAGJA,KAAKmH,QAAQ8oB,IAAI,YAC5B,EAEAlI,EAAQ1f,UAAUi3H,YAAc,SAAsB7rF,GAClD,IAAIkqF,EAAO39H,KAAKu/H,aAAa9rF,GAC7B,GAAIkqF,EAAM,CACN,IAAIzjF,EAAOl6C,KAAKk6C,OAChB,OAAOA,EAAO+iF,GAAKuB,UAAUb,EAAMzjF,EAAKyjF,KAAKlqF,IAAmBkqF,CACpE,CACJ,EAEA51G,EAAQ1f,UAAU81H,cAAgB,SAAwBhC,EAAO+C,GAC7D,GAAIl/H,KAAKgN,UAAW,CAChB,IAAI2mC,EAAY3zC,KAAKm/H,iBAAiBD,GAClCM,EAAmBrD,EAIvB,OAHIxoF,IACA6rF,EAAmBrD,EAAME,cAAc1oF,EAAUomF,SAASC,WAEtDh6H,KAAKy/H,YAAcz/H,KAAK0/H,eAAeF,IAAuBx/H,KAAKo+H,WAAap+H,KAAK2/H,cAAgB3/H,KAAKo+H,UAAUoB,EAChI,CACA,OAAO,CACX,EAEAz3G,EAAQ1f,UAAUo3H,SAAW,WACzB,IAAI/rG,EAAO1zB,KAAKmH,QAAQusB,KACxB,OAAOA,IAAS6kG,EAAc7kG,EAAKu9F,MACvC,EAEAlpG,EAAQ1f,UAAUs3H,WAAa,WAC3B,IAAIC,EAAS5/H,KAAKmH,QAAQy4H,OAC1B,OAAOA,GAAUA,EAAO7zH,MAAQ,IAAMwsH,EAAcqH,EAAO3O,MAC/D,EAEAlpG,EAAQ1f,UAAUk3H,aAAe,SAAuB9rF,GACpD,OAAOzzC,KAAK29H,KAAKlqF,EACrB,EAEAhzC,OAAOs8H,iBAAkBh1G,EAAQ1f,UAAW42H,GAErCl3G,CACX,CA/JgB,CA+Jd8tG,GAEF,SAASgK,GAAqBthD,EAAQvvE,EAAI8wH,EAAI/F,GAC1C,IAAIgG,EAAW,EACXC,EAAW,EASf,OAPIjG,IACAgG,EAAW18H,KAAKwwC,MAAMkmF,EAAOr1H,EAAIo7H,EAAI/F,EAAO70H,EAAI8J,GAC/B,IAAb+qH,EAAO99G,IACP+jH,EAAW38H,KAAKwwC,MAAMkmF,EAAOv1H,EAAIs7H,EAAI/F,EAAO99G,EAAIjN,KAIjD,CACH5J,EAAG26H,EACH57H,EAAG67H,EAEX,CAEA,IAAIC,GAAW58H,KAAK6zH,GAAK,EAErBgJ,GAAY,SAAUnE,GACtB,SAASoE,EAAO5hD,EAAQjyD,QACL,IAAXiyD,IAAqBA,EAAS,IAAIu9C,QACvB,IAAXxvG,IAAqBA,EAAS,GAElCyvG,EAAWxxH,KAAKvK,MAEhBA,KAAKogI,UAAU7hD,GACfv+E,KAAKqgI,UAAU/zG,EACnB,CAgFA,OA9EAq7F,EAAawY,EAAQpE,GACrBoE,EAAO93H,UAAY5H,OAAO2mD,OAAQ20E,GAAcA,EAAW1zH,WAC3D83H,EAAO93H,UAAUC,YAAc63H,EAC/BA,EAAOp4H,GAAKo4H,EAAO93H,UACnB83H,EAAOp4H,GAAGI,KAAOg4H,EAAOp4H,GAAGO,YAE3B63H,EAAO93H,UAAU+3H,UAAY,SAAoB13H,GAG7C,OAFA1I,KAAKy2H,eAAe,SAAUqF,EAAM10E,OAAO1+C,IAC3C1I,KAAKs2H,iBACEt2H,IACX,EAEAmgI,EAAO93H,UAAUi4H,UAAY,WACzB,OAAOtgI,KAAKu+E,MAChB,EAEA4hD,EAAO93H,UAAU8oD,OAAS,SAAiB2gE,GACvC,OAAOA,GACAA,EAAMvzC,OAAOptB,OAAOnxD,KAAKu+E,SACzBuzC,EAAMxlG,SAAWtsB,KAAKssB,MACjC,EAEA6zG,EAAO93H,UAAUjB,MAAQ,WACrB,OAAO,IAAI+4H,EAAOngI,KAAKu+E,OAAOn3E,QAASpH,KAAKssB,OAChD,EAEA6zG,EAAO93H,UAAUk4H,QAAU,SAAkBnG,GACzC,OAAOp6H,KAAKwgI,SAAS3H,EAAIuB,GAC7B,EAEA+F,EAAO93H,UAAUs1H,KAAO,SAAe5D,GAOnC,IANA,IAEI0G,EAAgBZ,GAAqB7/H,KAAKu+E,OAAQv+E,KAAKssB,OAAQtsB,KAAKssB,OAAQytG,GAC5E8C,EAAWf,EAAMgB,WACjBA,EAAWhB,EAAMe,WAEZt1H,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAIm5H,EAPO1gI,KAOkBwgI,SAASC,EAAcr7H,EAAImC,EAAI04H,IAAU5D,cAActC,GAChF4G,EARO3gI,KAQkBwgI,SAASC,EAAct8H,EAAIoD,EAAI04H,IAAU5D,cAActC,GAChF6G,EAAe,IAAI9E,EAAM4E,EAAct7H,EAAGu7H,EAAcx8H,GAE5D04H,EAAWf,EAAMplH,IAAImmH,EAAU+D,GAC/B9D,EAAWhB,EAAM3iH,IAAI2jH,EAAU8D,EACnC,CAEA,OAAO3D,GAAKe,WAAWnB,EAAUC,EACrC,EAEAqD,EAAO93H,UAAUm4H,SAAW,SAAmBpG,GAC3C,IACI77C,EADMv+E,KACOu+E,OACbjyD,EAFMtsB,KAEOssB,OAEjB,OAAO,IAAIwvG,EACPv9C,EAAOn5E,EAAIknB,EAASjpB,KAAKg3H,IAAID,GAC7B77C,EAAOp6E,EAAImoB,EAASjpB,KAAKi3H,IAAIF,GAErC,EAEA+F,EAAO93H,UAAU81H,cAAgB,SAAwBhC,GACrD,IACI59C,EADMv+E,KACOu+E,OACbjyD,EAFMtsB,KAEOssB,OAGjB,OAFejpB,KAAKwmC,IAAIsyF,EAAM/2H,EAAIm5E,EAAOn5E,EAAG,GACxC/B,KAAKwmC,IAAIsyF,EAAMh4H,EAAIo6E,EAAOp6E,EAAG,IAAMd,KAAKwmC,IAAIvd,EAAQ,EAE5D,EAEA6zG,EAAO93H,UAAU+1H,UAAY,SAAoBjC,EAAOpwH,GACpD,IACIwyE,EADMv+E,KACOu+E,OACbjyD,EAFMtsB,KAEOssB,OACbu0G,EAAgBtiD,EAAO+9C,WAAWH,GAEtC,OAAO7vG,EAASvgB,GAAS80H,GAAiBA,GAAiBv0G,EAASvgB,CACxE,EAEOo0H,CACX,CA1Fe,CA0Fb1E,EAAc5F,EAAc,CAAE,YAI5BiL,GAAY,SAAUpF,GAAS,OAC9B,SAAUA,GACP,SAASqF,IACLrF,EAAMtzH,MAAMpI,KAAMsH,UACtB,CAgDA,OA9CAqgH,EAAaoZ,EAAWrF,GACxBqF,EAAU14H,UAAY5H,OAAO2mD,OAAQs0E,GAASA,EAAMrzH,WACpD04H,EAAU14H,UAAUC,YAAcy4H,EAClCA,EAAUh5H,GAAKg5H,EAAU14H,UACzB04H,EAAUh5H,GAAGI,KAAO44H,EAAUh5H,GAAGO,YAEjCy4H,EAAU14H,UAAUqrB,KAAO,SAAeu9F,EAAOl6F,GAC7C,IAAI5vB,EAAUnH,KAAKmH,QAEnB,GAAI2vH,EAAQ7F,GAAQ,CAChB,GAAIA,GAlBL,aAkBcA,EAAMn7F,SAAuB,CACtC,IAAIkrG,EAAU,CACV/P,MAAOA,GAEP6F,EAAQ//F,KACRiqG,EAAQjqG,QAAUA,GAEtB5vB,EAAQ+oB,IAAI,OAAQ8wG,EACxB,MACI75H,EAAQ+oB,IAAI,OAAQ+gG,GAGxB,OAAOjxH,IACX,CAEA,OAAOmH,EAAQ8oB,IAAI,OACvB,EAEA8wG,EAAU14H,UAAUu3H,OAAS,SAAiB3O,EAAOllH,EAAOgrB,GACxD,OAAI+/F,EAAQ7F,IACRjxH,KAAKmH,QAAQ+oB,IAAI,eAAgB+gG,GAE7B6F,EAAQ/qH,IACR/L,KAAKmH,QAAQ+oB,IAAI,eAAgBnkB,GAGjC+qH,EAAQ//F,IACR/2B,KAAKmH,QAAQ+oB,IAAI,iBAAkB6G,GAGhC/2B,MAGJA,KAAKmH,QAAQ8oB,IAAI,SAC5B,EAEO8wG,CACX,CArDsC,CAqDpCrF,EACH,EAECuF,GAAuBpH,EAAOY,SAAShpH,WAEvCyvH,GAAa,SAAUxF,GAAS,OAC/B,SAAUA,GACP,SAASqF,IACLrF,EAAMtzH,MAAMpI,KAAMsH,UACtB,CAoCA,OAlCAqgH,EAAaoZ,EAAWrF,GACxBqF,EAAU14H,UAAY5H,OAAO2mD,OAAQs0E,GAASA,EAAMrzH,WACpD04H,EAAU14H,UAAUC,YAAcy4H,EAClCA,EAAUh5H,GAAKg5H,EAAU14H,UACzB04H,EAAUh5H,GAAGI,KAAO44H,EAAUh5H,GAAGO,YAEjCy4H,EAAU14H,UAAUs1H,KAAO,SAAelqF,GACtC,IAEIkqF,EAFAyB,EAAiBvD,EAAS77H,KAAKm/H,iBAAiB1rF,IAChD0tF,EAAa/B,EAAiBA,EAAe3tH,WAAawvH,GAG1DjhI,KAAKohI,YAAcphI,KAAKqhI,cAAgBF,EACxCxD,EAAO39H,KAAKohI,WAAWh6H,SAEvBu2H,EAAO39H,KAAKshI,MAAMlC,GAClBp/H,KAAKohI,WAAazD,EAAOA,EAAKv2H,QAAU,KACxCpH,KAAKqhI,YAAcF,GAGvB,IAAII,EAAcvhI,KAAKmH,QAAQ8oB,IAAI,gBAKnC,OAJIsxG,GAAe5D,GACfA,EAAKM,OAAOsD,EAAc,GAGvB5D,CACX,EAEAoD,EAAU14H,UAAUiuH,eAAiB,kBAC1Bt2H,KAAKohI,WACZphI,KAAKoK,QAAQ,iBAAkB,CAC3ByB,QAAS7L,MAEjB,EAEO+gI,CACX,CAzCuC,CAyCrCrF,EACH,EAEH,SAAS8F,GAAiBp/H,GACtB,IAAIssD,EAAY,IAAMtsD,EACtB,OAAO,SAASsG,GACZ,OAAIouH,EAAQpuH,IACR1I,KAAKy2H,eAAe/nE,EAAWhmD,GAC/B1I,KAAKs2H,iBACEt2H,MAGJA,KAAK0uD,EAChB,CACJ,CAQA,IAAI+yE,GAAe,SAAU/F,EAAO/mH,QAClB,IAAVA,IAAoBA,EAAQ,CAAE,aAElC,IAAImC,EAAU,SAAU4kH,GACpB,SAAS5kH,IACL4kH,EAAMtzH,MAAMpI,KAAMsH,UACtB,CAMA,OANCqgH,EAAa7wG,EAAQ4kH,GACtB5kH,EAAOzO,UAAY5H,OAAO2mD,OAAQs0E,GAASA,EAAMrzH,WACjDyO,EAAOzO,UAAUC,YAAcwO,EAC/BA,EAAO/O,GAAK+O,EAAOzO,UACnByO,EAAO/O,GAAGI,KAAO2O,EAAO/O,GAAGO,YAEpBwO,CACX,CAVa,CAUX4kH,GAGF,OAtBJ,SAAiC3zH,EAAI4M,GACjC,IAAK,IAAIpN,EAAI,EAAGA,EAAIoN,EAAMnN,OAAQD,IAC9BQ,EAAG4M,EAAMpN,IAAMi6H,GAAiB7sH,EAAMpN,GAE9C,CAgBIm6H,CAAwB5qH,EAAOzO,UAAWsM,GAEnCmC,CACX,EAIIqpH,GAAU,SAAUpE,GACpB,SAASoE,EAAOwB,EAAUx6H,QACL,IAAbw6H,IAAuBA,EAAW,IAAIzB,SAC1B,IAAZ/4H,IAAsBA,EAAU,CAAC,GAErC40H,EAAWxxH,KAAKvK,KAAMmH,GAEtBnH,KAAK2hI,SAASA,GAET7K,EAAQ92H,KAAKmH,QAAQy4H,SACtB5/H,KAAK4/H,OAZI,OAcjB,CAEAjY,EAAawY,EAAQpE,GACrBoE,EAAO93H,UAAY5H,OAAO2mD,OAAQ20E,GAAcA,EAAW1zH,WAC3D83H,EAAO93H,UAAUC,YAAc63H,EAC/BA,EAAOp4H,GAAKo4H,EAAO93H,UACnB83H,EAAOp4H,GAAGI,KAAOg4H,EAAOp4H,GAAGO,YAE3B,IAAI22H,EAAqB,CAAEnpG,SAAU,CAAC,GAwBtC,OAtBAmpG,EAAmBnpG,SAAS7F,IAAM,WAC9B,MAAO,QACX,EAEAkwG,EAAO93H,UAAUu5H,QAAU,WACvB,OAAO5hI,KAAK6hI,UAAUlE,MAC1B,EAEAwC,EAAO93H,UAAUi5H,MAAQ,SAAgBvH,GACrC,OAAO/5H,KAAK6hI,UAAUlE,KAAK5D,EAC/B,EAEAoG,EAAO93H,UAAUq3H,eAAiB,SAAyBvD,GACvD,OAAOn8H,KAAK2hI,WAAWxD,cAAchC,EACzC,EAEAgE,EAAO93H,UAAU+1H,UAAY,SAAoBjC,GAC7C,OAAOn8H,KAAK2hI,WAAWvD,UAAUjC,EAAOn8H,KAAKmH,QAAQy4H,OAAO7zH,MAAQ,EACxE,EAEAtL,OAAOs8H,iBAAkBoD,EAAO93H,UAAW42H,GAEpCkB,CACX,CA7Ca,CA6CXW,GAAUI,GAAWO,GAAazC,OAEhC8C,GAAY,GAEhB,SAASC,GAAQ78H,EAAG+W,EAAG+lH,GAGnB,YAFkB,IAAdA,IAAwBA,EAAYF,IAEK,IAAtCxrH,EAAMjT,KAAKoU,IAAIvS,EAAI+W,GAAI+lH,EAClC,CAEA,SAASC,GAAY/8H,EAAG+W,EAAG+lH,GACvB,OAAO98H,EAAI+W,GAAK8lH,GAAQ78H,EAAG+W,EAAG+lH,EAClC,CAkBA,IACIE,GAAQ7+H,KAAKwmC,IAGbs4F,GAAS,SAAUpG,GACnB,SAASqG,EAAI7jD,EAAQp3E,QACF,IAAXo3E,IAAqBA,EAAS,IAAIu9C,QACtB,IAAZ30H,IAAsBA,EAAU,CAAC,GAErC40H,EAAWxxH,KAAKvK,MAEhBA,KAAKogI,UAAU7hD,GAEfv+E,KAAKqiI,QAAUl7H,EAAQk7H,QACvBriI,KAAKsiI,QAAUn7H,EAAQm7H,SAAWn7H,EAAQk7H,QAC1CriI,KAAKuiI,WAAap7H,EAAQo7H,WAC1BviI,KAAKwiI,SAAWr7H,EAAQq7H,SACxBxiI,KAAKyiI,cAAgBt7H,EAAQs7H,gBAAiB,EAC9CziI,KAAK0iI,UAAYv7H,EAAQu7H,SAC7B,CA2NA,OAzNA/a,EAAaya,EAAKrG,GAClBqG,EAAI/5H,UAAY5H,OAAO2mD,OAAQ20E,GAAcA,EAAW1zH,WACxD+5H,EAAI/5H,UAAUC,YAAc85H,EAC5BA,EAAIr6H,GAAKq6H,EAAI/5H,UACb+5H,EAAIr6H,GAAGI,KAAOi6H,EAAIr6H,GAAGO,YAErB85H,EAAI/5H,UAAUjB,MAAQ,WAClB,OAAO,IAAIg7H,EAAIpiI,KAAKu+E,OAAQ,CACxB8jD,QAASriI,KAAKqiI,QACdC,QAAStiI,KAAKsiI,QACdC,WAAYviI,KAAKuiI,WACjBC,SAAUxiI,KAAKwiI,SACfC,cAAeziI,KAAKyiI,eAE5B,EAEAL,EAAI/5H,UAAU+3H,UAAY,SAAoB13H,GAG1C,OAFA1I,KAAKy2H,eAAe,SAAUqF,EAAM10E,OAAO1+C,IAC3C1I,KAAKs2H,iBACEt2H,IACX,EAEAoiI,EAAI/5H,UAAUi4H,UAAY,WACtB,OAAOtgI,KAAKu+E,MAChB,EAEA6jD,EAAI/5H,UAAUk4H,QAAU,SAAkBnG,GACtC,IAAI77C,EAASv+E,KAAKu+E,OACdokD,EAAS9J,EAAIuB,GAEjB,OAAO,IAAI0B,EACPv9C,EAAOn5E,EAAIpF,KAAKqiI,QAAUh/H,KAAKg3H,IAAIsI,GACnCpkD,EAAOp6E,EAAInE,KAAKsiI,QAAUj/H,KAAKi3H,IAAIqI,GAE3C,EAEAP,EAAI/5H,UAAUu6H,YAAc,WACxB,IAUInvF,EARA8uF,EAAaviI,KAAKuiI,WAClBhjG,EAAMv/B,KAAKyiI,eAAiB,EAAI,EAChCG,EAAc,CAAE5iI,KAAKugI,QAAQgC,IAC7BM,EAAW7iI,KAAK8iI,eAChBC,EAAgBF,EAASL,SAAWK,EAASN,WAC7CS,EAAoB3/H,KAAK6jE,KAAK67D,EAjEvB,IAkEPE,EAAmBF,EAAgBC,EACnCE,EAAeX,EAEfviI,KAAK0iI,YACLjvF,EAAiBsrF,KAAc5tF,OAAOnxC,KAAK0iI,UAAW1iI,KAAKu+E,SAG/D,IAAK,IAAIh3E,EAAI,EAAGA,GAAKy7H,EAAmBz7H,IAAK,CACzC,IAAI47H,EAAYD,EAAe3jG,EAAM0jG,EACjCG,EAjBOpjI,KAiBWqjI,qBAAqBH,EAAcC,EAAW1vF,GAEpEmvF,EAAYjhI,KAAKyhI,EAAOE,IAAKF,EAAOG,IAAKH,EAAOI,IAChDN,EAAeC,CACnB,CAEA,OAAOP,CACX,EAEAR,EAAI/5H,UAAUs1H,KAAO,SAAe5D,GAgBhC,IAfA,IAEI8I,EAAW7iI,KAAK8iI,eAChBP,EAAaM,EAASN,WACtBC,EAAWK,EAASL,SACpB/B,EAAgBZ,GAAqB7/H,KAAKu+E,OAAQv+E,KAAKqiI,QAASriI,KAAKsiI,QAASvI,GAC9EgG,EAAWzI,EAAImJ,EAAcr7H,GAC7B46H,EAAW1I,EAAImJ,EAAct8H,GAC7Bs/H,EAAWzjI,KAAKugI,QAAQiC,GAAUnG,cAActC,GAChD2J,EAAgBC,GAAe5D,EAAUwC,GACzCqB,EAAgBD,GAAe3D,EAAUuC,GACzC3B,EAAe5gI,KAAKugI,QAAQgC,GAAYlG,cAActC,GACtD8C,EAAWf,EAAMplH,IAAIkqH,EAAc6C,GACnC3G,EAAWhB,EAAM3iH,IAAIynH,EAAc6C,GAEhCC,EAAgBlB,GAAYoB,EAAgBpB,GAAU,CACzD,IAAI9B,OAAgB,EAChBgD,EAAgBlB,IAChB9B,EAlBO1gI,KAkBkBugI,QAAQmD,GAAerH,cAActC,GAC9D2J,GAAiB,IAGrB,IAAI/C,OAAgB,EAChBiD,EAAgBpB,IAChB7B,EAxBO3gI,KAwBkBugI,QAAQqD,GAAevH,cAActC,GAC9D6J,GAAiB,IAGrBhD,EAAe,IAAI9E,EAAM4E,EAAct7H,EAAGu7H,EAAcx8H,GACxD04H,EAAWf,EAAMplH,IAAImmH,EAAU+D,GAC/B9D,EAAWhB,EAAM3iH,IAAI2jH,EAAU8D,EACnC,CAEA,OAAO3D,GAAKe,WAAWnB,EAAUC,EACrC,EAEAsF,EAAI/5H,UAAUy6H,aAAe,WACzB,IAAIzQ,EAAMryH,KACNuiI,EAAalQ,EAAIkQ,WACjBC,EAAWnQ,EAAImQ,SACfC,EAAgBpQ,EAAIoQ,cAExB,GAAIA,EAAe,CACf,IAAIoB,EAAWtB,EACfA,EAAaC,EACbA,EAAWqB,CACf,CAMA,OAJItB,EAAaC,GAAaC,GAAiBF,IAAeC,KAC1DA,GAAY,KAGT,CACHD,WAAYA,EACZC,SAAUA,EAElB,EAEAJ,EAAI/5H,UAAUg7H,qBAAuB,SAA+Bd,EAAYC,EAAU/uF,GACtF,IAAIqwF,EAAK9jI,KAAKugI,QAAQgC,GAClBiB,EAAKxjI,KAAKugI,QAAQiC,GAClBuB,EAAe/jI,KAAKgkI,cAAczB,GAClC0B,EAAejkI,KAAKgkI,cAAcxB,GAClCr9H,GAAK0zH,EAAI2J,GAAY3J,EAAI0J,IAAe,EACxCe,EAAM,IAAIxH,EAAMgI,EAAG1+H,EAAID,EAAI4+H,EAAa3+H,EAAG0+H,EAAG3/H,EAAIgB,EAAI4+H,EAAa5/H,GACnEo/H,EAAM,IAAIzH,EAAM0H,EAAGp+H,EAAID,EAAI8+H,EAAa7+H,EAAGo+H,EAAGr/H,EAAIgB,EAAI8+H,EAAa9/H,GAQvE,OAPIsvC,IACAqwF,EAAGnwF,UAAUF,GACb+vF,EAAG7vF,UAAUF,GACb6vF,EAAI3vF,UAAUF,GACd8vF,EAAI5vF,UAAUF,IAGX,CACHqwF,GAAIA,EACJR,IAAKA,EACLC,IAAKA,EACLC,GAAIA,EAEZ,EAEApB,EAAI/5H,UAAU27H,cAAgB,SAAwB5J,GAClD,IAAIuI,EAAS9J,EAAIuB,GAEjB,OAAO,IAAI0B,GAAO97H,KAAKqiI,QAAUh/H,KAAKi3H,IAAIqI,GAAS3iI,KAAKsiI,QAAUj/H,KAAKg3H,IAAIsI,GAC/E,EAEAP,EAAI/5H,UAAU81H,cAAgB,SAAwBhC,GAClD,IAaIgC,EAbA0E,EAAW7iI,KAAK8iI,eAChBC,EAAgBF,EAASL,SAAWK,EAASN,WAC7ClQ,EAAMryH,KACNu+E,EAAS8zC,EAAI9zC,OACb8jD,EAAUhQ,EAAIgQ,QACdC,EAAUjQ,EAAIiQ,QACd9jD,EAAWD,EAAO+9C,WAAWH,GAC7B+H,EAAW7gI,KAAKwwC,MAAMsoF,EAAMh4H,EAAIo6E,EAAOp6E,EAAGg4H,EAAM/2H,EAAIm5E,EAAOn5E,GAC3D++H,EAAe9B,EAAUC,EACzBj/H,KAAKo7E,KAAKyjD,GAAMG,EAAS,GAAKH,GAAM7+H,KAAKi3H,IAAI4J,GAAW,GAAKhC,GAAMI,EAAS,GAAKJ,GAAM7+H,KAAKg3H,IAAI6J,GAAW,IAC3GE,EAAapkI,KAAKugI,QAAQvgI,KAAKuiI,YAAYjsH,MAAMwrH,IACjD2B,EAAWzjI,KAAKugI,QAAQvgI,KAAKwiI,UAAUlsH,MAAMwrH,IAC7CuC,EAzMZ,SAA0BC,EAAIR,EAAIN,EAAIe,GAClC,IAAIC,EAAMV,EAAG1+H,EAAIk/H,EAAGl/H,EAChBq/H,EAAMF,EAAGn/H,EAAIo+H,EAAGp+H,EAChBs/H,EAAMZ,EAAG3/H,EAAImgI,EAAGngI,EAChBwgI,EAAMJ,EAAGpgI,EAAIq/H,EAAGr/H,EAChBygI,EAAKN,EAAGl/H,EAAIo+H,EAAGp+H,EACfy/H,EAAKP,EAAGngI,EAAIq/H,EAAGr/H,EACfK,EAAIggI,EAAMG,EAAMF,EAAMC,EACtBz/H,GAAKu/H,EAAMK,EAAKH,EAAME,GAAMpgI,EAC5BW,GAAKs/H,EAAMI,EAAKF,EAAMC,GAAMpgI,EAEhC,GAAIS,GAAK,GAAKA,GAAK,GAAKE,GAAK,GAAKA,GAAK,EACnC,OAAO,IAAI22H,EAAMwI,EAAGl/H,EAAID,EAAIq/H,EAAKF,EAAGngI,EAAIgB,EAAIu/H,EAEpD,CA2L2BI,CAAiBvmD,EAAQ49C,EAAM7lH,MAAMwrH,IAAYsC,EAAYX,GAGhF,GAAIV,EAAgB,IAChB5E,EAAgBkG,GAAgBpC,GAAY1jD,EAAO+9C,WAAW+H,GAAe7lD,IAAayjD,GAAYzjD,EAAU2lD,OAC7G,CACH,IAAI/J,EAAQ2K,GAAexmD,EAAOn5E,EAAGm5E,EAAOp6E,EAAGk+H,EAASC,EAASnG,EAAM/2H,EAAG+2H,EAAMh4H,GAClE,MAAVi2H,IACAA,GAAS,IAAMA,GAAS,KAG5B,IAAI4K,EAAenC,EAASN,YAAcnI,GAASA,GAASyI,EAASL,SACrErE,EAAiB6G,GAAgB/C,GAAYzjD,EAAU2lD,KAAmBa,KAAkBX,GAAgBA,EAAalzE,OAAOgrE,GACpI,CACA,OAAOgC,CACX,EAEAiE,EAAI/5H,UAAU+1H,UAAY,SAAoBjC,EAAOpwH,GACjD,IAAI82H,EAAW7iI,KAAK8iI,eAChBvkD,EAASv+E,KAAKu+E,OACd67C,EAAQ2K,GAAexmD,EAAOn5E,EAAGm5E,EAAOp6E,EAAGnE,KAAKqiI,QAASriI,KAAKsiI,QAASnG,EAAM/2H,EAAG+2H,EAAMh4H,GAO1F,OANc,MAAVi2H,IACAA,GAAS,IAAMA,GAAS,KAGTyI,EAASN,YAAcnI,GAASA,GAASyI,EAASL,UAE9CxiI,KAAKugI,QAAQnG,GAAOkC,WAAWH,IAAUpwH,CACpE,EAEAq2H,EAAIpE,WAAa,SAAqBloH,EAAOnK,EAAKqD,EAAI8wH,EAAImF,EAAUC,EAAOnrF,GACvE,IAAIorF,EAgCZ,SAAgC9uE,GAC5B,IAAI4nB,EAAK5nB,EAAW4nB,GAChBC,EAAK7nB,EAAW6nB,GAChBC,EAAK9nB,EAAW8nB,GAChBC,EAAK/nB,EAAW+nB,GAChBpvE,EAAKqnD,EAAWrnD,GAChB8wH,EAAKzpE,EAAWypE,GAChBmF,EAAW5uE,EAAW4uE,SACtBC,EAAQ7uE,EAAW6uE,MACnBnrF,EAAWsc,EAAWtc,cAA2B,IAAbA,IAAuBA,EAAW,GAE1E,IAAIw9E,EAAUsB,EAAI9+E,GACdqrF,EAAS/hI,KAAKg3H,IAAI9C,GAClB8N,EAAOhiI,KAAKi3H,IAAI/C,GAEhB+N,EAAKF,GAAUnnD,EAAKE,GAAM,EAAIknD,GAAQnnD,EAAKE,GAAM,EACjDmnD,GAAMF,GAAQpnD,EAAKE,GAAM,EAAIinD,GAAUlnD,EAAKE,GAAM,EAElDrnE,EAAOkuH,IAAaC,EAAQ,GAAK,EAEjCM,EAAMniI,KAAKwmC,IAAIy7F,EAAI,GACnBG,EAAMpiI,KAAKwmC,IAAI07F,EAAI,GACnBG,EAAMriI,KAAKwmC,IAAI76B,EAAI,GACnB22H,EAAMtiI,KAAKwmC,IAAIi2F,EAAI,GAEnB/6F,EAAQygG,EAAME,EAAMD,EAAME,EAE1B5gG,EAAQ,IAER/1B,GADA+1B,EAAQ1hC,KAAKo7E,KAAK+mD,EAAME,EAAMD,EAAME,GAEpCD,EAAMriI,KAAKwmC,IAAI76B,EAAI,GAEnB8wH,GAAK/6F,EACL4gG,EAAMtiI,KAAKwmC,IAAIi2F,EAAI,IAGvB,IAAI8F,EAAS7uH,EAAO1T,KAAKo7E,MAAMinD,EAAMC,EAAMD,EAAMD,EAAME,EAAMH,IAAQE,EAAMD,EAAME,EAAMH,IAEnF18H,MAAM88H,KACNA,EAAS,GAGb,IAAIC,EAAMD,GAAU52H,EAAKu2H,GAAMzF,EAC3BgG,EAAkBhG,EAAKwF,GAAfM,EAAqB52H,EAE7B+2H,EAAKX,EAASS,EAAMR,EAAOS,GAAO7nD,EAAKE,GAAM,EAC7C6nD,EAAKX,EAAOQ,EAAMT,EAASU,GAAO5nD,EAAKE,GAAM,EAE7C6nD,GAAMX,EAAKO,GAAO72H,EAClBk3H,GAAMX,EAAKO,GAAOhG,EAClBqG,IAAOb,EAAKO,GAAO72H,EACnBo3H,IAAOb,EAAKO,GAAOhG,EAEnByC,GAAc2D,GAAM,EAAI,GAAK,GAAK5O,EAAIj0H,KAAKgjI,KAAKJ,EAAK5iI,KAAKo7E,KAAKwnD,EAAKA,EAAKC,EAAKA,KAE9EI,EAAchwH,GAAO2vH,EAAKE,EAAKD,EAAKE,IAAO/iI,KAAKo7E,KAAKwnD,EAAKA,EAAKC,EAAKA,GAAM7iI,KAAKo7E,KAAK0nD,EAAKA,EAAKC,EAAKA,IAAM,IACzGhM,GAAS6L,EAAKG,EAAKF,EAAKC,GAAM,EAAI,GAAK,GAAK7O,EAAIj0H,KAAKgjI,KAAKC,KAEzDpB,GAAS9K,EAAQ,IAClBA,GAAS,KAGT8K,GAAS9K,EAAQ,IACjBA,GAAS,KAEb,IAAIoI,EAAWD,EAAanI,EACxBmM,EAAe/D,GAAY,EAAI,GAAK,EAGxC,OAFAA,EAAYn/H,KAAKoU,IAAI+qH,GAAY,IAAO+D,EAEjC,CACHhoD,OAAQ,IAAIu9C,EAAMiK,EAAIC,GACtBzD,WAAYA,EACZC,SAAUA,EACVH,QAASrzH,EACTszH,QAASxC,EACT4C,UAAW3oF,EAEnB,CA7G4BysF,CAAuB,CACvCvoD,GAAInoE,EAAM1Q,EACV84E,GAAIpoE,EAAM3R,EACVg6E,GAAIxyE,EAAIvG,EACRg5E,GAAIzyE,EAAIxH,EACR6K,GAAIA,EACJ8wH,GAAIA,EACJmF,SAAUA,EACVC,MAAOA,EACPnrF,SAAUA,IAGd,OAAO,IAAIqoF,EAAI+C,EAAc5mD,OAAQ,CACjCgkD,WAAY4C,EAAc5C,WAC1BC,SAAU2C,EAAc3C,SACxBH,QAAS8C,EAAc9C,QACvBC,QAAS6C,EAAc7C,QACvBI,UAAWyC,EAAczC,UACzBD,cAAyB,IAAVyC,GAEvB,EAEO9C,CACX,CA3OY,CA2OV3G,EAAc5F,EA7OA,CAAE,UAAW,UAAW,aAAc,WAAY,mBA+OlE,SAASkP,GAAegB,EAAIC,EAAIh3H,EAAI8wH,EAAI16H,EAAGjB,GACvC,IAAIk2H,EAAM/jH,GAAOlR,EAAI2gI,GAAM/2H,EAAI,GAC3BsrH,EAAMhkH,GAAOnS,EAAI6hI,GAAMlG,EAAI,GAE/B,OAAOxpH,EAAMghH,EAAIj0H,KAAKwwC,MAAMymF,EAAKD,IACrC,CAiFA,SAASsJ,GAAevJ,EAAOtkH,GAG3B,IAFA,IAAIysH,EAAanI,EAEVmI,EAAazsH,GAChBysH,GAAc,GAGlB,OAAOA,CACX,CAEA,IAAI5gI,GAAO,GAAGA,KACVouB,GAAM,GAAGA,IACTvlB,GAAS,GAAGA,OACZ4L,GAAQ,GAAGA,MACXvP,GAAQ,GAAGA,MACXsD,GAAU,GAAGA,QAEbs8H,GAAiB,SAAUtL,GAC3B,SAASsL,EAAc1rH,QACL,IAAVA,IAAoBA,EAAQ,IAEhCogH,EAAgB5wH,KAAKvK,MAErBA,KAAKwH,OAAS,EACdxH,KAAK0mI,QAAQ,EAAG3rH,EAAMvT,OAAQuT,EAClC,CA0HA,OAxHA4sG,EAAa8e,EAAetL,GAC5BsL,EAAcp+H,UAAY5H,OAAO2mD,OAAQ+zE,GAAmBA,EAAgB9yH,WAC5Eo+H,EAAcp+H,UAAUC,YAAcm+H,EACtCA,EAAc1+H,GAAK0+H,EAAcp+H,UACjCo+H,EAAc1+H,GAAGI,KAAOs+H,EAAc1+H,GAAGO,YAEzCm+H,EAAcp+H,UAAUswB,SAAW,SAAmBjwB,GAClD,OAAIA,GACA1I,KAAK0mI,QAAQ,EAAG1mI,KAAKwH,OAAQkB,GAE7B1I,KAAKu/D,UACEv/D,MAGJA,KAAK6G,MAAM,EACtB,EAEA4/H,EAAcp+H,UAAU1G,KAAO,WAC3B,IAAIg3B,EAAWrxB,UACXwP,EAASnV,GAAKyG,MAAMpI,KAAM24B,GAI9B,OAFA34B,KAAK2mI,KAAKhuG,GAEH7hB,CACX,EAEA2vH,EAAcp+H,UAAUxB,MAAQ,WAC5B,OAAOA,GAAM0D,KAAKvK,KACtB,EAEAymI,EAAcp+H,UAAU0nB,IAAM,WAC1B,IAAIvoB,EAASxH,KAAKwH,OACdsP,EAASiZ,GAAI3nB,MAAMpI,MAMvB,OAJIwH,GACAxH,KAAK4mI,QAAQ,CAAE9vH,IAGZA,CACX,EAEA2vH,EAAcp+H,UAAUmC,OAAS,SAAmB8O,EAAOgzC,GACvD,IAAI3zB,EAAW9xB,GAAM0D,KAAKjD,UAAW,GACjCwP,EAAS9W,KAAK0mI,QAAQptH,EAAOgzC,EAAS3zB,GAI1C,OAFA34B,KAAKu/D,UAEEzoD,CACX,EAEA2vH,EAAcp+H,UAAU+N,MAAQ,WAC5B,IAAI5O,EAASxH,KAAKwH,OACdsP,EAASV,GAAMhO,MAAMpI,MAMzB,OAJIwH,GACAxH,KAAK4mI,QAAQ,CAAE9vH,IAGZA,CACX,EAEA2vH,EAAcp+H,UAAU8B,QAAU,WAC9B,IAAIwuB,EAAWrxB,UACXwP,EAAS3M,GAAQ/B,MAAMpI,KAAM24B,GAIjC,OAFA34B,KAAK2mI,KAAKhuG,GAEH7hB,CACX,EAEA2vH,EAAcp+H,UAAUsN,QAAU,SAAkB9J,GAKhD,IAJA,IAEIrE,EAASxH,KAAKwH,OAEToC,EAAM,EAAGA,EAAMpC,EAAQoC,IAC5B,GALW5J,KAKE4J,KAASiC,EAClB,OAAOjC,EAGf,OAAQ,CACZ,EAEA68H,EAAcp+H,UAAUq+H,QAAU,SAAkBptH,EAAOgzC,EAAS3zB,GAChE,IAAI7hB,EAAStM,GAAOpC,MAAMpI,KAAM,CAAEsZ,EAAOgzC,GAAUluC,OAAOua,IAK1D,OAHA34B,KAAK6mI,eAAe/vH,GACpB9W,KAAK8mI,aAAanuG,GAEX7hB,CACX,EAEA2vH,EAAcp+H,UAAUs+H,KAAO,SAAehuG,GAC1C34B,KAAK8mI,aAAanuG,GAClB34B,KAAKu/D,SACT,EAEAknE,EAAcp+H,UAAUu+H,QAAU,SAAkBjuG,GAChD34B,KAAK6mI,eAAeluG,GACpB34B,KAAKu/D,SACT,EAEAknE,EAAcp+H,UAAUy+H,aAAe,SAAuBnuG,GAG1D,IAFA,IAES/uB,EAAM,EAAGA,EAAM+uB,EAASnxB,OAAQoC,IACrC+uB,EAAS/uB,GAAKqsH,YAHHj2H,KAKnB,EAEAymI,EAAcp+H,UAAUw+H,eAAiB,SAAyBluG,GAG9D,IAFA,IAES/uB,EAAM,EAAGA,EAAM+uB,EAASnxB,OAAQoC,IACrC+uB,EAAS/uB,GAAKssH,eAHHl2H,KAKnB,EAEAymI,EAAcp+H,UAAUk3D,QAAU,WAAqB,EAEhDknE,CACX,CAnIoB,CAmIlB5Q,GAEEkR,GAAyB,SAAUC,GACnC,SAASD,IACLC,EAAiB5+H,MAAMpI,KAAMsH,UACjC,CAYA,OAVAqgH,EAAaof,EAAuBC,GACpCD,EAAsB1+H,UAAY5H,OAAO2mD,OAAQ4/E,GAAoBA,EAAiB3+H,WACtF0+H,EAAsB1+H,UAAUC,YAAcy+H,EAC9CA,EAAsBh/H,GAAKg/H,EAAsB1+H,UACjD0+H,EAAsBh/H,GAAGI,KAAO4+H,EAAsBh/H,GAAGO,YAEzDy+H,EAAsB1+H,UAAUk3D,QAAU,WACtCv/D,KAAKs2H,gBACT,EAEOyQ,CACX,CAhB4B,CAgB1BN,IAEF,SAASQ,GAAgBxD,EAAUyD,EAAc/K,GAC7C,IAAI/B,EAAQ9C,EAAIj0H,KAAKwwC,MAAMqzF,EAAa/iI,EAAIs/H,EAASt/H,EAAG+iI,EAAa9hI,EAAIq+H,EAASr+H,IAGlF,OAFmB+2H,EAAME,cAAc0C,KAAc5tF,QAAQipF,EAAOqJ,IAEhDr+H,EAAIq+H,EAASr+H,CACrC,CAEA,SAAS+hI,GAAiBhiI,EAAG4gB,EAAOq9G,GAChC,IAAIgE,EAAK,EAAIjiI,EACb,OAAO9B,KAAKwmC,IAAIu9F,EAAI,GAAKhE,EAAO,GAAGr9G,GAC/B,EAAI1iB,KAAKwmC,IAAIu9F,EAAI,GAAKjiI,EAAIi+H,EAAO,GAAGr9G,GACpC,EAAI1iB,KAAKwmC,IAAI1kC,EAAG,GAAKiiI,EAAKhE,EAAO,GAAGr9G,GACpC1iB,KAAKwmC,IAAI1kC,EAAG,GAAKi+H,EAAO,GAAGr9G,EACnC,CAEA,SAASshH,GAAkBjE,EAAQr9G,GAC/B,MAAO,EAAGq9G,EAAO,GAAGr9G,GAAS,EAAIq9G,EAAO,GAAGr9G,GAAS,EAAIq9G,EAAO,GAAGr9G,GAASq9G,EAAO,GAAGr9G,GACjF,GAAKq9G,EAAO,GAAGr9G,GAAS,EAAIq9G,EAAO,GAAGr9G,GAASq9G,EAAO,GAAGr9G,IACzD,IAAMq9G,EAAO,GAAGr9G,GAASq9G,EAAO,GAAGr9G,IACnCq9G,EAAO,GAAGr9G,GAElB,CAEA,IAAIuhH,GAAiB,SAAUxR,GAC3B,SAASwR,EAAcC,EAAMC,QACZ,IAATD,IAAmBA,EAAO,QAClB,IAARC,IAAkBA,EAAM,GAE5B1R,EAASvrH,KAAKvK,MAEdA,KAAKunI,KAAOA,EACZvnI,KAAKwnI,IAAMA,CACf,CA6CA,OA3CA7f,EAAa2f,EAAexR,GAC5BwR,EAAcj/H,UAAY5H,OAAO2mD,OAAQ0uE,GAAYA,EAASztH,WAC9Di/H,EAAcj/H,UAAUC,YAAcg/H,EACtCA,EAAcv/H,GAAKu/H,EAAcj/H,UACjCi/H,EAAcv/H,GAAGI,KAAOm/H,EAAcv/H,GAAGO,YAEzCg/H,EAAcj/H,UAAUmF,IAAM,SAAci6H,GACxC,OAAO,IAAIH,EAAchxH,EAAMtW,KAAKunI,KAAOE,EAAQF,KAAMzF,IAAYxrH,EAAMtW,KAAKwnI,IAAMC,EAAQD,IAAK1F,IACvG,EAEAwF,EAAcj/H,UAAUq/H,YAAc,SAAsBh/H,GACxD,OAAO,IAAI4+H,EAActnI,KAAKunI,KAAO7+H,EAAO1I,KAAKwnI,IACrD,EAEAF,EAAcj/H,UAAUs/H,OAAS,WAC7B,OAAO,IAAIL,GAAetnI,KAAKunI,MAAOvnI,KAAKwnI,IAC/C,EAEAF,EAAcj/H,UAAUy2H,SAAW,SAAmB2I,GAClD,OAAO,IAAIH,EAActnI,KAAKunI,KAAOE,EAAQF,KAAOvnI,KAAKwnI,IAAMC,EAAQD,IACnExnI,KAAKunI,KAAOE,EAAQD,IAAMxnI,KAAKwnI,IAAMC,EAAQF,KACrD,EAEAD,EAAcj/H,UAAUu/H,iBAAmB,SAA2Bl/H,GAClE,OAAO,IAAI4+H,EAActnI,KAAKunI,KAAO7+H,EAAO1I,KAAKwnI,IAAM9+H,EAC3D,EAEA4+H,EAAcj/H,UAAUw/H,QAAU,SAAkBjV,GAChD,IAAIkV,EAASzkI,KAAKwwC,MAAM7zC,KAAKwnI,IAAKxnI,KAAKunI,MACnCrV,EAAI7uH,KAAKo7E,KAAKp7E,KAAKwmC,IAAI7pC,KAAKwnI,IAAK,GAAKnkI,KAAKwmC,IAAI7pC,KAAKunI,KAAM,IAC1DQ,EAAO1kI,KAAKwmC,IAAIqoF,EAAG,EAAIU,GAE3B,OAAO,IAAI0U,EAAcS,EAAO1kI,KAAKg3H,IAAIyN,EAASlV,GAAImV,EAAO1kI,KAAKi3H,IAAIwN,EAASlV,GACnF,EAEA0U,EAAcj/H,UAAU8oD,OAAS,SAAiBs2E,GAC9C,OAAOznI,KAAKunI,OAASE,EAAQF,MAAQvnI,KAAKwnI,MAAQC,EAAQD,GAC9D,EAEAF,EAAcj/H,UAAU2/H,OAAS,WAC7B,OAAoB,IAAbhoI,KAAKwnI,GAChB,EAEOF,CACX,CAvDoB,CAuDlB1/H,GAEF,SAASqgI,GAAa7iI,GAClB,OAAOA,EAAI,GAAK,EAAI,CACxB,CAWA,SAAS8iI,GAAmBhjI,EAAG+W,EAAGvX,EAAGF,GACjC,GAAU,IAANU,EACA,OAXR,SAAgCA,EAAG+W,EAAGvX,GAClC,IAAIyjI,EAAa9kI,KAAKo7E,KAAKp7E,KAAKwmC,IAAI5tB,EAAG,GAAK,EAAI/W,EAAIR,GACpD,MAAO,GACDuX,EAAIksH,IAAe,EAAIjjI,KACvB+W,EAAIksH,IAAe,EAAIjjI,GAEjC,CAKekjI,CAAuBnsH,EAAGvX,EAAGF,GAGxC,IAKIy5E,EAAIE,EAAID,EAAIE,EAAIiqD,EAAIC,EAAIC,EALxB1V,GAAK,EAAI3tH,EAAIR,EAAIrB,KAAKwmC,IAAI5tB,EAAG,KAAO,EAAI5Y,KAAKwmC,IAAI3kC,EAAG,IACpDd,GAAK,EAAIf,KAAKwmC,IAAI5tB,EAAG,GAAK,EAAI/W,EAAI+W,EAAIvX,EAAI,GAAKrB,KAAKwmC,IAAI3kC,EAAG,GAAKV,IAAM,GAAKnB,KAAKwmC,IAAI3kC,EAAG,IACvFb,EAAIhB,KAAKwmC,IAAIgpF,EAAI,EAAG,GAAKxvH,KAAKwmC,IAAIzlC,EAAI,EAAG,GACzCmD,EAAI,IAAI+/H,GAAc,EAAE,GACxBkB,GAAOvsH,GAAK,EAAI/W,GAGhBb,EAAI,GACJ45E,EAAK,IAAIqpD,IAAeljI,EAAI,EAAGf,KAAKo7E,MAAMp6E,IAAIwjI,QAAQ,GACtD1pD,EAAK,IAAImpD,IAAeljI,EAAI,GAAKf,KAAKo7E,MAAMp6E,IAAIwjI,QAAQ,KAExD5pD,GAAM75E,EAAI,EAAIf,KAAKo7E,KAAKp6E,GACxB45E,EAAK,IAAIqpD,GAAcW,GAAahqD,GAAM56E,KAAKwmC,IAAIxmC,KAAKoU,IAAIwmE,GAAK,EAAI,IACrEE,GAAM/5E,EAAI,EAAIf,KAAKo7E,KAAKp6E,GACxB85E,EAAK,IAAImpD,GAAcW,GAAa9pD,GAAM96E,KAAKwmC,IAAIxmC,KAAKoU,IAAI0mE,GAAK,EAAI,KAGzED,EAAKD,EAAGzwE,IAAI2wE,GAEZmqD,EAAKrqD,EAAGzwE,IAAI2wE,GAAIypD,kBAAiB,IACjCW,EAAKtqD,EAAGzwE,IAAI2wE,EAAGwpD,UAAUC,iBAAiBvkI,KAAKo7E,KAAK,GAAK,GAEzDL,EAAKkqD,EAAG96H,IAAIjG,EAAEu3H,SAASyJ,IACvBF,EAAKC,EAAG96H,IAAIjG,EAAEogI,SAAS7I,SAASyJ,IAEhC,IAAIzxH,EAAS,GAYb,OAVIonE,EAAG8pD,UACHlxH,EAAOnV,KAAK2U,EAAM4nE,EAAGqpD,KAAOiB,EAAK1G,KAEjC1jD,EAAG4pD,UACHlxH,EAAOnV,KAAK2U,EAAM8nE,EAAGmpD,KAAOiB,EAAK1G,KAEjCuG,EAAGL,UACHlxH,EAAOnV,KAAK2U,EAAM+xH,EAAGd,KAAOiB,EAAK1G,KAG9BhrH,CACX,CAEA,SAAS2xH,GAAgBrF,EAAQjH,EAAOp2G,EAAO2iH,EAAWz0E,GAKtD,IAJA,IAEIowE,EAFAsE,EAAatB,GAAkBjE,EAAQsF,GACvCE,EAAQV,GAAmBS,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAAKxM,EAAMuM,IAGzF9+H,EAAM,EAAGA,EAAMg/H,EAAMphI,OAAQoC,IAClC,GAAI,GAAKg/H,EAAMh/H,IAAQg/H,EAAMh/H,IAAQ,IACjCy6H,EAAe8C,GAAiByB,EAAMh/H,GAAMmc,EAAOq9G,GAC/C//H,KAAKoU,IAAI4sH,EAAelI,EAAMp2G,KAAWkuC,GACzC,OAAO,CAIvB,CAkBA,SAAS40E,GAAuB3jI,EAAG+W,EAAGkgH,GAClC,IAAI2M,EACJ,GAAI5jI,EAAEE,IAAM6W,EAAE7W,EAAG,CACb,IAAIy/E,EAAOxhF,KAAKqT,IAAIxR,EAAEE,EAAG6W,EAAE7W,GACvBu3H,EAAOt5H,KAAK8V,IAAIjU,EAAEE,EAAG6W,EAAE7W,GACvB0/E,EAAOzhF,KAAKqT,IAAIxR,EAAEf,EAAG8X,EAAE9X,GACvBy4H,EAAOv5H,KAAK8V,IAAIjU,EAAEf,EAAG8X,EAAE9X,GACvBgjE,EAAU0d,GAAQs3C,EAAM/2H,GAAK+2H,EAAM/2H,EAAIu3H,EAGvCmM,EADAhkD,IAAS83C,EACIT,EAAMh4H,GAAK2gF,GAAQ3d,EAEnBA,IAAcy1D,EAAO93C,KAAU5/E,EAAEE,EAAI6W,EAAE7W,IAAMF,EAAEf,EAAI8X,EAAE9X,GAAK,EAAIg4H,EAAM/2H,EAAIy/E,EAAO83C,EAAOR,EAAM/2H,IAAOu3H,EAAO93C,GAAQC,EAAOq3C,EAAMh4H,GAAM,CAE1J,CAEA,OAAO2kI,EAAa,EAAI,CAC5B,CAEA,SAASC,GAAc3mI,GACnB,IAAIssD,EAAY,IAAMtsD,EACtB,OAAO,SAASsG,GACZ,OAAIouH,EAAQpuH,IACR1I,KAAKy2H,eAAe/nE,EAAWotE,EAAM10E,OAAO1+C,IAC5C1I,KAAKs2H,iBACEt2H,MAGJA,KAAK0uD,EAChB,CACJ,CAQA,IAAIs6E,GAAa,SAAUtN,EAAO/mH,GAC9B,IAAImC,EAAU,SAAU4kH,GACpB,SAAS5kH,IACL4kH,EAAMtzH,MAAMpI,KAAMsH,UACtB,CAMA,OANCqgH,EAAa7wG,EAAQ4kH,GACtB5kH,EAAOzO,UAAY5H,OAAO2mD,OAAQs0E,GAASA,EAAMrzH,WACjDyO,EAAOzO,UAAUC,YAAcwO,EAC/BA,EAAO/O,GAAK+O,EAAOzO,UACnByO,EAAO/O,GAAGI,KAAO2O,EAAO/O,GAAGO,YAEpBwO,CACX,CAVa,CAUX4kH,GAGF,OApBJ,SAA8B3zH,EAAI4M,GAC9B,IAAK,IAAIpN,EAAI,EAAGA,EAAIoN,EAAMnN,OAAQD,IAC9BQ,EAAG4M,EAAMpN,IAAMwhI,GAAcp0H,EAAMpN,GAE3C,CAcI0hI,CAAqBnyH,EAAOzO,UAAWsM,GAEhCmC,CACX,EAIIoyH,GAAW,SAAUnN,GACrB,SAASmN,EAAQ/2C,EAAQg3C,EAAWC,GAChCrN,EAAWxxH,KAAKvK,MAEhBA,KAAKmyF,OAAOA,GAAU,IAAI2pC,GAC1B97H,KAAKmpI,UAAUA,GACfnpI,KAAKopI,WAAWA,EACpB,CAyIA,OAvIAzhB,EAAauhB,EAASnN,GACtBmN,EAAQ7gI,UAAY5H,OAAO2mD,OAAQ20E,GAAcA,EAAW1zH,WAC5D6gI,EAAQ7gI,UAAUC,YAAc4gI,EAChCA,EAAQnhI,GAAKmhI,EAAQ7gI,UACrB6gI,EAAQnhI,GAAGI,KAAO+gI,EAAQnhI,GAAGO,YAE7B4gI,EAAQ7gI,UAAUghI,OAAS,SAAiBC,EAAWvP,GACnD,IAAIwP,EAAgBvpI,KAAKmyF,SAASkqC,cAActC,GAC5CyP,EAAkBF,EAAUn3C,SAASkqC,cAActC,GAYvD,OATI/5H,KAAKopI,cAAgBE,EAAUH,YACxBnpI,KAAKypI,kBACRF,EAAevpI,KAAKopI,aAAa/M,cAActC,GAC/CuP,EAAUH,YAAY9M,cAActC,GAASyP,GAG1CxpI,KAAK0pI,iBAAiBH,EAAeC,EAIpD,EAEAN,EAAQ7gI,UAAUqhI,iBAAmB,SAA2B5F,EAAIN,GAChE,OAAOvG,GAAKe,WAAW8F,EAAIN,EAC/B,EAEA0F,EAAQ7gI,UAAUohI,kBAAoB,SAA4B3F,EAAIR,EAAKC,EAAKC,GAC5E,IAAIJ,EAAS,CAAEU,EAAIR,EAAKC,EAAKC,GACzBmG,EAAY3pI,KAAK4pI,kBAAkBxG,EAAQ,KAC3CyG,EAAY7pI,KAAK4pI,kBAAkBxG,EAAQ,KAC3C0G,EAAUC,GAAY,CAAEJ,EAAUjzH,IAAKizH,EAAUxwH,IAAK2qH,EAAG1+H,EAAGo+H,EAAGp+H,IAC/D4kI,EAAUD,GAAY,CAAEF,EAAUnzH,IAAKmzH,EAAU1wH,IAAK2qH,EAAG3/H,EAAGq/H,EAAGr/H,IAEnE,OAAO84H,GAAKe,WAAW,IAAIlC,EAAMgO,EAAQpzH,IAAKszH,EAAQtzH,KAAM,IAAIolH,EAAMgO,EAAQ3wH,IAAK6wH,EAAQ7wH,KAC/F,EAEA+vH,EAAQ7gI,UAAUuhI,kBAAoB,SAA4BxG,EAAQr9G,GACtE,IAAIkkH,EAAWjqI,KAAKkqI,eAChB9G,EAAO,GAAGr9G,GAAQq9G,EAAO,GAAGr9G,GAC5Bq9G,EAAO,GAAGr9G,GAAQq9G,EAAO,GAAGr9G,IAGhC,MAAO,CACHrP,IAAKywH,GAAiB8C,EAASvzH,IAAKqP,EAAOq9G,GAC3CjqH,IAAKguH,GAAiB8C,EAAS9wH,IAAK4M,EAAOq9G,GAEnD,EAEA8F,EAAQ7gI,UAAU6hI,eAAiB,SAAyBjsD,EAAIE,EAAIgsD,EAAIC,GACpE,IAAIllI,EAAI+4E,EAAK,EAAIE,EAAK,EAAIgsD,EAAKC,EAC3BnuH,GAAM,GAAKgiE,EAAK,EAAIE,EAAKgsD,GACzBzlI,EAAIu5E,EAAKE,EACTM,EAAOp7E,KAAKo7E,KAAKxiE,EAAIA,EAAI,EAAI/W,EAAIR,GACjC0iI,EAAK,EACLiD,EAAK,EAEC,IAANnlI,EACU,IAAN+W,IACAmrH,EAAKiD,GAAM3lI,EAAIuX,GAEXnT,MAAM21E,KACd2oD,IAAQnrH,EAAIwiE,IAAS,EAAIv5E,GACzBmlI,IAAQpuH,EAAIwiE,IAAS,EAAIv5E,IAG7B,IAAIwR,EAAMrT,KAAK8V,IAAI9V,KAAKqT,IAAI0wH,EAAIiD,GAAK,IACjC3zH,EAAM,GAAKA,EAAM,KACjBA,EAAM,GAGV,IAAIyC,EAAM9V,KAAKqT,IAAIrT,KAAK8V,IAAIiuH,EAAIiD,GAAK,GAKrC,OAJIlxH,EAAM,GAAKA,EAAM,KACjBA,EAAM,GAGH,CACHzC,IAAKA,EACLyC,IAAKA,EAEb,EAEA+vH,EAAQ7gI,UAAUiiI,iBAAmB,SAA2BC,EAASpO,GACrE,IAAIqO,EAMJ,OAJIA,EADAxqI,KAAKopI,cAAgBmB,EAAQpB,YAtKzC,SAAiC/F,EAAQjH,EAAOwB,GAK5C,IAJA,IAEI8M,EAFA9B,EAAatB,GAAkBjE,EAAQ,KACvCwF,EAAQV,GAAmBS,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAAKxM,EAAM/2H,GAE9FkW,EAAQ,EACH/T,EAAI,EAAGA,EAAIqhI,EAAMphI,OAAQD,KAEdw6H,GADhB0I,EAAkBtD,GAAiByB,EAAMrhI,GAAI,IAAK67H,GACTjH,EAAMh4H,IAAMsmI,EAAkBtO,EAAMh4H,MACxC,IAAbykI,EAAMrhI,IAAyB,IAAbqhI,EAAMrhI,KAAao2H,EAAKH,cAAcp4H,EAAI+2H,EAAM/2H,GAAO,EAAIwjI,EAAMrhI,IAAMqhI,EAAMrhI,GAAK,IACxH+T,IAIR,OAAOA,CACX,CAyJiCovH,CAAwB,CAAE1qI,KAAKmyF,SAAUnyF,KAAKopI,aAAcmB,EAAQpB,YAAaoB,EAAQp4C,UAAYgqC,EAAOn8H,KAAKqpI,OAAOkB,IAExH1B,GAAuB7oI,KAAKmyF,SAAUo4C,EAAQp4C,SAAUgqC,GAE1EqO,CACX,EAEAtB,EAAQ7gI,UAAUsiI,aAAe,SAAuBJ,EAASpO,EAAOpwH,EAAO6+H,GAE3E,GADW5qI,KAAKqpI,OAAOkB,GAAStM,OAAOlyH,EAAOA,GACrCoyH,cAAchC,GAAQ,CAC3B,IAAI2H,EAAK9jI,KAAKmyF,SACVqxC,EAAKxjI,KAAKopI,aACV7E,EAAKgG,EAAQpB,YACb0B,EAAKN,EAAQp4C,SAEjB,GAAmB,UAAfy4C,GAA0B9G,EAAGxH,WAAWH,IAAUpwH,EAClD,OAAQk7H,GAAgBnD,EAAIN,EAAIrH,GAC7B,GAAmB,QAAfyO,GAAwBC,EAAGvO,WAAWH,IAAUpwH,EACvD,OAAQk7H,GAAgB4D,EAAItG,EAAIpI,GAIpC,IAAIiH,EAAS,CAAEU,EAAIN,EAAIe,EAAIsG,GAC3B,GAAIpC,GAAgBrF,EAAQjH,EAAO,IAAK,IAAKpwH,IAAU08H,GAAgBrF,EAAQjH,EAAO,IAAK,IAAKpwH,GAC5F,OAAO,EAEX,IAAIguC,EAAWglF,KAAc5tF,OAAO,GAAIgrF,GACpC2O,EAAgB,CAAEhH,EAAGzH,cAActiF,GAAWypF,EAAGnH,cAActiF,GAAWwqF,EAAGlI,cAActiF,GAAW8wF,EAAGxO,cAActiF,IAC3H,OAAO0uF,GAAgBqC,EAAe3O,EAAO,IAAK,IAAKpwH,IAAU08H,GAAgBqC,EAAe3O,EAAO,IAAK,IAAKpwH,EACrH,CACJ,EAEAm9H,EAAQ7gI,UAAU0iI,YAAc,SAAsBR,EAASpO,EAAOpwH,GAClE,IAAI+3H,EAAK9jI,KAAKmyF,SACVqxC,EAAK+G,EAAQp4C,SACbioC,EAAQ9C,EAAIj0H,KAAKwwC,MAAM2vF,EAAGr/H,EAAI2/H,EAAG3/H,EAAGq/H,EAAGp+H,EAAI0+H,EAAG1+H,IAElD,OADW,IAAI63H,GAAK,CAAE6G,EAAG1+H,EAAG0+H,EAAG3/H,EAAI4H,EAAQ,GAAK,CAAE+3H,EAAGxH,WAAWkH,GAAKz3H,IACzDoyH,cAAchC,EAAME,cAAc0C,KAAc5tF,QAAQipF,EAAO0J,IAC/E,EAEAoF,EAAQ7gI,UAAU2iI,YAAc,SAAsBT,EAASpO,EAAOpwH,EAAO6+H,GAOzE,OALI5qI,KAAKopI,cAAgBmB,EAAQpB,YAClBnpI,KAAK2qI,aAAaJ,EAASpO,EAAOpwH,EAAQ,EAAG6+H,GAE7C5qI,KAAK+qI,YAAYR,EAASpO,EAAOpwH,EAGpD,EAEOm9H,CACX,CAjJc,CAiJZF,GAAWnT,EAnJA,CAAE,SAAU,YAAa,gBAqJtC,SAASkU,GAAYn/F,GAKjB,IAJA,IAAIpjC,EAASojC,EAAIpjC,OACbkP,EAAMygH,EACNh+G,EAAMk+G,EAED9vH,EAAI,EAAGA,EAAIC,EAAQD,IACxB4R,EAAM9V,KAAK8V,IAAIA,EAAKyxB,EAAIrjC,IACxBmP,EAAMrT,KAAKqT,IAAIA,EAAKk0B,EAAIrjC,IAG5B,MAAO,CACHmP,IAAKA,EACLyC,IAAKA,EAEb,CAEA,IAAIwoH,GAAW,CACdxB,OAAQD,GACRkC,IAAKD,GACLlF,KAAMA,GACNnB,MAAOA,EACPoN,QAASA,GACTrP,OAAQA,EACRmD,KAAMA,EACNnB,SAAUA,EACV8C,eAAgBA,GAChBhrF,UAAWorF,IAGRkM,GAAS,KACTC,GAA6B,IAC7B7lI,GAAI,IACJkQ,GAAI,IAmGR,SAAS41H,GAAiBvhI,EAAKw5H,GAC3B,KAAOA,EAAOx5H,EAAM,KAAOw5H,EAAOx5H,GAAKunD,OAAOiyE,EAAOx5H,EAAM,KAAOw5H,EAAOx5H,EAAM,GAAGunD,OAAOiyE,EAAOx5H,EAAM,MAClGw5H,EAAO54H,OAAOZ,EAAM,EAAG,EAE/B,CA8BA,SAASwhI,GAAatH,EAAIN,GACtB,IAAIt+H,GAAKs+H,EAAGr/H,EAAI2/H,EAAG3/H,IAAMq/H,EAAGp+H,EAAI0+H,EAAG1+H,GAGnC,MAAO,CAFC0+H,EAAG3/H,EAAIe,EAAI4+H,EAAG1+H,EAEVF,EAChB,CAEA,SAASmmI,GAAiB/G,EAAIR,EAAIN,GAC9B,IAII8H,EAJAC,EAASlmI,GACTmmI,EAASj2H,GACTk2H,GAAW,EACXC,GAAoB,EAGxB,GArBJ,SAAgBpH,EAAIR,EAAIN,GACpB,IACIplD,EAAKutD,GADAP,GAAa9G,EAAIR,GACKN,EAAGp+H,GAElC,OAAQk/H,EAAGl/H,IAAM0+H,EAAG1+H,GAAK0+H,EAAG1+H,IAAMo+H,EAAGp+H,GAAMkR,EAAM8nE,EAAI,KAAO9nE,EAAMktH,EAAGr/H,EAAG,EAC5E,CAgBQynI,CAAOtH,EAAIR,EAAIN,GACf8H,EAAUO,GAAWvH,EAAIR,EAAIz+H,GAAGkQ,QAC7B,CACH,IAiBYwB,EAjBR+0H,EAAY,CACZ1mI,EAAG2mI,GAAmBzH,EAAIR,EAAIN,EAAIn+H,IAClClB,EAAG4nI,GAAmBzH,EAAIR,EAAIN,EAAIjuH,KAGtC,GAAIu2H,EAAU1mI,GAAK0mI,EAAU3nI,EACzBmnI,EAAUO,GAAWvH,EAAId,EAAIn+H,GAAGkQ,IAChCk2H,GAAW,OAOX,GA3DZ,SAAoBnH,EAAIR,EAAIN,GACxB,IAAIwI,GAAa,EAEjB,GAAI1H,EAAGl/H,IAAM0+H,EAAG1+H,EACZ4mI,GAAa,OACV,GAAIlI,EAAG1+H,IAAMo+H,EAAGp+H,GACd0+H,EAAG3/H,EAAIq/H,EAAGr/H,GAAKmgI,EAAGngI,GAAK2/H,EAAG3/H,GAAOq/H,EAAGr/H,EAAI2/H,EAAG3/H,GAAK2/H,EAAG3/H,GAAKmgI,EAAGngI,KAC5D6nI,GAAa,OAEd,CACH,IACI5tD,EAAKutD,GADAP,GAAa9G,EAAGR,GACMN,EAAGp+H,GAC5Bk/H,EAAGngI,GAAK2/H,EAAG3/H,GAAKq/H,EAAGr/H,GAAKi6E,GACxB0lD,EAAG3/H,GAAKmgI,EAAGngI,GAAKq/H,EAAGr/H,GAAKi6E,IAC1B4tD,GAAa,EAErB,CAEA,OAAOA,CACX,CAmCgBA,CAAW1H,EAAIR,EAAIN,KACnB+H,EAASh2H,GACTi2H,EAASnmI,IAGTymI,EAAUP,GACVD,EAAU,OAKNv0H,EAFCysH,EAAGgI,GAAUlH,EAAGkH,IAAWlH,EAAGkH,IAAW1H,EAAG0H,IAC5ClH,EAAGkH,GAAUhI,EAAGgI,IAAW1H,EAAG0H,IAAWlH,EAAGkH,GACtCS,IAAYzI,EAAGgI,GAAUlH,EAAGkH,KAAY1H,EAAGyH,GAAUjH,EAAGiH,MAEvDU,IAAYzI,EAAG+H,GAAUjH,EAAGiH,KAAYzH,EAAG0H,GAAUlH,EAAGkH,KAGpEF,EAAUJ,GAA6Bn0H,EACvC20H,GAAoB,CAGhC,CAEA,IAAIQ,EAAWC,GAAmBb,EAAShH,EAAIR,EAAIyH,EAAQC,GAE3D,GAAIE,EAAmB,CACnB,IAAIU,EAAYb,EAChBA,EAASC,EACTA,EAASY,CACb,CAEA,IAAIC,EAAUC,GAAkBhB,EAASxH,EAAIN,EAAI+H,EAAQC,GAOzD,OALIC,IACAc,GAAqBjI,EAAIR,EAAIoI,EAAUZ,GACvCiB,GAAqBzI,EAAIN,EAAI6I,EAASf,IAGnC,CAAEY,EAAUG,EACvB,CAEA,SAASE,GAAqBzI,EAAIN,EAAIgJ,EAAIlB,GAClCxH,EAAG3/H,EAAIq/H,EAAGr/H,EACNq/H,EAAGr/H,EAAIqoI,EAAGroI,GACVqoI,EAAGpnI,EAAI0+H,EAAG1+H,GAAKo+H,EAAGr/H,EAAI2/H,EAAG3/H,GAAKmnI,EAC9BkB,EAAGroI,EAAIq/H,EAAGr/H,GACHqoI,EAAGroI,EAAI2/H,EAAG3/H,IACjBqoI,EAAGpnI,EAAIo+H,EAAGp+H,GAAKo+H,EAAGr/H,EAAI2/H,EAAG3/H,GAAKmnI,EAC9BkB,EAAGroI,EAAI2/H,EAAG3/H,GAGVqoI,EAAGroI,EAAIq/H,EAAGr/H,GACVqoI,EAAGpnI,EAAI0+H,EAAG1+H,GAAK0+H,EAAG3/H,EAAIq/H,EAAGr/H,GAAKmnI,EAC9BkB,EAAGroI,EAAIq/H,EAAGr/H,GACH2/H,EAAG3/H,EAAIqoI,EAAGroI,IACjBqoI,EAAGpnI,EAAIo+H,EAAGp+H,GAAK0+H,EAAG3/H,EAAIq/H,EAAGr/H,GAAKmnI,EAC9BkB,EAAGroI,EAAI2/H,EAAG3/H,EAGtB,CAEA,SAAS0nI,GAAWvH,EAAIR,EAAIyH,EAAQC,GAChC,IAAIpmI,EAAI0+H,EAAGyH,GAAUjH,EAAGiH,GACpBpnI,EAAI2/H,EAAG0H,GAAUlH,EAAGkH,GASxB,OANU,IAANpmI,EACU,EAEAjB,EAAIiB,CAItB,CAEA,SAAS2mI,GAAmBzH,EAAIR,EAAIN,EAAIz9G,GACpC,OAAQy9G,EAAGz9G,GAAS+9G,EAAG/9G,IAAU+9G,EAAG/9G,GAASu+G,EAAGv+G,IACnCy9G,EAAGz9G,GAAS+9G,EAAG/9G,IAAU+9G,EAAG/9G,GAASu+G,EAAGv+G,EACzD,CAEA,SAASumH,GAAkBhB,EAAShH,EAAIC,EAAIgH,EAAQC,GAChD,IAAIpE,EAAK9C,EAAGiH,GAER/sD,GADK+lD,EAAGgH,GACSnE,GAAM6D,GAE3B,OAAO9O,GAAMiL,EAAK5oD,EAAU8lD,EAAGkH,GAAUhtD,EAAW8sD,EAASC,EAAQC,EACzE,CAEA,SAASW,GAAmBb,EAAShH,EAAIC,EAAIgH,EAAQC,GACjD,IAAIpE,EAAK9C,EAAGiH,GACRlB,EAAK9F,EAAGgH,GACR/sD,GAAY6rD,EAAKjD,GAAM6D,GAE3B,OAAO9O,GAAMkO,EAAK7rD,EAAU+lD,EAAGiH,GAAUhtD,EAAW8sD,EAASC,EAAQC,EACzE,CAEA,SAASrP,GAAMsQ,EAAQC,EAAQnB,EAAQC,GACnC,IAAItE,EAAe,IAAIpL,EAIvB,OAHAoL,EAAaqE,GAAUkB,EACvBvF,EAAasE,GAAUkB,EAEhBxF,CACX,CAEA,SAASyE,GAAkB5jI,EAAI3C,GAI3B,IAHA,IAAIoC,EAASO,EAAGP,OACZsP,EAAS,EAEJvP,EAAI,EAAGA,EAAIC,EAAQD,IACxBuP,GAAUzT,KAAKwmC,IAAIzkC,EAAEmC,GAAKQ,EAAGR,GAEjC,OAAOuP,CACX,CAEA,SAASm1H,GAAWvjI,GAChB,OAAOA,GAAS,GAAK,EAAI,CAC7B,CAEA,IAAIikI,GAAW,CACXna,EAAG,SAASjjF,EAAMpoC,GAId,IAHA,IAAIkvD,EAAalvD,EAAQkvD,WACrB/oD,EAAWnG,EAAQmG,SAEd/F,EAAI,EAAGA,EAAI8uD,EAAW7uD,OAAQD,GAAK,EAAG,CAC3C,IAAI40H,EAAQ,IAAIL,EAAMzlE,EAAW9uD,GAAI8uD,EAAW9uD,EAAI,IAEhDJ,EAAQylI,YACRzQ,EAAMD,cAAc5uH,GAGxBiiC,EAAKs9F,OAAO1Q,EAAM/2H,EAAG+2H,EAAMh4H,GAE3BmJ,EAASlI,EAAI+2H,EAAM/2H,EACnBkI,EAASnJ,EAAIg4H,EAAMh4H,CACvB,CACJ,EAEAO,EAAG,SAAS6qC,EAAMpoC,GAId,IAHA,IAAIkvD,EAAalvD,EAAQkvD,WACrB/oD,EAAWnG,EAAQmG,SAEd/F,EAAI,EAAGA,EAAI8uD,EAAW7uD,OAAQD,GAAK,EAAG,CAC3C,IAAI6hI,EAAa,IAAItN,EAAMzlE,EAAW9uD,GAAI8uD,EAAW9uD,EAAI,IACrD4hI,EAAY,IAAIrN,EAAMzlE,EAAW9uD,EAAI,GAAI8uD,EAAW9uD,EAAI,IACxD40H,EAAQ,IAAIL,EAAMzlE,EAAW9uD,EAAI,GAAI8uD,EAAW9uD,EAAI,IACpDJ,EAAQylI,aACRzD,EAAUjN,cAAc5uH,GACxB87H,EAAWlN,cAAc5uH,GACzB6uH,EAAMD,cAAc5uH,IAGxBiiC,EAAKu9F,QAAQ1D,EAAYD,EAAWhN,GAEpC7uH,EAASlI,EAAI+2H,EAAM/2H,EACnBkI,EAASnJ,EAAIg4H,EAAMh4H,CACvB,CACJ,EAEA6N,EAAG,SAASu9B,EAAMpoC,GACd,IAAIuB,EAAQvB,EAAQylI,WAAa,EAAIzlI,EAAQmG,SAASlI,EAEtD2nI,GAAiB5lI,EAAQkvD,YAAY,EAAM3tD,GAC3C1I,KAAKwyH,EAAEjjF,EAAMpoC,EACjB,EAEAvC,EAAG,SAAS2qC,EAAMpoC,GACd,IAAIuB,EAAQvB,EAAQylI,WAAa,EAAIzlI,EAAQmG,SAASnJ,EAEtD4oI,GAAiB5lI,EAAQkvD,YAAY,EAAO3tD,GAC5C1I,KAAKwyH,EAAEjjF,EAAMpoC,EACjB,EAEAjC,EAAG,SAASqqC,EAAMpoC,GAId,IAHA,IAAIkvD,EAAalvD,EAAQkvD,WACrB/oD,EAAWnG,EAAQmG,SAEd/F,EAAI,EAAGA,EAAI8uD,EAAW7uD,OAAQD,GAAK,EAAG,CAC3C,IAAI86H,EAAUhsE,EAAW9uD,GACrB+6H,EAAUjsE,EAAW9uD,EAAI,GACzBwyC,EAAWsc,EAAW9uD,EAAI,GAC1B09H,EAAW5uE,EAAW9uD,EAAI,GAC1B29H,EAAQ7uE,EAAW9uD,EAAI,GACvBk8H,EAAW,IAAI3H,EAAMzlE,EAAW9uD,EAAI,GAAI8uD,EAAW9uD,EAAI,IAEvDJ,EAAQylI,YACRnJ,EAASvH,cAAc5uH,GAEvBA,EAASlI,IAAMq+H,EAASr+H,GAAKkI,EAASnJ,IAAMs/H,EAASt/H,IACrDorC,EAAKy9F,MAAMvJ,EAAUpB,EAASC,EAAS2C,EAAUC,EAAOnrF,GAExDzsC,EAASlI,EAAIq+H,EAASr+H,EACtBkI,EAASnJ,EAAIs/H,EAASt/H,EAE9B,CACJ,EAEAc,EAAG,SAASsqC,EAAMpoC,GACd,IAGI8lI,EAHA52E,EAAalvD,EAAQkvD,WACrB/oD,EAAWnG,EAAQmG,SACnB4/H,EAAkB/lI,EAAQ+lI,gBAGN,MAApBA,GAA+C,MAApBA,IAC3BD,EAAgB3qG,EAAKA,EAAKiN,EAAKue,OAAOq/E,UAAUhE,aAGpD,IAAK,IAAI5hI,EAAI,EAAGA,EAAI8uD,EAAW7uD,OAAQD,GAAK,EAAG,CAC3C,IAAI4hI,EAAY,IAAIrN,EAAMzlE,EAAW9uD,GAAI8uD,EAAW9uD,EAAI,IACpDk8H,EAAW,IAAI3H,EAAMzlE,EAAW9uD,EAAI,GAAI8uD,EAAW9uD,EAAI,IACvD6hI,OAAa,EAEbjiI,EAAQylI,aACRzD,EAAUjN,cAAc5uH,GACxBm2H,EAASvH,cAAc5uH,IAIvB87H,EADA6D,EACaG,GAAgBH,EAAe3/H,GAE/BA,EAASlG,QAG1B6lI,EAAgB9D,EAEhB55F,EAAKu9F,QAAQ1D,EAAYD,EAAW1F,GAEpCn2H,EAASlI,EAAIq+H,EAASr+H,EACtBkI,EAASnJ,EAAIs/H,EAASt/H,CAC1B,CACJ,EAEAC,EAAG,SAASmrC,EAAMpoC,GAId,IAHA,IAAIkvD,EAAalvD,EAAQkvD,WACrB/oD,EAAWnG,EAAQmG,SAEd/F,EAAI,EAAGA,EAAI8uD,EAAW7uD,OAAQD,GAAK,EAAG,CAC3C,IAAI2/H,EAAe,IAAIpL,EAAMzlE,EAAW9uD,GAAI8uD,EAAW9uD,EAAI,IACvDk8H,EAAW,IAAI3H,EAAMzlE,EAAW9uD,EAAI,GAAI8uD,EAAW9uD,EAAI,IAEvDJ,EAAQylI,aACR1F,EAAahL,cAAc5uH,GAC3Bm2H,EAASvH,cAAc5uH,IAG3B,IAAI+/H,EAAqBC,GAA8BhgI,EAAU45H,EAAczD,GAE/El0F,EAAKu9F,QAAQO,EAAmBjE,WAAYiE,EAAmBlE,UAAW1F,GAE1En2H,EAASlI,EAAIq+H,EAASr+H,EACtBkI,EAASnJ,EAAIs/H,EAASt/H,CAC1B,CACJ,EAEAgB,EAAG,SAASoqC,EAAMpoC,GACd,IAGI+/H,EAHA7wE,EAAalvD,EAAQkvD,WACrB/oD,EAAWnG,EAAQmG,SACnB4/H,EAAkB/lI,EAAQ+lI,gBAGN,MAApBA,GAA+C,MAApBA,IAE3BhG,EADkB5kG,EAAKA,EAAKiN,EAAKue,OAAOq/E,UACbhE,YAAY/hI,QAClC80H,cAAc5uH,EAAS8uH,WAAW,EAAI,IACtCrsF,MAAM,MAGf,IAAK,IAAIxoC,EAAI,EAAGA,EAAI8uD,EAAW7uD,OAAQD,GAAK,EAAG,CAC3C,IAAIk8H,EAAW,IAAI3H,EAAMzlE,EAAW9uD,GAAI8uD,EAAW9uD,EAAI,IACnDJ,EAAQylI,YACRnJ,EAASvH,cAAc5uH,GAIvB45H,EADAA,EACekG,GAAgBlG,EAAc55H,GAE9BA,EAASlG,QAG5B,IAAIimI,EAAqBC,GAA8BhgI,EAAU45H,EAAczD,GAE/El0F,EAAKu9F,QAAQO,EAAmBjE,WAAYiE,EAAmBlE,UAAW1F,GAE1En2H,EAASlI,EAAIq+H,EAASr+H,EACtBkI,EAASnJ,EAAIs/H,EAASt/H,CAC1B,CACJ,GAGJ,SAAS4oI,GAAiB12E,EAAYk3E,EAAY7kI,GAG9C,IAFA,IAAI8kI,EAAiBD,EAAa,EAAI,EAE7BhmI,EAAI,EAAGA,EAAI8uD,EAAW7uD,OAAQD,GAAK,EACxC8uD,EAAW7rD,OAAOjD,EAAIimI,EAAgB,EAAG9kI,EAEjD,CAEA,SAAS0kI,GAAgBjR,EAAO59C,GAC5B,GAAI49C,GAAS59C,EACT,OAAOA,EAAO69C,UAAU,GAAGhsF,WAAW+rF,EAAM/2H,GAAI+2H,EAAMh4H,EAE9D,CAEA,IAAIspI,GAAQ,EAAI,EAEhB,SAASH,GAA8BhgI,EAAU45H,EAAczD,GAC3D,IAAIiK,EAAcxG,EAAa9/H,QAAQ2oC,MAAM,EAAI,GACjD,MAAO,CACHq5F,WAAYsE,EAAYtmI,QAAQ80H,cAAc5uH,EAAS8uH,UAAUqR,KACjEtE,UAAWuE,EAAYxR,cAAcuH,EAASrH,UAAUqR,KAEhE,CAEA,IAAIE,GAAgB,kCAChBC,GAAc,oDAYlB,SAASC,GAAUC,EAAc3+H,GAC7B,IACI+9H,EADA5/H,EAAW,IAAIwuH,EA6CnB,OA1CA3sH,EAAI1M,QAAQkrI,IAAe,SAAUj9H,EAAO7E,EAAS44B,EAAQspG,GACzD,IAAIjoF,EAAUj6C,EAAQgN,cAClB+zH,EAAa9mF,IAAYj6C,EACzBwqD,EAfZ,SAAyBlnD,GACrB,IAAIknD,EAAa,GAIjB,OAHAlnD,EAAI1M,QAAQmrI,IAAa,SAASl9H,EAAOjF,GACrC4qD,EAAW10D,KAAKoH,WAAW0C,GAC/B,IACO4qD,CACX,CASyB23E,CAAgBvpG,EAAOd,QAmBxC,GArCG,MAoBCmiB,IACI8mF,GACAt/H,EAASlI,GAAKixD,EAAW,GACzB/oD,EAASnJ,GAAKkyD,EAAW,KAEzB/oD,EAASlI,EAAIixD,EAAW,GACxB/oD,EAASnJ,EAAIkyD,EAAW,IAG5By3E,EAAatxF,OAAOlvC,EAASlI,EAAGkI,EAASnJ,GAErCkyD,EAAW7uD,OAAS,IACpBs+C,EAAU,IACVuQ,EAAW7rD,OAAO,EAAG,KAIzBmiI,GAAS7mF,GACT6mF,GAAS7mF,GACLgoF,EAAc,CACVz3E,WAAYA,EACZ/oD,SAAUA,EACVs/H,WAAYA,EACZM,gBAAiBA,IAIrBa,GA9CJ,MA8CiBA,EAAUl1H,eACvBi1H,EAAapoF,aAEd,GAlDJ,MAkDQI,EACP,MAAM,IAAI90C,MAAM,sDAAwD80C,GAG5EonF,EAAkBpnF,CACtB,IAEOgoF,CACX,CAEA,SAASG,GAAoBt1G,EAAUu1G,EAAgBz6F,GAGnD,IAFA,IAAI06F,EAEK5mI,EAAI,EAAGA,EAAIoxB,EAASnxB,OAAQD,IAAK,CACtC,IAAIsE,EAAU8sB,EAASpxB,GACvB,GAAIsE,EAAQmB,UAAW,CACnB,IAAIohI,EAAqBF,EAAiBriI,EAAQ8xH,KAAKlqF,GAAkB5nC,EAAQ+1H,UAC7EwM,IAEID,EADAA,EACclR,GAAKsB,MAAM4P,EAAaC,GAExBA,EAG1B,CACJ,CAEA,OAAOD,CACX,CAEA,SAASE,GAA2B11G,EAAU8a,GAG1C,IAFA,IAAI06F,EAEK5mI,EAAI,EAAGA,EAAIoxB,EAASnxB,OAAQD,IAAK,CACtC,IAAIsE,EAAU8sB,EAASpxB,GACvB,GAAIsE,EAAQmB,UAAW,CACnB,IAAIohI,EAAqBviI,EAAQyzH,YAAY7rF,GACzC26F,IAEID,EADAA,EACclR,GAAKsB,MAAM4P,EAAaC,GAExBA,EAG1B,CACJ,CAEA,OAAOD,CACX,CAEA,IAAIG,GAAQ,IASRC,GAAQ,SAAUxS,GAClB,SAASwS,EAAKpnI,GACV40H,EAAWxxH,KAAKvK,KAAMmH,GACtBnH,KAAKmtI,SAAW,IAAIpG,GACpB/mI,KAAKmtI,SAASlX,YAAYj2H,MAErB82H,EAAQ92H,KAAKmH,QAAQy4H,UACtB5/H,KAAK4/H,OAAO,QAEP9I,EAAQ92H,KAAKmH,QAAQy4H,OAAO4O,WAC7BxuI,KAAKmH,QAAQ+oB,IAAI,kBAAmB,SAGhD,CAEAy3F,EAAa4mB,EAAMxS,GACnBwS,EAAKlmI,UAAY5H,OAAO2mD,OAAQ20E,GAAcA,EAAW1zH,WACzDkmI,EAAKlmI,UAAUC,YAAcimI,EAC7BA,EAAKxmI,GAAKwmI,EAAKlmI,UACfkmI,EAAKxmI,GAAGI,KAAOomI,EAAKxmI,GAAGO,YAEvB,IAAI22H,EAAqB,CAAEnpG,SAAU,CAAC,GAmRtC,OAjRAmpG,EAAmBnpG,SAAS7F,IAAM,WAC9B,MAAO,MACX,EAEAs+G,EAAKlmI,UAAUm0C,OAAS,SAAiBp3C,EAAGjB,GAOxC,OANAnE,KAAKu2H,UACLv2H,KAAKmtI,SAASx0G,SAAS,IACvB34B,KAAKw2H,SAELx2H,KAAK6sI,OAAOznI,EAAGjB,GAERnE,IACX,EAEAuuI,EAAKlmI,UAAUwkI,OAAS,SAAiBznI,EAAGjB,GACxC,IAAIsqI,EAAW3X,EAAQ3yH,GAAK,IAAI23H,EAAM12H,EAAGjB,GAAKiB,EAC1CmlI,EAAU,IAAIrB,GAAQuF,GAI1B,OAFAzuI,KAAKmtI,SAASxrI,KAAK4oI,GAEZvqI,IACX,EAEAuuI,EAAKlmI,UAAUykI,QAAU,SAAkB1D,EAAYD,EAAWsF,GAC9D,GAAIzuI,KAAKmtI,SAAS3lI,OAAS,EAAG,CAC1B,IAAIknI,EAAcpsG,EAAKtiC,KAAKmtI,UACxB5C,EAAU,IAAIrB,GAAQuF,EAAUtF,GACpCnpI,KAAKu2H,UACLmY,EAAYtF,WAAWA,GACvBppI,KAAKw2H,SAELx2H,KAAKmtI,SAASxrI,KAAK4oI,EACvB,CAEA,OAAOvqI,IACX,EAEAuuI,EAAKlmI,UAAUsmI,IAAM,SAAcpM,EAAYC,EAAUH,EAASC,EAASG,GACvE,GAAIziI,KAAKmtI,SAAS3lI,OAAS,EAAG,CAC1B,IACI2qF,EADc7vD,EAAKtiC,KAAKmtI,UACHh7C,SACrBr8E,EAAQ+iH,EAAI0J,GACZhkD,EAAS,IAAIu9C,EAAM3pC,EAAO/sF,EAAIi9H,EAAUh/H,KAAKg3H,IAAIvkH,GACjDq8E,EAAOhuF,EAAIm+H,EAAUj/H,KAAKi3H,IAAIxkH,IAC9B64H,EAAM,IAAIxM,GAAM5jD,EAAQ,CACxBgkD,WAAYA,EACZC,SAAUA,EACVH,QAASA,EACTC,QAASA,EACTG,cAAeA,IAGnBziI,KAAK4uI,gBAAgBD,EACzB,CAEA,OAAO3uI,IACX,EAEAuuI,EAAKlmI,UAAU2kI,MAAQ,SAAgBrhI,EAAKqD,EAAI8wH,EAAImF,EAAUC,EAAOnrF,GACjE,GAAI/5C,KAAKmtI,SAAS3lI,OAAS,EAAG,CAC1B,IACI2qF,EADc7vD,EAAKtiC,KAAKmtI,UACHh7C,SACrBw8C,EAAMxM,GAAMnE,WAAW7rC,EAAQ2pC,EAAM10E,OAAOz7C,GAAMqD,EAAI8wH,EAAImF,EAAUC,EAAOnrF,GAE/E/5C,KAAK4uI,gBAAgBD,EACzB,CACA,OAAO3uI,IACX,EAEAuuI,EAAKlmI,UAAUumI,gBAAkB,SAA0BD,GAGvD3uI,KAAKu2H,UAIL,IAFA,IAAIqM,EAAc+L,EAAI/L,cAEbr7H,EAAI,EAAGA,EAAIq7H,EAAYp7H,OAAQD,GAAK,EAN9BvH,KAOF8sI,QAAQlK,EAAYr7H,GAAIq7H,EAAYr7H,EAAI,GAAIq7H,EAAYr7H,EAAI,IAGzEvH,KAAKw2H,SACLx2H,KAAKs2H,gBACT,EAEAiY,EAAKlmI,UAAUq9C,MAAQ,WAInB,OAHA1lD,KAAKmH,QAAQ0nI,QAAS,EACtB7uI,KAAKs2H,iBAEEt2H,IACX,EAEAuuI,EAAKlmI,UAAUu5H,QAAU,WACrB,OAAO5hI,KAAKshI,OAChB,EAEAiN,EAAKlmI,UAAUoJ,SAAW,SAAmB/F,GACzC,IAzHoBojI,EAAcC,EANdx4H,EA+HhBg+E,EAAS,GAET44C,EAAWntI,KAAKmtI,SAChB3lI,EAAS2lI,EAAS3lI,OACtB,GAAIA,EAAS,EAAG,CAKZ,IAJA,IAEIwnI,EAFAz+H,EAAQ,GACR0+H,GArIY14H,EAqIQ7K,EArIY,WAE5C,IADA,IAAI03H,EAAS,GAAIryG,EAAMzpB,UAAUE,OACzBupB,KAAQqyG,EAAQryG,GAAQzpB,UAAWypB,GAE3C,OAAOqyG,EAAOvoH,KAAI,SAAUg4G,GAAK,OAAOA,EAAEphH,SAAS8E,EAAY,IAAG1L,KAAKyjI,GAC1E,GAmIoB/mI,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAI7B,GAnIQopI,EAmIW3B,EAAS5lI,EAAI,GAnIVwnI,EAmIc5B,EAAS5lI,GAnIFunI,EAAa1F,cAAgB2F,EAAW5F,YAAc,IAAM,KAoIvGzjI,IAASspI,IACTA,EAActpI,EACd6K,EAAM5O,KAAK+D,IAGF,MAATA,EACA6K,EAAM5O,KAAKstI,EAAM9B,EAAS5lI,GAAG4qF,WAE7B5hF,EAAM5O,KAAKstI,EACP9B,EAAS5lI,EAAI,GAAG6hI,aAAc+D,EAAS5lI,GAAG4hI,YAAagE,EAAS5lI,GAAG4qF,UAG/E,CAEAoC,EAAS,IAAM06C,EAAM9B,EAAS,GAAGh7C,UAAYm8C,GAAQ/9H,EAAM1F,KAAKyjI,IAC5DtuI,KAAKmH,QAAQ0nI,SACbt6C,GAAU,IAElB,CAEA,OAAOA,CACX,EAEAg6C,EAAKlmI,UAAUq3H,eAAiB,SAAyB+O,GAMrD,IALA,IAGI71F,EAAU5kC,EAHVm5H,EAAWntI,KAAKmtI,SAChB3lI,EAAS2lI,EAAS3lI,OAClBgjI,EAAqB,EAGhB5gI,EAAM,EAAGA,EAAMpC,EAAQoC,IAC5BgvC,EAAWu0F,EAASvjI,EAAM,GAC1BoK,EAAUm5H,EAASvjI,GACnB4gI,GAAsB5xF,EAAS0xF,iBAAiBt2H,EAASy6H,GAO7D,OAJIzuI,KAAKmH,QAAQ0nI,QAAW1B,EAAS,GAAGh7C,SAAShhC,OAAOg8E,EAAS3lI,EAAS,GAAG2qF,YACzEq4C,GAAsB3B,GAAuBsE,EAAS,GAAGh7C,SAAUg7C,EAAS3lI,EAAS,GAAG2qF,SAAUs8C,IAG/FjE,EAAqB,GAAM,CACtC,EAEA+D,EAAKlmI,UAAU+1H,UAAY,SAAoBqQ,EAAU1iI,GACrD,IAAIohI,EAAWntI,KAAKmtI,SAChB3lI,EAAS2lI,EAAS3lI,OAClB0nI,EAAYnjI,GAAS/L,KAAKmH,QAAQy4H,OAAO7zH,MAE7C,GAAIvE,EAAS,EAAG,CACZ,GAAI2lI,EAAS,GAAGnC,YAAYmC,EAAS,GAAIsB,EAAUS,EAAW,SAC1D,OAAO,EAGX,IAAK,IAAItlI,EAAM,EAAGA,GAAOpC,EAAS,EAAGoC,IACjC,GAAIujI,EAASvjI,EAAM,GAAGohI,YAAYmC,EAASvjI,GAAM6kI,EAAUS,GACvD,OAAO,EAIf,GAAI/B,EAAS3lI,EAAS,GAAGwjI,YAAYmC,EAAS3lI,EAAS,GAAIinI,EAAUS,EAAW,OAC5E,OAAO,CAEf,CACA,OAAO,CACX,EAEAX,EAAKlmI,UAAUi5H,MAAQ,SAAgBvH,GACnC,IAEIoU,EAFAhB,EAAWntI,KAAKmtI,SAChB3lI,EAAS2lI,EAAS3lI,OAGtB,GAAe,IAAXA,EAAc,CACd,IAAI2qF,EAASg7C,EAAS,GAAGh7C,SAASkqC,cAActC,GAChDoU,EAAc,IAAIlR,GAAK9qC,EAAQ6qC,EAAKvpH,KACxC,MAAO,GAAIjM,EAAS,EAChB,IAAK,IAAID,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAI4nI,EAAahC,EAAS5lI,EAAI,GAAG8hI,OAAO8D,EAAS5lI,GAAIwyH,GAEjDoU,EADAA,EACclR,GAAKsB,MAAM4P,EAAagB,GAExBA,CAEtB,CAGJ,OAAOhB,CACX,EAEAI,EAAKn5G,MAAQ,SAAgBjmB,EAAKhI,GAC9B,OAAOioI,GAAUh6G,MAAMjmB,EAAKhI,EAChC,EAEAonI,EAAKc,SAAW,SAAmB/iD,EAAMnlF,GACrC,IAAIooC,EAAO,IAAIg/F,EAAKpnI,GAChBkrH,EAAM/lC,EAAK4wC,aACXluH,EAAKqjH,EAAI,GACTyN,EAAKzN,EAAI,GAEb,GAAW,IAAPrjH,GAAmB,IAAP8wH,EACZvwF,EAAKiN,OAAO8vC,EAAKixC,WACZsP,OAAOvgD,EAAKmxC,YACZoP,OAAOvgD,EAAKkxC,eACZqP,OAAOvgD,EAAKoxC,cACZh4E,YACF,CACH,IAAI1M,EAASszC,EAAKtzC,OACd5zC,EAAI4zC,EAAO5zC,EACXjB,EAAI60C,EAAO70C,EACX4H,EAAQugF,EAAKvgF,QACbC,EAASsgF,EAAKtgF,SAClBgD,EAAKwpH,EAAWxpH,EAAI,EAAGjD,EAAQ,GAC/B+zH,EAAKtH,EAAWsH,EAAI,EAAG9zH,EAAS,GAEhCujC,EAAKiN,OAAOp3C,EAAI4J,EAAI7K,GACf0oI,OAAOznI,EAAI2G,EAAQiD,EAAI7K,GACvB6oI,MAAM,CAAE5nI,EAAI2G,EAAO5H,EAAI27H,GAAM9wH,EAAI8wH,GAAI,GACrC+M,OAAOznI,EAAI2G,EAAO5H,EAAI6H,EAAS8zH,GAC/BkN,MAAM,CAAE5nI,EAAI2G,EAAQiD,EAAI7K,EAAI6H,GAAUgD,EAAI8wH,GAAI,GAC9C+M,OAAOznI,EAAI4J,EAAI7K,EAAI6H,GACnBghI,MAAM,CAAE5nI,EAAGjB,EAAI6H,EAAS8zH,GAAM9wH,EAAI8wH,GAAI,GACtC+M,OAAOznI,EAAGjB,EAAI27H,GACdkN,MAAM,CAAE5nI,EAAI4J,EAAI7K,GAAK6K,EAAI8wH,GAAI,EACtC,CAEA,OAAOvwF,CACX,EAEAg/F,EAAKvQ,WAAa,SAAqBoF,EAAQj8H,GAC3C,GAAIi8H,EAAQ,CAGR,IAFA,IAAI7zF,EAAO,IAAIg/F,EAAKpnI,GAEXI,EAAI,EAAGA,EAAI67H,EAAO57H,OAAQD,IAAK,CACpC,IAAIknI,EAAW3S,EAAM10E,OAAOg8E,EAAO77H,IAC/BknI,IACU,IAANlnI,EACAgoC,EAAKiN,OAAOiyF,GAEZl/F,EAAKs9F,OAAO4B,GAGxB,CAEA,OAAOl/F,CACX,CACJ,EAEAg/F,EAAKe,gBAAkB,SAA0BlM,EAAQj8H,GACrD,GAAIi8H,EAAQ,CACR,IAAI+J,EAx1BhB,SAAuBoC,EAAUV,GAC7B,IAAIzL,EAASmM,EAAS1oI,MAAM,GACxBsmI,EAAW,GACX3lI,EAAS47H,EAAO57H,OAOpB,GALIA,EAAS,IACT2jI,GAAiB,EAAG/H,GACpB57H,EAAS47H,EAAO57H,QAGhBA,EAAS,GAAiB,IAAXA,GAAgB47H,EAAO,GAAGjyE,OAAOiyE,EAAO,IACvD,OAAO+J,EAGX,IA2BIqC,EAAqBC,EA3BrBnL,EAAKlB,EAAO,GACZU,EAAKV,EAAO,GACZI,EAAKJ,EAAO,GAIhB,IAFA+J,EAASxrI,KAAK,IAAIunI,GAAQ5E,IAEnBA,EAAGnzE,OAAOiyE,EAAO57H,EAAS,KAC7BqnI,GAAS,EACTzL,EAAOrzG,MACPvoB,IAGJ,GAAe,IAAXA,EAAc,CACd,IAAI8jI,EAAUO,GAAWvH,EAAGR,EAAIz+H,GAAGkQ,IAWnC,OATA+sB,EAAK6qG,GAAU/D,WACXkD,GAAkBhB,EAAShH,EAAIR,EAAIz+H,GAAGkQ,KAG1C43H,EAASxrI,KAAK,IAAIunI,GACdpF,EACAqI,GAAmBb,EAAShH,EAAIR,EAAIz+H,GAAGkQ,MAGpC43H,CACX,CAIA,GAAI0B,EAAQ,CAER,IAAIa,EAAgBrE,GADpB/G,EAAKlB,EAAO57H,EAAS,GAAIs8H,EAAKV,EAAO,GAAII,EAAKJ,EAAO,IAErDoM,EAAsBE,EAAc,GACpCD,EAAmBC,EAAc,EACrC,MAEIF,EAAsBlD,GADNT,GAAWvH,EAAIR,EAAIz+H,GAAEkQ,IACc+uH,EAAIR,EAAIz+H,GAAGkQ,IAIlE,IADA,IAAIo6H,EAAMH,EACD5lI,EAAM,EAAGA,GAAOpC,EAAS,EAAGoC,IAGjC,GAFAuhI,GAAiBvhI,EAAKw5H,GAElBx5H,EAAM,IADVpC,EAAS47H,EAAO57H,QACO,CAEnB,IAAIooI,EAAkBvE,GADtB/G,EAAKlB,EAAOx5H,GAAMk6H,EAAKV,EAAOx5H,EAAM,GAAI45H,EAAKJ,EAAOx5H,EAAM,IAG1D04B,EAAK6qG,GAAU/D,WAAWuG,GAC1BA,EAAMC,EAAgB,GAEtB,IAAItM,EAAMsM,EAAgB,GAC1BzC,EAASxrI,KAAK,IAAIunI,GAAQpF,EAAIR,GAClC,CAGJ,GAAIuL,EAAQ,CAER,IAAIgB,EAAkBxE,GADtB/G,EAAKlB,EAAO57H,EAAS,GAAIs8H,EAAKV,EAAO57H,EAAS,GAAIg8H,EAAKJ,EAAO,IAG9D9gG,EAAK6qG,GAAU/D,WAAWuG,GAC1BxC,EAASxrI,KAAK,IAAIunI,GACdpF,EACA+L,EAAgB,KAGpBvtG,EAAK6qG,GAAU/D,WAAWyG,EAAgB,IAC1C1C,EAASxrI,KAAK,IAAIunI,GACd1F,EACAiM,GAER,KAAO,CACH,IAAIK,EAAYjE,GAAW/H,EAAIN,EAAIn+H,GAAGkQ,IAEtC+sB,EAAK6qG,GAAU/D,WAAWuG,GAC1BxC,EAASxrI,KAAK,IAAIunI,GACd1F,EACA2I,GAAmB2D,EAAWhM,EAAIN,EAAIn+H,GAAGkQ,KAEjD,CAEA,OAAO43H,CACX,CAyvB2B4C,CAAc3M,GACzB7zF,EAAO,IAAIg/F,EAAKpnI,GAGpB,OAFAooC,EAAK49F,SAASxrI,KAAKyG,MAAMmnC,EAAK49F,SAAUA,GAEjC59F,CACX,CACJ,EAEAg/F,EAAKyB,QAAU,SAAkBrB,EAAKxnI,GAClC,IAAIooC,EAAO,IAAIg/F,EAAKpnI,GAChBo7H,EAAaoM,EAAIpM,WACjBzsH,EAAQ64H,EAAIpO,QAAQgC,GAGxB,OAFAhzF,EAAKiN,OAAO1mC,EAAM1Q,EAAG0Q,EAAM3R,GAC3BorC,EAAKo/F,IAAIpM,EAAYoM,EAAInM,SAAUmM,EAAItM,QAASsM,EAAIrM,QAASqM,EAAIlM,eAC1DlzF,CACX,EAEA9uC,OAAOs8H,iBAAkBwR,EAAKlmI,UAAW42H,GAElCsP,CACX,CAzSW,CAySTzN,GAAUI,GAAWlC,MAEnBoQ,GAAa,SAAUrT,GACvB,SAASqT,EAAUjoI,GACf40H,EAAWxxH,KAAKvK,KAAMmH,GACtBnH,KAAK8tD,MAAQ,IAAIi5E,GACjB/mI,KAAK8tD,MAAMmoE,YAAYj2H,MAElB82H,EAAQ92H,KAAKmH,QAAQy4H,SACtB5/H,KAAK4/H,OAAO,OAEpB,CAEAjY,EAAaynB,EAAWrT,GACxBqT,EAAU/mI,UAAY5H,OAAO2mD,OAAQ20E,GAAcA,EAAW1zH,WAC9D+mI,EAAU/mI,UAAUC,YAAc8mI,EAClCA,EAAUrnI,GAAKqnI,EAAU/mI,UACzB+mI,EAAUrnI,GAAGI,KAAOinI,EAAUrnI,GAAGO,YAEjC,IAAI2nI,EAAuB,CAAEn6G,SAAU,CAAC,GAkHxC,OAhHAs5G,EAAUh6G,MAAQ,SAAgBjmB,EAAKhI,GAEnC,OAAO0mI,GADQ,IAAIuB,EAAUjoI,GACFgI,EAC/B,EAEAigI,EAAU/mI,UAAUoJ,SAAW,SAAmB/F,GAC9C,IAAIoiD,EAAQ9tD,KAAK8tD,MACbymC,EAAS,GAEb,GAAIzmC,EAAMtmD,OAAS,EAAG,CAGlB,IAFA,IAAIsP,EAAS,GAEJvP,EAAI,EAAGA,EAAIumD,EAAMtmD,OAAQD,IAC9BuP,EAAOnV,KAAKmsD,EAAMvmD,GAAGkK,SAAS/F,IAGlC6oF,EAASz9E,EAAOjM,KAAKyjI,GACzB,CAEA,OAAO/5C,CACX,EAEA07C,EAAqBn6G,SAAS7F,IAAM,WAChC,MAAO,WACX,EAEAm/G,EAAU/mI,UAAUm0C,OAAS,SAAiBp3C,EAAGjB,GAC7C,IAAIorC,EAAO,IAAIg/F,GAKf,OAJAh/F,EAAKiN,OAAOp3C,EAAGjB,GAEfnE,KAAK8tD,MAAMnsD,KAAK4tC,GAETvvC,IACX,EAEAovI,EAAU/mI,UAAUwkI,OAAS,SAAiBznI,EAAGjB,GAK7C,OAJInE,KAAK8tD,MAAMtmD,OAAS,GACpB86B,EAAKtiC,KAAK8tD,OAAO++E,OAAOznI,EAAGjB,GAGxBnE,IACX,EAEAovI,EAAU/mI,UAAUykI,QAAU,SAAkB1D,EAAYD,EAAWsF,GAKnE,OAJIzuI,KAAK8tD,MAAMtmD,OAAS,GACpB86B,EAAKtiC,KAAK8tD,OAAOg/E,QAAQ1D,EAAYD,EAAWsF,GAG7CzuI,IACX,EAEAovI,EAAU/mI,UAAUsmI,IAAM,SAAcpM,EAAYC,EAAUH,EAASC,EAASG,GAK5E,OAJIziI,KAAK8tD,MAAMtmD,OAAS,GACpB86B,EAAKtiC,KAAK8tD,OAAO6gF,IAAIpM,EAAYC,EAAUH,EAASC,EAASG,GAG1DziI,IACX,EAEAovI,EAAU/mI,UAAU2kI,MAAQ,SAAgBrhI,EAAKqD,EAAI8wH,EAAImF,EAAUC,EAAOnrF,GAKtE,OAJI/5C,KAAK8tD,MAAMtmD,OAAS,GACpB86B,EAAKtiC,KAAK8tD,OAAOk/E,MAAMrhI,EAAKqD,EAAI8wH,EAAImF,EAAUC,EAAOnrF,GAGlD/5C,IACX,EAEAovI,EAAU/mI,UAAUq9C,MAAQ,WAKxB,OAJI1lD,KAAK8tD,MAAMtmD,OAAS,GACpB86B,EAAKtiC,KAAK8tD,OAAOpI,QAGd1lD,IACX,EAEAovI,EAAU/mI,UAAUi5H,MAAQ,SAAgBvH,GACxC,OAAOkU,GAAoBjuI,KAAK8tD,OAAO,EAAMisE,EACjD,EAEAqV,EAAU/mI,UAAUu5H,QAAU,WAC1B,OAAOqM,GAAoBjuI,KAAK8tD,OAAO,EAC3C,EAEAshF,EAAU/mI,UAAUq3H,eAAiB,SAAyB+O,GAG1D,IAFA,IAAI3gF,EAAQ9tD,KAAK8tD,MAERlkD,EAAM,EAAGA,EAAMkkD,EAAMtmD,OAAQoC,IAClC,GAAIkkD,EAAMlkD,GAAK81H,eAAe+O,GAC1B,OAAO,EAGf,OAAO,CACX,EAEAW,EAAU/mI,UAAU+1H,UAAY,SAAoBqQ,GAIhD,IAHA,IAAI3gF,EAAQ9tD,KAAK8tD,MACb/hD,EAAQ/L,KAAKmH,QAAQy4H,OAAO7zH,MAEvBnC,EAAM,EAAGA,EAAMkkD,EAAMtmD,OAAQoC,IAClC,GAAIkkD,EAAMlkD,GAAKw0H,UAAUqQ,EAAU1iI,GAC/B,OAAO,EAGf,OAAO,CACX,EAEAqjI,EAAU/mI,UAAUk3H,aAAe,SAAuB9rF,GACtD,OAAO46F,GAA2BruI,KAAK8tD,MAAO9tD,KAAKm/H,iBAAiB1rF,GACxE,EAEAhzC,OAAOs8H,iBAAkBqS,EAAU/mI,UAAW4nI,GAEvCb,CACX,CApIgB,CAoIdtO,GAAUI,GAAWlC,MAInBoD,GAAO,SAAUrG,GACjB,SAASqG,EAAIT,EAAUx6H,QACF,IAAbw6H,IAAuBA,EAAW,IAAIQ,SAC1B,IAAZh7H,IAAsBA,EAAU,CAAC,GAErC40H,EAAWxxH,KAAKvK,KAAMmH,GAEtBnH,KAAK2hI,SAASA,GAET7K,EAAQ92H,KAAKmH,QAAQy4H,SACtB5/H,KAAK4/H,OAZM,OAcnB,CAEAjY,EAAaya,EAAKrG,GAClBqG,EAAI/5H,UAAY5H,OAAO2mD,OAAQ20E,GAAcA,EAAW1zH,WACxD+5H,EAAI/5H,UAAUC,YAAc85H,EAC5BA,EAAIr6H,GAAKq6H,EAAI/5H,UACb+5H,EAAIr6H,GAAGI,KAAOi6H,EAAIr6H,GAAGO,YAErB,IAAI22H,EAAqB,CAAEnpG,SAAU,CAAC,GAuCtC,OArCAmpG,EAAmBnpG,SAAS7F,IAAM,WAC9B,MAAO,KACX,EAEAmyG,EAAI/5H,UAAUi5H,MAAQ,SAAgBvH,GAClC,OAAO/5H,KAAK6hI,UAAUlE,KAAK5D,EAC/B,EAEAqI,EAAI/5H,UAAUu5H,QAAU,WACpB,OAAO5hI,KAAK2hI,WAAWhE,MAC3B,EAEAyE,EAAI/5H,UAAU6nI,OAAS,WACnB,IAAI3gG,EAAO,IAAIg/F,GACX3L,EAAc5iI,KAAK2hI,WAAWiB,cAElC,GAAIA,EAAYp7H,OAAS,EAAG,CACxB+nC,EAAKiN,OAAOomF,EAAY,GAAGx9H,EAAGw9H,EAAY,GAAGz+H,GAE7C,IAAK,IAAIoD,EAAI,EAAGA,EAAIq7H,EAAYp7H,OAAQD,GAAK,EACzCgoC,EAAKu9F,QAAQlK,EAAYr7H,GAAIq7H,EAAYr7H,EAAI,GAAIq7H,EAAYr7H,EAAI,GAEzE,CAEA,OAAOgoC,CACX,EAEA6yF,EAAI/5H,UAAUq3H,eAAiB,SAAyBvD,GACpD,OAAOn8H,KAAK2hI,WAAWxD,cAAchC,EACzC,EAEAiG,EAAI/5H,UAAU+1H,UAAY,SAAoBjC,GAC1C,OAAOn8H,KAAK2hI,WAAWvD,UAAUjC,EAAOn8H,KAAKmH,QAAQy4H,OAAO7zH,MAAQ,EACxE,EAEAtL,OAAOs8H,iBAAkBqF,EAAI/5H,UAAW42H,GAEjCmD,CACX,CA5DU,CA4DRtB,GAAUI,GAAWO,GAAazC,OAKhCmR,GAAQ,SAAUpU,GAClB,SAASoU,EAAKxpF,EAASr5C,EAAUnG,QACZ,IAAbmG,IAAuBA,EAAW,IAAIwuH,QAC1B,IAAZ30H,IAAsBA,EAAU,CAAC,GAErC40H,EAAWxxH,KAAKvK,KAAMmH,GAEtBnH,KAAK2mD,QAAQA,GACb3mD,KAAKsN,SAASA,GAETtN,KAAKmH,QAAQ4wF,OACd/3F,KAAKmH,QAAQ4wF,KAdN,mBAiBN++B,EAAQ92H,KAAKmH,QAAQusB,OACtB1zB,KAAK0zB,KAjBE,OAmBf,CAEAi0F,EAAawoB,EAAMpU,GACnBoU,EAAK9nI,UAAY5H,OAAO2mD,OAAQ20E,GAAcA,EAAW1zH,WACzD8nI,EAAK9nI,UAAUC,YAAc6nI,EAC7BA,EAAKpoI,GAAKooI,EAAK9nI,UACf8nI,EAAKpoI,GAAGI,KAAOgoI,EAAKpoI,GAAGO,YAEvB,IAAI22H,EAAqB,CAAEnpG,SAAU,CAAC,GA4CtC,OA1CAmpG,EAAmBnpG,SAAS7F,IAAM,WAC9B,MAAO,MACX,EAEAkgH,EAAK9nI,UAAUs+C,QAAU,SAAkBj+C,GACvC,OAAIouH,EAAQpuH,IACR1I,KAAKmH,QAAQ+oB,IAAI,UAAWxnB,GACrB1I,MAGJA,KAAKmH,QAAQ8oB,IAAI,UAC5B,EAEAkgH,EAAK9nI,UAAUk9E,QAAU,WAKrB,OAJcowC,EAAUF,YAAYz1H,KAAK2mD,UAAW,CAChDoxC,KAAM/3F,KAAKmH,QAAQ8oB,IAAI,SAI/B,EAEAkgH,EAAK9nI,UAAUikF,KAAO,WAClB,IAAIt8E,EAAOhQ,KAAKulF,UACZ8P,EAAMr1F,KAAKsN,WAAWlG,QAC1B,OAAO,IAAI61H,GAAK5nC,EAAK,CAAErlF,EAAKjE,MAAOiE,EAAKhE,QAC5C,EAEAmkI,EAAK9nI,UAAUs1H,KAAO,SAAelqF,GACjC,IAAI2rF,EAAiBvD,EAAS77H,KAAKm/H,iBAAiB1rF,IACpD,OAAOzzC,KAAKssF,OAAOqxC,KAAKyB,EAC5B,EAEA+Q,EAAK9nI,UAAUu5H,QAAU,WACrB,OAAO5hI,KAAKssF,OAAOqxC,MACvB,EAEAwS,EAAK9nI,UAAUq3H,eAAiB,SAAyBvD,GACrD,OAAOn8H,KAAKssF,OAAO6xC,cAAchC,EACrC,EAEA17H,OAAOs8H,iBAAkBoT,EAAK9nI,UAAW42H,GAElCkR,CACX,CAtEW,CAsETrP,GAAUkI,GAAWhK,GAAW,CAAE,eAEhCoR,GAAW,SAAUrU,GACrB,SAASsU,EAAMrpI,EAAKslF,EAAMnlF,QACT,IAATmlF,IAAmBA,EAAO,IAAI2wC,SAClB,IAAZ91H,IAAsBA,EAAU,CAAC,GAErC40H,EAAWxxH,KAAKvK,KAAMmH,GAEtBnH,KAAKgH,IAAIA,GACThH,KAAKssF,KAAKA,EACd,CAEAq7B,EAAa0oB,EAAOtU,GACpBsU,EAAMhoI,UAAY5H,OAAO2mD,OAAQ20E,GAAcA,EAAW1zH,WAC1DgoI,EAAMhoI,UAAUC,YAAc+nI,EAC9BA,EAAMtoI,GAAKsoI,EAAMhoI,UACjBgoI,EAAMtoI,GAAGI,KAAOkoI,EAAMtoI,GAAGO,YAEzB,IAAI22H,EAAqB,CAAEnpG,SAAU,CAAC,GAkCtC,OAhCAmpG,EAAmBnpG,SAAS7F,IAAM,WAC9B,MAAO,OACX,EAEAogH,EAAMhoI,UAAUrB,IAAM,SAAc0B,GAChC,OAAIouH,EAAQpuH,IACR1I,KAAKmH,QAAQ+oB,IAAI,MAAOxnB,GACjB1I,MAGJA,KAAKmH,QAAQ8oB,IAAI,MAC5B,EAEAogH,EAAMhoI,UAAUs1H,KAAO,SAAelqF,GAClC,IAAI2rF,EAAiBvD,EAAS77H,KAAKm/H,iBAAiB1rF,IACpD,OAAOzzC,KAAKswI,MAAM3S,KAAKyB,EAC3B,EAEAiR,EAAMhoI,UAAUu5H,QAAU,WACtB,OAAO5hI,KAAKswI,MAAM3S,MACtB,EAEA0S,EAAMhoI,UAAUq3H,eAAiB,SAAyBvD,GACtD,OAAOn8H,KAAKswI,MAAMnS,cAAchC,EACpC,EAEAkU,EAAMhoI,UAAUo3H,SAAW,WACvB,OAAOz/H,KAAKgH,KAChB,EAEAvG,OAAOs8H,iBAAkBsT,EAAMhoI,UAAW42H,GAEnCoR,CACX,CApDc,CAoDZ5O,GAAazC,GAAW,CAAE,UAExBuR,GAAc,SAAU7U,EAAOvwD,GAAiB,OAC/C,SAAUuwD,GACP,SAASqF,IACLrF,EAAMtzH,MAAMpI,KAAMsH,UACtB,CAwBA,OAtBAqgH,EAAaoZ,EAAWrF,GACxBqF,EAAU14H,UAAY5H,OAAO2mD,OAAQs0E,GAASA,EAAMrzH,WACpD04H,EAAU14H,UAAUC,YAAcy4H,EAClCA,EAAUh5H,GAAKg5H,EAAU14H,UACzB04H,EAAUh5H,GAAGI,KAAO44H,EAAUh5H,GAAGO,YAEjCy4H,EAAU14H,UAAUmoI,SAAW,SAAmB5mH,GAG9C,IAFA,IAAI2rB,EAAWv1C,KAAKmrE,GAEX5jE,EAAI,EAAGA,EAAIguC,EAAS/tC,OAAQD,IAAK,CACtC,IAAIs8B,EAAQ0R,EAAShuC,GAEjBs8B,EAAM2sG,SACN3sG,EAAM2sG,SAAS5mH,GAEfA,EAASia,EAEjB,CAEA,OAAO7jC,IACX,EAEO+gI,CACX,CA7BuD,CA6BrDrF,EACH,EAEC+U,GAAS,SAAU1U,GACnB,SAAS0U,EAAMtpI,GACX40H,EAAWxxH,KAAKvK,KAAMmH,GACtBnH,KAAKu1C,SAAW,EACpB,CAEAoyE,EAAa8oB,EAAO1U,GACpB0U,EAAMpoI,UAAY5H,OAAO2mD,OAAQ20E,GAAcA,EAAW1zH,WAC1DooI,EAAMpoI,UAAUC,YAAcmoI,EAC9BA,EAAM1oI,GAAK0oI,EAAMpoI,UACjBooI,EAAM1oI,GAAGI,KAAOsoI,EAAM1oI,GAAGO,YAEzB,IAAI22H,EAAqB,CAAEnpG,SAAU,CAAC,GAiHtC,OA/GAmpG,EAAmBnpG,SAAS7F,IAAM,WAC9B,MAAO,OACX,EAEAwgH,EAAMpoI,UAAUqoI,eAAiB,SAAyBtjG,EAAQ8e,EAAO5yC,GACrEtZ,KAAKoK,QAAQ,iBAAiB,CAC1BgjC,OAAQA,EACR8e,MAAOA,EACP5yC,MAAOA,GAEf,EAEAm3H,EAAMpoI,UAAU8xC,OAAS,WAMrB,OALAu8E,EAAW12H,KAAKu1C,SAAUjuC,WAC1BtH,KAAK2wI,UAAUrpI,UAAWtH,MAE1BA,KAAK0wI,eAAe,MAAOppI,WAEpBtH,IACX,EAEAywI,EAAMpoI,UAAU80D,OAAS,SAAiB7jD,EAAOzN,GAM7C,OALA7L,KAAKu1C,SAAS/qC,OAAO8O,EAAO,EAAGzN,GAC/BA,EAAQc,OAAS3M,KAEjBA,KAAK0wI,eAAe,MAAO,CAAE7kI,GAAWyN,GAEjCtZ,IACX,EAEAywI,EAAMpoI,UAAUuoI,SAAW,SAAmB/kI,EAASyN,GACnD,OAAOtZ,KAAKm9D,OAAO7jD,EAAOzN,EAC9B,EAEA4kI,EAAMpoI,UAAUgE,OAAS,SAAiBR,GACtC,IAAIyN,EAAQtZ,KAAKu1C,SAAS5/B,QAAQ9J,GAOlC,OANIyN,GAAS,IACTtZ,KAAKu1C,SAAS/qC,OAAO8O,EAAO,GAC5BzN,EAAQc,OAAS,KACjB3M,KAAK0wI,eAAe,SAAU,CAAE7kI,GAAWyN,IAGxCtZ,IACX,EAEAywI,EAAMpoI,UAAUwoI,SAAW,SAAmBv3H,GAC1C,GAAI,GAAKA,GAASA,EAAQtZ,KAAKu1C,SAAS/tC,OAAQ,CAC5C,IAAIqE,EAAU7L,KAAKu1C,SAASj8B,GAC5BtZ,KAAKu1C,SAAS/qC,OAAO8O,EAAO,GAC5BzN,EAAQc,OAAS,KACjB3M,KAAK0wI,eAAe,SAAU,CAAE7kI,GAAWyN,EAC/C,CAEA,OAAOtZ,IACX,EAEAywI,EAAMpoI,UAAUmuD,MAAQ,WACpB,IAAItK,EAAQlsD,KAAKu1C,SAMjB,OALAv1C,KAAKu1C,SAAW,GAChBv1C,KAAK2wI,UAAUzkF,EAAO,MAEtBlsD,KAAK0wI,eAAe,SAAUxkF,EAAO,GAE9BlsD,IACX,EAEAywI,EAAMpoI,UAAUs1H,KAAO,SAAelqF,GAClC,OAAOw6F,GAAoBjuI,KAAKu1C,UAAU,EAAMv1C,KAAKm/H,iBAAiB1rF,GAC1E,EAEAg9F,EAAMpoI,UAAUu5H,QAAU,WACtB,OAAOqM,GAAoBjuI,KAAKu1C,UAAU,EAC9C,EAEAk7F,EAAMpoI,UAAUk3H,aAAe,SAAuB9rF,GAClD,OAAO46F,GAA2BruI,KAAKu1C,SAAUv1C,KAAKm/H,iBAAiB1rF,GAC3E,EAEAg9F,EAAMpoI,UAAU82H,iBAAmB,SAA2B1rF,GAC1D,OAAOurF,GAAU32H,UAAU82H,iBAAiB50H,KAAKvK,KAAMyzC,IAAmB,IAC9E,EAEAg9F,EAAMpoI,UAAU81H,cAAgB,SAAwBhC,EAAO+C,GAC3D,GAAIl/H,KAAKgN,UAGL,IAFA,IAAIuoC,EAAWv1C,KAAKu1C,SAChB5B,EAAY3zC,KAAKm/H,iBAAiBD,GAC7Bt1H,EAAM,EAAGA,EAAM2rC,EAAS/tC,OAAQoC,IACrC,GAAI2rC,EAAS3rC,GAAKu0H,cAAchC,EAAOxoF,GACnC,OAAO,EAInB,OAAO,CACX,EAEA88F,EAAMpoI,UAAUsoI,UAAY,SAAoBh4G,EAAUm4G,GAGtD,IAFA,IAESvpI,EAAI,EAAGA,EAAIoxB,EAASnxB,OAAQD,IAAK,CACtC,IAAIs8B,EAAQlL,EAASpxB,GACjBoF,EAASk3B,EAAMl3B,OACfA,GAAUA,IALH3M,MAK0B2M,EAAON,QACxCM,EAAON,OAAOw3B,GAGlBA,EAAMl3B,OAASmkI,CACnB,CACJ,EAEArwI,OAAOs8H,iBAAkB0T,EAAMpoI,UAAW42H,GAEnCwR,CACX,CA9HY,CA8HVF,GAAYvR,GAAW,aAEzB,SAAS+R,GAAiB5U,EAAOwB,EAAM9xH,GACnC,IAAImlI,EAAYnlI,EAAQ8nC,aAAeorF,KACnChF,EAASiX,EAAUjX,SACvBA,EAAOp1H,GAAKw3H,EAAM/2H,EAAIu4H,EAAK3kF,OAAO5zC,EAClC20H,EAAOvsE,GAAK2uE,EAAMh4H,EAAIw5H,EAAK3kF,OAAO70C,EAElC6sI,EAAUjX,OAAOA,GACjBluH,EAAQ8nC,UAAUq9F,EACtB,CAEA,SAASC,GAAWjhI,EAAMs8E,EAAM4kD,EAAO/rG,EAAMgsG,GAUzC,MARc,UAAVD,EACQ5kD,EAAKtzC,OAAO7T,GACH,QAAV+rG,EACC5kD,EAAKtzC,OAAO7T,GAAQmnD,EAAKt8E,KAAKmhI,GAAanhI,EAE3Cs8E,EAAKtzC,OAAO7T,IAASmnD,EAAKt8E,KAAKmhI,GAAanhI,GAAQ,CAIpE,CAEA,SAASohI,GAAkBphI,EAAMs8E,EAAM4kD,EAAO/rG,EAAMgsG,GAUhD,MARc,UAAVD,EACQ5kD,EAAKtzC,OAAO7T,GAAQmnD,EAAKt8E,KAAKmhI,GAAanhI,EAClC,QAAVkhI,EACC5kD,EAAKtzC,OAAO7T,GAEZmnD,EAAKtzC,OAAO7T,IAASmnD,EAAKt8E,KAAKmhI,GAAanhI,GAAQ,CAIpE,CAEA,IAAI8kH,GAAkB,CAClBuc,aAAc,QACdC,eAAgB,QAChBC,WAAY,QACZC,QAAS,EACTC,YAAa,aACbC,YAAa,EACb/kH,MAAM,EACNglH,QAAQ,GAGRrwI,GAAU,SAAUq3B,EAAU/O,GAC9B+O,EAASr3B,QAAQsoB,EACrB,EAEIgoH,GAAiB,SAAUj5G,EAAU/O,GAGrC,IAFA,IAEShgB,EAFI+uB,EAASnxB,OAEE,EAAGoC,GAAO,EAAGA,IACjCggB,EAAS+O,EAAS/uB,GAAMA,EAEhC,EAEI+vE,GAAU,SAAUk4D,GACpB,SAASl4D,EAAO2S,EAAMnlF,GAClB0qI,EAAStnI,KAAKvK,KAAM2C,EAAEI,OAAO,CAAC,EAAG+xH,GAAiB3tH,IAClDnH,KAAKswI,MAAQhkD,EACbtsF,KAAK8xI,UAAY,CAAC,CACtB,CA2KA,OAzKAnqB,EAAahuC,EAAQk4D,GACrBl4D,EAAOtxE,UAAY5H,OAAO2mD,OAAQyqF,GAAYA,EAASxpI,WACvDsxE,EAAOtxE,UAAUC,YAAcqxE,EAC/BA,EAAO5xE,GAAK4xE,EAAOtxE,UACnBsxE,EAAO5xE,GAAGI,KAAOwxE,EAAO5xE,GAAGO,YAE3BqxE,EAAOtxE,UAAUikF,KAAO,SAAe5jF,GACnC,OAAIA,GACA1I,KAAKswI,MAAQ5nI,EACN1I,MAGJA,KAAKswI,KAChB,EAEA32D,EAAOtxE,UAAU0pI,SAAW,WACxB,IAAI5qI,EAAUnH,KAAKmH,QACf6qI,EAAWhyI,KAAK8xI,UACQ,eAAxB3qI,EAAQsqI,aACRO,EAASb,UAAY,QACrBa,EAASC,gBAAkB,SAC3BD,EAASE,UAAY,IACrBF,EAASG,WAAa,MAEtBH,EAASb,UAAY,SACrBa,EAASC,gBAAkB,QAC3BD,EAASE,UAAY,IACrBF,EAASG,WAAa,KAGtBhrI,EAAQkP,SACRrW,KAAKsB,QAAUswI,GACf5xI,KAAKoyI,aAAehB,KAEpBpxI,KAAKsB,QAAUA,GACftB,KAAKoyI,aAAenB,GAE5B,EAEAt3D,EAAOtxE,UAAUgqI,OAAS,WAGtB,GAAKryI,KAAKswI,OAAkC,IAAzBtwI,KAAKu1C,SAAS/tC,OAAjC,CAGAxH,KAAK+xI,WAED/xI,KAAKmH,QAAQwsC,WACb3zC,KAAK2zC,UAAU,MA4BnB,IAzBA,IAcI2+F,EAAc/9E,EAAOg+E,EAdrBprI,EAAUnH,KAAKmH,QACfmlF,EAAOtsF,KAAKswI,MACZje,EAAMryH,KAAKwyI,cACX7oG,EAAS0oF,EAAI1oF,OACb8oG,EAAapgB,EAAIogB,WACjBC,EAAQ1yI,KAAK8xI,UACbX,EAAYuB,EAAMvB,UAClBc,EAAkBS,EAAMT,gBACxBC,EAAYQ,EAAMR,UAClBC,EAAaO,EAAMP,WACnBQ,EAAc,IAAI7W,EAClB8W,EAAgB,IAAI9W,EACpB9rH,EAAO,IAAIgtH,EACX6V,EAAa5B,GAAWwB,EAAYnmD,EAAMnlF,EAAQkqI,aAAcc,EAAYF,GAG5Ea,EAAkB,SAAUnV,EAAM/zH,GAClC,IAAIiC,EAAU0oD,EAAM57B,SAAS/uB,GAE7BgpI,EAAcV,GAAaI,EAC3BM,EAAcT,GAAclB,GAAWtT,EAAK3tH,KAAKiiI,GAAkBM,EAAUprI,EAAQoqI,WAAYY,EAAYF,GAC7GlB,GAAiB6B,EAAejV,EAAM9xH,GACtCymI,GAAgB3U,EAAK3tH,KAAKmhI,GAAahqI,EAAQqqI,OACnD,EAESuB,EAAW,EAAGA,EAAWppG,EAAOniC,OAAQurI,IAC7Cx+E,EAAQ5qB,EAAOopG,GACfJ,EAAYT,GAAaI,EAtCdtyI,KAsCsCoyI,aAAa79E,EAAMvkD,KAAMs8E,EAAMnlF,EAAQmqI,eAAgBY,EAAWf,GACnHwB,EAAYR,GAAcU,EAC1B7iI,EAAKmhI,GAAa58E,EAAMvkD,KACxBA,EAAKiiI,GAAmB19E,EAAMy+E,SAC9BT,EAAW,IAAItV,GAAK0V,EAAa3iI,GA1CtBhQ,KA2CFsB,QAAQizD,EAAM0+E,OAAQH,GAE/BD,GAAct+E,EAAMy+E,SAAW7rI,EAAQuqI,YAG3C,IAAKvqI,EAAQwlB,MAAQ4nC,EAAMvkD,KAAOs8E,EAAKt8E,KAAKmhI,GAAY,CACpD,IAAIphG,EAAQu8C,EAAKt8E,KAAKmhI,GAAaoB,EAASviI,KAAKmhI,GAC7C+B,EAAcX,EAAShV,UAAUxtF,MAAMA,EAAOA,GAE9CojG,EAAWlC,GADEsB,EAASviI,KAAKiiI,GAAmBliG,EACZu8C,EAAMnlF,EAAQkqI,aAAcc,EAAYF,GAC1Et+F,EAAYorF,KACE,MAAdmT,EACAv+F,EAAUvD,UAAUk8C,EAAKtzC,OAAO5zC,EAAI8tI,EAAY9tI,EAAG+tI,EAAWD,EAAY/uI,GAE1EwvC,EAAUvD,UAAU+iG,EAAWD,EAAY9tI,EAAGknF,EAAKtzC,OAAO70C,EAAI+uI,EAAY/uI,GAE9EwvC,EAAU5D,MAAMA,EAAOA,GAEvB/vC,KAAK2zC,UAAUA,EACnB,CA1DA,CA2DJ,EAEAgmC,EAAOtxE,UAAUmqI,YAAc,WAkB3B,IAjBA,IAAIvf,EAAWjzH,KAGXmH,EADMnH,KACQmH,QACdouC,EAFMv1C,KAESu1C,SACfm8F,EAAcvqI,EAAQuqI,YACtB/kH,EAAOxlB,EAAQwlB,KACf6kH,EAAUrqI,EAAQqqI,QAClBL,EAAYnxI,KAAK8xI,UAAUX,UAC3B58E,EAAQv0D,KAAKozI,YACbzpG,EAAS,GACT0pG,EAAW,WACX1pG,EAAOhoC,KAAK4yD,GACZk+E,GAAcl+E,EAAMy+E,SAAWtB,CACnC,EACIe,GAAcf,EAET9nI,EAAM,EAAGA,EAAM2rC,EAAS/tC,OAAQoC,IAAO,CAC5C,IAAIiC,EAAU0pC,EAAS3rC,GACnB+zH,EAAOpoF,EAAS3rC,GAAK01H,cACrBzzH,EAAQmB,WAAa2wH,IACjBhxG,GAAQ4nC,EAAMvkD,KAAO2tH,EAAK3tH,KAAKmhI,GAAaK,EAAUve,EAASqd,MAAMtgI,KAAKmhI,GAC9C,IAAxB58E,EAAM0+E,OAAOzrI,QACbyrH,EAASqgB,YAAY/+E,EAAOopE,EAAM9xH,GAClCwnI,IACA9+E,EAAQ0+D,EAASmgB,cAEjBC,IACA9+E,EAAQ0+D,EAASmgB,YACjBngB,EAASqgB,YAAY/+E,EAAOopE,EAAM9xH,IAGtConH,EAASqgB,YAAY/+E,EAAOopE,EAAM9xH,GAG9C,CAMA,OAJI0oD,EAAM0+E,OAAOzrI,QACb6rI,IAGG,CACH1pG,OAAQA,EACR8oG,WAAYA,EAEpB,EAEA94D,EAAOtxE,UAAUirI,YAAc,SAAsB/+E,EAAOopE,EAAM9xH,GAC9D0oD,EAAMvkD,MAAQ2tH,EAAK3tH,KAAKhQ,KAAK8xI,UAAUX,WAAanxI,KAAKmH,QAAQqqI,QACjEj9E,EAAMy+E,SAAW3vI,KAAK8V,IAAIwkH,EAAK3tH,KAAKhQ,KAAK8xI,UAAUG,iBAAkB19E,EAAMy+E,UAC3Ez+E,EAAM0+E,OAAOtxI,KAAKg8H,GAClBppE,EAAM57B,SAASh3B,KAAKkK,EACxB,EAEA8tE,EAAOtxE,UAAU+qI,UAAY,WACzB,MAAO,CACHJ,SAAU,EACVhjI,MAAOhQ,KAAKmH,QAAQqqI,QACpByB,OAAQ,GACRt6G,SAAU,GAElB,EAEOghD,CACX,CAjLa,CAiLX82D,IAEE8C,GAAU,SAAUxX,GACpB,SAASyX,EAAQ7R,EAAUx6H,QACN,IAAbw6H,IAAuBA,EAAW,IAAI1E,SAC1B,IAAZ91H,IAAsBA,EAAU,CAAC,GAErC40H,EAAWxxH,KAAKvK,KAAMmH,GAEtBnH,KAAK2hI,SAASA,GAET7K,EAAQ92H,KAAKmH,QAAQy4H,SACtB5/H,KAAK4/H,OAAO,OAEpB,CAEAjY,EAAa6rB,EAASzX,GACtByX,EAAQnrI,UAAY5H,OAAO2mD,OAAQ20E,GAAcA,EAAW1zH,WAC5DmrI,EAAQnrI,UAAUC,YAAckrI,EAChCA,EAAQzrI,GAAKyrI,EAAQnrI,UACrBmrI,EAAQzrI,GAAGI,KAAOqrI,EAAQzrI,GAAGO,YAE7B,IAAI22H,EAAqB,CAAEnpG,SAAU,CAAC,GAwBtC,OAtBAmpG,EAAmBnpG,SAAS7F,IAAM,WAC9B,MAAO,MACX,EAEAujH,EAAQnrI,UAAUi5H,MAAQ,SAAgBvH,GACtC,OAAO/5H,KAAK6hI,UAAUlE,KAAK5D,EAC/B,EAEAyZ,EAAQnrI,UAAUu5H,QAAU,WACxB,OAAO5hI,KAAK6hI,UAAUlE,MAC1B,EAEA6V,EAAQnrI,UAAUq3H,eAAiB,SAAyBvD,GACxD,OAAOn8H,KAAK6hI,UAAU1D,cAAchC,EACxC,EAEAqX,EAAQnrI,UAAU+1H,UAAY,SAAoBjC,GAC9C,OAAOn8H,KAAK2hI,WAAWvD,UAAUjC,EAAOn8H,KAAKmH,QAAQy4H,OAAO7zH,MAAQ,EACxE,EAEAtL,OAAOs8H,iBAAkByW,EAAQnrI,UAAW42H,GAErCuU,CACX,CA7Ca,CA6CX1S,GAAUI,GAAWO,GAAazC,OAEpC,SAASyU,GAAc96G,EAAU2zD,EAAMonD,EAAWvuG,EAAMgsG,GACpD,IAAK,IAAIvnI,EAAM,EAAGA,EAAM+uB,EAASnxB,OAAQoC,IAAO,CAC5C,IAAI+zH,EAAOhlG,EAAS/uB,GAAK01H,cACzB,GAAI3B,EAAM,CACN,IAAIxB,EAAQwB,EAAK3kF,OAAO5xC,QACxB+0H,EAAMh3F,GAAQ8rG,GAAWtT,EAAK3tH,KAAKmhI,GAAY7kD,EAAMonD,GAAa,QAASvuG,EAAMgsG,GACjFJ,GAAiB5U,EAAOwB,EAAMhlG,EAAS/uB,GAC3C,CACJ,CACJ,CAUA,SAAS+pI,GAAch7G,EAAUi7G,EAAWC,EAAW1C,GACnD,GAAIx4G,EAASnxB,OAAS,EAIlB,IAHA,IAAIwxC,EAAS,IAAI8iF,EACbgY,EAAen7G,EAAS,GAAGglG,KAEtB/zH,EAAM,EAAGA,EAAM+uB,EAASnxB,OAAQoC,IAAO,CAC5C,IAAIiC,EAAU8sB,EAAS/uB,GAAKiC,QACxB8xH,EAAOhlG,EAAS/uB,GAAK+zH,KACzB3kF,EAAO46F,GAAaE,EAAa96F,OAAO46F,GAAaE,EAAa9jI,KAAKmhI,GACvEn4F,EAAO66F,GAAalW,EAAK3kF,OAAO66F,GAChC9C,GAAiB/3F,EAAQ2kF,EAAM9xH,GAC/B8xH,EAAK3kF,OAAO46F,GAAa56F,EAAO46F,GAChCE,EAAenW,CACnB,CAER,CAEA,SAASoW,GAAoBp7G,GAGzB,IAFA,IAAIg7G,EAAgB,GAEX/pI,EAAM,EAAGA,EAAM+uB,EAASnxB,OAAQoC,IAAO,CAC5C,IAAIiC,EAAU8sB,EAAS/uB,GACnB+zH,EAAO9xH,EAAQyzH,cACf3B,GACAgW,EAAchyI,KAAK,CACfkK,QAASA,EACT8xH,KAAMA,GAGlB,CAEA,OAAOgW,CACX,CAwDA,SAASK,GAAar7G,EAAU2zD,EAAMnnD,EAAM0uG,EAAW1C,GAKnD,IAJA,IAAI8C,EA/CR,SAAmBt7G,EAAU2zD,EAAM6kD,GAc/B,IAbA,IAIItlI,EAAS8xH,EAJTuW,EAAU5nD,EAAKt8E,KAAKmhI,GACpB8C,EAAS,GACTE,EAAQ,GACRC,EAAY,EAGZC,EAAoB,WACpBF,EAAMxyI,KAAK,CACPkK,QAASA,EACT8xH,KAAMA,GAEd,EAES/zH,EAAM,EAAGA,EAAM+uB,EAASnxB,OAAQoC,IAIrC,GAHAiC,EAAU8sB,EAAS/uB,GAEnB+zH,EAAO9xH,EAAQyzH,cACL,CACN,IAAItvH,EAAO2tH,EAAK3tH,KAAKmhI,GACjBiD,EAAYpkI,EAAOkkI,EACfC,EAAM3sI,QACNysI,EAAOtyI,KAAKwyI,GACZA,EAAQ,GACRE,IACAD,EAAYpkI,IAEZqkI,IACAJ,EAAOtyI,KAAKwyI,GACZA,EAAQ,GACRC,EAAY,IAGhBC,IACAD,GAAapkI,EAErB,CAOJ,OAJImkI,EAAM3sI,QACNysI,EAAOtyI,KAAKwyI,GAGTF,CACX,CAGiBK,CAAU37G,EAAU2zD,EAAM6kD,GACnCn4F,EAASszC,EAAKtzC,OAAO5xC,QACrB0P,EAAS,GAEJlN,EAAM,EAAGA,EAAMqqI,EAAOzsI,OAAQoC,IAAO,CAC1C,IAAIuqI,EAAQF,EAAOrqI,GACf2qI,EAAeJ,EAAM,GACzBn7F,EAAO66F,GAAaU,EAAa5W,KAAK3kF,OAAO66F,GAC7C9C,GAAiB/3F,EAAQu7F,EAAa5W,KAAM4W,EAAa1oI,SACzD0oI,EAAa5W,KAAK3kF,OAAO7T,GAAQ6T,EAAO7T,GACxCwuG,GAAcQ,EAAOhvG,EAAM0uG,EAAW1C,GACtCr6H,EAAOnV,KAAK,IACZ,IAAK,IAAI6yI,EAAa,EAAGA,EAAaL,EAAM3sI,OAAQgtI,IAChD19H,EAAOlN,GAAKjI,KAAKwyI,EAAMK,GAAY3oI,QAE3C,CACA,OAAOiL,CACX,CAwBA,IAAI29H,GAAc,SAAUzN,GACxB,SAASyN,IACLzN,EAAiB5+H,MAAMpI,KAAMsH,UACjC,CAcA,OAZAqgH,EAAa8sB,EAAYzN,GACzByN,EAAWpsI,UAAY5H,OAAO2mD,OAAQ4/E,GAAoBA,EAAiB3+H,WAC3EosI,EAAWpsI,UAAUC,YAAcmsI,EACnCA,EAAW1sI,GAAK0sI,EAAWpsI,UAC3BosI,EAAW1sI,GAAGI,KAAOssI,EAAW1sI,GAAGO,YAEnCmsI,EAAWpsI,UAAUk3D,QAAU,WAC3Bv/D,KAAKq2H,cAAc,CACftwG,MAAO,SAEf,EAEO0uH,CACX,CAlBiB,CAkBfhO,IAEF,SAASiO,GAAgBtyI,GACrB,OAAO,SAASsG,GACZ,OAAIouH,EAAQpuH,IACR1I,KAAKmH,QAAQ+oB,IAAI9tB,EAAMsG,GAChB1I,MAGJA,KAAKmH,QAAQ8oB,IAAI7tB,EAC5B,CACJ,CAQA,IAAmCuS,GAC3BmC,GAkBJ69H,GAAgB,SAAU5Y,GAC1B,SAAS4Y,EAAa72H,EAAQmzG,EAAOl6F,GACjCglG,EAAWxxH,KAAKvK,MAEhBA,KAAKmH,QAAU,IAAI+zH,EAAa,CAC5Bp9G,OAAQA,EACRmzG,MAAOA,EACPl6F,QAAS+/F,EAAQ//F,GAAWA,EAAU,IAG1C/2B,KAAKmH,QAAQ8uH,YAAYj2H,KAC7B,CAuBA,OArBA2nH,EAAagtB,EAAc5Y,GAC3B4Y,EAAatsI,UAAY5H,OAAO2mD,OAAQ20E,GAAcA,EAAW1zH,WACjEssI,EAAatsI,UAAUC,YAAcqsI,EACrCA,EAAa5sI,GAAK4sI,EAAatsI,UAC/BssI,EAAa5sI,GAAGI,KAAOwsI,EAAa5sI,GAAGO,YAEvCqsI,EAAavtF,OAAS,SAAiBwtF,GACnC,GAAI9d,EAAQ8d,GAUR,OARIA,aAAeD,EACRC,EACAA,EAAIptI,OAAS,EACb,IAAImtI,EAAaC,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAErC,IAAID,EAAaC,EAAI92H,OAAQ82H,EAAI3jB,MAAO2jB,EAAI79G,QAK/D,EAEO49G,CACX,CAnCmB,EAnBgBhgI,GAiBrB,CAAE,SAAU,QAAS,WAhB3BmC,GAAU,SAAU4kH,GACpB,SAAS5kH,IACL4kH,EAAMtzH,MAAMpI,KAAMsH,UACtB,CAMA,OANCqgH,EAAa7wG,EAAQ4kH,GACtB5kH,EAAOzO,UAAY5H,OAAO2mD,OAAQs0E,GAASA,EAAMrzH,WACjDyO,EAAOzO,UAAUC,YAAcwO,EAC/BA,EAAO/O,GAAK+O,EAAOzO,UACnByO,EAAO/O,GAAGI,KAAO2O,EAAO/O,GAAGO,YAEpBwO,CACX,CAVa,CAqDH++G,GA5Dd,SAAgC9tH,EAAI4M,GAChC,IAAK,IAAIpN,EAAI,EAAGA,EAAIoN,EAAMnN,OAAQD,IAC9BQ,EAAG4M,EAAMpN,IAAMmtI,GAAgB//H,EAAMpN,GAE7C,CAcIstI,CAAuB/9H,GAAOzO,UAAWsM,IAElCmC,KA0CPg+H,GAAY,SAAU3Z,GACtB,SAAS2Z,EAAS3tI,QACE,IAAZA,IAAsBA,EAAU,CAAC,GAErCg0H,EAAgB5wH,KAAKvK,MAErBA,KAAK+0I,MAAQ,IAAIN,GAAWz0I,KAAKg1I,aAAa7tI,EAAQ4tI,QACtD/0I,KAAK+0I,MAAM9e,YAAYj2H,MACvBA,KAAKi1I,WAAa9tI,EAAQ+tI,UAC1Bl1I,KAAKqwB,GAAK2mG,GACd,CAEArP,EAAamtB,EAAU3Z,GACvB2Z,EAASzsI,UAAY5H,OAAO2mD,OAAQ+zE,GAAmBA,EAAgB9yH,WACvEysI,EAASzsI,UAAUC,YAAcwsI,EACjCA,EAAS/sI,GAAK+sI,EAASzsI,UACvBysI,EAAS/sI,GAAGI,KAAO2sI,EAAS/sI,GAAGO,YAE/B,IAAI22H,EAAqB,CAAEnpG,SAAU,CAAC,GAmDtC,OAjDAmpG,EAAmBnpG,SAAS7F,IAAM,WAC9B,MAAO,UACX,EAEA6kH,EAASzsI,UAAU6sI,UAAY,SAAoBxsI,GAC/C,OAAIouH,EAAQpuH,IACR1I,KAAKi1I,WAAavsI,EAClB1I,KAAKq2H,gBACEr2H,MAGJA,KAAKi1I,UAChB,EAEAH,EAASzsI,UAAU2sI,aAAe,SAAuBD,QACvC,IAAVA,IAAoBA,EAAQ,IAGhC,IADA,IAAIj+H,EAAS,GACJlN,EAAM,EAAGA,EAAMmrI,EAAMvtI,OAAQoC,IAClCkN,EAAOnV,KAAKgzI,GAAavtF,OAAO2tF,EAAMnrI,KAG1C,OAAOkN,CACX,EAEAg+H,EAASzsI,UAAU8sI,QAAU,SAAkBr3H,EAAQmzG,EAAOl6F,GAC1D/2B,KAAK+0I,MAAMpzI,KAAK,IAAIgzI,GAAa72H,EAAQmzG,EAAOl6F,GACpD,EAEA+9G,EAASzsI,UAAU+sI,WAAa,SAAqB5sH,GACjD,IAAIlP,EAAQtZ,KAAK+0I,MAAMp/H,QAAQ6S,GAC3BlP,GAAS,GACTtZ,KAAK+0I,MAAMvqI,OAAO8O,EAAO,EAEjC,EAEAw7H,EAASzsI,UAAUguH,cAAgB,SAAwB1xH,GACvD3E,KAAKoK,QAAQ,gBAAiB,CAC1B2b,MAAO,YAAcphB,EAAI,IAAMA,EAAEohB,MAAQ,IACzCrd,MAAO1I,MAEf,EAEA80I,EAASzsI,UAAUiuH,eAAiB,WAChCt2H,KAAKq2H,eACT,EAEA51H,OAAOs8H,iBAAkB+X,EAASzsI,UAAW42H,GAEtC6V,CACX,CAtEe,CAsEbjf,GAIEwf,GAAkB,SAAUtZ,GAC5B,SAASsZ,EAAeluI,QACJ,IAAZA,IAAsBA,EAAU,CAAC,GAErC40H,EAAWxxH,KAAKvK,KAAMmH,GAEtBnH,KAAK8V,MAAM3O,EAAQ2O,OAAS,IAAIgmH,GAChC97H,KAAK2L,IAAIxE,EAAQwE,KAAO,IAAImwH,EAAM,EAAG,GACzC,CAQA,OANAnU,EAAa0tB,EAAgBtZ,GAC7BsZ,EAAehtI,UAAY5H,OAAO2mD,OAAQ20E,GAAcA,EAAW1zH,WACnEgtI,EAAehtI,UAAUC,YAAc+sI,EACvCA,EAAettI,GAAKstI,EAAehtI,UACnCgtI,EAAettI,GAAGI,KAAOktI,EAAettI,GAAGO,YAEpC+sI,CACX,CAjBqB,CAiBnBrM,GAAW8L,GAnBE,CAAE,QAAS,SAqBtBQ,GAAkB,SAAUvZ,GAC5B,SAASuZ,EAAenuI,QACJ,IAAZA,IAAsBA,EAAU,CAAC,GAErC40H,EAAWxxH,KAAKvK,KAAMmH,GAEtBnH,KAAKu+E,OAAOp3E,EAAQo3E,QAAU,IAAIu9C,GAClC97H,KAAKu1I,QAAUze,EAAQ3vH,EAAQmlB,QAAUnlB,EAAQmlB,OAAS,EAC1DtsB,KAAKw1I,cAAgBruI,EAAQsuI,YACjC,CA4BA,OA1BA9tB,EAAa2tB,EAAgBvZ,GAC7BuZ,EAAejtI,UAAY5H,OAAO2mD,OAAQ20E,GAAcA,EAAW1zH,WACnEitI,EAAejtI,UAAUC,YAAcgtI,EACvCA,EAAevtI,GAAKutI,EAAejtI,UACnCitI,EAAevtI,GAAGI,KAAOmtI,EAAevtI,GAAGO,YAE3CgtI,EAAejtI,UAAUikB,OAAS,SAAiB5jB,GAC/C,OAAIouH,EAAQpuH,IACR1I,KAAKu1I,QAAU7sI,EACf1I,KAAKs2H,iBACEt2H,MAGJA,KAAKu1I,OAChB,EAEAD,EAAejtI,UAAUotI,aAAe,SAAuB/sI,GAC3D,OAAIouH,EAAQpuH,IACR1I,KAAKw1I,cAAgB9sI,EACrB1I,KAAKq2H,gBACEr2H,MAGJA,KAAKw1I,aAChB,EAEOF,CACX,CAtCqB,CAsCnBtM,GAAW8L,GAAU,CAAE,YAsCzB,IAMIntH,GA+IA+tH,GArJAC,GAAkB,CACrBC,MArCD,SAAetoI,GACX,MAAO,GAAMjK,KAAKg3H,IAAI/sH,EAAWjK,KAAK6zH,IAAM,CAChD,EAoCC2e,OAlCD,SAAgBvoI,GACZ,OAAOA,CACX,EAiCCwoI,eA/BD,SAAwBxoI,EAAUuwB,EAAM/nB,EAAOipB,GAC3C,IAAI95B,EAAI,QACJ4tH,EAAI,EACJ3tH,EAAI65B,EAER,OAAiB,IAAbzxB,EACOwI,EAGM,IAAbxI,EACOwI,EAAQipB,GAGd8zF,IACDA,EAAI,IAGJ3tH,EAAI7B,KAAKoU,IAAIsnB,IACb75B,EAAI65B,EACJ95B,EAAI4tH,EAAI,GAER5tH,EAAI4tH,GAAK,EAAIxvH,KAAK6zH,IAAM7zH,KAAK0yI,KAAKh3G,EAAO75B,GAGtCA,EAAI7B,KAAKwmC,IAAI,GAAI,GAAKv8B,GACtBjK,KAAKi3H,KAAKznH,OAAOvF,GAAYrI,IAAM,IAAM5B,KAAK6zH,IAAMrE,GAAK9zF,EAAOjpB,EAC3E,GAUIkgI,GAAoB,SAAUlgB,GAC9B,SAASkgB,IACLlgB,EAASvrH,KAAKvK,MAEdA,KAAKi2I,OAAS,EAClB,CAEAtuB,EAAaquB,EAAkBlgB,GAC/BkgB,EAAiB3tI,UAAY5H,OAAO2mD,OAAQ0uE,GAAYA,EAASztH,WACjE2tI,EAAiB3tI,UAAUC,YAAc0tI,EACzCA,EAAiBjuI,GAAKiuI,EAAiB3tI,UACvC2tI,EAAiBjuI,GAAGI,KAAO6tI,EAAiBjuI,GAAGO,YAE/C,IAAI0zH,EAAkB,CAAEhoH,QAAS,CAAC,GAsClC,OApCAgoH,EAAgBhoH,QAAQic,IAAM,WAK1B,OAJKtI,KACDA,GAAW,IAAIquH,GAGZruH,EACX,EAEAquH,EAAiB3tI,UAAU8uB,SAAW,SAAmB/0B,EAAMsD,GAC3D1F,KAAKi2I,OAAOt0I,KAAK,CACbS,KAAMA,EACNsD,KAAMA,GAEd,EAEAswI,EAAiB3tI,UAAU++C,OAAS,SAAiBv7C,EAAS1E,GAC1D,IACIuJ,EADAw7C,EAAQlsD,KAAKi2I,OAGjB,GAAI9uI,GAAWA,EAAQzB,KAEnB,IADA,IAAIA,EAAOyB,EAAQzB,KAAKmT,cACftR,EAAI,EAAGA,EAAI2kD,EAAM1kD,OAAQD,IAC9B,GAAI2kD,EAAM3kD,GAAGnF,KAAKyW,gBAAkBnT,EAAM,CACtCgL,EAAQw7C,EAAM3kD,GACd,KACJ,CAIR,GAAImJ,EACA,OAAO,IAAIA,EAAMhL,KAAKmG,EAAS1E,EAEvC,EAEA1G,OAAOs8H,iBAAkBiZ,EAAkBha,GAEpCga,CACX,CApDuB,CAoDrBpuI,GAEEk0C,GAAa,SAAUg6E,GACvB,SAASh6E,EAAUjwC,EAAS1E,GACxB2uH,EAASvrH,KAAKvK,MAEdA,KAAKmH,QAAUxE,EAAEI,OAAO,CAAC,EAAG/C,KAAKmH,QAASA,GAC1CnH,KAAK6L,QAAUA,CACnB,CAEA87G,EAAa7rE,EAAWg6E,GACxBh6E,EAAUzzC,UAAY5H,OAAO2mD,OAAQ0uE,GAAYA,EAASztH,WAC1DyzC,EAAUzzC,UAAUC,YAAcwzC,EAClCA,EAAU/zC,GAAK+zC,EAAUzzC,UACzByzC,EAAU/zC,GAAGI,KAAO2zC,EAAU/zC,GAAGO,YAEjC,IAAI22H,EAAqB,CAAE93H,QAAS,CAAC,GAsErC,OApEA20C,EAAUsL,OAAS,SAAiB1hD,EAAMmG,EAAS1E,GAC/C,OAAO6uI,GAAiBhiI,QAAQozC,OAAO1hD,EAAMmG,EAAS1E,EAC1D,EAEA83H,EAAmB93H,QAAQ8oB,IAAM,WAC7B,OAAOjwB,KAAKk2I,UAAY,CACpB5uH,SAAU,IACV6uH,OAAQ,QAEhB,EAEAlX,EAAmB93H,QAAQ+oB,IAAM,SAAUxnB,GACvC1I,KAAKk2I,SAAWxtI,CACpB,EAEAozC,EAAUzzC,UAAUytC,MAAQ,WAAmB,EAC/CgG,EAAUzzC,UAAUyqC,KAAO,WAAkB,EAE7CgJ,EAAUzzC,UAAU6uC,KAAO,WACvB,IAAI+7E,EAAWjzH,KAEXmH,EAAUnH,KAAKmH,QACfmgB,EAAWngB,EAAQmgB,SACnBge,EAAQn+B,EAAQm+B,WAAqB,IAAVA,IAAoBA,EAAQ,GAC3D,IAAI6wG,EAASR,GAAgBxuI,EAAQgvI,QACjCrgI,EAAQk9B,IAAQ1N,EAChB8wG,EAAStgI,EAAQwR,EAEJ,IAAbA,GACAtnB,KAAK8yC,KAAK,GACV9yC,KAAKq2I,SAELn9G,YAAW,WACP,IAAIo9G,EAAO,WACP,IAAIrjB,EAASsjB,SAAb,CAIA,IAAIC,EAAWxjG,IAEXnV,EAAO26F,EAAWge,EAAW1gI,EAAO,EAAGwR,GAEvCmvH,EAAiBN,EADNt4G,EAAOvW,EACgBuW,EAAM,EAAG,EAAGvW,GAElD2rG,EAASngF,KAAK2jG,GAEVD,EAAWJ,EACXz1I,MAAMojC,eAAeuyG,GAErBrjB,EAASojB,OAbb,CAeJ,EAEAC,GACJ,GAAGhxG,EAEX,EAEAwW,EAAUzzC,UAAUguI,MAAQ,WACxBr2I,KAAKu2I,UAAW,CACpB,EAEAz6F,EAAUzzC,UAAUrG,QAAU,WAC1BhC,KAAKq2I,OACT,EAEA51I,OAAOs8H,iBAAkBjhF,EAAUzzC,UAAW42H,GAEvCnjF,CACX,CArFgB,CAqFdl0C,GAIE8uI,GAAc,SAAU5gB,GACxB,SAAS4gB,IACL5gB,EAAS1tH,MAAMpI,KAAMsH,UACzB,CAEAqgH,EAAa+uB,EAAY5gB,GACzB4gB,EAAWruI,UAAY5H,OAAO2mD,OAAQ0uE,GAAYA,EAASztH,WAC3DquI,EAAWruI,UAAUC,YAAcouI,EACnCA,EAAW3uI,GAAK2uI,EAAWruI,UAC3BquI,EAAW3uI,GAAGI,KAAOuuI,EAAW3uI,GAAGO,YAEnC,IAAI0zH,EAAkB,CAAEhoH,QAAS,CAAC,GAiBlC,OAfAgoH,EAAgBhoH,QAAQic,IAAM,WAK1B,OAJKylH,KACDA,GAAa,IAAIgB,GAGdhB,EACX,EAEAgB,EAAWruI,UAAU+sB,MAAQ,SAAgBjmB,EAAKhI,GAE9C,OAAO0mI,GADS,IAAIuB,GAAUjoI,GACFgI,EAChC,EAEA1O,OAAOs8H,iBAAkB2Z,EAAY1a,GAE9B0a,CACX,CA7BiB,CA6Bf9uI,GAEE+uI,GAAY,SAAU7gB,GACtB,SAAS6gB,EAASC,GACd9gB,EAASvrH,KAAKvK,MAEdA,KAAK4jC,WAAa,GAClB5jC,KAAK2M,OAAS,KAEViqI,IACA52I,KAAK42I,WAAaA,EAClB52I,KAAK62I,UAEb,CAoFA,OAlFAlvB,EAAagvB,EAAU7gB,GACvB6gB,EAAStuI,UAAY5H,OAAO2mD,OAAQ0uE,GAAYA,EAASztH,WACzDsuI,EAAStuI,UAAUC,YAAcquI,EACjCA,EAAS5uI,GAAK4uI,EAAStuI,UACvBsuI,EAAS5uI,GAAGI,KAAOwuI,EAAS5uI,GAAGO,YAE/BquI,EAAStuI,UAAUrG,QAAU,WAGrBhC,KAAK42I,YACL52I,KAAK42I,WAAW1gB,eAAel2H,MAInC,IADA,IAAIu1C,EAAWv1C,KAAK4jC,WACXr8B,EAAI,EAAGA,EAAIguC,EAAS/tC,OAAQD,IAPtBvH,KAQF4jC,WAAWr8B,GAAGvF,UAG3BhC,KAAK2M,OAAS,IAClB,EAEAgqI,EAAStuI,UAAUwjE,KAAO,WAAkB,EAE5C8qE,EAAStuI,UAAUwuI,QAAU,WACrB72I,KAAK42I,YACL52I,KAAK42I,WAAW3gB,YAAYj2H,KAEpC,EAEA22I,EAAStuI,UAAU8xC,OAAS,SAAiB9W,GACzCrjC,KAAK4jC,WAAWjiC,KAAK0hC,GACrBA,EAAK12B,OAAS3M,IAClB,EAEA22I,EAAStuI,UAAUuoI,SAAW,SAAmBvtG,EAAMgyD,GACnDr1F,KAAK4jC,WAAWp5B,OAAO6qF,EAAK,EAAGhyD,GAC/BA,EAAK12B,OAAS3M,IAClB,EAEA22I,EAAStuI,UAAUgE,OAAS,SAAiBiN,EAAOgC,GAIhD,IAHA,IAEI3P,EAAM2N,EAAQgC,EACT/T,EAAI+R,EAAO/R,EAAIoE,EAAKpE,IAHdvH,KAIF4jC,WAAWr8B,GAAGuvI,aAE3B92I,KAAK4jC,WAAWp5B,OAAO8O,EAAOgC,EAClC,EAEAq7H,EAAStuI,UAAUyuI,WAAa,WAC5B92I,KAAKw2D,QACLx2D,KAAKgC,SACT,EAEA20I,EAAStuI,UAAUmuD,MAAQ,WACvBx2D,KAAKqM,OAAO,EAAGrM,KAAK4jC,WAAWp8B,OACnC,EAEAmvI,EAAStuI,UAAU0uI,WAAa,WACxB/2I,KAAK2M,QACL3M,KAAK2M,OAAOoqI,YAEpB,EAEAJ,EAAStuI,UAAUiuH,eAAiB,WAChCt2H,KAAK+2I,YACT,EAEAJ,EAAStuI,UAAUguH,cAAgB,WAC/Br2H,KAAK+2I,YACT,EAEAJ,EAAStuI,UAAUqoI,eAAiB,SAAyB/rI,GACxC,QAAbA,EAAEyoC,OACFptC,KAAK6rE,KAAKlnE,EAAEunD,MAAOvnD,EAAE2U,OACD,WAAb3U,EAAEyoC,QACTptC,KAAKqM,OAAO1H,EAAE2U,MAAO3U,EAAEunD,MAAM1kD,QAGjCxH,KAAK+2I,YACT,EAEOJ,CACX,CAhGe,CAgGb/uI,GAEEyC,GAAS,CACT,QACA,aACA,aACA,YACA,UAGA2sI,GAAa,SAAUC,GACvB,SAASC,EAAQrrI,EAAS1E,GACtB8vI,EAAc1sI,KAAKvK,MAEnBA,KAAKmH,QAAUxE,EAAEI,OAAO,CAAC,EAAGoE,GAC5BnH,KAAK6L,QAAUA,EACf7L,KAAK6L,QAAQsrI,mBAAqBn3I,KAAKo3I,aAAa5tI,KAAKxJ,MAEzDA,KAAK+iF,OAAS/iF,KAAKq3I,SAAS,SAC5Br3I,KAAK0mH,YAAc1mH,KAAKq3I,SAAS,cACjCr3I,KAAK2mH,YAAc3mH,KAAKq3I,SAAS,cACjCr3I,KAAKs3I,WAAat3I,KAAKq3I,SAAS,aAEhCr3I,KAAKu3I,QAAU,IAAI9G,GAEnB7iD,EAAY/hF,EAAS7L,KAAKmH,SAE1BnH,KAAKwJ,KAAKa,GAAQrK,KAAKmH,SAEvBnH,KAAKw3I,iBACT,CA2IA,OAzIA7vB,EAAauvB,EAASD,GACtBC,EAAQ7uI,UAAY5H,OAAO2mD,OAAQ6vF,GAAiBA,EAAc5uI,WAClE6uI,EAAQ7uI,UAAUC,YAAc4uI,EAChCA,EAAQnvI,GAAKmvI,EAAQ7uI,UACrB6uI,EAAQnvI,GAAGI,KAAO+uI,EAAQnvI,GAAGO,YAE7B4uI,EAAQ7uI,UAAUovI,KAAO,SAAe5rI,GACpC7L,KAAKu3I,QAAQhiG,SAAS5zC,KAAKkK,EAC/B,EAEAqrI,EAAQ7uI,UAAUmuD,MAAQ,WACtBx2D,KAAKu3I,QAAQhiG,SAAW,EAC5B,EAEA2hG,EAAQ7uI,UAAUrG,QAAU,WACxBhC,KAAKu3I,QAAU,KACfv3I,KAAK6L,QAAQsrI,mBAAqB,KAClCn3I,KAAKiK,QACT,EAEAitI,EAAQ7uI,UAAUghB,YAAc,SAAsB1kB,GAMlD,IALA,IAGI0+B,EADAq0G,EAAUpf,EAAa3zH,IAGnB0+B,GAAQq0G,IACZr0G,EAAOq0G,EAAQC,WACXD,IAPO13I,KAOc6L,UAIzB6rI,EAAUA,EAAQ3c,cAGtB,GAAI13F,EACA,OAAOA,EAAKuzG,UAEpB,EAEAM,EAAQ7uI,UAAU+uI,aAAe,WAC7B,OAAOp3I,KAAKu3I,OAChB,EAEAL,EAAQ7uI,UAAUkqB,QAAU,WACxB,OAAOq7D,EAAY5tF,KAAK6L,QAC5B,EAEAqrI,EAAQ7uI,UAAUmqB,YAAc,SAAsBxiB,GAClD,IAAIA,EAGA,OAAOhQ,KAAKyyB,MAFZzyB,KAAKyyB,MAAQziB,CAIrB,EAEAknI,EAAQ7uI,UAAUuqB,QAAU,SAAkB5iB,GAC1C49E,EAAY5tF,KAAK6L,QAASmE,GAE1BhQ,KAAKwyB,YAAYxiB,GACjBhQ,KAAK0yB,SACT,EAEAwkH,EAAQ7uI,UAAU8hB,OAAS,SAAiBmI,GACxC,IAAItiB,EAAOhQ,KAAKuyB,UACZC,EAAcxyB,KAAKwyB,eAEnBF,IAAUtiB,EAAKjE,MAAQ,GAAKiE,EAAKhE,OAAS,MAAQwmB,GAAexiB,EAAKjE,QAAUymB,EAAYzmB,OAASiE,EAAKhE,SAAWwmB,EAAYxmB,WACjIhM,KAAKwyB,YAAYxiB,GACjBhQ,KAAK0yB,QAAQ1iB,EAAMsiB,GACnBtyB,KAAKoK,QAAQ,SAAU4F,GAE/B,EAEAknI,EAAQ7uI,UAAU2H,KAAO,SAAetH,GACpC,IAAKA,EACD,OAAO1I,KAAKuyB,UAGhBvyB,KAAK4yB,QAAQlqB,EACjB,EAEAwuI,EAAQ7uI,UAAUuvI,gBAAkB,WAChC53I,KAAK63I,oBAAqB,CAC9B,EAEAX,EAAQ7uI,UAAUyvI,eAAiB,WAC/B93I,KAAK63I,oBAAqB,CAC9B,EAEAX,EAAQ7uI,UAAUmvI,gBAAkB,WAA6B,EAEjEN,EAAQ7uI,UAAUqqB,QAAU,WAAqB,EAEjDwkH,EAAQ7uI,UAAUgvI,SAAW,SAAmB5tI,GAC5C,IAAIwpH,EAAWjzH,KAEf,OAAO,SAAU2E,GACb,IAAI0+B,EAAO4vF,EAAS5pG,YAAY1kB,GAC5B0+B,IAAS4vF,EAAS4kB,oBAClB5kB,EAAS7oH,QAAQX,EAAW,CACxBoC,QAASw3B,EACT9Z,cAAe5kB,EACfe,KAAM+D,GAGlB,CACJ,EAEAytI,EAAQ7uI,UAAU0vI,eAAiB,WAC/B,IAAIlsI,EAAU7L,KAAK6L,QACfmsI,EAAUte,EAAe7tH,GACzBwmH,EAAMhN,EAAcx5G,GACpB2gB,EAAO6lG,EAAI7lG,KACXtH,EAAMmtG,EAAIntG,IAEd,MAAO,CACHsH,KAAMA,EAAOwrH,EAAQxrH,KACrBtH,IAAKA,EAAM8yH,EAAQ9yH,IAE3B,EAEAgyH,EAAQ7uI,UAAU4vI,cAAgB,SAAwBtzI,GACtD,IAAImZ,EAAS9d,KAAK+3I,iBACdG,EAAQ7f,EAAiB1zH,GACzBS,EAAI8yI,EAAM9yI,EAAI0Y,EAAO0O,KACrBroB,EAAI+zI,EAAM/zI,EAAI2Z,EAAOoH,IAErBizH,EAAmBrd,EAAa96H,KAAK6L,SAASmuH,SAMlD,OALY,IAAI8B,EACZ12H,EACAjB,GACFwvC,UAAUwkG,EAGhB,EAEOjB,CACX,CAhKgB,CAgKdv2I,MAAM2I,YAER,SAAS8uI,GAAWh2I,EAAMsG,GACtB,OAAQouH,EAAQpuH,IAAoB,OAAVA,EAAmB,IAAMtG,EAAO,KAAQsG,EAAQ,KAAS,EACvF,CAEA,SAAS2vI,GAAcC,GAEnB,IADA,IAAI/jD,EAAS,GACJhtF,EAAI,EAAGA,EAAI+wI,EAAM9wI,OAAQD,IAC9BgtF,GAAU6jD,GAAWE,EAAM/wI,GAAG,GAAI+wI,EAAM/wI,GAAG,IAG/C,OAAOgtF,CACX,CAEA,SAASgkD,GAAYD,GAEjB,IADA,IAAI/jD,EAAS,GACJhtF,EAAI,EAAGA,EAAI+wI,EAAM9wI,OAAQD,IAAK,CACnC,IAAImB,EAAQ4vI,EAAM/wI,GAAG,GACjBuvH,EAAQpuH,KACR6rF,GAAU+jD,EAAM/wI,GAAG,GAAK,IAAMmB,EAAQ,IAE9C,CAEA,GAAe,KAAX6rF,EACA,OAAOA,CAEf,CAEA,IAAIikD,GAAW,CAAC,EAEZC,GAAS,6BACTC,GAAO,OAQPC,GAAY,aACZC,GAAmB,SAAUvoI,GAAQ,OAAOA,EAAK5N,QAAQ,YAAa,IAAMk2I,GAAY,IAAM,EAC9FE,GAAmB,SAAUpiH,GAC7BvzB,MAAM6Y,KAAK0a,EAAUlQ,iBAAiB,IAAMoyH,GAAW,MAAMr3I,SAAQ,SAAUuK,GAC3E,IAAIitI,EAAcjtI,EAAQspB,aAAawjH,IACvC9sI,EAAQs8B,gBAAgBwwG,IAVf,SAAUG,EAAajtI,GAAkBitI,EAAYluI,MAAM,KAAK2kB,QAAO,SAAUtqB,GAAK,MAAa,KAANA,CAAU,IAAG3D,SAAQ,SAAU2D,GACrI,IAAIsL,EAAQtL,EAAE2F,MAAM,KACpBiB,EAAQsB,MAAMoD,EAAM,GAAGozB,QAAUpzB,EAAM,GAAGozB,MAC9C,GAAI,CAQAo1G,CAAWD,EAAajtI,EAC5B,GACJ,EAEImtI,GAAY,SAASviH,EAAWohE,GAChCphE,EAAU1X,UAAY65H,GAAiB/gD,GACvCghD,GAAiBpiH,EACrB,EAEA,GAAwB,oBAAb9mB,SAA0B,CACjC,IAAIspI,GAAe,eAAiBR,GAAS,WACzCS,GAAgBvpI,SAASkP,cAAc,OACvCs6H,GAAiC,oBAAdC,UAEvBF,GAAcn6H,UAAYk6H,GAEtBE,IAAaD,GAAc/uF,WAAWkvF,eAAiBZ,KACvDO,GAAY,SAASviH,EAAWohE,GAC5B,IACIyhD,GADS,IAAIF,WACKG,gBAAgBX,GAAiB/gD,GAAM,YAC7DghD,GAAiBS,GACjB,IAAIE,EAAc7pI,SAAS8pI,UAAUH,EAAS1/H,iBAE9C6c,EAAU1X,UAAY,GACtB0X,EAAUxX,YAAYu6H,EAC1B,EAER,CAEA,IAAIE,GAAcV,GAEd9mG,GAAY,YACZynG,GAAgB,CAChBz/F,KAAM,YACNxmB,KAAM,QAGV,SAASkmH,GAAal0I,EAAMgD,GACxB,MAAgB,SAAThD,GAA6B,SAATA,KAAqBgD,GAA4B,aAAnBA,EAAMotB,SACnE,CAmBA,IAAIm1C,GAAQ,SAAU4uE,GAClB,SAAS5uE,EAAK2rE,EAAYzvI,GACtB0yI,EAAYtvI,KAAKvK,KAAM42I,GACvB52I,KAAK85I,YAAc,CAAC,EAEpB95I,KAAKmH,QAAUA,CACnB,CAmaA,OAjaAwgH,EAAa18C,EAAM4uE,GACnB5uE,EAAK5iE,UAAY5H,OAAO2mD,OAAQyyF,GAAeA,EAAYxxI,WAC3D4iE,EAAK5iE,UAAUC,YAAc2iE,EAC7BA,EAAKljE,GAAKkjE,EAAK5iE,UACf4iE,EAAKljE,GAAGI,KAAO8iE,EAAKljE,GAAGO,YAEvB2iE,EAAK5iE,UAAUrG,QAAU,WACjBhC,KAAK6L,UACL7L,KAAK6L,QAAQ8rI,WAAa,KAC1B33I,KAAK6L,QAAU,MAGnB7L,KAAK+5I,mBACLF,EAAYxxI,UAAUrG,QAAQuI,KAAKvK,KACvC,EAEAirE,EAAK5iE,UAAUwjE,KAAO,SAAelzC,EAAU08D,GAG3C,IAFA,IAAI49B,EAAWjzH,KAENuH,EAAI,EAAGA,EAAIoxB,EAASnxB,OAAQD,IAAK,CACtC,IAAIqvI,EAAaj+G,EAASpxB,GACtBguC,EAAWqhG,EAAWrhG,SAEtBykG,EAAY,IAAIxB,GAAS5B,EAAW9gH,UAAU8gH,EAAY3jB,EAAS9rH,SAEnE2vH,EAAQzhC,GACR49B,EAAS2d,SAASoJ,EAAW3kD,GAE7B49B,EAAS94E,OAAO6/F,GAGpBA,EAAUC,oBAEN1kG,GAAYA,EAAS/tC,OAAS,GAC9BwyI,EAAUnuE,KAAKt2B,GAGnB,IAAI1pC,EAAUonH,EAASpnH,QACnBA,GACAmuI,EAAUE,SAASruI,EAASwpF,EAEpC,CACJ,EAEApqB,EAAK5iE,UAAUw1C,KAAO,WAGlB,IAFA,IAAIA,EAAO79C,KAEJ69C,EAAKlxC,QACRkxC,EAAOA,EAAKlxC,OAGhB,OAAOkxC,CACX,EAEAotB,EAAK5iE,UAAU6xI,SAAW,SAAmBxlH,EAAY2gE,GACrD,IAAI5+D,EAAY9mB,SAASkP,cAAc,OACvC66H,GAAYjjH,EACR,eAAiBgiH,GAAS,mBACtBz4I,KAAKmQ,SACT,UAGJ,IAAItE,EAAU4qB,EAAU0zB,WAAWA,WAC/Bt+C,IACIirH,EAAQzhC,GACR3gE,EAAW49C,aAAazmE,EAAS6oB,EAAWkP,WAAWyxD,IAAQ,MAE/D3gE,EAAWzV,YAAYpT,GAE3B7L,KAAKm6I,WAAWtuI,GAExB,EAEAo/D,EAAK5iE,UAAU8xI,WAAa,SAAqBtuI,GACzC7L,KAAK6L,UACL7L,KAAK6L,QAAQ8rI,WAAa,MAG9B33I,KAAK6L,QAAUA,EACf7L,KAAK6L,QAAQ8rI,WAAa33I,KAG1B,IADA,IAAIosD,EAAQpsD,KAAK4jC,WACRr8B,EAAI,EAAGA,EAAI6kD,EAAM5kD,OAAQD,IAAK,CACnC,IAAI6yI,EAAevuI,EAAQ+3B,WAAWr8B,GACtC6kD,EAAM7kD,GAAG4yI,WAAWC,EACxB,CACJ,EAEAnvE,EAAK5iE,UAAUmuD,MAAQ,WACnBx2D,KAAK+5I,mBAED/5I,KAAK6L,UACL7L,KAAK6L,QAAQkT,UAAY,IAI7B,IADA,IAAIw2B,EAAWv1C,KAAK4jC,WACXr8B,EAAI,EAAGA,EAAIguC,EAAS/tC,OAAQD,IACjCguC,EAAShuC,GAAGvF,UAGhBhC,KAAK4jC,WAAa,EACtB,EAEAqnC,EAAK5iE,UAAUyuI,WAAa,WACxB,GAAI92I,KAAK6L,QAAS,CACd,IAAI2a,EAAaxmB,KAAK6L,QAAQ2a,WAC1BA,GACAA,EAAWpH,YAAYpf,KAAK6L,SAEhC7L,KAAK6L,QAAU,IACnB,CAEAguI,EAAYxxI,UAAUyuI,WAAWvsI,KAAKvK,KAC1C,EAEAirE,EAAK5iE,UAAU+H,SAAW,WACtB,OAAOpQ,KAAKq6I,gBAChB,EAEApvE,EAAK5iE,UAAU8H,OAAS,WACpB,OAAOnQ,KAAKoQ,UAChB,EAEA66D,EAAK5iE,UAAUgyI,eAAiB,WAI5B,IAHA,IAAIjuF,EAAQpsD,KAAK4jC,WACb2wD,EAAS,GAEJhtF,EAAI,EAAGA,EAAI6kD,EAAM5kD,OAAQD,IAC9BgtF,GAAUnoC,EAAM7kD,GAAG4I,SAGvB,OAAOokF,CACX,EAEAtpB,EAAK5iE,UAAUguH,cAAgB,SAAwB1xH,GACnD,IAAIohB,EAAQphB,EAAEohB,MACVrd,EAAQ/D,EAAE+D,MAEA,YAAVqd,EACA/lB,KAAKiM,IAAI,UAAWvD,EAAQ,GAAKgwI,IAC1BiB,GAAc5zH,IAAU6zH,GAAa7zH,EAAOrd,GACnD1I,KAAKs6I,iBAAiBv0H,EAAOrd,GACZ,YAAVqd,EACP/lB,KAAK4jB,KAAK,UAAWlb,GACJ,WAAVqd,EACP/lB,KAAKiM,IAAI,SAAUvD,GACF,OAAVqd,IACHrd,EACA1I,KAAK4jB,KAAK,KAAMlb,GAEhB1I,KAAKiyB,WAAW,OAIxB4nH,EAAYxxI,UAAUguH,cAAc9rH,KAAKvK,KAAM2E,EACnD,EAEAsmE,EAAK5iE,UAAUkyI,2BAA6B,SAAqC51I,GAC7E,IAAIohB,EAAQphB,EAAEohB,MACVrd,EAAQ/D,EAAE+D,MAEA,SAAVqd,EACIrd,EACA1I,KAAK4jB,KAAK,OAAQlb,GAElB1I,KAAKiyB,WAAW,QAEH,cAAVlM,EACHrd,EACA1I,KAAK4jB,KAAK,aAAc2K,EAAW7lB,IAEnC1I,KAAKiyB,WAAW,cAEH,wBAAVlM,EACHrd,EACA1I,KAAK4jB,KAAK,uBAAwB2K,EAAW7lB,IAE7C1I,KAAKiyB,WAAW,wBAEH,gBAAVlM,EACH+wG,EAAQpuH,GACR1I,KAAK4jB,KAAK,eAAgBlb,GAE1B1I,KAAKiyB,WAAW,gBAEH,cAAVlM,GACP/lB,KAAKqtB,UAAU3kB,EAEvB,EAEAuiE,EAAK5iE,UAAUub,KAAO,SAAexhB,EAAMsG,GACnC1I,KAAK6L,SACL7L,KAAK6L,QAAQ8Z,aAAavjB,EAAMsG,EAExC,EAEAuiE,EAAK5iE,UAAUmyI,QAAU,SAAkBlC,GAGvC,IAFA,IAES/wI,EAAI,EAAGA,EAAI+wI,EAAM9wI,OAAQD,IAFnBvH,KAGF4jB,KAAK00H,EAAM/wI,GAAG,GAAI+wI,EAAM/wI,GAAG,GAE5C,EAEA0jE,EAAK5iE,UAAUoyI,WAAa,SAAqBr4I,EAAMsG,GAC/CA,EACA1I,KAAK4jB,KAAKxhB,EAAMsG,GAEhB1I,KAAKiyB,WAAW7vB,EAExB,EAEA6oE,EAAK5iE,UAAU4D,IAAM,SAAc7J,EAAMsG,GACjC1I,KAAK6L,UACL7L,KAAK6L,QAAQsB,MAAM/K,GAAQsG,EAEnC,EAEAuiE,EAAK5iE,UAAUqyI,OAAS,SAAiBhrI,GAGrC,IAFA,IAESnI,EAAI,EAAGA,EAAImI,EAAOlI,OAAQD,IAFpBvH,KAGFiM,IAAIyD,EAAOnI,GAAG,GAAImI,EAAOnI,GAAG,GAE7C,EAEA0jE,EAAK5iE,UAAUglB,UAAY,SAAoB3kB,GAC3C,IAQI2pH,EARAY,EAAWjzH,KAEXA,KAAK6L,WACJwmH,EAAMryH,KAAK6L,QAAQ8uI,WAAWtuI,OAAOjE,MAAMiqH,EAAKryH,KAAK6L,QAAQ8uI,WAC9DjyI,EAAMkC,MAAM,KAAKtJ,SAAQ,SAAU6tC,GAC/B8jF,EAASpnH,QAAQ8uI,UAAUntI,IAAI2hC,EACnC,IAGR,EAEA87B,EAAK5iE,UAAU4pB,WAAa,SAAqB7vB,GACzCpC,KAAK6L,SACL7L,KAAK6L,QAAQs8B,gBAAgB/lC,EAErC,EAEA6oE,EAAK5iE,UAAUuyI,aAAe,SAAuBjnG,GACjD,IAAI2kG,EAAQ,GAQZ,OAPI3kG,GACA2kG,EAAM32I,KAAK,CACPuwC,GACA,UAAYyB,EAAUomF,SAAStoH,SAAS,GAAK,MAI9C6mI,CACX,EAEArtE,EAAK5iE,UAAUwyI,gBAAkB,WAC7B,OAAOxC,GACHr4I,KAAK46I,aAAa56I,KAAK42I,WAAWjjG,aAE1C,EAEAs3B,EAAK5iE,UAAUyyI,gBAAkB,SAA0BpyI,GACnDA,EACA1I,KAAKw6I,QAAQx6I,KAAK46I,aAAalyI,IAE/B1I,KAAKiyB,WAAWigB,GAExB,EAEA+4B,EAAK5iE,UAAU0yI,SAAW,WACtB,IAAI5zI,EAAUnH,KAAK42I,WAAWzvI,QAC1BgG,EAAQ,CAAE,CAAE,SAAUhG,EAAQ6zI,SAMlC,OAJwB,IAApB7zI,EAAQ6F,SACRG,EAAMxL,KAAK,CAAE,UAAW+2I,KAGrBvrI,CACX,EAEA89D,EAAK5iE,UAAUkwI,YAAc,WACzB,OAAOH,GAAW,QAASG,GAAYv4I,KAAK+6I,UAAS,IACzD,EAEA9vE,EAAK5iE,UAAU4yI,cAAgB,WAC3B,OAAO7C,GAAW,UAAWp4I,KAAK42I,WAAWzvI,QAAQ4vB,QACzD,EAEAk0C,EAAK5iE,UAAU6yI,SAAW,WACtB,OAAO9C,GAAW,KAAMp4I,KAAK42I,WAAWzvI,QAAQkpB,GACpD,EAEA46C,EAAK5iE,UAAU8yI,gBAAkB,WAC7B,OAAO/C,GAAW,QAASp4I,KAAK42I,WAAWzvI,QAAQkmB,UACvD,EAEA49C,EAAK5iE,UAAU+yI,WAAa,WACxB,OAAOhD,GAAW,OAAQp4I,KAAK42I,WAAWzvI,QAAQqpB,KACtD,EAEAy6C,EAAK5iE,UAAUgzI,gBAAkB,WAC7B,IAAI3yI,EAAQ1I,KAAK42I,WAAWzvI,QAAQ6sB,UAIpC,OAHItrB,IACAA,EAAQ6lB,EAAW7lB,IAEhB0vI,GAAW,aAAc1vI,EACpC,EAEAuiE,EAAK5iE,UAAUizI,0BAA4B,WACvC,IAAI5yI,EAAQ1I,KAAK42I,WAAWzvI,QAAQo0I,oBAIpC,OAHI7yI,IACAA,EAAQ6lB,EAAW7lB,IAEhB0vI,GAAW,uBAAwB1vI,EAC9C,EAEAuiE,EAAK5iE,UAAUmzI,kBAAoB,WAC/B,OAAOpD,GAAW,eAAgBp4I,KAAK42I,WAAWzvI,QAAQs0I,YAC9D,EAEAxwE,EAAK5iE,UAAU4xI,kBAAoB,WAC/B,IAAIrD,EAAa52I,KAAK42I,WAClBkD,EAAc95I,KAAK85I,YACvB,GAAIlD,EAAY,CACZ,IACI8E,EADAv0I,EAAUyvI,EAAWzvI,QAGzB,IAAK,IAAI4e,KAAS4zH,GAAe,CAC7B,IAAIjiG,EAAavwC,EAAQ8oB,IAAIlK,GACzB2xB,GAAckiG,GAAa7zH,EAAO2xB,KAClCoiG,EAAY/zH,GAAS2xB,EACrBgkG,GAAiB,EAEzB,CACIA,GACA17I,KAAK27I,iBAAiB,CAClBvuG,OAAQ,MACR0sG,YAAaA,GAGzB,CACJ,EAEA7uE,EAAK5iE,UAAUszI,iBAAmB,SAA2Bh3I,GACrD3E,KAAK2M,QACL3M,KAAK2M,OAAOgvI,iBAAiBh3I,EAErC,EAEAsmE,EAAK5iE,UAAUiyI,iBAAmB,SAA2B50I,EAAMgD,GAC/D,IAAIoxI,EAAc95I,KAAK85I,YACnB9lI,EAAU8lI,EAAYp0I,GACtBke,EAAO+1H,GAAcj0I,GACrBgyC,EAAa,CAAC,EACd1jC,IACA0jC,EAAWhyC,GAAQsO,EACnBhU,KAAK27I,iBAAiB,CAClBvuG,OAAQ,SACR0sG,YAAapiG,WAEVoiG,EAAYp0I,IAGlBgD,GAKDgvC,EAAWhyC,GAAQgD,EACnB1I,KAAK27I,iBAAiB,CAClBvuG,OAAQ,MACR0sG,YAAapiG,IAEjBoiG,EAAYp0I,GAAQgD,EACpB1I,KAAK4jB,KAAKA,EAAM5jB,KAAK47I,OAAOlzI,EAAM2nB,MAV9Brc,GACAhU,KAAKiyB,WAAWrO,EAW5B,EAEAqnD,EAAK5iE,UAAU0xI,iBAAmB,WAC9B,IAAID,EAAc95I,KAAK85I,YAEvB95I,KAAK27I,iBAAiB,CAClBvuG,OAAQ,SACR0sG,YAAaA,IAEjB95I,KAAK85I,YAAc,CAAC,CACxB,EAEA7uE,EAAK5iE,UAAUwzI,kBAAoB,WAC/B,OAAOxD,GAAcr4I,KAAK87I,iBAC9B,EAEA7wE,EAAK5iE,UAAUyzI,eAAiB,WAC5B,IAEIhC,EAAc95I,KAAK85I,YACnBxB,EAAQ,GAEZ,IAAK,IAAIvyH,KAAS+zH,EACdxB,EAAM32I,KAAK,CAAEg4I,GAAc5zH,GANhB/lB,KAMiC47I,OAAO9B,EAAY/zH,GAAOsK,MAG1E,OAAOioH,CACX,EAEArtE,EAAK5iE,UAAUuzI,OAAS,SAAiBvrH,GACrC,IAAI0rH,GAAgB/7I,KAAKmH,SAAW,CAAC,GAAG40I,aACpCC,EAAWh8I,KAAKi8I,UAAUx5I,QAAQ,KAAM,OAE5C,MAAQ,QADGs5I,EAAe,GAAKC,GACP,IAAM3rH,EAAK,GACvC,EAEA46C,EAAK5iE,UAAU4zI,QAAU,WACrB,OAvbR,WACI,IAAIj0I,EAAO2H,SAASusI,qBAAqB,QAAQ,GAC7C7jH,EAAO1oB,SAAS0T,SAASgV,KACzBrJ,EAAM,GAEV,GAAIhnB,KAAU4tH,GAAkB,CAAC,GAAG1xG,KAAM,CACtC,IAAIi4H,EAAY9jH,EAAK1iB,QAAQ,MACV,IAAfwmI,IACA9jH,EAAOA,EAAKrtB,UAAU,EAAGmxI,IAG7BntH,EAAMqJ,CACV,CAEA,OAAOrJ,CACX,CAwaeitH,EACX,EAEOhxE,CACX,CA1aW,CA0aT0rE,IAEEyF,GAAoB,SAAUC,GAC9B,SAASD,IACLC,EAAQj0I,MAAMpI,KAAMsH,UACxB,CAgCA,OA9BAqgH,EAAay0B,EAAkBC,GAC/BD,EAAiB/zI,UAAY5H,OAAO2mD,OAAQi1F,GAAWA,EAAQh0I,WAC/D+zI,EAAiB/zI,UAAUC,YAAc8zI,EACzCA,EAAiBr0I,GAAKq0I,EAAiB/zI,UACvC+zI,EAAiBr0I,GAAGI,KAAOi0I,EAAiBr0I,GAAGO,YAE/C8zI,EAAiB/zI,UAAU+H,SAAW,WAClC,MAAQ,SAAYpQ,KAAKs8I,eAAkB,IAAOt8I,KAAKu4I,cAAiB,KAC5E,EAEA6D,EAAiB/zI,UAAUi0I,aAAe,WACtC,OAAOlE,GAAW,SAAUp4I,KAAK42I,WAAW94H,SAChD,EAEAs+H,EAAiB/zI,UAAU0yI,SAAW,WAClC,IAAInE,EAAa52I,KAAK42I,WACtB,MAAO,CACH,CAAE,aAAcA,EAAW3lB,SAC3B,CAAE,eAAgB2lB,EAAW7/G,WAErC,EAEAqlH,EAAiB/zI,UAAUguH,cAAgB,SAAwB1xH,GAC/C,WAAZA,EAAEohB,MACF/lB,KAAK4jB,KAAKjf,EAAEohB,MAAOphB,EAAE+D,OACF,UAAZ/D,EAAEohB,OAAiC,YAAZphB,EAAEohB,OAChC/lB,KAAKiM,IAAI,QAAUtH,EAAEohB,MAAOphB,EAAE+D,MAEtC,EAEO0zI,CACX,CApCuB,CAoCrBnxE,IAEEsxE,GAAgB,SAAUF,GAC1B,SAASE,EAAa3F,GAClByF,EAAQ9xI,KAAKvK,KAAM42I,GAEnB52I,KAAKqwB,GAAKumH,EAAWvmH,GAErBrwB,KAAKw8I,WACT,CAwCA,OAtCA70B,EAAa40B,EAAcF,GAC3BE,EAAal0I,UAAY5H,OAAO2mD,OAAQi1F,GAAWA,EAAQh0I,WAC3Dk0I,EAAal0I,UAAUC,YAAci0I,EACrCA,EAAax0I,GAAKw0I,EAAal0I,UAC/Bk0I,EAAax0I,GAAGI,KAAOo0I,EAAax0I,GAAGO,YAEvCi0I,EAAal0I,UAAUm0I,UAAY,WAM/B,IALA,IAEIzH,EAAQ/0I,KAAK42I,WAAW7B,MACxBlpI,EAAU7L,KAAK6L,QAEVjC,EAAM,EAAGA,EAAMmrI,EAAMvtI,OAAQoC,IAAO,CACzC,IAAI6yI,EAAW,IAAIL,GAAiBrH,EAAMnrI,IAN/B5J,KAOFm6C,OAAOsiG,GACZ5wI,GACA4wI,EAASvC,SAASruI,EAE1B,CACJ,EAEA0wI,EAAal0I,UAAUguH,cAAgB,SAAwB1xH,GAC3C,mBAAZA,EAAEohB,OACF4wH,GAAStuI,UAAUmuD,MAAMjsD,KAAKvK,MAC9BA,KAAKw8I,aACc,aAAZ73I,EAAEohB,OACT/lB,KAAKw6I,QAAQx6I,KAAK08I,iBAE1B,EAEAH,EAAal0I,UAAUs0I,kBAAoB,WACvC,OAAOtE,GAAcr4I,KAAK08I,iBAC9B,EAEAH,EAAal0I,UAAUu0I,SAAW,WAC9B,MAAO,CAAE,gBAAiB58I,KAAK42I,WAAW1B,YAAc,iBAAmB,oBAC/E,EAEOqH,CACX,CAhDmB,CAgDjBtxE,IAEE4xE,GAAsB,SAAUC,GAChC,SAASD,IACLC,EAAgB10I,MAAMpI,KAAMsH,UAChC,CA2BA,OAzBAqgH,EAAak1B,EAAoBC,GACjCD,EAAmBx0I,UAAY5H,OAAO2mD,OAAQ01F,GAAmBA,EAAgBz0I,WACjFw0I,EAAmBx0I,UAAUC,YAAcu0I,EAC3CA,EAAmB90I,GAAK80I,EAAmBx0I,UAC3Cw0I,EAAmB90I,GAAGI,KAAO00I,EAAmB90I,GAAGO,YAEnDu0I,EAAmBx0I,UAAU+H,SAAW,WACpC,MAAQ,uBAA0BpQ,KAAO,GAAI,KAAQA,KAAK28I,oBAAuB,IAAO38I,KAAKq6I,iBAAoB,mBACrH,EAEAwC,EAAmBx0I,UAAUq0I,eAAiB,WAC1C,IAAI9F,EAAa52I,KAAK42I,WAClB9gI,EAAQ8gI,EAAW9gI,QACnBnK,EAAMirI,EAAWjrI,MASrB,MARY,CACR,CAAE,KAAMmK,EAAM1Q,GACd,CAAE,KAAM0Q,EAAM3R,GACd,CAAE,KAAMwH,EAAIvG,GACZ,CAAE,KAAMuG,EAAIxH,GACZnE,KAAK48I,WAIb,EAEOC,CACX,CA/ByB,CA+BvBN,IAEEQ,GAAsB,SAAUD,GAChC,SAASC,IACLD,EAAgB10I,MAAMpI,KAAMsH,UAChC,CAyBA,OAvBAqgH,EAAao1B,EAAoBD,GACjCC,EAAmB10I,UAAY5H,OAAO2mD,OAAQ01F,GAAmBA,EAAgBz0I,WACjF00I,EAAmB10I,UAAUC,YAAcy0I,EAC3CA,EAAmBh1I,GAAKg1I,EAAmB10I,UAC3C00I,EAAmBh1I,GAAGI,KAAO40I,EAAmBh1I,GAAGO,YAEnDy0I,EAAmB10I,UAAU+H,SAAW,WACpC,MAAQ,uBAA0BpQ,KAAO,GAAI,KAAQA,KAAK28I,oBAAuB,IAAO38I,KAAKq6I,iBAAoB,mBACrH,EAEA0C,EAAmB10I,UAAUq0I,eAAiB,WAC1C,IAAI9F,EAAa52I,KAAK42I,WAClBr4D,EAASq4D,EAAWr4D,SACpBjyD,EAASsqH,EAAWtqH,SAOxB,MANY,CACR,CAAE,KAAMiyD,EAAOn5E,GACf,CAAE,KAAMm5E,EAAOp6E,GACf,CAAE,IAAKmoB,GACPtsB,KAAK48I,WAGb,EAEOG,CACX,CA7ByB,CA6BvBR,IAEES,GAAY,SAAUX,GACtB,SAASW,EAASpG,GACdyF,EAAQ9xI,KAAKvK,MAEbA,KAAK42I,WAAaA,EAClB52I,KAAKqwB,GAAKumH,EAAWvmH,GAErBrwB,KAAK6rE,KAAK,CAAE+qE,GAChB,CAeA,OAbAjvB,EAAaq1B,EAAUX,GACvBW,EAAS30I,UAAY5H,OAAO2mD,OAAQi1F,GAAWA,EAAQh0I,WACvD20I,EAAS30I,UAAUC,YAAc00I,EACjCA,EAASj1I,GAAKi1I,EAAS30I,UACvB20I,EAASj1I,GAAGI,KAAO60I,EAASj1I,GAAGO,YAE/B00I,EAAS30I,UAAU40I,eAAiB,WAChC,OAAO7E,GAAW,YAAa,UACnC,EACA4E,EAAS30I,UAAU+H,SAAW,WAC1B,MAAQ,aAAgBpQ,KAAKi9I,iBAAoB,QAAWj9I,KAAO,GAAI,KAAQA,KAAKq6I,iBAAoB,aAC5G,EAEO2C,CACX,CAxBe,CAwBb/xE,IAEEiyE,GAAkB,SAAUb,GAC5B,SAASa,IACLb,EAAQ9xI,KAAKvK,MACbA,KAAKm9I,cAAgB,CAAC,CAC1B,CA4FA,OA1FAx1B,EAAau1B,EAAgBb,GAC7Ba,EAAe70I,UAAY5H,OAAO2mD,OAAQi1F,GAAWA,EAAQh0I,WAC7D60I,EAAe70I,UAAUC,YAAc40I,EACvCA,EAAen1I,GAAKm1I,EAAe70I,UACnC60I,EAAen1I,GAAGI,KAAO+0I,EAAen1I,GAAGO,YAE3C40I,EAAe70I,UAAU6xI,SAAW,SAAmBxlH,GACnD10B,KAAK6L,QAAU6oB,CACnB,EAEAwoH,EAAe70I,UAAU+H,SAAW,WAChC,MAAQ,SAAYpQ,KAAKq6I,iBAAoB,SACjD,EAEA6C,EAAe70I,UAAUszI,iBAAmB,SAA2Bh3I,GACnE,IAAIm1I,EAAcn1I,EAAEm1I,YAChB1sG,EAASzoC,EAAEyoC,OAEA,QAAXA,EACAptC,KAAKo9I,eAAetD,GACF,WAAX1sG,GACPptC,KAAKq9I,kBAAkBvD,EAE/B,EAEAoD,EAAe70I,UAAUi1I,iBAAmB,SAA2B53I,EAAMypC,GACzE,IAAIrZ,EAUJ,MATa,SAATpwB,EACAowB,EAAWknH,GACK,SAATt3I,IACHypC,aAAgBkmG,GAChBv/G,EAAW+mH,GACJ1tG,aAAgBmmG,KACvBx/G,EAAWinH,KAGZ,IAAIjnH,EAASqZ,EACxB,EAEA+tG,EAAe70I,UAAU+0I,eAAiB,SAAyBtD,GAG/D,IAAK,IAAI/zH,KAAS+zH,EAFH95I,KAGFu9I,cAAcx3H,EAAO+zH,EAAY/zH,GAElD,EAEAm3H,EAAe70I,UAAUk1I,cAAgB,SAAwB73I,EAAMkxI,GACnE,IACI/qI,EADM7L,KACQ6L,QACdsxI,EAFMn9I,KAEcm9I,cACpB9sH,EAAKumH,EAAWvmH,GAChBmtH,EAAUL,EAAc9sH,GAC5B,GAAKmtH,EAWDA,EAAQliI,YAXE,CACV,IAAI+nB,EAAOrjC,KAAKs9I,iBAAiB53I,EAAMkxI,GACvCuG,EAAc9sH,GAAM,CAChBxkB,QAASw3B,EACT/nB,MAAO,GAEXtb,KAAKm6C,OAAO9W,GACRx3B,GACAw3B,EAAK62G,SAASl6I,KAAK6L,QAE3B,CAGJ,EAEAqxI,EAAe70I,UAAUg1I,kBAAoB,SAA4BvD,GAGrE,IAAK,IAAI/zH,KAAS+zH,EAFH95I,KAGFy9I,iBAAiB3D,EAAY/zH,GAE9C,EAEAm3H,EAAe70I,UAAUo1I,iBAAmB,SAA2B7G,GACnE,IAAIuG,EAAgBn9I,KAAKm9I,cACrB9sH,EAAKumH,EAAWvmH,GAChBmtH,EAAUL,EAAc9sH,GAExBmtH,IACAA,EAAQliI,QACc,IAAlBkiI,EAAQliI,QACRtb,KAAKqM,OAAOrM,KAAK4jC,WAAWjuB,QAAQ6nI,EAAQ3xI,SAAU,UAC/CsxI,EAAc9sH,IAGjC,EAEO6sH,CACX,CAjGqB,CAiGnBjyE,IAEEyyE,GAAY,SAAUrB,GACtB,SAASqB,EAASv2I,GACdk1I,EAAQ9xI,KAAKvK,MACbA,KAAKmH,QAAUA,EACfnH,KAAK29I,KAAO,IAAIT,EACpB,CAyBA,OAvBAv1B,EAAa+1B,EAAUrB,GACvBqB,EAASr1I,UAAY5H,OAAO2mD,OAAQi1F,GAAWA,EAAQh0I,WACvDq1I,EAASr1I,UAAUC,YAAco1I,EACjCA,EAAS31I,GAAK21I,EAASr1I,UACvBq1I,EAAS31I,GAAGI,KAAOu1I,EAAS31I,GAAGO,YAE/Bo1I,EAASr1I,UAAU6xI,SAAW,SAAmBxlH,GAC7C10B,KAAK6L,QAAU6oB,EACf10B,KAAK29I,KAAKzD,SAASxlH,EAAWkpH,kBAClC,EAEAF,EAASr1I,UAAUmuD,MAAQ,WACvBmgF,GAAStuI,UAAUmuD,MAAMjsD,KAAKvK,KAClC,EAEA09I,EAASr1I,UAAU+H,SAAW,WAC1B,OAAOpQ,KAAK29I,KAAKxtI,SAAWnQ,KAAKq6I,gBACrC,EAEAqD,EAASr1I,UAAUszI,iBAAmB,SAA2Bh3I,GAC7D3E,KAAK29I,KAAKhC,iBAAiBh3I,EAC/B,EAEO+4I,CACX,CA/Be,CA+BbzyE,IAEE4yE,GAAc,CACdC,IAAK,CAAE,IAAK,KACZC,KAAM,CAAE,EAAG,KACXC,SAAU,CAAE,EAAG,KACfC,QAAS,CAAE,IAAK,IAAK,IAAK,KAC1BC,YAAa,CAAE,EAAG,IAAK,IAAK,KAC5BC,eAAgB,CAAE,EAAG,IAAK,IAAK,IAAK,IAAK,MAGzCC,GAAQ,QACRC,GAAO,OAEPC,GAAgB,CAChB,eAAgB,eAChB,eAAgB,SAChB,eAAgB,eAChB,iBAAkB,kBAGlBC,GAAY,SAAUlC,GACtB,SAASkC,IACLlC,EAAQj0I,MAAMpI,KAAMsH,UACxB,CAiJA,OA/IAqgH,EAAa42B,EAAUlC,GACvBkC,EAASl2I,UAAY5H,OAAO2mD,OAAQi1F,GAAWA,EAAQh0I,WACvDk2I,EAASl2I,UAAUC,YAAci2I,EACjCA,EAASx2I,GAAKw2I,EAASl2I,UACvBk2I,EAASx2I,GAAGI,KAAOo2I,EAASx2I,GAAGO,YAE/Bi2I,EAASl2I,UAAUiuH,eAAiB,WAChCt2H,KAAK4jB,KAAK,IAAK5jB,KAAKw+I,cACpBx+I,KAAK+2I,YACT,EAEAwH,EAASl2I,UAAUguH,cAAgB,SAAwB1xH,GACvD,OAAQA,EAAEohB,OACV,IAAK,OACGphB,EAAE+D,MACF1I,KAAKw6I,QAAQx6I,KAAKy+I,QAAQ95I,EAAE+D,QAE5B1I,KAAKiyB,WAAW,QAEpB,MAEJ,IAAK,aACDjyB,KAAKw6I,QAAQx6I,KAAKy+I,QAAQ,CAAExtB,MAAOtsH,EAAE+D,SACrC,MAEJ,IAAK,SACG/D,EAAE+D,MACF1I,KAAKw6I,QAAQx6I,KAAK0+I,UAAU/5I,EAAE+D,QAE9B1I,KAAKiyB,WAAW,UAEpB,MAEJ,IAAK,YACDjyB,KAAK86I,gBAAgBn2I,EAAE+D,OACvB,MAEJ,QACI,IAAItG,EAAOk8I,GAAc35I,EAAEohB,OACvB3jB,GACApC,KAAK4jB,KAAKxhB,EAAMuC,EAAE+D,OAK1B1I,KAAKu6I,2BAA2B51I,GAEhC03I,EAAQh0I,UAAUguH,cAAc9rH,KAAKvK,KAAM2E,EAC/C,EAEA45I,EAASl2I,UAAUs+C,QAAU,WACrB3mD,KAAK6L,UACL7L,KAAK6L,QAAQ63B,YAAc1jC,KAAK42I,WAAWjwF,UAEnD,EAEA43F,EAASl2I,UAAUm2I,WAAa,WAC5B,OAAOx+I,KAAK42I,WAAWnlI,SA13BZ,SA03BsCktI,CACrD,EAEAJ,EAASl2I,UAAUq2I,UAAY,SAAoB9e,GAC/C,IAAI0Y,EAAQ,GAmBZ,OAjBI1Y,IAAWrH,EAAcqH,EAAO3O,QAChCqnB,EAAM32I,KAAK,CAAE,SAAUi+H,EAAO3O,QAC9BqnB,EAAM32I,KAAK,CAAE,eAAgBi+H,EAAO7zH,QACpCusI,EAAM32I,KAAK,CAAE,iBAAkB3B,KAAK4+I,cAAchf,KAClD0Y,EAAM32I,KAAK,CAAE,kBAAmBi+H,EAAO4O,WAEnC1X,EAAQ8I,EAAO7oG,UACfuhH,EAAM32I,KAAK,CAAE,iBAAkBi+H,EAAO7oG,UAGtC+/F,EAAQ8I,EAAOif,WACfvG,EAAM32I,KAAK,CAAE,mBAAoB3B,KAAK8+I,eAAelf,MAGzD0Y,EAAM32I,KAAK,CAAE,SAAU+2I,KAGpBJ,CACX,EAEAiG,EAASl2I,UAAU02I,aAAe,WAC9B,OAAO1G,GACHr4I,KAAK0+I,UAAU1+I,KAAK42I,WAAWzvI,QAAQy4H,QAE/C,EAEA2e,EAASl2I,UAAUy2I,eAAiB,SAAyBlf,GACzD,IAAIif,EAAWjf,EAAOif,SAClB9yI,EAAQ6zH,EAAO7zH,MAEnB,QAFwC,IAAVA,IAAoBA,EAAQ,GAEtD8yI,GAAYA,IAAaT,GAAO,CAIhC,IAHA,IAAIY,EAAYnB,GAAYgB,EAAShmI,eACjC/B,EAAS,GAEJvP,EAAI,EAAGA,EAAIy3I,EAAUx3I,OAAQD,IAClCuP,EAAOnV,KAAKq9I,EAAUz3I,GAAKwE,GAG/B,OAAO+K,EAAOjM,KAAK,IACvB,CACJ,EAEA0zI,EAASl2I,UAAUu2I,cAAgB,SAAwBhf,GACvD,IAAIif,EAAWjf,EAAOif,SAClBI,EAAUrf,EAAOqf,QAErB,OAAQJ,GAAyB,UAAbA,EAAwBR,GAAOY,CACvD,EAEAV,EAASl2I,UAAUo2I,QAAU,SAAkB/qH,GAC3C,IAAI4kH,EAAQ,GAaZ,OAZM5kH,GAA0B,aAAlBA,EAAKoC,WACXpC,IAAS6kG,EAAc7kG,EAAKu9F,QAC5BqnB,EAAM32I,KAAK,CAAE,OAAQ+xB,EAAKu9F,QAEtB6F,EAAQpjG,EAAKqD,UACbuhH,EAAM32I,KAAK,CAAE,eAAgB+xB,EAAKqD,WAGtCuhH,EAAM32I,KAAK,CAAE,OAAQ+2I,MAItBJ,CACX,EAEAiG,EAASl2I,UAAU62I,WAAa,WAC5B,OAAO7G,GACHr4I,KAAKy+I,QAAQz+I,KAAK42I,WAAWzvI,QAAQusB,MAE7C,EAEA6qH,EAASl2I,UAAU+H,SAAW,WAC1B,MAAO,SAAYpQ,KAAKk7I,WAAc,IAAOl7I,KAAKu4I,cAAiB,IAAOv4I,KAAKi7I,gBAAmB,IAAO7C,GAAW,IAAKp4I,KAAKw+I,cAChHx+I,KAAK++I,eAAmB/+I,KAAKk/I,aAAiBl/I,KAAK67I,oBAAwB77I,KAAK66I,kBACrF76I,KAAKm7I,kBAAqB,IAAOn7I,KAAKo7I,aACtCp7I,KAAKq7I,kBAAqB,IAAOr7I,KAAKs7I,4BACtCt7I,KAAKw7I,oBAAuB,WACzC,EAEO+C,CACX,CArJe,CAqJbtzE,IAEEk0E,GAAW,SAAUC,GACrB,SAASD,IACLC,EAAYh3I,MAAMpI,KAAMsH,UAC5B,CAYA,OAVAqgH,EAAaw3B,EAASC,GACtBD,EAAQ92I,UAAY5H,OAAO2mD,OAAQg4F,GAAeA,EAAY/2I,WAC9D82I,EAAQ92I,UAAUC,YAAc62I,EAChCA,EAAQp3I,GAAKo3I,EAAQ92I,UACrB82I,EAAQp3I,GAAGI,KAAOg3I,EAAQp3I,GAAGO,YAE7B62I,EAAQ92I,UAAUm2I,WAAa,WAC3B,OAAOx+I,KAAK42I,WAAW1G,SAASz+H,SA/9BrB,EAg+Bf,EAEO0tI,CACX,CAhBc,CAgBZZ,IAEEc,GAAc,SAAUD,GACxB,SAASC,IACLD,EAAYh3I,MAAMpI,KAAMsH,UAC5B,CAiCA,OA/BAqgH,EAAa03B,EAAYD,GACzBC,EAAWh3I,UAAY5H,OAAO2mD,OAAQg4F,GAAeA,EAAY/2I,WACjEg3I,EAAWh3I,UAAUC,YAAc+2I,EACnCA,EAAWt3I,GAAKs3I,EAAWh3I,UAC3Bg3I,EAAWt3I,GAAGI,KAAOk3I,EAAWt3I,GAAGO,YAEnC+2I,EAAWh3I,UAAUiuH,eAAiB,WAClC,IAAI/3C,EAASv+E,KAAKu+E,SAClBv+E,KAAK4jB,KAAK,KAAM26D,EAAOn5E,GACvBpF,KAAK4jB,KAAK,KAAM26D,EAAOp6E,GACvBnE,KAAK4jB,KAAK,IAAK5jB,KAAKssB,UACpBtsB,KAAK+2I,YACT,EAEAsI,EAAWh3I,UAAUk2E,OAAS,WAC1B,OAAOv+E,KAAK42I,WAAWjV,WAAWpjD,MACtC,EAEA8gE,EAAWh3I,UAAUikB,OAAS,WAC1B,OAAOtsB,KAAK42I,WAAWjV,WAAWr1G,MACtC,EAEA+yH,EAAWh3I,UAAU+H,SAAW,WAC5B,MAAO,WAAcpQ,KAAKk7I,WAAc,IAAOl7I,KAAKu4I,cAAiB,IAAOv4I,KAAKi7I,gBACrE,OAAUj7I,KAAKu+E,SAAU,EAAI,SAAYv+E,KAAKu+E,SAAU,EAAI,QAAWv+E,KAAKssB,SAAY,IACvFtsB,KAAK++I,eAAkB,IAAO/+I,KAAKk/I,aAAgB,IAAOl/I,KAAK67I,oBAC/D77I,KAAKm7I,kBAAqB,IAAOn7I,KAAKo7I,aACtCp7I,KAAKq7I,kBAAqB,IAAOr7I,KAAKs7I,4BACtCt7I,KAAKw7I,oBAAuB,IAAOx7I,KAAK66I,kBAAqB,aAC9E,EAEOwE,CACX,CArCiB,CAqCfd,IAEEe,GAAa,SAAUjD,GACvB,SAASiD,IACLjD,EAAQj0I,MAAMpI,KAAMsH,UACxB,CAkCA,OAhCAqgH,EAAa23B,EAAWjD,GACxBiD,EAAUj3I,UAAY5H,OAAO2mD,OAAQi1F,GAAWA,EAAQh0I,WACxDi3I,EAAUj3I,UAAUC,YAAcg3I,EAClCA,EAAUv3I,GAAKu3I,EAAUj3I,UACzBi3I,EAAUv3I,GAAGI,KAAOm3I,EAAUv3I,GAAGO,YAEjCg3I,EAAUj3I,UAAU+H,SAAW,WAC3B,MAAQ,MAAQpQ,KAAKk7I,WACjBl7I,KAAK66I,kBACL76I,KAAKm7I,kBACLn7I,KAAKu4I,cACLv4I,KAAKi7I,gBACLj7I,KAAKo7I,aACLp7I,KAAKq7I,kBACLr7I,KAAKs7I,4BACLt7I,KAAKw7I,oBACLx7I,KAAK67I,qBAAuB,IAAO77I,KAAKq6I,iBAAoB,MACpE,EAEAiF,EAAUj3I,UAAUguH,cAAgB,SAAwB1xH,GACxD,IAAIohB,EAAQphB,EAAEohB,MACVrd,EAAQ/D,EAAE+D,MAEA,cAAVqd,GACA/lB,KAAK86I,gBAAgBpyI,GAGzB1I,KAAKu6I,2BAA2B51I,GAEhC03I,EAAQh0I,UAAUguH,cAAc9rH,KAAKvK,KAAM2E,EAC/C,EAEO26I,CACX,CAtCgB,CAsCdr0E,IAEEs0E,GAAa,SAAUH,GACvB,SAASG,IACLH,EAAYh3I,MAAMpI,KAAMsH,UAC5B,CA4DA,OA1DAqgH,EAAa43B,EAAWH,GACxBG,EAAUl3I,UAAY5H,OAAO2mD,OAAQg4F,GAAeA,EAAY/2I,WAChEk3I,EAAUl3I,UAAUC,YAAci3I,EAClCA,EAAUx3I,GAAKw3I,EAAUl3I,UACzBk3I,EAAUx3I,GAAGI,KAAOo3I,EAAUx3I,GAAGO,YAEjCi3I,EAAUl3I,UAAUiuH,eAAiB,WACjCt2H,KAAKw6I,QAAQx6I,KAAKw/I,eAClBx/I,KAAK+2I,YACT,EAEAwI,EAAUl3I,UAAUguH,cAAgB,SAAwB1xH,GACxC,QAAZA,EAAEohB,OACF/lB,KAAKw6I,QAAQx6I,KAAKy/I,aAGtBL,EAAY/2I,UAAUguH,cAAc9rH,KAAKvK,KAAM2E,EACnD,EAEA46I,EAAUl3I,UAAUm3I,YAAc,WAC9B,IAAIlzD,EAAOtsF,KAAK42I,WAAWtqD,OACvBsxC,EAAKtxC,EAAKixC,UAEd,MAAO,CACH,CAAE,IAAKK,EAAGx4H,GACV,CAAE,IAAKw4H,EAAGz5H,GACV,CAAE,QAASmoF,EAAKvgF,QAAU,MAC1B,CAAE,SAAUugF,EAAKtgF,SAAW,MAEpC,EAEAuzI,EAAUl3I,UAAUq3I,eAAiB,WACjC,OAAOrH,GAAcr4I,KAAKw/I,cAC9B,EAEAD,EAAUl3I,UAAUo3I,UAAY,SAAoB1wE,GAChD,IAAI/nE,EAAMhH,KAAK42I,WAAW5vI,MAM1B,OAJI+nE,IACA/nE,EAAMunB,EAAWvnB,IAGd,CAAE,CAAE,aAAcA,GAC7B,EAEAu4I,EAAUl3I,UAAUs3I,aAAe,WAC/B,OAAOtH,GAAcr4I,KAAKy/I,WAAU,GACxC,EAEAF,EAAUl3I,UAAU+H,SAAW,WAC3B,MAAO,qCAAwCpQ,KAAKk7I,WAAc,IAAOl7I,KAAKu4I,cAAiB,IAAOv4I,KAAK66I,kBAAqB,IAAO76I,KAAKi7I,gBACpIj7I,KAAK0/I,iBAAoB,IAAO1/I,KAAK2/I,eAAkB,IAAO3/I,KAAK67I,oBACnE77I,KAAKm7I,kBAAqB,IAAOn7I,KAAKo7I,aACrCp7I,KAAKq7I,kBAAqB,IAAOr7I,KAAKs7I,4BACtCt7I,KAAKw7I,oBAJP,YAMX,EAEO+D,CACX,CAhEgB,CAgEdhB,IAEEqB,GAAiB,SAAUR,GAC3B,SAASQ,IACLR,EAAYh3I,MAAMpI,KAAMsH,UAC5B,CAYA,OAVAqgH,EAAai4B,EAAeR,GAC5BQ,EAAcv3I,UAAY5H,OAAO2mD,OAAQg4F,GAAeA,EAAY/2I,WACpEu3I,EAAcv3I,UAAUC,YAAcs3I,EACtCA,EAAc73I,GAAK63I,EAAcv3I,UACjCu3I,EAAc73I,GAAGI,KAAOy3I,EAAc73I,GAAGO,YAEzCs3I,EAAcv3I,UAAUm2I,WAAa,WACjC,OAAOx+I,KAAK42I,WAAWnlI,SAloCZ,IAkoCsC,WACrD,EAEOmuI,CACX,CAhBoB,CAgBlBrB,IAEEsB,GAAY,SAAUT,GACtB,SAASS,IACLT,EAAYh3I,MAAMpI,KAAMsH,UAC5B,CA6CA,OA3CAqgH,EAAak4B,EAAUT,GACvBS,EAASx3I,UAAY5H,OAAO2mD,OAAQg4F,GAAeA,EAAY/2I,WAC/Dw3I,EAASx3I,UAAUC,YAAcu3I,EACjCA,EAAS93I,GAAK83I,EAASx3I,UACvBw3I,EAAS93I,GAAGI,KAAO03I,EAAS93I,GAAGO,YAE/Bu3I,EAASx3I,UAAUiuH,eAAiB,WAChC,IAAIqL,EAAW3hI,KAAK42I,WAAWjV,WAC/B3hI,KAAK4jB,KAAK,IAAK+9G,EAAS3oF,OAAO5zC,GAC/BpF,KAAK4jB,KAAK,IAAK+9G,EAAS3oF,OAAO70C,GAC/BnE,KAAK4jB,KAAK,QAAS+9G,EAAS3xH,KAAKjE,OACjC/L,KAAK4jB,KAAK,SAAU+9G,EAAS3xH,KAAKhE,QAClChM,KAAK4jB,KAAK,KAAM+9G,EAASzE,aAAa,IACtCl9H,KAAK4jB,KAAK,KAAM+9G,EAASzE,aAAa,IACtCl9H,KAAK+2I,YACT,EAEA8I,EAASx3I,UAAU2H,KAAO,WACtB,OAAOhQ,KAAK42I,WAAWjV,WAAW3xH,IACtC,EAEA6vI,EAASx3I,UAAU2wC,OAAS,WACxB,OAAOh5C,KAAK42I,WAAWjV,WAAW3oF,MACtC,EAEA6mG,EAASx3I,UAAU2G,GAAK,WACpB,OAAOhP,KAAK42I,WAAWjV,WAAWzE,aAAa,EACnD,EAEA2iB,EAASx3I,UAAUy3H,GAAK,WACpB,OAAO9/H,KAAK42I,WAAWjV,WAAWzE,aAAa,EACnD,EAEA2iB,EAASx3I,UAAU+H,SAAW,WAC1B,MAAO,SAAYpQ,KAAKk7I,WAAc,IAAOl7I,KAAKu4I,cAAiB,IAAOv4I,KAAKi7I,gBAAmB,OAAUj7I,KAAKg5C,SAAU,EAAI,QAAWh5C,KAAKg5C,SAAU,EAAlJ,SACeh5C,KAAKgP,KAAQ,SAAYhP,KAAK8/H,KAD7C,YAEkB9/H,KAAKgQ,OAAY,MAAI,aAAgBhQ,KAAKgQ,OAAa,OAAI,KAAQhQ,KAAK++I,eAAkB,IACtG/+I,KAAKk/I,aAAgB,IAAOl/I,KAAK67I,oBAAuB,IAAO77I,KAAK66I,kBACpE76I,KAAKm7I,kBAAqB,IAAOn7I,KAAKo7I,aACtCp7I,KAAKq7I,kBAAqB,IAAOr7I,KAAKs7I,4BACtCt7I,KAAKw7I,oBAAuB,KAC7C,EAEOqE,CACX,CAjDe,CAiDbtB,IAEEuB,GAAe,wBAEnB,SAASC,GAAej/G,GACpB,IAAKA,GAAwB,iBAATA,IAAsBg/G,GAAavyI,KAAKuzB,GACxD,OAAOA,EAGX,IAAIj1B,EAAUk0I,GAAevkG,SAG7B,OAFAskG,GAAaluI,UAAY,EAElBkvB,EAAKr+B,QAAQq9I,IAAc,SAAUpvI,GAGxC,OAFA7E,EAAQkT,UAAYrO,EAEb7E,EAAQ63B,aAAe73B,EAAQsmE,SAC1C,GACJ,CAEwB,oBAAbxiE,WACPowI,GAAevkG,SAAW7rC,SAASkP,cAAc,SAGrD,IAAImhI,GAAY,SAAUZ,GACtB,SAASY,IACLZ,EAAYh3I,MAAMpI,KAAMsH,UAC5B,CA8EA,OA5EAqgH,EAAaq4B,EAAUZ,GACvBY,EAAS33I,UAAY5H,OAAO2mD,OAAQg4F,GAAeA,EAAY/2I,WAC/D23I,EAAS33I,UAAUC,YAAc03I,EACjCA,EAASj4I,GAAKi4I,EAAS33I,UACvB23I,EAASj4I,GAAGI,KAAO63I,EAASj4I,GAAGO,YAE/B03I,EAAS33I,UAAUiuH,eAAiB,WAChC,IAAIjhC,EAAMr1F,KAAKq1F,MACfr1F,KAAK4jB,KAAK,IAAKyxE,EAAIjwF,GACnBpF,KAAK4jB,KAAK,IAAKyxE,EAAIlxF,GACnBnE,KAAK+2I,YACT,EAEAiJ,EAAS33I,UAAUguH,cAAgB,SAAwB1xH,GACvC,SAAZA,EAAEohB,OACF/lB,KAAK4jB,KAAK,QAAS20H,GAAYv4I,KAAK+6I,aACpC/6I,KAAKs2H,kBACc,YAAZ3xH,EAAEohB,OACTq5H,EAAY/2I,UAAUs+C,QAAQp8C,KAAKvK,KAAMA,KAAK42I,WAAWjwF,WAG7Dy4F,EAAY/2I,UAAUguH,cAAc9rH,KAAKvK,KAAM2E,EACnD,EAEAq7I,EAAS33I,UAAU0yI,SAAW,SAAmBhsE,GAC7C,IAAI5hE,EAAQiyI,EAAY/2I,UAAU0yI,SAASxwI,KAAKvK,KAAM+uE,GAClDgpB,EAAO/3F,KAAK42I,WAAWzvI,QAAQ4wF,KAQnC,OANIhpB,IACAgpB,EAAOxpE,EAAWwpE,IAGtB5qF,EAAMxL,KAAK,CAAE,OAAQo2F,GAAQ,CAAE,cAAe,QAEvC5qF,CACX,EAEA6yI,EAAS33I,UAAUgtF,IAAM,WACrB,IAAIA,EAAMr1F,KAAK42I,WAAWtpI,WACtB0C,EAAOhQ,KAAK42I,WAAWrxD,UAC3B,OAAO8P,EAAIjuF,QAAQ64I,KAAK5qD,EAAIlxF,EAAI6L,EAAKilH,SACzC,EAEA+qB,EAAS33I,UAAU63I,cAAgB,WAC/B,IAAIv5F,EAAU3mD,KAAK42I,WAAWjwF,UAI9B,OAHAA,EAAUo5F,GAAep5F,GACzBA,EAAUp4B,EAAWo4B,GAEdgvE,EAAUjB,cAAc/tE,EACnC,EAEAq5F,EAAS33I,UAAU83I,iBAAmB,WAClC,IAAIhuD,EAMJ,QAJKnyF,KAAKmH,SAAW,CAAC,GAAGi5I,KAASxqB,EAAe1xG,MAAQ0xG,EAAe7xG,OACpEouE,EAAS,OAGNimD,GAAW,cAAejmD,EACrC,EAEA6tD,EAAS33I,UAAUg4I,iBAAmB,WAClC,IAAIC,EAAatgJ,KAAK42I,WAAWzvI,QAAQm5I,WACzC,OAAOA,EAAalI,GAAW,cAAekI,GAAc,EAChE,EAEAN,EAAS33I,UAAU+H,SAAW,WAC1B,MAAO,SAAYpQ,KAAKk7I,WAAc,IAAOl7I,KAAKmgJ,mBAAsB,IAAOngJ,KAAKu4I,cAAiB,IAAOv4I,KAAKi7I,gBACrG,MAASj7I,KAAKq1F,MAAO,EAAI,QAAWr1F,KAAKq1F,MAAO,EAAI,KAAQr1F,KAAK++I,eAAkB,IAAO/+I,KAAK66I,kBAAqB,IAAO76I,KAAK67I,oBAC1H77I,KAAKqgJ,mBACLrgJ,KAAKk/I,aACVl/I,KAAKm7I,kBAAqB,IAAOn7I,KAAKo7I,aACtCp7I,KAAKq7I,kBAAqB,IAAOr7I,KAAKs7I,4BACtCt7I,KAAKw7I,oBAAuB,IAAOx7I,KAAKkgJ,gBAAmB,SAC5E,EAEOF,CACX,CAlFe,CAkFbzB,IAEF/F,GAASpW,IAAM+c,GACf3G,GAASrY,OAASkf,GAClB7G,GAAS/H,MAAQ6O,GACjB9G,GAASnI,MAAQkP,GACjB/G,GAASpJ,UAAYwQ,GACrBpH,GAASjK,KAAOgQ,GAChB/F,GAASvb,KAAO4iB,GAChBrH,GAASrI,KAAO6P,GAuBhB,IAAIO,GAAa,SAAUC,GACvB,SAAStJ,EAAQrrI,EAAS1E,GACtBq5I,EAAYj2I,KAAKvK,KAAM6L,EAAS1E,GAEhCnH,KAAKygJ,MAAQ,IAAI/C,GAAS/6I,EAAEI,OAAO,CAC/Bq9I,IA1BF,QA0BO/mB,EAAcxtH,EAAS,aAAawoC,WAC1Cr0C,KAAKmH,UAERuyI,GAAY15I,KAAK6L,QAAS7L,KAAK0gJ,UAAU,KAEzC1gJ,KAAK2gJ,aAAe3gJ,KAAK6L,QAAQ+xI,kBACjC59I,KAAK2gJ,aAAaxzI,MAAMpB,MAAQ,OAChC/L,KAAK2gJ,aAAaxzI,MAAMnB,OAAS,OACjChM,KAAK2gJ,aAAaxzI,MAAMmgB,SAAW,SAhC3C,SAAuBzhB,GACnB,IAAI+0I,EAEJ,IACIA,EAAM/0I,EAAQg1I,aAAeh1I,EAAQg1I,eAAiB,IAC1D,CAAE,MAAOl8I,GAAK,CAEd,GAAIi8I,EAAK,CACL,IAAIp0H,GAASo0H,EAAIj8I,EAAI,EACjBugB,GAAQ07H,EAAIpzF,EAAI,EAChBrgD,EAAQtB,EAAQsB,MAEP,IAATqf,GAAsB,IAARtH,IACd/X,EAAMqf,KAAOA,EAAO,KACpBrf,EAAM+X,IAAMA,EAAM,KAE1B,CACJ,CAiBQ47H,CAAc9gJ,KAAK2gJ,cAEnB3gJ,KAAKygJ,MAAMvG,SAASl6I,KAAK2gJ,cAEzB1nB,EAAWj5H,KAAK6L,QAAS,CACrBqe,MAAOlqB,KAAK+iF,OACZg+D,UAAW/gJ,KAAK0mH,YAChBs6B,SAAUhhJ,KAAK2mH,YACf38F,UAAWhqB,KAAKs3I,aAGpBt3I,KAAKmqB,QACT,CAEAw9F,EAAauvB,EAASsJ,GACtBtJ,EAAQ7uI,UAAY5H,OAAO2mD,OAAQo5F,GAAeA,EAAYn4I,WAC9D6uI,EAAQ7uI,UAAUC,YAAc4uI,EAChCA,EAAQnvI,GAAKmvI,EAAQ7uI,UACrB6uI,EAAQnvI,GAAGI,KAAO+uI,EAAQnvI,GAAGO,YAE7B,IAAI22H,EAAqB,CAAEv5H,KAAM,CAAC,GA4ElC,OA1EAu5H,EAAmBv5H,KAAKuqB,IAAM,WAC1B,MAAO,KACX,EAEAinH,EAAQ7uI,UAAUrG,QAAU,WACpBhC,KAAKygJ,QACLzgJ,KAAKygJ,MAAMz+I,UACXhC,KAAKygJ,MAAQ,KACbzgJ,KAAK2gJ,aAAe,KACpBlnB,EAAaz5H,KAAK6L,QAAS,CACvBqe,MAAOlqB,KAAK+iF,OACZg+D,UAAW/gJ,KAAK0mH,YAChBs6B,SAAUhhJ,KAAK2mH,YACf38F,UAAWhqB,KAAKs3I,cAIxBkJ,EAAYn4I,UAAUrG,QAAQuI,KAAKvK,KACvC,EAEAk3I,EAAQ7uI,UAAU+nC,UAAY,SAAoBtyB,GAC9C,IAAI+6E,EAAWx1F,KAAKiT,MAAMwH,EAAO1Y,GAAM,IAAO/B,KAAKiT,MAAMwH,EAAO3Z,GAAM,IAAOnE,KAAKyyB,MAAW,MAAI,IAAOzyB,KAAKyyB,MAAY,OAEzHzyB,KAAKulH,QAAUznG,EACf9d,KAAK2gJ,aAAah7H,aAAa,UAAWkzE,EAC9C,EAEAq+C,EAAQ7uI,UAAUovI,KAAO,SAAe5rI,GACpC20I,EAAYn4I,UAAUovI,KAAKltI,KAAKvK,KAAM6L,GACtC7L,KAAKygJ,MAAM50E,KAAK,CAAEhgE,GACtB,EAEAqrI,EAAQ7uI,UAAUmuD,MAAQ,WACtBgqF,EAAYn4I,UAAUmuD,MAAMjsD,KAAKvK,MACjCA,KAAKygJ,MAAMjqF,OACf,EAEA0gF,EAAQ7uI,UAAUwvF,IAAM,WACpB,MAAO,yBAA2B73F,KAAK0gJ,WAC3C,EAEAxJ,EAAQ7uI,UAAU+uI,aAAe,WAC7B,IACI6J,EADMjhJ,KACOu3I,QACbz5H,EAFM9d,KAEOulH,QAEjB,GAAIznG,EAAQ,CACR,IAAI6O,EAAO,IAAI8jH,GACf9jH,EAAK4oB,SAAS5zC,KAAKs/I,GAEnBt0H,EAAKgnB,UACDorF,KAAc3uF,WAAWtyB,EAAO1Y,GAAI0Y,EAAO3Z,IAG/C88I,EAASt0H,CACb,CAEA,OAAOs0H,CACX,EAEA/J,EAAQ7uI,UAAUqqB,QAAU,WACpB1yB,KAAKulH,SACLvlH,KAAKowC,UAAUpwC,KAAKulH,QAE5B,EAEA2xB,EAAQ7uI,UAAUq4I,UAAY,SAAoBQ,GAG9C,MAAQ,SAF0B,iBAAdA,EAAyBA,EACzC,yDACuB,UAAYzI,GAAS,8DAAiEz4I,KAAKygJ,MAAMtwI,SAAY,QAC5I,EAEA1P,OAAOs8H,iBAAkBma,EAAQ7uI,UAAW42H,GAErCiY,CACX,CAhHgB,CAgHdF,IAEEmK,GAAa,CAAC,EAEdC,GAAU,SAAUvH,GACpB,SAAS5uE,EAAK2rE,GACViD,EAAYtvI,KAAKvK,KAAM42I,GACnBA,GACA52I,KAAKqhJ,UAEb,CA+GA,OA7GA15B,EAAa18C,EAAM4uE,GACnB5uE,EAAK5iE,UAAY5H,OAAO2mD,OAAQyyF,GAAeA,EAAYxxI,WAC3D4iE,EAAK5iE,UAAUC,YAAc2iE,EAC7BA,EAAKljE,GAAKkjE,EAAK5iE,UACf4iE,EAAKljE,GAAGI,KAAO8iE,EAAKljE,GAAGO,YAEvB2iE,EAAK5iE,UAAUg5I,SAAW,WACtB,IAAInnG,EAAOl6C,KAAK42I,WAAW18F,OACvBA,IACAl6C,KAAKk6C,KAAOA,EACZA,EAAK+7E,YAAYj2H,MAEzB,EAEAirE,EAAK5iE,UAAUmuD,MAAQ,WACfx2D,KAAK42I,YACL52I,KAAK42I,WAAW1gB,eAAel2H,MAGnCA,KAAKshJ,YAELzH,EAAYxxI,UAAUmuD,MAAMjsD,KAAKvK,KACrC,EAEAirE,EAAK5iE,UAAUi5I,UAAY,WACnBthJ,KAAKk6C,OACLl6C,KAAKk6C,KAAKg8E,eAAel2H,aAClBA,KAAKk6C,KAEpB,EAEA+wB,EAAK5iE,UAAUk5I,QAAU,SAAkBC,GACnCxhJ,KAAKk6C,OACLsnG,EAAIC,YAEW,IAAIN,GAAWnhJ,KAAKk6C,KAAKpkB,UAAU91B,KAAKk6C,MAC9CwnG,aAAaF,EAAKxhJ,KAAKk6C,MAEhCsnG,EAAItnG,KAAK,WAEjB,EAEA+wB,EAAK5iE,UAAUguH,cAAgB,SAAwB1xH,GACnC,SAAZA,EAAEohB,QACF/lB,KAAKshJ,YACLthJ,KAAKqhJ,YAGTxH,EAAYxxI,UAAUguH,cAAc9rH,KAAKvK,KAAM2E,EACnD,EAEAsmE,EAAK5iE,UAAUs5I,aAAe,SAAuBH,GACjD,GAAIxhJ,KAAK42I,WAAY,CACjB,IAAIjjG,EAAY3zC,KAAK42I,WAAWjjG,YAC5BA,GACA6tG,EAAI7tG,UAAUvrC,MAAMo5I,EAAK7tG,EAAUomF,SAAS/lE,QAAQ,GAE5D,CACJ,EAEAiX,EAAK5iE,UAAUu5I,aAAe,SAAuBjpH,EAAU08D,EAAKwsD,GAGhE,IAFA,IAESt6I,EAAI,EAAGA,EAAIoxB,EAASnxB,OAAQD,IAAK,CACtC,IAAIqvI,EAAaj+G,EAASpxB,GACtBguC,EAAWqhG,EAAWrhG,SAEtBykG,EAAY,IAAImH,GAAWvK,EAAW9gH,UAAU8gH,EAAYiL,GAE5DtsG,GAAYA,EAAS/tC,OAAS,GAC9BwyI,EAAUnuE,KAAKt2B,EAAU8/C,EAAKwsD,GAG9B/qB,EAAQzhC,GAZDr1F,KAaE4wI,SAASoJ,EAAW3kD,GAbtBr1F,KAeEm6C,OAAO6/F,EAExB,CACJ,EAEA/uE,EAAK5iE,UAAUwjE,KAAO,SAAelzC,EAAU08D,EAAKwsD,GAChD7hJ,KAAK4hJ,aAAajpH,EAAU08D,EAAKwsD,GAEjC7hJ,KAAK+2I,YACT,EAEA9rE,EAAK5iE,UAAUy5I,WAAa,SAAqBN,GAC7C,GAAIxhJ,KAAK42I,WAAY,CACjB,IAAI7/G,EAAU/2B,KAAK42I,WAAW7/G,UAC1B+/F,EAAQ//F,IACR/2B,KAAK+hJ,YAAYP,EAAKzqH,EAE9B,CACJ,EAEAk0C,EAAK5iE,UAAU05I,YAAc,SAAsBP,EAAK94I,GACpD,IAAIs5I,EAAWt5I,EACXs5I,GAAYR,EAAIO,cAChBC,GAAYR,EAAIO,aAEpBP,EAAIO,YAAcC,CACtB,EAEA/2E,EAAK5iE,UAAU2E,QAAU,WACrB,IAAIhG,EAAMhH,KAAK42I,WACf,OAAQ5vI,GAAQA,IAA+B,IAAxBA,EAAIG,QAAQ6F,OACvC,EAEOi+D,CACX,CAtHa,CAsHX0rE,IAEEsL,GAAe,SAAUlmB,GACzB,SAASujB,IACLvjB,EAAW3zH,MAAMpI,KAAMsH,UAC3B,CA8BA,OA5BAqgH,EAAa23B,EAAWvjB,GACxBujB,EAAUj3I,UAAY5H,OAAO2mD,OAAQ20E,GAAcA,EAAW1zH,WAC9Di3I,EAAUj3I,UAAUC,YAAcg3I,EAClCA,EAAUv3I,GAAKu3I,EAAUj3I,UACzBi3I,EAAUv3I,GAAGI,KAAOm3I,EAAUv3I,GAAGO,YAEjCg3I,EAAUj3I,UAAU65I,SAAW,SAAmBV,GAC9C,GAAKxhJ,KAAKgN,UAAV,CAIAw0I,EAAI9yG,OAEJ1uC,KAAK2hJ,aAAaH,GAClBxhJ,KAAKuhJ,QAAQC,GACbxhJ,KAAK8hJ,WAAWN,GAGhB,IADA,IAAI59G,EAAa5jC,KAAK4jC,WACbr8B,EAAI,EAAGA,EAAIq8B,EAAWp8B,OAAQD,IAAK,CACxC,IAAIs8B,EAAQD,EAAWr8B,GACnBs8B,EAAM72B,WACN62B,EAAMq+G,SAASV,EAEvB,CAEAA,EAAIpsG,SAhBJ,CAiBJ,EAEOkqG,CACX,CAlCkB,CAkChB/O,GAAY6Q,GAAQ,eAIlBe,GAAc,SAAUpmB,GACxB,SAAS2hB,EAAS0E,EAAQpyI,GACtB+rH,EAAWxxH,KAAKvK,MAEhBA,KAAKoiJ,OAASA,EACdpiJ,KAAKgQ,KAAOA,EACZhQ,KAAKwhJ,IAAMY,EAAOC,WAAW,MAE7B,IAAIC,EAAoBtiJ,KAAKuiJ,YAAY/4I,KAAKxJ,MAC9CA,KAAK+2I,WAAap2I,MAAM0kC,UAAS,WAC7B1kC,MAAMojC,eAAeu+G,EACzB,GAbU,mBAcd,CAiDA,OA/CA36B,EAAa+1B,EAAU3hB,GACvB2hB,EAASr1I,UAAY5H,OAAO2mD,OAAQ20E,GAAcA,EAAW1zH,WAC7Dq1I,EAASr1I,UAAUC,YAAco1I,EACjCA,EAAS31I,GAAK21I,EAASr1I,UACvBq1I,EAAS31I,GAAGI,KAAOu1I,EAAS31I,GAAGO,YAE/Bo1I,EAASr1I,UAAUrG,QAAU,WACzB+5H,EAAW1zH,UAAUrG,QAAQuI,KAAKvK,MAClCA,KAAKoiJ,OAAS,KACdpiJ,KAAKwhJ,IAAM,IACf,EAEA9D,EAASr1I,UAAUwjE,KAAO,SAAelzC,EAAU08D,EAAKwsD,GACpD7hJ,KAAK4hJ,aAAajpH,EAAU08D,EAAKwsD,GACjC7hJ,KAAKuiJ,aACT,EAEA7E,EAASr1I,UAAUm6I,SAAW,SAAmBzyG,GAC7C,IACIqyG,EADMpiJ,KACOoiJ,OACbpyI,EAFMhQ,KAEKgQ,KACfoyI,EAAOr2I,MAAQiE,EAAKjE,MAAQgkC,EAC5BqyG,EAAOp2I,OAASgE,EAAKhE,OAAS+jC,EAC9B/vC,KAAKwhJ,IAAIzxG,MAAMA,EAAOA,EAC1B,EAEA2tG,EAASr1I,UAAUo6I,kBAAoB,WACnC,MAAuC,iBAA5B3hJ,OAAOsf,iBACPtf,OAAOsf,iBAGX,CACX,EAEAs9H,EAASr1I,UAAUk6I,YAAc,SAAsBp7I,GACnD,GAAKnH,KAAKwhJ,IAAV,CAIA,IACIzxG,EADa5oC,GAAWA,EAAQu7I,WACX,EAAI1iJ,KAAKyiJ,oBAClCziJ,KAAKwiJ,SAASzyG,GAEd/vC,KAAKwhJ,IAAImB,UAAU,EAAG,EAAG3iJ,KAAKoiJ,OAAOr2I,MAAO/L,KAAKoiJ,OAAOp2I,QACxDhM,KAAKkiJ,SAASliJ,KAAKwhJ,IAPnB,CAQJ,EAEO9D,CACX,CA9DiB,CA8DfnN,GAAY0R,GAAa,eAEvBW,GAAY,SAAU9sB,GACtB,SAAS8sB,IACL9sB,EAASvrH,KAAKvK,MAEdA,KAAK6iJ,OAAS,EAClB,CA4CA,OA1CAl7B,EAAai7B,EAAU9sB,GACvB8sB,EAASv6I,UAAY5H,OAAO2mD,OAAQ0uE,GAAYA,EAASztH,WACzDu6I,EAASv6I,UAAUC,YAAcs6I,EACjCA,EAAS76I,GAAK66I,EAASv6I,UACvBu6I,EAAS76I,GAAGI,KAAOy6I,EAAS76I,GAAGO,YAE/Bs6I,EAASv6I,UAAUs+H,KAAO,SAAemc,EAAOnlB,GAC5C39H,KAAK6iJ,OAAOlhJ,KAAK,CACbg8H,KAAMA,EACNmlB,MAAOA,IAEXA,EAAMC,UAAY/iJ,IACtB,EAEA4iJ,EAASv6I,UAAU26I,YAAc,SAAsB7mB,GAInD,IAHA,IAAI0mB,EAAS7iJ,KAAK6iJ,OACdr7I,EAASq7I,EAAOr7I,OAChBsP,EAAS,GACJlN,EAAM,EAAGA,EAAMpC,EAAQoC,IACxBi5I,EAAOj5I,GAAK+zH,KAAKQ,cAAchC,IAC/BrlH,EAAOnV,KAAKkhJ,EAAOj5I,GAAKk5I,OAGhC,OAAOhsI,CACX,EAEA8rI,EAASv6I,UAAU80D,OAAS,SAAiB2lF,EAAOnlB,GAChD39H,KAAK2mI,KAAKmc,EAAOnlB,EACrB,EAEAilB,EAASv6I,UAAUgE,OAAS,SAAiBy2I,GAIzC,IAHA,IAAID,EAAS7iJ,KAAK6iJ,OACdr7I,EAASq7I,EAAOr7I,OAEXoC,EAAM,EAAGA,EAAMpC,EAAQoC,IAC5B,GAAIi5I,EAAOj5I,GAAKk5I,QAAUA,EAAO,CAC7BD,EAAOr4I,OAAOZ,EAAK,GACnB,KACJ,CAER,EAEOg5I,CACX,CAlDe,CAkDbh7I,GAEEq7I,GAAY,SAAUC,GACtB,SAASD,EAAS32D,GACd42D,EAAY34I,KAAKvK,MACjBA,KAAKu1C,SAAW,GAChBv1C,KAAKssF,KAAOA,CAChB,CAwEA,OAtEAq7B,EAAas7B,EAAUC,GACvBD,EAAS56I,UAAY5H,OAAO2mD,OAAQ87F,GAAeA,EAAY76I,WAC/D46I,EAAS56I,UAAUC,YAAc26I,EACjCA,EAASl7I,GAAKk7I,EAAS56I,UACvB46I,EAASl7I,GAAGI,KAAO86I,EAASl7I,GAAGO,YAE/B26I,EAAS56I,UAAU86I,SAAW,SAAmB72D,GAC7C,IAAI82D,EAAWpjJ,KAAKssF,KAChB+2D,EAAkBD,EAAS5lB,cAC3BA,EAAclxC,EAAKkxC,cACnB2lB,EAAWC,EAASpqG,OAAO5zC,GAAKknF,EAAKtzC,OAAO5zC,GAAKg+I,EAASpqG,OAAO70C,GAAKmoF,EAAKtzC,OAAO70C,GAAKq5H,EAAYp4H,GAAKi+I,EAAgBj+I,GACxHo4H,EAAYr5H,GAAKk/I,EAAgBl/I,EACrC,OAAOg/I,CACX,EAEAF,EAAS56I,UAAU26I,YAAc,SAAsB7mB,GAInD,IAHA,IAAI5mF,EAAWv1C,KAAKu1C,SAChB/tC,EAAS+tC,EAAS/tC,OAClBsP,EAASosI,EAAY76I,UAAU26I,YAAYz4I,KAAKvK,KAAMm8H,GACjDvyH,EAAM,EAAGA,EAAMpC,EAAQoC,IAC5B8sH,EAAW5/G,EAAQy+B,EAAS3rC,GAAKo5I,YAAY7mB,IAEjD,OAAOrlH,CACX,EAEAmsI,EAAS56I,UAAU80D,OAAS,SAAiB2lF,EAAOnlB,GAChD,IAAIpoF,EAAWv1C,KAAKu1C,SAChB+tG,GAAW,EAEf,GAAItjJ,KAAKmjJ,SAASxlB,GAAO,CACrB,GAAI39H,KAAK6iJ,OAAOr7I,OAAS,EACrBxH,KAAK2mI,KAAKmc,EAAOnlB,OACd,CACEpoF,EAAS/tC,QACVxH,KAAKurE,gBAGT,IAAK,IAAI3hE,EAAM,EAAGA,EAAM2rC,EAAS/tC,OAAQoC,IACrC,GAAI2rC,EAAS3rC,GAAKuzD,OAAO2lF,EAAOnlB,GAAO,CACnC2lB,GAAW,EACX,KACJ,CAGCA,GACDtjJ,KAAK2mI,KAAKmc,EAAOnlB,EAEzB,CACA2lB,GAAW,CACf,CAEA,OAAOA,CACX,EAEAL,EAAS56I,UAAUkjE,cAAgB,WAC/B,IACI+gB,EADMtsF,KACKssF,KACX/2C,EAFMv1C,KAESu1C,SACfgpC,EAAS+N,EAAK/N,SACdglE,EAAYj3D,EAAKvgF,QAAU,EAC3By3I,EAAal3D,EAAKtgF,SAAW,EAEjCupC,EAAS5zC,KACL,IAAIshJ,EAAS,IAAIhmB,GAAK,CAAE3wC,EAAKtzC,OAAO5zC,EAAGknF,EAAKtzC,OAAO70C,GAAK,CAAEo/I,EAAWC,KACrE,IAAIP,EAAS,IAAIhmB,GAAK,CAAE1+C,EAAOn5E,EAAGknF,EAAKtzC,OAAO70C,GAAK,CAAEo/I,EAAWC,KAChE,IAAIP,EAAS,IAAIhmB,GAAK,CAAE3wC,EAAKtzC,OAAO5zC,EAAGm5E,EAAOp6E,GAAK,CAAEo/I,EAAWC,KAChE,IAAIP,EAAS,IAAIhmB,GAAK,CAAE1+C,EAAOn5E,EAAGm5E,EAAOp6E,GAAK,CAAEo/I,EAAWC,KAEnE,EAEOP,CACX,CA9Ee,CA8EbL,IAEEa,GAAY,IAIZC,GAAkB,SAAU5tB,GAC5B,SAAS4tB,IACL5tB,EAASvrH,KAAKvK,MAEdA,KAAK2jJ,WACT,CA0LA,OAxLAh8B,EAAa+7B,EAAgB5tB,GAC7B4tB,EAAer7I,UAAY5H,OAAO2mD,OAAQ0uE,GAAYA,EAASztH,WAC/Dq7I,EAAer7I,UAAUC,YAAco7I,EACvCA,EAAe37I,GAAK27I,EAAer7I,UACnCq7I,EAAe37I,GAAGI,KAAOu7I,EAAe37I,GAAGO,YAE3Co7I,EAAer7I,UAAUs7I,UAAY,WACjC3jJ,KAAK4jJ,QAAU,CAAC,EAChB5jJ,KAAK69C,KAAO,IAAI+kG,GAChB5iJ,KAAK6jJ,aAAe,EACxB,EAEAH,EAAer7I,UAAUmuD,MAAQ,WAI7B,IAHA,IAEIqtF,EAAe7jJ,KAAK6jJ,aACfj6I,EAAM,EAAGA,EAAMi6I,EAAar8I,OAAQoC,IAH9B5J,KAIFqM,OAAOw3I,EAAaj6I,IAEjC5J,KAAK2jJ,WACT,EAEAD,EAAer7I,UAAUy7I,WAAa,SAAqB3nB,GACvD,IAAI4nB,GAAe/jJ,KAAK4jJ,QAASvgJ,KAAKyN,MAAOqrH,EAAM/2H,EAAIq+I,MAAiB,CAAC,GAAKpgJ,KAAKyN,MAAOqrH,EAAMh4H,EAAIs/I,KAChG3sI,EAAS9W,KAAK69C,KAAKmlG,YAAY7mB,GAE/B4nB,IACAjtI,EAASA,EAAOsH,OAAO2lI,EAAWf,YAAY7mB,KAGlDn8H,KAAKgkJ,aAAaltI,GAElBA,EAAOkF,KAAKioI,IACZ,IAAK,IAAIr6I,EAAM,EAAGA,EAAMkN,EAAOtP,OAAQoC,IACnC,GAAIkN,EAAOlN,GAAKu0H,cAAchC,GAC1B,OAAOrlH,EAAOlN,EAG1B,EAEA85I,EAAer7I,UAAU27I,aAAe,SAAuBrrH,GAG3D,IAFA,IAES/uB,EAAM,EAAGA,EAAM+uB,EAASnxB,OAAQoC,IAAO,CAM5C,IALA,IAAIiC,EAAU8sB,EAAS/uB,GACnBowC,EAAS,EACTkqG,EAAc7gJ,KAAKwmC,IAxDlB,IACD,IAwDAtR,EAAU,GAEP1sB,GACH0sB,EAAQ52B,KAAKkK,GACbA,EAAUA,EAAQc,OAGtB,KAAO4rB,EAAQ/wB,QAEXwyC,MADAnuC,EAAU0sB,EAAQxI,OACEpjB,OAASd,EAAQc,OAAO4oC,SAfrCv1C,KAeyD6jJ,cAAcluI,QAAQ9J,GAAW,GAAKq4I,EACtGA,GAnEC,IAsELvrH,EAAS/uB,GAAKu6I,QAAUnqG,CAC5B,CACJ,EAEA0pG,EAAer7I,UAAUguH,cAAgB,SAAwB1xH,GAC7C,cAAZA,EAAEohB,OAAqC,iBAAZphB,EAAEohB,OAC7B/lB,KAAKokJ,WAAWz/I,EAAEkH,QAE1B,EAEA63I,EAAer7I,UAAUiuH,eAAiB,SAAyB3xH,GAC/D3E,KAAKokJ,WAAWz/I,EAAEkH,QACtB,EAEA63I,EAAer7I,UAAU+7I,WAAa,SAAqBv4I,GAGvD,GAAyB,UAArBA,EAAQiqB,SACR,IAAK,IAAIlsB,EAAM,EAAGA,EAAMiC,EAAQ0pC,SAAS/tC,OAAQoC,IAHtC5J,KAIEokJ,WAAWv4I,EAAQ0pC,SAAS3rC,SAGrCiC,EAAQk3I,WACRl3I,EAAQk3I,UAAU12I,OAAOR,GAE7B7L,KAAKqkJ,aAAax4I,EAE1B,EAEA63I,EAAer7I,UAAUmF,IAAM,SAAcmrB,GACzC,IAAI2rH,EAAgBphJ,MAAMD,QAAQ01B,GAAYA,EAAS9xB,MAAM,GAAK,CAAE8xB,GAEpE+9F,EAAW12H,KAAK6jJ,aAAcS,GAC9BtkJ,KAAKukJ,QAAQD,EACjB,EAEAZ,EAAer7I,UAAUqoI,eAAiB,SAAyB/rI,GAG/D,GAAiB,WAAbA,EAAEyoC,OACF,IAAK,IAAIxjC,EAAM,EAAGA,EAAMjF,EAAEunD,MAAM1kD,OAAQoC,IAH7B5J,KAIEqM,OAAO1H,EAAEunD,MAAMtiD,SAG5B5J,KAAKukJ,QAAQrhJ,MAAMmF,UAAUxB,MAAM0D,KAAK5F,EAAEunD,MAAO,GAEzD,EAEAw3F,EAAer7I,UAAUk8I,QAAU,SAAkB5rH,GAKjD,IAJA,IAEI9sB,EAEG8sB,EAASnxB,OAAS,IACrBqE,EAAU8sB,EAAS5I,OACXkmG,YANGj2H,MAOc,UAArB6L,EAAQiqB,SACR4gG,EAAW/9F,EAAU9sB,EAAQ0pC,UARtBv1C,KAUEqkJ,aAAax4I,EAGlC,EAEA63I,EAAer7I,UAAUg8I,aAAe,SAAuBvB,GAC3D,IAAInlB,EAAOmlB,EAAMnlB,OACjB,GAAIA,EAAM,CACN,IAAI6mB,EAAUxkJ,KAAKykJ,WAAW9mB,GAC1Bv4H,EAAIo/I,EAAQ,GAAG,GACfrgJ,EAAIqgJ,EAAQ,GAAG,GAEnB,GAAIxkJ,KAAK0kJ,OAAOF,GACZxkJ,KAAK69C,KAAKsf,OAAO2lF,EAAOnlB,OACrB,CACH,IAAIimB,EAAU5jJ,KAAK4jJ,QACdA,EAAQx+I,KACTw+I,EAAQx+I,GAAK,CAAC,GAGbw+I,EAAQx+I,GAAGjB,KACZy/I,EAAQx+I,GAAGjB,GAAK,IAAI8+I,GAChB,IAAIhmB,GAAK,CAAE73H,EAAIq+I,GAAWt/I,EAAIs/I,IAAa,CAAEA,GAAWA,OAIhEG,EAAQx+I,GAAGjB,GAAGg5D,OAAO2lF,EAAOnlB,EAChC,CACJ,CACJ,EAEA+lB,EAAer7I,UAAUgE,OAAS,SAAiBR,GAK/C,GAFAA,EAAQqqH,eAAel2H,MAEE,UAArB6L,EAAQiqB,SAER,IADA,IAAIyf,EAAW1pC,EAAQ0pC,SACd3rC,EAAM,EAAGA,EAAM2rC,EAAS/tC,OAAQoC,IAN9B5J,KAOEqM,OAAOkpC,EAAS3rC,SAEtBiC,EAAQk3I,YACfl3I,EAAQk3I,UAAU12I,OAAOR,UAClBA,EAAQk3I,UAEvB,EAEAW,EAAer7I,UAAUq8I,OAAS,SAAiBF,GAC/C,OAAOA,EAAQ,GAAGh9I,OAAS,GAAKg9I,EAAQ,GAAGh9I,OAAS,CACxD,EAEAk8I,EAAer7I,UAAUo8I,WAAa,SAAqBn4D,GAKvD,IAJA,IAAIkxC,EAAclxC,EAAKkxC,cACnBmnB,EAAUthJ,KAAKyN,MAAM0sH,EAAYp4H,EAAIq+I,IACrCmB,EAAUvhJ,KAAKyN,MAAM0sH,EAAYr5H,EAAIs/I,IACrCe,EAAU,CAAE,GAAI,IACXp/I,EAAI/B,KAAKyN,MAAMw7E,EAAKtzC,OAAO5zC,EAAIq+I,IAAYr+I,GAAKu/I,EAASv/I,IAC9Do/I,EAAQ,GAAG7iJ,KAAKyD,GAEpB,IAAK,IAAIjB,EAAId,KAAKyN,MAAMw7E,EAAKtzC,OAAO70C,EAAIs/I,IAAYt/I,GAAKygJ,EAASzgJ,IAC9DqgJ,EAAQ,GAAG7iJ,KAAKwC,GAEpB,OAAOqgJ,CACX,EAEOd,CACX,CAhMqB,CAgMnB97I,GAEF,SAASq8I,GAAehmE,EAAIE,GACxB,OAAIF,EAAGkmE,QAAUhmE,EAAGgmE,QACT,EAEPlmE,EAAGkmE,QAAUhmE,EAAGgmE,SACR,EAGL,CACX,CAEA,IAAIU,GAAgB,SAAuBljE,GACvCA,EAAQn4E,KAAK,aAAcxJ,KAAK0mH,YAAYl9G,KAAKxJ,OACjD2hF,EAAQn4E,KAAK,aAAcxJ,KAAK2mH,YAAYn9G,KAAKxJ,OAEjDA,KAAK6L,QAAU81E,EAAQ91E,OAC3B,EA6DA,SAASi5I,GAAWtD,EAAKjyG,GACrB,IAAI49F,EAAW59F,EAAK49F,SAEpB,GAAwB,IAApBA,EAAS3lI,OAAb,CAIA,IAAI+iI,EAAU4C,EAAS,GACnBh7C,EAASo4C,EAAQp4C,SACrBqvD,EAAIhlG,OAAO21C,EAAO/sF,EAAG+sF,EAAOhuF,GAE5B,IAAK,IAAIoD,EAAI,EAAGA,EAAI4lI,EAAS3lI,OAAQD,IAAK,CAEtC4qF,GADAo4C,EAAU4C,EAAS5lI,IACF4qF,SAEjB,IACI4yD,EADU5X,EAAS5lI,EAAI,GACL6hI,aAClBD,EAAYoB,EAAQpB,YAEpB4b,GAAW5b,EACXqY,EAAIwD,cAAcD,EAAQ3/I,EAAG2/I,EAAQ5gJ,EACjCglI,EAAU/jI,EAAG+jI,EAAUhlI,EACvBguF,EAAO/sF,EAAG+sF,EAAOhuF,GAErBq9I,EAAI3U,OAAO16C,EAAO/sF,EAAG+sF,EAAOhuF,EAEpC,CAEIorC,EAAKpoC,QAAQ0nI,QACb2S,EAAIzT,WAxBR,CA0BJ,CA1FA8W,GAAcx8I,UAAUmuD,MAAQ,WAC5Bx2D,KAAKilJ,cACT,EAEAJ,GAAcx8I,UAAUrG,QAAU,WAC9BhC,KAAKilJ,sBACEjlJ,KAAK6L,OAChB,EAEAg5I,GAAcx8I,UAAUq+G,YAAc,SAAsB/hH,GACxD,IAAIq2I,EAASh7I,KAAKklJ,aAAavgJ,GAE1Bq2I,GAGIh7I,KAAKmlJ,WACNnlJ,KAAKolJ,eAAiBplJ,KAAKqlJ,cAG/BrlJ,KAAKslJ,WAAWtK,IANhBh7I,KAAKilJ,cAQb,EAEAJ,GAAcx8I,UAAUs+G,YAAc,WAClC3mH,KAAKilJ,cACT,EAEAJ,GAAcx8I,UAAU68I,aAAe,SAAuBvgJ,GAG1D,IAFA,IAAIm+I,EAAQn+I,EAAEkH,QAEPi3I,IAAUhsB,EAAQgsB,EAAM37I,QAAQ6zI,SACnC8H,EAAQA,EAAMn2I,OAGlB,GAAIm2I,EACA,OAAOA,EAAM37I,QAAQ6zI,MAE7B,EAEA6J,GAAcx8I,UAAUg9I,WAAa,WACjC,GAAIrlJ,KAAK6L,QACL,OAAO7L,KAAK6L,QAAQsB,MAAM6tI,MAElC,EAEA6J,GAAcx8I,UAAUi9I,WAAa,SAAqBtK,GAClDh7I,KAAK6L,UACL7L,KAAK6L,QAAQsB,MAAM6tI,OAASA,EAC5Bh7I,KAAKmlJ,SAAWnK,EAExB,EAEA6J,GAAcx8I,UAAU48I,aAAe,WAC/BjlJ,KAAKmlJ,WACLnlJ,KAAKslJ,WAAWtlJ,KAAKolJ,gBAAkB,WAChCplJ,KAAKmlJ,SAEpB,EA8CA,IAAII,GAAc,SAAUt6E,GACxB,SAASszE,IACLtzE,EAAK7iE,MAAMpI,KAAMsH,UACrB,CAuIA,OArIAqgH,EAAa42B,EAAUtzE,GACvBszE,EAASl2I,UAAY5H,OAAO2mD,OAAQ6jB,GAAQA,EAAK5iE,WACjDk2I,EAASl2I,UAAUC,YAAci2I,EACjCA,EAASx2I,GAAKw2I,EAASl2I,UACvBk2I,EAASx2I,GAAGI,KAAOo2I,EAASx2I,GAAGO,YAE/Bi2I,EAASl2I,UAAU65I,SAAW,SAAmBV,GAC7CA,EAAI9yG,OAEJ1uC,KAAK2hJ,aAAaH,GAClBxhJ,KAAKuhJ,QAAQC,GACbxhJ,KAAK8hJ,WAAWN,GAEhBA,EAAIC,YAEJzhJ,KAAK0hJ,aAAaF,EAAKxhJ,KAAK42I,YAE5B52I,KAAKwlJ,YAAYhE,GACjBxhJ,KAAKylJ,WAAWjE,GAChBxhJ,KAAK0lJ,YAAYlE,GAEjBxhJ,KAAK2lJ,QAAQnE,GACbxhJ,KAAK4lJ,UAAUpE,GAEfA,EAAIpsG,SACR,EAEAmpG,EAASl2I,UAAUs9I,QAAU,SAAkBnE,GAC3C,IAAI9tH,EAAO1zB,KAAK42I,WAAWzvI,QAAQusB,KAC/BmyH,GAAU,EAkBd,OAhBInyH,IACsB,aAAlBA,EAAKoC,UACL91B,KAAK8lJ,gBAAgBtE,EAAK9tH,GAC1BmyH,GAAU,GACFttB,EAAc7kG,EAAKu9F,SAC3BuwB,EAAIuE,UAAYryH,EAAKu9F,MAErBuwB,EAAI9yG,OACJ1uC,KAAK+hJ,YAAYP,EAAK9tH,EAAKqD,SAC3ByqH,EAAI9tH,OACJ8tH,EAAIpsG,UAEJywG,GAAU,IAIXA,CACX,EAEAtH,EAASl2I,UAAUy9I,gBAAkB,SAA0BtE,EAAK9tH,GAChE,IACIsyH,EADAroB,EAAO39H,KAAK42I,WAAWhV,UAG3B,GAAIluG,aAAgB2hH,GAAgB,CAChC,IAAIv/H,EAAQ4d,EAAK5d,QACbnK,EAAM+nB,EAAK/nB,MACfq6I,EAAWxE,EAAIyE,qBAAqBnwI,EAAM1Q,EAAG0Q,EAAM3R,EAAGwH,EAAIvG,EAAGuG,EAAIxH,EACrE,MAAO,GAAIuvB,aAAgB4hH,GAAgB,CACvC,IAAI/2D,EAAS7qD,EAAK6qD,SAClBynE,EAAWxE,EAAI0E,qBAAqB3nE,EAAOn5E,EAAGm5E,EAAOp6E,EAAG,EAAGo6E,EAAOn5E,EAAGm5E,EAAOp6E,EAAGuvB,EAAKpH,SACxF,EA7ER,SAA0B05H,EAAUjR,GAChC,IAAK,IAAInrI,EAAM,EAAGA,EAAMmrI,EAAMvtI,OAAQoC,IAAO,CACzC,IAAI4e,EAAOusH,EAAMnrI,GACbqnH,EAAQtwH,MAAMkxH,WAAWrpG,EAAKyoG,SAElCA,EAAM/rH,GAAKsjB,EAAKuO,UAEhBivH,EAASG,aAAa39H,EAAK1K,SAAUmzG,EAAMS,YAC/C,CACJ,CAsEQ00B,CAAiBJ,EAAUtyH,EAAKqhH,OAEhCyM,EAAI9yG,OAEChb,EAAKwhH,aACNsM,EAAI7tG,UAAUgqF,EAAK5xH,QAAS,EAAG,EAAG4xH,EAAK3xH,SAAU2xH,EAAK3kF,OAAO5zC,EAAGu4H,EAAK3kF,OAAO70C,GAEhFq9I,EAAIuE,UAAYC,EAChBxE,EAAI9tH,OAEJ8tH,EAAIpsG,SACR,EAEAmpG,EAASl2I,UAAUu9I,UAAY,SAAoBpE,GAC/C,IAAI5hB,EAAS5/H,KAAK42I,WAAWzvI,QAAQy4H,OACrC,GAAIA,IAAWrH,EAAcqH,EAAO3O,QAAU2O,EAAO7zH,MAAQ,EAUzD,OATAy1I,EAAI6E,YAAczmB,EAAO3O,MACzBuwB,EAAI8E,UAAYttB,EAAe4G,EAAO7zH,MAAO,GAC7Cy1I,EAAIhT,SAAWxV,EAAe4G,EAAO4O,SAAUgT,EAAIhT,UAEnDgT,EAAI9yG,OACJ1uC,KAAK+hJ,YAAYP,EAAK5hB,EAAO7oG,SAC7ByqH,EAAI5hB,SACJ4hB,EAAIpsG,WAEG,CAEf,EAEAmpG,EAASl2I,UAAUw2I,SAAW,WAC1B,IAAIjf,EAAS5/H,KAAK42I,WAAWzvI,QAAQy4H,OACrC,GAAIA,GAAUA,EAAOif,SACjB,OAAOjf,EAAOif,SAAShmI,aAE/B,EAEA0lI,EAASl2I,UAAUm9I,YAAc,SAAsBhE,GACnD,IAAI3C,EAAW7+I,KAAK6+I,WACpB,GAAIA,GAAYA,IAAaT,GAAO,CAChC,IAAIY,EAAYnB,GAAYgB,GACxB2C,EAAIgE,YACJhE,EAAIgE,YAAYxG,IAEhBwC,EAAI+E,QAAUvH,EACdwC,EAAIgF,eAAiBxH,EAE7B,CACJ,EAEAT,EAASl2I,UAAUo9I,WAAa,SAAqBjE,GACjD,IAAI3C,EAAW7+I,KAAK6+I,WAChBjf,EAAS5/H,KAAK42I,WAAWzvI,QAAQy4H,OACjCif,GAAYA,IAAaT,GACzBoD,EAAIvC,QAAUZ,GACPze,GAAUA,EAAOqf,UACxBuC,EAAIvC,QAAUrf,EAAOqf,QAE7B,EAEAV,EAASl2I,UAAUq9I,YAAc,SAAsBlE,GACnD,IAAI5hB,EAAS5/H,KAAK42I,WAAWzvI,QAAQy4H,OACjCA,GAAUA,EAAO4O,WACjBgT,EAAIhT,SAAW5O,EAAO4O,SAE9B,EAEA+P,EAASl2I,UAAUq5I,aAAe,SAAuBF,EAAKjyG,GAC1Du1G,GAAWtD,EAAKjyG,EACpB,EAEOgvG,CACX,CA3IiB,CA2If6C,IAEEqF,GAAa,SAAUlI,GACvB,SAASY,IACLZ,EAASn2I,MAAMpI,KAAMsH,UACzB,CAaA,OAXAqgH,EAAaw3B,EAASZ,GACtBY,EAAQ92I,UAAY5H,OAAO2mD,OAAQm3F,GAAYA,EAASl2I,WACxD82I,EAAQ92I,UAAUC,YAAc62I,EAChCA,EAAQp3I,GAAKo3I,EAAQ92I,UACrB82I,EAAQp3I,GAAGI,KAAOg3I,EAAQp3I,GAAGO,YAE7B62I,EAAQ92I,UAAUq5I,aAAe,SAAuBF,GAEpDsD,GAAWtD,EADAxhJ,KAAK42I,WAAW1G,SAE/B,EAEOiP,CACX,CAjBgB,CAiBdoG,IAEEmB,GAAgB,SAAUnI,GAC1B,SAASc,IACLd,EAASn2I,MAAMpI,KAAMsH,UACzB,CAgBA,OAdAqgH,EAAa03B,EAAYd,GACzBc,EAAWh3I,UAAY5H,OAAO2mD,OAAQm3F,GAAYA,EAASl2I,WAC3Dg3I,EAAWh3I,UAAUC,YAAc+2I,EACnCA,EAAWt3I,GAAKs3I,EAAWh3I,UAC3Bg3I,EAAWt3I,GAAGI,KAAOk3I,EAAWt3I,GAAGO,YAEnC+2I,EAAWh3I,UAAUq5I,aAAe,SAAuBF,GACvD,IAAInvB,EAAMryH,KAAK42I,WAAWjV,WACtBpjD,EAAS8zC,EAAI9zC,OACbjyD,EAAS+lG,EAAI/lG,OAEjBk1H,EAAI7S,IAAIpwD,EAAOn5E,EAAGm5E,EAAOp6E,EAAGmoB,EAAQ,EAAa,EAAVjpB,KAAK6zH,GAChD,EAEOmoB,CACX,CApBmB,CAoBjBkG,IAEEoB,GAAe,SAAUpI,GACzB,SAASgB,EAAU3I,EAAYiL,GAC3BtD,EAASh0I,KAAKvK,KAAM42I,GAEpB52I,KAAK4mJ,OAAS5mJ,KAAK4mJ,OAAOp9I,KAAKxJ,MAC/BA,KAAK6mJ,QAAU7mJ,KAAK6mJ,QAAQr9I,KAAKxJ,MAEjCA,KAAKg3B,QAAUywF,IAEf,IAAI+f,EAAMxnI,KAAKwnI,IAAM,IAAI6I,MACrBrpI,EAAM4vI,EAAW5vI,MAEjB66I,IAAU,UAAUt0I,KAAKvG,KACzBwgI,EAAIsf,YAAcjF,GAGlB76I,IACAwgI,EAAIxgI,IAAMA,GAGVwgI,EAAIjgH,SACJvnB,KAAK4mJ,UAELpf,EAAIuf,OAAS/mJ,KAAK4mJ,OAClBpf,EAAIwf,QAAUhnJ,KAAK6mJ,QAE3B,CAmDA,OAjDAl/B,EAAa43B,EAAWhB,GACxBgB,EAAUl3I,UAAY5H,OAAO2mD,OAAQm3F,GAAYA,EAASl2I,WAC1Dk3I,EAAUl3I,UAAUC,YAAci3I,EAClCA,EAAUx3I,GAAKw3I,EAAUl3I,UACzBk3I,EAAUx3I,GAAGI,KAAOo3I,EAAUx3I,GAAGO,YAEjCi3I,EAAUl3I,UAAU65I,SAAW,SAAmBV,GACjB,aAAzBxhJ,KAAKg3B,QAAQs8B,UACbkuF,EAAI9yG,OAEJ1uC,KAAK2hJ,aAAaH,GAClBxhJ,KAAKuhJ,QAAQC,GAEbxhJ,KAAKinJ,UAAUzF,GAEfA,EAAIpsG,UAEZ,EAEAmqG,EAAUl3I,UAAUguH,cAAgB,SAAwB1xH,GACxC,QAAZA,EAAEohB,OACF/lB,KAAKg3B,QAAUywF,IACfznH,KAAKwnI,IAAIxgI,IAAMhH,KAAK42I,WAAW5vI,OAE/Bu3I,EAASl2I,UAAUguH,cAAc9rH,KAAKvK,KAAM2E,EAEpD,EAEA46I,EAAUl3I,UAAUu+I,OAAS,WACzB5mJ,KAAKg3B,QAAQ+e,UACb/1C,KAAK+2I,YACT,EAEAwI,EAAUl3I,UAAUw+I,QAAU,WAC1B7mJ,KAAKg3B,QAAQqpC,OAAO,IAAIrvD,MACpB,yBAA2BhR,KAAKwnI,IAAIxgI,IACpC,sDAER,EAEAu4I,EAAUl3I,UAAU4+I,UAAY,SAAoBzF,GAChD,IAAIl1D,EAAOtsF,KAAK42I,WAAWtqD,OACvBixC,EAAUjxC,EAAKixC,UAEnBikB,EAAIyF,UACAjnJ,KAAKwnI,IAAKjK,EAAQn4H,EAAGm4H,EAAQp5H,EAAGmoF,EAAKvgF,QAASugF,EAAKtgF,SAE3D,EAEOuzI,CACX,CA9EkB,CA8EhBgG,IAEE2B,GAAmB,SAAU3I,GAC7B,SAASqB,IACLrB,EAASn2I,MAAMpI,KAAMsH,UACzB,CAeA,OAbAqgH,EAAai4B,EAAerB,GAC5BqB,EAAcv3I,UAAY5H,OAAO2mD,OAAQm3F,GAAYA,EAASl2I,WAC9Du3I,EAAcv3I,UAAUC,YAAcs3I,EACtCA,EAAc73I,GAAK63I,EAAcv3I,UACjCu3I,EAAc73I,GAAGI,KAAOy3I,EAAc73I,GAAGO,YAEzCs3I,EAAcv3I,UAAUq5I,aAAe,SAAuBF,GAE1D,IADA,IAAI1zF,EAAQ9tD,KAAK42I,WAAW9oF,MACnBvmD,EAAI,EAAGA,EAAIumD,EAAMtmD,OAAQD,IAC9Bu9I,GAAWtD,EAAK1zF,EAAMvmD,GAE9B,EAEOq4I,CACX,CAnBsB,CAmBpB2F,IAEE4B,GAAc,SAAU5I,GACxB,SAASsB,IACLtB,EAASn2I,MAAMpI,KAAMsH,UACzB,CAuBA,OArBAqgH,EAAak4B,EAAUtB,GACvBsB,EAASx3I,UAAY5H,OAAO2mD,OAAQm3F,GAAYA,EAASl2I,WACzDw3I,EAASx3I,UAAUC,YAAcu3I,EACjCA,EAAS93I,GAAK83I,EAASx3I,UACvBw3I,EAAS93I,GAAGI,KAAO03I,EAAS93I,GAAGO,YAE/Bu3I,EAASx3I,UAAUq5I,aAAe,SAAuBF,GACrD,IAAI7f,EAAW3hI,KAAK42I,WAAWjV,WAC3BtP,EAAMsP,EAASzE,aACfluH,EAAKqjH,EAAI,GACTyN,EAAKzN,EAAI,GAEb,GAAW,IAAPrjH,GAAmB,IAAP8wH,EAAU,CACtB,IAAI9mF,EAAS2oF,EAAS3oF,OAClBhpC,EAAO2xH,EAAS3xH,KACpBwxI,EAAIl1D,KAAKtzC,EAAO5zC,EAAG4zC,EAAO70C,EAAG6L,EAAKjE,MAAOiE,EAAKhE,OAClD,MACIuyI,EAASl2I,UAAUq5I,aAAan3I,KAAKvK,KAAMwhJ,EAAKjT,GAAKc,SAAS1N,GAEtE,EAEOke,CACX,CA3BiB,CA2Bf0F,IAEE6B,GAAc,SAAU7I,GACxB,SAASyB,IACLzB,EAASn2I,MAAMpI,KAAMsH,UACzB,CAgDA,OA9CAqgH,EAAaq4B,EAAUzB,GACvByB,EAAS33I,UAAY5H,OAAO2mD,OAAQm3F,GAAYA,EAASl2I,WACzD23I,EAAS33I,UAAUC,YAAc03I,EACjCA,EAASj4I,GAAKi4I,EAAS33I,UACvB23I,EAASj4I,GAAGI,KAAO63I,EAASj4I,GAAGO,YAE/B03I,EAAS33I,UAAU65I,SAAW,SAAmBV,GAC7C,IAAI1gH,EAAO9gC,KAAK42I,WACZvhD,EAAMv0D,EAAKxzB,WACX0C,EAAO8wB,EAAKykD,UAEhBi8D,EAAI9yG,OAEJ1uC,KAAK2hJ,aAAaH,GAClBxhJ,KAAKuhJ,QAAQC,GACbxhJ,KAAK8hJ,WAAWN,GAEhBA,EAAIC,YAEJD,EAAIzpD,KAAOj3D,EAAK35B,QAAQ4wF,KACxBypD,EAAI6F,UAAY,OAEgB,WAA5BvmH,EAAK35B,QAAQm5I,YACbtgJ,KAAK4/H,OAAO4hB,EAAK1gH,EAAMu0D,EAAKrlF,GAC5BhQ,KAAK0zB,KAAK8tH,EAAK1gH,EAAMu0D,EAAKrlF,KAE1BhQ,KAAK0zB,KAAK8tH,EAAK1gH,EAAMu0D,EAAKrlF,GAC1BhQ,KAAK4/H,OAAO4hB,EAAK1gH,EAAMu0D,EAAKrlF,IAGhCwxI,EAAIpsG,SACR,EAEA4qG,EAAS33I,UAAUu3H,OAAS,SAAiB4hB,EAAK1gH,EAAMu0D,EAAKrlF,GACrDhQ,KAAK4lJ,UAAUpE,KACfxhJ,KAAKwlJ,YAAYhE,GACjBA,EAAI8F,WAAWxmH,EAAK6lB,UAAW0uC,EAAIjwF,EAAGiwF,EAAIlxF,EAAI6L,EAAKilH,UAE3D,EAEA+qB,EAAS33I,UAAUqrB,KAAO,SAAe8tH,EAAK1gH,EAAMu0D,EAAKrlF,GACjDhQ,KAAK2lJ,QAAQnE,IACbA,EAAI+F,SAASzmH,EAAK6lB,UAAW0uC,EAAIjwF,EAAGiwF,EAAIlxF,EAAI6L,EAAKilH,SAEzD,EAEO+qB,CACX,CApDiB,CAoDfuF,IAEFpE,GAAW/e,IAAMqkB,GACjBtF,GAAWhhB,OAASumB,GACpBvF,GAAW1Q,MAAQwR,GACnBd,GAAW9Q,MAAQsW,GACnBxF,GAAW/R,UAAY8X,GACvB/F,GAAW5S,KAAOgX,GAClBpE,GAAWlkB,KAAOkqB,GAClBhG,GAAWhR,KAAOiX,GAElB,IAiNII,GACAC,GAlNAC,GAAa,SAAUlH,GACvB,SAAStJ,EAAQrrI,EAAS1E,GACtBq5I,EAAYj2I,KAAKvK,KAAM6L,EAAS1E,GAEhCnH,KAAK6L,QAAQkT,UAAY/e,KAAK0gJ,UAAU1gJ,MAExC,IAAIoiJ,EAASpiJ,KAAK6L,QAAQ+xI,kBAC1BwE,EAAOj1I,MAAMpB,MAAQ,OACrBq2I,EAAOj1I,MAAMnB,OAAS,OAEtB,IAAIgE,EAAO49E,EAAY/hF,GAEvBu2I,EAAOr2I,MAAQiE,EAAKjE,MACpBq2I,EAAOp2I,OAASgE,EAAKhE,OAErBhM,KAAK2gJ,aAAeyB,EAEpBpiJ,KAAKygJ,MAAQ,IAAI0B,GAAWC,EAAQpyI,GAEpChQ,KAAK2nJ,mBAAqB3nJ,KAAK4nJ,YAAYp+I,KAAKxJ,MAEhDi5H,EAAWj5H,KAAK6L,QAAS,CACrBqe,MAAOlqB,KAAK2nJ,mBACZ39H,UAAWhqB,KAAK2nJ,oBAExB,CAEAhgC,EAAauvB,EAASsJ,GACtBtJ,EAAQ7uI,UAAY5H,OAAO2mD,OAAQo5F,GAAeA,EAAYn4I,WAC9D6uI,EAAQ7uI,UAAUC,YAAc4uI,EAChCA,EAAQnvI,GAAKmvI,EAAQ7uI,UACrB6uI,EAAQnvI,GAAGI,KAAO+uI,EAAQnvI,GAAGO,YAE7B,IAAI22H,EAAqB,CAAEv5H,KAAM,CAAC,GA6KlC,OA3KAu5H,EAAmBv5H,KAAKuqB,IAAM,WAC1B,MAAO,QACX,EAEAinH,EAAQ7uI,UAAUrG,QAAU,WACxBw+I,EAAYn4I,UAAUrG,QAAQuI,KAAKvK,MAE/BA,KAAKygJ,QACLzgJ,KAAKygJ,MAAMz+I,UACXhC,KAAKygJ,MAAQ,MAGbzgJ,KAAK6nJ,cACL7nJ,KAAK6nJ,YAAYrxF,eACVx2D,KAAK6nJ,aAGZ7nJ,KAAK8nJ,UACL9nJ,KAAK8nJ,QAAQ9lJ,iBACNhC,KAAK8nJ,SAGhBruB,EAAaz5H,KAAK6L,QAAS,CACvBqe,MAAOlqB,KAAK2nJ,mBACZ39H,UAAWhqB,KAAK2nJ,oBAExB,EAEAzQ,EAAQ7uI,UAAUovI,KAAO,SAAe5rI,GACpC20I,EAAYn4I,UAAUovI,KAAKltI,KAAKvK,KAAM6L,GACtC7L,KAAKygJ,MAAM50E,KAAK,CAAEhgE,QAAW8yI,EAAW3+I,KAAKmH,QAAQ06I,MAEjD7hJ,KAAK6nJ,aACL7nJ,KAAK6nJ,YAAYr6I,IAAI,CAAE3B,GAE/B,EAEAqrI,EAAQ7uI,UAAUmuD,MAAQ,WACtBgqF,EAAYn4I,UAAUmuD,MAAMjsD,KAAKvK,MACjCA,KAAKygJ,MAAMjqF,QAEPx2D,KAAK6nJ,aACL7nJ,KAAK6nJ,YAAYrxF,QAGjBx2D,KAAK8nJ,SACL9nJ,KAAK8nJ,QAAQtxF,OAErB,EAEA0gF,EAAQ7uI,UAAUghB,YAAc,SAAsB1kB,GAClD,GAAI3E,KAAK6nJ,YAAa,CAClB,IAAI1rB,EAAQn8H,KAAKi4I,cAActzI,GAE/B,OADY3E,KAAK6nJ,YAAY/D,WAAW3nB,EAE5C,CACJ,EAEA+a,EAAQ7uI,UAAU2gC,MAAQ,WACtB,IACI6U,EADM79C,KACKygJ,MACXsH,EAFM/nJ,KAEY2gJ,aAClBqH,EAAgB,GAEpBnqG,EAAK2yF,UAAS,SAAUwJ,GAChBA,EAAUhjH,SACVgxH,EAAcrmJ,KAAKq4I,EAAUhjH,QAErC,IAEA,IAAInP,EAAU4/F,IACVwgC,EAAiB,WACjBpqG,EAAK0kG,YAAY,CAAEG,YAAY,IAE/B,IACI,IAAIt0I,EAAO25I,EAAYG,YACvBrgI,EAAQkuB,QAAQ3nC,EACpB,CAAE,MAAOzJ,GACLkjB,EAAQw4C,OAAO17D,EACnB,CACJ,EAIA,OAFA+iH,EAAWsgC,GAAe7oF,KAAK8oF,EAAgBA,GAExCpgI,CACX,EAEAqvH,EAAQ7uI,UAAUuvI,gBAAkB,WAChC4I,EAAYn4I,UAAUuvI,gBAAgBrtI,KAAKvK,MACvCA,KAAK6nJ,cACL7nJ,KAAK6nJ,YAAYrxF,eACVx2D,KAAK6nJ,YAEpB,EAEA3Q,EAAQ7uI,UAAUyvI,eAAiB,WAE/B,GADA0I,EAAYn4I,UAAUyvI,eAAevtI,KAAKvK,OACrCA,KAAK6nJ,YAAa,CACnB7nJ,KAAK6nJ,YAAc,IAAInE,GAIvB,IAFA,IAAI9/G,EAAa5jC,KAAKygJ,MAAM78G,WACxBigH,EAAe,GACVj6I,EAAM,EAAGA,EAAMg6B,EAAWp8B,OAAQoC,IACvCi6I,EAAaliJ,KAAKiiC,EAAWh6B,GAAKgtI,YAEtC52I,KAAK6nJ,YAAYr6I,IAAIq2I,EACzB,CACJ,EAEA3M,EAAQ7uI,UAAUqqB,QAAU,WACxB1yB,KAAK2gJ,aAAa50I,MAAQ/L,KAAKyyB,MAAM1mB,MACrC/L,KAAK2gJ,aAAa30I,OAAShM,KAAKyyB,MAAMzmB,OAEtChM,KAAKygJ,MAAMzwI,KAAOhQ,KAAKyyB,MACvBzyB,KAAKygJ,MAAM1J,YACf,EAEAG,EAAQ7uI,UAAUq4I,UAAY,WAC1B,MAAO,mBACX,EAEAxJ,EAAQ7uI,UAAUmvI,gBAAkB,WAChCx3I,KAAK6nJ,YAAc,IAAInE,GACvB1jJ,KAAK8nJ,QAAU,IAAIjD,GAAc7kJ,MAEjCwgJ,EAAYn4I,UAAUmvI,gBAAgBjtI,KAAKvK,KAC/C,EAEAk3I,EAAQ7uI,UAAUu/I,YAAc,SAAsBjjJ,GAClD,IAAI3E,KAAK63I,mBAAT,CAIA,IAAIiL,EAAQ9iJ,KAAKqpB,YAAY1kB,GAE7B,GAAe,UAAXA,EAAEe,KAAkB,CACpB,IAAIyiJ,EAAenoJ,KAAKooJ,cACpBD,GAAgBA,IAAiBrF,GACjC9iJ,KAAKoK,QAAQ,aAAc,CACvByB,QAASs8I,EACT5+H,cAAe5kB,EACfe,KAAM,eAIVo9I,GAASqF,IAAiBrF,GAC1B9iJ,KAAKoK,QAAQ,aAAc,CACvByB,QAASi3I,EACTv5H,cAAe5kB,EACfe,KAAM,eAId1F,KAAKoK,QAAQ,YAAa,CACtByB,QAASi3I,EACTv5H,cAAe5kB,EACfe,KAAM,cAGV1F,KAAKooJ,cAAgBtF,CACzB,MAAWA,GACP9iJ,KAAKoK,QAAQ,QAAS,CAClByB,QAASi3I,EACTv5H,cAAe5kB,EACfe,KAAM,SAjCd,CAoCJ,EAEAjF,OAAOs8H,iBAAkBma,EAAQ7uI,UAAW42H,GAErCiY,CACX,CA/MgB,CA+MdF,IAKEqR,GAAc,WAAc,MAA2B,oBAAb14I,QAA0B,EAQpE24I,GAAkB,SAAUxyB,GAC5B,SAASwyB,IACLxyB,EAASvrH,KAAKvK,MAEdA,KAAKi2I,OAAS,CAAE,CACZ7zI,KAAM,MACNsD,KAAM66I,IACP,CACCn+I,KAAM,SACNsD,KAAMgiJ,IAEd,CAEA//B,EAAa2gC,EAAgBxyB,GAC7BwyB,EAAejgJ,UAAY5H,OAAO2mD,OAAQ0uE,GAAYA,EAASztH,WAC/DigJ,EAAejgJ,UAAUC,YAAcggJ,EACvCA,EAAevgJ,GAAKugJ,EAAejgJ,UACnCigJ,EAAevgJ,GAAGI,KAAOmgJ,EAAevgJ,GAAGO,YAE3C,IAAI0zH,EAAkB,CAAEz4H,QAAS,CAAC,EAAEyQ,QAAS,CAAC,GA8C9C,OA5CAgoH,EAAgBz4H,QAAQ0sB,IAAM,WAQ1B,OAPKw3H,KACDA,GAAY,CACRrF,OA9B0BiG,MACtC14I,SAASkP,cAAc,UAAUwjI,WA8BrBxqD,IA5BuBwwD,MACnC14I,SAAS44I,eAAeC,WAAW,oDAAqD,SA+B7Ef,EACX,EAEAzrB,EAAgBhoH,QAAQic,IAAM,WAK1B,OAJKu3H,KACDA,GAAa,IAAIc,GAGdd,EACX,EAEAc,EAAejgJ,UAAU++C,OAAS,SAAiBv7C,EAAS1E,GACxD,IAAI+kD,EAAQlsD,KAAKi2I,OACbvlI,EAAQw7C,EAAM,GAElB,GAAI/kD,GAAWA,EAAQzB,KAEnB,IADA,IAAI+iJ,EAAYthJ,EAAQzB,KAAKmT,cACpBtR,EAAI,EAAGA,EAAI2kD,EAAM1kD,OAAQD,IAC9B,GAAI2kD,EAAM3kD,GAAGnF,OAASqmJ,EAAW,CAC7B/3I,EAAQw7C,EAAM3kD,GACd,KACJ,CAIR,GAAImJ,EACA,OAAO,IAAIA,EAAMhL,KAAKmG,EAAS1E,GAGnCxG,MAAMqwB,aACF,oIACiEpO,UAAmB,UAC5F,EAEAniB,OAAOs8H,iBAAkBurB,EAAgBtsB,GAElCssB,CACX,CAlEqB,CAkEnB1gJ,GAEEsvI,GAAW,SAAUsJ,GACrB,SAAStJ,IACLsJ,EAAYp4I,MAAMpI,KAAMsH,UAC5B,CAEAqgH,EAAauvB,EAASsJ,GACtBtJ,EAAQ7uI,UAAY5H,OAAO2mD,OAAQo5F,GAAeA,EAAYn4I,WAC9D6uI,EAAQ7uI,UAAUC,YAAc4uI,EAChCA,EAAQnvI,GAAKmvI,EAAQ7uI,UACrB6uI,EAAQnvI,GAAGI,KAAO+uI,EAAQnvI,GAAGO,YAE7B,IAAI0zH,EAAkB,CAAEz4H,QAAS,CAAC,GAYlC,OAVAy4H,EAAgBz4H,QAAQ0sB,IAAM,WAC1B,OAAOq4H,GAAe/kJ,OAC1B,EAEA2zI,EAAQ9vF,OAAS,SAAiBv7C,EAAS1E,GACvC,OAAOmhJ,GAAet0I,QAAQozC,OAAOv7C,EAAS1E,EAClD,EAEA1G,OAAOs8H,iBAAkBma,EAASlb,GAE3Bkb,CACX,CAxBc,CAwBZF,IAEF,SAAS0R,GAAYn0F,GACjB,IAAI1W,EAAO,IAAI6/F,GAAS,CACpB3B,cAAc,IAEdpe,EAAOppE,EAAM+qE,cACbqpB,EAAYp0F,EAEhB,GAAIopE,EAAM,CACN,IAAI3kF,EAAS2kF,EAAKN,YACdurB,EAAa,IAAInY,GACrBmY,EAAWj1G,UAAUorF,KAAc3uF,WAAW4I,EAAO5zC,GAAI4zC,EAAO70C,IAChEykJ,EAAWrzG,SAAS5zC,KAAK4yD,GACzBo0F,EAAYC,CAChB,CAEA/qG,EAAKguB,KAAK,CAAE88E,IAEZ,IAAI9wD,EAAM,qCAAuC4gD,GAAS,8DAAiE56F,EAAK1tC,SAAY,SAI5I,OAFA0tC,EAAK77C,UAEE61F,CACX,CAEA,IAAIgxD,GAAQ,CACX3R,QAASqJ,GACT7C,SAAUA,GACVzyE,KAAMA,GACNq0E,UAAWA,GACXH,QAASA,GACTE,WAAYA,GACZQ,SAAUA,GACVN,UAAWA,GACXS,SAAUA,GACVzB,SAAUA,GACVqB,cAAeA,GACf1C,eAAgBA,GAChBF,SAAUA,GACVZ,iBAAkBA,GAClBS,mBAAoBA,GACpBE,mBAAoBA,GACpB2L,YAAaA,IAGVtG,GAAS,CACZlL,QAASwQ,GACThK,SAAUyE,GACVl3E,KAAMm2E,GACN9B,UAAW2C,GACX9C,QAASsH,GACTpH,WAAYqH,GACZ7G,SAAUsH,GACV5H,UAAWoH,GACX3G,SAAUoH,GACV7I,SAAUgH,GACV3F,cAAesH,IA8DhB,IAAIpkI,GAAU8yG,GAAkB,CAAC,EAoBjC,SAASkzB,GAAUC,GACf,OAAO7lJ,MAAMmF,UAAUxB,MAAM0D,KAAKw+I,EACtC,CAEA,IAAIC,GAAuB,uBACvBC,GAAoB,yBAEpBC,GAAc,CAAC,EAEfC,GAAW,CAAC,EAChBA,GAAS1I,MAAQ0I,GAIjB,IACIC,MAD8B,oBAAXtoJ,UACKgiB,GAAQoB,MAAQpB,GAAQiB,MAEhDslI,GAAY,SAAUC,GACxB,SAASD,EAASl6I,EAAKm9E,EAAMnlF,GACvBmiJ,EAAQ/+I,KAAKvK,KAAMmP,EAAKm9E,EAAK+wC,YAAal2H,GAC1CnH,KAAKupJ,SAAWj9D,CACpB,CAkBF,OAhBAq7B,EAAa0hC,EAAUC,GACvBD,EAAShhJ,UAAY5H,OAAO2mD,OAAQkiG,GAAWA,EAAQjhJ,WACvDghJ,EAAShhJ,UAAUC,YAAc+gJ,EACjCA,EAASthJ,GAAKshJ,EAAShhJ,UACvBghJ,EAASthJ,GAAGI,KAAOkhJ,EAASthJ,GAAGO,YAC7B+gJ,EAAShhJ,UAAUikF,KAAO,WAItB,OAAOtsF,KAAKupJ,QAChB,EACAF,EAAShhJ,UAAUu5H,QAAU,WAEzB,OAAO5hI,KAAKupJ,QAChB,EAEKF,CACT,CAvBe,CAuBblZ,IAuBF,SAASqZ,GAAOh8H,EAAI9d,GAChBjP,OAAOoqB,KAAKnb,GAAQpO,SAAQ,SAASwQ,GACjC0b,EAAGrgB,MAAM2E,GAAOpC,EAAOoC,EAC3B,GACJ,CAEA,IAA+E+gH,GAA3ErxH,GAA6B,oBAAZumB,SAA2BA,QAAQ1f,aAAuBwqH,GAgB5E9qG,QAAQ1f,WAfD7G,QACK,SAASgsB,EAAInH,GAAY,OAAOmH,EAAGhsB,QAAQ6kB,EAAW,EAE7DwsG,GAAE5sG,sBACK,SAASuH,EAAInH,GAAY,OAAOmH,EAAGvH,sBAAsBI,EAAW,EAE3EwsG,GAAE3sG,mBACK,SAASsH,EAAInH,GAAY,OAAOmH,EAAGtH,mBAAmBG,EAAW,EAExEwsG,GAAE1sG,kBACK,SAASqH,EAAInH,GAAY,OAAOmH,EAAGrH,kBAAkBE,EAAW,EAEpE,SAASphB,GACnB,OAAgE,IAAzD,GAAG0Q,QAAQpL,KAAKoF,SAAS4W,iBAAiBthB,GAAIjF,KAClD,GAGJ,SAAS6M,GAAQ2gB,EAAInH,GACjB,GAAImH,EAAG3gB,QACH,OAAO2gB,EAAG3gB,QAAQwZ,GAKtB,KAAOmH,IAAO,iCAAiCjgB,KAAK8E,OAAOmb,KAAM,CAC7D,GAAmB,GAAfA,EAAGsI,UAA+Bt0B,GAAQgsB,EAAInH,GAC9C,OAAOmH,EAEXA,EAAKA,EAAGhH,UACZ,CACJ,CAIA,IAAIijI,GAAa,SAAU9mJ,GACvB,OAAIA,EAMO,SAAS8mJ,EAAWj8H,GACvB,IAAIpmB,EAAQomB,EAAG4kD,WAAU,GACzB,GAAmB,GAAf5kD,EAAGsI,SAA6B,CAChC,IAAoCvuB,EAAhCmiJ,EAAM/mJ,EAAE6qB,GAAKm8H,EAAShnJ,EAAEyE,GACxBgH,EAAOs7I,EAAIt7I,OACf,IAAK7G,KAAK6G,EACNu7I,EAAOv7I,KAAK7G,EAAG6G,EAAK7G,IAgBxB,IAdI,YAAYgG,KAAKigB,EAAGqD,SACpBzpB,EAAMi7I,WAAW,MAAM4E,UAAUz5H,EAAI,EAAG,GACjC,sCAAsCjgB,KAAKigB,EAAGqD,WAIrDzpB,EAAM+gC,gBAAgB,MACtB/gC,EAAM+gC,gBAAgB,QACjB,cAAc56B,KAAKigB,EAAGqD,WACvBzpB,EAAMsB,MAAQ8kB,EAAG9kB,OAErBtB,EAAMorE,QAAUhlD,EAAGglD,QACnBprE,EAAMsrE,SAAWllD,EAAGklD,UAEnBnrE,EAAIimB,EAAG28B,WAAY5iD,EAAGA,EAAIA,EAAE6iD,YAC7BhjD,EAAM6X,YAAYwqI,EAAWliJ,GAErC,CACA,OAAOH,CACX,EAGO,SAAoBomB,GACvB,IAAIpmB,EAAQ,SAAUwiJ,EAAKvmH,GACvB,IAAIj8B,EAAQi8B,EAAK+uC,WAAU,GACvB/uC,EAAK8zG,qBACL/vI,EAAM+vI,mBAAqB9zG,EAAK8zG,oBAEpC,IAAK,IAAI5vI,EAAI87B,EAAK8mB,WAAY5iD,EAAGA,EAAIA,EAAE6iD,YACnChjD,EAAM6X,YAAY2qI,EAAKriJ,IAE3B,OAAOH,CACV,CATW,CASTomB,GAGCq8H,EAAWr8H,EAAGjH,iBAAiB,UAC/BsjI,EAASriJ,QACTshJ,GAAU1hJ,EAAMmf,iBAAiB,WAAWjlB,SAAQ,SAAUwoJ,EAAWviJ,GACrEuiJ,EAAUzH,WAAW,MAAM4E,UAAU4C,EAAStiJ,GAAI,EAAG,EACzD,IAKJ,IAAIuzB,EAAOtN,EAAGjH,iBAAiB,mCAW/B,OAVAuiI,GAAU1hJ,EAAMmf,iBAAiB,oCAAoCjlB,SAAQ,SAAUksB,EAAIjmB,GACvFimB,EAAG2a,gBAAgB,MACnB3a,EAAG2a,gBAAgB,QACd,cAAc56B,KAAKigB,EAAGqD,WACvBrD,EAAG9kB,MAAQoyB,EAAKvzB,GAAGmB,OAEvB8kB,EAAGglD,QAAU13C,EAAKvzB,GAAGirE,QACrBhlD,EAAGklD,SAAW53C,EAAKvzB,GAAGmrE,QAC1B,IAEOtrE,CACX,CAEP,CAzEgB,CAyEI,oBAAXtG,QAA0BA,OAAOH,OAASG,OAAOH,MAAM+G,QAmiBjE,IAkJQo2B,GAlJJisH,GAAuB,WACvB,IAAIC,EAAuB,oDAEvBC,EAAuB,eACvBC,EAAuB,gBACvBC,EAAuB,uCACvBC,EAAuB,mCACvBC,EAAuB,SACvBC,EAAuB,QACvBC,EAAuB,QACvBC,EAAuB,OACvBC,EAAuB,WACvBC,EAAuB,WAEvBC,EAAS,CAAC,EAAGC,EAAS,CAAC,EAE3B,SAASx1H,EAAM7P,GACX,IA4GIslI,EA5GA/vH,EAAOvV,EACX,GAAItW,GAAe07I,EAAQ7vH,GACvB,OAAO6vH,EAAO7vH,GAQlB,SAASoqB,EAAK+wB,IANd,WACI,IAAIjxE,EAAIqlJ,EAAezxI,KAAK2M,GACxBvgB,IACAugB,EAAQA,EAAMhJ,OAAOvX,EAAE,GAAGwC,QAElC,CAEIsjJ,GACA,IAAI9lJ,EAAIixE,EAAMr9D,KAAK2M,GACnB,GAAIvgB,EAEA,OADAugB,EAAQA,EAAMhJ,OAAOvX,EAAE,GAAGwC,QACnBxC,EAAE,EAEjB,CAEA,SAAS+lJ,IACL,IACIvjJ,EAAQ4M,EADR68G,EAAQtwH,MAAMkxH,WAAWtsG,GAAO,GAEpC,GAAI0rG,EAAO,CACP,IAAIvgH,EACA,eAAekI,KAAK2M,IACpB,iBAAiB3M,KAAK2M,IACtB,UAAU3M,KAAK2M,GAMnB,OALAA,EAAQA,EAAMhJ,OAAO7L,EAAM,GAAGlJ,QAC9BypH,EAAQA,EAAMK,SACR9pH,EAAS09C,EAAKglG,MAChB91I,EAAU8wC,EAAK+kG,IAEZ,CAAEh5B,MAAOA,EAAOzpH,OAAQA,EAAQ4M,QAASA,EACpD,CACJ,CAmFA,OAPKy2I,EAAM3lG,EAAK8kG,IACZa,EA3EJ,SAA8Br3H,GAC1B,IAAI4mG,EACA4wB,EAAKC,EACLlW,EAAQ,GACR1+H,GAAU,EAEd,GAAI6uC,EAAKolG,GAAY,CAqBjB,GAlBa,MADblwB,EAAQl1E,EAAKklG,MAEThwB,EAAQ,QAERA,GACAA,EA8lBpB,SAAoBA,GAChB,IAAI8wB,EAAMniJ,WAAWqxH,GACrB,MAAI,QAAQ7sH,KAAK6sH,GACN/2H,KAAK6zH,GAAKg0B,EAAM,IAElB,OAAO39I,KAAK6sH,GACV8wB,EAEF,QAAQ39I,KAAK6sH,GACX/2H,KAAK6zH,GAAKg0B,EAAM,EAElB,OAAO39I,KAAK6sH,GACV/2H,KAAK6zH,GAAKg0B,EAAM,SADtB,CAGT,CA5mB4BC,CAAW/wB,GACnBl1E,EAAKslG,KAIM,OADXQ,EAAM9lG,EAAKilG,IAEPa,EAAM9lG,EAAKilG,GACJa,GAAO,KAAKz9I,KAAKimB,KACxBnd,GAAU,GAEd40I,EAAM/lG,EAAKilG,GACXjlG,EAAKslG,IAGL,QAAQj9I,KAAKimB,IAAsB,MAAT4mG,GAAwB,MAAP4wB,EAAa,CACxD,IAAI5lJ,EAAI8/C,EAAK+kG,GAAc9lJ,EAAI+gD,EAAK+kG,GACpC5zI,GAAU,EACD,MAALjR,EACA4lJ,EAAM,OACM,QAAL5lJ,IACP4lJ,EAAM,SAED,MAAL7mJ,EACA8mJ,EAAM,MACM,QAAL9mJ,IACP8mJ,EAAM,UAEV/lG,EAAKslG,EACT,CAGA,KAAOjlI,IAAU2/B,EAAKqlG,IAAa,CAC/B,IAAI/hI,EAAOuiI,IACX,IAAKviI,EACD,MAEJusH,EAAMpzI,KAAK6mB,GACX08B,EAAKslG,EACT,CAEA,MAAO,CACH9kJ,KAAU,SACV00H,MAAUA,EACV97F,GAAU0sH,GAAOC,EAAMD,EAAM,IAAMC,EAAMD,GAAYC,GAAY,KACjElW,MAAUA,EACV1+H,QAAUA,EAElB,CACJ,CAcU+0I,CAAqBP,IAErBA,EAAM3lG,EAAKulG,MACjBI,EAfJ,WACI,GAAI3lG,EAAKolG,GAAY,CACjB,IAAIt7H,EAAMk2B,EAAKwlG,GAGf,OAFA17H,EAAMA,EAAIvsB,QAAQ,iBAAkB,IACpCyiD,EAAKqlG,GACE,CAAE7kJ,KAAM,MAAOspB,IAAKA,EAC/B,CACJ,CAQUq8H,IAGFV,EAAO7vH,GAAQ+vH,GAAO,CAAEnlJ,KAAM,OAC1C,CAEA,OAAO,SAAS6f,GACZ,OAAItW,GAAe27I,EAAQrlI,GAChBqlI,EAAOrlI,GAEVqlI,EAAOrlI,GAAS+lI,GAAc/lI,GAAO1K,IAAIua,EACrD,CACH,CA/I0B,GAiJvBk2H,IACIxtH,GAAQ,CAAC,EACN,SAASvY,EAAO20G,GACdA,IACDA,EAAY,YAGhB,IAAIhF,EAAW3vG,EAAQ20G,EAEvB,GAAIjrH,GAAe6uB,GAAOo3F,GACtB,OAAOp3F,GAAMo3F,GAGjB,IAIIlwH,EAJAo2B,EAAM,GACNmwH,EAAU,EAAGl2D,EAAM,EACnBm2D,EAAW,EACXC,GAAY,EAGhB,SAASC,EAAW18I,GAChB,OAAQhK,EAAIgK,EAAG4J,KAAK2M,EAAMhJ,OAAO84E,GACrC,CAEA,SAAS1xD,EAAKx0B,GACV,OAAOA,EAAI1M,QAAQ,aAAc,GACrC,CAEA,KAAO4yF,EAAM9vE,EAAM/d,SACVikJ,GAAaC,EAAW,cACzBF,IACAn2D,MAEMo2D,GAAaC,EAAW,cAC9BF,IACAn2D,MAEMo2D,GAAaC,EAAW,YAC9BD,EAAYzmJ,EAAE,GACdqwF,KAEkB,KAAbo2D,GAAoBC,EAAW,UAGlB,KAAbD,GAAoBC,EAAW,SAFpCr2D,GAAO,EAKW,KAAbo2D,GAAoBC,EAAW,QAIlB,KAAbD,GAAoBC,EAAW,QAHpCD,GAAY,EACZp2D,KAMKq2D,EAAWxxB,KACXuxB,IAAcD,GAAYn2D,EAAMk2D,IACjCnwH,EAAIz5B,KAAKgiC,EAAKpe,EAAMva,UAAUugJ,EAASl2D,KACvCk2D,EAAUl2D,EAAMrwF,EAAE,GAAGwC,QAEzB6tF,GAAOrwF,EAAE,GAAGwC,QAGZ6tF,IAMR,OAHIk2D,EAAUl2D,GACVj6D,EAAIz5B,KAAKgiC,EAAKpe,EAAMva,UAAUugJ,EAASl2D,KAEnCv3D,GAAMo3F,GAAY95F,CAC9B,GAGAuwH,GAAa,SAAU7tH,GACvB,OAAO,SAAStQ,GAIZ,IAEQxoB,EAFJgqB,EAAM8O,EAAMtQ,GACXwB,KAEIhqB,EAAI,2DAA2D4T,KAAK4U,MAE7DxoB,EAAI,kCAAkC4T,KAAK4U,OADnDwB,EAAM8O,EAAMtQ,GAAMxoB,EAAE,IAK5B,OAAOgqB,CACX,CACH,CAhBgB,CAgBdvuB,OAAO2mD,OAAS3mD,OAAO2mD,OAAO,MAAQ,CAAC,GAEtCwkG,GAAgB,SAAU9tH,GAC1B,OAAO,SAASi6D,GACZ,IAAI/rF,EAAS8xB,EAAMi6D,GAInB,OAHc,MAAV/rF,IACAA,EAAS8xB,EAAMi6D,GAAQ49B,EAAUF,YAAY,OAAQ,CAAE19B,KAAMA,IAAQ/rF,QAElEA,CACX,CACH,CARmB,CAQjBvL,OAAO2mD,OAAS3mD,OAAO2mD,OAAO,MAAQ,CAAC,GAE1C,SAASykG,GAAaC,GACP,MAAPA,IACAA,EAAMn8I,UAGV,IADA,IAAImH,EAAS,CAAC,EACLvP,EAAI,EAAGA,EAAIukJ,EAAIC,YAAYvkJ,SAAUD,EAC1CykJ,EAAaF,EAAIC,YAAYxkJ,IAEjC,OAAOuP,EACP,SAASk1I,EAAaC,GAClB,GAAIA,EAAI,CACJ,IAAI9tH,EAAQ,KACZ,IACIA,EAAQ8tH,EAAGC,QACf,CAAE,MAAOC,GAAK,CACVhuH,GAsBZ,SAAkBiuH,EAAYjuH,GAC1B,IAAK,IAAI52B,EAAI,EAAGA,EAAI42B,EAAM32B,SAAUD,EAAG,CACnC,IAAI2qH,EAAI/zF,EAAM52B,GACd,OAAQ2qH,EAAExsH,MACR,KAAK,EACHsmJ,EAAa95B,EAAEk6B,YACf,MACF,KAAK,EACH,IAAIj/I,EAAS+kH,EAAE/kH,MACXk/I,EAASf,GAAcx7I,GAAiB3C,EAAO,gBAC/Cm/I,EAAS,sBAAsB/+I,KAAKuC,GAAiB3C,EAAO,gBAC5Do/I,EAAS,UAAYz8I,GAAiB3C,EAAO,cAC7CnG,EAASwlJ,EAAUt6B,GACnBlrH,EAAIQ,OAAS,GACbilJ,EAAQL,EAAYC,EAAQC,EAAMC,EAAQvlJ,EAAI,IAG1D,CACJ,CAvCY0lJ,CAAST,EAAI9tH,EAErB,CACJ,CACA,SAASquH,EAAU9uH,GACf,IAAI12B,EAAM8I,GAAiB4tB,EAAKvwB,MAAO,OACvC,GAAInG,EACA,OAAOskJ,GAActkJ,GAAK+8C,QAAO,SAAS7+C,EAAGsoB,GACzC,IAAIuqE,EAAO4zD,GAAWn+H,GAItB,OAHIuqE,GACA7yF,EAAEvD,KAAKo2F,GAEJ7yF,CACX,GAAG,IAIH,IAAI6yF,EAAO4zD,GAAWjuH,EAAK5e,SAC3B,OAAOi5E,EAAO,CAAEA,GAAS,EAEjC,CAoBA,SAAS00D,EAAQL,EAAYz3I,EAAO23I,EAAMC,EAAQv9H,GAGxC,UAAUzhB,KAAKyhB,IACX,gBAAgBzhB,KAAKyhB,IAAQ,MAAMzhB,KAAKyhB,KAC1CA,EAAM3c,OAAO+5I,EAAW/zH,MAAM51B,QAAQ,UAAW,IAAMusB,GAG/Dra,EAAMrT,SAAQ,SAASc,GACnBA,EAAOA,EAAKK,QAAQ,mBAAoB,MACpC6pJ,IACAlqJ,GAAQ,SAERmqJ,IACAnqJ,GAAQ,WAEZ0U,EAAO1U,GAAQ4sB,CACnB,GACJ,CACJ,CAEA,SAAS/f,GAAe0e,EAAK7b,GACzB,OAAOrR,OAAO4H,UAAU4G,eAAe1E,KAAKojB,EAAK7b,EACrD,CAmBA,SAAS66I,GAAWvqJ,EAAMwqJ,GACtB,IAAI/5B,EAAIs2B,GAER,IADA/mJ,EAAO,YAAcA,EACdywH,IAAM5jH,GAAe4jH,EAAGzwH,IAC3BywH,EAAIpyH,OAAO4sD,eAAewlE,GAEzBA,IACDA,EAAIs2B,GAAS1I,OAEjB5tB,EAAEzwH,IAASywH,EAAEzwH,IAAS,IAAa,MAAPwqJ,EAAc,EAAIA,EAClD,CAEA,SAASC,GAAazqJ,EAAMwtB,GAExBu5H,GADA/mJ,EAAO,YAAcA,GACG,MAAPwtB,EAAc,EAAIA,CACvC,CAEA,SAASk9H,GAAW5nJ,EAAGsoD,EAAGu/F,GACtB,IAAK,IAAIxlJ,EAAI,EAAGA,EAAIrC,EAAEsC,QAAS,CAC3B,IAAIpF,EAAO8C,EAAEqC,KACTqoB,EAAM7mB,WAAW7D,EAAEqC,IACnBuB,MAAM8mB,GACN49B,EAAEprD,EAAM2qJ,IAERv/F,EAAEprD,EAAMwtB,KACNroB,EAEV,CACJ,CAEA,SAASylJ,GAAe7/I,GACpB,IAAI8/I,EAAen9I,GAAiB3C,EAAO,iBACvC8/I,GACAH,GAAWxB,GAAc2B,EAAc,QAASJ,GAAc,GAElE,IAAIK,EAAmBp9I,GAAiB3C,EAAO,qBAC3C+/I,GACAJ,GAAWxB,GAAc4B,EAAkB,QAASP,GAAY,EAExE,CAEA,SAASQ,GAAah+I,EAAKlD,GACvB,IAAIglH,EAAQtwH,MAAMkxH,WAAW1iH,GAAK,GASlC,OARI8hH,IACAA,EAAQA,EAAMK,QACVrlH,EACAglH,EAAQA,EAAMS,YACK,IAAZT,EAAM/rH,IACb+rH,EAAQ,OAGTA,CACX,CAEA,SAASm8B,GAA4Bz0H,EAAU/O,GAC3C,IAAIyjI,EAAU,EACVzgH,GAAO,EAgBX,SAAS05B,KACA15B,KAAUygH,GAAW,IACtBzjI,IACAgjB,GAAO,EAEf,CApBAjU,EAASr3B,SAAQ,SAASksB,GAEtB,IADA,IAAI8/H,EAAS9/H,EAAGjH,iBAAiB,OACxBhf,EAAI,EAAGA,EAAI+lJ,EAAO9lJ,SAAUD,EAAG,CACpC,IAAIigI,EAAM8lB,EAAO/lJ,GACZigI,EAAIjgH,WACL8lI,IACA7lB,EAAIuf,OAASvf,EAAIwf,QAAU1gF,EAEnC,CACJ,IAEK+mF,GACD/mF,GASR,CAEA,SAASinF,GAAY50H,EAAU/O,GAC3B,IAAI4jI,EAAO,GACX,SAAShgJ,EAAIwhB,GACJk6H,GAAYl6H,KACbk6H,GAAYl6H,IAAO,EACnBw+H,EAAK7rJ,KAAKqtB,GAElB,CAEA2J,EAASr3B,SAAQ,SAASsoJ,EAAK/9I,GACvB,SAAS0B,KAAK1B,EAAQglB,UACtBrjB,EAAI3B,EAAQ7E,KAEhB+iJ,GACIj6I,GACI29I,GAAmB5hJ,GAAU,qBAEnCvK,SAAQ,SAASosJ,GACA,OAAXA,EAAGhoJ,MACH8H,EAAIkgJ,EAAG1+H,IAEf,IAEInjB,EAAQ0pC,UACRuzG,GAAUj9I,EAAQ0pC,UAAUj0C,QAAQsoJ,EAE5C,IAEA,IAAItuI,EAAQkyI,EAAKhmJ,OACjB,SAAS8+D,MACChrD,GAAS,GAKX8xI,GAA4Bz0H,EAAU/O,EAE9C,CACc,IAAVtO,GACAgrD,IAEJknF,EAAKlsJ,SAAQ,SAAS0tB,GAClB,IAAIw4G,EAAM0hB,GAAYl6H,GAAO,IAAIluB,OAAOuvI,MAClC,UAAU9iI,KAAKyhB,KACjBw4G,EAAIsf,YAAc,aAEtBtf,EAAIxgI,IAAMgoB,EACNw4G,EAAIjgH,SACJ++C,KAEAkhE,EAAIuf,OAASzgF,EACbkhE,EAAIwf,QAAU,WACVkC,GAAYl6H,GAAO,KACnBs3C,GACJ,EAER,GACJ,CAEA,SAASqnF,GAAa/6B,GAClB,IAAI97G,EAAS,GACb,EAAG,CACC,IAAIo7G,EAAIU,EAAI,GACZ97G,EAASzE,OAAOyc,aAAa,GAAKojG,GAAKp7G,EACvC87G,EAAIvvH,KAAKyN,MAAM8hH,EAAI,GACvB,OAASA,EAAI,GACb,OAAO97G,CACX,CAEA,SAAS82I,GAAa/hJ,EAASsB,EAAOonD,IAClC40F,GAAW1oJ,OAAO2mD,OAAO+hG,KAChBt9I,EAAQglB,QAAQhY,eAAiB,CACtChN,QAASA,EACTsB,MAAOA,GAEX,IAAI0gJ,EAAa/9I,GAAiB3C,EAAO,mBACzC,GAAI0gJ,GAA4B,QAAdA,EAAsB,CACpC,IAAI58B,EAAQnhH,GAAiB3C,EAAO,yBACpC0gJ,EAAWjjJ,MAAM,QAAQtJ,SAAQ,SAASc,GACtC,IAAK+mJ,GAAS/mJ,KACV+mJ,GAAS/mJ,GAAQ6uH,EACL,aAAR7uH,GAAqB,CACrB,IAAI0b,EAAShO,GAAiB3C,EAAO,yBACvB,QAAV2Q,IACAqrI,GAAS,oBAAsBpgJ,WAAW+U,GAElD,CAER,GACJ,EAmCJ,SAAgC3Q,GAC5B,SAAS0iB,EAAKztB,GAAQ,OAAO0N,GAAiB3C,EAAO/K,EAAO,CAC5D,GAAyB,QAArBytB,EAAK,cACe,UAApBA,EAAK,aACc,QAAnBA,EAAK,YACLA,EAAK,WAAa,EAClB,OAAO,CAEf,EAzCQi+H,CAAuB3gJ,KACvBg8I,GAAS4E,iBAAmB,CACxBliJ,QAASA,EACT0oD,MAAOA,GAGnB,CAEA,SAASy5F,KACL7E,GAAW1oJ,OAAO4sD,eAAe87F,GACrC,CAEA,SAAS8E,GAAc1+G,GACnB,GAAyB,MAArB45G,GAAS+E,SAAkB,CAC3B,IAAI50G,EAAM/J,EAAKouF,KAAKwrB,GAASvqB,SACzBuqB,GAAS+E,SACT/E,GAAS+E,SAAWjxB,GAAKuB,UAAU2qB,GAAS+E,SAAU50G,GAEtD6vG,GAAS+E,SAAW50G,CAE5B,CACJ,CAsBA,SAASm0G,GAAmB5hJ,EAASsiJ,GACjC,OAAOrtJ,OAAO+O,iBAAiBhE,EAASsiJ,GAAa,KACzD,CAEA,SAASr+I,GAAiB3C,EAAO0iB,EAAMu+H,GACnC,IAAIx+H,EAAMziB,EAAM2C,iBAAiB+f,GAYjC,OAXW,MAAPD,GAAuB,KAARA,IACX9M,GAAQH,OACRiN,EAAMziB,EAAM2C,iBAAiB,WAAa+f,GACnC/M,GAAQqB,QACfyL,EAAMziB,EAAM2C,iBAAiB,QAAU+f,GAChC/M,GAAQmB,MACf2L,EAAMziB,EAAM2C,iBAAiB,MAAQ+f,GAC9Bu5H,KACPx5H,EAAMziB,EAAM2C,iBAAiB,OAAS+f,KAG1CvoB,UAAUE,OAAS,IAAa,MAAPooB,GAAuB,KAARA,GACjCw+H,EAEAx+H,CAEf,CAEA,SAASy+H,GAAuBlhJ,EAAO0iB,EAAMnnB,EAAO4lJ,GAChDnhJ,EAAMohJ,YAAY1+H,EAAMnnB,EAAO4lJ,GAC3BxrI,GAAQH,OACRxV,EAAMohJ,YAAY,WAAa1+H,EAAMnnB,EAAO4lJ,GACrCxrI,GAAQqB,QACfhX,EAAMohJ,YAAY,QAAU1+H,EAAMnnB,EAAO4lJ,GAClCxrI,GAAQmB,MACf9W,EAAMohJ,YAAY,MAAQ1+H,EAAMnnB,EAAO4lJ,GAChClF,KACPj8I,EAAMohJ,YAAY,OAAS1+H,EAAMnnB,EAAO4lJ,GAIxCnhJ,EAHA0iB,EAAO,KAAOA,EAAKptB,QAAQ,iBAAiB,SAASwC,EAAG6+H,EAAIN,GACxD,OAAOM,EAAKN,EAAGl0H,aACnB,KACc5G,EAEtB,CAEA,SAAS8lJ,GAAUrhJ,EAAOshJ,GAEtB,OADAA,EAAO,UAAYA,EACZ,CACH1iJ,MAAOhD,WAAW+G,GAAiB3C,EAAOshJ,EAAO,WACjDthJ,MAAO2C,GAAiB3C,EAAOshJ,EAAO,UACtCx9B,MAAOk8B,GAAar9I,GAAiB3C,EAAOshJ,EAAO,WAAW,GAEtE,CAEA,SAASC,GAAU7iJ,EAASitD,GACxB,IAAI/Y,EAAOl0C,EAAQsB,MAAM2R,QACrBhI,EAASgiD,IAEb,OADAjtD,EAAQsB,MAAM2R,QAAUihC,EACjBjpC,CACX,CAEA,SAAS63I,GAAgBxhJ,EAAOshJ,GAC5B,IAAIv8B,EAAIpiH,GAAiB3C,EAAO,UAAYshJ,EAAO,WAAW7jJ,MAAM,QAAQiQ,IAAI9R,YAIhF,OAHgB,GAAZmpH,EAAE1qH,QACF0qH,EAAEvwH,KAAKuwH,EAAE,IAEN08B,GAAe,CAAExpJ,EAAG8sH,EAAE,GAAI/tH,EAAG+tH,EAAE,IAC1C,CAEA,SAAS28B,GAAchjJ,GACnB,IAAIytC,EAAMztC,EAAQqtH,wBAGlB,OAFA5/E,EAAMC,GAASD,EAAK,iBAAkBztC,GACtCytC,EAAMC,GAASD,EAAK,YAAaztC,EAErC,CAEA,SAAS0tC,GAASD,EAAKzpB,EAAMhkB,GACzB,IAAIsB,EAAO2hJ,EAAIC,EAAIC,EAAIC,EAWvB,MAVmB,iBAARp/H,GACP1iB,EAAQsgJ,GAAmB5hJ,GAC3BijJ,EAAK/lJ,WAAW+G,GAAiB3C,EAAO0iB,EAAKptB,QAAQ,IAAK,SAC1DssJ,EAAKhmJ,WAAW+G,GAAiB3C,EAAO0iB,EAAKptB,QAAQ,IAAK,WAC1DusJ,EAAKjmJ,WAAW+G,GAAiB3C,EAAO0iB,EAAKptB,QAAQ,IAAK,YAC1DwsJ,EAAKlmJ,WAAW+G,GAAiB3C,EAAO0iB,EAAKptB,QAAQ,IAAK,WAEtC,iBAARotB,IACZi/H,EAAKC,EAAKC,EAAKC,EAAKp/H,GAEjB,CACH3K,IAASo0B,EAAIp0B,IAAM4pI,EACnBriI,MAAS6sB,EAAI7sB,MAAQsiI,EACrBriI,OAAS4sB,EAAI5sB,OAASsiI,EACtBxiI,KAAS8sB,EAAI9sB,KAAOyiI,EACpBljJ,MAASutC,EAAI7sB,MAAQ6sB,EAAI9sB,KAAOuiI,EAAKE,EACrCjjJ,OAASstC,EAAI5sB,OAAS4sB,EAAIp0B,IAAM8pI,EAAKF,EAE7C,CAmBA,SAASI,GAAiB33B,GACtB,OAAS,IAAMA,EAAWl0H,KAAK6zH,GAAM,GACzC,CAkBA,SAASi4B,GAAerM,EAAO99I,GAG3B,OAFAA,EAAI,IAAI60H,EAAO70H,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAC/C89I,EAAMnvG,UAAU3uC,GACTA,CACX,CAEA,SAASoqJ,GAAYtM,EAAOuM,GACxBvM,EAAM5oG,KAAKm1G,EACf,CAEA,SAASC,GAAa//G,EAAMnqC,EAAGjB,EAAGgD,GAE9B,IADA,IAAIi8H,EAAS,IAAIjB,GAAM,CAAE/8H,EAAGjB,GAAKgD,GAASy7H,cAAer7H,EAAI,EACtDA,EAAI67H,EAAO57H,QACd+nC,EAAKu9F,QAAQ1J,EAAO77H,KAAM67H,EAAO77H,KAAM67H,EAAO77H,KAEtD,CAEA,SAASqnJ,GAAe18B,GAIpB,OAHIA,EAAE9sH,GAAK,GAAK8sH,EAAE/tH,GAAK,KACnB+tH,EAAE9sH,EAAI8sH,EAAE/tH,EAAI,GAET+tH,CACX,CAEA,SAASq9B,GAAyBj2G,EAAKk2G,EAAKC,EAAKC,EAAKC,GAKlD,IAAIC,EAAOvsJ,KAAK8V,IAAI,EAAGq2I,EAAIpqJ,GAAIyqJ,EAAOxsJ,KAAK8V,IAAI,EAAGq2I,EAAIrrJ,GAClD2rJ,EAAOzsJ,KAAK8V,IAAI,EAAGs2I,EAAIrqJ,GAAI2qJ,EAAO1sJ,KAAK8V,IAAI,EAAGs2I,EAAItrJ,GAClD6rJ,EAAO3sJ,KAAK8V,IAAI,EAAGu2I,EAAItqJ,GAAI6qJ,EAAO5sJ,KAAK8V,IAAI,EAAGu2I,EAAIvrJ,GAClD+rJ,EAAO7sJ,KAAK8V,IAAI,EAAGw2I,EAAIvqJ,GAAI+qJ,EAAO9sJ,KAAK8V,IAAI,EAAGw2I,EAAIxrJ,GAElDqpD,EAAInqD,KAAKqT,IACT4iC,EAAIvtC,OAAS6jJ,EAAOE,GACpBx2G,EAAIttC,QAAU+jJ,EAAOE,GACrB32G,EAAIvtC,OAASikJ,EAAOE,GACpB52G,EAAIttC,QAAUmkJ,EAAON,IAUzB,OAPIriG,EAAI,IACJoiG,GAAQpiG,EAAGqiG,GAAQriG,EACnBsiG,GAAQtiG,EAAGuiG,GAAQviG,EACnBwiG,GAAQxiG,EAAGyiG,GAAQziG,EACnB0iG,GAAQ1iG,EAAG2iG,GAAQ3iG,GAGhB,CACHowE,GAAI,CAAEx4H,EAAGwqJ,EAAMzrJ,EAAG0rJ,GAClBhyB,GAAI,CAAEz4H,EAAG0qJ,EAAM3rJ,EAAG4rJ,GAClBjyB,GAAI,CAAE14H,EAAG4qJ,EAAM7rJ,EAAG8rJ,GAClBlyB,GAAI,CAAE34H,EAAG8qJ,EAAM/rJ,EAAGgsJ,GAE1B,CAEA,SAASC,GAAgBvkJ,EAASytC,EAAK5zC,GACnC,IAAIyH,EAAQsgJ,GAAmB5hJ,GAE3B2jJ,EAAMb,GAAgBxhJ,EAAO,YAC7BsiJ,EAAMd,GAAgBxhJ,EAAO,aAC7BwiJ,EAAMhB,GAAgBxhJ,EAAO,eAC7BuiJ,EAAMf,GAAgBxhJ,EAAO,gBAEjC,GAAY,WAARzH,GAA6B,WAARA,EAAmB,CACxC,IAAI2qJ,EAAK7B,GAAUrhJ,EAAO,OACtB2wH,EAAK0wB,GAAUrhJ,EAAO,SACtBmjJ,EAAK9B,GAAUrhJ,EAAO,UACtB4wH,EAAKywB,GAAUrhJ,EAAO,QAK1B,GAJAqiJ,EAAIpqJ,GAAK24H,EAAGhyH,MAAOyjJ,EAAIrrJ,GAAKksJ,EAAGtkJ,MAC/B0jJ,EAAIrqJ,GAAK04H,EAAG/xH,MAAO0jJ,EAAItrJ,GAAKksJ,EAAGtkJ,MAC/B2jJ,EAAItqJ,GAAK04H,EAAG/xH,MAAO2jJ,EAAIvrJ,GAAKmsJ,EAAGvkJ,MAC/B4jJ,EAAIvqJ,GAAK24H,EAAGhyH,MAAO4jJ,EAAIxrJ,GAAKmsJ,EAAGvkJ,MACnB,WAARrG,EAAmB,CACnB,IAAI6qJ,EAAKxnJ,WAAW+G,GAAiB3C,EAAO,gBACxCqjJ,EAAKznJ,WAAW+G,GAAiB3C,EAAO,kBACxCsjJ,EAAK1nJ,WAAW+G,GAAiB3C,EAAO,mBACxCujJ,EAAK3nJ,WAAW+G,GAAiB3C,EAAO,iBAC5CqiJ,EAAIpqJ,GAAKsrJ,EAAIlB,EAAIrrJ,GAAKosJ,EACtBd,EAAIrqJ,GAAKorJ,EAAIf,EAAItrJ,GAAKosJ,EACtBb,EAAItqJ,GAAKorJ,EAAId,EAAIvrJ,GAAKssJ,EACtBd,EAAIvqJ,GAAKsrJ,EAAIf,EAAIxrJ,GAAKssJ,CAC1B,CACJ,CASA,MAPmB,iBAAR/qJ,IACP8pJ,EAAIpqJ,GAAKM,EAAM8pJ,EAAIrrJ,GAAKuB,EACxB+pJ,EAAIrqJ,GAAKM,EAAM+pJ,EAAItrJ,GAAKuB,EACxBgqJ,EAAItqJ,GAAKM,EAAMgqJ,EAAIvrJ,GAAKuB,EACxBiqJ,EAAIvqJ,GAAKM,EAAMiqJ,EAAIxrJ,GAAKuB,GAGrBirJ,GAASr3G,EAAKk2G,EAAKC,EAAKC,EAAKC,EACxC,CAMA,SAASgB,GAASr3G,EAAKs3G,EAAMC,EAAMC,EAAMC,GACrC,IAAIp4G,EAAM42G,GAAyBj2G,EAAKs3G,EAAMC,EAAMC,EAAMC,GACtDvB,EAAM72G,EAAIilF,GACV6xB,EAAM92G,EAAIklF,GACV6xB,EAAM/2G,EAAImlF,GACV6xB,EAAMh3G,EAAIolF,GACVxuF,EAAO,IAAIg/F,GAAK,CAAE76G,KAAM,KAAMksG,OAAQ,OAqC1C,OApCArwF,EAAKiN,OAAOlD,EAAI9sB,KAAM8sB,EAAIp0B,IAAMsqI,EAAIrrJ,GAChCqrJ,EAAIpqJ,GACJkqJ,GAAa//G,EAAM+J,EAAI9sB,KAAOgjI,EAAIpqJ,EAAGk0C,EAAIp0B,IAAMsqI,EAAIrrJ,EAAG,CAClDo+H,YAAa,IACbC,UAAW,GACXH,QAASmtB,EAAIpqJ,EACbk9H,QAASktB,EAAIrrJ,IAGrBorC,EAAKs9F,OAAOvzF,EAAI7sB,MAAQgjI,EAAIrqJ,EAAGk0C,EAAIp0B,KAC/BuqI,EAAIrqJ,GACJkqJ,GAAa//G,EAAM+J,EAAI7sB,MAAQgjI,EAAIrqJ,EAAGk0C,EAAIp0B,IAAMuqI,EAAItrJ,EAAG,CACnDo+H,YAAa,GACbC,SAAU,EACVH,QAASotB,EAAIrqJ,EACbk9H,QAASmtB,EAAItrJ,IAGrBorC,EAAKs9F,OAAOvzF,EAAI7sB,MAAO6sB,EAAI5sB,OAASgjI,EAAIvrJ,GACpCurJ,EAAItqJ,GACJkqJ,GAAa//G,EAAM+J,EAAI7sB,MAAQijI,EAAItqJ,EAAGk0C,EAAI5sB,OAASgjI,EAAIvrJ,EAAG,CACtDo+H,WAAY,EACZC,SAAU,GACVH,QAASqtB,EAAItqJ,EACbk9H,QAASotB,EAAIvrJ,IAGrBorC,EAAKs9F,OAAOvzF,EAAI9sB,KAAOmjI,EAAIvqJ,EAAGk0C,EAAI5sB,QAC9BijI,EAAIvqJ,GACJkqJ,GAAa//G,EAAM+J,EAAI9sB,KAAOmjI,EAAIvqJ,EAAGk0C,EAAI5sB,OAASijI,EAAIxrJ,EAAG,CACrDo+H,WAAY,GACZC,SAAU,IACVH,QAASstB,EAAIvqJ,EACbk9H,QAASqtB,EAAIxrJ,IAGdorC,EAAKmW,OAChB,CAEA,SAASsrG,GAAcphI,EAAKziB,GACxB,IAAIgC,EAAMkD,OAAOtJ,WAAW6mB,IAC5B,OAAQziB,GACN,IAAK,uBAIH,OAHIgC,EAAI3H,OAAS,IACb2H,EAAM,IAAMA,GAETA,EACT,IAAK,cACH,OAAOynH,EAAchnG,GAAK/W,cAC5B,IAAK,cACH,OAAO+9G,EAAchnG,GAAKtgB,cAC5B,IAAK,cACL,IAAK,cACH,OAAOq+I,GAAa/9H,EAAM,GAC5B,IAAK,cACL,IAAK,cACH,OAAO+9H,GAAa/9H,EAAM,GAAGtgB,cAC/B,QACE,OAAOH,EAEf,CAEA,SAAS8hJ,GAAyBplJ,EAAS86C,GACvC,SAASuqG,EAAe9uJ,EAAM+K,EAAO+sH,GACjC,OAAKA,GAGLA,EAAYA,EAAUz3H,QAAQ,uBAAwB,MAlhB9D,SAAwBL,GACpB,IAAIiX,EAAS,GAAIw5G,EAAIs2B,GAErB,IADA/mJ,EAAO,YAAcA,EACdywH,GACC5jH,GAAe4jH,EAAGzwH,IAClBiX,EAAO1X,KAAKkxH,EAAEzwH,IAElBywH,EAAIpyH,OAAO4sD,eAAewlE,GAE9B,OAAOx5G,EAAOhD,SAClB,CAygBe86I,CAAe/uJ,GAAMyY,KAAI,SAAS+U,GACrC,OAAOohI,GAAcphI,EAAKziB,EAC9B,IAAGtC,KAAKqvH,IALG82B,GArhBnB,SAAoB5uJ,GAEhB,OAAO+mJ,GADP/mJ,EAAO,YAAcA,EAEzB,CAkhBiCgvJ,CAAWhvJ,IAAS,EAAG+K,EAMpD,CACA,IACiBnI,EADbE,EAAIomJ,GAAc3kG,EAAS,QAC3B7vC,EAAS,GAuBb,OAtBA5R,EAAE5D,SAAQ,SAASksB,GACf,IAAImrB,GACC3zC,EAAI,uBAAuB4T,KAAK4U,IACjC1W,EAAOnV,KAAKqD,EAAE,GAAGvC,QAAQ,qBAAqB,SAASwC,EAAG4tH,GACtD,OAAOxgH,OAAOyc,aAAatV,SAASq5G,EAAG,IAC3C,MAEM7tH,EAAI,2BAA2B4T,KAAK4U,KAC1CmrB,EAAM2yG,GAActmJ,EAAE,IACtB8R,EAAOnV,KAAKuvJ,EAAev4G,EAAI,GAAIA,EAAI,OAEjC3zC,EAAI,4BAA4B4T,KAAK4U,KAC3CmrB,EAAM2yG,GAActmJ,EAAE,IACtB8R,EAAOnV,KAAKuvJ,EAAev4G,EAAI,GAAIA,EAAI,GAAIA,EAAI,OAEzC3zC,EAAI,wBAAwB4T,KAAK4U,IACvC1W,EAAOnV,KAAKkK,EAAQspB,aAAanwB,EAAE,KAAO,IAG1C8R,EAAOnV,KAAK6rB,EAEpB,IACO1W,EAAOjM,KAAK,GACvB,CAEA,SAASwmJ,GAAWlkJ,GAChB,GAAIA,EAAM2R,QACN,OAAO3R,EAAM2R,QAMjB,IADA,IAAIhI,EAAS,GACJvP,EAAI,EAAGA,EAAI4F,EAAM3F,SAAUD,EAChCuP,EAAOnV,KAAKwL,EAAM5F,GAAK,KAAOuI,GAAiB3C,EAAOA,EAAM5F,KAEhE,OAAOuP,EAAOjM,KAAK,MACvB,CAEA,SAASymJ,GAA0BzlJ,EAAS0oD,GACxC,GAAI1oD,EAAQglB,SAAWm4H,GAAvB,CAIA,IAAIuI,EAAO,GAcX,GAFAC,EAAO,UAAW3lJ,EAAQs+C,YAC1BqnG,EAAO,SAAU,MACbD,EAAK/pJ,OAAS,EAAG,CACjB,IAAIiqJ,EAAY5lJ,EAAQwhB,UACxBxhB,EAAQwhB,WAAa,kCACrBqkI,GAAe7lJ,EAAS0oD,GACxB1oD,EAAQwhB,UAAYokI,EACpBF,EAAKjwJ,SAAQ,SAASksB,GAAK3hB,EAAQuT,YAAYoO,EAAK,GACxD,MACIkkI,GAAe7lJ,EAAS0oD,EAtB5B,MAFIm9F,GAAe7lJ,EAAS0oD,GAI5B,SAASi9F,EAAOG,EAAMC,GAClB,IAAIzkJ,EAAQsgJ,GAAmB5hJ,EAAS8lJ,GAAOhrG,EAAUx5C,EAAMw5C,QAE/D,GADAqmG,GAAe7/I,GACXw5C,GAAsB,UAAXA,GAAkC,QAAXA,GAAoC,OAAfx5C,EAAMpB,MAAgB,CAC7E,IAAI8lJ,EAAOhmJ,EAAQ+1E,cAAc/iE,cAAcmqI,IAC/C6I,EAAK1kJ,MAAM2R,QAAUuyI,GAAWlkJ,GAChC0kJ,EAAKnuH,YAAcutH,GAAyBplJ,EAAS86C,GACrD96C,EAAQymE,aAAau/E,EAAMD,GAC3BL,EAAK5vJ,KAAKkwJ,EACd,CACJ,CAYJ,CAEA,SAASH,GAAe7lJ,EAAS0oD,GAC7B,IAAIpnD,EAAQsgJ,GAAmB5hJ,GAE3BqZ,EAAMspI,GAAUrhJ,EAAO,OACvBsf,EAAQ+hI,GAAUrhJ,EAAO,SACzBuf,EAAS8hI,GAAUrhJ,EAAO,UAC1Bqf,EAAOgiI,GAAUrhJ,EAAO,QAExByjJ,EAAOjC,GAAgBxhJ,EAAO,YAC9B0jJ,EAAOlC,GAAgBxhJ,EAAO,aAC9B4jJ,EAAOpC,GAAgBxhJ,EAAO,eAC9B2jJ,EAAOnC,GAAgBxhJ,EAAO,gBAE9BoyB,EAAMzvB,GAAiB3C,EAAO,aAE9B2kJ,EAAkBhiJ,GAAiB3C,EAAO,oBAC9C2kJ,EAAkB3E,GAAa2E,GAE/B,IAmBIC,EAAcC,EAnBdC,EAAkBlI,GAAsBj6I,GAAiB3C,EAAO,qBAChE+kJ,EAAmB5G,GAAex7I,GAAiB3C,EAAO,sBAC1DglJ,EAAqB7G,GAAex7I,GAAiB3C,EAAO,wBAC5DilJ,EAAmB9G,GAAex7I,GAAiB3C,EAAO,sBAC1DklJ,EAAiB/G,GAAex7I,GAAiB3C,EAAO,oBAgBxDi8I,IAEoB,aADpB2I,EAAe5kJ,EAAM4kJ,gBAEjBC,EAAmBnmJ,EAAQsB,MAAM4kJ,aACjClmJ,EAAQsB,MAAM4kJ,aAAe,QAIjCjvI,GAAQoB,MAAQpB,GAAQtgB,QAAU,KAKlC2vJ,EAAqB7G,GAAcz/I,EAAQkE,aAAaoiJ,qBAG5D,IA4BIG,EAAO/qJ,EAAG8iE,EA5BVkoF,EAAWh5G,GAAS1tC,EAAQqtH,wBAAyB,iBAAkBrtH,IAK3E,WACI,IAAIquC,EAAOpqC,GAAiB3C,EAAO,QAC/BnI,EAAI,uBAAuB4T,KAAKshC,GACpC,GAAIl1C,EAAG,CACH,IAAIE,EAAIF,EAAE,GAAG4F,MAAM,UACfsa,EAAc,QAARhgB,EAAE,GAAeqtJ,EAASrtI,IAAMnc,WAAW7D,EAAE,IAAMqtJ,EAASrtI,IAClEuH,EAAgB,QAARvnB,EAAE,GAAeqtJ,EAAS9lI,MAAQ1jB,WAAW7D,EAAE,IAAMqtJ,EAAS/lI,KACtEE,EAAiB,QAARxnB,EAAE,GAAeqtJ,EAAS7lI,OAAS3jB,WAAW7D,EAAE,IAAMqtJ,EAASrtI,IACxEsH,EAAe,QAARtnB,EAAE,GAAeqtJ,EAAS/lI,KAAOzjB,WAAW7D,EAAE,IAAMqtJ,EAAS/lI,KACpEmsB,EAAM,IAAI83F,GACV4e,GAAW,IAAI9gB,IACd/xF,OAAOhwB,EAAMtH,GACb2nH,OAAOpgH,EAAOvH,GACd2nH,OAAOpgH,EAAOC,GACdmgH,OAAOrgH,EAAME,GACbg5B,QACL0pG,GAAYz2G,EAAK02G,GACjB96F,EAAMpa,OAAOxB,GACb4b,EAAQ5b,EACRs1G,GAAcoB,EAClB,CACH,CArBD,GAwBA,IAAIhiJ,EAAUyC,GAAiB3C,EAAO,WAEtC,GAAe,aAAXE,EAKA,IADAilJ,EAAQ,GACH/qJ,EAAI,EAAG8iE,EAAQx+D,EAAQ0pC,SAAUhuC,EAAI8iE,EAAM7iE,SAAUD,EACtD+qJ,EAAM3wJ,KAAK0oE,EAAM9iE,GAAG2xH,8BAIJ,IADpBo5B,EAAQzmJ,EAAQ2mJ,kBACNhrJ,SAKN8qJ,EAAQ,CAAEzmJ,EAAQqtH,0BAS1B,IAFAo5B,EA+DA,SAAqBA,GACjB,GAAI,QAAQ/kJ,KAAK1B,EAAQglB,SAAU,CAC/B,IAAIvR,EAAQ6pI,GAAS7pI,MACrB,GAAIA,GAA6D,YAApDxP,GAAiBwP,EAAMnS,MAAO,mBAAkC,CACzE,IAAIslJ,EAAkBjE,GAAUlvI,EAAMnS,MAAO,QAAQpB,MACjD2mJ,EAAiBlE,GAAUlvI,EAAMnS,MAAO,OAAOpB,MAEnD,GAAwB,IAApB0mJ,GAA4C,IAAnBC,EACzB,OAAOJ,EAEX,IAAIK,EAAWrzI,EAAMzT,QAAQqtH,wBAEzB05B,EADYtzI,EAAMzT,QAAQ4+D,KAAK,GAAGJ,MAAM,GACf6uD,wBAC7B,GAAI05B,EAAa1tI,KAAOytI,EAASztI,KAAO0tI,EAAapmI,MAAQmmI,EAASnmI,KAClE,OAAOs8H,GAAUwJ,GAAOz3I,KAAI,SAASy+B,GACjC,MAAO,CACH9sB,KAAS8sB,EAAI9sB,KAAOimI,EACpBvtI,IAASo0B,EAAIp0B,IAAMwtI,EACnBjmI,MAAS6sB,EAAI7sB,MAAQgmI,EACrB/lI,OAAS4sB,EAAI5sB,OAASgmI,EACtB1mJ,OAASstC,EAAIttC,OACbD,MAASutC,EAAIvtC,MAErB,GAER,CACJ,CACA,OAAOumJ,CACX,CA3FQO,CAAYP,GAEf/qJ,EAAI,EAAGA,EAAI+qJ,EAAM9qJ,SAAUD,EAC5BurJ,EAAWR,EAAM/qJ,GAAU,IAANA,EAASA,GAAK+qJ,EAAM9qJ,OAAS,GAMtD,GAAuB,KAAnBqE,EAAQglB,SAAkBhlB,EAAQwsB,OAAS,OAAO9qB,KAAK1B,EAAQspB,aAAa,YACvEg0H,GAAS4J,cAAgBvxJ,GAAQqK,EAASs9I,GAAS4J,cAAc,CAClE,IAAI7gC,EAAIviH,SAASg3B,cACjBurF,EAAE8gC,mBAAmBnnJ,GACrBi9I,GAAU52B,EAAEsgC,kBAAkBlxJ,SAAQ,SAASg4C,GAC3C,IAAIlkC,EAAI,IAAIq7H,GACZr7H,EAAE69I,SAAW,CACTjkI,IAASnjB,EAAQwsB,KACjBnT,IAASo0B,EAAIp0B,IACbuH,MAAS6sB,EAAI7sB,MACbC,OAAS4sB,EAAI5sB,OACbF,KAAS8sB,EAAI9sB,MAEjB+nC,EAAMpa,OAAO/kC,EACjB,GACJ,CAqCJ,OAlCIk9I,EAAM9qJ,OAAS,GAAgB,aAAX6F,IAA2BxB,EAAQspB,aAAa,oBAmVxE,WACI,IAAI+9H,EAAgBpjJ,GAAiB3C,EAAO,mBAC5C,GAAqB,QAAjB+lJ,EACA,OAEJ,IAAIC,EAAoBrjJ,GAAiB3C,EAAO,uBAEhD,SAASimJ,EAAY5lG,GACjBkhG,GAAU7iJ,GAAS,WACfA,EAAQsB,MAAMG,SAAW,WACzB,IAAI+lJ,EAASxnJ,EAAQ+1E,cAAc/iE,cAAcmqI,IACjDqK,EAAOlmJ,MAAMG,SAAW,WACxB+lJ,EAAOlmJ,MAAMmmJ,UAAY,aACA,WAArBH,GACAE,EAAOlmJ,MAAMpB,MAAQ,MACrBsnJ,EAAOlmJ,MAAMqf,KAAO,SACpB6mI,EAAOlmJ,MAAMk6I,UAAY,SAEzBgM,EAAOlmJ,MAAMqf,KAAO,MAExBghC,EAAE6lG,GACFxnJ,EAAQymE,aAAa+gF,EAAQxnJ,EAAQs+C,YACrCopG,GAAcF,EAAQ9+F,GACtB1oD,EAAQuT,YAAYi0I,EACxB,GACJ,CAEA,SAASG,EAAahmG,GAClB,IAAItoD,EAAI2G,EAAQ2a,WAAW+uB,SACvBzwC,EAAI+G,EAAQspB,aAAa,qBAC7B,GAAS,MAALrwB,EACA,OAAO0oD,EAAI,EAAF1oD,EAAKI,EAAEsC,QAEpB,IAAK,IAAID,EAAI,EAAGA,EAAIrC,EAAEsC,SAAUD,EAC5B,GAAIrC,EAAEqC,KAAOsE,EACT,OAAO2hD,EAAEjmD,EAAGrC,EAAEsC,OAG1B,CAEA,OAAQ0rJ,GACN,IAAK,SACL,IAAK,OACL,IAAK,SACHE,GAAY,SAASC,GACjBA,EAAOt0I,UAAY,SACnBs0I,EAAO1tI,aAAasjI,GAAmBiK,EAC3C,IACA,MAEF,IAAK,UACL,IAAK,uBACHE,GAAY,SAASC,GACjBG,GAAa,SAAS5pJ,KAChBA,EACmB,wBAAjBspJ,GAA2CtpJ,EAAM,KACjDA,EAAM,IAAMA,GAEhBypJ,EAAOt0I,UAAYnV,EAAM,GAC7B,GACJ,IACA,MAEF,IAAK,cACL,IAAK,cACHwpJ,GAAY,SAASC,GACjBG,GAAa,SAAS5pJ,GAClBA,EAAMgtH,EAAchtH,EAAM,GACL,eAAjBspJ,IACAtpJ,EAAMA,EAAI0F,eAEd+jJ,EAAOt0I,UAAYnV,EAAM,GAC7B,GACJ,IACA,MAEF,IAAK,cACL,IAAK,cACL,IAAK,cACL,IAAK,cACHwpJ,GAAY,SAASC,GACjBG,GAAa,SAAS5pJ,GAClBA,EAAM+jJ,GAAa/jJ,GACf,UAAU2D,KAAK2lJ,KACftpJ,EAAMA,EAAI0F,eAEd+jJ,EAAOt0I,UAAYnV,EAAM,GAC7B,GACJ,IAGR,CA7aI6pJ,CAAWnB,EAAM,IAKrB,WACI,SAASoB,IACL,IAAIrE,EAAWe,GAAgBvkJ,EAAS0mJ,EAAU,WAC9C55G,EAAM,IAAI83F,GACd2e,GAAYz2G,EAAK02G,GACjB96F,EAAMpa,OAAOxB,GACb4b,EAAQ5b,EACRs1G,GAAcoB,EAClB,EAkzBR,SAAqBxjJ,GACjB,MAAO,+BAA+B0B,KAAK1B,EAAQglB,QACvD,CAnzBY8iI,CAAY9nJ,IAEL,wBAAwB0B,KAAKuC,GAAiB3C,EAAO,cAErD,wBAAwBI,KAAKuC,GAAiB3C,EAAO,gBAErD,wBAAwBI,KAAKuC,GAAiB3C,EAAO,iBAH5DumJ,IAFAA,GAQP,CAlBD,GAqtBJ,SAA2B7nJ,EAAS0oD,GAChC,IAAI0sF,EAEJ,GAAIp1I,EAAQsrI,mBACR8J,EAASp1I,EAAQsrI,0BACd,GAAIr2I,OAAOH,OAASG,OAAOH,MAAM+G,QAAUmE,EAAQspB,aAAar0B,OAAOH,MAAMijB,KAAK,SAAU,CAC/F,IAAI2P,EAASzyB,OAAOH,MAAM41B,eAAez1B,OAAOH,MAAM+G,OAAOmE,IACzD0nB,IAAWA,EAAOqgI,iBAAmBrgI,EAAO6jH,gBAExC6J,EADA1tH,EAAOqgI,gBACErgI,EAAOqgI,kBAEPrgI,EAAO6jH,eAG5B,CAEA,IAAK6J,EACD,OAAO,EAGX,IAAI4S,EAAU,IAAIpjB,GAClBojB,EAAQt+G,SAAS5zC,KAAKs/I,GAEtB,IAAItjB,EAAO9xH,EAAQqtH,wBAKnB,OAJA26B,EAAQlgH,UAAUorF,KAAc3uF,UAAUutF,EAAKnxG,KAAMmxG,EAAKz4G,MAE1DqvC,EAAMpa,OAAO05G,IAEN,CACX,CA9tBSC,CAAkBjoJ,EAAS0oD,IAguBpC,SAA2B1oD,EAAS0oD,GAChC,IAAIw/F,EAAaloJ,EAAQspB,aAAa8zH,IAEtC,IAAK8K,EACD,OAAO,EAGX,IAAIz6G,EAAMztC,EAAQqtH,wBACdjI,EAAQw8B,GAAmB5hJ,GAASolH,MAExC,GAAmB,WAAf8iC,EAAyB,CACzB,IAAIC,EAAW16G,EAAIttC,OAAS,EAC5BuoD,EAAMpa,OAAO,IAAIo5F,GAAO,IAAItW,GAAK,CAC7B3jF,EAAI7sB,MAAQunI,EACZ16G,EAAIp0B,IAAMo0B,EAAIttC,OAAS,KACxB,CAACgoJ,EAAUA,KAAYtgI,KAAKu9F,GAAO2O,OAAO3O,GACjD,KAAO,CACH,IAAI3kG,EAASgtB,EAAIttC,OAAS,EACtBuyE,EAAS,CACTjlC,EAAI7sB,MAAQH,EACZgtB,EAAIp0B,KAAOo0B,EAAIttC,OAASsgB,GAAU,GAElC2nI,EAAS,IAAI9zB,GAAO,IAAID,GAAS3hD,EAAQjyD,IAC1B,WAAfynI,EACAE,EAAOr0B,OAAO3O,EAAO,IAErBgjC,EAAOvgI,KAAKu9F,GAAO2O,OAAO,MAE9BrrE,EAAMpa,OAAO85G,EACjB,CAEA,OAAO,CACX,CAhwB+CC,CAAkBroJ,EAAS0oD,IAClE4/F,GAAetoJ,EAAS0oD,GAGxB60F,IAA6B,YAAhB2I,IACblmJ,EAAQsB,MAAM4kJ,aAAeC,GAG1Bz9F,EA8CP,SAAS6/F,EAASnjC,EAAOlgG,EAAKsjI,EAAMC,EAAOC,EAAQC,EAAIC,EAAIC,GACvD,KAAIL,GAAQ,GAAZ,CAIA,IAAI9kH,EAAMxrB,EAAO,IAAI0sH,GACrB0e,GAAeprI,EAAM2wI,GACrBngG,EAAMpa,OAAOp2B,GAEb6qI,GAAe4F,GACf5F,GAAe6F,GAGfllH,EAAO,IAAIg/F,GAAK,CACZ76G,KAAM,CAAEu9F,MAAOA,GACf2O,OAAQ,OAEZ77G,EAAKo2B,OAAO5K,GACZA,EAAKiN,OAAOg4G,EAAGpvJ,EAAI/B,KAAK8V,IAAIq7I,EAAGpvJ,EAAGkvJ,GAAS,EAAG,GACzCznB,OAAO97G,GAAO0jI,EAAGrvJ,EAAI/B,KAAK8V,IAAIs7I,EAAGrvJ,EAAGmvJ,GAAU,GAAI,GAClD1nB,OAAO97G,EAAM1tB,KAAK8V,IAAIs7I,EAAGrvJ,EAAGmvJ,GAASF,GACrCxnB,OAAOxpI,KAAK8V,IAAIq7I,EAAGpvJ,EAAGkvJ,GAAQD,GAC9B3uG,QAED8uG,EAAGpvJ,GACHuvJ,EAAgBL,EAAOE,EAAI,EAAG,EAAG,EAAG,EAAG,EAAGA,EAAGpvJ,EAAG,IAGhDqvJ,EAAGrvJ,GACHuvJ,EAAgBJ,EAAQE,EAAI,CAAE,EAAG,EAAG,EAAG,EAAG1jI,EAAM0jI,EAAGrvJ,EAAG,GA1B1D,CA+BA,SAASuvJ,EAAgBJ,EAAQriC,EAAGwiC,GAChC,IAAIt6B,EAAQ/2H,KAAK6zH,GAAG,EAAIq9B,GAAUA,EAASF,GAIvCO,EAAK,CACLxvJ,EAAG8sH,EAAE9sH,EAAImvJ,EACTpwJ,EAAG+tH,EAAE/tH,EAAIkwJ,GAGT9kH,EAAO,IAAIg/F,GAAK,CAChB76G,KAAM,CAAEu9F,MAAOA,GACf2O,OAAQ,OACTpjF,OAAO,EAAG,GAEb2yG,GAAe5/G,EAAMmlH,GAErBpF,GAAa//G,EAAM,EAAG2iF,EAAE/tH,EAAG,CACvBo+H,YAAa,GACbC,UAAW0sB,GAAiB90B,GAC5BiI,QAASnQ,EAAE9sH,EACXk9H,QAASpQ,EAAE/tH,IAGXywJ,EAAGxvJ,EAAI,GAAKwvJ,EAAGzwJ,EAAI,GACnBorC,EAAKs9F,OAAO+nB,EAAGxvJ,EAAI/B,KAAKg3H,IAAID,GAAQlI,EAAE/tH,EAAIywJ,EAAGzwJ,EAAId,KAAKi3H,IAAIF,IAC1Dk1B,GAAa//G,EAAM,EAAG2iF,EAAE/tH,EAAG,CACvBo+H,YAAa2sB,GAAiB90B,GAC9BoI,UAAW,GACXH,QAASuyB,EAAGxvJ,EACZk9H,QAASsyB,EAAGzwJ,EACZs+H,eAAe,KAGdmyB,EAAGxvJ,EAAI,EACZmqC,EAAKs9F,OAAO+nB,EAAGxvJ,EAAGivJ,GACbxnB,OAAO,EAAGwnB,GAGf9kH,EAAKs9F,OAAO+nB,EAAGxvJ,EAAGivJ,GACbxnB,OAAO+nB,EAAGxvJ,EAAG,GAGtB2e,EAAKo2B,OAAO5K,EAAKmW,QACrB,CACJ,CAgCA,SAASmvG,EAAkBtgG,EAAOjb,EAAKw7G,EAAY5C,EAAkBC,EAAoBC,EAAkBC,GAgY/G,IAA0BrM,EA/XlB,GAAK8O,GAA6B,QAAdA,EAIpB,GAAuB,OAAnBA,EAAWpvJ,KAAe,CAC1B,IAAI8hI,EAAM0hB,GAAY4L,EAAW9lI,KAC7Bw4G,GAAOA,EAAIz7H,MAAQ,GAAKy7H,EAAIx7H,OAAS,GACrC+oJ,EAAoBxgG,EAAOjb,EAAKkuF,EAAIz7H,MAAOy7H,EAAIx7H,QAAQ,SAASuoD,EAAO+3B,GACnE/3B,EAAMpa,OAAO,IAAIi2F,GAAQ0kB,EAAW9lI,IAAKs9D,GAC7C,GAER,KAAO,IAAuB,UAAnBwoE,EAAWpvJ,KAGlB,OAFAqvJ,EAAoBxgG,EAAOjb,EAAKA,EAAIvtC,MAAOutC,EAAIttC,QAmXjCg6I,EAnX0D8O,EAoXzE,SAASvgG,EAAO+3B,GACnB,IAAIvgF,EAAQugF,EAAKvgF,QAASC,EAASsgF,EAAKtgF,SAExC,OAAQg6I,EAAStgJ,MACf,IAAK,SAGH,IAAI00H,EAA0B,MAAlB4rB,EAAS5rB,MAAgB4rB,EAAS5rB,MAAQ/2H,KAAK6zH,GAC3D,OAAQ8uB,EAAS1nH,IACf,IAAK,MACH87F,EAAQ,EACR,MACF,IAAK,OACHA,GAAS/2H,KAAK6zH,GAAK,EACnB,MACF,IAAK,SACHkD,EAAQ/2H,KAAK6zH,GACb,MACF,IAAK,QACHkD,EAAQ/2H,KAAK6zH,GAAK,EAClB,MACF,IAAK,WAAY,IAAK,WACpBkD,GAAS/2H,KAAKwwC,MAAM7nC,EAAQD,GAC5B,MACF,IAAK,YAAa,IAAK,YACrBquH,EAAQ/2H,KAAKwwC,MAAM7nC,EAAQD,GAC3B,MACF,IAAK,cAAe,IAAK,cACvBquH,EAAQ/2H,KAAK6zH,GAAK7zH,KAAKwwC,MAAM7nC,EAAQD,GACrC,MACF,IAAK,eAAgB,IAAK,eACxBquH,EAAQ/2H,KAAK6zH,GAAK7zH,KAAKwwC,MAAM7nC,EAAQD,GAIrCi6I,EAAS3vI,UACT+jH,GAAS/2H,KAAK6zH,KAIlBkD,GAAS,EAAI/2H,KAAK6zH,IACN,IACRkD,GAAS,EAAI/2H,KAAK6zH,IAUtB,IAAI89B,EAAQ3xJ,KAAKoU,IAAI1L,EAAQ1I,KAAKi3H,IAAIF,IAAU/2H,KAAKoU,IAAIzL,EAAS3I,KAAKg3H,IAAID,IAkCvE66B,EAAc5xJ,KAAK6xJ,KAAKnpJ,EAAQ1I,KAAKgtH,IAAI+J,GAASpuH,GAClDsuH,EAAMj3H,KAAKi3H,IAAI26B,GAAc56B,EAAMh3H,KAAKg3H,IAAI46B,GAC5ClkI,EAAM1tB,KAAKoU,IAAI6iH,GAAOj3H,KAAKoU,IAAI4iH,GAC/Bj1H,EAAI2rB,EAAI,EAAIupG,EACZn2H,EAAI4sB,EAAI,EAAIspG,EAIZD,EAAQ/2H,KAAK6zH,GAAG,GAAKkD,GAAS,EAAE/2H,KAAK6zH,GAAG,IACxC9xH,GAAKA,EACLjB,GAAKA,GAIT,IAAIgxJ,EAAW,GAAI1oI,EAAQ,EACvBsoH,EAAQiR,EAASjR,MAAMl6H,KAAI,SAAS5V,EAAGsC,GACvC,IAAIuW,EAAS7Y,EAAEmP,QACX0J,EACAA,EAAS/U,WAAW+U,GAAU,IACvB7Y,EAAEuC,OACTsW,EAAS/U,WAAW9D,EAAEuC,QAAUwtJ,EACnB,IAANztJ,EACPuW,EAAS,EACFvW,GAAKy+I,EAASjR,MAAMvtI,OAAS,IACpCsW,EAAS,GAEb,IAAI0K,EAAO,CACPyoG,MAAOhsH,EAAEgsH,MAAMS,YACf5zG,OAAQA,GAaZ,OAXc,MAAVA,GACA2O,EAAQ3O,EAERq3I,EAAS7zJ,SAAQ,SAAS2D,EAAGsC,GACdtC,EAAEujB,KACR1K,OAAS7Y,EAAEunB,MAAQC,EAAQxnB,EAAEunB,OAASjlB,EAAI,IAAM4tJ,EAAS3tJ,OAAS,EAC3E,IACA2tJ,EAAW,IAEXA,EAASxzJ,KAAK,CAAE6qB,KAAMC,EAAOjE,KAAMA,IAEhCA,CACX,IAEI1S,EAAQ,CAAE,GAAM1Q,EAAG,GAAMjB,GACzBwH,EAAM,CAAE,GAAMvG,EAAG,GAAMjB,GAG3BowD,EAAMpa,OACFo0F,GAAKc,SAAS/iD,GACTszC,OAAO,MACPlsG,KAAK,IAAI2hH,GAAe,CACrBv/H,MAAYA,EACZnK,IAAYA,EACZopI,MAAYA,EACZG,WAAY,MAGxB,MACF,IAAK,SAECp0I,OAAOoQ,SAAWpQ,OAAOoQ,QAAQigB,KACjCrwB,OAAOoQ,QAAQigB,IAAI,2DAI/B,GAzgBI,CAEA,SAAS4jI,EAAoBxgG,EAAOjb,EAAK87G,EAAWC,EAAYC,GAC5D,IAA2C9nG,EAAvC+nG,EAAeH,EAAYC,EAG3BG,EAASl8G,EAQb,GAPwB,eAApB84G,GACAoD,EAASj8G,GAASi8G,EAAQ,iBAAkB3pJ,GAC5C2pJ,EAASj8G,GAASi8G,EAAQ,YAAa3pJ,IACZ,eAApBumJ,IACPoD,EAASj8G,GAASi8G,EAAQ,iBAAkB3pJ,KAG3C,yBAAyB0B,KAAK8kJ,GAC/B,GAAsB,WAAlBA,EACA7kG,EAAInqD,KAAKqT,IAAI8+I,EAAOzpJ,MAAQqpJ,EACfI,EAAOxpJ,OAASqpJ,GAC7BD,GAAa5nG,EACb6nG,GAAc7nG,OAEb,GAAsB,SAAlB6kG,EACL7kG,EAAInqD,KAAK8V,IAAIq8I,EAAOzpJ,MAAQqpJ,EACfI,EAAOxpJ,OAASqpJ,GAC7BD,GAAa5nG,EACb6nG,GAAc7nG,MAEb,CACD,IAAIx9C,EAAOqiJ,EAAeznJ,MAAM,QAG5BwqJ,EADA,KAAK7nJ,KAAKyC,EAAK,IACHwlJ,EAAOzpJ,MAAQhD,WAAWiH,EAAK,IAAM,IAErCjH,WAAWiH,EAAK,IAI5BqlJ,EADe,GAAfrlJ,EAAKxI,QAA0B,QAAXwI,EAAK,GACZolJ,EAAYG,EAClB,KAAKhoJ,KAAKyC,EAAK,IACTwlJ,EAAOxpJ,OAASjD,WAAWiH,EAAK,IAAM,IAEtCjH,WAAWiH,EAAK,GAErC,CAGJ,IAAIqlF,EAAMhjF,OAAO8/I,GAUjB,OAAQ98D,GACN,IAAK,SAAWA,EAAM,WAAY,MAClC,IAAK,MAAWA,EAAM,QAAS,MAC/B,IAAK,OAAWA,EAAM,QAAS,MAC/B,IAAK,QAAWA,EAAM,WAAY,MAClC,IAAK,SAAWA,EAAM,UAIN,IADlBA,EAAMA,EAAIzqF,MAAM,QACRpD,SACJ6tF,EAAI,GAAK,OAGT,KAAK9nF,KAAK8nF,EAAI,IACdA,EAAI,GAAKtsF,WAAWssF,EAAI,IAAM,KAAOmgE,EAAOzpJ,MAAQqpJ,GAEpD//D,EAAI,GAAKtsF,WAAWssF,EAAI,IAExB,KAAK9nF,KAAK8nF,EAAI,IACdA,EAAI,GAAKtsF,WAAWssF,EAAI,IAAM,KAAOmgE,EAAOxpJ,OAASqpJ,GAErDhgE,EAAI,GAAKtsF,WAAWssF,EAAI,IAG5B,IAAI/I,EAAO,IAAI2wC,GAAK,CAAEu4B,EAAOhpI,KAAO6oE,EAAI,GAAImgE,EAAOtwI,IAAMmwE,EAAI,IAAM,CAAE+/D,EAAWC,IAMhF,SAASI,IACL,KAAOnpE,EAAKtzC,OAAO5zC,EAAIk0C,EAAI9sB,MACvB8/D,EAAKtzC,OAAO5zC,GAAKgwJ,CAEzB,CAEA,SAASM,IACL,KAAOppE,EAAKtzC,OAAO70C,EAAIm1C,EAAIp0B,KACvBonE,EAAKtzC,OAAO70C,GAAKkxJ,CAEzB,CAEA,SAASM,IACL,KAAOrpE,EAAKtzC,OAAO5zC,EAAIk0C,EAAI7sB,OACvB6oI,EAAS/gG,EAAO+3B,EAAKllF,SACrBklF,EAAKtzC,OAAO5zC,GAAKgwJ,CAEzB,CAEA,GAAwB,aAApBlD,EACAoD,EAAS/gG,EAAO+3B,QAEf,GAAwB,YAApB4lE,EACLuD,IACAE,SAEC,GAAwB,YAApBzD,EAEL,IADAwD,IACOppE,EAAKtzC,OAAO70C,EAAIm1C,EAAI5sB,QACvB4oI,EAAS/gG,EAAO+3B,EAAKllF,SACrBklF,EAAKtzC,OAAO70C,GAAKkxJ,OAGpB,GAAwB,UAApBnD,EAA8B,CACnCuD,IACAC,IAEA,IADA,IAAI18G,EAASszC,EAAKtzC,OAAO5xC,QAClBklF,EAAKtzC,OAAO70C,EAAIm1C,EAAI5sB,QACvB4/D,EAAKtzC,OAAO5zC,EAAI4zC,EAAO5zC,EACvBuwJ,IACArpE,EAAKtzC,OAAO70C,GAAKkxJ,CAEzB,CACJ,CACJ,CAgGA,SAASvC,EAAWx5G,EAAKs8G,EAASC,GAC9B,GAAkB,IAAdv8G,EAAIvtC,OAA8B,IAAfutC,EAAIttC,OAA3B,EAjRJ,SAAwBstC,GACpB,IAAIw7G,EAAa,IAAIrkB,GAIrB,GAHA2e,GAAY0F,EAAYnE,GAASr3G,EAAKs3G,EAAMC,EAAMC,EAAMC,IACxDx8F,EAAMpa,OAAO26G,GAEThD,EAAiB,CACjB,IAAIviH,EAAO,IAAIg/F,GAAK,CAChB76G,KAAM,CAAEu9F,MAAO6gC,EAAgBpgC,aAC/BkO,OAAQ,OAEZrwF,EAAKiN,OAAOlD,EAAI9sB,KAAM8sB,EAAIp0B,KACrB2nH,OAAOvzF,EAAI7sB,MAAO6sB,EAAIp0B,KACtB2nH,OAAOvzF,EAAI7sB,MAAO6sB,EAAI5sB,QACtBmgH,OAAOvzF,EAAI9sB,KAAM8sB,EAAI5sB,QACrBg5B,QACLovG,EAAW36G,OAAO5K,EACtB,CAEA,IAAK,IAAIhoC,EAAI0qJ,EAAgBzqJ,SAAUD,GAAK,GACxCstJ,EACIC,EAAYx7G,EACZ24G,EAAgB1qJ,GAChB2qJ,EAAiB3qJ,EAAI2qJ,EAAiB1qJ,QACtC2qJ,EAAmB5qJ,EAAI4qJ,EAAmB3qJ,QAC1C4qJ,EAAiB7qJ,EAAI6qJ,EAAiB5qJ,QACtC6qJ,EAAe9qJ,EAAI8qJ,EAAe7qJ,QAG9C,CAyPIsuJ,CAAex8G,GAEf,IAAIy8G,EAAkBvpI,EAAKzgB,MAAQ,IAAO6pJ,GAAkB,OAAPr2H,GAAkBs2H,GAAiB,OAAPt2H,GAC7Ey2H,EAAmBvpI,EAAM1gB,MAAQ,IAAO8pJ,GAAiB,OAAPt2H,GAAkBq2H,GAAkB,OAAPr2H,GAenF,GAAkB,IAAdra,EAAInZ,OAA8B,IAAfygB,EAAKzgB,OAA+B,IAAhB0gB,EAAM1gB,OAAgC,IAAjB2gB,EAAO3gB,MAAvE,CAMA,GAAImZ,EAAI+rG,OAASxkG,EAAMwkG,OAAS/rG,EAAI+rG,OAASvkG,EAAOukG,OAAS/rG,EAAI+rG,OAASzkG,EAAKykG,OAGvE/rG,EAAInZ,OAAS0gB,EAAM1gB,OAASmZ,EAAInZ,OAAS2gB,EAAO3gB,OAASmZ,EAAInZ,OAASygB,EAAKzgB,OAEvEgqJ,GAAkBC,EAAiB,CAEnC18G,EAAMC,GAASD,EAAKp0B,EAAInZ,MAAM,GAG9B,IAAIwjC,EAAO6gH,GAAgBvkJ,EAASytC,EAAKp0B,EAAInZ,MAAM,GAMnD,OALAwjC,EAAKpoC,QAAQy4H,OAAS,CAClB3O,MAAO/rG,EAAI+rG,MACXllH,MAAOmZ,EAAInZ,YAEfwoD,EAAMpa,OAAO5K,EAEjB,CAMR,GAAe,IAAXqhH,EAAKxrJ,GAAsB,IAAXyrJ,EAAKzrJ,GAAsB,IAAX0rJ,EAAK1rJ,GAAsB,IAAX2rJ,EAAK3rJ,GAGjD8f,EAAInZ,MAAQ,GAAKygB,EAAKzgB,MAAQ,GAAK0gB,EAAM1gB,MAAQ,GAAK2gB,EAAO3gB,MAAQ,EA6CrE,OA3CImZ,EAAInZ,MAAQ,GACZwoD,EAAMpa,OACF,IAAIo0F,GAAK,CACL3O,OAAQ,CAAE7zH,MAAOmZ,EAAInZ,MAAOklH,MAAO/rG,EAAI+rG,SAEtCz0E,OAAOlD,EAAI9sB,KAAM8sB,EAAIp0B,IAAMA,EAAInZ,MAAM,GACrC8gI,OAAOvzF,EAAI7sB,MAAO6sB,EAAIp0B,IAAMA,EAAInZ,MAAM,IAK/C2gB,EAAO3gB,MAAQ,GACfwoD,EAAMpa,OACF,IAAIo0F,GAAK,CACL3O,OAAQ,CAAE7zH,MAAO2gB,EAAO3gB,MAAOklH,MAAOvkG,EAAOukG,SAE5Cz0E,OAAOlD,EAAI9sB,KAAM8sB,EAAI5sB,OAASA,EAAO3gB,MAAM,GAC3C8gI,OAAOvzF,EAAI7sB,MAAO6sB,EAAI5sB,OAASA,EAAO3gB,MAAM,IAKrDgqJ,GACAxhG,EAAMpa,OACF,IAAIo0F,GAAK,CACL3O,OAAQ,CAAE7zH,MAAOygB,EAAKzgB,MAAOklH,MAAOzkG,EAAKykG,SAExCz0E,OAAOlD,EAAI9sB,KAAOA,EAAKzgB,MAAM,EAAGutC,EAAIp0B,KACpC2nH,OAAOvzF,EAAI9sB,KAAOA,EAAKzgB,MAAM,EAAGutC,EAAI5sB,cAK7CspI,GACAzhG,EAAMpa,OACF,IAAIo0F,GAAK,CACL3O,OAAQ,CAAE7zH,MAAO0gB,EAAM1gB,MAAOklH,MAAOxkG,EAAMwkG,SAE1Cz0E,OAAOlD,EAAI7sB,MAAQA,EAAM1gB,MAAM,EAAGutC,EAAIp0B,KACtC2nH,OAAOvzF,EAAI7sB,MAAQA,EAAM1gB,MAAM,EAAGutC,EAAI5sB,UAS3D,IAAIisB,EAAM42G,GAAyBj2G,EAAKs3G,EAAMC,EAAMC,EAAMC,GACtDvB,EAAM72G,EAAIilF,GACV6xB,EAAM92G,EAAIklF,GACV6xB,EAAM/2G,EAAImlF,GACV6xB,EAAMh3G,EAAIolF,GAGdq2B,EAASlvI,EAAI+rG,MACJ33E,EAAIvtC,MAAOmZ,EAAInZ,MAAOygB,EAAKzgB,MAAO0gB,EAAM1gB,MACxCyjJ,EAAKC,EACL,CAAE,EAAG,EAAG,EAAG,EAAGn2G,EAAI9sB,KAAM8sB,EAAIp0B,MAGrCkvI,EAAS1nI,EAAOukG,MACP33E,EAAIvtC,MAAO2gB,EAAO3gB,MAAO0gB,EAAM1gB,MAAOygB,EAAKzgB,MAC3C2jJ,EAAKC,EACL,EAAG,EAAG,EAAG,GAAI,EAAGr2G,EAAI7sB,MAAO6sB,EAAI5sB,SAQxC0nI,EAAS5nI,EAAKykG,MACL33E,EAAIttC,OAAQwgB,EAAKzgB,MAAO2gB,EAAO3gB,MAAOmZ,EAAInZ,MAC1CkqJ,EAAItG,GAAMsG,EAAIzG,GACd,CAAE,GAAI,EAAG,EAAG,EAAGl2G,EAAI9sB,KAAM8sB,EAAI5sB,SAGtC0nI,EAAS3nI,EAAMwkG,MACN33E,EAAIttC,OAAQygB,EAAM1gB,MAAOmZ,EAAInZ,MAAO2gB,EAAO3gB,MAC3CkqJ,EAAIxG,GAAMwG,EAAIvG,GACd,CAAE,EAAG,GAAI,EAAG,EAAGp2G,EAAI7sB,MAAO6sB,EAAIp0B,KAjHvC,CAtBA,CAyHA,SAAS+wI,EAAIpjC,GACT,MAAO,CAAEztH,EAAGytH,EAAE1uH,EAAGA,EAAG0uH,EAAEztH,EAC1B,CAaJ,CACJ,CA+NA,SAAS8wJ,GAAYrqJ,EAASmjB,EAAKulC,GAC/B,IAAIjb,EAAMu1G,GAAchjJ,GACpBygF,EAAO,IAAI2wC,GAAK,CAAE3jF,EAAI9sB,KAAM8sB,EAAIp0B,KAAO,CAAEo0B,EAAIvtC,MAAOutC,EAAIttC,SACxDg9B,EAAQ,IAAIonG,GAAQphH,EAAKs9D,GAC7B8iE,GAAYpmH,EAAOonH,GAAgBvkJ,EAASytC,EAAK,YACjDib,EAAMpa,OAAOnR,EACjB,CAEA,SAASmtH,GAAWjxJ,EAAG+W,GACnB,IAAIm6I,EAAK3I,GAAmBvoJ,GACxBmxJ,EAAK5I,GAAmBxxI,GACxBq6I,EAAKvtJ,WAAW+G,GAAiBsmJ,EAAI,YACrCG,EAAKxtJ,WAAW+G,GAAiBumJ,EAAI,YACrCG,EAAK1mJ,GAAiBsmJ,EAAI,YAC1B3F,EAAK3gJ,GAAiBumJ,EAAI,YAC9B,OAAIvtJ,MAAMwtJ,IAAOxtJ,MAAMytJ,GACd,kBAAkBhpJ,KAAKipJ,IAAS,kBAAkBjpJ,KAAKkjJ,GACjD,EAED,UAAN+F,GACQ,EAEF,UAAN/F,EACO,EAEJ,EAEP3nJ,MAAMwtJ,GACQ,IAAPC,EAAW,EAAIA,EAAK,GAAK,EAAI,EAEpCztJ,MAAMytJ,GACQ,IAAPD,EAAW,EAAIA,EAAK,EAAI,GAAK,EAEjCvtJ,WAAWutJ,GAAMvtJ,WAAWwtJ,EACvC,CAmEA,SAASE,GAAgB5qJ,EAAS0oD,GAC9B,IAAImiG,EAAM7qJ,EAAQglB,QAAQhY,cAC1B,GAAW,SAAP69I,IAAmC,YAAhB7qJ,EAAQnG,MAAsC,SAAhBmG,EAAQnG,MACzD,OAzDR,SAAwBmG,EAAS0oD,GAC7B,IACI08D,EAAQnhH,GADA29I,GAAmB5hJ,GACK,SAChCytC,EAAMztC,EAAQqtH,wBACE,YAAhBrtH,EAAQnG,MACR6uD,EAAMpa,OACFo0F,GAAKc,SACD,IAAIpS,GAAK,CAAE3jF,EAAI9sB,KAAK,EAAG8sB,EAAIp0B,IAAI,GAClB,CAAEo0B,EAAIvtC,MAAM,EAAGutC,EAAIttC,OAAO,KACzC4zH,OAAO3O,EAAO,IAEhBplH,EAAQ2mE,SAURje,EAAMpa,QACF,IAAIo0F,IACC3O,OAAO3O,EAAO,KACdz0E,OAAOlD,EAAI9sB,KAAO,IAAO8sB,EAAIvtC,MACtButC,EAAIp0B,IAAM,IAAOo0B,EAAIttC,QAC5B6gI,OAAOvzF,EAAI9sB,KAAO,IAAO8sB,EAAIvtC,MACtButC,EAAIp0B,IAAM,IAAOo0B,EAAIttC,QAC5B6gI,OAAOvzF,EAAI9sB,KAAO,IAAO8sB,EAAIvtC,MACtButC,EAAIp0B,IAAM,IAAOo0B,EAAIvtC,UAIzCwoD,EAAMpa,OACF,IAAIgmF,GACA,IAAID,GAAS,EACR5mF,EAAI9sB,KAAO8sB,EAAI7sB,OAAS,GACxB6sB,EAAIp0B,IAAMo0B,EAAI5sB,QAAU,GAC1BrpB,KAAKqT,IAAI4iC,EAAIvtC,MAAM,EAAGutC,EAAIttC,OAAO,GAAK,IAC3C4zH,OAAO3O,EAAO,IAEhBplH,EAAQ2mE,SACRje,EAAMpa,OACF,IAAIgmF,GACA,IAAID,GAAS,EACR5mF,EAAI9sB,KAAO8sB,EAAI7sB,OAAS,GACxB6sB,EAAIp0B,IAAMo0B,EAAI5sB,QAAU,GAC1BrpB,KAAKqT,IAAI4iC,EAAIvtC,MAAM,EAAGutC,EAAIttC,OAAO,GAAK,IAC3C0nB,KAAKu9F,GAAO2O,OAAO,OAIrC,CAKe+2B,CAAe9qJ,EAAS0oD,GAEnC,IAGIr/B,EAHA29F,EAAIhnH,EAAQ2a,WACZslI,EAAMjgJ,EAAQ+1E,cACdp0D,EAAKs+H,EAAIjtI,cAAcmqI,IAS3B,GAPAx7H,EAAGrgB,MAAM2R,QAAUuyI,GAAW5D,GAAmB5hJ,IACtC,SAAP6qJ,IACAlpI,EAAGrgB,MAAMypJ,WAAa,OAEf,UAAPF,GAA0B,YAAPA,IACnBlpI,EAAGrgB,MAAMmgB,SAAW,QAEb,UAAPopI,EACA,GAAI7qJ,EAAQyqC,SACR,IAAK,IAAI/uC,EAAI,EAAGA,EAAIsE,EAAQ1E,QAAQK,SAAUD,GAC1C2tB,EAAS42H,EAAIjtI,cAAcmqI,KACpB77I,MAAM2R,QAAUuyI,GAAW5D,GAAmB5hJ,EAAQ1E,QAAQI,KACrE2tB,EAAO/nB,MAAME,QAAU,QACvB6nB,EAAOwO,YAAc73B,EAAQ1E,QAAQI,GAAGm8B,YACxClW,EAAGvO,YAAYiW,QAGnBA,EAvFZ,SAA2BrpB,GACvB,OAAIA,EAAQgrJ,iBAAmBhrJ,EAAQgrJ,gBAAgBrvJ,OAAS,EACrDqE,EAAQgrJ,gBAAgB,GAE5BhrJ,EAAQ1E,QAAQ0E,EAAQ4mE,cACnC,CAkFqBqkF,CAAkBjrJ,GACvBqpB,IACA1H,EAAGkW,YAAcxO,EAAOwO,kBAIhClW,EAAGkW,YAAc73B,EAAQnD,MAE7BmqH,EAAEvgD,aAAa9kD,EAAI3hB,GACnB2hB,EAAGD,WAAa1hB,EAAQ0hB,WACxBC,EAAGsJ,UAAYjrB,EAAQirB,UAIvBjrB,EAAQsB,MAAME,QAAU,OAExB8mJ,GAAe3mI,EAAI+mC,GACnB1oD,EAAQsB,MAAME,QAAU,GACxBwlH,EAAEzzG,YAAYoO,EAClB,CAkBA,SAAS2mI,GAAetoJ,EAAS0oD,GAM7B,OALI40F,GAAS4E,iBAAiBliJ,UAAYA,IAGtCs9I,GAAS4E,iBAAiBx5F,MAAQA,GAE9B1oD,EAAQglB,QAAQhY,eACtB,IAAK,MACHq9I,GAAYrqJ,EAASA,EAAQ7E,IAAKutD,GAClC,MAEF,IAAK,MACH,IAAIzK,EA5BZ,SAAsBj+C,GAClB,IAAIkrJ,EAAa,IAAIj2J,OAAOk2J,cACxBltG,EAAMitG,EAAWE,kBAAkBprJ,GAEvC,GAAIiX,GAAQqB,WAAatY,EAAQspB,aAAa,WAAYtpB,EAAQspB,aAAa,WAAY,CACvF,IACI+hI,GADM,IAAIp2J,OAAOs4I,WAAYG,gBAAgBzvF,EAAK,iBACrClwC,gBACb0/B,EAAMu1G,GAAchjJ,GACxBqrJ,EAAOvxI,aAAa,QAAS2zB,EAAIvtC,OACjCmrJ,EAAOvxI,aAAa,SAAU2zB,EAAIttC,QAClC89C,EAAMitG,EAAWE,kBAAkBC,EACvC,CAEA,OAAOptG,CACX,CAckBqtG,CAAatrJ,GAEvBqqJ,GAAYrqJ,EADE,6BAAgC4rH,EAAa3tE,GAC7ByK,GAC9B,MAEF,IAAK,SACH,IACI2hG,GAAYrqJ,EAASA,EAAQq8I,UAAU,aAAc3zF,EACzD,CAAE,MAAO43F,GAET,CACA,MAEF,IAAK,WACL,IAAK,QACL,IAAK,SACHsK,GAAgB5qJ,EAAS0oD,GACzB,MAEF,QAEE,IADA,IAAIhf,EAAW,GAAI6hH,EAAS,GAAItpI,EAAa,GACpCvmB,EAAIsE,EAAQs+C,WAAY5iD,EAAGA,EAAIA,EAAE6iD,YACtC,OAAQ7iD,EAAEuuB,UACR,KAAK,EACC,KAAKvoB,KAAKhG,EAAE6G,OACZipJ,GAAWxrJ,EAAStE,EAAGgtD,GAE3B,MACF,KAAK,EACH,IAAIpnD,EAAQsgJ,GAAmBlmJ,GAC3B+vJ,EAAWxnJ,GAAiB3C,EAAO,SAEvB,UADD2C,GAAiB3C,EAAO,YAEnC2gB,EAAWnsB,KAAK4F,GAEC,QAAZ+vJ,EACLF,EAAOz1J,KAAK4F,GAEZguC,EAAS5zC,KAAK4F,GAM1BkxH,EAAUljF,EAAU4gH,IAAY70J,SAAQ,SAASksB,GAAK+lI,GAAc/lI,EAAI+mC,EAAQ,IAChFkkE,EAAU2+B,EAAQjB,IAAY70J,SAAQ,SAASksB,GAAK+lI,GAAc/lI,EAAI+mC,EAAQ,IAC9EkkE,EAAU3qG,EAAYqoI,IAAY70J,SAAQ,SAASksB,GAAK+lI,GAAc/lI,EAAI+mC,EAAQ,IAE1F,CAEA,SAAS8iG,GAAWxrJ,EAASw3B,EAAMkxB,GAC/B,GAnhDU,OADNhzD,EAAK4nJ,GAAS+E,aAId3sJ,EACsB,IAAfA,EAAGwK,SAAiC,IAAhBxK,EAAGyK,cADlC,GAghDA,CArhDJ,IACQzK,EAuhDA4L,EAAQsgJ,GAAmB5hJ,GAE/B,KAAI9C,WAAW+G,GAAiB3C,EAAO,iBAAmB,KAA1D,CAOA,IAAI2zB,EAAOuC,EAAKj1B,KACZ0H,EAAQ,EACRnK,EAAMm1B,EAAK5E,OAAO,UAAY,EAElC,GAAKvwB,EAAL,CAIA,IAAI4rJ,EAAWznJ,GAAiB3C,EAAO,aACnCqqJ,EAAa1nJ,GAAiB3C,EAAO,eAGrC4qF,EAAO,CACPjoF,GAAiB3C,EAAO,cACxB2C,GAAiB3C,EAAO,gBACxB2C,GAAiB3C,EAAO,eACxBoqJ,EACAznJ,GAAiB3C,EAAO,gBAC1BtC,KAAK,KAKP,GAHA0sJ,EAAWxuJ,WAAWwuJ,GACtBC,EAAazuJ,WAAWyuJ,GAEP,IAAbD,IAAkBzuJ,MAAMyuJ,GAA5B,CAIA,IAAItmC,EAAQnhH,GAAiB3C,EAAO,SAChC8mD,EAAQpoD,EAAQ+1E,cAAcj7C,cAE9B8wH,EAA0B,WADf3nJ,GAAiB3C,EAAO,cAEnCuqJ,EAAc5nJ,GAAiB3C,EAAO,eAAgB,GACtDypJ,EAAa9mJ,GAAiB3C,EAAO,eACrCwqJ,EAAgB7nJ,GAAiB3C,EAAO,kBAKxCyqJ,EAAqB/rJ,EAAQqtH,wBAAwBntH,MAAQwrJ,EAAW,EACjD,IAAvBK,IACAA,EAAqB,KAKzB,IAAIC,EAAiB,KAEjBC,EAAY3O,GAAoB,UAChC4O,EAAc5O,GAAS,gBACvB6O,EAAW7O,GAAmB,SAC9B8O,EAAkB9O,GAAS,oBAO/B,IALI2O,GACAI,GAyQJ,SAAuB5+G,GACnB,IAAIvtC,EAAQwrJ,EAAW,GACnBY,EAAe7+G,EAAI5sB,OAEnByrI,GADmB,MAAnBF,EACgBA,EAEAlsJ,EAEpBqsJ,EAAarsJ,EAAOutC,EAAKw+G,EAAWK,EACxC,KA9QQE,MAMR,aAJIN,GAAeC,IACfE,GA4PJ,SAAsB5+G,GAClB,IAAIvtC,EAAQwrJ,EAAW,GACvBa,EAAarsJ,EAAOutC,EAAKy+G,EAAaz+G,EAAI5sB,OAAS4sB,EAAIttC,OAAS,KAChEosJ,EAAarsJ,EAAOutC,EAAK0+G,EAAU1+G,EAAIp0B,IAC3C,IAnSA,CAnBA,CARA,CARA,CA2EA,SAASgzI,EAAYtuI,GACjBqqC,EAAMqkG,WAAWj1H,GACjB,IAAIk1H,EAAczP,GAAU70F,EAAMu+F,kBAElC0F,EAAc,SAAU32J,GAAM,OAAOg3J,EAAYj3J,QAAQC,EAAK,EAC9D22J,EAAYtuI,EAChB,CAEA,SAAS4uI,EAA6BvkG,GAGlC,GAAIm1F,IAAatmI,GAAQJ,QAAUI,GAAQkB,OAAQ,CAe/C,IANA,IAAIy0I,EAAaxkG,EAAMu+F,iBAAkBl5G,EAAM,CAC3Cp0B,IAAUwzI,IACVjsI,OAAUisI,IACVhsI,QAAUgsI,IACVlsI,KAAUksI,KACX9rH,GAAO,EACDrlC,EAAI,EAAGA,EAAIkxJ,EAAWjxJ,SAAUD,EAAG,CACxC,IAAI0U,EAAIw8I,EAAWlxJ,GACf0U,EAAElQ,OAAS,GAAKkQ,EAAEyQ,SAAWmrI,IAGjCv+G,EAAI9sB,KAASnpB,KAAKqT,IAAIuF,EAAEuQ,KAAS8sB,EAAI9sB,MACrC8sB,EAAIp0B,IAAS7hB,KAAKqT,IAAIuF,EAAEiJ,IAASo0B,EAAIp0B,KACrCo0B,EAAI7sB,MAASppB,KAAK8V,IAAI8C,EAAEwQ,MAAS6sB,EAAI7sB,OACrC6sB,EAAI5sB,OAASrpB,KAAK8V,IAAI8C,EAAEyQ,OAAS4sB,EAAI5sB,QACrCkgB,GAAO,EACX,CACA,OAAKA,GAGL0M,EAAIvtC,MAAQutC,EAAI7sB,MAAQ6sB,EAAI9sB,KAC5B8sB,EAAIttC,OAASstC,EAAI5sB,OAAS4sB,EAAIp0B,IACvBo0B,GAJI2a,EAAMilE,uBAKrB,CACA,OAAOjlE,EAAMilE,uBACjB,CAMA,SAASm/B,IACL,IACI/+G,EADAq/G,EAAY7iJ,EACPu/E,EAAMv0D,EAAKvkB,OAAOzG,GAAOomB,OAAO,MAEzC,GADApmB,GAASu/E,EACLA,EAAM,GAAKv/E,GAASnK,EACpB,OAAO,EAKXsoD,EAAM2kG,SAASv1H,EAAMvtB,GACrBm+C,EAAM4kG,OAAOx1H,EAAMvtB,EAAQ,GAC3BwjC,EAAMk/G,EAA6BvkG,GAGnC,IAAIkK,GAAQ,EACZ,IAAIs5F,GAAeC,EAAc,KAC7BriE,EAAMv0D,EAAKvkB,OAAOzG,GAAOomB,OAAO,QACrB,EAAG,CAGV+3B,EAAM4kG,OAAOx1H,EAAMvtB,EAAQu/E,GAC3B,IAAI68B,EAAIsmC,EAA6BvkG,GACjCi+D,EAAExlG,QAAU4sB,EAAI5sB,SAChB4sB,EAAM44E,EACN/zD,GAAQ,EACRroD,GAASu/E,EAEjB,CAGJ,IAAKl3B,EAAO,CAkCR,GAjBAk3B,EAAM,SAAUyjE,EAAQpiJ,EAAKqiJ,EAAK5/I,GAC9B86C,EAAM4kG,OAAOx1H,EAAM01H,GACnB,IAAI7mC,EAAIsmC,EAA6BvkG,GACrC,OAAIi+D,EAAExlG,QAAU4sB,EAAI5sB,QAAUhW,EAAMqiJ,EACzBD,EAAQpiJ,EAAMA,EAAMqiJ,GAAQ,EAAGA,GAC/B7mC,EAAEzlG,OAAS6sB,EAAI7sB,OACtB6sB,EAAM44E,EACF6mC,EAAM5/I,EACC2/I,EAAQC,EAAMA,EAAM5/I,GAAQ,EAAGA,GAE/B4/I,GAGJA,CAEd,CAfK,CAeHjjJ,EAAOzS,KAAKqT,IAAI/K,EAAKmK,EAAQ8hJ,GAAqBjsJ,GAEjD0pF,GAAOv/E,EAGP,OAAO,EAKX,GAHAA,EAAQu/E,EAGI,KADZA,EAAMphC,EAAMxiD,WAAWyqB,OAAO,SAE1B,OAAO,EAEPm5D,EAAM,IAENphC,EAAM4kG,OAAOx1H,EAAM4wB,EAAM+kG,YAAc3jE,GACvC/7C,EAAMk/G,EAA6BvkG,GAE3C,CAKIm1F,KACA9vG,EAAM2a,EAAMu+F,iBAAiB,IAGjC,IAAIrjJ,EAAM8kD,EAAMxiD,WAChB,GAAK,sBAAsBlE,KAAKqpJ,IAI3B,GAAI,KAAKrpJ,KAAK4B,GAAM,CAOrB,IAAI8pJ,EAAK,EACT,IAAK5jE,EAAMsjE,EAAWtjE,EAAMphC,EAAM+kG,cAAe3jE,EAAK,CAClD,IAAI5sC,EAAO3nB,EAAKjvB,WAAWwjF,GACf,GAAR5sC,EAGAwwG,GAAM,EAAIA,EAAK,EACA,IAARxwG,GAAsB,IAARA,EAErBwwG,EAAK,EAGLA,GAER,CAIA,MAAQ5jE,EAAMlmF,EAAI+sB,OAAO,QAAU,GAAG,CAClC,IAAI7qB,EAAS,WAAWkL,OAAO,EAAG,GAAK08I,EAAK5jE,GAAO,GACnDlmF,EAAMA,EAAIoN,OAAO,EAAG84E,GAAOhkF,EAASlC,EAAIoN,OAAO84E,EAAM,EACzD,CACJ,OA/BIlmF,EAAMA,EAAI1M,QAAQ,OAAQ,KAiCzB07D,IACD05F,EAAiBv+G,EAAI5sB,QAK7B,SAAkBvd,EAAKmqC,GAMnB,GAAI8vG,KAActgJ,MAAM0uJ,GAAa,CACjC,IAAIxrJ,EAAS4/I,GAAc7zD,GACvB7yE,GAAOo0B,EAAIp0B,IAAMo0B,EAAI5sB,OAAS1gB,GAAU,EAC5CstC,EAAM,CACFp0B,IAASA,EACTuH,MAAS6sB,EAAI7sB,MACbC,OAASxH,EAAMlZ,EACfwgB,KAAS8sB,EAAI9sB,KACbxgB,OAASA,EACTD,MAASutC,EAAI7sB,MAAQ6sB,EAAI9sB,KAEjC,CAUA,OAAQmrI,GACN,IAAK,YACHxoJ,EAAMA,EAAIG,cACV,MACF,IAAK,YACHH,EAAMA,EAAI0J,cACV,MACF,IAAK,aACH1J,EAAMA,EAAI1M,QAAQ,eAAe,SAAU+vH,GAAK,OAAOA,EAAEljH,aAAe,IAI5E,IAAIwxB,EAAO,IAAIuoH,GACXl6I,EAAK,IAAI8tH,GAAK,CAAE3jF,EAAI9sB,KAAM8sB,EAAIp0B,KACZ,CAAEo0B,EAAIvtC,MAAOutC,EAAIttC,SACnC,CACI+rF,KAAMA,EACNrkE,KAAM,CAAEu9F,MAAOA,KAGvB18D,EAAMpa,OAAOrZ,EACjB,CAnDIo4H,CAAS/pJ,EAAKmqC,EAClB,CAoDA,SAAS8+G,EAAa9R,EAAW6S,EAASloC,EAAOmoC,GAC7C,GAAInoC,EAAO,CACP,IAAI1hF,EAAO,IAAIg/F,GAAK,CAAE3O,OAAQ,CAC1B7zH,MAAOu6I,EACPr1B,MAAOA,KAGXmoC,GAAQ9S,EACR/2G,EAAKiN,OAAO28G,EAAQ3sI,KAAM4sI,GACrBvsB,OAAOssB,EAAQ1sI,MAAO2sI,GAC3B7kG,EAAMpa,OAAO5K,EACjB,CACJ,CAkBJ,CA+CA,SAASgkH,GAAc1nJ,EAAS4qB,GAC5B,IAAItpB,EAAQsgJ,GAAmB5hJ,GAI/B,GAFAmhJ,GAAe7/I,IAEX,kDAAkDI,KAAK1B,EAAQglB,UAI1C,MAArBs4H,GAAS+E,SAAb,CAIA,IAAIn3H,EAAUhuB,WAAW+G,GAAiB3C,EAAO,YAC7C+gF,EAAap+E,GAAiB3C,EAAO,cACrCE,EAAUyC,GAAiB3C,EAAO,WAEtC,GAAgB,IAAZ4pB,GAA+B,UAAdm3D,GAAqC,QAAX7gF,EAA/C,CAIA,IACIknD,EADAspE,EA3zDR,SAAsB1wH,GAClB,IAAIunJ,EAAe5kJ,GAAiB3C,EAAO,aAC3C,GAAoB,QAAhBunJ,EACA,OAAO,KAEX,IAAI36B,EAAS,gCAAgCnhH,KAAK87I,GAClD,GAAI36B,EAAQ,CACR,IAAI/gF,EAASlpC,GAAiB3C,EAAO,oBAGrC,MAAO,CACH4sH,OAHJA,EAASA,EAAO,GAAGnvH,MAAM,YAAYiQ,IAAI9R,YAIrCiwC,OAHJA,EAASA,EAAOpuC,MAAM,QAAQiQ,IAAI9R,YAKtC,CACJ,CA4yDaswJ,CAAalsJ,GAGlB6sC,EAASlqC,GAAiB3C,EAAO,YAChC0wH,GAAM9mG,EAAU,IAAgB,QAAVijB,IACvBA,EAAS,GAEbua,EAzEJ,SAAgC1oD,EAAS0oD,EAAOva,GAC5C,IAAIs/G,EACU,QAAVt/G,GAEAs/G,EAAOnQ,GAAS4E,iBAAiBx5F,MACjCva,EAASjxC,WAAWixC,KAMpBs/G,EAAO/kG,EACPva,EAAS,GAGb,IADA,IAAI90C,EAAIo0J,EAAK/jH,SACJhuC,EAAI,EAAGA,EAAIrC,EAAEsC,UACM,MAApBtC,EAAEqC,GAAGgyJ,aAAuBr0J,EAAEqC,GAAGgyJ,YAAcv/G,KADvBzyC,GAMhC,IAAIoxC,EAAM,IAAI83F,GAId,GAHA6oB,EAAKn8F,OAAO51D,EAAGoxC,GACfA,EAAI4gH,YAAcv/G,EAEds/G,IAAS/kG,GAOL40F,GAAS+E,SAAU,CACnB,IAAIlpJ,EAAImkJ,GAASvqB,QAAQ5E,SACrB9H,EAAIi3B,GAAS+E,SAAS7xB,cAAcr3H,GACxCoqJ,GAAYz2G,EAAK41F,GAAKc,SAASnd,GAInC,CAGJ,OAAOv5E,CACX,CA8BY6gH,CAAuB3tJ,EAAS4qB,EAAWujB,GAY/CjjB,EAAU,GACVw9B,EAAMx9B,QAAQA,EAAUw9B,EAAMx9B,WAGlC62H,GAAa/hJ,EAASsB,EAAOonD,GAExBspE,EAID6wB,GAAU7iJ,GAAS,WAEfwiJ,GAAuBxiJ,EAAQsB,MAAO,YAAa,OAAQ,aAG3DkhJ,GAAuBxiJ,EAAQsB,MAAO,aAAc,OAAQ,aAKjB,UAAvC2C,GAAiB3C,EAAO,aAExBkhJ,GAAuBxiJ,EAAQsB,MAAO,WAAY,WAAY,aAKlE,IAAIwwH,EAAO9xH,EAAQqtH,wBACf9zH,EAAIu4H,EAAKnxG,KAAOqxG,EAAG7kF,OAAO,GAC1B70C,EAAIw5H,EAAKz4G,IAAM24G,EAAG7kF,OAAO,GACzBh0C,EAAI,CAAE,EAAG,EAAG,EAAG,GAAII,GAAIjB,GAC3Ba,EAAIy0J,GAAKz0J,EAAG64H,EAAG9D,QACf/0H,EAAIy0J,GAAKz0J,EAAG,CAAE,EAAG,EAAG,EAAG,EAAGI,EAAGjB,IAC7Ba,EAAImqJ,GAAe56F,EAAOvvD,GAE1BmkJ,GAASvqB,QAAUuqB,GAASvqB,QAAQ9E,aAAa90H,GAEjDssJ,GAA0BzlJ,EAAS0oD,EACvC,IA/BA+8F,GAA0BzlJ,EAAS0oD,GAkCvCy5F,IA9DA,CARA,CAyEJ,CAmBA,SAASyL,GAAKv0J,EAAG+W,GACb,IAAIy9I,EAAKx0J,EAAE,GAAIy0J,EAAKz0J,EAAE,GAAI8sH,EAAK9sH,EAAE,GAAI00J,EAAK10J,EAAE,GAAI20J,EAAK30J,EAAE,GAAIytD,EAAKztD,EAAE,GAC9D40J,EAAK79I,EAAE,GAAI89I,EAAK99I,EAAE,GAAIg2G,EAAKh2G,EAAE,GAAI+9I,EAAK/9I,EAAE,GAC5C,MAAO,CACHy9I,EAAGI,EAAKH,EAAG1nC,EAAaynC,EAAGK,EAAKJ,EAAGK,EACnChoC,EAAG8nC,EAAKF,EAAG3nC,EAAaD,EAAG+nC,EAAKH,EAAGI,EACnCH,EAAGC,EAAKnnG,EAAGs/D,EAJsCh2G,EAAE,GAI3B49I,EAAGE,EAAKpnG,EAAGqnG,EAJyB/9I,EAAE,GAMtE,CAEA,IAAIyO,GAAU,CACbmtE,IAAKgxD,GACLzG,OAAQA,GACR56B,KAAMA,EACNqO,aAAcA,EACd6gB,WAAYA,GACZ7I,UAAWA,GACX8I,SAAUA,GACVzb,aAAcA,EACdgc,QAASA,GACToR,eAAgBA,GAChB2R,YAh1GD,SAAqB1lG,EAAOptD,GACxB,IAAIvG,EAAW,CACXmL,MAAO,QAASC,OAAQ,QACxB61I,KAAM,aAGN+G,EAAar0F,EACbopE,EAAOppE,EAAM+qE,cAEjB,GAAI3B,EAAM,CACN,IAAI3kF,EAAS2kF,EAAKN,aAClBurB,EAAa,IAAInY,IACN98F,UAAUorF,KAAc3uF,WAAW4I,EAAO5zC,GAAI4zC,EAAO70C,IAChEykJ,EAAWrzG,SAAS5zC,KAAK4yD,GAEzB,IAAIvkD,EAAO2tH,EAAKprG,UAChB3xB,EAASmL,MAAQiE,EAAKjE,MAAQ,KAC9BnL,EAASoL,OAASgE,EAAKhE,OAAS,IACpC,CAEA,IAAIkuJ,EAAiBv3J,EAAEI,OAAOnC,EAAUuG,GAEpCsvB,EAAY9mB,SAASkP,cAAc,OACnC1R,EAAQspB,EAAUtpB,MAEtBA,EAAME,QAAU,OAChBF,EAAMpB,MAAQmuJ,EAAenuJ,MAC7BoB,EAAMnB,OAASkuJ,EAAeluJ,OAC9B2D,SAASqP,KAAKC,YAAYwX,GAE1B,IAAIkrD,EAAU,IAAI+lE,GAAUjxH,EAAWyjI,GACvCv4E,EAAQi2D,kBACRj2D,EAAQ81D,KAAKmR,GAEb,IAAI/gI,EAAU85D,EAAQ34C,QAClBhnC,EAAU,WACV2/E,EAAQ3/E,UACR2N,SAASqP,KAAKI,YAAYqX,EAC9B,EAGA,OAFA5O,EAAQs3C,KAAKn9D,EAASA,GAEf6lB,CACX,EAuyGCsyI,UAryGD,SAAmB5lG,EAAOptD,GACtB,IAAI0wF,EAAM6wD,GAAYn0F,GAMtB,OAJKptD,GAAYA,EAAQqjD,MACrBqtC,EAAM,6BAA+B4/B,EAAa5/B,IAG/C4vB,IAAgB1xE,QAAQ8hD,EACnC,EA8xGCorD,SAAUA,GACVS,eAAgBA,GAChB37H,QAASi3G,GACTmB,OAAQA,GACRiC,IAAKA,GACLmM,KAAMA,GACNa,UAAWA,GACXe,KAAMA,GACNE,MAAOD,GACPK,MAAOA,GACP92D,OAAQA,GACRsjD,KAAMsW,GACNrC,MAjhOD,SAAev4G,EAAU2zD,EAAMonD,GAC3BD,GAAc96G,EAAU2zD,EAAMonD,EAAW,IAAK,QAClD,EAghOC0mB,OA9gOD,SAAgBzhI,EAAU2zD,EAAMonD,GAC5BD,GAAc96G,EAAU2zD,EAAMonD,EAAW,IAAK,SAClD,EA6gOCS,MAz+ND,SAAex7G,GACXg7G,GAAcI,GAAoBp7G,GAAW,IAAK,IAAK,QAC3D,EAw+NC0hI,OAt+ND,SAAgB1hI,GACZg7G,GAAcI,GAAoBp7G,GAAW,IAAK,IAAK,SAC3D,EAq+NChM,KAj6ND,SAAcgM,EAAU2zD,GACpB,OAAO0nD,GAAar7G,EAAU2zD,EAAM,IAAK,IAAK,QAClD,EAg6NCguE,MA95ND,SAAe3hI,EAAU2zD,GACrB,OAAO0nD,GAAar7G,EAAU2zD,EAAM,IAAK,IAAK,SAClD,EA65NCiuE,IA35ND,SAAa1uJ,EAASygF,GAClB,IAAIqxC,EAAO9xH,EAAQyzH,cACnB,GAAI3B,EAAM,CACN,IAAI/vC,EAAc+vC,EAAK3tH,KACnBgkJ,EAAW1nE,EAAKt8E,KACpB,GAAIgkJ,EAASjoJ,MAAQ6hF,EAAY7hF,OAASioJ,EAAShoJ,OAAS4hF,EAAY5hF,OAAQ,CAC5E,IAAI+jC,EAAQ1sC,KAAKqT,IAAIs9I,EAASjoJ,MAAQ6hF,EAAY7hF,MAAOioJ,EAAShoJ,OAAS4hF,EAAY5hF,QACnF2nC,EAAY9nC,EAAQ8nC,aAAeorF,KACvCprF,EAAU5D,MAAMA,EAAOA,GACvBlkC,EAAQ8nC,UAAUA,EACtB,CACJ,CACJ,EAg5NC0hG,eAAgBA,GAChBC,eAAgBA,GAChBX,aAAcA,GACdG,SAAUA,GACVh5F,UAAWA,GACXk6F,iBAAkBA,GAClBwkB,QA/lGD,SAAiB3uJ,EAAS1E,GACjBA,IACDA,EAAU,CAAC,GAEf,IAAI0gB,EAAU4/F,IAEd,IAAK57G,EACD,OAAOgc,EAAQw4C,OAAO,wBAG1B,GAAsC,mBAA3Bv/D,OAAO+O,iBACd,MAAM,IAAImB,MAAM,oLAGpBrQ,MAAMyoC,IAAIqxH,WAAW5O,GAAahgJ,EAAQ+1E,gBAE1C,IA1BWmnE,EA0BPh5G,EAzBgB,iBADTg5G,EA0BO5hJ,EAAQ4oC,OAAS,GAxBxB,CAAE3qC,EAAG2jJ,EAAO5kJ,EAAG4kJ,GAEtB7lJ,MAAMD,QAAQ8lJ,GACP,CAAE3jJ,EAAG2jJ,EAAM,GAAI5kJ,EAAG4kJ,EAAM,IAE5B,CAAE3jJ,EAAG2jJ,EAAM3jJ,EAAGjB,EAAG4kJ,EAAM5kJ,GAqB9B,SAASu2J,EAAM7uJ,GACX,IAtKU2hB,EAAImtI,EAsKVpmG,EAAQ,IAAIk8E,GAGZp7C,EAAMxpF,EAAQqtH,wBA2BlB,OA1BAi2B,GAAe56F,EAAO,CAClBxkB,EAAM3qC,EACN,EACA,EACA2qC,EAAM5rC,GACJkxF,EAAI7oE,KAAOujB,EAAM3qC,GACjBiwF,EAAInwE,IAAM6qB,EAAM5rC,IAGtBglJ,GAAS+E,UAAW,EACpB/E,GAASvqB,QAAU/E,EAAOM,OAC1BgvB,GAAS4E,iBAAmB,CACxBliJ,QAASA,EACT0oD,MAAOA,IAGgB,IAAvBptD,EAAQyzJ,WACRzR,GAAS4J,YAAc,IAEvB5J,GAAS4J,YAAc5rJ,EAAQyzJ,WA7LrBD,EAgMI,gBAhMRntI,EAgMD3hB,GA/LN8uI,UACHntH,EAAGmtH,UAAUntI,IAAImtJ,GAEjBntI,EAAGH,WAAa,IAAMstI,EA6LtBpH,GAAc1nJ,EAAS0oD,GAzL/B,SAAqB/mC,EAAImtI,GACjBntI,EAAGmtH,UACHntH,EAAGmtH,UAAUtuI,OAAOsuJ,GAEpBntI,EAAGH,UAAYG,EAAGH,UAAUziB,MAAM,OAAOm5C,QAAO,SAAS7+C,EAAGsyC,GAIxD,OAHIA,GAAQmjH,GACRz1J,EAAEvD,KAAK61C,GAEJtyC,CACX,GAAG,IAAI2F,KAAK,IAEpB,CA+KQkiB,CAAYlhB,EAAS,gBAEd0oD,CACX,CA4cA,OA1cAg5F,GAAY,CAAE1hJ,IAAW,WACrB,IAAIgvJ,EAAa1zJ,GAAWA,EAAQ2zJ,eAChCC,EAAe5zJ,GAAWA,EAAQ6zJ,WAAkC,QAArB7zJ,EAAQ6zJ,UACvDC,EAAet6J,MAAMyoC,IAAI8xH,iBAAgB,SAASppJ,EAAKi7I,GACvD,MAAW,aAAPj7I,EAGOipJ,EAAe5zJ,EAAQ2K,GAAO,KAElCA,KAAO3K,EAAUA,EAAQ2K,GAAOi7I,CAC3C,IACIoO,EAAYJ,GAAgBE,EAAaD,UAAU,GACnDI,EAAaL,GAAgBE,EAAaD,UAAU,GACpDjiH,EAAS5xC,EAAQ4xC,QAAUkiH,EAAaliH,OACxCsiH,EAAYvoJ,QAAQimC,GACxB,GAAI8hH,GAAcO,EAAY,CACrBriH,IACDA,EAAS,CAAEvsB,KAAM,EAAGtH,IAAK,EAAGuH,MAAO,EAAGC,OAAQ,IAM9CyuI,IAAcA,GAAcprH,EAAM3qC,GAClCg2J,IAAcA,GAAcrrH,EAAM5rC,GACtC40C,EAAOvsB,MAAUujB,EAAM3qC,EACvB2zC,EAAOtsB,OAAUsjB,EAAM3qC,EACvB2zC,EAAO7zB,KAAU6qB,EAAM5rC,EACvB40C,EAAOrsB,QAAUqjB,EAAM5rC,EAEvB,IAAIowD,EAAQ,IAAIk8E,GAAM,CAClBrnG,IAAK,CACDkyH,WAAgB,EAChBN,UAAgBD,EAAeE,EAAaD,UAAY,OACxDO,cAAgBF,MAyEhC,SAA0BzxI,EAAU/d,EAASgvJ,EAAYM,EAAWC,EAAYriH,EAAQ5xC,GACpF,IAAIiJ,EAxBR,SAAsBA,GAClB,GAAgB,MAAZA,EAIA,MAHuB,iBAAZA,IACPA,EAAWzP,MAAMyP,SAASA,EAAS3N,QAAQ,aAAc,MAEtC,mBAAZ2N,EACA,SAAShC,GACZ,IAAIof,EAAKpd,EAAShC,GAClB,GAAIof,GAAmB,iBAANA,EAAgB,CAC7B,IAAI5O,EAAMjP,SAASkP,cAAc,OACjCD,EAAIG,UAAYyO,EAChBA,EAAK5O,EAAIg/H,iBACb,CACA,OAAOpwH,CACX,EAGG,WACH,OAAOpd,EAASgiE,WAAU,EAC9B,CAER,CAGmBopF,CAAar0J,EAAQiJ,UAChC07I,EAAMjgJ,EAAQ+1E,cACd65E,EAAQ,GACRv0J,EAAOC,EAAQu0J,aAAe7vJ,EAAU49I,GAAW59I,GACnD4qB,EAAYq1H,EAAIjtI,cAAc,sBAC9B88I,EAAS,EAMb7S,GAAU5hJ,EAAKqf,iBAAiB,UAAUjlB,SAAQ,SAASs6J,GACvDA,EAAMp1I,WAAWvH,YAAY28I,EACjC,IAIA9S,GAAU5hJ,EAAKqf,iBAAiB,OAAOjlB,SAAQ,SAASu6J,GACpD/S,GAAU+S,EAAGtmH,UAAUj0C,SAAQ,SAASw6J,EAAIxiJ,GACxCwiJ,EAAGn2I,aAAa,oBAAqBrM,EACzC,GACJ,IAEAkwI,GAAO/yH,EAAW,CACdppB,QAAY,QACZC,SAAY,WACZgmJ,UAAY,cACZ9mI,KAAY,WACZtH,IAAY,aAGZi2I,IAIA3R,GAAO/yH,EAAW,CACd1qB,MAAeovJ,EAAY,KAC3BxhC,YAAe5gF,EAAOvsB,KAAO,KAC7BuvI,aAAehjH,EAAOtsB,MAAQ,OAoBlC+8H,GAAOtiJ,EAAM,CAAEomB,SAAU,YAG7BzhB,EAAQ2a,WAAW8rD,aAAa77C,EAAW5qB,GAC3C4qB,EAAUxX,YAAY/X,GAIlBC,EAAQ60J,gBACR5O,GAA4B,CAAE32H,IAAa,WACvCtvB,EAAQ60J,gBAAgBvlI,EAAWwlI,EACvC,IAEA7O,GAA4B,CAAE32H,GAAawlI,GAG/C,SAASA,KACa,KAAdpB,GAAqBO,IACrBc,EAAah1J,GAIb,IAAIo9C,EAAO63G,IACXj1J,EAAKsf,WAAW8rD,aAAahuB,EAAMp9C,GACnCo9C,EAAKrlC,YAAY/X,GAGjBkJ,GACAqrJ,EAAMn6J,SAAQ,SAASgjD,EAAM/8C,GACzB,IAAIimB,EAAKpd,EAAS,CACdvE,QAAay4C,EACb83G,QAAa70J,EAAI,EACjBg/D,WAAak1F,EAAMj0J,SAEnBgmB,GACA82B,EAAKrlC,YAAYuO,EAEzB,IAGJ+/H,GAAYkO,EAAO7xI,EAASpgB,KAAK,KAAM,CAAEiyJ,MAAOA,EAAOhlI,UAAWA,IACtE,CAEA,SAAS4lI,EAAa7uI,GAClB,GAAIrmB,EAAQk1J,cAAgB76J,GAAQgsB,EAAIrmB,EAAQk1J,eAAiB7uI,EAAGmH,cAAgBymI,EAAaO,EAC7F,OAAO,EAGX,IAAIjF,EAAMlpI,EAAGqD,QACb,QAAI,YAAYtjB,KAAKmpJ,IAAQlpI,EAAGmH,cAAgBymI,EAAaO,KAIrDnuI,EAAG2H,aAAa,qBAChB,0FAA0F5nB,KAAKigB,EAAGqD,SAC9G,CAEA,SAASqrI,EAAarwJ,GAIlB,GAHuB,SAAnBA,EAAQglB,SACR24H,GAAO39I,EAAS,CAAEywJ,YAAa,WAE/BD,EAAaxwJ,GAAjB,CAGA,IAAIsB,EAAQsgJ,GAAmB5hJ,GAC3B0wJ,EAAgBxzJ,WAAW+G,GAAiB3C,EAAO,mBACnDqvJ,EAAezzJ,WAAW+G,GAAiB3C,EAAO,wBAClDsvJ,EAAad,EACjBA,GAAUY,EAAgBC,EAE1B,IADA,IAAI5G,GAAU,EACLpoI,EAAK3hB,EAAQs+C,WAAY38B,EAAIA,EAAKA,EAAG48B,YAC1C,GAAmB,GAAf58B,EAAGsI,SAA6B,CAEhC,GADA8/H,GAAU,EACNp0J,GAAQgsB,EAAIqtI,GAAa,CACzB6B,EAAelvI,GACf,QACJ,CACA,IAAK4tI,EAAY,CAEbc,EAAa1uI,GACb,QACJ,CACA,IAAK,wBAAwBjgB,KAAKuC,GAAiB29I,GAAmBjgI,GAAK,aACvE,SAEJ,IAAImvI,EAAOC,EAAcpvI,GACb,GAARmvI,GAIKA,GAIDN,EAAa7uI,GANjBkvI,EAAelvI,GAaf0uI,EAAa1uI,EAErB,MACwB,GAAfA,EAAGsI,UAA4BslI,IACpCyB,EAAUrvI,EAAIooI,GACdA,GAAU,GAGlB+F,EAASc,CA9CT,CA+CJ,CAEA,SAASK,EAActvI,GACnB,IAAIqlG,EAAIrlG,EAAGhH,WAAYtc,EAAQ2oH,EAAE1oE,WACjC,GAAI38B,IAAOtjB,EACP,OAAO,EAEX,GAAIsjB,IAAOqlG,EAAEt9E,SAAS,GAAI,CACtB,GAAsB,GAAlBrrC,EAAM4rB,UACY,GAAlB5rB,EAAM4rB,SACN,OAAO,EAEX,GAAsB,GAAlB5rB,EAAM4rB,SAEN,OAAQ,KAAKvoB,KAAKrD,EAAMkE,KAEhC,CACA,OAAO,CACX,CAEA,SAASsuJ,EAAelvI,GACpB,GAAmB,GAAfA,EAAGsI,UAAiBtI,IAAOtmB,GAAQ41J,EAActvI,GACjD,OAAOkvI,EAAelvI,EAAGhH,YAE7B,IAAIlH,EAAOy9I,EAAUC,EAAOnoF,EAAMooF,EAElCF,GADAz9I,EAAQzS,GAAQ2gB,EAAI,WACAlO,EAAM49I,cAAc,YACpC/1J,EAAQg2J,gBACRH,EAAQ19I,GAASA,EAAM49I,cAAc,UAOrCroF,EAAOhoE,GAAQ2gB,EAAI,aACPqnD,EAAKqoF,cAAc,wBAC3BD,EAAWpoF,EAAKqoF,cAAc,oBAGtC,IAAI54G,EAAO63G,IACPloG,EAAQ63F,EAAInlH,cAChBstB,EAAMmpG,eAAel2J,GACrB+sD,EAAMopG,aAAa7vI,GACnB82B,EAAKrlC,YAAYg1C,EAAMqpG,mBACvBp2J,EAAKsf,WAAW8rD,aAAahuB,EAAMp9C,GACnCq2J,EAAwB/vI,EAAGhH,YACvBlH,IACAA,EAAQzS,GAAQ2gB,EAAI,SAChBrmB,EAAQg2J,eAAiBH,GACzB19I,EAAMgzD,aAAa0qF,EAAM5qF,WAAU,GAAO9yD,EAAM6qC,YAEhD4yG,GACAz9I,EAAMgzD,aAAayqF,EAAS3qF,WAAU,GAAO9yD,EAAM6qC,aAGvDhjD,EAAQg2J,eAAiBF,IACzBpoF,EAAOhoE,GAAQ2gB,EAAI,YACd8kD,aAAa2qF,EAAS7qF,WAAU,GAAOyC,EAAK1qB,WAEzD,CAEA,SAASgyG,IACL,IAAI73G,EAAOwnG,EAAIjtI,cAAc,kBAmC7B,OAlCA2qI,GAAOllG,EAAM,CACTj3C,QAAW,QACXimJ,UAAW,cACXvnJ,MAAWovJ,EAAaA,EAAY,KAAQ,OAC5CnjB,QAAYj/F,EAAO7zB,IAAM,MACb6zB,EAAOtsB,MAAQ,MACfssB,EAAOrsB,OAAS,MAChBqsB,EAAOvsB,KAAO,KAG1Blf,SAAW,WAGXtB,OAAWovJ,EAAcA,EAAa,KAAQ,OAC9C9tI,SAAW8tI,GAAcD,EAAY,SAAW,UAChD3kG,MAAW,SAeXrvD,GAAWA,EAAQq2J,gBACnBl5G,EAAKj3B,UAAYlmB,EAAQq2J,eAE7B/B,EAAM95J,KAAK2iD,GACJA,CACX,CAEA,SAASs4G,EAAc7T,GACnB,IAAIzvG,EAAMyvG,EAAM7vB,wBAChB,GAAkB,IAAd5/E,EAAIvtC,OAA8B,IAAfutC,EAAIttC,OAEvB,OAAO,EAEX,IAAIkZ,EAAMhe,EAAKgyH,wBAAwBh0G,IACnCu4I,EAAYrC,EAAaO,EAC7B,OAAQriH,EAAIttC,OAASyxJ,EAAa,EAC3BnkH,EAAIp0B,IAAMA,EAAMu4I,EAAa,EAC7BnkH,EAAI5sB,OAASxH,EAAMu4I,EAAa,EACjC,CACV,CAEA,SAASZ,EAAUx5H,EAAMuyH,GACrB,GAAK,KAAKroJ,KAAK81B,EAAKj1B,MAApB,CAIA,IAAI2iB,EAAMsS,EAAKj1B,KAAK5G,OAChBysD,EAAQ63F,EAAInlH,cAChBstB,EAAM++F,mBAAmB3vH,GACzB,IAAIs5H,EAAOC,EAAc3oG,GACzB,GAAK0oG,EAAL,CAIA,IAAIe,EAAWr6H,EACf,GAAY,GAARs5H,EAIID,EAFA9G,EAEevyH,EAAK7c,WAEL6c,QAgBnB,GAZA,SAAUs6H,EAAQjnJ,EAAK2+E,EAAKl8E,GAExB,OADA86C,EAAM4kG,OAAOx1H,EAAMgyD,GACf3+E,GAAO2+E,GAAOA,GAAOl8E,EACdk8E,EAEPunE,EAAc3oG,GACP0pG,EAAQjnJ,EAAMA,EAAM2+E,GAAQ,EAAGA,GAE/BsoE,EAAQtoE,EAAMA,EAAMl8E,GAAQ,EAAGA,EAE7C,CAVD,CAUG,EAAG4X,GAAO,EAAGA,IAEX,KAAKxjB,KAAK0mD,EAAMxiD,aAAemkJ,EAEhC8G,EAAer5H,EAAK7c,gBACjB,CAGHk3I,EAAWr6H,EAAKw5H,UAAU5oG,EAAM2pG,WAEhC,IAAIt5G,EAAO63G,IACXloG,EAAMmpG,eAAel2J,GACrBo9C,EAAKrlC,YAAYg1C,EAAMqpG,mBACvBp2J,EAAKsf,WAAW8rD,aAAahuB,EAAMp9C,GACnCq2J,EAAwBG,EAASl3I,WACrC,CAGJq2I,EAAUa,EAzCV,CARA,CAkDJ,CAEA,SAASH,EAAwB/vI,GAI7B,IAAIsuI,EAAKjvJ,GAAQ2gB,EAAI,MACjBsuI,IACAA,EAAGn2I,aAAa,kBAAmB,KACnC43I,EAAwBzB,EAAGt1I,YAEnC,CACJ,CAnaQq3I,EACI,SAASz4J,GACL,GAAI+B,EAAQqvB,SAAU,CAClB,IAAIsnI,GAAW,EAAO1B,EAAU,GAChC,SAAU91F,IACN,GAAI81F,EAAUh3J,EAAEq2J,MAAMj0J,OAAQ,CAC1B,IAAI88C,EAAOo2G,EAAMt1J,EAAEq2J,MAAMW,IACzB7nG,EAAMpa,OAAOmK,GACbn9C,EAAQqvB,SAAS,CACb8tB,KAAMA,EACN83G,UAAWA,EACX71F,WAAYnhE,EAAEq2J,MAAMj0J,OACpBmzB,OAAQ,WACJmjI,GAAW,CACf,IAECA,EAID14J,EAAEqxB,UAAUjQ,WAAWpH,YAAYha,EAAEqxB,WAHrCyC,WAAWotC,EAKnB,MACIlhE,EAAEqxB,UAAUjQ,WAAWpH,YAAYha,EAAEqxB,WACrC5O,EAAQkuB,QAAQwe,EAEvB,CAtBD,EAuBJ,MACInvD,EAAEq2J,MAAMn6J,SAAQ,SAASgjD,GACrBiQ,EAAMpa,OAAOugH,EAAMp2G,GACvB,IACAl/C,EAAEqxB,UAAUjQ,WAAWpH,YAAYha,EAAEqxB,WACrC5O,EAAQkuB,QAAQwe,EAExB,GACA1oD,EACAgvJ,EACAM,EAAYA,EAAYpiH,EAAOvsB,KAAOusB,EAAOtsB,MAAQ,KACrD2uI,EAAaA,EAAariH,EAAO7zB,IAAM6zB,EAAOrsB,OAAS,KACvDqsB,EACA5xC,EAER,MACI0gB,EAAQkuB,QAAQ2kH,EAAM7uJ,GAE9B,IAwXOgc,CACX,EAimFCqxI,SA5lFD,SAAkBrtJ,GACd,IAAI0oD,EAAQ,IAAIk8E,GAehB,OAdA0Y,GAAS+E,UAAW,EACpB/E,GAASvqB,QAAU/E,EAAOM,OAC1BgvB,GAAS4E,iBAAmB,CACxBliJ,QAASA,EACT0oD,MAAOA,GAEXq5F,GAAa/hJ,EAAS4hJ,GAAmB5hJ,GAAU0oD,GAChB,GAA/B1oD,EAAQs+C,WAAWr0B,SAEnBuhI,GAAWxrJ,EAASA,EAAQs+C,WAAYoK,GAExCm9F,GAAe7lJ,EAAS0oD,GAE5By5F,KACOz5F,CACX,EA4kFCs3F,aAAcA,IAGflrJ,MAAM6H,WAAW7H,MAAO,CACpB+pB,QAASA,GACTi3G,SAAUA,KAId5K,EAAQ,IAERp2H,MAAM+pB,QAAQw+G,QAAUvoI,MAAMghI,SAASuH,QACvCvoI,MAAM8pB,QAAQC,QAAU/pB,MAAM+pB,QAC9B/pB,MAAM8pB,QAAQk3G,SAAWhhI,MAAMghI,SAC/BhhI,MAAM+pB,QAAQ88F,KAAKiO,YAAc90H,MAAM6mH,KAAKiO,YAC5C90H,MAAM+pB,QAAQ88F,KAAKmN,UAAYh0H,MAAM6mH,KAAKmN,UAC1Ch0H,MAAM+pB,QAAQsoG,MAAQryH,MAAMqyH,MAC5BryH,MAAM6mH,KAAKiQ,aAAe92H,MAAM+pB,QAAQ88F,KAAKiQ,YAE5C,CAhzWD,CAgzWG32H,OAAOH,MAAM+G,QAEhB,SAAU/E,GAEN,IAAIkvF,EAAK,SACLlxF,EAAQG,OAAOH,MACf6H,EAAa7H,EAAM6H,WACnBgkF,EAAQ7rF,EAAM+pB,QAAQ88F,KACtBsP,EAAUtqC,EAAMsqC,QAChB0B,EAAahsC,EAAMgsC,WACnBH,EAAmB7rC,EAAM6rC,iBACzBlsH,EAAaxL,EAAM8L,YACnBL,EAAczL,EAAM+L,aAKpBqxJ,EAAyB,iCAAiCp9J,EAAM4pB,GAAG+tE,KAAK31F,EAAE,kCAAmC,CAAE21F,KAAM,cAErH0lE,EAAiBr9J,EAAMiH,MAAM7E,OAAO,CACpCoF,KAAM,SAASw5E,EAASx6E,GACpBnH,KAAK6L,QAAUlJ,EAPA,sEAQf3C,KAAK2mD,QAAU3mD,KAAK6L,QAAQ0pC,SAAS,sBAErCpuC,EAAUA,GAAW,CAAC,EAEtBnH,KAAKmH,QAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAASnH,KAAKi+J,gBAAgB92J,IACjEnH,KAAKk+J,aAAe,CAChBhyJ,SAAU/E,EAAQ+E,SAClBomF,UAAWnrF,EAAQmrF,UACnBS,kBAAkB,EAClBd,UAAW,WAGfjyF,KAAKm+J,kBAAoBn+J,KAAKsmH,WAAW98G,KAAKxJ,MAE9CA,KAAK2hF,QAAUA,EACf3hF,KAAKo+J,aACT,EAEAj3J,QAAS,CACLmG,SAAU,MACVq3G,OAAQ,aACR7mG,OAAQ,EACR+lG,UAAU,EACVw6C,UAAW,EACXx5C,UAAW,KAGfu5C,YAAa,WACTp+J,KAAKs+J,aAAet+J,KAAKu+J,WAAW/0J,KAAKxJ,MACzCA,KAAKw+J,qBAAuBx+J,KAAKy+J,cAAcj1J,KAAKxJ,MACpDA,KAAK0+J,mBAAqB1+J,KAAK2mH,YAAYn9G,KAAKxJ,MAChDA,KAAK2+J,kBAAoB3+J,KAAKs3I,WAAW9tI,KAAKxJ,MAE9CA,KAAK2hF,QAAQn4E,KAAK,QAASxJ,KAAKs+J,cAChCt+J,KAAK2hF,QAAQn4E,KAAK,aAAcxJ,KAAKs+J,cACrCt+J,KAAK2hF,QAAQn4E,KAAK,aAAcxJ,KAAK0+J,oBACrC1+J,KAAK2hF,QAAQn4E,KAAK,YAAaxJ,KAAK2+J,mBAEpC3+J,KAAK2hF,QAAQ91E,QAAQge,GAAG,aAAegoE,EAAI7xF,KAAKw+J,sBAEhDx+J,KAAK6L,QAAQge,GAAG,QAAUgoE,EAAI,oBAAqB7xF,KAAK4+J,WAAWp1J,KAAKxJ,OACxEA,KAAK6L,QAAQge,GAAG,aAAegoE,EAAI7xF,KAAK6+J,cAAcr1J,KAAKxJ,MAC/D,EAEA8+J,SAAU,WAKN,OAJK9+J,KAAKk0F,QACNl0F,KAAKk0F,MAAQ,IAAIvzF,EAAM4pB,GAAGunE,MAAM9xF,KAAK6L,QAAS7L,KAAKk+J,eAGhDl+J,KAAKk0F,KAChB,EAEAlyF,QAAS,WACL,IAAIkyF,EAAQl0F,KAAKk0F,MAEjBl0F,KAAK2hF,QAAQ13E,OAAO,QAASjK,KAAKs+J,cAClCt+J,KAAK2hF,QAAQ13E,OAAO,aAAcjK,KAAKs+J,cACvCt+J,KAAK2hF,QAAQ13E,OAAO,aAAcjK,KAAK0+J,oBACvC1+J,KAAK2hF,QAAQ13E,OAAO,YAAajK,KAAK2+J,mBAEtC3+J,KAAK2hF,QAAQ91E,QAAQutB,IAAI,aAAey4D,EAAI7xF,KAAKw+J,sBACjDx+J,KAAK6L,QAAQutB,IAAI,QAAUy4D,GAC3B7xF,KAAK6L,QAAQutB,IAAI,aAAey4D,GAE5BqC,IACAA,EAAMlyF,iBACChC,KAAKk0F,cAETl0F,KAAKk+J,aAEZ5jI,aAAat6B,KAAKilE,iBAEXjlE,KAAK6L,eACL7L,KAAK2mD,eACL3mD,KAAK2hF,OAChB,EAEAs8E,gBAAiB,SAAS92J,GAEtB,MAAO,CACHmG,UAFJnG,EAAUA,GAAW,CAAC,GAEAmG,SAClBq3G,OAAQx9G,EAAQw9G,OAChB7mG,OAAQ3W,EAAQ2W,OAChB+lG,SAAU18G,EAAQ08G,SAClB93G,MAAO5E,EAAQ4E,MACfC,OAAQ7E,EAAQ6E,OAChB26C,QAASx/C,EAAQw/C,QACjBo4G,OAAQ53J,EAAQ43J,OAChBV,UAAWl3J,EAAQk3J,UACnBx5C,UAAW19G,EAAQ09G,UAE3B,EAEAm6C,cAAe,SAASlc,GACpB,KAAOA,IAAUA,EAAM37I,QAAQ83J,SAC3Bnc,EAAQA,EAAMn2I,OAElB,OAAOm2I,CACX,EAEAoc,eAAgB,SAAS73J,EAAQy7I,EAAO37I,GACpC,IAAIw/C,EAAUx/C,EAAQw/C,QAQtB,GAPIhmD,EAAMuI,WAAWy9C,KACjBA,EAAUA,EAAQ,CACd96C,QAASi3I,EACTz7I,OAAQA,KAIZs/C,EAEA,OADA3mD,KAAK2mD,QAAQt2C,KAAKs2C,IACX,CAEf,EAEAgtC,UAAW,SAASmvD,EAAO37I,EAASymF,EAAaztE,GAC7C,IAAI7S,EAAWnG,EAAQmG,SACnB6xJ,EAAgBh4J,EAAQ2W,QAAU,EAClC6jE,EAAU3hF,KAAK2hF,QACf7jE,EAAS6jE,EAAQy9E,UAAUrnB,iBAC3B/nI,EAAO2xE,EAAQpvD,UACf8sI,EAAgB19E,EAAQy9E,UAAU75C,QAClCoY,EAAOmlB,EAAMnlB,OACb5xH,EAAQ6hF,EAAY7hF,MACpBC,EAAS4hF,EAAY5hF,OACrBwgB,EAAO,EAAGtH,EAAM,EAOpB,GALAy4G,EAAK3kF,OAAO5I,UAAUtyB,EAAO0O,KAAM1O,EAAOoH,KACtCm6I,GACA1hC,EAAK3kF,OAAO5I,WAAWivH,EAAcj6J,GAAIi6J,EAAcl7J,GAG3C,UAAZmJ,GAAwB6S,EAAO,CAC/B,IAAI+3H,EAAQ7f,EAAiBl4G,GAC7BqM,EAAO0rH,EAAM9yI,EAAI2G,EAAQ,EACzBmZ,EAAMgzH,EAAM/zI,EAAI6H,EAASmzJ,CAC7B,KAAuB,QAAZ7xJ,GACPkf,EAAOmxG,EAAK3kF,OAAO5zC,EAAI2G,EAAQozJ,EAC/Bj6I,EAAMy4G,EAAKp/C,SAASp6E,EAAI6H,EAAS,GACd,SAAZsB,GACPkf,EAAOmxG,EAAKH,cAAcp4H,EAAI+5J,EAC9Bj6I,EAAMy4G,EAAKp/C,SAASp6E,EAAI6H,EAAS,GACd,UAAZsB,GACPkf,EAAOmxG,EAAKp/C,SAASn5E,EAAI2G,EAAQ,EACjCmZ,EAAMy4G,EAAKH,cAAcr5H,EAAIg7J,IAE7B3yI,EAAOmxG,EAAKp/C,SAASn5E,EAAI2G,EAAQ,EACjCmZ,EAAMy4G,EAAK3kF,OAAO70C,EAAI6H,EAASmzJ,GAGnC,MAAO,CACH3yI,KAAMgsG,EAAWhsG,EAAM1O,EAAO0O,KAAM1O,EAAO0O,KAAOxc,EAAKjE,OACvDmZ,IAAKszG,EAAWtzG,EAAKpH,EAAOoH,IAAKpH,EAAOoH,IAAMlV,EAAKhE,QAE3D,EAEAyB,KAAM,SAASq1I,EAAO37I,GAClBnH,KAAKglH,MAAM89B,EAAOA,EAAOt6I,EAAW,CAAC,EAAGxI,KAAKmH,QAASnH,KAAKi+J,gBAAgBnb,EAAM37I,QAAQ83J,SAAU93J,GACvG,EAEAuG,KAAM,WACF,IAAIwmF,EAAQl0F,KAAKk0F,MACblgF,EAAUhU,KAAKmlJ,gBAEZnlJ,KAAKmlJ,SACZ7qH,aAAat6B,KAAKs/J,cACdprE,GAASA,EAAMlnF,WAAagH,IAC3BhU,KAAK2hF,QAAQv3E,QAAQ,eAAgB,CAAEyB,QAASmI,EAAQ8uI,MAAOz7I,OAAQ2M,EAAQ3M,OAAQ6sF,MAAOA,KAC/FA,EAAMxuC,OAEd,EAEAk5G,WAAY,SAASj6J,GACjBA,EAAEwE,iBACFnJ,KAAK0N,MACT,EAEAs3G,MAAO,SAAS39G,EAAQy7I,EAAO37I,EAASgZ,EAAOmlB,GAC3C,IAAItxB,EAAUhU,KAAKmlJ,SAInB,GAFA7qH,aAAat6B,KAAKilE,WAEdjxD,KAAaA,EAAQ8uI,QAAUA,GAAS37I,EAAQ43J,QAAW/qJ,EAAQ3M,SAAWA,GAAlF,CAIAizB,aAAat6B,KAAKs/J,cAElB,IAAIprE,EAAQl0F,KAAK8+J,WAEjB,IAAK9+J,KAAK2hF,QAAQv3E,QAAQ,cAAe,CAAEyB,QAASi3I,EAAOz7I,OAAQA,EAAQ6sF,MAAOA,KAC9El0F,KAAKk/J,eAAe73J,EAAQy7I,EAAO37I,GAAU,CAE7CnH,KAAKu/J,UAAUp4J,GACf,IAAIymF,EAAc5tF,KAAKw/J,SAASr4J,GAE5B+sF,EAAMlnF,WACNknF,EAAMxuC,OAAM,GAGhB1lD,KAAKmlJ,SAAW,CACZh+I,QAASA,EACTymF,YAAaA,EACbk1D,MAAOA,EACPz7I,OAAQA,EACRiG,SAAUtN,KAAK2zF,UAAUxsF,EAAQ43J,OAASjc,EAAQz7I,EAAQF,EAASymF,EAAaztE,IAGhFmlB,EACAtlC,KAAKs/J,aAAepmI,WAAWl5B,KAAKm+J,kBAAmBh3J,EAAQ09G,WAAa,GAE5E7kH,KAAKsmH,YAEb,CA7BA,CA8BJ,EAEAA,WAAY,WACR,IACIh5G,EADUtN,KAAKmlJ,SACI73I,SAEvBtN,KAAK8+J,WAAWvsE,KAAKjlF,EAASkf,KAAMlf,EAAS4X,IACjD,EAEAq6I,UAAW,SAASp4J,GACZA,EAAQ08G,UAAY7jH,KAAKy/J,eACzBz/J,KAAK6L,QAAQkhB,YAAY,sBACzB/sB,KAAKy/J,aAAapzJ,gBACXrM,KAAKy/J,cAGXt4J,EAAQ08G,UAAa7jH,KAAKy/J,eAC3Bz/J,KAAK6L,QAAQwZ,SAAS,sBACtBrlB,KAAKy/J,aAAe98J,EAAEo7J,GAAwB7xJ,SAASlM,KAAK6L,SAEpE,EAEA0yJ,WAAY,SAAS55J,GACjB,IAAIm+I,EAAQ9iJ,KAAKg/J,cAAcr6J,EAAEkH,SAEjC,GAAIi3I,EAAO,CACP,IAAI37I,EAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAASnH,KAAKi+J,gBAAgBnb,EAAM37I,QAAQ83J,UAE1E93J,GAAWA,EAAQw9G,QAAUhgH,EAAEe,MAC/B1F,KAAKglH,MAAMrgH,EAAEkH,QAASi3I,EAAO37I,EAASxC,EAAE4kB,eAAe,EAE/D,CACJ,EAEAi2I,SAAU,SAASr4J,GACfnH,KAAK6L,QAAQI,IAAI,CACbF,MAAO+qH,EAAQ3vH,EAAQ4E,OAAS5E,EAAQ4E,MAAQ,OAChDC,OAAQ8qH,EAAQ3vH,EAAQ6E,QAAU7E,EAAQ6E,OAAS,SAGvD,MAAM5E,EAAQpH,KAAK6L,QAAQzE,QAAQ8E,SAASyD,SAASqP,MAAM/S,IAAI,CAAEiiF,WAAY,WACvEniF,EAAQI,EAAW/E,GACnB4E,EAASI,EAAYhF,GAQ3B,OAPAA,EAAMiF,SAENrM,KAAK6L,QAAQI,IAAI,CACbF,MAAOA,EACPC,OAAQA,IAGL,CACHD,MAAOA,EACPC,OAAQA,EAEhB,EAEA26G,YAAa,SAAShiH,GAClB,GAAI3E,KAAKk0F,QAAUl0F,KAAK0/J,oBAAoB/6J,EAAE4kB,eAAgB,CAC1D,IAAI01I,EAAUj/J,KACVgU,EAAUirJ,EAAQ9Z,SAElBnxI,GAAWA,EAAQ7M,QAAQ08G,WAC3Bo7C,EAAQh6F,SAAW/rC,YAAW,WAC1BoB,aAAa2kI,EAAQK,cACrBL,EAAQvxJ,MACZ,GAAGsG,EAAQ7M,QAAQk3J,WAAa,GAExC,CACJ,EAEA/mB,WAAY,SAAS3yI,GACjB,IAAIqP,EAAUhU,KAAKmlJ,SACnB,GAAInxI,GAAWrP,EAAEkH,QAAS,CACtB,IAAI1E,EAAU6M,EAAQ7M,QACtB,GAAwB,UAApBA,EAAQmG,SAAsB,CAC9B,IAAIA,EAAWtN,KAAK2zF,UAAUhvF,EAAEkH,QAAS1E,EAAS6M,EAAQ45E,YAAajpF,EAAE4kB,eACzEvV,EAAQ1G,SAAWA,EACnBtN,KAAK8+J,WAAWlyJ,QAAQX,IAAI,CAAEugB,KAAMlf,EAASkf,KAAMtH,IAAK5X,EAAS4X,KACrE,CACJ,CACJ,EAEAu5I,cAAe,SAAS95J,GAChB3E,KAAKk0F,QAAUl0F,KAAK0/J,oBAAoB/6J,KACxC21B,aAAat6B,KAAKs/J,cAClBt/J,KAAK0N,OAEb,EAEAgyJ,oBAAqB,SAAS/6J,GAC1B,OAAOA,EAAE22B,eAAiB34B,EAAEgC,EAAE22B,eAAezuB,QAAQ7M,KAAKk0F,MAAMtnF,SAASpF,MAC7E,EAEAq3J,cAAe,WACX,IAAII,EAAUj/J,KACVgU,EAAUirJ,EAAQ9Z,SAClBnxI,GAAWA,EAAQ7M,QAAQ08G,WAC3Bo7C,EAAQh6F,SAAW/rC,YAAW,WAC1B+lI,EAAQvxJ,MACZ,GAAGsG,EAAQ7M,QAAQk3J,WAAa,GAExC,IAGJ19J,EAAM+pB,QAAQszI,eAAiBA,CAElC,CApVD,CAoVGl9J,OAAOH,MAAM+G,QAEhB,SAAU/E,GAEN,IAAIhC,EAAQG,OAAOH,MACf82I,EAAO92I,EAAM+pB,QACbi1I,EAAiBloB,EAAKP,QACtB9lH,EAASzwB,EAAM4pB,GAAG6G,OAClB5oB,EAAa7H,EAAM6H,WAEvB7H,EAAM4C,QAAQs0F,IAAM8nE,EAAep8J,QAAQs0F,IAC3Cl3F,EAAM4C,QAAQ6+I,OAASud,EAAep8J,QAAQ6+I,OAE9C,IAAIlL,EAAU9lH,EAAOruB,OAAO,CACxBoF,KAAM,SAAS0D,EAAS1E,GACpBiqB,EAAOrpB,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAAS,CAAC,GAEpC7L,KAAKmH,QAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAASA,GAE5CnH,KAAKo/J,UAAYO,EAAev4G,OAAOpnD,KAAK6L,QAAQ,GAAI1E,GACpDnH,KAAKo/J,UAAUhvH,YACfpwC,KAAKowC,UAAYA,GAGrBpwC,KAAK4/J,wBAA0B5/J,KAAK6/J,sBAAsBr2J,KAAKxJ,MAC/DA,KAAK8/J,aAAa,SAClB9/J,KAAK8/J,aAAa,cAClB9/J,KAAK8/J,aAAa,cAClB9/J,KAAK8/J,aAAa,aAElB9/J,KAAKw3I,iBACT,EAEArwI,QAAS,CACL/E,KAAM,UACN68J,QAAS,CAAC,GAGd50J,OAAQ,CACJ,QACA,aACA,aACA,YACA,SACA,cACA,gBAGJw1J,sBAAuB,SAASl7J,GAC5B3E,KAAKoK,QAAQzF,EAAEe,KAAMf,EACzB,EAEAm7J,aAAc,SAAS3/I,GACnBngB,KAAKo/J,UAAU51J,KAAK2W,EAAOngB,KAAK4/J,wBACpC,EAEAnoB,KAAM,SAAS5rI,GACX7L,KAAKo/J,UAAU3nB,KAAK5rI,EACxB,EAEA2qD,MAAO,WACCx2D,KAAKo/J,WACLp/J,KAAKo/J,UAAU5oG,QAEnBx2D,KAAK+/J,aACT,EAEA/9J,QAAS,WACDhC,KAAKo/J,YACLp/J,KAAKo/J,UAAUp9J,iBACRhC,KAAKo/J,WAGZp/J,KAAKggK,WACLhgK,KAAKggK,SAASh+J,iBACPhC,KAAKggK,UAGhB5uI,EAAOrpB,GAAG/F,QAAQuI,KAAKvK,KAC3B,EAEAo3I,aAAc,WACV,OAAOp3I,KAAKo/J,UAAUhoB,cAC1B,EAEA/tH,YAAa,SAAS1kB,GAClB,OAAO3E,KAAKo/J,UAAU/1I,YAAY1kB,EACtC,EAEAs7J,YAAa,SAASnd,EAAO37I,GACrBnH,KAAKggK,UACLhgK,KAAKggK,SAASvyJ,KAAKq1I,EAAO37I,EAElC,EAEA44J,YAAa,WACL//J,KAAKggK,UACLhgK,KAAKggK,SAAStyJ,MAEtB,EAEAkqI,gBAAiB,WACb53I,KAAKo/J,UAAUxnB,kBACf53I,KAAK+/J,aACT,EAEAjoB,eAAgB,WACZ93I,KAAKo/J,UAAUtnB,gBACnB,EAEAvlH,QAAS,WACL,MAAO,CACHxmB,MAAO/L,KAAK6L,QAAQE,QACpBC,OAAQhM,KAAK6L,QAAQG,SAE7B,EAEA4mB,QAAS,SAAS5iB,GACdhQ,KAAK6L,QAAQI,IAAI,CACbF,MAAOiE,EAAKjE,MACZC,OAAQgE,EAAKhE,SAGjBhM,KAAKyyB,MAAQziB,EACbhQ,KAAKo/J,UAAU5sI,YAAYxiB,GAC3BhQ,KAAK0yB,SACT,EAEAA,QAAS,WACL1yB,KAAKo/J,UAAU5sI,YAAYxyB,KAAKyyB,OAChCzyB,KAAKo/J,UAAU1sI,SACnB,EAEA8kH,gBAAiB,WACT72I,EAAM4pB,GAAGunE,QACT9xF,KAAKggK,SAAW,IAAIvoB,EAAKumB,eAAeh+J,KAAMA,KAAKmH,QAAQ83J,SAAW,CAAC,GAE/E,IAWJ,SAAS7uH,EAAUtyB,GACf9d,KAAKo/J,UAAUhvH,UAAUtyB,EAC7B,CAVAnd,EAAM4pB,GAAG2M,OAAOggH,GAEhBA,EAAQ9vF,OAAS,SAASv7C,EAAS1E,GAC/B,OAAO,IAAI+vI,EAAQrrI,EAAS1E,EAChC,EAEAxG,EAAM+pB,QAAQwsH,QAAUA,CAM3B,CAtJD,CAsJGp2I,OAAOH,MAAM+G,QAEhB,SAAU/E,GAEN,IACI+nB,EADQ5pB,OAAOH,MACC+pB,QAChB8vI,EAAU9vI,EAAQ8vI,QAEtB9vI,EAAQ8vI,QAAU,SAAS3uJ,EAAS1E,GAChC,OAAOqzJ,EAAQ73J,EAAEkJ,GAAS,GAAI1E,EAClC,EAGAujB,EAAQ8vI,QAAQtB,SAAWxuI,EAAQwuI,SACnCxuI,EAAQ8vI,QAAQ3O,aAAenhI,EAAQmhI,YAE1C,CAdD,CAcG/qJ,OAAOH,MAAM+G,SAiBhB,SAAU/E,GAGV7B,OAAOH,MAAM8pB,QAAU3pB,OAAOH,MAAM8pB,SAAW,CAAC,EAChD,IAAIC,EAAU/pB,MAAM+pB,QAChB88F,EAAO98F,EAAQ88F,KACf+mB,EAAO7jH,EAAQ6jH,KACfkC,EAAQ/lH,EAAQ+lH,MAChB7oI,EAAQjH,MAAMiH,MACdrE,EAAU5C,MAAM4C,QAChBo+H,EAAWhhI,MAAMghI,SACjB1E,EAAO0E,EAAS1E,KAChBkD,EAASwB,EAASxB,OAClB+/B,EAAoBv+B,EAAShuF,UAC7Bu1F,EAAUvH,EAASuH,QACnBz+G,EAAU9pB,MAAM8pB,QAEhBjiB,EAAa7H,MAAM6H,WACnBU,EAAavI,MAAMuI,WACnBi3J,EAAqBx/J,MAAM6uB,OAE3B4wI,EAAM,MAONC,EAAmB,iBACnBC,EAAQ,OACRnvE,EAAS,SACTF,EAAS,SACTsvE,EAAS,SAETC,EAAQ,QACRC,EAAO,OACPC,EAAe,kBAEfC,EAAoB,GAKpBC,EAAe,UACfnvH,EAAS,SAETovH,EAAS,SAETz1I,EAAO,OACPgsG,EAAYvkH,OAAOukH,UACnB0pC,GAAajuJ,OAAOukH,UACpBshB,EAAO,OACPqoB,EAAa,YACbC,EAAa,YACbC,EAAa,YACb76J,EAAS,SACT86J,EAAU,UACV51I,EAAQ,QACR61I,EAAe,cAEfj7J,EAAS,SACTgrF,EAAM,MACNkwE,EAAW,WAIXC,EAAQ,OACR7vH,EAAQ,QACRnsC,EAAI,IACJkQ,EAAI,IAMJ+rJ,EAAY,CACflB,IAAKA,EACLmB,SAvDc,UAwDdC,WAvDgB,YAwDhBC,WAvDgB,YAwDhBC,YAvDiB,aAwDjBz2I,IAvDS,MAwDT02I,uBAvD4B,wBAwD5BtB,iBAAkBA,EAClBC,MAAOA,EACPnvE,OAAQA,EACRF,OAAQA,EACRsvE,OAAQA,EACRqB,gBAvDqB,EAwDrBpB,MAAOA,EACPC,KAAMA,EACNC,aAAcA,EACdmB,eAvDoB,IAwDpBlB,kBAAmBA,EACnBmB,cAvDmB,IAwDnBt2I,IAvDS,MAwDTN,MAvDW,QAwDX62I,OAvDY,SAwDZnB,aAAcA,EACdnvH,OAAQA,EACRuwH,iBAvDsB,IAwDtBnB,OAAQA,EACRoB,QAvDa,UAwDb72I,KAAMA,EACNgsG,UAAWA,EACX0pC,UAAWA,EACXpoB,KAAMA,EACNqoB,WAAYA,EACZC,WAAYA,EACZC,WAAYA,EACZ76J,OAAQA,EACR86J,QAASA,EACT51I,MAAOA,EACP61I,aAAcA,EACdnkF,MAvDW,QAwDX92E,OAAQA,EACRgrF,IAAKA,EACLkwE,SAAUA,EACVc,OAvDY,SAwDZC,KAvDU,OAwDVlzF,MAvDW,QAwDXoyF,MAAOA,EACP7vH,MAAOA,EACPnsC,EAAGA,EACHkQ,EAAGA,EACH6sJ,uBAvD4B,EAwD5BC,QAvDa,UAwDbC,WAvDgB,aAwDhBC,SAvDc,YA0Df,SAASt/J,EAAQyF,GACb,OAAOxF,MAAMD,QAAQyF,EACzB,CAEA,SAAS2c,EAASxZ,EAAS8c,GAGvB,IAFA,IAAI65I,EAAav/J,EAAQ0lB,GAAWA,EAAU,CAAEA,GAEvC/e,EAAM,EAAGA,EAAM44J,EAAWh7J,OAAQoC,IAAO,CAC9C,IAAIyjB,EAAYm1I,EAAW54J,IACmB,IAA1CiC,EAAQwhB,UAAU1X,QAAQ0X,KAC1BxhB,EAAQwhB,WAAa,IAAMA,EAEnC,CACJ,CAEA,IAAIo1I,EAAc,OAElB,SAAS11I,EAAYlhB,EAASwhB,GACtBxhB,GAAWA,EAAQwhB,YACnBxhB,EAAQwhB,UAAYxhB,EAAQwhB,UAAU5qB,QAAQ4qB,EAAW,IAAI5qB,QAAQggK,EAAa,KAE1F,CAEA,SAASC,EAAiBnzH,GACtB,IAAIzxB,EAAS,GACTyxB,EAAKpoC,QAAQy4H,QAAUj/H,MAAM+pB,QAAQ88F,KAAKsP,QAAQvnF,EAAKpoC,QAAQy4H,OAAO7zH,QAClEwjC,EAAKpoC,QAAQy4H,OAAO7zH,MAAQ,GAAM,IAClC+R,EAAS,GAIjB,IAAK,IAAIvW,EAAI,EAAGA,EAAIgoC,EAAK49F,SAAS3lI,OAAQD,IACtCgoC,EAAK49F,SAAS5lI,GAAG4qF,SAAS77E,MAAM,GAAG85B,UAAUtyB,EAAQA,GAGzD,OAAOyxB,CACX,CAEA,SAASozH,EAAUC,EAAQC,GAIvB,OAAQD,EAAOx9J,EAAIy9J,EAAO1+J,EAAIy+J,EAAOz+J,EAAI0+J,EAAOz9J,EAAI,CACxD,CAEA,SAASiwD,GAAS3sD,GACd,MAAwB,iBAAVA,IAAuBI,MAAMJ,EAC/C,CAEA,SAASE,GAASF,GACd,cAAcA,IAAUxC,CAC5B,CA8BA,SAAS48J,GAASp6J,GACd,MAAwB,iBAAVA,CAClB,CAEA,SAASq6J,GAAWr6J,GAChB,OAAI2sD,GAAS3sD,GACFA,EAAQ,KAEZA,CACX,CAEA,IAAIs6J,GAAoB,sCAExB,SAASC,GAAYl9I,GACjB,OAAOi9I,GAAkBz1J,KAAKwY,EAClC,CAsBA,SAASm9I,GAAWx6J,EAAOy6J,QACA,IAAnBA,IAA6BA,EAAiB,GAElD,IAAI3xB,EAAU,CAAEtsH,IAAK,EAAGuH,MAAO,EAAGC,OAAQ,EAAGF,KAAM,GAWnD,MATsB,iBAAZ,EACNglH,EAAQtgD,GAAOsgD,EAAQlmH,GAASkmH,EAAQrgD,GAAUqgD,EAAQpmH,GAAQ1iB,GAElE8oI,EAAQtgD,GAAOxoF,EAAMwoF,IAAQiyE,EAC7B3xB,EAAQlmH,GAAS5iB,EAAM4iB,IAAU63I,EACjC3xB,EAAQrgD,GAAUzoF,EAAMyoF,IAAWgyE,EACnC3xB,EAAQpmH,GAAQ1iB,EAAM0iB,IAAS+3I,GAG5B3xB,CACX,CAEA,IAAIx9H,GAAU,CACV1D,QAAS,SAASF,GACd,OAAOA,CACX,GAGAgzJ,GAAkBx7J,EAAM7E,OAAO,CAEnC,GAUA,SAASsgK,GAAYl8J,GAGjB,IAAIiJ,EAOJ,YATgB,IAAZjJ,IAAsBA,EAAU,CAAC,GAGjCA,EAAQiJ,SACRjJ,EAAQiJ,SAAWA,EAAWgzJ,GAAgB9yJ,QAAQnJ,EAAQiJ,UACvDlH,EAAW/B,EAAQw/C,WAC1Bv2C,EAAWjJ,EAAQw/C,SAGhBv2C,CACX,CAeA,SAASiuB,GAAKtjB,EAAO6O,GAGjB,IAFA,IAAIpiB,EAASuT,EAAMvT,OACfsP,EAAS,GACJlN,EAAM,EAAGA,EAAMpC,EAAQoC,IACxBggB,EAAS7O,EAAMnR,KACfkN,EAAQnV,KAAKoZ,EAAMnR,IAI3B,OAAOkN,CACX,CA5CAssJ,GAAgBjsI,SAAW,SAASmsI,GAChCtvJ,GAAUsvJ,CACd,EAEAF,GAAgB9yJ,QAAU,SAASF,EAAUjJ,GACzC,OAAO6M,GAAQ1D,QAAQF,EAAUjJ,EACrC,EAoDA,IAAIo8J,GAAU,WACVvjK,KAAK05D,KAAO,IAAI8pG,GACpB,EAUA,SAAS/tI,GAAQ/sB,EAAOqS,GACpB,GAAIA,EACA,OAAiC,IAA1BA,EAAMpF,QAAQjN,EAE7B,CAZA66J,GAAQl7J,UAAU4nB,IAAM,SAAcne,GAClC,OAAO9R,KAAK05D,KAAKzpC,IAAIne,EACzB,EAEAyxJ,GAAQl7J,UAAU6nB,IAAM,SAAcpe,EAAKpJ,GACvC1I,KAAK05D,KAAKxpC,IAAIpe,EAAKpJ,EACvB,EAYA,IAAI+6J,GAAU,UAEVC,GAAmB97J,EAAM7E,OAAO,CAChCoF,KAAM,SAASiuH,EAAU1sH,GACrB1J,KAAKo2H,SAAWA,EAChBp2H,KAAK2jK,WAAan7J,EAAW,CAAC,EAAGxI,KAAK2jK,WAAYj6J,EACtD,EAEAU,QAAS,SAAShI,EAAMi1B,GACpB,IAGIhuB,EAFA+sH,EADMp2H,KACSo2H,SACfutC,EAFM3jK,KAEW2jK,WAQrB,OANIA,EAAWvhK,GACXiH,EAAqBrJ,KAAK4jK,aAAaD,EAAWvhK,GAAOi1B,GAClD++F,EAASqtC,MAChBp6J,EAAqBrJ,KAAK4jK,aAAaH,GAASrhK,EAAMi1B,IAGnDhuB,CACX,EAEAu6J,aAAc,SAASC,GAEnB,IADA,IAAIxsI,EAAO,GAAItG,EAAMzpB,UAAUE,OAAS,EAChCupB,KAAQ,GAAIsG,EAAMtG,GAAQzpB,UAAWypB,EAAM,GAEnD,OAAO/wB,KAAKo2H,SAASytC,GAAQz7J,MAAMpI,KAAKo2H,SAAU/+F,EACtD,EAEAysI,iBAAkB,SAASnvJ,GAGvB,GAAI3U,KAAKo2H,SAAS0tC,iBACd,OAAO9jK,KAAKo2H,SAAS0tC,iBAAiBnvJ,GAG1C,IAAK,IAAI/K,EAAM,EAAGA,EAAM+K,EAAMnN,OAAQoC,IAClC,GAPW5J,KAOE2jK,WAAWhvJ,EAAM/K,IAC1B,OAAO,CAGnB,IAGJ,SAASjC,GAAce,GACnB,MAAiD,oBAA1CjI,OAAO4H,UAAUoJ,SAASlH,KAAK7B,EAC1C,CAEA,SAASmS,GAAIE,EAAO6O,GAGhB,IAFA,IAAIpiB,EAASuT,EAAMvT,OACfsP,EAAS,GACJlN,EAAM,EAAGA,EAAMpC,EAAQoC,IAAO,CACnC,IAAIlB,EAAQkhB,EAAS7O,EAAMnR,IACvBjJ,MAAM+pB,QAAQ88F,KAAKsP,QAAQpuH,IAC3BoO,EAAOnV,KAAK+G,EAEpB,CACA,OAAOoO,CACX,CAEA,IAAIgM,GAAUvf,EAAQuf,SAAW,CAAC,EAwBlC,IAAIuvG,GAAM1xH,MAAM+pB,QAAQ88F,KACpBrtE,GAASk4E,GAAIl4E,OACb8+E,GAAa5G,GAAI4G,WACjBnC,GAAUzE,GAAIyE,QACdQ,GAAMjF,GAAIiF,IACVjS,GAAgBgN,GAAIhN,cACpBz3B,GAAcykC,GAAIzkC,YAClByqC,GAAmBhG,GAAIgG,iBACvBC,GAAejG,GAAIiG,aACnB1D,GAAUvC,GAAIuC,QACdtyF,GAAO+vF,GAAI/vF,KACXk2F,GAAanG,GAAImG,WACjB7D,GAAYtC,GAAIsC,UAChBkE,GAAMxG,GAAIwG,IACVviH,GAAQ+7G,GAAI/7G,MACZmjH,GAAepH,GAAIoH,aACnBT,GAAiB3G,GAAI2G,eAErB+qC,GAAan8J,EAAM7E,OAAO,CAE9B,GAqDA,SAASihK,GAAkBt+J,EAAMyB,GAC7B,IAAIU,EAAQnC,EAAK2C,UACbR,EAAMV,QACNU,EAAMV,QAAUqB,EAAW,CAAC,EAAGX,EAAMV,QAASA,GAE9CU,EAAMV,QAAUA,CAExB,CA1DA48J,GAAWE,WAAa,SAAS98J,EAAS+8J,EAAO5wG,QAC/B,IAAVA,IAAoBA,EAAQ,CAAE6wG,MAAO,KAIpCh9J,GAAWmsD,EAAM6wG,MAFN,IAE4Bx0J,SAASu0J,OAIrDzjK,OAAOoqB,KAAK1jB,GAAS7F,SAAQ,SAASwQ,GAClC,IAAIpJ,EAAQvB,EAAQ2K,GACR,eAARA,GAAmC,MAAXA,EAAI,IAAepJ,IAInC,SAARoJ,EACAoyJ,EAAMviK,KAAK+G,GACa,iBAAVA,IACd4qD,EAAM6wG,QACNJ,GAAWE,WAAWv7J,EAAOw7J,EAAO5wG,GACpCA,EAAM6wG,SAEd,GACJ,EAEAJ,GAAWK,UAAY,SAASF,EAAOt6I,GACnC,IAAIm1C,EAAW,GAEf,GAAImlG,EAAM18J,OAAS,GAAKmI,SAASu0J,MAAO,CACpC,IACInlG,EAAWmlG,EAAMrpJ,KAAI,SAASk9E,GAC1B,OAAOpoF,SAASu0J,MAAMr4F,KAAKksB,EAC/B,GACJ,CAAE,MAAOpzF,GAELhE,MAAMqwB,aAAarsB,EACvB,CAEA0/J,QAAQrzF,IAAIjS,GAAUI,KAAKv1C,EAAUA,EACzC,MACIA,GAER,EAEAm6I,GAAWO,aAAe,SAASn9J,EAASyiB,GACxC,IAAIs6I,EAAQ,GACZH,GAAWE,WAAW98J,EAAS+8J,GAE/BH,GAAWK,UAAUF,EAAOt6I,EAChC,EAWA,IACI2tE,GAAa,OAGbC,GAAe,WAEfU,GAAetwF,EAAM7E,OAAO,CAC5BoF,KAAM,SAAS0D,EAAS1E,GACpBnH,KAAK6L,QAAUA,EACf7L,KAAKmH,QAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAASA,GAE5CnH,KAAK4M,SACT,EAEAA,QAAS,WACL5M,KAAKukK,YACT,EAEAA,WAAY,WACZ,EAEAl0J,KAAM,WACF,OAAOrQ,KAAK6L,QAAQyrF,SACxB,IAGJ0sE,GAAkB9rE,GAAc,CAC5B91F,KAAM,GACN4N,KAAM,OACNqkB,WAAY,OACZ8jE,KAAM,UACNC,UAAW,GACXjB,eAAgB,CAAE,OAAQ,aAAc,UAG5C,IAAIa,GAAeE,GAAan1F,OAAO,CACnCoF,KAAM,SAAS0D,EAAS1E,GACpB+wF,GAAanwF,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAAS1E,EAC7C,EAEAyF,QAAS,WAEL,IAAI2rF,EAAmBv4F,KAAK6L,QAAQwhB,UAAUziB,MAAM,KAAKurB,MAAK,SAAU/wB,GAAK,OAAOA,EAAEy7B,WAAW02D,GAAa,IAC1GlqE,EAAYrtB,KAAKmH,QAAQmxF,KAAQ,IAAMt4F,KAAKmH,QAAQmxF,KAAKz3D,WAAW02D,IAAc,GAAKA,IAAev3F,KAAKmH,QAAY,KAAK,GAEhInH,KAAKq4F,WAAahrE,EAElBhI,EAASrlB,KAAK6L,QA/CV,UAgDJwZ,EAASrlB,KAAK6L,QA9CN,eA+CRkhB,EAAY/sB,KAAK6L,QAAS0sF,GAC1BlzE,EAASrlB,KAAK6L,QAASwhB,GACvBhI,EAASrlB,KAAK6L,QAAS7L,KAAKmH,QAAQixF,WAAa,IAEjDF,GAAanwF,GAAG6E,QAAQrC,KAAKvK,KACjC,IAGJgkK,GAAkBhsE,GAAc,CAC5B51F,KAAM,eACNk2F,KAAM,OAGV,IAAIR,GAAcI,GAAan1F,OAAO,CAClCoF,KAAM,SAAS0D,EAAS1E,GAEpB0E,EAAQkT,UAAY,GAEpBm5E,GAAanwF,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAAS1E,EAC7C,EAEAyF,QAAS,WACL,IAAI0rF,EAAOt4F,KAAKmH,QAAQmxF,KACpBF,EAAYp4F,KAAKmH,QAAQixF,UACzBG,EAAmBv4F,KAAK6L,QAAQwhB,UAAUziB,MAAM,KAAKurB,MAAK,SAAU/wB,GAAK,OAAOA,EAAEy7B,WAAW22D,GAAe,IAEhH,IAAKc,GAAQF,EAAW,CAEpB,IACIO,EAAgBP,EAAU1nF,MADlB,sBAERioF,IACAL,EAAOK,EAAc,GACrBP,EAAYA,EAAU31F,QAAQk2F,EAAc,GAAI,IAExD,CAEI/vF,GAAS0vF,KACTA,EAAOA,EAAK71F,QAAQ,OAAQ,IAAIA,QAAQ,OAAO,SAAU2C,GAAK,OAAOA,EAAE,GAAGkK,aAAe,IACzFgpF,EAAOt4F,KAAKmH,QAAQyxF,SAASN,IAASt4F,KAAKmH,QAAQyxF,SAAUN,EAAO,SAGxE,IAAIjrE,EAAYirE,GAAQA,EAAKl2F,KAAQ,GAAKo1F,GAAgBc,EAAS,KAAK,GASxE,GARAt4F,KAAKq4F,WAAahrE,EAElBhI,EAASrlB,KAAK6L,QA1FP,cA2FPkhB,EAAY/sB,KAAK6L,QAAS0sF,GAC1BlzE,EAASrlB,KAAK6L,QAASwhB,GACvBhI,EAASrlB,KAAK6L,QAASusF,GAAa,IACpCp4F,KAAK6L,QAAQ8Z,aAAa,cAAe,QAErC2yE,GAAQ3wF,GAAc2wF,GAAO,CAC7B,IAAIksE,EAAa70J,SAAS80J,gBAAgB,6BAA8B,OACxED,EAAW7+I,aAAa,UAAW2yE,EAAKO,SAAW,IACnD2rE,EAAW7+I,aAAa,YAAa,SACrC6+I,EAAWzlJ,UAAYu5E,EAAK3xC,SAAW,GAEvC3mD,KAAK6L,QAAQoT,YAAYulJ,EAC7B,CAEAtsE,GAAanwF,GAAG6E,QAAQrC,KAAKvK,KACjC,IAGJgkK,GAAkBlsE,GAAa,CAC3B11F,KAAM,cACNk2F,KAAM,KACNM,SAAU,CAAC,IAGf,IAAIhB,GAAa,CACbC,IAAOC,GACPC,KAAQC,IA+BZ,SAAS0sE,GAAkB95H,GAIvB,IAHA,IAAIl0B,EAAM0gH,EACNj+G,EAAM2nJ,EAEDl3J,EAAM,EAAGpC,EAASojC,EAAIpjC,OAAQoC,EAAMpC,EAAQoC,IAAO,CACxD,IAAIlB,EAAQkiC,EAAIhhC,GACF,OAAVlB,GAAkB0J,SAAS1J,KAC3BgO,EAAMrT,KAAKqT,IAAIA,EAAKhO,GACpByQ,EAAM9V,KAAK8V,IAAIA,EAAKzQ,GAE5B,CAEA,MAAO,CACHgO,IAAKA,IAAQ0gH,OAAYunB,EAAYjoI,EACrCyC,IAAKA,IAAQ2nJ,OAAYniB,EAAYxlI,EAE7C,CAWA,IAAI0gH,GAAS8H,EAAS9H,OAClBa,GAAe,iBAYnB,SAASC,GAAgB9uH,GACrB,IAAI8nC,EAAY9jC,iBAAiBhE,GAAS8nC,UAE1C,MAAkB,SAAdA,EACOkmF,GAAOM,OAdtB,SAAqBS,GACjB,IAAIlqH,EAAQkqH,EAAalqH,MAAMgqH,IAC/B,GAAc,OAAVhqH,GAAmC,IAAjBA,EAAMlJ,OACxB,OAAOqyH,GAAOM,OAGlB,IAAI/qG,EAAU1e,EAAM,GAAG9F,MAAM,KAAKiQ,KAAI,SAAUzV,GAAK,OAAO2D,WAAW3D,EAAI,IAC3E,OAAO,IAAKwL,SAASvI,UAAUmB,KAAKpB,MAAOyxH,GAAQ,CAAE,MAAOz7G,OAAQgR,IACxE,CASWyrG,CAAYlnF,EACvB,CAmBA,SAASgxH,GAAc1zC,GAEnB,OADa,IAAItwH,MAAMqyH,MAAM/B,GAAO2C,SAEzBytC,EAGJf,CACX,CAEA,IAAIsE,GAAU,CAAC,EAEXC,GAAYj9J,EAAM7E,OAAO,CACzBoF,KAAM,SAASkR,GAGXrZ,KAAK8kK,OAAS,CAAC,EACf9kK,KAAK+kK,QAAU1rJ,EAASA,EAAOxS,MAAM,GAAK,GAE1C,IAAK,IAAIU,EAAI,EAAGA,EAAIvH,KAAK+kK,QAAQv9J,OAAQD,IAL1BvH,KAMF8kK,OANE9kK,KAMc+kK,QAAQx9J,IAAMA,CAE/C,EAEA8R,OAAQ,WACJ,OAAOrZ,KAAK+kK,QAAQx1I,QAAO,SAAU4f,GAAQ,OAAOA,IAASy1H,EAAS,GAC1E,EAEAI,IAAK,SAASt8J,GACV,YAA8Bi2I,IAAvB3+I,KAAK8kK,OAAOp8J,EACvB,EAEA8E,IAAK,SAAS9E,GACL1I,KAAKglK,IAAIt8J,KACV1I,KAAK8kK,OAAOp8J,GAAS1I,KAAK+kK,QAAQv9J,OAClCxH,KAAK+kK,QAAQpjK,KAAK+G,GAE1B,EAEAu8J,OAAQ,SAASv8J,GACb,IAAI4Q,EAAQtZ,KAAK8kK,OAAOp8J,QACVi2I,IAAVrlI,IACAtZ,KAAK+kK,QAAQzrJ,GAASsrJ,UACf5kK,KAAK8kK,OAAOp8J,GAE3B,EAEA8tD,MAAO,WACHx2D,KAAK8kK,OAAS,CAAC,EACf9kK,KAAK+kK,QAAU,EACnB,IAGAtkK,OAAOs8H,kBACPt8H,OAAOs8H,iBAAiB8nC,GAAU98J,GAAI,CAClCiI,KAAM,CACFigB,IAAK,WACD,OAAOjwB,KAAK+kK,QAAQv9J,MACxB,KAKZ,IAAI09J,GAAat9J,EAAM7E,OAAO,CAC1BoF,KAAM,SAASkR,GACXrZ,KAAK4tD,KAAO,IAAIu3G,IAAI9rJ,EACxB,EAEAA,OAAQ,WACJ,OAAOnW,MAAM6Y,KAAK/b,KAAK4tD,KAC3B,EAEAo3G,IAAK,SAASt8J,GACV,OAAO1I,KAAK4tD,KAAKo3G,IAAIt8J,EACzB,EAEA8E,IAAK,SAAS9E,GACV1I,KAAK4tD,KAAKpgD,IAAI9E,EAClB,EAEAu8J,OAAQ,SAASv8J,GACb1I,KAAK4tD,KAAKq3G,OAAOv8J,EACrB,EAEA8tD,MAAO,WACHx2D,KAAK4tD,KAAK4I,OACd,IAGA/1D,OAAOs8H,kBACPt8H,OAAOs8H,iBAAiBmoC,GAAWn9J,GAAI,CACnCiI,KAAM,CACFigB,IAAK,WACD,OAAOjwB,KAAK4tD,KAAK59C,IACrB,KA0DZ,IAAIo1J,GAAWx9J,EAAM7E,OAAO,CACxBoF,KAAM,WACFnI,KAAKgM,OAAS,EACdhM,KAAK+L,MAAQ,EACb/L,KAAKoO,KAAO,EAChB,EAEAhH,MAAO,WACH,IAAIpC,EAAI,IAAIogK,GAIZ,OAHApgK,EAAEgH,OAAShM,KAAKgM,OAChBhH,EAAE+G,MAAQ/L,KAAK+L,MACf/G,EAAEoJ,KAAOpO,KAAKoO,KAAKyM,KAAI,SAAUwqJ,GAAO,OAAOA,EAAIx+J,OAAS,IACrD7B,CACX,EAEAirB,IAAK,SAASo1I,EAAKC,GACf,IAAIC,EAAOvlK,KAAKoO,KAAKi3J,GAErB,OADUE,EAAOA,EAAKD,GAAO,IAEjC,EAEAp1I,IAAK,SAASm1I,EAAKC,EAAKl3J,GACpB,IAAIm3J,EAAOvlK,KAAKoO,KAAKi3J,GACT,MAARE,IACAA,EAAOvlK,KAAKoO,KAAKi3J,GAAO,IAE5BE,EAAKD,GAAOl3J,EACRi3J,GAAOrlK,KAAKgM,SACZhM,KAAKgM,OAASq5J,EAAM,GAEpBC,GAAOtlK,KAAK+L,QACZ/L,KAAK+L,MAAQu5J,EAAM,EAE3B,EAEAtiK,KAAM,SAASwqD,EAAGg4G,GAGd,IAFA,IAESH,EAAM,EAAGA,EAAMrlK,KAAKgM,SAAUq5J,EACnC,IAAK,IAAIC,EAAM,EAAGA,EAAMtlK,KAAK+L,QAASu5J,EAAK,CACvC,IAAI11I,EAJG5vB,KAIYiwB,IAAIo1I,EAAKC,GAC5B,IAAIE,GAAuB,MAAP51I,SAEJ+uH,KADZ/uH,EAAM49B,EAAE59B,EAAKy1I,EAAKC,IAEd,OAAO11I,CAGnB,CAER,EAEA/U,IAAK,SAAS2yC,EAAGg4G,GACb,IAAIxgK,EAAI,IAAIogK,GAIZ,OAHAplK,KAAKgD,MAAK,SAASwqB,EAAI63I,EAAKC,GACxBtgK,EAAEkrB,IAAIm1I,EAAKC,EAAK93G,EAAEhgC,EAAI63I,EAAKC,GAC/B,GAAGE,GACIxgK,CACX,EAEAygK,UAAW,WACP,IAAIzgK,EAAI,IAAIogK,GAIZ,OAHAplK,KAAKgD,MAAK,SAASwqB,EAAI63I,EAAKC,GACxBtgK,EAAEkrB,IAAIo1I,EAAKD,EAAK73I,EACpB,IACOxoB,CACX,EAEAm1H,KAAM,SAASvH,GACX5yH,KAAK+L,MAAQ/L,KAAKgM,OAAS4mH,EAE3B,IADA,IAAI1tH,EAAIlF,KAAKoO,KAAO,IAAIlL,MAAM0vH,GACrBrrH,EAAIqrH,IAAKrrH,GAAK,GAEnB,IADA,IAAI89J,EAAMngK,EAAEqC,GAAK,IAAIrE,MAAM0vH,GAClB7nF,EAAI6nF,IAAK7nF,GAAK,GACnBs6H,EAAIt6H,GAAKxjC,IAAMwjC,EAAI,EAAI,EAG/B,OAAO/qC,IACX,EAEA8+H,SAAU,SAAS7iH,GAGf,IAFA,IAAI/W,EAAIlF,KACJgF,EAAI,IAAIogK,GACHC,EAAM,EAAGA,EAAMngK,EAAE8G,SAAUq5J,EAChC,IAAK,IAAIC,EAAM,EAAGA,EAAMrpJ,EAAElQ,QAASu5J,EAAK,CAEpC,IADA,IAAIrgK,EAAI,EACCsC,EAAI,EAAGA,EAAIrC,EAAE6G,QAASxE,EAAG,CAC9B,IAAIm+J,EAAKxgK,EAAE+qB,IAAIo1I,EAAK99J,GAChBo+J,EAAK1pJ,EAAEgU,IAAI1oB,EAAG+9J,GACA,iBAAPI,GAAiC,iBAAPC,IACjC1gK,GAAKygK,EAAKC,EAElB,CACA3gK,EAAEkrB,IAAIm1I,EAAKC,EAAKrgK,EACpB,CAEJ,OAAOD,CACX,EAEA4gK,QAAS,WA2BL,IA1BA,IAAIhzC,EAAI5yH,KAAK+L,MACT/G,EAAIhF,KAAK6lK,SAAQ,IAAIT,IAAWjrC,KAAKvH,IACrC1tH,EAAIF,EAAEoJ,KAMNkoI,EAAO,SAAWxxI,GAClB,IAAIghK,EAoEhB,SAAgBhwJ,EAAOnK,EAAK6hD,GAExB,IADA,IAAIr0C,EAAMq0C,EAAE13C,GAAQu/E,EAAMv/E,EACjBvO,EAAIuO,EAAQ,EAAGvO,EAAIoE,EAAKpE,IAAK,CAClC,IAAIyK,EAAIw7C,EAAE13C,GACN9D,EAAImH,IACJA,EAAMnH,EACNqjF,EAAMv/E,EAEd,CACA,OAAOu/E,CACX,CA9EuB0wE,CAAOjhK,EAAG8tH,GAAG,SAASrrH,GAAK,OAAOrC,EAAEqC,GAAGzC,EAAI,IACtD,IAAKI,EAAE4gK,GAAMhhK,GACT,MAAO,CAAEkN,EAAG,MAEhB,GAAIlN,IAAMghK,EAAM,CACZ,IAAIntH,EAAMzzC,EAAEJ,GACZI,EAAEJ,GAAKI,EAAE4gK,GACT5gK,EAAE4gK,GAAQntH,CACd,CACA,IAAK,IAAIpxC,EAAIzC,EAAI,EAAGyC,EAAIqrH,IAAKrrH,EAAG,CAC5B,IAAK,IAAIwjC,EAAIjmC,EAAI,EAAGimC,EAAI,EAAI6nF,IAAK7nF,EAC7B7lC,EAAEqC,GAAGwjC,IAAM7lC,EAAEJ,GAAGimC,GAAK7lC,EAAEqC,GAAGzC,GAAKI,EAAEJ,GAAGA,GAExCI,EAAEqC,GAAGzC,GAAK,CACd,CACJ,EAESA,EAAI,EAAGA,EAAI8tH,IAAK9tH,EAAG,CACxB,IAAIkhK,EAAW1vB,EAAMxxI,GAErB,GAAKkhK,EAAW,OAAOA,EAASh0J,CACpC,CAGA,IAAK,IAAIi0J,EAAM,EAAGA,EAAMrzC,IAAKqzC,EACzB,IAAK,IAAIz4G,EAAItoD,EAAE+gK,GAAKA,GAAMC,EAAM,EAAGA,EAAM,EAAItzC,IAAKszC,EAC9ChhK,EAAE+gK,GAAKC,IAAQ14G,EAOvB,IAAK,IAAI24G,EAAMvzC,IAAKuzC,GAAO,GACvB,IAAK,IAAIC,EAAMD,IAAOC,GAAO,GACzB,GAAIlhK,EAAEkhK,GAAKD,GACP,IAAK,IAAIE,EAAM,EAAIzzC,IAAKyzC,GAAOzzC,GAC3B1tH,EAAEkhK,GAAKC,IAAQnhK,EAAEihK,GAAKE,GAAOnhK,EAAEkhK,GAAKD,GAMpD,OAAOnhK,EAAE6B,MAAM,EAAG+rH,EAAGA,EAAGA,EAC5B,EAEAizC,QAAS,SAAS7gK,GACd,IAAIo2B,EAAMp7B,KAAKoH,QACXwrH,EAAIx3F,EAAIrvB,MAIZ,OAHA/G,EAAEhC,MAAK,SAAS4sB,EAAKy1I,EAAKC,GACtBlqI,EAAIlL,IAAIm1I,EAAKC,EAAM1yC,EAAGhjG,EAC1B,IACOwL,CACX,EAEAv0B,MAAO,SAASw+J,EAAKC,EAAKt5J,EAAQD,GAI9B,IAHA,IAEI/G,EAAI,IAAIogK,GACH79J,EAAI,EAAGA,EAAIyE,IAAUzE,EAC1B,IAAK,IAAIwjC,EAAI,EAAGA,EAAIh/B,IAASg/B,EACzB/lC,EAAEkrB,IAAI3oB,EAAGwjC,EALF/qC,KAKciwB,IAAIo1I,EAAM99J,EAAG+9J,EAAMv6H,IAGhD,OAAO/lC,CACX,IAeJ,IAAIshK,GAAW,SACXrgK,GAAW,WAEXkD,GAAiB,WACjBnJ,KAAKoJ,mBAAoB,CAC7B,EAEIC,GAAqB,WACrB,OAAkC,IAA3BrJ,KAAKoJ,iBAChB,EAEI6tI,GAAiB,SAAUnhB,GAC3B,SAASmhB,IACLnhB,EAASvrH,KAAKvK,MACdA,KAAKuJ,QAAU,CAAC,CACpB,CA0JA,OAxJKusH,IAAWmhB,EAAc/jH,UAAY4iG,GAC1CmhB,EAAc5uI,UAAY5H,OAAO2mD,OAAQ0uE,GAAYA,EAASztH,WAC9D4uI,EAAc5uI,UAAUC,YAAc2uI,EAEtCA,EAAc5uI,UAAUrG,QAAU,WAC9BhC,KAAKiK,QACT,EAEAgtI,EAAc5uI,UAAUmB,KAAO,SAAe2W,EAAOzW,EAAUC,GAC3D,IACIC,EAEApC,EACAqC,EACAC,EALA7B,EAAOjI,KAEP+J,SAAoBoW,IAAUmmJ,GAAW,CAACnmJ,GAASA,GAAS,GAI5DnW,SAA4BN,IAAazD,GAG7C,QAAiB04I,IAAbj1I,EAAwB,CACxB,IAAKE,KAAOuW,EACRlY,EAAKuB,KAAKI,EAAKuW,EAAMvW,IAGzB,OAAO3B,CACX,CAGA,IAAIquI,EAAO,WACP,IAAI7sI,EAAYM,EAAWH,IAE3BE,EAAUE,EAAqBN,EAAWA,EAASD,MAG3CE,IACAE,EAAWC,EACXA,EAAU,WACN7B,EAAKgC,OAAOR,EAAWK,GACvBD,EAASzB,MAAMH,EAAMX,UACzB,EAEAwC,EAAQD,SAAWA,IAGd5B,EAAKsB,QAAQE,GAAaxB,EAAKsB,QAAQE,IAAc,IACvD9H,KAAKmI,GAEpB,EAEA,IAAKF,EAAM,EAAGpC,EAASuC,EAAWvC,OAAQoC,EAAMpC,EAAQoC,IAAO0sI,IAG/D,OAAOruI,CACX,EAEAgvI,EAAc5uI,UAAUsB,IAAM,SAAcI,EAAYL,GACpD,OAAO1J,KAAKwJ,KAAKO,EAAYL,GAAU,EAC3C,EAEAutI,EAAc5uI,UAAU6B,MAAQ,SAAgBT,EAAWC,GACvD,IACIE,EAEApC,EACAsC,EAJA7B,EAAOjI,KAEP+J,SAAoBN,IAAc68J,GAAW,CAAC78J,GAAaA,EAG3DO,SAA4BN,IAAazD,GAG7C,IAAK2D,EAAM,EAAGpC,EAASuC,EAAWvC,OAAQoC,EAAMpC,EAAQoC,IAAO,CAC3D,IAAI28J,EAAcx8J,EAAWH,IAE7BE,EAAUE,EAAqBN,EAAWA,EAAS68J,MAGtCt+J,EAAKsB,QAAQg9J,GAAet+J,EAAKsB,QAAQg9J,IAAgB,IAC3Dp8J,QAAQL,EAEvB,CAEA,OAAO7B,CACX,EAEAgvI,EAAc5uI,UAAU+B,QAAU,SAAkBX,EAAW+8J,GAC3D,IAEI58J,EACApC,EAHAS,EAAOjI,KACPqK,EAASpC,EAAKsB,QAAQE,GAI1B,GAAIY,EAAQ,CACR,IAAI1F,EAAI6hK,GAAa,CAAC,EAYtB,IAVA7hK,EAAE2F,OAASrC,EAEXtD,EAAEyE,mBAAoB,EAEtBzE,EAAEwE,eAAiBA,GAEnBxE,EAAE0E,mBAAqBA,GAIlBO,EAAM,EAAGpC,GAFd6C,EAASA,EAAOxD,SAEcW,OAAQoC,EAAMpC,EAAQoC,IAChDS,EAAOT,GAAKW,KAAKtC,EAAMtD,GAG3B,OAA+B,IAAxBA,EAAEyE,iBACb,CAEA,OAAO,CACX,EAEA6tI,EAAc5uI,UAAU4B,OAAS,SAAiBR,EAAWK,GACzD,IAEIF,EAFA3B,EAAOjI,KACPqK,EAASpC,EAAKsB,QAAQE,GAG1B,QAAkBk1I,IAAdl1I,EACAxB,EAAKsB,QAAU,CAAC,OACb,GAAIc,EACP,GAAIP,EACA,IAAKF,EAAMS,EAAO7C,OAAS,EAAGoC,GAAO,EAAGA,IAChCS,EAAOT,KAASE,GAAWO,EAAOT,GAAKC,WAAaC,GACpDO,EAAOG,OAAOZ,EAAK,QAI3B3B,EAAKsB,QAAQE,GAAa,GAIlC,OAAOxB,CACX,EAEAgvI,EAAc5uI,UAAU+pB,WAAa,SAAqBjrB,GAKtD,IAJA,IAAI8rH,EAAWjzH,KAEXwH,GAAUxH,KAAKqK,QAAU,IAAI7C,OAExBoC,EAAM,EAAGA,EAAMpC,EAAQoC,IAAQ,CACpC,IAAIjF,EAAIsuH,EAAS5oH,OAAOT,GAEpBqpH,EAAS9rH,QAAQxC,IAAMwC,EAAQxC,KAC/BsuH,EAAShpH,OAAOtF,EAAGsuH,EAAS9rH,QAAQxC,IAEhCsuH,EAAS1pH,SAAW0pH,EAAS1pH,QAAQ5E,WAC9BsuH,EAAS1pH,QAAQ5E,GAGpC,CAEA3E,KAAKwJ,KAAKxJ,KAAKqK,OAAQlD,EAC3B,EAEO8vI,CACX,CA/JoB,CA+JlBrvI,GAEF,SAAS6+J,GAAc/vJ,EAAKyC,GACxB,IAAI4lB,EAAOzoB,GAAM6C,EAAMzC,EAAKiqJ,EAAoB,GAEhD,GAAa,IAAT5hI,EAAY,CACZ,GAAY,IAAR5lB,EACA,MAAO,GAGX4lB,EAAO17B,KAAKoU,IAAI0B,EACpB,CAEA,IAAI42B,EAAQ1sC,KAAKwmC,IAAI,GAAIxmC,KAAKyN,MAAMzN,KAAK8tB,IAAI4N,GAAQ17B,KAAK8tB,IAAI,MAC1Du1I,EAAgBpwJ,GAAOyoB,EAAOgR,EAAQ4wH,GAa1C,OAAOrqJ,GAAMy5B,GAVT22H,EAAgB,SACE,GACXA,EAAgB,SACL,GACXA,EAAgB,SACL,EAEA,GAGgB/F,EAC1C,CAEA,IAAI7kC,GAAQl0H,EAAM7E,OAAO,CACrBoF,KAAM,SAAS/C,EAAGjB,GAEdnE,KAAKoF,EAAIA,GAAK,EACdpF,KAAKmE,EAAIA,GAAK,CAClB,EAEAiD,MAAO,WACH,OAAO,IAAI00H,GAAM97H,KAAKoF,EAAGpF,KAAKmE,EAClC,EAEAgtD,OAAQ,SAASgrE,GACb,OAAOA,GAASn8H,KAAKoF,IAAM+2H,EAAM/2H,GAAKpF,KAAKmE,IAAMg4H,EAAMh4H,CAC3D,EAEAgtC,OAAQ,SAASotC,EAAQu6C,GACrB,IAAI6tC,EAAQ9tC,GAAIC,GACZ8tC,EAAOvjK,KAAKg3H,IAAIssC,GAChBE,EAAOxjK,KAAKi3H,IAAIqsC,GAChB5gC,EAAKxnD,EAAOn5E,EACZ4gI,EAAKznD,EAAOp6E,EAEZiB,EADMpF,KACEoF,EACRjB,EAFMnE,KAEEmE,EAYZ,OAVAnE,KAAKoF,EAAIkR,GACLyvH,GAAM3gI,EAAI2gI,GAAM6gC,GAAQziK,EAAI6hI,GAAM6gC,EAxvCxB,GA4vCd7mK,KAAKmE,EAAImS,GACL0vH,GAAM7hI,EAAI6hI,GAAM4gC,GAAQxhK,EAAI2gI,GAAM8gC,EA7vCxB,GAiwCP7mK,IACX,EAEA8+H,SAAU,SAAS55H,GAKf,OAHAlF,KAAKoF,GAAKF,EACVlF,KAAKmE,GAAKe,EAEHlF,IACX,EAEAs8H,WAAY,SAASH,GACjB,IAAI99C,EAAKr+E,KAAKoF,EAAI+2H,EAAM/2H,EACpBk5E,EAAKt+E,KAAKmE,EAAIg4H,EAAMh4H,EAExB,OAAOd,KAAKo7E,KAAKJ,EAAKA,EAAKC,EAAKA,EACpC,IAGJw9C,GAAMgrC,SAAW,SAASvoF,EAAQ67C,EAAO9tG,GACrC,IAAIirG,EAAUsB,GAAIuB,GAElB,OAAO,IAAI0B,GACPv9C,EAAOn5E,EAAIknB,EAASjpB,KAAKg3H,IAAI9C,GAC7Bh5C,EAAOp6E,EAAImoB,EAASjpB,KAAKi3H,IAAI/C,GAErC,EAEA,IAAIwvC,GAAMn/J,EAAM7E,OAAO,CACnBoF,KAAM,SAAS81E,EAAIC,EAAIC,EAAIC,GAEvBp+E,KAAKi+E,GAAKA,GAAM,EAChBj+E,KAAKk+E,GAAKA,GAAM,EAChBl+E,KAAKm+E,GAAKA,GAAM,EAChBn+E,KAAKo+E,GAAKA,GAAM,CACpB,EAEAjtB,OAAQ,SAAS7X,GACb,OAAOt5C,KAAKi+E,KAAO3kC,EAAI2kC,IAAMj+E,KAAKm+E,KAAO7kC,EAAI6kC,IACzCn+E,KAAKk+E,KAAO5kC,EAAI4kC,IAAMl+E,KAAKo+E,KAAO9kC,EAAI8kC,EAC9C,EAEAryE,MAAO,WACH,OAAO/L,KAAKm+E,GAAKn+E,KAAKi+E,EAC1B,EAEAjyE,OAAQ,WACJ,OAAOhM,KAAKo+E,GAAKp+E,KAAKk+E,EAC1B,EAEA9tC,UAAW,SAASiuC,EAAIC,GAMpB,OALAt+E,KAAKi+E,IAAMI,EACXr+E,KAAKm+E,IAAME,EACXr+E,KAAKk+E,IAAMI,EACXt+E,KAAKo+E,IAAME,EAEJt+E,IACX,EAEA06B,KAAM,SAASt1B,EAAGjB,GACd,IAAI6H,EAAShM,KAAKgM,SACdD,EAAQ/L,KAAK+L,QAYjB,OAVI+qH,GAAQ1xH,KACRpF,KAAKi+E,GAAK74E,EACVpF,KAAKm+E,GAAKn+E,KAAKi+E,GAAKlyE,GAGpB+qH,GAAQ3yH,KACRnE,KAAKk+E,GAAK/5E,EACVnE,KAAKo+E,GAAKp+E,KAAKk+E,GAAKlyE,GAGjBhM,IACX,EAEA2sB,KAAM,SAASq6I,GAMX,OALAhnK,KAAKi+E,GAAK56E,KAAKqT,IAAI1W,KAAKi+E,GAAI+oF,EAAU/oF,IACtCj+E,KAAKk+E,GAAK76E,KAAKqT,IAAI1W,KAAKk+E,GAAI8oF,EAAU9oF,IACtCl+E,KAAKm+E,GAAK96E,KAAK8V,IAAInZ,KAAKm+E,GAAI6oF,EAAU7oF,IACtCn+E,KAAKo+E,GAAK/6E,KAAK8V,IAAInZ,KAAKo+E,GAAI4oF,EAAU5oF,IAE/Bp+E,IACX,EAEAinK,UAAW,SAAS9qC,GAChB,IAAI+qC,EAAajkK,EAAQk5H,GACrB/2H,EAAI8hK,EAAa/qC,EAAM,GAAKA,EAAM/2H,EAClCjB,EAAI+iK,EAAa/qC,EAAM,GAAKA,EAAMh4H,EAGtC,OAFAnE,KAAK2sB,KAAK,IAAIo6I,GAAI3hK,EAAGjB,EAAGiB,EAAGjB,IAEpBnE,IACX,EAEAmnK,OAAQ,SAASH,EAAW7hI,GAYxB,OAVIA,IAAS9/B,GAAM8/B,IACfnlC,KAAKi+E,GAAK+oF,EAAU/oF,GACpBj+E,KAAKm+E,GAAK6oF,EAAU7oF,IAGpBh5C,IAAS5vB,GAAM4vB,IACfnlC,KAAKk+E,GAAK8oF,EAAU9oF,GACpBl+E,KAAKo+E,GAAK4oF,EAAU5oF,IAGjBp+E,IACX,EAEAonK,QAAS,SAASJ,EAAW70E,GACzB,IAAInmF,EAAShM,KAAKgM,SACdD,EAAQ/L,KAAK+L,QACbo5B,EAAOgtD,IAAWjB,GAAOiB,IAAWhB,EAAS57E,EAAIlQ,EACjDyY,EAASqnB,IAAS5vB,EAAIvJ,EAASD,EAEnC,GAAIomF,IAAWlB,EAAQ,CACnB,IAAIo2E,EAAeL,EAAUzoF,SACzBA,EAASv+E,KAAKu+E,SAElBv+E,KAAKi+E,IAAMopF,EAAajiK,EAAIm5E,EAAOn5E,EACnCpF,KAAKk+E,IAAMmpF,EAAaljK,EAAIo6E,EAAOp6E,CACvC,MACInE,KAAKmlC,EAAO,GADLgtD,IAAWjB,GAAOiB,IAAW/mE,EACnB47I,EAAU7hI,EAAO,GAAKrnB,EAEtBkpJ,EAAU7hI,EAAO,GAMtC,OAHAnlC,KAAKm+E,GAAKn+E,KAAKi+E,GAAKlyE,EACpB/L,KAAKo+E,GAAKp+E,KAAKk+E,GAAKlyE,EAEbhM,IACX,EAEAsnK,OAAQ,SAASC,EAAIC,GAKjB,OAHAxnK,KAAKm+E,IAAMopF,EACXvnK,KAAKo+E,IAAMopF,EAEJxnK,IACX,EAEAi+H,OAAQ,SAASspC,EAAIC,GAEjB,OADAxnK,KAAKsnK,QAAQC,GAAKC,GACXxnK,IACX,EAEAwL,IAAK,SAASwsI,GACV,IAAIxG,EAAU0xB,GAAWlrB,GAOzB,OALAh4I,KAAKi+E,IAAMuzD,EAAQhlH,KACnBxsB,KAAKm+E,IAAMqzD,EAAQ/kH,MACnBzsB,KAAKk+E,IAAMszD,EAAQtsH,IACnBllB,KAAKo+E,IAAMozD,EAAQ9kH,OAEZ1sB,IACX,EAEAynK,MAAO,SAASzvB,GACZ,IAAIxG,EAAU0xB,GAAWlrB,GAOzB,OALAxG,EAAQhlH,MAAQglH,EAAQhlH,KACxBglH,EAAQtsH,KAAOssH,EAAQtsH,IACvBssH,EAAQ/kH,OAAS+kH,EAAQ/kH,MACzB+kH,EAAQ9kH,QAAU8kH,EAAQ9kH,OAEnB1sB,KAAKwL,IAAIgmI,EACpB,EAEApqI,MAAO,WACH,OAAO,IAAI2/J,GAAI/mK,KAAKi+E,GAAIj+E,KAAKk+E,GAAIl+E,KAAKm+E,GAAIn+E,KAAKo+E,GACnD,EAEAG,OAAQ,WACJ,OAAO,IAAIu9C,GACP97H,KAAKi+E,GAAKj+E,KAAK+L,QAAU,EACzB/L,KAAKk+E,GAAKl+E,KAAKgM,SAAW,EAElC,EAEAmyH,cAAe,SAAShC,GAEpB,OAAOA,EAAM/2H,GAAKpF,KAAKi+E,IAAMk+C,EAAM/2H,GAAKpF,KAAKm+E,IACtCg+C,EAAMh4H,GAAKnE,KAAKk+E,IAAMi+C,EAAMh4H,GAAKnE,KAAKo+E,EACjD,EAEAglD,OAAQ,WACJ,MAAO,CACH,IAAItH,GAAM97H,KAAKi+E,GAAIj+E,KAAKk+E,IACxB,IAAI49C,GAAM97H,KAAKm+E,GAAIn+E,KAAKk+E,IACxB,IAAI49C,GAAM97H,KAAKm+E,GAAIn+E,KAAKo+E,IACxB,IAAI09C,GAAM97H,KAAKi+E,GAAIj+E,KAAKo+E,IAEhC,EAEAspF,QAAS,WACL,MAAO,CAAE1nK,KAAKi+E,GAAIj+E,KAAKk+E,GAAIl+E,KAAKm+E,GAAIn+E,KAAKo+E,IAAKvzE,KAAK,IACvD,EAEA88J,SAAU,SAASruH,GACf,QAASA,EAAI8kC,GAAKp+E,KAAKk+E,IAAMl+E,KAAKo+E,GAAK9kC,EAAI4kC,IAAM5kC,EAAI6kC,GAAKn+E,KAAKi+E,IAAMj+E,KAAKm+E,GAAK7kC,EAAI2kC,GACvF,EAEA9sC,OAAQ,SAAS4I,GACb,IAAIhuC,EAAQ/L,KAAK+L,QACbC,EAAShM,KAAKgM,SACdqmH,EAAMryH,KAAKu+E,SACXwnD,EAAK1T,EAAIjtH,EACT4gI,EAAK3T,EAAIluH,EAETyjK,EAAKC,GAAY,EAAG,EAAG9hC,EAAIC,EAAIjsF,GAC/B+tH,EAAKD,GAAY97J,EAAO,EAAGg6H,EAAIC,EAAIjsF,GACnCguH,EAAKF,GAAY97J,EAAOC,EAAQ+5H,EAAIC,EAAIjsF,GACxCiuH,EAAKH,GAAY,EAAG77J,EAAQ+5H,EAAIC,EAAIjsF,GAQxC,OANAhuC,EAAQ1I,KAAK8V,IAAIyuJ,EAAGxiK,EAAG0iK,EAAG1iK,EAAG2iK,EAAG3iK,EAAG4iK,EAAG5iK,GAAK/B,KAAKqT,IAAIkxJ,EAAGxiK,EAAG0iK,EAAG1iK,EAAG2iK,EAAG3iK,EAAG4iK,EAAG5iK,GACzE4G,EAAS3I,KAAK8V,IAAIyuJ,EAAGzjK,EAAG2jK,EAAG3jK,EAAG4jK,EAAG5jK,EAAG6jK,EAAG7jK,GAAKd,KAAKqT,IAAIkxJ,EAAGzjK,EAAG2jK,EAAG3jK,EAAG4jK,EAAG5jK,EAAG6jK,EAAG7jK,GAE1EnE,KAAKm+E,GAAKn+E,KAAKi+E,GAAKlyE,EACpB/L,KAAKo+E,GAAKp+E,KAAKk+E,GAAKlyE,EAEbhM,IACX,EAEAioK,OAAQ,WACJ,OAAO,IAAIhrC,EAAK,CAAEj9H,KAAKi+E,GAAIj+E,KAAKk+E,IAAM,CAAEl+E,KAAK+L,QAAS/L,KAAKgM,UAC/D,EAEAk8J,QAAS,WACL,OAAwB,IAAjBloK,KAAK+L,SAAmC,IAAlB/L,KAAKgM,QACtC,EAEAklI,MAAO,SAAS81B,EAAW7hI,EAAMuuG,GAC7B,IAAI1hB,EAAK7sF,EAAO,EACZ8sF,EAAK9sF,EAAO,EACZgjI,EAAWhjI,IAAS9/B,EAAImsC,EAAQC,EAChCzhC,EAAOhQ,KAAKmoK,KAEZ1yI,GAAQi+G,EAAW,CAAEtoH,EAAM8lE,KAC3BlxF,KAAKgyH,GAAMg1C,EAAUh1C,GACrBhyH,KAAKiyH,GAAMjyH,KAAKgyH,GAAMhiH,GACfylB,GAAQi+G,EAAW,CAAEpoH,EAAO6lE,KACnCnxF,KAAKiyH,GAAM+0C,EAAU/0C,GACrBjyH,KAAKgyH,GAAMhyH,KAAKiyH,GAAMjiH,GACf0jI,IAAcziD,IACrBjxF,KAAKgyH,GAAMg1C,EAAUh1C,IAAOg1C,EAAUmB,KAAcn4J,GAAQ,EAC5DhQ,KAAKiyH,GAAMjyH,KAAKgyH,GAAMhiH,EAE9B,IAGJ,SAAS63J,GAAYziK,EAAGjB,EAAG4hI,EAAIC,EAAI5L,GAC/B,IAAIusC,EAAQ9tC,GAAIuB,GAEhB,OAAO,IAAI0B,GACPiK,GAAM3gI,EAAI2gI,GAAM1iI,KAAKg3H,IAAIssC,IAAUxiK,EAAI6hI,GAAM3iI,KAAKi3H,IAAIqsC,GACtD3gC,GAAM5gI,EAAI2gI,GAAM1iI,KAAKi3H,IAAIqsC,IAAUxiK,EAAI6hI,GAAM3iI,KAAKg3H,IAAIssC,GAE9D,CAEA,IAAIyB,GAAOxgK,EAAM7E,OAAO,CACpBoF,KAAM,SAASo2E,EAAQ8pF,EAAa/7I,EAAQi2G,EAAYnI,GAEpDp6H,KAAKu+E,OAASA,EACdv+E,KAAKqoK,YAAcA,EACnBroK,KAAKssB,OAASA,EACdtsB,KAAKuiI,WAAaA,EAClBviI,KAAKo6H,MAAQA,CACjB,EAEAhzH,MAAO,WACH,OAAO,IAAIghK,GAAKpoK,KAAKu+E,OAAQv+E,KAAKqoK,YAAaroK,KAAKssB,OAAQtsB,KAAKuiI,WAAYviI,KAAKo6H,MACtF,EAEAkuC,OAAQ,WACJ,OAAOtoK,KAAKuiI,WAAaviI,KAAKo6H,MAAQ,CAC1C,EAEAiG,UAAW,SAASkoC,EAAWF,GAO3B,OANIA,EACAroK,KAAKqoK,YAAcE,EAEnBvoK,KAAKssB,OAASi8I,EAGXvoK,IACX,EAEAm8H,MAAO,SAAS/B,EAAOiuC,GACnB,IAAIG,EAAc3vC,GAAIuB,GAClBquC,EAAKplK,KAAKg3H,IAAImuC,GACdE,EAAKrlK,KAAKi3H,IAAIkuC,GACdl8I,EAAS+7I,EAAcroK,KAAKqoK,YAAcroK,KAAKssB,OAC/ClnB,EAAIkR,GAAMtW,KAAKu+E,OAAOn5E,EAAKqjK,EAAKn8I,EAriDtB,GAsiDVnoB,EAAImS,GAAMtW,KAAKu+E,OAAOp6E,EAAKukK,EAAKp8I,EAtiDtB,GAwiDd,OAAO,IAAIwvG,GAAM12H,EAAGjB,EACxB,EAEAwkK,YAAa,SAASnqF,EAAUzyE,EAAOC,GACnC,IAAI48J,EAAS5oK,KAAKoH,QAAQ62H,OAAOz/C,GAC7BqqF,EAAWD,EAAON,SAClBQ,EAAWF,EAAOzsC,MAAM0sC,GACxBE,EAAKh9J,EAAQ,EACbi9J,EAAKh9J,EAAS,EACdoqJ,EAAK/yJ,KAAKi3H,IAAIzB,GAAIgwC,IAClBI,EAAK5lK,KAAKg3H,IAAIxB,GAAIgwC,IAClBzjK,EAAI0jK,EAAS1jK,EAAI2jK,EACjB5kK,EAAI2kK,EAAS3kK,EAAI6kK,EAUrB,OARI3lK,KAAKoU,IAAI2+I,GAAM,KACfhxJ,GAAK2jK,GAAME,EAAK5lK,KAAKoU,IAAIwxJ,IAGzB5lK,KAAKoU,IAAIwxJ,GAAM,KACf9kK,GAAK6kK,GAAM5S,EAAK/yJ,KAAKoU,IAAI2+I,IAGtB,IAAI2Q,GAAI3hK,EAAGjB,EAAGiB,EAAI2G,EAAO5H,EAAI6H,EACxC,EAEAmyH,cAAe,SAAStL,GACpB,IAAIt0C,EAASv+E,KAAKu+E,OACd8pF,EAAcroK,KAAKqoK,YACnB/7I,EAAStsB,KAAKssB,OACdi2G,EAAaviI,KAAKuiI,WAClBC,EAAWxiI,KAAKuiI,WAAaviI,KAAKo6H,MAClC/7C,EAAKw0C,EAAEztH,EAAIm5E,EAAOn5E,EAClBk5E,EAAKu0C,EAAE1uH,EAAIo6E,EAAOp6E,EAClB+kK,EAAS,IAAIptC,GAAMz9C,EAAIC,GACvB8lD,EAAapkI,KAAKm8H,MAAMoG,GACxB4mC,EAAc,IAAIrtC,GAAMsI,EAAWh/H,EAAIm5E,EAAOn5E,EAAGg/H,EAAWjgI,EAAIo6E,EAAOp6E,GACvEs/H,EAAWzjI,KAAKm8H,MAAMqG,GACtB4mC,EAAY,IAAIttC,GAAM2H,EAASr+H,EAAIm5E,EAAOn5E,EAAGq+H,EAASt/H,EAAIo6E,EAAOp6E,GACjEklK,EAAO/yJ,GAAM+nE,EAAKA,EAAKC,EAAKA,EA9kDlB,GAglDd,OAAQ6qF,EAAYh4G,OAAO+3G,IAAWvG,EAAUwG,EAAaD,MACrDvG,EAAUyG,EAAWF,IACtBG,GAAQhB,EAAcA,GAAegB,GAAQ/8I,EAASA,CACjE,EAEAg9I,QAAS,WACL,IASIC,EAPAjwH,EAAM,IAAIytH,GAAI3vC,EAAWA,EAAW0pC,EAAWA,GAC/Cv+B,EAAajsH,GAAMtW,KAAKuiI,WAAa,KACrCC,EAAWlsH,IAAOisH,EAAaviI,KAAKo6H,OAAS,KAC7CiuC,EAAcroK,KAAKqoK,YACnBmB,EAAY,CAAE,EAAG,GAAI,IAAK,IAAKjnC,EAAYC,GAAWxmH,KAAKytJ,IAC3DC,EAAkBF,EAAU7zJ,QAAQ4sH,GACpConC,EAAgBH,EAAU7zJ,QAAQ6sH,GAIlC+mC,EADAhnC,IAAeC,EACNgnC,EAELE,EAAkBC,EACTH,EAAU3iK,MAAM6iK,EAAiBC,EAAgB,GAEjD,GAAGvrJ,OACRorJ,EAAU3iK,MAAM,EAAG8iK,EAAgB,GACnCH,EAAU3iK,MAAM6iK,EAAiBF,EAAUhiK,SAKvD,IAAK,IAAID,EAAI,EAAGA,EAAIgiK,EAAO/hK,OAAQD,IAAK,CACpC,IAAI40H,EAzBOn8H,KAyBUm8H,MAAMotC,EAAOhiK,IAClC+xC,EAAI2tH,UAAU9qC,GACd7iF,EAAI2tH,UAAU9qC,EAAOksC,EACzB,CAMA,OAJKA,GACD/uH,EAAI2tH,UAAUjnK,KAAKu+E,QAGhBjlC,CACX,EAEA2kF,OAAQ,SAASv1H,GAEb,OADA1I,KAAKssB,QAAU5jB,EACR1I,IACX,IAGJ,SAASypK,GAAgBvkK,EAAG+W,GACxB,OAAO/W,EAAI+W,CACf,CAEA,IAAI2tJ,GAASxB,GAAKrlK,OAAO,CACrBoF,KAAM,SAASo2E,EAAQjyD,EAAQi2G,EAAYnI,GACvCguC,GAAKrgK,GAAGI,KAAKoC,KAAKvK,KAAMu+E,EAAQ,EAAGjyD,EAAQi2G,EAAYnI,EAC3D,EAEA6D,OAAQ,SAASv1H,GACb,OAAO0/J,GAAKrgK,GAAGk2H,OAAO1zH,KAAKvK,KAAM0I,EACrC,EAEAtB,MAAO,WACH,OAAO,IAAIwiK,GAAO5pK,KAAKu+E,OAAQv+E,KAAKssB,OAAQtsB,KAAKuiI,WAAYviI,KAAKo6H,MACtE,EAEAiG,UAAW,SAASkoC,GAGhB,OAFAvoK,KAAKssB,OAASi8I,EAEPvoK,IACX,IAKA6pK,GAAejiK,EAAM7E,OAAO,CAC5B+mK,WAAY,SAASlB,EAAQzhK,GACzB,IAAIo7H,EAAaqmC,EAAOrmC,WAAa,IACjCC,EAAWomC,EAAOxuC,MAAQmI,GAGT,IAAjBqmC,EAAOxuC,OAAewuC,EAAOxuC,MAAQ,GAAKmI,IAAeC,KACzDA,GATU,MAYd,IAAIjkD,EAAS,IAAIojD,EAAS7F,MAAM8sC,EAAOrqF,OAAOn5E,EAAGwjK,EAAOrqF,OAAOp6E,GAC3DmoB,EAASjpB,KAAK8V,IAAIyvJ,EAAOt8I,OAAQ,GACjC+7I,EAAchlK,KAAK8V,IAAIyvJ,EAAOP,YAAa,GAC3C15B,EAAM,IAAIhN,EAASS,IAAI7jD,EAAQ,CAC/BgkD,WAAYA,EACZC,SAAUA,EACVH,QAAS/1G,EACTg2G,QAASh2G,IAETijB,EAAOg/F,EAAKyB,QAAQrB,EAAKxnI,GAASu+C,QAEtC,GAAI2iH,EAAa,CACb15B,EAAItM,QAAUsM,EAAIrM,QAAU+lC,EAC5B,IAAI0B,EAAWp7B,EAAIpO,QAAQiC,GAC3BjzF,EAAKs9F,OAAOk9B,EAAS3kK,EAAG2kK,EAAS5lK,GACjCorC,EAAKo/F,IAAInM,EAAUD,EAAY8lC,EAAaA,GAAa,EAC7D,MACI94H,EAAKs9F,OAAOtuD,EAAOn5E,EAAGm5E,EAAOp6E,GAGjC,OAAOorC,CACX,IAGJs6H,GAAa71J,QAAU,IAAI61J,GAE3B,IAAIG,GAAepiK,EAAM7E,OAAO,CAC5BoF,KAAM,SAAShB,GAEXnH,KAAKu1C,SAAW,GAEhBv1C,KAAKmH,QAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAASnH,KAAKiqK,gBAAgB9iK,GACrE,EAEA8iK,gBAAiB,SAAS9iK,GACtB,OAAOA,CACX,EAEAkrI,OAAQ,SAAS20B,GAIb,IAHA,IACI1tH,EADA/D,EAAWv1C,KAAKu1C,SAGXhuC,EAAI,EAAGA,EAAIguC,EAAS/tC,OAAQD,IAAK,CACtC,IAAI2iK,EAAe30H,EAAShuC,GAC5B2iK,EAAa73B,OAAO20B,GAEpB1tH,EAAMA,EAAMA,EAAI3sB,KAAKu9I,EAAa5wH,KAAO4wH,EAAa5wH,IAAIlyC,OAC9D,CAEApH,KAAKs5C,IAAMA,GAAO0tH,CACtB,EAEAhlK,QAAS,WACL,IAAIuzC,EAAWv1C,KAAKu1C,SAEhBv1C,KAAKsyF,WACLtyF,KAAKsyF,UAAUtwF,UAGnB,IAAK,IAAIuF,EAAI,EAAGA,EAAIguC,EAAS/tC,OAAQD,IACjCguC,EAAShuC,GAAGvF,SAEpB,EAEAmoK,QAAS,WACL,IAAIx9J,EAAS3M,KAAK2M,OAElB,OAAOA,EAASA,EAAOw9J,UAAY,IACvC,EAEAC,UAAW,WACP,IAAIC,EAAUrqK,KAAKsqK,aACnB,GAAID,EACA,OAAOA,EAAQ//J,MAEvB,EAEAggK,WAAY,WAER,IADA,IAAIz+J,EAAU7L,KACP6L,GAAS,CACZ,GAAIA,EAAQ0+J,aACR,OAAO1+J,EAAQ0+J,aAEnB1+J,EAAUA,EAAQc,MACtB,CACJ,EAEA69J,kBAAmB,SAASnsF,EAAIC,GAI5B,IAHA,IAAI/oC,EAAWv1C,KAAKu1C,SAChBk1H,EAAgBl1H,EAAS/tC,OAEpBD,EAAI,EAAGA,EAAIkjK,EAAeljK,IAC/BguC,EAAShuC,GAAG+xC,IAAIlJ,UAAUiuC,EAAIC,EAEtC,EAEAnkC,OAAQ,WAIJ,IAHA,IAAIuiF,EAAcp1H,UAGTC,EAAI,EAAGA,EAAID,UAAUE,OAAQD,IAAK,CACvC,IAAI4nC,EAAOutF,EAAYn1H,GAHZvH,KAIFu1C,SAAS5zC,KAAKwtC,GACvBA,EAAKxiC,OALM3M,IAMf,CACJ,EAEA0qK,aAAc,YACmB,IAAzB1qK,KAAKmH,QAAQ6F,UAIjBhN,KAAK2qK,eAEL3qK,KAAK4qK,YAEL5qK,KAAKq6I,iBAELr6I,KAAK6qK,kBACL7qK,KAAK8qK,iBACT,EAEAF,UAAW,WACH5qK,KAAKihJ,SACLjhJ,KAAKihJ,OAAO8pB,aAAe/qK,KAEvBA,KAAK2M,QACL3M,KAAK2M,OAAOq+J,aAAahrK,KAAKihJ,QAG1C,EAEA5G,eAAgB,WAGZ,IAFA,IAAI9kG,EAAWv1C,KAAKu1C,SAChB/tC,EAAS+tC,EAAS/tC,OACbD,EAAI,EAAGA,EAAIC,EAAQD,IACxBguC,EAAShuC,GAAGmjK,cAEpB,EAEAC,aAAc,WACV3qK,KAAKihJ,OAAS,IAAIxQ,EAAM,CACpBz2F,OAAQh6C,KAAKmH,QAAQ6yC,OACrBhtC,QAASgsH,GAAeh5H,KAAKmH,QAAQ6F,SAAS,IAEtD,EAEA69J,gBAAiB,WACT7qK,KAAKihJ,QAAUjhJ,KAAKmH,QAAQmrF,YAC5BtyF,KAAKsyF,UAAY5nE,EAAQoxB,UAAUsL,OAC/BpnD,KAAKihJ,OAAQjhJ,KAAKmH,QAAQmrF,WAGtC,EAEA04E,aAAc,SAASC,GACdA,EAAYF,eACbE,EAAYF,aAAe/qK,MAG3BirK,EAAY9jK,QAAQ+jK,OACpBlrK,KAAKmrK,WAAWlqB,OAAO9mG,OAAO8wH,GACvBn0C,GAAQm0C,EAAY9jK,QAAQ6yC,QACnCh6C,KAAKorK,YAAYC,YAAYJ,GACtBjrK,KAAKsrK,YACZtrK,KAAKqrK,YAAYJ,GACVjrK,KAAKihJ,OACZjhJ,KAAKihJ,OAAO9mG,OAAO8wH,GAInBjrK,KAAK2M,OAAOq+J,aAAaC,EAEjC,EAEAE,SAAU,WACN,OAAInrK,KAAK2M,OACE3M,KAAK2M,OAAOw+J,WAGhBnrK,IACX,EAEAorK,UAAW,WACP,OAAIprK,KAAK2M,OACE3M,KAAK2M,OAAOy+J,YAGhBprK,IACX,EAEAqrK,YAAa,SAASJ,GAClB,IAGI51E,EAHAr7C,EAASixH,EAAY9jK,QAAQ6yC,QAAU,EACvCuxH,EAAUvrK,KAAKihJ,OAAO1rG,SACtB/tC,EAAS+jK,EAAQ/jK,OAGrB,IAAK6tF,EAAM,EAAGA,EAAM7tF,EAAQ6tF,IAAO,CAC/B,IAAIm2E,EAAUD,EAAQl2E,GAEtB,GADW2jC,GAAewyC,EAAQrkK,QAAQ6yC,OAAQ,GACvCA,EACP,KAER,CAEAh6C,KAAKihJ,OAAO9jF,OAAOk4B,EAAK41E,EAC5B,EAEAz6B,SAAU,SAAS5mH,GAIf,IAHA,IAAI2rB,EAAWv1C,KAAKu1C,SAChB/tC,EAAS+tC,EAAS/tC,OAEbD,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAIs8B,EAAQ0R,EAAShuC,GAErBqiB,EAASia,GACLA,EAAM2sG,UACN3sG,EAAM2sG,SAAS5mH,EAEvB,CACJ,EAEA/c,QAAS,SAAS6D,GAId,IAHA,IAAI7E,EAAU7L,KACVyrK,GAAU,EAEP5/J,IAAY4/J,IACfA,EAAU/6J,EAAM7E,MAGZA,EAAUA,EAAQc,QAI1B,GAAI8+J,EACA,OAAO5/J,CAEf,EAEAi/J,eAAgB,WAAY,EAE5BY,aAAc,WACV,IAAIvkK,GAAWnH,KAAKmH,SAAW,CAAC,GAAGwkK,UACnC,SAAU3rK,KAAK4rK,iBAAoBzkK,IAA+B,IAApBA,EAAQ6F,UAAuC,IAAjBhN,KAAKgN,QACrF,EAEA6+J,gBAAiB,SAASp+J,EAAMspB,GAC5B,IAAIk8F,EAAWjzH,KAEXmH,GAAWnH,KAAKmH,SAAW,CAAC,GAAGwkK,WAAa,CAAC,EAC7CG,EAAe3kK,EAAQ85I,OACvB0qB,EAAY3rK,KAAK+rK,WAErB,IAAKJ,EAAW,CACZ,IAAIK,EAAmB,CACnBt4I,KAAM,CACFu9F,MAAOowC,EACPtqI,QAASA,GAAW,IAExB6oG,OAAQ,CACJ3O,MAAOowC,EACPt1J,MAAO,EACPgrB,QAASA,GAAW,KAI5B,GAAI+0I,GAeA,KAdAH,EAAY3rK,KAAK+rK,WAAaD,EAC1BnpK,EAAEI,OAAO/C,KAAKisK,sBAAuB,CACjCtB,aAAc,WAAc,OAAO13C,EAAS24C,gBAAgBI,EAAmB,EAC/E1hK,OAAQtK,KAAKoqK,YACbn7H,OAAQjvC,KAAKivC,OACbwvB,SAAUz+D,KAAKy+D,SACfytG,SAAUlsK,KAAKksK,SACfxjK,MAAO1I,KAAK0I,MACZmkB,WAAY7sB,KAAK6sB,WACjBs/I,aAAcnsK,KAAKmsK,aACnBnlH,MAAOhnD,KAAKgnD,UAKhB,YAGJ2kH,EAAY3rK,KAAK+rK,WAAa/rK,KAAK4rK,gBAAgBI,GAGlDl1C,GAAQ60C,EAAUxkK,QAAQ6yC,UAC3B2xH,EAAUxkK,QAAQ6yC,OAASg/E,GAAe7xH,EAAQ6yC,OAAQh6C,KAAKmH,QAAQ6yC,SAG3Eh6C,KAAKgrK,aAAaW,EACtB,CAEAA,EAAU3+J,QAAQS,EACtB,EAEA2+J,qBAAsB,SAAS3+J,GAC3B,IAAItG,IAAYnH,KAAKmH,SAAW,CAAC,GAAGklK,eAAiB,CAAC,GAAGV,WAAa,CAAC,EACnEW,EAAiBtsK,KAAKusK,gBAE1B,GAAK9+J,GAAS6+J,EAAd,CAIA,IAAKA,EAAgB,CACjB,IACIE,EAAiB7H,GADA3kK,KAAKmqK,UAAUhjK,QAAQ2tJ,YAExC2X,EAAwB,CACxB/4I,KAAM,CACFqD,QAAS5vB,EAAQ4vB,QACjBk6F,MAAO9pH,EAAQ8pH,OAEnB2O,OAAQj9H,EAAEI,OAAO,CAAC,EAAG,CAACkuH,MAAOu7C,GAAiBrlK,EAAQulK,QACtD1yH,OAAQ7yC,EAAQ6yC,QAGpBsyH,EAAiBtsK,KAAKusK,gBAAkBvsK,KAAK2sK,qBAAqBF,GAElEzsK,KAAKgrK,aAAasB,EACtB,CAEAA,EAAet/J,QAAQS,EAnBvB,CAoBJ,EAEAm/J,sBAAuB,SAAS/gK,EAAS1E,EAAS0lK,GAC9C,IAAIC,EAAU,IAAIv+B,EAAK5rI,EAAEI,OAAO,CAC5B68H,OAAQ,CACJ3O,MAAO,QAEXv9F,KAAM1zB,KAAK+sK,eAAeF,GAC1Bh+B,OAAQhjI,EAAQ1E,QAAQ0nI,QACzB1nI,IAIH,OAFA2lK,EAAQ3/B,SAASx0G,SAAS9sB,EAAQshI,SAASx0G,YAEpCm0I,CACX,EAEAC,eAAgB,SAAS5lK,GACrB,GAAInH,KAAK2M,OACL,OAAO3M,KAAK2M,OAAOogK,eAAe5lK,EAE1C,EAEA6lK,6BAA8B,WAC1B,OAAO,CACX,IAGJhD,GAAa3hK,UAAUlB,QAAU,CAAE,EAEnC,IAAI8lK,GAAajD,GAAajnK,OAAO,CACjCoF,KAAM,SAAShB,GACX6iK,GAAajiK,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAEhCnH,KAAKmH,QAAQ4xC,OAASmqH,GAAWljK,KAAKmH,QAAQ4xC,QAC9C/4C,KAAKmH,QAAQ6wI,QAAUkrB,GAAWljK,KAAKmH,QAAQ6wI,QACnD,EAEA3F,OAAQ,SAAS20B,GACb,IAUI1tH,EAVA25E,EAAWjzH,KAEXmH,EAAUnH,KAAKmH,QACf4E,EAAQ5E,EAAQ4E,MAChBC,EAAS7E,EAAQ6E,OACjBkhK,EAAc/lK,EAAQ+lK,YACtBC,EAAaphK,GAASC,EACtB+sC,EAAS5xC,EAAQ4xC,OACjBi/F,EAAU7wI,EAAQ6wI,QAClBo1B,EAAcjmK,EAAQulK,OAAO3gK,MAG7BshK,EAAmB,WACnBp6C,EAASie,MAAM81B,EAAW3hK,EAAG8B,EAAQ+pI,OACrCje,EAASie,MAAM81B,EAAWzxJ,EAAGpO,EAAQizJ,QACrCnnC,EAASq6C,WAAah0H,EAAIlyC,QAAQqgK,MAAM1uH,GAAQ0uH,MAAM2F,EAC1D,EAEIG,EAAavG,EAAU5/J,QACvB+lK,IACAI,EAAWpvF,GAAKovF,EAAWtvF,GAAKlyE,EAChCwhK,EAAWnvF,GAAKmvF,EAAWrvF,GAAKlyE,GAGhCkhK,GACAK,EAAW9F,MAAM1uH,GAAQ0uH,MAAM2F,GAAa3F,MAAMzvB,GAGtDgyB,GAAajiK,GAAGsqI,OAAO9nI,KAAKvK,KAAMutK,GAG9Bj0H,EADA6zH,EACMntK,KAAKs5C,IAAM,IAAIytH,GAAI,EAAG,EAAGh7J,EAAOC,GAEhChM,KAAKs5C,IAGX4zH,GAAeC,GACfE,IACAE,EAAavtK,KAAKutK,WAAavtK,KAAKstK,WAAWlmK,QAAQqgK,MAAMzvB,KAE7Du1B,EAAavtK,KAAKutK,WAAaj0H,EAAIlyC,QACnCkyC,EAAI9tC,IAAIwsI,GAASxsI,IAAI4hK,GAAa5hK,IAAIutC,GACtCs0H,KAGJrtK,KAAKwqK,kBACDlxH,EAAI2kC,GAAKsvF,EAAWtvF,GAAKllC,EAAOvsB,KAAO4gJ,EAAcp1B,EAAQxrH,KAC7D8sB,EAAI4kC,GAAKqvF,EAAWrvF,GAAKnlC,EAAO7zB,IAAMkoJ,EAAcp1B,EAAQ9yH,KAIhE,IADA,IAAIqwB,EAAWv1C,KAAKu1C,SACXhuC,EAAI,EAAGA,EAAIguC,EAAS/tC,OAAQD,IAAK,CACtC,IAAI4nC,EAAOoG,EAAShuC,GACpB4nC,EAAKkjG,OAAOljG,EAAKmK,IACrB,CACJ,EAEA43F,MAAO,SAAS81B,EAAW7hI,EAAMuuG,GAC7B1zI,KAAKs5C,IAAI43F,MAAM81B,EAAW7hI,EAAMuuG,EACpC,EAEA85B,OAAQ,WACJ,IAAIrmK,EAAUnH,KAAKmH,QACnB,OAAOA,EAAQulK,OAAO3gK,OAAS5E,EAAQ2tJ,UAC3C,EAEA6V,aAAc,WACVX,GAAajiK,GAAG4iK,aAAapgK,KAAKvK,MAEpBA,KAAKmH,QACP6F,SAAWhN,KAAKwtK,UACxBxtK,KAAKihJ,OAAO9mG,OAAOo0F,EAAKc,SACpBrvI,KAAKstK,WAAWrF,SAChBjoK,KAAKytK,eAGjB,EAEAA,YAAa,WACT,IAAItmK,EAAUnH,KAAKmH,QACfulK,EAASvlK,EAAQulK,QAAU,CAAC,EAEhC,MAAO,CACH9sC,OAAQ,CACJ7zH,MAAO2gK,EAAO3gK,MACdklH,MAAOy7C,EAAOz7C,MACdl6F,QAASiiG,GAAe0zC,EAAO31I,QAAS5vB,EAAQ4vB,SAChD8nH,SAAU6tB,EAAO7tB,UAErBnrH,KAAM,CACFu9F,MAAO9pH,EAAQ2tJ,WACf/9H,QAAS5vB,EAAQ4vB,SAErBikH,OAAQ7zI,EAAQ6zI,OAExB,IAGJgpB,GAAkBiJ,GAAY,CAC1B/7B,MAAO9lH,EACPgvI,OAAQlpE,EACRn4C,OAAQ,CAAC,EACTi/F,QAAS,CAAC,EACV00B,OAAQ,CACJz7C,MAAOqvC,EACPv0J,MAAO,GAEX+oJ,WAAY,GACZoY,aAAa,EACbnhK,MAAO,EACPC,OAAQ,EACRgB,SAAS,IAab,IAAI0gK,GAAeT,GAAWlqK,OAAO,CACjCoF,KAAM,SAAShB,EAASwmK,GACpBV,GAAWllK,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAE9BnH,KAAK2tK,UAAYA,CACrB,EAEAC,WAAY,WACR,IACIzmK,EADMnH,KACQmH,QACdmyC,EAFMt5C,KAEIstK,WACV5nK,EAAOyB,EAAQzB,KACfq0C,EAAW5yC,EAAQ4yC,SACnBwkC,EAASjlC,EAAIilC,SACbglE,EAAYjqG,EAAIvtC,QAAU,EAC1By3I,EAAalqG,EAAIttC,SAAW,EAEhC,IAAK7E,EAAQ6F,UAAYhN,KAAKwtK,SAC1B,OAAO,KAGX,IACI3hK,EADAsB,EAAQnN,KAAKytK,cAGjB,GAAI/nK,IAAS66J,EACT10J,EAAU,IAAI6e,EAAQy1G,OAClB,IAAIA,EAAO,CACP7pH,GAAMgjC,EAAI2kC,GAAKslE,EAtqEb,GAuqEFjtI,GAAMgjC,EAAI4kC,GAAKslE,EAvqEb,IAwqEHngJ,KAAKqT,IAAI6sI,EAAWC,IACvBr2I,QAED,GAAIzH,IAAS07J,EAChBv1J,EAAU0iI,EAAKvQ,WAAW,CACtB,CAAE1kF,EAAI2kC,GAAKslE,EAAWjqG,EAAI4kC,IAC1B,CAAE5kC,EAAI2kC,GAAI3kC,EAAI8kC,IACd,CAAE9kC,EAAI6kC,GAAI7kC,EAAI8kC,KACfjxE,GAAOu4C,aACP,GAAIhgD,IAAS86J,GAChB30J,EAAU,IAAI6e,EAAQ0kH,UAAUjiI,IAExBqvC,OAAOlD,EAAI2kC,GAAI3kC,EAAI4kC,IAAI2uD,OAAOvzF,EAAI6kC,GAAI7kC,EAAI8kC,IAClDvyE,EAAQ2wC,OAAOlD,EAAI2kC,GAAI3kC,EAAI8kC,IAAIyuD,OAAOvzF,EAAI6kC,GAAI7kC,EAAI4kC,QAC/C,CACH,IAAIoO,EAAOhzC,EAAI2uH,SACf,GAAIviK,IAASy7J,EAAc,CACvB,IAAI0M,EAAe70C,GAAe7xH,EAAQ0mK,aAAcvhF,EAAKvgF,QAAU,GACvEugF,EAAK8wC,gBAAgBywC,EACzB,CAEAhiK,EAAU0iI,EAAKc,SAAS/iD,EAAMn/E,EAClC,CAUA,OARI4sC,GACAluC,EAAQ8nC,UAAUusH,IACb/uH,QAAQ4I,EAAU,CAAEwkC,EAAOn5E,EAAGm5E,EAAOp6E,KAI9C0H,EAAQ1E,QAAQ6yC,OAAS7yC,EAAQ6yC,OAE1BnuC,CACX,EAEAgT,cAAe,WACX,IAAIo0G,EAAWjzH,KAEX8rK,EAAe9rK,KAAKmH,QAAQ85I,OAC5B0sB,EAAY3tK,KAAK2tK,WAAa,CAAC,EAkBnC,OAfI7B,EACSA,EAAa,CAClBpjK,MAAOilK,EAAUjlK,MACjB+1D,SAAUkvG,EAAUlvG,SACpBn0D,OAAQtK,KAAKoqK,YACbn7H,OAAQ0+H,EAAU1+H,OAClBi9H,SAAUyB,EAAUzB,SACpB5/E,KAAMtsF,KAAKstK,WAAWrF,SACtB9gK,QAASnH,KAAK8tK,gBACdnD,aAAc,WAAc,OAAO13C,EAAS26C,YAAc,IAGrD5tK,KAAK4tK,YAItB,EAEAE,cAAe,WACX,IAAI3mK,EAAUnH,KAAKmH,QACnB,MAAO,CACH2tJ,WAAY3tJ,EAAQ2tJ,WACpB4X,OAAQvlK,EAAQulK,OAChB3zH,OAAQ5xC,EAAQ4xC,OAChBi/F,QAAS7wI,EAAQ6wI,QACjBtyI,KAAMyB,EAAQzB,KACdsK,KAAM7I,EAAQ4E,MACdiB,QAAS7F,EAAQ6F,QAEzB,EAEA29J,aAAc,WAhHlB,IAA4C1pB,EAAQ8sB,EAiH5C/tK,KAAKihJ,OAASjhJ,KAAK6e,gBAjHiBoiI,EAmHDjhJ,KAAKihJ,QAnHI8sB,EAmHI/tK,KAAKmH,QAAQ4mK,wBAjH7D9sB,EAAO95I,QAAQkmB,UAAY0gJ,EAAqB1gJ,UAChD4zH,EAAO95I,QAAQqpB,KAAOu9I,EAAqBv9I,KAC3CywH,EAAO95I,QAAQ6sB,UAAY+5I,EAAqB/5I,UAChDitH,EAAO95I,QAAQo0I,oBAAsBwyB,EAAqBxyB,oBAC1D0F,EAAO95I,QAAQs0I,YAAcsyB,EAAqBtyB,YA8GtD,IAGJuoB,GAAkB0J,GAAc,CAC5BhoK,KAAM66J,EACNrvB,MAAOjgD,EACPmpE,OAAQnpE,IAGZ,IACI+8E,GAAS,SAETC,GAAY,CACZC,MAAO,CACHxoK,KALK,SAMLq0C,SAAU,EACVg7F,MAAO,CAAE,CACLj3H,OAAQ,EACRmzG,MAAOowC,EACPtqI,QAAS,GACV,CACCjZ,OAAQ,IACRmzG,MAAOowC,EACPtqI,QAAS,IACV,CACCjZ,OAAQ,EACRmzG,MAAOowC,EACPtqI,QAAS,KAGjBo3I,WAAY,CACRzoK,KAAMsoK,GACNj5B,MAAO,CAAE,CACLj3H,OAAQ,EACRmzG,MAAOowC,EACPtqI,QAAS,KACV,CACCjZ,OAAQ,IACRmzG,MAAOowC,EACPtqI,QAAS,GACV,CACCjZ,OAAQ,IACRmzG,MAAOowC,EACPtqI,QAAS,OAGjBq3I,aAAc,CACV1oK,KAAMsoK,GACNj5B,MAAO,CAAE,CACLj3H,OAAQ,IACRmzG,MAAOowC,EACPtqI,QAAS,KACV,CACCjZ,OAAQ,IACRmzG,MAAOowC,EACPtqI,QAAS,IACV,CACCjZ,OAAQ,IACRmzG,MAAOowC,EACPtqI,QAAS,KAGjBs3I,aAAc,CACV3oK,KAAMsoK,GACNM,YAAY,EACZv5B,MAAO,CAAE,CACLj3H,OAAQ,EACRmzG,MAAOowC,EACPtqI,QAAS,GACV,CACCjZ,OAAQ,GACRmzG,MAAOowC,EACPtqI,QAAS,IACV,CACCjZ,OAAQ,IACRmzG,MAAOowC,EACPtqI,QAAS,KAGjBw3I,WAAY,CACR7oK,KAAMsoK,GACNM,YAAY,EACZv5B,MAAO,CAAE,CACLj3H,OAAQ,EACRmzG,MAAOowC,EACPtqI,QAAS,IACV,CACCjZ,OAAQ,IACRmzG,MAAOowC,EACPtqI,QAAS,KACV,CACCjZ,OAAQ,IACRmzG,MAAOowC,EACPtqI,QAAS,KACV,CACCjZ,OAAQ,IACRmzG,MAAOowC,EACPtqI,QAAS,KACV,CACCjZ,OAAQ,IACRmzG,MAAOowC,EACPtqI,QAAS,KACV,CACCjZ,OAAQ,IACRmzG,MAAOowC,EACPtqI,QAAS,KAGjBy3I,aAAc,CACV9oK,KAAMsoK,GACNzvF,OAAQ,CAAE,GAAK,IACfjyD,OAAQ,KAIhB,SAASmiJ,GAAQv8C,EAAGjtH,GAChB,GAAIitH,EAAEj0C,KAAOh5E,EAAEg5E,IAAMi0C,EAAEh0C,KAAOj5E,EAAEi5E,IAAMg0C,EAAE/zC,KAAOl5E,EAAEk5E,IAAM+zC,EAAE9zC,KAAOn5E,EAAEm5E,GAC9D,OAAOn5E,EAGX,IAAIC,EAAI7B,KAAKqT,IAAIw7G,EAAEj0C,GAAIh5E,EAAEg5E,IACrBhiE,EAAI5Y,KAAK8V,IAAI+4G,EAAEj0C,GAAIh5E,EAAEg5E,IACrBv5E,EAAIrB,KAAKqT,IAAIw7G,EAAE/zC,GAAIl5E,EAAEk5E,IACrB35E,EAAInB,KAAK8V,IAAI+4G,EAAE/zC,GAAIl5E,EAAEk5E,IACrBx5E,EAAItB,KAAKqT,IAAIw7G,EAAEh0C,GAAIj5E,EAAEi5E,IACrB1wB,EAAInqD,KAAK8V,IAAI+4G,EAAEh0C,GAAIj5E,EAAEi5E,IACrB9oE,EAAI/R,KAAKqT,IAAIw7G,EAAE9zC,GAAIn5E,EAAEm5E,IACrBx5E,EAAIvB,KAAK8V,IAAI+4G,EAAE9zC,GAAIn5E,EAAEm5E,IACrBk0E,EAAQ,GA2BZ,OAdAA,EAAM,GAAK,IAAIyU,GAAI9qJ,EAAGtX,EAAGD,EAAG8oD,GAC5B8kG,EAAM,GAAK,IAAIyU,GAAI7hK,EAAGsoD,EAAGvxC,EAAG7G,GAC5Bk9I,EAAM,GAAK,IAAIyU,GAAIriK,EAAG8oD,EAAGhpD,EAAG4Q,GAC5Bk9I,EAAM,GAAK,IAAIyU,GAAI9qJ,EAAG7G,EAAG1Q,EAAGE,GAGxBstH,EAAEj0C,KAAO/4E,GAAKgtH,EAAEh0C,KAAOv5E,GAAKM,EAAEg5E,KAAO/4E,GAAKD,EAAEi5E,KAAOv5E,GACnD2tJ,EAAM,GAAK,IAAIyU,GAAI7hK,EAAGP,EAAGsX,EAAGuxC,GAC5B8kG,EAAM,GAAK,IAAIyU,GAAIriK,EAAG0Q,EAAG5Q,EAAGI,KAE5B0tJ,EAAM,GAAK,IAAIyU,GAAIriK,EAAGC,EAAGH,EAAGgpD,GAC5B8kG,EAAM,GAAK,IAAIyU,GAAI7hK,EAAGkQ,EAAG6G,EAAGrX,IAGzBy5B,GAAKi0H,GAAO,SAASh5G,GACxB,OAAOA,EAAIttC,SAAW,GAAKstC,EAAIvtC,QAAU,CAC7C,IAAG,EACP,CAEA,IAAI2iK,GAAc1E,GAAajnK,OAAO,CAClCoF,KAAM,SAAShB,GACX6iK,GAAajiK,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAEhC,IAAIwnK,EAAc3uK,KAAKmH,QACvBwnK,EAAY5iK,MAAQyN,SAASm1J,EAAY5iK,MAAO,IAChD4iK,EAAY3iK,OAASwN,SAASm1J,EAAY3iK,OAAQ,IAElDhM,KAAK4uK,UAAY,CAAC,CACtB,EAEAv8B,OAAQ,WACJ,IACIlrI,EADMnH,KACQmH,QACdouC,EAFMv1C,KAESu1C,SACfs5H,EAAa,IAAI9H,GAAI,EAAG,EAAG5/J,EAAQ4E,MAAO5E,EAAQ6E,QAEtDhM,KAAKs5C,IAAMu1H,EAAWpH,MAAMtgK,EAAQ4xC,QAEpC,IAAK,IAAIxxC,EAAI,EAAGA,EAAIguC,EAAS/tC,OAAQD,IACjCguC,EAAShuC,GAAG8qI,OAAOw8B,GACnBA,EAAaJ,GAAQI,EAAYt5H,EAAShuC,GAAG+xC,MAAQ,IAAIytH,EAEjE,EAEA4D,aAAc,WACV3qK,KAAKihJ,OAAS,IAAIxQ,EAClBzwI,KAAK8uK,kBACT,EAEAA,iBAAkB,WACd,IAAI3nK,EAAUnH,KAAKmH,QACfulK,EAASvlK,EAAQulK,QAAU,CAAC,EAC5BpzH,EAAMt5C,KAAKs5C,IAAIlyC,QAAQoE,IAAIrE,EAAQ4xC,QAAQ0uH,MAAMiF,EAAO3gK,OAExD+oJ,EAAavmB,EAAKc,SAAS/1F,EAAI2uH,SAAU,CACzCroC,OAAQ,CACJ3O,MAAOy7C,EAAO3gK,MAAQ2gK,EAAOz7C,MAAQ,GACrCllH,MAAO2gK,EAAO3gK,MACd8yI,SAAU6tB,EAAO7tB,UAErBnrH,KAAM,CACFu9F,MAAO9pH,EAAQ2tJ,WACf/9H,QAAS5vB,EAAQ4vB,SAErBijB,QAAS,KAGbh6C,KAAKihJ,OAAO9mG,OAAO26G,EACvB,EAEAqV,QAAS,WACL,OAAOnqK,IACX,EAEA+sK,eAAgB,SAAS5lK,GACrB,IAGI4nK,EAHAH,EAAY5uK,KAAK4uK,UACjBI,EAAWr6C,GAAUxtH,GACrB6+I,EAAWioB,GAAU9mK,EAAQ6+I,UAGjC,GAAI4oB,EAAUI,GACVD,EAAkBH,EAAUI,OACzB,CACH,IAAInC,EAAkBlqK,EAAEI,OAAO,CAAC,EAAGijJ,EAAU7+I,GACvB,WAAlB6+I,EAAStgJ,KACTqpK,EAAkB,IAAIrkJ,EAAQ2qH,eAAew3B,IAEzC1lK,EAAQkhK,cACRwE,EAAgB93B,MAoCpC,SAA0B5tI,GAMtB,IALA,IAAI4tI,EAAQ5tI,EAAQ4tI,MAChBk6B,EAAc9nK,EAAQkhK,YAAclhK,EAAQmlB,OAAU,IACtD9kB,EAASutI,EAAMvtI,OACf0nK,EAAe,GAEV3nK,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAI4nK,EAAcxsK,EAAEI,OAAO,CAAC,EAAGgyI,EAAMxtI,IACrC4nK,EAAYrxJ,QAAUqxJ,EAAYrxJ,QAAU,IAAMmxJ,GAAaA,GAAa,IAC5EC,EAAavtK,KAAKwtK,EACtB,CAEA,OAAOD,CACX,CAjD4CE,CAAiBvC,KAE7CkC,EAAkB,IAAIrkJ,EAAQ4qH,eAAeu3B,IAC7ByB,YAAqC,IAAxBtoB,EAASsoB,YAE1CM,EAAUI,GAAYD,CAC1B,CAEA,OAAOA,CACX,EAEAM,eAAgB,WACZ,IAAIT,EAAY5uK,KAAK4uK,UACrB,IAAK,IAAII,KAAYJ,EACjBA,EAAUI,GAAUh5C,WAAa,EAEzC,EAEAhmH,KAAM,WACF,IAAI7I,EAAUnH,KAAKmH,QACnB,OAAO,IAAI4/J,GAAI,EAAG,EAAG5/J,EAAQ4E,MAAO5E,EAAQ6E,OAChD,IAGJg4J,GAAkB0K,GAAa,CAC3B3iK,MA7+EgB,IA8+EhBC,OAh/EiB,IAi/EjB8oJ,WAAYuM,EACZqL,OAAQ,CACJz7C,MAAOqvC,EACPv0J,MAAO,GAEXgtC,OAAQmqH,GAAW,GACnBlpH,QAAS,IAkBb,IAAIs1H,GAAetF,GAAajnK,OAAO,CACnCoF,KAAM,SAAShB,GACX6iK,GAAajiK,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAChCnH,KAAKuvK,gBACT,EAEAA,eAAgB,WACZ,IAAIpoK,EAAUnH,KAAKmH,QACfA,EAAQqrC,UACRxyC,KAAKkyI,UAAY7sI,EACjBrF,KAAKwvK,YAAcj6J,EACnBvV,KAAKyvK,eAAiBj+H,EACtBxxC,KAAK0vK,iBAAmBj+H,EACxBzxC,KAAK2vK,aAAexoK,EAAQqqI,QAC5BxxI,KAAK4vK,eAAiBzoK,EAAQ0oK,WAE9B7vK,KAAKkyI,UAAY38H,EACjBvV,KAAKwvK,YAAcnqK,EACnBrF,KAAKyvK,eAAiBh+H,EACtBzxC,KAAK0vK,iBAAmBl+H,EACxBxxC,KAAK2vK,aAAexoK,EAAQ0oK,SAC5B7vK,KAAK4vK,eAAiBzoK,EAAQqqI,QAEtC,EAEAa,OAAQ,SAAS20B,GACbhnK,KAAKs5C,IAAM0tH,EAAU5/J,QACrBpH,KAAK8vK,gBACT,EAEAA,eAAgB,WACZ,IAAI78C,EAAWjzH,KAEXqyH,EAAMryH,KACNs5C,EAAM+4E,EAAI/4E,IACVk2H,EAAcn9C,EAAIm9C,YAClBt9B,EAAY7f,EAAI6f,UAChBw9B,EAAmBr9C,EAAIq9C,iBACvBD,EAAiBp9C,EAAIo9C,eACrB/8B,EAAQ1yI,KAAK+vK,eACbpmI,EAAS+oG,EAAM/oG,OACf8oG,EAAaC,EAAMD,WACnBu9B,EAAuBt9B,EAAMs9B,qBAC7BC,EAActmI,EAAOniC,OACrB0oK,EAAc52H,EAAI44F,EAAY,GAAKlyI,KAAKixI,WAAWwB,EAAYn5F,EAAIm2H,MAEvE,GAAIQ,EAAa,CAGb,IAFA,IAAIp9B,EAAaq9B,EAERn9B,EAAW,EAAGA,EAAWk9B,EAAal9B,IAAY,CAMvD,IALA,IAAIx+E,EAAQ5qB,EAAOopG,GACfo9B,EAAgB57G,EAAM47G,cACtB79B,EAAeh5F,EAAIk2H,EAAc,GACjCY,EAAqBD,EAAc3oK,OAE9BoC,EAAM,EAAGA,EAAMwmK,EAAoBxmK,IAAO,CAC/C,IAAIiC,EAAUskK,EAAcvmK,GACxBymK,EAAiBp9C,EAASrlC,YAAY/hF,GACtCykK,EAAoBz9B,EAAa5f,EAASge,WAAWo/B,EAAeZ,GAAiBl7G,EAAMpgD,WAE3Fo8J,EAAa,IAAIxJ,GACrBwJ,EAAWr+B,EAAY,GAAKo+B,EAC5BC,EAAWr+B,EAAY,GAAKo+B,EAAoBD,EAAeZ,GAC/Dc,EAAWf,EAAc,GAAKl9B,EAC9Bi+B,EAAWf,EAAc,GAAKl9B,EAAe+9B,EAAeX,GAE5D7jK,EAAQwmI,OAAOk+B,GAEfj+B,GAAgB+9B,EAAeX,GAAoBz8C,EAAS28C,cAChE,CACA/8B,GAAct+E,EAAMpgD,UAAY8+G,EAAS08C,YAC7C,CACAr2H,EAAI44F,EAAY,GAAKg+B,EACrB52H,EAAI44F,EAAY,GAAKg+B,EAAcz9B,EACnCn5F,EAAIk2H,EAAc,GAAKl2H,EAAIk2H,EAAc,GAAKQ,CAClD,CACJ,EAEA/+B,WAAY,SAASjhI,EAAMkkI,GACvB,IAAIp+H,EAAQ,EACRo7H,EAAQlxI,KAAKmH,QAAQ+pI,MAMzB,OALIA,IAAU5lH,GAAS4lH,IAAU//C,EAC7Br7E,EAAQo+H,EAAUlkI,EACXkhI,IAAUjgD,IACjBn7E,GAASo+H,EAAUlkI,GAAQ,GAExB8F,CACX,EAEAi6J,aAAc,WAoBV,IAnBA,IAEI19C,EAAMryH,KACNs5C,EAAM+4E,EAAI/4E,IACV/D,EAAW88E,EAAI98E,SACfm6H,EAAmBr9C,EAAIq9C,iBACvBD,EAAiBp9C,EAAIo9C,eACrBG,EAAiBv9C,EAAIu9C,eACrBD,EAAet9C,EAAIs9C,aACnBz7B,EAAU59H,GAAMgjC,EAAIo2H,MACpBjF,EAAgBl1H,EAAS/tC,OACzBmiC,EAAS,GAETx1B,EAAY,EACZq8J,EAAoB,EACpB/9B,EAAa,EACbu9B,EAAuB,EACvBG,EAAgB,GAEXvmK,EAAM,EAAGA,EAAM6gK,EAAe7gK,IAAO,CAC1C,IAAIiC,EAAU0pC,EAAS3rC,GAClBiC,EAAQytC,KACTztC,EAAQwmI,OAAO/4F,GAGnB,IAAI+2H,EAzBOrwK,KAyBmB4tF,YAAY/hF,GAzB/B7L,KA0BEmH,QAAQwlB,MAAQrW,GAAMk6J,EAAoBZ,EAAiBS,EAAeX,IAAqBx7B,IACxGvqG,EAAOhoC,KAAK,CACRwuK,cAAeA,EACfh8J,UAAWA,EACXq8J,kBAAmBA,IAEvBR,EAAuB3sK,KAAK8V,IAAI62J,EAAsBQ,GACtD/9B,GAAck9B,EAAex7J,EAC7BA,EAAY,EACZq8J,EAAoB,EACpBL,EAAgB,IAEpBh8J,EAAY9Q,KAAK8V,IAAIhF,EAAWk8J,EAAeZ,IAC3Ce,EAAoB,IACpBA,GAAqBZ,GAEzBY,GAAqBH,EAAeX,GACpCS,EAAcxuK,KAAKkK,EACvB,CAUA,OARA89B,EAAOhoC,KAAK,CACRwuK,cAAeA,EACfh8J,UAAWA,EACXq8J,kBAAmBA,IAKhB,CACH7mI,OAAQA,EACR8oG,WAJJA,GAAct+H,EAKV67J,qBANJA,EAAuB3sK,KAAK8V,IAAI62J,EAAsBQ,GAQ1D,EAEA5iF,YAAa,SAAS/hF,GAClB,MAAO,CACHE,MAAOF,EAAQytC,IAAIvtC,QACnBC,OAAQH,EAAQytC,IAAIttC,SAE5B,EAEA2+J,aAAc,WAAY,IAG9B3G,GAAkBsL,GAAc,CAC5B98H,UAAU,EACV7lB,MAAM,EACNkjJ,SAAU,EACVr+B,QAAS,IAGb,IAAIi/B,GAAc/lJ,EAAQylH,KAEtBA,GAAO65B,GAAajnK,OAAO,CAC3BoF,KAAM,SAASw+C,EAASx/C,GACpB6iK,GAAajiK,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAEhCnH,KAAK2mD,QAAUA,EAGf3mD,KAAKqyI,OAAO,IAAI00B,GACpB,EAEA10B,OAAQ,SAAS20B,GACb,IAAI7/J,EAAUnH,KAAKmH,QACf6I,EAAO7I,EAAQ6I,KAAOw3G,EAAKiO,YAAYz1H,KAAK2mD,QAAS,CAAEoxC,KAAM5wF,EAAQ4wF,OAEzE/3F,KAAKi1H,SAAWjlH,EAAKilH,SAErBj1H,KAAKs5C,IAAM,IAAIytH,GAAIC,EAAU/oF,GAAI+oF,EAAU9oF,GACvC8oF,EAAU/oF,GAAKjuE,EAAKjE,MAAOi7J,EAAU9oF,GAAKluE,EAAKhE,OACvD,EAEA2+J,aAAc,WACV,IAAIt4C,EAAMryH,KAAKmH,QACX4wF,EAAOs6B,EAAIt6B,KACXk5B,EAAQoB,EAAIpB,MACZl6F,EAAUs7F,EAAIt7F,QACdikH,EAAS3oB,EAAI2oB,OACbpb,EAASvN,EAAIuN,OACb0gB,EAAajuB,EAAIiuB,WAErBtgJ,KAAKihJ,OAAS,IAAIwvB,GAAYzwK,KAAK2mD,QAAS3mD,KAAKs5C,IAAI2uH,SAAS1qC,UAAW,CACrExlC,KAAMA,EACNrkE,KAAM,CAAEu9F,MAAOA,EAAOl6F,QAASA,GAC/BikH,OAAQA,EACRpb,OAAQA,EACR0gB,WAAYA,GAEpB,IAQJ,SAASowB,GAAUpkF,GACf,IAAItzC,EAASszC,EAAKtzC,OACdwkF,EAAclxC,EAAKkxC,cAEvB,OAAO,IAAIupC,GAAI/tH,EAAO5zC,EAAG4zC,EAAO70C,EAAGq5H,EAAYp4H,EAAGo4H,EAAYr5H,EAClE,CAVA6/J,GAAkB7zB,GAAM,CACpBp4C,KAAM2oE,EACNzvC,MAAOqvC,IAUX,IAAIqQ,GAAmB,MAEnBC,GAAU3D,GAAWlqK,OAAO,CAC5BoF,KAAM,SAASw+C,EAASx/C,EAASiH,GAC7B6+J,GAAWllK,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAC9BnH,KAAK2mD,QAAUA,EACf3mD,KAAKoO,KAAOA,EAEZpO,KAAK6wK,kBAC4B,IAA7B7wK,KAAKmH,QAAQ2pK,aACb9wK,KAAKqyI,OAAO,IAAI00B,GAExB,EAEA8J,eAAgB,WACZ,IAAI1pK,EAAUnH,KAAKmH,QACfsjE,EAAOp4D,OAAOrS,KAAK2mD,SAAS/7C,MAAM+lK,IAClCI,EAAe,IAAIzB,GAAa,CAAE98H,UAAU,EAAM0+F,MAAO/pI,EAAQ+pI,MAAOvkH,MAAM,IAC9EqkJ,EAAcxoK,EAAW,CAAE,EAAGrB,EAAS,CAAE4vB,QAAS,EAAGu7D,UAAW,OAEpEtyF,KAAKy2B,UAAYs6I,EACjB/wK,KAAKm6C,OAAO42H,GAEZ,IAAK,IAAIE,EAAS,EAAGA,EAASxmG,EAAKjjE,OAAQypK,IAAU,CACjD,IAAInwI,EAAO,IAAIqvG,GAAK1lE,EAAKwmG,GAAQttI,OAAQqtI,GACzCD,EAAa52H,OAAOrZ,EACxB,CACJ,EAEAuxG,OAAQ,SAAS20B,GACb,IAAI7/J,EAAUnH,KAAKmH,QACf+pK,EAAW/pK,EAAQ85I,OAGvB,GAFAjhJ,KAAKy2B,UAAUtvB,QAAQ+pI,MAAQ/pI,EAAQ+pI,MAEnCggC,IAAalxK,KAAKmxK,WAAY,CAC9B,IAAIC,EAAYpK,EACXoK,EAAUlJ,YACXloK,KAAKmxK,YAAa,EAClBnxK,KAAKqyI,OAAO++B,GACZpxK,KAAKmxK,YAAa,EAClBC,EAAYpxK,KAAKs5C,KAErB,IAAI2nG,EAASjhJ,KAAKihJ,OAASiwB,EAASlxK,KAAKqxK,cAAcD,IAEnDnwB,IACAmwB,EAAYV,GAAUzvB,EAAO3hB,eAAiB,IAAIrC,GAElDgkB,EAAO95I,QAAQ6yC,OAAS7yC,EAAQ6yC,QAGpCh6C,KAAKs5C,IAAMt5C,KAAKutK,WAAavtK,KAAKstK,WAAa8D,CACnD,MAGI,GAFAnE,GAAWllK,GAAGsqI,OAAO9nI,KAAKvK,KAAMgnK,GAE5B7/J,EAAQ4yC,SAAU,CAClB,IAAIhB,EAASmqH,GAAW/7J,EAAQ4xC,QAC5BO,EAAMt5C,KAAKs5C,IAAImuH,MAAM1uH,GAEzB/4C,KAAKgnK,UAAYA,EACjBhnK,KAAKsxK,UAAYh4H,EAAIlyC,SAErBkyC,EAAMt5C,KAAKmxC,UACPf,UAAU2I,EAAOvsB,KAAOusB,EAAOtsB,MAAOssB,EAAO7zB,IAAM6zB,EAAOrsB,QAE9D1sB,KAAKuxK,WAAaj4H,EAAIlyC,QAEtBkyC,EAAI9tC,IAAIutC,EACZ,CAER,EAEA4xH,aAAc,WACV,IAAIxjK,EAAUnH,KAAKmH,QAQnB,GANAnH,KAAKihJ,OAAS,IAAIxQ,EAAM,CACpB98F,UAAW3zC,KAAKwxK,oBAChBx3H,OAAQ7yC,EAAQ6yC,OAChBkxH,OAAQ/jK,EAAQ+jK,SAGhBlrK,KAAKwtK,SAAU,CACf,IAAIl0H,EAAMi1F,EAAKc,SAASrvI,KAAKstK,WAAWrF,SAAUjoK,KAAKytK,eACvDztK,KAAKihJ,OAAO9mG,OAAOb,EACvB,CACJ,EAEAoxH,aAAc,WACV,GAAK1qK,KAAKmH,QAAQ6F,QAIlB,GAAIhN,KAAKmH,QAAQ85I,OAAQ,CACrB,IAAIA,EAASjhJ,KAAKihJ,OACdA,IAAWnqB,GAAQmqB,EAAO95I,QAAQ+jK,UAClCjqB,EAAO95I,QAAQ+jK,OAASlrK,KAAKmH,QAAQ+jK,QAEzClrK,KAAK4qK,YACL5qK,KAAK6qK,iBACT,MACIoC,GAAWllK,GAAG2iK,aAAangK,KAAKvK,KAExC,EAEAqxK,cAAe,SAASrK,GACpB,IAAI/zC,EAAWjzH,KAEXg8B,EAAU,CACV8E,KAAM9gC,KAAK2mD,QACX2lC,KAAM06E,EAAUiB,SAChB39J,OAAQtK,KAAKoqK,YACbjjK,QAASnH,KAAKmH,QACdwjK,aAAc,WAIV,OAHA13C,EAASk+C,YAAa,EACtBl+C,EAASof,OAAO20B,GAChB/zC,EAASk+C,YAAa,EACfl+C,EAASw+C,kBACpB,GAMJ,OAJIzxK,KAAKoO,MACLzL,EAAEI,OAAOi5B,EAASh8B,KAAKoO,MAGpB4tB,CACX,EAEAy1I,iBAAkB,WACdzxK,KAAK2qK,eACL3qK,KAAKq6I,iBACL,IAAI4G,EAASjhJ,KAAKihJ,OAElB,cADOjhJ,KAAKihJ,OACLA,CACX,EAEA9vG,OAAQ,WACJ,IAAIhqC,EAAUnH,KAAKmH,QAInB,OAHAnH,KAAKs5C,IAAInI,OAAOhqC,EAAQ4yC,UACxB/5C,KAAKkxI,MAAMlxI,KAAKgnK,UAAW3hK,EAAG8B,EAAQ+pI,OACtClxI,KAAKkxI,MAAMlxI,KAAKgnK,UAAWzxJ,EAAGpO,EAAQizJ,QAC/Bp6J,KAAKs5C,GAChB,EAEAk4H,kBAAmB,WACf,IAAIz3H,EAAW/5C,KAAKmH,QAAQ4yC,SAC5B,IAAKA,EACD,OAAO,KAGX,IAAIs4E,EAAMryH,KAAKsxK,UAAU/yF,SACrBwnD,EAAK1T,EAAIjtH,EACT4gI,EAAK3T,EAAIluH,EACTutK,EAAY1xK,KAAKuxK,WAAWhzF,SAEhC,OAAO2hF,IACF9vH,UAAUshI,EAAUtsK,EAAI2gI,EAAI2rC,EAAUvtK,EAAI6hI,GAC1C70F,OAAO4I,EAAU,CAAEgsF,EAAIC,GAChC,IAGA2rC,GAAQ3H,GAAajnK,OAAO,CAC5BoF,KAAM,SAAShB,GACX6iK,GAAajiK,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAEhCnH,KAAK4xK,SAAW,IAAIhB,GAAQ5wK,KAAKmH,QAAQ25B,KAAMn+B,EAAEI,OAAO,CAAC,EAAG/C,KAAKmH,QAAS,CACtEizJ,OAAQp6J,KAAKmH,QAAQmG,YAGzBtN,KAAKm6C,OAAOn6C,KAAK4xK,SACrB,EAEAv/B,OAAQ,SAAS20B,GACbgD,GAAajiK,GAAGsqI,OAAO9nI,KAAKvK,KAAMgnK,GAClChnK,KAAKs5C,IAAI6tH,OAAOH,EAAW3hK,EAC/B,IAgCJ,SAASwsK,GAAwB3lH,GAC7B,IAAK,IAAI3kD,EAAI,EAAGA,EAAI2kD,EAAM1kD,OAAQD,IAAK,CACnC,IAAI+xC,EAAM4S,EAAM3kD,GAAGqqK,SACfE,EAAU5lH,EAAM3kD,EAAI,GAAGqqK,SAC3BE,EAAQ3qK,QAAQ4xC,OAASp2C,EAAEI,OAAOmgK,GAAW4O,EAAQ3qK,QAAQ4xC,QAAS,CAAErsB,OAAQ,IAChF4sB,EAAInyC,QAAQ4xC,OAASp2C,EAAEI,OAAOmgK,GAAW5pH,EAAInyC,QAAQ4xC,QAAS,CAAE7zB,IAAK,GACzE,CACJ,CApCAysJ,GAAMI,WAAa,SAAS5qK,EAAS6qK,GACjC,IAQI7zH,EARA8zH,EAAe9qK,EAanB,MAXuB,iBAAZA,IACP8qK,EAAe,CAAEnxI,KAAM35B,KAG3B8qK,EAAetvK,EAAEI,OAAO,CAAEiK,SAAS,GAAQglK,EAAgBC,KAGvCA,EAAajlK,SAAWilK,EAAanxI,OACrDqd,EAAQ,IAAIwzH,GAAMM,IAGf9zH,CACX,EAEAwzH,GAAMO,YAAc,SAASC,GACzB,IAAIjmH,EAAQ,GAAG9tC,OAAO+zJ,GAClBjtJ,EAAMgnC,EAAM38B,QAAO,SAAU4f,GAAQ,OAAOA,GAAQA,EAAKhoC,QAAQmG,WAAa6jF,CAAQ,IACtFzkE,EAASw/B,EAAM38B,QAAO,SAAU4f,GAAQ,OAAOA,GAAQA,EAAKhoC,QAAQmG,WAAa6jF,CAAQ,IAM7F,OAJA0gF,GAAwB3sJ,GACxB2sJ,GAAwBnlJ,GAExBA,EAAOrW,UACA6O,EAAI9G,OAAOsO,EACtB,EAWAs3I,GAAkB2N,GAAO,CACrB1gD,MAAOqvC,EACPhzJ,SAAU4jF,EACVggD,MAAOjgD,EACPl4C,OAAQmqH,GAAW,GACnBlrB,QAASkrB,GAAW,KAGxB,IAAIkP,GAAYxB,GAAQ7tK,OAAO,CAC3BoF,KAAM,SAASO,EAAOo4B,EAAMxnB,EAAOmlD,EAAUt3D,GACzCypK,GAAQ7oK,GAAGI,KAAKoC,KAAKvK,KAAM8gC,EAAM35B,GAEjCnH,KAAK8gC,KAAOA,EACZ9gC,KAAK0I,MAAQA,EACb1I,KAAKsZ,MAAQA,EACbtZ,KAAKy+D,SAAWA,EAChBz+D,KAAKqyI,OAAO,IAAI00B,GACpB,EAEAsK,cAAe,SAASrK,GACpB,IAAIhrI,EAAU40I,GAAQ7oK,GAAGspK,cAAc9mK,KAAKvK,KAAMgnK,GAOlD,OALAhrI,EAAQtzB,MAAQ1I,KAAK0I,MACrBszB,EAAQyiC,SAAWz+D,KAAKy+D,SACxBziC,EAAQ/qB,OAASjR,KAAKmH,QAAQ8J,OAC9B+qB,EAAQnoB,QAAU7T,KAAKmH,QAAQ0M,QAExBmoB,CACX,EAEA9R,MAAO,SAASqJ,EAAQ5uB,GAEpB4uB,EAAOnpB,QAAQi2J,EAAkB,CAC7Bx0J,QAASysH,GAAa3zH,GACtB+D,MAAO1I,KAAK0I,MACZo4B,KAAM9gC,KAAK8gC,KACXxnB,MAAOtZ,KAAKsZ,MACZmlD,SAAUz+D,KAAKy+D,SACft5B,KAAMnlC,KAAK2M,OAAOxF,SAE1B,EAEAgqC,OAAQ,WACJ,GAAInxC,KAAKmH,QAAQkrK,gBAAkBphF,EAAQ,CACvC,IAAI33C,EAAMt5C,KAAKsxK,UAAUrJ,SACrBt0H,EAAY3zC,KAAKwxK,oBAErBxxK,KAAKs5C,IAAMo3H,GAAUp3H,EAAIqkF,KAAKhqF,EAAUomF,UAC5C,MACI62C,GAAQ7oK,GAAGopC,OAAO5mC,KAAKvK,MAG3B,OAAOA,KAAKs5C,GAChB,EAEAk4H,kBAAmB,WACf,IAAIrqK,EAAUnH,KAAKmH,QACf4yC,EAAW5yC,EAAQ4yC,SACvB,IAAKA,EACD,OAAO,KAGX,GAAI5yC,EAAQkrK,gBAAkBphF,EAC1B,OAAO2/E,GAAQ7oK,GAAGypK,kBAAkBjnK,KAAKvK,MAG7C,IAAIsyK,EAAiBpS,IAAoB/uH,OAAO4I,GAAUggF,SACtDzgF,EAAMt5C,KAAKsxK,UAAUrJ,SACrB37E,EAAOtsF,KAAKgnK,UAAUiB,SAEtBsK,EAAiBprK,EAAQorK,gBAAkBrhF,EAC3CshF,EAAYD,IAAmBrhF,GAAOqhF,IAAmBphF,EAAS9rF,EAAIkQ,EACtEk9J,EAAeF,IAAmBrhF,GAAOqhF,IAAmBphF,EAAS57E,EAAIlQ,EACzEqtK,EAAaH,IAAmBrhF,GAAOqhF,IAAmBnnJ,EAAOkhE,EAAKtzC,OAASszC,EAAKkxC,cAEpFD,EAAUjkF,EAAIikF,UAAUlB,cAAci2C,GACtC70C,EAAWnkF,EAAImkF,WAAWpB,cAAci2C,GACxC90C,EAAclkF,EAAIkkF,cAAcnB,cAAci2C,GAC9C50C,EAAapkF,EAAIokF,aAAarB,cAAci2C,GAC5Cf,EAAat0C,EAAKe,WAAWT,EAASE,EAAUD,EAAaE,GAE7DttF,EAAY,CAAC,EACjBA,EAAUqiI,GAAgBnmF,EAAKtzC,OAAOy5H,GAAgBlB,EAAWv4H,OAAOy5H,GAExE,IAGIxhC,EAAY0hC,EAHZC,EAAevvK,KAAKoU,IAAI8lH,EAAQk1C,GAAgBriI,EAAUqiI,GAAgBC,EAAWD,IACrFI,EAAgBxvK,KAAKoU,IAAIgmH,EAASg1C,GAAgBriI,EAAUqiI,GAAgBC,EAAWD,IAIvFn8J,GAAMs8J,EAAcjS,KAAuBrqJ,GAAMu8J,EAAelS,IAChE1vB,EAAa1T,EACbo1C,EAAWl1C,GACJo1C,EAAgBD,GACvB3hC,EAAaxT,EACbk1C,EAAWn1C,IAEXyT,EAAa1T,EACbo1C,EAAWj1C,GAGf,IAAIo1C,EAAc7hC,EAAWuhC,IAAcG,EAASH,GAAavhC,EAAWuhC,IAAc,EAG1F,OAFApiI,EAAUoiI,GAAalmF,EAAK/N,SAASi0F,GAAaM,EAE3C5S,IACF9vH,UAAUA,EAAUhrC,EAAGgrC,EAAUjsC,GACjCgtC,OAAO4I,EAChB,IAGJiqH,GAAkBoO,GAAW,CACzBtB,aAAa,IAGjB,IAGIiC,GAAO9F,GAAWlqK,OAAO,CACzBoF,KAAM,SAASsnB,EAAQtoB,EAASojK,GAC5B0C,GAAWllK,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAE9BnH,KAAKyvB,OAASA,EACdzvB,KAAKuqK,aAAeA,EAEpBvqK,KAAKmQ,QACT,EAEAzC,KAAM,WACF1N,KAAKmH,QAAQ6F,SAAU,CAC3B,EAEAS,KAAM,WACFzN,KAAKmH,QAAQ6F,SAAU,CAC3B,EAEAmD,OAAQ,WACJ,IAAI8iH,EAAWjzH,KAEXmH,EAAUnH,KAAKmH,QAEnB,GAAIA,EAAQ6F,QAAS,CACjB,IAMIjB,EAAOC,EANPsoB,EAAQntB,EAAQmtB,MAChBgkE,EAAOnxF,EAAQmxF,KACfh/C,EAAM,IAAIytH,GACViM,EAAa,WAAc,OAAO//C,CAAU,EAC5CjjH,EAAOsoF,EAAKtoF,KACZ8wB,EAAO9gC,KAAKyvB,OAAOqR,KAGvB,GAAIg2F,GAAQxiG,IAAUA,EAAMtnB,QAAS,CACjC,IAAIimK,EAAe5P,GAAY/uI,GAC3B2+I,EACAnyI,EAAOmyI,EAAajzK,KAAKyvB,QAClB6E,EAAMrjB,SACb6vB,EAAO9gC,KAAKuqK,aAAat5J,OAAOiiK,KAAK5+I,EAAMrjB,OAAQ6vB,IAGlDxM,EAAM28F,QACP38F,EAAM28F,MAAQ38F,EAAMhnB,WAAauzJ,EA3C3B,OA2C0DvoE,EAAKw8D,YAGzE90J,KAAKs0B,MAAQ,IAAIs8I,GAAQ9vI,EAAMt4B,EAAW,CAAC,EAAG8rB,IAC9Ct0B,KAAKs0B,MAAM6+I,SAAWH,EAElB1+I,EAAMhnB,WAAauzJ,GAAW/pC,GAAQ9mH,KAClCsoF,EAAK5yF,OAAS66J,EACdvwJ,EAAO3M,KAAK8V,IAAInZ,KAAKs0B,MAAMglB,IAAIvtC,QAAS/L,KAAKs0B,MAAMglB,IAAIttC,WAEvDD,EAAQ/L,KAAKs0B,MAAMglB,IAAIvtC,QACvBC,EAAShM,KAAKs0B,MAAMglB,IAAIttC,UAE5BstC,EAAI3sB,KAAK3sB,KAAKs0B,MAAMglB,KAE5B,CAEAg/C,EAAKvsF,MAAQA,GAASiE,GA7DV,EA8DZsoF,EAAKtsF,OAASA,GAAUgE,GA9DZ,EAgEZ,IAAI04C,EAAS,IAAIglH,GAAallK,EAAW,CAAC,EAAG8vF,IAC7C5vC,EAAOyqH,SAAWH,EAElBhzK,KAAK0oD,OAASA,EACd1oD,KAAKm6C,OAAOuO,GAER1oD,KAAKs0B,OACLt0B,KAAKm6C,OAAOn6C,KAAKs0B,OAGrBo0B,EAAO2pF,OAAO,IAAI00B,IAClB/mK,KAAKozK,WAAa95H,EAAI3sB,KAAK+7B,EAAOpP,IACtC,CACJ,EAEA+4F,OAAQ,SAAS20B,GACb,IAWQqM,EAAW/5H,EAAKi0H,EAXpBl7C,EAAMryH,KACNmH,EAAUkrH,EAAIlrH,QACdmtB,EAAQ+9F,EAAI/9F,MACZo0B,EAAS2pE,EAAI3pE,OACb0qH,EAAa/gD,EAAI+gD,WACjB70F,EAASyoF,EAAUzoF,SACnB/2E,EAASL,EAAQo+J,KAAK/9J,OACtB8F,EAAWnG,EAAQmG,SAGnBnG,EAAQ6F,UAGJyoB,GAAQnoB,EAAU,CAAE8d,EAAME,IACtBhe,IAAa8d,GACbmiJ,EAAa6F,EAAWhM,QAAQJ,EAAW15J,GAAU8iC,WAAW5oC,EAAQw/J,EAAUzoF,SAASp6E,EAAIivK,EAAW70F,SAASp6E,GAE/GgD,EAAQo+J,KAAKv4J,UACbqmK,EAAY,CAAErM,EAAU/oF,GAAIM,EAAOp6E,GACnCnE,KAAKszK,WAAa,CACdD,EACA,CAAE9F,EAAWpvF,GAAII,EAAOp6E,IAE5Bm1C,EAAMi0H,EAAWnmK,QAAQ6/J,UAAUoM,MAGvC9F,EAAa6F,EAAWhM,QAAQJ,EAAW15J,GAAU8iC,UAAU5oC,EAAQw/J,EAAUzoF,SAASp6E,EAAIivK,EAAW70F,SAASp6E,GAE9GgD,EAAQo+J,KAAKv4J,UACbqmK,EAAY,CAAErM,EAAU7oF,GAAII,EAAOp6E,GACnCnE,KAAKszK,WAAa,CACdD,EACA,CAAE9F,EAAWtvF,GAAIM,EAAOp6E,IAE5Bm1C,EAAMi0H,EAAWnmK,QAAQ6/J,UAAUoM,KAIvC/lK,IAAa6jF,GACbo8E,EAAa6F,EAAWhM,QAAQJ,EAAW15J,GAAU8iC,UAAU42H,EAAUzoF,SAASn5E,EAAIguK,EAAW70F,SAASn5E,EAAGoC,GAEzGL,EAAQo+J,KAAKv4J,UACbqmK,EAAY,CAAE90F,EAAOn5E,EAAG4hK,EAAU5oF,IAClCp+E,KAAKszK,WAAa,CACdD,EACA,CAAE90F,EAAOn5E,EAAGmoK,EAAWrvF,KAE3B5kC,EAAMi0H,EAAWnmK,QAAQ6/J,UAAUoM,MAGvC9F,EAAa6F,EAAWhM,QAAQJ,EAAW15J,GAAU8iC,UAAU42H,EAAUzoF,SAASn5E,EAAIguK,EAAW70F,SAASn5E,GAAIoC,GAE1GL,EAAQo+J,KAAKv4J,UACbqmK,EAAY,CAAE90F,EAAOn5E,EAAG4hK,EAAU9oF,IAClCl+E,KAAKszK,WAAa,CACdD,EACA,CAAE90F,EAAOn5E,EAAGmoK,EAAWnvF,KAE3B9kC,EAAMi0H,EAAWnmK,QAAQ6/J,UAAUoM,KAK3C3qH,GACAA,EAAO2pF,OAAOk7B,GAGdj5I,IACAA,EAAM+9G,OAAOk7B,GACT7kH,IACIvhD,EAAQmtB,MAAMhnB,WAAa4zJ,GAC3B5sI,EAAMglB,IAAI8tH,QAAQ1+G,EAAOpP,IAAKhsC,GAElCgnB,EAAM+9G,OAAO/9G,EAAMglB,OAI3Bt5C,KAAKutK,WAAaA,EAClBvtK,KAAKgnK,UAAYA,EACjBhnK,KAAKs5C,IAAMA,GAAOi0H,EAE1B,EAEA5C,aAAc,WACVsC,GAAWllK,GAAG4iK,aAAapgK,KAAKvK,MAChCA,KAAKihJ,OAAO95I,QAAQ+jK,OAASlrK,KAAKmH,QAAQ+jK,OAEtClrK,KAAKmH,QAAQ6F,SACbhN,KAAKuzK,YAEb,EAEA7I,aAAc,WACV,IAAIz3C,EAAWjzH,KAEXmH,EAAUnH,KAAKmH,QACf2kK,EAAe3kK,EAAQ85I,OACvB95I,EAAQ6F,SAAW8+J,GACnB9rK,KAAKihJ,OAAS6qB,EAAanpK,EAAEI,OAAO/C,KAAKyvB,OAAQ,CAC7CnlB,OAAQtK,KAAKoqK,YACb99E,KAAMtsF,KAAKgnK,UAAUiB,SACrB9gK,QAAS,CACL2tJ,WAAY3tJ,EAAQ2tJ,WACpB4X,OAAQvlK,EAAQ2tJ,WAChBx8D,KAAMnxF,EAAQmxF,KACdhkE,MAAOntB,EAAQmtB,MACfixI,KAAMp+J,EAAQo+J,KACdj4J,SAAUnG,EAAQmG,SAClBN,QAAS7F,EAAQ6F,SAErB29J,aAAc,WACV13C,EAAS03C,eACT13C,EAASonB,iBACT,IAAIm5B,EAAgBvgD,EAASguB,OAE7B,cADOhuB,EAASguB,OACTuyB,CACX,KAEJxzK,KAAK4qK,aAELqC,GAAWllK,GAAG2iK,aAAangK,KAAKvK,KAExC,EAEAuzK,WAAY,WACR,IAAIpsK,EAAUnH,KAAKmH,QAAQo+J,KAE3B,GAAIvlK,KAAKszK,WAAY,CACjB,IAAI/jI,EAAOg/F,EAAKvQ,WAAWh+H,KAAKszK,WAAY,CACxC1zC,OAAQ,CACJ3O,MAAO9pH,EAAQ8pH,MACfllH,MAAO5E,EAAQ4E,MACf8yI,SAAU13I,EAAQ03I,YAI1B6jB,EAAiBnzH,GACjBvvC,KAAKihJ,OAAO9mG,OAAO5K,EACvB,CACJ,EAEArlB,MAAO,SAASqJ,EAAQ5uB,GACpB,IAAI0yB,EAAOr3B,KAAKwmK,UAAU7hK,GAErB4uB,EAAOnpB,QAAQ22J,EAAY1pI,IAC5B1yB,EAAEwE,gBAEV,EAEAsqK,KAAM,SAASlgJ,EAAQ5uB,GACnB,IAAI0yB,EAAOr3B,KAAKwmK,UAAU7hK,GAErB4uB,EAAOnpB,QAAQ42J,EAAY3pI,IAC5B1yB,EAAEwE,gBAEV,EAEAmlB,IAAK,SAASiF,EAAQ5uB,GAClB,IAAI0yB,EAAOr3B,KAAKwmK,UAAU7hK,GAE1B4uB,EAAOnpB,QAAQ62J,EAAY5pI,EAC/B,EAEAmvI,UAAW,SAAS7hK,GAChB,IAAIwC,EAAUnH,KAAKmH,QAEnB,OAAOxE,EAAEI,OAAO/C,KAAKyvB,OAAQ,CACzB5jB,QAASysH,GAAa3zH,GACtBm8B,KAAMg2F,GAAQ3vH,EAAQmtB,OAASntB,EAAQmtB,MAAMwM,KAAO,GACpDmgH,OAAQjhJ,KAAKihJ,QAErB,IAGJ+iB,GAAkB+O,GAAM,CACpBz6E,KAAM,CACFtrF,SAAS,EACTtH,KAAM66J,GAEVjsI,MAAO,CACHhnB,SAAUuzJ,EACV7zJ,SAAS,EACTkkI,MAAOjgD,EACPmpE,OAAQnpE,GAEZs0E,KAAM,CACFv4J,SAAS,GAEbA,SAAS,EACTM,SAAU4jF,EACVl3C,OAAQ,IAGZ,IAUI05H,GAVwB,CACxBziK,OAAQ,SAAUA,EAAQvI,GAAS,OAAOA,CAAO,EAEjD+I,SAAU,SAAU/I,GAAS,OAAOA,CAAO,EAE3C4V,UAAW,SAAU5V,GAAS,OAAO,IAAIiG,KAAKjG,EAAQ,EAEtD8M,SAAU,WAAc,OAAO,CAAG,GAKlCm+J,GAAc/rK,EAAM7E,OAAO,CAE/B,GAEA4wK,GAAYx8I,SAAW,SAASmsI,GAC5BoQ,GAAYpQ,CAChB,EAEI7iK,OAAOs8H,kBACPt8H,OAAOs8H,iBAAiB42C,GAAa,CACjCprB,eAAgB,CACZt4H,IAAK,WACD,OAAOyjJ,EACX,KAMZ,IAAIE,GAAuB,uBAEvBC,GAAgBjsK,EAAM7E,OAAO,CAC7BoF,KAAM,SAAS2rK,GACX9zK,KAAK+zK,aAAeD,CACxB,EAEAZ,KAAM,SAASc,GAEX,IADA,IAAI36J,EAAS,GAAI0X,EAAMzpB,UAAUE,OAAS,EAClCupB,KAAQ,GAAI1X,EAAQ0X,GAAQzpB,UAAWypB,EAAM,GAErD,IAAIkjJ,EAAOj0K,KAAKi0K,KAEhB,OAAIrrK,GAASorK,IAAiBA,EAAatjK,MAAMkwJ,GACtCqT,EAAKhjK,OAAO7I,MAAM6rK,EAAM,CAAED,GAAe51J,OAAQ/E,IAGrD46J,EAAKxiK,SAAS4H,EAAO,GAAI26J,EACpC,EAEAE,WAAY,SAASF,EAAc36J,EAAQ86J,GACvC,IAAIF,EAAOj0K,KAAKi0K,KAahB,OAVIrrK,GAASorK,IAAiBA,EAAatjK,MAAMkwJ,GACpCoT,EAAavxK,QAAQmxK,IAAsB,SAASljK,EAAO4I,EAAOC,GACvE,IAAI7Q,EAAQ2Q,EAAOG,SAASF,EAAO,KAEnC,OAAO26J,EAAKxiK,SAAS/I,EAAO6Q,EAAoBA,EAAkBvO,UAAU,GAAK,GAAImpK,EACzF,IAESF,EAAKxiK,SAAS4H,EAAO,GAAI26J,EAAcG,EAIxD,IAGA1zK,OAAOs8H,kBACPt8H,OAAOs8H,iBAAiB82C,GAAc9rK,GAAI,CACtCksK,KAAM,CACFhkJ,IAAK,WACD,OAAOjwB,KAAK+zK,cAAgBJ,GAAYprB,cAC5C,EACAr4H,IAAK,SAASxnB,GACV1I,KAAK+zK,aAAerrK,CACxB,KAKZ,IAqCI0rK,GArCAC,GAAezsK,EAAM7E,OAAO,CAC5BoF,KAAM,SAASmsK,EAAOt4I,QACF,IAAZA,IAAsBA,EAAU,CAAC,GAErCh8B,KAAK+zK,aAAe/3I,EAAQ83I,YAC5B9zK,KAAKsK,OAAS0xB,EAAQ1xB,QAAUgqK,EAChCt0K,KAAKiR,OAAS,IAAI4iK,GAAc73I,EAAQ83I,aACxC9zK,KAAKs0K,MAAQA,EACbt0K,KAAKogJ,IAAMttI,QAAQkpB,EAAQokH,IAC/B,EAEAxrH,OAAQ,SAASxyB,EAAMi1B,GACfr3B,KAAKs0K,OACLt0K,KAAKs0K,MAAMlqK,QAAQhI,EAAMi1B,EAEjC,EAEAk9I,WAAY,SAASpvI,GACjB,IAAIqvI,IAAax0K,KAAKs0K,OAAS,CAAC,GAAGntK,SAAW,CAAC,GAAGqtK,SAClD,OAAOA,GAAYA,EAASC,OAAStvI,CACzC,IAGA1kC,OAAOs8H,kBACPt8H,OAAOs8H,iBAAiBs3C,GAAatsK,GAAI,CACrCksK,KAAM,CACFhkJ,IAAK,WACD,OAAOjwB,KAAK+zK,cAAgBJ,GAAYprB,cAC5C,EACAr4H,IAAK,SAASxnB,GACV1I,KAAK+zK,aAAerrK,EACpB1I,KAAKiR,OAAOgjK,KAAOvrK,CACvB,KAOZ,IAAIgsK,GAAmB9sK,EAAM7E,OAAO,CAEpC,GAEA2xK,GAAiBv9I,SAAW,SAASmsI,GACjC8Q,GAAY9Q,CAChB,EAEAoR,GAAiBttH,OAAS,SAASv7C,EAASxB,GACxC,GAAI+pK,GACA,OAAOA,GAAUhtH,OAAOv7C,EAASxB,EAEzC,EAEA,IAAIsqK,GAAW,CACdN,aAAcA,GACdK,iBAAkBA,GAClBb,cAAeA,GACfF,YAAaA,GACbvQ,gBAAiBA,IAGlB,SAASwR,GAAeztK,EAAS0tK,GAC7B,IAAIC,EAAQ3tK,EAAQ2tK,MAChBC,EAAQ5tK,EAAQ4tK,MAChBznK,EAAWnG,EAAQmG,SAEnB4uC,EAAO,IAAIqyF,EAAK,CAChB3O,OAAQ,CACJ7zH,MAAO8oK,EAAY9oK,MACnBklH,MAAO4jD,EAAY5jD,SAc3B,OAVI9pH,EAAQqrC,SACR0J,EAAKM,OAAOs4H,EAAOxnK,GACdu/H,OAAOioC,EAAQD,EAAY7kK,KAAM1C,GAEtC4uC,EAAKM,OAAOlvC,EAAUynK,GACjBloC,OAAOv/H,EAAUynK,EAAQF,EAAY7kK,MAG9C0yJ,EAAiBxmH,GAEVA,CACX,CAEA,SAAS84H,GAAmB7tK,EAAS8tK,GACjC,IAAI5B,EAAYlsK,EAAQksK,UACpB6B,EAAU/tK,EAAQ+tK,QAClB5nK,EAAWnG,EAAQmG,SAEnBi4J,EAAO,IAAIh3B,EAAK,CAChB3O,OAAQ,CACJ7zH,MAAOkpK,EAASlpK,MAChBklH,MAAOgkD,EAAShkD,MAChB4tB,SAAUo2B,EAASp2B,YAc3B,OAVI13I,EAAQqrC,SACR+yH,EAAK/oH,OAAO62H,EAAW/lK,GAClBu/H,OAAOqoC,EAAS5nK,GAErBi4J,EAAK/oH,OAAOlvC,EAAU+lK,GACjBxmC,OAAOv/H,EAAU4nK,GAG1BxS,EAAiB6C,GAEVA,CACX,CAEA,IAAI4P,GAAOnL,GAAajnK,OAAO,CAC3BoF,KAAM,SAAShB,EAASojK,QACC,IAAjBA,IAA2BA,EAAe,IAAI8J,IAElDrK,GAAajiK,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAEhCnH,KAAKuqK,aAAeA,EAEfvqK,KAAKmH,QAAQ6F,UACdhN,KAAKmH,QAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAAS,CACxCiuK,OAAQ,CACJpoK,SAAS,GAEbu4J,KAAM,CACFv4J,SAAS,GAEb+rC,OAAQ,EACRs8H,cAAe,EACfC,cAAe,KAIvBt1K,KAAKmH,QAAQouK,WAAa/sK,EAAW,CAAC,EAAG,CACrCyoH,MAAOjxH,KAAKmH,QAAQo+J,KAAKt0C,MACzBllH,MAAO/L,KAAKmH,QAAQo+J,KAAKx5J,MACzBiB,QAAShN,KAAKmH,QAAQquK,gBAAkB98B,GACzC14I,KAAKmH,QAAQouK,WAAY,CACxBvlK,KAAMhQ,KAAKmH,QAAQmuK,cACnBpkC,MAAOlxI,KAAKmH,QAAQquK,gBAGxBx1K,KAAKmH,QAAQsuK,WAAajtK,EAAW,CAAC,EAAG,CACrCyoH,MAAOjxH,KAAKmH,QAAQo+J,KAAKt0C,MACzBllH,MAAO/L,KAAKmH,QAAQo+J,KAAKx5J,MACzBiB,QAAShN,KAAKmH,QAAQuuK,gBAAkBh9B,GACzC14I,KAAKmH,QAAQsuK,WAAY,CACxBzlK,KAAMhQ,KAAKmH,QAAQkuK,cACnBnkC,MAAOlxI,KAAKmH,QAAQuuK,gBAGxB11K,KAAK21K,aAEA31K,KAAKmH,QAAQyuK,cACd51K,KAAK61K,eAGT71K,KAAK81K,cACL91K,KAAK+1K,aACT,EAEAJ,WAAY,WACZ,EAEAK,YAAa,WACT,MAAO,CACHt/J,IAAK1W,KAAKmH,QAAQiuK,OAAOvwH,KACzB1rC,IAAKnZ,KAAKi2K,cAElB,EAEAC,uBAAwB,SAASC,GAC7B,IAAIp8H,EAAWo8H,EAAap8H,SAExB+oH,GAAS/oH,KACTo8H,EAAa9D,cAAgBt4H,EAASm3F,MACtCilC,EAAap8H,SAAWA,EAASqgF,MAEzC,EAEAy7C,aAAc,WACV,IAAI5iD,EAAWjzH,KAEXmH,EAAUnH,KAAKmH,QACf+pI,EAAQ/pI,EAAQqrC,SAAWlnB,EAAQ2lE,EACnCklF,EAAe3tK,EAAW,CAAE,EAAGrB,EAAQiuK,OAAQ,CAC/ClkC,MAAOA,EACPl3F,OAAQ7yC,EAAQ6yC,SAEhBlH,EAAOzvC,KAAK8V,IAAI,EAAGg9J,EAAarjI,MAIpC,GAFA9yC,KAAKo2K,cAEDD,EAAanpK,QAAS,CACtBhN,KAAKk2K,uBAAuBC,GACE,SAA1BA,EAAap8H,WACbo8H,EAAap8H,SAAW,EACxB5yC,EAAQkvK,kBAAmB,GAI/B,IADA,IAAIpiH,EAAQj0D,KAAKg2K,cACRpsK,EAAMqqD,EAAMv9C,IAAK9M,EAAMqqD,EAAM96C,IAAKvP,GAAOkpC,EAAM,CACpD,IAAIwjI,EAAe,CAAEh9J,MAAO1P,EAAK0R,MAAO24C,EAAM96C,KAC1Cmb,EAAQ2+F,EAASsjD,gBAAgB3sK,EAAKusK,EAAcG,GACpDhiJ,IACA2+F,EAAS94E,OAAO7lB,GAChB2+F,EAASmiD,OAAOzzK,KAAK2yB,GAE7B,CACJ,CACJ,EAEA8hJ,YAAa,WACTp2K,KAAKu1C,SAAWlX,GAAKr+B,KAAKu1C,UAAU,SAAU1R,GAAS,QAASA,aAAiBuuI,GAAY,IAC7FpyK,KAAKo1K,OAAS,EAClB,EAEAoB,WAAY,WACR,IAAIvjD,EAAWjzH,KAEXA,KAAKm+C,QACLn+C,KAAKu1C,SAAWlX,GAAKr+B,KAAKu1C,UAAU,SAAU1R,GAAS,OAAOA,IAAUovF,EAAS90E,KAAO,IACxFn+C,KAAKm+C,WAAQwgG,EAErB,EAEAnoF,MAAO,WACHx2D,KAAKo2K,cACLp2K,KAAKw2K,YACT,EAEAC,QAAS,WACL,IACItvK,EADMnH,KACQmH,QACdmyC,EAFMt5C,KAEIs5C,IACV9G,EAAWrrC,EAAQqrC,SACnBwB,EAAS7sC,EAAQiuK,OAAOphI,OACxB0iI,EAAQ1iI,EAASsF,EAAI2kC,GAAK3kC,EAAI6kC,GAC9Bw4F,EAAQ3iI,EAASsF,EAAI8kC,GAAK9kC,EAAI4kC,GAC9BooE,EAAYn/I,EAAQo+J,KAAKx5J,OAAS,EAEtC,OAAOymC,EACH,IAAIu0H,GAAI2P,EAAOp9H,EAAI4kC,GAAIw4F,EAAOp9H,EAAI8kC,GAAKkoE,GACvC,IAAIygB,GAAIztH,EAAI2kC,GAAI04F,EAAOr9H,EAAI6kC,GAAKmoE,EAAWqwB,EACnD,EAEAb,YAAa,WACT,IAAI3uK,EAAUnH,KAAKmH,QACf8qK,EAAezpK,EAAW,CAC1BuxC,SAAU5yC,EAAQqrC,UAAY,GAAK,EACnC1R,KAAM,GACNkZ,OAAQ,EACR48H,YAAY,GACbzvK,EAAQg3C,OAEX,GAAI8zH,EAAajlK,SAAWilK,EAAanxI,KAAM,CAC3C,IAAIqd,EAAQ,IAAIyyH,GAAQqB,EAAanxI,KAAMmxI,GAC3CjyK,KAAKm6C,OAAOgE,GACZn+C,KAAKm+C,MAAQA,CACjB,CACJ,EAEA43H,YAAa,WACT,IAAI9iD,EAAWjzH,KAEXmH,EAAUnH,KAAKmH,QACf0vK,EAAQ1vK,EAAQ0vK,MAChB3qH,EAAQ2qH,EAAMzoK,MAAQ,GAE1BpO,KAAK62K,MAAQ,GAEb,IAAK,IAAItvK,EAAI,EAAGA,EAAI2kD,EAAM1kD,OAAQD,IAAK,CACnC,IAAI4nC,EAAO3mC,EAAW,CAAC,EAAGquK,EAAO3qH,EAAM3kD,IACvC4nC,EAAKzmC,MAAQuqH,EAAS6jD,eAAe3nI,EAAKzmC,OAE1C,IAAIquK,EAAO,IAAIhE,GAAK,CAChBrqK,MAAOymC,EAAKzmC,MACZo4B,KAAMqO,EAAK7a,MAAMwM,KACjB29B,SAAUtvB,GACXA,EAAM8jF,EAASs3C,cAEdwM,EAAK5vK,QAAQ6F,UACT8pH,GAAQigD,EAAK5vK,QAAQmG,UACjBnG,EAAQqrC,WAAa/c,GAAQshJ,EAAK5vK,QAAQmG,SAAU,CAAE8d,EAAME,IAC5DyrJ,EAAK5vK,QAAQmG,SAAWnG,EAAQkP,QAAU+U,EAAOE,EACzCnkB,EAAQqrC,UAAa/c,GAAQshJ,EAAK5vK,QAAQmG,SAAU,CAAE4jF,EAAKC,MACnE4lF,EAAK5vK,QAAQmG,SAAWnG,EAAQkP,QAAU86E,EAASD,GAGnD/pF,EAAQqrC,SACRukI,EAAK5vK,QAAQmG,SAAWnG,EAAQkP,QAAU+U,EAAOE,EAEjDyrJ,EAAK5vK,QAAQmG,SAAWnG,EAAQkP,QAAU86E,EAASD,EAG3D+hC,EAAS94E,OAAO48H,GAChB9jD,EAAS4jD,MAAMl1K,KAAKo1K,GAE5B,CACJ,EAEAD,eAAgB,SAASpuK,GACrB,OAAOA,CACX,EAEAgiK,aAAc,WACVV,GAAajiK,GAAG2iK,aAAangK,KAAKvK,MAElCA,KAAKg3K,iBACT,EAEArM,aAAc,WACVX,GAAajiK,GAAG4iK,aAAapgK,KAAKvK,MAElCA,KAAK8uK,mBACL9uK,KAAKuzK,YACT,EAEA0D,gBAAiB,WACb,IAAIC,EAAYl3K,KAAKm3K,WAQrB,OAPKD,IACDA,EAAYl3K,KAAKm3K,WAAa,IAAI1mC,EAAM,CACpCz2F,QAAS,IAEbh6C,KAAKgrK,aAAahrK,KAAKm3K,aAGpBD,CACX,EAEAE,YAAa,SAASC,GAClB,IAAIlwK,EAAUnH,KAAKmH,QACfsvK,EAAUz2K,KAAKy2K,UACfziI,EAAS7sC,EAAQiuK,OAAOphI,OACxBsjI,EAAYnwK,EAAQsuK,WAAWzoK,QAAU7F,EAAQmwK,UAAY,EAC7DC,EAAkB,CAGlB/kI,SAAUrrC,EAAQqrC,UAGtB,SAASriC,EAAOqnK,EAAe3C,EAAa4C,GACxC,IAAIn8J,EAAQk8J,EAAchwK,OACtBsrC,EAAOzvC,KAAK8V,IAAI,EAAG07J,EAAY/hI,MAEnC,GAAI+hI,EAAY7nK,QACZ,IAAK,IAAIzF,EAAIstK,EAAYhwH,KAAMt9C,EAAI+T,EAAO/T,GAAKurC,EACvCgkF,GAAQ2gD,IAAclwK,EAAIkwK,GAAa,IAI3CF,EAAgBzC,MAAQ9gI,EAASyiI,EAAQt4F,GAAKs4F,EAAQt4F,GAAK02F,EAAY7kK,KACvEunK,EAAgBxC,MAAQ/gI,EAASyiI,EAAQv4F,GAAK22F,EAAY7kK,KAAOymK,EAAQv4F,GACzEq5F,EAAgBjqK,SAAWkqK,EAAcjwK,GAEzC8vK,EAAUl9H,OAAOy6H,GAAe2C,EAAiB1C,IAG7D,CAEA1kK,EAAOnQ,KAAK03K,wBAAyBvwK,EAAQsuK,YAC7CtlK,EAAOnQ,KAAK23K,wBAAyBxwK,EAAQouK,WAAY+B,EAAYnwK,EAAQywK,UACjF,EAEArE,WAAY,WACR,IAAIpsK,EAAUnH,KAAKmH,QACfo+J,EAAOp+J,EAAQo+J,KACfkR,EAAUz2K,KAAKy2K,UAEnB,GAAIlR,EAAKx5J,MAAQ,GAAKw5J,EAAKv4J,QAAS,CAChC,IAAIuiC,EAAO,IAAIg/F,EAAK,CAChB3O,OAAQ,CACJ7zH,MAAOw5J,EAAKx5J,MACZklH,MAAOs0C,EAAKt0C,MACZ4tB,SAAU0mB,EAAK1mB,YAQvBtvG,EAAKiN,OAAOi6H,EAAQx4F,GAAIw4F,EAAQv4F,IAC3B2uD,OAAO4pC,EAAQt4F,GAAIs4F,EAAQr4F,IAE5Bj3E,EAAQ0wK,aACRnV,EAAiBnzH,GAGrB,IAAIglB,EAAQv0D,KAAK83K,WAAa,IAAIrnC,EAClCl8E,EAAMpa,OAAO5K,GAEbvvC,KAAKihJ,OAAO9mG,OAAOoa,GACnBv0D,KAAKo3K,YAAY7iH,EACrB,CACJ,EAEAwjH,kBAAmB,WACf,IAAI5wK,EAAUnH,KAAKmH,QACf6wK,EAAW,EAUf,OARI7wK,EAAQsuK,WAAWzoK,SAAW7F,EAAQouK,WAAWvoK,QACjDgrK,EAAW30K,KAAK8V,IAAIhS,EAAQsuK,WAAWzlK,KAAM7I,EAAQouK,WAAWvlK,MACzD7I,EAAQsuK,WAAWzoK,QAC1BgrK,EAAW7wK,EAAQsuK,WAAWzlK,KACvB7I,EAAQouK,WAAWvoK,UAC1BgrK,EAAW7wK,EAAQouK,WAAWvlK,MAG3BgoK,CACX,EAEAlJ,iBAAkB,WACd,IACI3nK,EADMnH,KACQmH,QACdmyC,EAFMt5C,KAEIs5C,IACVw7G,EAAa3tJ,EAAQ2tJ,WAErBA,IACA90J,KAAKi4K,gBAAkB1pC,EAAKc,SAAS/1F,EAAI2uH,SAAU,CAC/Cv0I,KAAM,CACFu9F,MAAO6jC,GAEXl1B,OAAQ,OAGZ5/H,KAAKihJ,OAAO9mG,OAAOn6C,KAAKi4K,iBAEhC,EAEAjB,gBAAiB,WACb,IAAI/jD,EAAWjzH,KAEXmH,EAAUnH,KAAKmH,QACf+wK,EAAY/wK,EAAQ+wK,WAAa,GACjC1lI,EAAWrrC,EAAQqrC,SACnB2lI,EAAWn4K,KAAKm4K,SAEpB,GAAyB,IAArBD,EAAU1wK,OAAd,CAUA,IANA,IAAI+sD,EAAQv0D,KAAKo4K,eAAiB,IAAI3nC,EAAM,CACxCz2F,QAAS,IAGTq+H,EAAUh6I,GAAKr+B,KAAK4uF,KAAK0pF,MAAM,SAAUnzI,GAAQ,OAAOA,EAAKh+B,QAAQqrC,WAAaygF,EAAS9rH,QAAQqrC,QAAU,IAAG,GAE3G5oC,EAAM,EAAGA,EAAMsuK,EAAU1wK,OAAQoC,IAAO,CAC7C,IAAIulC,EAAO+oI,EAAUtuK,GACjB2uK,OAAQ,EAAUC,OAAQ,EAC1BrC,EAAehnI,EAAK7a,MACpBA,OAAQ,EAyBZ,GAvBIke,GACA+lI,GAASF,GAAWF,EAASzB,OAAOD,UACpC+B,EAAQvlD,EAASwlD,QAAQtpI,EAAKpzB,KAAMozB,EAAK7Q,IAAI,KAE7Ci6I,EAAQtlD,EAASwlD,QAAQtpI,EAAKpzB,KAAMozB,EAAK7Q,IAAI,GAC7Ck6I,GAASH,GAAWF,EAASxB,OAAOF,WAGpCN,IACAA,EAAa/b,OAAS+b,EAAa7oK,UAAY8d,EAC/CkJ,EAAQ2+F,EAASylD,oBACbvC,EACAhnI,EACA,IAAI43H,GACAwR,EAAMt6F,GACNu6F,EAAMt6F,GACNq6F,EAAMp6F,GACNq6F,EAAMp6F,MAMI,IAAlBm6F,EAAMxsK,SAAoC,IAAnBysK,EAAMxsK,SAAgB,CAC7C,IAAI2sK,EAAW,IAAI17C,EACf,CAAEs7C,EAAMt6F,GAAIu6F,EAAMt6F,IAClB,CAAEq6F,EAAMxsK,QAASysK,EAAMxsK,WAGvBujC,EAAOg/F,EAAKc,SAASspC,EAAU,CAC/BjlJ,KAAM,CACFu9F,MAAO9hF,EAAK8hF,MACZl6F,QAASoY,EAAKpY,SAElB6oG,OAAQ,OAGZrrE,EAAMpa,OAAO5K,GACTjb,GACAigC,EAAMpa,OAAO7lB,EAErB,CACJ,CAEAt0B,KAAKgrK,aAAaz2G,EA1DlB,CA2DJ,EAEAmkH,oBAAqB,SAASpkJ,EAAO6a,EAAMmK,GAEvC,IAAsB,IAAlBhlB,EAAMtnB,QACN,OAAO,KAGX,IACI4rK,EADA93I,EAAOxM,EAAMwM,KAGjB,GAAIg2F,GAAQxiG,IAAUA,EAAMtnB,QAAS,CACjC,IAAI6rK,EAAgBxV,GAAY/uI,GAC5BukJ,EACA/3I,EAAO+3I,EAAc,CAAE/3I,KAAMA,EAAMqO,KAAMA,IAClC7a,EAAMrjB,SACb6vB,EAAO9gC,KAAKuqK,aAAat5J,OAAOiiK,KAAK5+I,EAAMrjB,OAAQ6vB,IAGlDxM,EAAM28F,QACP38F,EAAM28F,MAAQjxH,KAAKmH,QAAQiuK,OAAOnkD,MAE1C,CAMA,OAJA2nD,EAAU,IAAIhI,GAAQ9vI,EAAMxM,IACpB+9G,OAAO/4F,GACfs/H,EAAQlO,eAEDkO,EAAQ33B,MACnB,EAEA63B,gBAAiB,SAAST,GACtB,IAAIlxK,EAAUnH,KAAKmH,QACf4xK,EAAiB5xK,EAAQ4xK,eACzBC,EAAiB7xK,EAAQ6xK,eACzBpB,EAAYzwK,EAAQywK,UACpBplI,EAAWrrC,EAAQqrC,SACnBymI,EAAkBZ,EAAQlxK,QAAQo+J,KAAKv4J,QACvCsqK,EAAY0B,EAAehsK,QAAU7F,EAAQmwK,UAAY,EACzDb,EAAU4B,EAAQ5B,UAClByC,EAAUzC,EAAQjkI,EAAW,KAAO,MACpC2mI,EAAc,CACd9F,UAAWoD,EAAQjkI,EAAW,KAAO,MACrC0iI,QAASuB,EAAQjkI,EAAW,KAAO,MACnCA,SAAUA,GAEVijI,EAAa,GAEbh/I,EAAYz2B,KAAKi3K,kBAErB,SAAS9mK,EAAOqnK,EAAevC,EAAUwC,GACrC,IAAIn8J,EAAQk8J,EAAchwK,OACtBsrC,EAAOzvC,KAAK8V,IAAI,EAAG87J,EAASniI,MAEhC,GAAImiI,EAASjoK,QACT,IAAK,IAAIzF,EAAI0tK,EAASpwH,KAAMt9C,EAAI+T,EAAO/T,GAAKurC,EAAM,CAC9C,IAAIuiD,EAAM/+E,GAAMkhK,EAAcjwK,IACzBkuB,GAAQ4/D,EAAKogF,IACVluK,EAAIkwK,GAAa,GAAOwB,GAAmBC,IAAY7jF,IACvD8jF,EAAY7rK,SAAW+nF,EACvB5+D,EAAU0jB,OAAO66H,GAAmBmE,EAAalE,IAEjDQ,EAAW9zK,KAAK0zF,GAG5B,CAER,CAKA,OAHAllF,EAAOnQ,KAAK03K,wBAAyBsB,GACrC7oK,EAAOnQ,KAAK23K,wBAAyBoB,EAAgBzB,EAAYM,GAE1DnhJ,EAAU8e,QACrB,EAEA88F,OAAQ,SAAS/4F,GAcb,IAbA,IAAI+4E,EAAMryH,KACNmH,EAAUkrH,EAAIlrH,QACdiuK,EAAS/iD,EAAI+iD,OACbj3H,EAAQk0E,EAAIl0E,MACZ3L,EAAWrrC,EAAQqrC,SACnBl3B,EAAQ85J,EAAO5tK,OACf4xK,EAAS5mI,EAAWhB,EAAQC,EAC5B4nI,EAAYl7H,EAAQA,EAAM7E,IAAI8/H,KAAY,EAC1CnmK,EAAQjT,KAAK+3K,oBAAsB5wK,EAAQ4xC,OAASsgI,EAEpD3kF,IADW10F,KAAKmqK,WAAa,CAAC,GAAG7wH,KAAOA,GACtB8/H,KAClBE,EAAe,EAEV/xK,EAAI,EAAGA,EAAI+T,EAAO/T,IAAK,CAC5B,IAAIgyK,EAAYnE,EAAO7tK,GAAG+xC,IAAI8/H,KAC1BG,EAAYtmK,GAASyhF,IACrB4kF,EAAej2K,KAAK8V,IAAImgK,EAAcC,GAE9C,CAGIv5K,KAAKs5C,IADL9G,EACW,IAAIu0H,GACXztH,EAAI2kC,GAAI3kC,EAAI4kC,GACZ5kC,EAAI2kC,GAAKq7F,EAAermK,EAAOqmC,EAAI8kC,IAG5B,IAAI2oF,GACXztH,EAAI2kC,GAAI3kC,EAAI4kC,GACZ5kC,EAAI6kC,GAAI7kC,EAAI4kC,GAAKo7F,EAAermK,GAIxCjT,KAAKw5K,eACLx5K,KAAKy5K,gBACLz5K,KAAK05K,cACT,EAEAC,uBAAwB,WACpB,OAAO35K,KAAK03K,uBAChB,EAEAkC,eAAgB,SAAStlJ,GACrB,OAAOA,EAAMhb,KACjB,EAEAmgK,cAAe,WAWX,IAVA,IAGItyK,EADMnH,KACQmH,QACdiuK,EAFMp1K,KAEOo1K,OACbyE,EAAqB75K,KAAK65K,qBAC1BrnI,EAAWrrC,EAAQqrC,SACnBwB,EAAS7sC,EAAQiuK,OAAOphI,OACxBwjI,EAAgBx3K,KAAK25K,yBAEhB/vK,EAAM,EAAGA,EAAMwrK,EAAO5tK,OAAQoC,IAAO,CAC1C,IAAI0qB,EAAQ8gJ,EAAOxrK,GACfkwK,EAZO95K,KAYW45K,eAAetlJ,GACjCilJ,EAAY/mI,EAAWle,EAAMglB,IAAIttC,SAAWsoB,EAAMglB,IAAIvtC,QACtDguK,EAAoBvC,EAAcsC,GAClCE,EAAmBxC,EAAcsC,EAAS,GAC1CG,OAAgB,EAAUC,OAAc,EAE5C,GAAI1nI,EAAU,CACV,GAAIqnI,EAEAI,EADaF,GAAqBC,EAAmBD,GAAqB,EAChDR,EAAY,OAEtCU,EAAgBF,EAAqBR,EAAY,EAGrDW,EAAcD,CAClB,MACQJ,GACAI,EAAgBF,EAChBG,EAAcF,GAGdE,GADAD,EAAgBF,EAAqBR,EAAY,GACnBA,EAjC3Bv5K,KAqCFm6K,cAAc7lJ,EAAO0f,EAAQimI,EAAeC,EACzD,CACJ,EAEAC,cAAe,SAAS7lJ,EAAO0f,EAAQimI,EAAeC,QAC9B,IAAhBA,IAA0BA,EAAcD,GAE5C,IAIIG,EAJAjzK,EAAUnH,KAAKmH,QACfqrC,EAAWrrC,EAAQqrC,SACnBikI,EAAUz2K,KAAKy2K,UACf4D,EAAcr6K,KAAK+3K,oBAAsB5wK,EAAQ4xC,OAGrD,GAAIvG,EAAU,CACV,IAAI8nI,EAAS7D,EAAQt4F,GAEjBnqC,GACAsmI,GAAUD,EACV/lJ,EAAMntB,QAAQorK,eAAiBnnJ,IAE/BkvJ,GAAUD,EAAc/lJ,EAAMglB,IAAIvtC,QAClCuoB,EAAMntB,QAAQorK,eAAiBjnJ,GAGnC8uJ,EAAW9lJ,EAAMglB,IAAI5e,KAAK4/I,EAAQL,EACtC,KAAO,CACH,IAAIM,EAAS9D,EAAQv4F,GAEjBlqC,GACAumI,GAAUF,EAAc/lJ,EAAMglB,IAAIttC,SAClCsoB,EAAMntB,QAAQorK,eAAiBphF,IAE/BopF,GAAUF,EACV/lJ,EAAMntB,QAAQorK,eAAiBrhF,GAGnCkpF,EAAW,IAAIrT,GACXkT,EAAeM,EACfL,EAAaK,EAASjmJ,EAAMglB,IAAIttC,SAExC,CAEAsoB,EAAM+9G,OAAO+nC,EACjB,EAEAI,qBAAsB,SAASJ,EAAUK,GACrC,OAAIL,EAASruK,QAAU0uK,EACZ,EAGPL,EAASpuK,SAAWyuK,GACZ,IAGJ,EACZ,EAEApE,iBAAkB,WAGd,IAAKr2K,KAAKmH,QAAQkvK,kBAAoBr2K,KAAKmH,QAAQqrC,SAC/C,OAAO,EAQX,IALA,IAAIglI,EAAgBx3K,KAAK03K,wBACrBtC,EAASp1K,KAAKo1K,OACdsF,EAAQr3K,KAAKqT,IAAI0+J,EAAO5tK,OAAQgwK,EAAchwK,OAAS,GACvD4yH,EAAQ,EAEHxwH,EAAM,EAAGA,EAAM8wK,EAAO9wK,IAAO,CAClC,IAAImC,EAAQ1I,KAAKoU,IAAI+/J,EAAc5tK,EAAM,GAAK4tK,EAAc5tK,IACxDwwK,EAAWhF,EAAOxrK,GAAK0vC,IACvBqhI,EAdO36K,KAcew6K,qBAAqBJ,EAAUruK,GAMzD,GAJmB,IAAf4uK,IACAvgD,EAAQugD,IAGG,KAAXvgD,EACA,KAER,CAEA,GAAc,IAAVA,EAAa,CACb,IAAK,IAAIwgD,EAAQ,EAAGA,EAAQxF,EAAO5tK,OAAQozK,IACvCxF,EAAOwF,GAAOzzK,QAAQ4yC,SAAWqgF,EACjCg7C,EAAOwF,GAAOvoC,OAAO,IAAI00B,IAG7B,OAAO,CACX,CACJ,EAEAyS,aAAc,WACV,IACIryK,EADMnH,KACQmH,QACdg3C,EAFMn+C,KAEMm+C,MACZnK,EAAS7sC,EAAQiuK,OAAOphI,OACxBxB,EAAWrrC,EAAQqrC,SAEnB2L,IACI3L,GACA2L,EAAMh3C,QAAQ+pI,MAAQl9F,EAAS1oB,EAAQF,EACvC+yB,EAAMh3C,QAAQizJ,OAASj8G,EAAMh3C,QAAQmG,WAErC6wC,EAAMh3C,QAAQ+pI,MAAQ/yF,EAAMh3C,QAAQmG,SACpC6wC,EAAMh3C,QAAQizJ,OAASpmH,EAASk9C,EAAMC,GAG1ChzC,EAAMk0F,OAAOryI,KAAKs5C,KAE1B,EAEAogI,aAAc,WAGV,IAFA,IAAIzmD,EAAWjzH,KAEN4J,EAAM,EAAGA,EAAM5J,KAAK62K,MAAMrvK,OAAQoC,IAAO,CAC9C,IAAIulC,EAAO8jF,EAAS4jD,MAAMjtK,GACtBlB,EAAQymC,EAAKhoC,QAAQuB,MACrBmyK,OAAO,EAEP/jD,GAAQpuH,IACJuqH,EAAS6nD,iBAAiBpyK,GAC1BymC,EAAK1hC,OAEL0hC,EAAKzhC,OAGTmtK,EAAO5nD,EAAS8nD,SAASryK,IAEzBymC,EAAKzhC,OAGTyhC,EAAKkjG,OAAOwoC,GAAQ5nD,EAASwjD,UACjC,CACJ,EAEAsE,SAAU,SAASryK,GACf,OAAO1I,KAAKy4K,QAAQ/vK,EACxB,EAEA0+J,QAAS,SAAS4T,GACd,IAAIvE,EAAUuE,EAAWvE,UACrBjkI,EAAWxyC,KAAKmH,QAAQqrC,SACxB6iD,EAAM7iD,EAAWj9B,EAAIlQ,EAEzBrF,KAAKs5C,IAAI6tH,OAAOsP,EAASphF,GACrB7iD,EACAxyC,KAAKs5C,IAAIguH,OAAO,EAAGtnK,KAAKy2K,UAAUzqK,SAAWyqK,EAAQzqK,UAErDhM,KAAKs5C,IAAIguH,OAAOtnK,KAAKy2K,UAAU1qK,QAAU0qK,EAAQ1qK,QAAS,GAE9D/L,KAAKs5C,IAAI+7C,EAAM,IAAMr1F,KAAKy2K,UAAUphF,EAAM,GAAKohF,EAAQphF,EAAM,GAC7Dr1F,KAAKs5C,IAAI+7C,EAAM,IAAMr1F,KAAKy2K,UAAUphF,EAAM,GAAKohF,EAAQphF,EAAM,EACjE,EAEA4lF,cAAe,SAASvyK,EAAOvB,EAAS60B,GACpC,IAEI8E,EAFAmyF,EAAWjzH,KAGXk7K,EAAO7X,GAAYl8J,GACnBg0K,EAAc,WACd,OAAKh0K,EAAQ8J,OAINgiH,EAASs3C,aAAat5J,OAAOijK,WAChC/sK,EAAQ8J,OAAQ,CAAEvI,GAASvB,EAAQ0M,SAJ5BnL,CAMf,EAEIwyK,EAQAp6I,EAAOo6I,EAPev4K,EAAEI,OAAO,CAAC,EAAGi5B,EAAS,CACxC,QAAI8E,GAAS,OAAOq6I,GAAe,EACnCzyK,MAAOA,EACPuI,OAAQ9J,EAAQ8J,OAChB4C,QAAS1M,EAAQ0M,WAKrBitB,EAAOq6I,IAGX,OAAOr6I,CACX,EAEA+5I,KAAM,SAAS9+J,EAAOuiB,EAAIo8I,GACtB,IAAIG,EAAO76K,KAAKy4K,QAAQ18J,EAAMuiB,EAAIo8I,GAClC,GAAIG,EACA,OAAOA,EAAK5S,QAEpB,EAEAsF,WAAY,WACR,IAAIj0H,EAAMt5C,KAAKs5C,IAAIlyC,QACfguK,EAASp1K,KAAKo1K,OAClB,GAAIA,EAAO5tK,OAAQ,CACf,IAAI29B,EAAOnlC,KAAKmH,QAAQqrC,SAAWj9B,EAAIlQ,EACvC,GAAIrF,KAAKuqK,aAAagK,WAAWpvI,GAAO,CACpC,IAAIrnB,EAAS9d,KAAKo7K,iBAClB9hI,EAAInU,EAAO,IAAMrnB,EAAOhI,MACxBwjC,EAAInU,EAAO,IAAMrnB,EAAOnS,GAC5B,KAAO,CACCypK,EAAO,GAAGjuK,QAAQ6F,SAClBssC,EAAI3sB,KAAKyoJ,EAAO,GAAG97H,KAEvB,IAAI+hI,EAAYjG,EAAOA,EAAO5tK,OAAS,GACnC6zK,EAAUl0K,QAAQ6F,SAClBssC,EAAI3sB,KAAK0uJ,EAAU/hI,IAE3B,CACJ,CAEA,OAAOA,CACX,EAEA8hI,eAAgB,WAeZ,IAdA,IAEI/oD,EAAMryH,KAAKmH,QACXqrC,EAAW6/E,EAAI7/E,SACfn8B,EAAUg8G,EAAIh8G,QACdwjK,EAAqB75K,KAAK65K,qBAC1BrC,EAAgBx3K,KAAK25K,yBACrB2B,EAAc9oI,EAAWj9B,EAAIlQ,EAC7B+vK,EAASp1K,KAAKo1K,OACdmG,EAAgBllK,EAAU,EAAI,EAC9BmlK,EAAcnlK,EAAU,EAAI,EAC5BolK,EAAiB,EACjBC,EAAe,EAEV9xK,EAAM,EAAGA,EAAMwrK,EAAO5tK,OAAQoC,IAAO,CAC1C,IAAI0qB,EAAQ8gJ,EAAOxrK,GACfkwK,EAhBO95K,KAgBW45K,eAAetlJ,GACjCqnJ,OAAY,EAAUC,OAAU,EAEhC/B,GACA8B,EAAYnE,EAAcsC,EAASyB,GACnCK,EAAUpE,EAAcsC,EAAS0B,IAEjCG,EAAYC,EAAUpE,EAAcsC,GAGxC2B,EAAiBp4K,KAAK8V,IAAIsiK,EAAgBE,EAAYrnJ,EAAMglB,IAAIgiI,EAAc,IAC9EI,EAAer4K,KAAK8V,IAAIuiK,EAAcpnJ,EAAMglB,IAAIgiI,EAAc,GAAKM,EACvE,CAEA,MAAO,CACH9lK,MAAO2lK,EACP9vK,IAAK+vK,EAEb,EAEAG,WAAY,SAAS9/J,EAAMuiB,EAAI5nB,EAAKyC,EAAK2E,GACrC,IAAI3W,EAAUnH,KAAKmH,QAEnB,GAAK4U,EAAOrF,GAAOoH,EAAS,KAAOg5G,GAAQ3vH,EAAQuP,MAAQvP,EAAQuP,KAAOA,IAAUyC,EAAMmlB,GAAMxgB,EAAS,KAAOg5G,GAAQ3vH,EAAQgS,MAAQA,GAAOhS,EAAQgS,KACnJ,OAAO,KAGX,GAAKmlB,EAAK5nB,GAAOoH,EAAS,GAAO3E,EAAM4C,GAAQ+B,EAAS,EACpD,MAAO,CACHpH,IAAKqF,EACL5C,IAAKmlB,GAIb,IAAIw9I,EAAYx9I,EAAKviB,EACjBggK,EAAWhgK,EACXigK,EAAW19I,EAUf,OARIviB,EAAOrF,GAAOoH,EAAS,GACvBi+J,EAAWvjD,GAAWz8G,EAAMrF,EAAKyC,GACjC6iK,EAAWxjD,GAAWz8G,EAAO+/J,EAAWplK,EAAMolK,EAAW3iK,IAClDmlB,EAAKnlB,GAAO2E,EAAS,IAC5Bk+J,EAAWxjD,GAAWl6F,EAAI5nB,EAAKyC,GAC/B4iK,EAAWvjD,GAAWl6F,EAAKw9I,EAAWplK,EAAKyC,EAAM2iK,IAG9C,CACHplK,IAAKqlK,EACL5iK,IAAK6iK,EAEb,EAEAC,WAAY,WACR,MAAO,CACHvlK,IAAK1W,KAAKk8K,UACV/iK,IAAKnZ,KAAKm8K,UAElB,EAEAC,QAAS,WAOL,IAAI/pD,EAAMryH,KAAKmH,QAGf,OAFekrH,EAAI7/E,UAEC,EAAI,IADV6/E,EAAIh8G,SACuB,EAAI,EACjD,EAEAgmK,SAAU,WACN,IACI7pI,EADMxyC,KAAKmH,QACIqrC,SACfikI,EAAUz2K,KAAKy2K,UACfzjC,EAAWxgG,EAAWikI,EAAQzqK,SAAWyqK,EAAQ1qK,QACjDo5B,EAAOqN,EAAWj9B,EAAIlQ,EACtBi3K,EAAUt8K,KAAKo8K,UAEfG,EAAap3I,GADW,IAAZm3I,EAAgB,EAAI,GACF7qK,WAGlC,MAAO,CACH0zB,KAAMA,EACNo3I,WAAYA,EACZD,QAASA,EACT7F,QAASA,EACTzjC,SAAUA,EACVqgC,UARYoD,EAAQ8F,GAU5B,EAEAC,YAAa,SAASrgD,GAClB,IAAI9J,EAAMryH,KAAKq8K,WACXl3I,EAAOktF,EAAIltF,KACXm3I,EAAUjqD,EAAIiqD,QACdC,EAAalqD,EAAIkqD,WACjB9F,EAAUpkD,EAAIokD,QACdzjC,EAAW3gB,EAAI2gB,SAInB,OAHespC,EAAU,EAAIngD,EAAMh3F,GAAQsxI,EAAQ8F,GAAc9F,EAAQ8F,GAAcpgD,EAAMh3F,IACrE6tG,CAG5B,EAEAypC,aAAc,SAASC,EAAUzoH,GAG7B,IACIlkB,EAAQyoF,GAAWkkD,GADP,WAUhB,OANI3sI,EAAQ,EACAkkB,EAAQ5wD,KAAKqT,IAAI,EAAGq5B,GAEpBkkB,EAASA,GAAS,EAAIlkB,EAItC,EAEA8pI,mBAAoB,WAChB,OAAQ75K,KAAKmH,QAAQw1K,SACzB,EAEAC,mBAAoB,WACpB,IAGJ5Y,GAAkBmR,GAAM,CACpBC,OAAQ,CACJpoK,SAAS,EACT+sC,SAAU,EACV/F,QAAQ,EACRlB,KAAM,EACN+R,KAAM,GAEV0gH,KAAM,CACFx5J,MAAO,EACPklH,MAAOqvC,EACPtzJ,SAAS,GAEbmxC,MAAO,CACHnxC,SAAS,EACTM,SAAU2jF,GAEdwkF,WAAY,CACRvkC,MAAOgwB,EACPlxJ,KAAM,EACN60C,KAAM,EACN/R,KAAM,GAEVyiI,WAAY,CACRrkC,MAAOgwB,EACPlxJ,KAAM,EACN60C,KAAM,EACN/R,KAAM,GAEV+pI,kBAAmB,EACnBnH,cAAexU,EACfsU,cAAe98B,EACfsgC,eAAgB,CACZn0H,KAAM,EACN/R,KAAM,GAEVimI,eAAgB,CACZ/rK,SAAS,EACTjB,MAAO,EACPklH,MAAOqvC,EACPz7G,KAAM,EACN/R,KAAM,GAGViG,OAAQ,EACR/rC,SAAS,EACTqJ,SAAS,EACTsmK,WAAW,EACX9F,MAAO,CACHviJ,MAAO,CACHwM,KAAM,KAId+2I,aAAa,EACbjC,cAAc,IAGlB,IAAIkH,GAAe,eACfC,GAAU,UACVC,GAAU,UACVC,GAAQ,QACRC,GAAO,OACPC,GAAQ,QACRC,GAAS,SACTC,GAAQ,QAGRC,GAAkB,IAClBC,GAAkB,GAAKD,GACvBE,GAAgB,GAAKD,GACrBE,GAAe,GAAKD,GACpBE,GAAgB,EAAID,GACpBE,GAAiB,GAAKF,GACtBG,GAAgB,IAAMH,GACtBI,GAAgB,CAChBC,MAASF,GACT9oK,OAAU6oK,GACVI,MAASL,GACThpK,KAAQ+oK,GACRvgK,MAASsgK,GACT3mK,QAAW0mK,GACXpgK,QAAWmgK,GACXlgK,aAhBuB,GAmB3B,SAAS4gK,GAAiB94K,EAAG+W,GAIzB,OAHW/W,EAAE+D,UAAYgT,GACR/W,EAAEsS,oBAAsByE,EAAEzE,qBAEf+lK,EAChC,CAEA,SAASU,GAASrnK,EAAMsnK,GACpB,OAAO,IAAIvvK,KAAKiI,EAAK3N,UAAYi1K,EACrC,CAEA,SAASC,GAAOz1K,GACZ,IAAIoO,EAQJ,OANIpO,aAAiBiG,KACjBmI,EAASpO,EACFA,IACPoO,EAAS,IAAInI,KAAKjG,IAGfoO,CACX,CAEA,SAASsnK,GAAYxnK,EAAMgpB,QACF,IAAjBA,IAA2BA,EAAe,GAE9C,IAAIy+I,EAAiB,EACjBphK,EAAMrG,EAAKK,SAEf,IAAKnO,MAAMmU,GACP,KAAOA,IAAQ2iB,GACC,IAAR3iB,EACAA,EAAM,EAENA,IAGJohK,IAIR,OAAOJ,GAASrnK,GAAOynK,EAAiBZ,GAC5C,CAEA,SAAShgK,GAAU7G,EAAMsG,GACrB,OAAc,IAAVA,GAAmC,KAApBtG,EAAKQ,aACpBR,EAAK4G,SAAS5G,EAAKQ,WAAa,IACzB,EAIf,CAYA,SAASknK,GAAYC,EAAW71K,EAAOyxH,EAAMv6F,GACzC,IAAI9oB,EAASynK,EAEb,GAAIA,EAAW,CACX,IAAI3nK,EAAOunK,GAAOI,GACdrhK,EAAQtG,EAAKQ,WAEb+iH,IAASkjD,GAET5/J,GADA3G,EAAS,IAAInI,KAAKiI,EAAKO,cAAgBzO,EAAO,EAAG,GAC/B,GACXyxH,IAASijD,GAEhB3/J,GADA3G,EAAS,IAAInI,KAAKiI,EAAKO,cAAeP,EAAKM,WAAaxO,EAAO,GAC7CwU,GACXi9G,IAASgjD,GAEhB1/J,GADA3G,EAASwnK,GAAYF,GAAYxnK,EAAMgpB,GAAuB,EAARl3B,EAAWw0K,IAC/ChgK,GACXi9G,IAAS+iD,GAEhBz/J,GADA3G,EAAS,IAAInI,KAAKiI,EAAKO,cAAeP,EAAKM,WAAYN,EAAKI,UAAYtO,GACtDwU,GACXi9G,IAAS8iD,GAChBnmK,EA9BZ,SAAkBF,EAAMsG,GACpB,IAAIshK,EAAc,IAAI7vK,KAAKiI,GAE3B4nK,EAAYC,WAAW,EAAG,EAAG,GAE7B,IAAIC,GAAU9nK,EAAKY,oBAAsBgnK,EAAYhnK,qBAAuB+lK,GAE5E,OAAOU,GAASO,EAAaE,EAASxhK,EAAQsgK,GAClD,CAsBqBmB,CAAS/nK,EAAMlO,GACjByxH,IAAS6iD,IAChBlmK,EAASmnK,GAASrnK,EAAMlO,EAAQ60K,KAErBjmK,aAAe,GACtBR,EAAO8nK,WAAW,GAEfzkD,IAAS4iD,GAChBjmK,EAASmnK,GAASrnK,EAAMlO,EAAQ40K,IACzBnjD,IAAS2iD,KAChBhmK,EAASmnK,GAASrnK,EAAMlO,IAGxByxH,IAAS2iD,IAAgBhmK,EAAOS,kBAAoB,GACpDT,EAAO+nK,gBAAgB,EAE/B,CAEA,OAAO/nK,CACX,CAEA,SAASgoK,GAAUloK,EAAMujH,EAAMv6F,GAC3B,OAAO0+I,GAAYH,GAAOvnK,GAAO,EAAGujH,EAAMv6F,EAC9C,CAEA,SAASm/I,GAASR,EAAWpkD,EAAMv6F,GAC/B,IAAIhpB,EAAOunK,GAAOI,GAElB,OAAI3nK,GAAQkoK,GAAUloK,EAAMujH,EAAMv6F,GAAc32B,YAAc2N,EAAK3N,UACxD2N,EAGJ0nK,GAAY1nK,EAAM,EAAGujH,EAAMv6F,EACtC,CAEA,SAASo/I,GAAa95K,EAAG+W,GACrB,OAAI/W,GAAK+W,EACE/W,EAAE+D,UAAYgT,EAAEhT,WAGnB,CACZ,CAEA,SAASg2K,GAAS/5K,EAAG+W,GACjB,OAAO/W,EAAE+D,UAAYgT,CACzB,CAEA,SAASijK,GAAOx2K,GACZ,GAAIzF,EAAQyF,GAAQ,CAEhB,IADA,IAAIoO,EAAS,GACJlN,EAAM,EAAGA,EAAMlB,EAAMlB,OAAQoC,IAClCkN,EAAOnV,KAAKu9K,GAAOx2K,EAAMkB,KAG7B,OAAOkN,CACX,CAAO,GAAIpO,EACP,OAAOy1K,GAAOz1K,GAAOO,SAE7B,CAEA,SAASk2K,GAAWj6K,EAAG+W,GACnB,OAAI/W,GAAK+W,EACEijK,GAAOh6K,KAAOg6K,GAAOjjK,GAGzB/W,IAAM+W,CACjB,CAEA,SAASmjK,GAAUxoK,EAAMd,EAAOupK,GAC5B,OAAOrB,GAAiBpnK,EAAMd,GAAS+nK,GAAcwB,EACzD,CAEA,SAASC,GAAU52K,EAAOoN,EAAOupK,EAAUE,GACvC,IAAI3oK,EAAOunK,GAAOz1K,GACd6zC,EAAY4hI,GAAOroK,GAcvB,OAXIupK,IAAajC,GACJxmK,EAAKM,WAAaqlC,EAAUrlC,WAA8D,IAAhDN,EAAKO,cAAgBolC,EAAUplC,eAC9EioK,GAAUxoK,EAAM,IAAIjI,KAAKiI,EAAKO,cAAeP,EAAKM,YAAagmK,IAAQ,IAAIvuK,KAAKiI,EAAKO,cAAeP,EAAKM,WAAa,EAAG,GAAGF,UACzHqoK,IAAahC,GACZzmK,EAAKO,cAAgBolC,EAAUplC,cAAgBmoK,GAAU1oK,EAAM,IAAIjI,KAAKiI,EAAKO,cAAe,GAAIimK,GAAQ,GAAK,GAC9GiC,IAAanC,IAAQmC,IAAalC,GACjCiC,GAAUxoK,EAAM2lC,EAAW8iI,GAE3BJ,GAASroK,EAAMd,GAAS+nK,GAAcwB,IAGnCE,CACnB,CAEA,SAASj4J,GAASpiB,EAAG+W,EAAGk+G,GAapB,OAVIA,IAASkjD,GACFphK,EAAE9E,cAAgBjS,EAAEiS,cACpBgjH,IAASijD,GACe,GAAxB91J,GAASpiB,EAAG+W,EAAGohK,IAAcphK,EAAE/E,WAAahS,EAAEgS,WAC9CijH,IAAS+iD,GACT75K,KAAKyN,MAAMmuK,GAAShjK,EAAG/W,GAAKu4K,IAE5Bp6K,KAAKyN,MAAMmuK,GAAShjK,EAAG/W,GAAK24K,GAAc1jD,GAIzD,CAmCA,SAAS77G,GAAUw1J,EAAal9J,GAO5B,OALIhO,GAASgO,IACAk9J,EAAYx1J,UAAU1H,IAEtBunK,GAAOvnK,EAGxB,CAEA,SAAS4oK,GAAW1L,EAAa2L,GAC7B,GAAIx8K,EAAQw8K,GAAQ,CAEhB,IADA,IAAI3oK,EAAS,GACJlN,EAAM,EAAGA,EAAM61K,EAAMj4K,OAAQoC,IAClCkN,EAAOnV,KAAK2c,GAAUw1J,EAAa2L,EAAM71K,KAG7C,OAAOkN,CACX,CAEA,OAAOwH,GAAUw1J,EAAa2L,EAClC,CAEA,SAASjqK,GAASrO,EAAS2sK,GACvB,OAAIz+G,GAASluD,EAAQy4B,cACVz4B,EAAQy4B,aAGfk0I,GAAeA,EAAYt+J,SACpBs+J,EAAYt+J,WAGhB,CACX,CAoBA,IAAIkqK,GAAevK,GAAKpyK,OAAO,CAC3B4yK,WAAY,WACR31K,KAAK2/K,OAAS,CAAC,CACnB,EAEAC,eAAgB,WACZ,MAAO,EACX,EAEAx4K,MAAO,WACH,IAAIF,EAAO,IAAIw4K,GAAa/8K,EAAEI,OAAO,CAAC,EAAG/C,KAAKmH,QAAS,CACnD04K,WAAY7/K,KAAKmH,QAAQ24K,gBACzB9/K,KAAKuqK,cAGT,OAFArjK,EAAK2uK,eAEE3uK,CACX,EAEA+iK,gBAAiB,SAAS9iK,GACtB,IAAI04K,EAAa14K,EAAQ04K,YAAc,GACnCE,EAAajpD,GAAQ3vH,EAAQuP,KAC7BspK,EAAalpD,GAAQ3vH,EAAQgS,KAGjC,GAFAhS,EAAQ24K,cAAgB34K,EAAQ04K,WAAaA,GAExCE,GAAcC,IAAeH,EAAWr4K,OAAQ,CACjD,IACI2R,EADAzC,EAAMqpK,EAAa18K,KAAKyN,MAAM3J,EAAQuP,KAAO,EAI7CyC,EADA6mK,EACM74K,EAAQw1K,UAAYt5K,KAAKyN,MAAM3J,EAAQgS,KAAO,EAAI9V,KAAK6jE,KAAK//D,EAAQgS,KAEpE0mK,EAAWr4K,OAGrBL,EAAQ04K,WAAa14K,EAAQ04K,WAAWh5K,MAAM6P,EAAKyC,EACvD,CAEA,OAAOhS,CACX,EAEA84K,aAAc,WACV,IAAI94K,EAAUnH,KAAKmH,QACfK,EAASL,EAAQ04K,WAAWr4K,QAAU,EAU1C,MAAO,CACHkP,IAVM2+C,GAASluD,EAAQuP,KAAOvP,EAAQuP,IAAM,EAAI,EAWhDyC,IARAk8C,GAASluD,EAAQgS,MAAQhS,EAAQgS,IAAM,GAAM,GAAKhS,EAAQgS,IAAMnZ,KAAKkgL,aAAa/mK,IAC5E3R,GAAU,EAAIL,EAAQgS,IAAM,GAE5B3R,GAAUL,EAAQw1K,UAAY,EAAI,GAOhD,EAEA1oH,MAAO,WACH,IAAI9sD,EAAUnH,KAAKmH,QAInB,MAAO,CACHuP,IAJM2+C,GAASluD,EAAQuP,KAAOvP,EAAQuP,IAAM,EAK5CyC,IAJMk8C,GAASluD,EAAQgS,KAAOhS,EAAQgS,IAAMnZ,KAAKkgL,aAAa/mK,IAMtE,EAEAgnK,aAAc,WACV,OAAOngL,KAAKi0D,OAChB,EAEAisH,WAAY,WACR,IAAI/4K,EAAUnH,KAAKmH,QACnB,MAAO,CAAEuP,IAAK,EAAGyC,IAAK9V,KAAK8V,IAAInZ,KAAKogL,YAAc,EAAGj5K,EAAQ24K,cAAct4K,SAAWL,EAAQw1K,UAAY,EAAI,GAClH,EAEA0D,aAAc,WACV,IAAIhuD,EAAMryH,KAAKigL,eACXvpK,EAAM27G,EAAI37G,IACVyC,EAAMk5G,EAAIl5G,IACVs9J,EAAUz2K,KAAKy2K,UAInB,MAAO,CACH1mI,OAJO/vC,KAAKmH,QAAQqrC,SAAWikI,EAAQzqK,SAAWyqK,EAAQ1qK,UACzCoN,EAAMzC,GAAQ,IAGf1W,KAAKmH,QAAQkP,SAAW,EAAI,GAC5CijC,IAAKm9H,EACL//J,IAAKA,EACLyC,IAAKA,EAEb,EAEAsgK,cAAe,WACXtE,GAAKptK,GAAG0xK,cAAclvK,KAAKvK,MAC3BA,KAAKsgL,sBACT,EAEAA,qBAAsB,WAClB,IACIhnI,EADMt5C,KACIs5C,IACV87H,EAFMp1K,KAEOo1K,OAEjB,GAAIA,EAAO5tK,OAAS,EAAG,CACnB,IAAI+4K,EAAYvgL,KAAKmH,QAAQqrC,SAAWj9B,EAAIlQ,EACxCyQ,EAAQwjC,EAAIinI,EAAY,GACxB50K,EAAM2tC,EAAIinI,EAAY,GACtBC,EAAapL,EAAO,GACpBiG,EAAY/4I,GAAK8yI,IAEjBoL,EAAWlnI,IAAIinI,EAAY,GAAK50K,GAAO60K,EAAWlnI,IAAIinI,EAAY,GAAKzqK,KACvE0qK,EAAWr5K,QAAQ6F,SAAU,IAE7BquK,EAAU/hI,IAAIinI,EAAY,GAAK50K,GAAO0vK,EAAU/hI,IAAIinI,EAAY,GAAKzqK,KACrEulK,EAAUl0K,QAAQ6F,SAAU,EAEpC,CACJ,EAEA0qK,sBAAuB,WACnB,OAAO13K,KAAKygL,WAAWhL,UAC3B,EAEAkC,sBAAuB,WACnB,OAAO33K,KAAKygL,WAAWlL,UAC3B,EAEAoE,uBAAwB,WACpB,OAAO35K,KAAKygL,WAAWC,UAC3B,EAEAC,YAAa,SAASC,GAQlB,IAPA,IAAIvuD,EAAMryH,KAAKigL,eACXvpK,EAAM27G,EAAI37G,IACVyC,EAAMk5G,EAAIl5G,IACVuhK,EAAQr3K,KAAK6jE,KAAK/tD,GAClBnF,EAAU3Q,KAAKyN,MAAM4F,GACrBmqK,EAAU,GAEP7sK,GAAW0mK,GACdmG,EAAQl/K,KAAKqS,GACbA,GAAW4sK,EAGf,OAAOC,CACX,EAEAC,iBAAkB,SAASF,GAYvB,IAXA,IAAIvuD,EAAMryH,KAAKmH,QACXqrC,EAAW6/E,EAAI7/E,SACfn8B,EAAUg8G,EAAIh8G,QACdq8H,EAAQ1yI,KAAKqgL,eACbtwI,EAAQ2iG,EAAM3iG,MACduJ,EAAMo5F,EAAMp5F,IACZ5iC,EAAMg8H,EAAMh8H,IACZ2+E,EAAM/7C,GAAK9G,EAAWj9B,EAAIlQ,IAAMgR,EAAU,EAAI,IAC9CwqK,EAAU7gL,KAAK2gL,YAAYC,GAC3B1rF,EAAY,GAEPtrF,EAAM,EAAGA,EAAMi3K,EAAQr5K,OAAQoC,IACpCsrF,EAAUvzF,KAAK0zF,EAAM/+E,GAAMy5B,GAAS8wI,EAAQj3K,GAAO8M,GA75JzC,IAg6Jd,OAAOw+E,CACX,EAEAurF,SAAU,WACN,IAAIt5K,EAAUnH,KAAKmH,QACf22B,EAAQ99B,KAAK2/K,OACb1rH,EAAQj0D,KAAKigL,eACbxJ,EAAUz2K,KAAKy2K,UACf/3H,EAAO+3H,EAAQ/O,UAAYzzG,EAAMv9C,IAAM,IAAMu9C,EAAM96C,IAAMhS,EAAQkP,QAAUlP,EAAQw1K,UAEvF,GAAI7+I,EAAMijJ,QAAUriI,EAAM,CACtB,IAAIsiI,EAAW75K,EAAQouK,WAAWvoK,SAAW7F,EAAQ4xK,eAAe/rK,QACpE8wB,EAAMijJ,MAAQriI,EACd5gB,EAAM4iJ,WAAa1gL,KAAK8gL,iBAAiB,GACzChjJ,EAAM23I,WAAaz1K,KAAKihL,0BAA0BnjJ,EAAM4iJ,WAAYjK,GACpE34I,EAAMy3I,WAAayL,EAAWhhL,KAAKihL,0BAA0BjhL,KAAK8gL,iBAAiB,IAAMrK,GAAW,EACxG,CAEA,OAAO34I,CACX,EAEAmjJ,0BAA2B,SAAS/rF,EAAWuhF,GAC3C,IAAKvhF,EAAU1tF,OACX,OAAO0tF,EAQX,IALA,IAAI/vD,EAAOnlC,KAAKmH,QAAQqrC,SAAWj9B,EAAIlQ,EACnC8hE,EAAU,SAAU75D,GAAY,OAAOmpK,EAAQtxI,EAAO,IAAM73B,GAAYA,GAAYmpK,EAAQtxI,EAAO,EAAI,EAEvGx5B,EAAMupF,EAAU1tF,OAAS,EACzB0gE,EAAa,GACTf,EAAQ+tB,EAAUhtB,KAAgBA,GAAcv8D,GACpDu8D,IAKJ,IAFA,IAAIC,EAAWx8D,GAEPw7D,EAAQ+tB,EAAU/sB,KAAcA,GAAY,GAChDA,IAGJ,OAAO+sB,EAAUruF,MAAMqhE,EAAYC,EAAW,EAClD,EAEAk0G,SAAU,WACN,IAAIhqD,EAAMryH,KAAKmH,QACXqrC,EAAW6/E,EAAI7/E,SACfn8B,EAAUg8G,EAAIh8G,QACdogK,EAAUz2K,KAAKy2K,UACfzjC,EAAWxgG,EAAWikI,EAAQzqK,SAAWyqK,EAAQ1qK,QACjDo5B,EAAOqN,EAAWj9B,EAAIlQ,EACtBi3K,EAAUjmK,GAAW,EAAI,EAEzBkmK,EAAap3I,GADW,IAAZm3I,EAAgB,EAAI,GACF7qK,WAGlC,MAAO,CACH0zB,KAAMA,EACNo3I,WAAYA,EACZD,QAASA,EACT7F,QAASA,EACTzjC,SAAUA,EACVqgC,UARYoD,EAAQ8F,GAU5B,EAEAH,QAAS,WASL,OAFUp8K,KAAKmH,QACGkP,SACA,EAAI,CAC1B,EAEAoiK,QAAS,SAAS18J,EAAMuiB,EAAIo8I,GACxB,IAAIvzK,EAAUnH,KAAKmH,QACfkP,EAAUlP,EAAQkP,QAClBsmK,EAAYx1K,EAAQw1K,UACpBtqD,EAAMryH,KAAKqgL,eACXtwI,EAAQsiF,EAAItiF,MACZuJ,EAAM+4E,EAAI/4E,IACV5iC,EAAM27G,EAAI37G,IACVg8H,EAAQ1yI,KAAKq8K,WACbkE,EAAY7tC,EAAMvtG,KAClBkuI,EAAY3gC,EAAM2gC,UAElB6N,EAAU5nI,EAAIlyC,QACd+5K,GAAcrqD,GAAQx4F,GAEtBxoB,EAAQkjH,GAAej9G,EAAM,GAC7BpQ,EAAMqtH,GAAe16F,EAAIxoB,GAC7BnK,EAAMtI,KAAK8V,IAAIxN,EAAM,EAAGmK,GAMxB,IAAIguH,EAAKuvC,GAAav9J,EAAQY,GAAOq5B,EACjCyzF,EAAK6vC,IAHT1nK,EAAMtI,KAAK8V,IAAIrD,EAAOnK,IAGM,EAAI+K,GAAOq5B,EAcvC,OAZIoxI,GAAcxE,IACdn5C,EAAKM,GAGL42C,IACA52C,EAAKtL,GAAWsL,EAAIxqF,EAAIinI,EAAY,GAAIjnI,EAAIinI,EAAY,IACxD/8C,EAAKhL,GAAWgL,EAAIlqF,EAAIinI,EAAY,GAAIjnI,EAAIinI,EAAY,KAG5DW,EAAQX,EAAY,GAAKlqK,EAAUmtH,EAAKM,EACxCo9C,EAAQX,EAAY,GAAKlqK,EAAUytH,EAAKN,EAEjC09C,CACX,EAEAE,UAAW,SAASvG,GAChB,IACI0F,EADWvgL,KAAKmH,QAAQqrC,SACDj9B,EAAIlQ,EAC3BoxK,EAAUz2K,KAAKy2K,UACf4K,EAAexG,EAAKzzK,QAKxB,OAHAi6K,EAAad,EAAY,GAAK/nD,GAAWqiD,EAAK0F,EAAY,GAAI9J,EAAQ8J,EAAY,GAAI9J,EAAQ8J,EAAY,IAC1Gc,EAAad,EAAY,GAAK/nD,GAAWqiD,EAAK0F,EAAY,GAAI9J,EAAQ8J,EAAY,GAAI9J,EAAQ8J,EAAY,IAEnGc,CACX,EAEAxG,KAAM,SAAS9+J,EAAMuiB,EAAIo8I,GACrB,IAAIhkK,EAAMrT,KAAKyN,MAAM9Q,KAAKmH,QAAQuP,KAAO,GACrCZ,EAAQiG,EACRpQ,EAAM2yB,EAcV,MAZqB,iBAAVxoB,EACPA,EAAQ9V,KAAKshL,cAAcxrK,GACpBu/C,GAASv/C,KAChBA,GAASY,GAGM,iBAAR/K,EACPA,EAAM3L,KAAKshL,cAAc31K,GAClB0pD,GAAS1pD,KAChBA,GAAO+K,GAGJy+J,GAAKptK,GAAG8yK,KAAKtwK,KAAKvK,KAAM8V,EAAOnK,EAAK+uK,EAC/C,EAEA6G,mBAAoB,SAASplD,GACzB,IAAI9J,EAAMryH,KAAKmH,QACXkP,EAAUg8G,EAAIh8G,QACdsmK,EAAYtqD,EAAIsqD,UAEhB4D,EADWluD,EAAI7/E,SACQj9B,EAAIlQ,EAC3BqtI,EAAQ1yI,KAAKqgL,eACbtwI,EAAQ2iG,EAAM3iG,MACduJ,EAAMo5F,EAAMp5F,IACZ5iC,EAAMg8H,EAAMh8H,IACZyC,EAAMu5H,EAAMv5H,IACZi/B,EAAa/hC,EAAU8C,EAAMzC,EAC7B28J,EAAY/5H,EAAIinI,EAAY,GAC5BrL,EAAU57H,EAAIinI,EAAY,GAC1BlrF,EAAM8mC,EAAMokD,GAEhB,GAAIlrF,EAAMg+E,GAAah+E,EAAM6/E,EACzB,OAAO,KAGX,IAAIxsK,EAAQ0vC,GAAci9C,EAAMg+E,GAAatjI,EACzChR,EAAOr2B,EAAQ,EAQnB,OANIi0K,EACAj0K,EAAQrF,KAAKiT,MAAM5N,GACH,IAATq2B,GAAcr2B,EAAQ,GAC7BA,IAGGrF,KAAKyN,MAAMpI,EACtB,EAEA84K,YAAa,SAASrlD,GAClB,IAAI7iH,EAAQtZ,KAAKuhL,mBAAmBplD,GAEpC,OAAc,OAAV7iH,EACO,KAGJtZ,KAAKmH,QAAQ04K,WAAWvmK,EACnC,EAEAgoK,cAAe,SAAS54K,GACpB,OAAO1I,KAAKyhL,WAAW/4K,GAASrF,KAAKyN,MAAM9Q,KAAKmH,QAAQuP,KAAO,EACnE,EAEAgrK,WAAY,SAASpoK,EAAO0tC,GACxB,IAAI7/C,EAAUnH,KAAKmH,QAEnB,OAAQ6/C,EAAQ7/C,EAAQ24K,cAAgB34K,EAAQ04K,YAAYvmK,EAChE,EAEAqoK,gBAAiB,WACb,OAAQ3hL,KAAKmH,QAAQ04K,YAAc,IAAIr4K,MAC3C,EAEAo6K,eAAgB,SAAS78I,GACrB,IAAI59B,EAAUnH,KAAKmH,QACfsvK,EAAUz2K,KAAKy2K,UACfzmK,EAAO7I,EAAQqrC,SAAWikI,EAAQzqK,SAAWyqK,EAAQ1qK,QACrDkoD,EAAQ9sD,EAAQ04K,WAAWr4K,OAE3BsW,EAASxH,GAAMyuB,GADP/0B,EAAOikD,GACe0sG,GAElC,MAAO,CACHjqJ,IAAKoH,EACL3E,IAAK86C,EAAQn2C,EAErB,EAEA+jK,WAAY,SAAS9xI,EAAOirG,GACxB,IAAI1tI,EAAWjK,KAAKoU,IAAIzX,KAAKw8K,YAAYxhC,IACrCilC,EAAejgL,KAAK8hL,sBACpB7tH,EAAQgsH,EAAa9mK,IAAM8mK,EAAavpK,IACxCquB,EAAQ/kC,KAAKy8K,aAAa1sI,EAAOkkB,GACjC8tH,EAAWz0K,EAAWy3B,EACtBi9I,GAAY,EAAI10K,GAAYy3B,EAC5BruB,EAAMupK,EAAavpK,IAAMqrK,EACzB5oK,EAAM8mK,EAAa9mK,IAAM6oK,EAM7B,OAJI7oK,EAAMzC,EA5ZO,KA6ZbyC,EAAMzC,EA7ZO,IAgaV,CACHA,IAAKA,EACLyC,IAAKA,EAEb,EAEA8oK,UAAW,SAASlyI,EAAOirG,GACvB,IAAI3oB,EAAMryH,KAAKkgL,aACXgC,EAAW7vD,EAAI37G,IACfyrK,EAAW9vD,EAAIl5G,IACf86C,EAAQj0D,KAAK6hL,WAAW9xI,EAAOirG,GAEnC,MAAO,CACHtkI,IAAK8hH,GAAWvkE,EAAMv9C,IAAKwrK,EAAUC,GACrChpK,IAAKq/G,GAAWvkE,EAAM96C,IAAK+oK,EAAUC,GAE7C,EAEAlM,YAAa,WACT,IAAID,EAAch2K,KAAKg2K,cAEvB,OAAOA,EAAY78J,IAAM68J,EAAYt/J,GACzC,EAEAs/J,YAAa,WACT,IAAI7uK,EAAUnH,KAAKmH,QACfw1K,EAAYx1K,EAAQw1K,UACpBxG,EAAehvK,EAAQiuK,OACvB/iD,EAAMryH,KAAK8hL,qBAAoB,GAC/BprK,EAAM27G,EAAI37G,IACVyC,EAAMk5G,EAAIl5G,IACVrD,EAAQzS,KAAKyN,MAAM4F,GAkBvB,OAhBKimK,GAIDjmK,EAAMrT,KAAK6jE,KAAKxwD,GAChByC,EAAM9V,KAAKyN,MAAMqI,KAJjBzC,EAAMrT,KAAKyN,MAAM4F,GACjByC,EAAM9V,KAAK6jE,KAAK/tD,IAcb,CACHzC,KAPAA,EAAMy/J,EAAatxH,KACZsxH,EAAatxH,KAAOsxH,EAAarjI,KAAOzvC,KAAK6jE,MAAMxwD,EAAMy/J,EAAatxH,MAAQsxH,EAAarjI,MAE3FqjI,EAAatxH,MAIR/uC,EACZqD,KAAMhS,EAAQ04K,WAAWr4K,OAAS2R,GAAOwjK,EAAY,EAAI,GAAK,GAAK7mK,EAE3E,EAEAygK,gBAAiB,SAASj9J,EAAO68J,EAAcG,GAC3C,IAAInvK,EAAUnH,KAAKmH,QACfs3D,EAAWt3D,EAAQqtB,UAAYrtB,EAAQqtB,UAAUlb,GAAS,KAC1D4yJ,EAAWlzC,GAAe7xH,EAAQ04K,WAAWvmK,GAAQ,IAEzDg9J,EAAa73G,SAAWA,EACxB,IAAI39B,EAAO9gC,KAAKi7K,cAAc/O,EAAUiK,EAAcG,GAEtD,OAAO,IAAIlE,GAAUlG,EAAUprI,EAAMxnB,EAAOmlD,EAAU03G,EAC1D,EAEA2E,iBAAkB,SAASpyK,GACvB,IAAIurD,EAAQj0D,KAAK8hL,sBAEjB,OAAOz+K,KAAKyN,MAAMmjD,EAAMv9C,MAAQhO,GAASA,GAASrF,KAAK6jE,KAAKjT,EAAM96C,IACtE,EAEA4hK,SAAU,SAASryK,GACf,IAAIvB,EAAUnH,KAAKmH,QACfmS,EAAQ5Q,EAAQrF,KAAKyN,MAAM3J,EAAQuP,KAAO,GAC9C,OAAO1W,KAAKy4K,QAAQn/J,EACxB,EAEAogK,aAAc,WACVvE,GAAKptK,GAAG2xK,aAAanvK,KAAKvK,MAC1BA,KAAKoiL,qBACT,EAEAA,oBAAqB,WACjB,IACIvL,EADM72K,KACM62K,MACZv9H,EAFMt5C,KAEIs5C,IACd,GAAIu9H,GAASA,EAAMrvK,OAKf,IAJA,IAAI+4K,EAAYvgL,KAAKmH,QAAQqrC,SAAWj9B,EAAIlQ,EACxCyQ,EAAQwjC,EAAIinI,EAAY,GACxB50K,EAAM2tC,EAAIinI,EAAY,GAEjB32K,EAAM,EAAGA,EAAMitK,EAAMrvK,OAAQoC,IAAO,CACzC,IAAImtK,EAAOF,EAAMjtK,GACbmtK,EAAKz9H,MAAQ3tC,EAAMorK,EAAKz9H,IAAIinI,EAAY,IAAMxJ,EAAKz9H,IAAIinI,EAAY,GAAKzqK,IACxEihK,EAAKrpK,MAEb,CAER,EAEA20K,IAAK,SAASt9I,GACV,IAAIkvB,EAAQj0D,KAAK8hL,qBAAoB,GAEjC/xI,EADM/vC,KAAKqgL,eACCtwI,MACZjyB,EAASxH,GAAMyuB,EAAQgL,EAAO4wH,GAC9Buf,EAAalgL,KAAKkgL,aAClBxpK,EAAMu9C,EAAMv9C,IAAMoH,EAClB3E,EAAM86C,EAAM96C,IAAM2E,EAEtB,OAAO9d,KAAK67K,WAAWnlK,EAAKyC,EAAK,EAAG+mK,EAAW/mK,IAAK2E,EACxD,EAEAwkK,YAAa,SAASxsK,EAAOnK,GACzB,IAAI0mH,EAAMryH,KAAKmH,QACXkP,EAAUg8G,EAAIh8G,QAEdkqK,EADWluD,EAAI7/E,SACQj9B,EAAIlQ,EAC3B4uD,EAAQj0D,KAAK8hL,qBAAoB,GACjCpvC,EAAQ1yI,KAAKqgL,eACbtwI,EAAQ2iG,EAAM3iG,MAEdsjI,EADM3gC,EAAMp5F,IACIinI,GAAalqK,EAAU,EAAI,IAE3CksK,EAAYzsK,EAAMyqK,GAAalN,EAC/BmP,EAAU72K,EAAI40K,GAAalN,EAE3B38J,EAAMu9C,EAAMv9C,IAAM6rK,EAAYxyI,EAC9B52B,EAAM86C,EAAMv9C,IAAM8rK,EAAUzyI,EAC5B0yI,EAAWp/K,KAAKqT,IAAIA,EAAKyC,GACzBupK,EAAWr/K,KAAK8V,IAAIzC,EAAKyC,GAE7B,GAAIupK,EAAWD,GAriBS,IAsiBpB,MAAO,CACH/rK,IAAK+rK,EACLtpK,IAAKupK,EAGjB,EAEAzG,WAAY,WACR,OAAOj8K,KAAKi0D,OAChB,EAEAwtH,WAAY,SAAS/4K,GACjB,IAAIvB,EAAUnH,KAAKmH,QACfmS,EAAQtZ,KAAK2iL,eACb3iL,KAAK2iL,eAAe1yJ,IAAIvnB,GAjjBpC,SAAiBA,EAAOkiC,GACpB,GAAIliC,aAAiBiG,KAAM,CAEvB,IADA,IAAInH,EAASojC,EAAIpjC,OACRoC,EAAM,EAAGA,EAAMpC,EAAQoC,IAC5B,GAAIu1K,GAAWv0I,EAAIhhC,GAAMlB,GACrB,OAAOkB,EAIf,OAAQ,CACZ,CAEA,OAAOghC,EAAIj1B,QAAQjN,EACvB,CAoiB6CiN,CAAQjN,EAAOvB,EAAQ24K,eAE5D,OAAOxmK,CACX,EAEAspK,oBAAqB,WACjB,IAAIz7K,EAAUnH,KAAKmH,QACfuP,EAAM,EAaV,OAXI2+C,GAASluD,EAAQuP,OACjBA,EAAMrT,KAAKyN,MAAM3J,EAAQuP,MAUtB,CACHA,IAAKA,EACLyC,IARAk8C,GAASluD,EAAQgS,KACXhS,EAAQw1K,UAAYt5K,KAAKyN,MAAM3J,EAAQgS,KAAO9V,KAAK6jE,KAAK//D,EAAQgS,KAAO,EAEvEnZ,KAAKolE,aAAe,EAOlC,EAEA08G,oBAAqB,SAASe,GAC1B,IAEI1pK,EAFAhS,EAAUnH,KAAKmH,QACfuP,EAAM2+C,GAASluD,EAAQuP,KAAOvP,EAAQuP,IAAM,EAWhD,GAPIyC,EADAk8C,GAASluD,EAAQgS,KACXhS,EAAQgS,IACPk8C,GAASluD,EAAQuP,KAClBA,EAAMvP,EAAQ04K,WAAWr4K,OAEzBxH,KAAKkgL,aAAa/mK,KAAO,EAG/B0pK,EAAY,CACZ,IAAI3C,EAAalgL,KAAKkgL,aACtBxpK,EAAM8hH,GAAW9hH,EAAK,EAAGwpK,EAAW/mK,KACpCA,EAAMq/G,GAAWr/G,EAAK,EAAG+mK,EAAW/mK,IACxC,CAEA,MAAO,CACHzC,IAAKA,EACLyC,IAAKA,EAEb,EAEA2pK,kBAAmB,WACf,MAAO,CACHpsK,IAAK,EACLyC,IAAKnZ,KAAKkgL,aAAa/mK,KAAO,EAEtC,EAEA4pK,gBAAiB,WACb,IAAK/iL,KAAK2iL,eAGN,IAFA,IAAIK,EAAShjL,KAAK2iL,eAAiB,IAAIpf,GACnCuc,EAAgB9/K,KAAKmH,QAAQ24K,cACxBl2K,EAAM,EAAGA,EAAMk2K,EAAct4K,OAAQoC,IAC1Co5K,EAAO9yJ,IAAI4vJ,EAAcl2K,GAAMA,EAG3C,EAEAw7D,WAAY,WACR,OAAO/hE,KAAK8V,IAAInZ,KAAKmH,QAAQ24K,cAAct4K,OAAQxH,KAAKogL,YAAc,EAC1E,IAGJpc,GAAkB0b,GAAc,CAC5Bh6K,KAAM,WACN8sC,UAAU,EACVwmI,eAAgB,CACZhsK,SAAS,EACTjB,MAAO,EACPklH,MAAOqvC,GAEX8U,OAAQ,CACJp7H,OAAQ,GAEZ2iI,WAAW,EACX/G,cAAc,IAGlB,IAAIqN,GAAmB,IAEnBC,GAAmB,CACnB9lK,aAAc,eACdD,QAAS,WACTtG,QAAS,QACTqG,MAAO,QACPxI,KAAM,MACNqpK,MAAO,MACPjpK,OAAQ,UACRgpK,MAAO,QAGPqF,GAAiB,GAGjBC,GAAa,CACbtG,GAAcC,GAASC,GAASC,GAAOC,GAAMC,GAAOC,GAAQC,IAE5DgG,GAAM,MAEV,SAASC,GAAczD,EAAY0D,GAC3BA,IACA1D,EAAW5sG,YAAS0rE,GAGxB,IAAI1qF,EAAQ4rH,EAAW5sG,OAOvB,OANKhf,KACDA,EAAQ4rH,EAAW5sG,OAASyxF,GAAkBmb,IACxCnpK,IAAMynK,GAAOlqH,EAAMv9C,KACzBu9C,EAAM96C,IAAMglK,GAAOlqH,EAAM96C,MAGtB86C,CACX,CAEA,IAAIuvH,GAAiB57K,EAAM7E,OAAO,CAC9BoF,KAAM,SAAShB,GACXnH,KAAKmH,QAAUA,CACnB,EAEAs8K,eAAgB,WACZ,MAAO,CACH/sK,IAAK,EACLyC,IAAK,EAEb,EAEAuqK,aAAc,WACV,MAAO,CAAC,CACZ,EAEA18H,MAAO,WACH,MAAO,CAAC,CACZ,EAEAi1H,WAAY,WACR,MAAO,CAAC,CACZ,EAEAtpG,WAAY,WACR,OAAQ,CACZ,EAEAt5D,OAAQ,WACJ,MAAO,EACX,EAEAooK,WAAY,WACR,OAAQ,CACZ,EAEAkC,YAAa,WACT,OAAO,CACX,EAEAv+G,WAAY,WACR,OAAO,CACX,EAEAw+G,OAAQ,WACJ,OAAO,IACX,IAGAC,GAAYj8K,EAAM7E,OAAO,CACzBoF,KAAM,SAAS2N,EAAOnK,EAAKxE,GACvBnH,KAAKmH,QAAUA,EACfA,EAAQo4K,aAAep4K,EAAQo4K,cAAgB,EAE/C,IAAIuE,EAAkB38K,EAAQ28K,gBAC1BnH,EAAYx1K,EAAQw1K,UAExB38K,KAAK8V,MAAQwoK,GAAYxoK,EAAO,EAAG3O,EAAQk4K,SAAUl4K,EAAQy4B,cAC7D,IAAImkJ,EAAW/jL,KAAKgkL,iBAAiBr4K,GACjCs4K,GAAatH,GAAawC,GAAWxzK,EAAKo4K,KAAc58K,EAAQ+8K,WAEpElkL,KAAK2L,IAAM3L,KAAKgkL,iBAAiBr4K,GAAMgxK,EAAWsH,EAAY,EAAI,GAElE,IAAIvtK,EAAMvP,EAAQuP,KAAOZ,EACzB9V,KAAKmkL,WAAankL,KAAKgkL,iBAAiBttK,GACxC1W,KAAKokL,aAAeN,EAAkB9jL,KAAKmkL,WAAaztK,EAExD,IAAIyC,EAAMhS,EAAQgS,IAClB,GAAKA,EAGE,CACH,IAAImtD,GAAQq2G,GAAawC,GAAWhmK,EAAKnZ,KAAKgkL,iBAAiB7qK,KAAS,EAAI,EAC5EnZ,KAAKqkL,SAAWrkL,KAAKgkL,iBAAiB7qK,GAAK,EAAOmtD,GAClDtmE,KAAKskL,WAAaR,EAAkB9jL,KAAKgkL,iBAAiB7qK,GAAMwjK,GAAax1K,EAAQgS,GACzF,MANInZ,KAAKqkL,SAAWN,EAChB/jL,KAAKskL,WAAaR,GAAmBG,EAAYjkL,KAAK2L,IAAMA,EAO5D3L,KAAKqkL,SAAWrkL,KAAKmkL,aACrBnkL,KAAKqkL,SAAWrkL,KAAKmkL,YAErBnkL,KAAKskL,YAActkL,KAAKokL,eACxBpkL,KAAKskL,WAAatkL,KAAKgkL,iBAAiBhkL,KAAKokL,cAAc,EAAO,GAE1E,EAEAV,aAAc,WACV,MAAO,CACHhtK,IAAK1W,KAAKokL,aACVjrK,IAAKnZ,KAAKskL,WAElB,EAEAb,eAAgB,WACZ,IAAKzjL,KAAKukL,SAAU,CAChB,IAAIp9K,EAAUnH,KAAKmH,QAEfk4K,EAAWl4K,EAAQk4K,SACnBE,EAAep4K,EAAQo4K,aAEvBiF,EAASlF,GAAUt/K,KAAKokL,aAAcpkL,KAAKmkL,WAAY9E,EAAUE,GACjEkF,EAASnF,GAAUt/K,KAAKskL,WAAYtkL,KAAKmkL,WAAY9E,EAAUE,GAEnEv/K,KAAKukL,SAAW,CAAE7tK,IAAK8tK,EAAQrrK,IAAKsrK,EACxC,CAEA,OAAOzkL,KAAKukL,QAChB,EAEAv9H,MAAO,WACH,MAAO,CACHtwC,IAAK1W,KAAK8V,MACVqD,IAAKnZ,KAAK2L,IAElB,EAEAy5D,WAAY,WAGR,OAFcplE,KAAKyhL,WAAWzhL,KAAK2L,MAEjB3L,KAAKmH,QAAQw1K,UAAY,EAAI,EACnD,EAEAV,WAAY,WACR,MAAO,CACHvlK,IAAK1W,KAAKmkL,WACVhrK,IAAKnZ,KAAKqkL,SAElB,EAEA1xG,WAAY,SAASjqE,GACjB,IAAIvB,EAAUnH,KAAKmH,QACnB,OAAO9D,KAAKyN,MAAMwuK,GAAU52K,EAAO1I,KAAKmkL,WAAYh9K,EAAQk4K,SAAUl4K,EAAQo4K,cAClF,EAEAkC,WAAY,SAAS/4K,GACjB,IAAIvB,EAAUnH,KAAKmH,QACnB,OAAO9D,KAAKyN,MAAMwuK,GAAU52K,EAAO1I,KAAK8V,MAAO3O,EAAQk4K,SAAUl4K,EAAQo4K,cAC7E,EAEAD,UAAW,SAAS52K,GAChB,IAAIvB,EAAUnH,KAAKmH,QACnB,OAAOm4K,GAAU52K,EAAO1I,KAAKmkL,WAAYh9K,EAAQk4K,SAAUl4K,EAAQo4K,aACvE,EAEAoE,YAAa,WAGT,OAFa3jL,KAAK2yE,WAAW3yE,KAAKqkL,UAElB,CACpB,EAEAhrK,OAAQ,WACJ,IAAIA,EAASrZ,KAAK+kK,QAClB,IAAK1rJ,EAAQ,CACT,IAAIlS,EAAUnH,KAAKmH,QACf8sD,EAAQj0D,KAAKi8K,aACjBj8K,KAAK+kK,QAAU1rJ,EAAS,GAExB,IAAK,IAAIzC,EAAOq9C,EAAMv9C,IAAKE,GAAQq9C,EAAM96C,KACrCE,EAAO1X,KAAKiV,GACZA,EAAO0nK,GAAY1nK,EAAMzP,EAAQo4K,aAAcp4K,EAAQk4K,SAAUl4K,EAAQy4B,aAEjF,CAEA,OAAOvmB,CACX,EAEAuqK,OAAQ,SAAStqK,EAAO0tC,GACpB,IAAI7/C,EAAUnH,KAAKmH,QAEnB,OAAOm3K,GAAYt3H,EAAQhnD,KAAK8V,MAAQ9V,KAAKmkL,WAAYh9K,EAAQo4K,aAAejmK,EAAOnS,EAAQk4K,SAAUl4K,EAAQy4B,aACrH,EAEAokJ,iBAAkB,SAASt7K,EAAOg8K,EAAOp+G,GACrC,IAAI+rD,EAAMryH,KAAKmH,QACXk4K,EAAWhtD,EAAIgtD,SACfE,EAAeltD,EAAIktD,aACnB3/I,EAAeyyF,EAAIzyF,aACnB9pB,EAAQ9V,KAAK8V,MAEbg9B,EAAOwsI,GAAU52K,EAAOoN,EAAOupK,EAAUE,GACzCoF,EAAcD,EAAQrhL,KAAK6jE,KAAKp0B,GAAQzvC,KAAKyN,MAAMgiC,GAMvD,OAJIwzB,IACAq+G,GAAer+G,GAGZg4G,GAAYxoK,EAAO6uK,EAAcpF,EAAcF,EAAUz/I,EACpE,IAGJ,SAASglJ,GAAaz9K,EAAS09K,EAAWC,GAYtC,IAXA,IASIC,EAAWjyI,EAAMkyI,EATjBC,EAAiB3B,GAAcn8K,EAAQ04K,YACvCqF,GAAQ/9K,EAAQgS,KAAO8rK,EAAe9rK,MAAQhS,EAAQuP,KAAOuuK,EAAevuK,KAC5EyuK,EAAoBh+K,EAAQg+K,kBAC5BC,EAAgBj+K,EAAQi+K,cACxBC,EAAWl+K,EAAQk4K,WAAagE,GAChCiC,EAAaT,EAAYzB,GAAWztK,QAAQkvK,GAAa,EACzDxF,EAAWgG,EAAWjC,GAAWkC,KAAgBn+K,EAAQk4K,SACzDkG,EAAQL,EAAOrH,GAAcwB,GAC7BmG,EAAaD,GAGTzyI,GAAQyyI,GAASH,GAAe,CACpCL,EAAYA,GAAaI,EAAkB9F,GAAUx4K,MAAM,GAE3D,GACIm+K,EAAWD,EAAU3uK,cAChB4uK,GAAYH,IAAcxF,GAAY2F,EAAWF,GAE1D,GAAIE,EAEAO,EAAQC,GADR1yI,EAAOkyI,OAEJ,IAAI3F,IAAa/8I,GAAK8gJ,IAAa,CACtCtwI,EAAOzvC,KAAK6jE,KAAKs+G,EAAaJ,GAC9B,KACJ,CAAO,IAAIC,EAIJ,CACCE,EAAQH,IACRtyI,EAAOzvC,KAAK6jE,KAAKs+G,EAAaJ,IAElC,KACJ,CARI/F,EAAW+D,GAAWkC,MAAiBhjJ,GAAK8gJ,IAC5CoC,EAAaN,EAAOrH,GAAcwB,GAClC0F,EAAY,IAMhB,CACJ,CAEA59K,EAAQo4K,aAAezsI,EACvB3rC,EAAQk4K,SAAWA,CACvB,CAyCA,SAASoG,GAASt+K,GACd,IAAIk4K,GAAYl4K,EAAQk4K,UAAY,IAAIxmK,cAWxC,OAViBwmK,IAAagE,KAAQ5tJ,GAAQ4pJ,EAAU+D,KAzC5D,SAAyBj8K,GAMrB,IALA,IAGIu+K,EAAcvrD,EAHd0lD,EAAa14K,EAAQ04K,WACrBvkK,EAAQw7G,GAAQ+oD,GAAcA,EAAWr4K,OAAS,EAClDm+K,EAAUvuD,EAGLwuD,EAAa,EAAGA,EAAatqK,EAAOsqK,IAAc,CACvD,IAAI1Z,EAAW2T,EAAW+F,GAE1B,GAAI1Z,GAAYwZ,EAAc,CAC1B,IAAI3mJ,EAAO17B,KAAKoU,IAAIumK,GAAiB9R,EAAUwZ,IAElC,IAAT3mJ,IAIIo7F,GAHJwrD,EAAUtiL,KAAKqT,IAAIivK,EAAS5mJ,KAEb6+I,GACJP,GACAsI,GAAWhI,GAAgC,EAAfF,GAC5BL,GACAuI,GAAWjI,GACXP,GACAwI,GAAWlI,GACXP,GACAyI,GAAWnI,GACXP,GACA0I,GAAWpI,GACXP,GAEAD,GAGnB,CAEA2I,EAAexZ,CACnB,CAEA/kK,EAAQk4K,SAAWllD,GAAQ+iD,EAC/B,CAOQ2I,CAAgB1+K,GAGhBk4K,IAAagE,IA1SV,SA0SiBl8K,EAAQo4K,cAC5BqF,GAAaz9K,GAGVA,CACX,CAEA,IAAI2+K,GAAmBpG,GAAa38K,OAAO,CACvCqE,MAAO,WACH,IAAIF,EAAO,IAAI4+K,GAAiBnjL,EAAEI,OAAO,CAAC,EAAG/C,KAAKmH,SAAUnH,KAAKuqK,cAGjE,OAFArjK,EAAK2uK,eAEE3uK,CACX,EAEA04K,eAAgB,WACZ,IAAI9pK,EAAQ9V,KAAK+lL,UAAU/+H,QAAQtwC,IACnC,OAAO1W,KAAKmH,QAAQk4K,SAAWr/K,KAAKmH,QAAQo4K,aAAezpK,CAC/D,EAEAm0J,gBAAiB,SAAS9iK,GACtB,OAAOA,CACX,EAEAwuK,WAAY,WACR+J,GAAa33K,GAAG4tK,WAAWprK,KAAKvK,MAEhC,IAAIuqK,EAAevqK,KAAKuqK,aACpBuJ,EAAcvJ,EAAa0J,KAC3B9sK,EAAUnH,KAAKmH,QAEf04K,EAAa14K,EAAQ04K,YAAc,GAyBvC,GAxBKA,EAAWmG,WACZnG,EAAaL,GAAW1L,EAAa+L,IAC1BmG,SAAU,GAGzB7+K,EAAUqB,EAAW,CACjBs7K,iBAAiB,GAClB38K,EAAS,CACR04K,WAAYA,EACZnpK,IAAK4H,GAAUw1J,EAAa3sK,EAAQuP,KACpCyC,IAAKmF,GAAUw1J,EAAa3sK,EAAQgS,KACpCymB,aAAcpqB,GAASrO,EAAS2sK,KAGhCvJ,EAAa0b,SAAW1b,EAAagK,WAAWptK,EAAQqrC,SAAWj9B,EAAIlQ,KACvE8B,EAAQ28K,iBAAkB,GAG9B38K,EAAQ++K,gBAAkB/+K,EAAQ++K,iBAAmB/+K,EAAQk4K,SAC7Dl4K,EAAQg/K,oBAAsBh/K,EAAQg/K,qBAAuBh/K,EAAQo4K,aAErEv/K,KAAKmH,QAAUA,EACfA,EAAQ24K,cAAgBD,EAEpBA,EAAWr4K,OAAS,EAAG,CACvB,IAAIysD,EAAQqvH,GAAczD,GAAY,GAClCuG,EAAej/K,EAAQi/K,aACvBC,EAAcZ,GAASt+K,GAEvBm/K,EAAWn/K,EAAQo/K,UAavB,GAZID,IACIA,EAASE,OAAS,IAClBvyH,EAAMv9C,IAAM4nK,GAAYrqH,EAAMv9C,KAAM4vK,EAASE,OAAQH,EAAYhH,SAAUgH,EAAYzmJ,eAGvF0mJ,EAASlsG,MAAQ,IACjBnmB,EAAM96C,IAAMmlK,GAAYrqH,EAAM96C,IAAKmtK,EAASlsG,MAAOisG,EAAYhH,SAAUgH,EAAYzmJ,gBAI7F5/B,KAAK+lL,UAAY,IAAIlC,GAAU5vH,EAAMv9C,IAAKu9C,EAAM96C,IAAKktK,GAEjDD,EAAc,CACd,IAAIL,EAAY/lL,KAAK+lL,UAAUrC,eAE3B+C,EAAkB9jL,EAAEI,OAAO,CAAC,EAAGoE,EAAS,CACxCw1K,WAAW,EACXmH,iBAAiB,EACjBzE,SAAU,MACV3oK,IAAKqvK,EAAUrvK,IACfyC,IAAK4sK,EAAU5sK,IACfisK,cAAegB,IAGfM,EAAmB1mL,KAAK+lL,UAAU5+K,QAEtCy9K,GAAa6B,EAAiBC,EAAiBrH,SAAUqH,EAAiBnH,cAE1Ev/K,KAAK2mL,cAAgB,IAAI9C,GAAU5vH,EAAMv9C,IAAKu9C,EAAM96C,IAAKstK,EAC7D,MACIzmL,KAAK2mL,cAAgB3mL,KAAK+lL,SAGlC,MACI5+K,EAAQk4K,SAAWl4K,EAAQk4K,UAAYnC,GACvCl9K,KAAK+lL,UAAY/lL,KAAK2mL,cAAgB,IAAInD,GAAer8K,GAG7DnH,KAAK4mL,YAAc,EACvB,EAEAjG,YAAa,SAASC,GAClB,IACImF,EADM/lL,KACU+lL,UAChBY,EAFM3mL,KAEc2mL,cACpBhD,EAAcgD,EAAchD,cAEhC,IAAK3jL,KAAKmH,QAAQi/K,eAAiBzC,EAC/B,OAAOjE,GAAa33K,GAAG44K,YAAYp2K,KAAKvK,KAAM4gL,GAGlD,IAAIC,EAAU,GACVxnK,EAASstK,EAActtK,SACvByE,EAAS,EAER9d,KAAKmH,QAAQw1K,YACdtjK,EAASA,EAAO+E,OAAOuoK,EAAc/C,OAAOD,IAC5C7lK,EAAS,IAGb,IAAK,IAAIlU,EAAM,EAAGA,EAAMyP,EAAO7R,OAAQoC,IAEnC,GADAi3K,EAAQl/K,KAAKokL,EAAUzG,UAAUjmK,EAAOzP,IAAQkU,GAC/B,IAAb8iK,GAAkBh3K,GAAO,EAAG,CAC5B,IAAI2hJ,EAAUs1B,EAAQr5K,OAAS,EAC/Bq5K,EAAQr2K,OAAOZ,EAAK,EAAGi3K,EAAQt1B,EAAU,IAAMs1B,EAAQt1B,GAAWs1B,EAAQt1B,EAAU,IAAMq1B,EAC9F,CAGJ,OAAOC,CACX,EAEA/F,iBAAkB,SAASpyK,GACvB,IAAIurD,EAAQj0D,KAAKi0D,QACb4rH,EAAa7/K,KAAKmH,QAAQ04K,YAAc,GAE5C,OAAOb,GAAat2K,EAAOurD,EAAMv9C,MAAQ,GAAKsoK,GAAat2K,EAAOurD,EAAM96C,MAAQ,GAAK0mK,EAAWr4K,MACpG,EAEAsvK,eAAgB,SAASpuK,GACrB,OAAO4V,GAAUte,KAAKuqK,aAAa0J,KAAMvrK,EAC7C,EAEAqyK,SAAU,SAASryK,GACf,OAAO1I,KAAKy4K,QAAQ/vK,EACxB,EAEAk5K,eAAgB,SAAS78I,GACrB,IAAI59B,EAAUnH,KAAKmH,QACfk4K,EAAWl4K,EAAQk4K,SACnBz/I,EAAez4B,EAAQy4B,aACvB4S,EAAWrrC,EAAQqrC,SACnBikI,EAAUz2K,KAAKy2K,UACfzmK,EAAOwiC,EAAWikI,EAAQzqK,SAAWyqK,EAAQ1qK,QAC7CkoD,EAAQj0D,KAAKi0D,QACblkB,EAAQ//B,GAAQikD,EAAM96C,IAAM86C,EAAMv9C,KAClCoH,EAASxH,GAAMyuB,EAAQgL,EAAO4wH,GAElC,GAAI1sG,EAAMv9C,KAAOu9C,EAAM96C,IAAK,CACxB,IAAI4C,EAAOkiK,GAAS92K,EAAQuP,KAAOu9C,EAAMv9C,IAAKoH,GAC1CwgB,EAAK2/I,GAAS92K,EAAQgS,KAAO86C,EAAM96C,IAAK2E,GAE5Cm2C,EAAQ,CACJv9C,IAAK4nK,GAAYviK,EAAM,EAAGsjK,EAAUz/I,GACpCzmB,IAAKmlK,GAAYhgJ,EAAI,EAAG+gJ,EAAUz/I,GAE1C,CAEA,OAAOq0B,CACX,EAEA+hH,YAAa,WACT,MAAO,CACHt/J,IAAK1W,KAAKmH,QAAQiuK,OAAOvwH,KACzB1rC,IAAKnZ,KAAK2mL,cAAchD,cAEhC,EAEAtB,IAAK,SAASt9I,GACV,GAAI/kC,KAAK6mL,UACL,OAAO,KAGX,IAAI1/K,EAAUnH,KAAKmH,QACfsvK,EAAUz2K,KAAKy2K,UACfzmK,EAAO7I,EAAQqrC,SAAWikI,EAAQzqK,SAAWyqK,EAAQ1qK,QACrDsmH,EAAMryH,KAAK+lL,UAAUrC,eACrBhtK,EAAM27G,EAAI37G,IACVyC,EAAMk5G,EAAIl5G,IACV2tK,EAAc9mL,KAAK+lL,UAAU/+H,QAE7BlpC,EAASxH,GAAMyuB,GADP/0B,GAAQmJ,EAAMzC,IACQiqJ,IAAsBx5J,EAAQkP,SAAW,EAAI,GAC3E0F,EAAOkiK,GAASvnK,EAAKoH,GACrBwgB,EAAK2/I,GAAS9kK,EAAK2E,GAEnBipK,EAAW/mL,KAAK67K,WAAWqD,GAAOnjK,GAAOmjK,GAAO5gJ,GAAK4gJ,GAAO4H,EAAYpwK,KAAMwoK,GAAO4H,EAAY3tK,KAAM2E,GAE3G,OAAIipK,GACAA,EAASrwK,IAAMynK,GAAO4I,EAASrwK,KAC/BqwK,EAAS5tK,IAAMglK,GAAO4I,EAAS5tK,KAC/B4tK,EAAS1H,SAAWl4K,EAAQk4K,SAC5B0H,EAASxH,aAAep4K,EAAQo4K,cAAgB,EAChDwH,EAASb,gBAAkB/+K,EAAQ++K,gBACnCa,EAASZ,oBAAsBh/K,EAAQg/K,oBAEhCY,QARX,CAUJ,EAEAzE,YAAa,SAASxsK,EAAOnK,GACzB,GAAI3L,KAAK6mL,UACL,OAAO,KAGX,IAAIvE,EAAc5C,GAAa33K,GAAGu6K,YAAY/3K,KAAKvK,KAAM8V,EAAOnK,GAC5Dq7K,EAAahnL,KAAK+lL,UAAUrC,eAC5BuD,EAAejnL,KAAK+lL,UAAUtC,iBAC9B1zI,EAAQkvI,GAAS+H,EAAW7tK,IAAK6tK,EAAWtwK,MAAQuwK,EAAa9tK,IAAM8tK,EAAavwK,KACpFvP,EAAUnH,KAAKmH,QAKnB,MAAO,CACHuP,IAJMunK,GAAS+I,EAAWtwK,IAAK4rK,EAAY5rK,IAAMq5B,GAKjD52B,IAJM8kK,GAAS+I,EAAWtwK,IAAK4rK,EAAYnpK,IAAM42B,GAKjDsvI,SAAUl4K,EAAQ++K,iBAAmB/+K,EAAQk4K,SAC7CE,aAAcp4K,EAAQg/K,qBAAuBh/K,EAAQo4K,aAE7D,EAEAsC,WAAY,SAAS9xI,EAAOirG,GACxB,GAAIh7I,KAAK6mL,UACL,MAAO,CAAC,EAGZ,IAAI1/K,EAAUnH,KAAKmH,QACfozJ,EAAMpzJ,EAAQ++K,kBAAoB7C,GAClCyD,EAAc9mL,KAAK+lL,UAAU/+H,QAC7BqrE,EAAMryH,KAAK+lL,UAAUrC,eACrBjB,EAAWpwD,EAAI37G,IACfgsK,EAAWrwD,EAAIl5G,IAEf7L,EAAWjK,KAAKoU,IAAIzX,KAAKw8K,YAAYxhC,IACrC/mF,EAAQyuH,EAAWD,EACnB19I,EAAQ/kC,KAAKy8K,aAAa1sI,EAAOkkB,GACjC8tH,EAAW1+K,KAAKiT,MAAMhJ,EAAWy3B,GACjCi9I,EAAW3+K,KAAKiT,OAAO,EAAIhJ,GAAYy3B,GAGvCs6I,EADQr/K,KAAK+lL,UAAU5+K,QACNk4K,SACjB3oK,EAAM,IAAI/H,KAAK8zK,EAASx5K,UAAY84K,GACpC5oK,EAAM,IAAIxK,KAAK+zK,EAASz5K,UAAY+4K,GAExC,GAAIznB,EAAK,CACL,IAOI2sB,EAAkBhJ,EAPlBiH,EAAoBh+K,EAAQg+K,kBAC5BC,EAAgBj+K,EAAQi+K,cAExB+B,EAAU7kJ,GAAK6iJ,EAAkB9F,IAAa+F,EAAgBvH,GAAcwB,GAC5E+H,EAAYnI,GAASyD,EAAUD,GAC/B1jJ,EAAOkgJ,GAAS9lK,EAAKzC,GACrB2wK,EAAgBjE,GAAWztK,QAAQ0pK,GAGvC,GAAItgJ,EAAO8+I,GAAcwB,IAAaA,IAAavC,GAC/CuC,EAAW+D,GAAWiE,EAAgB,GAGtC3wK,EAAMunK,GAASwE,EADfvE,GAASkJ,GAAahC,EAAgB,IADtC8B,EAAmB5kJ,GAAK6iJ,EAAkB9F,KACoBxB,GAAcwB,IAAa,GAEzFlmK,EAAM8kK,GAASyE,GAAWxE,QAEvB,GAAIn/I,EAAOooJ,GAAW9H,IAAahC,GAAO,CAC7C,IAAIiK,EAAY,EAEhB,EAAG,CACCD,IACAhI,EAAW+D,GAAWiE,GACtBC,EAAY,EACZpJ,EAAQ,EAAIL,GAAcwB,GAC1B,GACI6H,EAAmB/B,EAAkB9F,GAAUiI,GAC/CA,UACKA,EAAYnC,EAAkB9F,GAAU73K,QAAU02K,EAAQgJ,EAAmBE,EAC1F,OAAS/H,IAAahC,IAASa,EAAQgJ,EAAmBE,IAE1DlJ,GAASA,EAAQgJ,EAAmBE,GAAa,GACrC,IACR1wK,EAAMunK,GAASwE,GAAWvE,GAC1B/kK,EAAM8kK,GAASyE,EAAUxE,GACzBxnK,EAAMunK,GAASvnK,EAAK8hH,GAAWr/G,EAAK2tK,EAAYpwK,IAAKowK,EAAY3tK,KAAOA,GACxEA,EAAM8kK,GAAS9kK,EAAKq/G,GAAW9hH,EAAKowK,EAAYpwK,IAAKowK,EAAY3tK,KAAOzC,GAEhF,CACJ,CAEA,OAAIA,GAAOyC,GAAO8lK,GAAS9lK,EAAKzC,GAAO,EAC5B,CACHA,IAAKA,EACLyC,IAAKA,EACLkmK,SAAUl4K,EAAQ++K,iBAAmB/+K,EAAQk4K,SAC7CE,aAAcp4K,EAAQg/K,qBAAuBh/K,EAAQo4K,mBAL7D,CAQJ,EAEA0C,UAAW,SAASlyI,EAAOirG,GACvB,IAAI8rC,EAAc9mL,KAAK+lL,UAAU/+H,QAC7BiN,EAAQj0D,KAAK6hL,WAAW9xI,EAAOirG,GAWnC,OATI/mF,IACIA,EAAMv9C,IAAMowK,EAAYpwK,MACxBu9C,EAAMv9C,IAAMowK,EAAYpwK,KAExBu9C,EAAM96C,IAAM2tK,EAAY3tK,MACxB86C,EAAM96C,IAAM2tK,EAAY3tK,MAIzB86C,CACX,EAEAA,MAAO,WACH,OAAOj0D,KAAK+lL,UAAUrC,cAC1B,EAEA7N,aAAc,WACV6J,GAAa33K,GAAG8tK,aAAatrK,KAAKvK,MAClCA,KAAKunL,mBACT,EAEAnR,YAAa,WACTsJ,GAAa33K,GAAGquK,YAAY7rK,KAAKvK,MACjCA,KAAK4mL,YAAc,EACvB,EAEAnN,cAAe,WACXz5K,KAAKwnL,qBACL9H,GAAa33K,GAAG0xK,cAAclvK,KAAKvK,KACvC,EAEAwnL,mBAAoB,WAChB,IACIrgL,EADMnH,KACQmH,QACdy/K,EAFM5mL,KAEY4mL,YACtB,GAA2B,IAAvBA,EAAYp/K,OAAhB,CAIA,IAAIivK,EAAUz2K,KAAKy2K,UACfjkI,EAAWrrC,EAAQqrC,SACnBwB,EAAS7sC,EAAQy/K,YAAY5yI,QAAU7sC,EAAQiuK,OAAOphI,OAEtDwsI,EAAaoG,EAAY,GAC7B,GAAIpG,EAAY,CACZ,IAAIlzK,EAAWklC,EAAWikI,EAAQv4F,GAAMsiG,EAAWlnI,IAAIttC,SAAW,EAAKyqK,EAAQx4F,GAC/Ej+E,KAAKm6K,cAAcqG,EAAYxsI,EAAQ1mC,EAC3C,CAEA,IAAI+tK,EAAYuL,EAAY,GAC5B,GAAIvL,EAAW,CACX,IAAIoM,EAAaj1I,EAAWikI,EAAQr4F,GAAMi9F,EAAU/hI,IAAIttC,SAAW,EAAKyqK,EAAQt4F,GAChFn+E,KAAKm6K,cAAckB,EAAWrnI,EAAQyzI,EAC1C,CAhBA,CAiBJ,EAEApR,iBAAkB,WACdqJ,GAAa33K,GAAGsuK,iBAAiB9rK,KAAKvK,MACtCA,KAAK0nL,uBACT,EAEApH,qBAAsB,WAClBZ,GAAa33K,GAAGu4K,qBAAqB/1K,KAAKvK,MAC1CA,KAAK2nL,uBACT,EAEAA,sBAAuB,WACnB,IACIf,EADM5mL,KACY4mL,YAClBxR,EAFMp1K,KAEOo1K,OACjB,GAA2B,IAAvBwR,EAAYp/K,OAAhB,CAaA,IAAIogL,EAAkBhB,EAAY,GAClC,GAAIgB,GAAmBA,EAAgBzgL,QAAQ6F,QAC3C,IAAK,IAAIzF,EAAI,EAAGA,EAAI6tK,EAAO5tK,OAAQD,IAAK,CAEpC,IADe2yC,EAAK0tI,EAAiBxS,EAAO7tK,IAExC,KAER,CAGJ,IAAIsgL,EAAiBjB,EAAY,GACjC,GAAIiB,GAAkBA,EAAe1gL,QAAQ6F,QACzC,IAAK,IAAIi5J,EAAMmP,EAAO5tK,OAAS,EAAGy+J,EAAM,IAAKA,EAAK,CAE9C,IADiB/rH,EAAK2tI,EAAgBzS,EAAOnP,IAEzC,KAER,CA5BJ,CAEA,SAAS/rH,EAAK4tI,EAAYxzJ,GACtB,QAAKA,EAAMntB,QAAQ6F,UAAWsnB,EAAMglB,IAAIquH,SAASmgB,EAAWxuI,QACxDhlB,EAAMntB,QAAQ6F,SAAU,GACjB,EAIf,CAqBJ,EAEAugK,WAAY,WAIR,IAHA,IAAIj0H,EAAMomI,GAAa33K,GAAGwlK,WAAWhjK,KAAKvK,MACtC4mL,EAAc5mL,KAAK4mL,YAEdr/K,EAAI,EAAGA,EAAIq/K,EAAYp/K,OAAQD,IAAK,CACzC,IAAI+sB,EAAQsyJ,EAAYr/K,GACpB+sB,EAAMntB,QAAQ6F,SACdssC,EAAI3sB,KAAK2H,EAAMglB,IAEvB,CAEA,OAAOA,CACX,EAEAi9H,gBAAiB,SAASj9J,EAAO68J,EAAcG,QACtB,IAAjBA,IAA2BA,EAAe,CAAC,GAE/C,IAAInvK,EAAUnH,KAAKmH,QACfs3D,EAAWt3D,EAAQqtB,YAAcrtB,EAAQi/K,aAAej/K,EAAQqtB,UAAUlb,GAAS,KACnF1C,EAAO5W,KAAK2mL,cAAc/C,OAAOtqK,GACjCyuK,EAAa5R,EAAa6R,YAAYhoL,KAAK2mL,cAAcx/K,QAAQk4K,UAErElJ,EAAallK,OAASklK,EAAallK,QAAU82K,EAC7CzR,EAAa73G,SAAWA,EAExB,IAAI39B,EAAO9gC,KAAKi7K,cAAcrkK,EAAMu/J,EAAcG,GAClD,GAAIx1I,EACA,OAAO,IAAIsxI,GAAUx7J,EAAMkqB,EAAMxnB,EAAOmlD,EAAU03G,EAE1D,EAEAoR,kBAAmB,WACf,IAAIt0D,EAAWjzH,KAEXqyH,EAAMryH,KAAK2mL,cACXvC,EAAe/xD,EAAI+xD,aACnBE,EAAajyD,EAAIiyD,WACjBn9K,EAAUnH,KAAKmH,QACfgvK,EAAexzK,EAAEI,OAAO,CAAC,EAAGoE,EAAQiuK,OAAQjuK,EAAQy/K,YAAa,CACjE11C,MAAOjgD,EACPj3C,OAAQ7yC,EAAQ6yC,SAGpB,IAA6B,IAAzBm8H,EAAanpK,QAAjB,CAIAhN,KAAKk2K,uBAAuBC,GAC5BA,EAAa9D,cAAgBphF,EAEC,SAA1BklF,EAAap8H,WACbo8H,EAAap8H,SAAW,EACxB5yC,EAAQugL,uBAAwB,GAGpC,IAAIK,EAAa5R,EAAa6R,YAAYhoL,KAAK2mL,cAAcx/K,QAAQk4K,UACrElJ,EAAallK,OAASklK,EAAallK,QAAU82K,EAE7C,IAAIE,EAAc,SAAU3uK,EAAO1C,EAAMkqB,GACrC,GAAIA,EAAM,CACN,IAAIxM,EAAQ,IAAI89I,GAAUx7J,EAAMkqB,EAAMxnB,EAAO,KAAM68J,GACnDljD,EAAS94E,OAAO7lB,GAChB2+F,EAAS2zD,YAAYjlL,KAAK2yB,EAC9B,CACJ,EAGA2zJ,EAAY,EAAG7D,EADCpkL,KAAKi7K,cAAcmJ,EAAcjO,EAAc,CAAE78J,MAAO,EAAGgC,MAAO,KAIlF2sK,EAAY,EAAG3D,EADDtkL,KAAKi7K,cAAcqJ,EAAYnO,EAAc,CAAE78J,MAAO,EAAGgC,MAAO,IAxB9E,CA0BJ,EAEAosK,sBAAuB,WACnB,IAAIz0D,EAAWjzH,KAEXo1K,EAASp1K,KAAK4mL,YAClB,GAAK5mL,KAAKmH,QAAQugL,wBAAyB1nL,KAAKmH,QAAQqrC,UAA8B,IAAlB4iI,EAAO5tK,OAA3E,CAIA,IAAI0gL,EAAc,SAAU5zJ,EAAOkjJ,EAAel+J,GAC9C,IAAIvN,EAAoE,EAA5D1I,KAAKoU,IAAI+/J,EAAcl+J,EAAQ,GAAKk+J,EAAcl+J,IAC1D8gH,EAAQnH,EAASunD,qBAAqBlmJ,EAAMglB,IAAKvtC,GACvC,IAAVquH,IACA9lG,EAAMntB,QAAQ4yC,SAAWqgF,EACzB9lG,EAAM+9G,OAAO,IAAI00B,IAEzB,EAEIyQ,EAAgBx3K,KAAK03K,wBACzBwQ,EAAY9S,EAAO,GAAIoC,EAAe,GACtC0Q,EAAY9S,EAAO,GAAIoC,EAAeA,EAAchwK,OAAS,EAb7D,CAcJ,EAEA85K,cAAe,SAAS54K,GACpB,OAAO1I,KAAK+lL,UAAUpzG,WAAWjqE,EACrC,EAEAmyK,KAAM,SAAS9+J,EAAMuiB,EAAIo8I,GACrB,IAAIyN,EAAYnoL,KAAK+lL,UACjBjwK,EAAQiG,EACRpQ,EAAM2yB,EAENxoB,aAAiBnH,OACjBmH,EAAQqyK,EAAU7I,UAAUxpK,IAG5BnK,aAAegD,OACfhD,EAAMw8K,EAAU7I,UAAU3zK,IAG9B,IAAIkvK,EAAO76K,KAAKy4K,QAAQ3iK,EAAOnK,EAAK+uK,GACpC,GAAIG,EACA,OAAOA,EAAK5S,QAEpB,EAEAwQ,QAAS,SAASvzK,EAAG+W,EAAGy+J,GACpB,IAAI5kK,EAAQ5Q,EACRyG,EAAMsQ,EAUV,cARWnG,IAAU1P,IACjB0P,EAAQ9V,KAAKshL,cAAcxrK,WAGpBnK,IAAQvF,IACfuF,EAAM3L,KAAKshL,cAAc31K,IAGtB+zK,GAAa33K,GAAG0wK,QAAQluK,KAAKvK,KAAM8V,EAAOnK,EAAK+uK,EAC1D,EAEAuB,WAAY,WACR,IACIhoH,EAAQqvH,GADEtjL,KAAKmH,QACe24K,eAElC,MAAO,CACHppK,IAAKynK,GAAOlqH,EAAMv9C,KAClByC,IAAKglK,GAAOlqH,EAAM96C,KAE1B,EAEAuoK,WAAY,SAASpoK,EAAO0tC,GACxB,OAAOhnD,KAAK+lL,UAAUnC,OAAOtqK,EAAO0tC,EACxC,EAEA26H,gBAAiB,WACb,OAAO3hL,KAAK+lL,UAAUpC,aAC1B,EAEA1D,aAAc,WACV,OAAOjgL,KAAK+lL,UAAUtC,gBAC1B,EAEA5J,mBAAoB,WAChB,OAAQ75K,KAAK2mL,cAAcx/K,QAAQw1K,SACvC,EAEAC,mBAAoB,WACZ58K,KAAK6mL,YAIT7mL,KAAKmH,QAAQ04K,WAAa7/K,KAAK+lL,UAAU1sK,SAC7C,EAEAmoK,YAAa,SAASrlD,GAClB,IAAI7iH,EAAQtZ,KAAKuhL,mBAAmBplD,GAEpC,OAAc,OAAV7iH,EACO,KAGJtZ,KAAK+lL,UAAUnC,OAAOtqK,EACjC,EAEAmoK,WAAY,SAAS/4K,GACjB,OAAO1I,KAAK+lL,UAAUtE,WAAW/4K,EACrC,EAEAk6K,oBAAqB,WACjB,IAAI3uH,EAAQj0D,KAAK+lL,UAAU9J,aAC3B,MAAO,CACHvlK,IAAK1W,KAAK+lL,UAAUtE,WAAWxtH,EAAMv9C,KACrCyC,IAAKnZ,KAAK+lL,UAAUtE,WAAWxtH,EAAM96C,KAE7C,EAEA+mK,WAAY,WACR,OAAOlgL,KAAK+lL,UAAU/+H,OAC1B,EAEA87H,kBAAmB,WACf,IAAI7uH,EAAQj0D,KAAK+lL,UAAU/+H,QAC3B,MAAO,CACHtwC,IAAK1W,KAAK+lL,UAAUtE,WAAWxtH,EAAMv9C,KACrCyC,IAAKnZ,KAAK+lL,UAAUtE,WAAWxtH,EAAM96C,KAE7C,EAEAisD,WAAY,WACR,OAAOplE,KAAK+lL,UAAU3gH,YAC1B,EAEAyhH,QAAS,WACL,OAAQ7mL,KAAKmH,QAAQ24K,cAAct4K,MACvC,EAEA24K,aAAc,WACV,IAAqC,IAAjCngL,KAAKmH,QAAQ28K,iBAA6B9jL,KAAK6mL,UAC/C,OAAO7mL,KAAKi0D,QAGhB,IAAI9sD,EAAUnH,KAAKmH,QACf6/K,EAAa1D,GAAcn8K,EAAQ24K,eAQvC,OANgB,IAAI+D,GAAUmD,EAAWtwK,IAAKswK,EAAW7tK,IAAKxW,EAAEI,OAAO,CAAC,EAAGoE,EAAS,CAChFw1K,WAAW,EACXmH,iBAAiB,EACjBI,YAAY,KAGCR,cACrB,IAsEJ,SAAS5yK,GAAMpI,EAAOoqC,GAClB,OAAOx8B,GAAMjT,KAAKyN,MAAMpI,EAAQoqC,GAAQA,EAAM6tH,EAClD,CAEA,SAASz5F,GAAKx+D,EAAOoqC,GACjB,OAAOx8B,GAAMjT,KAAK6jE,KAAKx+D,EAAQoqC,GAAQA,EAAM6tH,EACjD,CAEA,SAASynB,GAAgB1/K,GACrB,OAAOrF,KAAK8V,IAAI9V,KAAKqT,IAAIhO,EAAOu6K,KAAmB,IACvD,CA7EAjf,GAAkB8hB,GAAkB,CAChCpgL,KAAM+6J,EACN2U,OAAQ,CACJ4S,YAAa9E,IAEjB0D,YAAa,CACT55K,SAAS,GAEbm4K,kBAAmB,CACf/nK,aAAc,CAAE,EAAG,GAAI,KACvBD,QAAS,CAAE,EAAG,EAAG,EAAG,GAAI,IACxBtG,QAAS,CAAE,EAAG,EAAG,EAAG,GAAI,IACxBqG,MAAO,CAAE,EAAG,EAAG,GACfxI,KAAM,CAAE,EAAG,EAAG,GACdqpK,MAAO,CAAE,EAAG,GACZjpK,OAAQ,CAAE,EAAG,EAAG,EAAG,GACnBgpK,MAAO,CAAE,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,KAEjCsH,cAAe,KA6DnB,IAAIiD,GAAoBhlL,KAAKwmC,IAAI,GAAyB,EAApB82H,GAElC2nB,GAAcnT,GAAKpyK,OAAO,CAC1BoF,KAAM,SAAS+zK,EAAWC,EAAWh1K,EAASojK,GAC1C4K,GAAKptK,GAAGI,KAAKoC,KAAKvK,KAAM2C,EAAEI,OAAO,CAAC,EAAGoE,EAAS,CAC1C+0K,UAAWA,EACXC,UAAWA,IACX5R,EACR,EAEAN,gBAAiB,SAAS9iK,GACtB,IAAIohL,EA8NZ,SAAyBrM,EAAWC,EAAWh1K,GAC3C,IAAIqhL,EAAcrhL,EAAQqhL,YAEtBC,EAtSR,SAAqB/xK,EAAKyC,EAAKuvK,GAC3B,IAAKhyK,IAAQyC,EACT,OAAO,EAGX,IAAIwvK,EAEJ,GAAIjyK,GAAO,GAAKyC,GAAO,EAAG,CACtB,IAAI4iK,EAAWrlK,IAAQyC,EAAM,EAAIzC,EAGjC,IAAe,IAAXgyK,IAAsBA,IADdvvK,EAAM4iK,GAAY5iK,EACagqK,GACvC,OAAO,EAGXwF,EAAUtlL,KAAK8V,IAAI,EAAG4iK,GAAa5iK,EAAM4iK,GAAY,EACzD,MACI4M,EAAUjyK,EAGd,OAAOiyK,CACX,CAiRkBC,CAAY1M,EAAWC,EAAWqM,GAC5CK,EAhRR,SAAqBnyK,EAAKyC,EAAKuvK,GAC3B,IAAKhyK,IAAQyC,EACT,OAAO,EAGX,IAAI2vK,EAEJ,GAAIpyK,GAAO,GAAKyC,GAAO,EAAG,CACtB,IAAI6iK,EAAWtlK,IAAQyC,EAAM,EAAIA,EAE7B4lB,EAAO17B,KAAKoU,KAAKukK,EAAWtlK,GAAOslK,GACvC,IAAe,IAAX0M,IAAsBA,GAAU3pJ,EAAOokJ,GACvC,OAAO,EAGX2F,EAAUzlL,KAAKqT,IAAI,EAAGslK,GAAatlK,EAAMslK,GAAY,EACzD,MACI8M,EAAU3vK,EAGd,OAAO2vK,CACX,CA2PkBC,CAAY7M,EAAWC,EAAWqM,GAE5ClR,EAAY7Q,GAAcgiB,EAASI,GACnCN,EAAc,CACdjR,UAAWA,IAGkB,IAA7BnwK,EAAQ6hL,mBACJP,EAAU,GAAKQ,GAAeR,EAASnR,EAAW,EAAI,KACtDmR,GAAWnR,GAGXuR,EAAU,GAAKI,GAAeJ,EAASvR,EAAW,EAAI,KACtDuR,GAAWvR,IAOnB,OAHAiR,EAAY7xK,IAAM5F,GAAM23K,EAASnR,GACjCiR,EAAYpvK,IAAM+tD,GAAK2hH,EAASvR,GAEzBiR,CACX,CAvP0BW,CAAgB/hL,EAAQ+0K,UAAW/0K,EAAQg1K,UAAWh1K,GAGxE,OAFAnH,KAAKmpL,aAwPb,SAA0BZ,EAAaphL,GACnC,MAAO,CACHuP,IAAKogH,GAAQ3vH,EAAQuP,KAAOrT,KAAKqT,IAAI6xK,EAAY7xK,IAAKvP,EAAQuP,KAAO6xK,EAAY7xK,IACjFyC,IAAK29G,GAAQ3vH,EAAQgS,KAAO9V,KAAK8V,IAAIovK,EAAYpvK,IAAKhS,EAAQgS,KAAOovK,EAAYpvK,IACjFm+J,UAAWiR,EAAYjR,UAE/B,CA9P4B8R,CAAiBb,EAAaphL,GAyQ1D,SAAqBohL,EAAac,GAC9B,IACIC,EAAYC,EADZpiL,EAAUkiL,EAGd,GAAIA,EAAa,EAbrB,SAAyBliL,EAASsoB,GAC9B,IAAK,IAAI7lB,EAAM,EAAGA,EAAM6lB,EAAOjoB,OAAQoC,IAAO,CAC1C,IAAImc,EAAQ0J,EAAO7lB,GACI,OAAnBzC,EAAQ4e,KACR5e,EAAQ4e,QAAS44H,EAEzB,CACJ,CAOQ6qC,CAAgBH,EAAa,CAAE,MAAO,QAEtCC,EAAaxyD,GAAQuyD,EAAY3yK,KACjC6yK,EAAazyD,GAAQuyD,EAAYlwK,KAEjC,IAAIswK,EAAgBH,GAAcC,EAE9BE,GACIJ,EAAY3yK,MAAQ2yK,EAAYlwK,MAC5BkwK,EAAY3yK,IAAM,EAClB2yK,EAAY3yK,IAAM,EAElB2yK,EAAYlwK,IAAM,GAK1BkwK,EAAY/R,WACZiR,EAAY7xK,IAAM5F,GAAMy3K,EAAY7xK,IAAK2yK,EAAY/R,WACrDiR,EAAYpvK,IAAM+tD,GAAKqhH,EAAYpvK,IAAKkwK,EAAY/R,YAC7CmS,IACPtiL,EAAUqB,EAAW+/K,EAAac,GAGlCd,EAAYjR,UAAY7Q,GAAct/J,EAAQuP,IAAKvP,EAAQgS,KAEnE,CAEAovK,EAAY3Q,WAAazwK,EAAQmwK,WAAaiR,EAAYjR,WAAa,EAEvE,IAAIxgK,EAAStO,EAAW+/K,EAAaphL,GACjC2P,EAAOJ,KAAOI,EAAOqC,MACjBmwK,IAAeC,EACfzyK,EAAOqC,IAAMrC,EAAOJ,IAAMI,EAAOwgK,WACzBgS,GAAcC,IACtBzyK,EAAOJ,IAAMI,EAAOqC,IAAMrC,EAAOwgK,YAIzC,OAAOxgK,CACX,CApTe4yK,CAAYnB,EAAaphL,EACpC,EAEAwuK,WAAY,WACR31K,KAAKkiL,SAAWliL,KAAKmpL,aAAazyK,IAClC1W,KAAKmiL,SAAWniL,KAAKmpL,aAAahwK,IAClCnZ,KAAK2pL,eAAiB3pL,KAAKmpL,aAAa7R,UACxCt3K,KAAKk8K,UAAYl8K,KAAKmH,QAAQ+0K,UAC9Bl8K,KAAKm8K,UAAYn8K,KAAKmH,QAAQg1K,SAClC,EAEA/0K,MAAO,WACH,OAAO,IAAIkhL,GACPtoL,KAAKk8K,UACLl8K,KAAKm8K,UACLx5K,EAAEI,OAAO,CAAC,EAAG/C,KAAKmH,SAClBnH,KAAKuqK,aAEb,EAEAnyH,WAAY,WACR,OAAO,CACX,EAEA6b,MAAO,WACH,IAAI9sD,EAAUnH,KAAKmH,QACnB,MAAO,CAAEuP,IAAKvP,EAAQuP,IAAKyC,IAAKhS,EAAQgS,IAC5C,EAEAywK,aAAc,SAASC,GACnB,GAAkB,IAAdA,EACA,OAAO,EAGX,IAAI1iL,EAAUnH,KAAKmH,QACf8sD,EAAQ9sD,EAAQgS,IAAMhS,EAAQuP,IAElC,OAAOrT,KAAKyN,MAAMwF,GAAM29C,EAAQ41H,EAl7MlB,IAk7MiD,CACnE,EAEA/I,iBAAkB,SAAS3mD,EAAMs9C,GAC7B,IAAItwK,EAAUnH,KAAKmH,QACfkrH,EAAMryH,KAAKq8K,WACXC,EAAUjqD,EAAIiqD,QACdC,EAAalqD,EAAIkqD,WACjB9F,EAAUpkD,EAAIokD,QAId3jI,EAAOqnF,GAHI9H,EAAI2gB,UACP7rI,EAAQgS,IAAMhS,EAAQuP,MAG9BozK,EAAY9pL,KAAK4pL,aAAazvD,GAC9BjlC,EAAY,GACZG,EAAMohF,EAAQ8F,GACdwN,EAAW,EAEXtS,IACAsS,EAAWtS,EAAWt9C,GAG1B,IAAK,IAAIvwH,EAAM,EAAGA,EAAMkgL,EAAWlgL,IAC3BA,EAAMmgL,GAAa,GACnB70F,EAAUvzF,KAAK2U,GAAM++E,EA18Mf,IA68MVA,GAAYviD,EAAOwpI,EAGvB,OAAOpnF,CACX,EAEAwiF,sBAAuB,WACnB,OAAO13K,KAAK8gL,iBAAiB9gL,KAAKmH,QAAQmwK,UAC9C,EAEAK,sBAAuB,WACnB,OAAO33K,KAAK8gL,iBAAiB9gL,KAAKmH,QAAQywK,UAC9C,EAEAa,QAAS,SAASvzK,EAAG+W,EAAGy+J,QACN,IAAVA,IAAoBA,GAAQ,GAEhC,IAAIvzK,EAAUnH,KAAKmH,QACfkrH,EAAMryH,KAAKq8K,WACXl3I,EAAOktF,EAAIltF,KACXm3I,EAAUjqD,EAAIiqD,QACd7F,EAAUpkD,EAAIokD,QACdzjC,EAAW3gB,EAAI2gB,SACfqgC,EAAYhhD,EAAIghD,UAChBvgI,EAAOwpI,GAAWtpC,GAAY7rI,EAAQgS,IAAMhS,EAAQuP,MAEpDZ,EAAQkjH,GAAe9zH,EAAG+W,GAAK,GAC/BtQ,EAAMqtH,GAAe/8G,EAAG/W,GAAK,GAE7Bw1K,IACA5kK,EAAQ0iH,GAAW1iH,EAAO3O,EAAQuP,IAAKvP,EAAQgS,KAC/CxN,EAAM6sH,GAAW7sH,EAAKxE,EAAQuP,IAAKvP,EAAQgS,MAG/C,IAAI2qH,EAAKzgI,KAAKqT,IAAIZ,EAAOnK,GAAOxE,EAAQuP,IACpC8sH,EAAKngI,KAAK8V,IAAIrD,EAAOnK,GAAOxE,EAAQuP,IAEpCwqK,EAAU,IAAIna,GAAI0P,EAAQx4F,GAAIw4F,EAAQv4F,GAAIu4F,EAAQx4F,GAAIw4F,EAAQv4F,IAIlE,OAHAgjG,EAAQ/7I,EAAO,GAAKijJ,GAAgB/U,EAAYvgI,GAAQwpI,EAAU,EAAIx4C,EAAKN,IAC3E09C,EAAQ/7I,EAAO,GAAKijJ,GAAgB/U,EAAYvgI,GAAQwpI,EAAU,EAAI94C,EAAKM,IAEpEo9C,CACX,EAEA8I,SAAU,SAAS7tD,GACf,IAAIh1H,EAAUnH,KAAKmH,QACfgS,EAAMtG,OAAO1L,EAAQgS,KACrBzC,EAAM7D,OAAO1L,EAAQuP,KACrBoH,EAAS9d,KAAKw8K,YAAYrgD,GAG9B,OAAIr+G,EAAS,GAAKA,EAAS,EAChB,KAIJxH,GADKI,EANMoH,GAAU3E,EAAMzC,GAOdiqJ,EACxB,EAEAihB,eAAgB,SAAS78I,GACrB,IAAI59B,EAAUnH,KAAKmH,QACfqrC,EAAWrrC,EAAQqrC,SACnBn8B,EAAUlP,EAAQkP,QAClB8C,EAAMhS,EAAQgS,IACdzC,EAAMvP,EAAQuP,IAEds8H,EADMhzI,KAAKq8K,WACIrpC,SAGfl1H,EAASxH,GAAMyuB,GADPiuG,GADA75H,EAAMzC,IAEgBiqJ,GAMlC,OAJKnuH,IAAYn8B,GAAcm8B,GAAYn8B,IACvCyH,GAAUA,GAGP,CACHpH,IAAKA,EAAMoH,EACX3E,IAAKA,EAAM2E,EACXA,OAAQA,EAEhB,EAEAm4J,YAAa,WACT,OAAOj2K,KAAK4pL,aAAa5pL,KAAKmH,QAAQmwK,UAC1C,EAEAf,gBAAiB,SAASj9J,EAAO68J,EAAcG,GAC3C,IAAInvK,EAAUnH,KAAKmH,QACfuB,EAAQ4N,GAAMnP,EAAQuP,IAAO4C,EAAQnS,EAAQmwK,UAAY3W,GACzD7/H,EAAO9gC,KAAKi7K,cAAcvyK,EAAOytK,EAAcG,GAEnD,OAAO,IAAIlE,GAAU1pK,EAAOo4B,EAAMxnB,EAAO,KAAM68J,EACnD,EAEA2E,iBAAkB,SAASpyK,GACvB,IAAIurD,EAAQj0D,KAAKi0D,QACjB,OAAOA,EAAMv9C,KAAOhO,GAASA,GAASurD,EAAM96C,GAChD,EAEAkpK,IAAK,SAASt9I,GACV,IAAIkvB,EAAQj0D,KAAK4hL,eAAe78I,GAChC,OAAO/kC,KAAK67K,WAAW5nH,EAAMv9C,IAAKu9C,EAAM96C,IAAKnZ,KAAKkiL,SAAUliL,KAAKmiL,SAAUluH,EAAMn2C,OACrF,EAEAwkK,YAAa,SAASxsK,EAAOnK,GACzB,IAAIysC,EAAap4C,KAAKgqL,SAASl0K,GAC3BwiC,EAAWt4C,KAAKgqL,SAASr+K,GACzB+K,EAAMrT,KAAKqT,IAAI0hC,EAAYE,GAC3Bn/B,EAAM9V,KAAK8V,IAAIi/B,EAAYE,GAE/B,GAAIt4C,KAAKiqL,aAAavzK,EAAKyC,GACvB,MAAO,CACHzC,IAAKA,EACLyC,IAAKA,EAGjB,EAEA0oK,WAAY,SAAS9xI,EAAOirG,GACxB,IAAI1tI,EAAWjK,KAAKoU,IAAIzX,KAAKw8K,YAAYxhC,IACrC/mF,EAAQj0D,KAAKmH,QAAQgS,IAAMnZ,KAAKmH,QAAQuP,IACxCquB,EAAQ/kC,KAAKy8K,aAAa1sI,EAAOkkB,GACjC8tH,EAAWz0K,EAAWy3B,EACtBi9I,GAAY,EAAI10K,GAAYy3B,EAC5BruB,EAAMJ,GAAMtW,KAAKmH,QAAQuP,IAAMqrK,EAAUphB,GACzCxnJ,EAAM7C,GAAMtW,KAAKmH,QAAQgS,IAAM6oK,EAAUrhB,GAM7C,OAJIxnJ,EAAMzC,EAAM2xK,KACZlvK,EAAMzC,EAAM2xK,IAGT,CACH3xK,IAAKA,EACLyC,IAAKA,EAEb,EAEA8oK,UAAW,SAASlyI,EAAOirG,GACvB,IACIknC,EADMliL,KACSkiL,SACfC,EAFMniL,KAESmiL,SACfluH,EAAQj0D,KAAK6hL,WAAW9xI,EAAOirG,GAEnC,MAAO,CACHtkI,IAAK8hH,GAAWvkE,EAAMv9C,IAAKwrK,EAAUC,GACrChpK,IAAKq/G,GAAWvkE,EAAM96C,IAAK+oK,EAAUC,GACrCqG,aAAa,EAErB,EAEAyB,aAAc,SAASvzK,EAAKyC,GACxB,OAAOA,EAAMzC,EAAM2xK,EACvB,IA8FJ,SAASY,GAAevgL,EAAOgwC,EAASwxI,GACpC,IAAIC,EAAY7zK,GAAMjT,KAAKoU,IAAI/O,EAAQgwC,GAAUioH,GAGjD,OAAqB,IAAdwpB,GAAmBA,EAFVzxI,GAAW,EAAIwxI,EAGnC,CAEAlmB,GAAkBskB,GAAa,CAC3B5iL,KAAM,UACNgR,IAAK,EACLyC,IAAK,EACLq5B,UAAU,EACVwmI,eAAgB,CACZhsK,SAAS,EACTjB,MAAO,EACPklH,MAAOqvC,GAEX8U,OAAQ,CACJnkK,OAAQ,0BAEZ+oC,OAAQ,IAGZ,IAEIowI,GAAgBjV,GAAKpyK,OAAO,CAC5BoF,KAAM,SAAS+zK,EAAWC,EAAWuN,EAAanf,GAC9C,IAAI7zJ,EAAMynK,GAAOjC,GACb/iK,EAAMglK,GAAOhC,GAEbrI,EAAcvJ,EAAa0J,KAC3B9sK,EAAUuiL,GAAe,CAAC,EAO9BviL,EAkMR,SAAuB+0K,EAAWC,EAAWh1K,GACzC,IAAIuP,EAAMvP,EAAQuP,KAAOwlK,EACrB/iK,EAAMhS,EAAQgS,KAAOgjK,EACrBkD,EAAWl4K,EAAQk4K,WAAalmK,GAAOzC,EAnB/C,SAAmBquB,GACf,IAAIo1F,EAAO8iD,GAEPl4I,GAAS64I,GACTzjD,EAAOkjD,GACAt4I,GAAS44I,GAChBxjD,EAAOijD,GACAr4I,GAAS24I,GAChBvjD,EAAOgjD,GACAp4I,GAAS04I,KAChBtjD,EAAO+iD,IAGX,OAAO/iD,CACX,CAKqDkwD,CAAUrM,GAAiB7kK,EAAKzC,IAAQumK,IACrFqN,EAAezM,GAAcwB,GAC7Bz/I,EAAez4B,EAAQy4B,cAAgB,EACvC6oJ,EAAU3J,GAAUI,GAAOxoK,GAAO,EAAG2oK,EAAUz/I,IAAiBu+I,GAAOhlK,GACvE0vK,EAAU9J,GAASG,GAAO/lK,GAAO,EAAGkmK,EAAUz/I,GAC9C2qJ,EAAgBpjL,EAAQmwK,UAAYnwK,EAAQmwK,eAAY34B,EACxD24B,EAAYiT,GAAiBrjH,GAC7Bu/F,GAAcgiB,EAAQx/K,UAAW4/K,EAAQ5/K,WACzCqhL,GACAA,EACAE,EAAcljK,GAASmhK,EAASI,EAASxJ,GAEzCoL,EADavjH,GAAKsjH,EAAalT,GACLkT,EAC1BE,EAAOrnL,KAAKyN,MAAM25K,EAAa,GAC/BE,EAAOF,EAAaC,EAEnBvjL,EAAQk4K,iBACFl4K,EAAQk4K,SASnB,OANAl4K,EAAQk4K,SAAWl4K,EAAQk4K,UAAYA,EACvCl4K,EAAQuP,IAAMvP,EAAQuP,KAAO4nK,GAAYmK,GAAUiC,EAAMrL,EAAUz/I,GACnEz4B,EAAQgS,IAAMhS,EAAQgS,KAAOmlK,GAAYuK,EAAS8B,EAAMtL,EAAUz/I,GAClEz4B,EAAQywK,UAAYzwK,EAAQywK,WAAaN,EAAY,EACrDnwK,EAAQmwK,UAAYA,EAEbnwK,CACX,CAhOkByjL,CAAcl0K,EAAKyC,EAN7BhS,EAAUqB,EAAWrB,GAAW,CAAC,EAAG,CAChCuP,IAAK4H,GAAUw1J,EAAa3sK,EAAQuP,KACpCyC,IAAKmF,GAAUw1J,EAAa3sK,EAAQgS,KACpC0jK,kBAAmB2C,GAAW1L,EAAa3sK,EAAQ0jL,oBAAsB1jL,EAAQ01K,mBACjFj9I,aAAcpqB,GAASrO,EAAS2sK,MAIpCqB,GAAKptK,GAAGI,KAAKoC,KAAKvK,KAAMmH,EAASojK,GAEjCvqK,KAAK8zK,YAAcA,EACnB9zK,KAAKk8K,UAAYxlK,EACjB1W,KAAKm8K,UAAYhjK,EAEjB,IAAIymB,EAAez4B,EAAQy4B,cAAgB,EAC3C5/B,KAAKkiL,SAAWhD,GAAOJ,GAAUI,GAAOxoK,GAAO,EAAGvP,EAAQk4K,SAAUz/I,IACpE5/B,KAAKmiL,SAAWjD,GAAOH,GAASG,GAAO/lK,GAAO,EAAGhS,EAAQk4K,SAAUz/I,GACvE,EAEAx4B,MAAO,WACH,OAAO,IAAIgjL,GAAcpqL,KAAKk8K,UAAWl8K,KAAKm8K,UAAWx5K,EAAEI,OAAO,CAAC,EAAG/C,KAAKmH,SAAUnH,KAAKuqK,aAC9F,EAEAt2G,MAAO,WACH,IAAI9sD,EAAUnH,KAAKmH,QACnB,MAAO,CAAEuP,IAAKvP,EAAQuP,IAAKyC,IAAKhS,EAAQgS,IAC5C,EAEAywK,aAAc,SAASC,GACnB,IAAI1iL,EAAUnH,KAAKmH,QAEnB,OAAO9D,KAAKyN,MACRwW,GAASngB,EAAQuP,IAAKvP,EAAQgS,IAAKhS,EAAQk4K,UAAYwK,EAAY,EAE3E,EAEA/I,iBAAkB,SAAShuI,GAYvB,IAXA,IAAI3rC,EAAUnH,KAAKmH,QACfkrH,EAAMryH,KAAKq8K,WACX98I,EAAM8yF,EAAIiqD,QACVtpC,EAAW3gB,EAAI2gB,SACfl9H,EAAQu8G,EAAIghD,UACZyW,EAAY9pL,KAAK4pL,aAAa92I,GAE9B/C,EAAQijG,EADIisC,GAAS93K,EAAQgS,IAAKhS,EAAQuP,KAE1CkpB,EAAez4B,EAAQy4B,cAAgB,EAEvCs1D,EAAY,CAAEp/E,GACTvO,EAAI,EAAGA,EAAIuiL,EAAWviL,IAAK,CAChC,IACI8tF,EAAMv/E,EAAQmpK,GADPX,GAAYn3K,EAAQuP,IAAKnP,EAAIurC,EAAM3rC,EAAQk4K,SAAUz/I,GAC/Bz4B,EAAQuP,KAAOq5B,EAAQxQ,EAExD21D,EAAUvzF,KAAK2U,GAAM++E,EAvxNX,GAwxNd,CAEA,OAAOH,CACX,EAEAwiF,sBAAuB,WACnB,OAAO13K,KAAK8gL,iBAAiB9gL,KAAKmH,QAAQmwK,UAC9C,EAEAK,sBAAuB,WACnB,OAAO33K,KAAK8gL,iBAAiB9gL,KAAKmH,QAAQywK,UAC9C,EAEAa,QAAS,SAASvzK,EAAG+W,EAAGy+J,GACpB,OAAO4N,GAAYjgL,UAAUowK,QAAQluK,KACjCvK,KAAMse,GAAUte,KAAK8zK,YAAa5uK,GAAIoZ,GAAUte,KAAK8zK,YAAa73J,GAAIy+J,EAE9E,EAEAsP,SAAU,SAAS7tD,GACf,IAAIzzH,EAAQ4/K,GAAYjgL,UAAU2hL,SAASz/K,KAAKvK,KAAMm8H,GAEtD,OAAiB,OAAVzzH,EAAiBy1K,GAAOz1K,GAAS,IAC5C,EAEAutK,YAAa,WACT,OAAOj2K,KAAK4pL,aAAa5pL,KAAKmH,QAAQmwK,UAC1C,EAEAf,gBAAiB,SAASj9J,EAAO68J,EAAcG,GAC3C,IAAInvK,EAAUnH,KAAKmH,QACf2W,EAASxE,EAAQnS,EAAQmwK,UACzB13I,EAAez4B,EAAQy4B,cAAgB,EACvChpB,EAAOzP,EAAQuP,IAEfoH,EAAS,IACTlH,EAAO0nK,GAAY1nK,EAAMkH,EAAQ3W,EAAQk4K,SAAUz/I,IAGvD,IAAImoJ,EAAa5R,EAAa6R,YAAY7gL,EAAQk4K,UAClDlJ,EAAallK,OAASklK,EAAallK,QAAU82K,EAE7C,IAAIjnJ,EAAO9gC,KAAKi7K,cAAcrkK,EAAMu/J,EAAcG,GAClD,OAAO,IAAIlE,GAAUx7J,EAAMkqB,EAAMxnB,EAAO,KAAM68J,EAClD,EAEAyL,eAAgB,SAAS78I,GACrB,IAAI59B,EAAUnH,KAAKmH,QACfsvK,EAAUz2K,KAAKy2K,UACfjkI,EAAWrrC,EAAQqrC,SACnBn8B,EAAUlP,EAAQkP,QAClBrG,EAAOwiC,EAAWikI,EAAQzqK,SAAWyqK,EAAQ1qK,QAC7CkoD,EAAQj0D,KAAKi0D,QACblkB,EAAQ//B,EAAOivK,GAAShrH,EAAM96C,IAAK86C,EAAMv9C,KAEzCoH,EAASxH,GAAMyuB,EAAQgL,EAAO4wH,GAQlC,OAPKnuH,IAAYn8B,GAAcm8B,GAAYn8B,IACvCyH,GAAUA,GAMP,CACHpH,IAJOunK,GAAS92K,EAAQuP,IAAKoH,GAK7B3E,IAJK8kK,GAAS92K,EAAQgS,IAAK2E,GAK3BA,OAAQA,EAEhB,EAEAg9J,iBAAkB,SAASpyK,GACvB,IAAIurD,EAAQj0D,KAAKi0D,QAEjB,OAAO+qH,GAAat2K,EAAOurD,EAAMv9C,MAAQ,GAAKsoK,GAAat2K,EAAOurD,EAAM96C,MAAQ,CACpF,EAEAkpK,IAAK,SAASt9I,GACV,IAAIkvB,EAAQj0D,KAAK4hL,eAAe78I,GAAO,GACnC+lJ,EAAgB9qL,KAAK67K,WAAWqD,GAAOjrH,EAAMv9C,KAAMwoK,GAAOjrH,EAAM96C,KAAMnZ,KAAKkiL,SAAUliL,KAAKmiL,SAAUluH,EAAMn2C,QAE9G,GAAIgtK,EACA,MAAO,CACHp0K,IAAKynK,GAAO2M,EAAcp0K,KAC1ByC,IAAKglK,GAAO2M,EAAc3xK,KAGtC,EAEAmpK,YAAa,SAASxsK,EAAOnK,GACzB,IAAIysC,EAAap4C,KAAKgqL,SAASl0K,GAC3BwiC,EAAWt4C,KAAKgqL,SAASr+K,GACzB+K,EAAMrT,KAAKqT,IAAI0hC,EAAYE,GAC3Bn/B,EAAM9V,KAAK8V,IAAIi/B,EAAYE,GAE/B,MAAO,CACH5hC,IAAKynK,GAAOznK,GACZyC,IAAKglK,GAAOhlK,GAEpB,EAEA0oK,WAAY,SAAS9xI,EAAOirG,GACxB,IAAI1tI,EAAWjK,KAAKoU,IAAIzX,KAAKw8K,YAAYxhC,IACrC/mF,EAAQj0D,KAAKmH,QAAQgS,IAAMnZ,KAAKmH,QAAQuP,IACxCquB,EAAQ/kC,KAAKy8K,aAAa1sI,EAAOkkB,GACjC8tH,EAAWz0K,EAAWy3B,EACtBi9I,GAAY,EAAI10K,GAAYy3B,EAC5BruB,EAAMynK,GAAOe,GAAOl/K,KAAKmH,QAAQuP,KAAOqrK,GACxC5oK,EAAMglK,GAAOe,GAAOl/K,KAAKmH,QAAQgS,KAAO6oK,GAM5C,OAJI7oK,EAAMzC,EA3KI,MA4KVyC,EAAMglK,GAAOe,GAAOxoK,GA5KV,MA+KP,CACHA,IAAKA,EACLyC,IAAKA,EAEb,EAEA8oK,UAAW,SAASlyI,EAAOirG,GACvB,IAAI/mF,EAAQj0D,KAAK6hL,WAAW9xI,EAAOirG,GAInC,MAAO,CACHtkI,IAJMynK,GAAO3lD,GAAW0mD,GAAOjrH,EAAMv9C,KAAM1W,KAAKkiL,SAAUliL,KAAKmiL,WAK/DhpK,IAJMglK,GAAO3lD,GAAW0mD,GAAOjrH,EAAM96C,KAAMnZ,KAAKkiL,SAAUliL,KAAKmiL,WAMvE,IAmDJne,GAAkBomB,GAAe,CAC7B1kL,KAAM+6J,EACNuY,eAAgB,CACZhsK,SAAS,EACTjB,MAAO,EACPklH,MAAOqvC,GAEX8U,OAAQ,CACJ4S,YAAa9E,MAIrB,IACI6H,GAAoB,KAEpBC,GAAkB7V,GAAKpyK,OAAO,CAC9BoF,KAAM,SAAS+zK,EAAWC,EAAWh1K,EAASojK,GAE1C,IAAImf,EAAclhL,EAAW,CAAE8uK,UANd,GAM6C5gK,IAAKwlK,EAAW/iK,IAAKgjK,GAAah1K,GAC5Fa,EAAO0hL,EAAYpS,UACnBuR,EA0XZ,SAAuB1vK,EAAKnR,GACxB,IACI6gL,EADAoC,EAAkB30K,GAAM6a,GAAIhY,EAAKnR,GAAO24J,GAAqB,EAG7DkoB,EADA1vK,GAAO,EACGnR,EACiB,IAApBijL,IAA0BA,EAAkB,IAAOA,EAAkB,IAClE5nL,KAAKwmC,IAAI7hC,EAAMmpB,GAAIhY,EAAKnR,GAAQ,IAEhC3E,KAAKwmC,IAAI7hC,EAAM3E,KAAK6jE,KAAK/1C,GAAIhY,EAAKnR,KAGhD,OAAO6gL,CACX,CAtYsBqC,CAAc/O,EAAWn0K,GACnCygL,EA8WZ,SAAuB/xK,EAAKyC,EAAKhS,GAC7B,IAAIa,EAAOb,EAAQmwK,UACfmR,EAAU/xK,EACVA,GAAO,EACP+xK,EAAUtvK,GAAO,EAAI9V,KAAKwmC,IAAI7hC,GAAO,GAAK,EAClCb,EAAQqhL,cAChBC,EAAUplL,KAAKwmC,IAAI7hC,EAAM3E,KAAKyN,MAAMqgB,GAAIza,EAAK1O,MAEjD,OAAOygL,CACX,CAvXsB0C,CAAcjP,EAAWC,EAAWuN,GAC9Cz1H,EAmVZ,SAAmBw0H,EAASI,EAASa,EAAaviL,GAC9C,IAAIuP,EAAMgzK,EAAYhzK,IAClByC,EAAMuwK,EAAYvwK,IAElB29G,GAAQ4yD,EAAY7M,oBAAsB6M,EAAY7M,mBAAqB,GAC3EuO,KAGCt0D,GAAQ3vH,EAAQgS,KAEVhS,EAAQgS,KAAO,GACtBiyK,KAFAjyK,EAAM0vK,EAKL/xD,GAAQ3vH,EAAQuP,KAEVvP,EAAQuP,KAAO,GACtB00K,KAFA10K,EAAM+xK,EAKV,MAAO,CACH/xK,IAAKA,EACLyC,IAAKA,EAEb,CA3WoBkyK,CAAU5C,EAASI,EAASa,EAAaviL,GAErDuiL,EAAYvwK,IAAM86C,EAAM96C,IACxBuwK,EAAYhzK,IAAMu9C,EAAMv9C,IACxBgzK,EAAY9R,UAAYzwK,EAAQywK,WAAathK,GAAMtO,EAAO,EAAG24J,GAE7DwU,GAAKptK,GAAGI,KAAKoC,KAAKvK,KAAM0pL,EAAanf,GAErCvqK,KAAKkiL,SAAWprD,GAAQ3vH,EAAQuP,KAAOrT,KAAKqT,IAAI+xK,EAASthL,EAAQuP,KAAO+xK,EACxEzoL,KAAKmiL,SAAWrrD,GAAQ3vH,EAAQgS,KAAO9V,KAAK8V,IAAI0vK,EAAS1hL,EAAQgS,KAAO0vK,EACxE7oL,KAAKsrL,OAASh1K,GAAM6a,GAAI8iC,EAAMv9C,IAAK1O,GAAO24J,GAC1C3gK,KAAKurL,OAASj1K,GAAM6a,GAAI8iC,EAAM96C,IAAKnR,GAAO24J,GAC1C3gK,KAAKk8K,UAAYA,EACjBl8K,KAAKm8K,UAAYA,EAEjBn8K,KAAK61K,cACT,EAEAzuK,MAAO,WACH,OAAO,IAAI4jL,GACPhrL,KAAKk8K,UACLl8K,KAAKm8K,UACLx5K,EAAEI,OAAO,CAAC,EAAG/C,KAAKmH,SAClBnH,KAAKuqK,aAEb,EAEAnyH,WAAY,WACR,OAAOp4C,KAAKmH,QAAQuP,GACxB,EAEA+hK,QAAS,SAASvzK,EAAG+W,EAAGy+J,GACpB,IAAIroD,EAAMryH,KACNmH,EAAUkrH,EAAIlrH,QACdmkL,EAASj5D,EAAIi5D,OACbC,EAASl5D,EAAIk5D,OACbvjL,EAAOb,EAAQmwK,UACf5gK,EAAMvP,EAAQuP,IACdyC,EAAMhS,EAAQgS,IACdu5H,EAAQ1yI,KAAKq8K,WACbl3I,EAAOutG,EAAMvtG,KACbm3I,EAAU5pC,EAAM4pC,QAChB7F,EAAU/jC,EAAM+jC,QAChBzjC,EAAWN,EAAMM,SACjBqgC,EAAY3gC,EAAM2gC,UAClBvgI,EAAOwpI,GAAWtpC,GAAYu4C,EAASD,IACvCx1K,EAAQkjH,GAAe9zH,EAAG+W,GAAK,GAC/BtQ,EAAMqtH,GAAe/8G,EAAG/W,GAAK,GAEjC,GAAI4Q,GAAS,GAAKnK,GAAO,EACrB,OAAO,KAGP+uK,IACA5kK,EAAQ0iH,GAAW1iH,EAAOY,EAAKyC,GAC/BxN,EAAM6sH,GAAW7sH,EAAK+K,EAAKyC,IAG/BrD,EAAQqb,GAAIrb,EAAO9N,GACnB2D,EAAMwlB,GAAIxlB,EAAK3D,GAEf,IAAI87H,EAAKzgI,KAAKqT,IAAIZ,EAAOnK,GAAO2/K,EAC5B9nD,EAAKngI,KAAK8V,IAAIrD,EAAOnK,GAAO2/K,EAE5BpK,EAAU,IAAIna,GAAI0P,EAAQx4F,GAAIw4F,EAAQv4F,GAAIu4F,EAAQx4F,GAAIw4F,EAAQv4F,IAIlE,OAHAgjG,EAAQ/7I,EAAO,GAAKijJ,GAAgB/U,EAAYvgI,GAAQwpI,EAAU,EAAIx4C,EAAKN,IAC3E09C,EAAQ/7I,EAAO,GAAKijJ,GAAgB/U,EAAYvgI,GAAQwpI,EAAU,EAAI94C,EAAKM,IAEpEo9C,CACX,EAEA8I,SAAU,SAAS7tD,GACf,IAAI9J,EAAMryH,KACNmH,EAAUkrH,EAAIlrH,QACdmkL,EAASj5D,EAAIi5D,OACbC,EAASl5D,EAAIk5D,OACbvjL,EAAOb,EAAQmwK,UACf5kC,EAAQ1yI,KAAKq8K,WACbl3I,EAAOutG,EAAMvtG,KACbm3I,EAAU5pC,EAAM4pC,QAChBjJ,EAAY3gC,EAAM2gC,UAClBrgC,EAAWN,EAAMM,SACjBlgG,GAASy4I,EAASD,GAAUt4C,EAC5Bl1H,EAASw+J,GAAWngD,EAAMh3F,GAAQkuI,GAGtC,GAAIv1J,EAAS,GAAKA,EAASk1H,EACvB,OAAO,KAGX,IAAItqI,EAAQ4iL,EANMxtK,EAASg1B,EAQ3B,OAAOx8B,GAAMjT,KAAKwmC,IAAI7hC,EAAMU,GAAQi4J,EACxC,EAEA1sG,MAAO,WACH,IAAI9sD,EAAUnH,KAAKmH,QACnB,MAAO,CAAEuP,IAAKvP,EAAQuP,IAAKyC,IAAKhS,EAAQgS,IAC5C,EAEAyoK,eAAgB,SAAS78I,GACrB,IAAIstF,EAAMryH,KACNmH,EAAUkrH,EAAIlrH,QACdmkL,EAASj5D,EAAIi5D,OACbC,EAASl5D,EAAIk5D,OACbl1K,EAAUlP,EAAQkP,QAClBm8B,EAAWrrC,EAAQqrC,SACnBxqC,EAAOb,EAAQmwK,UACfb,EAAUz2K,KAAKy2K,UACfzmK,EAAOwiC,EAAWikI,EAAQzqK,SAAWyqK,EAAQ1qK,QAE7C+R,EAASxH,GAAMyuB,GADP/0B,GAAQu7K,EAASD,IACK3qB,GAMlC,OAJKnuH,IAAYn8B,GAAcm8B,GAAYn8B,IACvCyH,GAAUA,GAGP,CACHpH,IAAKrT,KAAKwmC,IAAI7hC,EAAMsjL,EAASxtK,GAC7B3E,IAAK9V,KAAKwmC,IAAI7hC,EAAMujL,EAASztK,GAC7BA,OAAQA,EAEhB,EAEAm4J,YAAa,WACT,IAAIuV,EAAWnoL,KAAKyN,MAAM9Q,KAAKurL,QAG/B,OAFYloL,KAAKyN,MAAM06K,EAAWxrL,KAAKsrL,QAAU,CAGrD,EAEA5T,sBAAuB,WACnB,IAAIwG,EAAQ,GAMZ,OAJAl+K,KAAKyrL,6BAA4B,SAAUn+K,GACvC4wK,EAAMv8K,KAAK2L,EACf,GAAG,CAAEwlC,KAAM,EAAG+R,KAAM,IAEbq5H,CACX,EAEA9G,YAAa,SAASC,GAClB,IAAIlwK,EAAUnH,KAAKmH,QACfsuK,EAAatuK,EAAQsuK,WACrBF,EAAapuK,EAAQouK,WACrB/iI,EAAWrrC,EAAQqrC,SACnBwB,EAAS7sC,EAAQiuK,OAAOphI,OACxByiI,EAAUz2K,KAAKy2K,UAEfc,EAAkB,CAGlB/kI,SAAUA,GAGd,SAASriC,EAAOu7K,EAAc7W,GAC1B0C,EAAgBzC,MAAQ9gI,EAASyiI,EAAQt4F,GAAKs4F,EAAQt4F,GAAK02F,EAAY7kK,KACvEunK,EAAgBxC,MAAQ/gI,EAASyiI,EAAQv4F,GAAK22F,EAAY7kK,KAAOymK,EAAQv4F,GACzEq5F,EAAgBjqK,SAAWo+K,EAE3BrU,EAAUl9H,OAAOy6H,GAAe2C,EAAiB1C,GACrD,CAUA,OARIY,EAAWzoK,SACXhN,KAAKyrL,4BAA4Bt7K,EAAQslK,GAGzCF,EAAWvoK,SACXhN,KAAK2rL,4BAA4Bx7K,EAAQolK,GApBjC,EAwBhB,EAEAuD,gBAAiB,SAAST,GACtB,IAAIlxK,EAAUnH,KAAKmH,QACf4xK,EAAiB5xK,EAAQ4xK,eACzBC,EAAiB7xK,EAAQ6xK,eACzBxmI,EAAWrrC,EAAQqrC,SACnBikI,EAAU4B,EAAQ5B,UAClB0C,EAAc,CACd9F,UAAWoD,EAAQjkI,EAAW,KAAO,MACrC0iI,QAASuB,EAAQjkI,EAAW,KAAO,MACnCA,SAAUA,GAEVijI,EAAa,GAEbh/I,EAAYz2B,KAAKi3K,kBACrB,SAAS9mK,EAAOu7K,EAAczW,GACrBx/I,GAAQi2J,EAAcjW,KACvB0D,EAAY7rK,SAAWo+K,EACvBj1J,EAAU0jB,OAAO66H,GAAmBmE,EAAalE,IAEjDQ,EAAW9zK,KAAK+pL,GAExB,CAUA,OARI1S,EAAehsK,SACfhN,KAAKyrL,4BAA4Bt7K,EAAQ6oK,GAGzCD,EAAe/rK,SACfhN,KAAK2rL,4BAA4Bx7K,EAAQ4oK,GAGtCtiJ,EAAU8e,QACrB,EAEAk2I,4BAA6B,SAAS7hK,EAAUirJ,GAQ5C,IAPA,IAAIxiD,EAAMryH,KAAKq8K,WACXhJ,EAAYhhD,EAAIghD,UAChBvgI,EAAOu/E,EAAIv/E,KAEXw4I,EADQtrL,KACOsrL,OACfC,EAFQvrL,KAEOurL,OAEVxyD,EAAQ11H,KAAK6jE,KAAKokH,GAAUzW,EAAYhwH,KAAMk0E,GAASwyD,EAAQxyD,GAAS87C,EAAY/hI,KAAM,CAE/FlpB,EADetT,GAAM+8J,EAAYvgI,GAAQimF,EAAQuyD,GAAS3qB,GACvCkU,EACvB,CACJ,EAEA8W,4BAA6B,SAAS/hK,EAAUirJ,GAgB5C,IAfA,IAEIxiD,EAAMryH,KAAKmH,QACXuP,EAAM27G,EAAI37G,IACVyC,EAAMk5G,EAAIl5G,IACVy+J,EAAYvlD,EAAIulD,UAChB5vK,EAAOqqH,EAAIilD,UACX5kC,EAAQ1yI,KAAKq8K,WACbhJ,EAAY3gC,EAAM2gC,UAClBvgI,EAAO4/F,EAAM5/F,KAEbw4I,EADQtrL,KACOsrL,OACfC,EAFQvrL,KAEOurL,OAGVxyD,EAFG11H,KAAKyN,MAAMw6K,GAECvyD,EAAQwyD,EAAQxyD,IAEpC,IADA,IAAI6yD,EAhBO5rL,KAgBiB6rL,sBAAsB9yD,GACzCnvH,EAAMirK,EAAYhwH,KAAMj7C,EAAMguK,EAAWhuK,GAAOirK,EAAY/hI,KAAM,CACvE,IAAIpqC,EAAQkjL,EAAaljL,MAAQkB,EAAMgiL,EAAaE,UACpD,GAAIpjL,EAAQyQ,EACR,MAEJ,GAAIzQ,GAASgO,EAETkT,EADetT,GAAM+8J,EAAYvgI,GAAQ3hB,GAAIzoB,EAAOV,GAAQsjL,GAAS3qB,GAClDkU,EAE3B,CAER,EAEA0B,gBAAiB,SAASj9J,EAAO68J,EAAcG,GAC3C,IAAIv9C,EAAQ11H,KAAK6jE,KAAKlnE,KAAKsrL,OAAShyK,GAChC5Q,EAAQrF,KAAKwmC,IAAI7pC,KAAKmH,QAAQmwK,UAAWv+C,GACzCj4F,EAAO9gC,KAAKi7K,cAAcvyK,EAAOytK,EAAcG,GAEnD,OAAO,IAAIlE,GAAU1pK,EAAOo4B,EAAMxnB,EAAO,KAAM68J,EACnD,EAEA2E,iBAAkB,SAASpyK,GACvB,IAAIurD,EAAQj0D,KAAKi0D,QACjB,OAAOA,EAAMv9C,KAAOhO,GAASA,GAASurD,EAAM96C,GAChD,EAEAkpK,IAAK,SAASt9I,GACV,IAAIkvB,EAAQj0D,KAAK4hL,eAAe78I,GAChC,OAAO/kC,KAAK67K,WAAW5nH,EAAMv9C,IAAKu9C,EAAM96C,IAAKnZ,KAAKkiL,SAAUliL,KAAKmiL,SAAUluH,EAAMn2C,OACrF,EAEAwkK,YAAa,SAASxsK,EAAOnK,GACzB,IAAIysC,EAAap4C,KAAKgqL,SAASl0K,GAC3BwiC,EAAWt4C,KAAKgqL,SAASr+K,GAI7B,MAAO,CACH+K,IAJMrT,KAAKqT,IAAI0hC,EAAYE,GAK3Bn/B,IAJM9V,KAAK8V,IAAIi/B,EAAYE,GAMnC,EAEAupI,WAAY,SAAS9xI,EAAOirG,GACxB,IACIhzI,EADMhI,KAAKmH,QACAmwK,UACXgU,EAASn6J,GAAInxB,KAAKmH,QAAQuP,IAAK1O,GAC/BujL,EAASp6J,GAAInxB,KAAKmH,QAAQgS,IAAKnR,GAC/BsF,EAAWjK,KAAKoU,IAAIzX,KAAKw8K,YAAYxhC,IACrC/mF,EAAQs3H,EAASD,EACjBvmJ,EAAQ/kC,KAAKy8K,aAAa1sI,EAAOkkB,GACjCv9C,EAAMrT,KAAKwmC,IAAI7hC,EAAMsjL,EAASh+K,EAAWy3B,GACzC5rB,EAAM9V,KAAKwmC,IAAI7hC,EAAMujL,GAAU,EAAIj+K,GAAYy3B,GAMnD,OAJI5rB,EAAMzC,EAAMq0K,KACZ5xK,EAAMzC,EAAMq0K,IAGT,CACHr0K,IAAKA,EACLyC,IAAKA,EAEb,EAEA8oK,UAAW,SAASlyI,EAAOirG,GACvB,IAAI/mF,EAAQj0D,KAAK6hL,WAAW9xI,EAAOirG,GAE/BknC,EADMliL,KACSkiL,SACfC,EAFMniL,KAESmiL,SAEnB,MAAO,CACHzrK,IAAK8hH,GAAWvkE,EAAMv9C,IAAKwrK,EAAUC,GACrChpK,IAAKq/G,GAAWvkE,EAAM96C,IAAK+oK,EAAUC,GAE7C,EAEA0J,sBAAuB,SAAS9yD,GAC5B,IAAI1G,EAAMryH,KAAKmH,QACXywK,EAAYvlD,EAAIulD,UAChB5vK,EAAOqqH,EAAIilD,UACX5uK,EAAQrF,KAAKwmC,IAAI7hC,EAAM+wH,GAK3B,MAAO,CACHrwH,MAAOA,EACPojL,WANYzoL,KAAKwmC,IAAI7hC,EAAM+wH,EAAQ,GACVrwH,GACAkvK,EAMjC,EAEAyE,SAAU,WACN,IAAIz9I,EAAOu2I,GAAKptK,GAAGs0K,SAAS9xK,KAAKvK,MAGjC,OAFA4+B,EAAKkU,KAAOlU,EAAK09I,SAAW19I,EAAKo0G,UAAYhzI,KAAKurL,OAASvrL,KAAKsrL,SAEzD1sJ,CACX,IAsDJ,SAASwsJ,KACL,MAAM,IAAIp6K,MAAM,4DACpB,CAEA,SAASmgB,GAAI/rB,EAAG4C,GACZ,OAAO3E,KAAK8tB,IAAI/rB,GAAK/B,KAAK8tB,IAAInpB,EAClC,CAEAg8J,GAAkBgnB,GAAiB,CAC/BtlL,KAAM,MACN4xK,UA1ZqB,GA2ZrBM,UAAW,EACXiF,kBAAmB,EACnBrqI,UAAU,EACVwmI,eAAgB,CACZhsK,SAAS,EACTjB,MAAO,EACPklH,MAAOqvC,GAEXtmH,OAAQ,EACR47H,cAAc,IAGlB,IAAImW,GAAiB,CACjBjT,gBAAiB,SAAST,GACtB,IAII2T,EAAaC,EAJb9kL,EAAUnH,KAAKmH,QACfmlB,EAASjpB,KAAKoU,IAAIzX,KAAKs5C,IAAIilC,SAASp6E,EAAIk0K,EAAQ5B,UAAUv4F,IAC1Dg5F,EAAY,GACZgV,GAAY,EAoBhB,OAjBI/kL,EAAQ6xK,eAAehsK,UACvBg/K,EAAchsL,KAAKmsL,oBAAoB9T,GACvC6T,GAAY,EAEZhV,EAAYl3K,KAAKosL,qBACbJ,EAAa1/J,EAAQnlB,EAAQ6xK,iBAIjC7xK,EAAQ4xK,eAAe/rK,UACvBi/K,EAAcjsL,KAAKqsL,oBAAoBhU,EAAS6T,GAEhD/xI,GAAO+8H,EAAWl3K,KAAKssL,qBACnBL,EAAa3/J,EAAQnlB,EAAQ4xK,eAAgBV,EAAS6T,KAIvDhV,CACX,EAEAkV,qBAAsB,SAAS7iB,EAAQj9I,EAAQnlB,GAC3C,OAAOnH,KAAKusL,gBAAgBhjB,EAAQj9I,EAAQnlB,EAChD,EAEAmlL,qBAAsB,SAAS/iB,EAAQj9I,EAAQnlB,EAASkxK,EAAS6T,GAC7D,IAAIM,EAAiBxsL,KAAKwsL,gBAAkBxsL,KAAKwsL,eAAelgK,EAAQ+rJ,EAAS6T,GACjF,OAAOlsL,KAAKusL,gBAAgBhjB,EAAQj9I,EAAQnlB,EAASqlL,EACzD,EAEAD,gBAAiB,SAAShjB,EAAQj9I,EAAQnlB,EAASqlL,GAa/C,IAZA,IAAIr/K,EAAQ,CACRyyH,OAAQ,CACJ7zH,MAAO5E,EAAQ4E,MACfklH,MAAO9pH,EAAQ8pH,MACf4tB,SAAU13I,EAAQ03I,WAItBtgE,EAASv+E,KAAKs5C,IAAIilC,SAClB01E,EAAS,IAAI9zB,EAAO,CAAE5hD,EAAOn5E,EAAGm5E,EAAOp6E,GAAKmoB,GAC5CmK,EAAYz2B,KAAKi3K,kBAEZ1vK,EAAI,EAAGA,EAAIgiK,EAAO/hK,OAAQD,IAAK,CACpC,IAAIg+J,EAAO,IAAIh3B,EAAKphI,GAChBq/K,IACAv4B,EAAO3nI,OAASkgK,EAAejjB,EAAOhiK,KAG1Cg+J,EAAK/oH,OAAOy3G,EAAO11E,QACdsuD,OAAOonB,EAAO1zB,QAAQgpC,EAAOhiK,GAAK,MAEvCkvB,EAAU0jB,OAAOorH,EACrB,CAEA,OAAO9uI,EAAU8e,QACrB,EAEAk3I,eAAgB,SAASpU,EAASroK,EAAM60C,EAAM/R,EAAM45I,GAChD,IAAIz5D,EAAWjzH,KAEX2sL,EAAO3sL,KAAK4sL,UAAU58K,EAAM60C,EAAM/R,EAAM45I,GACxCvlL,EAAUkxK,EAAQlxK,QAClB0lL,EAAiB1lL,EAAQ6F,UAA4C,KAAhC7F,EAAQo+J,MAAQ,CAAC,GAAGv4J,QAE7D,OAAO6N,GAAI8xK,GAAM,SAAUnoL,GACvB,IAAImuH,EAAQM,EAAS8P,cAAcv+H,GAEnC,IAAKqoL,GAA4B,KAAVl6D,EACnB,OAAOA,CAEf,GACJ,GAGAm6D,GAAoBpN,GAAa38K,OAAO,CACxCkxD,MAAO,WACH,MAAO,CAAEv9C,IAAK,EAAGyC,IAAKnZ,KAAKmH,QAAQ04K,WAAWr4K,OAClD,EAEA6qI,OAAQ,SAAS/4F,GACbt5C,KAAKs5C,IAAMA,EACXt5C,KAAK+sL,cACT,EAEAtW,QAAS,WACL,OAAOz2K,KAAKs5C,GAChB,EAEAyzI,aAAc,WAUV,IATA,IAGI3X,EADMp1K,KACOo1K,OACbe,EAFMn2K,KAEamH,QAAQiuK,OAC3BvwH,EAAOsxH,EAAatxH,MAAQ,EAC5B/R,EAAOqjI,EAAarjI,MAAQ,EAC5BsiF,EAAa,IAAI2xC,GAEZx/J,EAAI,EAAGA,EAAI6tK,EAAO5tK,OAAQD,IAAK,CACpC6tK,EAAO7tK,GAAG8qI,OAAOjd,GACjB,IAAIglD,EAAWhF,EAAO7tK,GAAG+xC,IAEzB87H,EAAO7tK,GAAG8qI,OAbCryI,KAaey4K,QAAQ5zH,EAAOt9C,EAAIurC,GAAM61H,YAC/C,EAAGyR,EAASruK,QAASquK,EAASpuK,UAEtC,CACJ,EAEA4gL,UAAW,SAAS58K,EAAMg9K,EAAYC,EAAYP,QAC3B,IAAfA,IAAyBA,GAAa,GAW1C,IATA,IAAIvlL,EAAUnH,KAAKmH,QAEf+lL,EADa/lL,EAAQ04K,WAAWr4K,OACRwI,GAAQ,EAChCm9K,EAAW,IAAMD,EAEjBp6I,EAAOm6I,GAAc,EACrBN,EAAO,GACPvyD,EAAQ,EAEH7yH,EALEylL,GAAc,EAKNzlL,EAAI2lL,EAAU3lL,GAAKurC,EAE9BsnF,EADAjzH,EAAQkP,QACA,IAAM9O,EAAI4lL,EAEV5lL,EAAI4lL,EAGhB/yD,EAAQ9jH,GAAM8jH,EArgPJ,GAqgP8B,IAElCsyD,GAAcj3J,GAAQ2kG,EAAOsyD,IAC/BC,EAAKhrL,KAAKy4H,GAIlB,OAAOuyD,CACX,EAEAS,eAAgB,WACZ,OAAOptL,KAAK4sL,UAAU,EAC1B,EAEAS,eAAgB,WACZ,OAAOrtL,KAAK4sL,UAAU,GAC1B,EAEA7pD,cAAe,SAASF,GACpB,OAAQ,IAAMA,EAAW7iI,KAAKmH,QAAQo7H,YAAc,GACxD,EAEAypD,YAAa,WACT,IAAI/4D,EAAWjzH,KAEf,OAAO6a,GAAI7a,KAAKotL,kBAAkB,SAAUvqD,GAAY,OAAO5P,EAAS8P,cAAcF,EAAW,GACrG,EAEA0wC,WAAY,WACR,MAAO,EACX,EAEA4Y,oBAAqB,SAAS9T,GAC1B,IAAIW,EAAiBh5K,KAAKmH,QAAQ6xK,eAClC,OAAOh5K,KAAKysL,eAAepU,EAAS,EAAGW,EAAen0H,KAAMm0H,EAAelmI,KAC/E,EAEAu5I,oBAAqB,SAAShU,EAAS6T,GACnC,IAAI75D,EAAMryH,KAAKmH,QACX4xK,EAAiB1mD,EAAI0mD,eACrBC,EAAiB3mD,EAAI2mD,eACrBmT,EAAsBD,EAAYlsL,KAAK4sL,UAAU,EAAG5T,EAAen0H,KAAMm0H,EAAelmI,MAAQ,KAEpG,OAAO9yC,KAAKysL,eAAepU,EAAS,GAAKU,EAAel0H,KAAMk0H,EAAejmI,KAAMq5I,EACvF,EAEAK,eAAgB,SAASlgK,EAAQ+rJ,EAAS6T,GACtC,GAAI7T,EAAQlxK,QAAQzB,OAAS06J,EAAK,CAC9B,IAAIktB,EAAaz0D,GAAI,KAAwC,EAAjC74H,KAAKmH,QAAQ04K,WAAWr4K,SAChD+lL,EAAclqL,KAAKg3H,IAAIizD,GAAchhK,EACrC0/J,EAAchsL,KAAKgsL,cASvB,OAPqB,SAAS5xD,GAC1B,OAAK8xD,GAAaz2J,GAAQ2kG,EAAO4xD,GACtB1/J,EAGJihK,CACX,CAEJ,CACJ,EAEAvW,gBAAiB,WASb,IARA,IAEIkB,EAAYl4K,KAAKmH,QAAQ+wK,WAAa,GAEtC3jH,EAAQv0D,KAAKo4K,eAAiB,IAAI3nC,EAAM,CACxCz2F,QAAS,IAGJzyC,EAAI,EAAGA,EAAI2wK,EAAU1wK,OAAQD,IAAK,CACvC,IAAIimL,EAAOtV,EAAU3wK,GACjBszK,EAVO76K,KAUSytL,aAAaD,GAC7BrM,EAXOnhL,KAWey4K,QAAQ+U,EAAKzxK,MAEnC2uK,EAAO8C,EAAKzxK,KAAO1Y,KAAKyN,MAAM08K,EAAKzxK,MACvC8+J,EAAKt4C,YAAcmoD,EAAOvJ,EAAW/mD,MAErC,IAAIuwD,EAAOtnL,KAAK6jE,KAAKsmH,EAAKlvJ,IAAMkvJ,EAAKlvJ,GACrCu8I,EAAKzgD,QAAUuwD,EAAOD,GAAQvJ,EAAW/mD,MAEzC,IAAIszD,EAAO7jB,GAAa71J,QAAQ81J,WAAW+Q,EAAM,CAC7CnnJ,KAAM,CACFu9F,MAAOu8D,EAAKv8D,MACZl6F,QAASy2J,EAAKz2J,SAElB6oG,OAAQ,CACJ7oG,QAASy2J,EAAKz2J,WAGtBw9B,EAAMpa,OAAOuzI,EACjB,CAEA1tL,KAAKgrK,aAAaz2G,EACtB,EAEAk5H,aAAc,SAASD,GACnB,OAAOxtL,KAAKy4K,QAAQ+U,EAAKzxK,KAAMyxK,EAAKlvJ,GAAK,EAC7C,EAEAm6I,QAAS,SAAS18J,EAAMuiB,GACpB,IAAIn3B,EAAUnH,KAAKmH,QACfw1K,EAAYx1K,EAAQw1K,UACpBrjI,EAAMt5C,KAAKs5C,IACXqzI,EAAO3sL,KAAKgsL,cACZ2B,EAAYhB,EAAKnlL,OACjBomL,EAAY,IAAMD,EAClBE,EAAY9xK,EAEZ5U,EAAQkP,UAAYsmK,IACpBkR,GAAaA,EAAY,GAAKF,GAIlC,IAAIG,EAAYnB,EADhBkB,EAAYr1D,GAAWn1H,KAAKyN,MAAM+8K,GAAY,EAAGF,EAAY,IAGzDhR,IACAmR,GAAwBF,EAAY,GAEpB,IACZE,GAAa,KAIrB,IAEI1zD,EAAQwzD,GAFEp1D,GAAWn1H,KAAK6jE,KAAK5oC,GAAMuvJ,GAAYA,EAAWF,EAAY,GACtDE,EAAY,GAGlC,OAAO,IAAIzlB,GAAK9uH,EAAIilC,SAAU,EAAGjlC,EAAIttC,SAAW,EAAG8hL,EAAW1zD,EAClE,EAEAygD,KAAM,SAAS9+J,EAAMuiB,GACjB,IAAIu8I,EAAO76K,KAAKy4K,QAAQ18J,EAAMuiB,GAC1BikG,EAAas4C,EAAKt4C,WAAa,IAC/BC,EAAWD,EAAas4C,EAAKzgD,MAEjC,OAAO,IAAIuH,EAASS,IAAI,CAAEy4C,EAAKt8F,OAAOn5E,EAAGy1K,EAAKt8F,OAAOp6E,GAAK,CACtDo+H,WAAYA,EACZC,SAAUA,EACVH,QAASw4C,EAAKvuJ,OACdg2G,QAASu4C,EAAKvuJ,QAEtB,EAEAi1J,mBAAoB,SAASplD,GAMzB,IALA,IAEI30H,EAASxH,KAAKmH,QAAQ04K,WAAWr4K,OACjC8R,EAAQ,KAEH/R,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAE7B,GAPWvH,KAMSy4K,QAAQlxK,GACnB42H,cAAchC,GAAQ,CAC3B7iH,EAAQ/R,EACR,KACJ,CACJ,CAEA,OAAO+R,CACX,IAGJ0qJ,GAAkB8oB,GAAmB,CACjCvqD,WAAY,GACZ6yC,OAAQ,CACJr8H,OAAQmqH,GAAW,KAEvB8V,eAAgB,CACZhsK,SAAS,GAEb2vK,WAAW,IAEfn0K,EAAWskL,GAAkBzkL,UAAW0jL,IAExC,IAAIgC,GAAY5Y,GAAKpyK,OAAO,CACxBoF,KAAM,SAAShB,EAASojK,GACpB4K,GAAKptK,GAAGI,KAAKoC,KAAKvK,KAAMmH,EAASojK,GAEjC,IAAIyjB,EAAkBhuL,KAAKmH,QAE3B6mL,EAAgBpW,UAAYoW,EAAgBpW,WAAaoW,EAAgB1W,UAAY,CACzF,EAEAsS,aAAc,SAASC,GACnB,OAAOvB,GAAYjgL,UAAUuhL,aAAar/K,KAAKvK,KAAM6pL,GAAa,CACtE,EAEAx3C,OAAQ,SAAS/4F,GACbt5C,KAAKs5C,IAAMA,EACXt5C,KAAK+sL,cACT,EAEAA,aAAc,WAaV,IAZA,IAEI16D,EAAMryH,KACNmH,EAAUkrH,EAAIlrH,QACdiuK,EAAS/iD,EAAI+iD,OACbe,EAAe9jD,EAAIlrH,QAAQiuK,OAC3BvwH,EAAOsxH,EAAatxH,MAAQ,EAC5B/R,EAAOqjI,EAAarjI,MAAQ,EAE5BsiF,EAAa,IAAI2xC,GACjB4lB,EAAO3sL,KAAK4sL,UAAUzlL,EAAQmwK,UAAWzyH,EAAM/R,GAE1CvrC,EAAI,EAAGA,EAAI6tK,EAAO5tK,OAAQD,IAAK,CACpC6tK,EAAO7tK,GAAG8qI,OAAOjd,GACjB,IAAIglD,EAAWhF,EAAO7tK,GAAG+xC,IAEzB87H,EAAO7tK,GAAG8qI,OAhBCryI,KAgBey4K,QAAQkU,EAAKplL,IAAIohK,YAAY,EAAGyR,EAASruK,QAASquK,EAASpuK,UACzF,CACJ,EAEAyqK,QAAS,WACL,OAAOz2K,KAAKs5C,GAChB,EAEAszI,UAAW,SAAS58K,EAAMg9K,EAAYC,EAAYP,QAC3B,IAAfA,IAAyBA,GAAa,GAQ1C,IANA,IAAIh2K,EAAM1W,KAAKmH,QAAQuP,IACnBozK,EAAY9pL,KAAK4pL,aAAa55K,GAC9B28K,EAAO,GAEP75I,EAAOm6I,GAAc,EAEhB1lL,EAHEylL,GAAc,EAGNzlL,EAAIuiL,EAAWviL,GAAKurC,EAAM,CACzC,IAAI9+B,GAAW,IAAM0C,EAAMnP,EAAIyI,GAAQ,IACjC08K,GAAcj3J,GAAQzhB,EAAS04K,IACjCC,EAAKhrL,KAAKqS,EAElB,CAEA,OAAO24K,CACX,EAEAS,eAAgB,WACZ,OAAOptL,KAAK4sL,UAAU5sL,KAAKmH,QAAQmwK,UACvC,EAEA+V,eAAgB,WACZ,OAAOrtL,KAAK4sL,UAAU5sL,KAAKmH,QAAQywK,UACvC,EAEA70C,cAAe,SAASx7H,GACpB,OAAQ,IAAMA,EAAIvH,KAAKmH,QAAQo7H,YAAc,GACjD,EAEAgxC,WAAY,WACR,MAAO,EACX,EAEA4Y,oBAAqB,SAAS9T,GAC1B,IAAIW,EAAiBh5K,KAAKmH,QAAQ6xK,eAClC,OAAOh5K,KAAKysL,eAAepU,EAASr4K,KAAKmH,QAAQmwK,UAAW0B,EAAen0H,KAAMm0H,EAAelmI,KACpG,EAEAu5I,oBAAqB,SAAShU,EAAS6T,GACnC,IAAI/kL,EAAUnH,KAAKmH,QACf4xK,EAAiB5xK,EAAQ4xK,eACzBC,EAAiB7xK,EAAQ6xK,eACzBmT,EAAsBD,EAAYlsL,KAAK4sL,UAAUzlL,EAAQmwK,UAAW0B,EAAen0H,KAAMm0H,EAAelmI,MAAQ,KAEpH,OAAO9yC,KAAKysL,eAAepU,EAASlxK,EAAQywK,UAAWmB,EAAel0H,KAAMk0H,EAAejmI,KAAMq5I,EACrG,EAEAsB,aAAc,SAASD,GACnB,OAAOxtL,KAAKy4K,QAAQ+U,EAAKzxK,KAAMyxK,EAAKlvJ,GACxC,EAEAm6I,QAAS,SAASvzK,EAAG+W,GACjB,IACI9U,EADMnH,KACQmH,QACdmyC,EAFMt5C,KAEIs5C,IACVipF,EAAap7H,EAAQo7H,WACrBzsH,EAAQ0iH,GAAWtzH,EAAGiC,EAAQuP,IAAKvP,EAAQgS,KAC3CxN,EAAM6sH,GAAWv8G,GAAKnG,EAAOA,EAAO3O,EAAQgS,KAUhD,GARIhS,EAAQkP,UACRP,IAAU,EACVnK,IAAQ,IAIZA,GAAO,IAAMA,EAAM42H,GAAc,MADjCzsH,GAAS,IAAMA,EAAQysH,GAAc,KAGpB,CACb,IAAI5pF,EAAM7iC,EACVA,EAAQnK,EACRA,EAAMgtC,CACV,CAEA,OAAO,IAAIyvH,GAAK9uH,EAAIilC,SAAU,EAAGjlC,EAAIttC,SAAW,EAAG8J,EAAOnK,EAAMmK,EACpE,EAEA+kK,KAAM,SAAS9+J,EAAMuiB,QACN,IAAPA,IAAiBA,EAAKviB,GAE1B,IAKIwmH,EAAYC,EALZr7H,EAAUnH,KAAKmH,QACf2O,EAAQ,IAAM3O,EAAQo7H,WACtBs4C,EAAO76K,KAAKy4K,QAAQ18J,EAAMuiB,GAC1B5nB,EAAMrT,KAAKqT,IAAIqF,EAAMuiB,GACrBnlB,EAAM9V,KAAK8V,IAAI4C,EAAMuiB,GAczB,OAXIn3B,EAAQkP,SACRksH,EAAa7rH,EACb8rH,EAAWrpH,IAEXopH,EAAa,IAAMppH,EACnBqpH,EAAW,IAAM9rH,GAGrB6rH,GAAcA,EAAazsH,GAAS,IACpC0sH,GAAYA,EAAW1sH,GAAS,IAEzB,IAAI6rH,EAASS,IAAI,CAAEy4C,EAAKt8F,OAAOn5E,EAAGy1K,EAAKt8F,OAAOp6E,GAAK,CACtDo+H,WAAYA,EACZC,SAAUA,EACVH,QAASw4C,EAAKvuJ,OACdg2G,QAASu4C,EAAKvuJ,QAEtB,EAEA09J,SAAU,SAAS7tD,GACf,IAAIh1H,EAAUnH,KAAKmH,QACfo3E,EAASv+E,KAAKs5C,IAAIilC,SAClBF,EAAK89C,EAAM/2H,EAAIm5E,EAAOn5E,EACtBk5E,EAAK69C,EAAMh4H,EAAIo6E,EAAOp6E,EACtBwiK,EAAQtjK,KAAKiT,MAAMghH,GAAIj0H,KAAKwwC,MAAMyqC,EAAID,KACtCvoE,EAAQ3O,EAAQo7H,WAOpB,OALKp7H,EAAQkP,UACTswJ,IAAU,EACV7wJ,IAAU,IAGN6wJ,EAAQ7wJ,EAAQ,KAAO,GACnC,EAEAmmK,WAAY,WACR,MAAO,CACHvlK,IAAK,EACLyC,IAAe,EAAV9V,KAAK6zH,GAElB,IAGJ8sC,GAAkB+pB,GAAW,CACzBroL,KAAM,QACN68H,WAAY,EACZlsH,SAAS,EACTihK,UAAW,GACX5gK,IAAK,EACLyC,IAAK,IACLi8J,OAAQ,CACJr8H,OAAQmqH,GAAW,KAEvB8V,eAAgB,CACZ/nD,MAAOqvC,EACPtzJ,SAAS,EACTjB,MAAO,GAEXgtK,eAAgB,CACZ9nD,MAAO,UAIfzoH,EAAWulL,GAAU1lL,UAAW0jL,GAAgB,CAC5C/U,gBAAiB8V,GAAkBzkL,UAAU2uK,gBAC7CgV,YAAac,GAAkBzkL,UAAU2jL,YACzC/3H,MAAOq0H,GAAYjgL,UAAU4rD,MAC7BgiH,YAAaqS,GAAYjgL,UAAU4tK,YACnCM,gBAAiB+R,GAAYjgL,UAAUkuK,kBAG3C,IAAI0X,GAAwB,CACxB9mL,QAAS,CACL6xK,eAAgB,CACZhsK,SAAS,IAIjBgqK,gBAAiB,WACb,IAEI3kD,EAAMryH,KAAKmH,QACXzB,EAAO2sH,EAAI2mD,eAAetzK,KAC1BwyK,EAAY7lD,EAAI6lD,eAA6B,IAAdA,IAAwBA,EAAY,IAQvE,IAPA,IAAIG,EAAUr4K,KAAKm4K,SAAS+V,UACxBlC,EAAc3T,EAAQ2T,cACtBztG,EAAS85F,EAAQ/+H,IAAIilC,SACrBhqB,EAAQv0D,KAAKo4K,eAAiB,IAAI3nC,EAAM,CACxCz2F,QAAS,IAGJzyC,EAAI,EAAGA,EAAI2wK,EAAU1wK,OAAQD,IAAK,CACvC,IAAIimL,EAAOtV,EAAU3wK,GACjB4mL,EAAY,CACZz6J,KAAM,CACFu9F,MAAOu8D,EAAKv8D,MACZl6F,QAASy2J,EAAKz2J,SAElB6oG,OAAQ,CACJ7oG,QAASy2J,EAAKz2J,UAIlB8jJ,EAxBO76K,KAwBSy4K,QAAQ+U,EAAKzxK,KAAMyxK,EAAKlvJ,IAAI,GAC5CovJ,EAAO,IAAItlB,GAAK7pF,EAAQA,EAAOp6E,EAAI02K,EAAKz8F,GAAIG,EAAOp6E,EAAI02K,EAAK38F,GAAI,EAAG,KAEnE4kE,OAAQ,EAERA,EADAp9I,IAAS06J,EACDyJ,GAAa71J,QAAQ81J,WAAW4jB,EAAMS,GAEtC5/C,EAAKvQ,WA/BNh+H,KA+B0BouL,eAAeV,EAAM1B,GAAcmC,GAAWzoI,QAGnF6O,EAAMpa,OAAO2oG,EACjB,CAEA9iJ,KAAKgrK,aAAaz2G,EACtB,EAEA65H,eAAgB,SAASV,EAAMnkB,GAO3B,IANA,IAAI8kB,EAAc,GACdC,EAAc,GACd/vG,EAAS,CAAEmvG,EAAKnvG,OAAOn5E,EAAGsoL,EAAKnvG,OAAOp6E,GACtCoqL,EAAc,IAAIpuD,EAAO5hD,EAAQmvG,EAAKrlB,aACtCmmB,EAAc,IAAIruD,EAAO5hD,EAAQmvG,EAAKphK,QAEjC/kB,EAAI,EAAGA,EAAIgiK,EAAO/hK,OAAQD,IAC/B8mL,EAAY1sL,KAAK4sL,EAAYhuD,QAAQgpC,EAAOhiK,GAAK,MACjD+mL,EAAY3sL,KAAK6sL,EAAYjuD,QAAQgpC,EAAOhiK,GAAK,MAOrD,OAJA8mL,EAAYh4K,UACZg4K,EAAY1sL,KAAK0sL,EAAY,IAC7BC,EAAY3sL,KAAK2sL,EAAY,IAEtBA,EAAYlwK,OAAOiwK,EAC9B,EAEAvV,gBAAiB,SAAST,GACtB,IAAIlxK,EAAUnH,KAAKmH,QACfsuK,EAAaz1K,KAAKyuL,8BAClBzC,EAAc3T,EAAQ2T,cACtBztG,EAAS85F,EAAQ/+H,IAAIilC,SACrB24F,EAAY,GAQhB,GANI/vK,EAAQ6xK,eAAehsK,UACvBkqK,EAAYl3K,KAAKusL,gBACbhuG,EAAQk3F,EAAYuW,EAAa7kL,EAAQ6xK,iBAI7C7xK,EAAQ4xK,eAAe/rK,QAAS,CAChC,IAAIuoK,EAAav1K,KAAK0uL,8BACtBv0I,GAAO+8H,EAAWl3K,KAAKusL,gBACnBhuG,EAAQg3F,EAAYyW,EAAa7kL,EAAQ4xK,gBAEjD,CAEA,OAAO7B,CACX,EAEAqV,gBAAiB,SAAShuG,EAAQ2/F,EAAO3U,EAAQpiK,GAC7C,IAAIgG,EAAQ,CACRyyH,OAAQ,CACJ7zH,MAAO5E,EAAQ4E,MACfklH,MAAO9pH,EAAQ8pH,MACf4tB,SAAU13I,EAAQ03I,WAGtBh6F,EAAO19C,EAAQ09C,UAAmB,IAATA,IAAmBA,EAAO,GACvD,IAAI/R,EAAO3rC,EAAQ2rC,UAAmB,IAATA,IAAmBA,EAAO,GAGvD,IAFA,IAAIrc,EAAYz2B,KAAKi3K,kBAEZ6C,EAASj1H,EAAMi1H,EAASoE,EAAM12K,OAAQsyK,GAAUhnI,EAAM,CAC3D,IAAI67I,EAAapwG,EAAOp6E,EAAI+5K,EAAMpE,GAClC,GAAI6U,EAAa,EAAG,CAChB,IAAI16B,EAAS,IAAI9zB,EAAO,CAAE5hD,EAAOn5E,EAAGm5E,EAAOp6E,GAAKwqL,GAChD,GAAIxnL,EAAQzB,OAAS06J,EACjB3pI,EAAU0jB,OAAO,IAAIzvB,EAAQy1G,OAAO8zB,EAAQ9mJ,QACzC,CAEH,IADA,IAAIo4J,EAAO,IAAIh3B,EAAKphI,GACXyhL,EAAU,EAAGA,EAAUrlB,EAAO/hK,OAAQonL,IAC3CrpB,EAAK14B,OAAOonB,EAAO1zB,QAAQgpC,EAAOqlB,GAAW,MAGjDrpB,EAAK7/G,QACLjvB,EAAU0jB,OAAOorH,EACrB,CACJ,CACJ,CAEA,OAAO9uI,EAAU8e,QACrB,EAEAy0I,SAAU,SAAS7tD,GACf,IAAIs6C,EAAUz2K,KAAKy2K,UACf4B,EAAUr4K,KAAKm4K,SAAS+V,UACxBlC,EAAc3T,EAAQ2T,cACtBztG,EAAS85F,EAAQ/+H,IAAIilC,SACrBjyD,EAAS6vG,EAAMG,WAAW/9C,GAC1BC,EAAWlyD,EAEf,GAAItsB,KAAKmH,QAAQ6xK,eAAetzK,OAAS06J,GAAO4rB,EAAYxkL,OAAS,EAAG,CACpE,IAAI62E,EAAK89C,EAAM/2H,EAAIm5E,EAAOn5E,EACtBk5E,EAAK69C,EAAMh4H,EAAIo6E,EAAOp6E,EACtBwiK,GAASrvC,GAAIj0H,KAAKwwC,MAAMyqC,EAAID,IAAO,KAAO,IAE9C2tG,EAAYhwK,MAAK,SAAS9W,EAAG+W,GACzB,OAAO4yK,GAAgB3pL,EAAGyhK,GAASkoB,GAAgB5yK,EAAG0qJ,EAC1D,IAIA,IAEImoB,EAAQ,GAFGD,GAAgB7C,EAAY,GAAIA,EAAY,IAAM,EAG7D+C,EAAO,IAFCF,GAAgBloB,EAAOqlB,EAAY,IAEtB8C,EAEzBtwG,EAAWlyD,GAAUjpB,KAAKi3H,IAAIzB,GAAIk2D,IAAS1rL,KAAKi3H,IAAIzB,GAAIi2D,IAC5D,CAEA,OAAO9uL,KAAKgvL,WAAW3mL,UAAU2hL,SAASz/K,KACtCvK,KAAM,IAAI87H,GAAM26C,EAAQx4F,GAAIw4F,EAAQr4F,GAAKI,GAEjD,GAGJ,SAASqwG,GAAgB3pL,EAAG+W,GACxB,OAAO,IAAM5Y,KAAKoU,IAAIpU,KAAKoU,IAAIvS,EAAI+W,GAAK,IAC5C,CAEA,IAAIgzK,GAAmB3G,GAAYvlL,OAAO,CACtC0rL,4BAA6B,WACzB,OAAOzuL,KAAK8gL,iBAAiB9gL,KAAKmH,QAAQmwK,UAC9C,EAEAoX,4BAA6B,WACzB,IAAIvnL,EAAUnH,KAAKmH,QACf+nL,EAAgB,EAKpB,OAHI/nL,EAAQ6xK,eAAehsK,UACvBkiL,EAAgB/nL,EAAQmwK,WAErBt3K,KAAK8gL,iBAAiB35K,EAAQywK,UAAWsX,EACpD,EAEAF,SAAU,WACN,OAAO1G,EACX,IAGJ9/K,EAAWymL,GAAiB5mL,UAAW4lL,IAEvC,IAAIkB,GAAuBnE,GAAgBjoL,OAAO,CAC9C0rL,4BAA6B,WACzB,IAAIv5F,EAAY,GAMhB,OAJAl1F,KAAKyrL,6BAA4B,SAASn+K,GACtC4nF,EAAUvzF,KAAK2L,EACnB,GAAGtN,KAAKmH,QAAQ6xK,gBAET9jF,CACX,EAEAw5F,4BAA6B,WACzB,IAAIx5F,EAAY,GAMhB,OAJAl1F,KAAK2rL,6BAA4B,SAASr+K,GACtC4nF,EAAUvzF,KAAK2L,EACnB,GAAGtN,KAAKmH,QAAQ4xK,gBAET7jF,CACX,EAEA85F,SAAU,WACN,OAAOhE,EACX,IAGJxiL,EAAW2mL,GAAqB9mL,UAAW4lL,IAE3C,IAGImB,GAAiBxnL,EAAM7E,OAAO,CAC9BoF,KAAM,SAAS0mI,GAEX7uI,KAAK6uI,OAASA,CAClB,EAEAt5E,QAAS,SAAS85H,GACd,IAEIjsD,EAASisD,EAAWxoL,MAAM,GAC1BsmI,EAAW,GACX0B,EAAS7uI,KAAK6uI,OACdrnI,EAAS47H,EAAO57H,OAOpB,GALIA,EAAS,IACTxH,KAAKmrI,iBAAiB,EAAG/H,GACzB57H,EAAS47H,EAAO57H,QAGhBA,EAAS,GAAiB,IAAXA,GAAgB47H,EAAO,GAAGjyE,OAAOiyE,EAAO,IACvD,OAAO+J,EAGX,IA2BIqC,EAAqBC,EA3BrBnL,EAAKlB,EAAO,GACZU,EAAKV,EAAO,GACZI,EAAKJ,EAAO,GAIhB,IAFA+J,EAASxrI,KAAK,IAAIunI,EAAQ5E,IAEnBA,EAAGnzE,OAAOiyE,EAAO57H,EAAS,KAC7BqnI,GAAS,EACTzL,EAAOrzG,MACPvoB,IAGJ,GAAe,IAAXA,EAAc,CACd,IAAI8jI,EAAUtrI,KAAKsrI,QAAQhH,EAAGR,EAAIz+H,EAAGkQ,GAWrC,OATA+sB,GAAK6qG,GAAU/D,WACXppI,KAAKssI,kBAAkBhB,EAAShH,EAAIR,EAAIz+H,EAAGkQ,IAG/C43H,EAASxrI,KAAK,IAAIunI,EACdpF,EACA9jI,KAAKmsI,mBAAmBb,EAAShH,EAAIR,EAAIz+H,EAAGkQ,KAGzC43H,CACX,CAIA,GAAI0B,EAAQ,CACRvK,EAAKlB,EAAO57H,EAAS,GAAIs8H,EAAKV,EAAO,GAAII,EAAKJ,EAAO,GACrD,IAAIsM,EAAgB1vI,KAAK0vI,cAAcpL,EAAIR,EAAIN,GAC/CgM,EAAsBE,EAAc,GACpCD,EAAmBC,EAAc,EACrC,KAAO,CACH,IAAI4/C,EAAYtvL,KAAKsrI,QAAQhH,EAAIR,EAAIz+H,EAAEkQ,GACvCi6H,EAAsBxvI,KAAKssI,kBAAkBgjD,EAAWhrD,EAAIR,EAAIz+H,EAAGkQ,EACvE,CAGA,IADA,IAAIo6H,EAAMH,EACD5lI,EAAM,EAAGA,GAAOpC,EAAS,EAAGoC,IAGjC,GA3DW5J,KAyDFmrI,iBAAiBvhI,EAAKw5H,GAE3Bx5H,EAAM,IADVpC,EAAS47H,EAAO57H,QACO,CACnB88H,EAAKlB,EAAOx5H,GAAMk6H,EAAKV,EAAOx5H,EAAM,GAAI45H,EAAKJ,EAAOx5H,EAAM,GAC1D,IAAIgmI,EA7DG5vI,KA6DwB0vI,cAAcpL,EAAGR,EAAGN,GAEnDlhG,GAAK6qG,GAAU/D,WAAWuG,GAC1BA,EAAMC,EAAgB,GAEtB,IAAItM,EAAMsM,EAAgB,GAC1BzC,EAASxrI,KAAK,IAAIunI,EAAQpF,EAAIR,GAClC,CAGJ,GAAIuL,EAAQ,CACRvK,EAAKlB,EAAO57H,EAAS,GAAIs8H,EAAKV,EAAO57H,EAAS,GAAIg8H,EAAKJ,EAAO,GAC9D,IAAIyM,EAAkB7vI,KAAK0vI,cAAcpL,EAAIR,EAAIN,GAEjDlhG,GAAK6qG,GAAU/D,WAAWuG,GAC1BxC,EAASxrI,KAAK,IAAIunI,EACdpF,EACA+L,EAAgB,KAGpBvtG,GAAK6qG,GAAU/D,WAAWyG,EAAgB,IAC1C1C,EAASxrI,KAAK,IAAIunI,EACd1F,EACAiM,GAER,KAAO,CACH,IAAIK,EAAY9vI,KAAKsrI,QAAQxH,EAAIN,EAAIn+H,EAAGkQ,GAExC+sB,GAAK6qG,GAAU/D,WAAWuG,GAC1BxC,EAASxrI,KAAK,IAAIunI,EACd1F,EACAxjI,KAAKmsI,mBAAmB2D,EAAWhM,EAAIN,EAAIn+H,EAAGkQ,IAEtD,CAEA,OAAO43H,CACX,EAEAhC,iBAAkB,SAASvhI,EAAKw5H,GAC5B,KAAOA,EAAOx5H,EAAM,KAAOw5H,EAAOx5H,GAAKunD,OAAOiyE,EAAOx5H,EAAM,KAAOw5H,EAAOx5H,EAAM,GAAGunD,OAAOiyE,EAAOx5H,EAAM,MAClGw5H,EAAO54H,OAAOZ,EAAM,EAAG,EAE/B,EAEAoiI,WAAY,SAAS1H,EAAIR,EAAIN,GACzB,IAAIwI,GAAa,EAEjB,GAAI1H,EAAGl/H,IAAM0+H,EAAG1+H,EACZ4mI,GAAa,OACV,GAAIlI,EAAG1+H,IAAMo+H,EAAGp+H,GACd0+H,EAAG3/H,EAAIq/H,EAAGr/H,GAAKmgI,EAAGngI,GAAK2/H,EAAG3/H,GAAOq/H,EAAGr/H,EAAI2/H,EAAG3/H,GAAK2/H,EAAG3/H,GAAKmgI,EAAGngI,KAC5D6nI,GAAa,OAEd,CACH,IAAIjkI,EAAK/H,KAAKorI,aAAa9G,EAAGR,GAC1B1lD,EAAKp+E,KAAK2rI,kBAAkB5jI,EAAIy7H,EAAGp+H,GACjCk/H,EAAGngI,GAAK2/H,EAAG3/H,GAAKq/H,EAAGr/H,GAAKi6E,GACxB0lD,EAAG3/H,GAAKmgI,EAAGngI,GAAKq/H,EAAGr/H,GAAKi6E,IAC1B4tD,GAAa,EAErB,CAEA,OAAOA,CACX,EAEAJ,OAAQ,SAAStH,EAAIR,EAAIN,GACrB,IAAIz7H,EAAK/H,KAAKorI,aAAa9G,EAAIR,GAC3B1lD,EAAKp+E,KAAK2rI,kBAAkB5jI,EAAIy7H,EAAGp+H,GAEvC,OAAQk/H,EAAGl/H,IAAM0+H,EAAG1+H,GAAK0+H,EAAG1+H,IAAMo+H,EAAGp+H,GAAMkR,GAAM8nE,EAAI,KAAO9nE,GAAMktH,EAAGr/H,EAAG,EAC5E,EAEAinI,aAAc,SAAStH,EAAIN,GACvB,IAAIt+H,GAAKs+H,EAAGr/H,EAAI2/H,EAAG3/H,IAAMq/H,EAAGp+H,EAAI0+H,EAAG1+H,GAGnC,MAAO,CAFC0+H,EAAG3/H,EAAIe,EAAI4+H,EAAG1+H,EAEVF,EAChB,EAEAwqI,cAAe,SAASpL,EAAIR,EAAIN,GAC5B,IAII8H,EAJAC,EAASlmI,EACTmmI,EAASj2H,EACTk2H,GAAW,EACXC,GAAoB,EAGxB,GAAI1rI,KAAK4rI,OAAOtH,EAAIR,EAAIN,GACpB8H,EAAUtrI,KAAKsrI,QAAQhH,EAAIR,EAAIz+H,EAAGkQ,OAC/B,CACH,IAAIu2H,EAAY,CACZ1mI,EAAGpF,KAAK+rI,mBAAmBzH,EAAIR,EAAIN,EAAIn+H,GACvClB,EAAGnE,KAAK+rI,mBAAmBzH,EAAIR,EAAIN,EAAIjuH,IAG3C,GAAIu2H,EAAU1mI,GAAK0mI,EAAU3nI,EACzBmnI,EAAUtrI,KAAKsrI,QAAQhH,EAAId,EAAIn+H,EAAGkQ,GAClCk2H,GAAW,OAOX,GALIzrI,KAAKgsI,WAAW1H,EAAIR,EAAIN,KACxB+H,EAASh2H,EACTi2H,EAASnmI,GAGTymI,EAAUP,GACVD,EAAU,OAUVA,EAxLa,KAiLR9H,EAAGgI,GAAUlH,EAAGkH,IAAWlH,EAAGkH,IAAW1H,EAAG0H,IAC5ClH,EAAGkH,GAAUhI,EAAGgI,IAAW1H,EAAG0H,IAAWlH,EAAGkH,GACtCS,IAAYzI,EAAGgI,GAAUlH,EAAGkH,KAAY1H,EAAGyH,GAAUjH,EAAGiH,MAEvDU,IAAYzI,EAAG+H,GAAUjH,EAAGiH,KAAYzH,EAAG0H,GAAUlH,EAAGkH,MAIpEE,GAAoB,CAGhC,CAEA,IAAIS,EAAqBnsI,KAAKmsI,mBAAmBb,EAAShH,EAAIR,EAAIyH,EAAQC,GAE1E,GAAIE,EAAmB,CACnB,IAAIU,EAAYb,EAChBA,EAASC,EACTA,EAASY,CACb,CAEA,IAAIE,EAAoBtsI,KAAKssI,kBAAkBhB,EAASxH,EAAIN,EAAI+H,EAAQC,GAOxE,OALIC,IACAzrI,KAAKusI,qBAAqBjI,EAAIR,EAAIqI,EAAoBb,GACtDtrI,KAAKusI,qBAAqBzI,EAAIN,EAAI8I,EAAmBhB,IAGlD,CAAEa,EAAoBG,EACjC,EAEAC,qBAAsB,SAASzI,EAAIN,EAAIgJ,EAAIlB,GACnCxH,EAAG3/H,EAAIq/H,EAAGr/H,EACNq/H,EAAGr/H,EAAIqoI,EAAGroI,GACVqoI,EAAGpnI,EAAI0+H,EAAG1+H,GAAKo+H,EAAGr/H,EAAI2/H,EAAG3/H,GAAKmnI,EAC9BkB,EAAGroI,EAAIq/H,EAAGr/H,GACHqoI,EAAGroI,EAAI2/H,EAAG3/H,IACjBqoI,EAAGpnI,EAAIo+H,EAAGp+H,GAAKo+H,EAAGr/H,EAAI2/H,EAAG3/H,GAAKmnI,EAC9BkB,EAAGroI,EAAI2/H,EAAG3/H,GAGVqoI,EAAGroI,EAAIq/H,EAAGr/H,GACVqoI,EAAGpnI,EAAI0+H,EAAG1+H,GAAK0+H,EAAG3/H,EAAIq/H,EAAGr/H,GAAKmnI,EAC9BkB,EAAGroI,EAAIq/H,EAAGr/H,GACH2/H,EAAG3/H,EAAIqoI,EAAGroI,IACjBqoI,EAAGpnI,EAAIo+H,EAAGp+H,GAAK0+H,EAAG3/H,EAAIq/H,EAAGr/H,GAAKmnI,EAC9BkB,EAAGroI,EAAI2/H,EAAG3/H,EAGtB,EAEAmnI,QAAS,SAAShH,EAAIR,EAAIyH,EAAQC,GAC9B,IAAIpmI,EAAI0+H,EAAGyH,GAAUjH,EAAGiH,GACpBpnI,EAAI2/H,EAAG0H,GAAUlH,EAAGkH,GASxB,OANU,IAANpmI,EACU,EAEAjB,EAAIiB,CAItB,EAEA2mI,mBAAoB,SAASzH,EAAIR,EAAIN,EAAIz9G,GACrC,OAAQy9G,EAAGz9G,GAAS+9G,EAAG/9G,IAAU+9G,EAAG/9G,GAASu+G,EAAGv+G,IACnCy9G,EAAGz9G,GAAS+9G,EAAG/9G,IAAU+9G,EAAG/9G,GAASu+G,EAAGv+G,EACzD,EAEAumH,kBAAmB,SAAShB,EAAShH,EAAIC,EAAIgH,EAAQC,GACjD,IAAIpE,EAAK9C,EAAGiH,GAER/sD,EA3PC,MA0PI+lD,EAAGgH,GACSnE,GAErB,OAAOpnI,KAAKm8H,MAAMiL,EAAK5oD,EAAU8lD,EAAGkH,GAAUhtD,EAAW8sD,EAASC,EAAQC,EAC9E,EAEAW,mBAAoB,SAASb,EAAShH,EAAIC,EAAIgH,EAAQC,GAClD,IAAIpE,EAAK9C,EAAGiH,GACRlB,EAAK9F,EAAGgH,GACR/sD,EAnQC,MAmQW6rD,EAAKjD,GAErB,OAAOpnI,KAAKm8H,MAAMkO,EAAK7rD,EAAU+lD,EAAGiH,GAAUhtD,EAAW8sD,EAASC,EAAQC,EAC9E,EAEArP,MAAO,SAASsQ,EAAQC,EAAQnB,EAAQC,GACpC,IAAItE,EAAe,IAAIvF,EAAS7F,MAIhC,OAHAoL,EAAaqE,GAAUkB,EACvBvF,EAAasE,GAAUkB,EAEhBxF,CACX,EAEAyE,kBAAmB,SAAS5jI,EAAI3C,GAI5B,IAHA,IAAIoC,EAASO,EAAGP,OACZsP,EAAS,EAEJvP,EAAI,EAAGA,EAAIC,EAAQD,IACxBuP,GAAUzT,KAAKwmC,IAAIzkC,EAAEmC,GAAKQ,EAAGR,GAEjC,OAAOuP,CACX,IAGJ,SAASm1H,GAAWvjI,GAChB,OAAOA,GAAS,GAAK,EAAI,CAC7B,CAEA+hB,EAAQ8kK,UAAYthB,GAEpBttK,MAAM6H,WAAW7H,MAAM8pB,QAAS,CAC5B62I,UAAWA,EACXqT,SAAUA,GACVlO,cAAeA,GACf3qC,MAAOA,GACPirC,IAAKA,GACLqB,KAAMA,GACNwB,OAAQA,GACRC,aAAcA,GACd6D,aAAcA,GACd1D,aAAcA,GACdiD,WAAYA,GACZyB,YAAaA,GACbY,aAAcA,GACdn/B,KAAMA,GACNygC,QAASA,GACTe,MAAOA,GACPS,UAAWA,GACX+C,KAAMA,GACNpC,KAAMA,GACN2M,aAAcA,GACdoG,iBAAkBA,GAClBsE,cAAeA,GACf9B,YAAaA,GACb0C,gBAAiBA,GACjB+C,UAAWA,GACXjB,kBAAmBA,GACnBmC,iBAAkBA,GAClBE,qBAAsBA,GACtBC,eAAgBA,GAChB1e,UAAWA,GACXrrJ,SAAUA,EACV0H,YAAaA,EACb21I,iBAAkBA,EAClBC,UAAWA,EACX6sB,oBA9vQJ,SAA6B9mL,GACzB,OAAO2sD,GAAS3sD,IAAWE,GAASF,IAAU0J,SAAS1J,EAC3D,EA6vQI+mL,QA3vQJ,SAAiBn2K,EAAOgC,GACpB,OAAQhC,EAAQ,GAAKgC,CACzB,EA0vQIo0K,UAxvQJ,SAAmBp2K,EAAOgC,GACtB,IAAIxE,EAASwC,EAAQ,EAErB,OAAOxC,EAAS,EAAIwE,EAAQ,EAAIxE,CACpC,EAqvQI64K,WAnvQJ,SAAoBr2K,EAAO9R,GACvB,OAAe,IAAXA,GAAiB8R,EAAQ9R,GAAY,EAC9B,EAGP8R,EAAQ,EACD9R,EAAU8R,EAAQ9R,EAClB8R,GAAS9R,EACT8R,EAAQ9R,EAGZ8R,CACX,EAwuQI9Q,WAAYA,EACZ6wH,cAttQJ,SAAuBxtH,EAAS6D,GAC5B,IAAI4pH,EAAc1wH,GAAS8G,GAAU,CAAEA,GAAWA,EAElD,GAAIzM,EAAQq2H,GAAc,CAItB,IAHA,IAAIxiH,EAAS,CAAC,EACV3J,EAAQrM,OAAO+O,iBAAiBhE,GAE3BjC,EAAM,EAAGA,EAAM0vH,EAAY9xH,OAAQoC,IAAO,CAC/C,IAAImc,EAAQuzG,EAAY1vH,GACxBkN,EAAOiP,GAASk9I,GAAYl9I,GAAShd,WAAWoE,EAAM4Y,IAAU5Y,EAAM4Y,EAC1E,CAEA,OAAOjP,CACX,CAAO,GAAIgsJ,GAASpzJ,GAChB,IAAK,IAAIkgL,KAAWlgL,EAChB7D,EAAQsB,MAAMyiL,GAAW7sB,GAAWrzJ,EAAOkgL,GAGvD,EAqsQI1sB,WAAYA,GACZG,YAAaA,GACbwsB,gBArpQJ,SAAuB1oL,GAGnB,IAAI2oL,EAOJ,YATgB,IAAZ3oL,IAAsBA,EAAU,CAAC,GAGjCA,EAAQ2oL,aACR3oL,EAAQ2oL,aAAeA,EAAe1sB,GAAgB9yJ,QAAQnJ,EAAQ2oL,cAC/D5mL,EAAW/B,EAAQ4oL,eAC1BD,EAAe3oL,EAAQ4oL,aAGpBD,CACX,EA2oQItgK,OAAQ2wI,EACR9hI,KAAMA,GACN2xJ,WA/nQJ,SAAoBnkL,EAAS2rE,GACzB,GAAI3rE,EAAQwhB,UAER,IADA,IAAI1Y,EAAQ6iE,EAAW5sE,MAAM,KACpBhB,EAAM,EAAGA,EAAM+K,EAAMnN,OAAQoC,IAClC,GAAIiC,EAAQwhB,UAAU1X,UAAsD,IAA3C9J,EAAQwhB,UAAU1X,QAAQhB,EAAM/K,IAC7D,OAAO,CAIvB,EAunQI25J,QAASA,GACT9tI,QAASA,GACTw6J,iBApmQJ,SAA0Bn6K,EAAOnK,EAAK6qB,GAClC,OAAO71B,MAAM+pB,QAAQ88F,KAAKlxG,MAAMR,GAASnK,EAAMmK,GAAS0gB,EAhUtC,EAiUtB,EAmmQIktI,iBAAkBA,GAClBzgK,QAASA,EACTiG,WAAYA,EACZmsD,SAAUA,GACVytG,SAAUA,GACVn7J,cAAeA,GACfiB,SAAUA,GACViS,IAAKA,GACLq1K,gBA3iQJ,SAAyBvrL,GACrB,IAAIogC,EAAQ,EAkBZ,OAhBIpgC,EAAEsgC,YACFF,GAASpgC,EAAEsgC,WAAa,IAEpBniB,GAAQH,SAKRoiB,GAAiB,EAAI1hC,KAAK8V,IAAIrY,OAAOsf,iBAAkB,QAEpDzb,EAAEugC,SACTH,EAAQpgC,EAAEugC,OAAS,GAGvBH,EAAQA,EAAQ,EAAI1hC,KAAK6jE,KAAKniC,GAAS1hC,KAAKyN,MAAMi0B,EAGtD,EAwhQIg/H,WAAYA,GACZhrE,WA10PJ,SAAoBo3F,EAAaC,GAC7B,IAAIvkL,EAAUskL,EACVhpL,EAAUipL,EAmBd,OAjBKvkL,KACGi3J,GAASj3J,IAAcA,aAAmB6C,eAC3C9F,GAASiD,KACZ1E,EAAU0E,EACVA,EAAU8D,SAASkP,cAAc,SAGjCjW,GAASzB,KACTA,EAAU,CACNmxF,KAAMnxF,IAITA,EAAQzB,OACTyB,EAAQzB,KAAO,OAGdkyF,GAAWzwF,EAAQzB,MAIhB,IAAIkyF,GAAWzwF,EAAQzB,MAAMmG,EAAS1E,GAASkJ,OAH5C,IAIf,EAizPI2zJ,kBAAmBA,GACnBU,kBAAmBA,GACnB3B,WAAYA,GACZ5sI,KAhyPJ,SAAcpb,EAAOs1K,GACjB,IAAK,IAAI9oL,EAAI,EAAGA,EAAIwT,EAAMvT,OAAQD,IAAK,CACnC,IAAI4nC,EAAOp0B,EAAMxT,GACjB,GAAI8oL,EAAUlhJ,EAAM5nC,EAAGwT,GACnB,OAAOo0B,CAEf,CACJ,EA0xPI2rF,aAjwPJ,SAAsBjvH,GAClB,IAAKA,EACD,OAAOguH,GAAOM,OAKlB,IAFA,IAAIJ,EAASY,GAAgB9uH,GACzBc,EAASd,EAAQkvH,cACdpuH,GAAQ,CACX,IAAIquH,EAAeL,GAAgBhuH,GACnCotH,EAASA,EAAOD,aAAakB,GAC7BruH,EAASA,EAAOouH,aACpB,CAGA,OADAhB,EAAO99G,EAAI89G,EAAOr1H,EAAIq1H,EAAOp1H,EAAIo1H,EAAOvsE,EAAI,EACrCusE,CACX,EAmvPI4qC,cAAeA,GACf2rB,cApoPJ,SAAuBj3K,GACnB,OAXIk3K,GAAY,EAEG,mBAARprB,MAEPorB,EADU,IAAIprB,IAAI,CAAC,IACHH,IAAI,IAGjBurB,EAKI,IAAIrrB,GAAW7rJ,GAGnB,IAAIwrJ,GAAUxrJ,GAhBP,IACVk3K,CAgBR,EA+nPIC,oBA7nPJ,SAA6B9hK,GACzB,MAAMA,CACV,EA4nPI7D,KA1nPO,CACPC,OAAQ,GACRC,OAAQ,GACRC,UAAW,EACXC,IAAK,EACLC,MAAO,GACPC,IAAK,GACLC,KAAM,GACNC,GAAI,GACJC,MAAO,GACPC,KAAM,GACNC,IAAK,GACLC,KAAM,GACNC,SAAU,GACVC,OAAQ,GACRC,SAAU,GACVC,GAAI,IACJC,IAAK,IACLC,IAAK,IACLC,YAAa,IACbC,aAAc,IACdC,WAAY,KAsmPZjd,eAnmPJ,SAAwB0e,EAAK7f,GACzB,OAAOrN,OAAO4H,UAAU4G,eAAe1E,KAAKojB,EAAK7f,EACrD,EAkmPI+rH,OAAQurC,GACR97J,WAAY2tI,GACZ98F,OAAQA,GACR8+E,WAAYA,GACZrxH,MAAOA,EACPkvH,QAASA,GACTQ,IAAKA,GACLjS,cAAeA,GACfz3B,YAAaA,GACbyqC,iBAAkBA,GAClBC,aAAcA,GACd1D,QAASA,GACTtyF,KAAMA,GACNk2F,WAAYA,GACZxnG,aAAcrwB,MAAMqwB,aACpB2jG,UAAWA,GACXkE,IAAKA,GACLviH,MAAOA,GACPmjH,aAAcA,GACdT,eAAgBA,GAChBglD,iBAAkBA,GAClBM,YAAaA,GACbL,SAAUA,GACVc,SAAUA,GACVC,aAAcA,GACdC,SAAUA,GACVE,WAAYA,GACZG,UAAWA,GACXh4J,SAAUA,GACVw3J,UAAWA,GACX2R,aAjzHJ,SAAsB75K,EAAM85K,GAKxB,IAJA,IAEIp3K,EAFAs+G,EAAM,EACN+4D,EAAOD,EAAYlpL,OAAS,EAGzBowH,GAAO+4D,GAAM,CAEhB,IAAIlwJ,EAAciwJ,EADlBp3K,EAAQjW,KAAKyN,OAAO8mH,EAAM+4D,GAAQ,IAGlC,GAAIlwJ,EAAc7pB,EACdghH,EAAMt+G,EAAQ,MADlB,CAKA,KAAImnB,EAAc7pB,GAAlB,CAKA,KAAOuoK,GAAWuR,EAAYp3K,EAAQ,GAAI1C,IACtC0C,IAGJ,OAAOA,CANP,CAFIq3K,EAAOr3K,EAAQ,CAHnB,CAYJ,CAEA,OAAIo3K,EAAYp3K,IAAU1C,EACf0C,EAGJA,EAAQ,CACnB,EAmxHI8kK,YAAaA,GACbD,OAAQA,GACR7/J,UAAWA,GACXkhK,WAAYA,GACZN,OAAQA,GACR1pK,SAAUA,IAGb,CAjgRD,CAigRG1U,OAAOH,MAAM+G,QAEhB,SAAU/E,GAEN,IAAI8nB,EAAU9pB,MAAM8pB,QAChBkqJ,EAAWlqJ,EAAQkqJ,SACnBl9B,EAAO92I,MAAM+pB,QAEjBD,EAAQmmK,YAAc,CAAC,OAAQ,aAAc,eAAgB,eAE7DnmK,EAAQomK,YAAc,CAClB9tL,OAAQ,SAAS8E,EAAOipL,GACpB,IAAKjpL,EAAMuvI,aACP,MAAM,IAAIpmI,MAAM,oDAGpBnJ,EAAMsyJ,UAAYn6J,KAAKm6J,UACvBtyJ,EAAMoyJ,YAAcj6J,KAAKi6J,YACzBpyJ,EAAMkpL,UAAY/wL,KAAK+wL,UAElBD,IACDjpL,EAAMgwF,IAAM73F,KAAK63F,IACjBhwF,EAAMmpL,aAAehxL,KAAKgxL,aAElC,EAEA72B,UAAW,SAAShzJ,GAChB,OAAOswI,EAAK0iB,UAAUn6J,KAAKo3I,eAAgBjwI,EAC/C,EAEA8yJ,YAAa,SAAS9yJ,GAClB,OAAOswI,EAAKwiB,YAAYj6J,KAAKo3I,aAAajwI,GAAUA,EACxD,EAEA4pL,UAAW,SAAS5pL,GAChB,OAAOswI,EAAKs5C,UAAU/wL,KAAKo3I,eAAgBjwI,EAC/C,EAEA0wF,IAAK,WACD,GAAI4/C,EAAK5/C,IAAIq/C,QACT,OAAOO,EAAK5/C,IAAI6wD,YAAY1oJ,KAAKo3I,gBAEjC,MAAM,IAAIpmI,MAAM,4EAExB,EAEAggL,aAAc,WACV,IAAKrwL,MAAM4C,QAAQ6+I,OACf,OAAO,KAGX,GAAI3K,EAAK2K,OAAOlL,QAAS,CACrB,IAAIzgH,EAAY9zB,EAAE,WAAWsJ,IAAI,CAC7BoB,QAAS,OACTtB,MAAO/L,KAAK6L,QAAQE,QACpBC,OAAQhM,KAAK6L,QAAQG,WACtBE,SAASyD,SAASqP,MAEjB2iE,EAAU,IAAI81D,EAAK2K,OAAOlL,QAAQzgH,EAAU,IAChDkrD,EAAQ81D,KAAKz3I,KAAKo3I,gBAClB,IAAIpuG,EAAQ24C,EAAQg/D,aAAauH,YAKjC,OAHAvmE,EAAQ3/E,UACRy0B,EAAUpqB,SAEH28B,CACX,CACI,MAAM,IAAIh4B,MAAM,iFAExB,GAGJ2jK,EAAShB,YAAYx8I,SAAS,CAC3BlmB,OAAQ,SAASA,GACb,OAAOtQ,MAAMsQ,OAAO7I,MAAM,KAAM,CAAC6I,GAAQmN,OAAOlb,MAAMmF,UAAUxB,MAAM0D,KAAKjD,UAAW,IAC1F,EACAmK,SAAU9Q,MAAM8Q,SAChB6M,UAAW3d,MAAM2d,UACjB9I,SAAU,WACN,OAAO7U,MAAMkT,UAAUW,UAAUC,SAASe,QAC9C,IAGHm/J,EAASvR,gBAAgBjsI,SAAS,CAC/B7mB,QAAS3P,MAAMyP,WAGlBqa,EAAQwmK,QAAUxmK,EAAQqxG,MAC1BrxG,EAAQymK,MAAQzmK,EAAQs8I,IACxBt8I,EAAQ0mK,QAAU,SAASxsL,GACvB,OAAO8lB,EAAQylK,gBAAgBvrL,EAAE4kB,cACrC,CAEH,CA3FD,CA2FGzoB,OAAOH,MAAM+G,QAWF/G,OASd,SAAUgC,GAGV7B,OAAOH,MAAM8pB,QAAU3pB,OAAOH,MAAM8pB,SAAW,CAAC,EAEhD,IAKI2mK,EAAU,IACVC,EAAc,GACdC,EAAW,OACXC,EAAO,+BACPC,EAAS,QAAUD,EACnBE,EAAS,QAAUF,EACnBG,EAAS,QAAUH,EACnBI,EAAc,cACdC,EAAW,OAEXC,EAAuB,CACvBnsL,KAfO,QAkBPosL,EAAuB,CACvBpsL,KApBO,QAuBPqsL,EAAgCpvL,EAAEI,OAAO,CAAC,EAAG+uL,EAC7C,CAACE,QAAS,CACNhlL,SAAS,GAEb2+J,UAAW,CACP3+J,SAAS,KAGb6pK,EAAQ,WAAc,MAAO,CAC7Bv+E,KAAM,CACFo0E,OAAQ,CACJ3gK,MAAO,IAGfuoB,MAAO,CACHyjE,KAAM05F,EACNz5C,QAAS,GAEbutB,KAAM,CACF/9J,OAAQ,GACRuE,MAAO,GAEXkmL,WAAYF,EACZ/kL,SAAS,EACT,EAaAklL,EAAa,WAAc,MAAO,CAClCvmB,UAAW,CACPqmB,QAAS,CACLtlB,OAAQ,CAAC,IAGjBnH,KAAM,CACFxuI,QAAS,EACThrB,MAAO,GAEXimL,QAAS,CACLhiL,KAAM,EACNhD,SAAS,GAEbilL,WAAYH,EACZ/6J,QAAS,GACT,EAEAo7J,EAAkB,WAAc,MAAO,CACvCxmB,UAAW,CACPqmB,QAAS,CACLtlB,OAAQ,CAAC,IAGjBnH,KAAM,CACFxuI,QAAS,EACThrB,MAAO,GAEXimL,QAAS,CACLhiL,KAAM,EACNhD,SAAS,GAEbilL,WAAYH,EACZ/6J,QAAS,GACT,EAQAq7J,EAAgB,WAAc,MAAO,CACrCC,cAAe,GACfC,UAAW,GACX5lB,OAAQ,CACJ6lB,YAAa,GACbxmL,MAAO,GAEXymL,UAAWZ,EACXxgL,IAAK,EACLu6J,UAAW,CACPe,OAAQ,CACJ31I,QAAS,EACThrB,MAAO,GAEX0mL,SAAU,CACN1mL,MAAO,GAEX2mL,KAAM,CACF3mL,MAAO,GAEX4mL,OAAQ,CACJ5mL,MAAO,IAGf2mL,KAAM,CACF3mL,MAAO,GAEX4mL,OAAQ,CACJ5mL,MAAO,GAEXylI,QAAS,GACTihD,SAAU,CACN1mL,MAAO,GAEXkmL,WAAYF,EACZ,EAaAa,EAAe,WAAc,MAAO,CACpCxhL,IAAKggL,EACL5/C,QAAS6/C,EACThqL,OAAQ,CACJ4pH,MAAO,WAEXghE,WAAYF,EACZ,EAiDAc,EAAa,WAAc,MAAO,CAClC9mL,MAAO,EACPkmL,WAAYJ,EACZ,EAiBAiB,EAAkB,WAAc,MAAO,CACvCvtB,KAAM,CACFxuI,QAAS,EACThrB,MAAO,GAEXimL,QAAS,CACLhiL,KAAM,EACNhD,SAAS,GAEbilL,WAAYH,EACZ/6J,QAAS,GACT,EAEAg8J,EAAkB,WAAc,MAAO,CACvCf,QAAS,CACLhlL,SAAS,GAEbilL,WAAYJ,EACZ9lL,MAAO,EACP,EAmBAinL,EAAkB,WAAc,MAAO,CACvC5hL,IAAK,GACLm0J,KAAM,CACFt0C,MAAOqgE,EACPvlL,MAAO,GAEXkmL,WAAYF,EACZvgD,QAAS6/C,EACT,EAgBA4B,EAAe,WAAc,MAAO,CACpC7d,OAAQ,CACJtgB,WAAY,GACZ7jC,MAAO,GACP+mB,QAAS,CACL9yH,IAAK,EACLwH,OAAQ,EACRF,KAAM,EACNC,MAAO,IAGfwlK,WAAYF,EACZ,EAEAmB,EAAgBD,EAgBhBE,EAA0B,SAAUhsL,GAAW,OAAOxE,EAAEI,OAAO,CAC/DkuH,MA5TU,UA6TVmiE,UAAW,CAAC,EACZpB,QAAS,CACLhlL,SAAS,GAEbjB,MAAO,EACP8yI,SAAU,WACVozC,WAAYJ,GACb1qL,EAAU,EAETksL,EAAiB,SAAUlsL,GAAW,MAAO,CAC7C6F,SAAS,EACTooK,OAAQ,CACJr9E,KAAMy5F,GAEV1kB,QAAS3lK,EAAQynK,UAAY,CAAC,EAAI,CAC9B5oB,SAAU,QAEdstC,KAAMpB,IACNqB,UAAWpB,IACXqB,kBAAmBrB,IACnBsB,IApPiC,CACjCriL,IAAKggL,EACL5/C,QAAS6/C,EACTY,WAAYF,GAkPZ2B,QAAStB,IACTuB,OA3MoC,CACpCjnB,OAAQ,CACJ3gK,MAAO,GAEXqpK,OAAQ,CACJtgB,WAAY68B,GAEhBM,WAAYF,EACZh7J,QAAS,IAoMTs8H,OAAQu/B,IACRgB,YAzLyC,CACzClnB,OAAQ,CACJ6lB,YAAa,GACbxmL,MAAO,GAEXymL,UAAWZ,EACXxgL,IAAK,EACLu6J,UAAW,CACPe,OAAQ,CACJ31I,QAAS,EACThrB,MAAO,GAEXw5J,KAAM,CACFx5J,MAAO,IAGfw5J,KAAM,CACFt0C,MAAOqgE,EACPvlL,MAAO,GAEXkmL,WAAYF,EACZvgD,QAAS,IAqKTqiD,OAlKoC,CACpCziL,IAAKggL,EACL5/C,QAAS6/C,EACTY,WAAYF,GAgKZ+B,QA1CqC,CACrC1e,OAAQ,CACJnkD,MAAO,GACP6jC,WAAY68B,EACZ3kL,SAAS,GAEb2+J,UAAW,CACPe,OAAQ,CACJ3gK,MAAO,IAGfkmL,WAAYF,GAgCZgC,IAzEiC,CACjC3e,OAAQ,CACJtgB,WAAY,GACZ7jC,MAAO,GACP+mB,QAAS,CACL9yH,IAAK,EACLwH,OAAQ,EACRF,KAAM,EACNC,MAAO,IAGfwlK,WAAYF,GA+DZiC,MAnJmC,CACnCj7I,OAAQ,EACRk5I,WAAYF,GAkJZkC,OAAQhB,IACRiB,QAAShB,IACTiB,oBAAqBnB,IACrBztB,KAAMstB,IACNhc,MAAOA,IACPud,KA/IkC,CAClChjL,IAAK,EACLu6J,UAAW,CACPpG,KAAM,CACFxuI,QAAS,EACThrB,MAAO,IAGfw5J,KAAM,CACFx5J,MAAO,GAEXkmL,WAAYF,EACZvgD,QAAS,IAoIT6iD,UAAWvB,IACXwB,UAAWvB,IACXwB,YAxKyC,CACzCtC,WAAYF,GAwKZyC,UAAW1B,IACX2B,UAAW1B,IACX2B,aAvK0C,CAC1CzC,WAAYJ,GAuKZ8C,SAlHsC,CACtCvjL,IAAKggL,EACL5/C,QAAS6/C,EACTY,WAAYF,GAgHZ6C,YA7GyC,CACzCxjL,IAAKggL,EACL5/C,QAAS6/C,EACTY,WAAYF,GA2GZ8C,QAtKqC,CACrC5C,WAAYJ,GAsKZiD,YAzGyC,CACzC/oL,MAAO,EACPkmL,WAAYJ,GAwGZkD,aAAc7C,IACd8C,gBAAiB5C,IACjB6C,eAAgBrC,IAChBsC,aAAcrC,IACdsC,UAAWnC,IACXoC,gBAAiBjC,IACjBkC,qBAAsBlC,EAAwB,CAAEhmL,MAAO,WACvDmoL,qBAAsBnC,EAAwB,CAAEhmL,MAAO,WACvDooL,oBAAqBpC,EAAwB,CAAEhmL,MAAO,WACtDqoL,eAAgBrC,EAAwB,CAAEhmL,MAAO,WACjDsoL,uBAAwBtC,IACxB,EAyCJxyL,MAAM6H,WAAW7H,MAAM8pB,QAAS,CAC5BirK,eA1BY,SAAUvuL,GAGtB,YAFgB,IAAZA,IAAsBA,EAAU,CAAC,GAE9B,CACPwuL,aA3VoC,CACpCvgB,OAAQ,CACJr9E,KAAM05F,GAEV5a,MAAOA,IACP14H,MAAO,CACH45C,KAAM25F,EACN34I,OAAQ,IAqVZ68I,aAAc,CACV5c,eAAgB,CACZhsK,SAAS,IAGjB4V,UAAW,CACPgsE,KAAM,CACF5iF,OAAQ,GACR+sC,OAAQ,CACJ7zB,IAAK,MAIjBmuK,eAAgBA,EAAelsL,GAC/Bg3C,MAjC6B,CAC7B45C,KAAM25F,GAiCNmE,SA9BgC,CAChC99F,KAAM05F,GA8BNqE,OA3B8B,CAC9B1gB,OAAQ,CACJr9E,KAAM05F,IA2Bd,GAMC,CA1aD,CA0aG3wL,OAAOH,MAAM+G,QAEhB,SAAU/E,GACN,IAAIm7B,EACAi4J,EAAgB,GA0OpBp1L,MAAM8pB,QAAQurK,UAxNd,SAAmB1jK,GACf,IAAKA,GAASwL,EACV,OAAOA,EAGX,IAyLQmR,EACAgnJ,EA1LJC,EAAQ,CAAE5hB,MAAO3zK,MAAM8pB,QAAQirK,kBAC/BS,EAAOxzL,EACP,6wCAvBR,WASI,IARA,IAAIyN,EACA,qNAOK7I,EAAI,EAAGA,EAAIwuL,EAAexuL,IAC/B6I,GAAY,8BAAgC7I,EAAI,GAAK,WAGzD,OAAO6I,CACX,CAuCegmL,GA9BP,oGAkCU1oL,OAAOxB,SAASyD,SAASqP,MAEvC,SAASq3K,EAASvkL,EAAKwkL,GACnBpmK,EAAIpe,EAAKykL,EAAWD,EAAS,mBACjC,CAEA,SAASC,EAAWD,EAASzmK,GACzB,OAAOsmK,EAAKhgK,KAAK,WAAamgK,GAASrqL,IAAI4jB,EAC/C,CAEA,SAASK,EAAIqf,EAAM7mC,GAKf,IAJA,IAAI0uD,EAAQ8+H,EACR3lL,EAAQg/B,EAAK3kC,MAAM,KACnBkH,EAAMvB,EAAM6F,QAET7F,EAAM/I,OAAS,GAClB4vD,EAAQA,EAAMtlD,GAAOslD,EAAMtlD,IAAQ,CAAC,EACpCA,EAAMvB,EAAM6F,QAGhBghD,EAAMtlD,GAAOpJ,CACjB,CAEA,SAAS8tL,EAAmBC,EAAapwK,GACrC,IAAIqwK,EAAkB3tL,WAAWwtL,EAAWlwK,EAAU,aACjDvd,MAAM4tL,IAAoBA,EAAkB,GAC7CD,EAAYn1L,SAAQ,SAASoE,GACzBwqB,EAAI,wBAA0BxqB,EAAO,6BAA8BgxL,EACvE,GAER,CA8IA,OA5IA,WACIL,EAAS,qCAAsC,8BAC/CA,EAAS,kCAAmC,qBAC5CA,EAAS,gCAAiC,qBAC1CA,EAAS,0CAA2C,qBACpDA,EAAS,0CAA2C,qBACpDA,EAAS,2CAA4C,0BACrDA,EAAS,6CAA8C,sBACvDA,EAAS,sCAAuC,qBAChDA,EAAS,iCAAkC,qBAC3CA,EAAS,6BAA8B,cACvCA,EAAS,0CAA2C,kBACpDA,EAAS,2CAA4C,kBACrDA,EAAS,4BAA6B,qBACtCA,EAAS,yCAA0C,qBACnDA,EAAS,0CAA2C,QACpDA,EAAS,4CAA6C,QACtDA,EAAS,8CAA+C,WACxDA,EAAS,2CAA4C,WACrDA,EAAS,6CAA8C,qBACvDA,EAAS,8CAA+C,qBACxDA,EAAS,uCAAwC,+BACjDA,EAAS,sDAAuD,qBAChEA,EAAS,yCAA0C,qBACnDA,EAAS,yCAA0C,cACnDA,EAAS,oCAAqC,qBAC9CA,EAAS,6CAA8C,0BACvDA,EAAS,+CAAgD,sBACzDA,EAAS,wCAAyC,qBAClDA,EAAS,iDAAkD,qBAC3DA,EAAS,kDAAmD,QAC5DA,EAAS,oDAAqD,QAC9DA,EAAS,sDAAuD,WAChEA,EAAS,mDAAoD,WAC7DA,EAAS,4CAA6C,qBACtDA,EAAS,oBAAqB,qBAC9BA,EAAS,uBAAwB,qBAEjCA,EAAS,mCAAoC,WAC7CA,EAAS,sCAAuC,oBAChDA,EAAS,qDAAsD,qBAC/DA,EAAS,uDAAwD,oBACjEA,EAAS,2DAA4D,oBACrEA,EAAS,6DAA8D,qBACvEA,EAAS,+CAAgD,qBACzDA,EAAS,6CAA8C,qBACvDA,EAAS,qDAAsD,qBAC/DA,EAAS,mDAAoD,qBAC7DA,EAAS,kCAAmC,qBAC5CA,EAAS,0CAA2C,qBACpDA,EAAS,2CAA4C,qBACrDA,EAAS,0DAA2D,oBACpEA,EAAS,4DAA6D,qBACtEA,EAAS,oDAAqD,qBAE9DA,EAAS,sBAAuB,iBAChCA,EAAS,2BAA4B,qBACrCA,EAAS,+BAAgC,qBACzCA,EAAS,+BAAgC,qBACzCA,EAAS,yBAA0B,qBACnCA,EAAS,oCAAqC,eAE9C,IAAIt/J,EAAUhuB,WAAWwtL,EAAW,qBAAsB,YACrDztL,MAAMiuB,KACP7G,EAAI,oCAAqC6G,GACzC7G,EAAI,yCAA0C6G,GAC9C7G,EAAI,4CAA6C6G,GACjD7G,EAAI,sCAAuC6G,IAG/Cy/J,EAAmB,CAAC,OAAQ,gBAAiB,+BAC7CA,EAAmB,CAAC,OAAQ,gBAAiB,8BAChD,CAxED,GA2EItmK,EAAI,qDAAsD,GAC1DA,EAAI,sDAAuD,GAG/D,WACI,SAAS6nE,EAAKu+F,GACV,OAAOC,EAAWD,EAAS,cAAgB,IACpCC,EAAWD,EAAS,YAAc,IAClCC,EAAWD,EAAS,aAC/B,CAEA,IAAIK,EAAc5+F,EAAK,cACnB6+F,EAAY7+F,EAAK,oBACjB8+F,EAAgB9+F,EAAK,yBACrB++F,EAAY/+F,EAAK,oBAErB7nE,EAAI,iCAAkC4mK,GACtC5mK,EAAI,sCAAuCymK,GAC3CzmK,EAAI,gCAAiCymK,GACrCzmK,EAAI,2BAA4BymK,GAChCzmK,EAAI,mCAAoC4mK,GACxC5mK,EAAI,wCAAyCymK,GAC7CzmK,EAAI,mBAAoB0mK,GACxB1mK,EAAI,sBAAuB2mK,GAC3B3mK,EAAI,gCAAiC2mK,EACxC,CArBD,GAsCQ5nJ,EAAStsC,EAAE,sBAAsBqxD,UACjCiiI,EAAatzL,EAAE,wBAAwBsJ,IAAI,mBAe/CikB,EAAI,qBAde+e,EAAO8U,QACxB,SAASnZ,EAAKpd,GACZ,IAAI6nE,EAdR,SAAmBjzF,GACf,IAAIuwH,EAAQvwH,EAAKsO,MAAM,mBACvB,GAAc,OAAViiH,EACA,OAAiBA,EAAM,GANb95G,cAAchH,WAAW,GAAK,IAAIA,WAAW,GAS3D,IAAIq5I,EAAM9oJ,EAAKwI,MAAM,aAAa,GAClC,OAAO4O,SAAS0xI,EAAK,IAAM,CAC/B,CAMc6rC,CAAUvpK,EAAGH,WACnB4jG,EAAQtuH,EAAE6qB,GAAIvhB,IAAI,mBAMtB,OAJIglH,IAAUglE,IACVrrJ,EAAIyqD,GAAO47B,GAGRrmF,CACT,GACA,KAMNurJ,EAAK9pL,SAELyxB,EAAQo4J,EAEDA,CACX,CAGH,CA7OD,CA6OGp1L,OAAOH,MAAM+G,QAEhB,SAAU/E,GAGN,IA4tHQq0L,EAEAC,EA9tHJt2L,EAAQG,OAAOH,MACf4pB,EAAK5pB,EAAM8pB,QAAQF,GACnB/hB,EAAa7H,EAAM6H,WAGnB83J,EAAQ,OAGRe,EAAQ,OAERq0B,EAAiB/0L,EAAM8pB,QAAQirK,eAAe,CAC9C9mB,WAAW,IAGXsoB,EAAiB,CACjBnnJ,MAAO,CACHqlI,OAAQ,CACJr9E,KAVC,qCAeTo/F,EAAmB,CACnBC,cAAe,CACXC,MAAO,CACHtgK,QAAS,IAEb6oG,OAAQ,CACJ7zH,MAAO,IAGf6iD,SAAU,CACNzkC,OAAQ,CACJmtK,QAAS,CACLvrL,MAAO,EACPC,OAAQ,KAIpBurL,WAAY,CACR33D,OAAQ,CACJ7zH,MAAO,EACP8yI,SAAU,QAGlB24C,mBAAoB,CAChB53D,OAAQ,CACJ7zH,MAAO,GAEXm6B,UAAW,CACPoxJ,QAAS,CACLvrL,MAAO,EACPC,OAAQ,IAGhB4iD,SAAU,CACN6oI,MAAO,CAAC,OAAQ,aAKxBj/J,EAASjO,EAAGiO,OACZk/J,EAAgBntK,EAAGmtK,cAAgB,SAASC,EAAWxwL,GACnD,IAAI2P,EAAS,CAAC,EAEdA,EAAOw9J,MAAQ9rK,EAAW,CAAC,EAAGktL,EAAgBvuL,EAAQmtK,OACtDx9J,EAAO8gL,MAAQpvL,EAAW,CAAC,EAAG0uL,EAAgB/vL,EAAQywL,OACtD9gL,EAAO+gL,QAAUrvL,EAAW,CAAC,EAAG2uL,EAAkBhwL,EAAQ0wL,SAC1D/gL,EAAOghL,QAAUtvL,EAAW,CAAC,EAAGrB,EAAQ2wL,SAGxC,IAAIl3L,EAAWkW,EAAOw9J,MAAM+e,eAC5BzyL,EAASs0L,aAAe1sL,EAAW,CAAC,EAAG5H,EAAS2kK,MAChD3kK,EAASm0L,aAAevsL,EAAW,CAAC,EAAG5H,EAAS0yL,MAChD1yL,EAAS2yL,UAAY/qL,EAAW,CAAC,EAAG5H,EAAS0yL,MAC7C1yL,EAAS4yL,kBAAoBhrL,EAAW,CAAC,EAAG5H,EAAS2yL,WACrD3yL,EAASo0L,gBAAkBxsL,EAAW,CAAC,EAAG5H,EAAS8yL,SACnD9yL,EAAS4zL,UAAYhsL,EAAW,CAAC,EAAG5H,EAASyzL,WAC7CzzL,EAAS6zL,UAAYjsL,EAAW,CAAC,EAAG5H,EAAS0zL,WAE7C97J,EAAOm/J,GAAa7gL,CACxB,EA8qHJ,SAASihL,EAAKC,EAAMC,GAChB,OAAOt1L,EAAEkY,IAAIm9K,GAAM,SAAS7oJ,EAAM71B,GAC9B,MAAO,CACH,CAAC61B,EAAM8oJ,EAAK3+K,IAEpB,GACJ,CAlrHAo+K,EAAc,QAAS,CACnBpjB,MAAO,CACHn2H,MAAO,CACH8yE,MAAOowC,GAEXw0B,SAAU,CACN5kE,MAAOowC,GAEXy0B,OAAQ,CACJ1gB,OAAQ,CACJnkD,MAAOowC,GAEX62B,cAAe,CACX9iB,OAAQ,CACJnkD,MAAO,WAEX+gE,QAAS,CACL/gE,MAAO,aAInBoiE,eAAgB,CACZje,OAAQ,CACJnkD,MAAOowC,GAEX82B,UAAW,CACPlnE,MAAOowC,GAEXwV,MAAO,CACHv+E,KAAM,CACFw8D,WAAY,UACZ4X,OAAQ,CACJz7C,MAAO,YAGf38F,MAAO,CACH28F,MAAOowC,GAEXkE,KAAM,CACFt0C,MAAO,YAGf8iE,IAAK,CACDjnB,QAAS,CACL9mB,SAAU,eAGlBguC,MAAO,CACHlnB,QAAS,CACL9mB,SAAU,eAGlBuf,KAAM,CACFysB,QAAS,CACLl9B,WAAY,YAGpB+/B,QAAS,CACL7C,QAAS,CACLl9B,WAAY,YAGpBggC,YAAa,CACT9C,QAAS,CACLl9B,WAAY,YAGpBqgC,UAAW,CACP5vB,KAAM,CACFt0C,MAAO,YAGfkjE,oBAAqB,CACjB5uB,KAAM,CACFt0C,MAAO,YAGf2iE,YAAa,CACTpB,UAAW,OACXjtB,KAAM,CACFt0C,MAAOowC,GAEXqL,OAAQ,CACJ6lB,YAAa,IACbx7J,QAAS,GAEb40I,UAAW,CACPe,OAAQ,CACJz7C,MAAOowC,EACPtqI,QAAS,MAIrBq9J,KAAM,CACF7uB,KAAM,CACFt0C,MAAOowC,KAInB+2B,UAAW,CACPtjC,WAAY,WAEhBujC,aAAc,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE1C,aAAc,CACVpwB,KAAM,CACFt0C,MAAO,WAEXmkD,OAAQ,CACJnkD,MAAOowC,GAEX2X,eAAgB,CACZ/nD,MAAO,WAEX8nD,eAAgB,CACZ9nD,MAAO,WAEX9yE,MAAO,CACH8yE,MAAOowC,GAEXi3B,UAAW,CACPrnE,MAAO,WAEX4lD,MAAO,CACHv+E,KAAM,CACFw8D,WAAY,UACZ4X,OAAQ,CACJz7C,MAAO,YAGf38F,MAAO,CACH28F,MAAOowC,GAEXkE,KAAM,CACFt0C,MAAO,cAKvB2mE,MAAO,CACHh6G,QAAS,CACLqzC,MAAO,WAEXlhF,MAAO,CACHwoJ,sBAAuB,UACvBnjB,OAAQ,CACJnkD,MAAOowC,GAEXkU,WAAY,CACRtkD,MAAOowC,GAEXoU,WAAY,CACRxkD,MAAOowC,GAEXkE,KAAM,CACFt0C,MAAOowC,KAInBw2B,QAAS,CACLT,cAAe,CACX1jK,KAAM,CACFu9F,MAAO,WAEXunE,kBAAmB,CACf9kK,KAAM,CACFu9F,MAAOowC,GAEXzhC,OAAQ,CACJ3O,MAAO,WAEXomE,MAAO,CACH3jK,KAAM,CACFu9F,MAAO,WAEX2O,OAAQ,CACJ3O,MAAO,aAInBtqE,QAAS,CACLsqE,MAAOowC,IAGfzyG,SAAU,CACNzkC,OAAQ,CACJmtK,QAAS,CACL5jK,KAAM,CACFu9F,MAAO,WAEX2O,OAAQ,CACJ3O,MAAOowC,GAEXg2B,MAAO,CACH3jK,KAAM,CACFu9F,MAAOowC,GAEXzhC,OAAQ,CACJ3O,MAAOowC,MAKvBlwH,OAAQ,CACJsnJ,MAAO,CACH74D,OAAQ,CACJ3O,MAAOowC,GAEX3tI,KAAM,CACFu9F,MAAOowC,MAKvBk2B,WAAY,CACR33D,OAAQ,CACJ3O,MAAOowC,IAGfm2B,mBAAoB,CAChB53D,OAAQ,CACJ3O,MAAOowC,GAEX16G,QAAS,CACLsqE,MAAOowC,GAEXn7H,UAAW,CACPoxJ,QAAS,CACL5jK,KAAM,CACFu9F,MAAO,WAEX2O,OAAQ,CACJ3O,MAAO,eAM3B6mE,QAAS,CACL5oJ,OAAQ,CACJ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,eAIxBwoJ,EAAc,WAAY,CACtBpjB,MAAO,CACHn2H,MAAO,CACH8yE,MAAO,WAEX4kE,SAAU,CACN5kE,MAAO,WAEX6kE,OAAQ,CACJ1gB,OAAQ,CACJnkD,MAAO,WAEXinE,cAAe,CACX9iB,OAAQ,CACJnkD,MAAO,WAEX+gE,QAAS,CACL/gE,MAAO,aAInBoiE,eAAgB,CACZje,OAAQ,CACJnkD,MAAOqvC,EACPxL,WAAYuM,EACZtqI,QAAS,IAEbohK,UAAW,CACPlnE,MAAO,WAEX2iE,YAAa,CACTpB,UAAW,UACXjtB,KAAM,CACFt0C,MAAO,YAGfkkE,UAAW,CACP5vB,KAAM,CACFt0C,MAAO,YAGfkjE,oBAAqB,CACjB5uB,KAAM,CACFt0C,MAAO,YAGf4lD,MAAO,CACHv+E,KAAM,CACFw8D,WAAY,cACZ4X,OAAQ,CACJz7C,MAAO,YAGf38F,MAAO,CACH28F,MAAO,WAEXs0C,KAAM,CACFt0C,MAAO,aAInBonE,aAAc,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE1C,aAAc,CACVpwB,KAAM,CACFt0C,MAAO,WAEXmkD,OAAQ,CACJnkD,MAAO,WAEX+nD,eAAgB,CACZ/nD,MAAO,WAEX8nD,eAAgB,CACZ9nD,MAAO,WAEX9yE,MAAO,CACH8yE,MAAO,WAEXqnE,UAAW,CACPrnE,MAAO,WAEX4lD,MAAO,CACHv+E,KAAM,CACFw8D,WAAY,cACZ4X,OAAQ,CACJz7C,MAAO,YAGf38F,MAAO,CACH28F,MAAO,WAEXs0C,KAAM,CACFt0C,MAAO,cAKvB2mE,MAAO,CACHh6G,QAAS,CACLqzC,MAAO,WAEXlhF,MAAO,CACHwoJ,sBAAuB,UAEvBnjB,OAAQ,CACJnkD,MAAO,WAEXskD,WAAY,CACRtkD,MAAO,WAEXwkD,WAAY,CACRxkD,MAAO,WAEXs0C,KAAM,CACFt0C,MAAO,aAInB4mE,QAAS,CACLT,cAAe,CACX1jK,KAAM,CACFu9F,MAAO,WAEXunE,kBAAmB,CACf9kK,KAAM,CACFu9F,MAAO,WAEX2O,OAAQ,CACJ3O,MAAOowC,GAEXg2B,MAAO,CACH3jK,KAAM,CACFu9F,MAAOowC,GAEXzhC,OAAQ,CACJ3O,MAAO,aAInBtqE,QAAS,CACLsqE,MAAO,YAGfriE,SAAU,CACNzkC,OAAQ,CACJmtK,QAAS,CACL5jK,KAAM,CACFu9F,MAAOowC,GAEXzhC,OAAQ,CACJ3O,MAAO,WAEXomE,MAAO,CACH3jK,KAAM,CACFu9F,MAAO,WAEX2O,OAAQ,CACJ3O,MAAO,cAKvB9/E,OAAQ,CACJsnJ,MAAO,CACH74D,OAAQ,CACJ3O,MAAO,WAEXv9F,KAAM,CACFu9F,MAAO,cAKvBsmE,WAAY,CACR33D,OAAQ,CACJ3O,MAAO,YAGfumE,mBAAoB,CAChB53D,OAAQ,CACJ3O,MAAO,WAEXtqE,QAAS,CACLsqE,MAAO,WAEX/qF,UAAW,CACPoxJ,QAAS,CACL5jK,KAAM,CACFu9F,MAAO,WAEX2O,OAAQ,CACJ3O,MAAO,eAM3B6mE,QAAS,CACL5oJ,OAAQ,CACJ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,eAKxBwoJ,EAAc,eAAgB,CAC1BpjB,MAAO,CACHn2H,MAAO,CACH8yE,MAAO,WAEX4kE,SAAU,CACN5kE,MAAO,WAEX6kE,OAAQ,CACJ1gB,OAAQ,CACJnkD,MAAO,WAEXinE,cAAe,CACX9iB,OAAQ,CACJnkD,MAAO,WAEX+gE,QAAS,CACL/gE,MAAO,aAInBoiE,eAAgB,CACZje,OAAQ,CACJnkD,MAAO,WAEXknE,UAAW,CACPlnE,MAAO,WAEX4lD,MAAO,CACHv+E,KAAM,CACFw8D,WAAY,cACZ4X,OAAQ,CACJz7C,MAAO,YAGf38F,MAAO,CACH28F,MAAO,WAEXs0C,KAAM,CACFt0C,MAAO,YAGf8iE,IAAK,CACDjnB,QAAS,CACL9mB,SAAU,eAGlBguC,MAAO,CACHlnB,QAAS,CACL9mB,SAAU,eAGlBuf,KAAM,CACFysB,QAAS,CACLl9B,WAAY,YAGpB+/B,QAAS,CACL7C,QAAS,CACLl9B,WAAY,YAGpBggC,YAAa,CACT9C,QAAS,CACLl9B,WAAY,YAGpBw+B,KAAM,CACFv8J,QAAS,IAEbo+J,UAAW,CACP5vB,KAAM,CACFt0C,MAAO,YAGfkjE,oBAAqB,CACjB5uB,KAAM,CACFt0C,MAAO,YAGf2iE,YAAa,CACTpB,UAAW,UACXjtB,KAAM,CACFt0C,MAAO,WAEXy7C,OAAQ,CACJ6lB,YAAa,IACbx7J,QAAS,GAEb40I,UAAW,CACPe,OAAQ,CACJz7C,MAAO,UACPl6F,QAAS,KAIrBq9J,KAAM,CACF7uB,KAAM,CACFt0C,MAAO,aAInBmnE,UAAW,CACPtjC,WAAY,WAEhBujC,aAAc,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE1C,aAAc,CACVpwB,KAAM,CACFt0C,MAAO,WAEXmkD,OAAQ,CACJnkD,MAAO,WAEX+nD,eAAgB,CACZ/nD,MAAO,WAEX8nD,eAAgB,CACZ9nD,MAAO,WAEX9yE,MAAO,CACH8yE,MAAO,WAEXqnE,UAAW,CACPrnE,MAAO,WAEX4lD,MAAO,CACHv+E,KAAM,CACFw8D,WAAY,cACZ4X,OAAQ,CACJz7C,MAAO,YAGf38F,MAAO,CACH28F,MAAO,WAEXs0C,KAAM,CACFt0C,MAAO,cAKvB2mE,MAAO,CACHh6G,QAAS,CACLqzC,MAAO,WAEXlhF,MAAO,CACHwoJ,sBAAuB,UAEvBnjB,OAAQ,CACJnkD,MAAO,WAEXskD,WAAY,CACRtkD,MAAO,WAEXwkD,WAAY,CACRxkD,MAAO,WAEXs0C,KAAM,CACFt0C,MAAO,aAInB4mE,QAAS,CACLT,cAAe,CACX1jK,KAAM,CACFu9F,MAAO,WAEXunE,kBAAmB,CACf9kK,KAAM,CACFu9F,MAAOowC,GAEXzhC,OAAQ,CACJ3O,MAAO,WAEXomE,MAAO,CACH3jK,KAAM,CACFu9F,MAAO,WAEX2O,OAAQ,CACJ3O,MAAOowC,KAInB16G,QAAS,CACLsqE,MAAOowC,IAGfzyG,SAAU,CACNzkC,OAAQ,CACJmtK,QAAS,CACL5jK,KAAM,CACFu9F,MAAO,WAEX2O,OAAQ,CACJ3O,MAAOowC,GAEXg2B,MAAO,CACH3jK,KAAM,CACFu9F,MAAOowC,GAEXzhC,OAAQ,CACJ3O,MAAOowC,MAKvBlwH,OAAQ,CACJsnJ,MAAO,CACH74D,OAAQ,CACJ3O,MAAOowC,GAEX3tI,KAAM,CACFu9F,MAAOowC,MAKvBk2B,WAAY,CACR33D,OAAQ,CACJ3O,MAAOowC,IAGfm2B,mBAAoB,CAChB53D,OAAQ,CACJ3O,MAAOowC,GAEX16G,QAAS,CACLsqE,MAAOowC,GAEXn7H,UAAW,CACPoxJ,QAAS,CACL5jK,KAAM,CACFu9F,MAAO,WAEX2O,OAAQ,CACJ3O,MAAOowC,OAM3By2B,QAAS,CACL5oJ,OAAQ,CACJ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,eAKxBwoJ,EAAc,UAAW,CACrBpjB,MAAO,CACHn2H,MAAO,CACH8yE,MAAO,WAEX4kE,SAAU,CACN5kE,MAAO,WAEX6kE,OAAQ,CACJ1gB,OAAQ,CACJnkD,MAAO,WAEXinE,cAAe,CACX9iB,OAAQ,CACJnkD,MAAO,WAEX+gE,QAAS,CACL/gE,MAAO,aAInBoiE,eAAgB,CACZje,OAAQ,CACJnkD,MAAOqvC,EACPxL,WAAYuM,EACZtqI,QAAS,IAEbohK,UAAW,CACPlnE,MAAO,WAEX2iE,YAAa,CACTpB,UAAW,UACXjtB,KAAM,CACFt0C,MAAO,YAGfkkE,UAAW,CACP5vB,KAAM,CACFt0C,MAAO,YAGfkjE,oBAAqB,CACjB5uB,KAAM,CACFt0C,MAAO,YAGf4lD,MAAO,CACHv+E,KAAM,CACFw8D,WAAY,cACZ4X,OAAQ,CACJz7C,MAAO,YAGf38F,MAAO,CACH28F,MAAO,WAEXs0C,KAAM,CACFt0C,MAAO,aAInBonE,aAAc,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE1C,aAAc,CACVpwB,KAAM,CACFt0C,MAAO,WAEXmkD,OAAQ,CACJnkD,MAAO,WAEX8nD,eAAgB,CACZ9nD,MAAO,WAEX+nD,eAAgB,CACZ/nD,MAAO,WAEX9yE,MAAO,CACH8yE,MAAO,WAEXqnE,UAAW,CACPrnE,MAAO,WAEX4lD,MAAO,CACHv+E,KAAM,CACFw8D,WAAY,cACZ4X,OAAQ,CACJz7C,MAAO,YAGf38F,MAAO,CACH28F,MAAO,WAEXs0C,KAAM,CACFt0C,MAAO,cAKvB2mE,MAAO,CACHh6G,QAAS,CACLqzC,MAAO,WAEXlhF,MAAO,CACHwoJ,sBAAuB,UAEvBnjB,OAAQ,CACJnkD,MAAO,WAEXskD,WAAY,CACRtkD,MAAO,WAEXwkD,WAAY,CACRxkD,MAAO,WAEXs0C,KAAM,CACFt0C,MAAO,aAInB4mE,QAAS,CACLT,cAAe,CACX1jK,KAAM,CACFu9F,MAAO,WAEXunE,kBAAmB,CACf9kK,KAAM,CACFu9F,MAAO,WAEX2O,OAAQ,CACJ3O,MAAOowC,GAEXg2B,MAAO,CACH3jK,KAAM,CACFu9F,MAAOowC,GAEXzhC,OAAQ,CACJ3O,MAAO,aAInBtqE,QAAS,CACLsqE,MAAO,YAGfriE,SAAU,CACNzkC,OAAQ,CACJmtK,QAAS,CACL5jK,KAAM,CACFu9F,MAAOowC,GAEXzhC,OAAQ,CACJ3O,MAAO,WAEXomE,MAAO,CACH3jK,KAAM,CACFu9F,MAAO,WAEX2O,OAAQ,CACJ3O,MAAO,cAKvB9/E,OAAQ,CACJsnJ,MAAO,CACH74D,OAAQ,CACJ3O,MAAO,WAEXv9F,KAAM,CACFu9F,MAAO,cAKvBsmE,WAAY,CACR33D,OAAQ,CACJ3O,MAAO,YAGfumE,mBAAoB,CAChB53D,OAAQ,CACJ3O,MAAO,WAEXtqE,QAAS,CACLsqE,MAAO,WAEX/qF,UAAW,CACPoxJ,QAAS,CACL5jK,KAAM,CACFu9F,MAAOowC,GAEXzhC,OAAQ,CACJ3O,MAAO,eAM3B6mE,QAAS,CACL5oJ,OAAQ,CACJ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,eAKxBwoJ,EAAc,SAAU,CACpBpjB,MAAO,CACHn2H,MAAO,CACH8yE,MAAO,WAEX4kE,SAAU,CACN5kE,MAAO,WAEX6kE,OAAQ,CACJ1gB,OAAQ,CACJnkD,MAAO,WAEXinE,cAAe,CACX9iB,OAAQ,CACJnkD,MAAO,WAEX+gE,QAAS,CACL/gE,MAAO,aAInBoiE,eAAgB,CACZje,OAAQ,CACJnkD,MAAO,UACP6jC,WAAY,UACZ/9H,QAAS,IAEbohK,UAAW,CACPlnE,MAAO,WAEX4lD,MAAO,CACHv+E,KAAM,CACFw8D,WAAY,cACZ4X,OAAQ,CACJz7C,MAAO,YAGf38F,MAAO,CACH28F,MAAO,WAEXs0C,KAAM,CACFt0C,MAAO,YAGfs0C,KAAM,CACFysB,QAAS,CACLl9B,WAAY,YAGpB+/B,QAAS,CACL7C,QAAS,CACLl9B,WAAY,YAGpBggC,YAAa,CACT9C,QAAS,CACLl9B,WAAY,YAGpBi/B,IAAK,CACD2E,WAAY,CACRznE,MAAO,YAGf+iE,MAAO,CACH0E,WAAY,CACRznE,MAAO,YAGfkkE,UAAW,CACP5vB,KAAM,CACFt0C,MAAO,YAGfkjE,oBAAqB,CACjB5uB,KAAM,CACFt0C,MAAO,YAGf2iE,YAAa,CACTpB,UAAW,YAGnB4F,UAAW,CACPtjC,WAAY,WAEhBujC,aAAc,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE1C,aAAc,CACVpwB,KAAM,CACFt0C,MAAO,WAEXmkD,OAAQ,CACJnkD,MAAO,WAEX+nD,eAAgB,CACZ/nD,MAAO,WAEX8nD,eAAgB,CACZ9nD,MAAO,WAEX9yE,MAAO,CACH8yE,MAAO,WAEXqnE,UAAW,CACPrnE,MAAO,WAEX4lD,MAAO,CACHv+E,KAAM,CACFw8D,WAAY,cACZ4X,OAAQ,CACJz7C,MAAO,YAGf38F,MAAO,CACH28F,MAAO,WAEXs0C,KAAM,CACFt0C,MAAO,cAKvB2mE,MAAO,CACHh6G,QAAS,CACLqzC,MAAO,WAEXlhF,MAAO,CACHwoJ,sBAAuB,UAEvBnjB,OAAQ,CACJnkD,MAAO,WAEXskD,WAAY,CACRtkD,MAAO,WAEXwkD,WAAY,CACRxkD,MAAO,WAEXs0C,KAAM,CACFt0C,MAAO,aAInB4mE,QAAS,CACLT,cAAe,CACX1jK,KAAM,CACFu9F,MAAO,WAEXunE,kBAAmB,CACf9kK,KAAM,CACFu9F,MAAO,WAEX2O,OAAQ,CACJ3O,MAAOowC,GAEXg2B,MAAO,CACH3jK,KAAM,CACFu9F,MAAOowC,GAEXzhC,OAAQ,CACJ3O,MAAO,aAInBtqE,QAAS,CACLsqE,MAAO,YAGfriE,SAAU,CACNzkC,OAAQ,CACJmtK,QAAS,CACL5jK,KAAM,CACFu9F,MAAOowC,GAEXzhC,OAAQ,CACJ3O,MAAO,WAEXomE,MAAO,CACH3jK,KAAM,CACFu9F,MAAO,WAEX2O,OAAQ,CACJ3O,MAAO,cAKvB9/E,OAAQ,CACJsnJ,MAAO,CACH74D,OAAQ,CACJ3O,MAAO,WAEXv9F,KAAM,CACFu9F,MAAO,cAKvBsmE,WAAY,CACR33D,OAAQ,CACJ3O,MAAO,YAGfumE,mBAAoB,CAChB53D,OAAQ,CACJ3O,MAAO,WAEXtqE,QAAS,CACLsqE,MAAO,WAEX/qF,UAAW,CACPoxJ,QAAS,CACL5jK,KAAM,CACFu9F,MAAOowC,GAEXzhC,OAAQ,CACJ3O,MAAO,eAM3B6mE,QAAS,CACL5oJ,OAAQ,CACJ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,eAKxBwoJ,EAAc,QAAS,CACnBpjB,MAAO,CACHn2H,MAAO,CACH8yE,MAAO,WAEX4kE,SAAU,CACN5kE,MAAO,WAEX6kE,OAAQ,CACJ1gB,OAAQ,CACJnkD,MAAO,WAEXinE,cAAe,CACX9iB,OAAQ,CACJnkD,MAAO,WAEX+gE,QAAS,CACL/gE,MAAO,aAInBoiE,eAAgB,CACZje,OAAQ,CACJnkD,MAAOqvC,GAEX63B,UAAW,CACPlnE,MAAO,WAEX4lD,MAAO,CACHv+E,KAAM,CACFw8D,WAAY,cACZ4X,OAAQ,CACJz7C,MAAO,YAGf38F,MAAO,CACH28F,MAAO,WAEXs0C,KAAM,CACFt0C,MAAO,YAGf2iE,YAAa,CACTpB,UAAW,UACXjtB,KAAM,CACFt0C,MAAO,YAGfkkE,UAAW,CACP5vB,KAAM,CACFt0C,MAAO,YAGfkjE,oBAAqB,CACjB5uB,KAAM,CACFt0C,MAAO,YAGf67C,QAAS,CACL9mB,SAAU,QAEd0mB,OAAQ,CACJ6lB,YAAa,IAGrB8F,aAAc,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAClH1C,aAAc,CACVpwB,KAAM,CACFt0C,MAAO,WAEXmkD,OAAQ,CACJnkD,MAAO,WAEX8nD,eAAgB,CACZ9nD,MAAO,WAEX+nD,eAAgB,CACZ/nD,MAAO,WAEX9yE,MAAO,CACH8yE,MAAO,WAEXqnE,UAAW,CACPrnE,MAAO,WAEX4lD,MAAO,CACHv+E,KAAM,CACFw8D,WAAY,cACZ4X,OAAQ,CACJz7C,MAAO,YAGf38F,MAAO,CACH28F,MAAO,WAEXs0C,KAAM,CACFt0C,MAAO,cAKvB2mE,MAAO,CACHh6G,QAAS,CACLqzC,MAAO,WAEXlhF,MAAO,CACHwoJ,sBAAuB,UAEvBnjB,OAAQ,CACJnkD,MAAO,QAEXskD,WAAY,CACRtkD,MAAO,QAEXwkD,WAAY,CACRxkD,MAAO,QAEXs0C,KAAM,CACFt0C,MAAO,UAInB4mE,QAAS,CACLT,cAAe,CACX1jK,KAAM,CACFu9F,MAAO,WAEXunE,kBAAmB,CACf9kK,KAAM,CACFu9F,MAAOqvC,GAEX1gC,OAAQ,CACJ3O,MAAOowC,GAEXg2B,MAAO,CACH3jK,KAAM,CACFu9F,MAAOowC,GAEXzhC,OAAQ,CACJ3O,MAAOqvC,KAInB35G,QAAS,CACLsqE,MAAO,SAGfriE,SAAU,CACNzkC,OAAQ,CACJmtK,QAAS,CACL5jK,KAAM,CACFu9F,MAAOowC,GAEXzhC,OAAQ,CACJ3O,MAAO,WAEXomE,MAAO,CACH3jK,KAAM,CACFu9F,MAAO,WAEX2O,OAAQ,CACJ3O,MAAO,cAKvB9/E,OAAQ,CACJsnJ,MAAO,CACH74D,OAAQ,CACJ3O,MAAO,WAEXv9F,KAAM,CACFu9F,MAAO,cAKvBsmE,WAAY,CACR33D,OAAQ,CACJ3O,MAAO,YAGfumE,mBAAoB,CAChB53D,OAAQ,CACJ3O,MAAO,WAEXtqE,QAAS,CACLsqE,MAAO,QAEX/qF,UAAW,CACPoxJ,QAAS,CACL5jK,KAAM,CACFu9F,MAAOowC,GAEXzhC,OAAQ,CACJ3O,MAAO,eAM3B6mE,QAAS,CACL5oJ,OAAQ,CACJ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,eAKxBwoJ,EAAc,aAAc,CACxBpjB,MAAO,CACHn2H,MAAO,CACH8yE,MAAO,WAEX4kE,SAAU,CACN5kE,MAAO,WAEX6kE,OAAQ,CACJ1gB,OAAQ,CACJnkD,MAAO,WAEXinE,cAAe,CACX9iB,OAAQ,CACJnkD,MAAO,WAEX+gE,QAAS,CACL/gE,MAAO,aAInBoiE,eAAgB,CACZ3mB,OAAQ,CACJ6lB,YAAa,GAEjBnd,OAAQ,CACJnkD,MAAO,WAEXknE,UAAW,CACPlnE,MAAO,WAEX4lD,MAAO,CACHv+E,KAAM,CACFw8D,WAAY,cACZ4X,OAAQ,CACJz7C,MAAO,YAGf38F,MAAO,CACH28F,MAAO,WAEXs0C,KAAM,CACFt0C,MAAO,YAGfs0C,KAAM,CACFysB,QAAS,CACLl9B,WAAY,YAGpB6+B,OAAQ,CACJ58J,QAAS,IAEb89J,QAAS,CACL7C,QAAS,CACLl9B,WAAY,YAGpBggC,YAAa,CACT9C,QAAS,CACLl9B,WAAY,YAGpB8+B,YAAa,CACTpB,UAAW,UACXjtB,KAAM,CACFt0C,MAAO,YAGfkkE,UAAW,CACP5vB,KAAM,CACFt0C,MAAO,YAGfkjE,oBAAqB,CACjB5uB,KAAM,CACFt0C,MAAO,YAGf67C,QAAS,CACL9mB,SAAU,SAGlBoyC,UAAW,CACPtjC,WAAY,WAEhBujC,aAAc,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAClH1C,aAAc,CACVpwB,KAAM,CACFt0C,MAAO,WAEXmkD,OAAQ,CACJnkD,MAAO,WAEX8nD,eAAgB,CACZ9nD,MAAO,WAEX+nD,eAAgB,CACZ/nD,MAAO,WAEX9yE,MAAO,CACH8yE,MAAO,WAEXqnE,UAAW,CACPrnE,MAAO,WAEX4lD,MAAO,CACHv+E,KAAM,CACFw8D,WAAY,cACZ4X,OAAQ,CACJz7C,MAAO,YAGf38F,MAAO,CACH28F,MAAO,WAEXs0C,KAAM,CACFt0C,MAAO,cAKvB2mE,MAAO,CACHh6G,QAAS,CACLqzC,MAAO,WAEXlhF,MAAO,CACHwoJ,sBAAuB,UAEvBnjB,OAAQ,CACJnkD,MAAO,WAEXskD,WAAY,CACRtkD,MAAO,WAEXwkD,WAAY,CACRxkD,MAAO,WAEXs0C,KAAM,CACFt0C,MAAO,aAInB4mE,QAAS,CACLT,cAAe,CACX1jK,KAAM,CACFu9F,MAAO,WAEXunE,kBAAmB,CACf9kK,KAAM,CACFu9F,MAAOowC,GAEXzhC,OAAQ,CACJ3O,MAAO,WAEXomE,MAAO,CACH3jK,KAAM,CACFu9F,MAAO,WAEX2O,OAAQ,CACJ3O,MAAOowC,KAInB16G,QAAS,CACLsqE,MAAOowC,IAGfzyG,SAAU,CACNzkC,OAAQ,CACJmtK,QAAS,CACL5jK,KAAM,CACFu9F,MAAO,WAEX2O,OAAQ,CACJ3O,MAAO,WAEXomE,MAAO,CACH3jK,KAAM,CACFu9F,MAAO,WAEX2O,OAAQ,CACJ3O,MAAO,cAKvB9/E,OAAQ,CACJsnJ,MAAO,CACH74D,OAAQ,CACJ3O,MAAOowC,GAEX3tI,KAAM,CACFu9F,MAAOowC,MAKvBk2B,WAAY,CACR33D,OAAQ,CACJ3O,MAAO,YAGfumE,mBAAoB,CAChB53D,OAAQ,CACJ3O,MAAOowC,GAEX16G,QAAS,CACLsqE,MAAOowC,GAEXn7H,UAAW,CACPoxJ,QAAS,CACL5jK,KAAM,CACFu9F,MAAO,WAEX2O,OAAQ,CACJ3O,MAAOowC,OAM3By2B,QAAS,CACL5oJ,OAAQ,CACJ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,eAKxBwoJ,EAAc,YAAa,CACvBpjB,MAAO,CACHn2H,MAAO,CACH8yE,MAAO,WAEX4kE,SAAU,CACN5kE,MAAO,WAEX6kE,OAAQ,CACJ1gB,OAAQ,CACJnkD,MAAO,WAEXinE,cAAe,CACX9iB,OAAQ,CACJnkD,MAAO,WAEX+gE,QAAS,CACL/gE,MAAO,aAInBoiE,eAAgB,CACZje,OAAQ,CACJnkD,MAAO,WAEXknE,UAAW,CACPlnE,MAAO,WAEX4lD,MAAO,CACHv+E,KAAM,CACFw8D,WAAY,cACZ4X,OAAQ,CACJz7C,MAAO,YAGf38F,MAAO,CACH28F,MAAO,WAEXs0C,KAAM,CACFt0C,MAAO,YAGf8iE,IAAK,CACDjnB,QAAS,CACL9mB,SAAU,eAGlBguC,MAAO,CACHlnB,QAAS,CACL9mB,SAAU,eAGlBuf,KAAM,CACFysB,QAAS,CACLl9B,WAAY,YAGpB6+B,OAAQ,CACJ58J,QAAS,IAEb89J,QAAS,CACL7C,QAAS,CACLl9B,WAAY,YAGpBggC,YAAa,CACT9C,QAAS,CACLl9B,WAAY,YAGpBw+B,KAAM,CACFv8J,QAAS,IAEb68J,YAAa,CACTpB,UAAW,UACXjtB,KAAM,CACFt0C,MAAO,WAEXy7C,OAAQ,CACJ6lB,YAAa,IACbx7J,QAAS,GAEb40I,UAAW,CACPe,OAAQ,CACJz7C,MAAOowC,EACPtqI,QAAS,MAIrBo+J,UAAW,CACP5vB,KAAM,CACFt0C,MAAO,YAGfkjE,oBAAqB,CACjB5uB,KAAM,CACFt0C,MAAO,YAGfmjE,KAAM,CACF7uB,KAAM,CACFt0C,MAAO,aAInBmnE,UAAW,CACPtjC,WAAY,WAEhBujC,aAAc,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE1C,aAAc,CACVpwB,KAAM,CACFt0C,MAAO,WAEXskD,WAAY,CACRtkD,MAAO,WAEXwkD,WAAY,CACRxkD,MAAO,WAEXmkD,OAAQ,CACJnkD,MAAO,WAEX+nD,eAAgB,CACZ/nD,MAAO,WAEX8nD,eAAgB,CACZ9nD,MAAO,WAEX9yE,MAAO,CACH8yE,MAAO,WAEXqnE,UAAW,CACPrnE,MAAO,WAEX4lD,MAAO,CACHv+E,KAAM,CACFw8D,WAAY,cACZ4X,OAAQ,CACJz7C,MAAO,YAGf38F,MAAO,CACH28F,MAAO,WAEXs0C,KAAM,CACFt0C,MAAO,cAKvB2mE,MAAO,CACHh6G,QAAS,CACLqzC,MAAO,WAEXlhF,MAAO,CACHwoJ,sBAAuB,UAEvBnjB,OAAQ,CACJnkD,MAAOowC,GAEXkU,WAAY,CACRtkD,MAAO,WAEXwkD,WAAY,CACRxkD,MAAO,WAEXs0C,KAAM,CACFt0C,MAAO,aAInB4mE,QAAS,CACLT,cAAe,CACX1jK,KAAM,CACFu9F,MAAO,WAEXunE,kBAAmB,CACf9kK,KAAM,CACFu9F,MAAOowC,GAEXzhC,OAAQ,CACJ3O,MAAO,WAEXomE,MAAO,CACH3jK,KAAM,CACFu9F,MAAO,WAEX2O,OAAQ,CACJ3O,MAAOowC,KAInB16G,QAAS,CACLsqE,MAAOowC,IAGfzyG,SAAU,CACNzkC,OAAQ,CACJmtK,QAAS,CACL5jK,KAAM,CACFu9F,MAAO,WAEX2O,OAAQ,CACJ3O,MAAOowC,GAEXg2B,MAAO,CACH3jK,KAAM,CACFu9F,MAAOowC,GAEXzhC,OAAQ,CACJ3O,MAAOowC,MAKvBlwH,OAAQ,CACJsnJ,MAAO,CACH74D,OAAQ,CACJ3O,MAAOowC,GAEX3tI,KAAM,CACFu9F,MAAOowC,MAKvBk2B,WAAY,CACR33D,OAAQ,CACJ3O,MAAOowC,IAGfm2B,mBAAoB,CAChB53D,OAAQ,CACJ3O,MAAOowC,GAEX16G,QAAS,CACLsqE,MAAOowC,GAEXn7H,UAAW,CACPoxJ,QAAS,CACL5jK,KAAM,CACFu9F,MAAO,WAEX2O,OAAQ,CACJ3O,MAAOowC,OAM3By2B,QAAS,CACL5oJ,OAAQ,CACJ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,eAKxBwoJ,EAAc,UAAW,CACrBpjB,MAAO,CACHn2H,MAAO,CACH8yE,MAAO,WAEX4kE,SAAU,CACN5kE,MAAO,WAEX6kE,OAAQ,CACJ1gB,OAAQ,CACJnkD,MAAO,WAEXinE,cAAe,CACX9iB,OAAQ,CACJnkD,MAAO,WAEX+gE,QAAS,CACL/gE,MAAO,aAInBoiE,eAAgB,CACZje,OAAQ,CACJnkD,MAAO,WAEXknE,UAAW,CACPlnE,MAAO,WAEX4lD,MAAO,CACHv+E,KAAM,CACFw8D,WAAY,cACZ4X,OAAQ,CACJz7C,MAAO,YAGf38F,MAAO,CACH28F,MAAO,WAEXs0C,KAAM,CACFt0C,MAAO,YAGf8iE,IAAK,CACDjnB,QAAS,CACL9mB,SAAU,eAGlBguC,MAAO,CACHlnB,QAAS,CACL9mB,SAAU,eAGlBuf,KAAM,CACFysB,QAAS,CACLl9B,WAAY,YAGpB6+B,OAAQ,CACJ58J,QAAS,IAEb89J,QAAS,CACL7C,QAAS,CACLl9B,WAAY,YAGpBggC,YAAa,CACT9C,QAAS,CACLl9B,WAAY,YAGpBw+B,KAAM,CACFv8J,QAAS,IAEb68J,YAAa,CACTpB,UAAW,UACXjtB,KAAM,CACFt0C,MAAO,WAEXy7C,OAAQ,CACJ6lB,YAAa,IACbx7J,QAAS,GAEb40I,UAAW,CACPe,OAAQ,CACJz7C,MAAO,UACPl6F,QAAS,MAIrBo+J,UAAW,CACP5vB,KAAM,CACFt0C,MAAO,YAGfkjE,oBAAqB,CACjB5uB,KAAM,CACFt0C,MAAO,YAGfmjE,KAAM,CACF7uB,KAAM,CACFt0C,MAAO,aAInBmnE,UAAW,CACPtjC,WAAY,WAEhBujC,aAAc,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE1C,aAAc,CACVpwB,KAAM,CACFt0C,MAAO,WAEXskD,WAAY,CACRtkD,MAAO,WAEXwkD,WAAY,CACRxkD,MAAO,WAEXmkD,OAAQ,CACJnkD,MAAO,WAEX+nD,eAAgB,CACZ/nD,MAAO,WAEX8nD,eAAgB,CACZ9nD,MAAO,WAEX9yE,MAAO,CACH8yE,MAAO,WAEXqnE,UAAW,CACPrnE,MAAO,WAEX4lD,MAAO,CACHv+E,KAAM,CACFw8D,WAAY,cACZ4X,OAAQ,CACJz7C,MAAO,YAGf38F,MAAO,CACH28F,MAAO,WAEXs0C,KAAM,CACFt0C,MAAO,cAKvB2mE,MAAO,CACHh6G,QAAS,CACLqzC,MAAO,WAEXlhF,MAAO,CACHwoJ,sBAAuB,UAEvBnjB,OAAQ,CACJnkD,MAAO,WAEXskD,WAAY,CACRtkD,MAAO,WAEXwkD,WAAY,CACRxkD,MAAO,WAEXs0C,KAAM,CACFt0C,MAAO,aAInB4mE,QAAS,CACLT,cAAe,CACX1jK,KAAM,CACFu9F,MAAO,WAEXunE,kBAAmB,CACf9kK,KAAM,CACFu9F,MAAO,WAEX2O,OAAQ,CACJ3O,MAAOowC,GAEXg2B,MAAO,CACH3jK,KAAM,CACFu9F,MAAOowC,GAEXzhC,OAAQ,CACJ3O,MAAO,aAInBtqE,QAAS,CACLsqE,MAAO,YAGfriE,SAAU,CACNzkC,OAAQ,CACJmtK,QAAS,CACL5jK,KAAM,CACFu9F,MAAOowC,GAEXzhC,OAAQ,CACJ3O,MAAO,WAEXomE,MAAO,CACH3jK,KAAM,CACFu9F,MAAO,WAEX2O,OAAQ,CACJ3O,MAAO,cAKvB9/E,OAAQ,CACJsnJ,MAAO,CACH74D,OAAQ,CACJ3O,MAAO,WAEXv9F,KAAM,CACFu9F,MAAO,cAKvBsmE,WAAY,CACR33D,OAAQ,CACJ3O,MAAO,YAGfumE,mBAAoB,CAChB53D,OAAQ,CACJ3O,MAAO,WAEXtqE,QAAS,CACLsqE,MAAO,WAEX/qF,UAAW,CACPoxJ,QAAS,CACL5jK,KAAM,CACFu9F,MAAOowC,GAEXzhC,OAAQ,CACJ3O,MAAO,eAM3B6mE,QAAS,CACL5oJ,OAAQ,CACJ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,eAKxBwoJ,EAAc,YAAa,CACvBpjB,MAAO,CACHn2H,MAAO,CACH8yE,MAAO,WAEX4kE,SAAU,CACN5kE,MAAO,WAEX6kE,OAAQ,CACJ1gB,OAAQ,CACJnkD,MAAO,WAEXinE,cAAe,CACX9iB,OAAQ,CACJnkD,MAAO,WAEX+gE,QAAS,CACL/gE,MAAO,aAInBoiE,eAAgB,CACZje,OAAQ,CACJnkD,MAAO,WAEX67C,QAAS,CACL9mB,SAAU,QAEdmyC,UAAW,CACPlnE,MAAO,WAEX4lD,MAAO,CACHv+E,KAAM,CACFw8D,WAAY,UACZ4X,OAAQ,CACJz7C,MAAO,YAGf38F,MAAO,CACH28F,MAAO,WAEXs0C,KAAM,CACFt0C,MAAO,YAGf8iE,IAAK,CACDjnB,QAAS,CACL9mB,SAAU,SAGlBguC,MAAO,CACHlnB,QAAS,CACL9mB,SAAU,SAGlBuf,KAAM,CACFysB,QAAS,CACLl9B,WAAY,YAGpB6+B,OAAQ,CACJ58J,QAAS,IAEb89J,QAAS,CACL7C,QAAS,CACLl9B,WAAY,YAGpBggC,YAAa,CACT9C,QAAS,CACLl9B,WAAY,YAGpBw+B,KAAM,CACFv8J,QAAS,IAEb68J,YAAa,CACTpB,UAAW,UACXjtB,KAAM,CACFt0C,MAAO,WAEXy7C,OAAQ,CACJ6lB,YAAa,IACbx7J,QAAS,GAEb40I,UAAW,CACPe,OAAQ,CACJz7C,MAAO,UACPl6F,QAAS,MAIrBo+J,UAAW,CACP5vB,KAAM,CACFt0C,MAAO,YAGfkjE,oBAAqB,CACjB5uB,KAAM,CACFt0C,MAAO,YAGfmjE,KAAM,CACF7uB,KAAM,CACFt0C,MAAO,aAInBmnE,UAAW,CACPtjC,WAAY,WAEhBujC,aAAc,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE1C,aAAc,CACVpwB,KAAM,CACFt0C,MAAO,WAEXskD,WAAY,CACRtkD,MAAO,WAEXwkD,WAAY,CACRxkD,MAAO,WAEXmkD,OAAQ,CACJnkD,MAAO,WAEX+nD,eAAgB,CACZ/nD,MAAO,WAEX8nD,eAAgB,CACZ9nD,MAAO,WAEX9yE,MAAO,CACH8yE,MAAO,WAEXqnE,UAAW,CACPrnE,MAAO,WAEX4lD,MAAO,CACHv+E,KAAM,CACFw8D,WAAY,UACZ4X,OAAQ,CACJz7C,MAAO,YAGf38F,MAAO,CACH28F,MAAO,WAEXs0C,KAAM,CACFt0C,MAAO,cAKvB2mE,MAAO,CACHh6G,QAAS,CACLqzC,MAAO,WAEXlhF,MAAO,CACHwoJ,sBAAuB,UACvBnjB,OAAQ,CACJnkD,MAAO,WAEXskD,WAAY,CACRtkD,MAAO,WAEXwkD,WAAY,CACRxkD,MAAO,WAEXs0C,KAAM,CACFt0C,MAAO,aAInB4mE,QAAS,CACLT,cAAe,CACX1jK,KAAM,CACFu9F,MAAO,WAEXunE,kBAAmB,CACf9kK,KAAM,CACFu9F,MAAO,WAEX2O,OAAQ,CACJ3O,MAAOowC,GAEXg2B,MAAO,CACH3jK,KAAM,CACFu9F,MAAOowC,GAEXzhC,OAAQ,CACJ3O,MAAO,aAInBtqE,QAAS,CACLsqE,MAAO,YAGfriE,SAAU,CACNzkC,OAAQ,CACJmtK,QAAS,CACL5jK,KAAM,CACFu9F,MAAOowC,GAEXzhC,OAAQ,CACJ3O,MAAO,WAEXomE,MAAO,CACH3jK,KAAM,CACFu9F,MAAO,WAEX2O,OAAQ,CACJ3O,MAAO,cAKvB9/E,OAAQ,CACJsnJ,MAAO,CACH74D,OAAQ,CACJ3O,MAAO,WAEXv9F,KAAM,CACFu9F,MAAO,cAKvBsmE,WAAY,CACR33D,OAAQ,CACJ3O,MAAO,YAGfumE,mBAAoB,CAChB53D,OAAQ,CACJ3O,MAAO,WAEXtqE,QAAS,CACLsqE,MAAO,WAEX/qF,UAAW,CACPoxJ,QAAS,CACL5jK,KAAM,CACFu9F,MAAOowC,GAEXzhC,OAAQ,CACJ3O,MAAO,YAGf2O,OAAQ,CACJ3O,MAAO,cAKvB6mE,QAAS,CACL5oJ,OAAQ,CACJ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,eAKxBwoJ,EAAc,OAAQ,CACdpjB,MAAO,CACPn2H,MAAO,CACH8yE,MAAO,WAEX4kE,SAAU,CACN5kE,MAAO,WAEX6kE,OAAQ,CACJ1gB,OAAQ,CACJnkD,MAAO,WAEXinE,cAAe,CACX9iB,OAAQ,CACJnkD,MAAO,WAEX+gE,QAAS,CACL/gE,MAAO,aAInBoiE,eAAgB,CACZje,OAAQ,CACJnkD,MAAO,WAEXknE,UAAW,CACPlnE,MAAO,WAEX4lD,MAAO,CACHv+E,KAAM,CACFw8D,WAAY,cACZ4X,OAAQ,CACJz7C,MAAO,YAGf38F,MAAO,CACH28F,MAAO,WAEXs0C,KAAM,CACFt0C,MAAO,YAGf2iE,YAAa,CACTpB,UAAW,UACXjtB,KAAM,CACFt0C,MAAO,YAGfqiE,KAAM,CACFv8J,QAAS,IAEbo+J,UAAW,CACP5vB,KAAM,CACFt0C,MAAO,YAGfkjE,oBAAqB,CACjB5uB,KAAM,CACFt0C,MAAO,YAGf67C,QAAS,CACL9mB,SAAU,QAEd0mB,OAAQ,CACJ6lB,YAAa,IAGrB8F,aAAc,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjF1C,aAAc,CACVpwB,KAAM,CACFt0C,MAAO,WAEXmkD,OAAQ,CACJnkD,MAAO,WAEX8nD,eAAgB,CACZ9nD,MAAO,WAEX+nD,eAAgB,CACZ/nD,MAAO,WAEX9yE,MAAO,CACH8yE,MAAO,WAEXqnE,UAAW,CACPrnE,MAAO,WAEX4lD,MAAO,CACHv+E,KAAM,CACFw8D,WAAY,cACZ4X,OAAQ,CACJz7C,MAAO,YAGf38F,MAAO,CACH28F,MAAO,WAEXs0C,KAAM,CACFt0C,MAAO,cAKvB2mE,MAAO,CACHh6G,QAAS,CACLqzC,MAAO,WAEXlhF,MAAO,CACHwoJ,sBAAuB,UAEvBnjB,OAAQ,CACJnkD,MAAO,WAEXskD,WAAY,CACRtkD,MAAO,WAEXwkD,WAAY,CACRxkD,MAAO,WAEXs0C,KAAM,CACFt0C,MAAO,aAInB4mE,QAAS,CACLT,cAAe,CACX1jK,KAAM,CACFu9F,MAAO,WAEXunE,kBAAmB,CACf9kK,KAAM,CACFu9F,MAAO,WAEX2O,OAAQ,CACJ3O,MAAOowC,GAEXg2B,MAAO,CACH3jK,KAAM,CACFu9F,MAAOowC,GAEXzhC,OAAQ,CACJ3O,MAAO,aAInBtqE,QAAS,CACLsqE,MAAO,YAGfriE,SAAU,CACNzkC,OAAQ,CACJmtK,QAAS,CACL5jK,KAAM,CACFu9F,MAAOowC,GAEXzhC,OAAQ,CACJ3O,MAAO,WAEXomE,MAAO,CACH3jK,KAAM,CACFu9F,MAAO,WAEX2O,OAAQ,CACJ3O,MAAO,cAKvB9/E,OAAQ,CACJsnJ,MAAO,CACH74D,OAAQ,CACJ3O,MAAO,WAEXv9F,KAAM,CACFu9F,MAAO,cAKvBsmE,WAAY,CACR33D,OAAQ,CACJ3O,MAAO,YAGfumE,mBAAoB,CAChB53D,OAAQ,CACJ3O,MAAO,WAEXtqE,QAAS,CACLsqE,MAAO,WAEX/qF,UAAW,CACPoxJ,QAAS,CACL5jK,KAAM,CACFu9F,MAAOowC,GAEXzhC,OAAQ,CACJ3O,MAAO,YAGf2O,OAAQ,CACJ3O,MAAO,cAKvB6mE,QAAS,CACL5oJ,OAAQ,CACJ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,eAMvBwoJ,EAAc,WAAY,CACxBpjB,MAAO,CACFn2H,MAAO,CACH8yE,MAAO,WAEX4kE,SAAU,CACN5kE,MAAO,WAEX6kE,OAAQ,CACJ1gB,OAAQ,CACJnkD,MAAO,WAEXinE,cAAe,CACX9iB,OAAQ,CACJnkD,MAAO,WAEX+gE,QAAS,CACL/gE,MAAO,aAInBoiE,eAAgB,CACZje,OAAQ,CACJnkD,MAAO,WAEXknE,UAAW,CACPlnE,MAAO,WAEX4lD,MAAO,CACHv+E,KAAM,CACFw8D,WAAY,cACZ4X,OAAQ,CACJz7C,MAAO,YAGf38F,MAAO,CACH28F,MAAO,WAEXs0C,KAAM,CACFt0C,MAAO,YAGf2iE,YAAa,CACTpB,UAAW,UACXjtB,KAAM,CACFt0C,MAAO,YAGfqiE,KAAM,CACFv8J,QAAS,IAEbo+J,UAAW,CACP5vB,KAAM,CACFt0C,MAAO,YAGfkjE,oBAAqB,CACjB5uB,KAAM,CACFt0C,MAAO,YAGf67C,QAAS,CACL9mB,SAAU,QAEd0mB,OAAQ,CACJ6lB,YAAa,IAGrB8F,aAAc,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE1C,aAAc,CACVpwB,KAAM,CACFt0C,MAAO,WAEXmkD,OAAQ,CACJnkD,MAAO,WAEX8nD,eAAgB,CACZ9nD,MAAO,WAEX+nD,eAAgB,CACZ/nD,MAAO,WAEX9yE,MAAO,CACH8yE,MAAO,WAEXqnE,UAAW,CACPrnE,MAAO,WAEX4lD,MAAO,CACHv+E,KAAM,CACFw8D,WAAY,cACZ4X,OAAQ,CACJz7C,MAAO,YAGf38F,MAAO,CACH28F,MAAO,WAEXs0C,KAAM,CACFt0C,MAAO,cAKvB2mE,MAAO,CACHh6G,QAAS,CACLqzC,MAAO,WAEXlhF,MAAO,CACHwoJ,sBAAuB,UAEvBnjB,OAAQ,CACJnkD,MAAO,WAEXskD,WAAY,CACRtkD,MAAO,WAEXwkD,WAAY,CACRxkD,MAAO,WAEXs0C,KAAM,CACFt0C,MAAO,aAInB4mE,QAAS,CACLT,cAAe,CACX1jK,KAAM,CACFu9F,MAAO,WAEXunE,kBAAmB,CACf9kK,KAAM,CACFu9F,MAAO,WAEX2O,OAAQ,CACJ3O,MAAOowC,GAEXg2B,MAAO,CACH3jK,KAAM,CACFu9F,MAAOowC,GAEXzhC,OAAQ,CACJ3O,MAAO,aAInBtqE,QAAS,CACLsqE,MAAO,YAGfriE,SAAU,CACNzkC,OAAQ,CACJmtK,QAAS,CACL5jK,KAAM,CACFu9F,MAAOowC,GAEXzhC,OAAQ,CACJ3O,MAAO,WAEXomE,MAAO,CACH3jK,KAAM,CACFu9F,MAAO,WAEX2O,OAAQ,CACJ3O,MAAO,cAKvB9/E,OAAQ,CACJsnJ,MAAO,CACH74D,OAAQ,CACJ3O,MAAO,WAEXv9F,KAAM,CACFu9F,MAAO,cAKvBsmE,WAAY,CACR33D,OAAQ,CACJ3O,MAAO,YAGfumE,mBAAoB,CAChB53D,OAAQ,CACJ3O,MAAO,WAEXtqE,QAAS,CACLsqE,MAAO,WAEX/qF,UAAW,CACPoxJ,QAAS,CACL5jK,KAAM,CACFu9F,MAAOowC,GAEXzhC,OAAQ,CACJ3O,MAAO,YAGf2O,OAAQ,CACJ3O,MAAO,cAKvB6mE,QAAS,CACL5oJ,OAAQ,CACJ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,eAKxBwoJ,EAAc,gBAAiB,CAC5BpjB,MAAO,CACFn2H,MAAO,CACH8yE,MAAO,QAEX4kE,SAAU,CACN5kE,MAAO,QAEX6kE,OAAQ,CACJ1gB,OAAQ,CACJnkD,MAAO,QAEXinE,cAAe,CACX9iB,OAAQ,CACJnkD,MAAO,WAEX+gE,QAAS,CACL/gE,MAAO,aAInBoiE,eAAgB,CACZje,OAAQ,CACJnkD,MAAO,QAEXknE,UAAW,CACPlnE,MAAO,QAEX4lD,MAAO,CACHv+E,KAAM,CACFw8D,WAAY,cACZ4X,OAAQ,CACJz7C,MAAO,YAGf38F,MAAO,CACH28F,MAAO,QAEXs0C,KAAM,CACFt0C,MAAO,YAGf2iE,YAAa,CACTpB,UAAW,UACXjtB,KAAM,CACFt0C,MAAO,YAGfqiE,KAAM,CACFv8J,QAAS,IAEbo+J,UAAW,CACP5vB,KAAM,CACFt0C,MAAO,YAGfkjE,oBAAqB,CACjB5uB,KAAM,CACFt0C,MAAO,YAGf67C,QAAS,CACL9mB,SAAU,QAEd0mB,OAAQ,CACJ6lB,YAAa,IAGrB6F,UAAW,CACPtjC,WAAY,WAEhBujC,aAAc,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE1C,aAAc,CACVpwB,KAAM,CACFt0C,MAAO,WAEXmkD,OAAQ,CACJnkD,MAAO,QAEX8nD,eAAgB,CACZ9nD,MAAO,WAEX+nD,eAAgB,CACZ/nD,MAAO,WAEX9yE,MAAO,CACH8yE,MAAO,QAEXqnE,UAAW,CACPrnE,MAAO,WAEX4lD,MAAO,CACHv+E,KAAM,CACFw8D,WAAY,cACZ4X,OAAQ,CACJz7C,MAAO,YAGf38F,MAAO,CACH28F,MAAO,QAEXs0C,KAAM,CACFt0C,MAAO,cAKvB2mE,MAAO,CACHh6G,QAAS,CACLqzC,MAAO,WAEXlhF,MAAO,CACHwoJ,sBAAuB,UAEvBnjB,OAAQ,CACJnkD,MAAO,QAEXskD,WAAY,CACRtkD,MAAO,QAEXwkD,WAAY,CACRxkD,MAAO,QAEXs0C,KAAM,CACFt0C,MAAO,UAInB4mE,QAAS,CACLT,cAAe,CACX1jK,KAAM,CACFu9F,MAAO,WAEXunE,kBAAmB,CACf9kK,KAAM,CACFu9F,MAAO,WAEX2O,OAAQ,CACJ3O,MAAOowC,GAEXg2B,MAAO,CACH3jK,KAAM,CACFu9F,MAAOowC,GAEXzhC,OAAQ,CACJ3O,MAAO,aAInBtqE,QAAS,CACLsqE,MAAO,SAGfriE,SAAU,CACNzkC,OAAQ,CACJmtK,QAAS,CACL5jK,KAAM,CACFu9F,MAAOowC,GAEXzhC,OAAQ,CACJ3O,MAAO,QAEXomE,MAAO,CACH3jK,KAAM,CACFu9F,MAAO,QAEX2O,OAAQ,CACJ3O,MAAO,WAKvB9/E,OAAQ,CACJsnJ,MAAO,CACH74D,OAAQ,CACJ3O,MAAO,QAEXv9F,KAAM,CACFu9F,MAAO,WAKvBsmE,WAAY,CACR33D,OAAQ,CACJ3O,MAAO,SAGfumE,mBAAoB,CAChB53D,OAAQ,CACJ3O,MAAO,WAEXtqE,QAAS,CACLsqE,MAAO,QAEX/qF,UAAW,CACPoxJ,QAAS,CACL5jK,KAAM,CACFu9F,MAAOowC,GAEXzhC,OAAQ,CACJ3O,MAAO,SAGf2O,OAAQ,CACJ3O,MAAO,WAKvB6mE,QAAS,CACL5oJ,OAAQ,CACJ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,eAKxB,WACI,IAAI8nJ,EAAO,UACP2B,EAAW,UACXC,EAAiB,UACjBC,EAAO,UAEP5B,EAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAEjE6B,EAAU7B,EAAO,GACjB8B,EAAgB13B,EAEpB,SAAS23B,IACL,MAAO,CACH1gG,KAAM,CACFw8D,WAAY,UACZ4X,OAAQ,CACJz7C,MAAO,YAGf38F,MAAO,CACH28F,MAAO,WAEXs0C,KAAM,CACFt0C,MAAO4nE,GAGnB,CAEAnB,EAAc,QAAS,CACnBpjB,MAAO,CACHn2H,MAAO,CACH8yE,MAAO+lE,GAEXnB,SAAU,CACN5kE,MAAO+lE,GAEXlB,OAAQ,CACJ1gB,OAAQ,CACJnkD,MAAO+lE,GAEXkB,cAAe,CACX9iB,OAAQ,CACJnkD,MAAO0nE,GAEX3G,QAAS,CACL/gE,MAAO0nE,KAInBtF,eAAgB,CACZje,OAAQ,CACJnkD,MAAO+lE,GAEXmB,UAAW,CACPlnE,MAAO+lE,GAEXngB,MAAOmiB,IACPpF,YAAa,CACTpB,UAAWqG,EACXtzB,KAAM,CACFt0C,MAAO2nE,IAGftF,KAAM,CACFv8J,QAAS,IAEbo+J,UAAW,CACP5vB,KAAM,CACFt0C,MAAO4nE,IAGf1E,oBAAqB,CACjB5uB,KAAM,CACFt0C,MAAO4nE,IAGf/rB,QAAS,CACL9mB,SAAU,QAEd0mB,OAAQ,CACJ6lB,YAAa,IAGrB8F,aAAcpB,EACdtB,aAAc,CACVpwB,KAAM,CACFt0C,MAAO4nE,GAEXzjB,OAAQ,CACJnkD,MAAO+lE,GAEXje,eAAgB,CACZ9nD,MAvFC,WAyFL+nD,eAAgB,CACZ/nD,MAAO4nE,GAEX16I,MAAO,CACH8yE,MAAO+lE,GAEXsB,UAAW,CACPrnE,MAAO0nE,GAEX9hB,MAAOmiB,MAGfpB,MAAO,CACHh6G,QAAS,CACLqzC,MAAO6nE,GAEX/oJ,MAAO,CACHwoJ,sBAAuBM,EACvBzjB,OAAQ,CACJnkD,MAAO+lE,GAEXzhB,WAAY,CACRtkD,MAAO+lE,GAEXvhB,WAAY,CACRxkD,MAAO+lE,GAEXzxB,KAAM,CACFt0C,MAAO+lE,KAInBa,QAAS,CACLT,cAAe,CACX1jK,KAAM,CACFu9F,MAAO6nE,GAEXN,kBAAmB,CACf9kK,KAAM,CACFu9F,MAAO+lE,GAEXp3D,OAAQ,CACJ3O,MAAO8nE,GAEX1B,MAAO,CACH3jK,KAAM,CACFu9F,MAAO8nE,GAEXn5D,OAAQ,CACJ3O,MAAO+lE,KAInBrwI,QAAS,CACLsqE,MAAO+lE,IAGfpoI,SAAU,CACNzkC,OAAQ,CACJmtK,QAAS,CACL5jK,KAAM,CACFu9F,MAAO8nE,GAEXn5D,OAAQ,CACJ3O,MAAO2nE,GAEXvB,MAAO,CACH3jK,KAAM,CACFu9F,MAAO2nE,GAEXh5D,OAAQ,CACJ3O,MAAO2nE,MAKvBznJ,OAAQ,CACJsnJ,MAAO,CACH74D,OAAQ,CACJ3O,MAAO2nE,GAEXllK,KAAM,CACFu9F,MAAO2nE,MAKvBrB,WAAY,CACR33D,OAAQ,CACJ3O,MAAO2nE,IAGfpB,mBAAoB,CAChB53D,OAAQ,CACJ3O,MAAO2nE,GAEXjyI,QAAS,CACLsqE,MAAO2nE,GAEX1yJ,UAAW,CACPoxJ,QAAS,CACL5jK,KAAM,CACFu9F,MAAO8nE,GAEXn5D,OAAQ,CACJ3O,MAAO2nE,IAGfh5D,OAAQ,CACJ3O,MAAO2nE,MAKvBd,QAAS,CACL5oJ,OAAQ6oJ,EAAKd,EA1MF,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,cA6M9E,CApND,GAsNA,WACI,IAAID,EAAO,UACP2B,EAAW,UACXC,EAAiB,UACjBC,EAAO,UAEP5B,EAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAEjE6B,EAAU7B,EAAO,GACjB8B,EAAgB13B,EAEpB,SAAS23B,IACL,MAAO,CACH1gG,KAAM,CACFw8D,WAAY,UACZ4X,OAAQ,CACJz7C,MAAO,YAGf38F,MAAO,CACH28F,MAAO,WAEXs0C,KAAM,CACFt0C,MAAO4nE,GAGnB,CAEAnB,EAAc,YAAa,CACvBpjB,MAAO,CACHn2H,MAAO,CACH8yE,MAAO+lE,GAEXnB,SAAU,CACN5kE,MAAO+lE,GAEXlB,OAAQ,CACJ1gB,OAAQ,CACJnkD,MAAO+lE,GAEXkB,cAAe,CACX9iB,OAAQ,CACJnkD,MAAO0nE,GAEX3G,QAAS,CACL/gE,MAAO0nE,KAInBtF,eAAgB,CACZje,OAAQ,CACJnkD,MAAO+lE,GAEXmB,UAAW,CACPlnE,MAAO+lE,GAEXngB,MAAOmiB,IACPpF,YAAa,CACTpB,UAAWqG,EACXtzB,KAAM,CACFt0C,MAAO2nE,IAGftF,KAAM,CACFv8J,QAAS,IAEbo+J,UAAW,CACP5vB,KAAM,CACFt0C,MAAO4nE,IAGf1E,oBAAqB,CACjB5uB,KAAM,CACFt0C,MAAO4nE,IAGf/rB,QAAS,CACL9mB,SAAU,QAEd0mB,OAAQ,CACJ6lB,YAAa,IAGrB8F,aAAcpB,EACdtB,aAAc,CACVpwB,KAAM,CACFt0C,MAAO4nE,GAEXzjB,OAAQ,CACJnkD,MAAO+lE,GAEXje,eAAgB,CACZ9nD,MAvFC,WAyFL+nD,eAAgB,CACZ/nD,MAAO4nE,GAEX16I,MAAO,CACH8yE,MAAO+lE,GAEXsB,UAAW,CACPrnE,MAAO0nE,GAEX9hB,MAAOmiB,MAGfpB,MAAO,CACHh6G,QAAS,CACLqzC,MAAO6nE,GAEX/oJ,MAAO,CACHwoJ,sBAAuBM,EACvBzjB,OAAQ,CACJnkD,MAAO+lE,GAEXzhB,WAAY,CACRtkD,MAAO+lE,GAEXvhB,WAAY,CACRxkD,MAAO+lE,GAEXzxB,KAAM,CACFt0C,MAAO+lE,KAInBa,QAAS,CACLT,cAAe,CACX1jK,KAAM,CACFu9F,MAAO6nE,GAEXN,kBAAmB,CACf9kK,KAAM,CACFu9F,MAAO+lE,GAEXp3D,OAAQ,CACJ3O,MAAO8nE,GAEX1B,MAAO,CACH3jK,KAAM,CACFu9F,MAAO8nE,GAEXn5D,OAAQ,CACJ3O,MAAO+lE,KAInBrwI,QAAS,CACLsqE,MAAO+lE,IAGfpoI,SAAU,CACNzkC,OAAQ,CACJmtK,QAAS,CACL5jK,KAAM,CACFu9F,MAAO8nE,GAEXn5D,OAAQ,CACJ3O,MAAO2nE,GAEXvB,MAAO,CACH3jK,KAAM,CACFu9F,MAAO2nE,GAEXh5D,OAAQ,CACJ3O,MAAO2nE,MAKvBznJ,OAAQ,CACJsnJ,MAAO,CACH74D,OAAQ,CACJ3O,MAAO2nE,GAEXllK,KAAM,CACFu9F,MAAO2nE,MAKvBrB,WAAY,CACR33D,OAAQ,CACJ3O,MAAO2nE,IAGfpB,mBAAoB,CAChB53D,OAAQ,CACJ3O,MAAO2nE,GAEXjyI,QAAS,CACLsqE,MAAO2nE,GAEX1yJ,UAAW,CACPoxJ,QAAS,CACL5jK,KAAM,CACFu9F,MAAO8nE,GAEXn5D,OAAQ,CACJ3O,MAAO2nE,IAGfh5D,OAAQ,CACJ3O,MAAO2nE,MAKvBd,QAAS,CACL5oJ,OAAQ6oJ,EAAKd,EA1MF,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,cA6M9E,CApND,GAsNI,WACA,IAAID,EAAO,UACP2B,EAAW,UACXC,EAAiB,UACjBC,EAAO,UAEP5B,EAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAEjE6B,EAAU7B,EAAO,GACjB8B,EAAgB13B,EAEpB,SAAS23B,IACL,MAAO,CACH1gG,KAAM,CACFw8D,WAAY,UACZ4X,OAAQ,CACJz7C,MAAO,YAGf38F,MAAO,CACH28F,MAAO,WAEXs0C,KAAM,CACFt0C,MAAO4nE,GAGnB,CAEAnB,EAAc,OAAQ,CAClBpjB,MAAO,CACHn2H,MAAO,CACH8yE,MAAO+lE,GAEXnB,SAAU,CACN5kE,MAAO+lE,GAEXlB,OAAQ,CACJ1gB,OAAQ,CACJnkD,MAAO+lE,GAEXkB,cAAe,CACX9iB,OAAQ,CACJnkD,MAAO0nE,GAEX3G,QAAS,CACL/gE,MAAO0nE,KAInBtF,eAAgB,CACZje,OAAQ,CACJnkD,MAAO+lE,GAEXmB,UAAW,CACPlnE,MAAO+lE,GAEXngB,MAAOmiB,IACPpF,YAAa,CACTpB,UAAWqG,EACXtzB,KAAM,CACFt0C,MAAO2nE,IAGftF,KAAM,CACFv8J,QAAS,IAEbo+J,UAAW,CACP5vB,KAAM,CACFt0C,MAAO4nE,IAGf1E,oBAAqB,CACjB5uB,KAAM,CACFt0C,MAAO4nE,IAGf/rB,QAAS,CACL9mB,SAAU,QAEd0mB,OAAQ,CACJ6lB,YAAa,IAGrB8F,aAAcpB,EACdtB,aAAc,CACVpwB,KAAM,CACFt0C,MAAO4nE,GAEXzjB,OAAQ,CACJnkD,MAAO+lE,GAEXje,eAAgB,CACZ9nD,MAvFC,WAyFL+nD,eAAgB,CACZ/nD,MAAO4nE,GAEX16I,MAAO,CACH8yE,MAAO+lE,GAEXsB,UAAW,CACPrnE,MAAO+lE,GAEXngB,MAAOmiB,MAGfpB,MAAO,CACHh6G,QAAS,CACLqzC,MAAO6nE,GAEX/oJ,MAAO,CACHwoJ,sBAAuBM,EACvBzjB,OAAQ,CACJnkD,MAAO+lE,GAEXzhB,WAAY,CACRtkD,MAAO+lE,GAEXvhB,WAAY,CACRxkD,MAAO+lE,GAEXzxB,KAAM,CACFt0C,MAAO+lE,KAInBa,QAAS,CACLT,cAAe,CACX1jK,KAAM,CACFu9F,MAAO6nE,GAEXN,kBAAmB,CACf9kK,KAAM,CACFu9F,MAAO+lE,GAEXp3D,OAAQ,CACJ3O,MAAO8nE,GAEX1B,MAAO,CACH3jK,KAAM,CACFu9F,MAAO8nE,GAEXn5D,OAAQ,CACJ3O,MAAO+lE,KAInBrwI,QAAS,CACLsqE,MAAO+lE,IAGfpoI,SAAU,CACNzkC,OAAQ,CACJmtK,QAAS,CACL5jK,KAAM,CACFu9F,MAAO8nE,GAEXn5D,OAAQ,CACJ3O,MAAO2nE,GAEXvB,MAAO,CACH3jK,KAAM,CACFu9F,MAAO2nE,GAEXh5D,OAAQ,CACJ3O,MAAO2nE,MAKvBznJ,OAAQ,CACJsnJ,MAAO,CACH74D,OAAQ,CACJ3O,MAAO2nE,GAEXllK,KAAM,CACFu9F,MAAO2nE,MAKvBrB,WAAY,CACR33D,OAAQ,CACJ3O,MAAO2nE,IAGfpB,mBAAoB,CAChB53D,OAAQ,CACJ3O,MAAO2nE,GAEXjyI,QAAS,CACLsqE,MAAO2nE,GAEX1yJ,UAAW,CACPoxJ,QAAS,CACL5jK,KAAM,CACFu9F,MAAO8nE,GAEXn5D,OAAQ,CACJ3O,MAAO2nE,IAGfh5D,OAAQ,CACJ3O,MAAO2nE,MAKvBd,QAAS,CACL5oJ,OAAQ6oJ,EAAKd,EA1MF,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,cA6M9E,CApNG,GA0NAS,EAAc,aAAc,CACxBpjB,MAAO,CAAsB,EAC7BsjB,MAAO,CAAsB,EAC7BC,QAAS,CAAsB,EAC/BC,QAAS,CACL5oJ,OAAQ6oJ,EARH,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAClD,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,eAW3Ev/J,EAAOygK,KAAOzgK,EAAO,cAWrBk/J,EAAc,eAAgB,CAC1BpjB,MAAO,CAAsB,EAC7BsjB,MAAO,CACHh6G,QAAS,CACLqzC,OARRgmE,EAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,YAEhD,IAQblnJ,MAAO,CACHwoJ,sBAZD,qBAaCnjB,OAAQ,CACJnkD,MAfZ+lE,EAAO,WAiBCzhB,WAAY,CACRtkD,MAAO+lE,GAEXvhB,WAAY,CACRxkD,MAAO+lE,GAEXzxB,KAAM,CACFt0C,MAAO+lE,KAInBa,QAAS,CAAsB,EAC/BC,QAAS,CACL5oJ,OAAQ6oJ,EAAKd,EA3BF,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,cAwClF,CA1wHD,CA0wHGn2L,OAAOH,MAAM+G,QAUF/G,OASd,SAAUgC,GAGV7B,OAAOH,MAAM8pB,QAAU3pB,OAAOH,MAAM8pB,SAAW,CAAC,EAChD,IAAIA,EAAU9pB,MAAM8pB,QAChB7iB,EAAQ6iB,EAAQ7iB,MAChBytD,EAAW5qC,EAAQ4qC,SACnB6jI,EAAmBzuK,EAAQ62I,UAC3BlqC,EAAY8hE,EAAiB9hE,UAC7B0pC,EAAYo4B,EAAiBp4B,UAC7B7xF,EAAQiqH,EAAiBjqH,MACzBwxF,EAAOy4B,EAAiBz4B,KACxBxvE,EAASioG,EAAiBjoG,OAC1BC,EAAMgoG,EAAiBhoG,IACvBC,EAAS+nG,EAAiB/nG,OAC1B/lE,EAAO8tK,EAAiB9tK,KACxBi2I,EAAQ63B,EAAiB73B,MACzBd,EAAS24B,EAAiB34B,OAC1Bl7J,EAAI6zL,EAAiB7zL,EACrBkQ,EAAI2jL,EAAiB3jL,EACrB+V,EAAQ4tK,EAAiB5tK,MACzBg1I,EAAQ44B,EAAiB54B,MACzBsB,EAAkBs3B,EAAiBt3B,gBACnCp2I,EAAM0tK,EAAiB1tK,IACvBwxD,EAAQk8G,EAAiBl8G,MACzB2jF,EAAoBu4B,EAAiBv4B,kBACrCP,EAAM84B,EAAiB94B,IACvBtpC,EAAUrsG,EAAQqsG,QAClBtnG,EAAS/E,EAAQ+E,OACjBvsB,EAAUwnB,EAAQxnB,QAClB+mK,EAAev/I,EAAQu/I,aACvBluC,EAAQrxG,EAAQqxG,MAChBirC,EAAMt8I,EAAQs8I,IACdrE,EAAmBj4I,EAAQi4I,iBAC3BsB,EAAoBv5I,EAAQu5I,kBAC5Bp7J,EAAW6hB,EAAQ7hB,SACnB6sB,EAAUhL,EAAQgL,QAClBvsB,EAAauhB,EAAQvhB,WACrB8vH,EAAiBvuG,EAAQuuG,eACzB8pC,EAAWr4I,EAAQq4I,SACnBxkJ,EAAYmM,EAAQnM,UACpB9V,EAAaiiB,EAAQjiB,WACrB85B,EAAO7X,EAAQ6X,KACfg2F,EAAe7tG,EAAQ6tG,aACvBs4C,EAAUnmJ,EAAQmmJ,QAClBvN,EAAc54I,EAAQ44I,YACtBqK,EAAejjJ,EAAQijJ,aACvBxK,EAAaz4I,EAAQy4I,WACrBksB,EAAiB3kK,EAAQ2kK,eACzBj1I,EAAS1vB,EAAQ0vB,OACjB4oH,EAAat4I,EAAQs4I,WACrB2c,EAAej1J,EAAQi1J,aACvBzS,EAAaxiJ,EAAQwiJ,WACrB0E,EAAQlnJ,EAAQknJ,MAChBr7J,EAAQmU,EAAQnU,MAChBkiH,EAAa/tG,EAAQ+tG,WACrBm3D,EAAallK,EAAQklK,WACrBtxJ,GAAO5T,EAAQ4T,KACfg7F,GAAgB5uG,EAAQ4uG,cACxBsrC,GAAgBl6I,EAAQk6I,cACxB9rC,GAAMpuG,EAAQouG,IACdI,GAAaxuG,EAAQwuG,WACrB07C,GAAWlqJ,EAAQkqJ,SACnBl7C,GAAehvG,EAAQgvG,aACvBl2H,GAAU5C,MAAM4C,QAChBmnB,GAAU/pB,MAAM+pB,QAChB6jH,GAAO7jH,GAAQ6jH,KACfzyF,GAAYpxB,GAAQoxB,UACpBk6F,GAAmBtrH,GAAQsrH,iBAC3BvF,GAAQ/lH,GAAQ+lH,MAChBtQ,GAASz1G,GAAQy1G,OACjBiP,GAAY1kH,GAAQ0kH,UACpBpc,GAAQryH,MAAMqyH,MACd2O,GAAWhhI,MAAMghI,SACjBw3D,GAAgBx3D,GAAS7F,MACzBs9D,GAAiBz3D,GAASxB,OAC1BxsF,GAAYguF,GAAShuF,UAErB0lJ,GAAYzxL,EAAM7E,OAAO,CACzBoF,KAAM,SAASg9B,GAEXnlC,KAAKs5L,MAAQn0J,EACbnlC,KAAKmH,QAAUg+B,EAAKh+B,OACxB,EAEAuB,MAAO,SAASyzH,GACZ,IAAIh3F,EAAOnlC,KAAKs5L,MAGhB,OAFYn0J,EAAKq8I,YAAcr8I,EAAKq8I,YAAYrlD,GAASh3F,EAAK6kJ,SAAS7tD,EAG3E,EAEA0+C,KAAM,SAAS9+J,EAAMuiB,EAAIo8I,GAGrB,YAFc,IAAVA,IAAoBA,GAAQ,GAEzB16K,KAAKs5L,MAAMze,KAAK9+J,EAAMuiB,EAAIo8I,EACrC,EAEAzmH,MAAO,WACH,OAAOj0D,KAAKs5L,MAAMrlI,OACtB,EAEAgoH,WAAY,WACR,OAAOj8K,KAAKs5L,MAAMrd,YACtB,IAGJ,SAASsd,GAAen3L,EAAMk2K,GAC1B,IAAK,IAAI1uK,EAAM,EAAGA,EAAM0uK,EAAK9wK,OAAQoC,IACjC,GAAI0uK,EAAK1uK,GAAKzC,QAAQ/E,OAASA,EAE3B,OADAk2K,EAAK1uK,GAAKgzK,qBACH,IAAIyc,GAAU/gB,EAAK1uK,GAGtC,CAEA,IAAI4vL,GAAY74L,MAAMiH,MAAM7E,OAAO,CAC/BoF,KAAM,SAASymF,GACX5uF,KAAKihJ,OAASryD,EAAKqyD,OACnBjhJ,KAAKy5L,aAAe7qG,EAAK8qG,eAAez4C,OACxCjhJ,KAAK25L,MAAQ/qG,CACjB,EAEA2qG,eAAgB,SAASn3L,GACrB,OAAOm3L,GAAen3L,EAAMpC,KAAK25L,MAAMrhB,KAC3C,IAGAshB,GAAgBhyL,EAAM7E,OAAO,CAC7BoF,KAAM,SAASgwK,GAEXn4K,KAAK65L,UAAY1hB,EACjBn4K,KAAKihJ,OAASk3B,EAASl3B,OACvBjhJ,KAAK85L,iBAAmB3hB,EAAS4hB,SACrC,IAGJ,SAASC,GAAa3gL,GAIlB,IAHA,IAAI7R,EAAS6R,EAAO7R,OAChB8T,EAAQ,EAEH/T,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAI2jJ,EAAM7xI,EAAO9R,GACb8tD,EAAS61F,IACT5vI,GAER,CAEA,OAAOA,CACX,CAEA,IAAI2+K,GAAa,CACbvjL,IAAK,SAAS2C,GAIV,IAHA,IAAI7R,EAAS6R,EAAO7R,OAChBkP,EAAM0gH,EAED7vH,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAImB,EAAQ2Q,EAAO9R,GACf8tD,EAAS3sD,KACTgO,EAAMrT,KAAKqT,IAAIA,EAAKhO,GAE5B,CAEA,OAAOgO,IAAQ0gH,EAAY/9G,EAAO,GAAK3C,CAC3C,EAEAyC,IAAK,SAASE,GAIV,IAHA,IAAI7R,EAAS6R,EAAO7R,OAChB2R,EAAM2nJ,EAEDv5J,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAImB,EAAQ2Q,EAAO9R,GACf8tD,EAAS3sD,KACTyQ,EAAM9V,KAAK8V,IAAIA,EAAKzQ,GAE5B,CAEA,OAAOyQ,IAAQ2nJ,EAAYznJ,EAAO,GAAKF,CAC3C,EAEAi8C,IAAK,SAAS/7C,GAIV,IAHA,IAAI7R,EAAS6R,EAAO7R,OAChB4tD,EAAM,EAED7tD,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAImB,EAAQ2Q,EAAO9R,GACf8tD,EAAS3sD,KACT0sD,GAAO1sD,EAEf,CAEA,OAAO0sD,CACX,EAEA8kI,UAAW,SAAS7gL,GAChB,IAAIvC,EAAS,KAMb,OAJIkjL,GAAa3gL,KACbvC,EAASmjL,GAAW7kI,IAAI/7C,IAGrBvC,CACX,EAEAwE,MAAO,SAASjC,GAIZ,IAHA,IAAI7R,EAAS6R,EAAO7R,OAChB8T,EAAQ,EAEH/T,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAImB,EAAQ2Q,EAAO9R,GACL,OAAVmB,GAAkBouH,EAAQpuH,IAC1B4S,GAER,CAEA,OAAOA,CACX,EAEA6+K,IAAK,SAAS9gL,GACV,IAAIiC,EAAQ0+K,GAAa3gL,GACrBvC,EAASuC,EAAO,GAMpB,OAJIiC,EAAQ,IACRxE,EAASmjL,GAAW7kI,IAAI/7C,GAAUiC,GAG/BxE,CACX,EAEA5M,MAAO,SAASmP,GAGZ,IAFA,IAAI7R,EAAS6R,EAAO7R,OAEXD,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAImB,EAAQ2Q,EAAO9R,GACnB,GAAc,OAAVmB,GAAkBouH,EAAQpuH,GAC1B,OAAOA,CAEf,CAEA,OAAO2Q,EAAO,EAClB,GAGJ,SAAS+gL,GAASr0K,EAAOs/I,GACrB,OAAY,OAARA,EACOA,EAGD71I,EAAOzJ,GAAO,EACjBkK,CAAIo1I,EACf,CAEA,IAAIg1B,GAAezyL,EAAM7E,OAAO,CAC5BoF,KAAM,WAEFnI,KAAKs6L,aAAe,CAAC,EACrBt6L,KAAKu6L,aAAe,CAAC,EACrBv6L,KAAKw6L,WAAa,CAAC,EACnBx6L,KAAKy6L,gBAAkB,CAAC,CAC5B,EAEAtjK,SAAU,SAASs/J,EAAaiE,EAAaC,GACzC,IAAI1nE,EAAWjzH,UACK,IAAhB06L,IAA0BA,EAAc,CAAEzrH,SAC1B,IAAhB0rH,IAA0BA,EAAc,CAAC,GAE7C,IAAK,IAAIpzL,EAAI,EAAGA,EAAIkvL,EAAYjvL,OAAQD,IAAK,CACzC,IAAI7B,EAAO+wL,EAAYlvL,GAEvB0rH,EAASqnE,aAAa50L,GAAQg1L,EAC9BznE,EAASsnE,aAAa70L,GAAQi1L,EAC9B1nE,EAASunE,WAAW90L,GAAQutH,EAAS2nE,WAAWF,EAAa,MAC7DznE,EAASwnE,gBAAgB/0L,GAAQutH,EAAS2nE,WAAWF,OAAa/7C,EACtE,CACJ,EAEAk8C,gBAAiB,SAAS5rJ,GACtB,OAAOjvC,KAAK06L,YAAYzrJ,GAAQ7wB,OAAOpe,KAAK26L,YAAY1rJ,GAC5D,EAEAyrJ,YAAa,SAASzrJ,GAClB,OAAOjvC,KAAKs6L,aAAarrJ,EAAOvpC,OAAS,CAAEupE,EAC/C,EAEA0rH,YAAa,SAAS1rJ,GAClB,OAAOjvC,KAAKu6L,aAAatrJ,EAAOvpC,OAAS,CAAEupE,EAC/C,EAEA6rH,UAAW,SAAS7rJ,EAAQ8rJ,EAAS5rJ,GACjC,IAKI1f,EAAQ/mB,EALR0F,EAAO6gC,EAAO7gC,KACdu/J,EAAY72C,EAAQ3nF,GAAQA,EAAO/gC,EAAK2sL,GACxCjkL,EAAS,CAAE4jL,YAAa,CAAEhyL,MAAOilK,IACjC+sB,EAAc16L,KAAK06L,YAAYzrJ,GAC/B0rJ,EAAc36L,KAAKu6L,aAAatrJ,EAAOvpC,MAG3C,GAAkB,OAAdioK,EACAjlK,EAAQ1I,KAAKw6L,WAAWvrJ,EAAOvpC,WAC5B,GAAKoxH,EAAQ62C,IAEb,GAAIzqK,MAAMD,QAAQ0qK,GAAY,CACjC,IAAIqtB,EAAYrtB,EAAU9mK,MAAM6zL,EAAYlzL,QAC5CkB,EAAQ1I,KAAKi7L,eAAettB,EAAW+sB,GACvCjrK,EAASzvB,KAAKi7L,eAAeD,EAAWL,EAC5C,MAAO,GAAyB,iBAAdhtB,EAAwB,CACtC,IAAIutB,EAAiBl7L,KAAKm7L,aAAalsJ,EAAQyrJ,GAC3CU,EAAiBp7L,KAAKm7L,aAAalsJ,EAAQ0rJ,GAE/CjyL,EAAQ1I,KAAKq7L,gBAAgB1tB,EAAW+sB,EAAaQ,GACrDzrK,EAASzvB,KAAKq7L,gBAAgB1tB,EAAWgtB,EAAaS,EAC1D,OAXI1yL,EAAQ1I,KAAKy6L,gBAAgBxrJ,EAAOvpC,MAuBxC,OAVIoxH,EAAQpuH,KACmB,IAAvBgyL,EAAYlzL,OACZsP,EAAO4jL,YAAYhyL,MAAQA,EAAMgyL,EAAY,IAE7C5jL,EAAO4jL,YAAchyL,GAI7BoO,EAAO2Y,OAASA,GAAU,CAAC,EAEpB3Y,CACX,EAEA8jL,WAAY,SAASnrK,EAAQ6rK,GAIzB,IAHA,IAAI5yL,EAAQ,CAAC,EACTlB,EAASioB,EAAOjoB,OAEXD,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAE7BmB,EADgB+mB,EAAOloB,IACJ+zL,CACvB,CAEA,OAAO5yL,CACX,EAEAuyL,eAAgB,SAASlgL,EAAO0U,GAC5B,IAAI/mB,EAAQ,CAAC,EAEb,GAAI+mB,EAGA,IAFA,IAAIjoB,EAASnE,KAAKqT,IAAI+Y,EAAOjoB,OAAQuT,EAAMvT,QAElCD,EAAI,EAAGA,EAAIC,EAAQD,IACxBmB,EAAM+mB,EAAOloB,IAAMwT,EAAMxT,GAIjC,OAAOmB,CACX,EAEA2yL,gBAAiB,SAASrvI,EAAQv8B,EAAQ8rK,QACpB,IAAdA,IAAwBA,EAAY9rK,GAExC,IAAI/mB,EAAQ,CAAC,EAEb,GAAI+mB,EAGA,IAFA,IAAIjoB,EAASioB,EAAOjoB,OAEXD,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAImnD,EAAYj/B,EAAOloB,GACnBi0L,EAAeD,EAAUh0L,GACR,OAAjBi0L,IACA9yL,EAAMgmD,GAAa0rI,GAASoB,EAAcxvI,GAElD,CAGJ,OAAOtjD,CACX,EAEAyyL,aAAc,SAASlsJ,EAAQ4rJ,GAC3B,IAAIM,EAAe,GAEnB,GAAIN,EAGA,IAFA,IAAIrzL,EAASqzL,EAAgBrzL,OAEpBD,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAImnD,EAAYmsI,EAAgBtzL,GAC5Bk0L,EAAkB/sI,IAAcugB,EAAQ,QAAUvgB,EAAY,QAElEysI,EAAax5L,KAAiC,OAA5BstC,EAAOwsJ,GAA6BxsJ,EAAOwsJ,IAAoB/sI,EAAa,KAClG,CAGJ,OAAOysI,CACX,IAGJd,GAAarmL,QAAU,IAAIqmL,GAE3B,IAEIqB,GAAe,0BACfC,GAAyB,IAAIntL,OAAO,yCAEpCotL,GAAuBh0L,EAAM7E,OAAO,CACpCoF,KAAM,SAAS0zL,EAAY5sJ,EAAQlpB,GAE/B/lB,KAAK87L,iBAAiBD,EAAY5sJ,EAAQlpB,EAC9C,EAEA+1K,iBAAkB,SAASD,EAAY5sJ,EAAQlpB,GAC3C,IAAI3X,EAAO6gC,EAAO7gC,KACd2tL,EAAiBJ,GAAuB/iL,KAAKijL,GAEjD,GAAIE,EAAgB,CAChB/7L,KAAKg8L,YAAch8L,KAAKi8L,kBAAkBhtJ,EAAQlpB,GAElD,IAAIuvC,EAAUt1D,KAAKk8L,WAAW9tL,GAC1B+tL,EAAYn8L,KAAKo8L,qBAAqBhuL,EAAMknD,GAAS,GACrDhf,EAAWylJ,EAAe,GAAKhzL,WAAWgzL,EAAe,IAAM,EAC/DM,EAAa,CAAEzkE,IAAKtiE,EAAQ5sD,MAAQyzL,EAAY7lJ,EAAUq6I,KAAMr7H,EAAQ5sD,MAAQyzL,EAAY7lJ,GAEhGt2C,KAAKs8L,YAAc,WACf,OAAOD,CACX,CACJ,MAAO,GAAIR,EAAWlmL,SAAWkmL,EAAWlmL,QA1BtC,WA0B0D,EAAG,CAC/D3V,KAAKg8L,YAAch8L,KAAKi8L,kBAAkBhtJ,EAAQlpB,GAClD,IAAIw2K,EAAgBv8L,KAAKw8L,iBAAiBpuL,EAAMpO,KAAKk8L,WAAW9tL,IAEhEpO,KAAKs8L,YAAc,SAAS5zL,GACxB,MAAO,CAAEkvH,IAAKlvH,EAAQ6zL,EAAe5L,KAAMjoL,EAAQ6zL,EACvD,CACJ,CACJ,EAEAN,kBAAmB,SAAShtJ,EAAQlpB,GAChC,IAIIi2K,EAJA5tL,EAAO6gC,EAAO7gC,KACdynE,EAASwkH,GAAarmL,QACtB0mL,EAAc7kH,EAAO6kH,YAAYzrJ,GACjCE,EAAO2nF,EAAQ1oH,EAAK,IAAMA,EAAK,GAAK,CAAC,EAGzC,GAAInL,EAAQksC,GAAO,CACf,IAAI71B,EAAQyM,EAAQ20K,EAAY/kL,QAAQoQ,GAAS,EACjDi2K,EAAcxsK,EAAO,IAAMlW,EAAQ,IACvC,MAAO,GAAI+7C,EAASlmB,GAChB6sJ,EAAcxsK,SACX,UAAW2f,IAAS+pJ,EAAiB9yL,OAAQ,CAChD,IAAI80L,EAAiBrlH,EAAOslH,aAAalsJ,EAAQyrJ,GACjDsB,EAAcxsK,EAAO0rK,EAAeR,EAAY/kL,QAAQoQ,IAC5D,CAEA,OAAOi2K,CACX,EAEAS,cAAe,SAASC,EAAYb,GAChC,IAAIjkE,EAAK+4D,EAAMjoL,EAEf,IAAKouH,EAAQ+kE,GACT,OAAO,KAGX,GAAI77L,KAAKs8L,YACL,OAAOt8L,KAAKs8L,YAAYI,GAG5B,GAAIz5L,EAAQ44L,GACRjkE,EAAM8kE,EAAab,EAAW,GAC9BlL,EAAO+L,EAAab,EAAW,QAC5B,GAAIxmI,EAAS3sD,EAAQK,WAAW8yL,IACnCjkE,EAAM8kE,EAAah0L,EACnBioL,EAAO+L,EAAah0L,MACjB,MAAKA,EAAQgzL,GAAa9iL,KAAKijL,IAKlC,MAAM,IAAI7qL,MAAM,2BAA6B6qL,GAJ7C,IAAIc,EAAeD,GAAc3zL,WAAWL,EAAM,IAAM,KACxDkvH,EAAM8kE,EAAar5L,KAAKoU,IAAIklL,GAC5BhM,EAAO+L,EAAar5L,KAAKoU,IAAIklL,EAGjC,CAEA,MAAO,CAAE/kE,IAAKA,EAAK+4D,KAAMA,EAC7B,EAEA6L,iBAAkB,SAASpuL,EAAMknD,GAC7B,OAAOt1D,KAAKo8L,qBAAqBhuL,EAAMknD,GAAS,GAAQjyD,KAAKo7E,KAAKnpB,EAAQh6C,MAC9E,EAEA8gL,qBAAsB,SAAShuL,EAAMknD,EAASsnI,GAO1C,IANA,IAEIp1L,EAAS4G,EAAK5G,OACdw/C,EAAQ41I,EAAWtnI,EAAQh6C,MAAQ,EAAIg6C,EAAQh6C,MAC/CuhL,EAAsB,EAEjBjzL,EAAM,EAAGA,EAAMpC,EAAQoC,IAAO,CACnC,IAAIlB,EAPO1I,KAOUg8L,YAAY5tL,EAAKxE,IAClCyrD,EAAS3sD,KACTm0L,GAAuBx5L,KAAKwmC,IAAInhC,EAAQ4sD,EAAQ5sD,MAAO,GAE/D,CAEA,OAAOrF,KAAKo7E,KAAKo+G,EAAsB71I,EAC3C,EAEAk1I,WAAY,SAAS9tL,GAOjB,IANA,IAEI5G,EAAS4G,EAAK5G,OACd4tD,EAAM,EACN95C,EAAQ,EAEH1R,EAAM,EAAGA,EAAMpC,EAAQoC,IAAO,CACnC,IAAIlB,EAPO1I,KAOUg8L,YAAY5tL,EAAKxE,IAClCyrD,EAAS3sD,KACT0sD,GAAO1sD,EACP4S,IAER,CAEA,MAAO,CACH5S,MAAO0sD,EAAM95C,EACbA,MAAOA,EAEf,IAGAwH,GAAUvf,GAAQuf,SAAW,CAAC,EAE9Bg6K,GAA6B,IAC7BC,GAAS,SAGTC,GAAoB,GAEpBC,GAAcn6K,GAAQoB,KAAO,KAAQ,EACrCg5K,GAAkB,WAClBC,GAAmB,YACnBC,GAAoB,YACpBC,GAAqB,aACrBC,GAAoB,YACpBC,GAAqB,aAErB9pL,GAAO,OACP+pL,GAAc,cACdC,GAAM,MACNC,GAAQ,QACRC,GAAQ,QAERC,GAAS,SACTC,GAAO,OAEPC,GAAO,OACPC,GAAM,MACNC,GAAW,UACXC,GAAS,SACTC,GAAS,SACTC,GAAc,cACdC,GAAS,SACTC,GAAQ,QACRC,GAAS,SACTC,GAAU,UACVC,GAAU,UACVC,GAAuB,sBACvBC,GAAO,OACPC,GAAO,OACPC,GAAM,MACNC,GAAa,YACbC,GAAa,YACbC,GAAgB,eAChBC,GAAa,YACbC,GAAe,cACfC,GAAa,YACbC,GAAa,YACbC,GAAY,WACZC,GAAe,cACfC,GAAU,UACVC,GAAe,cACfC,GAAgB,eAChBC,GAAoB,kBACpBC,GAAkB,iBAClBC,GAAgB,eAChBC,GAAsB,oBACtBC,GAAY,YACZC,GAAwB,CACxB/B,GAAKK,GAAQO,GAAMR,GAAaH,GAAUyB,GAC1CvB,GAAQmB,GAAcD,GAAWS,GAAWpB,IAG5CsB,GAAwB,uBACxBC,GAAmB,kBACnBC,GAAwB,uBACxBC,GAA2B,yBAC3BC,GAAuB,sBACvBC,GAAkB,iBAClBC,GAAmB,CACnBN,GACAC,GACAC,GACAC,GACAC,GACAC,IAGAE,GAAoB,kBACpBC,GAAoB,kBACpBC,GAAoB,kBACpBC,GAAe,cACfC,GAAe,cACfC,GAAc,aACdC,GAAe,cACfC,GAAkB,gBAClBC,GAAkB,gBAClBC,GAAkB,gBAClB58G,GAAO,OACP68G,GAAW,UACXC,GAAa,YACbC,GAAa,YACbC,GAAO,OACPC,GAAW,UACXC,GAAe,cACftkH,GAAS,SACTukH,GAAa,YACbC,GAAS,SACTC,GAAe,cACfC,GAAe,cACfC,GAAc,aAEdC,GAAmB,kBACnBC,GAAwB,gBACxBC,GAA+B,QAC/BC,GAAmB,WACnBC,GAAwB,sBACxBC,GAAoC,cAEpCC,GAAc,MACdC,GAAW,WAEXC,GAAa,YACbC,GAAc,aACdC,GAAc,aAEdC,GAAa,QACbC,GAAmB,IAGnBC,GAAY,YACZC,GAAkB,YAElBC,GAA4B,EAE5BphC,GAAY,CACfw7B,2BAA4BA,GAC5BC,OAAQA,GACRuD,kBAAmBA,GACnBC,kBAAmBA,GACnBC,kBAAmBA,GACnBC,aAAcA,GACdC,aAAcA,GACdC,YAAaA,GACbC,aAAcA,GACd+B,MAjIW,QAkIX3F,kBAAmBA,GACnB4F,eAjIoB,EAkIpB3F,YAAaA,GACbC,gBAAiBA,GACjBC,iBAAkBA,GAClBC,kBAAmBA,GACnBC,mBAAoBA,GACpBC,kBAAmBA,GACnBC,mBAAoBA,GACpBsF,iBAjIsB,EAkItBrF,YAAaA,GACb/pL,KAAMA,GACNmqL,OAAQA,GACRC,KAAMA,GACNqE,SAAUA,GACV5D,OAAQA,GACRC,QAASA,GACTR,IAAKA,GACLI,YAAaA,GACbS,IAAKA,GACLR,OAAQA,GACRN,KAAMA,GACN4B,gBAAiBA,GACjB1B,SAAUA,GACVW,KAAMA,GACNkB,UAAWA,GACXnB,KAAMA,GACNR,OAAQA,GACRyB,cAAeA,GACfH,cAAeA,GACfL,WAAYA,GACZS,oBAAqBA,GACrBP,aAAcA,GACdI,kBAAmBA,GACnBL,UAAWA,GACXX,qBAAsBA,GACtBa,QAASA,GACTC,aAAcA,GACdtB,OAAQA,GACRe,WAAYA,GACZE,WAAYA,GACZD,aAAcA,GACdH,WAAYA,GACZD,WAAYA,GACZE,cAAeA,GACfwC,OAAQA,GACRV,gBAAiBA,GACjBC,gBAAiBA,GACjBC,gBAAiBA,GACjBkB,YAAaA,GACb99G,KAAMA,GACN88G,WAAYA,GACZD,SAAUA,GACVE,WAAYA,GACZC,KAAMA,GACNC,SAAUA,GACVC,aAAcA,GACdtkH,OAAQA,GACRukH,WAAYA,GACZI,YAAaA,GACbjE,IAAKA,GACLY,MAAOA,GACP8D,WAAYA,GACZC,YAAaA,GACbC,YAAaA,GACbC,WAAYA,GACZC,iBAAkBA,GAClBO,qBArF0B,GAsF1BtB,aAAcA,GACdC,aAAcA,GACd3B,sBAAuBA,GACvBpC,MAAOA,GACPC,MAAOA,GACPa,QAASA,GACTgE,UAAWA,GACXC,gBAAiBA,GACjBC,0BAA2BA,GAC3BrC,iBAAkBA,GAClBN,sBAAuBA,GACvBC,iBAAkBA,GAClBC,sBAAuBA,GACvBC,yBAA0BA,GAC1BC,qBAAsBA,GACtBC,gBAAiBA,GACjBuB,iBAAkBA,GAClBC,sBAAuBA,GACvBC,6BAA8BA,GAC9BC,iBAAkBA,GAClBC,sBAAuBA,GACvBC,kCAAmCA,IAKhCe,GAAe/4B,EAAajnK,OAAO,CACnCoF,KAAM,SAASyvH,EAAK+4D,EAAMpjD,EAAY+mC,EAAOrlI,EAAQ9nC,GACjD6iK,EAAajiK,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAEhCnH,KAAK43H,IAAMA,EACX53H,KAAK2wL,KAAOA,EACZ3wL,KAAKutI,WAAaA,EAClBvtI,KAAKs0K,MAAQA,EACbt0K,KAAKivC,OAASA,CAClB,EAEAojG,OAAQ,SAAS20B,GACb,IASIsM,EATA0vB,EAAUhjM,KAAKmH,QAAQ67L,QACvBz1D,EAAavtI,KAAKutI,WAElB01D,EADOjjM,KAAKkjM,UACIzqB,QAAQz4K,KAAK43H,IAAK53H,KAAK2wL,MACvCwS,EAAYn8B,EAAUzoF,SACtB6kH,EAAYpjM,KAAKqjM,aAAar8B,EAAWz5B,GACzC+1D,EAAW/1D,EAAa41D,EAAU/9L,EAAI+9L,EAAUh/L,EAChDo/L,EAAWD,EAAWF,EACtBI,EAASF,EAAWF,EAGpB71D,GACA+lC,EAAa,CACT,IAAIx3C,EAAMqnE,EAAU/9L,EAAG69L,EAAS/kH,IAChC,IAAI49C,EAAMqnE,EAAU/9L,EAAG69L,EAAS7kH,KAEhC4kH,GACA1vB,EAAW3xK,KAAK,IAAIm6H,EAAMynE,EAAUN,EAAS/kH,IACzC,IAAI49C,EAAM0nE,EAAQP,EAAS/kH,IAC3B,IAAI49C,EAAMynE,EAAUN,EAAS7kH,IAC7B,IAAI09C,EAAM0nE,EAAQP,EAAS7kH,KAEnCp+E,KAAKs5C,IAAM,IAAIytH,EAAIw8B,EAAUN,EAAS/kH,GAAIslH,EAAQP,EAAS7kH,MAE3Dk1F,EAAa,CACT,IAAIx3C,EAAMmnE,EAAShlH,GAAIklH,EAAUh/L,GACjC,IAAI23H,EAAMmnE,EAAS9kH,GAAIglH,EAAUh/L,IAEjC6+L,GACA1vB,EAAW3xK,KAAK,IAAIm6H,EAAMmnE,EAAShlH,GAAIslH,GACnC,IAAIznE,EAAMmnE,EAAShlH,GAAIulH,GACvB,IAAI1nE,EAAMmnE,EAAS9kH,GAAIolH,GACvB,IAAIznE,EAAMmnE,EAAS9kH,GAAIqlH,IAE/BxjM,KAAKs5C,IAAM,IAAIytH,EAAIk8B,EAAShlH,GAAIslH,EAAUN,EAAS9kH,GAAIqlH,IAG3DxjM,KAAKszK,WAAaA,CACtB,EAEA+vB,aAAc,SAAS/pJ,EAAKi0F,GACxB,IAAI74C,EAAU64C,EAAaj0F,EAAIvtC,QAAUutC,EAAIttC,SAG7C,OAFgB3I,KAAKqT,IAAIrT,KAAKyN,MAAM4jF,EAAU,GAxDxB,KA2D1B,EAEAi2E,aAAc,WACV,IAAI13C,EAAWjzH,KAEXmH,EAAUnH,KAAKmH,QACf85I,EAAS95I,EAAQ85I,OAEjBA,EACAjhJ,KAAKihJ,OAASA,EAAO,CACjBrpB,IAAK53H,KAAK43H,IACV+4D,KAAM3wL,KAAK2wL,KACXrkG,KAAMtsF,KAAKs5C,IAAI2uH,SACf39J,OAAQtK,KAAKoqK,YACbjjK,QAAS,CACL67L,QAAS77L,EAAQ67L,QACjB/xE,MAAO9pH,EAAQ8pH,MACfs0C,KAAMp+J,EAAQo+J,MAElBoF,aAAc,WACV13C,EAASwwE,sBACT,IAAIjwB,EAAgBvgD,EAASguB,OAE7B,cADOhuB,EAASguB,OACTuyB,CACX,IAGJxzK,KAAKyjM,qBAEb,EAEAA,oBAAqB,WACjB,IAGIt8L,EADMnH,KACQmH,QACdmsK,EAFMtzK,KAEWszK,WACjB6F,EAAc,CACdv5C,OAAQ,CACJ3O,MAAO9pH,EAAQ8pH,MACfllH,MAAO5E,EAAQo+J,KAAKx5J,MACpB8yI,SAAU13I,EAAQo+J,KAAK1mB,WAI/BmrB,EAAajiK,GAAG4iK,aAAapgK,KAAKvK,MAElC,IAAK,IAAI4J,EAAM,EAAGA,EAAM0pK,EAAW9rK,OAAQoC,GAAO,EAAG,CACjD,IAAI27J,EAAO,IAAIh3B,GAAK4qC,GACf38H,OAAO82H,EAAW1pK,GAAKxE,EAAGkuK,EAAW1pK,GAAKzF,GAC1C0oI,OAAOymC,EAAW1pK,EAAM,GAAGxE,EAAGkuK,EAAW1pK,EAAM,GAAGzF,GAEvDu+J,EAAiB6C,GApBNvlK,KAqBFihJ,OAAO9mG,OAAOorH,EAC3B,CACJ,IAGJvB,EAAkB++B,GAAc,CAC5BzwG,UAAW,CACP5sF,KAAMq3L,GACNz3J,MAAOw3J,IAEXkG,SAAS,EACTz9B,KAAM,CACFx5J,MAAO,GAEXiuC,OAAQ,IAGZ,IAAI0pJ,GAAsBX,GAAahgM,OAAO,CAC1CmgM,QAAS,WAGL,OAFWljM,KAAKs0K,MAAMqvB,gBAAgB3jM,KAAKivC,OAG/C,IAGJ,SAAS20J,GAAajrK,GAClB,IAAK,IAAI/uB,EAAM,EAAGA,EAAM+uB,EAASnxB,OAAQoC,IACrC,GAAIktH,EAAQn+F,EAAS/uB,GAAKowC,QACtB,OAAO,CAGnB,CAEA,SAAS6pJ,GAAgB9oL,EAAOlP,GACZ,OAAZA,GACAkP,EAAMpZ,KAAKkK,EAEnB,CAEA,SAASi4L,GAAWzqL,GAChB,OAAO2gL,GAAa3gL,KAAYA,EAAO7R,MAC3C,CAEA,SAASu8L,GAAe90J,EAAQxf,EAAQnW,GACpC,IAAItM,EAAUyiB,EAAOziB,QACrB,GAAI8pH,EAAQ9pH,GACR,OAAOA,EAGX,IAAIg3L,EAAkB/0J,EAAO+0J,gBAC7B,OAAIA,EACOA,EAAgB1qL,QAD3B,CAGJ,CAEA,SAAS2qL,GAAah1J,GAMlB,IALA,IAAI7gC,EAAO6gC,EAAO7gC,KACdg1H,EAAS,GACThuE,EAAM,EACN95C,EAAQ,EAEH1R,EAAM,EAAGA,EAAMwE,EAAK5G,OAAQoC,IAAO,CACxC,IAAI+jK,EAAY0sB,GAAarmL,QAAQ8mL,UAAU7rJ,EAAQrlC,GACnDlB,EAAQilK,EAAU+sB,YAAYhyL,MAE9BE,EAASF,KACTA,EAAQK,WAAWL,IAGnB2sD,EAAS3sD,IACTilK,EAAU3gK,SAA4D,IAAlD+2L,GAAe90J,EAAQ0+H,EAAUl+I,OAAQ7lB,GAE7D+jK,EAAUjlK,MAAQrF,KAAKoU,IAAI/O,GAC3B06H,EAAOzhI,KAAKgsK,GAERA,EAAU3gK,UACVooD,GAAOu4G,EAAUjlK,OAGP,IAAVA,GACA4S,KAGJ8nH,EAAOzhI,KAAK,KAEpB,CAEA,MAAO,CACHqlD,MAAOoO,EACPguE,OAAQA,EACR9nH,MAAOA,EAEf,CAEA,SAASqmK,GAAgB1yI,GAIrB,IAHA,IAAIi1J,EAAcj1J,EAAOznC,OACrBq4K,EAAa,EAERt4K,EAAI,EAAGA,EAAI28L,EAAa38L,IAC7Bs4K,EAAax8K,KAAK8V,IAAI0mK,EAAY5wI,EAAO1nC,GAAG6G,KAAK5G,QAGrD,OAAOq4K,CACX,CAEA,SAASskB,GAAiBj/L,EAAG+W,GACzB,OAAI/W,GAAK+W,EACE/W,EAAE2T,gBAAkBoD,EAAEpD,cAG1B3T,IAAM+W,CACjB,CAIA,SAASmoL,GAAYj9L,EAAS60B,EAASs3B,EAAO+wI,QAC5B,IAAV/wI,IAAoBA,EAAQ,CAAC,QAClB,IAAX+wI,IAAqBA,GAAS,GAElC,IAAIzjM,EAAW0yD,EAAM1yD,SAAW0yD,EAAM1yD,UAAY,CAAC,EAC/CujK,EAAQ7wG,EAAM6wG,MAAQ7wG,EAAM6wG,OAAS,EACrCmgC,GAAY,EAIhB,GAFAhxI,EAAMixI,SAAWjxI,EAAMixI,UAAY,GAE/BpgC,EAZe,EAaf,OAAO,KAGX,IAAK,IAAIr2J,KAAY3G,EACjB,IAAKsuB,EAAQ3nB,EAAUwlD,EAAMixI,WAAa95K,EAAQxb,eAAe9H,EAAS2G,GAAW,CACjF,IAAIC,EAAY5G,EAAQ2G,GACpB5E,EAAW6E,IACXu2L,GAAY,EACPD,IACDl9L,EAAQ2G,GAAYkrH,EAAejrH,EAAUiuB,GAAUp7B,EAASkN,MAE7Dg1J,EAAS/0J,KACXs2L,IACD/wI,EAAM1yD,SAAWA,EAASkN,IAE9BwlD,EAAM6wG,QACNmgC,EAAYF,GAAYr2L,EAAWiuB,EAASs3B,EAAO+wI,IAAWC,EAC9DhxI,EAAM6wG,QAEd,CAGJ,OAAOmgC,CACX,CAEA,SAASE,GAAmBv1J,EAAQvpB,GAIhC,IAHA,IAAI5O,EAAS,GAET2/K,EAAc,GAAGr4K,OAAOsH,GACnB9b,EAAM,EAAGA,EAAMqlC,EAAOznC,OAAQoC,IAAO,CAC1C,IAAI66L,EAAgBx1J,EAAOrlC,GACvB6rB,EAAQgvK,EAAc/+L,KAAM+wL,IAC5B3/K,EAAOnV,KAAK8iM,EAEpB,CAEA,OAAO3tL,CACX,CAEA,IAAI4tL,GAAY,IAAIC,QAEpB,SAASC,GAAkB14B,EAAU7G,EAAKyO,GACtC,GAAY,OAARzO,GAA+B,iBAARA,EACvB,OAAO/mJ,EAAUw1J,EAAa5H,GAGlC,IAAIt1J,EAAO8tL,GAAUz0K,IAAIo1I,GAMzB,OALKzuJ,IACDA,EAAO0H,EAAUw1J,EAAa5H,GAC9Bw4B,GAAUx0K,IAAIm1I,EAAKzuJ,IAGhBA,CACX,CAEA,SAASiuL,GAAmB19L,GACxB,IAAI2lK,EAAU3lK,EAAQ2lK,QAEtB,OAAOA,GAAWA,EAAQ9mB,UAAiC,SAArB8mB,EAAQ9mB,QAClD,CAEA,SAAS5wE,GAAS1sE,GACd,OAAOouH,EAAQpuH,IAAoB,OAAVA,CAC7B,CAEA,SAASo8L,GAAWpb,EAAaqb,GAC7B,IAAIr/L,EAAOgkL,EAAYhkL,KACnBs/L,EAAeD,aAA0Bp2L,KAE7C,OAASjJ,GAAQs/L,GAAiBb,GAAiBz+L,EAAM+6J,EAC7D,CAEA,SAASwkC,GAAkBlqL,GACvB,OAAwB,IAAjBA,EAAMvT,OAAeuT,EAAM,GAAKA,CAC3C,CAEA,IAAImqL,GAAa,QAUjB,SAASC,GAAWl2J,EAAQE,GACxB,IACIurJ,EADSL,GAAarmL,QAAQ8mL,UAAU7rJ,EAAQ,KAAME,GACjCurJ,YAEzB,IAAK,IAAI30K,KAAS20K,EACd,GAAIjwK,EAAQ+kK,oBAAoBkL,EAAY30K,IACxC,OAAO,CAGnB,CAEA,SAASq/K,GAAS/yE,GACd,IAQIgzE,EAAeC,EARfxvL,EAAQu8G,EAAIv8G,MACZypB,EAAM8yF,EAAI9yF,IACV7oB,EAAM27G,EAAI37G,IACVyC,EAAMk5G,EAAIl5G,IACVosL,EAAYlzE,EAAI7iG,OAChBg2K,EAAUnzE,EAAImzE,QACdv2J,EAASojF,EAAIpjF,OAGbrlC,EAAMkM,EACV,GAIQ0vL,EAHJ57L,GAAO21B,KAKH8lK,EAAgBF,GAAWl2J,GAD3Bq2J,EAAWC,EAAU37L,IACuBulC,aAE3Cz4B,GAAO9M,GAAOA,GAAOuP,IAAQksL,GAEtC,GAAIA,EACA,OAAOC,CAEf,CAEA,SAASG,GAAuBx2J,EAAQglB,EAAO34C,EAAOiqL,EAAWC,GAC7D,IAAI9uL,EAAMu9C,EAAMv9C,IACZyC,EAAM86C,EAAM96C,IACZusL,EAAchvL,EAAM,GAAKA,EAAM4E,EAC/BqqL,EAAcxsL,EAAM,EAAImC,EAE5B,GAAIoqL,GAAeC,EAAa,CAC5B,IACI9oE,EAAUC,EAUNwoE,EAXJM,EApDZ,SAA6B32J,GACzB,OAAIA,EAAO22J,cACA32J,EAAO22J,cAGXV,GAAW33L,KAAK0hC,EAAOvpC,OAASupC,EAAOklG,MAAQ1gI,GAAO+pL,EACjE,CA8C4BqI,CAAoB52J,GAExC,GAAI22J,IAAkBpI,GACdkI,IACA7oE,EAAW0oE,EAAU7uL,EAAM,IAG3BivL,IACA7oE,EAAWyoE,EAAUpsL,EAAM,SAI3BusL,IAcI7oE,EAZYsoE,GAAWl2J,GAD3Bq2J,EAAWC,EAAU7uL,EAAM,IACiBy4B,MAY7Bm2J,EAVAF,GAAS,CAChBtvL,MAAOY,EACP6oB,KAAM,EACN7oB,IAAK,EACLyC,IAAKmC,EAAQ,EACbkU,OAAQ+1K,EACRC,QAASA,EACTv2J,OAAQA,KAOhB02J,IAcI7oE,EAZYqoE,GAAWl2J,GAD3Bq2J,EAAWC,EAAUpsL,EAAM,IACiBg2B,MAY7Bm2J,EAVAF,GAAS,CAChBtvL,MAAOqD,EACPomB,IAAK,EACL7oB,IAAK,EACLyC,IAAKmC,EAAQ,EACbkU,OAAQ+1K,EACRC,QAASA,EACTv2J,OAAQA,KAQpB4tF,IACA5tF,EAAO62J,oBAAsBjpE,GAG7BC,IACA7tF,EAAO82J,oBAAsBjpE,EAErC,CACJ,CAEA,IAAIkpE,GAAmBh8B,EAAajnK,OAAO,CACvCoF,KAAM,SAASgwK,EAAUhxK,GACrB6iK,EAAajiK,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAEhCnH,KAAKm4K,SAAWA,EAChBn4K,KAAKuqK,aAAe4N,EAAS5N,aAC7BvqK,KAAK41L,aAAezd,EAAS8tB,mBAAmB9+L,EAAQ8nC,OAAO,IAI/DjvC,KAAKkmM,gBAAkB,CAAC,EAExBlmM,KAAKojI,OAAS,GACdpjI,KAAKmmM,eAAiB,GACtBnmM,KAAKomM,aAAe,GACpBpmM,KAAKqmM,cAAgB,GACrBrmM,KAAKsmM,YAAc,GAEnBtmM,KAAKmQ,QACT,EAEAA,OAAQ,WACJnQ,KAAKumM,mBAAmBvmM,KAAKwmM,SAASh9L,KAAKxJ,MAC/C,EAEAymM,aAAc,SAASx3J,EAAQy3J,GAC3B,IAAIv/L,EAAUnH,KAAKqmM,cAAcK,GACjC,IAAKv/L,EAAS,CACV,IAAIvG,EAAWZ,KAAK2mM,YAAYt+L,UAAUzH,SAC1CZ,KAAKqmM,cAAcK,GAAYv/L,EAAUqB,EAAW,CAAE,EAAG5H,EAAU,CAC/D4xC,UAAWxyC,KAAKmH,QAAQy/L,YACzB33J,EACP,CAEA,OAAO9nC,CACX,EAEA0/L,UAAW,SAAS1qE,GAChB,IAAKA,EACD,OAAO,EAGX,GAAIn8H,KAAKmH,QAAQ2/L,cAAgBzxI,EAAS8mE,EAAMzzH,OAAQ,CAMpD,IALA,IAAIk9K,EAAazpD,EAAMypD,WACnBugB,EAAiBnmM,KAAKmmM,eAAevgB,GACrCmhB,EAAc,GACdC,EAAc,EAETz/L,EAAI,EAAGA,EAAI4+L,EAAe3+L,OAAQD,IAAK,CAC5C,IAAIuqH,EAAQq0E,EAAe5+L,GAC3B,GAAIuqH,EAAO,CACP,IAAIqiB,EAAQhY,EAAMltF,OAAOklG,MACrB8yD,EAAan1E,EAAM7iF,OAAOklG,MAE9B,GAAKA,GAAS8yD,GAAe9yD,EAAM5/E,QAAU0yI,EAAW1yI,MACpD,SAGAc,EAASy8D,EAAMppH,SACfs+L,GAAe3jM,KAAKoU,IAAIq6G,EAAMppH,OAC9Bq+L,EAAYplM,KAAK0B,KAAKoU,IAAIq6G,EAAMppH,QAExC,CACJ,CAEA,GAAIs+L,EAAc,EACd,OAAO7qE,EAAMzzH,MAAQs+L,CAE7B,CAEA,OAAO7qE,EAAMzzH,KACjB,EAEAw+L,UAAW,SAAS/qE,EAAO/jF,GACvB,IAAI66E,EAAWjzH,UACI,IAAfo4C,IAAyBA,EAAa,GAE1C,IAAI+tJ,EAAiBnmM,KAAKmmM,eAAehqE,EAAMypD,YAE/C,GAAI5lL,KAAKmH,QAAQggM,UAAW,CACxB,IAAIN,EAAY7mM,KAAK6mM,UAAU1qE,GAC3BirE,EAAWP,GAAa,EACxBQ,EAAYjvJ,EACZkvJ,GAAe,EACfnzD,EAAQrd,EAAQqF,EAAMltF,OAAOklG,OAAShY,EAAMltF,OAAOklG,MAAQn0I,KAAKmH,QAAQogM,aACxEC,EAAkB,SAAUrzD,GAAS,OAAiB,IAAVA,UAAyBA,IAAU+kD,EAAiB9yL,SAAW+tI,EAAM5/E,KAAO,EAE5H,GAAI4/E,EACA,IAAK,IAAI5sI,EAAI,EAAGA,EAAI4+L,EAAe3+L,OAAQD,IAAK,CAC5C,IAAIuqH,EAAQq0E,EAAe5+L,GAE3B,GAAI40H,IAAUrK,EACV,MAGJ,IAAIm1E,EAAanwE,EAAQhF,EAAM7iF,OAAOklG,OAASriB,EAAM7iF,OAAOklG,MAAQlhB,EAAS9rH,QAAQogM,aAErF,GAAKN,YAIM9yD,IAAU+kD,EAAiBhzL,QAAUiuI,IAAU8yD,MAItDO,EAAgBrzD,IAAWqzD,EAAgBP,OAI3C9yD,EAAM5/E,OAAS4/E,EAAM5/E,QAAU0yI,EAAW1yI,QAA9C,CAIA,IAAIkzI,EAAax0E,EAAS4zE,UAAU/0E,IAC/B21E,GAAc,GAAKL,GACnBK,EAAa,IAAML,KAED,IAAfhvJ,GAAmC,IAAfqvJ,IACpBJ,GAAaI,EACbZ,GAAaY,EACbH,GAAe,EAEXr0E,EAAS9rH,QAAQ2/L,eACjBD,EAAYxjM,KAAKqT,IAAImwL,EAAW,KAZ5C,CAgBJ,CAOJ,OAJIS,IACAD,GAAajvJ,GAGV,CAAEivJ,EAAWR,EACxB,CAEA,IAAI53J,EAASktF,EAAMltF,OACfsxI,EAAYvgL,KAAK2jM,gBAAgB10J,GACjC4tI,EAAoB78K,KAAK0nM,0BAA0BnnB,GAEvD,MAAO,CAAE1D,EAAmBpyJ,EAAQ+kK,oBAAoBrzD,EAAMzzH,OAASyzH,EAAMzzH,MAAQm0K,EACzF,EAEA8qB,YAAa,SAASC,EAAUC,GAM5B,IALA,IAEInxL,EAAM0gH,EACNj+G,EAAM2nJ,EAEDv5J,EAAI,EAAGA,EAAIvH,KAAKmmM,eAAe3+L,OAAQD,IAAK,CACjD,IAAI4+L,EANOnmM,KAMmBmmM,eAAe5+L,GAC7C,GAAK4+L,EAIL,IAAK,IAAI2B,EAAM,EAAGA,EAAM3B,EAAe3+L,OAAQsgM,IAAO,CAClD,IAAI3rE,EAAQgqE,EAAe2B,GAC3B,GAAI3rE,IACIA,EAAMltF,OAAOklG,QAAU0zD,GAAa1rE,EAAMltF,OAAO9J,OAASyiK,GAAU,CACpE,IAAItpK,EAfLt+B,KAemBknM,UAAU/qE,EAAO,GAAG,GAClCrF,EAAQx4F,IAAOlsB,SAASksB,KACxBnlB,EAAM9V,KAAK8V,IAAIA,EAAKmlB,GACpB5nB,EAAMrT,KAAKqT,IAAIA,EAAK4nB,GAE5B,CAER,CACJ,CAEA,MAAO,CAAE5nB,IAAKA,EAAKyC,IAAKA,EAC5B,EAEA4uL,iBAAkB,WACd,IAAI90E,EAAWjzH,KAEXqyH,EAAMryH,KAAKmH,QACXggM,EAAY90E,EAAI80E,UAChBa,EAAc31E,EAAIpjF,OAClBg5J,EAAc,CAAC,EAEnB,GAAId,EACA,IAAK,IAAI5/L,EAAI,EAAGA,EAAIygM,EAAYxgM,OAAQD,IAAK,CACzC,IAAI0nC,EAAS+4J,EAAYzgM,GACrBqgM,EAAW34J,EAAO9J,KAClBrzB,EAAM81L,EAAW34J,EAAOklG,MAExB+zD,EAASD,EAAYn2L,GACzB,IAAKo2L,EAAQ,CACTA,EAASj1E,EAAS00E,YAAYC,EAAU34J,EAAOklG,OAE/C,IAAIg0D,EAAcl1E,EAASk1E,YACvBA,IACIA,EAAY3xL,SAAShP,SACrB0gM,EAAOxxL,IAAMrT,KAAKqT,IAAIwxL,EAAOxxL,IAAK+T,EAAQi6I,kBAAkByjC,EAAY3xL,UAAUE,MAElFyxL,EAAYf,SAAS5/L,SACrB0gM,EAAO/uL,IAAM9V,KAAK8V,IAAI+uL,EAAO/uL,IAAKsR,EAAQi6I,kBAAkByjC,EAAYf,UAAUjuL,OAItF+uL,EAAOxxL,MAAQ0gH,GAAa8wE,EAAO/uL,MAAQ2nJ,EAC3CmnC,EAAYn2L,GAAOo2L,EAEnBA,EAAS,IAEjB,CAEIA,IACAj1E,EAASizE,gBAAgB0B,GAAYM,EAE7C,CAER,EAEAE,YAAa,SAASjsE,EAAO/tH,EAAMw3K,GAC/B,IAMIyW,EANA3zL,EAAQyzH,EAAMzzH,MACdumC,EAASktF,EAAMltF,OACfy3J,EAAWvqE,EAAMuqE,SACjBvO,EAAYh8D,EAAMh1H,QAAQgxL,UAC1BkQ,EAAWj6L,EAAKqhB,OAAOytK,IACvBoL,EAAYl6L,EAAKqhB,OAAO0tK,IAGxB9nI,EAASgzI,IAAahzI,EAASizI,GAC/BjM,EAAa,CAAEzkE,IAAKywE,EAAU1X,KAAM2X,GAC7BnQ,GAAarhE,EAAQqhE,EAAUzvL,SACtC1I,KAAKuoM,kBAAoBvoM,KAAKuoM,mBAAqB,GACnDvoM,KAAKuoM,kBAAkB7B,GAAY1mM,KAAKuoM,kBAAkB7B,IACtD,IAAI9K,GAAqBzD,EAAUzvL,MAAOumC,EAAQggC,GAEtDotH,EAAar8L,KAAKuoM,kBAAkB7B,GAAUjK,cAAc/zL,EAAOyvL,EAAUzvL,QAG7E2zL,IACAlgE,EAAMvE,IAAMykE,EAAWzkE,IACvBuE,EAAMw0D,KAAO0L,EAAW1L,KACxB3wL,KAAKwoM,iBAAiBrsE,EAAOypD,GAErC,EAEA4iB,iBAAkB,SAASrsE,EAAOypD,GAC9B,IAAIr4C,GAAcvtI,KAAKmH,QAAQy/L,WAC3Bz/L,EAAUg1H,EAAMh1H,QAAQgxL,UACxBlpJ,EAASktF,EAAMltF,OACf2oF,EAAMuE,EAAMvE,IACZ+4D,EAAOx0D,EAAMw0D,KAEjB,GAAI3wL,KAAKmH,QAAQggM,UAAW,CACxB,IAAIsB,EAAoBzoM,KAAKyoM,kBAAkBtsE,EAAOypD,GACtDhuD,EAAM6wE,EAAkB7wE,IACxB+4D,EAAO8X,EAAkB9X,IAC7B,KAAO,CACH,IAAIlhK,EAAS,CAAEm2J,WAAYA,EAAY32I,OAAQA,GAC/CjvC,KAAK0oM,YAAY,CAAEhgM,MAAOkvH,GAAOnoG,GACjCzvB,KAAK0oM,YAAY,CAAEhgM,MAAOioL,GAAQlhK,EACtC,CAEA,IAAIk5K,EAAW,IAAIjF,GAAoB9rE,EAAK+4D,EAAMpjD,EAAYvtI,KAAMivC,EAAQ9nC,GAC5Eg1H,EAAMg8D,UAAY,CAAEwQ,GACpBxsE,EAAMhiF,OAAOwuJ,EACjB,EAEAF,kBAAmB,SAAStsE,EAAOypD,GAC/B,IAAIihB,EAAY7mM,KAAKknM,UAAU/qE,EAAO,GAAG,GAAKA,EAAMzzH,MAChDkvH,EAAMuE,EAAMvE,IAAMivE,EAClBlW,EAAOx0D,EAAMw0D,KAAOkW,EAYxB,OAVA7mM,KAAKmoM,YAAcnoM,KAAKmoM,aAAe,CAAEf,SAAU,GAAI5wL,SAAU,IAE7DohH,EAAM,IACN53H,KAAKmoM,YAAY3xL,SAASovK,GAAcviL,KAAKqT,IAAI1W,KAAKmoM,YAAY3xL,SAASovK,IAAe,EAAGhuD,IAG7F+4D,EAAO,IACP3wL,KAAKmoM,YAAYf,SAASxhB,GAAcviL,KAAK8V,IAAInZ,KAAKmoM,YAAYf,SAASxhB,IAAe,EAAG+K,IAG1F,CAAE/4D,IAAKA,EAAK+4D,KAAMA,EAC7B,EAEA6V,SAAU,SAASp4L,EAAMqhB,GACrB,IAAIm2J,EAAan2J,EAAOm2J,WACpB32I,EAASxf,EAAOwf,OAChBy3J,EAAWj3K,EAAOi3K,SAElBP,EAAiBnmM,KAAKmmM,eAAevgB,GACpCugB,IACDnmM,KAAKmmM,eAAevgB,GAAcugB,EAAiB,IAGvD,IAAIC,EAAepmM,KAAKomM,aAAaM,GAChCN,IACDpmM,KAAKomM,aAAaM,GAAYN,EAAe,IAGjD,IAAIjqE,EAAQn8H,KAAK4oM,YAAYx6L,EAAMqhB,GAC/B0sG,IACAx5H,EAAEI,OAAOo5H,EAAO1sG,GAEhB0sG,EAAM0sE,MAAQ7oM,KACdm8H,EAAM2sE,SAAW16L,EAAKqhB,OAAOq5K,SACxBhyE,EAAQqF,EAAM19D,YACf09D,EAAM19D,SAAWxvB,EAAO7gC,KAAKw3K,IAEjC5lL,KAAKooM,YAAYjsE,EAAO/tH,EAAMw3K,IAGlC5lL,KAAKojI,OAAOzhI,KAAKw6H,GACjBiqE,EAAazkM,KAAKw6H,GAClBgqE,EAAexkM,KAAKw6H,GAEpBn8H,KAAK0oM,YAAYt6L,EAAKssL,YAAajrK,EACvC,EAEAs5K,iBAAkB,SAAS5hM,EAASuB,EAAO+mB,GACvC,IAAIm2J,EAAan2J,EAAOm2J,WACpB1Z,EAAWz8I,EAAOy8I,SAClBj9H,EAASxf,EAAOwf,OAChBy3J,EAAWj3K,EAAOi3K,SAClBpzI,EAAQ,CACR1yD,SAAUquC,EAAO+5J,UACjBzE,SAAU,CACN,OAAQ,YAAa,UAAW,UAAW,UAAW,WACtD,SAAU,SAAU,sBAAuB,sBAC3C,yBAA0B,eAAgB,gBAI9C0E,EAASjpM,KAAKsmM,YAAYI,GACzB5vE,EAAQmyE,KACTjpM,KAAKsmM,YAAYI,GAAYuC,EAAS7E,GAAYj9L,EAAS,CAAC,EAAGmsD,GAAO,IAG1E,IAAImzI,EAAet/L,EAYnB,OAXI8hM,GAEA7E,GADAqC,EAAej+L,EAAW,CAAC,EAAGi+L,GACJ,CACtB/9L,MAAOA,EACPwjK,SAAUA,EACV5yJ,MAAOssK,EACP32I,OAAQA,EACRwvB,SAAUxvB,EAAO7gC,KAAKw3K,IACvBtyH,GAGAmzI,CACX,EAEAiC,YAAa,SAASt6L,EAAMqhB,GACxB,IAAIm4K,EAAWn4K,EAAOwf,OAAO9J,KACzBz8B,EAAQ0F,EAAK1F,MACbwgM,EAAYlpM,KAAKkmM,gBAAgB0B,GAEjCx1L,SAAS1J,IAAoB,OAAVA,KACnBwgM,EAAYlpM,KAAKkmM,gBAAgB0B,GAC7BsB,GAAa,CAAExyL,IAAK0gH,EAAWj+G,IAAK2nJ,IAE9BpqJ,IAAMrT,KAAKqT,IAAIwyL,EAAUxyL,IAAKhO,GACxCwgM,EAAU/vL,IAAM9V,KAAK8V,IAAI+vL,EAAU/vL,IAAKzQ,GAEhD,EAEAi7L,gBAAiB,SAAS10J,GACtB,IAAIkpI,EAAWn4K,KAAKm4K,SAChByvB,EAAW34J,EAAO9J,KAClBA,EAAOyiK,EAAWzvB,EAASgxB,eAAevB,GAAYzvB,EAASoI,UAEnE,IAAKp7I,EACD,MAAM,IAAIn0B,MAAM,yCAA2C42L,GAG/D,OAAOziK,CACX,EAEAktG,OAAQ,SAAS20B,GACb,IAAI/zC,EAAWjzH,KAEXopM,EAAgBppM,KAAKopM,cAAgB,GACrCC,EAAcrpM,KAAKojI,OACnBwyD,EAAe51L,KAAK41L,aACpBmF,EAAU,EAEd/6L,KAAKumM,oBAAmB,SAAUn4L,EAAMqhB,GACpC,IAAIm2J,EAAan2J,EAAOm2J,WACpB6e,EAAgBh1K,EAAOwf,OAEvBsxI,EAAYttD,EAAS0wE,gBAAgBc,GACrCtoE,EAAQktE,EAAYtO,KAEpBuO,EAAeF,EAAcxjB,GAMjC,GALK0jB,IACDF,EAAcxjB,GAAc0jB,EACxBr2E,EAASq2E,aAAa1T,EAAchQ,EAAYrF,IAGpDpkD,EAAO,CACP,IAAI+qE,EAAYj0E,EAASi0E,UAAU/qE,EAAOokD,EAAUnoI,cAChDmxJ,EAAYt2E,EAASs2E,UAAUhpB,EAAW2mB,GAC9C,GAAIqC,EAAW,CACX,IAAIC,EAAYv2E,EAASu2E,UAAUF,EAAcC,GAEjDptE,EAAMstE,UAAYx2E,EAASw2E,UAAUttE,EAAOokD,GAC5CpkD,EAAMutE,WAAaxC,EAAU,GAEzBj0E,EAAS9rH,QAAQ2/L,eACjB3qE,EAAMtvG,WAAaomG,EAAS4zE,UAAU1qE,IAG1ClJ,EAAS02E,YAAYxtE,EAAOqtE,EAChC,MACIrtE,EAAMnvH,SAAU,CAExB,CACJ,IAEAhN,KAAK4pM,iBAAiBR,IACjBppM,KAAKmH,QAAQ+yC,MAAQl6C,KAAKmH,QAAQ0iM,aAAe7pM,KAAKojI,OAAO57H,QAC9DxH,KAAK6pM,cAGT7pM,KAAKs5C,IAAM0tH,CACf,EAEAuiC,UAAW,SAAShpB,EAAW2mB,GAC3B,OAAO3mB,EAAU9H,QAAQyuB,EAAU,GAAIA,EAAU,IAAKlnM,KAAKmH,QAAQ+yC,KACvE,EAEA2vJ,YAAa,WAKT,IAJA,IAEI1D,EAAiBnmM,KAAKmmM,eACtB/iE,EAAS+iE,EAAe,GAAG/nL,OAAOkkB,EAAK6jK,IAClCv8L,EAAM,EAAGA,EAAMw5H,EAAO57H,OAAQoC,IAC/Bw5H,EAAOx5H,IALA5J,KAME8pM,WAAW1mE,EAAOx5H,GAGvC,EAEAkgM,WAAY,SAAS3tE,GACjB,IAAI4tE,EAAc/pM,KAAK41L,aAAaxU,UAAUjlD,EAAM7iF,KAC/CywJ,EAAY54I,OAAOgrE,EAAM7iF,MAC1B6iF,EAAMkW,OAAO03D,EAErB,EAEAN,UAAW,SAASttE,EAAOokD,GACvB,IAAI1D,EAAoB78K,KAAK0nM,0BAA0BnnB,GACnD73K,EAAQyzH,EAAMzzH,MAElB,OAAO63K,EAAUp5K,QAAQkP,QACrB3N,EAAQm0K,EAAoBn0K,GAASm0K,CAC7C,EAEA6qB,0BAA2B,SAASnnB,GAChC,IAAIqV,EAAe51L,KAAK41L,aACpBzuL,EAAUo5K,EAAUp5K,QAKxB,MAJqB,GAAGiX,OACpBjX,EAAQ0jL,oBAAsB1jL,EAAQ01K,mBAGpB+Y,EAAaoU,WAAa,IAAM,CAC1D,EAEAL,YAAa,SAASxtE,EAAOqtE,GACzBrtE,EAAMkW,OAAOm3D,EACjB,EAEAI,iBAAkB,WAAa,EAE/BJ,UAAW,SAASF,EAAcC,GAC9B,IACI3C,EADU5mM,KAAKmH,QACMy/L,WACrBruB,EAAQquB,EAAa2C,EAAYD,EACjC9wB,EAAQouB,EAAa0C,EAAeC,EAExC,OAAO,IAAIxiC,EAAIwR,EAAMt6F,GAAIu6F,EAAMt6F,GAAIq6F,EAAMp6F,GAAIq6F,EAAMp6F,GACvD,EAEAkrH,aAAc,SAAS1T,EAAchQ,GACjC,OAAOgQ,EAAand,QAAQmN,EAChC,EAEA2gB,mBAAoB,SAAS38K,GAOzB,IANA,IAAIqpG,EAAWjzH,KAEXivC,EAASjvC,KAAKmH,QAAQ8nC,OACtB3zB,EAAQqmK,GAAgB1yI,GACxBi1J,EAAcj1J,EAAOznC,OAEhBk/L,EAAW,EAAGA,EAAWxC,EAAawC,IAC3CzzE,EAASg3E,oBAAoBh7J,EAAOy3J,GAAW,sBAAuBA,EAAU98K,GAGpF,IAAK,IAAIg8J,EAAa,EAAGA,EAAatqK,EAAOsqK,IACzC,IAAK,IAAIskB,EAAa,EAAGA,EAAahG,EAAagG,IAAc,CAC7D,IAAIzF,EAAgBx1J,EAAOi7J,GACvBC,EAAkBl3E,EAAS2iE,aAAalU,WAAWkE,GAGvDh8J,EAFgBqpG,EAASklD,SAAS2iB,UAAU2J,EAAe7e,GAEvC,CAChB1Z,SAAUi+B,EACVvkB,WAAYA,EACZjE,gBAAiBrmK,EACjB2zB,OAAQw1J,EACRiC,SAAUwD,GAElB,CAGJ,IAAK,IAAIE,EAAa,EAAGA,EAAalG,EAAakG,IAC/Cn3E,EAASg3E,oBAAoBh7J,EAAOm7J,GAAa,sBAAuBA,EAAYxgL,EAE5F,EAEAqgL,oBAAqB,SAASh7J,EAAQlpB,EAAO2gL,EAAU98K,GACnD,IAAIygL,EAAkBp7J,EAAOlpB,GAC7B,GAAIskL,EAAiB,CACjB,IAAIzkB,EAAaykB,EAAgBzkB,WAGjCh8J,EAFgB5pB,KAAKm4K,SAAS2iB,UAAU7rJ,EAAQ22I,EAAYykB,EAAgBl7J,MAExD,CAChB+8H,SAAUm+B,EAAgBn+B,SAC1B0Z,WAAYA,EACZ32I,OAAQA,EACRy3J,SAAUA,EACVjoI,SAAU4rI,EAAgBl7J,MAElC,CACJ,EAEAm7J,iBAAkB,SAASnuE,EAAOlrH,GAC9B,OAAoB,OAAhBkrH,EAAMzzH,MACC,GAGJ1I,KAAKuqK,aAAat5J,OAAOiiK,KAAKjiK,EAAQkrH,EAAMzzH,MACvD,EAEAg0L,WAAY,SAAStuL,GACjB,OAAOA,EAAKssL,YAAYhyL,KAC5B,IAGJs7J,EAAkBgiC,GAAkB,CAChC/2J,OAAQ,GACR23J,YAAY,EACZO,WAAW,EACXjtJ,MAAM,EACN2vJ,aAAa,IAGjB,IAAIU,GAAmB,CACnBrgL,MAAO,SAASoqJ,EAAO3vK,GACnB,OAAO2vK,EAAMlqK,QACTq2L,GACAzgM,KAAKwmK,UAAU7hK,GAEvB,EAEA0yL,MAAO,SAAS/iB,EAAO3vK,GACnB,OAAO2vK,EAAMlqK,QACTs2L,GACA1gM,KAAKwmK,UAAU7hK,GAEvB,EAEA8uK,KAAM,SAASa,EAAO3vK,GAClB,OAAO2vK,EAAMlqK,QACTu2L,GACA3gM,KAAKwmK,UAAU7hK,GAEvB,EAEA2pB,IAAK,SAASgmJ,EAAO3vK,GACjB,OAAO2vK,EAAMlqK,QACTw2L,GACA5gM,KAAKwmK,UAAU7hK,GAEvB,EAEA6hK,UAAW,SAAS7hK,GAChB,MAAO,CACH+D,MAAO1I,KAAK0I,MACZmkB,WAAY7sB,KAAK6sB,WACjB68K,WAAY1pM,KAAK0pM,WACjBx9B,SAAUlsK,KAAKksK,SACfj9H,OAAQjvC,KAAKivC,OACbwvB,SAAUz+D,KAAKy+D,SACf0tG,aAAcnsK,KAAKmsK,aACnBnlH,MAAOhnD,KAAKgnD,MACZn7C,QAASysH,EAAa3zH,GACtB4kB,cAAe5kB,EACfw3H,MAAOn8H,KAEf,GAGAwqM,GAAY,CACZC,WAAY,WACR,IAAItjM,EAAUnH,KAAKmH,QAAQ0vK,MACvB/1I,EAAO9gC,KAAK8oM,UAAY3hM,EAAQmtB,MAAMwM,MAElB,IAApB35B,EAAQ6F,SAAqB8pH,EAAQh2F,IAAkB,OAATA,IAC9C9gC,KAAK+2K,KAAO,IAAItsJ,EAAQsoJ,KAAK,CACzBrqK,MAAO1I,KAAK0I,MACZo4B,KAAMA,EACN29B,SAAUz+D,KAAKy+D,SACfytG,SAAUlsK,KAAKksK,SACfj9H,OAAQjvC,KAAKivC,QACdjvC,KAAKmH,QAAQ0vK,MAAO72K,KAAK6oM,MAAMt+B,cAElCvqK,KAAKm6C,OAAOn6C,KAAK+2K,MAEzB,GAGJ,SAAS5mJ,KACL,IACI5oB,EACA6oB,EAFAC,EAAK,GAIT,IAAK9oB,EAAI,EAAGA,EAAI,GAAIA,IAChB6oB,EAAyB,GAAhB/sB,KAAK+sB,SAAgB,EAEpB,IAAN7oB,GAAiB,KAANA,GAAkB,KAANA,GAAkB,KAANA,IACnC8oB,GAAM,KAGVA,IAAa,KAAN9oB,EAAW,EAAW,KAANA,EAAqB,EAAT6oB,EAAa,EAAKA,GAAS3e,SAAS,IAG3E,OAAO4e,CACX,CAEA,IAAIq6K,GAAY1gC,EAAajnK,OAAO,CAChCoF,KAAM,SAASO,EAAOvB,GAClB6iK,EAAajiK,GAAGI,KAAKoC,KAAKvK,MAE1BA,KAAK0I,MAAQA,EACb1I,KAAKmH,QAAUA,EACfnH,KAAKypM,UAAYzwE,EAAeh5H,KAAKmH,QAAQsiM,WAAW,GACxDzpM,KAAK2qM,iBAAkB,EACvB3qM,KAAK++C,IAAM5uB,IACf,EAEAhgB,OAAQ,WACJ,IACI6hL,EADMhyL,KAAKmH,QACG6qL,QAEdhyL,KAAK4qM,YAIT5qM,KAAK4qM,WAAY,EAEb5Y,EAAQhlL,SAAWglL,EAAQhiL,OAC3BhQ,KAAK0oD,OAAS1oD,KAAK6qM,eACnB7qM,KAAKm6C,OAAOn6C,KAAK0oD,SAGrB1oD,KAAKioL,cACLjoL,KAAKyqM,aAEDzqM,KAAK2oM,UACL3oM,KAAKm6C,OAAOn6C,KAAK2oM,UAEzB,EAEA1gB,YAAa,WACT,IACI7S,EADUp1K,KAAKmH,QACEiuK,OAEjBA,EAAOpoK,UACPhN,KAAKs0B,MAAQt0B,KAAK8qM,mBAAmB11B,GACrCp1K,KAAKm6C,OAAOn6C,KAAKs0B,OAEzB,EAEAw2K,mBAAoB,SAAS3jM,GACzB,OAAO,IAAIypK,EAAQ5wK,KAAK+qM,aAAa5jM,GACjCqB,EAAW,CACP0oI,MAAOjgD,EACPmpE,OAAQnpE,EACRl4C,OAAQ,CACJvsB,KAAM,EACNC,MAAO,GAEXutB,OAAQg/E,EAAe7xH,EAAQ6yC,OAAQh6C,KAAKivC,OAAO+K,SACpD7yC,GACHnH,KAAK2tK,YAEb,EAEAo9B,aAAc,SAAS5jM,GACnB,IAAI0xK,EAAgBxV,EAAYl8J,GAEhC,OAAI0xK,EACOA,EAAc74K,KAAK2tK,aACnBxmK,EAAQ8J,OACRjR,KAAKgrM,YAAY7jM,EAAQ8J,QAG7BjR,KAAK0I,KAChB,EAEAuiM,iBAAkB,WACd,IAAI71B,EAASp1K,KAAKmH,QAAQiuK,OACtB0a,EAAerlK,EAAQolK,gBAAgBza,GAE3C,OAAI0a,EACOA,EAAa9vL,KAAK2tK,aAGtB3tK,KAAK+qM,aAAa31B,EAC7B,EAEA81B,aAAc,WACV,IAAI/jM,EAAUnH,KAAKmH,QAAQ6qL,QACvBl9B,EAAa3tJ,EAAQ2tJ,WACrB4X,EAASlkK,EAAW,CAAEyoH,MAAOjxH,KAAKixH,OAAS9pH,EAAQulK,QAMvD,OAJK51C,EAAQ41C,EAAOz7C,SAChBy7C,EAAOz7C,MAAQ,IAAI+B,GAAM8hC,GAAYphC,WAAWspE,IAAmBzrE,SAGhEm7C,CACX,EAEA/B,aAAc,WAAY,EAE1BkgC,aAAc,WACV,IAAI1jM,EAAUnH,KAAKmH,QAAQ6qL,QAsB3B,OArBa,IAAItkB,EAAa,CAC1BhoK,KAAMyB,EAAQzB,KACdqG,MAAO5E,EAAQ6I,KACfhE,OAAQ7E,EAAQ6I,KAChB+pC,SAAU5yC,EAAQ4yC,SAClB+6G,WAAY3tJ,EAAQ2tJ,WACpB4X,OAAQ1sK,KAAKkrM,eACbn0K,QAAS5vB,EAAQ4vB,QACjBijB,OAAQg/E,EAAe7xH,EAAQ6yC,OAAQh6C,KAAKivC,OAAO+K,QACnDs4C,UAAWnrF,EAAQmrF,UACnB2uD,OAAQ95I,EAAQ85I,OAChB8sB,qBAAsBvlK,EAAW,CAC7BwrB,UAAWh0B,KAAKirM,iBAAiBjrM,KAAKmH,QAAQiuK,SAC/Cp1K,KAAKmH,QAAQklK,gBACjB,CACC5tG,SAAUz+D,KAAKy+D,SACf/1D,MAAO1I,KAAK0I,MACZumC,OAAQjvC,KAAKivC,OACbi9H,SAAUlsK,KAAKksK,UAIvB,EAEAi/B,UAAW,WAMP,OALKnrM,KAAK0oD,SACN1oD,KAAK0oD,OAAS1oD,KAAK6qM,eACnB7qM,KAAK0oD,OAAO2pF,OAAOryI,KAAKorM,YAGrBprM,KAAK0oD,OAAOpP,GACvB,EAEA+4F,OAAQ,SAAS20B,GACb,IAGI7/J,EADMnH,KACQmH,QACdsiM,EAFMzpM,KAEUypM,UAChBj3J,EAAWrrC,EAAQqrC,SAEvBxyC,KAAKmQ,SAELnQ,KAAKs5C,IAAM0tH,EACX,IAAIqkC,EAAWrkC,EAAU5/J,QAuBzB,GArBIorC,EACIi3J,EACA4B,EAASntH,IAAMmtH,EAASr/L,SAExBq/L,EAASjtH,IAAMitH,EAASr/L,SAGxBy9L,EACA4B,EAASptH,IAAMotH,EAASt/L,QAExBs/L,EAASltH,IAAMktH,EAASt/L,QAIhC/L,KAAKorM,UAAYC,EACbrrM,KAAK0oD,QACL1oD,KAAK0oD,OAAO2pF,OAAOg5D,GAGvBrrM,KAAKsrM,YAAYD,GAEbrrM,KAAKm4L,UACL,IAAK,IAAI5wL,EAAI,EAAGA,EAAIvH,KAAKm4L,UAAU3wL,OAAQD,IAlChCvH,KAmCEm4L,UAAU5wL,GAAG8qI,OAAOg5D,GAIrC,GAAIrrM,KAAK+2K,KAAM,CACX,IAAIw0B,EAAgBvrM,KAAKmrM,YAEzB,IAAMhkM,EAAQ6qL,QAAQhlL,UAAW7F,EAAQ6qL,QAAQhiL,KAAO,CACpD,IAAIuuE,EAASgtH,EAAchtH,SAC3BgtH,EAAgB,IAAIxkC,EAAIxoF,EAAOn5E,EAAGm5E,EAAOp6E,EAAGo6E,EAAOn5E,EAAGm5E,EAAOp6E,EACjE,CAEAnE,KAAK+2K,KAAK1kC,OAAOk5D,EACrB,CACJ,EAEAD,YAAa,SAAShyJ,GAClB,IACInyC,EADMnH,KACQmH,QACdmtB,EAFMt0B,KAEMs0B,MACZ69D,EAAShrF,EAAQiuK,OAAO9nK,SAExBgnB,IAEA69D,GADAA,EAASA,IAAWurG,GAAQxsG,EAAMiB,KACdwrG,GAAQxsG,EAASgB,EAErC79D,EAAM+9G,OAAO/4F,GACbhlB,EAAMglB,IAAI8tH,QAAQpnK,KAAKmrM,YAAah5G,GACpC79D,EAAM+9G,OAAO/9G,EAAMglB,KAE3B,EAEAsyH,gBAAiB,WACb,IAAIomB,EAAUhyL,KAAKmH,QAAQwkK,UAAUqmB,QACjCwZ,EAAexrM,KAAKkrM,eAAej6E,MACnC9pH,EAAUnH,KAAKmH,QAAQ6qL,QACvBhiL,EAAO7I,EAAQ6I,MAAQ7I,EAAQulK,OAAO3gK,OAAS,IAAMimL,EAAQtlB,OAAO3gK,OAAS,GAE7EsgB,EAAS,IAAIqhJ,EAAa,CAC1BhoK,KAAMyB,EAAQzB,KACdqG,MAAOiE,EACPhE,OAAQgE,EACR+pC,SAAU5yC,EAAQ4yC,SAClB+6G,WAAYk9B,EAAQ/gE,OAASu6E,EAC7B9+B,OAAQ,CACJz7C,MAAO+gE,EAAQtlB,OAAOz7C,MACtBllH,MAAOimL,EAAQtlB,OAAO3gK,MACtBgrB,QAASiiG,EAAeg5D,EAAQtlB,OAAO31I,QAAS,IAEpDA,QAASiiG,EAAeg5D,EAAQj7J,QAAS,KAI7C,OAFA1K,EAAOgmH,OAAOryI,KAAKorM,WAEZ/+K,EAAOuhJ,YAClB,EAEA69B,gBAAiB,WACb,OAAQzrM,KAAK0oD,QAAU,CAAC,GAAGu4F,MAC/B,EAEAgrB,oBAAqB,WACjB,IACIhrB,EAAQ30D,EADR5jC,EAAS1oD,KAAK0oD,OAGlB,GAAIA,EACA4jC,EAAO5jC,EAAO4kH,WAAWrF,SACzBhnB,EAASv4F,EAAOu4F,WACb,CACH,IAAIjxI,EAAOhQ,KAAKmH,QAAQ6qL,QAAQhiL,KAC5B07L,EAAW17L,EAAO,EAClBuuE,EAASv+E,KAAKs5C,IAAIilC,SACtB+N,EAAO,IAAIq1C,GAAS1E,KAAK,CAAE1+C,EAAOn5E,EAAIsmM,EAAUntH,EAAOp6E,EAAIunM,GAAY,CAAE17L,EAAMA,GACnF,CAEA,MAAO,CACH7I,QAASnH,KAAKmH,QACdmlF,KAAMA,EACN20D,OAAQA,EAEhB,EAEA0rB,qBAAsB,WAClB,IAAIg/B,EAAgB3rM,KAAKmH,QAAQ6qL,QAC7BhmB,EAAmBhsK,KAAKmH,QAAQklK,cAAcV,UAC9C37J,EAAO27L,EAAc37L,MAAQ27L,EAAcj/B,OAAO3gK,OAAS,GAE3D4/J,EAAY,IAAI+B,EAAa,CAC7BhoK,KAAMimM,EAAcjmM,KACpBqG,MAAOiE,EACPhE,OAAQgE,EACR+pC,SAAU4xJ,EAAc5xJ,SACxB+6G,WAAYkX,EAAiB/6C,MAC7By7C,OAAQV,EAAiBU,OACzB31I,QAASi1I,EAAiBj1I,QAC1BihH,QAASg0B,EAAiBU,OAAO3gK,MAAQ,EACzCiuC,OAAQgyH,EAAiBhyH,SAK7B,OAFA2xH,EAAUt5B,OAAOryI,KAAKorM,WAEfz/B,EAAUiC,YACrB,EAEAg+B,cAAe,WACX,IAAIT,EAAYnrM,KAAKmrM,YACjBU,EAAU7rM,KAAK6oM,MAAMj6G,KAAKi9G,UAG9B,IAFmBA,GAAWA,EAAQlkC,SAASwjC,GAE9B,CACb,IAEIhnM,EAAG2nM,EAFH1mM,EAAI+lM,EAAUhtH,GAvhDT,EAwhDL4tH,EAAkB3gL,EAWtB,OARIprB,KAAKypM,WACLtlM,EAAIgnM,EAAUjtH,GACd4tH,EAAgB36G,IAEhBhtF,EAAIgnM,EAAU/sH,GACd0tH,EAAgB56G,GAGb,CACHirC,MAAO,IAAIL,EAAM12H,EAAGjB,GACpB+sI,MAAO,CACHx+F,WAAYq5J,EACZv5J,SAAUs5J,GAGtB,CACJ,EAEAd,YAAa,SAAS/5L,GAClB,OAAOjR,KAAK6oM,MAAMyB,iBAAiBtqM,KAAMiR,EAC7C,EAEA+6L,YAAa,SAAS1yJ,GAElB,OADgBt5C,KAAKmrM,YACJxjC,SAASruH,EAC9B,EAEA2yJ,eAAgB,WACRjsM,KAAKs0B,QACLt0B,KAAKs0B,MAAMntB,QAAQ+jK,QAAS,GAG5BlrK,KAAK+2K,OACL/2K,KAAK+2K,KAAK5vK,QAAQ+jK,QAAS,EAEnC,EAEAyC,UAAW,WACP,MAAO,CACHlvG,SAAUz+D,KAAKy+D,SACfytG,SAAUlsK,KAAKksK,SACfxjK,MAAO1I,KAAK0I,MACZmkB,WAAY7sB,KAAK6sB,WACjB68K,WAAY1pM,KAAK0pM,WACjBz6J,OAAQjvC,KAAKivC,OAErB,EAEAi9J,YAAa,WACLlsM,KAAK0oD,SACD1oD,KAAK0oD,OAAOu4F,QACZjhJ,KAAK0oD,OAAOu4F,OAAO95I,QAAQ+oB,IAAI,KAAMlwB,KAAK++C,KAG9C/+C,KAAKosK,sBAAqB,GAElC,EAEA+/B,qBAAsB,WACdnsM,KAAK0oD,SACD1oD,KAAK0oD,OAAOu4F,QACZjhJ,KAAK0oD,OAAOu4F,OAAO95I,QAAQ+oB,IAAI,KAAM,IAGzClwB,KAAKosK,sBAAqB,GAElC,EAEAggC,SAAU,WACN,OAAOt1E,EAAQ92H,KAAK4lL,YAAc5lL,KAAK4lL,WAAa5lL,KAAK+6L,OAC7D,IAGJ2P,GAAUriM,UAAUzH,SAAW,CAC3B4xC,UAAU,EACVw/I,QAAS,CACLhlL,SAAS,EACT8nJ,WAAYuM,EACZrxJ,KAjmDe,EAkmDftK,KAAM66J,EACNmM,OAAQ,CACJ3gK,MAAO,GAEXgrB,QAAS,GAEbq+I,OAAQ,CACJpoK,SAAS,EACTM,SAAUowL,GACV3kJ,OAAQmqH,EAAW,GACnBlrB,QAASkrB,EAAW,GACpB5wE,UAAW,CACP5sF,KAAMq3L,GACNz3J,MAAOw3J,KAGfjmB,MAAO,CACHviJ,MAAO,CAAC,GAEZq3I,UAAW,CACPqmB,QAAS,CACLtlB,OAAQ,CACJz7C,MAAO,OACPllH,MAAO,IAGfiuC,OAAQk/I,EAAiBl3B,kBAE7Bm2B,UAAW,CACP5yB,KAAM,CACFx5J,MAAO,IAGfsgK,cAAe,CACXx1E,SAAU,EACVrmE,KAAMmxK,GACNt0K,UAAWu0K,GACXrmD,oBAAqBsmD,KAI7Br5L,EAAWkiM,GAAUriM,UAAWkiM,IAChC/hM,EAAWkiM,GAAUriM,UAAWmiM,IAEhC,IAAI6B,GAAcriC,EAAajnK,OAAO,CAClCoF,KAAM,SAASmrK,EAAYrkI,EAAQy3J,GAC/B18B,EAAajiK,GAAGI,KAAKoC,KAAKvK,MAE1BA,KAAKszK,WAAaA,EAClBtzK,KAAKivC,OAASA,EACdjvC,KAAK0mM,SAAWA,CACpB,EAEAtjE,OAAQ,WACJ,OAAOpjI,KAAKssM,iBAAiBtsM,KAAKszK,WACtC,EAEAg5B,iBAAkB,SAASlpE,GAEvB,IADA,IAAItsH,EAAS,GACJvP,EAAI,EAAGC,EAAS47H,EAAO57H,OAAQD,EAAIC,EAAQD,IAC5C67H,EAAO77H,KAA4B,IAAtB67H,EAAO77H,GAAGyF,SACvB8J,EAAOnV,KAAKyhI,EAAO77H,GAAG6jM,UAAUnjC,SAAS1pF,UAIjD,OAAOznE,CACX,EAEA6zJ,aAAc,WACV,IAAI13C,EAAWjzH,KAEX8rK,EAAe9rK,KAAKivC,OAAOgyG,OAC3B6qB,GACA9rK,KAAKihJ,OAAS6qB,EAAa,CACvB1oC,OAAQpjI,KAAKssM,iBAAiBtsM,KAAKszK,YACnCrkI,OAAQjvC,KAAKivC,OACb3kC,OAAQtK,KAAKoqK,YACbO,aAAc,WAGV,OAFA13C,EAASs5E,gBAEFt5E,EAASguB,MACpB,IAEAjhJ,KAAKihJ,SAAWnqB,EAAQ92H,KAAKihJ,OAAO95I,QAAQ6yC,UAC5Ch6C,KAAKihJ,OAAO95I,QAAQ6yC,OAASh6C,KAAKivC,OAAO+K,SAG7Ch6C,KAAKusM,eAEb,EAEAA,cAAe,WACX,IACIplM,EADMnH,KACQmH,QACd8nC,EAFMjvC,KAEOivC,OACbgiF,EAAQhiF,EAAOgiF,MACfrwH,EAAWquC,EAAO+5J,UAElB9/L,EAAW+nH,IAAUrwH,IACrBqwH,EAAQrwH,EAASqwH,OAGrB,IAAIs0C,EAAOh3B,GAAKvQ,WAAWh+H,KAAKojI,SAAU,CACtCxD,OAAQ,CACJ3O,MAAOA,EACPllH,MAAOkjC,EAAOljC,MACdgrB,QAASkY,EAAOlY,QAChB8nH,SAAU5vG,EAAO4vG,UAErB7kG,OAAQ/K,EAAO+K,SAGf7yC,EAAQ0nI,QACR02B,EAAK7/G,QAGT1lD,KAAKihJ,OAASskB,CAClB,EAEA4N,SAAU,SAASxuK,EAAG6nM,GAClB,OAAOxsM,KAAK2M,OAAO8/L,gBAAgBD,EAAOpnM,EAAGonM,EAAOroM,EAAGnE,KAAK0mM,SAChE,IAGJ1iC,EAAkBqoC,GAAa,CAC3Bx9D,QAAQ,IAGZ,IAAI69D,GAAgB,CAChBC,oBAAqB,SAASvpE,GAe1B,IAdA,IACI/Q,EADeryH,KAAK2M,OAAOwrK,SAAS8tB,mBAAmBjmM,KAAKivC,QACzC9nC,QACnBw1K,EAAYtqD,EAAIsqD,UAChBnqI,EAAW6/E,EAAI7/E,SACfn8B,EAAUg8G,EAAIh8G,QAEdu2L,EAAWp6J,EAAWntC,EAAIkQ,EAC1B4vB,EAAOqN,EAAWj9B,EAAIlQ,EACtBwnM,EAAUx2L,EAAU,EAAI,EACxBkpB,EAAMstK,EAENC,EAAgBC,GAAgB3pE,EAAO,GAAIwpE,EAAUC,EAAS1nK,EAAM5F,GACpEzoB,EAAS,CAAEg2L,GAENljM,EAAM,EAAGA,EAAMw5H,EAAO57H,OAAQoC,IAAO,CAC1C,IAAIuyH,EAAQ4wE,GAAgB3pE,EAAOx5H,GAAMgjM,EAAUC,EAAS1nK,EAAM5F,GAElE,GAAIutK,EAAcF,KAAczwE,EAAMywE,GAAW,CAC7C,IAAII,EAAY,IAAI7T,GACpB6T,EAAUJ,GAAYE,EAAcF,GACpCI,EAAU7nK,GAAQg3F,EAAMh3F,GAExBruB,EAAOnV,KAAKqrM,EAAW7wE,EAC3B,CAEA2wE,EAAgB3wE,CACpB,CAQA,OANKwgD,EAEMmwB,IAAkBxqK,EAAKxrB,IAC9BA,EAAOnV,KAAKmrM,GAFZh2L,EAAOnV,KAAKorM,GAAgBzqK,EAAK8gG,GAASwpE,EAAUC,EAAS1nK,EAAM9uB,EAAU,EAAI,IAK9ES,CAEX,GAGJ,SAASi2L,GAAgBE,EAAWL,EAAUC,EAAS1nK,EAAM5F,GACzD,IAAI+Z,EAAM2zJ,EAAU3zJ,IAChBxiC,EAAS,IAAIqiL,GAKjB,OAHAriL,EAAO81L,GAAYtzJ,EAAIszJ,EAAWC,GAClC/1L,EAAOquB,GAAQmU,EAAInU,EAAO5F,GAEnBzoB,CACX,CAEA,IAAIo2L,GAAkBb,GAAYtpM,OAAO,CACrCqgI,OAAQ,WACJ,OAAOpjI,KAAK2sM,oBAAoB3sM,KAAKszK,WACzC,IAGJ9qK,EAAW0kM,GAAgB7kM,UAAWqkM,IAEtC,IAAIS,GAAgBd,GAAYtpM,OAAO,CACnCwpM,cAAe,WACX,IAAIt9J,EAASjvC,KAAKivC,OACdruC,EAAWquC,EAAO+5J,UAClB/3E,EAAQhiF,EAAOgiF,MAEf/nH,EAAW+nH,IAAUrwH,IACrBqwH,EAAQrwH,EAASqwH,OAGrB,IACIkc,EADiB,IAAIiiD,EAAepvL,KAAKmH,QAAQ0nI,QACvBt5E,QAAQv1D,KAAKojI,UACvCgqE,EAAQ,IAAI7+D,GAAK,CACjB3O,OAAQ,CACJ3O,MAAOA,EACPllH,MAAOkjC,EAAOljC,MACdgrB,QAASkY,EAAOlY,QAChB8nH,SAAU5vG,EAAO4vG,UAErB7kG,OAAQ/K,EAAO+K,SAGnBozJ,EAAMjgE,SAASxrI,KAAKyG,MAAMglM,EAAMjgE,SAAUA,GAE1CntI,KAAKihJ,OAASmsD,CAClB,IAGAC,GAAiB,CACjBC,eAAgB,WACZ,IAOI5+D,EAPAzb,EAAWjzH,KAGXmH,EADMnH,KACQmH,QACdi/L,EAFMpmM,KAEaomM,aACnBn3J,EAAS9nC,EAAQ8nC,OACjBi1J,EAAckC,EAAa5+L,OAG/BxH,KAAKutM,UAAY,GAEjB,IAAK,IAAI7G,EAAW,EAAGA,EAAWxC,EAAawC,IAAY,CAMvD,IALA,IAAIjC,EAAgBx1J,EAAOy3J,GACvB8G,EAAev6E,EAASw6E,WAAWrH,EAAaM,IAChDgH,EAAaF,EAAahmM,OAC1B8rK,EAAa,GAERynB,EAAU,EAAGA,EAAU2S,EAAY3S,IAAW,CACnD,IAAI5+D,EAAQqxE,EAAazS,GACrB5+D,EACAm3C,EAAW3xK,KAAKw6H,GACTlJ,EAAS4yE,oBAAoBpB,KAAmBjH,KACnDlqB,EAAW9rK,OAAS,IACpBknI,EAAczb,EAAS06E,cACnBr6B,EAAYmxB,EAAeiC,EAAUh4D,GAEzCzb,EAAS26E,YAAYl/D,IAEzB4kC,EAAa,GAErB,CAEIA,EAAW9rK,OAAS,IACpBknI,EAAczb,EAAS06E,cACnBr6B,EAAYmxB,EAAeiC,EAAUh4D,GAEzCzb,EAAS26E,YAAYl/D,GAE7B,CAEA1uI,KAAKu1C,SAASprC,QAAQ/B,MAAMpI,KAAKu1C,SAAUv1C,KAAKutM,UACpD,EAEAK,YAAa,SAASrjE,GAClBvqI,KAAKutM,UAAU5rM,KAAK4oI,GACpBA,EAAQ59H,OAAS3M,IACrB,EAEAytM,WAAY,SAASrqE,GACjB,OAAOA,CACX,EAEAyiE,oBAAqB,SAAS52J,GAC1B,IAAI22J,EAAgB32J,EAAO22J,cAG3B,OAFkBA,GAAiB5lM,KAAKmH,QAAQggM,UAE5B1zL,GAAOmyL,GAAiBpI,EAChD,EAEAiP,gBAAiB,SAASrnM,EAAGjB,EAAGuiM,GAM5B,IALA,IAGImH,EAHAxmM,EAAS,IAAIy0H,EAAM12H,EAAGjB,GACtB2pM,EAAY9tM,KAAKomM,aAAaM,GAC9BqH,EAAuB32E,EAGlB7vH,EAAI,EAAGA,EAAIumM,EAAUtmM,OAAQD,IAAK,CACvC,IAAI40H,EAAQ2xE,EAAUvmM,GAEtB,GAAI40H,GAASrF,EAAQqF,EAAMzzH,QAA0B,OAAhByzH,EAAMzzH,QAAoC,IAAlByzH,EAAMnvH,QAAmB,CAClF,IACI6zH,EADW1E,EAAM7iF,IACQilC,SAAS+9C,WAAWj1H,GAE7Cw5H,EAAgBktE,IAChBF,EAAe1xE,EACf4xE,EAAuBltE,EAE/B,CACJ,CAEA,OAAOgtE,CACX,GAGAG,GAAgBlyJ,GAAU/4C,OAAO,CACjC+yC,MAAO,WACH91C,KAAKiuM,QAAQjuM,KAAKmH,QAAQmyC,IAAI2kC,GAClC,EAEAnrC,KAAM,SAASuiD,GACX,IAAI/7C,EAAMt5C,KAAKmH,QAAQmyC,IACvBt5C,KAAKiuM,QAAQxjL,EAAQwlK,iBAAiB32I,EAAI2kC,GAAI3kC,EAAI6kC,GAAIkX,GAC1D,EAEA44G,QAAS,SAAS7oM,GACd,IAAIyG,EAAU7L,KAAK6L,QACfshI,EAAWthI,EAAQshI,SACnB1P,EAAW0P,EAAS,GAAGh7C,SACvBqrC,EAAc2P,EAAS,GAAGh7C,SAE9BtmF,EAAQ0qH,UACRkH,EAASywE,KAAK9oM,GACdyG,EAAQ2qH,SACRgH,EAAY0wE,KAAK9oM,EACrB,IAGJ4+J,EAAkBgqC,GAAe,CAC7B1mL,SAAUw1K,KAGd9mD,GAAiBhiI,QAAQmjB,SAAS,OAAQ62K,IAE1C,IAAIG,GAAqB,CACrBtjC,gBAAiB,WACb,IAAIhtH,EAAO79C,KAAKmqK,UAChB,GAAItsH,IAA6C,KAApCA,EAAK12C,SAAW,CAAC,GAAGuY,YAAuB,CACpD,IAAI45B,EAAMuE,EAAK7tC,OACXq/I,EAAW9gB,GAAKc,SAAS/1F,EAAI2uH,UACjCjoK,KAAKihJ,OAAO/mG,KAAKm1G,GACjBrvJ,KAAKsyF,UAAY,IAAI07G,GAAc3+C,EAAU,CACzC/1G,IAAKA,IAELsqJ,GAAa5jM,KAAKmH,QAAQ8nC,SAC1BjvC,KAAKouM,sBAAsB/+C,EAEnC,CACJ,EAEA++C,sBAAuB,SAAS/+C,GAG5B,IAFA,IAAIjsB,EAASpjI,KAAKquM,kBAETzkM,EAAM,EAAGA,EAAMw5H,EAAO57H,OAAQoC,IAAO,CAC1C,IAAIuyH,EAAQiH,EAAOx5H,GACfuyH,GAASA,EAAM8kB,QAAUnqB,EAAQqF,EAAM8kB,OAAO95I,QAAQ6yC,SACtDmiF,EAAM8kB,OAAO/mG,KAAKm1G,EAE1B,CACJ,GAGAi/C,GAAYtI,GAAiBjjM,OAAO,CACpCoN,OAAQ,WAEJ61L,GAAiBj+L,GAAGoI,OAAO5F,KAAKvK,MAEhCA,KAAK+nM,mBACL/nM,KAAKstM,gBACT,EAEA3G,UAAW,WACP,OAAO+D,EACX,EAEA9B,YAAa,SAASx6L,EAAMqhB,GACxB,IAAIwf,EAASxf,EAAOwf,OAChBy3J,EAAWj3K,EAAOi3K,SAClBd,EAAgB5lM,KAAK6lM,oBAAoB52J,GACzCvmC,EAAQ0F,EAAKssL,YAAYhyL,MAE7B,IAAKouH,EAAQpuH,IAAoB,OAAVA,EAAgB,CACnC,GAAIk9L,IAAkBnyL,GAGlB,OAAO,KAFP/K,EAAQ,CAIhB,CAEA,IAAI+9L,EAAezmM,KAAKymM,aAAax3J,EAAQy3J,GAC7CD,EAAezmM,KAAK+oM,iBAAiBtC,EAAc/9L,EAAO+mB,GAE1D,IAAIwhG,EAAQ7iH,EAAKqhB,OAAOwhG,OAAShiF,EAAOgiF,MACpC/nH,EAAW+lC,EAAOgiF,SAClBA,EAAQw1E,EAAax1E,OAGzB,IAAIkL,EAAQ,IAAIuuE,GAAUhiM,EAAO+9L,GAKjC,OAJAtqE,EAAMlL,MAAQA,EAEdjxH,KAAKm6C,OAAOgiF,GAELA,CACX,EAEA+qE,UAAW,SAAS/qE,GAChB,IAEI0qE,EAAY7mM,KAAK6mM,UAAU1qE,GAE/B,GAAIn8H,KAAKmH,QAAQggM,UAIb,IAHA,IAAIvhB,EAAazpD,EAAMypD,WACnBugB,EAAiBnmM,KAAKmmM,eAAevgB,GAEhCr+K,EAAI,EAAGA,EAAI4+L,EAAe3+L,OAAQD,IAAK,CAC5C,IAAIuqH,EAAQq0E,EAAe5+L,GAE3B,GAAI40H,IAAUrK,EACV,MAGJ+0E,GAfO7mM,KAee6mM,UAAU/0E,GAfzB9xH,KAiBMmH,QAAQ2/L,eACjBD,EAAYxjM,KAAKqT,IAAImwL,EAAW,GAExC,CAIJ,MAAO,CAAEA,EAAWA,EACxB,EAEA8G,cAAe,SAASr6B,EAAYmxB,EAAeiC,GAC/C,IAAIv5L,EAAQs3L,EAAct3L,MAW1B,OAAO,IARHA,IAAU0wL,GACEqP,GACL//L,IAAUywL,GACLuP,GAEAd,IAGK/4B,EAAYmxB,EAAeiC,EACpD,EAEA2H,gBAAiB,WAGb,IAFA,IAAIjrE,EAASpjI,KAAKojI,OACdtsH,EAAS,GACJlN,EAAM,EAAGA,EAAMw5H,EAAO57H,OAAQoC,IACnCkN,EAAOnV,MAAMyhI,EAAOx5H,IAAQ,CAAC,GAAG8+C,QAEpC,OAAO5xC,EAAOsH,OAAOpe,KAAKutM,UAC9B,EAEAvgC,6BAA8B,WAC1B,OAAO,CACX,IAGJxkK,EAAW8lM,GAAUjmM,UAAWglM,GAAgBc,IAEhD,IAAII,GAAclC,GAAYtpM,OAAO,CACjCoF,KAAM,SAASmrK,EAAYmxB,EAAeiC,EAAU8H,EAAaC,GAC7DpC,GAAYtkM,GAAGI,KAAKoC,KAAKvK,KAAMszK,EAAYmxB,EAAeiC,GAE1D1mM,KAAKwuM,YAAcA,EACnBxuM,KAAKyuM,YAAcA,CACvB,EAEA9jC,aAAc,WACV,IAAI17H,EAASjvC,KAAKivC,OACdruC,EAAWquC,EAAO+5J,UAClB7vB,EAAclqI,EAAOs2H,MAAQ,CAAC,EAC9Bt0C,EAAQhiF,EAAOgiF,MAEf/nH,EAAW+nH,IAAUrwH,IACrBqwH,EAAQrwH,EAASqwH,OAGrBjxH,KAAKihJ,OAAS,IAAIxQ,GAAM,CACpBz2F,OAAQ/K,EAAO+K,SAGnBh6C,KAAK0uM,WAAW,CACZh7K,KAAM,CACFu9F,MAAOA,EACPl6F,QAASkY,EAAOlY,SAEpB6oG,OAAQ,OAGRu5C,EAAYptK,MAAQ,IAA6B,IAAxBotK,EAAYnsK,SACrChN,KAAK2uM,aAAa,CACd/uE,OAAQp3H,EAAW,CACfyoH,MAAOA,EACPl6F,QAASkY,EAAOlY,QAChBkoH,QAAS,QACVk6B,IAGf,EAEAy1B,eAAgB,WACZ,IAAIzhE,EAAWntI,KAAK6uM,gBAMpB,OAJK1hE,IACDA,EAAWntI,KAAK6uM,gBAAkB7uM,KAAK8uM,wBAGpC3hE,CACX,EAEA2hE,qBAAsB,WAClB,OAAO9uM,KAAK+uM,mBAAmB/uM,KAAKojI,SACxC,EAEA4rE,cAAe,WACX,OAAIhvM,KAAKwuM,YACExuM,KAAKwuM,YAAYS,oBAAoBjvM,KAAKyuM,aAG9CzuM,KAAKivM,oBAAoBjvM,KAAKyuM,YACzC,EAEAQ,oBAAqB,SAASR,GAC1B,OAAOzuM,KAAK+uM,mBAAmB/uM,KAAKssM,iBAAiBmC,IAAcp4L,SACvE,EAEA04L,mBAAoB,SAAS3rE,GACzB,OAAOA,EAAOvoH,KAAI,SAAUshH,GAAS,OAAO,IAAIwF,GAASuH,QAAQ/M,EAAQ,GAC7E,EAEAwyE,aAAc,SAASxhM,GACnB,IAAIyyH,EAAS,IAAI2O,GAAKphI,GACtByyH,EAAOuN,SAASxrI,KAAKyG,MAAMw3H,EAAOuN,SAAUntI,KAAK4uM,kBAEjD5uM,KAAKihJ,OAAO9mG,OAAOylF,EACvB,EAEAsvE,gBAAiB,WACb,OAAOlvM,KAAKwuM,aAAgBxuM,KAAKyuM,aAAezuM,KAAKyuM,YAAYjnM,MACrE,EAEAknM,WAAY,SAASvhM,GACjB,IAAIyhM,EAAiB5uM,KAAK4uM,iBACtBO,EAAeP,EAAe/nM,MAAM,GACpCuoM,EAAmBpvM,KAAKkvM,kBAE5B,GAAIE,EAAkB,CAClB,IAAIJ,EAAgBhvM,KAAKgvM,gBAEzB70J,EAAOg1J,EAAcH,EACzB,CAEA,IAAIt7K,EAAO,IAAI66G,GAAKphI,GACpBumB,EAAKy5G,SAASxrI,KAAKyG,MAAMsrB,EAAKy5G,SAAUgiE,IAEnCC,GAAoBR,EAAepnM,OAAS,GAC7CxH,KAAKqvM,WAAW37K,GAGpB1zB,KAAKihJ,OAAO9mG,OAAOzmB,EACvB,EAEA27K,WAAY,SAASC,GACjB,IAAIh7B,EAAQt0K,KAAK2M,OACbi6L,EAAatyB,EAAMntK,QAAQy/L,WAC3BrmB,EAAYjM,EAAMqvB,gBAAgB3jM,KAAKivC,QACvCsgK,EAAgBj7B,EAAMozB,0BAA0BnnB,GAChDivB,EAAUjvB,EAAU9H,QAAQ82B,EAAeA,GAAe,GAC1DpiE,EAAWntI,KAAK4uM,iBAChBa,EAAatiE,EAAS,GAAGh7C,SACzBu9G,EAAYptK,EAAK6qG,GAAUh7C,SAC3BxmF,EAAMi7L,EAAa4I,EAAQvxH,GAAKuxH,EAAQtxH,GAExC0oH,EACA0I,EAASziE,OAAOlhI,EAAK+jM,EAAUvrM,GAC1B0oI,OAAOlhI,EAAK8jM,EAAWtrM,GAE5BmrM,EAASziE,OAAO6iE,EAAUtqM,EAAGuG,GACxBkhI,OAAO4iE,EAAWrqM,EAAGuG,EAElC,IAGAgkM,GAAkBpB,GAAYxrM,OAAO,CACrC+rM,qBAAsB,WAClB,OAAO9uM,KAAK+uM,mBAAmB/uM,KAAK2sM,oBAAoB3sM,KAAKszK,YACjE,EAEA27B,oBAAqB,SAASR,GAC1B,OAAOzuM,KAAK+uM,mBAAmB/uM,KAAK2sM,oBAAoB8B,IAAcp4L,SAC1E,IAGJ7N,EAAWmnM,GAAgBtnM,UAAWqkM,IAEtC,IAAIkD,GAAoBrB,GAAYxrM,OAAO,CACvC+rM,qBAAsB,WAClB,IAAIe,EAAiB,IAAIzgB,EAAepvL,KAAKmH,QAAQ0nI,QACjDykC,EAAatzK,KAAKojI,SAEtB,OAAOysE,EAAet6I,QAAQ+9G,EAClC,EAEA27B,oBAAqB,WAGjB,IAFA,IAAIL,EAAiB5uM,KAAK4uM,iBACtBI,EAAgB,GACXplM,EAAMglM,EAAepnM,OAAS,EAAGoC,GAAO,EAAGA,IAAO,CACvD,IAAI2gI,EAAUqkE,EAAehlM,GAC7BolM,EAAcrtM,KAAK,IAAIggI,GAASuH,QAC5BqB,EAAQp4C,SACRo4C,EAAQnB,aACRmB,EAAQpB,aAEhB,CAEA,OAAO6lE,CACX,IAGAc,GAAYxB,GAAUvrM,OAAO,CAC7B4qM,cAAe,SAASr6B,EAAYmxB,EAAeiC,EAAU8H,GACzD,IAEIuB,EAEAtB,EAJAtH,EAAYnnM,KAAKmH,QAAQggM,UACzBh6L,GAASs3L,EAAcl/B,MAAQ,CAAC,GAAGp4J,MAInCg6L,GAAaT,EAAW,GAAK8H,IAEP,QADFxuM,KAAK6lM,oBAAoBpB,IAEzCgK,EAAcD,EAAYl7B,WAC1By8B,EAAkBvB,GAElBC,EAAczuM,KAAKgwM,gBAAgB18B,EAAYozB,EAAUv5L,IAajE,OAAO,IARHA,IAAU0wL,GACE8R,GACLxiM,IAAUywL,GACLgS,GAEArB,IAGKj7B,EAAYmxB,EAAeiC,EAAUqJ,EAAiBtB,EAC/E,EAEAp8D,OAAQ,SAAS20B,GAGbsnC,GAAUvmM,GAAGsqI,OAAO9nI,KAAKvK,KAAMgnK,GAE/B,IAAIynC,EAAczuM,KAAKiwM,aACvB,GAAIxB,EACA,IAAK,IAAI7kM,EAAM,EAAGA,EAAM6kM,EAAYjnM,OAAQoC,IAAO,CAC/C,IAAIsmM,EAAazB,EAAY7kM,GACzB4/L,EARGxpM,KAQkB41L,aAAand,QAAQy3B,EAAWtqB,YACzDsqB,EAAW79D,OAAOm3D,EACtB,CAER,EAEAwG,gBAAiB,SAAS18B,EAAYozB,EAAUv5L,GAC5C,IAAI8lH,EAAWjzH,KAEXomM,EAAepmM,KAAKomM,aACpB+J,EAAW78B,EAAW,GAAGsS,WACzBp+K,EAAS8rK,EAAW9rK,OACpB2oM,EAAW,IACXA,EAAW,EACX3oM,KAGJ,IAAI4oM,EAASD,EAAW3oM,EACpBg1K,EAAcx8K,KAAKqmM,cAAc,GAAGP,oBAAsB,EAAI,EAC9D2I,EAAc,GAElBzuM,KAAKiwM,aAAejwM,KAAKiwM,cAAgB,GACzC,IAAK,IAAIrqB,EAAauqB,EAAUvqB,EAAawqB,EAAQxqB,IAAc,CAC/D,IAAImV,EAAUnV,EAAapJ,EACvB6zB,EAAkB3J,EAClBvqE,OAAQ,EAEZ,GAEIA,EAAQiqE,IADRiK,GACsCtV,SACjCsV,EAAkB,IAAMl0E,GAEjC,GAAIA,EACIhvH,IAAU0wL,IAAQjY,EAAauqB,IAAa/J,EAAaiK,GAAiBtV,EAAU,IACpF0T,EAAY9sM,KAAKsxH,EAASq9E,sBAAsB1qB,EAAYmV,EAASA,EAAU,EAAGsV,IAGtF5B,EAAY9sM,KAAKw6H,GAEbhvH,IAAU0wL,IAAQjY,EAAa,EAAIwqB,IAAWhK,EAAaiK,GAAiBtV,EAAU,IACtF0T,EAAY9sM,KAAKsxH,EAASq9E,sBAAsB1qB,EAAYmV,EAASA,EAAU,EAAGsV,QAEnF,CACH,IAAIE,EAAgBt9E,EAASu9E,qBAAqB5qB,GAClD3yD,EAASg9E,aAAatuM,KAAK4uM,GAC3B9B,EAAY9sM,KAAK4uM,EACrB,CACJ,CAEA,OAAO9B,CACX,EAEA6B,sBAAuB,SAAS1qB,EAAYmV,EAAS0V,EAAWC,GAK5D,IAJA,IAEIv0E,EAFAiqE,EAAepmM,KAAKomM,aACpB9sL,EAAQo3L,EAGLp3L,EAAQ,IAAM6iH,GAEjBA,EAAQiqE,IADR9sL,GAC4Bm3L,GAUhC,OAPKt0E,EAIDA,EAAQiqE,EAAa9sL,GAAOyhL,IAH5B5+D,EAAQn8H,KAAKwwM,qBAAqB5qB,GAClC5lL,KAAKiwM,aAAatuM,KAAKw6H,IAKpBA,CACX,EAEAq0E,qBAAsB,SAAS5qB,GAC3B,IAAIz+K,EAAUnH,KAAKymM,aAAa,CAAC,EAAG,GAChCtqE,EAAQ,IAAIuuE,GAAU,EAAGvjM,GAI7B,OAHAg1H,EAAMypD,WAAaA,EACnBzpD,EAAMltF,OAAS,CAAC,EAETktF,CACX,EAEA0pE,oBAAqB,SAAS52J,GAC1B,OAAOA,EAAO22J,eAAiBnyL,EACnC,EAEAu5J,6BAA8B,WAC1B,OAAO,CACX,IAGA2jC,GAAwB/oM,EAAM7E,OAAO,CACrCoF,KAAM,WAEFnI,KAAK4wM,WAAa,CAAC,CACvB,EAEAzpJ,OAAQ,SAAS0pJ,GACb,IAAID,EAAa5wM,KAAK4wM,WAEtB,IAAK,IAAIhJ,KAAYiJ,EAAiB,CAClC,IAAIC,EAAaD,EAAgBjJ,GAC7B3zI,EAAQ28I,EAAWhJ,GACvBgJ,EAAWhJ,GAAY3zI,EAAQA,GAAS,CAAEv9C,IAAK0gH,EAAWj+G,IAAK2nJ,GAE/D7sG,EAAMv9C,IAAMrT,KAAKqT,IAAIu9C,EAAMv9C,IAAKo6L,EAAWp6L,KAC3Cu9C,EAAM96C,IAAM9V,KAAK8V,IAAI86C,EAAM96C,IAAK23L,EAAW33L,IAC/C,CACJ,EAEA08B,MAAO,SAAS+xJ,GACZ5nM,KAAK4wM,WAAWhJ,QAAYjpD,CAChC,EAEAn+I,MAAO,SAASonM,GACZ,OAAO5nM,KAAK4wM,WAAWhJ,EAC3B,IAGAmJ,GAAW/mC,EAAajnK,OAAO,CAC/BoF,KAAM,SAASw+C,EAASx/C,EAASwmK,GAC7B3D,EAAajiK,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAEhCnH,KAAKm5J,QAAU,IAAIyX,EAAQjqH,EAAS3mD,KAAKmH,QAASwmK,GAClD3tK,KAAKm6C,OAAOn6C,KAAKm5J,QACrB,EAEAwR,aAAc,WACV3qK,KAAKm5J,QAAQhyJ,QAAQ+jK,OAASlrK,KAAKmH,QAAQ+jK,MAC/C,EAEA74B,OAAQ,SAAS20B,GACb,IAAI7/J,EAAUnH,KAAKmH,QACfqrC,EAAWrrC,EAAQqrC,SACnBi3J,EAAYtiM,EAAQsiM,UACpB3oK,EAAO9gC,KAAKu1C,SAAS,GACrBy7H,EAAclwI,EAAK35B,QACnBmyC,EAAMxY,EAAKwY,IACX0+F,EAAUl3G,EAAK35B,QAAQ6wI,QACvBoiC,EAAWpT,EAEfgK,EAAY9/B,MAAQ1+F,EAAWy+C,EAAS7lE,EACxC4lJ,EAAY5W,OAAS5nH,EAAW0+C,EAAMD,EAElC9pF,EAAQmG,WAAa60L,GACjB3vJ,GACAw+H,EAAY5W,OAASlpE,GAEhBu4G,GAAanwJ,EAAIttC,SAAWg7J,EAAUh7J,WACvCglK,EAAY5W,OAASjpE,IAGzB6/E,EAAY9/B,MAAQu4D,EAAYn+K,EAAQF,EAErCjkB,EAAQmG,WAAa2jF,GAC5B+/E,EAAY5W,OAASnpE,EACrB+/E,EAAY9/B,MAAQjgD,GACb9pF,EAAQmG,WAAa80L,GACxB5vJ,EACAw+H,EAAY5W,OAASqvC,EAAYt4G,EAASD,EAE1C8/E,EAAY9/B,MAAQu4D,EAAYr+K,EAAOE,EAEpCnkB,EAAQmG,WAAa+0L,KACxB7vJ,EAEI4nI,EADAqvB,EACW,IAAI1iC,EACXC,EAAU/oF,GAAI+oF,EAAU9oF,GAAK5kC,EAAIttC,SACjCg7J,EAAU7oF,GAAI6oF,EAAU9oF,IAGjB,IAAI6oF,EACXC,EAAU/oF,GAAI+oF,EAAU5oF,GACxB4oF,EAAU7oF,GAAI6oF,EAAU5oF,GAAK9kC,EAAIttC,WAIzCglK,EAAY9/B,MAAQjgD,EAEhBmpF,EADAqvB,EACW,IAAI1iC,EACXC,EAAU7oF,GAAI6oF,EAAU9oF,GACxB8oF,EAAU7oF,GAAK7kC,EAAIvtC,QAASi7J,EAAU5oF,IAG/B,IAAI2oF,EACXC,EAAU/oF,GAAK3kC,EAAIvtC,QAASi7J,EAAU9oF,GACtC8oF,EAAU/oF,GAAI+oF,EAAU5oF,MAMnCj3E,EAAQ4yC,WACLvH,EACAwlG,EAAQxrH,KAAOwrH,EAAQvrH,OAClB2tJ,EAASruK,QAAU+0B,EAAKysI,WAAWxhK,SAAW,EAEnDisI,EAAQ9yH,IAAM8yH,EAAQtrH,QACjB0tJ,EAASpuK,SAAW80B,EAAKysI,WAAWvhK,UAAY,GAI7D80B,EAAKuxG,OAAO+nC,EAChB,EAEA42B,eAAgB,SAASnF,GACrB,IACI9lL,EADW/lB,KAAKmH,QAAQqrC,SACLj9B,EAAIlQ,EACvByQ,EAAQiQ,EAAQ,IAChBpa,EAAMoa,EAAQ,IACd+a,EAAO9gC,KAAKu1C,SAAS,GACrB07J,EAAYjxM,KAAK2M,OAAO2sC,IAE5B,GAAI23J,EAAUn7L,GAAS+1L,EAAQ/1L,IAAU+1L,EAAQlgM,GAAOslM,EAAUtlM,GAAM,CACpE,IAAIq7J,EAAYlmI,EAAKwsI,WAAWlmK,QAChC4/J,EAAUlxJ,GAASzS,KAAK8V,IAAI83L,EAAUn7L,GAAQ+1L,EAAQ/1L,IACtDkxJ,EAAUr7J,GAAOtI,KAAKqT,IAAIu6L,EAAUtlM,GAAMkgM,EAAQlgM,IAElD3L,KAAKqyI,OAAO20B,EAChB,CACJ,IAsBJ,SAASkqC,GAAmCjwD,EAAQ8sB,GAC5CA,IACA9sB,EAAO95I,QAAQkmB,UAAY0gJ,EAAqB1gJ,UAChD4zH,EAAO95I,QAAQqpB,KAAOu9I,EAAqBv9I,KAC3CywH,EAAO95I,QAAQ6sB,UAAY+5I,EAAqB/5I,UAChDitH,EAAO95I,QAAQo0I,oBAAsBwyB,EAAqBxyB,oBAC1D0F,EAAO95I,QAAQs0I,YAAcsyB,EAAqBtyB,YAE1D,CA3BAuoB,EAAkB+sC,GAAU,CACxBzjM,SAAU+0L,GACVtpJ,OAAQmqH,EAAW,GACnBlrB,QAASkrB,EAAW,GACpBjyC,MAAOqvC,EACPxL,WAAY,GACZ4X,OAAQ,CACJ3gK,MAAO,EACPklH,MAAO,IAEXw4E,WAAW,EACXj3J,UAAU,EACV8/C,UAAW,CACP5sF,KAAMq3L,GACNz3J,MAAOw3J,IAEX9iJ,OAAQ,IAaZ,IAAIm3J,GAA+B,CAC/BD,mCAAoC,WAChClxM,KAAK++C,IAAM/+C,KAAK++C,KAAO5uB,KAEvB,IAAI49I,EAAuBvlK,EAAW,CAClCwrB,UAAWh0B,KAAKirM,oBACjBjrM,KAAKmH,QAAQklK,eAEhB6kC,GAAmClxM,KAAKihJ,OAAQ8sB,EACpD,EAEAk9B,iBAAkB,WACd,IAAI71B,EAASp1K,KAAKmH,QAAQiuK,OACtB0a,EAAerlK,EAAQolK,gBAAgBza,GAE3C,OAAI0a,EACOA,EAAa9vL,KAAK2tK,aAGtB3tK,KAAK+qM,aAAa31B,EAC7B,EAEA82B,YAAa,WACTlsM,KAAKihJ,OAAO95I,QAAQ+oB,IAAI,KAAMlwB,KAAK++C,KACnC/+C,KAAKosK,sBAAqB,EAC9B,EAEA+/B,qBAAsB,WAClBnsM,KAAKihJ,OAAO95I,QAAQ+oB,IAAI,KAAM,IAC9BlwB,KAAKosK,sBAAqB,EAC9B,GAKAglC,GAAMpnC,EAAajnK,OAAO,CAC1BoF,KAAM,SAASO,EAAOvB,GAClB6iK,EAAajiK,GAAGI,KAAKoC,KAAKvK,MAE1BA,KAAKmH,QAAUA,EACfnH,KAAKixH,MAAQ9pH,EAAQ8pH,OAASowC,EAC9BrhK,KAAKypM,UAAYzwE,EAAeh5H,KAAKmH,QAAQsiM,WAAW,GACxDzpM,KAAK0I,MAAQA,CACjB,EAEAyH,OAAQ,WACAnQ,KAAK4qM,YAIT5qM,KAAK4qM,WAAY,EAEjB5qM,KAAKioL,cACLjoL,KAAKyqM,aAEDzqM,KAAK2oM,UACL3oM,KAAKm6C,OAAOn6C,KAAK2oM,UAEzB,EAEA1gB,YAAa,WACT,IACI7S,EADUp1K,KAAKmH,QACEiuK,OAEjBA,EAAOpoK,UACPhN,KAAKs0B,MAAQt0B,KAAK8qM,mBAAmB11B,GACrCp1K,KAAKm6C,OAAOn6C,KAAKs0B,OAEzB,EAEAw2K,mBAAoB,SAAS3jM,GACzB,OAAO,IAAI4pM,GAAS/wM,KAAK+qM,aAAa5jM,GAClCqB,EAAW,CACPgqC,SAAUxyC,KAAKmH,QAAQqrC,UAE3BrrC,GACGnH,KAAK2tK,YAChB,EAEAo9B,aAAc,SAAS5jM,GACnB,IAAI0xK,EAAgBxV,EAAYl8J,GAEhC,OAAI0xK,EACOA,EAAc74K,KAAK2tK,aAGvB3tK,KAAKgrM,YAAY7jM,EAAQ8J,OACpC,EAEA+5L,YAAa,SAAS/5L,GAClB,OAAOjR,KAAK6oM,MAAMyB,iBAAiBtqM,KAAMiR,EAC7C,EAEAohI,OAAQ,SAAS20B,GAGbhnK,KAAKmQ,SAEL,IAAImkB,EAAQt0B,KAAKs0B,MAajB,GAXAt0B,KAAKs5C,IAAM0tH,EAEP1yI,IACAA,EAAMntB,QAAQsiM,UAAYzpM,KAAKypM,UAC/Bn1K,EAAM+9G,OAAO20B,IAGbhnK,KAAK+2K,MACL/2K,KAAK+2K,KAAK1kC,OAAO20B,GAGjBhnK,KAAKm4L,UACL,IAAK,IAAI5wL,EAAI,EAAGA,EAAIvH,KAAKm4L,UAAU3wL,OAAQD,IAlBhCvH,KAmBEm4L,UAAU5wL,GAAG8qI,OAAO20B,EAGzC,EAEA2D,aAAc,WACV,IAAI13C,EAAWjzH,KAGXs5C,EADMt5C,KACIs5C,IACVnyC,EAFMnH,KAEQmH,QACd2kK,EAAe3kK,EAAQ85I,OAE3B,IAAqB,IAAjBjhJ,KAAKgN,QAKL,GAJAg9J,EAAajiK,GAAG4iK,aAAapgK,KAAKvK,MAElCA,KAAKkxM,qCAEDplC,EAAc,CACd,IAAI7qB,EAASjhJ,KAAKqxM,WAAavlC,EAAa,CACxCI,SAAUlsK,KAAKksK,SACfztG,SAAUz+D,KAAKy+D,SACf/1D,MAAO1I,KAAK0I,MACZ4B,OAAQtK,KAAKoqK,YACbn7H,OAAQjvC,KAAKivC,OACbpiB,WAAY7sB,KAAK6sB,WACjB68K,WAAY1pM,KAAK0pM,WACjBv9B,aAAcnsK,KAAKmsK,aACnBnlH,MAAOhnD,KAAKgnD,MACZslC,KAAMhzC,EAAI2uH,SACV0C,aAAc,WACV,IAAIp2G,EAAQ,IAAIk8E,GAEhB,OADAxd,EAASq+E,WAAW/8I,GACbA,CACX,EACAptD,QAASA,IAGT85I,GACAjhJ,KAAKihJ,OAAO9mG,OAAO8mG,EAE3B,MAAW3nG,EAAIvtC,QAAU,GAAKutC,EAAIttC,SAAW,GACzChM,KAAKsxM,WAAWtxM,KAAKihJ,OAGjC,EAEAqwD,WAAY,SAASrwD,GACjB,IAAI95I,EAAUnH,KAAKmH,QACfulK,EAASvlK,EAAQulK,OACjB6kC,EAAgBz6E,EAAQ41C,EAAO31I,SAAW21I,EAAO31I,QAAU5vB,EAAQ4vB,QACnEu1D,EAAOtsF,KAAKs5C,IAAI2uH,SAEpB37E,EAAKt8E,KAAKjE,MAAQ1I,KAAKiT,MAAMg2E,EAAKt8E,KAAKjE,OAEvC,IAAIwjC,EAAOvvC,KAAKqxM,WAAa9iE,GAAKc,SAAS/iD,EAAM,CAC7C54D,KAAM,CACFu9F,MAAOjxH,KAAKixH,MACZl6F,QAAS5vB,EAAQ4vB,SAErB6oG,OAAQ,CACJ3O,MAAOjxH,KAAKwxM,iBACZzlM,MAAO2gK,EAAO3gK,MACdgrB,QAASw6K,EACT1yD,SAAU6tB,EAAO7tB,YAIrB9yI,EAAQ/L,KAAKs5C,IAAIvtC,QACjBC,EAAShM,KAAKs5C,IAAIttC,SAetB,IAbW7E,EAAQqrC,SAAWzmC,EAAQC,GAvJpB,IA0Jd02J,EAAiBnzH,IAGbxjC,EAAQ,GAAKC,EAAS,KACtBujC,EAAKpoC,QAAQy4H,OAAO4O,SAAW,UAIvCyS,EAAO9mG,OAAO5K,GAEVs1J,GAAmB19L,GAAU,CAC7B,IAAI2lK,EAAU9sK,KAAK4sK,sBAAsBr9H,EAAM,CAAEkiK,UAAWzxM,KAAKixH,OAASzoH,EAAW,CACjFmD,IAAMxE,EAAQqrC,cAAsBmsG,EAAX,CAAE,EAAG,IAC/Bx3I,EAAQ2lK,UAEX7rB,EAAO9mG,OAAO2yH,EAClB,CACJ,EAEAlB,gBAAiB,SAASz+J,GACtB,IAAIw+J,EAAYp9B,GAAKc,SAASrvI,KAAKs5C,IAAI2uH,SAAU96J,GAEjD,OAAOu1J,EAAiBiJ,EAC5B,EAEA8/B,gBAAiB,WACb,OAAOzrM,KAAKqxM,UAChB,EAEAplC,oBAAqB,WACjB,MAAO,CACH9kK,QAASnH,KAAKmH,QACdmlF,KAAMtsF,KAAKs5C,IAAI2uH,SACfhnB,OAAQjhJ,KAAKqxM,WAErB,EAEA1kC,qBAAsB,SAASx/J,GAC3B,IAAIigK,EAAcptK,KAAKmH,QAAQklK,cAAcV,UAAUe,OAAO3gK,MAC1D4/J,EAAYp9B,GAAKc,SAASrvI,KAAKs5C,IAAI9tC,IAAI4hK,EAAc,GAAGnF,SAAU96J,GAEtE,OAAOu1J,EAAiBiJ,EAC5B,EAEA6lC,eAAgB,WACZ,IAAIvgF,EAAQjxH,KAAKixH,MACby7C,EAAS1sK,KAAKmH,QAAQulK,OACtBh5C,EAAag5C,EAAO6lB,aAAeyK,GACnC0U,EAAchlC,EAAOz7C,MAMzB,OAJK6F,EAAQ46E,KACTA,EAAc,IAAI1+E,GAAM/B,GAAOyC,WAAWA,GAAYnC,SAGnDmgF,CACX,EAEA9F,cAAe,WACX,IAOIxmM,EAAGjB,EAPHkuH,EAAMryH,KACNmH,EAAUkrH,EAAIlrH,QACdmyC,EAAM+4E,EAAI/4E,IACVmwJ,EAAYp3E,EAAIo3E,UAChBoC,EAAU7rM,KAAK6oM,MAAMj6G,KAAKi9G,WAAavyJ,EACvCyyJ,EAAkB3gL,EAClB0gL,EAAgB56G,EAGpB,GAAI/pF,EAAQqrC,SACRptC,EAAI/B,KAAKqT,IAAI4iC,EAAI6kC,GAAI0tH,EAAQ1tH,IArvFpB,EAsvFLsrH,EACAtlM,EAAId,KAAK8V,IAAImgC,EAAI4kC,GAAI2tH,EAAQ3tH,KAE7B/5E,EAAId,KAAKqT,IAAI4iC,EAAI8kC,GAAIytH,EAAQztH,IAC7B0tH,EAAgB36G,OAEjB,CACH,IAAIlT,EAAK56E,KAAK8V,IAAImgC,EAAI2kC,GAAI4tH,EAAQ5tH,IAC9BE,EAAK96E,KAAKqT,IAAI4iC,EAAI6kC,GAAI0tH,EAAQ1tH,IAE9Bh3E,EAAQggM,WACR2E,EAAgB36G,EACZs4G,GACAsC,EAAkBzgL,EAClBlmB,EAAI+4E,GAEJ/4E,EAAI64E,EAER95E,EAAId,KAAK8V,IAAImgC,EAAI4kC,GAAI2tH,EAAQ3tH,IAxwFxB,IA0wFDurH,EACArkM,EAAI+4E,EA3wFH,GA6wFD/4E,EAAI64E,EA7wFH,EA8wFD8tH,EAAkBzgL,GAEtBnnB,EAAId,KAAK8V,IAAImgC,EAAI4kC,GAAI2tH,EAAQ3tH,IAErC,CAEA,MAAO,CACHi+C,MAAO,IAAIL,EAAM12H,EAAGjB,GACpB+sI,MAAO,CACHx+F,WAAYq5J,EACZv5J,SAAUs5J,GAGtB,EAEAE,YAAa,SAAS1yJ,GAClB,OAAOt5C,KAAKs5C,IAAIquH,SAASruH,EAC7B,EAEAq0H,UAAW,WACP,MAAO,CACHlvG,SAAUz+D,KAAKy+D,SACfytG,SAAUlsK,KAAKksK,SACfxjK,MAAO1I,KAAK0I,MACZmkB,WAAY7sB,KAAK6sB,WACjB68K,WAAY1pM,KAAK0pM,WACjBv9B,aAAcnsK,KAAKmsK,aACnBnlH,MAAOhnD,KAAKgnD,MACZ/X,OAAQjvC,KAAKivC,OAErB,EAEAm9J,SAAU,WACN,OAAOpsM,KAAK4lL,UAChB,IA8BJ,SAAStkL,GAAQq3B,EAAU/O,GACvB+O,EAASr3B,QAAQsoB,EACrB,CAEA,SAASgoH,GAAej5G,EAAU/O,GAG9B,IAFA,IAAIpiB,EAASmxB,EAASnxB,OAEboC,EAAMpC,EAAS,EAAGoC,GAAO,EAAGA,IACjCggB,EAAS+O,EAAS/uB,GAAMA,EAAMpC,EAAS,EAE/C,CArCAgB,EAAW4oM,GAAI/oM,UAAWkiM,IAC1B/hM,EAAW4oM,GAAI/oM,UAAWmiM,IAC1BhiM,EAAW4oM,GAAI/oM,UAAW8oM,IAE1BC,GAAI/oM,UAAUzH,SAAW,CACrB8rK,OAAQ,CACJ3gK,MAAO,GAEXymC,UAAU,EACVs6H,QAAS,CACL9mB,SAAU,SAEdovB,OAAQ,CACJpoK,SAAS,EACTiE,OAAQ,OAEZ8lB,QAAS,EACT8/I,MAAO,CACHviJ,MAAO,CAAC,GAEZ+3I,cAAe,CACX77I,KAAMmxK,GACNt0K,UAAWu0K,GACXrmD,oBAAqBsmD,KAgB7B,IAAI8P,GAAgB3nC,EAAajnK,OAAO,CACpCoF,KAAM,SAAShB,GACX6iK,EAAajiK,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAEhCnH,KAAKsB,QAAU6F,EAAQi5I,IAAMxO,GAAiBtwI,EAClD,EAEA+wI,OAAQ,SAAS/4F,GACb,IAAI+4E,EAAMryH,KAAKmH,QACXqrC,EAAW6/E,EAAI7/E,SACfphC,EAAMihH,EAAIjhH,IACVogI,EAAUnf,EAAImf,QACdj8F,EAAWv1C,KAAKu1C,SAChBj6B,EAAQi6B,EAAS/tC,OACjB29B,EAAOqN,EAAWj9B,EAAIlQ,EACtBusM,EAAQt2L,EAAQlK,EAAOogI,GAAWl2H,EAAQ,GAC1Cu2L,GAAYr/J,EAAW8G,EAAIttC,SAAWstC,EAAIvtC,SAAW6lM,EACrDtkM,EAAWgsC,EAAInU,EAAO,GAAK0sK,GAAYzgM,EAAM,GAEjDpR,KAAKsB,QAAQi0C,GAAU,SAAU1R,EAAOj6B,GACpC,IAAIyhM,GAAYxnK,EAAMyV,KAAOA,GAAKlyC,QAElCikM,EAASlmK,EAAO,GAAK73B,EACrB+9L,EAASlmK,EAAO,GAAK73B,EAAWukM,EAEhChuK,EAAMwuG,OAAOg5D,GACTzhM,EAAM0R,EAAQ,IACdhO,GAAaukM,EAAWrgE,GAG5BlkI,GAAYukM,CAChB,GACJ,IAGJ7tC,EAAkB2tC,GAAe,CAC7Bn/J,UAAU,EACVphC,IAAK,EACLogI,QAAS,IAGb,IAAIsgE,GAAY9nC,EAAajnK,OAAO,CAChCsvI,OAAQ,SAAS20B,GAQb,IAPA,IAEI+qC,EAAe/xM,KAAKmH,QAAQqrC,SAAWntC,EAAIkQ,EAC3CggC,EAAWv1C,KAAKu1C,SAChBk1H,EAAgBl1H,EAAS/tC,OACzB8xC,EAAMt5C,KAAKs5C,IAAM,IAAIytH,EAEhBx/J,EAAI,EAAGA,EAAIkjK,EAAeljK,IAAK,CACpC,IAAI2iK,EAAe30H,EAAShuC,GAE5B,IAA6B,IAAzB2iK,EAAal9J,QAAmB,CAChC,IAAIq+L,EAAWnhC,EAAa5wH,IAAIlyC,QAChCikM,EAASlkC,OAAOH,EAAW+qC,GAEjB,IAANxqM,IACA+xC,EAfGt5C,KAeYs5C,IAAM+xJ,EAASjkM,SAGlC8iK,EAAa73B,OAAOg5D,GACpB/xJ,EAAI3sB,KAAK0+K,EACb,CACJ,CACJ,IAGJrnC,EAAkB8tC,GAAW,CACzBt/J,UAAU,IAGd,IAAIw/J,GAAWhM,GAAiBjjM,OAAO,CACnCoN,OAAQ,WACJ61L,GAAiBj+L,GAAGoI,OAAO5F,KAAKvK,MAChCA,KAAK+nM,kBACT,EAEApB,UAAW,WACP,OAAOyK,EACX,EAEAa,YAAa,WACT,OAAON,EACX,EAEAO,UAAW,WACP,OAAOJ,EACX,EAEAnK,YAAa,SAASC,EAAUC,GAG5B,OAFa7B,GAAiBj+L,GAAG4/L,YAAYp9L,KAAKvK,KAAM4nM,EAAUC,EAGtE,EAEAe,YAAa,SAASx6L,EAAMqhB,GACxB,IAAIm2J,EAAan2J,EAAOm2J,WACpB32I,EAASxf,EAAOwf,OAChBy3J,EAAWj3K,EAAOi3K,SAElBv/L,EADMnH,KACQmH,QACdouC,EAFMv1C,KAESu1C,SACf48J,EAAiBr7E,EAAQ7nF,EAAOklG,OAASllG,EAAOklG,MAAQhtI,EAAQogM,aAChE7+L,EAAQ1I,KAAK08L,WAAWtuL,GACxBq4L,EAAezmM,KAAKymM,aAAax3J,EAAQy3J,GAEzCvwB,EAAeswB,EAAarxB,OAC5B+8B,GACIh8B,EAAa7oK,WAAa+0L,KAC1BlsB,EAAa7oK,SAAW60L,IAIhCsE,EAAaU,UAAYgL,EAEzB,IAAIlhF,EAAQ7iH,EAAKqhB,OAAOwhG,OAAShiF,EAAOgiF,MACpCvoH,EAAQ,GAAK+9L,EAAa2L,gBAC1BnhF,EAAQw1E,EAAa2L,eAGzB3L,EAAezmM,KAAK+oM,iBAAiBtC,EAAc/9L,EAAO+mB,GACtDvmB,EAAW+lC,EAAOgiF,SAClBA,EAAQw1E,EAAax1E,OAGzB,IACIkL,EAAQ,IADIn8H,KAAK2mM,YACT,CAAcj+L,EAAO+9L,GACjCtqE,EAAMlL,MAAQA,EAEd,IAAIohF,EAAU98J,EAASqwI,GAClBysB,IAEDA,EAAU,IADQryM,KAAKiyM,cACb,CAAgB,CACtBz/J,SAAUrrC,EAAQy/L,WAClBx1L,IAAKjK,EAAQiK,IACbogI,QAASrqI,EAAQqqI,QACjB4O,KAAMj5I,EAAQy/L,aAAe5mM,KAAKuqK,cAAgB,CAAC,GAAGnqB,MAE1DpgJ,KAAKm6C,OAAOk4J,IAGZlrM,EAAQggM,UACQnnM,KAAKsyM,aAAaH,EAAgBE,GACxCl4J,OAAOgiF,GAEjBk2E,EAAQl4J,OAAOgiF,GAGnB,OAAOA,CACX,EAEAm2E,aAAc,SAASn+D,EAAOk+D,GAC1B,IAEIE,EAFAC,SAAqBr+D,IAAU+kD,EAAiB9yL,OAAW+tI,EAAM5/E,QAAS,EAAQ4/E,EAClFs+D,EAAQJ,EAAQ98J,SAGpB,UAAWi9J,IAAetZ,EAAiBhzL,SAAyB,IAAfssM,EACjD,IAAK,IAAIjrM,EAAI,EAAGA,EAAIkrM,EAAMjrM,OAAQD,IAC9B,GAAIkrM,EAAMlrM,GAAGmrM,cAAgBF,EAAY,CACrCD,EAAYE,EAAMlrM,GAClB,KACJ,CAIHgrM,KAEDA,EAAY,IADIvyM,KAAKkyM,YACT,CAAc,CACtB1/J,UAAWxyC,KAAKmH,QAAQy/L,cAElB8L,YAAcF,EACxBH,EAAQl4J,OAAOo4J,IAGnB,OAAOA,CACX,EAEAjJ,aAAc,SAAS1T,EAAchQ,EAAYrF,GAC7C,IAAIp5K,EAAUnH,KAAKmH,QACfmiM,EAAe1T,EAAand,QAAQmN,GACpCxtI,EAAamoI,EAAUnoI,aAE3B,GAAIjxC,EAAQggM,UAAW,CACnB,IAAIwL,EAAWpyB,EAAU9H,QAAQrgI,EAAYA,GAAY,GACrDw7F,EAAYzsI,EAAQy/L,WAAavhM,EAAIkQ,EACzC+zL,EAAa11D,EAAY,GAAK01D,EAAa11D,EAAY,GAAK++D,EAAS/+D,EAAY,EACrF,CAEA,OAAO01D,CACX,EAEAM,iBAAkB,SAASR,GAIvB,IAHA,IAAI7zJ,EAAWv1C,KAAKu1C,SAChBC,EAAiBD,EAAS/tC,OAErBD,EAAI,EAAGA,EAAIiuC,EAAgBjuC,IAChCguC,EAAShuC,GAAG8qI,OAAO+2D,EAAc7hM,GAEzC,EAEAsjK,gBAAiB,WACb7qK,KAAK4yM,uBACL5M,GAAiBj+L,GAAG8iK,gBAAgBtgK,KAAKvK,MAErC4jM,GAAa5jM,KAAKmH,QAAQ8nC,SAC1BjvC,KAAKouM,uBAEb,EAEAA,sBAAuB,WAKnB,IAJA,IAEIhrE,EAASpjI,KAAKojI,OAETx5H,EAAM,EAAGA,EAAMw5H,EAAO57H,OAAQoC,IAAO,CAC1C,IAAIuyH,EAAQiH,EAAOx5H,GACfipM,EAAc12E,EAAM8kB,OACpB4xD,GAAe/7E,EAAQ+7E,EAAY1rM,QAAQ6yC,UAC3CmiF,EAAMh1H,QAAQmrF,UARPtyF,KAQ4BmH,QAAQmrF,UAC3C6pC,EAAM0uC,kBAEd,CACJ,EAEA+nC,qBAAsB,WAClB,IAEI55J,EAFA7xC,EAAUnH,KAAKmH,QACfmrF,EAAYnrF,EAAQmrF,WAAa,CAAC,EAGtC,GAAInrF,EAAQggM,UAAW,CACnB,IAAI5mB,EAAYvgL,KAAK2jM,gBAAgBx8L,EAAQ8nC,OAAO,IACpD+J,EAASunI,EAAU9H,QAAQ8H,EAAUnoI,aACzC,MACIY,EAASh5C,KAAK41L,aAAand,QAAQ,GAGvCnmF,EAAUt5C,OAAS,IAAImgJ,GAAcngJ,EAAOilC,GAAIjlC,EAAOklC,IACvDoU,EAAU9/C,UAAYrrC,EAAQy/L,UAClC,IAGJ5iC,EAAkBguC,GAAU,CACxB1/G,UAAW,CACP5sF,KAAMq4L,MAId,IAAI+U,GAAc9oC,EAAajnK,OAAO,CAClCoF,KAAM,SAASO,EAAOvB,GAClB6iK,EAAajiK,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAChCnH,KAAK0I,MAAQA,CACjB,EAEAqiM,aAAc,SAAS5jM,GACnB,OAAOnH,KAAKgrM,YAAY7jM,EAAQ8J,OACpC,EAEAohI,OAAQ,SAAS/4F,GACb,IAAI+4E,EAAMryH,KACNmH,EAAUkrH,EAAIlrH,QACduB,EAAQ2pH,EAAI3pH,MAEZ63K,EADQluD,EAAIw2E,MACMlF,gBAAgBx8L,GAClC4rM,EAASxyB,EAAU9H,QAAQ/vK,EAAM6pF,KAAM7pF,EAAMg9C,OAC7CstJ,EAASzyB,EAAU9H,QAAQ/vK,EAAMkvH,IAAKlvH,EAAMioL,MAEhDoiB,EAAO90H,GAAK+0H,EAAO/0H,GAAK3kC,EAAI2kC,GAC5B80H,EAAO50H,GAAK60H,EAAO70H,GAAK7kC,EAAI6kC,GAE5Bn+E,KAAKizM,SAAWF,EAEhB,IAAIG,EAAMF,EAAOz0H,SAASn5E,EACtBg+H,EAAS,GAEbA,EAAOzhI,KAAK,CAAE,CAAEuxM,EAAKF,EAAO90H,IAAM,CAAEg1H,EAAKH,EAAO70H,MAChDklD,EAAOzhI,KAAK,CAAE,CAAEuxM,EAAKH,EAAO30H,IAAM,CAAE80H,EAAKF,EAAO50H,MAEhDp+E,KAAKmzM,MAAQ/vE,EAEbpjI,KAAKs5C,IAAM05J,EAAO5rM,QAAQulB,KAAKomL,GAE1B/yM,KAAK4qM,YACN5qM,KAAK4qM,WAAY,EACjB5qM,KAAKyqM,cAGTzqM,KAAKozM,YACT,EAEAA,WAAY,WACJpzM,KAAK+2K,MACL/2K,KAAK+2K,KAAK1kC,OAAOryI,KAAKs5C,IAE9B,EAEAqxH,aAAc,WACVX,EAAajiK,GAAG4iK,aAAapgK,KAAKvK,MAElCA,KAAKkxM,qCAELlxM,KAAKqzM,YAAcrzM,KAAKszM,WAAWtzM,KAAKmH,SACxCnH,KAAKihJ,OAAO9mG,OACRn6C,KAAKqzM,aAGTrzM,KAAKuzM,eACT,EAEAD,WAAY,SAASnsM,GACjB,IAAIotD,EAAQ,IAAIk8E,GAKhB,OAHAzwI,KAAKwzM,WAAWj/I,EAAOptD,GACvBnH,KAAKyzM,YAAYl/I,EAAOptD,GAEjBotD,CACX,EAEAi/I,WAAY,SAAS/8K,EAAWtvB,GAC5B,IAAI6X,EAAOuvH,GAAKc,SAASrvI,KAAKizM,SAAShrC,SAAU,CAC7Cv0I,KAAM,CACFu9F,MAAOjxH,KAAKixH,MACZl6F,QAAS5vB,EAAQ4vB,SAErB6oG,OAAQ,OAGRz4H,EAAQulK,OAAO3gK,MAAQ,GACvBiT,EAAK7X,QAAQ+oB,IAAI,SAAU,CACvB+gG,MAAOjxH,KAAKwxM,iBACZzlM,MAAO5E,EAAQulK,OAAO3gK,MACtB8yI,SAAU13I,EAAQulK,OAAO7tB,SACzB9nH,QAASiiG,EAAe7xH,EAAQulK,OAAO31I,QAAS5vB,EAAQ4vB,WAIhE2rI,EAAiB1jJ,GACjByX,EAAU0jB,OAAOn7B,GAEb6lL,GAAmB19L,IACnBsvB,EAAU0jB,OAAOn6C,KAAK4sK,sBAAsB5tJ,EAAM,CAAEyyL,UAAWzxM,KAAKixH,OAASzoH,EAAW,CACpFmD,IAAMxE,EAAQqrC,cAAsBmsG,EAAX,CAAE,EAAG,IAC/Bx3I,EAAQ2lK,UAEnB,EAEA2mC,YAAa,SAASh9K,EAAWtvB,GAC7BnH,KAAK0zM,UAAUj9K,EAAWtvB,EAASnH,KAAKmzM,MAAOhsM,EAAQo+J,KAC3D,EAEAmuC,UAAW,SAASj9K,EAAWtvB,EAASgsM,EAAOh6B,GAC3C,GAAKg6B,EAcL,IAVA,IAAIQ,EAAY,CACZ/zE,OAAQ,CACJ3O,MAAOkoD,EAAYloD,OAASjxH,KAAKixH,MACjCl6F,QAASiiG,EAAemgD,EAAYpiJ,QAAS5vB,EAAQ4vB,SACrDhrB,MAAOotK,EAAYptK,MACnB8yI,SAAUs6B,EAAYt6B,SACtBI,QAAS,SAIR13I,EAAI,EAAGA,EAAI4rM,EAAM3rM,OAAQD,IAAK,CACnC,IAAIg+J,EAAOh3B,GAAKvQ,WAAWm1E,EAAM5rM,GAAIosM,GACrCjxC,EAAiB6C,GACjB9uI,EAAU0jB,OAAOorH,EACrB,CACJ,EAEAisC,eAAgB,WACZ,IAAI9kC,EAAS1sK,KAAKmH,QAAQulK,OACtBglC,EAAchlC,EAAOz7C,MAMzB,OAJK6F,EAAQ46E,KACTA,EAAc,IAAI1+E,GAAMhzH,KAAKixH,OAAOyC,WAAWg5C,EAAO6lB,aAAahhE,SAGhEmgF,CACX,EAEA6B,cAAe,WACX,IAAIzmC,EAAUv+B,GAAKc,SAASrvI,KAAKs5C,IAAI2uH,SAAU,CAC3Cv0I,KAAM,CACFu9F,MAAOowC,EACPtqI,QAAS,GAEb6oG,OAAQ,OAGZ5/H,KAAKihJ,OAAO9mG,OAAO2yH,EACvB,EAEAlB,gBAAiB,WACb,IAAID,EAAY3rK,KAAKmH,QAAQwkK,UACzBioC,EAAc5zM,KAAKixH,MAEvBjxH,KAAKixH,MAAQ06C,EAAU16C,OAASjxH,KAAKixH,MACrC,IAAI67C,EAAU9sK,KAAKszM,WACf9qM,EAAW,CAAC,EAAGxI,KAAKmH,QAAS,CACzBo+J,KAAM,CACFt0C,MAAOjxH,KAAKwxM,mBAEjB7lC,IAIP,OAFA3rK,KAAKixH,MAAQ2iF,EAEN9mC,CACX,EAEA2+B,gBAAiB,WACb,OAAOzrM,KAAKqzM,WAChB,EAEApnC,oBAAqB,WACjB,MAAO,CACH9kK,QAASnH,KAAKmH,QACdmlF,KAAMtsF,KAAKs5C,IAAI2uH,SACfhnB,OAAQjhJ,KAAKqzM,YAErB,EAEAzH,cAAe,WACX,IAAItyJ,EAAMt5C,KAAKs5C,IACXuyJ,EAAU7rM,KAAK6oM,MAAMj6G,KAAKi9G,WAAavyJ,EAE3C,MAAO,CACH6iF,MAAO,IAAIL,EAAMxiF,EAAI6kC,GAvwGZ,EAuwGiC96E,KAAK8V,IAAImgC,EAAI4kC,GAAI2tH,EAAQ3tH,IAvwG1D,GAwwGTgzD,MAAO,CACHx+F,WAAYtnB,EACZonB,SAAU0+C,GAGtB,EAEA85G,YAAa,SAAS/5L,GAClB,OAAOjR,KAAK6oM,MAAMyB,iBAAiBtqM,KAAMiR,EAC7C,EAEA+6L,YAAa,SAAS1yJ,GAClB,OAAOt5C,KAAKs5C,IAAIquH,SAASruH,EAC7B,EAEAq0H,UAAW,WACP,MAAO,CACHlvG,SAAUz+D,KAAKy+D,SACf/1D,MAAO1I,KAAK0I,MACZmrM,WAAY7zM,KAAK6zM,WACjBC,aAAc9zM,KAAK8zM,aACnBC,cAAe/zM,KAAK+zM,cACpBrK,WAAY1pM,KAAK0pM,WACjBz6J,OAAQjvC,KAAKivC,OAErB,EAEAm9J,SAAU,WACN,OAAOpsM,KAAK4lL,UAChB,IAGJktB,GAAYzqM,UAAUskK,qBAAuBykC,GAAI/oM,UAAUskK,qBAE3D3I,EAAkB8uC,GAAa,CAC3BtgK,UAAU,EACVk6H,OAAQ,CACJ6lB,YAAa,IAEjBhtB,KAAM,CACFx5J,MAAO,GAEX+gK,QAAS,CACL9mB,SAAU,SAEdiZ,QAAS,CACLhuJ,OAAQ,0MAQZmkK,OAAQ,CACJnkK,OAAQ,IAEZ06J,UAAW,CACP50I,QAAS,EACT21I,OAAQ,CACJ3gK,MAAO,EACPgrB,QAAS,GAEbwuI,KAAM,CACFx5J,MAAO,EACPgrB,QAAS,IAGjB8/I,MAAO,CACH7pK,SAAS,EACTsnB,MAAO,CAAC,GAEZ+3I,cAAe,CACX77I,KAAMmxK,GACNt0K,UAAWu0K,GACXrmD,oBAAqBsmD,MAI7Br5L,EAAWsqM,GAAYzqM,UAAWkiM,IAClC/hM,EAAWsqM,GAAYzqM,UAAWmiM,IAClChiM,EAAWsqM,GAAYzqM,UAAW8oM,IAElC,IAAI6C,GAAmBhO,GAAiBjjM,OAAO,CAC3C6mM,iBAAkB,SAASR,GAIvB,IAHA,IAAI7zJ,EAAWv1C,KAAKu1C,SAChBC,EAAiBD,EAAS/tC,OAErBD,EAAI,EAAGA,EAAIiuC,EAAgBjuC,IAChCguC,EAAShuC,GAAG8qI,OAAO+2D,EAAc7hM,GAEzC,EAEAi/L,SAAU,SAASp4L,EAAMqhB,GACrB,IAYI0sG,EAZAypD,EAAan2J,EAAOm2J,WACpB1Z,EAAWz8I,EAAOy8I,SAClBj9H,EAASxf,EAAOwf,OAChBy3J,EAAWj3K,EAAOi3K,SAElBnxJ,EADMv1C,KACSu1C,SACfpuC,EAFMnH,KAEQmH,QACduB,EAAQ0F,EAAKssL,YAEbtlH,EAAW0uH,GADE9jM,KAAKi0M,WAAWvrM,IAE7B+1D,EAAWxvB,EAAO7gC,KAAKw3K,GACvBugB,EAAiBnmM,KAAKmmM,eAAevgB,GAGpCugB,IACDnmM,KAAKmmM,eAAevgB,GAAcugB,EAAiB,IAGnD/wH,IACA+mD,EAAQn8H,KAAK4oM,YAAYx6L,EAAMqhB,IAGnC,IAAI4iL,EAAU98J,EAASqwI,GAClBysB,IACDA,EAAU,IAAIV,GAAc,CACxBn/J,SAAUrrC,EAAQy/L,WAClBx1L,IAAKjK,EAAQiK,IACbogI,QAASrqI,EAAQqqI,QACjB4O,KAAMj5I,EAAQy/L,aAAe5mM,KAAKuqK,cAAgB,CAAC,GAAGnqB,MAE1DpgJ,KAAKm6C,OAAOk4J,IAGZl2E,IACAn8H,KAAK0oM,YAAYhgM,EAAO+mB,GAExB4iL,EAAQl4J,OAAOgiF,GAEfA,EAAMypD,WAAaA,EACnBzpD,EAAM+vC,SAAWA,EACjB/vC,EAAMltF,OAASA,EACfktF,EAAMuqE,SAAWA,EACjBvqE,EAAM0sE,MAAQ7oM,KACdm8H,EAAM19D,SAAWA,EACjB09D,EAAM2sE,SAAW16L,EAAKqhB,OAAOq5K,UAGjC9oM,KAAKojI,OAAOzhI,KAAKw6H,GACjBgqE,EAAexkM,KAAKw6H,EACxB,EAEAwqE,UAAW,WACP,OAAOmM,EACX,EAEAlK,YAAa,SAASx6L,EAAMqhB,GACxB,IAAIwf,EAASxf,EAAOwf,OAChB03J,EAAY3mM,KAAK2mM,YACjBj+L,EAAQ0F,EAAKssL,YACb+L,EAAej+L,EAAW,CAAC,EAAGymC,GAC9BgiF,EAAQ7iH,EAAKqhB,OAAOwhG,OAAShiF,EAAOgiF,MAExCw1E,EAAezmM,KAAK+oM,iBAAiBtC,EAAc/9L,EAAO+mB,GAEtDwf,EAAOvpC,OAASy4L,IAAelvJ,EAAOvpC,OAASi5L,IAC3Cj2L,EAAM6pF,KAAO7pF,EAAMg9C,QACnBurE,EAAQ7iH,EAAKqhB,OAAO+iK,WAAavjJ,EAAOujJ,WAAavjJ,EAAOgiF,OAIhE/nH,EAAW+lC,EAAOgiF,SAClBA,EAAQw1E,EAAax1E,OAGzBw1E,EAAaj0J,UAAYxyC,KAAKmH,QAAQy/L,WAEtC,IAAIzqE,EAAQ,IAAIwqE,EAAUj+L,EAAO+9L,GAGjC,OAFAtqE,EAAMlL,MAAQA,EAEPkL,CACX,EAEA83E,WAAY,SAASvrM,GACjB,MAAO,CAAEA,EAAMkvH,IAAKlvH,EAAM6pF,KAAM7pF,EAAMg9C,MAAOh9C,EAAMioL,KACvD,EAEA+X,YAAa,SAAShgM,EAAO+mB,GACzB,IAAIm4K,EAAWn4K,EAAOwf,OAAO9J,KACzB50B,EAAQvQ,KAAKi0M,WAAWvrM,GACxBwgM,EAAYlpM,KAAKkmM,gBAAgB0B,IAAa,CAAElxL,IAAK0gH,EAAWj+G,IAAK2nJ,GAEzE9gK,KAAKkmM,gBAAgB0B,GAAY,CAC7BlxL,IAAKrT,KAAKqT,IAAItO,MAAM/E,KAAMkN,EAAM6N,OAAO,CAAE8qL,EAAUxyL,OACnDyC,IAAK9V,KAAK8V,IAAI/Q,MAAM/E,KAAMkN,EAAM6N,OAAO,CAAE8qL,EAAU/vL,OAE3D,EAEAmxL,iBAAkB,SAASnuE,EAAOlrH,GAC9B,IAAIvI,EAAQyzH,EAAMzzH,MAElB,OAAO1I,KAAKuqK,aAAat5J,OAAOiiK,KAAKjiK,EACjCvI,EAAM6pF,KAAM7pF,EAAMioL,KAClBjoL,EAAMkvH,IAAKlvH,EAAMg9C,MAAOy2E,EAAM+vC,SAEtC,EAEAmiC,gBAAiB,WACb,OAAOruM,KAAKojI,MAChB,IAGJ56H,EAAWwrM,GAAiB3rM,UAAW8lM,IAEvC,IAAI+F,GAAUpB,GAAY/vM,OAAO,CAC7BoF,KAAM,SAASO,EAAOvB,GAClB2rM,GAAY/qM,GAAGI,KAAKoC,KAAKvK,KAAM0I,EAAOvB,GAEtCnH,KAAKyqM,YACT,EAEAp4D,OAAQ,SAAS/4F,GACb,IAKI66J,EAAaC,EALb/hF,EAAMryH,KACNmH,EAAUkrH,EAAIlrH,QACduB,EAAQ2pH,EAAI3pH,MAEZ63K,EADQluD,EAAIw2E,MACMlF,gBAAgBx8L,GAGtCnH,KAAKo0M,QAAUA,EAAU7zB,EAAU9H,QAAQ/vK,EAAM2rM,GAAI3rM,EAAM4rM,IAC3Dt0M,KAAKizM,SAAWmB,EAChBp0M,KAAKu0M,cAAcj7J,GAEnBt5C,KAAKm0M,YAAcA,EAAc5zB,EAAU9H,QAAQ/vK,EAAM+T,MAAO/T,EAAMg8K,OACtE1kL,KAAKw0M,kBAAkBl7J,GAEvB,IAAIm7J,EAAal0B,EAAU9H,QAAQ/vK,EAAMiqL,QAEzC,GAAIjqL,EAAMgqL,KAAM,CACZ,IAAIgiB,EAAWn0B,EAAU9H,QAAQ/vK,EAAMgqL,MACvC1yL,KAAK6zM,WAAa7zM,KAAK20M,eAAer7J,EAAKo7J,EAC/C,CAEA10M,KAAK+zM,cAAgB/zM,KAAK40M,kBAAkBR,EAASD,GACrDn0M,KAAK8zM,aAAe9zM,KAAK60M,iBAAiBv7J,EAAKm7J,GAE/Cz0M,KAAKs5C,IAAM66J,EAAY/sM,QAAQulB,KAAKynL,GACpCp0M,KAAKozM,YACT,EAEAmB,cAAe,SAASj7J,GACpBt5C,KAAKo0M,QAAQn2H,GAAK3kC,EAAI2kC,GACtBj+E,KAAKo0M,QAAQj2H,GAAK7kC,EAAI6kC,EAC1B,EAEAq2H,kBAAmB,SAASl7J,GACxBt5C,KAAKm0M,YAAYl2H,GAAK3kC,EAAI2kC,GAC1Bj+E,KAAKm0M,YAAYh2H,GAAK7kC,EAAI6kC,EAC9B,EAEAw2H,eAAgB,SAASr7J,EAAKo7J,GAC1B,MAAO,CACH,CAAE,CAAEp7J,EAAI2kC,GAAIy2H,EAASx2H,IAAM,CAAE5kC,EAAI6kC,GAAIu2H,EAASx2H,KAEtD,EAEA02H,kBAAmB,SAASR,EAASD,GACjC,IAAIjB,EAAMiB,EAAY51H,SAASn5E,EAC/B,MAAO,CAAE,CACL,CAAE8tM,EAAM,EAAGiB,EAAYj2H,IAAM,CAAEg1H,EAAM,EAAGiB,EAAYj2H,IACpD,CAAEg1H,EAAKiB,EAAYj2H,IAAM,CAAEg1H,EAAKkB,EAAQl2H,KACzC,CACC,CAAEg1H,EAAM,EAAGiB,EAAY/1H,IAAM,CAAE80H,EAAM,EAAGiB,EAAY/1H,IACpD,CAAE80H,EAAKiB,EAAY/1H,IAAM,CAAE80H,EAAKkB,EAAQh2H,KAEhD,EAEAy2H,iBAAkB,SAASv7J,EAAKm7J,GAC5B,MAAO,CACH,CAAE,CAAEn7J,EAAI2kC,GAAIw2H,EAAWv2H,IAAM,CAAE5kC,EAAI6kC,GAAIs2H,EAAWv2H,KAE1D,EAEA42H,eAAgB,SAAS3tM,GASrB,IARA,IAEIuB,EAAQ1I,KAAK0I,MACbqsM,EAAWrsM,EAAMqsM,UAAY,GAC7BC,EAA6C,EAAhC3xM,KAAKoU,IAAI/O,EAAM4rM,GAAK5rM,EAAM2rM,IACvC17K,EAAW,GACXq5J,EAAU7qL,EAAQ6qL,SAAW,CAAC,EAEzBzqL,EAAI,EAAGA,EAAIwtM,EAASvtM,OAAQD,IAAK,CACtC,IAAI0tM,EAAeF,EAASxtM,GAExByqL,EADAijB,EAAevsM,EAAM4rM,GAAKU,GAAcC,EAAevsM,EAAM2rM,GAAKW,EACxD7tM,EAAQ4tM,SAER5tM,EAAQ8iI,SAEtB,IAAIirE,EAAgB1sM,EAAW,CAAC,EAAGwpL,EAAQtlB,QAEtC51C,EAAQo+E,EAAcjkF,SACnB6F,EAlBG92H,KAkBcixH,OACjBikF,EAAcjkF,MAnBXjxH,KAmB4BixH,MAE/BikF,EAAcjkF,MACV,IAAI+B,GAAMg/D,EAAQl9B,YAAYphC,WAAWspE,IAAmBzrE,SAIxE,IAAIuxB,EAAQ,IAAI4qB,EAAa,CACzBhoK,KAAMssL,EAAQtsL,KACdqG,MAAOimL,EAAQhiL,KACfhE,OAAQgmL,EAAQhiL,KAChB+pC,SAAUi4I,EAAQj4I,SAClB+6G,WAAYk9B,EAAQl9B,WACpB4X,OAAQwoC,EACRn+K,QAASi7J,EAAQj7J,UAGrB+rH,EAAMp6I,MAAQusM,EAEdt8K,EAASh3B,KAAKmhJ,EAClB,CAGA,OADA9iJ,KAAKm1M,eAAex8K,GACbA,CACX,EAEAw8K,eAAgB,SAASJ,GAMrB,IALA,IAAI9hF,EAAWjzH,KAEXugL,EAAYvgL,KAAK6oM,MAAMlF,gBAAgB3jM,KAAKmH,SAC5Co3E,EAASv+E,KAAKs5C,IAAIilC,SAEbh3E,EAAI,EAAGA,EAAIwtM,EAASvtM,OAAQD,IAAK,CACtC,IAAI0tM,EAAeF,EAASxtM,GAAGmB,MAC3ByiM,EAAY5qB,EAAU9H,QAAQw8B,GAE9BhiF,EAAS9rH,QAAQqrC,SACjB24J,EAAUzwK,KAAK6jD,EAAOn5E,GAEtB+lM,EAAUzwK,UAAKikH,EAAWpgE,EAAOp6E,GAGrC8uH,EAAS35E,IAAM25E,EAAS35E,IAAI3sB,KAAKw+K,GACjC4J,EAASxtM,GAAG8qI,OAAO84D,EACvB,CACJ,EAEAmI,WAAY,SAASnsM,GAIjB,IAHA,IAAIotD,EAAQu+I,GAAY/qM,GAAGurM,WAAW/oM,KAAKvK,KAAMmH,GAC7C4tM,EAAW/0M,KAAK80M,eAAe3tM,GAE1BI,EAAI,EAAGA,EAAIwtM,EAASvtM,OAAQD,IAAK,CACtC,IAAIsE,EAAUkpM,EAASxtM,GAAGqmK,aACtB/hK,GACA0oD,EAAMpa,OAAOtuC,EAErB,CAEA,OAAO0oD,CACX,EAEAk/I,YAAa,SAASh9K,EAAWtvB,GAC7BnH,KAAK0zM,UAAUj9K,EAAWtvB,EAASnH,KAAK+zM,cAAe5sM,EAAQsrL,UAC/DzyL,KAAK0zM,UAAUj9K,EAAWtvB,EAASnH,KAAK8zM,aAAc3sM,EAAQwrL,QAC9D3yL,KAAK0zM,UAAUj9K,EAAWtvB,EAASnH,KAAK6zM,WAAY1sM,EAAQurL,KAChE,EAEA8e,eAAgB,WACZ,OAAKxxM,KAAKmH,QAAQulK,QAAU,CAAC,GAAGz7C,MACrBjxH,KAAKmH,QAAQulK,OAAOz7C,MAG3BjxH,KAAKixH,MACEjxH,KAAKixH,MAGT6hF,GAAY/qM,GAAGypM,eAAejnM,KAAKvK,KAC9C,IAGJgkK,EAAkBkwC,GAAS,CACvBxnC,OAAQ,CACJ6lB,YAAa,IAEjBhtB,KAAM,CACFx5J,MAAO,GAEX4mL,OAAQ,CACJ1hE,MAAO,WAEXyhE,KAAM,CACF3mL,MAAO,EACP8yI,SAAU,OACV5tB,MAAO,WAEX67C,QAAS,CACL9mB,SAAU,SAEdiZ,QAAS,CACLhuJ,OAAQ,oRAUZ06J,UAAW,CACP50I,QAAS,EACT21I,OAAQ,CACJ3gK,MAAO,EACPgrB,QAAS,GAEbwuI,KAAM,CACFx5J,MAAO,EACPgrB,QAAS,IAGjB8/I,MAAO,CACH7pK,SAAS,EACTsnB,MAAO,CAAC,GAEZygL,SAAU,CACN/nM,SAAS,EACTgD,KAtqHe,EAuqHftK,KAAMwzL,EAAiB14B,MACvB1L,WAAYuM,EACZqL,OAAQ,CACJ3gK,MAAO,EACPgrB,QAAS,GAEbA,QAAS,GAEbkzG,SAAU,CACNj9H,SAAS,EACTgD,KAjrHe,EAkrHftK,KAAM66J,EACNzL,WAAYuM,EACZqL,OAAQ,CACJ3gK,MAAO,EACPgrB,QAAS,GAEbA,QAAS,KAIjBvuB,EAAW0rM,GAAQ7rM,UAAWkiM,IAE9B,IAAI6K,GAAkBlB,GAAQnxM,OAAO,CACjCwxM,cAAe,SAASj7J,GACpBt5C,KAAKo0M,QAAQl2H,GAAK5kC,EAAI4kC,GACtBl+E,KAAKo0M,QAAQh2H,GAAK9kC,EAAI8kC,EAC1B,EAEAo2H,kBAAmB,SAASl7J,GACxBt5C,KAAKm0M,YAAYj2H,GAAK5kC,EAAI4kC,GAC1Bl+E,KAAKm0M,YAAY/1H,GAAK9kC,EAAI8kC,EAC9B,EAEAu2H,eAAgB,SAASr7J,EAAKo7J,GAC1B,MAAO,CACH,CAAE,CAAEA,EAASz2H,GAAI3kC,EAAI4kC,IAAM,CAAEw2H,EAASz2H,GAAI3kC,EAAI8kC,KAEtD,EAEAw2H,kBAAmB,SAASR,EAASD,GACjC,IAAIjB,EAAMiB,EAAY51H,SAASp6E,EAC/B,MAAO,CAAE,CACL,CAAEgwM,EAAYl2H,GAAIi1H,EAAM,GAAK,CAAEiB,EAAYl2H,GAAIi1H,EAAM,GACrD,CAAEiB,EAAYl2H,GAAIi1H,GAAO,CAAEkB,EAAQn2H,GAAIi1H,IACxC,CACC,CAAEiB,EAAYh2H,GAAI+0H,EAAM,GAAK,CAAEiB,EAAYh2H,GAAI+0H,EAAM,GACrD,CAAEiB,EAAYh2H,GAAI+0H,GAAO,CAAEkB,EAAQj2H,GAAI+0H,IAE/C,EAEA2B,iBAAkB,SAASv7J,EAAKm7J,GAC5B,MAAO,CACH,CAAE,CAAEA,EAAWx2H,GAAI3kC,EAAI4kC,IAAM,CAAEu2H,EAAWx2H,GAAI3kC,EAAI8kC,KAE1D,IAGAi3H,GAAerB,GAAiBjxM,OAAO,CACvCyjM,SAAU,SAASp4L,EAAMqhB,GACrB,IAYI0sG,EAZAypD,EAAan2J,EAAOm2J,WACpB1Z,EAAWz8I,EAAOy8I,SAClBj9H,EAASxf,EAAOwf,OAChBy3J,EAAWj3K,EAAOi3K,SAElBnxJ,EADMv1C,KACSu1C,SACfpuC,EAFMnH,KAEQmH,QACduB,EAAQ0F,EAAKssL,YAEbtlH,EAAW0uH,GADE9jM,KAAKi0M,WAAWvrM,IAE7B+1D,EAAWxvB,EAAO7gC,KAAKw3K,GACvBugB,EAAiBnmM,KAAKmmM,eAAevgB,GAGpCugB,IACDnmM,KAAKmmM,eAAevgB,GAAcugB,EAAiB,IAGnD/wH,IACA+mD,EAAQn8H,KAAK4oM,YAAYx6L,EAAMqhB,IAGnC,IAAI4iL,EAAU98J,EAASqwI,GAClBysB,IACDA,EAAU,IAAIV,GAAc,CACxBn/J,SAAUrrC,EAAQy/L,WAClBx1L,IAAKjK,EAAQiK,IACbogI,QAASrqI,EAAQqqI,QACjB4O,KAAMj5I,EAAQy/L,aAAe5mM,KAAKuqK,cAAgB,CAAC,GAAGnqB,MAE1DpgJ,KAAKm6C,OAAOk4J,IAGZl2E,IACAn8H,KAAK0oM,YAAYhgM,EAAO+mB,GAExB4iL,EAAQl4J,OAAOgiF,GAEfA,EAAMypD,WAAaA,EACnBzpD,EAAM+vC,SAAWA,EACjB/vC,EAAMltF,OAASA,EACfktF,EAAMuqE,SAAWA,EACjBvqE,EAAM0sE,MAAQ7oM,KACdm8H,EAAM19D,SAAWA,GAGrBz+D,KAAKojI,OAAOzhI,KAAKw6H,GACjBgqE,EAAexkM,KAAKw6H,EACxB,EAEAwqE,UAAW,WACP,OAAI3mM,KAAKmH,QAAQy/L,WACNwO,GAGJlB,EACX,EAEAD,WAAY,SAASvrM,GACjB,MAAO,CACHA,EAAM+T,MAAO/T,EAAM2rM,GAAI3rM,EAAMiqL,OAC7BjqL,EAAM4rM,GAAI5rM,EAAMg8K,MAExB,EAEAgkB,YAAa,SAAShgM,EAAO+mB,GACzB,IAAIm4K,EAAWn4K,EAAOwf,OAAO9J,KACzB50B,EAAQvQ,KAAKi0M,WAAWvrM,GAAO0V,OAAOpe,KAAKs1M,eAAe5sM,EAAMqsM,WAEhEj+E,EAAQpuH,EAAMgqL,QACdniL,EAAQA,EAAM6N,OAAO1V,EAAMgqL,OAG/B,IAAIwW,EAAYlpM,KAAKkmM,gBAAgB0B,IAAa,CAAElxL,IAAK0gH,EAAWj+G,IAAK2nJ,GAEzE9gK,KAAKkmM,gBAAgB0B,GAAY,CAC7BlxL,IAAKrT,KAAKqT,IAAItO,MAAM/E,KAAMkN,EAAM6N,OAAO,CAAE8qL,EAAUxyL,OACnDyC,IAAK9V,KAAK8V,IAAI/Q,MAAM/E,KAAMkN,EAAM6N,OAAO,CAAE8qL,EAAU/vL,OAE3D,EAEAmxL,iBAAkB,SAASnuE,EAAOlrH,GAC9B,IAAIvI,EAAQyzH,EAAMzzH,MAElB,OAAO1I,KAAKuqK,aAAat5J,OAAOiiK,KAAKjiK,EACjCvI,EAAM+T,MAAO/T,EAAM2rM,GAAI3rM,EAAMiqL,OAC7BjqL,EAAM4rM,GAAI5rM,EAAMg8K,MAAOh8K,EAAMgqL,KAAMv2D,EAAM+vC,SAEjD,EAEAopC,eAAgB,SAASppJ,GAIrB,IAHA,IAAI1kD,GAAU0kD,GAAS,IAAI1kD,OACvBsP,EAAS,GAEJvP,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAI4nC,EAAO+c,EAAM3kD,GACbuvH,EAAQ3nF,IAAkB,OAATA,GACjBr4B,EAAOnV,KAAKwtC,EAEpB,CAEA,OAAOr4B,CACX,EAEAk2J,6BAA8B,WAC1B,OAAO,CACX,IAGAuoC,GAAkBxS,GAAahgM,OAAO,CACtCmgM,QAAS,WACL,IAAI5qB,EAAOt4K,KAAKs0K,MAAMkhC,WAAWx1M,KAAKivC,QAGtC,OAFWjvC,KAAKutI,WAAa+qC,EAAKn0K,EAAIm0K,EAAKlzK,CAG/C,IAGAqwM,GAAezrC,EAAajnK,OAAO,CACnCoF,KAAM,SAASgwK,EAAUhxK,GAErB6iK,EAAajiK,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAEhCnH,KAAKm4K,SAAWA,EAChBn4K,KAAKuqK,aAAe4N,EAAS5N,aAC7BvqK,KAAK01M,cAEL11M,KAAKmQ,QACT,EAEAulM,YAAa,WAGT11M,KAAK21M,YAAc,CAAC,EACpB31M,KAAK41M,YAAc,CAAC,EAEpB51M,KAAKojI,OAAS,GACdpjI,KAAKomM,aAAe,GACpBpmM,KAAKqmM,cAAgB,GACrBrmM,KAAKsmM,YAAc,EACvB,EAEAn2L,OAAQ,WACJnQ,KAAKumM,mBAAmBvmM,KAAKwmM,SAASh9L,KAAKxJ,MAC/C,EAEAooM,YAAa,SAASjsE,EAAOp2G,EAAO0J,GAChC,IAWQ4sK,EAXJ3zL,EAAQyzH,EAAMzzH,MAAMqd,GACpB8vL,EAAkB9vL,EAAQ,QAC1B+vL,EAAW/vL,EAAQ,WACnBgwL,EAAYhwL,EAAQ,YACpB2gL,EAAWj3K,EAAOi3K,SAClBz3J,EAASxf,EAAOwf,OAChBkpJ,EAAYh8D,EAAMh1H,QAAQgxL,UAC1BkQ,EAAW54K,EAAOqmL,GAClBxN,EAAY74K,EAAOsmL,GAEnB1gJ,EAAS3sD,KAEL2sD,EAASgzI,IAAahzI,EAASizI,KAC/BjM,EAAa,CAAEzkE,IAAKywE,EAAU1X,KAAM2X,IAGpCnQ,GAAarhE,EAAQqhE,EAAU0d,MAC/B71M,KAAKuoM,kBAAoBvoM,KAAKuoM,mBAAqB,CAAEnjM,EAAG,GAAIjB,EAAG,IAC/DnE,KAAKuoM,kBAAkBxiL,GAAO2gL,GAAY1mM,KAAKuoM,kBAAkBxiL,GAAO2gL,IACpE,IAAI9K,GAAqBzD,EAAU0d,GAAkB5mK,EAAQlpB,GAEjEs2K,EAAar8L,KAAKuoM,kBAAkBxiL,GAAO2gL,GAAUjK,cAAc/zL,EAAOyvL,EAAU0d,KAGpFxZ,GACAr8L,KAAKwoM,iBAAiBnM,EAAYlgE,EAAOp2G,GAGrD,EAEAyiL,iBAAkB,SAASnM,EAAYlgE,EAAOp2G,GAC1C,IAAI6xG,EAAMykE,EAAWzkE,IACjB+4D,EAAO0L,EAAW1L,KAClB1hJ,EAASktF,EAAMltF,OACf9nC,EAAUg1H,EAAMh1H,QAAQgxL,UACxB5qD,EAAaxnH,IAAUxQ,EACvB45B,EAAO,CAAC,EAEZgtF,EAAMp2G,EAAQ,OAAS6xG,EACvBuE,EAAMp2G,EAAQ,QAAU4qK,EAExBx0D,EAAMg8D,UAAYh8D,EAAMg8D,WAAa,GACrC,IAAIwQ,EAAW,IAAI4M,GAAgB39E,EAAK+4D,EAAMpjD,EAAYvtI,KAAMivC,EAAQ9nC,GACxEg1H,EAAMg8D,UAAUx2L,KAAKgnM,GACrBxsE,EAAMhiF,OAAOwuJ,GAEbx5J,EAAKppB,GAAS6xG,EACd53H,KAAK0oM,YAAYv5J,EAAMF,GACvBE,EAAKppB,GAAS4qK,EACd3wL,KAAK0oM,YAAYv5J,EAAMF,EAC3B,EAEAu3J,SAAU,SAAS99L,EAAO+mB,GACtB,IAYI0sG,EAZA/2H,EAAIsD,EAAMtD,EACVjB,EAAIuE,EAAMvE,EACVuiM,EAAWj3K,EAAOi3K,SAClBz3J,EAASjvC,KAAKmH,QAAQ8nC,OAAOy3J,GAC7Bd,EAAgB5lM,KAAK6lM,oBAAoB52J,GACzCm3J,EAAepmM,KAAKomM,aAAaM,GAEjChK,EAAah0L,EACX0sE,GAAShwE,IAAMgwE,GAASjxE,KAC1Bu4L,EAAa18L,KAAKg2M,mBAAmBtZ,EAAYkJ,IAIjDlJ,KACAvgE,EAAQn8H,KAAK4oM,YAAYlM,EAAYjtK,MAEjC9sB,EAAEI,OAAOo5H,EAAO1sG,GAChBzvB,KAAKooM,YAAYjsE,EAAO92H,EAAGoqB,GAC3BzvB,KAAKooM,YAAYjsE,EAAO5mH,EAAGka,IAE/BzvB,KAAK0oM,YAAYhM,EAAYjtK,EAAOwf,SAGxCjvC,KAAKojI,OAAOzhI,KAAKw6H,GACjBiqE,EAAazkM,KAAKw6H,EACtB,EAEA0pE,oBAAqB,SAAS52J,GAC1B,OAAOA,EAAO22J,aAClB,EAEAoQ,mBAAoB,WAAY,EAEhCtN,YAAa,SAAShgM,EAAOumC,GACzB,IAAI6kI,EAAc9zK,KAAKuqK,aAAa0J,KAChCgiC,EAAYhnK,EAAOinK,MACnBC,EAAYlnK,EAAOmnK,MACnBhxM,EAAIsD,EAAMtD,EACVjB,EAAIuE,EAAMvE,EACVkyM,EAAar2M,KAAK21M,YAAYM,GAC9BK,EAAat2M,KAAK41M,YAAYO,GAE9B/gI,GAAShwE,KACTixM,EAAar2M,KAAK21M,YAAYM,GAC1BI,GAAc,CAAE3/L,IAAK0gH,EAAWj+G,IAAK2nJ,GAErCl4J,EAASxD,KACTA,EAAIkZ,EAAUw1J,EAAa1uK,IAG/BixM,EAAW3/L,IAAMrT,KAAKqT,IAAI2/L,EAAW3/L,IAAKtR,GAC1CixM,EAAWl9L,IAAM9V,KAAK8V,IAAIk9L,EAAWl9L,IAAK/T,IAG1CgwE,GAASjxE,KACTmyM,EAAat2M,KAAK41M,YAAYO,GAC1BG,GAAc,CAAE5/L,IAAK0gH,EAAWj+G,IAAK2nJ,GAErCl4J,EAASzE,KACTA,EAAIma,EAAUw1J,EAAa3vK,IAG/BmyM,EAAW5/L,IAAMrT,KAAKqT,IAAI4/L,EAAW5/L,IAAKvS,GAC1CmyM,EAAWn9L,IAAM9V,KAAK8V,IAAIm9L,EAAWn9L,IAAKhV,GAElD,EAEA4kM,iBAAkB,SAAS5hM,EAASuB,EAAO+mB,GACvC,IAAIwf,EAASxf,EAAOwf,OAChBy3J,EAAWj3K,EAAOi3K,SAClBpzI,EAAQ,CACR1yD,SAAUquC,EAAO+5J,UACjBzE,SAAU,CACN,OAAQ,UAAW,UAAW,WAAY,SAAU,SACpD,sBAAuB,sBACvB,yBAA0B,eAAgB,gBAI9C0E,EAASjpM,KAAKsmM,YAAYI,GACzB5vE,EAAQmyE,KACTjpM,KAAKsmM,YAAYI,GAAYuC,EAAS7E,GAAYj9L,EAAS,CAAC,EAAGmsD,GAAO,IAG1E,IAAImzI,EAAet/L,EAUnB,OATI8hM,GAEA7E,GADAqC,EAAej+L,EAAW,CAAC,EAAGrB,GACJ,CACtBuB,MAAOA,EACPumC,OAAQA,EACRwvB,SAAUhvC,EAAOgvC,UAClBnL,GAGAmzI,CACX,EAEAE,UAAW,WACP,OAAO+D,EACX,EAEAjE,aAAc,SAASx3J,EAAQy3J,GAC3B,IAAIv/L,EAAUnH,KAAKqmM,cAAcK,GACjC,IAAKv/L,EAAS,CACV,IAAIvG,EAAWZ,KAAK2mM,YAAYt+L,UAAUzH,SAC1CZ,KAAKqmM,cAAcK,GAAYv/L,EAAUqB,EAAW,CAAC,EAAG5H,EAAU,CAC9DoxL,QAAS,CACLj7J,QAASkY,EAAOlY,SAEpBkoI,QAAS,CACLhuJ,OAAQjR,KAAKmH,QAAQ83J,QAAQhuJ,QAEjCmkK,OAAQ,CACJnkK,OAAQjR,KAAKmH,QAAQiuK,OAAOnkK,SAEjCg+B,EACP,CAEA,OAAO9nC,CACX,EAEAyhM,YAAa,SAASlgM,EAAO+mB,GACzB,IAAIwf,EAASxf,EAAOwf,OAChBw3J,EAAezmM,KAAKymM,aAAax3J,EAAQxf,EAAOi3K,UAChDz1E,EAAQxhG,EAAOwhG,OAAShiF,EAAOgiF,MAEnCw1E,EAAezmM,KAAK+oM,iBAAiBtC,EAAc/9L,EAAO+mB,GAEtDvmB,EAAW+lC,EAAOgiF,SAClBA,EAAQw1E,EAAax1E,OAGzB,IAAIkL,EAAQ,IAAIuuE,GAAUhiM,EAAO+9L,GAKjC,OAJAtqE,EAAMlL,MAAQA,EAEdjxH,KAAKm6C,OAAOgiF,GAELA,CACX,EAEAq5E,WAAY,SAASvmK,GACjB,IAAIgnK,EAAYhnK,EAAOinK,MACnBC,EAAYlnK,EAAOmnK,MACnBj+B,EAAWn4K,KAAKm4K,SAChB+9B,EAAQD,EAAY99B,EAASo+B,WAAWN,GAAa99B,EAASzB,MAC9D0/B,EAAQD,EAAYh+B,EAASq+B,WAAWL,GAAah+B,EAASxB,MAElE,IAAKu/B,EACD,MAAM,IAAIllM,MAAM,qCAAuCilM,GAG3D,IAAKG,EACD,MAAM,IAAIplM,MAAM,qCAAuCmlM,GAG3D,MAAO,CACH/wM,EAAG8wM,EACH/xM,EAAGiyM,EAEX,EAEA/jE,OAAQ,SAAS20B,GACb,IAAI/zC,EAAWjzH,KAEXqpM,EAAcrpM,KAAKojI,OACnBs3C,GAAS16K,KAAKmH,QAAQ+yC,KACtB6gJ,EAAU,EAEd/6L,KAAKumM,oBAAmB,SAAU79L,EAAO+mB,GACrC,IAAI0sG,EAAQktE,EAAYtO,KACpBya,EAAaviF,EAASuiF,WAAW/lL,EAAOwf,QACxCspI,EAAQi9B,EAAWpwM,EAAEqzK,QAAQ/vK,EAAMtD,EAAGsD,EAAMtD,EAAGs1K,GAC/ClC,EAAQg9B,EAAWrxM,EAAEs0K,QAAQ/vK,EAAMvE,EAAGuE,EAAMvE,EAAGu2K,GAEnD,GAAIv+C,EACA,GAAIo8C,GAASC,EAAO,CAChB,IAAIgxB,EAAYv2E,EAASu2E,UAAUjxB,EAAOC,GAC1Cr8C,EAAMkW,OAAOm3D,EACjB,MACIrtE,EAAMnvH,SAAU,CAG5B,IAEAhN,KAAKs5C,IAAM0tH,CACf,EAEAwiC,UAAW,SAASjxB,EAAOC,GACvB,OAAO,IAAIzR,EAAIwR,EAAMt6F,GAAIu6F,EAAMt6F,GAAIq6F,EAAMp6F,GAAIq6F,EAAMp6F,GACvD,EAEAmoH,mBAAoB,SAAS38K,GAOzB,IANA,IAGIqlB,EADMjvC,KACOmH,QAAQ8nC,OACrBm3J,EAFMpmM,KAEaomM,aAEdM,EAAW,EAAGA,EAAWz3J,EAAOznC,OAAQk/L,IAAY,CACzD,IAAIjC,EAAgBx1J,EAAOy3J,GACDN,EAAaM,KAEnCN,EAAaM,GAAY,IAG7B,IAAK,IAAI3L,EAAU,EAAGA,EAAU0J,EAAcr2L,KAAK5G,OAAQuzL,IAAW,CAClE,IAAIroD,EAdG1yI,KAccm4K,SAAS2iB,UAAU2J,EAAe1J,GACnDryL,EAAQgqI,EAAMgoD,YACdjrK,EAASijH,EAAMjjH,OAEnB7F,EAASlhB,EAAOF,EAAW,CACvBuyL,QAASA,EACT9rJ,OAAQw1J,EACRiC,SAAUA,EACVjoI,SAAUgmI,EAAcr2L,KAAK2sL,GAC7B8N,MAvBG7oM,MAwBJyvB,GACP,CACJ,CACJ,EAEA66K,iBAAkB,SAASnuE,EAAOlrH,GAC9B,IAAIvI,EAAQyzH,EAAMzzH,MAClB,OAAO1I,KAAKuqK,aAAat5J,OAAOiiK,KAAKjiK,EAAQvI,EAAMtD,EAAGsD,EAAMvE,EAChE,EAEAkqM,gBAAiB,WAGb,IAFA,IAAIjrE,EAASpjI,KAAKojI,OACdtsH,EAAS,GACJlN,EAAM,EAAGA,EAAMw5H,EAAO57H,OAAQoC,IACnCkN,EAAOnV,MAAMyhI,EAAOx5H,IAAQ,CAAC,GAAG8+C,QAEpC,OAAO5xC,CACX,IAEJktJ,EAAkByxC,GAAc,CAC5BxmK,OAAQ,GACRgwH,QAAS,CACLhuJ,OAAQ,YAEZmkK,OAAQ,CACJnkK,OAAQ,YAEZipC,MAAM,IAEV1xC,EAAWitM,GAAaptM,UAAW8lM,IAEnC,IAAIsI,GAAS/L,GAAU3nM,OAAO,CAC1BoF,KAAM,SAASO,EAAOvB,GAClBujM,GAAU3iM,GAAGI,KAAKoC,KAAKvK,KAAM0I,EAAOvB,GAEpCnH,KAAKksK,SAAWxjK,EAAMwjK,QAC1B,EAEAN,gBAAiB,WACb,IAAID,EAAY3rK,KAAKmH,QAAQwkK,UACzBe,EAASf,EAAUe,OACnBslB,EAAUhyL,KAAKmH,QAAQ6qL,QACvBzzG,EAASv+E,KAAKs5C,IAAIilC,SAClBjyD,GAAU0lK,EAAQhiL,KAAOgiL,EAAQtlB,OAAO3gK,MAAQ2gK,EAAO3gK,OAAS,EAChE2qM,EAAiB,IAAIjmE,GACrBpkH,EAAS,IAAI8zG,GAAO,IAAIi5D,GAAe,CAAE76G,EAAOn5E,EAAGm5E,EAAOp6E,EAAImoB,EAAS,EAAIogJ,EAAO3gK,MAAQ,GAAKugB,EAASogJ,EAAO3gK,MAAQ,GAAI,CAC3H6zH,OAAQ,CACJ3O,MAAO,QAEXv9F,KAAM1zB,KAAK+sK,eAAe,CACtB/mB,SAAU,eACV/0B,MAAO+gE,EAAQl9B,WACf/f,MAAO,CAAE,CACLj3H,OAAQ,EACRmzG,MAAO+gE,EAAQl9B,WACf/9H,QAAS,IACV,CACCjZ,OAAQ,EACRmzG,MAAO+gE,EAAQl9B,WACf/9H,QAAS,QAIjB+1I,EAAU,IAAI3sC,GAAO,IAAIi5D,GAAe,CAAE76G,EAAOn5E,EAAGm5E,EAAOp6E,GAAKmoB,GAAS,CACzEszG,OAAQ,CACJ3O,MAAOy7C,EAAOz7C,OACV,IAAI+B,GAAMg/D,EAAQl9B,YAAYphC,WAAWspE,IAAmBzrE,QAChExlH,MAAO2gK,EAAO3gK,MACdgrB,QAAS21I,EAAO31I,SAEpBrD,KAAM,CACFu9F,MAAO+gE,EAAQl9B,WACf/9H,QAAS40I,EAAU50I,WAM3B,OAFA2/K,EAAev8J,OAAO9tB,EAAQygJ,GAEvB4pC,CACX,EAEA/pC,qBAAsB,SAASx/J,GAC3B,IAAI6+J,EAAmBhsK,KAAKmH,QAAQklK,cAAcV,UAC9CqmB,EAAUhyL,KAAKmH,QAAQ6qL,QACvBzzG,EAASv+E,KAAKs5C,IAAIilC,SAClBjyD,GAAU0lK,EAAQhiL,KAAOgiL,EAAQtlB,OAAO3gK,OAAS,EAAIigK,EAAiBU,OAAO3gK,MAAQ,EAGzF,OAFgB,IAAIo0H,GAAO,IAAIi5D,GAAe,CAAE76G,EAAOn5E,EAAGm5E,EAAOp6E,GAAKmoB,GAASnf,EAGnF,IAGJspM,GAAOpuM,UAAUzH,SAAW4H,EAAW,CAAC,EAAGiuM,GAAOpuM,UAAUzH,SAAU,CAClEw0K,OAAQ,CACJ9nK,SAAU2jF,GAEd06E,UAAW,CACP50I,QAAS,EACT21I,OAAQ,CACJz7C,MAAO,OACPllH,MAAO,EACPgrB,QAAS,MAKrB0/K,GAAOpuM,UAAUzH,SAAS+qK,UAAU3xH,YAAS2kG,EAE7C,IAAIg4D,GAAclB,GAAa1yM,OAAO,CAClC2yM,YAAa,WACT11M,KAAK42M,SAAW91C,EAChB20C,GAAa1tM,GAAG2tM,YAAYnrM,KAAKvK,KACrC,EAEAwmM,SAAU,SAAS99L,EAAO+mB,GACH,OAAf/mB,EAAMsH,OAAkBtH,EAAMsH,KAAO,GAAMtH,EAAMsH,KAAO,GAAKyf,EAAOwf,OAAO4nK,eAAe7pM,UAC1FhN,KAAK42M,SAAWvzM,KAAK8V,IAAInZ,KAAK42M,SAAUvzM,KAAKoU,IAAI/O,EAAMsH,OACvDylM,GAAa1tM,GAAGy+L,SAASj8L,KAAKvK,KAAM0I,EAAO+mB,KAE3CzvB,KAAKojI,OAAOzhI,KAAK,MACjB3B,KAAKomM,aAAa32K,EAAOi3K,UAAU/kM,KAAK,MAEhD,EAEA0wI,OAAQ,SAAS/4F,GACbt5C,KAAK82M,kBAAkBx9J,GACvBm8J,GAAa1tM,GAAGsqI,OAAO9nI,KAAKvK,KAAMs5C,EACtC,EAEAqtJ,UAAW,WACP,OAAO8P,EACX,EAEA7N,YAAa,SAASlgM,EAAO+mB,GACzB,IAAIwf,EAASxf,EAAOwf,OAChB8nK,EAAc9nK,EAAO7gC,KAAK5G,OAC1B89B,EAAQ7V,EAAOsrK,SAAW+B,GAA6Bia,GACvDC,EAAmB,CACnB1xK,MAAOA,EACPhe,SAAUw1K,GAA6Bx3J,EACvC5/B,KAAMu4L,IAGNhtE,EAAQxhG,EAAOwhG,OAAShiF,EAAOgiF,MAC/BvoH,EAAMsH,KAAO,GAAKi/B,EAAO4nK,eAAe7pM,UACxCikH,EAAQ+H,EACJ/pF,EAAO4nK,eAAe5lF,MAAOA,IAIrC,IAAIw1E,EAAej+L,EAAW,CAC1B4sK,OAAQ,CACJ9iF,UAAW,CACPhtD,MAAOA,EACPhe,SAAUw1K,GAA6Bx3J,KAGhDtlC,KAAKymM,aAAax3J,EAAQxf,EAAOi3K,UAAW,CAC3C1U,QAAS,CACLtsL,KAAM66J,EACNmM,OAAQz9H,EAAOy9H,OACf31I,QAASkY,EAAOlY,QAChBu7D,UAAW0kH,KAInBvQ,EAAezmM,KAAK+oM,iBAAiBtC,EAAc/9L,EAAO+mB,GACtDvmB,EAAW+lC,EAAOgiF,SAClBA,EAAQw1E,EAAax1E,OAGzBw1E,EAAazU,QAAQl9B,WAAa7jC,EAElC,IAAIkL,EAAQ,IAAIs6E,GAAO/tM,EAAO+9L,GAK9B,OAJAtqE,EAAMlL,MAAQA,EAEdjxH,KAAKm6C,OAAOgiF,GAELA,CACX,EAEA26E,kBAAmB,SAASx9J,GAOxB,IANA,IAGIrK,EADMjvC,KACOmH,QAAQ8nC,OACrBylD,EAAUrxF,KAAKqT,IAAI4iC,EAAIvtC,QAASutC,EAAIttC,UAE/B06L,EAAW,EAAGA,EAAWz3J,EAAOznC,OAAQk/L,IAY7C,IAXA,IAAIjC,EAAgBx1J,EAAOy3J,GACvBN,EAROpmM,KAQiBomM,aAAaM,GAGrCuQ,GAFUxS,EAAcyS,SAAW7zM,KAAK8V,IAAc,IAAVu7E,EAAgB,KAE3C,EACjByiH,GAFU1S,EAAcvwD,SAAqB,GAAVx/C,GAElB,EACjB0iH,EAAU/zM,KAAK6zH,GAAK+/E,EAAOA,EAG3BI,GAFUh0M,KAAK6zH,GAAKigF,EAAOA,EACLC,GAffp3M,KAgB0B42M,SAE5B7b,EAAU,EAAGA,EAAUqL,EAAa5+L,OAAQuzL,IAAW,CAC5D,IAAI5+D,EAAQiqE,EAAarL,GACzB,GAAI5+D,EAAO,CACP,IAAIm3D,EAAOjwL,KAAKoU,IAAI0kH,EAAMzzH,MAAMsH,MAAQqnM,EACpC/qL,EAASjpB,KAAKo7E,MAAM24H,EAAU9jB,GAAQjwL,KAAK6zH,IAE3Cl9E,EADag/E,EAAemD,EAAMh1H,QAAQ6yC,OAAQ,IAC3B,EAAI1tB,EAAS6qL,GAExC3uM,EAAW2zH,EAAMh1H,QAAS,CACtB6yC,OAAQA,EACRg4I,QAAS,CACLhiL,KAAe,EAATsc,EACN0tB,OAAQA,GAEZo7H,OAAQ,CACJp7H,OAAQA,EAAS,IAG7B,CACJ,CAER,EAEAswJ,iBAAkB,SAASnuE,EAAOlrH,GAC9B,IAAIvI,EAAQyzH,EAAMzzH,MAClB,OAAO1I,KAAKuqK,aAAat5J,OAAOiiK,KAAKjiK,EAAQvI,EAAMtD,EAAGsD,EAAMvE,EAAGuE,EAAMsH,KAAMmsH,EAAM+vC,SACrF,EAEArB,gBAAiB,WAAY,EAE7BF,aAAc,WAAY,IAG9B3G,EAAkB2yC,GAAa,CAC3B13C,QAAS,CACLhuJ,OAAQ,OAEZmkK,OAAQ,CACJnkK,OAAQ,SAIhB,IAAIqmM,GAAS5pC,EAAa3qK,OAAO,CAEjC,GAEAyF,EAAW8uM,GAAOjvM,UAAWkiM,IAE7B,IAAIgN,GAASvtC,EAAajnK,OAAO,CAC7BoF,KAAM,SAASO,EAAOvB,GAClB6iK,EAAajiK,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAEhCnH,KAAKypM,UAAYzpM,KAAKmH,QAAQsiM,UAC9BzpM,KAAKixH,MAAQ9pH,EAAQ8pH,OAASowC,EAC9BrhK,KAAK0I,MAAQA,CACjB,EAEAyH,OAAQ,WACJ,IAAIhJ,EAAUnH,KAAKmH,QAEdnH,KAAK4qM,YACN5qM,KAAK4qM,WAAY,EAEb9zE,EAAQ92H,KAAK0I,MAAMrB,UACnBrH,KAAKqH,OAAS,IAAIiwM,GAAO,CACrB5xM,KAAMyB,EAAQE,OAAOy7I,MACrBgS,WAAY3tJ,EAAQE,OAAO4pH,OAASjxH,KAAKixH,MACzCl6F,QAAS5vB,EAAQ4vB,QACjBijB,OAAQ7yC,EAAQ6yC,OAChB0yH,OAAQvlK,EAAQE,OAAOqlK,OACvBtS,OAAQlpE,EACRggD,MAAO5lH,IAGXtrB,KAAKqH,OAAOqB,MAAQ1I,KAAK0I,MACzB1I,KAAKqH,OAAOo3D,SAAWz+D,KAAKy+D,SAC5Bz+D,KAAKqH,OAAO4nC,OAASjvC,KAAKivC,OAE1BjvC,KAAKm6C,OAAOn6C,KAAKqH,SAGrBrH,KAAKioL,cACLjoL,KAAKyqM,aAEb,EAEAxiB,YAAa,WACT,IACI7S,EADUp1K,KAAKmH,QACEiuK,OAEjBA,EAAOpoK,UACPhN,KAAKs0B,MAAQt0B,KAAK8qM,mBAAmB11B,GACrCp1K,KAAKm6C,OAAOn6C,KAAKs0B,OAEzB,EAEAw2K,mBAAoB,SAAS3jM,GACzB,OAAO,IAAI4pM,GAAS/wM,KAAK+qM,aAAa5jM,GAClCA,EACAnH,KAAK2tK,YACb,EAEAo9B,aAAc,SAAS5jM,GACnB,IAAI0xK,EAAgBxV,EAAYl8J,GAEhC,OAAI0xK,EACOA,EAAc74K,KAAK2tK,aAGvB3tK,KAAKgrM,YAAY7jM,EAAQ8J,OACpC,EAEAohI,OAAQ,SAAS/4F,GACbt5C,KAAKmQ,SAEL,IAAIkiH,EAAMryH,KACNmH,EAAUkrH,EAAIlrH,QACdE,EAASgrH,EAAIhrH,OACbitK,EAAQjiD,EAAIw2E,MACZjC,EAAaz/L,EAAQy/L,WACrBrmB,EAAYjM,EAAMqvB,gBAAgB3jM,KAAKmH,SACvCmiM,EAAeh1B,EAAMg1B,aAAah1B,EAAMshB,aAAczuL,EAAQy+K,WAAYrF,GAC1Ei3B,EAAkBj3B,EAAU9H,QAAQz4K,KAAK0I,MAAMrB,QAC/CowM,EAAc7Q,EAAa4Q,EAAkBlO,EAC7CoO,EAAc9Q,EAAa0C,EAAekO,EAE9C,GAAInwM,EAAQ,CACR,IAAIswM,EAAa,IAAI5wC,EACjB0wC,EAAYx5H,GAAIy5H,EAAYx5H,GAC5Bu5H,EAAYt5H,GAAIu5H,EAAYt5H,IAEhC/2E,EAAOF,QAAQ6E,OAAS46L,EAAa+Q,EAAW3rM,SAAW7E,EAAQE,OAAOk+J,KAAKx5J,MAC/E1E,EAAOF,QAAQ4E,MAAQ66L,EAAaz/L,EAAQE,OAAOk+J,KAAKx5J,MAAQ4rM,EAAW5rM,QAC3E1E,EAAOgrI,OAAOslE,EAClB,CAEA,IAAIrjL,EAAQt0B,KAAKs0B,MACbA,IACAA,EAAMntB,QAAQsiM,UAAYzpM,KAAKypM,UAC/Bn1K,EAAM+9G,OAAO/4F,IAGbt5C,KAAK+2K,MACL/2K,KAAK+2K,KAAK1kC,OAAO/4F,GAGrBt5C,KAAKs5C,IAAMA,CACf,EAEAqxH,aAAc,WACVX,EAAajiK,GAAG4iK,aAAapgK,KAAKvK,MAElCA,KAAKkxM,qCAEL,IAAI/pM,EAAUnH,KAAKmH,QACf6X,EAAOuvH,GAAKc,SAASrvI,KAAKs5C,IAAI2uH,SAAU,CACxCv0I,KAAM,CACFu9F,MAAOjxH,KAAKixH,MACZl6F,QAAS5vB,EAAQ4vB,SAErB6oG,OAAQ,OAGRz4H,EAAQulK,OAAO3gK,MAAQ,GACvBiT,EAAK7X,QAAQ+oB,IAAI,SAAU,CACvB+gG,MAAO9pH,EAAQulK,OAAOz7C,OAASjxH,KAAKixH,MACpCllH,MAAO5E,EAAQulK,OAAO3gK,MACtB8yI,SAAU13I,EAAQulK,OAAO7tB,SACzB9nH,QAASiiG,EAAe7xH,EAAQulK,OAAO31I,QAAS5vB,EAAQ4vB,WAIhE/2B,KAAK43M,WAAa54L,EAElB0jJ,EAAiB1jJ,GACjBhf,KAAKihJ,OAAO9mG,OAAOn7B,EACvB,EAEA6rJ,gBAAiB,WACT7qK,KAAK43M,aACL53M,KAAKsyF,UAAYx2C,GAAUsL,OACvBpnD,KAAK43M,WAAY53M,KAAKmH,QAAQmrF,WAG1C,EAEAs5E,gBAAiB,SAASz+J,GACtB,OAAOohI,GAAKc,SAASrvI,KAAKs5C,IAAI2uH,SAAU96J,EAC5C,EAEAs+L,gBAAiB,WACb,OAAOzrM,KAAK43M,UAChB,EAEA3rC,oBAAqB,WACjB,MAAO,CACH3/E,KAAMtsF,KAAKs5C,IAAI2uH,SACfhnB,OAAQjhJ,KAAK43M,WACbzwM,QAASnH,KAAKmH,QAEtB,EAEA6jM,YAAa,SAAS/5L,GAClB,OAAOjR,KAAK6oM,MAAMyB,iBAAiBtqM,KAAMiR,EAC7C,EAEA08J,UAAW,WACP,MAAO,CACHlvG,SAAUz+D,KAAKy+D,SACfytG,SAAUlsK,KAAKksK,SACfxjK,MAAO1I,KAAK0I,MACZumC,OAAQjvC,KAAKivC,OAErB,EAEA+8J,YAAa,SAAS1yJ,GAClB,OAAOt5C,KAAKs5C,IAAIquH,SAASruH,EAC7B,EAEA8yJ,SAAU,WACN,OAAOpsM,KAAK4lL,UAChB,IAGJ2xB,GAAOlvM,UAAUujM,cAAgBwF,GAAI/oM,UAAUujM,cAC/C2L,GAAOlvM,UAAUskK,qBAAuBykC,GAAI/oM,UAAUskK,qBAEtD3I,EAAkBuzC,GAAQ,CACtB7qC,OAAQ,CACJ3gK,MAAO,GAEXymC,UAAU,EACVzb,QAAS,EACT1vB,OAAQ,CACJy7I,MAAO,GACP4pB,OAAQ,CACJ3gK,MAAO,EACPklH,MAAO,SAEXs0C,KAAM,CACFx5J,MAAO,IAGfqpK,OAAQ,CACJpoK,SAAS,GAEbiyJ,QAAS,CACLhuJ,OAAQ,iCAEZ4lK,MAAO,CACHviJ,MAAO,CAAC,GAEZ+3I,cAAe,CACX77I,KAAMmxK,GACNt0K,UAAWu0K,GACXrmD,oBAAqBsmD,MAI7Br5L,EAAW+uM,GAAOlvM,UAAWkiM,IAC7B/hM,EAAW+uM,GAAOlvM,UAAWmiM,IAC7BhiM,EAAW+uM,GAAOlvM,UAAW8oM,IAE7B,IAAI0G,GAAc7R,GAAiBjjM,OAAO,CACtCoF,KAAM,SAASgwK,EAAUhxK,IAoH7B,SAAkBA,GAGd,IAFA,IAAI8nC,EAAS9nC,EAAQ8nC,OAEZ1nC,EAAI,EAAGA,EAAI0nC,EAAOznC,OAAQD,IAAK,CACpC,IAAIuwM,EAAa7oK,EAAO1nC,GACpB6G,EAAO0pM,EAAW1pM,MAClBA,GAASnL,EAAQmL,EAAK,KAAQ00J,EAAS10J,EAAK,MAC5C0pM,EAAW1pM,KAAO,CAAEA,GAE5B,CACJ,CA5HQ2pM,CAAS5wM,GAET6+L,GAAiBj+L,GAAGI,KAAKoC,KAAKvK,KAAMm4K,EAAUhxK,EAClD,EAEAyiM,iBAAkB,SAASR,GAIvB,IAHA,IAAI7zJ,EAAWv1C,KAAKu1C,SAChBC,EAAiBD,EAAS/tC,OAErBD,EAAI,EAAGA,EAAIiuC,EAAgBjuC,IAChCguC,EAAShuC,GAAG8qI,OAAO+2D,EAAc7hM,GAEzC,EAEA2/L,UAAW,SAAS/qE,GAChB,IAAIltF,EAASktF,EAAMltF,OACfsxI,EAAYvgL,KAAK2jM,gBAAgB10J,GACjC4tI,EAAoB78K,KAAK0nM,0BAA0BnnB,GAEvD,MAAO,CAAE1D,EAAmB1gD,EAAMzzH,MAAMsL,SAAW6oK,EACvD,EAEA+rB,YAAa,SAASx6L,EAAMqhB,GACxB,IAAIm2J,EAAan2J,EAAOm2J,WACpB32I,EAASxf,EAAOwf,OAEhB9nC,EADMnH,KACQmH,QACdouC,EAFMv1C,KAESu1C,SACf7sC,EAAQ0F,EAAKssL,YAEbsd,EAAgBxvM,EAAW,CAC3BgqC,UAAWrrC,EAAQy/L,WACnB95B,QAAS79H,EAAO69H,QAChB8Y,WAAYA,EACZghB,WAAYz/L,EAAQy/L,YACrB33J,GAECgiF,EAAQ7iH,EAAKqhB,OAAOwhG,OAAShiF,EAAOgiF,MACxC+mF,EAAgBh4M,KAAK+oM,iBAAiBiP,EAAetvM,EAAO+mB,GACxDvmB,EAAW+lC,EAAOgiF,SAClBA,EAAQ+mF,EAAc/mF,OAG1B,IAAIoiC,EAAS,IAAIkkD,GAAO7uM,EAAOsvM,GAC/B3kD,EAAOpiC,MAAQA,EAEf,IAAIohF,EAAU98J,EAASqwI,GAavB,OAZKysB,IACDA,EAAU,IAAIV,GAAc,CACxBn/J,SAAUrrC,EAAQy/L,WAClBx1L,IAAKjK,EAAQiK,IACbogI,QAASrqI,EAAQqqI,QACjB4O,KAAMj5I,EAAQy/L,aAAe5mM,KAAKuqK,cAAgB,CAAC,GAAGnqB,MAE1DpgJ,KAAKm6C,OAAOk4J,IAGhBA,EAAQl4J,OAAOk5G,GAERA,CACX,EAEAq1C,YAAa,SAAShgM,EAAO+mB,GACzB,IAAIzb,EAAUtL,EAAMsL,QAChB3M,EAASqB,EAAMrB,OACfugM,EAAWn4K,EAAOwf,OAAO9J,KACzB+jK,EAAYlpM,KAAKkmM,gBAAgB0B,GAEjC9wE,EAAQ9iH,KAAalL,MAAMkL,IAAY8iH,EAAQzvH,IAAWyB,MAAMzB,OAChE6hM,EAAYlpM,KAAKkmM,gBAAgB0B,GAC7BsB,GAAa,CAAExyL,IAAK0gH,EAAWj+G,IAAK2nJ,IAE9BpqJ,IAAMrT,KAAKqT,IAAIwyL,EAAUxyL,IAAK1C,EAAS3M,GACjD6hM,EAAU/vL,IAAM9V,KAAK8V,IAAI+vL,EAAU/vL,IAAKnF,EAAS3M,GAEzD,EAEAijM,iBAAkB,SAASnuE,EAAOlrH,GAC9B,OAAOjR,KAAKuqK,aAAat5J,OAAOiiK,KAAKjiK,EAAQkrH,EAAMzzH,MAAMsL,QAASmoH,EAAMzzH,MAAMrB,OAClF,EAEAq1L,WAAY,SAAStuL,GACjB,OAAOA,EAAKssL,YAAY1mL,OAC5B,EAEAy1L,UAAW,SAASttE,GAGhB,OAFYA,EAAMzzH,MAAMsL,QAET,CACnB,EAEA62J,gBAAiB,WACb,IAEIznC,EAASpjI,KAAKojI,OAElBpjI,KAAK4yM,uBAEL,IAAK,IAAIhpM,EAAM,EAAGA,EAAMw5H,EAAO57H,OAAQoC,IAAO,CAC1C,IAAIuyH,EAAQiH,EAAOx5H,GACnBuyH,EAAMh1H,QAAQmrF,UARHtyF,KAQwBmH,QAAQmrF,UAC3C6pC,EAAM0uC,iBACV,CACJ,IAGJgtC,GAAYxvM,UAAUuqM,qBAAuBZ,GAAS3pM,UAAUuqM,qBAEhE5uC,EAAkB6zC,GAAa,CAC3BvlH,UAAW,CACP5sF,KAAMq4L,MAgBd,IAAIka,GAAcrwM,EAAM7E,OAAO,CAC3BoF,KAAM,SAASoiK,EAAcpjK,GAEzBnH,KAAKuqK,aAAeA,EACpBvqK,KAAKmH,QAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAASA,EAChD,EAEA+wM,SAAU,SAAS/wM,EAASg1H,GACxB,IAAI24B,EAAa3tJ,EAAQ2tJ,WACrB4X,EAASvlK,EAAQulK,OAAOz7C,MAE5B,GAAIkL,EAAO,CACP,IAAIg8E,EAAah8E,EAAMlL,OAASkL,EAAMh1H,QAAQ8pH,MAC9C6jC,EAAa97B,EAAe87B,EAAYqjD,GACxCzrC,EAAS1zC,EAAe0zC,EAAQyrC,EACpC,CAEA,IAAIngE,EAAUkrB,EAAW/7J,EAAQ6wI,SAAW,CAAC,EAAG,QAEhD,MAAO,CACH8Z,gBAAiBgD,EACjB48C,YAAahlC,EACb30E,KAAM5wF,EAAQ4wF,KACdk5B,MAAO9pH,EAAQ8pH,MACfl6F,QAAS5vB,EAAQ4vB,QACjBq2I,YAAarK,EAAW57J,EAAQulK,OAAO3gK,OACvC6tH,WAAYmpC,EAAW/qB,EAAQ9yH,KAC/BkzL,cAAer1C,EAAW/qB,EAAQtrH,QAClCitG,YAAaopC,EAAW/qB,EAAQxrH,MAChCuvI,aAAcgH,EAAW/qB,EAAQvrH,OAEzC,EAEAhf,KAAM,SAAStG,EAASkxM,EAAgBl8E,GACpCh1H,EAAQ8J,OAASonM,EAAepnM,OAEhC,IAAI9D,EAAQnN,KAAKk4M,SAASG,EAAgBl8E,GAC1Ch1H,EAAQgG,MAAQA,EAEhB,IAAI2nJ,EAAa,IAAI9hC,GAAM7lH,EAAM2kJ,iBAC5Bh7B,EAAQuhF,EAAepnF,QAAW6jC,EAAWlhC,WAC9CzsH,EAAQkmB,UAAY,2BAGxBrtB,KAAKuqK,aAAa31I,OAAO4sK,GAAcr6L,GAEvCnH,KAAKgN,SAAU,CACnB,EAEAU,KAAM,WACE1N,KAAKuqK,cACLvqK,KAAKuqK,aAAa31I,OAAO6sK,IAG7BzhM,KAAKgN,SAAU,CACnB,EAEAhL,QAAS,kBACEhC,KAAKuqK,YAChB,IAGJvG,EAAkBi0C,GAAa,CAC3BvrC,OAAQ,CACJ3gK,MAAO,GAEXgrB,QAAS,IAGb,IAAIuhL,GAAmBL,GAAYl1M,OAAO,CACtCoF,KAAM,SAASoiK,EAAc+tB,EAAWnxL,GACpC8wM,GAAYlwM,GAAGI,KAAKoC,KAAKvK,KAAMuqK,EAAcpjK,GAE7CnH,KAAKs4L,UAAYA,EACjBt4L,KAAKu4M,cAAgBhuC,EAAat5J,OAClCjR,KAAKw4M,cACT,EAEAA,aAAc,WACV,IAEIp2M,EAFA+iC,EAAOnlC,KAAKs4L,UAAUnzJ,KAItB/iC,EAHW+iC,EAAKgzI,SAEPyd,aACFzwJ,EAAKq8I,YAAc,eAAiB,YAEpCr8I,EAAKh+B,QAAQqrC,SAAW,QAAU,QAE7CxyC,KAAK4nM,SAAWxlM,CACpB,EAEAq2M,OAAQ,SAASt8E,GACb,IACIh3F,EADMnlC,KACKs4L,UAAUnzJ,KACrBh+B,EAFMnH,KAEQmH,QACduB,EAAQy8B,EAAKh+B,EAAQuxM,WAAa,cAAgB,YAAYv8E,GAC9Dw8E,EAAiBjwM,EAEjBvB,EAAQ8J,OACR0nM,EAAiB34M,KAAKu4M,cAAcrlC,KAAK/rK,EAAQ8J,OAAQvI,GAClDy8B,EAAKh+B,QAAQzB,OAAS+6J,IAC7Bk4C,EAAiB34M,KAAKu4M,cAAcrlC,KAAK/tI,EAAKh+B,QAAQiuK,OAAO4S,YAAY7iJ,EAAKh+B,QAAQk4K,UAAW32K,IAGrG1I,KAAKyN,KAAK,CACN0uH,MAAOA,EACPhqC,OAAQnyF,KAAK44M,YACbtgB,UAAWt4L,KAAKs4L,UAChB5vL,MAAOiwM,EACP/Q,SAAU5nM,KAAK4nM,SACfoC,UAAWhqM,KAAKs4L,UAAUnzJ,KAAK6kK,WAChChqM,KAAKmH,QACZ,EAEAuG,KAAM,WACF1N,KAAKuqK,aAAa31I,OAAO6sK,GAAc,CACnCnJ,UAAWt4L,KAAKs4L,UAChBsP,SAAU5nM,KAAK4nM,SACfoC,UAAWhqM,KAAKs4L,UAAUnzJ,KAAK6kK,WAEvC,EAEA4O,UAAW,WACP,IAOI7M,EAAiBD,EAAe3vE,EANhCm8D,EADMt4L,KACUs4L,UAChBugB,EAFM74M,KAEYmH,QAClBmG,EAAWurM,EAAYvrM,SACvB0qI,EAAU6gE,EAAY7gE,QACtBxlG,GAAY8lJ,EAAUnzJ,KAAKh+B,QAAQqrC,SACnCikI,EAAU6hB,EAAU/yB,KAAK5nC,OAuB7B,OApBInrF,GACAu5J,EAAkB96G,EACd3jF,IAAa6jF,GACb26G,EAAgB56G,EAChBirC,EAAQs6C,EAAQ/4C,aAAattF,UAAU,EAAG4nG,KAE1C8zD,EAAgB36G,EAChBgrC,EAAQs6C,EAAQl5C,UAAUntF,UAAU,GAAI4nG,MAG5C8zD,EAAgB76G,EACZ3jF,IAAa8d,GACb2gL,EAAkBzgL,EAClB6wG,EAAQs6C,EAAQl5C,UAAUntF,WAAW4nG,EAAS,KAE9C+zD,EAAkB3gL,EAClB+wG,EAAQs6C,EAAQh5C,WAAWrtF,UAAU4nG,EAAS,KAI/C,CACH7b,MAAOA,EACP+U,MAAO,CACHx+F,WAAYq5J,EACZv5J,SAAUs5J,GAGtB,IAGJ9nC,EAAkBs0C,GAAkB,CAChCtgE,QAAS,KAGb,IAAI8gE,GAAY9uC,EAAajnK,OAAO,CAChCoF,KAAM,SAASoiK,EAAcplI,EAAMh+B,GAC/B6iK,EAAajiK,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAEhCnH,KAAKmlC,KAAOA,EACZnlC,KAAK04M,WAAavzK,aAAgBu6I,EAElC,IAAI24B,EAAiBr4M,KAAKmH,QAAQ83J,QAE9Bo5C,EAAerrM,UACfhN,KAAKi/J,QAAU,IAAIq5C,GAAiB/tC,EAAcvqK,KAC9CwI,EAAW,CAAC,EAAG6vM,EAAgB,CAAEK,WAAY14M,KAAK04M,cAG9D,EAEAD,OAAQ,SAASt8E,GACbn8H,KAAKm8H,MAAQA,EACbn8H,KAAK+4M,WACL/4M,KAAKulK,KAAKv4J,SAAQ,GAEdhN,KAAKi/J,SACLj/J,KAAKi/J,QAAQw5C,OAAOt8E,EAE5B,EAEAzuH,KAAM,WACF1N,KAAKulK,KAAKv4J,SAAQ,GAEdhN,KAAKi/J,SACLj/J,KAAKi/J,QAAQvxJ,MAErB,EAEAqrM,SAAU,WACN,IAOI7jC,EANA/vI,EADMnlC,KACKmlC,KACXg3F,EAFMn8H,KAEMm8H,MACZ3pF,EAAWrN,EAAKh+B,QAAQqrC,SACxB8G,EAAMt5C,KAAKg5M,SACXC,EAAMzmK,EAAWj9B,EAAIlQ,EACrBguK,EAAY,IAAI8lB,GAAc7/I,EAAI2kC,GAAI3kC,EAAI4kC,IAS9C,GALIg3F,EADA1iI,EACU,IAAI2mJ,GAAc7/I,EAAI6kC,GAAI7kC,EAAI4kC,IAE9B,IAAIi7G,GAAc7/I,EAAI2kC,GAAI3kC,EAAI8kC,IAGxC+9C,EACA,GAAIn8H,KAAK04M,WAAY,CACjB,IAAI79B,EAAO11I,EAAKszI,QAAQtzI,EAAKo8I,mBAAmBplD,IAChDk3C,EAAU4lC,GAAO/jC,EAAQ+jC,GAAOp+B,EAAKt8F,SAAS06H,EAClD,MACI5lC,EAAU4lC,GAAO/jC,EAAQ+jC,GAAO98E,EAAM88E,GAI9Cj5M,KAAKs5C,IAAMA,EAEXt5C,KAAKulK,KAAK/oH,OAAO62H,GAAWxmC,OAAOqoC,EACvC,EAEA8jC,OAAQ,WASJ,IARA,IAMIE,EANA/zK,EAAOnlC,KAAKmlC,KACZmzI,EAAOnzI,EAAKypD,KAAK0pF,KACjB9wK,EAAS8wK,EAAK9wK,OACdgrC,EAAWrN,EAAKh+B,QAAQqrC,SACxB8G,EAAMnU,EAAKsxI,UAAUrvK,QACrB6xM,EAAMzmK,EAAWntC,EAAIkQ,EAGhBhO,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAI4xM,EAAc7gC,EAAK/wK,GACnB4xM,EAAYhyM,QAAQqrC,WAAaA,IAC5B0mK,EAGDA,EAAYvsL,KAAKwsL,EAAY1iC,WAF7ByiC,EAAcC,EAAY1iC,UAAUrvK,QAKhD,CAKA,OAHAkyC,EAAI2/J,EAAM,GAAKC,EAAYD,EAAM,GACjC3/J,EAAI2/J,EAAM,GAAKC,EAAYD,EAAM,GAE1B3/J,CACX,EAEAqxH,aAAc,WACVX,EAAajiK,GAAG4iK,aAAapgK,KAAKvK,MAElC,IAAImH,EAAUnH,KAAKmH,QACnBnH,KAAKulK,KAAO,IAAIh3B,GAAK,CACjB3O,OAAQ,CACJ3O,MAAO9pH,EAAQ8pH,MACfllH,MAAO5E,EAAQ4E,MACfgrB,QAAS5vB,EAAQ4vB,QACjB8nH,SAAU13I,EAAQ03I,UAEtB7xI,SAAS,IAGbhN,KAAK+4M,WACL/4M,KAAKihJ,OAAO9mG,OAAOn6C,KAAKulK,KAC5B,EAEAvjK,QAAS,WACDhC,KAAKi/J,SACLj/J,KAAKi/J,QAAQj9J,UAGjBgoK,EAAajiK,GAAG/F,QAAQuI,KAAKvK,KACjC,IAGJgkK,EAAkB80C,GAAW,CACzB7nF,MAAOqvC,EACPv0J,MAAO,EACPiuC,QAAS,EACTilH,QAAS,CACLjyJ,SAAS,KAIjB,IAAIosM,GAAiBpvC,EAAajnK,OAAO,CACrCoF,KAAM,SAAShB,EAASynF,GACpBo7E,EAAajiK,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAChCnH,KAAK4uF,KAAOA,CAChB,EAEAyqH,WAAY,WAIR,IAHA,IAAI9jK,EAAWv1C,KAAKu1C,SAChB/tC,EAAS+tC,EAAS/tC,OAEbD,EAAI,EAAGA,EAAIC,EAAQD,IACxB,IAAiC,IAA7BguC,EAAShuC,GAAGJ,QAAQ+yC,KACpB,OAAO,EAGf,OAAO,CACX,EAEAo/J,SAAU,WACN,OAAOt5M,KAAK4uF,KAAK2qH,WACrB,EAEA5uC,aAAc,WAKV,GAJA3qK,KAAKihJ,OAAS,IAAIxQ,GAAM,CACpBz2F,OAAQ,IAGRh6C,KAAKq5M,aAAc,CACnB,IACIG,GADUx5M,KAAK6rM,QAAU7rM,KAAKs5M,YACXrxC,SACnB5Y,EAAW9gB,GAAKc,SAASmqE,GAC7B92C,EAAiBrT,GAEjBrvJ,KAAKihJ,OAAO/mG,KAAKm1G,GACjBrvJ,KAAKy5M,cACT,CACJ,EAEAruC,UAAW,WACP,OAAOprK,IACX,EAEAy5M,aAAc,WAKV,IAJA,IACIC,EADM15M,KACOu1C,SACbs2J,EAFM7rM,KAEQ6rM,QAETtkM,EAAI,EAAGA,EAAImyM,EAAOlyM,OAAQD,IAI/B,IAHA,IAAI67H,EAASs2E,EAAOnyM,GAAG67H,QAAU,CAAC,EAC9B57H,EAAS47H,EAAO57H,OAEXujC,EAAI,EAAGA,EAAIvjC,EAAQujC,IAAK,CAC7B,IAAIoxF,EAAQiH,EAAOr4F,GACnB,GAAIoxF,IAA2B,IAAlBA,EAAMnvH,SAAqBmvH,EAAM6vE,aAAe7vE,EAAM6vE,YAAYH,GAC3E,GAAI1vE,EAAM8vE,eACN9vE,EAAM8vE,qBACH,CACH,IAAI33K,EAAQ6nG,EAAM7nG,MACdyiJ,EAAO56C,EAAM46C,KAEbziJ,GAASA,EAAMntB,QAAQ6F,UACnBsnB,EAAM08K,gBACN18K,EAAM08K,eAAenF,GAEzBv3K,EAAMntB,QAAQ+jK,QAAS,GAGvB6L,GAAQA,EAAK5vK,QAAQ6F,UACrB+pK,EAAK5vK,QAAQ+jK,QAAS,EAE9B,CAER,CAER,EAEAlpK,QAAS,WACLgoK,EAAajiK,GAAG/F,QAAQuI,KAAKvK,aAEtBA,KAAK2M,MAChB,IAGJysM,GAAe/wM,UAAUijK,aAAc,EAEvC,IAAIxkF,GAAOmmF,EAAWlqK,OAAO,CACzBoF,KAAM,SAAShB,GACX8lK,EAAWllK,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAE9BnH,KAAKqwB,GAyMF,OAASspL,KAvMZ35M,KAAK81K,cAEL91K,KAAK2mD,QAAU,IAAIqjH,EAEnBhqK,KAAK05L,eAAiB,IAAI0f,GAAe,CAAC,EAAGp5M,MAC7CA,KAAKm6C,OAAOn6C,KAAK2mD,SAEjB3mD,KAAKs4K,KAAO,GACZt4K,KAAK05M,OAAS,EAClB,EAEA5jC,YAAa,WACT,IAAI7D,EAAejyK,KAAKmH,QAAQg3C,MAC5B2kH,EAASmP,KACTA,EAAezpK,EAAW,CAAC,EAAGypK,EAAc,CACxC/gC,MAAO+gC,EAAa3kK,SACpBA,SAAU4jF,KAIlBlxF,KAAKm+C,MAAQwzH,EAAMI,WAAWE,EAAcnrF,GAAKz+E,UAAUlB,QAAQg3C,OAC/Dn+C,KAAKm+C,OACLn+C,KAAKm6C,OAAOn6C,KAAKm+C,MAEzB,EAEAy7J,WAAY,SAASz0K,GACjBnlC,KAAK2mD,QAAQxM,OAAOhV,GACpBnlC,KAAKs4K,KAAK32K,KAAKwjC,GACfA,EAAKypD,KAAO5uF,IAChB,EAEA65M,aAAc,SAAS10K,EAAMkwD,GACzBr1F,KAAK2mD,QAAQxM,OAAOhV,GACpBnlC,KAAKs4K,KAAK9tK,OAAO6qF,EAAK,EAAGlwD,GACzBA,EAAKypD,KAAO5uF,IAChB,EAEA85M,YAAa,SAASxlC,GACdt0K,KAAK05L,eAAe/sL,SAAW3M,KAAK2mD,SACpC3mD,KAAK2mD,QAAQxM,OAAOn6C,KAAK05L,gBAG7B15L,KAAK05M,OAAO/3M,KAAK2yK,GACjBt0K,KAAK05L,eAAev/I,OAAOm6H,GAC3BA,EAAM1lF,KAAO5uF,IACjB,EAEA4sD,MAAO,WACH,IAEIurH,EAAWn4K,KAAK2M,OAEpB,GAAIwrK,EAAU,CACV,IAAK,IAAI5wK,EAAI,EAAGA,EAAIvH,KAAKs4K,KAAK9wK,OAAQD,IAClC4wK,EAAS4hC,WANF/5M,KAMsBs4K,KAAK/wK,IAGtC,IAAK,IAAI0+J,EAAM,EAAGA,EAAMjmK,KAAK05M,OAAOlyM,OAAQy+J,IACxCkS,EAAS6hC,YAVFh6M,KAUuB05M,OAAOzzC,GAE7C,CAEAjmK,KAAKs4K,KAAO,GACZt4K,KAAK05M,OAAS,GAEd15M,KAAK2mD,QAAQ3kD,UACbhC,KAAK2mD,QAAQpR,SAAW,GACxBv1C,KAAK05L,eAAenkJ,SAAW,EACnC,EAEA88F,OAAQ,SAAS20B,GAEb,IAAIrgH,EACArkB,EAAKtiC,KAAKu1C,YAAcv1C,KAAK2mD,UAC7BA,EAAU3mD,KAAKu1C,SAASxlB,OAG5Bk9I,EAAWllK,GAAGsqI,OAAO9nI,KAAKvK,KAAMgnK,GAE5BrgH,GACA3mD,KAAKu1C,SAAS5zC,KAAKglD,GAGnB3mD,KAAKm+C,QACLn+C,KAAKutK,WAAWrvF,IAAMl+E,KAAKm+C,MAAM7E,IAAIttC,SAE7C,EAEAyhK,YAAa,WACT,IAAItgK,EAAQ8/J,EAAWllK,GAAG0lK,YAAYljK,KAAKvK,MAG3C,OAFAmN,EAAM6sC,QAAU,GAET7sC,CACX,EAEA29J,eAAgB,WACR9qK,KAAKmH,QAAQ6F,SACbhN,KAAK84K,iBAEb,EAEA1N,UAAW,WACP,OAAOprK,IACX,EAEAmrK,SAAU,WACN,OAAOnrK,IACX,EAEA84K,gBAAiB,WAQb,IAPA,IAAIR,EAAOt4K,KAAKs4K,KACZ2hC,EAAU3hC,EAAKl6J,OAAOpe,KAAK2M,OAAO2rK,MAClC4hC,EAAa,GACbC,EAAa,GAIR5yM,EAAI,EAAGA,EAAI+wK,EAAK9wK,OAAQD,IAI7B,IAHA,IAAI49B,EAAOmzI,EAAK/wK,GACZirC,EAAWrN,EAAKh+B,QAAQqrC,SACxB0kI,EAAY1kI,EAAW0nK,EAAaC,EAC/BpvK,EAAI,EAAGA,EAAIkvK,EAAQzyM,OAAQujC,IAChC,GAAyB,IAArBmsI,EAAU1vK,OAAc,CACxB,IAAI6wK,EAAU4hC,EAAQlvK,GAClByH,IAAa6lI,EAAQlxK,QAAQqrC,UAC7B2H,EAAO+8H,EAAW/xI,EAAK2zI,gBAAgBT,GAE/C,CAGZ,EAEA15J,QAAS,WACL3e,KAAKihJ,OAAOzqF,QAEZx2D,KAAK2mD,QAAQh6C,OAAS,KACtB3M,KAAK2mD,QAAQomH,eAAiB/sK,KAAK+sK,eAAevjK,KAAKxJ,MACvDA,KAAK2mD,QAAQ+jH,eACb1qK,KAAK2mD,QAAQh6C,OAAS3M,KAElBA,KAAKm+C,OACLn+C,KAAKihJ,OAAO9mG,OAAOn6C,KAAKm+C,MAAM8iG,QAGlCjhJ,KAAKihJ,OAAO9mG,OAAOn6C,KAAK2mD,QAAQs6F,QAEhCjhJ,KAAK8qK,iBACL9qK,KAAKo6M,cACT,EAEAb,UAAW,WAKP,IAJA,IAAIjhC,EAAOt4K,KAAKs4K,KACZ9wK,EAAS8wK,EAAK9wK,OACd+xM,EAAY,IAAIxyC,EAEXn9J,EAAM,EAAGA,EAAMpC,EAAQoC,IAAO,CACnC,IAAIu7B,EAAOmzI,EAAK1uK,GACZywM,EAAiBl1K,EAAKh+B,QAAQqrC,SAAWj9B,EAAIlQ,EAC7CoxK,EAAUtxI,EAAKsxI,UACnB8iC,EAAUc,EAAiB,GAAK5jC,EAAQ4jC,EAAiB,GACzDd,EAAUc,EAAiB,GAAK5jC,EAAQ4jC,EAAiB,EAC7D,CAEA,GAAqB,IAAjBd,EAAUp7H,GAIV,IAHA,IAAI87H,EAAUj6M,KAAK2M,OAAO2rK,KACtBgiC,EAAWL,EAAQzyM,OAEdozK,EAAQ,EAAGA,EAAQ0/B,EAAU1/B,IAAS,CAC3C,IAAI2/B,EAASN,EAAQr/B,GACrB,IAAK2/B,EAAOpzM,QAAQqrC,SAAU,CAC1B,IAAIgoK,EAAYD,EAAO9jC,UACvB8iC,EAAUt7H,GAAKu8H,EAAUv8H,GACzBs7H,EAAUp7H,GAAKq8H,EAAUr8H,EAC7B,CACJ,CAEJ,OAAOo7H,CACX,EAEA1N,QAAS,WACL,OAAO7rM,KAAK05L,eAAemS,OAC/B,EAEAuO,aAAc,WACV,IAAI/vC,EAAUrqK,KAAKsqK,aACfD,GACAA,EAAQz1I,OAAO8sK,GAAa,CACxB9yG,KAAM,IAAI4qG,GAAUx5L,MACpBsZ,MAAOtZ,KAAKy6M,UACZr4M,KAAMpC,KAAKmH,QAAQ/E,MAG/B,IAGAu3M,GAAK,EAMT7yH,GAAKz+E,UAAUijK,aAAc,EAE7BtH,EAAkBl9E,GAAM,CACpB9sC,QAAS,EACTkzH,aAAa,EACb/uH,MAAO,CACH+yF,MAAO9lH,GAEXpe,SAAS,IAGb,IAAI0tM,GAAe1wC,EAAajnK,OAAO,CACnCoF,KAAM,SAAS8mC,EAAQ9nC,EAASojK,GAC5BP,EAAajiK,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAEhCnH,KAAK21K,WAAW1mI,EAAQ9nC,GACxBnH,KAAKivC,OAASA,EACdjvC,KAAK26M,aACL36M,KAAK05M,OAAS,GACd15M,KAAKmH,QAAQ2uL,OAAS91L,KAAKmH,QAAQ2uL,QAAU,CAAC,EAC9C91L,KAAKmH,QAAQ2uL,OAAO1nL,KAAO,GAC3BpO,KAAKs4K,KAAO,GACZt4K,KAAK46M,WAAa,GAClB56M,KAAKuqK,aAAeA,EACpBvqK,KAAK66M,gBAAkB1zM,EACvBnH,KAAK86M,eAAiB7rK,EACtBjvC,KAAK+6M,WAAa,IAAIpW,QAEtB3kM,KAAKg7M,cACLh7M,KAAKmQ,SACLnQ,KAAKi7M,kBACT,EAEAtlC,WAAY,WAAa,EAEzBglC,WAAY,WAGR,IAFA,IAAI1rK,EAASjvC,KAAKivC,OAET1nC,EAAI,EAAGA,EAAI0nC,EAAOznC,OAAQD,IAC/B0nC,EAAO1nC,GAAG+R,MAAQ/R,CAE1B,EAEAuzL,UAAW,SAAS7rJ,EAAQ8rJ,EAAS5rJ,GACjC,IAAI+rK,EAASl7M,KAAK+6M,WAAW9qL,IAAIgf,GAC5BisK,IACDA,EAAS,GACTl7M,KAAK+6M,WAAW7qL,IAAI+e,EAAQisK,IAGhC,IAAI9sM,EAAO8sM,EAAOngB,GAKlB,OAJK3sL,IACDA,EAAO8sM,EAAOngB,GAAWV,GAAarmL,QAAQ8mL,UAAU7rJ,EAAQ8rJ,EAAS5rJ,IAGtE/gC,CACX,EAEA4sM,YAAa,WAeT,IAdA,IAEI/oC,EAAejyK,KAAKmH,QAAQg3C,OAAS,CAAC,EACtCg9J,EAAen7M,KAAKmH,QAAQg0M,aAC5BC,EAAcp7M,KAAKmH,QAAQk0M,OAAS,GACpCC,EAAcj4M,KAAK8V,IAAIiiM,EAAY5zM,OAAQ,GAC3C6zM,EAAQ,GAERz6M,EAAW4H,EAAW,CACtB21C,MAAO,CACH8yE,MAAOghD,EAAahhD,QAEzBkqF,GAEM5zM,EAAI,EAAGA,EAAI+zM,EAAa/zM,IAAK,CAClC,IAAIJ,EAAUqB,EAAW,CAAC,EAAG5H,EAAUw6M,EAAY7zM,IAC/CqB,EAASzB,EAAQg3C,SACjBh3C,EAAQg3C,MAAQ31C,EAAW,CAAEs4B,KAAM35B,EAAQg3C,OAASv9C,EAASu9C,QAGjE,IAAIo9J,EAAc,IAAIz0H,GAAK3/E,GAC3Bo0M,EAAYd,UAAYlzM,EAExB8zM,EAAM15M,KAAK45M,GAvBAv7M,KAwBFm6C,OAAOohK,EACpB,CAEAv7M,KAAKq7M,MAAQA,CACjB,EAEAG,iBAAkB,SAASr2K,GACvB,OAAOA,EAAKh+B,QAAQmxL,SACxB,EAEA2iB,iBAAkB,SAASI,GACvB,IAAIpoF,EAAWjzH,UACD,IAAVq7M,IAAoBA,EAAQr7M,KAAKq7M,OAErC,IAAK,IAAI9zM,EAAI,EAAGA,EAAI8zM,EAAM7zM,OAAQD,IAE9B,IADA,IAAIqnF,EAAOysH,EAAM9zM,GACRwjC,EAAI,EAAGA,EAAI6jD,EAAK0pF,KAAK9wK,OAAQujC,IAAK,CACvC,IAAI5F,EAAOypD,EAAK0pF,KAAKvtI,GACjB5jC,EAAU8rH,EAASuoF,iBAAiBr2K,GACxC,GAAIh+B,GAAWA,EAAQ6F,QAAS,CAC5B,IAAIyuM,EAAmB,IAAI3C,GAAU7lF,EAASs3C,aAAcplI,EAAMh+B,GAElE8rH,EAAS2nF,WAAWj5M,KAAK85M,GACzB7sH,EAAKjoC,QAAQxM,OAAOshK,EACxB,CACJ,CAER,EAEAC,iBAAkB,SAAS9sH,GAIvB,IAHA,IAAIgsH,EAAa56M,KAAK46M,WAClBtiC,EAAO1pF,EAAK0pF,KAEP/wK,EAAIqzM,EAAWpzM,OAAS,EAAGD,GAAK,EAAGA,IACxC,IAAK,IAAIwjC,EAAI,EAAGA,EAAIutI,EAAK9wK,OAAQujC,IAC7B,GAAI6vK,EAAWrzM,GAAG49B,OAASmzI,EAAKvtI,GAAI,CAChC6vK,EAAWpwM,OAAOjD,EAAG,GACrB,KACJ,CAGZ,EAEAo0M,eAAgB,WAEZ,IADA,IAAIf,EAAa56M,KAAK46M,WACbhxM,EAAM,EAAGA,EAAMgxM,EAAWpzM,OAAQoC,IACvCgxM,EAAWhxM,GAAK8D,MAExB,EAEAkuM,SAAU,SAASx5M,GAIf,IAHA,IACIy5M,EADAR,EAAQr7M,KAAKq7M,MAGR9zM,EAAI,EAAGA,EAAI8zM,EAAM7zM,OAAQD,IAC9B,GAAI8zM,EAAM9zM,GAAGJ,QAAQ/E,OAASA,EAAM,CAChCy5M,EAAeR,EAAM9zM,GACrB,KACJ,CAGJ,OAAOs0M,GAAgBR,EAAM,EACjC,EAEAS,cAAe,SAAS3/E,GAIpB,IAHA,IACI0/E,EADAR,EAAQr7M,KAAKq7M,MAGR9zM,EAAI,EAAGA,EAAI8zM,EAAM7zM,OAAQD,IAC9B,GAAI8zM,EAAM9zM,GAAG+xC,IAAI6kF,cAAchC,GAAQ,CACnC0/E,EAAeR,EAAM9zM,GACrB,KACJ,CAGJ,OAAOs0M,CACX,EAEAjC,WAAY,SAASz0K,GACNnlC,KAAK47M,SAASz2K,EAAKh+B,QAAQynF,MAEjCgrH,WAAWz0K,GAChBnlC,KAAKs4K,KAAK32K,KAAKwjC,GACfA,EAAKgzI,SAAWn4K,IACpB,EAEA+5M,WAAY,SAASgC,GAKjB,IAJA,IAEIC,EAAe,GAEVz0M,EAAI,EAAGA,EAAIvH,KAAKs4K,KAAK9wK,OAAQD,IAAK,CACvC,IAAI49B,EALOnlC,KAKSs4K,KAAK/wK,GACrBw0M,IAAiB52K,EACjB62K,EAAar6M,KAAKwjC,GAElBA,EAAKnjC,SAEb,CAEAhC,KAAKs4K,KAAO0jC,CAChB,EAEAlC,YAAa,SAASxlC,EAAO1lF,GACzB5uF,KAAK05M,OAAO/3M,KAAK2yK,GACb1lF,EACAA,EAAKkrH,YAAYxlC,GAEjBt0K,KAAKm6C,OAAOm6H,EAEpB,EAEA0lC,YAAa,SAASiC,GAKlB,IAJA,IAEIC,EAAiB,GAEZ30M,EAAI,EAAGA,EAAIvH,KAAK05M,OAAOlyM,OAAQD,IAAK,CACzC,IAAI+sK,EALOt0K,KAKU05M,OAAOnyM,GACxB+sK,IAAU2nC,EACVC,EAAev6M,KAAK2yK,GAEpBA,EAAMtyK,SAEd,CAEAhC,KAAK05M,OAASwC,CAClB,EAEAC,YAAa,SAASltK,GAQlB,IAPA,IAAI3zB,EAAQ2zB,EAAOznC,OACfsuL,EAAS91L,KAAKmH,QAAQ2uL,OACtB1gB,EAAS0gB,EAAO1gB,QAAU,CAAC,EAC3B8iB,EAAgBpC,EAAOoC,eAAiB,CAAC,EACzCkkB,EAAsBlkB,EAAc9iB,QAAU,CAAC,EAC/ChnK,EAAO,GAEF7G,EAAI,EAAGA,EAAI+T,EAAO/T,IAAK,CAC5B,IAAIk9L,EAAgBx1J,EAAO1nC,GACvB80M,GAA0C,IAA1B5X,EAAcz3L,QAClC,IAAsC,IAAlCy3L,EAAc6X,gBAAlB,CAIA,IAAIx7K,EAAO2jK,EAAcriM,KACrBy2K,EAAgBwjC,EAAgBh5C,EAAY+R,GAAU/R,EAAY+4C,IAAwB/4C,EAAY+R,GACtGyD,IACA/3I,EAAO+3I,EAAc,CACjB/3I,KAAMs0C,GAASt0C,GAAQA,EAAO,GAC9BmO,OAAQw1J,KAIhB,IAAI7jM,EAAW6jM,EAAcuE,UACzB/3E,EAAQwzE,EAAcxzE,MACtB/nH,EAAW+nH,IAAUrwH,IACrBqwH,EAAQrwH,EAASqwH,OAGrB,IAAIsrF,OAAmB,EAAUC,OAAc,EAC3CH,GACAE,EAAmB,CAAC,EACpBC,EAAcvrF,IAEdsrF,EAAmB,CACftrF,MAAOmrF,EAAoBnrF,MAC3Bl5B,KAAMqkH,EAAoBrkH,MAE9BykH,EAActkB,EAAclG,QAAQ/gE,OAGpC77C,GAASt0C,IAAkB,KAATA,GAClB1yB,EAAKzM,KAAK,CACNm/B,KAAMA,EACNs0I,OAAQmnC,EACRC,YAAaA,EACbvtK,OAAQw1J,EACRgY,OAAQJ,GAnChB,CAsCJ,CAEAliK,EAAO27I,EAAO1nL,KAAMA,EACxB,EAEAsuM,UAAW,SAASrB,GAIhB,IAHA,IAAIsB,EAAQ,GACRC,EAAQ,GAEHC,EAAS,EAAGA,EAASxB,EAAM7zM,OAAQq1M,IAExC,IADA,IAAIC,EAAWzB,EAAMwB,GAAQvkC,KACpBykC,EAAS,EAAGA,EAASD,EAASt1M,OAAQu1M,IAAU,CACrD,IAAI53K,EAAO23K,EAASC,GAChB53K,EAAKh+B,QAAQqrC,SACboqK,EAAMj7M,KAAKwjC,GAEXw3K,EAAMh7M,KAAKwjC,EAEnB,CAGJ,MAAO,CAAE//B,EAAGu3M,EAAOx4M,EAAGy4M,EAAOI,IAAKL,EAAMv+L,OAAOw+L,GACnD,EAEAK,kBAAmB,WAMf,IALA,IAEIhuK,EAASjvC,KAAKivC,OACdiuK,EAAe,CAAC,EAEX31M,EAAI,EAAGA,EAAI0nC,EAAOznC,OAAQD,IAAK,CACpC,IAAIk9L,EAAgBx1J,EAAO1nC,GACvBqnF,EAPO5uF,KAOSm9M,eAAe1Y,GAE/ByY,EAAatuH,GACbsuH,EAAatuH,GAAMjtF,KAAK8iM,GAExByY,EAAatuH,GAAQ,CAAE61G,EAE/B,CAEA,OAAOyY,CACX,EAEAE,oBAAqB,SAASnuK,GAG1B,IAFA,IAAIn4B,EAAS,GAEJvP,EAAI,EAAGA,EAAI0nC,EAAOznC,OAAQD,IAAK,CACpC,IAAIk9L,EAAgBx1J,EAAO1nC,IACG,IAA1Bk9L,EAAcz3L,SACd8J,EAAOnV,KAAK8iM,EAEpB,CAEA,OAAO3tL,CACX,EAEAu7H,OAAQ,SAAS20B,GACb,IAAI7/J,EAAUnH,KAAKmH,QAAQgxK,SACvBkjC,EAAQr7M,KAAKq7M,MACbtiK,EAASmqH,EAAW/7J,EAAQ4xC,QAEhC/4C,KAAKs5C,IAAM0tH,EAAU5/J,QAAQqgK,MAAM1uH,GACnC/4C,KAAKq9M,cAELr9M,KAAKs9M,eACLt9M,KAAKu9M,WAAWlC,GAChBr7M,KAAKw9M,aAAanC,EACtB,EAEAoC,OAAQ,SAASpC,GACb,IAEIqC,EAAa,GAAGt/L,OAAOi9L,GAC3Br7M,KAAK26M,aAGL,IAAI98J,EAAO79C,KAAKmqK,UACZtsH,GACAA,EAAKwxH,iBAGT,IAAK,IAAI9nK,EAAI,EAAGA,EAAIm2M,EAAWl2M,OAAQD,IAXxBvH,KAYF07M,iBAAiBgC,EAAWn2M,IACrCm2M,EAAWn2M,GAAGqlD,QAGlB5sD,KAAK+6M,WAAa,IAAIpW,QAEtB3kM,KAAKmQ,OAAOutM,GACZ19M,KAAKs9M,eACLt9M,KAAKu9M,WAAWv9M,KAAKq7M,OACrBr7M,KAAKw9M,aAAaE,GAElB19M,KAAKi7M,iBAAiByC,GAEtB,IAAK,IAAIz3C,EAAM,EAAGA,EAAMy3C,EAAWl2M,OAAQy+J,IACvCy3C,EAAWz3C,GAAKtnJ,SAExB,EAEAksK,mBAAoB,SAAS1lJ,EAAMw4K,GAQ/B,IAPA,IAAIx2M,EAAUg+B,EAAKh+B,QACfy2M,EAAiB,GAAGx/L,OACpBjX,EAAQ0jL,oBAAsB1jL,EAAQ01K,mBAEtCghC,EAAcF,EAAan2M,OAASo2M,EAAep2M,OACnD0nD,EAAe0uJ,EAAe,IAAM,EAE/Br2M,EAAI,EAAGA,EAAIs2M,EAAat2M,IAC7Bq2M,EAAej8M,KAAKutD,GAGxB,OAAO0uJ,CACX,EAEAE,YAAa,SAAS34K,EAAM44K,EAAYxO,EAAeyO,GACnD,IAAInjC,EAAO11I,EAAKszI,QAAQ82B,EAAeA,GAAe,GAClD0O,EAAW94K,EAAKh+B,QAAQkP,QAAU,EAAI,EACtCshM,EAAaoG,EAAWtlC,QAAQulC,EAAqBA,GAAqB,GAC1EE,EAAaH,EAAW52M,QAAQkP,QAAU,EAAI,EAC9C8nM,EAAUh5K,EAAKmU,IAAIlJ,UACnBunK,EAAWtyM,EAAI64M,GAAcrjC,EAAKx1K,EAAI44M,GACtCtG,EAAWpiM,EAAI2oM,GAAcrjC,EAAKtlK,EAAI0oM,IAGtC94K,EAAKypD,OAASmvH,EAAWnvH,MACzBuvH,EAAQ/tK,UAAU,EAAGjL,EAAKypD,KAAKt1C,IAAI4kC,GAAK6/H,EAAWnvH,KAAKt1C,IAAI4kC,IAGhE/4C,EAAKktG,OAAO8rE,EAChB,EAEAC,UAAW,SAASzB,EAAOC,GAYvB,IAXA,IAAI3pF,EAAWjzH,KAEXq+M,EAAU1B,EAAM,GAChB2B,EAAU1B,EAAM,GAChB2B,EAAmBv+M,KAAK6qL,mBAAmBwzB,EAASzB,GACpD4B,EAAmBx+M,KAAK6qL,mBAAmByzB,EAAS3B,GACpD8B,EAAc,CAAC,EACfC,EAAe,CAAC,EAChBC,EAAa,CAAC,EACdC,EAAgB,CAAC,EAEZr3M,EAAI,EAAGA,EAAIq1M,EAAMp1M,OAAQD,IAAK,CACnC,IAAI49B,EAAOy3K,EAAMr1M,GACbqnF,EAAOzpD,EAAKypD,KACZiwH,EAASjwH,EAAKv+D,GACdrjB,GAAmC,IAAzBm4B,EAAKh+B,QAAQ6F,QAGvBmlF,EAAS2sH,GAAWnC,EAAO/tH,IAASyvH,EACpCU,EAAkBR,EAQtB,GANIpsH,IAAWksH,IACXU,EAAkB9rF,EAAS43D,mBAAmB14F,EAAQyqH,IAG1D3pF,EAAS6qF,YAAY34K,EAAMgtD,EAAQqsH,EAAiBj3M,GAAIw3M,EAAgBx3M,KAEpE49B,EAAKh+B,QAAQ63M,SAAjB,CAII1oM,EAAM6uB,EAAKsxI,UAAUx4F,MAAQ3nE,EAAM67E,EAAOskF,UAAUx4F,MAEhDwgI,EAAYI,IACZ15K,EAAKktG,OAAOltG,EAAKmU,IACZ8tH,QAAQq3C,EAAYI,GAAQvlK,IAAKluB,GACjCglB,WAAWjL,EAAKh+B,QAAQ4xC,OAAQ,IAIrC/rC,IACAyxM,EAAYI,GAAU15K,IAI1B7uB,EAAM6uB,EAAKsxI,UAAUt4F,MAAQ7nE,EAAM67E,EAAOskF,UAAUt4F,MAE/Ch5C,EAAK85K,YACN95K,EAAKh+B,QAAQiuK,OAAOphI,QAAU7O,EAAKh+B,QAAQiuK,OAAOphI,OAClD7O,EAAK85K,WAAY,GAGrBhsF,EAAS6qF,YAAY34K,EAAMgtD,EAAQqsH,EAAiBj3M,GAAIw3M,EAAgBx3M,IAGpEm3M,EAAaG,IACb15K,EAAKktG,OAAOltG,EAAKmU,IACZ8tH,QAAQs3C,EAAaG,GAAQvlK,IAAKhuB,GAClC8kB,UAAUjL,EAAKh+B,QAAQ4xC,OAAQ,IAIpC/rC,IACA0xM,EAAaG,GAAU15K,IAK/B,IAAI+5K,EAAcJ,GAAWlC,EAAOhuH,IAAS0vH,EACzCY,IAAgB/5K,IAChBA,EAAKiiI,QAAQ83C,GACb/5K,EAAKktG,OAAOltG,EAAKmU,KA1CrB,CA4CJ,CAEA,IAAK,IAAI2sH,EAAM,EAAGA,EAAM02C,EAAMn1M,OAAQy+J,IAAO,CACzC,IAAIs0C,EAASoC,EAAM12C,GACfk5C,EAAS5E,EAAO3rH,KAChBwwH,EAAWD,EAAO9uL,GAClBgvL,GAAuC,IAA3B9E,EAAOpzM,QAAQ6F,QAG3BsyM,EAAWR,GAAWlC,EAAOuC,IAAWb,EACxCiB,EAAoBf,EACpBc,IAAahB,IACbiB,EAAoBtsF,EAAS43D,mBAAmBy0B,EAAU3C,IAG9D1pF,EAAS6qF,YAAYvD,EAAQ+E,EAAUf,EAAiBt4C,GAAMs5C,EAAkBt5C,IAE5Es0C,EAAOpzM,QAAQ63M,WAIf1oM,EAAMikM,EAAO9jC,UAAUv4F,MAAQ5nE,EAAMgpM,EAAS7oC,UAAUv4F,MAEnDq8H,EAAO0E,YACR1E,EAAOpzM,QAAQiuK,OAAOphI,QAAUumK,EAAOpzM,QAAQiuK,OAAOphI,OACtDumK,EAAO0E,WAAY,GAEvBhsF,EAAS6qF,YAAYvD,EAAQ+E,EAAUf,EAAiBt4C,GAAMs5C,EAAkBt5C,IAG5E04C,EAAWS,IACX7E,EAAOloE,OAAOkoE,EAAOjhK,IAChB8tH,QAAQu3C,EAAWS,GAAU9lK,IAAK43C,GAClC9gD,UAAU,GAAImqK,EAAOpzM,QAAQ4xC,SAIlCsmK,IACAV,EAAWS,GAAY7E,IAI3BjkM,EAAMikM,EAAO9jC,UAAUr4F,GAAIwjF,KAAqBtrJ,EAAMgpM,EAAS7oC,UAAUr4F,GAAIwjF,KAEzEg9C,EAAcQ,IACd7E,EAAOloE,OAAOkoE,EAAOjhK,IAChB8tH,QAAQw3C,EAAcQ,GAAU9lK,IAAK63C,GACrC/gD,UAAU,EAAGmqK,EAAOpzM,QAAQ4xC,SAIjCsmK,IACAT,EAAcQ,GAAY7E,IAItB,IAARt0C,IACAs0C,EAAOnzC,QAAQi3C,GACf9D,EAAOloE,OAAOkoE,EAAOjhK,MAE7B,CACJ,EAEAkmK,gBAAiB,SAASnE,GAKtB,IAJA,IAAI/iC,EAAOt4K,KAAK08M,UAAUrB,GAAO2B,IAC7BmB,EAAUsB,GAAannC,GACvBonC,EAAY,EAEPn4M,EAAI,EAAGA,EAAI8zM,EAAM7zM,OAAQD,IAAK,CACnC,IAAIg0M,EAAcF,EAAM9zM,GAEpBg0M,EAAYjjC,KAAK9wK,OAAS,IAC1Bk4M,EAAYr8M,KAAK8V,IACbumM,EACAvB,EAAQpyM,QAAUwvM,EAAYhuC,WAAWxhK,SAGrD,CAEA,GAAkB,IAAd2zM,EACA,IAAK,IAAIz5C,EAAM,EAAGA,EAAMqS,EAAK9wK,OAAQy+J,IAAO,CACxC,IAAIkzC,EAAc7gC,EAAKrS,GAElBkzC,EAAYhyM,QAAQqrC,UACrB2mK,EAAY9mE,OAAO8mE,EAAY7/J,IAAIguH,OAAOo4C,EAAW,GAE7D,CAER,EAEAC,iBAAkB,SAAStE,GAGvB,IAFA,IAAIuE,EAEKr4M,EAAI,EAAGA,EAAI8zM,EAAM7zM,OAAQD,IAAK,CACnC,IAAIg0M,EAAcF,EAAM9zM,GACpB+wK,EAAOijC,EAAYjjC,KACnBunC,EAAYx8M,KAAK8V,IAAI,EAAGsmM,GAAannC,GAAMtsK,SAAWuvM,EAAYhuC,WAAWvhK,UAEjF,GAAkB,IAAd6zM,EAAiB,CACjB,IAAK,IAAI90K,EAAI,EAAGA,EAAIutI,EAAK9wK,OAAQujC,IAAK,CAClC,IAAIouK,EAAc7gC,EAAKvtI,GAEnBouK,EAAYhyM,QAAQqrC,UACpB2mK,EAAY9mE,OACR8mE,EAAY7/J,IAAIguH,OAAO,EAAGu4C,GAGtC,CACAD,GAAW,CACf,CACJ,CAEA,OAAOA,CACX,EAEAE,QAAS,SAASzE,GAId,IAHA,IAAI/iC,EAAOt4K,KAAK08M,UAAUrB,GAAO2B,IAC7Bz1H,EAAU,EAELhgF,EAAI,EAAGA,EAAI8zM,EAAM7zM,OAAQD,IAAK,CACnC,IAAIg0M,EAAcF,EAAM9zM,GACpBu1M,EAAWvB,EAAYjjC,KACvBynC,EAAUxE,EAAYhuC,WAE1B,GAAIuvC,EAASt1M,OAAS,EAAG,CACrB,IAAI22M,EAAUsB,GAAa3C,GAEvBt1H,EAAUnkF,KAAK8V,IAAI4mM,EAAQ7hI,GAAKigI,EAAQjgI,GAAI6hI,EAAQ3hI,GAAK+/H,EAAQ//H,IAGrEmJ,EAAUlkF,KAAK8V,IAAIouE,EAASw4H,EAAQ9hI,GAAKkgI,EAAQlgI,IAEjD,IAAK,IAAIlzC,EAAI,EAAGA,EAAI+xK,EAASt1M,OAAQujC,IAAK,CACtC,IAAIouK,EAAc2D,EAAS/xK,GAE3BouK,EAAY9mE,OACR8mE,EAAY7/J,IAAIlJ,UAAU,EAAGo3C,GAErC,CACJ,CACJ,CAEA,IAAK,IAAIy+E,EAAM,EAAGA,EAAMqS,EAAK9wK,OAAQy+J,IAAO,CACxC,IAAI+5C,EAAgB1nC,EAAKrS,GAEzB+5C,EAAc3tE,OACV2tE,EAAc1mK,IAAIlJ,UAAUm3C,EAAS,GAE7C,CACJ,EAEAg2H,WAAY,SAASlC,GAKjB,IAJA,IAEI/iC,EAAOt4K,KAAK08M,UAAUrB,GAEjB9zM,EAAI,EAAGA,EAAI8zM,EAAM7zM,OAAQD,IAJnBvH,KAKFigN,eAAe5E,EAAM9zM,IAG9B+wK,EAAKlzK,EAAEoC,OAAS,GAAK8wK,EAAKn0K,EAAEqD,OAAS,IACrCxH,KAAKo+M,UAAU9lC,EAAKlzK,EAAGkzK,EAAKn0K,GAC5BnE,KAAKw/M,gBAAgBnE,GAErBr7M,KAAKkgN,qBAAqB5nC,GAE1Bt4K,KAAKo+M,UAAU9lC,EAAKlzK,EAAGkzK,EAAKn0K,GACxBnE,KAAKw/M,gBAAgBnE,IACrBr7M,KAAKo+M,UAAU9lC,EAAKlzK,EAAGkzK,EAAKn0K,GAGhCnE,KAAK2/M,iBAAiBtE,GACtBr7M,KAAKo+M,UAAU9lC,EAAKlzK,EAAGkzK,EAAKn0K,GAExBnE,KAAK2/M,iBAAiBtE,IACtBr7M,KAAKo+M,UAAU9lC,EAAKlzK,EAAGkzK,EAAKn0K,GAGhCnE,KAAK8/M,QAAQzE,GAErB,EAEA6E,qBAAsB,SAASC,GAQ3B,IAPA,IAKIC,EAFA/E,EADMr7M,KACMq7M,MACZ/iC,EAAO+nC,GAAYhF,GAGdzxM,EAAM,EAAGA,EAAM0uK,EAAK9wK,OAAQoC,IAAO,CAC7B0uK,EAAK1uK,GACPysK,qBACL+pC,GAAU,EAElB,CAEA,GAAIA,EAAS,CACT,IAAK,IAAIxlC,EAAQ,EAAGA,EAAQygC,EAAM7zM,OAAQozK,IAf/B56K,KAgBEigN,eAAe5E,EAAMzgC,IAG9BulC,EAAY/6M,EAAEoC,OAAS,GAAK24M,EAAYh8M,EAAEqD,OAAS,IACnDxH,KAAKo+M,UAAU+B,EAAY/6M,EAAG+6M,EAAYh8M,GAC1CnE,KAAKw/M,gBAAgBnE,GAE7B,CACJ,EAEA4E,eAAgB,SAASrxH,GACrB,IAAI0pF,EAAO1pF,EAAK0pF,KACZ9wK,EAAS8wK,EAAK9wK,OAElB,GAAIA,EAAS,EACT,IAAK,IAAID,EAAI,EAAGA,EAAIC,EAAQD,IACxB+wK,EAAK/wK,GAAG8qI,OAAOzjD,EAAK2+E,WAGhC,EAEAiwC,aAAc,SAASnC,GAKnB,IAJA,IAAI3B,EAAS15M,KAAK05M,OACdp+L,EAAQo+L,EAAOlyM,OACf8xC,EAAMt5C,KAAKs5C,IAEN/xC,EAAI,EAAGA,EAAI+T,EAAO/T,IAAK,CAC5B,IAAI+4M,EAAY5G,EAAOnyM,GAAGqnF,KACrB0xH,IAAa7qL,EAAQ6qL,EAAWjF,IACjC3B,EAAOnyM,GAAG8qI,OAAO/4F,EAEzB,CACJ,EAEA+jK,YAAa,WAST,IARA,IACI/jK,EADMt5C,KACIs5C,IACV+hK,EAFMr7M,KAEMq7M,MACZC,EAAcD,EAAM7zM,OACpB+4M,EAAkBjnK,EAAIttC,SACtBw0M,EAAkB,EAClBt7L,EAAMo0B,EAAI4kC,GAEL32E,EAAI,EAAGA,EAAI+zM,EAAa/zM,IAAK,CAClC,IAAIg0M,EAAcF,EAAM9zM,GACpByE,EAASuvM,EAAYp0M,QAAQ6E,OAIjC,GAFAuvM,EAAYp0M,QAAQ4E,MAAQutC,EAAIvtC,QAE3BwvM,EAAYp0M,QAAQ6E,OAElB,CACH,GAAIA,EAAO2J,SAAW3J,EAAO2J,QAAQ,KAAM,CACvC,IAAI8qM,EAAWjnM,SAASxN,EAAQ,IAAM,IACtCuvM,EAAYp0M,QAAQ6E,OAASy0M,EAAWnnK,EAAIttC,QAChD,CAEAuvM,EAAYlpE,OAAO/4F,EAAIlyC,SAEvBm5M,GAAmBhF,EAAYp0M,QAAQ6E,MAC3C,MAVIw0M,GAWR,CAEA,IAAK,IAAIv6C,EAAM,EAAGA,EAAMq1C,EAAar1C,IAAO,CACxC,IAAIy6C,EAAgBrF,EAAMp1C,GAErBy6C,EAAcv5M,QAAQ6E,SACvB00M,EAAcv5M,QAAQ6E,OAASu0M,EAAkBC,EAEzD,CAEA,IAAK,IAAIp6C,EAAM,EAAGA,EAAMk1C,EAAal1C,IAAO,CACxC,IAAIu6C,EAAgBtF,EAAMj1C,GACtB25C,EAAUzmK,EACTlyC,QACAszB,KAAK4e,EAAI2kC,GAAI/4D,GAElBy7L,EAActuE,OAAO0tE,GAErB76L,GAAOy7L,EAAcx5M,QAAQ6E,MACjC,CACJ,EAEA40M,cAAe,WAKX,IAJA,IAEItnK,EAFAg/H,EAAOt4K,KAAKs4K,KACZuoC,EAAYvoC,EAAK9wK,OAGZD,EAAI,EAAGA,EAAIs5M,EAAWt5M,IAG3B,IAFA,IAAIu5M,EAAQxoC,EAAK/wK,GAERwjC,EAAI,EAAGA,EAAI81K,EAAW91K,IAAK,CAChC,IAAIg2K,EAAQzoC,EAAKvtI,GAEjB,GAAI+1K,EAAM35M,QAAQqrC,WAAauuK,EAAM55M,QAAQqrC,SAAU,CACnD,IAAIikI,EAAUqqC,EAAMrqC,UAAUrvK,QAAQulB,KAAKo0L,EAAMtqC,WAK7Cn9H,EAHCA,EAGKA,EAAI3sB,KAAK8pJ,GAFTA,CAId,CACJ,CAGJ,OAAOn9H,GAAOt5C,KAAKs5C,GACvB,EAEA0nK,YAAa,WAIT,IAHA,IAAI3F,EAAQr7M,KAAKq7M,MACb/oD,EAAQ,GAEH1oJ,EAAM,EAAGA,EAAMyxM,EAAM7zM,OAAQoC,IAClC0oJ,EAAM3wJ,KAAK05M,EAAMzxM,GAAK2vM,aAG1B,OAAOjnD,CACX,EAEA2uD,mBAAoB,SAASC,GAEzB,IADA,IAAI5uD,EAAQtyJ,KAAKghN,cACRp3M,EAAM,EAAGA,EAAM0oJ,EAAM9qJ,OAAQoC,IAClCs3M,EAAUpzJ,MAAMnsD,KAAK4sI,GAAKc,SAASijB,EAAM1oJ,GAAKq+J,UAEtD,EAEAk5C,wBAAyB,SAAShlF,GAE9B,IADA,IAAIm2B,EAAQtyJ,KAAKghN,cACRp3M,EAAM,EAAGA,EAAM0oJ,EAAM9qJ,OAAQoC,IAClC,GAAI0oJ,EAAM1oJ,GAAKu0H,cAAchC,GACzB,OAAO,CAGnB,EAEAwuC,aAAc,WACVX,EAAajiK,GAAG4iK,aAAapgK,KAAKvK,MAElC,IA0UeixH,EA1UX9pH,EAAUnH,KAAKmH,QAAQgxK,SACvBphJ,EAAU5vB,EAAQ4vB,QAClB+9H,EAAa3tJ,EAAQ2tJ,WACrB4X,EAASvlK,EAAQulK,YAAuB,IAAXA,IAAqBA,EAAS,CAAC,GAwUnD,MADEz7C,EAtUG6jC,IAuUW,OAAV7jC,GAA4B,SAAVA,GAA8B,gBAAVA,GAA4B6F,EAAQ7F,KAtUzF6jC,EAAauM,EACbtqI,EAAU,GAGd,IAAI22H,EAAK1tJ,KAAK+5L,UAAY,IAAI3qD,GAAU,CACpC17G,KAAM,CACFu9F,MAAO6jC,EACP/9H,QAASA,GAEb6oG,OAAQ,CACJ3O,MAAOy7C,EAAO3gK,MAAQ2gK,EAAOz7C,MAAQ,GACrCllH,MAAO2gK,EAAO3gK,MACd8yI,SAAU6tB,EAAO7tB,UAErB7kG,QAAS,IAGbh6C,KAAKihN,mBAAmBvzD,GAExB1tJ,KAAKgrK,aAAatd,EACtB,EAEA0zD,sBAAuB,SAAS9/B,GAC5B,IAAIo4B,EAAS15M,KAAK05M,OACd5iM,EAAS,GAEb,GAAsB,OAAlBwqK,EACA,IAAK,IAAI/5K,EAAI,EAAGA,EAAImyM,EAAOlyM,OAAQD,IAAK,CAGpC,GAAgC,eAFpBmyM,EAAOnyM,GAETqnF,KAAKznF,QAAQ/E,KAAvB,CAIA,IAAIghI,EAASs2E,EAAOnyM,GAAG4+L,eAAe7kB,GACtC,GAAIl+C,GAAUA,EAAO57H,OACjB,IAAK,IAAIujC,EAAI,EAAGA,EAAIq4F,EAAO57H,OAAQujC,IAAK,CACpC,IAAIoxF,EAAQiH,EAAOr4F,GACfoxF,GAASrF,EAAQqF,EAAMzzH,QAA0B,OAAhByzH,EAAMzzH,OACvCoO,EAAOnV,KAAKw6H,EAEpB,CATJ,CAWJ,CAGJ,OAAOrlH,CACX,EAEAuqM,oBAAqB,SAASC,GAC1B,OAAOthN,KAAKuhN,cAAa,SAASplF,GAC9B,OAAOA,EAAMltF,OAAO31B,QAAUgoM,CAClC,GACJ,EAEAE,mBAAoB,SAASC,GACzB,OAAOzhN,KAAKuhN,cAAa,SAASplF,GAC9B,OAAOA,EAAMiwE,aAAeqV,CAChC,GACJ,EAEAC,mBAAoB,SAASt/M,GACzB,OAAOpC,KAAKuhN,cAAa,SAASplF,GAC9B,OAAOA,EAAMltF,OAAO7sC,OAASA,CACjC,GACJ,EAEAm/M,aAAc,SAAS33L,GAInB,IAHA,IAAI8vL,EAAS15M,KAAK05M,OACd5iM,EAAS,GAEJvP,EAAI,EAAGA,EAAImyM,EAAOlyM,OAAQD,IAG/B,IAFA,IACI67H,EADQs2E,EAAOnyM,GACA67H,OACVr4F,EAAI,EAAGA,EAAIq4F,EAAO57H,OAAQujC,IAAK,CACpC,IAAIoxF,EAAQiH,EAAOr4F,GACfoxF,IAA2B,IAAlBA,EAAMnvH,SAAqB4c,EAASuyG,IAC7CrlH,EAAOnV,KAAKw6H,EAEpB,CAGJ,OAAOrlH,CACX,EAEA6qM,UAAW,SAAS/3L,GAGhB,IAFA,IAAI8vL,EAAS15M,KAAK05M,OAETnyM,EAAI,EAAGA,EAAImyM,EAAOlyM,OAAQD,IAG/B,IAFA,IACI67H,EADQs2E,EAAOnyM,GACA67H,OACVr4F,EAAI,EAAGA,EAAIq4F,EAAO57H,OAAQujC,IAAK,CACpC,IAAIoxF,EAAQiH,EAAOr4F,GACnB,GAAIoxF,IAA2B,IAAlBA,EAAMnvH,SAAqB4c,EAASuyG,GAC7C,OAAOA,CAEf,CAER,EAEAylF,YAAa,SAASzlF,GAGlB,IAFA,IAAIk/E,EAAQr7M,KAAKq7M,MAER9zM,EAAI,EAAGA,EAAI8zM,EAAM7zM,OAAQD,IAAK,CACnC,IAAIqnF,EAAOysH,EAAM9zM,GACjB,GAAIqnF,EAAKt1C,IAAI6kF,cAAchC,GACvB,OAAOvtC,CAEf,CACJ,EAEA0uH,aAAc,WACV,IAAIhlC,EAAOt4K,KAAK08M,UAAU18M,KAAKq7M,OAC3BsB,EAAQrkC,EAAKlzK,EACbw3M,EAAQtkC,EAAKn0K,EAEjBnE,KAAK6hN,sBAAsBjF,EAAOD,GAClC38M,KAAK6hN,sBAAsBlF,EAAOC,EACtC,EAEAiF,sBAAuB,SAASvpC,EAAMqlC,GAKlC,IAJA,IAEImE,EAAiB,EAEZv6M,EAAI,EAAGA,EAAI+wK,EAAK9wK,OAAQD,IAAK,CAClC,IAAI49B,EAAOmzI,EAAK/wK,GACZqnF,EAAOzpD,EAAKypD,KACZuD,EAAS2sH,GAAWnB,EAAc/uH,IAAS+uH,EAAa,GACxD3T,EAAYziM,EAAIu6M,EAChBC,EATO/hN,KAScgiN,gBAAgB78K,EAAM6kK,EAAW73G,GAE1D,GAAI4vH,EAAW,CACXD,IAEA,IAAIzsH,EAAMzG,EAAK0pF,KAAK3iK,QAAQwvB,GAAQ28K,EACpClzH,EAAKirH,aAAakI,EAAW1sH,EACjC,CACJ,CACJ,EAEA2sH,gBAAiB,SAAS78K,EAAM6kK,EAAW73G,GACvC,IAAIgkF,EAAehxI,EAAKh+B,QAAQiuK,OAC5B9nK,EAAW6oK,EAAa7oK,SACxB20M,EAAS30M,IAAake,GAAOle,IAAa0vE,EAC1ChwE,EAAUmpK,EAAanpK,QAE3B,GAAIi1M,IAAsB,IAAZj1M,EACV,OAAO,KAGX,IAAIitM,EAAUj6M,KAAK08M,UAAU18M,KAAKq7M,OAC9BsC,EAAexrH,EAAOhrF,QAAQqrC,SAAWynK,EAAQ70M,EAAI60M,EAAQ91M,EAC7D46M,EAAkB/+M,KAAK6qL,mBAAmB14F,EAAQwrH,GAClDhyM,EAAM2B,IAAake,EACnByoC,EAAQk+B,EAAOl+B,QACflwC,EAAOpY,EAAMsoD,EAAM96C,IAAM86C,EAAMv9C,IAGnC,GAFoB8hH,EAAWumF,EAAgB/U,GAAY/1I,EAAMv9C,IAAKu9C,EAAM96C,KAExD4K,GAAS,EACzB,OAAO,KAGXg7L,EAAgBv0M,OAAOw/L,EAAY,EAAG,EAAGjmL,GACzCouE,EAAOhrF,QAAQ0jL,mBAAqBk0B,EAEpC,IAAIgD,EAAY58K,EAAK/9B,QAUrB,OATA+9B,EAAKqxB,QAELurJ,EAAU56M,QAAQ/E,UAAOu8I,EACzBojE,EAAU56M,QAAQo+J,KAAKv4J,SAAU,EAEjC+0M,EAAU56M,QAAQmxL,eAAY35C,EAC9BojE,EAAU56M,QAAQ0vK,WAAQl4B,EAC1BojE,EAAU56M,QAAQ+wK,eAAYv5B,EAEvBojE,CACX,EAEAG,YAAa,SAASjzK,GAClB,OAAOA,GAAUxZ,EAAQwZ,EAAOvpC,KAAM26L,GAC1C,EAEA8hB,iBAAkB,WAA4B,EAE9CC,sBAAuB,WACnB,IAAInvF,EAAWjzH,KAEXqiN,EAAiB,GAgCrB,OA9BAriN,KAAKivC,OAASjvC,KAAKivC,OAAOp0B,KAAI,SAAUo0B,GACpC,IAAKgkF,EAASivF,YAAYjzK,GACtB,OAAOA,EAGX,IAAIqzK,EAAYrvF,EAASsvF,aAAatzK,EAAOuzK,KAC7C,IAAKF,EACD,MAAM,IAAItxM,MAAM,0DACJi+B,EAAU,IAAI,oBAAyBA,EAAW,KAAI,MAGtE,IAAIyrJ,EAAcL,GAAarmL,QAAQ0mL,YAAY4nB,GAC/Cv8L,EAAQuc,EAAKo4J,GAEb+nB,EAAkBxvF,EAASkvF,iBAAiBx/M,EAAEI,OAAO,CAAC,EAAG,CAACgjB,MAAOA,GAAQkpB,GAASqzK,GAatF,OAZIG,KAC0B,IAAtBH,EAAUt1M,UACVy1M,EAAgBz1M,SAAU,GAG1By1M,EAAgBxxF,QAAUioE,EAAiBj3B,UAC3CwgD,EAAgBxxF,MAAQqxF,EAAUrxF,OAGtCoxF,EAAe1gN,KAAK8gN,IAGjBA,CACX,IAAGlzL,QAAO,SAAU0f,GAAU,OAAkB,OAAXA,CAAiB,IAE/CozK,CACX,EAEAE,aAAc,SAASngN,GACnB,OAAOpC,KAAKivC,OAAO9Y,MAAK,SAAU8Y,GAAU,OAAOA,EAAO7sC,OAASA,CAAM,GAC7E,EAEAsgN,cAAe,WACX,OAAO1iN,KAAKqhN,oBAAoB,GAAG,EACvC,EAEAsB,cAAe,SAASxmF,GACpB,OAAOn8H,KAAK4iN,cAAczmF,EAAOn8H,KAAK6iN,kBAAmB,EAC7D,EAEAC,cAAe,SAAS3mF,GACpB,OAAOn8H,KAAK4iN,cAAczmF,EAAOn8H,KAAK6iN,mBAAoB,EAC9D,EAEAE,mBAAoB,SAAS5mF,GACzB,OAAOn8H,KAAK4iN,cAAczmF,EAAOn8H,KAAKgjN,oBAAqB,EAC/D,EAEAC,kBAAmB,SAAS9mF,GACxB,OAAOn8H,KAAK4iN,cAAczmF,EAAOn8H,KAAKgjN,qBAAsB,EAChE,EAEAJ,cAAe,SAASzmF,EAAO+mF,EAAeC,GAC1C,IAAIlwF,EAAWjzH,KAEXojI,EAAS8/E,EAAc34M,KAAKvK,KAAMm8H,GAElCinF,EADahgF,EAAOztH,QAAQwmH,GACHgnF,EACzBE,EAAa,SAAUhvK,GAEvB,IAAIv9B,EACAgH,EAAS,EACb,GACIA,GAAUu2B,EACVv9B,EAASosM,EAAc34M,KAAK0oH,EAAUkJ,EAAOr+G,SACtB,IAAlBhH,EAAOtP,QAEhB,OAAOsP,CACX,EAEA,OAAIssM,EAAY,GACZhgF,EAASigF,GAAY,IAEPx3J,IAAI,GACXu3J,GAAahgF,EAAO57H,QAC3B47H,EAASigF,EAAW,IAENx3J,GAAG,GAGdu3E,EAAOggF,EAClB,EAEAP,kBAAmB,SAASS,GACxB,OAAOtjN,KAAKwhN,mBAAmB8B,EAAUlX,WAC7C,EAEA4W,oBAAqB,SAASM,EAAWxlM,QACtB,IAAXA,IAAqBA,EAAS,GAElC,IAAIxE,EAAQq2K,EAAW2zB,EAAUr0K,OAAO31B,MAAQwE,EAAQ9d,KAAKivC,OAAOznC,QACpE,OAAOxH,KAAKqhN,oBAAoB/nM,EACpC,IAGJ,SAASiqM,GAAap+K,GAClB,OAAQA,EAAKypD,KAAK0pF,KAAK3rH,MAAK,SAAUznD,GAAK,OAAOA,EAAEiC,QAAQqrC,WAAarN,EAAKh+B,QAAQqrC,UAAYttC,IAAMigC,IAA8B,IAAtBjgC,EAAEiC,QAAQ6F,OAAmB,GAEjJ,CAEA,SAASyyM,GAAannC,GAIlB,IAHA,IACIh/H,EADA9xC,EAAS8wK,EAAK9wK,OAGTD,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAI49B,EAAOmzI,EAAK/wK,GACZyF,GAAmC,IAAzBm4B,EAAKh+B,QAAQ6F,QAC3B,GAAIA,GAAWu2M,GAAap+K,GAAO,CAC/B,IAAIg5K,EAAUnxM,EAAUm4B,EAAKooI,aAAepoI,EAAKsxI,UAE5Cn9H,EAGDA,EAAI3sB,KAAKwxL,GAFT7kK,EAAM6kK,EAAQ/2M,OAItB,CACJ,CAEA,OAAOkyC,GAAO,IAAIytH,CACtB,CAEA,SAAS+3C,GAAWxmC,EAAM1pF,GACtB,IAAK,IAAIrnF,EAAI,EAAGA,EAAI+wK,EAAK9wK,OAAQD,IAAK,CAClC,IAAI4qF,EAASmmF,EAAK/wK,GAClB,GAAI4qF,GAAUA,EAAOvD,OAASA,EAC1B,OAAOuD,CAEf,CACJ,CAMA,IAAIkuH,GAAc,SAAUhF,GAAS,OAAOA,EAAMt3J,QAAO,SAAUlP,EAAK+5C,GAAQ,OAAO/5C,EAAIz2B,OAAOwwE,EAAK0pF,KAAO,GAAG,GAAK,EAEtHtU,EAAkB02C,GAAc,CAC5BzrK,OAAQ,GACRkpI,SAAU,CACNp/H,OAAQ,CAAC,GAEb+7G,WAAY,GACZ4X,OAAQ,CACJz7C,MAAOqvC,EACPv0J,MAAO,GAEXovM,aAAc,CACVh9J,MAAO,CAAC,GAEZ23I,OAAQ,CACJoC,cAAe,CACX9iB,OAAQ,CACJnkD,MAAO,WAEX+gE,QAAS,CACL/gE,MAAO,eAMvB,IAAIuyF,GAAsB,CACtBnsB,MAAO,SAAS/iB,EAAO3vK,GACnB3E,KAAKyjN,eAAenvC,EAAO3vK,EAAGm8L,GAClC,EAEA52K,MAAO,SAASoqJ,EAAO3vK,GACnB3E,KAAKyjN,eAAenvC,EAAO3vK,EAAGk8L,GAClC,GAGA6iB,GAAmB97M,EAAM7E,OAAO,CAChCoF,KAAM,SAAS8mC,EAAQ4mC,EAAQ8tI,GAE3B,IAAI9oB,EAAkBhlH,EAAOglH,gBAAgB5rJ,GACzCyrJ,EAAc7kH,EAAO6kH,YAAYzrJ,GACjCksJ,EAAetlH,EAAOslH,aAAalsJ,EAAQ4rJ,GAC3C+oB,EAAe5jN,KAAK6jN,cAAgB,GACpCjjN,EAAW+iN,EAAkBnjN,MAAMyuC,EAAOvpC,MAC1Co+M,EAAgB70K,EAAOwkB,WAAa7yD,EAExCZ,KAAK+jN,QAAU90K,EACfjvC,KAAKgkN,QAAUnuI,EAEf,IAAK,IAAItuE,EAAI,EAAGA,EAAIszL,EAAgBrzL,OAAQD,IAAK,CAC7C,IAAIwe,EAAQ80K,EAAgBtzL,GACxB08M,OAAiB,EAErB,GAAInhD,EAASghD,GACTG,EAAiBH,EAAc/9L,OAC5B,IAAU,IAANxe,IAAWkuB,EAAQ1P,EAAO20K,GAGjC,MAFAupB,EAAiBH,CAGrB,CAEIG,GACAL,EAAajiN,KAAK,CACduiN,cAAen+L,EACf3jB,KAAM+4L,EAAa5zL,GACnBosC,UAAWzqC,EAAW+6M,GAAkBA,EAAiBhqB,GAAWgqB,IAGhF,CACJ,EAEAE,gBAAiB,SAASC,EAAW7vJ,GACjC,IAGItlB,EADMjvC,KACO+jN,QACbH,EAFM5jN,KAEa6jN,cACnBz1M,EAAOpO,KAAKqkN,YAAYD,GAAa,IACrCE,EAAgBl2M,EAAKomB,UAAU,GAC/B1d,EAAS,CAAC,EAEd,GAAIwtM,IAAkBjvJ,EAASivJ,KAAmBrhN,EAAQqhN,GAAgB,CACtE,IAAIv8M,EAAK,WAAY,EACrBA,EAAGM,UAAYi8M,EACfxtM,EAAS,IAAI/O,CACjB,CAEA,IAAK,IAAIR,EAAI,EAAGA,EAAIq8M,EAAap8M,OAAQD,IAAK,CAC1C,IAAIwe,EAAQ69L,EAAar8M,GACrBg9M,EAjBOvkN,KAiBcwkN,WAAWp2M,EAAKiL,OAAQ0M,EAAMm+L,eACnDx7M,EAAQqd,EAAM4tB,UAAU4wK,EAAWt1K,EAAQ7gC,EAAKomB,UAAW+/B,GAE/D,KAAc,OAAV7rD,IAAkBo6J,EAASp6J,IAAWouH,EAAQpuH,EAAMlB,SAAakB,aAAiBiG,MAAO,CACzFmI,EAASpO,EACT,KACJ,CACQouH,EAAQpuH,IACR+7M,GAAS1+L,EAAM3jB,KAAM0U,EAAQpO,EAGzC,CAEA,OAAOoO,CACX,EAEAutM,YAAa,SAASjhF,GAOlB,IANA,IACIvtD,EADM71E,KACOgkN,QACb/0K,EAFMjvC,KAEO+jN,QACb1qM,EAAS,GACTmb,EAAY,GAEPjtB,EAAI,EAAGA,EAAI67H,EAAO57H,OAAQD,IAAK,CACpC,IAAIwzL,EAAU33D,EAAO77H,GAErB8R,EAAO1X,KAAKk0E,EAAOilH,UAAU7rJ,EAAQ8rJ,IACrCvmK,EAAU7yB,KAAKstC,EAAO7gC,KAAK2sL,GAC/B,CAEA,MAAO,CACH1hL,OAAQA,EACRmb,UAAWA,EAEnB,EAEAgwL,WAAY,SAASp2M,EAAM2X,GAIvB,IAHA,IAAI1M,EAAS,GACTiC,EAAQlN,EAAK5G,OAERD,EAAI,EAAGA,EAAI+T,EAAO/T,IAAK,CAC5B,IAAI4nC,EAAO/gC,EAAK7G,GACZmzL,EAAcvrJ,EAAKurJ,YACnBhyL,OAAQ,EAGRA,EADAouH,EAAQ4jE,EAAY30K,IACZ20K,EAAY30K,GAEZopB,EAAK1f,OAAO1J,GAGxB1M,EAAO1X,KAAK+G,EAChB,CAEA,OAAO2Q,CACX,IAGJ,SAASorM,GAAS/1J,EAAWrnD,EAAQqB,GACjC,IAAI0yH,EAAY/zH,EACZ0e,EAAQ2oC,EAEZ,GAAIA,EAAU/4C,QAAQ,MAAQ,EAAG,CAG7B,IAFA,IAAIpF,EAAQm+C,EAAU9jD,MAAM,KAErB2F,EAAM/I,OAAS,GAClBue,EAAQxV,EAAM6F,QACT0gH,EAAQsE,EAAUr1G,MACnBq1G,EAAUr1G,GAAS,CAAC,GAExBq1G,EAAYA,EAAUr1G,GAE1BA,EAAQxV,EAAM6F,OAClB,CAEAglH,EAAUr1G,GAASrd,CACvB,CAEA,IAAIg8M,GAAoB98M,EAAM7E,OAAO,CACjCoF,KAAM,WAEFnI,KAAKgpM,UAAY,CAAC,CACtB,EAEA7xK,SAAU,SAASs/J,EAAaxjI,GAG5B,IAFA,IAES1rD,EAAI,EAAGA,EAAIkvL,EAAYjvL,OAAQD,IAFzBvH,KAGFgpM,UAAUvS,EAAYlvL,IAAM0rD,CAE7C,EAEAzyD,MAAO,SAASmkN,GACZ,OAAO3kN,KAAKgpM,UAAU2b,EAC1B,IAGJD,GAAkB1wM,QAAU,IAAI0wM,GAEhC,IAAIE,GAAWxT,GAAIruM,OAAO,CACtBklL,YAAa,WACT,IAAI7S,EAASp1K,KAAKmH,QAAQiuK,OACtByvC,EAAcr8M,EAAW,CAAC,EAAG4sK,EAAQA,EAAOr5J,MAC5C+oM,EAAYt8M,EAAW,CAAC,EAAG4sK,EAAQA,EAAO92I,IAE1CumL,EAAY73M,UACZhN,KAAK+kN,UAAY/kN,KAAK8qM,mBAAmB+Z,GACzC7kN,KAAKm6C,OAAOn6C,KAAK+kN,YAGjBD,EAAU93M,UACVhN,KAAKglN,QAAUhlN,KAAK8qM,mBAAmBga,GACvC9kN,KAAKm6C,OAAOn6C,KAAKglN,SAEzB,EAEA3yE,OAAQ,SAAS20B,GACbhnK,KAAKmQ,SAEL,IAAIkiH,EAAMryH,KACN+kN,EAAY1yF,EAAI0yF,UAChBC,EAAU3yF,EAAI2yF,QACdt8M,EAAQ2pH,EAAI3pH,MAEhB1I,KAAKs5C,IAAM0tH,EAEP+9C,IACAA,EAAU59M,QAAQsiM,UAAY/gM,EAAMqT,KAAOrT,EAAM41B,GACjDymL,EAAU1yE,OAAO20B,IAGjBg+C,IACAA,EAAQ79M,QAAQsiM,UAAY/gM,EAAM41B,GAAK51B,EAAMqT,KAC7CipM,EAAQ3yE,OAAO20B,IAGfhnK,KAAK+2K,MACL/2K,KAAK+2K,KAAK1kC,OAAO20B,EAEzB,IAGJ49C,GAASv8M,UAAUzH,SAAW4H,EAAW,CAAC,EAAGo8M,GAASv8M,UAAUzH,SAAU,CACtEw0K,OAAQ,CACJnkK,OAAQ,aAEZguJ,QAAS,CACLhuJ,OAAQ,SAIhB,IAAIg0M,GAAgBjT,GAASjvM,OAAO,CAChC4jM,UAAW,WACP,OAAOie,EACX,EAEAloB,WAAY,SAAStuL,GACjB,OAAOA,EAAKssL,WAChB,EAEA4P,iBAAkB,SAASnuE,EAAOlrH,GAC9B,OAAyB,OAArBkrH,EAAMzzH,MAAMqT,MAAoC,OAAnBogH,EAAMzzH,MAAM41B,GAClC,GAGJt+B,KAAKuqK,aAAat5J,OAAOiiK,KAAKjiK,EAAQkrH,EAAMzzH,MAAMqT,KAAMogH,EAAMzzH,MAAM41B,GAC/E,EAEA4oK,UAAW,SAAS/qE,GAChB,OAAKA,EAIE,CAAEA,EAAMzzH,MAAMqT,KAAMogH,EAAMzzH,MAAM41B,IAH5B,CAIf,EAEAoqK,YAAa,SAAShgM,EAAO+mB,GACzB,IAAIm4K,EAAWn4K,EAAOwf,OAAO9J,KACzBppB,EAAOrT,EAAMqT,KACbuiB,EAAK51B,EAAM41B,GACX4qK,EAAYlpM,KAAKkmM,gBAAgB0B,GAEvB,OAAVl/L,GAAkB2sD,EAASt5C,IAASs5C,EAAS/2B,MAC7C4qK,EAAYlpM,KAAKkmM,gBAAgB0B,GAAYsB,GAAa,CAAExyL,IAAK0gH,EAAWj+G,IAAK2nJ,IAEvEpqJ,IAAMrT,KAAKqT,IAAIwyL,EAAUxyL,IAAKqF,GACxCmtL,EAAU/vL,IAAM9V,KAAK8V,IAAI+vL,EAAU/vL,IAAK4C,GAExCmtL,EAAUxyL,IAAMrT,KAAKqT,IAAIwyL,EAAUxyL,IAAK4nB,GACxC4qK,EAAU/vL,IAAM9V,KAAK8V,IAAI+vL,EAAU/vL,IAAKmlB,GAEhD,EAEAmrK,UAAW,SAASttE,GAChB,IAAIzzH,EAAQyzH,EAAMzzH,MAClB,OAAOA,EAAMqT,KAAOrT,EAAM41B,EAC9B,IAGJ2mL,GAAc58M,UAAU68M,WAAalf,GAAiB39L,UAAU68M,WAEhE,IAAIC,GAAiBza,GAAU3nM,OAAO,CAClCowK,SAAU,WACN,OAAOnzK,KAAK2M,MAChB,IAGA4kC,GAAO,OAIP6zK,GAAiBp7C,EAAajnK,OAAO,CACrCoF,KAAM,SAASO,EAAOvB,GAClB6iK,EAAajiK,GAAGI,KAAKoC,KAAKvK,MAE1BA,KAAK0I,MAAQA,EACb1I,KAAKmH,QAAUA,EACfnH,KAAKypM,UAAYzwE,EAAeh5H,KAAKmH,QAAQsiM,WAAW,GACxDzpM,KAAK2qM,iBAAkB,EACvB3qM,KAAK++C,IAAM5uB,KACXnwB,KAAKqlN,kBACT,EAEAl1M,OAAQ,WACJ,IAAInQ,KAAK4qM,UAAT,CAIA5qM,KAAK4qM,WAAY,EAEjB,IAAIv4E,EAAMryH,KAAKmH,QACX6qL,EAAU3/D,EAAI2/D,QACd5c,EAAS/iD,EAAI+iD,OACb1sK,EAAQ1I,KAAK0I,MAEb48M,EAAYtlN,KAAKslN,UAAY,IAAIH,GAAez8M,EAAOF,EAAW,CAAC,EAAGxI,KAAKmH,QAAS,CACpFiuK,OAAQA,EAAOr5J,KACfi2K,QAASA,EAAQj2K,QAGjBwpM,EAAUvlN,KAAKulN,QAAU,IAAIJ,GAAez8M,EAAOF,EAAW,CAAC,EAAGxI,KAAKmH,QAAS,CAChFiuK,OAAQA,EAAO92I,GACf0zJ,QAASA,EAAQ1zJ,MAGrBt+B,KAAKwlN,WAAWF,GAChBtlN,KAAKwlN,WAAWD,GAEhBvlN,KAAKm6C,OAAOmrK,GACZtlN,KAAKm6C,OAAOorK,EAvBZ,CAwBJ,EAEAlzE,OAAQ,SAAS20B,GACbhnK,KAAKmQ,SAEL,IAAIs1M,EAAUz+C,EAAUjrJ,KACpB2pM,EAAQ1+C,EAAU1oI,GAEtBt+B,KAAK2lN,eAAeF,EAASC,GAE7B1lN,KAAKslN,UAAUjzE,OAAOozE,GACtBzlN,KAAKulN,QAAQlzE,OAAOqzE,GAEpB1lN,KAAKs5C,IAAMt5C,KAAKslN,UAAUna,YAAY/jM,QAAQulB,KAAK3sB,KAAKulN,QAAQpa,YACpE,EAEAv/B,gBAAiB,WACb,IAAIr3G,EAAQ,IAAIk8E,GAIhB,OAHAl8E,EAAMpa,OAAOn6C,KAAKslN,UAAU15C,mBAC5Br3G,EAAMpa,OAAOn6C,KAAKulN,QAAQ35C,mBAEnBr3G,CACX,EAEAk3I,gBAAiB,WACb,OAAOzrM,KAAKihJ,MAChB,EAEAgrB,oBAAqB,WACjB,MAAO,CACH9kK,QAASnH,KAAKmH,QACd4U,KAAM/b,KAAKslN,UAAUr5C,sBACrB3tI,GAAIt+B,KAAKulN,QAAQt5C,sBAEzB,EAEAU,qBAAsB,WAClB,IAAIp4G,EAAQ,IAAIk8E,GAIhB,OAHAl8E,EAAMpa,OAAOn6C,KAAKslN,UAAU34C,wBAC5Bp4G,EAAMpa,OAAOn6C,KAAKulN,QAAQ54C,wBAEnBp4G,CACX,EAEAq3I,cAAe,WACX,IAAIC,EAAU7rM,KAAK6oM,MAAMj6G,KAAKi9G,UAG9B,IAFmBA,GAAWA,EAAQlkC,SAAS3nK,KAAKs5C,KAEnC,CACb,IAGIl0C,EAAGjB,EAAG2nM,EAHNxyJ,EAAMt5C,KAAKs5C,IACXilC,EAASjlC,EAAIilC,SACbwtH,EAAkB3gL,EAatB,OAVIprB,KAAKmH,QAAQqrC,UACbptC,EAAIm5E,EAAOn5E,EACXjB,EAAIm1C,EAAI4kC,GAryNH,EAsyNL4tH,EAAgB36G,IAEhB/rF,EAAIk0C,EAAI6kC,GAxyNH,EAyyNLh6E,EAAIo6E,EAAOp6E,EACX2nM,EAAgB76G,GAGb,CACHkrC,MAAO,IAAIL,EAAM12H,EAAGjB,GACpB+sI,MAAO,CACHx+F,WAAYq5J,EACZv5J,SAAUs5J,GAGtB,CACJ,EAEAd,YAAa,SAAS/5L,GAClB,OAAOjR,KAAK6oM,MAAMyB,iBAAiBtqM,KAAMiR,EAC7C,EAEA+6L,YAAa,SAAS1yJ,GAClB,OAAOt5C,KAAKs5C,IAAIquH,SAASruH,EAC7B,EAEA2yJ,eAAgB,WACZjsM,KAAKslN,UAAUrZ,iBACfjsM,KAAKulN,QAAQtZ,gBACjB,EAEAoZ,iBAAkB,WACd,IAAIjwC,EAASp1K,KAAKmH,QAAQiuK,OACrBA,EAAOnkK,SACHmkK,EAAOr5J,MAASq5J,EAAOr5J,KAAK9K,SAC7BmkK,EAAOr5J,KAAOpZ,EAAEI,OAAO,CAAC,EAAGqyK,EAAOr5J,KAAM,CACpC9K,OAtIM,SA0ITmkK,EAAO92I,IAAO82I,EAAO92I,GAAGrtB,SACzBmkK,EAAO92I,GAAK37B,EAAEI,OAAO,CAAC,EAAGqyK,EAAO92I,GAAI,CAChCrtB,OA3II,SA+IpB,EAEA00M,eAAgB,SAASF,EAASC,GAC9B,IAKQE,EAAmBC,EALvBxzF,EAAMryH,KAAKmH,QACXiuK,EAAS/iD,EAAI+iD,OACb5iI,EAAW6/E,EAAI7/E,SAEf4iI,EAAO9nK,WAAaikC,KAEhBiB,EACIkzK,EAAMxnI,IAAMunI,EAAQvnI,IACpB2nI,EAAkBnoB,GAClBkoB,EAAoBjoB,KAEpBkoB,EAAkBloB,GAClBioB,EAAoBloB,IAGpBgoB,EAAMznI,IAAMwnI,EAAQxnI,IACpB4nI,EAAkBz6L,EAClBw6L,EAAoBt6L,IAEpBu6L,EAAkBv6L,EAClBs6L,EAAoBx6L,GAIvBgqJ,EAAOr5J,MAASq5J,EAAOr5J,KAAKzO,WAC7BtN,KAAKslN,UAAUn+M,QAAQiuK,OAAO9nK,SAAWs4M,GAGxCxwC,EAAO92I,IAAO82I,EAAO92I,GAAGhxB,WACzBtN,KAAKulN,QAAQp+M,QAAQiuK,OAAO9nK,SAAWu4M,GAGnD,EAEAL,WAAY,SAASrpF,GACjBA,EAAM19D,SAAWz+D,KAAKy+D,SACtB09D,EAAM+vC,SAAWlsK,KAAKksK,SACtB/vC,EAAMltF,OAASjvC,KAAKivC,OACpBktF,EAAMlL,MAAQjxH,KAAKixH,MACnBkL,EAAM0sE,MAAQ7oM,KAAK6oM,KACvB,EAEAqD,YAAa,WACTlsM,KAAKslN,UAAUpZ,aACnB,EAEAC,qBAAsB,WAClBnsM,KAAKulN,QAAQpZ,sBACjB,EAEAC,SAAU,WACN,OAAOpsM,KAAK4lL,UAChB,IAGJp9K,EAAW48M,GAAe/8M,UAAWkiM,IACrC/hM,EAAW48M,GAAe/8M,UAAWmiM,IAErC4a,GAAe/8M,UAAUzH,SAAW,CAChCoxL,QAAS,CACLhlL,SAAS,EACT8nJ,WAAYuM,EACZrxJ,KA54Ne,EA64NftK,KAAM66J,EACNmM,OAAQ,CACJ3gK,MAAO,GAEXgrB,QAAS,GAEbq+I,OAAQ,CACJpoK,SAAS,EACT+rC,OAAQmqH,EAAW,GACnBlrB,QAASkrB,EAAW,GACpB5wE,UAAW,CACP5sF,KAAMq3L,GACNz3J,MAAOw3J,IAEXxvL,SAAUikC,IAEdslI,MAAO,CACHviJ,MAAO,CAAC,GAEZq3I,UAAW,CACPqmB,QAAS,CACLtlB,OAAQ,CACJz7C,MAAOowC,EACPt1J,MAAO,IAGfiuC,OAAQk/I,EAAiBl3B,kBAE7B/C,QAAS,CACLhuJ,OAAQ,aAEZo7J,cAAe,CACX77I,KAAMmxK,GACNt0K,UAAWu0K,GACXrmD,oBAAqBsmD,KAI7B,IAAIikB,GAAmBvX,GAAYxrM,OAAO,CACtC+rM,qBAAsB,WAClB,OAAO9uM,KAAK+uM,mBAAmB/uM,KAAKssM,iBAAiBtsM,KAAK+lN,YAC9D,EAEA/W,cAAe,WACX,IAAIgX,EAAehmN,KAAKgmN,aAKxB,OAJKhmN,KAAKgmN,eACNA,EAAehmN,KAAKgmN,aAAehmN,KAAK+uM,mBAAmB/uM,KAAKssM,iBAAiBtsM,KAAKg+H,aAAa3nH,aAGhG2vM,CACX,EAEArX,aAAc,SAASxhM,GACnB,IAAI+iI,EAAS,IAAI3B,GAAKphI,GAClB84M,EAAW,IAAI13E,GAAKphI,GAExB+iI,EAAO/C,SAASxrI,KAAKyG,MAAM8nI,EAAO/C,SAAUntI,KAAK4uM,kBACjDqX,EAAS94E,SAASxrI,KAAKyG,MAAM69M,EAAS94E,SAAUntI,KAAKgvM,iBAErDhvM,KAAKihJ,OAAO9mG,OAAO+1F,GACnBlwI,KAAKihJ,OAAO9mG,OAAO8rK,EACvB,EAEA/W,gBAAiB,WACb,OAAO,CACX,EAEAlxE,WAAY,WACR,OAAOh+H,KAAKszK,WAAWz4J,KAAI,SAAUshH,GAAS,OAAOA,EAAMmpF,SAAW,GAC1E,EAEAS,SAAU,WACN,OAAO/lN,KAAKszK,WAAWz4J,KAAI,SAAUshH,GAAS,OAAOA,EAAMopF,OAAS,GACxE,IAGAW,GAAyBJ,GAAiB/iN,OAAO,CACjD+rM,qBAAsB,WAClB,OAAO9uM,KAAKmmN,oBAAoBnmN,KAAK+lN,WACzC,EAEA/W,cAAe,WACX,IAAIgX,EAAehmN,KAAKgmN,aAKxB,OAJKhmN,KAAKgmN,eACNA,EAAehmN,KAAKgmN,aAAehmN,KAAKmmN,oBAAoBnmN,KAAKg+H,aAAa3nH,YAG3E2vM,CACX,EAEAG,oBAAqB,SAAS/iF,GAG1B,OAFqB,IAAIgsD,GAEH75H,QAAQv1D,KAAKssM,iBAAiBlpE,GACxD,IAGAgjF,GAAuBN,GAAiB/iN,OAAO,CAC/C+rM,qBAAsB,WAClB,OAAO9uM,KAAK+uM,mBAAmB/uM,KAAK2sM,oBAAoB3sM,KAAK+lN,YACjE,EAEA/W,cAAe,WACX,IAAIgX,EAAehmN,KAAKgmN,aAMxB,OALKhmN,KAAKgmN,eACNA,EAAehmN,KAAKgmN,aAAehmN,KAAK+uM,mBAAmB/uM,KAAK2sM,oBAAoB3sM,KAAKg+H,gBAC5E3nH,UAGV2vM,CACX,IAGJx9M,EAAW49M,GAAqB/9M,UAAWqkM,IAE3C,IAAI2Z,GAAiBrgB,GAAiBjjM,OAAO,CACzCoN,OAAQ,WACJ61L,GAAiBj+L,GAAGoI,OAAO5F,KAAKvK,MAEhCA,KAAKstM,gBACT,EAEA3G,UAAW,WACP,OAAOye,EACX,EAEAxc,YAAa,SAASx6L,EAAMqhB,GACxB,IAAIwf,EAASxf,EAAOwf,OAChBy3J,EAAWj3K,EAAOi3K,SAClBh+L,EAAQ0F,EAAKssL,YAEjB,IAAKtlH,GAAS1sE,EAAMqT,QAAUq5D,GAAS1sE,EAAM41B,IAAK,CAC9C,GAAIt+B,KAAK6lM,oBAAoB52J,KAAYx7B,GAMrC,OAAO,KALP/K,EAAQ,CACJqT,KAAM,EACNuiB,GAAI,EAKhB,CAEA,IAAImoK,EAAezmM,KAAKymM,aAAax3J,EAAQy3J,GAC7CD,EAAezmM,KAAK+oM,iBAAiBtC,EAAc/9L,EAAO+mB,GAE1D,IAAIwhG,EAAQ7iH,EAAKqhB,OAAOwhG,OAAShiF,EAAOgiF,MACpC/nH,EAAW+lC,EAAOgiF,SAClBA,EAAQw1E,EAAax1E,OAGzB,IAAIkL,EAAQ,IAAIipF,GAAe18M,EAAO+9L,GAKtC,OAJAtqE,EAAMlL,MAAQA,EAEdjxH,KAAKm6C,OAAOgiF,GAELA,CACX,EAEAwxE,cAAe,SAASr6B,EAAYmxB,EAAeiC,GAC/C,IAAIv5L,GAASs3L,EAAcl/B,MAAQ,CAAC,GAAGp4J,MAUvC,OAAO,IARO,WAAVA,EACc+4M,GACG,SAAV/4M,EACOi5M,GAEAN,IAGKxyC,EAAYmxB,EAAeiC,EACtD,EAEAQ,UAAW,SAAS/qE,EAAO/jF,GACvB,OAAK+jF,EAIE,CAAEA,EAAMzzH,MAAMqT,KAAMogH,EAAMzzH,MAAM41B,IAH5B,CAAE8Z,EAAYA,EAI7B,EAEAmxJ,UAAW,SAAShpB,EAAW2mB,GAC3B,IAAIof,EAAW/lC,EAAU9H,QAAQyuB,EAAU,GAAIA,EAAU,IAAKlnM,KAAKmH,QAAQ+yC,MACvEqsK,EAAShmC,EAAU9H,QAAQyuB,EAAU,GAAIA,EAAU,IAAKlnM,KAAKmH,QAAQ+yC,MACzE,GAAIosK,GAAYC,EACZ,MAAO,CACHxqM,KAAMuqM,EACNhoL,GAAIioL,EAGhB,EAEA/c,UAAW,SAASF,EAAcC,GAC9B,IAEI+c,EAAUC,EAFVxqM,EAAOwtL,EAAUxtL,KACjBuiB,EAAKirK,EAAUjrK,GAWnB,OARIt+B,KAAKmH,QAAQy/L,YACb0f,EAAW,IAAIv/C,EAAIhrJ,EAAKkiE,GAAIqrH,EAAaprH,GAAIniE,EAAKoiE,GAAImrH,EAAalrH,IACnEmoI,EAAS,IAAIx/C,EAAIzoI,EAAG2/C,GAAIqrH,EAAaprH,GAAI5/C,EAAG6/C,GAAImrH,EAAalrH,MAE7DkoI,EAAW,IAAIv/C,EAAIuiC,EAAarrH,GAAIliE,EAAKmiE,GAAIorH,EAAanrH,GAAIpiE,EAAKqiE,IACnEmoI,EAAS,IAAIx/C,EAAIuiC,EAAarrH,GAAI3/C,EAAG4/C,GAAIorH,EAAanrH,GAAI7/C,EAAG8/C,KAG1D,CACHriE,KAAMuqM,EACNhoL,GAAIioL,EAEZ,EAEA/f,SAAU,SAASp4L,EAAMqhB,GACrB,IAAIirK,EAActsL,EAAKssL,YAClBrlI,EAASqlI,EAAY3+K,QACtB2+K,EAAY3+K,KAAO2+K,EAAYp8J,IAG9B+2B,EAASqlI,EAAYp8J,MACtBo8J,EAAYp8J,GAAKo8J,EAAY3+K,MAGjCiqL,GAAiBj+L,GAAGy+L,SAASj8L,KAAKvK,KAAMoO,EAAMqhB,EAClD,EAEAi5K,YAAa,SAAShgM,EAAO+mB,GACzB,GAAc,OAAV/mB,GAAkB2sD,EAAS3sD,EAAMqT,OAASs5C,EAAS3sD,EAAM41B,IAAK,CAC9D,IAAIspK,EAAWn4K,EAAOwf,OAAO9J,KACzB+jK,EAAYlpM,KAAKkmM,gBAAgB0B,GAAY5nM,KAAKkmM,gBAAgB0B,IAAa,CAAElxL,IAAK0gH,EAAWj+G,IAAK2nJ,GACtG/kJ,EAAOrT,EAAMqT,KACbuiB,EAAK51B,EAAM41B,GAEf4qK,EAAUxyL,IAAMrT,KAAKqT,IAAIwyL,EAAUxyL,IAAKqF,EAAMuiB,GAC9C4qK,EAAU/vL,IAAM9V,KAAK8V,IAAI+vL,EAAU/vL,IAAK4C,EAAMuiB,EAClD,CACJ,EAEAgsK,iBAAkB,SAASnuE,EAAOlrH,GAC9B,IAAIvI,EAAQyzH,EAAMzzH,MAElB,OAAO1I,KAAKuqK,aAAat5J,OAAOiiK,KAAKjiK,EAAQvI,EAAMqT,KAAMrT,EAAM41B,GACnE,EAEA+vK,gBAAiB,WAGb,IAFA,IAAIjrE,EAASpjI,KAAKojI,OACdtsH,EAAS,GACJlN,EAAM,EAAGA,EAAMw5H,EAAO57H,OAAQoC,IAAO,CAC1C,IAAIuyH,EAAQiH,EAAOx5H,GACfuyH,IACArlH,EAAOnV,MAAMw6H,EAAMmpF,WAAa,CAAC,GAAG58J,QACpC5xC,EAAOnV,MAAMw6H,EAAMopF,SAAW,CAAC,GAAG78J,QAE1C,CAEA,OAAO5xC,EAAOsH,OAAOpe,KAAKutM,UAC9B,IAGJ/kM,EAAW69M,GAAeh+M,UAAWglM,GAAgBc,IAErD,IAAIqY,GAAY1T,GAAY/vM,OAAO,CAC/BsvI,OAAQ,SAAS/4F,GACb,IAAI+4E,EAAMryH,KACNmH,EAAUkrH,EAAIlrH,QACduB,EAAQ2pH,EAAI3pH,MAEZ63K,EADQluD,EAAIw2E,MACMlF,gBAAgBx8L,GAClCs/M,EAAU,GACVC,EAAU,GACVC,EAAW,GAEX3T,EAASzyB,EAAU9H,QAAQ/vK,EAAMkvH,IAAKlvH,EAAMioL,MAC5Ci2B,EAAQrmC,EAAU9H,QAAQ/vK,EAAM6pF,KAAM7pF,EAAM6pF,MAC5Cs0H,EAAQtmC,EAAU9H,QAAQ/vK,EAAMg9C,MAAOh9C,EAAMg9C,OAEjDkhK,EAAM3oI,GAAK4oI,EAAM5oI,GAAK+0H,EAAO/0H,GAAK3kC,EAAI2kC,GACtC2oI,EAAMzoI,GAAK0oI,EAAM1oI,GAAK60H,EAAO70H,GAAK7kC,EAAI6kC,GAEtC,IAAI+0H,EAAMF,EAAOz0H,SAASn5E,EAE1BqhN,EAAQ9kN,KAAK,CAAEilN,EAAM3oI,GAAI2oI,EAAM1oI,KAC/BuoI,EAAQ9kN,KAAK,CAAEuxM,EAAK0T,EAAM1oI,KAC1BwoI,EAAQ/kN,KAAK,CAAEuxM,EAAK2T,EAAM3oI,KAC1BwoI,EAAQ/kN,KAAK,CAAEklN,EAAM1oI,GAAI0oI,EAAM3oI,KAC/ByoI,EAAShlN,KAAK,CAAEuxM,EAAKF,EAAO90H,KAC5ByoI,EAAShlN,KAAK,CAAEuxM,EAAKF,EAAO50H,KAE5Bp+E,KAAKmzM,MAAQ,CACTsT,EAASC,EAASC,GAGtB3mN,KAAKs5C,IAAM05J,EAAO5rM,QAAQulB,KAAKi6L,EAAMx/M,QAAQulB,KAAKk6L,IAElD7mN,KAAKozM,YACT,EAEAI,WAAY,WAAY,IAGxBsT,GAAY9S,GAAiBjxM,OAAO,CACpC4jM,UAAW,WACP,OAAO6f,EACX,IAGAO,GAAmB/8C,EAAajnK,OAAO,CACvCoF,KAAM,SAAS4T,EAAMuiB,EAAI2Q,GACrB+6H,EAAajiK,GAAGI,KAAKoC,KAAKvK,MAE1BA,KAAK+b,KAAOA,EACZ/b,KAAKs+B,GAAKA,EACVt+B,KAAKivC,OAASA,CAClB,EAEAqkI,WAAY,WACR,IAAIv3J,EAAO/b,KAAK+b,KAEZ0pM,EADMzlN,KACQ+b,KAAKu9B,IACnBosK,EAFM1lN,KAEMs+B,GAAGgb,IACf8pF,EAAS,GAEb,GAAIrnH,EAAKwxH,WAAY,CACjB,IAAIppI,EAAI4X,EAAK0tL,UAAYgc,EAAQvnI,GAAKunI,EAAQrnI,GAC9CglD,EAAOzhI,KACH,CAAE8jN,EAAQxnI,GAAI95E,GACd,CAAEuhN,EAAMvnI,GAAIh6E,GAEpB,KAAO,CACH,IAAIiB,EAAI2W,EAAK0tL,UAAYgc,EAAQtnI,GAAKsnI,EAAQxnI,GAC9CmlD,EAAOzhI,KACH,CAAEyD,EAAGqgN,EAAQvnI,IACb,CAAE94E,EAAGsgN,EAAMtnI,IAEnB,CAEA,OAAOglD,CACX,EAEAunC,aAAc,WACVX,EAAajiK,GAAG4iK,aAAapgK,KAAKvK,MAElC,IAAIulK,EAAOvlK,KAAKivC,OAAOs2H,MAAQ,CAAC,EAE5Bh2H,EAAOg/F,GAAKvQ,WAAWh+H,KAAKszK,aAAc,CAC1C1zC,OAAQ,CACJ3O,MAAOs0C,EAAKt0C,MACZllH,MAAOw5J,EAAKx5J,MACZgrB,QAASwuI,EAAKxuI,QACd8nH,SAAU0mB,EAAK1mB,YAIvB6jB,EAAiBnzH,GACjBvvC,KAAKihJ,OAAO9mG,OAAO5K,EACvB,IAGJy0H,EAAkB+iD,GAAkB,CAChCz0H,UAAW,CACP5sF,KAAMq3L,GACNz3J,MAAOw3J,MAIf,IAAIkqB,GAAiBhV,GAASjvM,OAAO,CACjCoN,OAAQ,WACJ6hM,GAASjqM,GAAGoI,OAAO5F,KAAKvK,MACxBA,KAAKinN,gBACT,EAEA1gB,mBAAoB,SAAS38K,GAOzB,IANA,IAEIqlB,EAASjvC,KAAKmH,QAAQ8nC,OACtBi4K,EAAkBvlC,GAAgB1yI,GAClCs+F,GAAcvtI,KAAKmH,QAAQy/L,WAEtBF,EAAW,EAAGA,EAAWz3J,EAAOznC,OAAQk/L,IAK7C,IAJA,IAAIjC,EAAgBx1J,EAAOy3J,GACvB1/I,EAAQ,EACRmlH,EAAe,EAEVyZ,EAAa,EAAGA,EAAashC,EAAiBthC,IAAc,CACjE,IAAIx3K,EAAOisL,GAAarmL,QAAQ8mL,UAAU2J,EAAe7e,GACrDl9K,EAAQ0F,EAAKssL,YAAYhyL,MACzBy+M,EAAU/4M,EAAKqhB,OAAO03L,QACtBprM,EAAOirC,EACP1oB,OAAK,EAEL6oL,EAC8B,UAA1BA,EAAQtuM,eACRzK,EAAKssL,YAAYhyL,MAAQs+C,EACzBjrC,EAAO,EACPuiB,EAAK0oB,IAEL54C,EAAKssL,YAAYhyL,MAAQyjK,EACzB7tI,EAAKviB,EAAOowJ,EACZA,EAAe,GAEZ92G,EAAS3sD,KAChByjK,GAAgBzjK,EAEhB41B,EADA0oB,GAASt+C,GAIbkhB,EAASxb,EAAM,CACX89J,SAnCGlsK,KAmCgB41L,aAAalU,WAAWkE,GAC3CA,WAAYA,EACZ32I,OAAQw1J,EACRiC,SAAUA,EACV1/I,MAAOA,EACPmlH,aAAcA,EACdpwJ,KAAMA,EACNuiB,GAAIA,EACJivG,WAAYA,GAEpB,CAER,EAEAm7D,YAAa,SAAShgM,EAAO+mB,GACzBuiL,GAASjqM,GAAG2gM,YAAYn+L,KAAKvK,KAAM,CAAE0I,MAAO+mB,EAAO6O,IAAM7O,EAC7D,EAEAg6K,UAAW,SAASttE,GAChB,OAAOA,EAAMzzH,OAAS,CAC1B,EAEAw+L,UAAW,SAAS/qE,GAChB,MAAO,CAAEA,EAAMpgH,KAAMogH,EAAM79F,GAC/B,EAEA2oL,eAAgB,WAOZ,IANA,IAEIh4K,EAASjvC,KAAKmH,QAAQ8nC,OACtBm3J,EAAepmM,KAAKomM,aACpBj5D,EAAWntI,KAAKmtI,SAAW,GAEtBu5D,EAAW,EAAGA,EAAWz3J,EAAOznC,OAAQk/L,IAAY,CACzD,IAAIjC,EAAgBx1J,EAAOy3J,GACvBtjE,EAASgjE,EAAaM,GAE1B,GAAItjE,EAEA,IADA,IAAIgkF,OAAY,EACPrsB,EAAU,EAAGA,EAAU33D,EAAO57H,OAAQuzL,IAAW,CACtD,IAAI5+D,EAAQiH,EAAO23D,GAEnB,GAAI5+D,GAASirF,EAAW,CACpB,IAAI78E,EAAU,IAAIw8E,GAAiBK,EAAWjrF,EAAOsoE,GACrDt3D,EAASxrI,KAAK4oI,GAjBfvqI,KAkBUm6C,OAAOowF,EACpB,CAEA68E,EAAYjrF,CAChB,CAER,CACJ,IAGJ,SAASgmF,GAAiBkF,EAAU3hN,EAAMs2B,GACtC,IAAIg0B,EAAOq3J,EAASh1M,OAAO3M,IAC3B,OAAIsqD,EACOA,EAAKh0B,GAGT,IACX,CAGA,SAASsrL,GAAeC,EAAcvrB,GAUlC,IATA,IAKIwrB,EAAOC,EALPriN,EAAI,EACJjB,EAAI,EACJg6E,EAAK,EACLupI,EAAK,EACLpsM,EAAQ,EAERqsM,EAAO90M,OAAOukH,UACdwwF,EAAO/0M,OAAOiuJ,UAETv5J,EAAI,EAAGA,EAAIggN,EAAa//M,OAAQD,IAAK,CAC1C,IACI8qH,EAAM2pE,EADEurB,EAAahgN,IAErBklI,EAASpa,EAAIoa,OACbC,EAASra,EAAIqa,OAEbt6H,SAASq6H,IAAsB,OAAXA,GAAmBr6H,SAASs6H,IAAsB,OAAXA,IAC3Di7E,EAAOtkN,KAAKqT,IAAI+1H,EAAQk7E,GACxBC,EAAOvkN,KAAK8V,IAAIszH,EAAQm7E,GAExBtsM,IACAlW,GAAKqnI,EACLtoI,GAAKuoI,EACLvuD,GAAM96E,KAAKwmC,IAAI4iG,EAAQ,GACvBi7E,GAAMj7E,EAASC,EAEvB,CAOA,OALIpxH,EAAQ,IAERmsM,GAAatjN,GADbqjN,GAASlsM,EAAQosM,EAAKtiN,EAAIjB,IAAMmX,EAAQ6iE,EAAK96E,KAAKwmC,IAAIzkC,EAAG,KAChCA,GAAKkW,GAG3B,CAAEksM,MAAOA,EAAOC,UAAWA,EAAWnsM,MAAOA,EAAOqsM,KAAMA,EAAMC,KAAMA,EACjF,CAEA,IAAIC,GAAmB,SAAUN,EAAc74J,GAAa,OAAO64J,EAAa76J,OAAM,SAAU2lE,GACxF,IAAIqoE,EAAcroE,EAAIqoE,YAEtB,OAAQtlH,GAASslH,EAAYhsI,KAAegsI,EAAYhsI,GAAa,CACrE,GAAI,EAEZ,SAASo5J,GAAiBC,EAAanyB,GASnC,IARA,IAAIxnL,EAAO,GACP8xK,EAAa0V,EAAa9S,oBAC1BklC,EAAepyB,EAAahT,sBAC5B3uH,EAAQ,CACRv9C,IAAKrT,KAAKyN,MAAMzN,KAAK8V,IAAI6uM,EAAatxM,IAAM,EAAGwpK,EAAWxpK,MAC1DyC,IAAK9V,KAAK6jE,KAAK7jE,KAAKqT,IAAIsxM,EAAa7uM,IAAM,EAAG+mK,EAAW/mK,OAGpD5R,EAAI0sD,EAAMv9C,IAAKnP,EAAI0sD,EAAM96C,IAAK5R,IAAK,CACxC,IAAInC,EAAKmC,EAAI,EACb6G,EAAK7G,GAAK,CACN2kK,SAAU0pB,EAAalU,WAAWn6K,GAAG,GACrCmB,MAAOq/M,EAAY3iN,GAE3B,CAEA,OAAOgJ,CACX,CAoBA,IAAI4tL,GAAc,SAAUttI,GAAa,OAAO,SAAU2jE,GAClD,IAAIuzD,EAAavzD,EAAIuzD,WACjB8U,EAAcroE,EAAIqoE,YAEtB,MAAO,CAAGjuD,OAAQm5C,EAAa,EAAGl5C,OAAQrpI,KAAK8tB,IAAIupK,EAAYhsI,IACtE,CAAK,EA8CN,IAAIu5J,GAAgB,SAAUv5J,GAAa,OAAO,SAAU2jE,GAIpD,MAAO,CAAGoa,OAHOpa,EAAIuzD,WAGU,EAAGl5C,OAFhBra,EAAIqoE,YAEgChsI,GAC7D,CAAK,EAqCN,IAAIw5J,GAAgB,SAAUx5J,GAAa,OAAO,SAAU2jE,GACpD,IAAIuzD,EAAavzD,EAAIuzD,WACjB8U,EAAcroE,EAAIqoE,YAEtB,MAAO,CAAGjuD,OAAQppI,KAAK8tB,IAAIy0J,EAAa,GAAIl5C,OAAQguD,EAAYhsI,GACvE,CAAK,EAsBN,SAASy5J,GAAuBZ,EAAcvrB,EAAaosB,GAQvD,IAPA,IAAIC,EAAgB,GAChBhvM,EAAS,GACTvD,EAAQzS,KAAK8V,IAAIupL,GAA2B0lB,GAAU,EAEtDz8M,EAAM,EACNypD,EAAM,EAED7tD,EAAI,EAAGA,EAAIggN,EAAa//M,OAAQD,IAAK,CAC1C,IACI8qH,EAAM2pE,EADEurB,EAAahgN,IAErBklI,EAASpa,EAAIoa,OACbC,EAASra,EAAIqa,OAUjB,GARIt6H,SAASs6H,IAAsB,OAAXA,GACpBrzH,EAAO1X,KAAK+qI,GACZt3E,GAAOs3E,EACP/gI,EAAMtI,KAAK8V,IAAI5R,EAAGoE,IAElB0N,EAAO1X,KAAK,MAGZ4F,GAAKuO,EAAO,CACZ,IAAIwF,EAAQjC,EAAOkW,QAAO,SAAU7mB,GAAS,OAAiB,OAAVA,CAAgB,IAAGlB,OACnE8gN,EAAYjvM,EAAOjD,SAAW,EAElC,GAAIkF,EAAQ,EAAG,CACX,IAAIg6C,EAAUF,EAAM95C,EACpB+sM,EAAc1mN,KAAK,CAAC8qI,EAAQn3E,IAE5BF,GAAOkzJ,EACP,QACJ,CACJ,CAEAD,EAAc1mN,KAAK,CAAC8qI,EAAQ,MAChC,CAEA,OAAO47E,EAAcxhN,MAAM,EAAG8E,EAAM,EACxC,CAkBA,IAAI48M,GAAgB,SAAU75J,GAAa,OAAO,SAAU2jE,GAIpD,MAAO,CAAGoa,OAHOpa,EAAIuzD,WAGSl5C,OAFZra,EAAIqoE,YAE4BhsI,GACzD,CAAK,EAuCN,IAAI85J,GAAY,EACZC,GAAY,EAEhB,SAASC,GAAoBnB,EAAcvrB,EAAar3I,GAUpD,IATA,IAAI7/C,EAAIzB,KAAKqT,IAAIrT,KAAK8V,IAAIwrC,GAAS6jK,GAAWA,IAAYC,IAAa,EACnEE,EAAO,IAAIl+L,EAAQovG,OACnB+uF,EAAO,IAAIn+L,EAAQovG,OACnBv+G,EAAQ,EACRqsM,EAAO90M,OAAOukH,UACdwwF,EAAO/0M,OAAOiuJ,UACdinD,EAAc,SAAU3iN,GAAK,OAAOA,CAAG,EACvCyjN,EAAe,GAEVthN,EAAI,EAAGA,EAAIggN,EAAa//M,OAAQD,IAAK,CAC1C,IACI8qH,EAAM2pE,EADEurB,EAAahgN,IAErBklI,EAASpa,EAAIoa,OACbC,EAASra,EAAIqa,OAEjB,GAAIt6H,SAASq6H,IAAsB,OAAXA,GAAmBr6H,SAASs6H,IAAsB,OAAXA,EAAiB,CAC5Ei7E,EAAOtkN,KAAKqT,IAAI+1H,EAAQk7E,GACxBC,EAAOvkN,KAAK8V,IAAIszH,EAAQm7E,GACxBtsM,IAGAstM,EAAK14L,IAAI3oB,EAAG,EAAGmlI,GAGfi8E,EAAKz4L,IAAI3oB,EAAG,EAAG,GACfohN,EAAKz4L,IAAI3oB,EAAG,EAAGklI,GACf,IAAK,IAAI5iG,EAAM,EAAGA,GAAO/kC,EAAG+kC,IACxB8+K,EAAKz4L,IAAI3oB,EAAGsiC,EAAKxmC,KAAKwmC,IAAI8+K,EAAK14L,IAAI1oB,EAAG,GAAIsiC,GAElD,MAEI8+K,EAAKz4L,IAAI3oB,EAAG,EAAG,EAEvB,CAYA,OATAohN,EAAK58M,MAAQ1I,KAAKqT,IAAI5R,EAAGwW,GAErBA,EAAQ,IAGRutM,EAaR,SAA0BF,EAAMC,GAK5B,IAJA,IAAIE,EAAKH,EAAKljD,YACVsjD,EAAID,EAAGhqF,SAAS6pF,GAAM/iD,UAAU9mC,SAASgqF,GAAIhqF,SAAS8pF,GAEtDC,EAAe,GACVthN,EAAI,EAAGA,EAAIwhN,EAAE/8M,OAAQzE,IAC1BshN,EAAalnN,KAAKonN,EAAE94L,IAAI1oB,EAAG,IAI/B,OAAOshN,CAYX,CAnCuBG,CAAiBL,EAAMC,GACtCb,EAAc,SAAU3iN,GAAK,OAAOyjN,EAAa9kK,QAAO,SAAU5/C,EAAGe,EAAG0tH,GAAK,OAAOzuH,EAAIe,EAAI7B,KAAKwmC,IAAIzkC,EAAGwtH,EAAI,GAAG,EAAI,GAGhH,CACHi2F,aAAcA,EACdvtM,MAAOA,EACPysM,YAAaA,EACbJ,KAAMA,EACNC,KAAMA,EAEd,CA4CA,IAAIqB,GAAgB,SAAUv6J,GAAa,OAAO,SAAU2jE,GAIpD,MAAO,CAAGoa,OAHOpa,EAAIuzD,WAGU,EAAGl5C,OAFhBra,EAAIqoE,YAEgChsI,GAC7D,CAAK,EAwCN,IAAIw6J,GAAgB,SAAUx6J,GAAa,OAAO,SAAU2jE,GACpD,IAAIuzD,EAAavzD,EAAIuzD,WACjB8U,EAAcroE,EAAIqoE,YAEtB,MAAO,CAAGjuD,OAAQppI,KAAK8tB,IAAIy0J,EAAa,GAAIl5C,OAAQrpI,KAAK8tB,IAAIupK,EAAYhsI,IAChF,CAAK,EA4BN,IAAI24J,GAAW,CAAC,EAChBA,GAAStnB,IAlaT,SAA8B/jK,GAC1B,IAAI70B,EAAU60B,EAAQ70B,QAClByuL,EAAe55J,EAAQ45J,aAGvBxnL,EAoBR,SAAiBikH,GACb,IAAI82F,EAAe92F,EAAI82F,aACnBvzB,EAAevjE,EAAIujE,aACnBzuL,EAAUkrH,EAAIlrH,QAEdogN,EAAe4B,IACnB,IAAKtB,GAAiBN,EAAcpgN,EAAQ4e,OACxC,OAAO,KAGX,IAAI2sH,EAAQ40E,GAAeC,EAAcvrB,GAAY70L,EAAQ4e,QACzDyhM,EAAQ90E,EAAM80E,MACdC,EAAY/0E,EAAM+0E,UAEtB,GADY/0E,EAAMp3H,MACN,EAAG,CAGX,IAAIpW,EAAI7B,KAAK+lN,IAAI3B,GACbxrM,EAAIurM,EAER,OAAOM,IAAiB,SAAU1iN,GAAK,OAAOF,EAAI7B,KAAK+lN,IAAIntM,EAAI7W,EAAI,GAAGwwL,EAC1E,CAEA,OAAO,IACX,CA5CeyzB,CAAQ,CAAEF,aAFFntL,EAAQmtL,aAEsBvzB,aAAcA,EAAczuL,QAASA,IACtF,OAAIiH,EACOzL,EAAEI,OAAO,CAAC,EAAGoE,EAEhB,CAACzB,KAAM,OACP0I,KAAMA,EACNk7M,cAAe,WACfvjM,MAAO,UAGR,IACX,EAmZAshM,GAASrnB,IAhXT,SAAyBhkK,GACrB,IAAI70B,EAAU60B,EAAQ70B,QAClByuL,EAAe55J,EAAQ45J,aAGvBxnL,EAoBR,SAAmBikH,GACf,IAAI82F,EAAe92F,EAAI82F,aACnBvzB,EAAevjE,EAAIujE,aACnBzuL,EAAUkrH,EAAIlrH,QAEdurI,EAAQ40E,GAAe6B,IAAgBlB,GAAc9gN,EAAQ4e,QAC7DyhM,EAAQ90E,EAAM80E,MACdC,EAAY/0E,EAAM+0E,UAGtB,GAFY/0E,EAAMp3H,MAEN,EACR,OAAOwsM,IAAiB,SAAU1iN,GAAK,OAAOoiN,EAAQpiN,EAAIqiN,CAAW,GAAG7xB,GAG5E,OAAO,IACX,CAnCe2zB,CAAU,CAAEJ,aAFJntL,EAAQmtL,aAEwBvzB,aAAcA,EAAczuL,QAASA,IACxF,OAAIiH,EACOzL,EAAEI,OAAO,CAAC,EAAGoE,EAEhB,CAACzB,KAAM,OACP0I,KAAMA,EACNk7M,cAAe,WACfvjM,MAAO,UAGR,IACX,EAiWAshM,GAASpnB,IAvUT,SAA8BjkK,GAC1B,IAAI70B,EAAU60B,EAAQ70B,QAClByuL,EAAe55J,EAAQ45J,aAGvBxnL,EAoBR,SAAmBikH,GACf,IAAI82F,EAAe92F,EAAI82F,aACnBvzB,EAAevjE,EAAIujE,aACnBzuL,EAAUkrH,EAAIlrH,QAEdurI,EAAQ40E,GAAe6B,IAAgBjB,GAAc/gN,EAAQ4e,QAC7DyhM,EAAQ90E,EAAM80E,MACdC,EAAY/0E,EAAM+0E,UAEtB,GADY/0E,EAAMp3H,MACN,EAAG,CAGX,IAAIpW,EAAIsiN,EACJvrM,EAAIwrM,EACR,OAAOK,IAAiB,SAAU1iN,GAAK,OAAOF,EAAI7B,KAAK8tB,IAAI/rB,GAAK6W,CAAG,GAAG25K,EAC1E,CAEA,OAAO,IACX,CAtCe4zB,CAAU,CAAEL,aAFJntL,EAAQmtL,aAEwBvzB,aAAcA,EAAczuL,QAASA,IACxF,OAAIiH,EACOzL,EAAEI,OAAO,CAAC,EAAGoE,EAEhB,CAACzB,KAAM,OACP0I,KAAMA,EACNk7M,cAAe,WACfvjM,MAAO,UAGR,IACX,EAwTAshM,GAASnnB,IAlPT,SAAgClkK,GAC5B,IAAI70B,EAAU60B,EAAQ70B,QAElBiH,EAoCR,SAAmB4tB,GACf,IAAI45J,EAAe55J,EAAQ45J,aACvBxyD,EAlBR,SAAyB/Q,GACrB,IAAIlrH,EAAUkrH,EAAIlrH,QACdyuL,EAAevjE,EAAIujE,aACnBuzB,EAAe92F,EAAI82F,aAEnBf,GAAUjhN,EAAQisL,WAAa,CAAC,GAAGg1B,QAAU1lB,GAC7CxiB,EAAa0V,EAAa9S,oBAC1BklC,EAAepyB,EAAahT,sBAC5B3uH,EAAQ,CACRv9C,IAAKrT,KAAKyN,MAAMzN,KAAK8V,IAAI6uM,EAAatxM,IAAM0xM,EAAQloC,EAAWxpK,MAC/DyC,IAAK9V,KAAK6jE,KAAK7jE,KAAKqT,IAAIsxM,EAAa7uM,IAAMivM,EAAS,EAAGloC,EAAW/mK,OAGtE,OAAOgvM,GAAuBgB,EAAal1J,GAAQs0J,GAAcphN,EAAQ4e,OAAQqiM,EACrF,CAIiBqB,CAAgBztL,GACzB5tB,EAAO,GAWX,GAVAg1H,EAAO9hI,SAAQ,SAAU+wH,GACrB,IAAIuzD,EAAavzD,EAAI,GACjB3pH,EAAQ2pH,EAAI,GAEhBjkH,EAAKw3K,GAAc,CACf1Z,SAAU0pB,EAAalU,WAAWkE,GAAY,GAC9Cl9K,MAAOA,EAEf,IAEI0F,EAAK5G,OAAS,EACd,OAAO4G,EAGX,OAAO,IACX,CAvDes7M,CAAU1tL,GACrB,OAAI5tB,EACOzL,EAAEI,OAAO,CAAC,EAAGoE,EAEhB,CAACzB,KAAM,OACP0I,KAAMA,EACNk7M,cAAe,WACfvjM,MAAO,UAGR,IACX,EAqOAshM,GAASlnB,IArGT,SAA6BnkK,GACzB,IAAI70B,EAAU60B,EAAQ70B,QAClByuL,EAAe55J,EAAQ45J,aAGvBxnL,EAoBR,SAAmBikH,GACf,IAAI82F,EAAe92F,EAAI82F,aACnBvzB,EAAevjE,EAAIujE,aACnBzuL,EAAUkrH,EAAIlrH,QAEdw9C,GAASx9C,EAAQisL,WAAa,CAAC,GAAGzuI,MAClC+tF,EAAQg2E,GAAoBS,IAAgBF,GAAc9hN,EAAQ4e,OAAQ4+B,GAC1ErpC,EAAQo3H,EAAMp3H,MACdysM,EAAcr1E,EAAMq1E,YAExB,GAAIzsM,EAAQ,EAIR,OAAOwsM,IAAiB,SAAU1iN,GAAK,OAAO2iN,EAAY3iN,EAAI,GAAGwwL,GAGrE,OAAO,IACX,CAtCe+zB,CAAU,CAAER,aAFJntL,EAAQmtL,aAEwBvzB,aAAcA,EAAczuL,QAASA,IACxF,OAAIiH,EACOzL,EAAEI,OAAO,CAAC,EAAGoE,EAEhB,CAACzB,KAAM,OACP0I,KAAMA,EACNk7M,cAAe,WACfvjM,MAAO,UAGR,IACX,EAsFAshM,GAASjnB,IAzDT,SAAwBpkK,GACpB,IAAI70B,EAAU60B,EAAQ70B,QAClByuL,EAAe55J,EAAQ45J,aAGvBxnL,EAoBR,SAAmBikH,GACf,IAAI82F,EAAe92F,EAAI82F,aACnBvzB,EAAevjE,EAAIujE,aACnBzuL,EAAUkrH,EAAIlrH,QAEdogN,EAAe4B,IACnB,IAAKtB,GAAiBN,EAAcpgN,EAAQ4e,OACxC,OAAO,KAGX,IAAI2sH,EAAQ40E,GAAeC,EAAc2B,GAAc/hN,EAAQ4e,QAC3DyhM,EAAQ90E,EAAM80E,MACdC,EAAY/0E,EAAM+0E,UAEtB,GADY/0E,EAAMp3H,MACN,EAAG,CAGX,IAAIpW,EAAI7B,KAAK+lN,IAAI3B,GACbxrM,EAAIurM,EAER,OAAOM,IAAiB,SAAU1iN,GAAK,OAAOF,EAAI7B,KAAKwmC,IAAIzkC,EAAG6W,EAAI,GAAG25K,EACzE,CAEA,OAAO,IACX,CA5Ceg0B,CAAU,CAAET,aAFJntL,EAAQmtL,aAEwBvzB,aAAcA,EAAczuL,QAASA,IACxF,OAAIiH,EACOzL,EAAEI,OAAO,CAAC,EAAGoE,EAEhB,CAACzB,KAAM,OACP0I,KAAMA,EACNk7M,cAAe,WACfvjM,MAAO,UAGR,IACX,EA2CA,IAAI8jM,GAAc,CAAE/rB,GAAM0B,GAAeL,GAAYS,IACjDkqB,GAAsB,CAAEprB,GAAMiB,IAAgBvhL,OAAOyrM,IAErDE,GAAsBrP,GAAa33M,OAAO,CAC1C4yK,WAAY,SAAS1mI,GASjB,GANAjvC,KAAKgqN,kBAAoB,CAAC,EAC1BhqN,KAAKmpM,eAAiB,CAAC,EACvBnpM,KAAKiqN,sBAAwB,IAAItZ,GACjC3wM,KAAKkqN,mBAAqB,CAAC,EAC3BlqN,KAAKmqN,oBAAsB,CAAC,EAExBl7K,EAAOznC,OAAS,EAAG,CACnBxH,KAAK4mM,WAAanxK,EACdwZ,EAAO,GAAGvpC,KAAM,CAAEq4L,GAAKG,GAAQyB,GAAeH,GAAeI,GACzDR,GAAWX,GAAsBgB,KAGzC,IAAK,IAAIl4L,EAAI,EAAGA,EAAI0nC,EAAOznC,OAAQD,IAAK,CACpC,IAAI4sI,EAAQllG,EAAO1nC,GAAG4sI,MACtB,GAAIA,GAAwB,SAAfA,EAAMzuI,KAAiB,CAhB7B1F,KAiBMoqN,UAAW,EACpB,KACJ,CACJ,CACJ,CACJ,EAEAj6M,OAAQ,SAASkrM,QACC,IAAVA,IAAoBA,EAAQr7M,KAAKq7M,OAErCr7M,KAAKivC,OAAS,GAAG7wB,OAAQpe,KAAK86M,gBAC9B96M,KAAKqqN,mBAAmBhP,GAExBr7M,KAAKsqN,oBAAoBjP,GACzBr7M,KAAKoiN,sBAAsB/G,GAE3Br7M,KAAKuqN,yBAAyBlP,GAC9Br7M,KAAKwqN,aAAanP,GAClBr7M,KAAKyqN,gBAAgBpP,EACzB,EAEAtB,WAAY,SAAS50K,GACjB,IAAIyiK,EAAWziK,EAAKh+B,QAAQ/E,KAE5Bs4M,GAAa3yM,GAAGgyM,WAAWxvM,KAAKvK,KAAMmlC,GAElCA,aAAgBu6I,SACT1/K,KAAKgqN,kBAAkBpiB,IAE9B5nM,KAAKiqN,sBAAsBp0K,MAAM+xJ,UAC1B5nM,KAAKmpM,eAAevB,IAG3BziK,IAASnlC,KAAK41L,qBACP51L,KAAK41L,aAGZzwJ,IAASnlC,KAAKugL,kBACPvgL,KAAKugL,SAEpB,EAEA4hC,iBAAkB,SAASh7M,EAAS8nC,GAChC,IAAI2mJ,EAAe51L,KAAKimM,mBAAmB9+L,GACvCgiN,EAAenpN,KAAKmpN,aAAa3/M,KAAKxJ,KAAMivC,EAAO31B,OAEnD85K,EAAY+uB,GAAiBkF,GAAUlgN,EAAQzB,KAAM,CACrDyB,QAASA,EACTyuL,aAAcA,EACduzB,aAAcA,IAGlB,OAAI/1B,GAEAA,EAAUwC,aAAe3mJ,EAAO2mJ,aAChCxC,EAAU7S,UAAYtxI,EAAOsxI,UAEtBvgL,KAAK0qN,aAAat3B,EAAWwC,IAGjCxC,CACX,EAEAu3B,2BAA4B,WACxB,OAAO3qN,KAAKivC,OACPp0B,KAAI,SAAUo0B,GAAU,OAAQA,EAAOmkJ,WAAa,CAAC,GAAG9M,QAAU,IAClE/2J,QAAO,SAAU+2J,GAAY,YAAoB3nC,IAAb2nC,CAAwB,IAC5DviI,QAAO,SAAUjtC,EAAQwvK,GAAY,MAAO,CACzCE,OAAQnjL,KAAK8V,IAAIrC,EAAO0vK,OAAQF,EAASE,QAAU,GACnDpsG,MAAO/2E,KAAK8V,IAAIrC,EAAOsjE,MAAOksG,EAASlsG,OAAS,GAChD,GAAG,CAAEosG,OAAQ,EAAGpsG,MAAO,GACnC,EAEA+uI,aAAc,SAASziB,EAAUzyI,GAC7B,IAEIn9C,EAAS,GAETm4B,EAASjvC,KAAK4qN,UAAUlkB,GACxB9Q,EAAe51L,KAAKimM,mBAAmBh3J,GAC5Bk1J,GAAiBvO,EAAazuL,QAAQzB,KAAM+6J,KAEvDzgK,KAAKkqN,mBAAqB,CAAC,EAC3BlqN,KAAKmqN,oBAAsB,CAAC,EAC5Bv0B,EAAazuL,QAAQqtB,UAAY,GACjCya,EAASjvC,KAAK6qN,gBAAgB57K,EAAQ2mJ,EAAcA,EAAa9S,sBAKrE,IAFA,IAAIpsK,EAAMu9C,EAAQA,EAAMv9C,IAAM,EAC1ByC,EAAM86C,EAAQA,EAAM96C,IAAM81B,EAAO7gC,KAAK5G,OACjCo+K,EAAalvK,EAAKkvK,EAAazsK,EAAKysK,IAAc,CACvD,IAAIx3K,EAjBOpO,KAiBS86L,UAAU7rJ,EAAQ22I,GACtC9uK,EAAOnV,KAAK,CAAEikL,WAAYA,EAAY1Z,SAAU99J,EAAKqhB,OAAOy8I,SAAUwuB,YAAatsL,EAAKssL,aAC5F,CAEA,OAAO5jL,CACX,EAEA0zM,aAAc,SAASnP,GAKnB,IAJA,IAAIpoF,EAAWjzH,KAEXk9M,EAAel9M,KAAKi9M,oBAEf11M,EAAI,EAAGA,EAAI8zM,EAAM7zM,OAAQD,IAAK,CACnC,IAAIqnF,EAAOysH,EAAM9zM,GACbujN,EAAa5N,EAAatuH,EAAKznF,QAAQ/E,MAAQ,YAAc,GACjE6wH,EAASkpF,YAAY2O,GAErB,IAAIC,EAAgB93F,EAASmqF,oBAAoB0N,GACjD,GAAKC,EAKL,IADA,IAAIphL,EAASspF,EAAS+3F,0BAA0BD,GACvCE,EAAU,EAAGA,EAAUthL,EAAOniC,OAAQyjN,IAC3Ch4F,EAASi4F,iBAAiBvhL,EAAOshL,GAAUr8H,EAEnD,CACJ,EAEAs8H,iBAAkB,SAASj8K,EAAQ2/C,GAC/B5uF,KAAKmrN,gBACD3mB,GAAmBv1J,EAAQ,CAAE6uJ,GAAM0B,KAAkB5wG,GAGzD5uF,KAAKorN,qBACD5mB,GAAmBv1J,EAAQ,CAAEkwJ,GAAYS,KAAwBhxG,GAGrE5uF,KAAKqrN,eACD7mB,GAAmBv1J,EAAQ,CAAEmvJ,GAAQL,KAAQnvG,GAGjD5uF,KAAKsrN,oBACD9mB,GAAmBv1J,EAAQ,CAAEowJ,GAAcD,KAAcxwG,GAG7D5uF,KAAKurN,kBACD/mB,GAAmBv1J,EAAQ,CAAEivJ,GAAQwB,KAAoB9wG,GAG7D5uF,KAAKwrN,uBACDhnB,GAAmBv1J,EAAQkvJ,IAAcvvG,GAG7C5uF,KAAKyrN,mBACDjnB,GAAmBv1J,EAAQ,CAAE+uJ,GAAUyB,KAAsB7wG,GAGjE5uF,KAAK0rN,gBACDlnB,GAAmBv1J,EAAQ0vJ,IAAO/vG,GAGtC5uF,KAAK2rN,qBACDnnB,GAAmBv1J,EAAQ,CAAE4wJ,GAAWpB,KAAyB7vG,GAGrE5uF,KAAK4rN,gBACDpnB,GAAmBv1J,EAAQ,CAAEyvJ,GAAMiB,KAAkB/wG,EAE7D,EAEA07H,oBAAqB,SAASjP,GAC1B,IAAIpoF,EAAWjzH,KAEXivC,EAAS,GAAG7wB,OAAQpe,KAAKivC,QACzB48K,EAAkB,GACtB7rN,KAAKmqN,oBAAsB,CAAC,EAC5BnqN,KAAKkqN,mBAAqBlqN,KAAKkqN,oBAAsB,CAAC,EAEtD,IAAK,IAAI3iN,EAAI,EAAGA,EAAI0nC,EAAOznC,OAAQD,IAAK,CACpC,IAAIk9L,EAAgBx1J,EAAO1nC,GAE3B,IAAK0rH,EAASivF,YAAYzd,GAAgB,CACtC,IAAI7O,EAAe3iE,EAASgzE,mBAAmBxB,GAC3CqnB,EAAW74F,EAAS2oF,SAAShmB,EAAazuL,QAAQynF,MAIlD61G,GAHWN,GAAiBvO,EAAazuL,QAAQzB,KAAM+6J,IAE1CgkC,EAAc6kB,gBAAkB7zL,EAAQq2L,EAAUzQ,GAC/CpoF,EAAS43F,gBAAgBpmB,EAAe7O,EAAcA,EAAahT,uBAEnE3vD,EAASy3F,aAAajmB,EAAe7O,EAE7D,CAEAi2B,EAAgBlqN,KAAK8iM,EACzB,CAEAzkM,KAAKkqN,mBAAqBlqN,KAAKmqN,oBAC/BnqN,KAAKmqN,oBAAsB,KAE3BnqN,KAAK4qN,UAAY37K,EACjBjvC,KAAKivC,OAAS48K,CAClB,EAEAnB,aAAc,SAASz7K,EAAQ2mJ,GAC3B,IAAIjwH,GAAc12B,EAAO7gC,MAAQ,CAAC,GAAG5G,OAGrC,GAFAouL,EAAaxV,WAAa/8K,KAAK8V,IAAIy8K,EAAaxV,YAAc,EAAGz6G,IAE3DmxD,EAAQ8+D,EAAazuL,QAAQuP,OAAQogH,EAAQ8+D,EAAazuL,QAAQgS,KACpE,OAAO81B,EAGX,IAAIglB,EAAQ2hI,EAAahT,sBACrBmpC,EAAmBt2L,EAAQwZ,EAAOvpC,KAAMokN,IACxCrlB,EAAgBj8L,EAAW,CAAC,EAAGymC,GAYnC,OAVAw1J,EAAcr2L,MAAQq2L,EAAcr2L,MAAQ,IAAIvH,MAAMotD,EAAMv9C,IAAKu9C,EAAM96C,IAAM,GAEzE4yM,GACAtmB,GAAuBhB,EAAexwI,EAAO0R,GAAY,SAAU/7D,GAAO,MAAO,CAC7EulC,KAAMF,EAAO7gC,KAAKxE,GAClBsiK,SAAU0pB,EAAalU,WAAW93K,GAAK,GACvCg8K,WAAYh8K,EAAMqqD,EAAMv9C,IACxB,IAAG,SAAU9M,GAAO,OAAOktH,EAAQ7nF,EAAO7gC,KAAKxE,GAAO,IAGvD66L,CACX,EAEAunB,uBAAwB,WACpBhsN,KAAKkqN,mBAAqB,CAAC,CAC/B,EAEA+B,mBAAoB,SAASh9K,EAAQ2mJ,GACjC,IAEI9jL,EAAOm9B,EAAY,MAAI,IAAO2mJ,EAAahW,iBAC/C,GAAI5/K,KAAKkqN,oBAAsBlqN,KAAKkqN,mBAAmBp4M,GAEnD,OADA9R,KAAKmqN,oBAAoBr4M,GAAO9R,KAAKkqN,mBAAmBp4M,GACjD9R,KAAKkqN,mBAAmBp4M,GAGnC,IAAI43K,EAAckM,EAAazuL,QAC3B24K,EAAgB4J,EAAY5J,cAC5BosC,EAAW/nB,GAAiBza,EAAYhkL,KAAM+6J,GAC9C0rD,EAAUl9K,EAAO7gC,KACjB0I,EAAS,GACRo1M,GACDt2B,EAAa7S,kBAGjB,IAAK,IAAIn5K,EAAM,EAAGA,EAAMuiN,EAAQ3kN,OAAQoC,IAAO,CAC3C,IAAIsiK,EAAWmuB,GAAarmL,QAAQ8mL,UAAU7rJ,EAAQrlC,GAAK6lB,OAAOy8I,SASlE,GARIggD,IACAhgD,EAAW04B,GAAkB14B,EAAUigD,EAAQviN,GApBxC5J,KAoBuDuqK,aAAa0J,OAG1En9C,EAAQo1C,KACTA,EAAW4T,EAAcl2K,IAGzBktH,EAAQo1C,IAA0B,OAAbA,EAAmB,CACxC,IAAI0Z,EAAagQ,EAAanU,WAAWvV,GACzCp1J,EAAO8uK,GAAc9uK,EAAO8uK,IAAe,CAAE15H,MAAO,GAAIggH,SAAUA,GAClEp1J,EAAO8uK,GAAY15H,MAAMvqD,KAAKiI,EAClC,CACJ,CAIA,OAFA5J,KAAKmqN,oBAAoBr4M,GAAOgF,EAEzBA,CACX,EAEA+zM,gBAAiB,SAAS57K,EAAQ2mJ,EAAc3hI,GAE5C,IADchlB,EAAO7gC,KACR5G,OACT,OAAOynC,EA4BX,IAzBA,IAAIm1K,EAAYpkN,KAAKisN,mBAAmBh9K,EAAQ2mJ,GAC5C9+K,EAAStO,EAAW,CAAC,EAAGymC,GACxBm9K,EAAa,IAAI1I,GAAiBl7M,EAAW,CAAC,EAAGymC,GAASorJ,GAAarmL,QAAS0wM,GAAkB1wM,SAClG5F,EAAO0I,EAAO1I,KAAO,GAErBomB,EAAYohK,EAAazuL,QAAQqtB,WAAa,GAE9C63L,EAAe,SAAUziN,GACzB,IAAI0iN,EAAc1iN,EAAMqqD,EAAMv9C,IAC1BylH,EAAQioF,EAAUx6M,GAOtB,GANKuyH,IACDA,EAAQioF,EAAUx6M,GAAO,CAAC,GAG9BuyH,EAAMypD,WAAa0mC,GAEdnwF,EAAMhtF,KAAM,CACb,IAAI+8H,EAAW0pB,EAAalU,WAAW93K,GAAK,GAC5CuyH,EAAM+vC,SAAWA,EACjB/vC,EAAMhtF,KAAOi9K,EAAWjI,gBAAgBhoF,EAAMjwE,MAAOggH,EACzD,CAEA,OAAO/vC,CACX,EAESvyH,EAAMqqD,EAAMv9C,IAAK9M,GAAOqqD,EAAM96C,IAAKvP,IAAO,CAC/C,IAAIuyH,EAAQkwF,EAAaziN,GACzBwE,EAAK+tH,EAAMypD,YAAczpD,EAAMhtF,KAE3BgtF,EAAMjwE,OAASiwE,EAAMjwE,MAAM1kD,SAC3BgtB,EAAU2nG,EAAMypD,YAAczpD,EAAMhtF,KAE5C,CAQA,OANI1Z,EAAQ3e,EAAOpR,KAAMokN,KACrBrkB,GAAuB3uL,EAAQm9C,EAAO2hI,EAAaxwH,aAAcinJ,GAAc,SAAUziN,GAAO,OAAOw6M,EAAUx6M,EAAM,IAG3HgsL,EAAazuL,QAAQqtB,UAAYA,EAE1B1d,CACX,EAEAgjM,YAAa,SAASxlC,EAAO1lF,GACzB,IAAI3/C,EAASqlI,EAAMntK,QAAQ8nC,OACvB2mJ,EAAe51L,KAAKimM,mBAAmBh3J,EAAO,IAC9C4wI,EAAa+V,EAAazuL,QAAQ04K,WAClC0sC,EAAkBlpN,KAAK8V,IAAI,EAAGwoK,GAAgB1yI,GAAU4wI,EAAWr4K,QAEvE,GAAI+kN,EAAkB,EAElB,IADA1sC,EAAa+V,EAAazuL,QAAQ04K,WAAa+V,EAAazuL,QAAQ04K,WAAWh5K,MAAM,GAC9E0lN,KACH1sC,EAAWl+K,KAAK,IAIxB3B,KAAKiqN,sBAAsB9iK,OAAOmtH,EAAM4xB,iBAExCwU,GAAa3yM,GAAG+xM,YAAYvvM,KAAKvK,KAAMs0K,EAAO1lF,EAClD,EAEAuuH,eAAgB,SAASluK,GACrB,IAAI9nC,EAAUnH,KAAKmH,QACfygM,EAAW34J,EAAO9J,KAClBukJ,EAAc,GAAGtrK,OAAOjX,EAAQo5K,WAChCp7I,EAAO9G,GAAKqrJ,GAAa,SAASxkL,GAAK,OAAOA,EAAE9C,OAASwlM,CAAU,IAAG,GAEtE4kB,IADQrlN,EAAQk0M,OAAS,CAAE,CAAC,IACH,IAAM,CAAC,GAAGj5M,MAAQ,UAG/C,OAFgB+iC,GAAQ,CAAC,GAAGypD,MAAQ49H,CAGxC,EAEAvmB,mBAAoB,SAASh3J,GACzB,IAAI24J,EAAW34J,EAAO2mJ,aAClBzwJ,EAAOyiK,EAAW5nM,KAAKgqN,kBAAkBpiB,GAAY5nM,KAAK41L,aAE9D,IAAKzwJ,EACD,MAAM,IAAIn0B,MAAM,4CAA8C42L,GAGlE,OAAOziK,CACX,EAEAsnL,sBAAuB,SAASx9K,EAAQ2/C,GACpC,IAAI89H,EAAmBz9K,EAAO0d,MAAK,SAAU1nD,GAAK,OAAOA,EAAEkvI,KAAO,IAC9D2yD,EAAe73J,EAAO0d,MAAK,SAAU1nD,GAAK,OAAOA,EAAEkvI,OAA0B,SAAjBlvI,EAAEkvI,MAAMzuI,IAAiB,IACrFw0C,EAAO00C,EAAKznF,QAAQ+yC,KAExB,MAAO,CACHqtJ,aAAct4J,EAAO,GAAGklG,MACxBgzD,UAAWulB,EACX5lB,aAAcA,EACd5sJ,KAAMA,EAEd,EAEA8wK,0BAA2B,SAAS/7K,GAGhC,IAFA,IAAI09K,EAAe,GACf33K,EAAS,CAAC,EACLprC,EAAM,EAAGA,EAAMqlC,EAAOznC,OAAQoC,IAAO,CAC1C,IAAIxH,EAAO6sC,EAAOrlC,GAAKgsL,cAAgB,cAClCnrK,EAAQxb,eAAe+lC,EAAQ5yC,KAChC4yC,EAAO5yC,IAAQ,EACfuqN,EAAahrN,KAAKS,GAE1B,CAGA,IADA,IAAIunC,EAAS,GACJozK,EAAS,EAAGA,EAAS4P,EAAanlN,OAAQu1M,IAAU,CACzD,IACI6P,EAAaC,GAAY59K,EADlB09K,EAAa5P,GACmBA,GACjB,IAAtB6P,EAAWplN,QAIfmiC,EAAOhoC,KAAKirN,EAChB,CAEA,OAAOjjL,CACX,EAEA0hL,eAAgB,SAASp8K,EAAQ2/C,GAC7B,GAAsB,IAAlB3/C,EAAOznC,OAAX,CAIA,IAAIslN,EAAc79K,EAAO,GACrB89K,EAAW,IAAI/a,GAAShyM,KAAM2C,EAAEI,OAAO,CACvCksC,OAAQA,EACR23J,WAAY5mM,KAAK4mM,WACjBx1L,IAAK07M,EAAY17M,IACjBogI,QAASs7E,EAAYt7E,SACtBxxI,KAAKysN,sBAAsBx9K,EAAQ2/C,KAEtC5uF,KAAK85M,YAAYiT,EAAUn+H,EAV3B,CAWJ,EAEA08H,oBAAqB,SAASr8K,EAAQ2/C,GAClC,GAAsB,IAAlB3/C,EAAOznC,OAAX,CAIA,IAAIslN,EAAc79K,EAAO,GACrB+9K,EAAmB,IAAI/H,GAAcjlN,KAAM,CAC3CivC,OAAQA,EACR23J,WAAY5mM,KAAK4mM,WACjBx1L,IAAK07M,EAAY17M,IACjBogI,QAASs7E,EAAYt7E,UAGzBxxI,KAAK85M,YAAYkT,EAAkBp+H,EAVnC,CAWJ,EAEA28H,kBAAmB,SAASt8K,EAAQ2/C,GAChC,GAAsB,IAAlB3/C,EAAOznC,OAAX,CAIA,IAAIslN,EAAc79K,EAAO,GACrBg+K,EAAc,IAAIpV,GAAY73M,KAAM,CACpCivC,OAAQA,EACR23J,WAAY5mM,KAAK4mM,WACjBx1L,IAAK07M,EAAY17M,IACjBogI,QAASs7E,EAAYt7E,QACrBt3F,KAAM00C,EAAKznF,QAAQ+yC,OAGvBl6C,KAAK85M,YAAYmT,EAAar+H,EAX9B,CAYJ,EAEAg9H,gBAAiB,SAAS38K,EAAQ2/C,GAC9B,GAAsB,IAAlB3/C,EAAOznC,OAAX,CAIA,IAAI0lN,EAAY,IAAI5e,GAAUtuM,KAAM2C,EAAEI,OAAO,CACzC6jM,WAAY5mM,KAAK4mM,WACjB33J,OAAQA,GACTjvC,KAAKysN,sBAAsBx9K,EAAQ2/C,KAEtC5uF,KAAK85M,YAAYoT,EAAWt+H,EAP5B,CAQJ,EAEAu8H,gBAAiB,SAASl8K,EAAQ2/C,GAC9B,GAAsB,IAAlB3/C,EAAOznC,OAAX,CAIA,IAAI2lN,EAAY,IAAIrd,GAAU9vM,KAAM2C,EAAEI,OAAO,CACzC6jM,WAAY5mM,KAAK4mM,WACjB33J,OAAQA,GACTjvC,KAAKysN,sBAAsBx9K,EAAQ2/C,KAEtC5uF,KAAK85M,YAAYqT,EAAWv+H,EAP5B,CAQJ,EAEAw8H,qBAAsB,SAASn8K,EAAQ2/C,GACnC,GAAsB,IAAlB3/C,EAAOznC,OAAX,CAIA,IAAI4lN,EAAiB,IAAI/G,GAAermN,KAAM,CAC1C4mM,WAAY5mM,KAAK4mM,WACjB33J,OAAQA,EACRiL,KAAM00C,EAAKznF,QAAQ+yC,OAGvBl6C,KAAK85M,YAAYsT,EAAgBx+H,EARjC,CASJ,EAEA88H,gBAAiB,SAASz8K,EAAQ2/C,GAC9B,GAAsB,IAAlB3/C,EAAOznC,OAAX,CAIA,IAAIslN,EAAc79K,EAAO,GACrBqlI,EAAQ,IAAIwyC,GAAU9mN,KAAM,CAC5B4mM,WAAY5mM,KAAK4mM,WACjBx1L,IAAK07M,EAAY17M,IACjB69B,OAAQA,EACRuiG,QAASs7E,EAAYt7E,QACrBt3F,KAAM00C,EAAKznF,QAAQ+yC,OAGvBl6C,KAAK85M,YAAYxlC,EAAO1lF,EAXxB,CAYJ,EAEA48H,uBAAwB,SAASv8K,EAAQ2/C,GACrC,GAAsB,IAAlB3/C,EAAOznC,OAAX,CAIA,IAAIslN,EAAc79K,EAAO,GACrBqlI,EAAQ,IAAI0/B,GAAiBh0M,KAAM,CACnC4mM,WAAY5mM,KAAK4mM,WACjBx1L,IAAK07M,EAAY17M,IACjB69B,OAAQA,EACRuiG,QAASs7E,EAAYt7E,QACrBt3F,KAAM00C,EAAKznF,QAAQ+yC,OAGvBl6C,KAAK85M,YAAYxlC,EAAO1lF,EAXxB,CAYJ,EAEA68H,mBAAoB,SAASx8K,EAAQ2/C,GACjC,GAAsB,IAAlB3/C,EAAOznC,OAAX,CAIA,IAAIslN,EAAc79K,EAAO,GACrBqlI,EAAQ,IAAI+gC,GAAar1M,KAAM,CAC/B4mM,WAAY5mM,KAAK4mM,WACjBx1L,IAAK07M,EAAY17M,IACjB69B,OAAQA,EACRuiG,QAASs7E,EAAYt7E,QACrBt3F,KAAM00C,EAAKznF,QAAQ+yC,OAGvBl6C,KAAK85M,YAAYxlC,EAAO1lF,EAXxB,CAYJ,EAEA+8H,qBAAsB,SAAS18K,EAAQ2/C,GACnC,GAAsB,IAAlB3/C,EAAOznC,OAAX,CAIA,IAAIslN,EAAc79K,EAAO,GACrBo+K,EAAiB,IAAIrG,GAAehnN,KAAM,CAC1CivC,OAAQA,EACR23J,WAAY5mM,KAAK4mM,WACjBx1L,IAAK07M,EAAY17M,IACjBogI,QAASs7E,EAAYt7E,UAGzBxxI,KAAK85M,YAAYuT,EAAgBz+H,EAVjC,CAWJ,EAEA0+H,qBAAsB,SAASC,EAAkBC,GAK7C,IAJA,IAEIC,EAAiBjpB,GAAmBxkM,KAAKivC,OAAQ6wJ,IAE5C4G,EAAW,EAAGA,EAAW1mM,KAAKivC,OAAOznC,OAAQk/L,IAAY,CAC9D,IAAIjC,EALOzkM,KAKkBivC,OAAOy3J,GACpC,GAAIjxK,EAAQgvK,EAAc/+L,KAAMmkN,IAAc,CAC1C,IAAItkD,EAAOk/B,EAAcl/B,KACrBA,GAAQA,EAAKp4J,QAAU0wL,IACvB4vB,EAAe9rN,KAAK8iM,EAE5B,CACJ,CAEA,IAAK,IAAIyF,EAAa,EAAGA,EAAaujB,EAAejmN,OAAQ0iM,IAAc,CACvE,IAAIwjB,EAAaD,EAAevjB,GAAYtU,cAAgB,GAC5D,GAAI83B,IAAeH,IAAsBG,GAAoC,IAAtBF,EACnD,OAAO,CAEf,CACJ,EAEAG,eAAgB,SAASJ,EAAkBC,GAGvC,IAFA,IAAIv+K,EAASjvC,KAAKivC,OAETy3J,EAAW,EAAGA,EAAWz3J,EAAOznC,OAAQk/L,IAAY,CACzD,IAAIgnB,EAAaz+K,EAAOy3J,GAAU9Q,cAAgB,GAClD,IAAK83B,IAAeH,IAAsBG,GAAoC,IAAtBF,IAA6Bv+K,EAAOy3J,GAAU4iB,cAClG,OAAO,CAEf,CACJ,EAEAiB,yBAA0B,WAEtB,IADA,IAAIjyC,EAAOt4K,KAAKs4K,KACP/wK,EAAI,EAAGA,EAAI+wK,EAAK9wK,OAAQD,IACzB+wK,EAAK/wK,aAAcm4K,GACnBpH,EAAK/wK,GAAGsuK,cAGpB,EAEAw0C,mBAAoB,SAAShP,GAOzB,IANA,IAAIpoF,EAAWjzH,KAEX4mM,EAAa5mM,KAAK4mM,WAClB9sD,EAAc,GAAG17H,OAAOpe,KAAKmH,QAAQyuL,cACrCtd,EAAO,GAEF/wK,EAAI,EAAGA,EAAIuyI,EAAYtyI,OAAQD,IAAK,CACzC,IAAImiL,EAAc5vC,EAAYvyI,GAC1BukN,EAAW74F,EAAS2oF,SAASlyB,EAAY96F,MAE7C,GAAIn5D,EAAQq2L,EAAUzQ,GAAQ,CAC1B,IAAIj5M,EAAOsnL,EAAYtnL,KACnBy9K,EAAa6J,EAAY7J,gBAA+B,IAAfA,IAAyBA,EAAa,IACnF6J,EAAclhL,EAAW,CACrBgqC,SAAUo0J,EACVvwL,SAAUuwL,GAAc3zE,EAASs3C,aAAanqB,IAC9Cy8B,kBAAmB+pB,EAAaxvE,EAAY,GAC7CsyD,GAEE5yD,EAAQ4yD,EAAY/M,aACrB+M,EAAY/M,UAAY1pD,EAASwkC,eAGjCxkC,EAASq6F,qBAAqBlrN,EAAMmF,KACpCmiL,EAAY/M,WAAY,GAG5B,IAAIiZ,OAAe,EAWnB,GATIkP,GAAWpb,EAAa7J,EAAW,KACnC6J,EAAYnD,UAAYtzD,EAAS03F,6BACjC/0B,EAAe,IAAInrK,EAAQq7J,iBAAiB4D,EAAaz2D,EAASs3C,eAElEqrB,EAAe,IAAIlW,EAAagK,EAAaz2D,EAASs3C,cAG1DzwB,EAAYvyI,GAAGs4K,WAAa+V,EAAazuL,QAAQ24K,cAE7C19K,EAAM,CACN,GAAI6wH,EAAS+2F,kBAAkB5nN,GAC3B,MAAM,IAAI4O,MAAO,2BAA6B5O,EAAO,uBAEzD6wH,EAAS+2F,kBAAkB5nN,GAAQwzL,CACvC,CAEAA,EAAaoU,UAAYziM,EACzB+wK,EAAK32K,KAAKi0L,GACV3iE,EAAS2mF,WAAWhkB,EACxB,CACJ,CAEA,IAAIg4B,EAAc5tN,KAAK41L,cAAgBtd,EAAK,GAC5Ct4K,KAAK41L,aAAeg4B,EAEhBhnB,EACA5mM,KAAK22K,MAAQi3C,EAEb5tN,KAAK02K,MAAQk3C,CAErB,EAEAn2D,YAAa,WAGT,IAFA,IAAIxoH,EAASjvC,KAAKivC,OAET1nC,EAAI,EAAGA,EAAI0nC,EAAOznC,OAAQD,IAAK,CACpC,IAAIk9L,EAAgBx1J,EAAO1nC,GAC3B,IAAKkuB,EAAQgvK,EAAc/+L,KAAMmkN,IAC7B,OAAO,CAEf,CAEA,OAAO,CACX,EAEAY,gBAAiB,SAASpP,GACtB,IAAIpoF,EAAWjzH,KAEX6tN,EAAU7tN,KAAKiqN,sBACf6D,EAAeD,EAAQrtN,QACvBs5I,EAAc,GAAG17H,OAAOpe,KAAKmH,QAAQo5K,WACrCqmB,EAAa5mM,KAAK4mM,WAClBmnB,EAAc,CAAEv7K,UAAWo0J,EAAYvwL,QAASuwL,GAAc5mM,KAAKuqK,aAAanqB,KAChFk4B,EAAO,GAEPt4K,KAAKoqN,WACL2D,EAAY/kC,kBAAmB,EAC/B+kC,EAAY34C,OAAS,CAAEnkK,OAAQ,OAGnC,IAAK,IAAI1J,EAAI,EAAGA,EAAIuyI,EAAYtyI,OAAQD,IAAK,CACzC,IAAImiL,EAAc5vC,EAAYvyI,GAC1BukN,EAAW74F,EAAS2oF,SAASlyB,EAAY96F,MAE7C,GAAIn5D,EAAQq2L,EAAUzQ,GAAQ,CAC1B,IAAIj5M,EAAOsnL,EAAYtnL,KACnB4rN,EAAmB7pB,GAAiBza,EAAYhkL,KAAMu8L,IAAe,CAAEvrL,IAAK,GAAKyC,IAAK,GAAM,CAAEzC,IAAK,EAAGyC,IAAK,GAC3G86C,EAAQ45J,EAAQrtN,MAAM4B,IAAS0rN,GAAgBE,EAEzC,IAANzmN,GAAW0sD,GAAS65J,IACpB75J,EAAMv9C,IAAMrT,KAAKqT,IAAIu9C,EAAMv9C,IAAKo3M,EAAap3M,KAC7Cu9C,EAAM96C,IAAM9V,KAAK8V,IAAI86C,EAAM96C,IAAK20M,EAAa30M,MAGjD,IAOIonK,EAAY,IANZ4jB,GAAiBza,EAAYhkL,KAAMu8L,IACxBx3K,EAAQugK,gBAERvgK,EAAQ69J,aAGMr0H,EAAMv9C,IAAKu9C,EAAM96C,IAC1C3Q,EAAW,CAAC,EAAGulN,EAAarkC,GAC5Bz2D,EAASs3C,cAGb,GAAInoK,EAAM,CACN,GAAI6wH,EAASk2E,eAAe/mM,GACxB,MAAM,IAAI4O,MAAO,wBAA0B5O,EAAO,uBAEtD6wH,EAASk2E,eAAe/mM,GAAQm+K,CACpC,CACAA,EAAUypB,UAAYziM,EAEtB+wK,EAAK32K,KAAK4+K,GACVttD,EAAS2mF,WAAWr5B,EACxB,CACJ,CAEA,IAAIqtC,EAAc5tN,KAAKugL,WAAajI,EAAK,GACzCt4K,KAAKugL,UAAYqtC,EAEbhnB,EACA5mM,KAAK02K,MAAQk3C,EAEb5tN,KAAK22K,MAAQi3C,CAErB,EAEAnK,eAAgB,SAASnvC,EAAO3vK,EAAGspN,GAC/B,IAAIzhB,EAASl4B,EAAM45C,kBAAkBvpN,GACjCw3H,EAAQ,IAAIL,EAAM0wE,EAAOpnM,EAAGonM,EAAOroM,GACnCyqF,EAAO5uF,KAAKmuN,UAAUhyF,GACtB0jD,EAAa,GACbxmK,EAAS,GAEb,GAAKu1E,EAAL,CAKA,IADA,IAAIqrH,EAAUrrH,EAAK0pF,KACV/wK,EAAI,EAAGA,EAAI0yM,EAAQzyM,OAAQD,IAAK,CACrC,IAAI49B,EAAO80K,EAAQ1yM,GACf49B,EAAK6kJ,SACL6Z,GAAgBxqL,EAAQ8rB,EAAK6kJ,SAAS7tD,IAEtC0nE,GAAgBhkB,EAAY16I,EAAKq8I,YAAYrlD,GAErD,CAE0B,IAAtB0jD,EAAWr4K,QACXq8L,GAAgBhkB,EAAY7/K,KAAK41L,aAAapU,YAAYrlD,IAG1D0jD,EAAWr4K,OAAS,GAAK6R,EAAO7R,OAAS,GACzC8sK,EAAMlqK,QAAQ6jN,EAAW,CACrBpiN,QAASysH,EAAa3zH,GACtB4kB,cAAe5kB,EACfunK,SAAU+4B,GAAkBplB,GAC5Bn3K,MAAOu8L,GAAkB5rL,IArBjC,CAwBJ,EAEA80M,UAAW,SAAShyF,GAGhB,IAFA,IAAIk/E,EAAQr7M,KAAKq7M,MAER9zM,EAAI,EAAGA,EAAI8zM,EAAM7zM,OAAQD,IAAK,CACnC,IAAIg0M,EAAcF,EAAM9zM,GACxB,GAAIg0M,EAAYhuC,WAAWpvC,cAAchC,GACrC,OAAOo/E,CAEf,CACJ,EAEA6S,kBAAmB,SAASjpL,EAAMh+B,GAC9BinN,GAAkBpuN,KAAKmH,QAASg+B,EAAMh+B,GACtCinN,GAAkBpuN,KAAK66M,gBAAiB11K,EAAMh+B,EAClD,EAEA07M,kBAAmB,SAASS,EAAWxlM,GAGnC,YAFe,IAAXA,IAAqBA,EAAS,GAE9B9d,KAAK4mM,WACE5mM,KAAKquN,uBAAuB/K,EAAUr0K,OAAO31B,MAAOwE,GAGxD9d,KAAKsuN,sBAAsBhL,EAAUlX,WAChD,EAEA4W,oBAAqB,SAASM,EAAWxlM,GAGrC,QAFe,IAAXA,IAAqBA,EAAS,GAE9B9d,KAAK4mM,WACL,OAAO5mM,KAAKsuN,sBAAsBhL,EAAUlX,YAGhD,IAAIj3G,EAAWn1F,KAAKquN,uBAAuB/K,EAAUr0K,OAAO31B,MAAOwE,GAEnE,OAAI9d,KAAKuqK,aAAanqB,IACXjrD,EAAS9+E,UAGb8+E,CACX,EAEAm5H,sBAAuB,SAAS7M,GAM5B,IALA,IAEI/H,EAAS15M,KAAK05M,OACd5iM,EAAS,GAEJvP,EAAI,EAAGA,EAAImyM,EAAOlyM,OAAQD,IAAK,CACpC,IAAI+sK,EAAQolC,EAAOnyM,GAEnB,IAAI+sK,EAAM1lF,MAAoC,eAA5B0lF,EAAM1lF,KAAKznF,QAAQ/E,KAArC,CAIA,IAAIinM,EAAc/0B,EAAMlxC,OACnB7zG,QAAO,SAAU4sG,GAAS,OAAOA,IAA2B,IAAlBA,EAAMnvH,SAAqBmvH,EAAMiwE,aAAeqV,CAAY,IAG3G3qM,EAAOnV,KAAKyG,MAAM0O,EAAQuyL,EAAYrtL,KAhB3Bhc,KAgByCuuN,oBAAoBllB,EAAY,KANpF,CAOJ,CAEA,OAAOvyL,CACX,EAEAu3M,uBAAwB,SAAS/M,EAAaxjM,GAC1C,IAAIxE,EAAQq2K,EAAW2xB,EAAcxjM,EAAQ9d,KAAKivC,OAAOznC,QAEzD,OAAOxH,KAAKqhN,oBAAoB/nM,EACpC,EAEAi1M,oBAAqB,SAASpyF,GAC1B,IAAIgrE,EAAYnnM,KAAKwuN,mBAAmBryF,GAExC,OAAIgrE,GAAannM,KAAK4mM,aAAeO,IAAcnnM,KAAK4mM,WAC7C,SAAU1hM,EAAG+W,GAAK,OAAO/W,EAAEo0C,IAAIilC,SAASn5E,EAAI6W,EAAEq9B,IAAIilC,SAASn5E,CAAG,EAGlE,SAAUF,EAAG+W,GAAK,OAAO/W,EAAEo0C,IAAIilC,SAASp6E,EAAI8X,EAAEq9B,IAAIilC,SAASp6E,CAAG,CACzE,EAEAqqN,mBAAoB,SAASryF,GACzB,IAAIsyF,EAAiBh5L,EAAQ0mG,EAAMltF,OAAOvpC,KACtC,CAAEo4L,GAAM0B,GAAeL,GAAYS,GAAqBlB,GAAMiB,GAAeT,GAAYF,KAEzF0vB,EAAkBj5L,EAAQ0mG,EAAMltF,OAAOvpC,KAAM,CAAE04L,GAAQL,KAE3D,OAAO0wB,GAAkBC,GAAmBvyF,EAAMh1H,QAAQggM,SAC9D,IAGJ,SAASinB,GAAkBO,EAAexpL,EAAMh+B,GAC5C,IAAIynN,EAA6C,GAAGxwM,OAAlC+mB,aAAgBu6I,EAAyBivC,EAAc/4B,aAA0B+4B,EAAcpuC,WACjH/3K,EAAWomN,EAAYzpL,EAAK6kK,WAAY7iM,EAC5C,CAEA,SAAS0lN,GAAY59K,EAAQ9J,EAAM43K,GAC/B,OAAO1+K,GAAK4Q,GAAQ,SAAShqC,GACzB,OAAmB,IAAX83M,IAAiB93M,EAAE2wL,cAAkB3wL,EAAE2wL,eAAiBzwJ,CACpE,GACJ,CAEA6+H,EAAkB+lD,GAAqB,CACnCn0B,aAAc,CAAC,EACfrV,UAAW,CAAC,IAGhB/3K,EAAWuhN,GAAoB1hN,UAAWm7M,IAE1C,IAAIqL,GAAYjnN,EAAM7E,OAAO,CACzBoF,KAAM,WAEFnI,KAAK8uN,QAAU,EACnB,EAEA9sN,QAAS,WACLhC,KAAK8uN,QAAU,EACnB,EAEArhN,KAAM,SAAS21H,EAAQrsG,GACnB,IAEIg4L,EAAc,GAAG3wM,OAAOglH,GAC5BpjI,KAAK0N,OAEL,IAAK,IAAInG,EAAI,EAAGA,EAAIwnN,EAAYvnN,OAAQD,IAAK,CACzC,IAAI40H,EAAQ4yF,EAAYxnN,GACpB40H,GAASA,EAAM0vC,iBAAmB1vC,EAAMuvC,iBAPjC1rK,KAQEgvN,qBAAqB7yF,GAAO,EAAMplG,GARpC/2B,KASE8uN,QAAQntN,KAAKw6H,GAE9B,CACJ,EAEA6yF,qBAAsB,SAAS7yF,EAAO1uH,EAAMspB,GACxC,IAAIk4L,GAAiB9yF,EAAMh1H,QAAQwkK,WAAa,CAAC,GAAG5iJ,OACpD,GAAIkmM,EAAe,CACf,IAAIzoD,EAAY,CACZ0F,SAAU/vC,EAAM+vC,SAChBj9H,OAAQktF,EAAMltF,OACdwvB,SAAU09D,EAAM19D,SAChB/1D,MAAOyzH,EAAMzzH,MACbghM,WAAYvtE,EAAMutE,WAClBvgM,eAAgBA,GAChB83I,OAAQ9kB,EAAMsvE,kBACdh+L,KAAMA,GAEVwhN,EAAczoD,GACTA,EAAUp9J,mBACX+yH,EAAM0vC,gBAAgBp+J,EAAMspB,EAEpC,MACIolG,EAAM0vC,gBAAgBp+J,EAAMspB,EAEpC,EAEArpB,KAAM,WAIF,IAHA,IAEI01H,EAASpjI,KAAK8uN,QACX1rF,EAAO57H,QAHCxH,KAIFgvN,qBAAqB5rF,EAAOrzG,OAAO,EAEpD,EAEAm/L,cAAe,SAASrjN,GAGpB,IAFA,IAAIu3H,EAASpjI,KAAK8uN,QAETvnN,EAAI,EAAGA,EAAI67H,EAAO57H,OAAQD,IAAK,CAEpC,GAAIsE,IADQu3H,EAAO77H,GAEf,OAAO,CAEf,CAEA,OAAO,CACX,IAGJ,SAAS4B,KACLnJ,KAAKoJ,mBAAoB,CAC7B,CAEA,SAAS+lN,GAAUxqN,EAAGyqN,GAClB,IAAIt9M,GAAOs9M,GAAY,IAAIv2M,cACvBsH,EAAQxb,EAAEwb,MAGd,MAFsB,SAARrO,KAAoBqO,EAAMsvE,SAAWtvE,EAAMonB,UAAYpnB,EAAMkvM,SAAYlvM,EAAMrO,EAAM,MAGvG,CAEA,SAASw9M,GAAkB1e,GAEvB,IADA,IAAI53I,EAAS,CAAC,EACLpvD,EAAM,EAAGA,EAAMgnM,EAAWppM,OAAQoC,IAAO,CAC9C,IAAIs/L,EAAY0H,EAAWhnM,GACvBs/L,EAAU/jK,KAAKh+B,QAAQ/E,OACvB42D,EAAOkwI,EAAU/jK,KAAKh+B,QAAQ/E,MAAQ,CAClCsU,IAAKwyL,EAAUj1I,MAAMv9C,IACrByC,IAAK+vL,EAAUj1I,MAAM96C,KAGjC,CACA,OAAO6/C,CACX,CAEA,IAAIu2J,GAAW3nN,EAAM7E,OAAO,CACxBoF,KAAM,SAASgwK,EAAUhxK,GAErBnH,KAAKm4K,SAAWA,EAChBn4K,KAAKmH,QAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAASA,EAChD,EAEA2O,MAAO,SAASnR,GAEZ,OADA3E,KAAKwvN,QAAUL,GAAUxqN,EAAG3E,KAAKmH,QAAQ2K,KAClC9R,KAAKwvN,OAChB,EAEA90L,KAAM,SAAS/1B,GACX,GAAI3E,KAAKwvN,QAAS,CACd,IAAI5e,EAAa5wM,KAAK4wM,WAAa5wM,KAAKyvN,SAAS9qN,EAAGU,GAAG+Y,OAAOpe,KAAKyvN,SAAS9qN,EAAG4Q,IAC/E,GAAIq7L,EAAWppM,OAEX,OADAxH,KAAK4wM,WAAaA,EACX0e,GAAkB1e,EAEjC,CACJ,EAEAjlM,IAAK,WACD,IAAI8wM,EAASz8M,KAAKwvN,QAGlB,OAFAxvN,KAAKwvN,SAAU,EAER/S,CACX,EAEAp6B,IAAK,WACD,IACIlK,EADMn4K,KACSm4K,SACfy4B,EAFM5wM,KAEW4wM,WACrB,GAAIA,EAAWppM,OAAQ,CACnB,IAAK,IAAIoC,EAAM,EAAGA,EAAMgnM,EAAWppM,OAAQoC,IAAO,CAC9C,IAAIqqD,EAAQ28I,EAAWhnM,GACvBuuK,EAASi2C,kBAAkBn6J,EAAM9uB,KAAM8uB,EAAMA,MACjD,CACAkkH,EAASslC,OAAOtlC,EAASkjC,MAC7B,CACJ,EAEAr5M,QAAS,kBACEhC,KAAKm4K,QAChB,EAEAs3C,SAAU,SAAS9qN,EAAG2I,GAClB,IAAI6qK,EAAWn4K,KAAKm4K,SAChBpzI,GAASpgC,EAAE2I,GAAUy3B,MACrB0vI,GAAQz0K,KAAKmH,QAAQstK,MAAQ,IAAI57J,cACjC62M,EAAc,GAElB,GAAc,IAAV3qL,IAAgB0vI,GAAQ,IAAI57J,gBAAkBvL,EAE9C,IADA,IAAIgrK,EAAOH,EAASG,KACX1uK,EAAM,EAAGA,EAAM0uK,EAAK9wK,OAAQoC,IAAO,CACxC,IAAIu7B,EAAOmzI,EAAK1uK,GAEhB,GAAI0D,IAAajI,IAAM8/B,EAAKh+B,QAAQqrC,UAAYllC,IAAaiI,GAAK4vB,EAAKh+B,QAAQqrC,SAAU,CACrF,IAAIyhB,EAAQ9uB,EAAKk9I,IAAIt9I,GAEjBkvB,IACAA,EAAM4nH,YAAa,EACnB6zC,EAAY/tN,KAAK,CACbwjC,KAAMA,EACN8uB,MAAOA,IAGnB,CACJ,CAGJ,OAAOy7J,CACX,IAGJH,GAASlnN,UAAUlB,QAAU,CACzB2K,IAAK,OACL2iK,KAAM,QAGV,IAAIk7C,GAAgB/nN,EAAM7E,OAAO,CAC7BoF,KAAM,SAASmsK,EAAOntK,GAElBnH,KAAKs0K,MAAQA,EACbt0K,KAAKmH,QAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAASA,GAC5CnH,KAAK6e,eACT,EAEAA,cAAe,WACX,IAAI+wM,EAAU5vN,KAAK6vN,SAAWlgN,SAASkP,cAAc,OACrD+wM,EAAQviM,UAAY,YACpB,IAAIyiM,EAAengN,SAASkP,cAAc,OAC1CixM,EAAaziM,UAAY,kBACzBuiM,EAAQ3wM,YAAY6wM,EACxB,EAEAC,cAAe,WACP/vN,KAAK6vN,SAASrpM,YACdxmB,KAAK6vN,SAASrpM,WAAWpH,YAAYpf,KAAK6vN,SAElD,EAEAG,UAAW,SAAStgN,GAChB2pH,GAAcr5H,KAAK6vN,SAAUngN,EACjC,EAEAoG,MAAO,SAASnR,GACZ,GAAIwqN,GAAUxqN,EAAG3E,KAAKmH,QAAQ2K,KAAM,CAChC,IAAIwiK,EAAQt0K,KAAKs0K,MACbn4C,EAAQm4C,EAAM45C,kBAAkBvpN,GAChCsrN,EAAWjwN,KAAKkwN,UAAY57C,EAAMulB,UAAU+nB,YAAYzlF,GACxD0vE,EAAUokB,EAAWA,EAAS1W,YAAYnyM,QAAU,KAExD,GAAI6oN,GAAYpkB,EAAS,CACrB,IAAI/tL,EAAS9d,KAAK+3I,iBAalB,OAXA8zD,EAAQz7J,UAAUtyB,EAAO0O,KAAM1O,EAAOoH,KACtCllB,KAAKmwN,iBAAmBtkB,EAExBl8L,SAASqP,KAAKC,YAAYjf,KAAK6vN,UAC/B7vN,KAAKgwN,UAAU,CACXxjM,KAAM7nB,EAAEq+E,MAAQ,EAChB99D,IAAKvgB,EAAEs+E,MAAQ,EACfl3E,MAAO,EACPC,OAAQ,KAGL,CACX,CACJ,CACA,OAAO,CACX,EAEA+rI,eAAgB,WACZ,IAAIgzB,EAAe/qK,KAAKs0K,MAAMzoK,QAC1BwmH,EAAMgH,GAAc0xC,EAAc,CAAE,cAAe,eACnDpxC,EAActH,EAAIsH,YAClBC,EAAavH,EAAIuH,WACjB97G,EAAS2M,EAAQ46F,cAAc0lD,GAEnC,MAAO,CACHv+I,KAAMmtG,EAAc77G,EAAO0O,KAC3BtH,IAAK00G,EAAa97G,EAAOoH,IAEjC,EAEAwV,KAAM,SAAS/1B,GACI3E,KAAKkwN,WAEhBlwN,KAAKgwN,UAAUhwN,KAAKowN,mBAAmBzrN,GAE/C,EAEAgH,IAAK,SAAShH,GAEV,GADe3E,KAAKkwN,UACN,CACV,IAAIG,EAAmBrwN,KAAK+3I,iBACxBu4E,EAAoBtwN,KAAKowN,mBAAmBzrN,GAChD2rN,EAAkB9jM,MAAQ6jM,EAAiB7jM,KAC3C8jM,EAAkBprM,KAAOmrM,EAAiBnrM,IAE1C,IAAIpP,EAAQ,CAAE1Q,EAAGkrN,EAAkB9jM,KAAMroB,EAAGmsN,EAAkBprM,KAC1DvZ,EAAM,CAAEvG,EAAGkrN,EAAkB9jM,KAAO8jM,EAAkBvkN,MAAO5H,EAAGmsN,EAAkBprM,IAAMorM,EAAkBtkN,QAM9G,OALAhM,KAAKuwN,kBAAkBz6M,EAAOnK,GAE9B3L,KAAK+vN,uBACE/vN,KAAKkwN,UAELZ,GAAkBtvN,KAAK4wM,WAClC,CACJ,EAEAngK,KAAM,WACF,IAAImgK,EAAa5wM,KAAK4wM,WACtB,GAAIA,GAAcA,EAAWppM,OAAQ,CAEjC,IADA,IAAI2wK,EAAWn4K,KAAKs0K,MAAMulB,UACjBjwL,EAAM,EAAGA,EAAMgnM,EAAWppM,OAAQoC,IAAO,CAC9C,IAAIs/L,EAAY0H,EAAWhnM,GAC3BuuK,EAASi2C,kBAAkBllB,EAAU/jK,KAAM+jK,EAAUj1I,MACzD,CACAkkH,EAASslC,OAAOtlC,EAASkjC,MAC7B,CACJ,EAEAr5M,QAAS,WACLhC,KAAK+vN,uBACE/vN,KAAK6vN,gBACL7vN,KAAKs0K,KAChB,EAEAi8C,kBAAmB,SAASz6M,EAAOnK,GAK/B,IAJA,IAAI8oK,GAAQz0K,KAAKmH,QAAQstK,MAAQ,IAAI57J,cACjC+3L,EAAa,GAEbt4B,EAAOt4K,KAAKkwN,UAAU53C,KACjB1uK,EAAM,EAAGA,EAAM0uK,EAAK9wK,OAAQoC,IAAO,CACxC,IAAIu7B,EAAOmzI,EAAK1uK,GACZ4oC,EAAWrN,EAAKh+B,QAAQqrC,SAC5B,IAAMiiI,IAASpvK,GAAMmtC,KAAeiiI,IAASl/J,IAAKi9B,IAAaskF,EAAQ3xF,EAAK6kK,WAAY,CACpF,IAAI/1I,EAAQ9uB,EAAKm9I,YAAYxsK,EAAOnK,GAChCsoD,GACA28I,EAAWjvM,KAAK,CACZwjC,KAAMA,EACN8uB,MAAOA,GAGnB,CACJ,CAEAj0D,KAAK4wM,WAAaA,CACtB,EAEAwf,mBAAoB,SAASzrN,GACzB,IAAIknM,EAAU7rM,KAAKmwN,iBACfnxI,EAAgB,CAChB55E,EAAGT,EAAES,EAAE45E,cACP76E,EAAGQ,EAAER,EAAE66E,eAEPgE,EAAQr+E,EAAES,EAAEie,SACZ4/D,EAAQt+E,EAAER,EAAEkf,SACZoxJ,GAAQz0K,KAAKmH,QAAQstK,MAAQ,IAAI57J,cACjC2T,EAAOnpB,KAAKqT,IAAIsoE,EAAc55E,EAAG49E,GACjC99D,EAAM7hB,KAAKqT,IAAIsoE,EAAc76E,EAAG8+E,GAChCl3E,EAAQ1I,KAAKoU,IAAIunE,EAAc55E,EAAI49E,GACnCh3E,EAAS3I,KAAKoU,IAAIunE,EAAc76E,EAAI8+E,GA2BxC,OAzBIwxF,IAASpvK,IACTmnB,EAAOq/K,EAAQ5tH,GACflyE,EAAQ8/L,EAAQ9/L,SAEhB0oK,IAASl/J,IACT2P,EAAM2mL,EAAQ3tH,GACdlyE,EAAS6/L,EAAQ7/L,UAGjBg3E,EAAQ6oH,EAAQ1tH,KAChBpyE,EAAQ8/L,EAAQ1tH,GAAKa,EAAc55E,GAGnC49E,EAAQ6oH,EAAQ5tH,KAChBlyE,EAAQizE,EAAc55E,EAAIymM,EAAQ5tH,IAGlCgF,EAAQ4oH,EAAQztH,KAChBpyE,EAAS6/L,EAAQztH,GAAKY,EAAc76E,GAGpC8+E,EAAQ4oH,EAAQ3tH,KAChBlyE,EAASgzE,EAAc76E,EAAI0nM,EAAQ3tH,IAGhC,CACH1xD,KAAMnpB,KAAK8V,IAAIqT,EAAMq/K,EAAQ5tH,IAC7B/4D,IAAK7hB,KAAK8V,IAAI+L,EAAK2mL,EAAQ3tH,IAC3BnyE,MAAOA,EACPC,OAAQA,EAEhB,IAGJ2jN,GAActnN,UAAUlB,QAAU,CAC9B2K,IAAK,QACL2iK,KAAM,QAGV,IAAIpiD,GAAM3nG,GAAQ88F,KACdgpG,GAAen+F,GAAImG,WACnBi4F,GAAmBp+F,GAAI2G,eAQvB03F,GAAiB9oN,EAAM7E,OAAO,CAC9BoF,KAAM,SAASmsK,EAAOntK,GAElBnH,KAAKs0K,MAAQA,EACbt0K,KAAKmH,QAAUqB,EAAW,CACtBmoN,KAPO,IAQR3wN,KAAKmH,QAASA,EACrB,EAEAypN,aAAc,SAAS7rL,EAAOynK,GAO1B,IANA,IAEI/3B,GAAQz0K,KAAKmH,QAAQstK,MAAQ,IAAI57J,cACjC+3L,EAAa,GACbt4B,EAAOt4K,KAAKs0K,MAAMulB,UAAUvhB,KAEvB1uK,EAAM,EAAGA,EAAM0uK,EAAK9wK,OAAQoC,IAAO,CACxC,IAAIu7B,EAAOmzI,EAAK1uK,GACZ4oC,EAAWrN,EAAKh+B,QAAQqrC,SAE5B,IAAMiiI,IAASpvK,GAAMmtC,KAAeiiI,IAASl/J,IAAKi9B,IAAarN,EAAK88I,UAAW,CAC3E,IAAI0uC,EAAOH,GAXJxwN,KAW0BmH,QAAQwpN,KAzB1C,IACA,IAyBK18J,EAAQ9uB,EAAK88I,WAAWl9I,EAAQ4rL,EAAMnkB,GAEtCv4I,GACA28I,EAAWjvM,KAAK,CACZwjC,KAAMA,EACN8uB,MAAOA,GAGnB,CACJ,CAGA,OADAj0D,KAAK4wM,WAAaA,EACX0e,GAAkB1e,EAC7B,EAEAngK,KAAM,WACF,IAAImgK,EAAa5wM,KAAK4wM,WAClBz4B,EAAWn4K,KAAKs0K,MAAMulB,UAE1B,GAAI+W,GAAcA,EAAWppM,QAAU2wK,EAASi2C,kBAAmB,CAC/D,IAAK,IAAIxkN,EAAM,EAAGA,EAAMgnM,EAAWppM,OAAQoC,IAAO,CAC9C,IAAIs/L,EAAY0H,EAAWhnM,GAC3BuuK,EAASi2C,kBAAkBllB,EAAU/jK,KAAM+jK,EAAUj1I,MACzD,CACAkkH,EAASslC,OAAOtlC,EAASkjC,MAC7B,CACJ,EAEAr5M,QAAS,kBACEhC,KAAKs0K,KAChB,IAGAu8C,GAAe7mD,EAAajnK,OAAO,CACnCoF,KAAM,SAAShB,EAASojK,GACpBP,EAAajiK,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAEhCnH,KAAKuqK,aAAeA,CACxB,EAEAp6J,OAAQ,WACJ,IACIolC,EADMv1C,KACSu1C,SACfpuC,EAFMnH,KAEQmH,QACdqrC,EAAWrrC,EAAQqrC,SAEvBxyC,KAAKihJ,OAAS,IAAIv2H,GAAQivD,OAAO,KAAM,CACnC63D,QAASh/F,EAAW,EAAIrrC,EAAQqqI,QAChCE,YAAal/F,EAAWrrC,EAAQqqI,QAAU,EAC1CC,YAAaj/F,EAAW0mJ,EAAiB32B,SAAW22B,EAAiB52B,WACrEjsJ,QAASlP,EAAQi5I,IACjB7O,WAAY/+F,EAAWwqC,EAAQiU,IAGnC,IAAK,IAAIrnF,EAAM,EAAGA,EAAM2rC,EAAS/tC,OAAQoC,IAAO,CAC5C,IAAIqoL,EAAa18I,EAAS3rC,GAC1BqoL,EAAW5/C,OAAO,IAAI00B,GACtBkrB,EAAWvnB,cACf,CACJ,EAEAr4B,OAAQ,SAAS/4F,GACbt5C,KAAKihJ,OAAO30D,KAAKhzC,EAAI2uH,UACrBjoK,KAAKihJ,OAAO5O,SACZ,IAAI1U,EAAO39H,KAAKihJ,OAAO3hB,cAGnBt/H,KAAKs5C,IADLqkF,EACWlzG,EAAQimJ,UAAU/yC,GAElB,IAAIopC,CAEvB,EAEA2D,aAAc,WACV1qK,KAAK4qK,WACT,EAEAD,aAAc,WAAY,IAG1BmmD,GAAsB,GAGtBC,GAAmBrjD,EAAa3qK,OAAO,CACvC0qK,YAAa,WACT,IAAItmK,EAAUnH,KAAK2rM,gBACfj/B,EAASvlK,EAAQulK,OAErB,MAAO,CACH9sC,OAAQ,CACJ7zH,MAAO2gK,EAAO3gK,MACdklH,MAAOy7C,EAAOz7C,MACdl6F,QAAS05L,GAAiB/jD,EAAO31I,QAAS5vB,EAAQ4vB,SAClD8nH,SAAU6tB,EAAO7tB,UAErBnrH,KAAM,CACFu9F,MAAO9pH,EAAQ2tJ,WACf/9H,QAAS5vB,EAAQ4vB,SAErBikH,OAAQ7zI,EAAQ6zI,OAExB,EAEA2wD,cAAe,WACX,OAAO3rM,KAAKmH,OAChB,EAEA6pN,uBAAwB,WACpB,IAAI7pN,EAAUnH,KAAK2rM,gBACfv+B,EAAcjmK,EAAQwkK,UAAUe,OAAO3gK,MAE3C,OAAOvD,EACH,CAAC,EACDrB,EACA,CAAE2tJ,WAAY3tJ,EAAQulK,OAAOz7C,OAC7B9pH,EAAQwkK,UACRxkK,EAAQzB,OAASwzL,EAAiB14B,MAAQ,CACtC1L,WAAY3tJ,EAAQwkK,UAAUe,OAAOz7C,MACrCy7C,OAAQ,CAAEz7C,MAAO9pH,EAAQwkK,UAAU7W,WAAY/oJ,MAAOqhK,EAAc,GACpErhK,MAAO5E,EAAQ4E,MACfC,OAAQ7E,EAAQ6E,OAChB+sC,OAAQ,CAAE7zB,IAAK,EAAGsH,KAAM,IACxB,CAAC,EAEb,EAEAo/I,gBAAiB,WACb,IAAID,EAAY,IAAI+B,EAAa1tK,KAAKgxN,0BAClC13K,EAAMt5C,KAAKstK,WAAWlmK,QAI1B,OAHAukK,EAAUt5B,OAAO/4F,EAAI9tC,IAAImgK,EAAUxkK,QAAQulK,OAAO3gK,QAClD/L,KAAK2rK,UAAY,CAAEA,EAAUiC,cAEtB5tK,KAAK2rK,SAChB,IAGJ3H,EAAkB+sD,GAAkB,CAChCrkD,OAAQ,CACJ3gK,MAzD0B,GA2D9BA,MAAO+kN,EACP9kN,OAAQ8kN,EACRh8D,WAAYuM,EACZtoH,OAAQ,CACJ7zB,KAAM,EACNsH,MAAO,GAEX4tI,OAAQlpE,EACRggD,MAAO9lH,EACPugJ,UAAW,CACP5/J,MAAO+kN,GACP9kN,OAAQ8kN,GACRpkD,OAAQ,CACJz7C,MAAOowC,EACPt1J,MAzEsB,MA8ElC,IAAIklN,GAAiBrpN,EAAM7E,OAAO,CAC9BoF,KAAM,SAAShB,GAEXnH,KAAKu1C,SAAW,GAEhBv1C,KAAKmH,QAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAASnH,KAAKiqK,gBAAgB9iK,GACrE,EAEA8iK,gBAAiB,SAAS9iK,GACtB,OAAOA,CACX,EAEAkrI,OAAQ,SAAS20B,GAIb,IAHA,IACI1tH,EADA/D,EAAWv1C,KAAKu1C,SAGXhuC,EAAI,EAAGA,EAAIguC,EAAS/tC,OAAQD,IAAK,CACtC,IAAI2iK,EAAe30H,EAAShuC,GAC5B2iK,EAAa73B,OAAO20B,GAEpB1tH,EAAMA,EAAMA,EAAI3sB,KAAKu9I,EAAa5wH,KAAO4wH,EAAa5wH,IAAIlyC,OAC9D,CAEApH,KAAKs5C,IAAMA,GAAO0tH,CACtB,EAEAhlK,QAAS,WACL,IAAIuzC,EAAWv1C,KAAKu1C,SAEhBv1C,KAAKsyF,WACLtyF,KAAKsyF,UAAUtwF,UAGnB,IAAK,IAAIuF,EAAI,EAAGA,EAAIguC,EAAS/tC,OAAQD,IACjCguC,EAAShuC,GAAGvF,SAEpB,EAEAmoK,QAAS,WACL,IAAIx9J,EAAS3M,KAAK2M,OAElB,OAAOA,EAASA,EAAOw9J,UAAY,IACvC,EAEAC,UAAW,WACP,IAAIC,EAAUrqK,KAAKsqK,aACnB,GAAID,EACA,OAAOA,EAAQ//J,MAEvB,EAEAggK,WAAY,WAER,IADA,IAAIz+J,EAAU7L,KACP6L,GAAS,CACZ,GAAIA,EAAQ0+J,aACR,OAAO1+J,EAAQ0+J,aAEnB1+J,EAAUA,EAAQc,MACtB,CACJ,EAEA69J,kBAAmB,SAASnsF,EAAIC,GAI5B,IAHA,IAAI/oC,EAAWv1C,KAAKu1C,SAChBk1H,EAAgBl1H,EAAS/tC,OAEpBD,EAAI,EAAGA,EAAIkjK,EAAeljK,IAC/BguC,EAAShuC,GAAG+xC,IAAIlJ,UAAUiuC,EAAIC,EAEtC,EAEAnkC,OAAQ,WAIJ,IAHA,IAAIuiF,EAAcp1H,UAGTC,EAAI,EAAGA,EAAID,UAAUE,OAAQD,IAAK,CACvC,IAAI4nC,EAAOutF,EAAYn1H,GAHZvH,KAIFu1C,SAAS5zC,KAAKwtC,GACvBA,EAAKxiC,OALM3M,IAMf,CACJ,EAEA0qK,aAAc,YACmB,IAAzB1qK,KAAKmH,QAAQ6F,UAIjBhN,KAAK2qK,eAEL3qK,KAAK4qK,YAEL5qK,KAAKq6I,iBAELr6I,KAAK6qK,kBACL7qK,KAAK8qK,iBACT,EAEAF,UAAW,WACH5qK,KAAKihJ,SACLjhJ,KAAKihJ,OAAO8pB,aAAe/qK,KAEvBA,KAAK2M,QACL3M,KAAK2M,OAAOq+J,aAAahrK,KAAKihJ,QAG1C,EAEA5G,eAAgB,WAGZ,IAFA,IAAI9kG,EAAWv1C,KAAKu1C,SAChB/tC,EAAS+tC,EAAS/tC,OACbD,EAAI,EAAGA,EAAIC,EAAQD,IACxBguC,EAAShuC,GAAGmjK,cAEpB,EAEAC,aAAc,WACV3qK,KAAKihJ,OAAS,IAAIxQ,GAAM,CACpBz2F,OAAQh6C,KAAKmH,QAAQ6yC,OACrBhtC,QAASgsH,EAAeh5H,KAAKmH,QAAQ6F,SAAS,IAEtD,EAEA69J,gBAAiB,WACT7qK,KAAKihJ,QAAUjhJ,KAAKmH,QAAQmrF,YAC5BtyF,KAAKsyF,UAAYx2C,GAAUsL,OACvBpnD,KAAKihJ,OAAQjhJ,KAAKmH,QAAQmrF,WAGtC,EAEA04E,aAAc,SAASC,GACdA,EAAYF,eACbE,EAAYF,aAAe/qK,MAG3BirK,EAAY9jK,QAAQ+jK,OACpBlrK,KAAKmrK,WAAWlqB,OAAO9mG,OAAO8wH,GACvBn0C,EAAQm0C,EAAY9jK,QAAQ6yC,QACnCh6C,KAAKorK,YAAYC,YAAYJ,GACtBjrK,KAAKsrK,YACZtrK,KAAKqrK,YAAYJ,GACVjrK,KAAKihJ,OACZjhJ,KAAKihJ,OAAO9mG,OAAO8wH,GAInBjrK,KAAK2M,OAAOq+J,aAAaC,EAEjC,EAEAE,SAAU,WACN,OAAInrK,KAAK2M,OACE3M,KAAK2M,OAAOw+J,WAGhBnrK,IACX,EAEAorK,UAAW,WACP,OAAIprK,KAAK2M,OACE3M,KAAK2M,OAAOy+J,YAGhBprK,IACX,EAEAqrK,YAAa,SAASJ,GAClB,IAGI51E,EAHAr7C,EAASixH,EAAY9jK,QAAQ6yC,QAAU,EACvCuxH,EAAUvrK,KAAKihJ,OAAO1rG,SACtB/tC,EAAS+jK,EAAQ/jK,OAGrB,IAAK6tF,EAAM,EAAGA,EAAM7tF,EAAQ6tF,IAAO,CAC/B,IAAIm2E,EAAUD,EAAQl2E,GAEtB,GADW2jC,EAAewyC,EAAQrkK,QAAQ6yC,OAAQ,GACvCA,EACP,KAER,CAEAh6C,KAAKihJ,OAAO9jF,OAAOk4B,EAAK41E,EAC5B,EAEAz6B,SAAU,SAAS5mH,GAIf,IAHA,IAAI2rB,EAAWv1C,KAAKu1C,SAChB/tC,EAAS+tC,EAAS/tC,OAEbD,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAIs8B,EAAQ0R,EAAShuC,GAErBqiB,EAASia,GACLA,EAAM2sG,UACN3sG,EAAM2sG,SAAS5mH,EAEvB,CACJ,EAEA/c,QAAS,SAAS6D,GAId,IAHA,IAAI7E,EAAU7L,KACVyrK,GAAU,EAEP5/J,IAAY4/J,IACfA,EAAU/6J,EAAM7E,MAGZA,EAAUA,EAAQc,QAI1B,GAAI8+J,EACA,OAAO5/J,CAEf,EAEAi/J,eAAgB,WAAY,EAE5BY,aAAc,WACV,IAAIvkK,GAAWnH,KAAKmH,SAAW,CAAC,GAAGwkK,UACnC,SAAU3rK,KAAK4rK,iBAAoBzkK,IAA+B,IAApBA,EAAQ6F,UAAuC,IAAjBhN,KAAKgN,QACrF,EAEA6+J,gBAAiB,SAASp+J,EAAMspB,GAC5B,IAAIk8F,EAAWjzH,KAEXmH,GAAWnH,KAAKmH,SAAW,CAAC,GAAGwkK,WAAa,CAAC,EAC7CG,EAAe3kK,EAAQ85I,OACvB0qB,EAAY3rK,KAAK+rK,WAErB,IAAKJ,EAAW,CACZ,IAAIK,EAAmB,CACnBt4I,KAAM,CACFu9F,MAAOowC,EACPtqI,QAASA,GAAW,IAExB6oG,OAAQ,CACJ3O,MAAOowC,EACPt1J,MAAO,EACPgrB,QAASA,GAAW,KAI5B,GAAI+0I,GAeA,KAdAH,EAAY3rK,KAAK+rK,WAAaD,EAC1BnpK,EAAEI,OAAO/C,KAAKisK,sBAAuB,CACjCtB,aAAc,WAAc,OAAO13C,EAAS24C,gBAAgBI,EAAmB,EAC/E1hK,OAAQtK,KAAKoqK,YACbn7H,OAAQjvC,KAAKivC,OACbwvB,SAAUz+D,KAAKy+D,SACfytG,SAAUlsK,KAAKksK,SACfxjK,MAAO1I,KAAK0I,MACZmkB,WAAY7sB,KAAK6sB,WACjBs/I,aAAcnsK,KAAKmsK,aACnBnlH,MAAOhnD,KAAKgnD,UAKhB,YAGJ2kH,EAAY3rK,KAAK+rK,WAAa/rK,KAAK4rK,gBAAgBI,GAGlDl1C,EAAQ60C,EAAUxkK,QAAQ6yC,UAC3B2xH,EAAUxkK,QAAQ6yC,OAASg/E,EAAe7xH,EAAQ6yC,OAAQh6C,KAAKmH,QAAQ6yC,SAG3Eh6C,KAAKgrK,aAAaW,EACtB,CAEAA,EAAU3+J,QAAQS,EACtB,EAEA2+J,qBAAsB,SAAS3+J,GAC3B,IAAItG,IAAYnH,KAAKmH,SAAW,CAAC,GAAGklK,eAAiB,CAAC,GAAGV,WAAa,CAAC,EACnEW,EAAiBtsK,KAAKusK,gBAE1B,GAAK9+J,GAAS6+J,EAAd,CAIA,IAAKA,EAAgB,CACjB,IAAI4kD,EAAiBlxN,KAAKmqK,UAAUhjK,QAAQ2tJ,WACxC0X,EAAiB7H,GAAcusD,GAC/BzkD,EAAwB,CACxB/4I,KAAM,CACFqD,QAAS5vB,EAAQ4vB,QACjBk6F,MAAO9pH,EAAQ8pH,OAEnB2O,OAAQj9H,EAAEI,OAAO,CAAC,EAAG,CAACkuH,MAAOu7C,GAAiBrlK,EAAQulK,QACtD1yH,OAAQ7yC,EAAQ6yC,QAGpBsyH,EAAiBtsK,KAAKusK,gBAAkBvsK,KAAK2sK,qBAAqBF,GAElEzsK,KAAKgrK,aAAasB,EACtB,CAEAA,EAAet/J,QAAQS,EAnBvB,CAoBJ,EAEAm/J,sBAAuB,SAAS/gK,EAAS1E,EAAS0lK,GAC9C,IAAIC,EAAU,IAAIv+B,GAAK5rI,EAAEI,OAAO,CAC5B68H,OAAQ,CACJ3O,MAAO,QAEXv9F,KAAM1zB,KAAK+sK,eAAeF,GAC1Bh+B,OAAQhjI,EAAQ1E,QAAQ0nI,QACzB1nI,IAIH,OAFA2lK,EAAQ3/B,SAASx0G,SAAS9sB,EAAQshI,SAASx0G,YAEpCm0I,CACX,EAEAC,eAAgB,SAAS5lK,GACrB,GAAInH,KAAK2M,OACL,OAAO3M,KAAK2M,OAAOogK,eAAe5lK,EAE1C,EAEA6lK,6BAA8B,WAC1B,OAAO,CACX,IAGJikD,GAAe5oN,UAAUlB,QAAU,CAAE,EAErC,IAAIgqN,GAAUvpN,EAAM7E,OAAO,CACvBoF,KAAM,SAAS/C,EAAGjB,GAEdnE,KAAKoF,EAAIA,GAAK,EACdpF,KAAKmE,EAAIA,GAAK,CAClB,EAEAiD,MAAO,WACH,OAAO,IAAI+pN,GAAQnxN,KAAKoF,EAAGpF,KAAKmE,EACpC,EAEAgtD,OAAQ,SAASgrE,GACb,OAAOA,GAASn8H,KAAKoF,IAAM+2H,EAAM/2H,GAAKpF,KAAKmE,IAAMg4H,EAAMh4H,CAC3D,EAEAgtC,OAAQ,SAASotC,EAAQu6C,GACrB,IAAI6tC,EAAQ9tC,GAAIC,GACZ8tC,EAAOvjK,KAAKg3H,IAAIssC,GAChBE,EAAOxjK,KAAKi3H,IAAIqsC,GAChB5gC,EAAKxnD,EAAOn5E,EACZ4gI,EAAKznD,EAAOp6E,EAEZiB,EADMpF,KACEoF,EACRjB,EAFMnE,KAEEmE,EAYZ,OAVAnE,KAAKoF,EAAIkR,EACLyvH,GAAM3gI,EAAI2gI,GAAM6gC,GAAQziK,EAAI6hI,GAAM6gC,EAClCjF,GAGJ5hK,KAAKmE,EAAImS,EACL0vH,GAAM7hI,EAAI6hI,GAAM4gC,GAAQxhK,EAAI2gI,GAAM8gC,EAClCjF,GAGG5hK,IACX,EAEA8+H,SAAU,SAAS55H,GAKf,OAHAlF,KAAKoF,GAAKF,EACVlF,KAAKmE,GAAKe,EAEHlF,IACX,EAEAs8H,WAAY,SAASH,GACjB,IAAI99C,EAAKr+E,KAAKoF,EAAI+2H,EAAM/2H,EACpBk5E,EAAKt+E,KAAKmE,EAAIg4H,EAAMh4H,EAExB,OAAOd,KAAKo7E,KAAKJ,EAAKA,EAAKC,EAAKA,EACpC,IAGJ6yI,GAAQrqD,SAAW,SAASvoF,EAAQ67C,EAAO9tG,GACvC,IAAIirG,EAAUsB,GAAIuB,GAElB,OAAO,IAAI+2F,GACP5yI,EAAOn5E,EAAIknB,EAASjpB,KAAKg3H,IAAI9C,GAC7Bh5C,EAAOp6E,EAAImoB,EAASjpB,KAAKi3H,IAAI/C,GAErC,EAEA,IAAI65F,GAAQxpN,EAAM7E,OAAO,CACrBoF,KAAM,SAAS81E,EAAIC,EAAIC,EAAIC,GAEvBp+E,KAAKi+E,GAAKA,GAAM,EAChBj+E,KAAKk+E,GAAKA,GAAM,EAChBl+E,KAAKm+E,GAAKA,GAAM,EAChBn+E,KAAKo+E,GAAKA,GAAM,CACpB,EAEAjtB,OAAQ,SAAS7X,GACb,OAAOt5C,KAAKi+E,KAAO3kC,EAAI2kC,IAAMj+E,KAAKm+E,KAAO7kC,EAAI6kC,IACzCn+E,KAAKk+E,KAAO5kC,EAAI4kC,IAAMl+E,KAAKo+E,KAAO9kC,EAAI8kC,EAC9C,EAEAryE,MAAO,WACH,OAAO/L,KAAKm+E,GAAKn+E,KAAKi+E,EAC1B,EAEAjyE,OAAQ,WACJ,OAAOhM,KAAKo+E,GAAKp+E,KAAKk+E,EAC1B,EAEA9tC,UAAW,SAASiuC,EAAIC,GAMpB,OALAt+E,KAAKi+E,IAAMI,EACXr+E,KAAKm+E,IAAME,EACXr+E,KAAKk+E,IAAMI,EACXt+E,KAAKo+E,IAAME,EAEJt+E,IACX,EAEA06B,KAAM,SAASt1B,EAAGjB,GACd,IAAI6H,EAAShM,KAAKgM,SACdD,EAAQ/L,KAAK+L,QAYjB,OAVI+qH,EAAQ1xH,KACRpF,KAAKi+E,GAAK74E,EACVpF,KAAKm+E,GAAKn+E,KAAKi+E,GAAKlyE,GAGpB+qH,EAAQ3yH,KACRnE,KAAKk+E,GAAK/5E,EACVnE,KAAKo+E,GAAKp+E,KAAKk+E,GAAKlyE,GAGjBhM,IACX,EAEA2sB,KAAM,SAASq6I,GAMX,OALAhnK,KAAKi+E,GAAK56E,KAAKqT,IAAI1W,KAAKi+E,GAAI+oF,EAAU/oF,IACtCj+E,KAAKk+E,GAAK76E,KAAKqT,IAAI1W,KAAKk+E,GAAI8oF,EAAU9oF,IACtCl+E,KAAKm+E,GAAK96E,KAAK8V,IAAInZ,KAAKm+E,GAAI6oF,EAAU7oF,IACtCn+E,KAAKo+E,GAAK/6E,KAAK8V,IAAInZ,KAAKo+E,GAAI4oF,EAAU5oF,IAE/Bp+E,IACX,EAEAinK,UAAW,SAAS9qC,GAChB,IAAI+qC,EAAajkK,EAAQk5H,GACrB/2H,EAAI8hK,EAAa/qC,EAAM,GAAKA,EAAM/2H,EAClCjB,EAAI+iK,EAAa/qC,EAAM,GAAKA,EAAMh4H,EAGtC,OAFAnE,KAAK2sB,KAAK,IAAIykM,GAAMhsN,EAAGjB,EAAGiB,EAAGjB,IAEtBnE,IACX,EAEAmnK,OAAQ,SAASH,EAAW7hI,GAYxB,OAVIA,IAAS9/B,GAAM8/B,IACfnlC,KAAKi+E,GAAK+oF,EAAU/oF,GACpBj+E,KAAKm+E,GAAK6oF,EAAU7oF,IAGpBh5C,IAAS5vB,GAAM4vB,IACfnlC,KAAKk+E,GAAK8oF,EAAU9oF,GACpBl+E,KAAKo+E,GAAK4oF,EAAU5oF,IAGjBp+E,IACX,EAEAonK,QAAS,SAASJ,EAAW70E,GACzB,IAAInmF,EAAShM,KAAKgM,SACdD,EAAQ/L,KAAK+L,QACbo5B,EAAOgtD,IAAWjB,GAAOiB,IAAWhB,EAAS57E,EAAIlQ,EACjDyY,EAASqnB,IAAS5vB,EAAIvJ,EAASD,EAEnC,GAAIomF,IAAWlB,EAAQ,CACnB,IAAIo2E,EAAeL,EAAUzoF,SACzBA,EAASv+E,KAAKu+E,SAElBv+E,KAAKi+E,IAAMopF,EAAajiK,EAAIm5E,EAAOn5E,EACnCpF,KAAKk+E,IAAMmpF,EAAaljK,EAAIo6E,EAAOp6E,CACvC,MACInE,KAAKmlC,EAAO,GADLgtD,IAAWjB,GAAOiB,IAAW/mE,EACnB47I,EAAU7hI,EAAO,GAAKrnB,EAEtBkpJ,EAAU7hI,EAAO,GAMtC,OAHAnlC,KAAKm+E,GAAKn+E,KAAKi+E,GAAKlyE,EACpB/L,KAAKo+E,GAAKp+E,KAAKk+E,GAAKlyE,EAEbhM,IACX,EAEAsnK,OAAQ,SAASC,EAAIC,GAKjB,OAHAxnK,KAAKm+E,IAAMopF,EACXvnK,KAAKo+E,IAAMopF,EAEJxnK,IACX,EAEAi+H,OAAQ,SAASspC,EAAIC,GAEjB,OADAxnK,KAAKsnK,QAAQC,GAAKC,GACXxnK,IACX,EAEAwL,IAAK,SAASwsI,GACV,IAAIxG,EAAU0xB,EAAWlrB,GAOzB,OALAh4I,KAAKi+E,IAAMuzD,EAAQhlH,KACnBxsB,KAAKm+E,IAAMqzD,EAAQ/kH,MACnBzsB,KAAKk+E,IAAMszD,EAAQtsH,IACnBllB,KAAKo+E,IAAMozD,EAAQ9kH,OAEZ1sB,IACX,EAEAynK,MAAO,SAASzvB,GACZ,IAAIxG,EAAU0xB,EAAWlrB,GAOzB,OALAxG,EAAQhlH,MAAQglH,EAAQhlH,KACxBglH,EAAQtsH,KAAOssH,EAAQtsH,IACvBssH,EAAQ/kH,OAAS+kH,EAAQ/kH,MACzB+kH,EAAQ9kH,QAAU8kH,EAAQ9kH,OAEnB1sB,KAAKwL,IAAIgmI,EACpB,EAEApqI,MAAO,WACH,OAAO,IAAIgqN,GAAMpxN,KAAKi+E,GAAIj+E,KAAKk+E,GAAIl+E,KAAKm+E,GAAIn+E,KAAKo+E,GACrD,EAEAG,OAAQ,WACJ,OAAO,IAAI4yI,GACPnxN,KAAKi+E,GAAKj+E,KAAK+L,QAAU,EACzB/L,KAAKk+E,GAAKl+E,KAAKgM,SAAW,EAElC,EAEAmyH,cAAe,SAAShC,GAEpB,OAAOA,EAAM/2H,GAAKpF,KAAKi+E,IAAMk+C,EAAM/2H,GAAKpF,KAAKm+E,IACtCg+C,EAAMh4H,GAAKnE,KAAKk+E,IAAMi+C,EAAMh4H,GAAKnE,KAAKo+E,EACjD,EAEAglD,OAAQ,WACJ,MAAO,CACH,IAAI+tF,GAAQnxN,KAAKi+E,GAAIj+E,KAAKk+E,IAC1B,IAAIizI,GAAQnxN,KAAKm+E,GAAIn+E,KAAKk+E,IAC1B,IAAIizI,GAAQnxN,KAAKm+E,GAAIn+E,KAAKo+E,IAC1B,IAAI+yI,GAAQnxN,KAAKi+E,GAAIj+E,KAAKo+E,IAElC,EAEAspF,QAAS,WACL,MAAO,CAAE1nK,KAAKi+E,GAAIj+E,KAAKk+E,GAAIl+E,KAAKm+E,GAAIn+E,KAAKo+E,IAAKvzE,KAAK,IACvD,EAEA88J,SAAU,SAASruH,GACf,QAASA,EAAI8kC,GAAKp+E,KAAKk+E,IAAMl+E,KAAKo+E,GAAK9kC,EAAI4kC,IAAM5kC,EAAI6kC,GAAKn+E,KAAKi+E,IAAMj+E,KAAKm+E,GAAK7kC,EAAI2kC,GACvF,EAEA9sC,OAAQ,SAAS4I,GACb,IAAIhuC,EAAQ/L,KAAK+L,QACbC,EAAShM,KAAKgM,SACdqmH,EAAMryH,KAAKu+E,SACXwnD,EAAK1T,EAAIjtH,EACT4gI,EAAK3T,EAAIluH,EAETyjK,EAAKC,GAAY,EAAG,EAAG9hC,EAAIC,EAAIjsF,GAC/B+tH,EAAKD,GAAY97J,EAAO,EAAGg6H,EAAIC,EAAIjsF,GACnCguH,EAAKF,GAAY97J,EAAOC,EAAQ+5H,EAAIC,EAAIjsF,GACxCiuH,EAAKH,GAAY,EAAG77J,EAAQ+5H,EAAIC,EAAIjsF,GAQxC,OANAhuC,EAAQ1I,KAAK8V,IAAIyuJ,EAAGxiK,EAAG0iK,EAAG1iK,EAAG2iK,EAAG3iK,EAAG4iK,EAAG5iK,GAAK/B,KAAKqT,IAAIkxJ,EAAGxiK,EAAG0iK,EAAG1iK,EAAG2iK,EAAG3iK,EAAG4iK,EAAG5iK,GACzE4G,EAAS3I,KAAK8V,IAAIyuJ,EAAGzjK,EAAG2jK,EAAG3jK,EAAG4jK,EAAG5jK,EAAG6jK,EAAG7jK,GAAKd,KAAKqT,IAAIkxJ,EAAGzjK,EAAG2jK,EAAG3jK,EAAG4jK,EAAG5jK,EAAG6jK,EAAG7jK,GAE1EnE,KAAKm+E,GAAKn+E,KAAKi+E,GAAKlyE,EACpB/L,KAAKo+E,GAAKp+E,KAAKk+E,GAAKlyE,EAEbhM,IACX,EAEAioK,OAAQ,WACJ,OAAO,IAAItmC,GAAS1E,KAAK,CAAEj9H,KAAKi+E,GAAIj+E,KAAKk+E,IAAM,CAAEl+E,KAAK+L,QAAS/L,KAAKgM,UACxE,EAEAk8J,QAAS,WACL,OAAwB,IAAjBloK,KAAK+L,SAAmC,IAAlB/L,KAAKgM,QACtC,EAEAklI,MAAO,SAAS81B,EAAW7hI,EAAMuuG,GAC7B,IAAI1hB,EAAK7sF,EAAO,EACZ8sF,EAAK9sF,EAAO,EACZgjI,EAAWhjI,IAAS9/B,EAAI6zL,EAAiB1nJ,MAAQ0nJ,EAAiBznJ,OAClEzhC,EAAOhQ,KAAKmoK,KAEZ1yI,EAAQi+G,EAAW,CAAEtoH,EAAM8lE,KAC3BlxF,KAAKgyH,GAAMg1C,EAAUh1C,GACrBhyH,KAAKiyH,GAAMjyH,KAAKgyH,GAAMhiH,GACfylB,EAAQi+G,EAAW,CAAEpoH,EAAO6lE,KACnCnxF,KAAKiyH,GAAM+0C,EAAU/0C,GACrBjyH,KAAKgyH,GAAMhyH,KAAKiyH,GAAMjiH,GACf0jI,IAAcziD,IACrBjxF,KAAKgyH,GAAMg1C,EAAUh1C,IAAOg1C,EAAUmB,KAAcn4J,GAAQ,EAC5DhQ,KAAKiyH,GAAMjyH,KAAKgyH,GAAMhiH,EAE9B,IAGJ,SAAS63J,GAAYziK,EAAGjB,EAAG4hI,EAAIC,EAAI5L,GAC/B,IAAIusC,EAAQ9tC,GAAIuB,GAEhB,OAAO,IAAI+2F,GACPprF,GAAM3gI,EAAI2gI,GAAM1iI,KAAKg3H,IAAIssC,IAAUxiK,EAAI6hI,GAAM3iI,KAAKi3H,IAAIqsC,GACtD3gC,GAAM5gI,EAAI2gI,GAAM1iI,KAAKi3H,IAAIqsC,IAAUxiK,EAAI6hI,GAAM3iI,KAAKg3H,IAAIssC,GAE9D,CAEA,IAAI0qD,GAAeJ,GAAeluN,OAAO,CACrCoF,KAAM,SAAShB,GACX8pN,GAAelpN,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAElCnH,KAAKmH,QAAQ4xC,OAASmqH,EAAWljK,KAAKmH,QAAQ4xC,QAC9C/4C,KAAKmH,QAAQ6wI,QAAUkrB,EAAWljK,KAAKmH,QAAQ6wI,QACnD,EAEA3F,OAAQ,SAAS20B,GACb,IAUI1tH,EAVA25E,EAAWjzH,KAEXmH,EAAUnH,KAAKmH,QACf4E,EAAQ5E,EAAQ4E,MAChBC,EAAS7E,EAAQ6E,OACjBkhK,EAAc/lK,EAAQ+lK,YACtBC,EAAaphK,GAASC,EACtB+sC,EAAS5xC,EAAQ4xC,OACjBi/F,EAAU7wI,EAAQ6wI,QAClBo1B,EAAcjmK,EAAQulK,OAAO3gK,MAG7BshK,EAAmB,WACnBp6C,EAASie,MAAM81B,EAAW3hK,EAAG8B,EAAQ+pI,OACrCje,EAASie,MAAM81B,EAAWzxJ,EAAGpO,EAAQizJ,QACrCnnC,EAASq6C,WAAah0H,EAAIlyC,QAAQqgK,MAAM1uH,GAAQ0uH,MAAM2F,EAC1D,EAEIG,EAAavG,EAAU5/J,QACvB+lK,IACAI,EAAWpvF,GAAKovF,EAAWtvF,GAAKlyE,EAChCwhK,EAAWnvF,GAAKmvF,EAAWrvF,GAAKlyE,GAGhCkhK,GACAK,EAAW9F,MAAM1uH,GAAQ0uH,MAAM2F,GAAa3F,MAAMzvB,GAGtDi5E,GAAelpN,GAAGsqI,OAAO9nI,KAAKvK,KAAMutK,GAGhCj0H,EADA6zH,EACMntK,KAAKs5C,IAAM,IAAI83K,GAAM,EAAG,EAAGrlN,EAAOC,GAElChM,KAAKs5C,IAGX4zH,GAAeC,GACfE,IACAE,EAAavtK,KAAKutK,WAAavtK,KAAKstK,WAAWlmK,QAAQqgK,MAAMzvB,KAE7Du1B,EAAavtK,KAAKutK,WAAaj0H,EAAIlyC,QACnCkyC,EAAI9tC,IAAIwsI,GAASxsI,IAAI4hK,GAAa5hK,IAAIutC,GACtCs0H,KAGJrtK,KAAKwqK,kBACDlxH,EAAI2kC,GAAKsvF,EAAWtvF,GAAKllC,EAAOvsB,KAAO4gJ,EAAcp1B,EAAQxrH,KAC7D8sB,EAAI4kC,GAAKqvF,EAAWrvF,GAAKnlC,EAAO7zB,IAAMkoJ,EAAcp1B,EAAQ9yH,KAIhE,IADA,IAAIqwB,EAAWv1C,KAAKu1C,SACXhuC,EAAI,EAAGA,EAAIguC,EAAS/tC,OAAQD,IAAK,CACtC,IAAI4nC,EAAOoG,EAAShuC,GACpB4nC,EAAKkjG,OAAOljG,EAAKmK,IACrB,CACJ,EAEA43F,MAAO,SAAS81B,EAAW7hI,EAAMuuG,GAC7B1zI,KAAKs5C,IAAI43F,MAAM81B,EAAW7hI,EAAMuuG,EACpC,EAEA85B,OAAQ,WACJ,IAAIrmK,EAAUnH,KAAKmH,QACnB,OAAOA,EAAQulK,OAAO3gK,OAAS5E,EAAQ2tJ,UAC3C,EAEA6V,aAAc,WACVsmD,GAAelpN,GAAG4iK,aAAapgK,KAAKvK,MAEtBA,KAAKmH,QACP6F,SAAWhN,KAAKwtK,UACxBxtK,KAAKihJ,OAAO9mG,OAAOo0F,GAAKc,SACpBrvI,KAAKstK,WAAWrF,SAChBjoK,KAAKytK,eAGjB,EAEAA,YAAa,WACT,IAAItmK,EAAUnH,KAAKmH,QACfulK,EAASvlK,EAAQulK,QAAU,CAAC,EAEhC,MAAO,CACH9sC,OAAQ,CACJ7zH,MAAO2gK,EAAO3gK,MACdklH,MAAOy7C,EAAOz7C,MACdl6F,QAASiiG,EAAe0zC,EAAO31I,QAAS5vB,EAAQ4vB,SAChD8nH,SAAU6tB,EAAO7tB,UAErBnrH,KAAM,CACFu9F,MAAO9pH,EAAQ2tJ,WACf/9H,QAAS5vB,EAAQ4vB,SAErBikH,OAAQ7zI,EAAQ6zI,OAExB,IAGJgpB,EAAkBqtD,GAAc,CAC5BngF,MAAO9lH,EACPgvI,OAAQlpE,EACRn4C,OAAQ,CAAC,EACTi/F,QAAS,CAAC,EACV00B,OAAQ,CACJz7C,MAAOqvC,EACPv0J,MAAO,GAEX+oJ,WAAY,GACZoY,aAAa,EACbnhK,MAAO,EACPC,OAAQ,EACRgB,SAAS,IAGb,IAAIskN,GAAiBD,GAAatuN,OAAO,CACrCoF,KAAM,SAAShB,EAASwmK,GACpB0jD,GAAatpN,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAEhCnH,KAAK2tK,UAAYA,CACrB,EAEAC,WAAY,WACR,IACIzmK,EADMnH,KACQmH,QACdmyC,EAFMt5C,KAEIstK,WACV5nK,EAAOyB,EAAQzB,KACfq0C,EAAW5yC,EAAQ4yC,SACnBwkC,EAASjlC,EAAIilC,SACbglE,EAAYjqG,EAAIvtC,QAAU,EAC1By3I,EAAalqG,EAAIttC,SAAW,EAEhC,IAAK7E,EAAQ6F,UAAYhN,KAAKwtK,SAC1B,OAAO,KAGX,IACI3hK,EADAsB,EAAQnN,KAAKytK,cAGjB,GAAI/nK,IAAS66J,EACT10J,EAAU,IAAIs0H,GACV,IAAIi5D,GAAe,CACf9iL,EAAMgjC,EAAI2kC,GAAKslE,EAAWqe,GAC1BtrJ,EAAMgjC,EAAI4kC,GAAKslE,EAAYoe,IAC5Bv+J,KAAKqT,IAAI6sI,EAAWC,IACvBr2I,QAED,GAAIzH,IAASwzL,EAAiB93B,SACjCv1J,EAAU0iI,GAAKvQ,WAAW,CACtB,CAAE1kF,EAAI2kC,GAAKslE,EAAWjqG,EAAI4kC,IAC1B,CAAE5kC,EAAI2kC,GAAI3kC,EAAI8kC,IACd,CAAE9kC,EAAI6kC,GAAI7kC,EAAI8kC,KACfjxE,GAAOu4C,aACP,GAAIhgD,IAASwzL,EAAiB14B,OACjC30J,EAAU,IAAIujI,GAAUjiI,IAEhBqvC,OAAOlD,EAAI2kC,GAAI3kC,EAAI4kC,IAAI2uD,OAAOvzF,EAAI6kC,GAAI7kC,EAAI8kC,IAClDvyE,EAAQ2wC,OAAOlD,EAAI2kC,GAAI3kC,EAAI8kC,IAAIyuD,OAAOvzF,EAAI6kC,GAAI7kC,EAAI4kC,QAC/C,CACH,IAAIoO,EAAOhzC,EAAI2uH,SACf,GAAIviK,IAASwzL,EAAiB/3B,aAAc,CACxC,IAAI0M,EAAe4iD,GAAiBtpN,EAAQ0mK,aAAcvhF,EAAKvgF,QAAU,GACzEugF,EAAK8wC,gBAAgBywC,EACzB,CAEAhiK,EAAU0iI,GAAKc,SAAS/iD,EAAMn/E,EAClC,CAUA,OARI4sC,GACAluC,EAAQ8nC,UAAUA,KACbxC,QAAQ4I,EAAU,CAAEwkC,EAAOn5E,EAAGm5E,EAAOp6E,KAI9C0H,EAAQ1E,QAAQ6yC,OAAS7yC,EAAQ6yC,OAE1BnuC,CACX,EAEAgT,cAAe,WACX,IAAIo0G,EAAWjzH,KAEX8rK,EAAe9rK,KAAKmH,QAAQ85I,OAC5B0sB,EAAY3tK,KAAK2tK,WAAa,CAAC,EAkBnC,OAfI7B,EACSA,EAAa,CAClBpjK,MAAOilK,EAAUjlK,MACjB+1D,SAAUkvG,EAAUlvG,SACpBn0D,OAAQtK,KAAKoqK,YACbn7H,OAAQ0+H,EAAU1+H,OAClBi9H,SAAUyB,EAAUzB,SACpB5/E,KAAMtsF,KAAKstK,WAAWrF,SACtB9gK,QAASnH,KAAK8tK,gBACdnD,aAAc,WAAc,OAAO13C,EAAS26C,YAAc,IAGrD5tK,KAAK4tK,YAItB,EAEAE,cAAe,WACX,IAAI3mK,EAAUnH,KAAKmH,QACnB,MAAO,CACH2tJ,WAAY3tJ,EAAQ2tJ,WACpB4X,OAAQvlK,EAAQulK,OAChB3zH,OAAQ5xC,EAAQ4xC,OAChBi/F,QAAS7wI,EAAQ6wI,QACjBtyI,KAAMyB,EAAQzB,KACdsK,KAAM7I,EAAQ4E,MACdiB,QAAS7F,EAAQ6F,QAEzB,EAEA29J,aAAc,WACV3qK,KAAKihJ,OAASjhJ,KAAK6e,gBAEnBqyL,GAAmClxM,KAAKihJ,OAAQjhJ,KAAKmH,QAAQ4mK,qBACjE,IAGJ/J,EAAkBstD,GAAgB,CAC9B5rN,KAAM66J,EACNrvB,MAAOjgD,EACPmpE,OAAQnpE,IAGZ,IAAIsgI,GAAiBD,GAAevuN,OAAO,CACvC6qK,WAAY,WACR,IAAIr5G,EAAQ,IAAIk8E,GACZ5kI,EAAU,IAAIujI,GAAUpvI,KAAKytK,eAE7Bn0H,EADMt5C,KACIstK,WACV9pB,EAAalqG,EAAIttC,SAAW,EAShC,OAPAH,EACK2wC,OAAOlD,EAAI2kC,GAAI3kC,EAAI4kC,GAAKslE,GACxB3W,OAAOvzF,EAAI2kC,GAAI3kC,EAAI8kC,IACnByuD,OAAOvzF,EAAI6kC,GAAI7kC,EAAI8kC,IAExB7pB,EAAMpa,OAAOtuC,GAEN0oD,CACX,IAGJyvG,EAAkButD,GAAgB,CAC9BxlN,MAAO,GACPC,OAAQ,GACRklI,MAAO5lH,EACP8uI,OAAQjpE,EACRp4C,OAAQ,CACJtsB,OAAQ,EACRC,OAAQ,KAIhB,IAAI8kM,GAAiBF,GAAevuN,OAAO,CACvC6qK,WAAY,WACR,IAAIr5G,EAAQ,IAAIk8E,GACZ5kI,EAAU,IAAIujI,GAAU,CACxBxP,OAAQ,CACJ3O,MAAOjxH,KAAKmH,QAAQulK,OAAOz7C,MAC3Bl6F,QAAS/2B,KAAKmH,QAAQ4vB,QACtBhrB,MAAO/L,KAAKmH,QAAQ6E,OACpB6yI,SAAU7+I,KAAKmH,QAAQ03I,YAG3BvlG,EAAMt5C,KAAKstK,WACXmkD,EAAUn4K,EAAIilC,SAASp6E,EAQ3B,OANA0H,EACK2wC,OAAOlD,EAAI2kC,GAAIwzI,GACf5kF,OAAOvzF,EAAI6kC,GAAIszI,GAEpBl9J,EAAMpa,OAAOtuC,GAEN0oD,CACX,EAEAq3G,gBAAiB,WAEb,OADA5rK,KAAK2rK,UAAY,CAAE3rK,KAAK0xN,sBAAuB1xN,KAAK2xN,yBAC7C3xN,KAAK2rK,SAChB,EAEA+lD,oBAAqB,WACjB,IAAIvqN,EAAUqB,EAAW,CAAC,EAAG,CACzBkkK,OAAQ,CACJz7C,MAAOjxH,KAAKmH,QAAQulK,OAAOz7C,MAC3Bl6F,QAAS/2B,KAAKmH,QAAQulK,OAAO31I,QAC7B8nH,SAAU7+I,KAAKmH,QAAQulK,OAAO7tB,WAEnC7+I,KAAKmH,QAAQwkK,WACZimD,EAAgB,IAAIL,GAAepqN,GAKvC,OAJAyqN,EAAcv/E,OAAOryI,KAAK2M,OAAO2gK,WAAWlmK,SAE5CpH,KAAK4xN,cAAgBA,EAAchkD,aAE5B5tK,KAAK4xN,aAChB,EAEAD,sBAAuB,WACnB,IAAIxqN,EAAUqB,EAAW,CAAC,EAAG,CACzBssJ,WAAY90J,KAAKmH,QAAQ2tJ,YAC1B90J,KAAKmH,QAAQwkK,UAAUqmB,SACtB6/B,EAAkB,IAAIP,GAAenqN,GACrCmmK,EAAattK,KAAK2M,OAAO2gK,WACzBF,EAAcjmK,EAAQulK,OAAO3gK,MAC7ButC,EAAMt5C,KAAK2M,OAAO2sC,IAAIlyC,QAU1B,OARAkyC,EAAI9tC,IAAI,CACJghB,KAAM4gJ,EAAcE,EAAWrvF,GAC/B/4D,IAAKkoJ,EAAcE,EAAWpvF,KAGlC2zI,EAAgBx/E,OAAO/4F,GACvBt5C,KAAK6xN,gBAAkBA,EAAgBjkD,aAEhC5tK,KAAK6xN,eAChB,IAGJ7tD,EAAkBwtD,GAAgB,CAC9B9kD,OAAQ,CACJ3gK,MAAO,GAEXrG,KAAMwzL,EAAiB/2B,KACvBjxB,MAAO9lH,EACPgvI,OAAQnpE,EACR06E,UAAW,CACPe,OAAQ,CACJ3gK,MAjhCsB,GAmhC1BimL,QAAS,CACLtsL,KAAM66J,EACNx0J,MAAO+kN,GACP9kN,OAAQ8kN,GACRpkD,OAAQ,CACJ3gK,MAxhCkB,EAyhClBklH,MAAOowC,GAEXnwB,MAAO9lH,EACPgvI,OAAQlpE,MAKpB,IAAI4gI,GAAmBR,GAAevuN,OAAO,CACzC6oK,gBAAiB,WACb,IAAIzkK,EAAUqB,EAAW,CAAC,EAAG,CACzBssJ,WAAY90J,KAAKmH,QAAQ2tJ,YAC1B90J,KAAKmH,QAAQwkK,UAAUqmB,SACtBrmB,EAAY,IAAI2lD,GAAenqN,GAE/BmyC,EAAMt5C,KAAKstK,WAAWlmK,QACtB4/J,EAAYhnK,KAAK2M,OAAO2sC,IAAIlyC,QAOhC,OANAkyC,EAAI43F,MAAM81B,EAAW3hK,EAAG+lB,GACxBkuB,EAAI43F,MAAM81B,EAAWzxJ,EAAG27E,GACxBy6E,EAAUt5B,OAAO/4F,GAEjBt5C,KAAK2rK,UAAY,CAAEA,EAAUiC,cAEtB5tK,KAAK2rK,SAChB,IAGJ3H,EAAkB8tD,GAAkB,CAChCnmD,UAAW,CACPqmB,QAAS,CACLtsL,KAAM66J,EACNx0J,MAAO+kN,GACP9kN,OAAQ8kN,GACRpkD,OAAQ,CACJ3gK,MA3jCkB,EA4jClBklH,MAAOowC,GAEXtoH,OAAQ,CACJ7zB,KAAM,EACNsH,MAAO,OAMvB,IAAIulM,GAAa9kD,EAAWlqK,OAAO,CAC/BoF,KAAM,SAAShB,GACX8lK,EAAWllK,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAE9BnH,KAAKgyN,kBACA7qN,EAAQi5I,KAITpgJ,KAAKioL,cACLjoL,KAAK6qM,iBAJL7qM,KAAK6qM,eACL7qM,KAAKioL,eAMTjoL,KAAK++C,IAAM5uB,KACXnwB,KAAKmH,QAAQklK,cAAc5wB,YAAct0I,EAAQs1M,MACrD,EAEAuV,gBAAiB,WACbhyN,KAAKy2B,UAAY,IAAIhM,EAAQ6kJ,aAAa,CAAE98H,UAAU,EAAO7lB,MAAM,EAAOukH,MAAOjgD,EAAQugD,QAASxxI,KAAKmH,QAAQqqI,UAC/GxxI,KAAKm6C,OAAOn6C,KAAKy2B,UACrB,EAEAo0K,aAAc,WACV7qM,KAAKiyN,WAAa,IAAIhlD,EAAW,CAAEz6H,UAAU,EAAO06H,aAAa,EAAMvgJ,MAAM,EAAOosB,OAAQ,EAAGhtC,MAAO,GAAIC,OAAQ,KAClHhM,KAAKy2B,UAAU0jB,OAAOn6C,KAAKiyN,YAE3BjyN,KAAKkyN,mBAEDlyN,KAAKmH,QAAQ6qL,QAAQhlL,UACrBhN,KAAKmyN,QAAUnyN,KAAKoyN,gBACpBpyN,KAAKiyN,WAAW93K,OAAOn6C,KAAKmyN,SAEpC,EAEAD,iBAAkB,WACd,IAAI/qN,EAAUnH,KAAKmH,QACfq1M,EAAcr1M,EAAQq1M,YACtBj3C,EAAOp+J,EAAQo+J,UAAmB,IAATA,IAAmBA,EAAO,CAAC,GACxD,IAAI4T,EAAc,CACdzM,OAAQ,CACJz7C,MAAOs0C,EAAKt0C,OAASurF,EACrBzlL,QAASwuI,EAAKxuI,QACd8nH,SAAU0mB,EAAK1mB,WAGvB,OAAO7+I,KAAKqyN,YAAYl5C,IACpBn5K,KAAKsyN,kBAAkBn5C,EAAa5T,IACpCvlK,KAAKuyN,eACb,EAEA5mB,cAAe,WACX,IAAIxkM,EAAUnH,KAAKmH,QACf6qL,EAAU7qL,EAAQ6qL,aAAyB,IAAZA,IAAsBA,EAAU,CAAC,GACpE,IAAIwqB,EAAcr1M,EAAQq1M,YACtB9vC,EAASslB,EAAQtlB,OAGrB,YAH4C,IAAXA,IAAqBA,EAAS,CAAC,GAChEslB,EAAQh4I,YAAS2kG,EAEVn2I,EAAW,CAAC,EAAGwpL,EAAS,CAC3BtlB,OAAQ,CAAEz7C,MAAOy7C,EAAOz7C,OAASurF,GACjC7wC,UAAWxkK,EAAQwkK,UAAUqmB,SAErC,EAEAwgC,kBAAmB,WACf,IAAIrrN,EAAUnH,KAAKmH,QACnB,OAAOqB,EACH,CAAEwpL,QAAS,CAAEtsL,KAAMyB,EAAQ6qL,QAAQtsL,OACnCyB,EAAQwkK,UAEhB,EAEA0mD,YAAa,SAASl5C,GAClB,IAAIhyK,EAAUnH,KAAKmH,QASnB,OARIA,EAAQzB,OAASg5L,IAASv3L,EAAQ6qL,QAAQhlL,UAC1ChN,KAAKyyN,MAAQ,IAAIjB,GAAehpN,EAAW,CAAC,EAAG,CAC3CssJ,WAAY3tJ,EAAQq1M,YACpB7wC,UAAW3rK,KAAKwyN,qBACjBr5C,EAAahyK,EAAQo+J,OAExBvlK,KAAKiyN,WAAW93K,OAAOn6C,KAAKyyN,QAEzBzyN,KAAKyyN,KAChB,EAEAH,kBAAmB,SAASn5C,EAAa5T,GAYrC,OAXcvlK,KAAKmH,QACPzB,OAASg5L,KACjB1+L,KAAK0yN,gBAAkB,IAAInB,GAAe/oN,EAAW,CAAC,EAAG,CACrDkkK,OAAQ,CACJ3gK,MAAOw5J,EAAKv5J,SAEjBmtK,IAEHn5K,KAAKiyN,WAAW93K,OAAOn6C,KAAK0yN,kBAGzB1yN,KAAK0yN,eAChB,EAEAH,cAAe,WACX,IAAIprN,EAAUnH,KAAKmH,QAUnB,OATIA,EAAQzB,OAASo4L,KACjB99L,KAAK2yN,QAAU,IAAIb,GAAiBnvN,EAAEI,OAAO,CAAC,EAAG,CAAC2pK,OAAQvlK,EAAQulK,OAC9DtS,OAAQjzJ,EAAQ6qL,QAAQhlL,QAAUmkF,EAASF,EAC3C06E,UAAW3rK,KAAKwyN,oBAChBvxE,OAAQ95I,EAAQ85I,QAChB95I,EAAQmsL,KACR,CAACx+B,WAAY3tJ,EAAQmsL,KAAKx+B,YAAc3tJ,EAAQq1M,eACpDx8M,KAAKiyN,WAAW93K,OAAOn6C,KAAK2yN,UAEzB3yN,KAAK2yN,OAChB,EAEAP,cAAe,WACX,OAAO,IAAIrB,GAAiB/wN,KAAK2rM,gBACrC,EAEAinB,kBAAmB,WACX5yN,KAAKmH,QAAQs1M,QACbz8M,KAAK6yN,kBAAiB,EAE9B,EAEAC,gBAAiB,WACb9yN,KAAK6yN,kBAAiB,EAC1B,EAEAA,iBAAkB,SAASplN,GACvB,IAAIwlH,EAAWjzH,KAEf,GAAKA,KAAKmH,QAAQwkK,UAAU3+J,QAA5B,CAIA,IAAInB,EAAU7L,KAAKmyN,SAAWnyN,KAAK2yN,SAAW3yN,KAAKyyN,MAMnD,GAJI5mN,GAAWA,IAAY7L,KAAKyyN,OAC5BzyN,KAAKyyN,MAAMxxE,OAAOj0I,SAASS,GAG3B5B,EAAS,CACT,IAAI8/J,EAAY9/J,EAAQ8/J,UAEnBA,IACDA,EAAY9/J,EAAQ+/J,mBACVtqK,SAAQ,SAAUsD,GAAK,OAAOA,GAAKquH,EAASg/F,WAAWjnD,aAAapmK,EAAI,IAGtF+mK,EAAUrqK,SAAQ,SAAUsD,GAAK,OAAOA,GAAKA,EAAEoI,QAAQS,EAAO,GAClE,CAjBA,CAkBJ,EAEAw6K,YAAa,WACT,IAAI9gL,EAAUnH,KAAKmH,QACfgvK,EAAe3tK,EAAW,CAAC,EAAGrB,EAAQiuK,QAE1Cp1K,KAAKy2B,UAAU0jB,OAAO,IAAIy2H,EAAQzpK,EAAQ25B,KAAMq1I,GACpD,EAEA80B,iBAAkB,WACd,OAAOjrM,KAAKmH,QAAQ25B,IACxB,EAEAorK,YAAa,WACTlsM,KAAKihJ,OAAO95I,QAAQ+oB,IAAI,KAAMlwB,KAAK++C,KACnC/+C,KAAKosK,sBAAqB,GAC1BpsK,KAAK4yN,mBACT,EAEAzmB,qBAAsB,WAClBnsM,KAAKihJ,OAAO95I,QAAQ+oB,IAAI,KAAM,IAC9BlwB,KAAKosK,sBAAqB,GAC1BpsK,KAAK8yN,iBACT,EAEAhoD,eAAgB,WACZmC,EAAWllK,GAAG+iK,eAAevgK,KAAKvK,MAElC,IAAIg7I,EAASh7I,KAAKmH,QAAQ6zI,QAAU,CAAC,EACjC+3E,EAAY/yN,KAAKgzN,aAAezkF,GAAKc,SAASrvI,KAAKy2B,UAAU6iB,IAAI2uH,SAAU,CAC3Ev0I,KAAM,CACFu9F,MAAOowC,EACPtqI,QAAS,GAEb6oG,OAAQ,KACRob,OAAQA,EAAO7tI,OAAS6tI,IAG5Bh7I,KAAKgrK,aAAa+nD,EACtB,EAEA7oM,MAAO,SAASqJ,EAAQ5uB,GACpB,IAAI0yB,EAAOr3B,KAAKwmK,UAAU7hK,IAErB4uB,EAAOnpB,QAAQk2L,GAAmBjpK,IAAS1yB,GAAgB,gBAAXA,EAAEe,MACnDf,EAAEwE,gBAEV,EAEAsqK,KAAM,SAASlgJ,EAAQ5uB,GACnB,IAAI0yB,EAAOr3B,KAAKwmK,UAAU7hK,GAQ1B,OANK4uB,EAAOnpB,QAAQm2L,GAAmBlpK,KACnC9D,EAAO0/L,iBAAiB57L,EAAKiqL,YAAajqL,EAAKoqL,YAC/CzhN,KAAK4yN,sBAIF,CACX,EAEAtkM,IAAK,SAASiF,EAAQ5uB,GAClB4uB,EAAO2/L,oBACPlzN,KAAK8yN,kBAELv/L,EAAOnpB,QAAQo2L,GAAmBxgM,KAAKwmK,UAAU7hK,GACrD,EAEA6hK,UAAW,SAAS7hK,GAChB,IAAIwC,EAAUnH,KAAKmH,QAEnB,MAAO,CACH0E,QAASysH,EAAa3zH,GACtBm8B,KAAM35B,EAAQ25B,KACdmO,OAAQ9nC,EAAQ8nC,OAChBqyK,YAAan6M,EAAQ8nC,OAAO31B,MAC5BmoM,WAAYt6M,EAAQs6M,WAE5B,EAEA92C,aAAc,WACVsC,EAAWllK,GAAG4iK,aAAapgK,KAAKvK,MAChC,IAAImH,EAAUnH,KAAKmH,QAEnB,GAAInH,KAAKmH,QAAQ6F,QAAS,CACtB,IAAI+gK,EAAuBvlK,EAAW,CAClCwrB,UAAW7sB,EAAQ25B,MACpB35B,EAAQklK,eAEX6kC,GAAmClxM,KAAKihJ,OAAQ8sB,EACpD,CACJ,EAEArD,aAAc,WACV,IAAIz3C,EAAWjzH,KAEXmH,EAAUnH,KAAKmH,QACf2kK,EAAe3kK,EAAQ85I,OAEvB6qB,GACA9rK,KAAKihJ,OAAS6qB,EAAa,CACvB2wC,OAAQt1M,EAAQs1M,OAChBxtK,OAAQ9nC,EAAQ8nC,OAChB3kC,OAAQtK,KAAKoqK,YACbq3C,WAAYt6M,EAAQs6M,WACpBt6M,QAAS,CACLzB,KAAMyB,EAAQzB,KAGdssL,QAASxpL,EAAW,CAAEssJ,WAAY90J,KAAKmH,QAAQq1M,aAAex8M,KAAK2rM,iBACnEv2B,OAAQjuK,EAAQiuK,QAEpBzK,aAAc,WACV13C,EAAS03C,eACT13C,EAASonB,iBACTpnB,EAAS63C,iBAET,IAAI0I,EAAgBvgD,EAASguB,OAI7B,cAFOhuB,EAASguB,OAETuyB,CACX,IAEJxzK,KAAKmyN,QAAUnyN,KAAK0yN,gBAAkB1yN,KAAK2yN,QAAU3yN,KAAKyyN,MAAQ,KAClEzyN,KAAK4qK,aAELqC,EAAWllK,GAAG2iK,aAAangK,KAAKvK,KAExC,EAEA2sK,qBAAsB,SAASx/J,GAC3B,IAAIigK,EAAcjgK,EAAMyyH,OAAO7zH,MAC/B,OAAOwiI,GAAKc,SAASrvI,KAAKy2B,UAAU6iB,IAAI9tC,IAAI4hK,EAAc,GAAGnF,SAAU96J,EAC3E,IAGJ62J,EAAkB+tD,GAAY,CAC1B1lD,cAAe,CACX77I,KAAMsxK,GACNz0K,UAAW00K,GACXxmD,oBAAqBymD,IAEzBhQ,QAAS,CAAC,EACVrmB,UAAW,CACP3+J,SAAS,EACTglL,QAAS,CAAC,KAIlB,IAAImhC,GAAS,SAETC,GAASppD,EAAajnK,OAAO,CAC7BoF,KAAM,SAAShB,EAASojK,QACC,IAAjBA,IAA2BA,EAAe,CAAC,GAE/CP,EAAajiK,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAEhCnH,KAAKuqK,aAAeA,EAEf90I,EAAQz1B,KAAKmH,QAAQmG,SAAU,CAAE4jF,EAAK5lE,EAAO6lE,EAAQ/lE,EAAM+nM,OAC5DnzN,KAAKmH,QAAQmG,SAAWge,GAG5BtrB,KAAKqzN,mBAELrzN,KAAKszN,kBAAkBnsN,EAAQg3C,OAE/Bn+C,KAAKuzN,aACT,EAEAF,iBAAkB,WACd,IAAIlsN,EAAUnH,KAAKmH,QACfmG,EAAWnG,EAAQmG,SACnBkmN,EAAYrsN,EAAQ+pI,MACpBA,EAAQ5jI,EACR8sJ,EAASnpE,EAET3jF,IAAa6lN,GACbjiF,EAAQ9lH,EACDqK,EAAQnoB,EAAU,CAAE4jF,EAAKC,KAE5B+/C,EADAsiF,IAAcx2I,EACN5xD,EACDooM,IAAchoM,EACbF,EAEA2lE,EAEZmpE,EAAS9sJ,GACFkmN,IACHA,IAAcx2I,EACdo9E,EAASlpE,EACFsiI,IAAchoM,IACrB4uI,EAASjpE,IAIjBnxF,KAAKy2B,UAAY,IAAIw2I,EAAW,CAC5Bl0H,OAAQ5xC,EAAQ4xC,OAChBi/F,QAAS7wI,EAAQ6wI,QACjB8c,WAAY3tJ,EAAQ2tJ,WACpB4X,OAAQvlK,EAAQulK,OAChBtS,OAAQA,EACRlpB,MAAOA,EACPl3F,OAAQ7yC,EAAQ6yC,OAChBkzH,aAAa,IAGbltK,KAAKyzN,WACLzzN,KAAK0zN,eAAiB,IAAIzmD,EAAW,CACjC7S,OAAQA,EACRlpB,MAAOA,EACPl3F,OAAQ7yC,EAAQ6yC,OAChBkzH,aAAa,IAGjBltK,KAAK0zN,eAAiB1zN,KAAKy2B,UAG/Bz2B,KAAKm6C,OAAOn6C,KAAKy2B,UACrB,EAEA88L,YAAa,WACT,IAAIhpD,EAAevqK,KAAKsqK,aACpBnjK,EAAUnH,KAAKmH,QACfqrC,EAAWxyC,KAAKutI,aAChBomF,EAAe,IAAI9C,GAAa,CAChCr+K,SAAUA,EACVg/F,QAASrqI,EAAQqqI,QACjB4O,IAAKmqB,EAAanqB,KACnBmqB,GACCn8J,EAAOjH,EAAQiH,KAEfjH,EAAQkP,UACRjI,EAAOA,EAAKvH,MAAM,GAAGwP,WAKzB,IAFA,IAAIiF,EAAQlN,EAAK5G,OAERD,EAAI,EAAGA,EAAI+T,EAAO/T,IAAK,CAC5B,IAAIk3D,EAAWrwD,EAAK7G,GAChB8qH,EAAM5zD,EAASxvB,QAAU,CAAC,EAC1B+iJ,EAAU3/D,EAAI2/D,aAAyB,IAAZA,IAAsBA,EAAU,CAAC,GAChE,IAAInzC,EAAWxsB,EAAIwsB,SACfozC,EAAa5/D,EAAI4/D,WACjBl7J,EAAUs7F,EAAIt7F,QACd68L,EAAiBprN,EAAW,CAAEwE,SAA6B,IAApBglL,EAAQhlL,QAAmBtH,KAAM66J,GAAUyxB,UAC/E4hC,EAAe5jN,KAEtB,IAAI6jN,EAAcrrN,EAAW,CAAC,EAC1B,CACIwpL,QAAS4hC,EACTx+C,OAAQjuK,EAAQiuK,OAChBh1B,IAAKmqB,EAAanqB,IAClBmlB,KAAM5iK,EAAEI,OAAO,CAAC,EAAG,CAAC87I,SAAUA,GAC1B13I,EAAQo+J,MACZ+tB,KAAM3wL,EAAEI,OAAO,CAAC,EAAG,CAACg0B,QAASA,GACzB5vB,EAAQmsL,MACZv8J,QAASA,EACTs1I,cAAellK,EAAQklK,eAE3BllK,EAAQgoC,KACR8iJ,EACAxzH,EACA,CAAEuzH,QAAS7qL,EAAQ6qL,UAGvB2hC,EAAax5K,OAAO,IAAI43K,GAAW8B,GACvC,CAEAF,EAAaxjN,SACbnQ,KAAK0zN,eAAev5K,OAAOw5K,EAC/B,EAEApmF,WAAY,WACR,IAAIlb,EAAMryH,KAAKmH,QACXsqI,EAAcpf,EAAIof,YAClBnkI,EAAW+kH,EAAI/kH,SAInB,OAHgBA,IAAa6lN,IAAU1hF,IAAgBynD,EAAiB52B,aAChExrC,EAAQ2a,GAAeA,IAAgBynD,EAAiB52B,WAAa7sI,EAAQnoB,EAAU,CAAE8d,EAAME,IAG3G,EAEAwoM,SAAU,WACN,OAAO9zN,KAAKy2B,UAAU8e,SAAS,GAAGA,SAAS/tC,OAAS,CACxD,EAEAusN,SAAU,WACN,OAAO/zN,KAAK0zN,eAAen+K,SAAS,GAAGA,QAC3C,EAEA88F,OAAQ,SAAS20B,GACb,IAAI7/J,EAAUnH,KAAKmH,QACf6sN,EAAYhtD,EAAU5/J,QAErBpH,KAAK8zN,YAKN3sN,EAAQmG,WAAa6lN,IACrBnzN,KAAKi0N,sBAAsBD,GAC3Bh0N,KAAKs5C,IAAM06K,GAEXh0N,KAAKk0N,gBAAgBF,GAGrBh0N,KAAKyzN,YACLzzN,KAAKm+C,MAAMk0F,OAAO,IAAI00B,EAAI/mK,KAAKy2B,UAAU6iB,IAAI2kC,GAAIj+E,KAAKm+C,MAAM7E,IAAI4kC,GAAIl+E,KAAKy2B,UAAU6iB,IAAI6kC,GAAIn+E,KAAKm+C,MAAM7E,IAAI8kC,MAZ1Gp+E,KAAKs5C,IAAM06K,CAcnB,EAEAE,gBAAiB,SAASltD,GACtB,IACI7/J,EADMnH,KACQmH,QACdsvB,EAFMz2B,KAEUy2B,UAChBnpB,EAAWnG,EAAQmG,SACnBvB,EAAQ5E,EAAQ4E,MAChBC,EAAS7E,EAAQ6E,OACjBqpF,EAAM/nF,IAAa4jF,GAAO5jF,IAAa6jF,EAAS9rF,EAAIkQ,EACpDi9B,EAAWxyC,KAAKutI,aAChB4mF,EAAcntD,EAAU5/J,QACxBgtN,EAAeptD,EAAU5/J,QAEzBkG,IAAa8d,GAAQ9d,IAAage,IAClC8oM,EAAal2I,GAAKi2I,EAAYj2I,GAAK,GAGnC1rC,GAAYxmC,GACZooN,EAAah2I,GAAKg2I,EAAal2I,GAAKlyE,EACpCooN,EAAaljF,MAAMijF,EAAa5+M,EAAGkhB,EAAUtvB,QAAQizJ,UAC7C5nH,GAAYzmC,IACpBqoN,EAAaj2I,GAAKi2I,EAAan2I,GAAKlyE,EACpCqoN,EAAaljF,MAAMijF,EAAa9uN,EAAGoxB,EAAUtvB,QAAQ+pI,QAGzDz6G,EAAU47G,OAAO+hF,GAGjB,IAAI96K,GAFJ86K,EAAe39L,EAAU6iB,KAEFlyC,SAEnBD,EAAQogF,SAAWpgF,EAAQqgF,WAC3B4sI,EAAahkL,UAAUjpC,EAAQogF,QAASpgF,EAAQqgF,SAChD/wD,EAAU47G,OAAO+hF,IAGrB96K,EAAI+7C,EAAM,GAAK2xE,EAAU3xE,EAAM,GAC/B/7C,EAAI+7C,EAAM,GAAK2xE,EAAU3xE,EAAM,GAE/Br1F,KAAKs5C,IAAMA,CACf,EAEA26K,sBAAuB,SAASjtD,GAC5B,IACI7/J,EADMnH,KACQmH,QACdsvB,EAFMz2B,KAEUy2B,UAChB8wD,EAAUpgF,EAAQogF,QAClBC,EAAUrgF,EAAQqgF,QAClBz7E,EAAQ5E,EAAQ4E,MAChBC,EAAS7E,EAAQ6E,OACjBwmC,EAAWxyC,KAAKutI,aAChB6mF,EAAeptD,EAAU5/J,QAEzBorC,GAAYxmC,EACZooN,EAAah2I,GAAKg2I,EAAal2I,GAAKlyE,GAC5BwmC,GAAYzmC,IACpBqoN,EAAaj2I,GAAKi2I,EAAan2I,GAAKlyE,GAExC0qB,EAAU47G,OAAO+hF,GACjBA,EAAe39L,EAAU6iB,IAEzB7iB,EAAU47G,OAAO,IAAI00B,EACjBx/E,EAASC,EACTD,EAAU6sI,EAAaroN,QAASy7E,EAAU4sI,EAAapoN,UAE/D,EAEA0+J,aAAc,WACN1qK,KAAK8zN,YACL9pD,EAAajiK,GAAG2iK,aAAangK,KAAKvK,KAE1C,EAEAszN,kBAAmB,SAASn1K,GACxB,IAAI8zH,EAAezpK,EAAW,CAAC,EAAG,CAC9ByoH,MAAOqvC,EACPhzJ,SAAU4jF,EACVggD,MAAOjgD,GACR9yC,GACCrd,EAAOmxI,EAAanxI,KAExB,GAAKqd,IAA2B,IAAlBA,EAAMnxC,SAAsBmxC,EAAMrd,KAAhD,CAIA,GAAIg2F,EAAQm7C,IAAiBA,EAAajlK,QAAS,CAC/C,IAAI6rK,EAAgBxV,EAAY4O,GAC5B4G,EACA/3I,EAAO+3I,EAAc,CAAE/3I,KAAMA,IACtBmxI,EAAahhK,SACpB6vB,EAAO9gC,KAAKuqK,aAAat5J,OAAOiiK,KAAKjB,EAAahhK,OAAQ6vB,GAElE,CAEA9gC,KAAKm+C,MAAQ,IAAIyyH,EAAQ9vI,EAAMmxI,GAE/BjyK,KAAKq0N,oBAELr0N,KAAKs0N,0BAfL,CAgBJ,EAEAD,kBAAmB,WACfr0N,KAAKu0N,OAAS,IAAI9pM,EAAQ6kJ,aAAa,CACnC98H,UAAU,EACV7lB,MAAM,IAGV3sB,KAAKy2B,UAAU0jB,OAAOn6C,KAAKu0N,OAC/B,EAEAd,SAAU,WACN,OAAO3gN,QAAQ9S,KAAKmH,QAAQg3C,QAAwC,IAA/Bn+C,KAAKmH,QAAQg3C,MAAMnxC,SAAqBhN,KAAKmH,QAAQg3C,MAAMrd,KACpG,EAEAwzL,yBAA0B,WACRt0N,KAAKmH,QAEPg3C,MAAM7wC,WAAa6jF,GAC3BnxF,KAAKu0N,OAAOp6K,OAAOn6C,KAAK0zN,gBACxB1zN,KAAKu0N,OAAOp6K,OAAOn6C,KAAKm+C,SAExBn+C,KAAKu0N,OAAOp6K,OAAOn6C,KAAKm+C,OACxBn+C,KAAKu0N,OAAOp6K,OAAOn6C,KAAK0zN,gBAEhC,IAGJ1vD,EAAkBovD,GAAQ,CACtB9lN,SAAUge,EACVld,KAAM,GACNm5E,QAAS,EACTC,QAAS,EACTzuC,OAAQmqH,EAAW,GACnBlrB,QAASkrB,EAAW,GACpBwJ,OAAQ,CACJz7C,MAAOqvC,EACPv0J,MAAO,GAEXojC,KAAM,CACF6rG,OAAQk+C,EAAiB72B,QACzB7wB,QAAS,GAEbA,QAAS,EACTsjB,WAAY,GACZ96G,OAAQ,EACRg4I,QAAS,CAAC,EACVzsB,KAAM,CACFx5J,MAAO,GACPC,OAAQ,EACRgvI,OAAQk+C,EAAiB72B,QACzBtrI,QAAS,GAEbu8J,KAAM,CACF5tL,KAAMwzL,EAAiBh3B,OACvBhxB,MAAO5lH,EACPvf,MAAO,GACPC,OAAQ,MAIhB,IAAIwoN,GAAkB5sN,EAAM7E,OAAO,CAC/BoF,KAAM,WAEFnI,KAAKy0N,UAAY,EACrB,EAEAt9L,SAAU,SAASzxB,EAAM+wL,GACrBz2L,KAAKy0N,UAAU9yN,KAAK,CAChB+D,KAAMA,EACN+wL,YAAaA,GAErB,EAEArvI,OAAQ,SAASwjK,EAAWzjN,EAASojK,GAKjC,IAJA,IAEIt7H,EAFAo4K,EAAWrnN,KAAKy0N,UAChB/jN,EAAQ22M,EAAS,GAGZz9M,EAAM,EAAGA,EAAMy9M,EAAS7/M,OAAQoC,IAAO,CAC5C,IAAIwqH,EAAQizF,EAASz9M,GACrBqlC,EAASu1J,GAAmBomB,EAAWx2F,EAAMqiE,aAC7C,IAAIi+B,EAAalwB,GAAmBomB,EAAWvqB,IAE/C,GAAKpxJ,EAAOznC,OAASktN,EAAWltN,OAAU,EAAG,CACzCkJ,EAAQ0jH,EACR,KACJ,CACJ,CAEA,OAAO,IAAI1jH,EAAMhL,KAAKupC,EAAQ9nC,EAASojK,EAC3C,IAGJiqD,GAAgBxgN,QAAU,IAAIwgN,GAK9B,SAASG,GAAUn9I,GACf,IAAI3rE,EAAU8D,SAASkP,cAAc,OAKrC,OAJI24D,IACA3rE,EAAQwhB,UAAYmqD,GAGjB3rE,CACX,CAEA,SAAS+oN,GAAc/oN,GAEnB,IADA,IAAImI,EAAUnI,EACPmI,IAAYyW,EAAQulK,WAAWh8K,EAAS,aAC3CA,EAAUA,EAAQwS,WAGtB,OAAOxS,CACX,CAEA,IAAI6gN,GAAYjtN,EAAM7E,OAAO,CACzBoF,KAAM,SAASmsK,EAAOshB,EAAczuL,EAASivH,GAEzC,IAAI20C,EAAeuJ,EAAMzoK,QAEzB7L,KAAKmH,QAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAASA,GAC5CnH,KAAKs0K,MAAQA,EACbt0K,KAAKo2H,SAAWA,EAChBp2H,KAAK+qK,aAAeA,EACpB/qK,KAAK41L,aAAeA,EACpB51L,KAAK80N,UAAY90N,KAAK41L,wBAAwBnrK,EAAQq7J,iBAEtD9lL,KAAK+0N,cAEL/0N,KAAKgN,QAAUhN,KAAKmH,QAAQ6F,SAAW+9J,EAAap2I,aAEhD30B,KAAKgN,UACLhN,KAAKg1N,iBAELh1N,KAAKkwB,IAAIlwB,KAAK8kK,OAAO9kK,KAAKmH,QAAQ4U,MAAO/b,KAAK8kK,OAAO9kK,KAAKmH,QAAQm3B,KAElEt+B,KAAKi5H,aAEb,EAEAg8F,OAAQ,SAASrmI,GACb,OAAO5uF,KAAK41L,aAAahnG,OAASA,CACtC,EAEAomI,eAAgB,WACZ,IAAI7tN,EAAUnH,KAAKmH,QACfyF,EAAU5M,KAAK4M,QAAU+nN,GAAU,oCACvCt7F,GAAczsH,EAAS,CACnBsY,IAAK/d,EAAQ2W,OAAOoH,IACpBsH,KAAMrlB,EAAQ2W,OAAO0O,KACrBzgB,MAAO5E,EAAQ4E,MACfC,OAAQ7E,EAAQ6E,OAChBqoC,UAAW,QAGf,IAAInO,EAAYlmC,KAAKkmC,UAAYyuL,GAAU,qCAE3C30N,KAAKk1N,SAAWP,GAAU,gCAC1B30N,KAAKm1N,UAAYR,GAAU,gCAE3B/nN,EAAQqS,YAAYjf,KAAKk1N,UACzBtoN,EAAQqS,YAAYjf,KAAKm1N,WACzBvoN,EAAQqS,YAAYinB,GAEpB,IAAIlnB,EAAOhf,KAAKgf,KAAO21M,GAAU,wCACjCzuL,EAAUjnB,YAAYD,GAEtB,IAAIo2M,EAAap1N,KAAKo1N,WAAaT,GAAU,gDACzCU,EAAcr1N,KAAKq1N,YAAcV,GAAU,iDAC/CS,EAAWn2M,YAAY01M,MACvBU,EAAYp2M,YAAY01M,MAExBzuL,EAAUjnB,YAAYm2M,GACtBlvL,EAAUjnB,YAAYo2M,GAEtBr1N,KAAK+qK,aAAa9rJ,YAAYrS,GAC9B,IAAI0oN,EAAkBj8F,GAAcnzF,EAAW,CAAE,kBAAmB,mBAAoB,WACpFqvL,EAAmBl8F,GAAc+7F,EAAY,UAAUppN,OACvDwpN,EAAoBn8F,GAAcg8F,EAAa,UAAUrpN,OAE7D7E,EAAQ++B,UAAY,CAChBwmI,OAAQ,CACJlgJ,KAAM8oM,EAAgBG,gBACtBhpM,MAAO6oM,EAAgBI,mBAI/Br8F,GAAc+7F,EAAY,CACtBlwM,KAAMowM,EAAgBtpN,OAASupN,GAAoB,IAGvDl8F,GAAcg8F,EAAa,CACvBnwM,KAAMowM,EAAgBtpN,OAASwpN,GAAqB,IAIxD5oN,EAAQO,MAAM2R,QAAUlS,EAAQO,MAAM2R,OAC1C,EAEAm6G,WAAY,WAGJ,IAAItrG,GAFwB,IAA5B3tB,KAAKmH,QAAQwuN,aACb31N,KAAK41N,mBAAqB51N,KAAK61N,YAAYrsN,KAAKxJ,MAEhDi5H,GAAWj5H,KAAK+qK,eAAgBp9I,EAAM,CAAC,GAAQ20K,IAAetiM,KAAK41N,mBAAoBjoM,KAG3F3tB,KAAK81N,WAAanhD,GAASD,iBAAiBttH,OAAOpnD,KAAK+qK,aAAc,CAClE3wI,iBAAiB,EACjBtkB,MAAO9V,KAAK4gF,OAAOp3E,KAAKxJ,MACxB06B,KAAM16B,KAAK4iF,MAAMp5E,KAAKxJ,MACtB2L,IAAK3L,KAAK8iF,KAAKt5E,KAAKxJ,MACpB+1N,IAAK/1N,KAAKqgF,KAAK72E,KAAKxJ,MACpBggF,MAAOhgF,KAAKglF,OAAOx7E,KAAKxJ,MACxBgnF,aAAchnF,KAAKg2N,cAAcxsN,KAAKxJ,MACtCknF,cAAelnF,KAAKi2N,eAAezsN,KAAKxJ,MACxCk2N,WAAYl2N,KAAKm2N,YAAY3sN,KAAKxJ,OAE1C,EAEA+0N,YAAa,WACT,IACI5tN,EADMnH,KACQmH,QAEdmyC,EAHMt5C,KAEa41L,aACAhnG,KAAK2qH,YACxBzlC,EAAc9zK,KAAKs0K,MAAM/J,aAAa0J,KAEtCj0K,KAAK80N,WACLtsN,EAAWrB,EAAS,CAChBuP,IAAK4H,EAAUw1J,EAAa3sK,EAAQuP,KACpCyC,IAAKmF,EAAUw1J,EAAa3sK,EAAQgS,KACpC4C,KAAMuC,EAAUw1J,EAAa3sK,EAAQ4U,MACrCuiB,GAAIhgB,EAAUw1J,EAAa3sK,EAAQm3B,MAI3C,IAAIo0G,EAAQrZ,GAAcr5H,KAAK+qK,aAAc,CAAE,cAAe,eAC1DpxC,EAAc+Y,EAAM/Y,YACpBC,EAAa8Y,EAAM9Y,WAEvB55H,KAAKmH,QAAUqB,EAAW,CAAC,EAAG,CAC1BuD,MAAOutC,EAAIvtC,QACXC,OAAQstC,EAAIttC,SAlJK,GAmJjBgsI,QAAS,CACLxrH,KAAMmtG,EACNz0G,IAAK00G,GAET97G,OAAQ,CACJ0O,KAAM8sB,EAAI2kC,GAAK07C,EACfz0G,IAAKo0B,EAAI4kC,GAAK07C,GAElB79G,KAAM5U,EAAQuP,IACd4nB,GAAIn3B,EAAQgS,KACbhS,EACP,EAEAnF,QAAS,WASL,GARIhC,KAAK81N,aACL91N,KAAK81N,WAAW9zN,iBACThC,KAAK81N,YAGhBx7L,aAAat6B,KAAKo2N,YAClBp2N,KAAKq2N,OAAS,KAEVr2N,KAAK4M,QAAS,CAEV,IAAI+gB,EADR,GAAI3tB,KAAK41N,mBAELn8F,GAAaz5H,KAAK+qK,eAAgBp9I,EAAM,CAAC,GAAQ20K,IAAetiM,KAAK41N,mBAAoBjoM,IACzF3tB,KAAK41N,mBAAqB,KAG9B51N,KAAK+qK,aAAa3rJ,YAAYpf,KAAK4M,SACnC5M,KAAK4M,QAAU,IACnB,CACJ,EAEA0pN,gBAAiB,SAASriK,GAEtB,MAAO,CACH9uB,KAAMnlC,KAAK41L,aAAazuL,QACxB4U,KAAM/b,KAAKu2N,OAAOtiK,EAAMl4C,MACxBuiB,GAAIt+B,KAAKu2N,OAAOtiK,EAAM31B,IAE9B,EAEAk4L,aAAc,SAASpxN,EAAGjB,GACtB,IAAI47M,EAAU//M,KAAK41L,aAAahnG,KAAKt1C,IACjCm9K,EAAcz2N,KAAKs0K,MAAMoiD,oBAAoBtxN,EAAGjB,GACpD,OAAO47M,EAAQ5hF,cAAcs4F,EACjC,EAEA71I,OAAQ,SAASj8E,GACb,IAAIwC,EAAUnH,KAAKmH,QACfE,EAASixH,EAAa3zH,GAC1B,IAAI3E,KAAKq2N,QAAWhvN,EAApB,CAIA,IAAImlM,EAAS/hL,EAAQ4tG,iBAAiB1zH,GAEtC,GADa3E,KAAKw2N,aAAahqB,EAAOpnM,EAAGonM,EAAOroM,GAChD,CAIA,IAAIg3B,EAASy5L,GAAcvtN,GACvBsvN,EAAW32N,KAAKgf,KAAKk6G,wBACrB09F,GAAUz7L,GAAUqxK,EAAOpnM,GAAKuxN,EAASvxN,GAAKonM,EAAOpnM,GAAKuxN,EAASvxN,EAAIuxN,EAAS5qN,OACrEygM,EAAOroM,GAAKwyN,EAASxyN,GAAKqoM,EAAOroM,GAAKwyN,EAASxyN,EAAIwyN,EAAS3qN,OAE3EhM,KAAKs0K,MAAM4+C,oBACXlzN,KAAKq2N,OAAS,CACVQ,WAAY17L,EACZ6jD,cAAer6E,EAAES,EAAIT,EAAES,EAAEie,SAAW,EACpCuzM,OAAQA,EACR3iK,MAAO,CACHl4C,KAAM/b,KAAK8kK,OAAO39J,EAAQ4U,MAC1BuiB,GAAIt+B,KAAK8kK,OAAO39J,EAAQm3B,MAIhC,IAAIjH,EAAOr3B,KAAKs2N,gBAAgB,CAC5Bv6M,KAAM/b,KAAK8kK,OAAO39J,EAAQ4U,MAC1BuiB,GAAIt+B,KAAK8kK,OAAO39J,EAAQm3B,MAGxBt+B,KAAKoK,QAAQi3L,GAAchqK,KAC3Br3B,KAAKq2N,OAAS,KAxBlB,CANA,CAgCJ,EAEArxI,OAAQ,SAASrgF,GACb,IAAIw2B,GAEAA,EADAn7B,KAAKq2N,OACIr2N,KAAKq2N,OAAOQ,WAEZjC,GAAct8F,EAAa3zH,MAGpC8lB,EAAQpF,SAAS8V,EAAQ,kBAEjC,EAEAynD,MAAO,SAASj+E,GACZ,GAAK3E,KAAKq2N,OAAV,CAIA,IAAIhkG,EAAMryH,KACNszD,EAAQ++D,EAAIgkG,OACZlvN,EAAUkrH,EAAIlrH,QACdyuL,EAAevjE,EAAIujE,aACnB3hI,EAAQX,EAAMW,MACd5sD,EAASisD,EAAMujK,WACfxgN,EAAUu/K,EAAazuL,QAAQkP,QAC/B0F,EAAO/b,KAAK8kK,OAAO39J,EAAQ4U,MAC3BuiB,EAAKt+B,KAAK8kK,OAAO39J,EAAQm3B,IACzB5nB,EAAM1W,KAAK8kK,OAAO39J,EAAQuP,KAC1ByC,EAAMnZ,KAAK8kK,OAAO39J,EAAQgS,KAC1B4rB,EAAQuuB,EAAM0rB,cAAgBr6E,EAAES,EAAEie,SAClCyzM,EAAmB7iK,EAAMl4C,KAAzB+6M,EAAmC7iK,EAAM31B,GACzC4mJ,EAAOjxH,EAAM31B,GAAK21B,EAAMl4C,KACxBg0B,EAAQspF,GAAcr5H,KAAK4M,QAAS,SAASb,OAAS6pL,EAAajU,kBAAoB,GACvF7jK,EAASza,KAAKiT,MAAMyuB,EAAQgL,IAAU15B,GAAW,EAAI,GAEzD,GAAKhP,GAAWisD,EAAMsjK,OAAtB,CAIA,IAAIxB,EAAa/tN,GAAUojB,EAAQulK,WAAW3oL,EAAQ,iBAClDguN,EAAchuN,GAAUojB,EAAQulK,WAAW3oL,EAAQ,kBAEnDisD,EAAMsjK,QACN3iK,EAAMl4C,KAAO1Y,KAAKqT,IACdrT,KAAK8V,IAAIzC,EAAKqF,EAAO+B,GACrB3E,EAAM+rK,GAEVjxH,EAAM31B,GAAKj7B,KAAKqT,IACZu9C,EAAMl4C,KAAOmpK,EACb/rK,IAEIi8M,IAAe/+M,GAAag/M,GAAeh/M,GACnD49C,EAAMl4C,KAAO1Y,KAAKqT,IACdrT,KAAK8V,IAAIzC,EAAKqF,EAAO+B,GACrB3E,EAAM,GAEV86C,EAAM31B,GAAKj7B,KAAK8V,IAAI86C,EAAMl4C,KAAO,EAAGk4C,EAAM31B,MAClC82L,GAAc/+M,GAAag/M,IAAgBh/M,KACnD49C,EAAM31B,GAAKj7B,KAAKqT,IACZrT,KAAK8V,IAAIzC,EAAM,EAAG4nB,EAAKxgB,GACvB3E,GAEJ86C,EAAMl4C,KAAO1Y,KAAKqT,IAAIu9C,EAAM31B,GAAK,EAAG21B,EAAMl4C,OAG1Ck4C,EAAMl4C,OAAS+6M,GAAiB7iK,EAAM31B,KAAOw4L,IAC7C92N,KAAK06B,KAAKu5B,EAAMl4C,KAAMk4C,EAAM31B,IAC5Bt+B,KAAKoK,QAAQ2yE,GAAQ/8E,KAAKs2N,gBAAgBriK,IA9B9C,CArBA,CAqDJ,EAEA6uB,KAAM,WACF,GAAI9iF,KAAKq2N,OAAQ,CACb,IAAIQ,EAAa72N,KAAKq2N,OAAOQ,WACzBA,GACApsM,EAAQsC,YAAY8pM,EAAY,mBAGpC,IAAI5iK,EAAQj0D,KAAKq2N,OAAOpiK,MACxBj0D,KAAKkwB,IAAI+jC,EAAMl4C,KAAMk4C,EAAM31B,IAC3Bt+B,KAAKoK,QAAQk3L,GAAYthM,KAAKs2N,gBAAgBriK,WAEvCj0D,KAAKq2N,MAChB,CACJ,EAEAh2I,KAAM,SAAS17E,GACX,IACIwC,EADMnH,KACQmH,QACdyuL,EAFM51L,KAEa41L,aACnB4W,EAASxsM,KAAKs0K,MAAM45C,kBAAkBvpN,GACtCihL,EAAagQ,EAAarU,mBAAmB,IAAIzlD,EAAM0wE,EAAOpnM,EAAGwwL,EAAat8I,IAAI4kC,KAClFniE,EAAO/b,KAAK8kK,OAAO39J,EAAQ4U,MAC3BuiB,EAAKt+B,KAAK8kK,OAAO39J,EAAQm3B,IACzB5nB,EAAM1W,KAAK8kK,OAAO39J,EAAQuP,KAC1ByC,EAAMnZ,KAAK8kK,OAAO39J,EAAQgS,KAC1B+rK,EAAO5mJ,EAAKviB,EACZm3L,EAAMn3L,EAAOmpK,EAAO,EACpBjxH,EAAQ,CAAC,EACT8iK,EAA+B,IAAlBpyN,EAAEwb,MAAMwiE,MACrB7kE,EAASza,KAAKiT,MAAM48L,EAAMttB,GAE1B5lL,KAAKq2N,QAAUU,IAInB/2N,KAAKs0K,MAAM4+C,oBAENt9B,EAAazuL,QAAQw1K,WACtB7+J,IAGJm2C,EAAMl4C,KAAO1Y,KAAKqT,IACdrT,KAAK8V,IAAIzC,EAAKqF,EAAO+B,GACrB3E,EAAM+rK,GAGVjxH,EAAM31B,GAAKj7B,KAAKqT,IAAIu9C,EAAMl4C,KAAOmpK,EAAM/rK,GAEvCnZ,KAAK4gF,OAAOj8E,GAER3E,KAAKq2N,SACLr2N,KAAKq2N,OAAOpiK,MAAQA,EACpBj0D,KAAKoK,QAAQ2yE,GAAQ/8E,KAAKs2N,gBAAgBriK,IAC1Cj0D,KAAK8iF,QAEb,EAEA+yI,YAAa,SAASlxN,GAClB,IAAIsuH,EAAWjzH,KAEX+kC,EAAQta,EAAQylK,gBAAgBvrL,GAIpC,GAFA3E,KAAK4gF,OAAOj8E,GAER3E,KAAKq2N,OAAQ,CACb,IAAIpiK,EAAQj0D,KAAKq2N,OAAOpiK,MAExBtvD,EAAEwE,iBACFxE,EAAEy1B,kBAEE/2B,KAAKoU,IAAIstB,GAAS,IAClBA,GAzXQ,GA4XR/kC,KAAKmH,QAAQwuN,WAAWt/M,UACxB0uB,IAAU,GAGV/kC,KAAKi+H,OAAOl5F,IACZ/kC,KAAKoK,QAAQ2yE,GAAQ,CACjB53C,KAAMnlC,KAAK41L,aAAazuL,QACxB49B,MAAOA,EACPxb,cAAe5kB,EACfoX,KAAM/b,KAAKu2N,OAAOtiK,EAAMl4C,MACxBuiB,GAAIt+B,KAAKu2N,OAAOtiK,EAAM31B,MAI1Bt+B,KAAKo2N,YACL97L,aAAat6B,KAAKo2N,YAGtBp2N,KAAKo2N,WAAal9L,YAAW,WACzB+5F,EAASnwC,MACb,GAAGy/G,GACP,CACJ,EAEAyzB,cAAe,SAASrxN,GACpB,IAAIwC,EAAUnH,KAAKmH,QACfqY,EAAQ7a,EAAE2kB,QAAQ,GAGtB,GAFatpB,KAAKw2N,aAAah3M,EAAMwjE,MAAOxjE,EAAMyjE,OAElD,CAIAjjF,KAAKq2N,OAAS,CACVpiK,MAAO,CACHl4C,KAAM/b,KAAK8kK,OAAO39J,EAAQ4U,MAC1BuiB,GAAIt+B,KAAK8kK,OAAO39J,EAAQm3B,MAGhC,IAAIjH,EAAOr3B,KAAKs2N,gBAAgBt2N,KAAKq2N,OAAOpiK,OAExCj0D,KAAKoK,QAAQi3L,GAAchqK,GAC3Br3B,KAAKq2N,OAAS,KAEd1xN,EAAEwE,gBAbN,CAeJ,EAEAgtN,YAAa,WACLn2N,KAAKq2N,SACLr2N,KAAKoK,QAAQk3L,GAAYthM,KAAKs2N,gBAAgBt2N,KAAKq2N,OAAOpiK,eACnDj0D,KAAKq2N,OAEpB,EAEAJ,eAAgB,SAAStxN,GACrB,GAAK3E,KAAKq2N,OAAV,CAIA,IAAIhkG,EAAMryH,KACNs0K,EAAQjiD,EAAIiiD,MACZhhH,EAAQ++D,EAAIgkG,OACZlvN,EAAUkrH,EAAIlrH,QACdyuL,EAAevjE,EAAIujE,aACnB3hI,EAAQX,EAAMW,MACdqwE,EAAKgwC,EAAMoiD,oBAAoB/xN,EAAE2kB,QAAQ,GAAGlkB,EAAEie,UAAUje,EACxD0+H,EAAKwwC,EAAMoiD,oBAAoB/xN,EAAE2kB,QAAQ,GAAGlkB,EAAEie,UAAUje,EACxDonB,EAAOnpB,KAAKqT,IAAI4tH,EAAIR,GACpBr3G,EAAQppB,KAAK8V,IAAImrH,EAAIR,GAEzBn/H,EAAEwE,iBAEF8qD,EAAMl4C,KAAO65K,EAAarU,mBAAmB,IAAIzlD,EAAMtvG,KAAUrlB,EAAQuP,IAEzEu9C,EAAM31B,GAAKs3J,EAAarU,mBAAmB,IAAIzlD,EAAMrvG,KAAWtlB,EAAQgS,IAExEnZ,KAAK06B,KAAKu5B,EAAMl4C,KAAMk4C,EAAM31B,IAE5Bt+B,KAAKoK,QAAQ2yE,GAAQ/8E,KAAKs2N,gBAAgBriK,GArB1C,CAsBJ,EAEA6wG,OAAQ,SAASp8J,GACb,IAAI4Q,EAAQ5Q,EAMZ,OAJIA,aAAiBiG,OACjB2K,EAAQtZ,KAAK41L,aAAatU,cAAc54K,IAGrC4Q,CACX,EAEAi9M,OAAQ,SAASj9M,GACb,IAAI5Q,EAAQ4Q,EAQZ,OAPItZ,KAAK80N,YACLpsN,EAAQ1I,KAAK41L,aAAalU,WAAWpoK,IACzBtZ,KAAKmH,QAAQgS,MACrBzQ,EAAQ1I,KAAKmH,QAAQgS,KAItBzQ,CACX,EAEAsuN,MAAO,SAAStuN,GACZ,IAAIktL,EAAe51L,KAAK41L,aACpBt8K,EAAQtZ,KAAK8kK,OAAOp8J,GAExB,OAAOktL,EAAand,QAAQn/J,EAAOA,GAAO,EAC9C,EAEAohB,KAAM,SAAS3e,EAAMuiB,GACjB,IAAIn3B,EAAUnH,KAAKmH,QACfkP,EAAUrW,KAAK41L,aAAazuL,QAAQkP,QACpCyH,EAAS3W,EAAQ2W,OACjBk6H,EAAU7wI,EAAQ6wI,QAClB00B,EAASvlK,EAAQ++B,UAAUwmI,OAC3BlgJ,EAAOnW,EAAUioB,EAAKviB,EACtB0Q,EAAQpW,EAAU0F,EAAOuiB,EACzBva,EAAO,KAAO1N,EAAU,EAAI,GAE5BijC,EAAMt5C,KAAKg3N,MAAMxqM,GACjByqM,EAAgB3gN,EAAMgjC,EAAIv1B,GAAQjG,EAAO0O,KAAOwrH,EAAQxrH,MAE5D6sG,GAAcr5H,KAAKk1N,SAAU,CACzBnpN,MAAOkrN,IAEX59F,GAAcr5H,KAAKkmC,UAAW,CAC1B1Z,KAAMyqM,IAGV39K,EAAMt5C,KAAKg3N,MAAMvqM,GAEjB,IAAIyqM,EAAiB5gN,EAAMnP,EAAQ4E,OAASutC,EAAIv1B,GAAQjG,EAAO0O,KAAOwrH,EAAQxrH,OAC9E6sG,GAAcr5H,KAAKm1N,UAAW,CAC1BppN,MAAOmrN,IAGX,IAAI14I,EAAWr3E,EAAQ4E,MAAQmrN,EAC3B14I,IAAar3E,EAAQ4E,QACrByyE,GAAYkuF,EAAOjgJ,OAGvB4sG,GAAcr5H,KAAKm1N,UAAW,CAC1B3oM,KAAMgyD,IAEV66C,GAAcr5H,KAAKkmC,UAAW,CAC1Bn6B,MAAO1I,KAAK8V,IAAIhS,EAAQ4E,OAASkrN,EAAgBC,GAAkBxqD,EAAOjgJ,MAAO,IAEzF,EAEAyD,IAAK,SAASnU,EAAMuiB,GAChB,IAAIn3B,EAAUnH,KAAKmH,QACfuP,EAAM1W,KAAK8kK,OAAO39J,EAAQuP,KAC1ByC,EAAMnZ,KAAK8kK,OAAO39J,EAAQgS,KAC1B00K,EAAYr1D,EAAWx4H,KAAK8kK,OAAO/oJ,GAAOrF,EAAKyC,GAC/Cg+M,EAAU3+F,EAAWx4H,KAAK8kK,OAAOxmI,GAAKuvJ,EAAY,EAAG10K,GAErDhS,EAAQ6F,SACRhN,KAAK06B,KAAKmzJ,EAAWspC,GAGzBhwN,EAAQ4U,KAAO/b,KAAKu2N,OAAO1oC,GAC3B1mL,EAAQm3B,GAAKt+B,KAAKu2N,OAAOY,EAC7B,EAEAl5F,OAAQ,SAASl5F,GACb,IAAI59B,EAAUnH,KAAKmH,QACfuP,EAAM1W,KAAK8kK,OAAO39J,EAAQuP,KAC1ByC,EAAMnZ,KAAK8kK,OAAO39J,EAAQgS,KAC1Bi+M,EAAOjwN,EAAQwuN,WAAWllL,KAC1B10B,EAAO/b,KAAK8kK,OAAO39J,EAAQ4U,MAC3BuiB,EAAKt+B,KAAK8kK,OAAO39J,EAAQm3B,IACzB21B,EAAQ,CAAEl4C,KAAMA,EAAMuiB,GAAIA,GAC1Bw4L,EAAWtuN,EAAW,CAAC,EAAGyrD,GAqB9B,GAnBIj0D,KAAKq2N,SACLpiK,EAAQj0D,KAAKq2N,OAAOpiK,OAGpBmjK,IAAS9rM,IACT2oC,EAAMl4C,KAAOy8G,EACTA,EAAWz8G,EAAOgpB,EAAO,EAAGzG,EAAK,GACjC5nB,EAAKyC,IAITi+M,IAAShsM,IACT6oC,EAAM31B,GAAKk6F,EACPA,EAAWl6F,EAAKyG,EAAOkvB,EAAMl4C,KAAO,EAAG5C,GACvCzC,EACAyC,IAIJ86C,EAAMl4C,OAAS+6M,EAAS/6M,MAAQk4C,EAAM31B,KAAOw4L,EAASx4L,GAEtD,OADAt+B,KAAKkwB,IAAI+jC,EAAMl4C,KAAMk4C,EAAM31B,KACpB,CAEf,EAEAmS,KAAM,SAAS1L,EAAOynK,GAClB,IAAIrlM,EAAUnH,KAAKmH,QACfuP,EAAM1W,KAAK8kK,OAAO39J,EAAQuP,KAC1ByC,EAAMnZ,KAAK8kK,OAAO39J,EAAQgS,KAC1B4C,EAAO/b,KAAK8kK,OAAO39J,EAAQ4U,MAC3BuiB,EAAKt+B,KAAK8kK,OAAO39J,EAAQm3B,IACzB21B,EAAQ,CAAEl4C,KAAMA,EAAMuiB,GAAIA,GAC1Bw4L,EAAWtuN,EAAW,CAAC,EAAGyrD,GAG1B59C,EADMrW,KAAK41L,aAAazuL,QACVkP,QACd2iC,EAAS3zC,GAAKgR,EAAU,IAAM,KAC9BogK,EAAUz2K,KAAK41L,aAAanf,UAC5B4gD,EAAWh0N,KAAKoU,IAAIg/J,EAAQz9H,GAAUwzJ,EAAOnnM,IAC7C2K,EAAOymK,EAAQ1qK,QACfuB,EAAWgJ,EAAM+gN,EAAWrnN,EAAM,GAClC+xK,EAAWzrK,EAAMhJ,EAAWy3B,GAC5Bi9I,EAAW1rK,GAAO,EAAIhJ,GAAYy3B,GAiBtC,GAfI/kC,KAAKq2N,SACLpiK,EAAQj0D,KAAKq2N,OAAOpiK,OAGxBA,EAAMl4C,KAAOy8G,EACTA,EAAWz8G,EAAOgmK,EAAU,EAAGzjJ,EAAK,GACpC5nB,EAAKyC,GAGT86C,EAAM31B,GAAKk6F,EACPA,EAAWl6F,EAAK0jJ,EAAU/tH,EAAMl4C,KAAO,EAAG5C,GAC1CzC,EACAyC,GAGA86C,EAAMl4C,OAAS+6M,EAAS/6M,MAAQk4C,EAAM31B,KAAOw4L,EAASx4L,GAEtD,OADAt+B,KAAKkwB,IAAI+jC,EAAMl4C,KAAMk4C,EAAM31B,KACpB,CAEf,EAEAl0B,QAAS,SAAShI,EAAMi1B,GACpB,OAAQr3B,KAAKo2H,UAAYp2H,KAAKs0K,OAAOlqK,QAAQhI,EAAMi1B,EACvD,IAGJ2sI,EAAkB6wD,GAAW,CACzB7nN,SAAS,EACT2oN,WAAY,CACRllL,KAAM,QAEV/5B,IAAKoqJ,EACL3nJ,IAAKi+G,IAGT,IAAI7Q,GAAU0xF,GAAYl1M,OAAO,CAC7B0K,KAAM,SAAS0uH,GACX,GAAKA,GAAUA,EAAMyvE,iBAAkB5rM,KAAKmlJ,UAAYnlJ,KAAKmlJ,WAAahpB,GAA1E,CAIA,IAAIh1H,EAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAASg1H,EAAMh1H,QAAQ83J,SACrD9sE,EAASgqC,EAAMyvE,gBAEfz5G,GACAnyF,KAAKmlJ,SAAWhpB,EAChB87E,GAAYlwM,GAAG0F,KAAKlD,KAAKvK,KAAM,CAC3Bm8H,MAAOA,EACPhqC,OAAQA,GACThrF,EAASg1H,IAEZn8H,KAAK0N,MAZT,CAcJ,EAEAA,KAAM,kBACK1N,KAAKmlJ,SACZ8yD,GAAYlwM,GAAG2F,KAAKnD,KAAKvK,KAC7B,IAGAs3N,GAAgBrf,GAAYl1M,OAAO,CACnCoF,KAAM,SAASgwK,EAAUhxK,GACrB8wM,GAAYlwM,GAAGI,KAAKoC,KAAKvK,KAAMm4K,EAAS5N,aAAcpjK,GAEtDnH,KAAKm4K,SAAWA,EAChBn4K,KAAKu4M,cAAgBpgC,EAAS5N,aAAat5J,MAC/C,EAEAwnM,OAAQ,SAASr1E,EAAQopE,GACrB,IAAI+qB,EAAgBl5L,GAAK+kG,GAAQ,SAASjH,GACtC,IAAI8iC,EAAU9iC,EAAMltF,OAAOgwH,QAG3B,QAFeA,IAA+B,IAApBA,EAAQjyJ,QAGtC,IAEA,GAAIuqN,EAAc/vN,OAAS,EAAG,CAC1B,IAAI20H,EAAQo7F,EAAc,GACtB18C,EAAO76K,KAAKm4K,SAASyd,aAAand,QAAQt8C,EAAMypD,YAEhDzzF,EAASq6G,EAASxsM,KAAKw3N,YAAYhrB,EAAQ3xB,GAAQ76K,KAAKy3N,eAAet7F,EAAO0+C,GAElF76K,KAAKyN,KAAK,CACN0kF,OAAQA,EACR4sE,QAAQ,EACR37B,OAAQA,EACR8oC,SAAU/vC,EAAM+vC,SAChBwrD,aAAc13N,KAAKu4M,cAAcrlC,KAAKlzK,KAAKmH,QAAQwwN,eAAgBx7F,EAAM+vC,UACzEj9H,OAAQjvC,KAAKm4K,SAASlpI,QACvBjvC,KAAKmH,QACZ,CACJ,EAEAqwN,YAAa,SAASr7F,EAAO0+C,GAWzB,OAVW76K,KAAKm4K,SAASyd,aAMfzuL,QAAQqrC,WACd2pF,EAAM/2H,EAAIy1K,EAAKt8F,SAASn5E,GAGrB,CACH+2H,MAAOA,EACP+U,MAXQ,CACRx+F,WAAY,OACZF,SAAU,UAWlB,EAEAilL,eAAgB,SAASt7F,EAAO0+C,GAC5B,IAAIvhI,EAAM6iF,EAAM0sE,MAAMj6G,KAAK2qH,YACvB/mK,EAAWxyC,KAAKm4K,SAASyd,aAAazuL,QAAQqrC,SAC9C+rC,EAASjlC,EAAIilC,SACbq5I,EAAa/8C,EAAKt8F,SAatB,MAAO,CACH49C,MAPA3pF,EACc,IAAIspF,EAAMv9C,EAAOn5E,EAAGwyN,EAAWzzN,GAE/B,IAAI23H,EAAM87F,EAAWxyN,EAAGm5E,EAAOp6E,GAK7C+sI,MAdQ,CACRx+F,WAAY,SACZF,SAAU,UAclB,IAGJwxH,EAAkBszD,GAAe,CAC7BK,eAAgB,UAGpB,IAAIE,GAAoB/7K,GAAU/4C,OAAO,CACrC+yC,MAAO,WACH,IACIjqC,EADM7L,KACQ6L,QACd1E,EAFMnH,KAEQmH,QAGlB,GAFW0E,EAAQ8xH,OAET,CACN39H,KAAKg5C,OAAS7xC,EAAQ6xC,OACtB,IAAI7T,EAAOh+B,EAAQqrC,SAAWj9B,EAAIlQ,EAE9ByyN,EAAY93N,KAAK83N,UAAY,IAAI3+B,GAAc,EAAG,GACtD2+B,EAAU3yL,GAAQ83J,GAElBpxL,EAAQ8nC,UAAUA,KACb5D,MAAM+nL,EAAU1yN,EAAG0yN,EAAU3zN,GAEtC,MACInE,KAAKq2I,OAEb,EAEAvjG,KAAM,SAASuiD,GACX,IAAIklC,EAAS9vG,EAAQwlK,iBAAiBjwL,KAAK83N,UAAU1yN,EAAG,EAAGiwF,GACvDmlC,EAAS/vG,EAAQwlK,iBAAiBjwL,KAAK83N,UAAU3zN,EAAG,EAAGkxF,GAE3Dr1F,KAAK6L,QAAQ8nC,UAAUA,KAClB5D,MAAMwqF,EAAQC,EAAQx6H,KAAKg5C,QAEpC,EAEAq9F,MAAO,WACHv6F,GAAU/zC,GAAGsuI,MAAM9rI,KAAKvK,MACxBA,KAAK6L,QAAQ8nC,UAAU,KAC3B,IAGJqwH,EAAkB6zD,GAAmB,CACjCvwM,SAAUw1K,KAGd9mD,GAAiBhiI,QAAQmjB,SAAS4mK,GAAK85B,IAEvC,IAAIE,GAAkBj8K,GAAU/4C,OAAO,CACnC+yC,MAAO,WACH,IAAIyoC,EAASv+E,KAAKu+E,OAASv+E,KAAK6L,QAAQ8xH,OAAOp/C,SAC/Cv+E,KAAK6L,QAAQ8nC,UAAUA,KAClB5D,MAAMktJ,GAAaA,GAAa1+G,GAEzC,EAEAzrC,KAAM,SAASuiD,GACXr1F,KAAK6L,QAAQ8nC,UAAUA,KAClB5D,MAAMslD,EAAKA,EAAKr1F,KAAKu+E,QAE9B,IAGJylF,EAAkB+zD,GAAiB,CAC/B5hF,OAAQ,mBAGZH,GAAiBhiI,QAAQmjB,SAAS8mK,GAAQ85B,IAE1C,IAAIC,GAAkBl8K,GAAU/4C,OAAO,CACnC+yC,MAAO,WACH91C,KAAKi4N,OAASj4N,KAAK6L,QAAQkrB,UAC3B/2B,KAAK6L,QAAQkrB,QAAQ,EACzB,EAEA+b,KAAM,SAASuiD,GACXr1F,KAAK6L,QAAQkrB,QAAQs+D,EAAMr1F,KAAKi4N,OACpC,IAGJj0D,EAAkBg0D,GAAiB,CAC/B1wM,SAAU,IACV6uH,OAAQ,WAGZH,GAAiBhiI,QAAQmjB,SAAS4lK,GAAQi7B,IAE1C,IAAIE,GAAep8K,GAAU/4C,OAAO,CAChC+yC,MAAO,WACH91C,KAAK6L,QAAQ8nC,UAAUA,KAClB5D,MAAMktJ,GAAaA,GAAaj9L,KAAKmH,QAAQo3E,QAEtD,EAEAzrC,KAAM,SAASuiD,GACXr1F,KAAK6L,QAAQ8nC,UAAUA,KAClB5D,MAAMslD,EAAKA,EAAKr1F,KAAKmH,QAAQo3E,QAEtC,IAGJylF,EAAkBk0D,GAAc,CAC5B/hF,OAAQ,iBACR7uH,SAAUw1K,KAGd9mD,GAAiBhiI,QAAQmjB,SAASynK,GAAKs5B,IAEvC,IAAIC,GAAmB1iB,GAAa1yM,OAAO,CACvCoN,OAAQ,WACJslM,GAAa1tM,GAAGoI,OAAO5F,KAAKvK,MAE5BA,KAAKstM,gBACT,EAEAK,cAAe,SAASr6B,EAAYmxB,EAAeiC,GAU/C,OAAO,IATKjC,EAAct3L,QAGZywL,GACEuP,GAEAd,IAGK/4B,EAAYmxB,EAAeiC,EACpD,EAEA2H,gBAAiB,WAEb,OADaoH,GAAa1tM,GAAGsmM,gBAAgB9jM,KAAKvK,MACpCoe,OAAOpe,KAAKutM,UAC9B,EAEAyI,mBAAoB,SAASttM,EAAOk9L,GAChC,GAAIA,IAAkBnyL,GAAM,CACxB,IAAI2kN,EAAe,CACfhzN,EAAGsD,EAAMtD,EACTjB,EAAGuE,EAAMvE,GAQb,OANKixE,GAASgjJ,EAAahzN,KACvBgzN,EAAahzN,EAAI,GAEhBgwE,GAASgjJ,EAAaj0N,KACvBi0N,EAAaj0N,EAAI,GAEdi0N,CACX,CACJ,IAiCJ,SAASC,GAAwBtQ,EAAa9zJ,EAAO9sD,GACjD,IAAIiH,EAAO,GACPu5M,EAAO1zJ,EAAM0zJ,KACbC,EAAO3zJ,EAAM2zJ,KAEbthC,GAAYn/K,GAAW,CAAC,GAAGm/K,SAC3BA,IACIA,EAASE,OAAS,IAClBmhC,GAAQrhC,EAASE,QAGjBF,EAASlsG,MAAQ,IACjBwtI,GAAQthC,EAASlsG,QAIzB,IAAIk+I,GAAoBnxN,GAAW,CAAC,GAAGmxN,iBACnCvzL,EAAQi0F,EAAes/F,EA7C/B,SAAuB5hN,EAAKyC,GACxB,IAAI4lB,EAAOzoB,EAAM6C,EAAMzC,EAAKiqJ,EAAoB,GAEhD,GAAa,IAAT5hI,EAAY,CACZ,GAAY,IAAR5lB,EACA,MAAO,GAGX4lB,EAAO17B,KAAKoU,IAAI0B,EACpB,CAEA,IAAI42B,EAAQ1sC,KAAKwmC,IAAI,GAAIxmC,KAAKyN,MAAMzN,KAAK8tB,IAAI4N,GAAQ17B,KAAK8tB,IAAI,MAC1Du1I,EAAgBpwJ,EAAOyoB,EAAOgR,EAAQ4wH,GAa1C,OAAOrqJ,EAAMy5B,GAVT22H,EAAgB,SACE,GACXA,EAAgB,SACL,GACXA,EAAgB,SACL,EAEA,GAGgB/F,EAC1C,CAmBkD8F,CAAckhD,EAAMC,GAAQ,IACtE0Q,GAAoB,IACpBvzL,EAAQ6iL,EAAOD,GAGnB,IAAK,IAAIviN,EAAIuiN,EAAMviN,GAAKwiN,EAAMxiN,GAAK2/B,EAC/B32B,EAAKzM,KAAK,CACNyD,EACA2iN,EAAY3iN,KAIpB,OAAOgJ,CACX,CA5DA5F,EAAW2vN,GAAiB9vN,UAAWglM,IA6EvC,IAAIkrB,GAAgB,SAAU7pK,GAAa,OAAO,SAAU2jE,GACpD,IAAIqoE,EAAcroE,EAAIqoE,YAEtB,MAAO,CAAGjuD,OAAQiuD,EAAYt1L,EAAGsnI,OAAQrpI,KAAK8tB,IAAIupK,EAAYhsI,IACrE,CAAK,EA+BN,IAAI8pK,GAAqB,SAAU9pK,GAAa,OAAO,SAAU2jE,GACzD,IAAIqoE,EAAcroE,EAAIqoE,YAEtB,MAAO,CAAGjuD,OAAQiuD,EAAYt1L,EAAGsnI,OAAQguD,EAAYhsI,GAC5D,CAAK,EAoCN,SAAS+pK,GAAalR,EAAcvrB,GAIhC,IAHA,IAAI2rB,EAAO90M,OAAOukH,UACdwwF,EAAO/0M,OAAOiuJ,UAETv5J,EAAI,EAAGA,EAAIggN,EAAa//M,OAAQD,IAAK,CAC1C,IACI8qH,EAAM2pE,EADEurB,EAAahgN,IAErBklI,EAASpa,EAAIoa,OACbC,EAASra,EAAIqa,OAEbt6H,SAASq6H,IAAsB,OAAXA,GAAmBr6H,SAASs6H,IAAsB,OAAXA,IAC3Di7E,EAAOtkN,KAAKqT,IAAI+1H,EAAQk7E,GACxBC,EAAOvkN,KAAK8V,IAAIszH,EAAQm7E,GAEhC,CAEA,MAAO,CAAED,KAAMA,EAAMC,KAAMA,EAC/B,CAiBA,IAAI8Q,GAAgB,SAAUhqK,GAAa,OAAO,SAAU2jE,GACpD,IAAIqoE,EAAcroE,EAAIqoE,YAEtB,MAAO,CAAGjuD,OAAQiuD,EAAYt1L,EAAGsnI,OAAQguD,EAAYhsI,GAC5D,CAAK,EAEFiqK,GAAiB,SAAUjqK,GAAa,OAAO,SAAU2jE,GACrD,IAAIqoE,EAAcroE,EAAIqoE,YAEtB,MAAO,CAAGjuD,OAAQppI,KAAK8tB,IAAIupK,EAAYt1L,GAAIsnI,OAAQguD,EAAYhsI,GACtE,CAAK,EA8GN,IAAIkqK,GAAgB,SAAUlqK,GAAa,OAAO,SAAU2jE,GACpD,IAAIqoE,EAAcroE,EAAIqoE,YAEtB,MAAO,CAAGjuD,OAAQppI,KAAK8tB,IAAIupK,EAAYt1L,GAAIsnI,OAAQrpI,KAAK8tB,IAAIupK,EAAYhsI,IAC/E,CAAK,EA4BN,IAAImqK,GAAkB,CAAC,EACvBA,GAAgB94B,IArRhB,SAAqC/jK,GACjC,IAAI70B,EAAU60B,EAAQ70B,QAGlBiH,EAiBR,SAAmBikH,GACf,IAAI82F,EAAe92F,EAAI82F,aACnBhiN,EAAUkrH,EAAIlrH,QAEdogN,EAAe4B,IACnB,IAAKtB,GAAiBN,EAAcpgN,EAAQ4e,OACxC,OAAO,KAGX,IAAI2sH,EAAQ40E,GAAeC,EAAcgR,GAAcpxN,EAAQ4e,QAC3DyhM,EAAQ90E,EAAM80E,MACdC,EAAY/0E,EAAM+0E,UAClBnsM,EAAQo3H,EAAMp3H,MACdqsM,EAAOj1E,EAAMi1E,KACbC,EAAOl1E,EAAMk1E,KACb3zJ,EAAQ,CAAE0zJ,KAAMA,EAAMC,KAAMA,GAEhC,GAAItsM,EAAQ,EAAG,CAGX,IAAIpW,EAAI7B,KAAK+lN,IAAI3B,GACbxrM,EAAIurM,EAER,OAAO6Q,IAAwB,SAAUjzN,GAAK,OAAOF,EAAI7B,KAAK+lN,IAAIntM,EAAI7W,EAAI,GAAG6uD,EAAO9sD,EAAQisL,UAChG,CAEA,OAAO,IACX,CA5Ce0lC,CAAU,CAAE3P,aAFJntL,EAAQmtL,aAEwBhiN,QAASA,IAC5D,OAAIiH,EACOzL,EAAEI,OAAO,CAAC,EAAGoE,EAEhB,CAACzB,KAAM,cACP0I,KAAMA,IAGP,IACX,EAyQAyqN,GAAgB74B,IA9NhB,SAAgChkK,GAC5B,IAAI70B,EAAU60B,EAAQ70B,QAGlBiH,EAWR,SAAmBikH,GACf,IAAI82F,EAAe92F,EAAI82F,aACnBhiN,EAAUkrH,EAAIlrH,QAEdurI,EAAQ40E,GAAe6B,IAAgBqP,GAAmBrxN,EAAQ4e,QAClEyhM,EAAQ90E,EAAM80E,MACdC,EAAY/0E,EAAM+0E,UAClBnsM,EAAQo3H,EAAMp3H,MACdqsM,EAAOj1E,EAAMi1E,KACbC,EAAOl1E,EAAMk1E,KACb3zJ,EAAQ,CAAE0zJ,KAAMA,EAAMC,KAAMA,GAEhC,GAAItsM,EAAQ,EACR,OAAO+8M,IAAwB,SAAUjzN,GAAK,OAAOoiN,EAAQpiN,EAAIqiN,CAAW,GAAGxzJ,EAAO9sD,EAAQisL,WAGlG,OAAO,IACX,CA5Be2lC,CAAU,CAAE5P,aAFJntL,EAAQmtL,aAEwBhiN,QAASA,IAC5D,OAAIiH,EACOzL,EAAEI,OAAO,CAAC,EAAGoE,EAEhB,CAACzB,KAAM,cACP0I,KAAMA,IAGP,IACX,EAkNAyqN,GAAgB54B,IA1KhB,SAAqCjkK,GACjC,IAAI70B,EAAU60B,EAAQ70B,QAGlBiH,EAuBR,SAAmBikH,GACf,IAAI82F,EAAe92F,EAAI82F,aACnBhiN,EAAUkrH,EAAIlrH,QAEdogN,EAAe4B,IACnB,IAAKtB,GAAiBN,EAAc,KAChC,OAAO,KAGX,IAAI70E,EAAQ40E,GAAeC,EAAcoR,GAAexxN,EAAQ4e,QAC5DyhM,EAAQ90E,EAAM80E,MACdC,EAAY/0E,EAAM+0E,UAClBnsM,EAAQo3H,EAAMp3H,MACd24C,EAAQwkK,GAAalR,EAAcmR,GAAcvxN,EAAQ4e,QAE7D,GAAIzK,EAAQ,EAAG,CAGX,IAAIpW,EAAIsiN,EACJvrM,EAAIwrM,EAER,OAAO4Q,IAAwB,SAAUjzN,GAAK,OAAOF,EAAI7B,KAAK8tB,IAAI/rB,GAAK6W,CAAG,GAAGg4C,EAAO9sD,EAAQisL,UAChG,CAEA,OAAO,IACX,CAhDe4lC,CAAU,CAAE7P,aAFJntL,EAAQmtL,aAEwBhiN,QAASA,IAC5D,OAAIiH,EACOzL,EAAEI,OAAO,CAAC,EAAGoE,EAEhB,CAACzB,KAAM,cACP0I,KAAMA,IAGP,IACX,EA8JAyqN,GAAgB34B,IArHhB,SAAuClkK,GACnC,IAAI70B,EAAU60B,EAAQ70B,QAElBiH,EAWR,SAAmBikH,GACf,IAAIlrH,EAAUkrH,EAAIlrH,QACdgiN,EAAe92F,EAAI82F,aAEnBf,GAAUjhN,EAAQisL,WAAa,CAAC,GAAGg1B,QAAU1lB,GAE7Ct0L,EAAO+5M,GAAuBgB,EADtB,CAAE3iC,OAAQ4hC,EAAQhuI,MAAOguI,IACkBoQ,GAAmBrxN,EAAQ4e,OAAQqiM,GAE1F,GAAIh6M,EAAK5G,OAAS,EACd,OAAO4G,EAGX,OAAO,IACX,CAxBe6qN,CAAUj9L,GACrB,OAAI5tB,EACOzL,EAAEI,OAAO,CAAC,EAAGoE,EAEhB,CAACzB,KAAM,cACP0I,KAAMA,IAGP,IACX,EA0GAyqN,GAAgB14B,IAzFhB,SAAoCnkK,GAChC,IAAI70B,EAAU60B,EAAQ70B,QAGlBiH,EAWR,SAAoBikH,GAChB,IAAI82F,EAAe92F,EAAI82F,aACnBhiN,EAAUkrH,EAAIlrH,QAEdw9C,GAASx9C,EAAQisL,WAAa,CAAC,GAAGzuI,MAClCq3I,EAAcw8B,GAAmBrxN,EAAQ4e,OACzC2sH,EAAQg2E,GAAoBS,IAAgBntB,EAAar3I,GACzDrpC,EAAQo3H,EAAMp3H,MACdysM,EAAcr1E,EAAMq1E,YACpBJ,EAAOj1E,EAAMi1E,KACbC,EAAOl1E,EAAMk1E,KACb3zJ,EAAQ,CAAE0zJ,KAAMA,EAAMC,KAAMA,GAEhC,GAAItsM,EAAQ,EAGR,OAAO+8M,GAAwBtQ,EAAa9zJ,EAAO9sD,EAAQisL,WAG/D,OAAO,IACX,CA/Be8lC,CAAW,CAAE/P,aAFLntL,EAAQmtL,aAEyBhiN,QAASA,IAC7D,OAAIiH,EACOzL,EAAEI,OAAO,CAAC,EAAGoE,EAEhB,CAACzB,KAAM,cACP0I,KAAMA,IAGP,IACX,EA6EAyqN,GAAgBz4B,IArDhB,SAA+BpkK,GAC3B,IAAI70B,EAAU60B,EAAQ70B,QAGlBiH,EAiBR,SAAoBikH,GAChB,IAAI82F,EAAe92F,EAAI82F,aACnBhiN,EAAUkrH,EAAIlrH,QAEdogN,EAAe4B,IACnB,IAAKtB,GAAiBN,EAAc,KAChC,OAAO,KAGX,IAAI70E,EAAQ40E,GAAeC,EAAcqR,GAAczxN,EAAQ4e,QAC3DyhM,EAAQ90E,EAAM80E,MACdC,EAAY/0E,EAAM+0E,UAClBnsM,EAAQo3H,EAAMp3H,MACd24C,EAAQwkK,GAAalR,EAAciR,GAAmBrxN,EAAQ4e,QAElE,GAAIzK,EAAQ,EAAG,CAGX,IAAIpW,EAAI7B,KAAK+lN,IAAI3B,GACbxrM,EAAIurM,EACR,OAAO6Q,IAAwB,SAAUjzN,GAAK,OAAOF,EAAI7B,KAAKwmC,IAAIzkC,EAAG6W,EAAI,GAAGg4C,EAAO9sD,EAAQisL,UAC/F,CAEA,OAAO,IACX,CAzCe+lC,CAAW,CAAEhQ,aAFLntL,EAAQmtL,aAEyBhiN,QAASA,IAC7D,OAAIiH,EACOzL,EAAEI,OAAO,CAAC,EAAGoE,EAEhB,CAACzB,KAAM,cACP0I,KAAMA,IAGP,IACX,EA0CA,IAAIgrN,GAAa1e,GAAa33M,OAAO,CACjC4yK,WAAY,WACR31K,KAAKu2M,WAAa,CAAC,EACnBv2M,KAAKw2M,WAAa,CAAC,EAEnBx2M,KAAKq5N,kBAAoB,IAAI1oB,GAC7B3wM,KAAKs5N,kBAAoB,IAAI3oB,EACjC,EAEAxgM,OAAQ,SAASkrM,GACb,IAAIpoF,EAAWjzH,UACD,IAAVq7M,IAAoBA,EAAQr7M,KAAKq7M,OAErCr7M,KAAKivC,OAAS,GAAG7wB,OAAQpe,KAAK86M,gBAC9B96M,KAAKoiN,wBAGL,IADA,IAAIlF,EAAel9M,KAAKi9M,oBACf11M,EAAI,EAAGA,EAAI8zM,EAAM7zM,OAAQD,IAAK,CACnC,IAAIqnF,EAAOysH,EAAM9zM,GACbujN,EAAa5N,EAAatuH,EAAKznF,QAAQ/E,MAAQ,YAAc,GACjE6wH,EAASkpF,YAAY2O,GACrB,IAAIyO,EAAiBtmG,EAASmqF,oBAAoB0N,GAE7CyO,IAILtmG,EAASumG,mBACLh1B,GAAmB+0B,EAAgBj6B,IACnC1wG,GAGJqkC,EAASwmG,uBACLj1B,GAAmB+0B,EAAgBh6B,IACnC3wG,GAGJqkC,EAASymG,kBACLl1B,GAAmB+0B,EAAgBt7B,IACnCrvG,GAER,CAEA5uF,KAAK25N,WAAWte,EACpB,EAEAvB,YAAa,SAASxlC,EAAO1lF,GACzB5uF,KAAKq5N,kBAAkBlyK,OAAOmtH,EAAMqhC,aACpC31M,KAAKs5N,kBAAkBnyK,OAAOmtH,EAAMshC,aAEpC8E,GAAa3yM,GAAG+xM,YAAYvvM,KAAKvK,KAAMs0K,EAAO1lF,EAClD,EAEAmrH,WAAY,SAAS50K,GACjB,IAAIyiK,EAAWziK,EAAKh+B,QAAQ/E,KAE5Bs4M,GAAa3yM,GAAGgyM,WAAWxvM,KAAKvK,KAAMmlC,GAElCA,EAAKh+B,QAAQqrC,UACbxyC,KAAKs5N,kBAAkBzjL,MAAM+xJ,UACtB5nM,KAAKw2M,WAAW5O,KAEvB5nM,KAAKq5N,kBAAkBxjL,MAAM+xJ,UACtB5nM,KAAKu2M,WAAW3O,IAGvBziK,IAASnlC,KAAK02K,cACP12K,KAAK02K,MAGZvxI,IAASnlC,KAAK22K,cACP32K,KAAK22K,KAEpB,EAEAwmC,eAAgB,SAASluK,GACrB,IAAI9nC,EAAUnH,KAAKmH,QACf8uM,EAAYhnK,EAAOinK,MACnB0jB,EAAe,GAAGx7M,OAAOjX,EAAQ+uM,OACjCA,EAAQ73K,GAAKu7L,GAAc,SAAS10N,GAAK,OAAOA,EAAE9C,OAAS6zM,CAAW,IAAG,GACzEE,EAAYlnK,EAAOmnK,MACnByjB,EAAe,GAAGz7M,OAAOjX,EAAQivM,OACjCA,EAAQ/3K,GAAKw7L,GAAc,SAAS30N,GAAK,OAAOA,EAAE9C,OAAS+zM,CAAW,IAAG,GAEzEqW,GADQrlN,EAAQk0M,OAAS,CAAE,CAAC,IACJ,GAAGj5M,MAAQ,UAGvC,OAFgB8zM,GAAS,CAAC,GAAGtnH,OAASwnH,GAAS,CAAC,GAAGxnH,MAAQ49H,CAG/D,EAEAgN,mBAAoB,SAASvqL,EAAQ2/C,GAC7B3/C,EAAOznC,OAAS,GAChBxH,KAAK85M,YACD,IAAIrE,GAAaz1M,KAAM,CAAEivC,OAAQA,EAAQiL,KAAM00C,EAAKznF,QAAQ+yC,OAC5D00C,EAGZ,EAEA6qI,uBAAwB,SAASxqL,EAAQ2/C,GACjC3/C,EAAOznC,OAAS,GAChBxH,KAAK85M,YACD,IAAIqe,GAAiBn4N,KAAM,CAAEivC,OAAQA,EAAQiL,KAAM00C,EAAKznF,QAAQ+yC,OAChE00C,EAGZ,EAEA8qI,kBAAmB,SAASzqL,EAAQ2/C,GAC5B3/C,EAAOznC,OAAS,GAChBxH,KAAK85M,YACD,IAAInD,GAAY32M,KAAM,CAAEivC,OAAQA,EAAQiL,KAAM00C,EAAKznF,QAAQ+yC,OAC3D00C,EAGZ,EAEAkrI,aAAc,SAAS3yN,EAASqrC,EAAUw3J,GAYtC,IAXA,IA2BI+vB,EA3BAnyB,EAAWzgM,EAAQ/E,KACnB43N,EAAYxnL,EAAWxyC,KAAKw2M,WAAax2M,KAAKu2M,WAC9CsX,EAAUr7K,EAAWxyC,KAAKs5N,kBAAoBt5N,KAAKq5N,kBACnD3vC,EAAclhL,EAAW,CAAE6N,SAAUm8B,GAAYxyC,KAAKuqK,aAAanqB,KAAOj5I,EAAS,CAAEqrC,SAAUA,IAC/FynL,EAAQ91B,GAAiBza,EAAYhkL,KAAMu8L,IAC3C6rB,EAAeD,EAAQrtN,QACvBwtN,EAAmBiM,EAAQ,CAAEvjN,IAAK,GAAKyC,IAAK,GAAM,CAAEzC,IAAK,EAAGyC,IAAK,GACjE86C,EAAQ45J,EAAQrtN,MAAMonM,IAAakmB,GAAgBE,EACnDkM,EAAc,CAAExwC,EAAYhzK,IAAKgzK,EAAYvwK,KAC7C81B,EAASjvC,KAAKivC,OAETy3J,EAAW,EAAGA,EAAWz3J,EAAOznC,OAAQk/L,IAAY,CACzD,IAAIjC,EAAgBx1J,EAAOy3J,GACvByzB,EAAiB11B,EAAcjyJ,EAAW,QAAU,SACxD,GAAK2nL,IAAmBzwC,EAAYtnL,MAAwB,IAAd4nM,IAAoBmwB,EAAiB,CAC/E,IAAIC,EAAkB//B,GAAarmL,QAAQ8mL,UAAU2J,EAAe,GAAG/J,YACvEw/B,EAAYv4N,KAAKy4N,EAAgB5nL,EAAW,IAAM,MAElD,KACJ,CACJ,CAEkB,IAAdw3J,GAAmB8jB,IACnB75J,EAAMv9C,IAAMrT,KAAKqT,IAAIu9C,EAAMv9C,IAAKo3M,EAAap3M,KAC7Cu9C,EAAM96C,IAAM9V,KAAK8V,IAAI86C,EAAM96C,IAAK20M,EAAa30M,MAKjD,IAAK,IAAI5R,EAAI,EAAGA,EAAI2yN,EAAY1yN,OAAQD,IACpC,GAAI2yN,EAAY3yN,aAAcoH,KAAM,CAChCorN,GAAe,EACf,KACJ,CAYJ,IAAI50L,EAAO,IARPg/J,GAAiBza,EAAYhkL,KAAM+6J,KAAWipB,EAAYhkL,MAAQq0N,EACvDtvM,EAAQ2/J,cACZ6vC,EACIxvM,EAAQugK,gBAERvgK,EAAQ69J,aAGCr0H,EAAMv9C,IAAKu9C,EAAM96C,IAAKuwK,EAAa1pL,KAAKuqK,cAGhE,GAFAplI,EAAK6kK,UAAYA,EAEbpC,EAAU,CACV,GAAIoyB,EAAUpyB,GACV,MAAM,IAAI52L,OAAQwhC,EAAW,IAAM,KAAO,mBAAqBo1J,EAAW,uBAE9EoyB,EAAUpyB,GAAYziK,CAC1B,CAIA,OAFAnlC,KAAK45M,WAAWz0K,GAETA,CACX,EAEAw0L,WAAY,SAASte,GASjB,IARA,IAAIpoF,EAAWjzH,KAEXmH,EAAUnH,KAAKmH,QACfkzN,EAAe,GAAGj8M,OAAOjX,EAAQ+uM,OACjCyG,EAAQ,GACR2d,EAAe,GAAGl8M,OAAOjX,EAAQivM,OACjCwG,EAAQ,GAEHhzM,EAAM,EAAGA,EAAMywN,EAAa7yN,OAAQoC,IAAO,CAChD,IAAIkiN,EAAW74F,EAAS2oF,SAASye,EAAazwN,GAAKglF,MAC/Cn5D,EAAQq2L,EAAUzQ,IAClBsB,EAAMh7M,KAAKsxH,EAAS6mG,aAAaO,EAAazwN,IAAM,EAAOA,GAEnE,CAEA,IAAK,IAAIgxK,EAAQ,EAAGA,EAAQ0/C,EAAa9yN,OAAQozK,IAAS,CACtD,IAAI2/C,EAAatnG,EAAS2oF,SAAS0e,EAAa1/C,GAAOhsF,MACnDn5D,EAAQ8kM,EAAYlf,IACpBuB,EAAMj7M,KAAKsxH,EAAS6mG,aAAaQ,EAAa1/C,IAAQ,EAAMA,GAEpE,CAEA56K,KAAK02K,MAAQ12K,KAAK02K,OAASimC,EAAM,GACjC38M,KAAK22K,MAAQ32K,KAAK22K,OAASimC,EAAM,EACrC,EAEA6G,eAAgB,SAASnvC,EAAO3vK,EAAGspN,GAQ/B,IAPA,IAAIzhB,EAASl4B,EAAM45C,kBAAkBvpN,GACjCw3H,EAAQ,IAAIL,EAAM0wE,EAAOpnM,EAAGonM,EAAOroM,GACnC81M,EAAUj6M,KAAKs4K,KACf9wK,EAASyyM,EAAQzyM,OACjBgzN,EAAU,GACVC,EAAU,GAELlzN,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAI49B,EAAO80K,EAAQ1yM,GACf8R,EAAS8rB,EAAKh+B,QAAQqrC,SAAWioL,EAAUD,EAC3CvvL,EAAe9F,EAAK6kJ,SAAS7tD,GACZ,OAAjBlxF,GACA5xB,EAAO1X,KAAKspC,EAEpB,CAEIuvL,EAAQhzN,OAAS,GAAKizN,EAAQjzN,OAAS,GACvC8sK,EAAMlqK,QAAQ6jN,EAAW,CACrBpiN,QAASysH,EAAa3zH,GACtB4kB,cAAe5kB,EACfS,EAAG6/L,GAAkBu1B,GACrBr2N,EAAG8gM,GAAkBw1B,IAGjC,EAEArM,kBAAmB,SAASjpL,EAAMh+B,GAC9B,IAAIqrC,EAAWrN,EAAKh+B,QAAQqrC,SACxB8lI,EAAOt4K,KAAK08M,UAAU18M,KAAKq7M,OAC3B/hM,GAASk5B,EAAW8lI,EAAKn0K,EAAIm0K,EAAKlzK,GAAGuQ,QAAQwvB,GAEjDu1L,GAAoB16N,KAAKmH,QAASmS,EAAOk5B,EAAUrrC,GACnDuzN,GAAoB16N,KAAK66M,gBAAiBvhM,EAAOk5B,EAAUrrC,EAC/D,EAEAg7M,iBAAkB,SAASh7M,EAAS8nC,GAChC,IAAIk6K,EAAenpN,KAAKmpN,aAAa3/M,KAAKxJ,KAAMivC,EAAO31B,OAEnD85K,EAAY+uB,GAAiB0W,GAAiB1xN,EAAQzB,KAAM,CAC5DyB,QAASA,EACTgiN,aAAcA,IASlB,OANI/1B,IAEAA,EAAU8iB,MAAQjnK,EAAOinK,MACzB9iB,EAAUgjB,MAAQnnK,EAAOmnK,OAGtBhjB,CACX,EAEA+1B,aAAc,SAASziB,GAMnB,IALA,IAEI5vL,EAAS,GACT2tL,EAAgBzkM,KAAKivC,OAAOy3J,GAEvB3L,EAAU,EAAGA,EAAU0J,EAAcr2L,KAAK5G,OAAQuzL,IAAW,CAClE,IAAI3sL,EANOpO,KAMS86L,UAAU2J,EAAe1J,GAC7CjkL,EAAOnV,KAAK,CAAEo5L,QAASA,EAASL,YAAatsL,EAAKssL,aACtD,CAEA,OAAO5jL,CACX,IAGJ,SAAS4jN,GAAoB/L,EAAe3kB,EAAWx3J,EAAUrrC,GAC7D,IAAIuiL,EAAe,GAAGtrK,OAAOo0B,EAAWm8K,EAAcvY,MAAQuY,EAAczY,OAAQlM,GACpFxhM,EAAWkhL,EAAaviL,EAC5B,CAEA68J,EAAkBo1D,GAAY,CAC1BljB,MAAO,CAAC,EACRE,MAAO,CAAC,IAGZ5tM,EAAW4wN,GAAW/wN,UAAWm7M,IAEjC,IAAImX,GAAa3wD,EAAajnK,OAAO,CACjCoF,KAAM,SAASO,EAAOkgK,EAAQzhK,GAC1B6iK,EAAajiK,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAEhCnH,KAAK0I,MAAQA,EACb1I,KAAK4oK,OAASA,CAClB,EAEAz4J,OAAQ,WACAnQ,KAAK4qM,YAA8B,IAAjB5qM,KAAKgN,UAG3BhN,KAAK4qM,WAAY,EAEjB5qM,KAAKioL,cACT,EAEAA,YAAa,WACT,IAAI7S,EAASp1K,KAAKmH,QAAQiuK,OACtB7K,EAAevqK,KAAK6oM,MAAMt+B,aAC1BqwD,EAAY56N,KAAK+qM,aAAa31B,GAElC,GAAIA,EAAOpoK,UAAY4tN,GAA2B,IAAdA,GAAkB,CAClD,GAAIxlD,EAAO9nK,WAAa2jF,GAAUmkF,EAAO9nK,WAAa60L,GAC7C/sB,EAAOnkD,QACRmkD,EAAOnkD,MAAQ0zC,GAAc3kK,KAAKmH,QAAQ8pH,QAEzCmkD,EAAOtgB,aACRsgB,EAAOtgB,WAAa90J,KAAKmH,QAAQ8pH,WAElC,CACH,IAAI4pG,EAActwD,EAAa2rB,MAAM7C,eAAeje,OACpDA,EAAOnkD,MAAQmkD,EAAOnkD,OAAS4pG,EAAY5pG,MAC3CmkD,EAAOtgB,WAAasgB,EAAOtgB,YAAc+lE,EAAY/lE,UACzD,CAEA90J,KAAKs0B,MAAQ,IAAIs8I,EAAQgqD,EAAWpyN,EAAW,CAAC,EAAG4sK,EAAQ,CACvDlkC,MAAOjgD,EACPmpE,OAAQ,GACR9nE,UAAW,CACP5sF,KAAMq3L,GACNz3J,MAAOtlC,KAAK86N,kBAEhB96N,KAAK2tK,aAET3tK,KAAKm6C,OAAOn6C,KAAKs0B,MACrB,CACJ,EAEAy2K,aAAc,SAAS5jM,GACnB,IAAI0xK,EAAgBxV,EAAYl8J,GAEhC,OAAI0xK,EACOA,EAAc74K,KAAK2tK,aAGvB3tK,KAAK6oM,MAAMt+B,aAAat5J,OAAOiiK,KAAK/rK,EAAQ8J,OAAQjR,KAAK0I,MACpE,EAEA2pI,OAAQ,SAAS20B,GACbhnK,KAAKmQ,SACLnQ,KAAKs5C,IAAM0tH,EACXhnK,KAAKsrM,aACT,EAEAA,YAAa,WACT,IACIyvB,EADM/6N,KACcmH,QAAQiuK,OAC5B9gJ,EAFMt0B,KAEMs0B,MACZs0I,EAAS5oK,KAAK4oK,OAAOxhK,QACrB4zN,EAAiBD,EAAcv8I,SAC/B47C,EAAQwuC,EAAON,SAEnB,GAAIh0I,EAAO,CACP,IAEI2mM,EAFAC,EAAc5mM,EAAMglB,IAAIttC,SACxBmvN,EAAa7mM,EAAMglB,IAAIvtC,QAG3B,GAAIgvN,EAAcztN,WAAa2jF,EAC3B23E,EAAOt8I,OAASjpB,KAAKoU,KAAKmxJ,EAAOt8I,OAAS4uM,GAAe,GAAKA,EAC9DD,EAAKryD,EAAOzsC,MAAM/B,GAClB9lG,EAAM+9G,OAAO,IAAI00B,EAAIk0D,EAAG71N,EAAG61N,EAAG92N,EAAI+2N,EAAc,EAAGD,EAAG71N,EAAG61N,EAAG92N,SACzD,GAAI42N,EAAcztN,WAAa60L,GAClCv5B,EAAOt8I,OAASs8I,EAAOt8I,OAAS4uM,EAAc,EAC9CD,EAAKryD,EAAOzsC,MAAM/B,GAClB9lG,EAAM+9G,OAAO,IAAI00B,EAAIk0D,EAAG71N,EAAG61N,EAAG92N,EAAI+2N,EAAc,EAAGD,EAAG71N,EAAG61N,EAAG92N,QACzD,CACH,IAAI85E,GACJg9I,EAAKryD,EAAOxhK,QAAQ62H,OAAO+8F,GAAgB7+F,MAAM/B,IAC1Ch1H,GAAKwjK,EAAOrqF,OAAOn5E,GACtB64E,EAAKg9I,EAAG71N,EAAI+1N,EACZ7mM,EAAMm9G,YAAcnmH,IAEpB2yD,EAAKg9I,EAAG71N,EAAI+1N,EACZ7mM,EAAMm9G,YAAcrmH,GAExBkJ,EAAM+9G,OAAO,IAAI00B,EAAI9oF,EAAIg9I,EAAG92N,EAAI+2N,EAAaD,EAAG71N,EAAG61N,EAAG92N,GAC1D,CACJ,CACJ,EAEAwmK,aAAc,WACV,IAAI13C,EAAWjzH,KAGX4oK,EADM5oK,KACO4oK,OACbzhK,EAFMnH,KAEQmH,QAMlB,GAJA6iK,EAAajiK,GAAG4iK,aAAapgK,KAAKvK,MAElCA,KAAKkxM,qCAEDlxM,KAAK0I,MACL,GAAIvB,EAAQ85I,OAAQ,CAChB,IAAI1e,GAAcqmC,EAAOrmC,WAAa,KAAO,IACzC0e,EAAS95I,EAAQ85I,OAAO,CACxBirB,SAAUlsK,KAAKksK,SACfztG,SAAUz+D,KAAKy+D,SACf/1D,MAAO1I,KAAK0I,MACZumC,OAAQjvC,KAAKivC,OACbpiB,WAAY7sB,KAAK6sB,WACjB0xD,OAAQ,IAAI46G,GAAcvwB,EAAOrqF,OAAOn5E,EAAGwjK,EAAOrqF,OAAOp6E,GACzDmoB,OAAQs8I,EAAOt8I,OACf+7I,YAAaO,EAAOP,YACpB9lC,WAAYA,EACZC,SAAUD,EAAaqmC,EAAOxuC,MAC9BjzH,QAASA,EACTmD,OAAQtK,KAAKoqK,YACbO,aAAc,WACV,IAAIp2G,EAAQ,IAAIk8E,GAGhB,OAFAxd,EAASmoG,oBAAoB7mK,GAEtBA,CACX,IAGA0sF,GACAjhJ,KAAKihJ,OAAO9mG,OAAO8mG,EAE3B,MACIjhJ,KAAKo7N,oBAAoBp7N,KAAKihJ,OAG1C,EAEAm6E,oBAAqB,SAAS7mK,GAC1B,IACIq0G,EADM5oK,KACO4oK,OACbzhK,EAFMnH,KAEQmH,QACdk0N,EAAgBl0N,EAAQulK,QAAU,CAAC,EACnCA,EAAS2uD,EAActvN,MAAQ,EAAI,CACnC6zH,OAAQ,CACJ3O,MAAOoqG,EAAcpqG,MACrBllH,MAAOsvN,EAActvN,MACrBgrB,QAASskM,EAActkM,QACvB8nH,SAAUw8E,EAAcx8E,WAE5B,CAAC,EACD5tB,EAAQ9pH,EAAQ8pH,MAChBv9F,EAAO,CACPu9F,MAAOA,EACPl6F,QAAS5vB,EAAQ4vB,SAEjBkqH,EAASjhJ,KAAK2tM,cAAc/kC,EAAQpgK,EAAW,CAC/CkrB,KAAMA,EACNksG,OAAQ,CACJ7oG,QAAS5vB,EAAQ4vB,SAErBijB,OAAQ7yC,EAAQ6yC,QACjB0yH,IAEHn4G,EAAMpa,OAAO8mG,GAET4jD,GAAmB19L,IACnBotD,EAAMpa,OAAOn6C,KAAK4sK,sBAAsB3rB,EAAQ,CAC5CwwD,UAAWxgF,EACXwkB,aAAc/hH,GACflrB,EAAW,CACV+1E,OAAQ,CAAEqqF,EAAOrqF,OAAOn5E,EAAGwjK,EAAOrqF,OAAOp6E,GACzCkkK,YAAaO,EAAOP,YACpB/7I,OAAQs8I,EAAOt8I,OACf4oH,WAAW,GACZ/tI,EAAQ2lK,UAEnB,EAEA6gC,cAAe,SAAS/kC,EAAQzhK,GAC5B,OAAIA,EAAQm0N,cACD,IAAIn7F,GAAO,IAAIi5D,GAAe,IAAID,GAAcvwB,EAAOrqF,OAAOn5E,EAAGwjK,EAAOrqF,OAAOp6E,GAAIykK,EAAOt8I,QAASnlB,GAGvGsjB,EAAQo/I,aAAa71J,QAAQ81J,WAAWlB,EAAQzhK,EAC3D,EAEA0jK,gBAAiB,WACb,IACI1jK,EADMnH,KACQmH,QACdo3E,EAFMv+E,KAEO4oK,OAAOrqF,OAExB/1E,EAAWrB,EAAS,CAChBmrF,UAAW,CACP/T,OAAQ,CAAEA,EAAOn5E,EAAGm5E,EAAOp6E,GAC3BmhC,MAAOtlC,KAAK86N,kBAIpB9wD,EAAajiK,GAAG8iK,gBAAgBtgK,KAAKvK,KACzC,EAEA4rK,gBAAiB,SAASzkK,GACtB,IAAIwkK,EAAY3rK,KAAKmH,QAAQwkK,WAAa,CAAC,EACvCe,EAASf,EAAUe,QAAU,CAAC,EAElC,OAAO1sK,KAAK2tM,cAAc3tM,KAAK4oK,OAAQpgK,EAAW,CAAC,EAAGrB,EAAS,CAC3DusB,KAAM,CACFu9F,MAAO06C,EAAU16C,MACjBl6F,QAAS40I,EAAU50I,SAEvB6oG,OAAQ,CACJ7oG,QAAS21I,EAAO31I,QAChBhrB,MAAO2gK,EAAO3gK,MACdklH,MAAOy7C,EAAOz7C,SAG1B,EAEAw6E,gBAAiB,WACb,OAAOzrM,KAAKihJ,OAAO1rG,SAAS,EAChC,EAEA02H,oBAAqB,WACjB,IAAIrD,EAAS5oK,KAAK4oK,OAElB,MAAO,CACHzhK,QAASnH,KAAKmH,QACdmlB,OAAQs8I,EAAOt8I,OACf+7I,YAAaO,EAAOP,YACpB9pF,OAAQ,IAAI46G,GAAcvwB,EAAOrqF,OAAOn5E,EAAGwjK,EAAOrqF,OAAOp6E,GACzDo+H,WAAYqmC,EAAOrmC,WACnBC,SAAUomC,EAAOxuC,MAAQwuC,EAAOrmC,WAChC0e,OAAQjhJ,KAAKihJ,OAErB,EAEA0rB,qBAAsB,SAASx/J,GAC3B,IAAIigK,EAAcptK,KAAKmH,QAAQklK,cAAcV,UAAUe,OAAO3gK,MAC1D+K,EAAS9W,KAAK2tM,cAAc3tM,KAAK4oK,OAAQpgK,EAAW,CAAC,EAAG2E,EAAO,CAC/DyyH,OAAQ,CACJ7zH,MAAqB,EAAdqhK,MAIX/d,EAAW,IAAIjgB,GAOnB,OALAigB,EAASvhG,MAAMnsD,KAAK4sI,GAAKc,SAASv4H,EAAO6mH,SACzC0xB,EAASvhG,MAAMnsD,KAAK3B,KAAK2tM,cAAc3tM,KAAK4oK,OAAQ,CAAC,IAErD9xJ,EAAOojC,KAAKm1G,GAELv4I,CACX,EAEA80L,cAAe,WACX,IAAIhjC,EAAS5oK,KAAK4oK,OAAOxhK,QAAQ62H,OAnnZpB,GAonZT4qC,EAAWD,EAAON,SAGtB,MAAO,CACHnsC,MAHWysC,EAAOzsC,MAAM0sC,GAIxB33B,MAAOqqF,GAAiB1yD,EAAW,KAE3C,EAEAmiC,YAAa,SAAS/5L,GAClB,OAAOjR,KAAK6oM,MAAMyB,iBAAiBtqM,KAAMiR,EAC7C,EAEA08J,UAAW,WACP,MAAO,CACHlvG,SAAUz+D,KAAKy+D,SACfytG,SAAUlsK,KAAKksK,SACfxjK,MAAO1I,KAAK0I,MACZumC,OAAQjvC,KAAKivC,OACbpiB,WAAY7sB,KAAK6sB,WAEzB,EAEAu/K,SAAU,WACN,OAAOpsM,KAAKsZ,KAChB,IAGAkiN,GAASllN,EAAMuiH,GAAI,IAAK8nC,GACxB86D,GAASnlN,EAAMuiH,GAAI,IAAK8nC,GAE5B,SAAS46D,GAAiBnhG,GACtB,IAAI7C,EAAUsB,GAAIuB,GACdiL,EAAO/uH,EAAMjT,KAAKi3H,IAAI/C,GAAUopC,GAChCv7B,EAAS9uH,EAAMjT,KAAKg3H,IAAI9C,GAAUopC,GAoBtC,MAAO,CACHjuH,WAlBArvC,KAAKoU,IAAI4tH,GAAQo2F,GACJxqI,EACNm0C,EAAS,EACH95G,EAEAF,EAcbonB,SAVAnvC,KAAKoU,IAAI4tH,GAAQm2F,GACNvqI,EACJo0C,EAAO,EACHl0C,EAEAD,EAOnB,CAEA8yE,EAAkB22D,GAAY,CAC1B1pG,MAAOowC,EACPyL,QAAS,CACL9mB,SAAU,gBAEd0mB,OAAQ,CACJ3gK,MAAO,IAEXqpK,OAAQ,CACJpoK,SAAS,EACTwxE,SAAU,GACVuZ,KAAMmhG,EAAiBx4B,aACvB3nH,OAAQmqH,EAAW,IACnBhyB,MAAOqvB,EACPvmH,OAAQ,EACR1sC,SAAU+0L,IAEd/vG,UAAW,CACP5sF,KAAMk5L,IAEVjzB,UAAW,CACP3+J,SAAS,EACT0/J,OAAQ,CACJ3gK,MAAO,IAGfiB,SAAS,EACTq/J,cAAe,CACX77I,KAAMmxK,GACNt0K,UAAWu0K,GACXrmD,oBAAqBsmD,MAI7Br5L,EAAWmyN,GAAWtyN,UAAWkiM,IACjC/hM,EAAWmyN,GAAWtyN,UAAW8oM,IAEjC,IAAIuqB,GAAgB,CAChBC,iBAAkB,SAASjzN,EAAOyzH,EAAOh1H,GACrC,IAAIy0N,EAAgB57N,KAAKmH,QAAQ2uL,QAAU,CAAC,EACxCilC,EAAgBa,EAAcxmD,QAAU,CAAC,EACzC8iB,EAAgB0jC,EAAc1jC,eAAiB,CAAC,EAChDkkB,EAAsBlkB,EAAc9iB,QAAU,CAAC,EAEnD,GAAIjuK,IAAuC,IAA5BA,EAAQm1M,gBAA2B,CAC9C,IAeIC,EAAkBC,EAflBqf,GAAmC,IAApB10N,EAAQ6F,QACvB6rK,EAAgBgjD,EAAex4D,EAAY03D,GAC3C13D,EAAY+4C,IAAwB/4C,EAAY03D,GAChDj6L,EAAO35B,EAAQ+kK,SAEf2M,IACA/3I,EAAO+3I,EAAc,CACjB/3I,KAAMA,EACNmO,OAAQ9nC,EAAQ8nC,OAChBwvB,SAAUt3D,EAAQs3D,SAClB5xC,WAAY1lB,EAAQ0lB,WACpBnkB,MAAOA,KAKXmzN,GACAtf,EAAmB,CAAC,EACpBC,EAAcrgF,EAAMlL,QAEpBsrF,EAAmB,CACftrF,MAAOmrF,EAAoBnrF,MAC3Bl5B,KAAMqkH,EAAoBrkH,MAE9BykH,GAAetkB,EAAclG,SAAW,CAAC,GAAG/gE,OAG5C77C,GAASt0C,IAAkB,KAATA,GAClB9gC,KAAK87N,YAAYn6N,KAAK,CAClB86M,OAAQof,EACRpa,WAAYt6M,EAAQmS,MACpBwnB,KAAMA,EACNmO,OAAQ9nC,EAAQ8nC,OAChButK,YAAaA,EACbpnC,OAAQmnC,GAGpB,CACJ,GAKAwf,GAAW/xD,EAAajnK,OAAO,CAC/BoF,KAAM,SAASgwK,EAAUhxK,GACrB6iK,EAAajiK,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAEhCnH,KAAKm4K,SAAWA,EAChBn4K,KAAKuqK,aAAe4N,EAAS5N,aAC7BvqK,KAAKojI,OAAS,GACdpjI,KAAK87N,YAAc,GACnB97N,KAAKmQ,QACT,EAEAA,OAAQ,WACJnQ,KAAKumM,mBAAmBvmM,KAAKwmM,SAASh9L,KAAKxJ,MAC/C,EAEAumM,mBAAoB,SAAS38K,GACzB,IAGIziB,EADMnH,KACQmH,QACdkxL,EAFMr4L,KAEam4K,SAAShxK,QAAQkxL,kBAAmC,IAAjBA,IAA2BA,EAAe,IAKpG,IAJA,IAAI2jC,EAAc3jC,EAAa7wL,OAC3BynC,EAAS9nC,EAAQ8nC,OACjBi1J,EAAcj1J,EAAOznC,OAEhBk/L,EAAW,EAAGA,EAAWxC,EAAawC,IAAY,CACvD,IAAIjC,EAAgBx1J,EAAOy3J,GACvBt4L,EAAOq2L,EAAcr2L,KACrBskI,EAAQuxD,GAAaQ,GACrBz9I,EAAQ0rF,EAAM1rF,MACdo8E,EAASsP,EAAMtP,OACf9nH,EAAQo3H,EAAMp3H,MACd2gN,EAAgB,IAAMj1K,EACtBk1K,OAAgB,EACf9pN,SAAS6pN,KACVC,EAAgB,IAAM5gN,GAE1B,IAAI4nH,OAAe,EAGfA,EADApM,EAAQ2tE,EAAcliE,YACPkiE,EAAcliE,WAEdp7H,EAAQo7H,WAGvBmkE,IAAaxC,EAAc,GACvBO,EAAcrvB,OAAO9nK,WAAa+0L,KAClCoC,EAAcrvB,OAAO9nK,SAAW2jF,GAIxC,IAAK,IAAI1pF,EAAI,EAAGA,EAAI67H,EAAO57H,OAAQD,IAAK,CACpC,IAAIomK,EAAYvqC,EAAO77H,GACvB,GAAKomK,EAAL,CAIA,IAAIl+I,EAASk+I,EAAUl+I,OACnB/mB,EAAQilK,EAAUjlK,MAClBsE,EAAU2gK,EAAU3gK,QACpBotH,EAAkB,IAAV1xH,EAAewzN,GAAkBxzN,EAAQuzN,EAAkB,EACnEE,EAA0B,IAAhB/tN,EAAK5G,QAAgBsL,QAAQ2c,EAAO0sM,SAE7CjzN,EAAWu7L,EAAcxzE,SAC1BwzE,EAAcxzE,MAAQxhG,EAAOwhG,OAASonE,EAAa9wL,EAAIy0N,IAG3DpyM,EAASlhB,EAAO,IAAI+hB,EAAQ29I,KAAK,KAAM,EAAG,EAAGllC,EAAc9I,GAAQ,CAC/DyuE,MApDG7oM,KAqDHksK,SAAUp1C,EAAQrnG,EAAOy8I,UAAYz8I,EAAOy8I,SAAW,GACvD5yJ,MAAO/R,EACP0nC,OAAQw1J,EACRiC,SAAUA,EACVjoI,SAAUrwD,EAAK7G,GACfslB,WAAsB,IAAVm6B,EAAct+C,EAAQs+C,EAAQ,EAC1Cm1K,QAASA,EACT7f,gBAAiB7sL,EAAO6sL,gBACxBtvM,QAASA,EACTgtC,OAAQkqJ,EAAcwC,EACtBo0B,eA/DG96N,KA+DsB86N,eAAevzN,EAAGm/L,EAAUxC,MAGzC,IAAZl3L,IACAk2H,GAAgB9I,EA5BpB,CA8BJ,CACJ,CACJ,EAEAgiG,mBAAoB,SAASj1N,EAASuB,EAAO+mB,GACzC,IAAIwf,EAASxf,EAAOwf,OAEpBm1J,GAAYj9L,EAAS,CACjBuB,MAAOA,EACPumC,OAAQA,EACRwvB,SAAUhvC,EAAOgvC,SACjBytG,SAAUz8I,EAAOy8I,SACjBr/I,WAAY4C,EAAO5C,YACpB,CAAEjsB,SAAUquC,EAAO+5J,UAAWzE,SAAU,CACvC,OAAQ,UAAW,WAAY,SAAU,SACzC,eAAgB,gBAExB,EAEAiC,SAAU,SAAS99L,EAAOkgK,EAAQn5I,GAC9B,IAAI4sM,EAAiB7zN,EAAW,CAAC,EAAGinB,EAAOwf,OAAQ,CAAE31B,MAAOmW,EAAOnW,QAKnE,GAJAtZ,KAAKo8N,mBAAmBC,EAAgB3zN,EAAO+mB,GAE/CzvB,KAAK27N,iBAAiBjzN,EAAO2zN,EAAgB5sM,IAEtB,IAAnBA,EAAOziB,QAAX,CAIA,IAAIu9H,EAAU,IAAIowF,GAAWjyN,EAAOkgK,EAAQyzD,GAC5C15N,EAAEI,OAAOwnI,EAAS96G,GAClBzvB,KAAKm6C,OAAOowF,GACZvqI,KAAKojI,OAAOzhI,KAAK4oI,EALjB,CAMJ,EAEA8H,OAAQ,SAAS20B,GACb,IAAI30C,EAAMryH,KACNmH,EAAUkrH,EAAIlrH,QACdi8H,EAAS/Q,EAAI+Q,OACbk5F,EAAgBjqG,EAAIiqG,mBAAqC,IAAlBA,IAA4BA,EAAgB,IACvF,IAAIhhN,EAAQ8nH,EAAO57H,OACf8xC,EAAM0tH,EAAU5/J,QAEhBm1N,EAAWl5N,KAAKqT,IAAI4iC,EAAIvtC,QAASutC,EAAIttC,UACrCwwN,EAAeD,EAAW,EAC1BE,EAAiBF,EAAsB,IAAXA,EAC5BG,EAAS,IAAI31D,EAAIztH,EAAI2kC,GAAI3kC,EAAI4kC,GAAI5kC,EAAI2kC,GAAKs+I,EAAUjjL,EAAI4kC,GAAKq+I,GAC7DI,EAAeD,EAAOn+I,SACtBmzF,EAAYp4H,EAAIilC,SAChB2lH,EAAc/8L,EAAQ8nC,OAAOznC,OAC7Bo1N,EAAiB,GACjBC,EAAkB,GAClB7kF,EAAUhf,EAAe7xH,EAAQ6wI,QAASykF,GAE9Cz8N,KAAKgnK,UAAYA,EAEjBhvB,EAAUA,EAAUwkF,EAdR,EAc+BA,EAd/B,EAcsDxkF,EAClE0kF,EAAOtsL,UAAUshI,EAAUtsK,EAAIu3N,EAAav3N,EAAGssK,EAAUvtK,EAAIw4N,EAAax4N,GAQ1E,IANA,IAAImoB,EAASkwM,EAAexkF,EACxBz5D,EAAS,IAAIu9C,EACbxvG,EAASowM,EAAOz+I,GAAK+5D,EACrB1rH,EAASowM,EAAOx+I,GAAK85D,GAGhBzwI,EAAI,EAAGA,EAAI+T,EAAO/T,IAAK,CAC5B,IAAIgjI,EAAUnH,EAAO77H,GACjBqhK,EAASr+B,EAAQq+B,OACjB04C,EAAc/2E,EAAQm8D,SAI1B,GAHA99B,EAAOt8I,OAASA,EAChBs8I,EAAOrqF,OAASA,EAEZ+9I,EAAc90N,OAAQ,CACtB,IAAIs1N,EAAeR,EAAchb,GACjC14C,EAAOP,YAAcy0D,EAAaz0D,YAClCO,EAAOt8I,OAASwwM,EAAaxwM,MACjC,CAEIg1L,IAAgBpd,EAAc,GAAK35D,EAAQ4xF,UAC3CvzD,EAAOrqF,OAASqqF,EAAOxhK,QAAQi5H,UAA0B,IAAhBuoC,EAAOt8I,QAAe6vG,MAAMysC,EAAON,WAGhF/9B,EAAQ8H,OAAOqqF,GAEf,IAAIpoM,EAAQi2G,EAAQj2G,MAChBA,GACIA,EAAMntB,QAAQmG,WAAa+0L,IACvBif,IAAgBpd,EAAc,IAC1B5vK,EAAMm9G,cAAgBnmH,EACtBuxM,EAAgBl7N,KAAK2yB,GAErBsoM,EAAej7N,KAAK2yB,GAKxC,CAEIsoM,EAAep1N,OAAS,IACxBo1N,EAAe5gN,KAAKhc,KAAK+8N,iBAAgB,IACzC/8N,KAAKg9N,iBAAiBJ,IAGtBC,EAAgBr1N,OAAS,IACzBq1N,EAAgB7gN,KAAKhc,KAAK+8N,iBAAgB,IAC1C/8N,KAAKi9N,kBAAkBJ,IAG3B78N,KAAKs5C,IAAMojL,CACf,EAEAM,iBAAkB,SAAS5nD,GACvB,IAAI8nD,EAAYl9N,KAAKm9N,sBAAsB/nD,GAE3Cp1K,KAAKo9N,iBAAiBF,EAAW9nD,EACrC,EAEA6nD,kBAAmB,SAAS7nD,GACxB,IAAI8nD,EAAYl9N,KAAKm9N,sBAAsB/nD,GAE3Cp1K,KAAKo9N,iBAAiBF,EAAW9nD,EACrC,EAEA+nD,sBAAuB,SAAS/nD,GAC5B,IAAI7qC,EAAUjoG,EAAKtiC,KAAKojI,QACpBwlC,EAASr+B,EAAQq+B,OACjBttJ,EAAQ85J,EAAO5tK,OAAS,EACxB61N,EAAKz0D,EAAOt8I,OAASi+G,EAAQpjI,QAAQiuK,OAAO52F,SAC5C0+I,EAAY,GACZI,EAAWloD,EAAO,GAAG97H,IACrBklC,EAAWloE,EAAMgnN,EAASp/I,IAAM0qF,EAAOrqF,OAAOp6E,EAAIk5N,EAAKC,EAAStxN,SAAWsxN,EAAStxN,SAAW,IAEnGkxN,EAAUv7N,KAAK68E,GAEf,IAAK,IAAIj3E,EAAI,EAAGA,EAAI+T,EAAO/T,IAAK,CAC5B,IAAIg2N,EAAYnoD,EAAO7tK,EAAI,GAAG+xC,IAE9BgkL,EAAWloD,EAAO7tK,GAAG+xC,IACrBklC,EAAWloE,EAAMinN,EAAUr/I,GAAKo/I,EAASl/I,IACzC8+I,EAAUv7N,KAAK68E,EACnB,CAIA,OAHAA,EAAWloE,EAAMsyJ,EAAOrqF,OAAOp6E,EAAIk5N,EAAKjoD,EAAO95J,GAAOg+B,IAAI8kC,GAAKg3F,EAAO95J,GAAOg+B,IAAIttC,SAAW,GAC5FkxN,EAAUv7N,KAAK68E,GAER0+I,CACX,EAEAE,iBAAkB,SAASF,EAAW9nD,GAMlC,IALA,IAGI5oJ,EAAMC,EAAOyf,EADb5wB,EAAQ4hN,EAAU11N,OAGbD,EAAI,EAAGA,EAAI+T,EAAO/T,IAIvB,IAHA2kC,GAAagxL,EAAU31N,GACvBilB,EAAOC,EAAQllB,EAER2kC,EAAY,IAAM1f,GAAQ,GAAKC,EAAQnR,IAC1C4wB,EAVOlsC,KAUcw9N,cAAcN,EAAW31N,IAAKilB,EAAM0f,GACzDA,EAXOlsC,KAWcw9N,cAAcN,EAAW31N,IAAKklB,EAAOyf,GAIlElsC,KAAK+sL,aAAamwC,EAAW9nD,EACjC,EAEAooD,cAAe,SAASN,EAAW/qI,EAAQ7kF,EAAUmwN,GACjD,IAAI3mN,EAAS2mN,EACb,GAAIP,EAAU5vN,GAAY,EAAG,CACzB,IAAImwJ,EAAYp6J,KAAKqT,IAAIwmN,EAAU5vN,GAAWwJ,GAC9CA,GAAU2mJ,EACVy/D,EAAU5vN,IAAamwJ,EACvBy/D,EAAU/qI,IAAWsrE,CACzB,CAEA,OAAO3mJ,CACX,EAEAi2K,aAAc,SAASmwC,EAAW9nD,GAC9B,IAQIsoD,EANAnzF,EAAUjoG,EAAKtiC,KAAKojI,QACpBwlC,EAASr+B,EAAQq+B,OACjBuN,EAAe5rC,EAAQpjI,QAAQiuK,OAC/Ba,EAAcb,EAAO5tK,OACrBm2N,EAAgBxnD,EAAa33F,SAC7Bo/I,EAAOh1D,EAAOrqF,OAAOp6E,GAAKykK,EAAOt8I,OAASqxM,GAAiBvoD,EAAO,GAAG97H,IAAIttC,SAG7EkxN,EAAU,IAAM,EAChB,IAAK,IAAI31N,EAAI,EAAGA,EAAI0uK,EAAa1uK,IAAK,CAClC,IAAI+sB,EAAQ8gJ,EAAO7tK,GACf+xC,EAAMhlB,EAAMglB,IAEhBskL,GAAQV,EAAU31N,GAClBm2N,EAhBW19N,KAgBK69N,YACZvkL,EAAI6kC,GACJyqF,EAAOxhK,QAAQ62H,OAAO0/F,GACtBC,EACAA,EAAOtkL,EAAIttC,SACXsoB,EAAMm9G,cAAgBnmH,GAEtBgJ,EAAMm9G,cAAgBnmH,GAClB6qJ,EAAajlC,QAAUqvB,IACvBm9D,EAAO90D,EAAOt8I,OAASs8I,EAAOrqF,OAAOn5E,EAAIu4N,GAE7CrpM,EAAM+9G,OAAO,IAAI00B,EAAI22D,EAAOpkL,EAAIvtC,QAAS6xN,EAAMF,EAAME,MAEjDznD,EAAajlC,QAAUqvB,IACvBm9D,EAAO90D,EAAOrqF,OAAOn5E,EAAIwjK,EAAOt8I,OAASqxM,GAE7CrpM,EAAM+9G,OAAO,IAAI00B,EAAI22D,EAAOpkL,EAAIvtC,QAAS6xN,EAAMF,EAAME,KAGzDA,GAAQtkL,EAAIttC,QAChB,CACJ,EAEA2+J,aAAc,WACV,IAAI13C,EAAWjzH,KAGX04L,EADM14L,KACWmH,QAAQuxL,WACzBt1D,EAFMpjI,KAEOojI,OACb9nH,EAAQ8nH,EAAO57H,OAGnBwiK,EAAajiK,GAAG4iK,aAAapgK,KAAKvK,MAElCA,KAAK89N,gBAAkB,GAEvB,IAAK,IAAIv2N,EAAI,EAAGA,EAAI+T,EAAO/T,IAAK,CAC5B,IAAIgjI,EAAUnH,EAAO77H,GACjBqhK,EAASr+B,EAAQq+B,OACjBt0I,EAAQi2G,EAAQj2G,MAChB8lG,EAAQwuC,EAAON,SACfy1D,GAAmBxzF,EAAQpjI,QAAQuxL,YAAc,CAAC,GAAGznE,OAASynE,EAAWznE,MAE7E,GAAI38F,EAAO,CACP,IAAI0pM,EAAgB,IAAIzvF,GAAK,CACzB3O,OAAQ,CACJ3O,MAAO8sG,EACPhyN,MAAO2sL,EAAW3sL,OAEtBumF,UAAW,CACP5sF,KAAMq3L,GACNz3J,MAAOilG,EAAQuwF,kBAIvB,GAAIxmM,EAAMntB,QAAQmG,WAAa+0L,GAAa,CACxC,IAAI/oJ,EAAMhlB,EAAMglB,IACZ2kL,EAAcr1D,EAAOrqF,OACrBzoE,EAAQ8yJ,EAAOzsC,MAAM/B,GACrBkuC,EAAS,IAAIxsC,EAAMxiF,EAAI2kC,GAAI3kC,EAAIilC,SAASp6E,GACxC+5N,OAAK,EAAUvyN,OAAM,EAAUwyN,OAAW,EAE9CroN,EAAQ8yJ,EAAOxhK,QAAQ62H,OAAOy6D,EAAW1gD,SAAS7b,MAAM/B,GACxD4jG,EAAcxhL,OAAO1mC,EAAM1Q,EAAG0Q,EAAM3R,GAEhCmwB,EAAMm9G,cAAgBnmH,GAEtB6yM,EAAW95F,GAAa45F,EAAanoN,EAAOwyJ,EAD5C38J,EAAM,IAAImwH,EAAMxiF,EAAI2kC,GAAKy6G,EAAW1gD,QAAS1+F,EAAIilC,SAASp6E,IAE1DmkK,EAAS,IAAIxsC,EAAMnwH,EAAIvG,EAtC3B,EAsCsCuG,EAAIxH,IACtCg6N,EAAWA,GAAY71D,GACdljK,EAAI/B,KAAKqT,IAAIynN,EAAS/4N,EAAGkjK,EAAOljK,GAErC6tH,EAASmrG,cAAcD,EAAUv1D,EAAOrqF,OAAQqqF,EAAOt8I,OA1C/D,IA2CQ6xM,EAAS/4N,EAAIwjK,EAAOrqF,OAAOn5E,GAC3B84N,EAAKt1D,EAAOrqF,OAAOn5E,EAAIwjK,EAAOt8I,OA5CtC,EA6CYi+G,EAAQpjI,QAAQiuK,OAAOlkC,QAAUktD,GAC7B8/B,EAAK51D,EAAOljK,EACZ44N,EAAcnxF,OAAOqxF,EAAIpoN,EAAM3R,GAE/B65N,EAAcnxF,OAAO/2H,EAAM1Q,EAAI6N,EAAW6C,EAAM3R,GAGpD65N,EAAcnxF,OAAOqxF,EAAIpoN,EAAM3R,GAEnC65N,EAAcnxF,OAAOy7B,EAAOljK,EAAGuG,EAAIxH,KAEnCg6N,EAASh6N,EAAIwH,EAAIxH,EACjB65N,EAAcnxF,OAAOsxF,EAAS/4N,EAAG+4N,EAASh6N,MAI9Cg6N,EAAW95F,GAAa45F,EAAanoN,EAAOwyJ,EAD5C38J,EAAM,IAAImwH,EAAMxiF,EAAI6kC,GAAKu6G,EAAW1gD,QAAS1+F,EAAIilC,SAASp6E,IAE1DmkK,EAAS,IAAIxsC,EAAMnwH,EAAIvG,EA9D3B,EA8DsCuG,EAAIxH,IACtCg6N,EAAWA,GAAY71D,GACdljK,EAAI/B,KAAK8V,IAAIglN,EAAS/4N,EAAGkjK,EAAOljK,GAErC6tH,EAASmrG,cAAcD,EAAUv1D,EAAOrqF,OAAQqqF,EAAOt8I,OAlE/D,IAmEQ6xM,EAAS/4N,EAAIwjK,EAAOrqF,OAAOn5E,GAC3B84N,EAAKt1D,EAAOrqF,OAAOn5E,EAAIwjK,EAAOt8I,OApEtC,EAqEYi+G,EAAQpjI,QAAQiuK,OAAOlkC,QAAUktD,GAC7B8/B,EAAK51D,EAAOljK,EACZ44N,EAAcnxF,OAAOqxF,EAAIpoN,EAAM3R,GAE/B65N,EAAcnxF,OAAO/2H,EAAM1Q,EAAI6N,EAAW6C,EAAM3R,GAGpD65N,EAAcnxF,OAAOqxF,EAAIpoN,EAAM3R,GAEnC65N,EAAcnxF,OAAOy7B,EAAOljK,EAAGuG,EAAIxH,KAEnCg6N,EAASh6N,EAAIwH,EAAIxH,EACjB65N,EAAcnxF,OAAOsxF,EAAS/4N,EAAG+4N,EAASh6N,KAIlD65N,EAAcnxF,OAAOlhI,EAAIvG,EAAGuG,EAAIxH,GAEhC8uH,EAAS6qG,gBAAgBn8N,KAAKq8N,GAC9B/qG,EAASguB,OAAO9mG,OAAO6jL,EAC3B,CACJ,CACJ,CACJ,EAEAtzD,aAAc,WAGV,GAFAV,EAAajiK,GAAG2iK,aAAangK,KAAKvK,MAE9ByqB,EAAQ0L,KAAKn2B,KAAKmH,QAAQ8nC,QAAQ,SAAU9nC,GAAW,OAAOA,EAAQk3N,OAAS,IAAI,CACnF,IAAIr3D,EAAYhnK,KAAKgnK,UACjBs3D,EAAYt+N,KAAKs5C,IAAIilC,SACrBo/C,EAAO39H,KAAKihJ,OAAOtjB,OACvB,IAAKA,EACD,OAGJ,IAAI4gG,EAAa5gG,EAAKH,cAElBztF,EAAQ1sC,KAAKqT,KACZ4nN,EAAUn6N,EAAI6iK,EAAU9oF,KAAOogJ,EAAUn6N,EAAIw5H,EAAK3kF,OAAO70C,IACzD6iK,EAAU5oF,GAAKkgJ,EAAUn6N,IAAMo6N,EAAWp6N,EAAIm6N,EAAUn6N,IACxDm6N,EAAUl5N,EAAI4hK,EAAU/oF,KAAOqgJ,EAAUl5N,EAAIu4H,EAAK3kF,OAAO5zC,IACzD4hK,EAAU7oF,GAAKmgJ,EAAUl5N,IAAMm5N,EAAWn5N,EAAIk5N,EAAUl5N,IAGzD2qC,EAAQ,GACR/vC,KAAKihJ,OAAOttG,UAAUA,KAAY5D,MAAMA,EAAOA,EAAO,CAAEuuL,EAAUl5N,EAAGk5N,EAAUn6N,IAEvF,CACJ,EAEA44N,gBAAiB,SAAS1mN,GACtB,IAAImoN,EAAenoN,GAAW,EAAI,EAElC,OAAO,SAASnR,EAAG+W,GAGf,QAFa/W,EAAEyH,OAAOi8J,OAAON,SAAW,KAAO,KACjCrsJ,EAAEtP,OAAOi8J,OAAON,SAAW,KAAO,KACtBk2D,CAC9B,CACJ,EAEAX,YAAa,SAASY,EAAW71D,EAAQ1qF,EAAIE,EAAI/pC,GAC7C,IAAI/nB,EAASs8I,EAAOt8I,OAChBoyM,EAAgB91D,EAAOrqF,OACvBwnD,EAAK24F,EAAct5N,EACnB4gI,EAAK04F,EAAcv6N,EACnBgB,EAAI9B,KAAKqT,IAAIrT,KAAKoU,IAAIuuH,EAAK9nD,GAAK76E,KAAKoU,IAAIuuH,EAAK5nD,IAElD,OAAIj5E,EAAImnB,EACGmyM,EAGJ14F,EAAK1iI,KAAKo7E,KAAMnyD,EAASA,EAAWnnB,EAAIA,IAAOkvC,EAAY,GAAK,EAC3E,EAEA+pL,cAAe,SAASjiG,EAAO59C,EAAQjyD,GACnC,OAAOjpB,KAAKwmC,IAAI00C,EAAOn5E,EAAI+2H,EAAM/2H,EAAG,GAAK/B,KAAKwmC,IAAI00C,EAAOp6E,EAAIg4H,EAAMh4H,EAAG,GAAKd,KAAKwmC,IAAIvd,EAAQ,EAChG,EAEAg+K,iBAAkB,SAASnuE,EAAOlrH,GAC9B,OAAOjR,KAAKuqK,aAAat5J,OAAOiiK,KAAKjiK,EAAQkrH,EAAMzzH,MACvD,EAEAoyN,eAAgB,SAASx5C,GACrB,OAjdoB,GAidbA,CACX,EAEAlW,UAAW,WACP,OAAOprK,IACX,IAGJ,SAASqkI,GAAaq1B,EAAII,EAAIH,EAAII,GAC9B,IAGIjjJ,EAHA6nN,GAAO5kE,EAAG30J,EAAIu0J,EAAGv0J,IAAMs0J,EAAGv1J,EAAIw1J,EAAGx1J,IAAM41J,EAAG51J,EAAIw1J,EAAGx1J,IAAMu1J,EAAGt0J,EAAIu0J,EAAGv0J,GACjEw5N,GAAM7kE,EAAG51J,EAAIw1J,EAAGx1J,IAAM21J,EAAG10J,EAAIs0J,EAAGt0J,IAAM20J,EAAG30J,EAAIu0J,EAAGv0J,IAAM00J,EAAG31J,EAAIu1J,EAAGv1J,GAGpE,GAAW,IAAPy6N,EAAU,CACV,IAAI/9M,EAAM89M,EAAMC,EAEhB9nN,EAAS,IAAIglH,EACT49B,EAAGt0J,EAAIyb,GAAMi5I,EAAG10J,EAAIs0J,EAAGt0J,GACvBs0J,EAAGv1J,EAAI0c,GAAMi5I,EAAG31J,EAAIu1J,EAAGv1J,GAE/B,CAEA,OAAO2S,CACX,CAEAktJ,EAAkB+3D,GAAU,CACxBx5F,WAAY,GACZm2D,WAAY,CACR3sL,MAAO,EACPklH,MAAO,UACP+mB,QAAS,GAEbkgD,cAAe,CACXlG,QAAS,CAAC,EACV5c,OAAQ,CAAC,KAIjB5sK,EAAWuzN,GAAS1zN,UAAWqzN,IAE/BK,GAAS1zN,UAAUijK,aAAc,EAEjC,IAAIuzD,GAAcnkB,GAAa33M,OAAO,CAClCoN,OAAQ,WACJnQ,KAAK8+N,eAAe9+N,KAAKivC,OAC7B,EAEA6vL,eAAgB,SAAS7vL,GACrB,IAAI69K,EAAc79K,EAAO,GACrB8vL,EAAW,IAAIhD,GAAS/7N,KAAM,CAC9BivC,OAAQA,EACR+oG,QAAS80E,EAAY90E,QACrBzV,WAAYuqF,EAAYvqF,WACxBm2D,WAAYo0B,EAAYp0B,WACxB5C,OAAQ91L,KAAKmH,QAAQ2uL,SAGzB91L,KAAK85M,YAAYilB,EACrB,EAEAjlB,YAAa,SAASxlC,EAAO1lF,GACzB8rH,GAAa3yM,GAAG+xM,YAAYvvM,KAAKvK,KAAMs0K,EAAO1lF,GAC9Cz0C,EAAOn6C,KAAKmH,QAAQ2uL,OAAO1nL,KAAMkmK,EAAMwnD,YAC3C,EAEAnZ,cAAe,SAASxmF,GACpB,OAAOn8H,KAAK+iN,mBAAmB5mF,EACnC,EAEA2mF,cAAe,SAAS3mF,GACpB,OAAOn8H,KAAKijN,kBAAkB9mF,EAClC,IAGA6iG,GAAerE,GAAW53N,OAAO,CACjCuoM,YAAa,WACT,IACIyvB,EADM/6N,KACcmH,QAAQiuK,OAC5B9gJ,EAFMt0B,KAEMs0B,MACZs0I,EAAS5oK,KAAK4oK,OAAOxhK,QACrBgzH,EAAQwuC,EAAON,SAEnB,GAAIh0I,EAAO,CACP,IAAI4mM,EAAc5mM,EAAMglB,IAAIttC,SAC5B,GAAI+uN,EAAcztN,WAAa2jF,EAAQ,CACnC23E,EAAOt8I,SAAWs8I,EAAOt8I,OAASs8I,EAAOP,aAAe,EAExD,IAAI4yD,EAAKryD,EAAOzsC,MAAM/B,GAEtB9lG,EAAM+9G,OAAO,IAAI00B,EAAIk0D,EAAG71N,EAAG61N,EAAG92N,EAAI+2N,EAAc,EAAGD,EAAG71N,EAAG61N,EAAG92N,GAChE,MACIw2N,GAAW5yN,GAAGujM,YAAY/gM,KAAKvK,KAEvC,CACJ,EAEA2tM,cAAe,SAAS/kC,EAAQzhK,GAC5B,OAAOsjB,EAAQo/I,aAAa71J,QAAQ81J,WAAWlB,EAAQzhK,EAC3D,IAGJ68J,EAAkBg7D,GAAc,CAC5BlyD,QAAS,CACL9mB,SAAU,gBAEdovB,OAAQ,CACJ9nK,SAAU2jF,GAEdqB,UAAW,CACP5sF,KAAMk5L,MAIdp2L,EAAWw2N,GAAa32N,UAAWkiM,IAEnC,IAEI00B,GAAalD,GAASh5N,OAAO,CAC7ByjM,SAAU,SAAS99L,EAAOkgK,EAAQn5I,GAC9B,IAAI4sM,EAAiB7zN,EAAW,CAAC,EAAGinB,EAAOwf,OAAQ,CAAE31B,MAAOmW,EAAOnW,QAKnE,GAJAtZ,KAAKo8N,mBAAmBC,EAAgB3zN,EAAO+mB,GAE/CzvB,KAAK27N,iBAAiBjzN,EAAO2zN,EAAgB5sM,IAEtB,IAAnBA,EAAOziB,QAAX,CAIA,IAAIu9H,EAAU,IAAIy0F,GAAat2N,EAAOkgK,EAAQyzD,GAE9C15N,EAAEI,OAAOwnI,EAAS96G,GAClBzvB,KAAKm6C,OAAOowF,GACZvqI,KAAKojI,OAAOzhI,KAAK4oI,EANjB,CAOJ,EAEA8H,OAAQ,SAAS20B,GAmBb,IAlBA,IAgBIk4D,EAdA/3N,EAAUnH,KAAKmH,QACfmyC,EAAM0tH,EAAU5/J,QAEhBm1N,EAAWl5N,KAAKqT,IAAI4iC,EAAIvtC,QAASutC,EAAIttC,UACrCwwN,EAAeD,EAAW,EAC1BE,EAAiBF,EAAsB,IAAXA,EAC5BttL,EAAS9nC,EAAQ8nC,OACjBi1J,EAAcj1J,EAAOznC,OAErBwwI,EAAUhf,EAAe7xH,EAAQ6wI,QAASykF,GAG1C0C,EAAY3C,GAFhBxkF,EAAUA,EAAUwkF,EARR,EAQ+BA,EAR/B,EAQsDxkF,GAG9DonF,EAAoB,EAGf73N,EAAI,EAAGA,EAAI28L,EAAa38L,IAAK,CAClC,IAAIk9L,EAAgBx1J,EAAO1nC,GACjB,IAANA,GACIuvH,EAAQ2tE,EAAcy6B,YACtBA,EAAWz6B,EAAcy6B,SACzBC,GAAa16B,EAAcy6B,UAI/BpoG,EAAQ2tE,EAAcz0L,MACtBmvN,GAAa16B,EAAcz0L,KAE3BovN,IAGAtoG,EAAQ2tE,EAAc1rJ,SAAWxxC,IAAM28L,EAAc,IACrDi7B,GAAa16B,EAAc1rJ,OAEnC,CAEK+9E,EAAQooG,KAGTC,GADAD,EAAyB,MADN1C,EAAexkF,IAAYksD,EAAc,OAKhE,IAEU53K,EAFN+7I,EAAc62D,EACdnmL,EAAS,EAGb/4C,KAAKs8N,cAAgB,GAErB,IAAK,IAAIr2D,EAAM,EAAGA,EAAMi+B,EAAaj+B,IAAO,CACxC,IAAIo5D,EAAkBpwL,EAAOg3H,GAG7B35I,GADA+7I,GAAetvH,GADRigF,EAAeqmG,EAAgBrvN,KAAMmvN,EAAYC,GApD7Cp/N,KAuDFs8N,cAAc36N,KAAK,CAAE0mK,YAAaA,EAAa/7I,OAAQA,IAChEysB,EAASsmL,EAAgBtmL,QAAU,EACnCsvH,EAAc/7I,CAClB,CAEAyvM,GAASh0N,GAAGsqI,OAAO9nI,KAAKvK,KAAMgnK,EAClC,EAEA8zD,eAAgB,SAASx5C,EAAeggC,EAAapd,GACjD,OArFsB,GAqFf5iB,EACFwb,IAA8BwkB,EAAc,IAAMpd,EAAc,EACzE,IAGJlgC,EAAkBi7D,GAAY,CAC1B18F,WAAY,GACZm2D,WAAY,CACR3sL,MAAO,EACPklH,MAAO,UACP+mB,QAAS,KAIjB,IAAIsnF,GAAgBT,GAAY97N,OAAO,CACnCoN,OAAQ,WACJnQ,KAAKu/N,iBAAiBv/N,KAAKivC,OAC/B,EAEAswL,iBAAkB,SAAStwL,GACvB,IAAI69K,EAAc79K,EAAO,GACrBuwL,EAAa,IAAIP,GAAWj/N,KAAM,CAClCivC,OAAQA,EACR+oG,QAAS80E,EAAY90E,QACrB0gD,WAAYo0B,EAAYp0B,WACxB5C,OAAQ91L,KAAKmH,QAAQ2uL,SAGzB91L,KAAK85M,YAAY0lB,EACrB,EAEA7c,cAAe,SAASxmF,GACpB,OAAOn8H,KAAK4iN,cAAczmF,EAAOn8H,KAAK6iN,mBAAoB,EAC9D,EAEAC,cAAe,SAAS3mF,GACpB,OAAOn8H,KAAK4iN,cAAczmF,EAAOn8H,KAAK6iN,kBAAmB,EAC7D,IAKA4c,GAAoB/kB,GAAa33M,OAAO,CACxC4yK,WAAY,WACR31K,KAAKiqN,sBAAwB,IAAItZ,EACrC,EAEAxgM,OAAQ,WACJnQ,KAAKm8M,YAAYn8M,KAAKivC,QACtBjvC,KAAK0/N,kBACL1/N,KAAKwqN,eACLxqN,KAAK2/N,iBACT,EAEAvhB,UAAW,WACP,IAAIj5K,EAAOnlC,KAAKugL,UACZtsH,EAAQ9uB,EAAK8uB,QACbs7I,EAAgBpqK,EAAKh+B,QAAQkP,QAAU49C,EAAM96C,IAAM86C,EAAMv9C,IACzDmkK,EAAO11I,EAAKszI,QAAQ82B,GACpBhxH,EAASv+E,KAAKkuL,UAAUzV,QAAQ,GAAGl6F,OACnC4/H,EAAUh5K,EAAKmU,IAAIlJ,UACnBmuC,EAAOn5E,EAAIy1K,EAAK58F,GAChBM,EAAOp6E,EAAI02K,EAAK38F,IAGpB/4C,EAAKktG,OAAO8rE,EAChB,EAEAwhB,gBAAiB,WACb,IAMI3wC,EAAU4wC,EANV/R,EAAU7tN,KAAKiqN,sBACf6D,EAAeD,EAAQrtN,QACvBkpL,EAAc1pL,KAAK6/N,iBAAiB,CACpC72C,kBAAkB,EAClBhvI,QAAS,IAIT0vI,EAAYhkL,OAASu8L,IACrBjT,EAAWvkK,EAAQ0kK,qBACnBywC,EAAmB,CAAElpN,IAAK,GAAKyC,IAAK,KAEpC61K,EAAWvkK,EAAQwkK,iBACnB2wC,EAAmB,CAAElpN,IAAK,EAAGyC,IAAK,IAGtC,IAAI86C,EAAQ45J,EAAQrtN,MAAM4B,OAAS0rN,GAAgB8R,EAE/C3rK,GAAS65J,IACT75J,EAAMv9C,IAAMrT,KAAKqT,IAAIu9C,EAAMv9C,IAAKo3M,EAAap3M,KAC7Cu9C,EAAM96C,IAAM9V,KAAK8V,IAAI86C,EAAM96C,IAAK20M,EAAa30M,MAGjD,IAAIonK,EAAY,IAAIyO,EAChB/6H,EAAMv9C,IAAKu9C,EAAM96C,IACjBuwK,EACA1pL,KAAKuqK,cAGTvqK,KAAKugL,UAAYA,EACjBvgL,KAAK45M,WAAWr5B,EACpB,EAEAg9B,WAAY,WACR,IAAIlrF,EAAMryH,KACNmH,EAAUkrH,EAAIlrH,QAAQgxK,SACtBoI,EAAYluD,EAAIkuD,UAChB2N,EAAY77D,EAAI67D,UAChB50I,EAAM+4E,EAAI/4E,IACVmjL,EApEU,IAoEOp5N,KAAKqT,IAAI4iC,EAAIvtC,QAASutC,EAAIttC,UAC3CgsI,EAAUkrB,EAAW/7J,EAAQ6wI,SAAW,CAAC,EAAGykF,GAC5CnvD,EAAah0H,EAAIlyC,QAAQqgK,MAAMzvB,GAC/BmmE,EAAU7wC,EAAWlmK,QAEzB+2M,EAAQ//H,GAAK+/H,EAAQjgI,GAAK76E,KAAKqT,IAAIynM,EAAQpyM,QAASoyM,EAAQnyM,UAC5DmyM,EAAQjtE,MAAMo8B,EAAY/3J,EAAG07E,GAE7B,IAAI6uI,EAAe3hB,EAAQ/2M,QAAQkgK,OAAO,EAAG62C,EAAQnyM,SAAW,GAEhEkiL,EAAU77C,OAAO8rE,GACjB59B,EAAUluC,OAAOytF,GACjB,IAAIC,EAAax/C,EAAU9J,UAAUzqK,SAAWu0K,EAAUjnI,IAAIttC,SAC9Du0K,EAAUluC,OAAOkuC,EAAUjnI,IAAImuH,MAAM,CAAEviJ,IAAK66M,KAE5C//N,KAAKm+M,QAAUA,EACfn+M,KAAKo+M,UAAUD,EACnB,EAEAyC,cAAe,WACX,OAAO5gN,KAAKs5C,GAChB,EAEAgkK,aAAc,WAAY,IAG1B0iB,GAAoBvqB,GAAa1yM,OAAO,CACxCymM,UAAW,SAASjxB,EAAOC,GACvB,IAAIynD,EAAc1nD,EAAMh6F,OAAOp6E,EAAIq0K,EAAMt6F,GACrC28F,EAAO/+C,EAAMgrC,SAASyR,EAAMh6F,OAAQg6F,EAAMh2C,WAAY09F,GAE1D,OAAO,IAAIl5D,EAAI8T,EAAKz1K,EAAGy1K,EAAK12K,EAAG02K,EAAKz1K,EAAGy1K,EAAK12K,EAChD,IAGJ6/J,EAAkBg8D,GAAmB,CACjC9lL,MAAM,IAGV,IAAIgmL,GAAiB/H,GAAiBp1N,OAAO,CAE7C,GAEAm9N,GAAe73N,UAAUmhM,UAAYw2B,GAAkB33N,UAAUmhM,UAEjExlC,EAAkBk8D,GAAgB,CAC9BhmL,MAAM,IAGV,IAAIimL,GAAyBvwB,GAAkB7sM,OAAO,CAClDssM,WAAY,SAASC,GACjB,IAAI/wH,EAASv+E,KAAKogO,mBAClB9wB,EAASziE,OAAOtuD,EAAOn5E,EAAGm5E,EAAOp6E,EACrC,EAEAi8N,iBAAkB,WAGd,OAFgBpgO,KAAK2M,OAAOwrK,SAAS+V,UACd50I,IAAIilC,QAE/B,EAEAqwH,eAAgB,WACZ,IAAIzhE,EAAWntI,KAAK6uM,gBAEpB,IAAK1hE,EAAU,CACX,IAAI5uD,EAASv+E,KAAKogO,mBACdvwB,EAAiB,IAAIzgB,GAAe,GACpC9b,EAAatzK,KAAKojI,SAEtBkwC,EAAW3xK,KAAK48E,IAChB4uD,EAAWntI,KAAK6uM,gBAAkBgB,EAAet6I,QAAQ+9G,IAChDvjJ,KACb,CAEA,OAAOo9G,CACX,IAGAkzF,GAAmB9xB,GAAYxrM,OAAO,CACtCssM,WAAY,SAASC,GACjB,IACI/wH,EADYv+E,KAAK2M,OAAOwrK,SAAS+V,UACd50I,IAAIilC,SACvB+hJ,EAAgB,IAAI3+F,GAASuH,QAAQ,CAAE3qD,EAAOn5E,EAAGm5E,EAAOp6E,IAE5DmrM,EAASniE,SAAShjI,QAAQm2N,GAC1BhxB,EAASniE,SAASxrI,KAAK2+N,EAC3B,IAGAC,GAAiBL,GAAen9N,OAAO,CACvC4qM,cAAe,SAASr6B,EAAYmxB,EAAeiC,GAS/C,OARajC,EAAcl/B,MAAQ,CAAC,GAAGp4J,QAGzBywL,GACA,IAAIuiC,GAAuB7sD,EAAYmxB,EAAeiC,GAEtD,IAAI25B,GAAiB/sD,EAAYmxB,EAAeiC,EAGlE,EAEAsP,mBAAoB,SAASttM,EAAOk9L,GAChC,IAAIwyB,EAYJ,OAVIhjJ,GAAS1sE,EAAMtD,IAAMwgM,IAAkBpI,KACvC46B,EAAe,CACXhzN,EAAGsD,EAAMtD,EACTjB,EAAGuE,EAAMvE,GAETyhM,IAAkBnyL,KAClB2kN,EAAaj0N,EAAI,IAIlBi0N,CACX,EAEAvyB,oBAAqB,SAAS52J,GAC1B,OAAOA,EAAO22J,eAAiBnyL,EACnC,EAEA+sN,qBAAsB,WAKlB,IAJA,IAEIvxL,EAASjvC,KAAKmH,QAAQ8nC,OAEjBrlC,EAAM,EAAGA,EAAMqlC,EAAOznC,OAAQoC,IACnC,GALW5J,KAKE6lM,oBAAoB52J,EAAOrlC,MAAU6zL,GAC9C,OAAO,CAGnB,EAEAgQ,WAAY,SAASrqE,GAKjB,GAFAA,EAAOpnH,KAAKykN,IAERzgO,KAAKwgO,uBACL,IAAK,IAAI52N,EAAM,EAAGA,EAAMw5H,EAAO57H,OAAQoC,IAAO,CAC1C,IAAIuyH,EAAQiH,EAAOx5H,GACnB,GAAIuyH,EAEK/mD,GADO+mD,EAAMzzH,MACEvE,IATjBnE,KASgC6lM,oBAAoB1pE,EAAMltF,UAAYwuJ,WAC9Dr6D,EAAOx5H,EAG1B,CAGJ,OAAOw5H,CACX,IAGJ,SAASq9F,GAAUv7N,EAAG+W,GAClB,OAAO/W,EAAEwD,MAAMtD,EAAI6W,EAAEvT,MAAMtD,CAC/B,CAEA,IAAIs7N,GAAgBjB,GAAkB18N,OAAO,CACzC28N,gBAAiB,WACb,IAAIxxC,EAAY,IAAIzjK,EAAQsjK,UAAU/tL,KAAKmH,QAAQ+uM,MAAOl2M,KAAKuqK,cAE/DvqK,KAAKkuL,UAAYA,EACjBluL,KAAK02K,MAAQwX,EACbluL,KAAK45M,WAAW1rB,EACpB,EAEA/9K,OAAQ,WACJnQ,KAAKivC,OAAS,GAAG7wB,OAAQpe,KAAK86M,gBAC9B96M,KAAKoiN,wBAELqd,GAAkB13N,GAAGoI,OAAO5F,KAAKvK,KACrC,EAEA6/N,iBAAkB,SAASj/N,GACvB,OAAO4H,EAAW5H,EAAU,CACxBo4K,eAAgB,CAAEtzK,KAAM06J,GACxB2Y,eAAgB,CAAErzK,KAAM06J,IACzBpgK,KAAKmH,QAAQivM,MACpB,EAEAupB,gBAAiB,WACbF,GAAkB13N,GAAG43N,gBAAgBp1N,KAAKvK,MAC1CA,KAAK22K,MAAQ32K,KAAKugL,SACtB,EAEA4hC,iBAAkB,SAASh7M,EAAS8nC,GAChC,IAAImkJ,EAAYgmC,GAAW/wN,UAAU85M,iBAAiB53M,KAAKvK,KAAMmH,EAAS8nC,GAK1E,OAJImkJ,IACAA,EAAU1tL,KAAOo5L,IAGd1L,CACX,EAEA0mB,YAAa,SAASxlC,EAAO1lF,GACzB5uF,KAAKiqN,sBAAsB9iK,OAAOmtH,EAAMshC,aAExC8E,GAAaryM,UAAUyxM,YAAYvvM,KAAKvK,KAAMs0K,EAAO1lF,EACzD,EAEA47H,aAAc,WACV,IAAIv7K,EAASjvC,KAAKo9M,oBAAoBp9M,KAAKivC,QACvC2/C,EAAO5uF,KAAKq7M,MAAM,GAEtBr7M,KAAK4rN,gBACDpnB,GAAmBv1J,EAAQ,CAAE6vJ,KAC7BlwG,GAGJ5uF,KAAKw5N,mBACDh1B,GAAmBv1J,EAAQ,CAAE8vJ,KAC7BnwG,GAGJ5uF,KAAKmrN,gBACD3mB,GAAmBv1J,EAAQ,CAAE4vJ,KAC7BjwG,EAER,EAEAg9H,gBAAiB,SAAS38K,EAAQ2/C,GAC9B,GAAsB,IAAlB3/C,EAAOznC,OAAX,CAIA,IAAI0lN,EAAY,IAAIgT,GAAelgO,KAAM,CAAEivC,OAAQA,IAEnDjvC,KAAK85M,YAAYoT,EAAWt+H,EAJ5B,CAKJ,EAEA4qI,mBAAoB,SAASvqL,EAAQ2/C,GACjC,GAAsB,IAAlB3/C,EAAOznC,OAAX,CAIA,IAAIm5N,EAAe,IAAIX,GAAkBhgO,KAAM,CAAEivC,OAAQA,IAEzDjvC,KAAK85M,YAAY6mB,EAAc/xI,EAJ/B,CAKJ,EAEAu8H,gBAAiB,SAASl8K,EAAQ2/C,GAC9B,GAAsB,IAAlB3/C,EAAOznC,OAAX,CAIA,IAAI2lN,EAAY,IAAIoT,GAAevgO,KAAM,CAAEivC,OAAQA,IAEnDjvC,KAAK85M,YAAYqT,EAAWv+H,EAJ5B,CAKJ,EAEA60H,eAAgB,SAASnvC,EAAO3vK,EAAGspN,GAC/B,IAAIzhB,EAASl4B,EAAM45C,kBAAkBvpN,GACjCw3H,EAAQ,IAAIL,EAAM0wE,EAAOpnM,EAAGonM,EAAOroM,GACnCsoI,EAASzsI,KAAK02K,MAAMsT,SAAS7tD,GAC7BuQ,EAAS1sI,KAAK22K,MAAMqT,SAAS7tD,GAElB,OAAXsQ,GAA8B,OAAXC,GACnB4nC,EAAMlqK,QAAQ6jN,EAAW,CACrBpiN,QAASysH,EAAa3zH,GACtBS,EAAGqnI,EACHtoI,EAAGuoI,GAGf,EAEAuuE,iBAAkB,WAAY,IAGlCj3C,EAAkB08D,GAAe,CAC7BxqB,MAAO,CAAC,EACRE,MAAO,CAAC,IAGZ5tM,EAAWk4N,GAAcr4N,UAAWm7M,GAAqB,CACrD2F,aAAciQ,GAAW/wN,UAAU8gN,eAcvC,IAAIyX,GAAiBtyB,GAAUvrM,OAAO,CAClCymM,UAAW,SAASF,EAAcC,GAC9B,IAAI02B,EAAc32B,EAAa/qH,OAAOp6E,EAAIolM,EAAUrrH,GAChD28F,EAAO/+C,EAAMgrC,SAASwiC,EAAa/qH,OAAQ+qH,EAAahhC,SAAU23D,GAEtE,OAAO,IAAIl5D,EAAI8T,EAAKz1K,EAAGy1K,EAAK12K,EAAG02K,EAAKz1K,EAAGy1K,EAAK12K,EAChD,EAEAmpM,eAAgB,WAGZ,GAFAgB,GAAUvmM,GAAGulM,eAAe/iM,KAAKvK,MAE7BA,KAAKutM,WAAavtM,KAAKutM,UAAU/lM,OAAS,EAG1C,IAFA,IAAIq5N,EAvBhB,SAAyB1zF,GAErB,IADA,IAAI0zF,EAAiB,GACZj3N,EAAM,EAAGA,EAAMujI,EAAS3lI,OAAQoC,IAAO,CAC5C,IAAI2gI,EAAU4C,EAASvjI,GACvBi3N,EAAet2F,EAAQm8D,UAAYm6B,EAAet2F,EAAQm8D,WAAa,GACvEm6B,EAAet2F,EAAQm8D,UAAU/kM,KAAK4oI,EAC1C,CAEA,OAAOs2F,CACX,CAciCC,CAAgB9gO,KAAKutM,WAEjC3jM,EAAM,EAAGA,EAAMi3N,EAAer5N,OAAQoC,IAAO,CAClD,IAAIujI,EAAW0zF,EAAej3N,GAC9B,GAAIujI,GAAYA,EAAS3lI,OAAS,EAAG,CACjC,IAAIioM,EAAatiE,EAAS,GAAGmmC,WAAW,GACpC5kC,EAAcpsG,EAAK6qG,GACnBuiE,EAAYptK,EAAKosG,EAAY4kC,YAC7BytD,EAA6C,IAA1BtxB,EAAW7pB,WAC9Bo7C,EAAkBtxB,EAAU9pB,aAAe8pB,EAAU/tB,gBAAkB,EACvEo/C,GAAoBC,GACpB1+L,EAAK6qG,GAAUmmC,WAAW3xK,KAAK8tM,EAEvC,CACJ,CAER,EAEA9B,cAAe,SAASr6B,EAAYmxB,EAAeiC,GAC/C,IASIn8D,EAAU,IATFk6D,EAAct3L,QAGZywL,GACEuP,GAEAd,IAGY/4B,EAAYmxB,EAAeiC,GACnDd,EAAgB5lM,KAAK6lM,oBAAoBpB,GAM7C,OAJInxB,EAAW9rK,SAAWi9L,EAAcr2L,KAAK5G,QAAUo+L,IAAkBpI,KACrEjzD,EAAQpjI,QAAQ0nI,QAAS,GAGtBtE,CACX,IAGJy5B,EAAkB48D,GAAgB,CAC9B1mL,MAAM,EACN2vJ,aAAa,IAGjB,IAAIo3B,GAAyBrxB,GAAkB7sM,OAAO,CAClDssM,WAAY,WAAY,IAGxB6xB,GAAmB3yB,GAAYxrM,OAAO,CACtCssM,WAAY,WAAY,IAGxB8xB,GAAiBP,GAAe79N,OAAO,CACvC4qM,cAAe,SAASr6B,EAAYmxB,EAAeiC,EAAU8H,GACzD,IAEIuB,EACAtB,EACAlkE,EAJA48D,EAAYnnM,KAAKmH,QAAQggM,UACzBh6L,GAASs3L,EAAcl/B,MAAQ,CAAC,GAAGp4J,MAkBvC,OAbIg6L,GAAaT,EAAW,GAAK8H,IAC7BC,EAAcD,EAAYl7B,WAAWzsK,MAAM,GAC3CkpM,EAAkBvB,GAGlBrhM,IAAUywL,IACVrzD,EAAU,IAAI02F,GAAuB3tD,EAAYmxB,EAAeiC,EAAUqJ,EAAiBtB,IACnFtnM,QAAQ0nI,QAAS,GAEzBykC,EAAW3xK,KAAK2xK,EAAW,IAC3B/oC,EAAU,IAAI22F,GAAiB5tD,EAAYmxB,EAAeiC,EAAUqJ,EAAiBtB,IAGlFlkE,CACX,EAEAs7D,oBAAqB,SAAS52J,GAC1B,OAAOA,EAAO22J,eAAiBnyL,EACnC,IAGA2tN,GAAepC,GAAaj8N,OAAO,CACnCoF,KAAM,SAASO,EAAOvB,GAClB63N,GAAaj3N,GAAGI,KAAKoC,KAAKvK,KAAM0I,EAAO,KAAMvB,EACjD,EAEAilM,SAAU,WACN,OAAOpsM,KAAK4lL,UAChB,IAGJ5hB,EAAkBo9D,GAAc,CAC5Bt0D,QAAS,CACL9mB,SAAU,QAEdovB,OAAQ,CACJ52F,SAAU,MAIlB,IAAI6iJ,GAAqBr3D,EAAajnK,OAAO,CACzCoF,KAAM,SAAShB,GACX6iK,EAAajiK,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAEhCnH,KAAKsB,QAAU6F,EAAQi5I,IAAMxO,GAAiBtwI,EAClD,EAEA+wI,OAAQ,SAASu2B,GACb,IACIzhK,EADMnH,KACQmH,QACdouC,EAFMv1C,KAESu1C,SACfnkC,EAAMjK,EAAQiK,IACdogI,EAAUrqI,EAAQqqI,QAClBl2H,EAAQi6B,EAAS/tC,OACjBoqM,EAAQt2L,EAAQlK,EAAOogI,GAAWl2H,EAAQ,GAC1CsyK,EAAYhlB,EAAOxuC,MAAQw3E,EAC3Bx3E,EAAQwuC,EAAOrmC,WAAaqrD,GAAax8K,EAAM,GAEnDpR,KAAKsB,QAAQi0C,GAAU,SAAU1R,GAC7B,IAAIy9L,EAAa14D,EAAOxhK,QACxBk6N,EAAW/+F,WAAanI,EACxBknG,EAAWlnG,MAAQwzD,EAEf/pJ,EAAM+kI,SACN04D,EAAWh1M,OAASuX,EAAM+kI,OAAOt8I,QAGrCuX,EAAMwuG,OAAOivF,GACbz9L,EAAM+kI,OAAS04D,EAEflnG,GAASwzD,EAAaA,EAAYp8C,CACtC,GACJ,IAGJwyB,EAAkBq9D,GAAoB,CAClCjwN,IAAK,EACLogI,QAAS,IAGb,IAAI+vF,GAAmBv3D,EAAajnK,OAAO,CACvCsvI,OAAQ,SAASu2B,GACb,IACIvyJ,EADMrW,KACQmH,QAAQkP,QACtBk/B,EAFMv1C,KAESu1C,SACfk1H,EAAgBl1H,EAAS/tC,OACzB0C,EAAQmM,EAAUo0J,EAAgB,EAAI,EACtC33H,EAAOz8B,GAAW,EAAI,EAE1BrW,KAAKs5C,IAAM,IAAIytH,EAEf,IAAK,IAAIx/J,EAAI2C,EAAO3C,GAAK,GAAKA,EAAIkjK,EAAeljK,GAAKurC,EAAM,CACxD,IAAI0uL,EAAcjsL,EAAShuC,GAAGqhK,OAC9B44D,EAAYj/F,WAAaqmC,EAAOrmC,WAChCi/F,EAAYpnG,MAAQwuC,EAAOxuC,KAC/B,CACJ,IAGAqnG,GAAgBzvB,GAASjvM,OAAO,CAChC4jM,UAAW,WACP,OAAOy6B,EACX,EAEAnvB,YAAa,WACT,OAAOovB,EACX,EAEAnvB,UAAW,WACP,OAAOqvB,EACX,EAEAj4B,aAAc,SAAS1T,EAAchQ,GACjC,OAAOgQ,EAAand,QAAQmN,EAChC,EAEA4jB,UAAW,SAASF,EAAcC,GAC9B,IAAI1uB,EAAOyuB,EAAaliM,QACpBjD,EAAImlM,EAAa/qH,OAAOp6E,EAK5B,OAHA02K,EAAKvuJ,OAASnoB,EAAIolM,EAAUrrH,GAC5B28F,EAAKxS,YAAclkK,EAAIolM,EAAUnrH,GAE1By8F,CACX,EAEA8uB,YAAa,SAASxtE,EAAOqtE,GACzBrtE,EAAMysC,OAAS4gC,EACfrtE,EAAMkW,QACV,EAEAw4B,gBAAiB,WACb7qK,KAAKmH,QAAQmrF,UAAU/T,OAASv+E,KAAKs5C,IAAI2uH,SAAS1pF,SAClDyzH,GAASjqM,GAAG8iK,gBAAgBtgK,KAAKvK,KACrC,IAGJyhO,GAAcp5N,UAAUgqI,OAAS2zD,GAAiB39L,UAAUgqI,OAE5D2xB,EAAkBy9D,GAAe,CAC7BvnL,MAAM,EACN2vJ,aAAa,EACbv3G,UAAW,CACP5sF,KAAM,SAId,IAAIg8N,GAAgBjC,GAAkB18N,OAAO,CACzC28N,gBAAiB,WACb,IAAI9pC,EAAe,IAAInrK,EAAQqiK,kBAAkB9sL,KAAKmH,QAAQyuL,aAAc51L,KAAKuqK,cAEjFvqK,KAAKkuL,UAAY0H,EACjB51L,KAAK41L,aAAeA,EACpB51L,KAAK45M,WAAWhkB,GAChB51L,KAAKsqN,sBACLtqN,KAAKoiN,wBACLpiN,KAAKuqN,0BACT,EAEAsV,iBAAkB,SAASj/N,GAevB,OAdIZ,KAAK2hO,eACLn5N,EAAW5H,EAAU,CACjBo4K,eAAgB,CAAEtzK,KAAM06J,GACxB2Y,eAAgB,CAAErzK,KAAM06J,KAI5BpgK,KAAK4hO,eACLp5N,EAAW5H,EAAU,CACjBooL,kBAAkB,EAClB5T,OAAQ,CAAEnkK,OAAQ,QAInBzI,EAAW5H,EAAUZ,KAAKmH,QAAQo5K,UAC7C,EAEA+pC,oBAAqB,WAEjBP,GAAoB1hN,UAAUiiN,oBAAoB//M,KAAKvK,KAAMA,KAAKq7M,MACtE,EAEAkP,yBAA0B,WACtBR,GAAoB1hN,UAAUkiN,yBAAyBhgN,KAAKvK,KAAMA,KAAKq7M,MAC3E,EAEAqP,aAAc,SAASjmB,GAEnB,OAAOA,CACX,EAEA0d,iBAAkB,SAASh7M,EAAS8nC,GAChC,IAAImkJ,EAAY22B,GAAoB1hN,UAAU85M,iBAAiB53M,KAAKvK,KAAMmH,EAAS8nC,GAKnF,OAJImkJ,IACAA,EAAU1tL,KAAOw5L,IAGd9L,CACX,EAEAo3B,aAAc,WACV,IAAIv7K,EAASjvC,KAAKo9M,oBAAoBp9M,KAAKivC,QACvC2/C,EAAO5uF,KAAKq7M,MAAM,GAEtBr7M,KAAKmrN,gBACD3mB,GAAmBv1J,EAAQ,CAAE+vJ,KAC7BpwG,GAGJ5uF,KAAK4rN,gBACDpnB,GAAmBv1J,EAAQ,CAAEiwJ,KAC7BtwG,GAGJ5uF,KAAKqrN,eACD7mB,GAAmBv1J,EAAQ,CAAEgwJ,KAC7BrwG,EAER,EAEAizI,aAAc,SAAS5yL,GACnB,IAAI9nC,EAAU,CAAE8nC,OAAQA,GACpB69K,EAAc79K,EAAO,GACzB,GAAI69K,EAAa,CACb,IAAIyM,EAAiBv5N,KAAKo9M,oBAAoBnuK,GAC1CklG,EAAQ24E,EAAY34E,MACxBhtI,EAAQggM,UAAYhzD,GAASolF,EAAe/xN,OAAS,EACrDL,EAAQ2/L,aAAe3yD,GAAwB,SAAfA,EAAMzuI,MAAmB6zN,EAAe/xN,OAAS,EAE7EL,EAAQ2/L,eACR9mM,KAAK4hO,eAAgB,EAE7B,CAEA,OAAOz6N,CACX,EAEAgkN,gBAAiB,SAASl8K,EAAQ2/C,GAC9B,GAAsB,IAAlB3/C,EAAOznC,OAAX,CAIA,IAAI2lN,EAAY,IAAIgU,GAAenhO,KAAMA,KAAK6hO,aAAa5yL,IAC3DjvC,KAAK85M,YAAYqT,EAAWv+H,EAH5B,CAIJ,EAEAg9H,gBAAiB,SAAS38K,EAAQ2/C,GAC9B,GAAsB,IAAlB3/C,EAAOznC,OAAX,CAIA,IAAI0lN,EAAY,IAAI0T,GAAe5gO,KAAMA,KAAK6hO,aAAa5yL,IAC3DjvC,KAAK85M,YAAYoT,EAAWt+H,EAH5B,CAIJ,EAEAy8H,eAAgB,SAASp8K,EAAQ2/C,GAC7B,GAAsB,IAAlB3/C,EAAOznC,OAAX,CAIA,IAAIslN,EAAc79K,EAAO,GACrB9nC,EAAUnH,KAAK6hO,aAAa5yL,GAC5BsqL,EAAiBv5N,KAAKo9M,oBAAoBnuK,GAC1Cy9K,EAAmB6M,EAAe5sK,MAAK,SAAU1nD,GAAK,OAAOA,EAAEkvI,KAAO,IACtE2yD,EAAeyyB,EAAe5sK,MAAK,SAAU1nD,GAAK,OAAOA,EAAEkvI,OAA0B,SAAjBlvI,EAAEkvI,MAAMzuI,IAAiB,IACjGyB,EAAQiK,IAAM07M,EAAY17M,IAC1BjK,EAAQqqI,QAAUs7E,EAAYt7E,QAC9BrqI,EAAQogM,aAAeulB,EAAY34E,OAASolF,EAAe/xN,OAAS,EACpEL,EAAQggM,UAAYulB,GAAoB6M,EAAe/xN,OAAS,EAChEL,EAAQ2/L,aAAeA,GAAgByyB,EAAe/xN,OAAS,EAE/D,IAAIulN,EAAW,IAAI0U,GAAczhO,KAAMmH,GACvCnH,KAAK85M,YAAYiT,EAAUn+H,GAE3B5uF,KAAK2hO,eAAgB,CAhBrB,CAiBJ,EAEA17B,mBAAoB,WAChB,OAAOjmM,KAAK41L,YAChB,EAEA6tB,eAAgB,SAASnvC,EAAO3vK,EAAGspN,GAC/B,IAAIzhB,EAASl4B,EAAM45C,kBAAkBvpN,GACjCw3H,EAAQ,IAAIL,EAAM0wE,EAAOpnM,EAAGonM,EAAOroM,GACnC+nK,EAAWlsK,KAAK41L,aAAapU,YAAYrlD,GACzCzzH,EAAQ1I,KAAKugL,UAAUyJ,SAAS7tD,GAEnB,OAAb+vC,GAA+B,OAAVxjK,GACrB4rK,EAAMlqK,QAAQ6jN,EAAW,CACrBpiN,QAASysH,EAAa3zH,GACtBunK,SAAUA,EACVxjK,MAAOA,GAGnB,EAEAuyM,iBAAkB,WAAY,EAE9B4H,kBAAmB,SAASS,GACxB,OAAOmc,GAAkB13N,GAAG86M,kBAAkBt4M,KAAKvK,KAAMsjN,GAAWtnM,KAAKhc,KAAKuuN,sBAClF,EAEAA,oBAAqB,WACjB,OAAO,SAAUrpN,EAAG+W,GAAK,OAAOA,EAAEvT,MAAQxD,EAAEwD,KAAO,CACvD,IAGJF,EAAWk5N,GAAcr5N,UAAWm7M,GAAqB,CACrD1J,YAAaiQ,GAAoB1hN,UAAUyxM,YAC3C+Q,gBAAiBd,GAAoB1hN,UAAUwiN,gBAC/CoB,mBAAoBlC,GAAoB1hN,UAAU4jN,mBAClD9C,aAAcY,GAAoB1hN,UAAU8gN,eAGhDnlD,EAAkB09D,GAAe,CAC7B9rC,aAAc,CACV/V,WAAY,IAEhBU,UAAW,CAAC,IAGhB,IAAIuhD,GAAgB93D,EAAajnK,OAAO,CACpCoF,KAAM,SAASO,EAAOvB,EAASk1N,GAC3BryD,EAAajiK,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAEhCnH,KAAK0I,MAAQA,EACb1I,KAAKmH,QAAQmS,MAAQ+iN,EAAe/iN,KACxC,EAEAyxL,aAAc,SAAS5jM,GACnB,IAAI0xK,EAAgBxV,EAAYl8J,GAEhC,OAAI0xK,EACOA,EAAc74K,KAAK2tK,aACnBxmK,EAAQ8J,OACRjR,KAAKgrM,YAAY7jM,EAAQ8J,QAG7BjR,KAAK0I,KAChB,EAEA2pI,OAAQ,SAAS0vF,GACb,IAAI3+F,EAASpjI,KAAKojI,OACd9uG,EAAQt0B,KAAKu1C,SAAS,GACtB0oC,EAAK56E,KAAKqT,IAAI0sH,EAAO,GAAGh+H,EAAGg+H,EAAO,GAAGh+H,GACrC+4E,EAAK96E,KAAK8V,IAAIiqH,EAAO,GAAGh+H,EAAGg+H,EAAO,GAAGh+H,GAEzCpF,KAAKs5C,IAAM,IAAIytH,EAAI9oF,EAAImlD,EAAO,GAAGj/H,EAAGg6E,EAAIilD,EAAO,GAAGj/H,GAE9CmwB,GACAA,EAAM+9G,OAAO,IAAI00B,EAAIg7D,EAAS9jJ,GAAImlD,EAAO,GAAGj/H,EAAG49N,EAAS5jJ,GAAIilD,EAAO,GAAGj/H,GAE9E,EAEAwmK,aAAc,WACV,IAGI1pB,EAHAhuB,EAAWjzH,KAEXmH,EAAUnH,KAAKmH,QAGnB6iK,EAAajiK,GAAG4iK,aAAapgK,KAAKvK,MAElCA,KAAKkxM,sCAGDjwD,EADA95I,EAAQ85I,OACC95I,EAAQ85I,OAAO,CACpBirB,SAAUlsK,KAAKksK,SACfztG,SAAUz+D,KAAKy+D,SACf/1D,MAAO1I,KAAK0I,MACZumC,OAAQjvC,KAAKivC,OACbpiB,WAAY7sB,KAAK6sB,WACjBu2G,OAAQpjI,KAAKojI,OACbj8H,QAASA,EACTmD,OAAQtK,KAAKoqK,YACbO,aAAc,WAAc,OAAO13C,EAAS+uG,YAAc,IAGrDhiO,KAAKgiO,eAIdhiO,KAAKihJ,OAAO9mG,OAAO8mG,EAE3B,EAEA+gF,WAAY,WACR,IAAI76N,EAAUnH,KAAKmH,QACfulK,EAASvlK,EAAQulK,OAarB,OAZWn+B,GAAKvQ,WAAWh+H,KAAKojI,OAAQ,CACpC1vG,KAAM,CACFu9F,MAAO9pH,EAAQ8pH,MACfl6F,QAAS5vB,EAAQ4vB,SAErB6oG,OAAQ,CACJ3O,MAAOy7C,EAAOz7C,MACdl6F,QAAS21I,EAAO31I,QAChBhrB,MAAO2gK,EAAO3gK,SAEnB25C,OAGP,EAEAkmH,gBAAiB,SAASz+J,GACtB,OAAOohI,GAAKvQ,WAAWh+H,KAAKojI,OAAQj2H,EACxC,EAEAs+L,gBAAiB,WACb,OAAOzrM,KAAKihJ,OAAO1rG,SAAS,EAChC,EAEA02H,oBAAqB,WACjB,IAAI18H,EAAOg/F,GAAKvQ,WAAWh+H,KAAKojI,QAAQ19E,QAExC,MAAO,CACHv+C,QAASnH,KAAKmH,QACdooC,KAAMA,EAEd,EAEAo9H,qBAAsB,SAASx/J,GAC3B,IAAIigK,EAAcptK,KAAKmH,QAAQklK,cAAcV,UAAUe,OAAO3gK,MAC1D+K,EAASy3H,GAAKvQ,WAAWh+H,KAAKojI,OAAQ56H,EAAW,CAAC,EAAG2E,EAAO,CAC5DyyH,OAAQ,CACJ7zH,MAAqB,EAAdqhK,MAEX1nH,QAEA2pG,EAAW,IAAIjgB,GAOnB,OALAigB,EAASvhG,MAAMnsD,KAAK4sI,GAAKc,SAASrvI,KAAKs5C,IAAIlyC,QAAQoE,IAAI4hK,GAAanF,WACpE5Y,EAASvhG,MAAMnsD,KAAK4sI,GAAKvQ,WAAWh+H,KAAKojI,SAEzCtsH,EAAOojC,KAAKm1G,GAELv4I,CACX,EAEA80L,cAAe,WACX,IAAItyJ,EAAMt5C,KAAKs5C,IACf,MAAO,CACH6iF,MAAO,IAAIL,EAAMxiF,EAAIilC,SAASn5E,EAAGk0C,EAAI4kC,IACrCgzD,MAAO,CACHx+F,WAAY,SACZF,SAAU,OAGtB,EAEAw4J,YAAa,SAAS/5L,GAElB,OADYjR,KACC6oM,MAAMyB,iBADPtqM,KAC+BiR,EAC/C,EAEA08J,UAAW,WACP,MAAO,CACHlvG,SAAUz+D,KAAKy+D,SACfytG,SAAUlsK,KAAKksK,SACfxjK,MAAO1I,KAAK0I,MACZumC,OAAQjvC,KAAKivC,OACbpiB,WAAY7sB,KAAK6sB,WAEzB,EAEAu/K,SAAU,WACN,OAAOpsM,KAAKsZ,KAChB,IAGJ0qJ,EAAkB89D,GAAe,CAC7B7wG,MAAOowC,EACPqL,OAAQ,CACJ3gK,MAAO,GAEXqpK,OAAQ,CACJnkK,OAAQ,IAEZo7J,cAAe,CACX77I,KAAMmxK,GACNt0K,UAAWu0K,GACXrmD,oBAAqBsmD,MAI7Br5L,EAAWs5N,GAAcz5N,UAAWkiM,IACpC/hM,EAAWs5N,GAAcz5N,UAAW8oM,IAEpC,IAAI8wB,GAAcj4D,EAAajnK,OAAO,CAClCoF,KAAM,SAASgwK,EAAUhxK,GACrB6iK,EAAajiK,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAEhCnH,KAAKm4K,SAAWA,EAChBn4K,KAAKuqK,aAAe4N,EAAS5N,aAC7BvqK,KAAKojI,OAAS,GACdpjI,KAAKo1K,OAAS,GACdp1K,KAAK87N,YAAc,GACnB97N,KAAKmQ,QACT,EAEAm6L,iBAAkB,SAASnuE,EAAOlrH,GAC9B,OAAOjR,KAAKm4K,SAAS5N,aAAat5J,OAAOiiK,KAAKjiK,EAAOkrH,EAAMzzH,MAC/D,EAEAyH,OAAQ,WACJ,IAAI8iH,EAAWjzH,KAIXmH,EADMnH,KACQmH,QACdkxL,EAFMr4L,KAEam4K,SAAShxK,QAAQkxL,kBAAmC,IAAjBA,IAA2BA,EAAe,IACpG,IAAIppJ,EAAS9nC,EAAQ8nC,OAJN,GAKX7gC,EAAO6gC,EAAO7gC,KAElB,GAAKA,EAQL,IAJA,IAAIskI,EAAQuxD,GAAah1J,GACrB+X,EAAQ0rF,EAAM1rF,MACdo8E,EAASsP,EAAMtP,OAEV77H,EAAI,EAAGA,EAAI67H,EAAO57H,OAAQD,IAAK,CACpC,IAAIomK,EAAYvqC,EAAO77H,GAEvB,GAAKomK,EAAL,CAIA,IAAIl+I,EAASk+I,EAAUl+I,OAElBvmB,EAAW+lC,EAAOgiF,SACnBhiF,EAAOgiF,MAAQxhG,EAAOwhG,OAASonE,EAAa9wL,EAAI8wL,EAAa7wL,SAGjEioB,EAASjnB,EAAW,CAChB8Q,MAAO/R,EACPshM,MAAO51E,EACPhkF,OAAQA,EACRy3J,SAhCO,EAiCPjoI,SAAUrwD,EAAK7G,GACfslB,WAAY8gJ,EAAUjlK,MAAQs+C,GAC/Bv3B,EAAQ,CAAEziB,QAAS2gK,EAAU3gK,UAEhC,IAAItE,EAAQilK,EAAU+sB,YAAYhyL,MAC9B6hI,EAAUtX,EAAS06E,cAAcjlM,EAAO+mB,GACxC6E,EAAQ2+F,EAASg1D,YAAYv/K,EAAO+mB,GAEpC86G,GAAWj2G,GACXi2G,EAAQpwF,OAAO7lB,EAtBnB,CAwBJ,CACJ,EAEA8nM,mBAAoB,SAASj1N,EAASuB,EAAO+mB,GACzC,IAAIwf,EAASxf,EAAOwf,OAEpBm1J,GAAYj9L,EAAS,CACjBuB,MAAOA,EACPumC,OAAQA,EACRwvB,SAAUhvC,EAAOgvC,SACjBnlD,MAAOmW,EAAOnW,OACf,CAAE1Y,SAAUquC,EAAO+5J,UAAWzE,SAAU,CACvC,OAAQ,UAAW,WAAY,SAAU,SACzC,eAAgB,gBAExB,EAEAoJ,cAAe,SAASjlM,EAAO+mB,GAC3B,IAAI42K,EAAgB79L,EAAW,CAAC,EAAGinB,EAAOwf,QAK1C,GAJAjvC,KAAKo8N,mBAAmB/1B,EAAe39L,EAAO+mB,GAE9CzvB,KAAK27N,iBAAiBjzN,EAAO29L,EAAe52K,IAErB,IAAnBA,EAAOziB,QAAmB,CAE1B,IAAIu9H,EAAU,IAAIu3F,GAAcp5N,EAAO29L,EAAe52K,GAMtD,OALA9sB,EAAEI,OAAOwnI,EAAS96G,GAElBzvB,KAAKm6C,OAAOowF,GACZvqI,KAAKojI,OAAOzhI,KAAK4oI,GAEVA,CACX,CACJ,EAEA09C,YAAa,SAASv/K,EAAO+mB,GACzB,IAAIwf,EAASxf,EAAOwf,OAChBwvB,EAAWhvC,EAAOgvC,SAClB22G,EAAS5sK,EAAW,CAAC,EAAGxI,KAAKmH,QAAQiuK,OAAQnmI,EAAOmmI,QACpDt0I,EAAOp4B,EAEX,GAAI0sK,EAAOpoK,QAAS,CAChB,IAAI6rK,EAAgBxV,EAAY+R,GAC5BhnK,EAAO,CACPqwD,SAAUA,EACV/1D,MAAOA,EACPmkB,WAAY4C,EAAO5C,WACnBq/I,SAAUz8I,EAAOy8I,SACjBj9H,OAAQA,GAER4pI,EACA/3I,EAAO+3I,EAAczqK,GACdgnK,EAAOnkK,SACd6vB,EAAO9gC,KAAKuqK,aAAat5J,OAAOiiK,KAAKkC,EAAOnkK,OAAQ6vB,IAGnDs0I,EAAOnkD,QACRmkD,EAAOnkD,MAAQ0zC,GAAc11H,EAAOgiF,OAC/BmkD,EAAOtgB,aACRsgB,EAAOtgB,WAAa7lH,EAAOgiF,QAInCjxH,KAAKo8N,mBAAmBhnD,EAAQ1sK,EAAO+mB,GACvC,IAAI0pI,EAAU,IAAIyX,EAAQ9vI,EAAMt4B,EAAW,CACvC4xJ,OAAQgb,EAAO9nK,UAChB8nK,GAAShnK,GAIZ,OAFApO,KAAKo1K,OAAOzzK,KAAKw3J,GAEVA,CACX,CACJ,EAEA+oE,aAAc,WAIV,IAHA,IAAI9sD,EAASp1K,KAAKo1K,OACdp9B,EAAU,CAAExrH,KAAM,EAAGC,MAAO,GAEvBllB,EAAI,EAAGA,EAAI6tK,EAAO5tK,OAAQD,IAAK,CACpC,IACI2pI,EADQkkC,EAAO7tK,GACDJ,QAAQ+pI,MAC1B,GAAIA,IAAUjgD,EAAQ,CAClB,IAAIllF,EAAQqpK,EAAO7tK,GAAG+xC,IAAIvtC,QAEtBmlI,IAAU9lH,EACV4sH,EAAQxrH,KAAOnpB,KAAK8V,IAAI6+H,EAAQxrH,KAAMzgB,GAEtCisI,EAAQvrH,MAAQppB,KAAK8V,IAAI6+H,EAAQvrH,MAAO1gB,EAEhD,CACJ,CAEA,OAAOisI,CACX,EAEAmqF,mBAAoB,SAAS7oL,EAAKvtC,EAAOq2N,GAQrC,IAPA,IACIj7N,EADMnH,KACQmH,QACdgmI,EAFMntI,KAESojI,OACf9nH,EAAQ6xH,EAAS3lI,OACjB66N,EAAel1F,EAAS,GACxBm1F,EAAaD,EAERz4N,EAAM,EAAGA,EAAMujI,EAAS3lI,OAAQoC,IACjCujI,EAASvjI,GAAKijB,WAAay1M,EAAWz1M,aACtCy1M,EAAan1F,EAASvjI,IAQ9B,IAJA,IAAI24N,EAAiBF,EAAax1M,WAAay1M,EAAWz1M,WAAc9gB,EACpEy2N,GAAkBz2N,EAAQw2N,GAAiB,EAC3CE,EAAiB,EAEZ7nD,EAAQ,EAAGA,EAAQt/J,EAAOs/J,IAAS,CACxC,IAAI/tJ,EAAasgH,EAASytC,GAAO/tJ,WAC7B61M,EAAcv1F,EAASytC,EAAQ,GAC/B+nD,EAAkBD,EAAcA,EAAY71M,WAAaA,EACzDu2G,EAAS+J,EAASytC,GAAOx3C,OAAS,GAClCp3H,EAAU7E,EAAqB,cAAKi7N,EAAcv1M,EAAeu1M,EAAc9mN,EAC/EwC,OAAS,EAQbA,EAAS06G,EAHL16G,EAHC+O,GAGS9gB,EAAQw2N,GAAiBI,EAAiB91M,IAAe,EAF1D81M,EAAiB,EAAI52N,EAAQ,EAKd,EAAGA,GAE/Bq3H,EAAOzhI,KAAK,IAAIw3L,GAAc7/I,EAAI2kC,GAAKukJ,EAAgBlpL,EAAI4kC,GAAKukJ,IAChEr/F,EAAOzhI,KAAK,IAAIw3L,GAAc7/I,EAAI2kC,GAAKlyE,EAAQy2N,EAAgBlpL,EAAI4kC,GAAKukJ,IACxEr/F,EAAOzhI,KAAK,IAAIw3L,GAAc7/I,EAAI2kC,GAAKlyE,EAAQ+R,EAAQw7B,EAAI4kC,GAAKlyE,EAASy2N,IACzEr/F,EAAOzhI,KAAK,IAAIw3L,GAAc7/I,EAAI2kC,GAAKngE,EAAQw7B,EAAI4kC,GAAKlyE,EAASy2N,IAEjED,EAAiB1kN,EACjB2kN,GAAkBz2N,EAAS7E,EAAQy7N,eACnCL,EAAgB/pG,EAAWzsH,EAAQ,EAAI+R,EAAQ,EAAG/R,EACtD,CACJ,EAEA82N,oBAAqB,SAASvpL,EAAKvtC,EAAOq2N,GAYtC,IAXA,IACIj7N,EADMnH,KACQmH,QACdgmI,EAFMntI,KAESojI,OACf9nH,EAAQ6xH,EAAS3lI,OACjBs7N,EAAkB37N,EAAQ47N,WAAa,EACvCA,EAAYD,EAAkB37N,EAAQ47N,UAAYh3N,EAAQA,EAC1Dy2N,EAAiBM,EAAkB,GAAK/2N,EAAQA,EAAQ5E,EAAQ47N,WAAa,EAE7EC,IADeF,EAAkB/2N,EAAQA,EAAyB,EAAjBy2N,GACnBO,GAAa,EAC3CN,EAAiB,EAEZ74N,EAAM,EAAGA,EAAM0R,EAAO1R,IAAO,CAClC,IAAIw5H,EAAS+J,EAASvjI,GAAKw5H,OAAS,GAChCv2G,EAAasgH,EAASvjI,GAAKijB,WAC3B/O,EAAU3W,EAAqB,cAAK67N,EAAcn2M,EAAem2M,EAAc1nN,EAC/EtP,EAAU7E,EAAqB,cAAKi7N,EAAcv1M,EAAeu1M,EAAc9mN,EAEnF8nH,EAAOzhI,KAAK,IAAIw3L,GAAc7/I,EAAI2kC,GAAKukJ,EAAgBlpL,EAAI4kC,GAAKukJ,IAChEr/F,EAAOzhI,KAAK,IAAIw3L,GAAc7/I,EAAI2kC,GAAKlyE,EAAQy2N,EAAgBlpL,EAAI4kC,GAAKukJ,IACxEr/F,EAAOzhI,KAAK,IAAIw3L,GAAc7/I,EAAI2kC,GAAKlyE,EAAQy2N,EAAiB1kN,EAAQw7B,EAAI4kC,GAAKlyE,EAASy2N,IAC1Fr/F,EAAOzhI,KAAK,IAAIw3L,GAAc7/I,EAAI2kC,GAAKukJ,EAAiB1kN,EAAOw7B,EAAI4kC,GAAKlyE,EAASy2N,IACjFD,GAAkB1kN,EAClB2kN,GAAkBz2N,EAAS7E,EAAQy7N,cACvC,CACJ,EAEAvwF,OAAQ,SAAS0vF,GACb,IAAI3+F,EAASpjI,KAAKojI,OACd9nH,EAAQ8nH,EAAO57H,OAEnB,GAAK8T,EAAL,CAIA,IAAInU,EAAUnH,KAAKmH,QACfmyC,EAAMyoL,EAAS36N,QAAQqgK,MAAMznK,KAAKkiO,gBAClCE,EAAc9oL,EAAIttC,SAAW7E,EAAQy7N,gBAAkBtnN,EAAQ,GAC/DvP,EAAQutC,EAAIvtC,QAEZ5E,EAAQ87N,aACRjjO,KAAKmiO,mBAAmB7oL,EAAKvtC,EAAOq2N,GAEpCpiO,KAAK6iO,oBAAoBvpL,EAAKvtC,EAAOq2N,GAGzC,IAAK,IAAIx4N,EAAM,EAAGA,EAAM0R,EAAO1R,IAC3Bw5H,EAAOx5H,GAAKyoI,OAAO0vF,EAdvB,CAgBJ,IAGJ/9D,EAAkBi+D,GAAa,CAC3Bc,UAAW,GACXh3N,MAAO,IACPk3N,cAAc,EACdC,eAAe,EACfN,eAAgB,EAChBxtD,OAAQ,CACJpoK,SAAS,EACTkkI,MAAOjgD,EACP3jF,SAAU2jF,EACVj3C,OAAQ,KAIhBxxC,EAAWy5N,GAAY55N,UAAWqzN,IAElC,IAEIyH,GAAelB,GAAYl/N,OAAO,CAClCoF,KAAM,SAASgwK,EAAUhxK,GACrBA,EAAQ87N,cAAe,EACvB97N,EAAQ47N,UALK,IAObd,GAAYl6N,GAAGI,KAAKoC,KAAKvK,KAAMm4K,EAAUhxK,EAC7C,IAGAi8N,GAAiB1oB,GAAa33M,OAAO,CACrCoN,OAAQ,WACJnQ,KAAKqjO,YAAYpB,GAAaz9B,GAAmBxkM,KAAKivC,OAAQ,CAAEqvJ,MAChEt+L,KAAKqjO,YAAYF,GAAc3+B,GAAmBxkM,KAAKivC,OAAQ,CAAEsvJ,KACrE,EAEA8kC,YAAa,SAASC,EAAWr0L,GAC7B,IAAI69K,EAAc79K,EAAO,GACzB,GAAK69K,EAAL,CAIA,IAAIx4C,EAAQ,IAAIgvD,EAAUtjO,KAAM,CAC5BivC,OAAQA,EACR6mJ,OAAQ91L,KAAKmH,QAAQ2uL,OACrBitC,UAAWjW,EAAYiW,UACvBG,cAAepW,EAAYoW,cAC3BD,aAAcnW,EAAYmW,aAC1BL,eAAgB9V,EAAY8V,eAC5Bj3D,UAAWmhD,EAAYnhD,YAG3B3rK,KAAK85M,YAAYxlC,EAZjB,CAaJ,EAEAwlC,YAAa,SAASxlC,EAAO1lF,GACzB8rH,GAAa3yM,GAAG+xM,YAAYvvM,KAAKvK,KAAMs0K,EAAO1lF,GAC9Cz0C,EAAOn6C,KAAKmH,QAAQ2uL,OAAO1nL,KAAMkmK,EAAMwnD,YAC3C,EAEAjZ,kBAAmB,SAASS,GACxB,OAAOtjN,KAAKqhN,oBAAoBiC,EAAUr0K,OAAO31B,MACrD,EAEAypM,mBAAoB,SAAS5mF,GACzB,OAAOn8H,KAAK2iN,cAAcxmF,EAC9B,EAEA8mF,kBAAmB,SAAS9mF,GACxB,OAAOn8H,KAAK8iN,cAAc3mF,EAC9B,IAoBAonG,GAAev5D,EAAajnK,OAAO,CACnCoF,KAAM,SAASO,EAAOvB,GAClB6iK,EAAajiK,GAAGI,KAAKoC,KAAKvK,MAE1BA,KAAKmH,QAAUA,EACfnH,KAAKixH,MAAQ9pH,EAAQ8pH,OAASowC,EAC9BrhK,KAAK0I,MAAQA,CACjB,EAEAyH,OAAQ,WACAnQ,KAAK4qM,YAIT5qM,KAAK4qM,WAAY,EAEjB5qM,KAAK6qM,eACL7qM,KAAKioL,cACLjoL,KAAKyqM,aACT,EAEAxiB,YAAa,WACT,IACI7S,EADUp1K,KAAKmH,QACEiuK,OAEjBA,EAAOpoK,UACPhN,KAAKs0B,MAAQt0B,KAAK8qM,mBAAmB11B,GACrCp1K,KAAKm6C,OAAOn6C,KAAKs0B,OAEzB,EAEAw2K,mBAAoB,SAAS3jM,GACzB,IAAIq8N,EAAar8N,EAAQ8pH,MAMzB,OAJKuyG,IACDA,EAAa7+D,GAAc3kK,KAAKixH,QAG7B,IAAI2/C,EAAQ5wK,KAAK+qM,aAAa5jM,GACjCqB,EAAW,CACP0oI,MAAOjgD,EACPmpE,OAAQnpE,EACRl4C,OAAQ,CACJvsB,KAAM,EACNC,MAAO,GAEXutB,OAAQg/E,EAAe7xH,EAAQ6yC,OAAQh6C,KAAKivC,OAAO+K,SAEvD7yC,EAAS,CACL8pH,MAAOuyG,IAEXxjO,KAAK2tK,YAEb,EAEAo9B,aAAc,SAAS5jM,GACnB,IAAI0xK,EAAgBxV,EAAYl8J,GAEhC,OAAI0xK,EACOA,EAAc74K,KAAK2tK,aAGvB3tK,KAAKgrM,YAAY7jM,EAAQ8J,OACpC,EAEA+5L,YAAa,SAAS/5L,GAClB,OAAOjR,KAAK6oM,MAAMyB,iBAAiBtqM,KAAMiR,EAC7C,EAEAohI,OAAQ,SAAS20B,GACbhnK,KAAKmQ,SAEL,IAAImkB,EAAQt0B,KAAKs0B,MAEjBt0B,KAAKs5C,IAAM0tH,EAEP1yI,GACAA,EAAM+9G,OAAOryI,KAAKmrM,aAGlBnrM,KAAK+2K,MACL/2K,KAAK+2K,KAAK1kC,OAAO20B,GAGrBhnK,KAAK0oD,OAAO2pF,OAAOryI,KAAKmrM,YAC5B,EAEAxgC,aAAc,WACVX,EAAajiK,GAAG4iK,aAAapgK,KAAKvK,MAElCA,KAAKkxM,oCACT,EAEA/F,UAAW,WACP,IACInZ,EADUhyL,KAAKmH,QACG6qL,QAClBtlB,EAASslB,EAAQtlB,OACjBpgF,EAAOtsF,KAAKs5C,IAAI2uH,SAEhBw7D,EADOzqG,EAAeg5D,EAAQtsL,KAAM,UACbwzL,EAAiB/3B,aACxCiM,EAAcp0C,EAAe0zC,EAAO3gK,MAAO03N,EAAc,EAAI,GAC7DC,EAAkBrgO,KAAKiT,MAAM82J,EAAc,GAE/C,GAAI4kB,EAAQhiL,KAAM,CACd,IAAIuuE,EAAS+N,EAAK/N,SAClB+N,EAAKt8E,KAAKjE,MAAQugF,EAAKt8E,KAAKhE,OAASgmL,EAAQhiL,KAC7Cs8E,EAAKtzC,OAAO5zC,EAAI/B,KAAKiT,MAAMioE,EAAOn5E,EAAIknF,EAAKt8E,KAAKjE,MAAQ,GACxDugF,EAAKtzC,OAAO70C,EAAId,KAAKiT,MAAMioE,EAAOp6E,EAAImoF,EAAKt8E,KAAKhE,OAAS,EAC7D,CAOA,OALAsgF,EAAKt8E,KAAKjE,OAASqhK,EACnB9gF,EAAKt8E,KAAKhE,QAAUohK,EACpB9gF,EAAKtzC,OAAO70C,GAAKu/N,EAAkB,GACnCp3I,EAAKtzC,OAAO5zC,GAAKs+N,EAAkB,GAE5Bj5M,EAAQimJ,UAAUpkF,EAC7B,EAEA4+G,aAAc,WACV,IAAI/jM,EAAUnH,KAAKmH,QAEfulK,EADUvlK,EAAQ6qL,QACDtlB,OACjB31I,EAAUiiG,EAAe0zC,EAAO31I,QAAS5vB,EAAQ4vB,SAErD,MAAO,CACHk6F,MAAOy7C,EAAOz7C,OAASjxH,KAAKixH,MAC5BllH,MAAO2gK,EAAO3gK,MACdgrB,QAASA,EACT8nH,SAAU6tB,EAAO7tB,SAEzB,EAEAgsD,aAAc,WACV,IAAI1jM,EAAUnH,KAAKmH,QACfwkM,EAAgBxkM,EAAQ6qL,QACxBtpI,EAAS,IAAIglH,EAAa,CAC1BhoK,KAAMszH,EAAe2yE,EAAcjmM,KAAM,QACzCqG,MAAO4/L,EAAc37L,KACrBhE,OAAQ2/L,EAAc37L,KACtB+pC,SAAU4xJ,EAAc5xJ,SACxB+6G,WAAY90J,KAAKixH,MACjBy7C,OAAQ1sK,KAAKkrM,eACbr9B,aAAc89B,EAAc99B,aAC5B92I,QAAS/2B,KAAKivC,OAAOlY,SAAW5vB,EAAQ4vB,QACxCijB,OAAQg/E,EAAe7xH,EAAQ6yC,OAAQh6C,KAAKivC,OAAO+K,QACnDs4C,UAAWnrF,EAAQmrF,UACnB2uD,OAAQ95I,EAAQ85I,QACjB,CACCxiF,SAAUz+D,KAAKy+D,SACf/1D,MAAO1I,KAAK0I,MACZumC,OAAQjvC,KAAKivC,OACbi9H,SAAUlsK,KAAKksK,WAGnBlsK,KAAK0oD,OAASA,EACd1oD,KAAKm6C,OAAOuO,EAChB,EAEAkjH,gBAAiB,SAASz+J,GACtB,IAAIhG,EAAUnH,KAAKmH,QACfwkM,EAAgB3rM,KAAKmH,QAAQwkK,UAAUqmB,SAAWhyL,KAAKmH,QAAQ6qL,QAE/DrmB,EAAY,IAAI+B,EAAa,CAC7BhoK,KAAMszH,EAAe2yE,EAAcjmM,KAAM,QACzCqG,MAAO4/L,EAAc37L,KACrBhE,OAAQ2/L,EAAc37L,KACtB+pC,SAAU4xJ,EAAc5xJ,SACxB+6G,WAAY62C,EAAc16E,OAASjxH,KAAKixH,MACxCy7C,OAAQ1sK,KAAKkrM,eACbr9B,aAAc89B,EAAc99B,aAC5B92I,QAAS/2B,KAAKivC,OAAOlY,SAAW5vB,EAAQ4vB,QACxCijB,OAAQg/E,EAAe7xH,EAAQ6yC,OAAQh6C,KAAKivC,OAAO+K,UAGvD2xH,EAAUt5B,OAAOryI,KAAKmrM,aACtB,IAAIlqD,EAAS0qB,EAAUiC,aAKvB,OAHA3sB,EAAO95I,QAAQusB,KAAOvmB,EAAMumB,KAC5ButH,EAAO95I,QAAQy4H,OAASzyH,EAAMyyH,OAEvBqhB,CACX,EAEAwqD,gBAAiB,WACb,OAAOzrM,KAAKqxM,UAChB,EAEAplC,oBAAqB,WACjB,MAAO,CACH9kK,QAASnH,KAAKmH,QACdmlF,KAAMtsF,KAAKs5C,IAAI2uH,SACfhnB,OAAQjhJ,KAAKqxM,WAErB,EAEA1kC,qBAAsB,WAClB,IAAIg/B,EAAgB3rM,KAAKmH,QAAQ6qL,QAC7BhmB,EAAmBhsK,KAAKmH,QAAQklK,cAAcV,UAE9CA,EAAY,IAAI+B,EAAa,CAC7BhoK,KAAMszH,EAAe2yE,EAAcjmM,KAAM,QACzCqG,MAAO4/L,EAAc37L,KACrBhE,OAAQ2/L,EAAc37L,KACtB+pC,SAAU4xJ,EAAc5xJ,SACxB+6G,WAAYkX,EAAiB/6C,MAC7By7C,OAAQV,EAAiBU,OACzBmB,aAAc89B,EAAc99B,aAC5B71B,QAASg0B,EAAiBU,OAAO3gK,MAAQ,EACzCiuC,OAAQgyH,EAAiBhyH,SAK7B,OAFA2xH,EAAUt5B,OAAOryI,KAAKmrM,aAEfx/B,EAAUiC,YACrB,EAEAg+B,cAAe,WACX,IAAIp/K,EAAOxsB,KAAKs5C,IAAIilC,SAASn5E,EACzB8f,EAAMllB,KAAKs5C,IAAI4kC,GA54dN,EA84db,MAAO,CACHi+C,MAAO,IAAIL,EAAMtvG,EAAMtH,GACvBgsH,MAAO,CACHx+F,WAAYu+C,EACZz+C,SAAU2+C,GAGtB,EAEA66G,YAAa,SAAS1yJ,GAClB,OAAOt5C,KAAKs5C,IAAIquH,SAASruH,EAC7B,EAEA2yJ,eAAgB,WAEhB,EAEAt+B,UAAW,WACP,MAAO,CACHvoK,EAAGpF,KAAK0I,MAAMtD,EACdjB,EAAGnE,KAAK0I,MAAMvE,EACduE,MAAO1I,KAAK0I,MAAMA,MAClB+1D,SAAUz+D,KAAKy+D,SACfxvB,OAAQjvC,KAAKivC,OAErB,IAGJzmC,EAAW+6N,GAAal7N,UAAWkiM,IACnC/hM,EAAW+6N,GAAal7N,UAAWmiM,IACnChiM,EAAW+6N,GAAal7N,UAAW8oM,IAEnCoyB,GAAal7N,UAAUzH,SAAW,CAC9BoxL,QAAS,CACLtsL,KAAM,OACNmoK,aAAc,EACdnB,OAAQ,CACJz7C,MAAO,gBAGf+mB,QAAS,CAAE9yH,IAAK,GAChBkwJ,OAAQ,CACJpoK,SAAS,EACTgrI,QAAS,GAEbjhH,QAAS,EACT8/I,MAAO,CACHviJ,MAAO,CAAC,GAEZ+3I,cAAe,CACX77I,KAAMmxK,GACNt0K,UAAWu0K,GACXrmD,oBAAqBsmD,KAI7B,IAAI8hC,GAAe35D,EAAajnK,OAAO,CACnCoF,KAAM,SAASgwK,EAAUhxK,GACrB6iK,EAAajiK,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAEhCnH,KAAKm4K,SAAWA,EAChBn4K,KAAKuqK,aAAe4N,EAAS5N,aAC7BvqK,KAAK01M,cAEL11M,KAAKmQ,QACT,EAEAulM,YAAa,WACT11M,KAAKojI,OAAS,GACdpjI,KAAKqmM,cAAgB,GACrBrmM,KAAKi8K,WAAa,CAAEvlK,IAAK0gH,EAAWj+G,IAAK2nJ,GACzC9gK,KAAKsmM,YAAc,EACvB,EAEAn2L,OAAQ,WACJnQ,KAAK4jO,WACL5jO,KAAKumM,mBAAmBvmM,KAAKwmM,SAASh9L,KAAKxJ,MAC/C,EAEA4jO,SAAU,WAMN,IALA,IAAI3wG,EAAWjzH,KAGXivC,EADMjvC,KACOmH,QAAQ8nC,OAEhBy3J,EAAW,EAAGA,EAAWz3J,EAAOznC,OAAQk/L,IAG7C,IAFA,IAAIjC,EAAgBx1J,EAAOy3J,GAElB3L,EAAU,EAAGA,EAAU0J,EAAcr2L,KAAK5G,OAAQuzL,IAAW,CAClE,IACIL,EADQznE,EAASklD,SAAS2iB,UAAU2J,EAAe1J,GAC/BL,YACpB5jE,EAAQ4jE,EAAYhyL,QAAgC,OAAtBgyL,EAAYhyL,QAC1CuqH,EAASgpD,WAAWvlK,IAAMrT,KAAKqT,IAAIu8G,EAASgpD,WAAWvlK,IAAKgkL,EAAYhyL,OACxEuqH,EAASgpD,WAAW9iK,IAAM9V,KAAK8V,IAAI85G,EAASgpD,WAAW9iK,IAAKuhL,EAAYhyL,OAEhF,CAER,EAEA89L,SAAU,SAAS99L,EAAO+mB,GACtB,IAAI0sG,EACAzzH,GAASouH,EAAQpuH,EAAMA,QAA0B,OAAhBA,EAAMA,QACvCyzH,EAAQn8H,KAAK4oM,YAAYlgM,EAAO+mB,KAE5B9sB,EAAEI,OAAOo5H,EAAO1sG,GAIxBzvB,KAAKojI,OAAOzhI,KAAKw6H,EACrB,EAEA4sE,iBAAkB,SAAS5hM,EAASuB,EAAO+mB,GACvC,IAAIwf,EAASxf,EAAOwf,OAChBy3J,EAAWj3K,EAAOi3K,SAClBpzI,EAAQ,CACR1yD,SAAUquC,EAAO+5J,UACjBzE,SAAU,CACN,OAAQ,UAAW,UAAW,WAC9B,SAAU,SAAU,yBACpB,eAAgB,gBAIpB0E,EAASjpM,KAAKsmM,YAAYI,GACzB5vE,EAAQmyE,KACTjpM,KAAKsmM,YAAYI,GAAYuC,EAAS7E,GAAYj9L,EAAS,CAAC,EAAGmsD,GAAO,IAG1E,IAAImzI,EAAet/L,EAYnB,OAXI8hM,GAEA7E,GADAqC,EAAej+L,EAAW,CAAC,EAAGrB,GACJ,CACtBuB,MAAOA,EACPumC,OAAQA,EACRwvB,SAAUhvC,EAAOgvC,SACjB/nD,IAAK1W,KAAKi8K,WAAWvlK,IACrByC,IAAKnZ,KAAKi8K,WAAW9iK,KACtBm6C,GAGAmzI,CACX,EAEAE,UAAW,WACP,OAAO48B,EACX,EAEA98B,aAAc,SAASx3J,EAAQy3J,GAC3B,IAAIv/L,EAAUnH,KAAKqmM,cAAcK,GACjC,IAAKv/L,EAAS,CACV,IAAIvG,EAAWZ,KAAK2mM,YAAYt+L,UAAUzH,SAC1CZ,KAAKqmM,cAAcK,GAAYv/L,EAAUqB,EAAW,CAAC,EAAG5H,EAAU,CAC9DoxL,QAAS,CACLj7J,QAASkY,EAAOlY,SAEpBkoI,QAAS,CACLhuJ,OAAQjR,KAAKmH,QAAQ83J,QAAQhuJ,QAEjCmkK,OAAQ,CACJnkK,OAAQjR,KAAKmH,QAAQiuK,OAAOnkK,SAEjCg+B,EACP,CAEA,OAAO9nC,CACX,EAEAyhM,YAAa,SAASlgM,EAAO+mB,GACzB,IAAIwf,EAASxf,EAAOwf,OAChBw3J,EAAezmM,KAAKymM,aAAax3J,EAAQxf,EAAOi3K,UAChDz1E,EAAQxhG,EAAOwhG,OAAShiF,EAAOgiF,MAInC,GAFAw1E,EAAezmM,KAAK+oM,iBAAiBtC,EAAc/9L,EAAO+mB,GAEtDvmB,EAAW+lC,EAAOgiF,OAClBA,EAAQw1E,EAAax1E,WAClB,GAA4B,IAAxBjxH,KAAKi8K,WAAW9iK,IAAW,CAClC,IAAI42B,EA7ZC,SAAUkhF,EAAO4yG,QACH,IAAvBA,IAAiCA,EAAqB,KAE1D,IAAIpyB,EAAY9wM,MAAMkxH,WAAWZ,GAC7BnzG,EAAS,EAAI+lN,EAEjB,OAAO,SAAUn7N,GACb,IAAIo7N,EAAMryB,EAAUl/E,QAChBt+D,EAAQ,IAAM6vK,EAAItxG,EAClB2J,EAAQr+G,EAASpV,EAGrB,OAFAo7N,EAAItxG,GAAKnvH,KAAKqT,IAAIylH,EAAQloE,EAAOA,GAE1B6vK,EAAIryG,OACf,CACJ,CA+YwBsyG,CAAW9yG,GACvBA,EAAQlhF,EAAMrnC,EAAMA,MAAQ1I,KAAKi8K,WAAW9iK,IAChD,CAEA,IAAIgjH,EAAQ,IAAIonG,GAAa76N,EAAO+9L,GAKpC,OAJAtqE,EAAMlL,MAAQA,EAEdjxH,KAAKm6C,OAAOgiF,GAELA,CACX,EAEAq5E,WAAY,SAASvmK,GACjB,IAAIgnK,EAAYhnK,EAAOinK,MACnBC,EAAYlnK,EAAOmnK,MACnBj+B,EAAWn4K,KAAKm4K,SAChB+9B,EAAQD,EAAY99B,EAASo+B,WAAWN,GAAa99B,EAASzB,MAC9D0/B,EAAQD,EAAYh+B,EAASq+B,WAAWL,GAAah+B,EAASxB,MAElE,IAAKu/B,EACD,MAAM,IAAIllM,MAAM,qCAAuCilM,GAG3D,IAAKG,EACD,MAAM,IAAIplM,MAAM,qCAAuCmlM,GAG3D,MAAO,CAAED,MAAOA,EAAOE,MAAOA,EAClC,EAEA/jE,OAAQ,SAAS20B,GACb,IAAI/zC,EAAWjzH,KAEXqpM,EAAcrpM,KAAKojI,OACnBs3C,GAAS16K,KAAKmH,QAAQ+yC,KACtB6gJ,EAAU,EAEd/6L,KAAKumM,oBAAmB,SAAU79L,EAAO+mB,GACrC,IAAI0sG,EAAQktE,EAAYtO,KACpB1oE,EAAMY,EAASuiF,WAAW/lL,EAAOwf,QACjCinK,EAAQ7jF,EAAI6jF,MACZE,EAAQ/jF,EAAI+jF,MACZ4tB,EAAS9tB,EAAM50B,cAAc54K,EAAMtD,GACnC6+N,EAAS7tB,EAAM90B,cAAc54K,EAAMvE,GACnCo0K,EAAQ29B,EAAMz9B,QAAQurD,EAAQA,EAAQtpD,GACtClC,EAAQ49B,EAAM39B,QAAQwrD,EAAQA,EAAQvpD,GAE1C,GAAIv+C,EACA,GAAIo8C,GAASC,EAAO,CAChB,IAAIgxB,EAAYv2E,EAASu2E,UAAUjxB,EAAOC,GAC1Cr8C,EAAMkW,OAAOm3D,EACjB,MACIrtE,EAAMnvH,SAAU,CAG5B,IAEAhN,KAAKs5C,IAAM0tH,CACf,EAEAwiC,UAAW,SAASjxB,EAAOC,GACvB,OAAO,IAAIzR,EAAIwR,EAAMt6F,GAAIu6F,EAAMt6F,GAAIq6F,EAAMp6F,GAAIq6F,EAAMp6F,GACvD,EAEAmoH,mBAAoB,SAAS38K,GAMzB,IALA,IAAIqpG,EAAWjzH,KAGXivC,EADMjvC,KACOmH,QAAQ8nC,OAEhBy3J,EAAW,EAAGA,EAAWz3J,EAAOznC,OAAQk/L,IAQ7C,IAPA,IAAIjC,EAAgBx1J,EAAOy3J,GACvBh0D,EAAQzf,EAASuiF,WAAW/Q,GAC5ByR,EAAQxjE,EAAMwjE,MACdE,EAAQ1jE,EAAM0jE,MACd8tB,EAAShuB,EAAMtzB,sBACfuhD,EAAS/tB,EAAMxzB,sBAEVmY,EAAU,EAAGA,EAAU0J,EAAcr2L,KAAK5G,OAAQuzL,IAAW,CAClE,IAAIqpC,EAAQnxG,EAASklD,SAAS2iB,UAAU2J,EAAe1J,GACnDryL,EAAQ07N,EAAM1pC,YACdjrK,EAAS20M,EAAM30M,OACf40M,EAASnuB,EAAMz0B,WAAW/4K,EAAMtD,GAChCk/N,EAASluB,EAAM30B,WAAW/4K,EAAMvE,GAChCogO,EAAML,EAAOxtN,KAAO2tN,GAAUA,GAAUH,EAAO/qN,IAC/CqrN,EAAML,EAAOztN,KAAO4tN,GAAUA,GAAUH,EAAOhrN,IAE/CorN,GAAOC,GACP56M,EAASlhB,EAAOF,EAAW,CACvBuyL,QAASA,EACT9rJ,OAAQw1J,EACRiC,SAAUA,EACVjoI,SAAUgmI,EAAcr2L,KAAK2sL,GAC7B8N,MAAO51E,GACRxjG,GAEX,CAER,EAEA66K,iBAAkB,SAASnuE,EAAOlrH,GAC9B,IAAIvI,EAAQyzH,EAAMzzH,MAClB,OAAO1I,KAAKuqK,aAAat5J,OAAOiiK,KAAKjiK,EAAQvI,EAAMtD,EAAGsD,EAAMvE,EAAGuE,EAAMA,MACzE,EAEA2lM,gBAAiB,WAGb,IAFA,IAAIjrE,EAASpjI,KAAKojI,OACdtsH,EAAS,GACJlN,EAAM,EAAGA,EAAMw5H,EAAO57H,OAAQoC,IACnCkN,EAAOnV,MAAMyhI,EAAOx5H,IAAQ,CAAC,GAAG8+C,QAEpC,OAAO5xC,CACX,IAEJktJ,EAAkB2/D,GAAc,CAC5B10L,OAAQ,GACRgwH,QAAS,CACLhuJ,OAAQ,iBAEZmkK,OAAQ,CACJnkK,OAAQ,OAEZipC,MAAM,IAGV,IAAIuqL,GAAkB/pB,GAAa33M,OAAO,CACtC4yK,WAAY,WACR31K,KAAKu2M,WAAa,CAAC,EACnBv2M,KAAKw2M,WAAa,CAAC,CACvB,EAEArmM,OAAQ,SAASkrM,QACC,IAAVA,IAAoBA,EAAQr7M,KAAKq7M,OAErCr7M,KAAK0kO,iBACL1kO,KAAK25N,WAAWte,GAChBr7M,KAAKwqN,aAAanP,GAClBr7M,KAAK2kO,kBACT,EAEAD,eAAgB,WAKZ,IAJA,IAEIz1L,EAASjvC,KAAK4qN,WAAa5qN,KAAKivC,OAE3B1nC,EAAI,EAAGA,EAAI0nC,EAAOznC,OAAQD,IAAK,CAUpC,IATA,IAAIk9L,EAAgBx1J,EAAO1nC,GACvB6G,EAAOq2L,EAAcr2L,MAAQ,GAC7BikH,EAPOryH,KAOQw1M,WAAW/Q,GAC1ByR,EAAQ7jF,EAAI6jF,MACZE,EAAQ/jF,EAAI+jF,MAEZwuB,EAAcn6M,EAAQ6lK,cAAc4lB,EAAMr2B,YAAc,IACxDglD,EAAcp6M,EAAQ6lK,cAAc8lB,EAAMv2B,YAAc,IAEnD4hC,EAAa,EAAGA,EAAarzM,EAAK5G,OAAQi6M,IAAc,CAC7D,IAAI/uE,EAAQ2nD,GAAarmL,QAAQ8mL,UAAU2J,EAAegd,GAAY/mB,YAClEt1L,EAAIstI,EAAMttI,EACVjB,EAAIuuI,EAAMvuI,EAETygO,EAAY5/D,IAAI5/J,IACjBw/N,EAAYp3N,IAAIpI,GAGfy/N,EAAY7/D,IAAI7gK,IACjB0gO,EAAYr3N,IAAIrJ,EAExB,CAEA+xM,EAAMr2B,WAAa+kD,EAAYvrN,SAC/B+8L,EAAMv2B,WAAaglD,EAAYxrN,QACnC,CACJ,EAEAmxM,aAAc,SAASnP,GAKnB,IAJA,IAAIpoF,EAAWjzH,KAEXk9M,EAAel9M,KAAKi9M,oBAEf11M,EAAI,EAAGA,EAAI8zM,EAAM7zM,OAAQD,IAAK,CACnC,IAAIqnF,EAAOysH,EAAM9zM,GACbujN,EAAa5N,EAAatuH,EAAKznF,QAAQ/E,MAAQ,YAAc,GACjE6wH,EAASkpF,YAAY2O,GACrB,IAAIyO,EAAiBtmG,EAASmqF,oBAAoB0N,GAE7CyO,GAILtmG,EAAS6xG,mBACLtgC,GAAmB+0B,EAAgB,CAAE/6B,KACrC5vG,EAER,CACJ,EAEAk2I,mBAAoB,SAAS71L,EAAQ2/C,GACjC,IAAI0lF,EAAQ,IAAIqvD,GAAa3jO,KAAM,CAC/BivC,OAAQA,IAGZjvC,KAAK85M,YAAYxlC,EAAO1lF,EAC5B,EAEAuuH,eAAgB,SAASluK,GACrB,IAAI9nC,EAAUnH,KAAKmH,QACf8uM,EAAYhnK,EAAOinK,MACnB0jB,EAAe,GAAGx7M,OAAOjX,EAAQ+uM,OACjCA,EAAQ73K,GAAKu7L,GAAc,SAAS10N,GAAK,OAAOA,EAAE9C,OAAS6zM,CAAW,IAAG,GACzEE,EAAYlnK,EAAOmnK,MACnByjB,EAAe,GAAGz7M,OAAOjX,EAAQivM,OACjCA,EAAQ/3K,GAAKw7L,GAAc,SAAS30N,GAAK,OAAOA,EAAE9C,OAAS+zM,CAAW,IAAG,GAEzEqW,GADQrlN,EAAQk0M,OAAS,CAAE,CAAC,IACJ,GAAGj5M,MAAQ,UAGvC,OAFgB8zM,GAAS,CAAC,GAAGtnH,OAASwnH,GAAS,CAAC,GAAGxnH,MAAQ49H,CAG/D,EAEAhX,WAAY,SAASvmK,GACjB,IAAIinK,EACAE,EAEAjvM,EAAUnH,KAAKmH,QAEfyyN,EAAe,GAAGx7M,OAAOjX,EAAQ+uM,OACjCD,EAAYhnK,EAAOinK,MAEnBA,EADAD,EACQ2jB,EAAazjM,MAAK,SAAUgP,GAAQ,OAAOA,EAAK/iC,OAAS6zM,CAAW,IAEpE2jB,EAAa,GAGzB,IAAIC,EAAe,GAAGz7M,OAAOjX,EAAQivM,OACjCD,EAAYlnK,EAAOmnK,MAOvB,GALIA,EADAD,EACQ0jB,EAAa1jM,MAAK,SAAUgP,GAAQ,OAAOA,EAAK/iC,OAAS+zM,CAAW,IAEpE0jB,EAAa,IAGpB3jB,EACD,MAAM,IAAIllM,MAAM,qCAAuCilM,GAG3D,IAAKG,EACD,MAAM,IAAIplM,MAAM,qCAAuCmlM,GAG3D,MAAO,CAAED,MAAOA,EAAOE,MAAOA,EAClC,EAEAuuB,iBAAkB,WAEd,IADA,IAAIrsD,EAAOt4K,KAAKs4K,KACP/wK,EAAI,EAAGA,EAAI+wK,EAAK9wK,OAAQD,IAC7B+wK,EAAK/wK,GAAGsuK,cAEhB,EAEAikD,aAAc,SAAS3yN,EAASqrC,EAAUw3J,GActC,IAbA,IAwBI+vB,EAxBAnyB,EAAWzgM,EAAQ/E,KACnB43N,EAAYxnL,EAAWxyC,KAAKw2M,WAAax2M,KAAKu2M,WAC9C7sB,EAAc/mL,EAAEI,OAAO,CACvB85K,kBAAmB,GACpB11K,EAAS,CACRqrC,SAAUA,EACVn8B,QAAUm8B,GAAYxyC,KAAKuqK,aAAanqB,KAAQj5I,EAAQkP,QAAUlP,EAAQkP,QAC1EsmK,WAAW,IAEXooD,EAAgBr7C,EAAY7J,WAAa6J,EAAY7J,WAAW,GAAK,KACrEq6C,EAAc,CAAExwC,EAAYhzK,IAAKgzK,EAAYvwK,IAAK4rN,GAClD91L,EAASjvC,KAAKivC,OAETy3J,EAAW,EAAGA,EAAWz3J,EAAOznC,OAAQk/L,IAAY,CACzD,IAAIjC,EAAgBx1J,EAAOy3J,GACvByzB,EAAiB11B,EAAcjyJ,EAAW,QAAU,SACxD,GAAK2nL,IAAmBzwC,EAAYtnL,MAAwB,IAAd4nM,IAAoBmwB,EAAiB,CAC/E,IAAIC,EAAkB//B,GAAarmL,QAAQ8mL,UAAU2J,EAAe,GAAG/J,YACvEw/B,EAAYv4N,KAAKy4N,EAAgB5nL,EAAW,IAAM,MAElD,KACJ,CACJ,CAIA,IAAK,IAAIjrC,EAAI,EAAGA,EAAI2yN,EAAY1yN,OAAQD,IACpC,GAAI2yN,EAAY3yN,aAAcoH,KAAM,CAChCorN,GAAe,EACf,KACJ,CAUJ,IAAI50L,EAAO,IANPg/J,GAAiBza,EAAYhkL,KAAM+6J,KAAWipB,EAAYhkL,MAAQq0N,EACvDtvM,EAAQq7J,iBAERpG,GAGSgK,EAAa1pL,KAAKuqK,cAG1C,GAFAplI,EAAK6kK,UAAYA,EAEbpC,EAAU,CACV,GAAIoyB,EAAUpyB,GACV,MAAM,IAAI52L,OAAQwhC,EAAW,IAAM,KAAO,mBAAqBo1J,EAAW,uBAE9EoyB,EAAUpyB,GAAYziK,CAC1B,CAKA,OAHAnlC,KAAK45M,WAAWz0K,GAChBA,EAAK49I,kBAEE59I,CACX,EAEAw0L,WAAY,SAASte,GASjB,IARA,IAAIpoF,EAAWjzH,KAEXmH,EAAUnH,KAAKmH,QACfkzN,EAAe,GAAGj8M,OAAOjX,EAAQ+uM,OACjCyG,EAAQ,GACR2d,EAAe,GAAGl8M,OAAOjX,EAAQivM,OACjCwG,EAAQ,GAEHhzM,EAAM,EAAGA,EAAMywN,EAAa7yN,OAAQoC,IAAO,CAChD,IAAIkiN,EAAW74F,EAAS2oF,SAASye,EAAazwN,GAAKglF,MAC/Cn5D,EAAQq2L,EAAUzQ,IAClBsB,EAAMh7M,KAAKsxH,EAAS6mG,aAAaO,EAAazwN,IAAM,EAAOA,GAEnE,CAEA,IAAK,IAAIgxK,EAAQ,EAAGA,EAAQ0/C,EAAa9yN,OAAQozK,IAAS,CACtD,IAAI2/C,EAAatnG,EAAS2oF,SAAS0e,EAAa1/C,GAAOhsF,MACnDn5D,EAAQ8kM,EAAYlf,IACpBuB,EAAMj7M,KAAKsxH,EAAS6mG,aAAaQ,EAAa1/C,IAAQ,EAAMA,GAEpE,CAEA56K,KAAK02K,MAAQ12K,KAAK02K,OAASimC,EAAM,GACjC38M,KAAK22K,MAAQ32K,KAAK22K,OAASimC,EAAM,EACrC,EAEA7C,WAAY,SAAS50K,GACjB,IAAIyiK,EAAWziK,EAAKh+B,QAAQ/E,KAE5Bs4M,GAAa3yM,GAAGgyM,WAAWxvM,KAAKvK,KAAMmlC,GAElCA,EAAKh+B,QAAQqrC,gBACNxyC,KAAKw2M,WAAW5O,UAEhB5nM,KAAKu2M,WAAW3O,GAGvBziK,IAASnlC,KAAK02K,cACP12K,KAAK02K,MAGZvxI,IAASnlC,KAAK22K,cACP32K,KAAK22K,KAEpB,EAEA8sC,eAAgB,SAASnvC,EAAO3vK,EAAGspN,GAQ/B,IAPA,IAAIzhB,EAASl4B,EAAM45C,kBAAkBvpN,GACjCw3H,EAAQ,IAAIL,EAAM0wE,EAAOpnM,EAAGonM,EAAOroM,GACnC81M,EAAUj6M,KAAKs4K,KACf9wK,EAASyyM,EAAQzyM,OACjBgzN,EAAU,GACVC,EAAU,GAELlzN,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAI49B,EAAO80K,EAAQ1yM,GAEnBs8L,GADa1+J,EAAKh+B,QAAQqrC,SAAWioL,EAAUD,EACvBr1L,EAAKq8I,YAAYrlD,GAC7C,CAEIq+F,EAAQhzN,OAAS,GAAKizN,EAAQjzN,OAAS,GACvC8sK,EAAMlqK,QAAQ6jN,EAAW,CACrBpiN,QAASysH,EAAa3zH,GACtB4kB,cAAe5kB,EACfS,EAAG6/L,GAAkBu1B,GACrBr2N,EAAG8gM,GAAkBw1B,IAGjC,EAEArM,kBAAmB,SAASjpL,EAAMh+B,GAC9B,IAAIqrC,EAAWrN,EAAKh+B,QAAQqrC,SACxB8lI,EAAOt4K,KAAK08M,UAAU18M,KAAKq7M,OAC3B/hM,GAASk5B,EAAW8lI,EAAKn0K,EAAIm0K,EAAKlzK,GAAGuQ,QAAQwvB,GAEjD6/L,GAAoBhlO,KAAKmH,QAASmS,EAAOk5B,EAAUrrC,GACnD69N,GAAoBhlO,KAAK66M,gBAAiBvhM,EAAOk5B,EAAUrrC,EAC/D,EAEAq0M,iBAAkB,SAASr2K,GAEvB,OAAOxiC,EAAEI,OAAO,CAAC,EAAGoiC,EAAKh+B,QAAQmxL,UAAW,CAAEt+I,OAAQ,GAC1D,EAEA6oK,kBAAmB,SAASS,EAAWxlM,GACnC,IAAIm1G,EAAWjzH,UACA,IAAX8d,IAAqBA,EAAS,GAElC,IAAImnN,EAAmBjlO,KAAK02K,MAAMvvK,QAAQkP,SAAoB,EAAVyH,EAAcA,EAC9DonN,EAAallO,KAAK02K,MAAMnhI,SACxB8uL,EAASrkO,KAAKmlO,oBAAoB7hB,GAAa2hB,EAG/CG,EAAeF,EADnBb,EAAS10C,EAAW00C,EAAQa,EAAW19N,SACDkB,MAElC06H,EAASpjI,KACRuhN,cAAa,SAAUplF,GAAS,OAAOkpG,GAAclpG,EAAMwxC,YAAYvoK,EAAGggO,EAAe,IACzFppN,MAAK,SAAU9W,EAAG+W,GAAK,OAAOg3G,EAASqyG,oBAAoBpgO,GAAK+tH,EAASqyG,oBAAoBrpN,EAAI,IAEtG,OAAIjc,KAAK22K,MAAMxvK,QAAQkP,QACZ+sH,EAAO/sH,UAGX+sH,CACX,EAEA4/E,oBAAqB,SAASM,EAAWxlM,GACrC,IAAIm1G,EAAWjzH,UACA,IAAX8d,IAAqBA,EAAS,GAElC,IAAImnN,EAAmBjlO,KAAK22K,MAAMxvK,QAAQkP,SAAoB,EAAVyH,EAAcA,EAC9DynN,EAAavlO,KAAK22K,MAAMphI,SACxB+uL,EAAStkO,KAAKslO,oBAAoBhiB,GAAa2hB,EAG/CO,EAAeD,EADnBjB,EAAS30C,EAAW20C,EAAQiB,EAAW/9N,SACDkB,MAElC06H,EAASpjI,KACRuhN,cAAa,SAAUplF,GAAS,OAAOkpG,GAAclpG,EAAMwxC,YAAYxpK,EAAGqhO,EAAe,IACzFxpN,MAAK,SAAU9W,EAAG+W,GAAK,OAAOg3G,EAASkyG,oBAAoBjgO,GAAK+tH,EAASkyG,oBAAoBlpN,EAAI,IAEtG,OAAIjc,KAAK02K,MAAMvvK,QAAQkP,QACZ+sH,EAAO/sH,UAGX+sH,CACX,EAEA+hG,oBAAqB,SAAShpG,GAC1B,OAAOn8H,KAAKylO,mBAAmBzlO,KAAK02K,MAAOv6C,EAAMwxC,YAAYvoK,EACjE,EAEAkgO,oBAAqB,SAASnpG,GAC1B,OAAOn8H,KAAKylO,mBAAmBzlO,KAAK22K,MAAOx6C,EAAMwxC,YAAYxpK,EACjE,EAEAshO,mBAAoB,SAAStgM,EAAMu3J,GAC/B,OAAOv3J,EAAKoQ,SAASmwL,WAAU,SAAUC,GAAY,OAAON,GAAc3oC,EAAYipC,EAASj9N,MAAQ,GAC3G,IAGJ,SAAS28N,GAAcngO,EAAG+W,GACtB,OAAI/W,aAAayJ,MAAQsN,aAAatN,KAC3B8b,EAAQ00J,WAAWj6K,EAAG+W,GAG1B/W,IAAM+W,CACjB,CAEA,SAAS+oN,GAAoBrW,EAAe3kB,EAAWx3J,EAAUrrC,GAC7D,IAAIuiL,EAAe,GAAGtrK,OAAOo0B,EAAWm8K,EAAcvY,MAAQuY,EAAczY,OAAQlM,GACpFxhM,EAAWkhL,EAAaviL,EAC5B,CAEA68J,EAAkBygE,GAAiB,CAC/BvuB,MAAO,CAAC,EACRE,MAAO,CAAC,IAGZ5tM,EAAWi8N,GAAgBp8N,UAAWm7M,IAEtC,IAAIoiB,GAAQ,QACRC,GAAQ,QAERC,GAAM,MACNC,GAAM,MACNC,GAAY,WAIhBxR,GAAgBxgN,QAAQmjB,SAAS4yL,GAAqB,CAClDhsB,GAAKK,GAAQM,GAAMiB,GAAe7B,GAAM0B,GACxCrB,GAAaQ,GAAMT,GAAQwB,GAAiB1B,GAAUyB,GACtDJ,GAAcD,GAAWS,GAAWpB,GAAsBU,GAAYS,IAAsBxhL,OAAQiiL,KAGxGm0B,GAAgBxgN,QAAQmjB,SAASiiM,GAAY,CACzC95B,GAASC,GAActB,IAAS7/K,OAAQiiL,KAG5Cm0B,GAAgBxgN,QAAQmjB,SAAS0nM,GAAa,CAAEjgC,KAChD41B,GAAgBxgN,QAAQmjB,SAASmoM,GAAe,CAAEjhC,KAClDm2B,GAAgBxgN,QAAQmjB,SAASisM,GAAgB,CAAE9kC,GAAQC,KAE3Di2B,GAAgBxgN,QAAQmjB,SAASupM,GAAe,CAC5C7hC,GAAYC,GAAYC,IAAgB3gL,OAAQiiL,KAGpDm0B,GAAgBxgN,QAAQmjB,SAASuqM,GAAe,CAC5C1iC,GAAYC,GAAcC,IAAa9gL,OAAQiiL,KAGnDm0B,GAAgBxgN,QAAQmjB,SAASstM,GAAiB,CAAEjmC,KAEpDnE,GAAarmL,QAAQmjB,SACjB,CAAE4mK,GAAKK,GAAQM,GAAMiB,GAAe7B,GAAM0B,IAC1C,CAAEvwH,GAAS,CAAEizH,GAAU0jC,GAAOI,GAAW9oC,GAAiBC,GAAkBsF,KAGhFpI,GAAarmL,QAAQmjB,SACjB,CAAEkoK,GAAcD,GAAWD,GAAYS,IACvC,CAtCO,OAKF,MAiCS,CAAEsC,GAAU0jC,GAAOI,GAAWvjC,KAGhDpI,GAAarmL,QAAQmjB,SACjB,CAAE0oK,GAAWpB,IACb,CAAExvH,GAAS,CAAEizH,GAAU0jC,GAAOI,GAvCd,UAuCwCvjC,KAG5DpI,GAAarmL,QAAQmjB,SAAS,CAAE0nK,GAAYC,GAAYC,IAAiB,CAAE15L,EAAGkQ,GAAK,CAAEqwN,GAAOnjC,KAC5FpI,GAAarmL,QAAQmjB,SAAS,CAAE6nK,GAAYC,GAAcC,IAAc,CAAEjwH,GAAS,CAAEizH,GAAU0jC,GAAOnjC,KAEtGpI,GAAarmL,QAAQmjB,SACjB,CAAEmnK,GAAQC,IACV,CAAEtvH,GAAS,CAAEizH,GAAU0jC,GAAO,kBAAmB,UAAWnjC,KAGhEiiB,GAAkB1wM,QAAQmjB,SACtB,CAAE4mK,GAAKK,GAAQM,GAAMiB,GAAe7B,GAAM0B,GAAeK,GAAWpB,IACpE,CAAE/1L,MAAOo9N,GAAK70G,MAAO40G,GAAO/8B,SAAU+8B,GAAOI,SAAUF,GAAKG,UAAWJ,KAG3EphB,GAAkB1wM,QAAQmjB,SACtB,CAAEkoK,GAAcD,GAAWD,GAAYS,IACvC,CAAE7jL,KAAMgqN,GAAKznM,GAAIwnM,GAAK70G,MAAO40G,GAAO/8B,SAAU+8B,KAGlDnhB,GAAkB1wM,QAAQmjB,SACtB,CAAE6nK,GAAYC,GAAcC,IAC5B,CAAEx2L,MAAOo9N,GAAK70G,MAAO40G,KAGzBxrC,GAAarmL,QAAQmjB,SACjB,CAAEmoK,GAASC,GAActB,IACzB,CAAE54L,EAAGkQ,GAAK,CAAEqwN,GAAOI,GAAW5oC,GAAmBC,GAAoBC,GAAmBC,KAG5FlD,GAAarmL,QAAQmjB,SACjB,CAAE8mK,IAAU,CAAE54L,EAAGkQ,EAAG,QAAU,CAAEqwN,GAAO1jC,GAAU8jC,KAGrD3rC,GAAarmL,QAAQmjB,SACjB,CAAEqnK,IACF,CAAEn5L,EAAGkQ,EAAG05D,GAAS,CAAE22J,GAAOI,KAG9B3rC,GAAarmL,QAAQmjB,SACjB,CAAEgnK,GAAaQ,IACf,CAAE,OAAQ,OAAQ,MAAO,SAAW,CAAEuD,GAAU0jC,GAAO,YAAaI,KAGxEthB,GAAkB1wM,QAAQmjB,SACtB,CAAEgnK,GAAaQ,IACf,CAAEpsG,KAAMuzI,GAAKn1C,KAAMm1C,GAAKluG,IAAKmuG,GAAKrgL,MAAOogL,GACrC70G,MAAO40G,GAAOrzC,UAAWqzC,GAAO/8B,SAAU+8B,KAGlDxrC,GAAarmL,QAAQmjB,SACjB,CAAE6mK,GAAUyB,IACZ,CAAE,QAAS,KAAM,SAAU,KAAM,QAAS,OAAQ,YAAc,CAAEyC,GAAU0jC,GAAOI,GAAWvjC,KAGlGiiB,GAAkB1wM,QAAQmjB,SACtB,CAAE6mK,GAAUyB,IACZ,CAAEhjL,MAAOqpN,GAAKzxB,GAAIyxB,GAAKnzC,OAAQmzC,GAAKxxB,GAAIwxB,GAAKphD,MAAOohD,GAAKpzC,KAAMozC,GAAK/wB,SAAU8wB,GAC1E50G,MAAO40G,GAAO/8B,SAAU+8B,KAGhCxrC,GAAarmL,QAAQmjB,SACjB,CAAE+mK,GAAQwB,IACV,CAAE,UAAW,UAAY,CAAEwC,GAAU0jC,GAAO,kBAAmBI,GAAWvjC,KAG9EiiB,GAAkB1wM,QAAQmjB,SACtB,CAAE+mK,GAAQwB,IACV,CAAE1rL,QAAS8xN,GAAKz+N,OAAQy+N,GAAK70G,MAAO40G,GAAO/8B,SAAU+8B,KAGzDxrC,GAAarmL,QAAQmjB,SACjB,CAAEynK,GAAKP,IACP,CAAEpvH,GAAS,CAAEizH,GAAU0jC,GAAO,UAAW,kBAAmB,UAAWnjC,KAG3E,IAAI0jC,GAAa,CAAEjkC,GAAUjzH,EAAO5pE,EAAGkQ,GAGnC6wN,GAAY,YACZC,GAAc,cACdC,GAAa,aACbC,GAAU,UACVC,GAAQ,QACRC,GAAO,OAGPC,GAAQ9+N,EAAM7E,OAAO,CACrBoF,KAAM,SAAS0D,EAASw9K,EAAas9C,EAAc3qM,GAC/C,IAAIi3F,EAAWjzH,UACC,IAAZg8B,IAAsBA,EAAU,CAAC,GAErCh8B,KAAK+1H,UAAY,GACjB/1H,KAAKi2H,YAAYj6F,EAAQo6F,UACzBp2H,KAAKuqK,aAAe,IAAIoK,GAASN,aAAar0K,KAAMg8B,GACpDh8B,KAAKuqK,aAAa2rB,MAAQywC,EAE1B3mO,KAAK4mO,aAAa/6N,GAElB,IAAI1E,EAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAASkiL,GAC3CrpL,KAAK6mO,iBAAmBr+N,EAAW,CAAC,EAAGrB,GACvCnH,KAAK8mO,OAASH,EACd3mO,KAAK+mO,WAAW5/N,EAASw/N,GACzB3mO,KAAKgnO,YAAc,CAAC,EAEpBhnO,KAAKinO,gBACLjnO,KAAKknO,eAELlnO,KAAK0kO,iBACLj6M,EAAQs5I,WAAWO,aAAa+kB,GAAa,WACzCp2D,EAASk0G,YAAa,EACjBl0G,EAASh5D,aACVg5D,EAAS7oH,QAAQ,QACjB6oH,EAASm0G,UACTn0G,EAASo0G,gBAEjB,GACJ,EAEAT,aAAc,SAAS/6N,GAMnB,IALA7L,KAAKsnO,iBAAiBz7N,GACtBA,EAAQsB,MAAMG,SAAW,WACzBzB,EAAQgrF,SAAWhrF,EAAQspB,aAAa,YAActpB,EAAQspB,aAAa,YAAc,EAEzFtpB,EAAQ8Z,aAAa,OAAQ,8BACtB9Z,EAAQs+C,YACXt+C,EAAQuT,YAAYvT,EAAQs+C,YAEhCnqD,KAAK6L,QAAUA,CACnB,EAEAy7N,iBAAkB,SAASz7N,GACvB4e,EAAQpF,SAASxZ,EAAS,UAC9B,EAEAk7N,WAAY,SAAS5/N,EAASw/N,GAI1B,IAHA,IAAIY,EAAe,GACft4L,EAAS9nC,EAAQ8nC,QAAU,GAEtB1nC,EAAI,EAAGA,EAAI0nC,EAAOznC,OAAQD,IAC/BggO,EAAa5lO,KAAKgB,EAAEI,OAAO,CAAC,EAAGksC,EAAO1nC,KAE1CJ,EAAQ8nC,OAASs4L,EAk6DzB,SAA4BpgO,GAGxB,IAFA,IAAIqgO,EAAUrB,GAELv8N,EAAM,EAAGA,EAAM49N,EAAQhgO,OAAQoC,IAAO,CAC3C,IAAI69N,EAAQD,EAAQ59N,GAAO,OACvBzC,EAAQsgO,KACRtgO,EAAQqgO,EAAQ59N,GAAO,QAAUzC,EAAQsgO,UAClCtgO,EAAQsgO,GAEvB,CACJ,CA16DQC,CAAmBvgO,GACnBnH,KAAK4qL,cAAczjL,EAASw/N,GAGC,OAAzBx/N,EAAQkxL,qBACDlxL,EAAQkxL,aAGfzvL,EAASzB,EAAQg3C,SACjBh3C,EAAQg3C,MAAQ,CAAErd,KAAM35B,EAAQg3C,QAGpCn+C,KAAKmH,QAAUqB,EAAW,CAAC,EAAGm+N,EAAcx/N,GAC5CnH,KAAK2nO,mBACT,EAEAp1M,QAAS,WACL,IAAI6lK,EAAYp4L,KAAKmH,QAAQixL,WAAa,CAAC,EAI3C,MAAO,CACHrsL,MAJQqsL,EAAUrsL,MAAQyN,SAAS4+K,EAAUrsL,MAAO,IAAM1I,KAAKyN,MAAM9Q,KAAK6L,QAAQqT,aAKlFlT,OAJSosL,EAAUpsL,OAASwN,SAAS4+K,EAAUpsL,OAAQ,IAAM3I,KAAKyN,MAAM9Q,KAAK6L,QAAQ8oB,cAM7F,EAEAxK,OAAQ,SAASmI,GACb,IAAItiB,EAAOhQ,KAAKuyB,UACZC,EAAcxyB,KAAKyyB,MACnBy1I,EAAUl4J,EAAKjE,MAAQ,GAAKiE,EAAKhE,OAAS,EAE1CsmB,GAAS41I,KAAa11I,GAAexiB,EAAKjE,QAAUymB,EAAYzmB,OAASiE,EAAKhE,SAAWwmB,EAAYxmB,SACrGhM,KAAKyyB,MAAQziB,EACbhQ,KAAK0yB,QAAQ1iB,EAAMsiB,GACnBtyB,KAAKoK,QAAQ,SAAU4F,IAChBk4J,GAAWloK,KAAK4nO,aAAen9M,EAAQ0L,KAAKn2B,KAAK4nO,aAAa,SAAU3iO,GAAK,OAAQA,EAAE+H,OAAS,MACvGhN,KAAK6nO,qBACL7nO,KAAK8nO,kBAEb,EAEAp1M,QAAS,WACL1yB,KAAK+nO,sBACT,EAEAtqB,OAAQ,SAASuqB,GAIb,GAHAhoO,KAAK4qL,cAAc5qL,KAAKmH,SACxBnH,KAAK2nO,oBAEDK,EAAU,CACV,IAAI7vD,EAAWn4K,KAAKioO,OAAOpuC,UACvBjrG,EAAOupF,EAASyjC,SAASosB,GAC7B7vD,EAASslC,OAAO7uH,EACpB,MACI5uF,KAAKonO,SAEb,EAEAlkC,QAAS,SAAS9gM,GACd,OAAOm3L,GAAen3L,EAAMpC,KAAK65L,UAAUvhB,KAC/C,EAEAihB,eAAgB,SAASn3L,GACrB,OAAOpC,KAAKkjM,QAAQ9gM,EACxB,EAEA8lO,eAAgB,SAAS9lO,GAGrB,IAFA,IAAIi5M,EAAQr7M,KAAK65L,UAAUwhB,MAElBzxM,EAAM,EAAGA,EAAMyxM,EAAM7zM,OAAQoC,IAClC,GAAIyxM,EAAMzxM,GAAKzC,QAAQ/E,OAASA,EAC5B,OAAO,IAAIo3L,GAAU6hB,EAAMzxM,GAGvC,EAEAu+N,gBAAiB,SAASv+N,GACtB,IAAIyxM,EAAQr7M,KAAK65L,UAAUwhB,MAC3B,GAAIA,EAAMzxM,GACN,OAAO,IAAI4vL,GAAU6hB,EAAMzxM,GAEnC,EAEAuuK,SAAU,WACN,OAAO,IAAIyhB,GAAc55L,KAAK65L,UAClC,EAEAhuB,gBAAiB,SAASp+J,EAAM8hB,GAC5B,IAEI6zG,EAKIglG,EAAYC,EAPhBlwD,EAAWn4K,KAAK65L,UAChBizB,GAAe30C,EAASyyC,WAAazyC,EAASlpI,QAAU,IAAI,GAG5D/lC,EAAWqmB,GACX6zG,EAAS+0C,EAASopC,aAAahyL,IAG3BuzI,EAASvzI,IACT64M,EAAa74M,EAAO0f,OACpBo5L,EAAe94M,EAAO28I,UAEtBk8D,EAAaC,EAAe94M,EAI5B6zG,EADA0pF,EAAYpnN,OAAS24L,GACZiqC,GAAoBnwD,EAASupC,mBAAmB0mB,GAAaC,GAC/D5yM,EAAQq3L,EAAYpnN,KAAM,CAAEk5L,GAAKN,GAAQC,KACvC+pC,IAAqBnwD,EAASuhC,OAAO,IAAM,CAAC,GAAGt2E,OAAQilG,GAEvDlwD,EAASupC,mBAAmB0mB,IAIzChlG,GACApjI,KAAKuoO,sBAAsB96N,EAAM21H,EAEzC,EAEAmlG,sBAAuB,SAAS96N,EAAM21H,GAElC,IADA,IAAIuoC,EAAY3rK,KAAK+rK,WACZniK,EAAM,EAAGA,EAAMw5H,EAAO57H,OAAQoC,IACnC+hK,EAAUqjD,qBAAqB5rF,EAAOx5H,GAAM6D,EAEpD,EAEAwyJ,YAAa,SAAS1wI,GAClB,IAII4sG,EAAOmlD,EAJPviB,EAAS/+J,KAAKwoO,iBAEdvpE,EADMj/J,KACQggK,SACdmY,EAFMn4K,KAES65L,UAYnB,GATI3wL,EAAWqmB,IACX4sG,EAAQg8C,EAASwpC,UAAUpyL,KACdwvI,IACTuiB,EAAgBnlD,EAAMypD,YAEnB7mB,GAAUjoC,EAAQvnG,KACzB+xJ,EAAgBnJ,EAASyd,aAAatU,cAAc/xJ,IAGpDwvI,GACA,GAAIuiB,GAAiB,EAAG,CACpB,IAAIl+C,EAASpjI,KAAK65L,UAAUunB,sBAAsB9/B,GAClDriB,EAAQw5C,OAAOr1E,EACnB,OACOjH,GACP8iC,EAAQxxJ,KAAK0uH,EAErB,EAEA4jC,YAAa,WACT//J,KAAKggK,SAAStyJ,MAClB,EAEAw5N,aAAc,WACV,IAAIvlJ,EAAU3hF,KAAK2hF,QACfh1D,EAAO3sB,KAAKyoO,eAEZrwC,EAAYp4L,KAAKmH,QAAQixL,WAAa,CAAC,EACvCA,EAAUrsL,OACV0e,EAAQmjE,YAAYjhE,EAAM,CAAE5gB,MAAOqsL,EAAUrsL,QAE7CqsL,EAAUpsL,QACVye,EAAQmjE,YAAYjhE,EAAM,CAAE3gB,OAAQosL,EAAUpsL,SAG7C21E,GAAWA,EAAQx6E,QAAQzB,OAAS1F,KAAKmH,QAAQuhO,UAWlD1oO,KAAK2hF,QAAQnrB,QACbx2D,KAAK2hF,QAAQx3D,WAXbnqB,KAAK2oO,kBAEL3oO,KAAK2hF,QAAUj3D,GAAQwsH,QAAQ9vF,OAAOz6B,EAAM,CACxCjnB,KAAM1F,KAAKmH,QAAQuhO,WAGvB1oO,KAAK2hF,QAAQn4E,KAAK,aAAcxJ,KAAK4oO,2BACrC5oO,KAAK2hF,QAAQn4E,KAAK,aAAcxJ,KAAK6oO,2BAM7C,EAEAJ,aAAc,WACV,OAAOzoO,KAAK6L,OAChB,EAEAu7N,QAAS,WACL,IAAIl+K,EAAQlpD,KAAK8oO,YACjB9oO,KAAKyyB,MAAQ,CACT1mB,MAAOm9C,EAAM/hD,QAAQ4E,MACrBC,OAAQk9C,EAAM/hD,QAAQ6E,QAG1BhM,KAAK+oO,eAEL/oO,KAAKgpO,qCAELhpO,KAAKioO,OAAS/+K,EACdlpD,KAAK65L,UAAY3wI,EAAM2wI,UACvB75L,KAAKipO,QAAU//K,EAAM+/K,QAErB//K,EAAMwhH,gBAE2B,IAA7B1qK,KAAKmH,QAAQuY,aACbwpC,EAAMsnF,UAAS,SAAS3kI,GAChBA,EAAQymF,WACRzmF,EAAQymF,UAAUx8C,OAE1B,IAGJ91C,KAAKknO,eACLlnO,KAAK2hF,QAAQ81D,KAAKvuF,EAAM+3F,SAES,IAA7BjhJ,KAAKmH,QAAQuY,aACbwpC,EAAMsnF,UAAS,SAAS3kI,GAChBA,EAAQymF,WACRzmF,EAAQymF,UAAUp7C,MAE1B,IAGJl3C,KAAKggK,SAAWhgK,KAAKkpO,iBACrBlpO,KAAK+rK,WAAa,IAAI8iD,GACtB7uN,KAAK8nO,kBACL9nO,KAAKmpO,kBACLnpO,KAAKopO,uBACLppO,KAAKqpO,wBAELrpO,KAAKoK,QAAQm3L,IACb+nC,GAAkBtpO,KAAK65L,UAAUwhB,OAE5Br7M,KAAKupO,WACNvpO,KAAKwpO,mBAGTxpO,KAAKypO,uBACT,EAEAA,sBAAuB,WACnB,IACIC,EADM1pO,KACegnO,YACrB2C,EAAgBD,EAAeC,cAC/BC,EAAoBF,EAAeE,kBAEnCD,GAAiBC,IACjB5pO,KAAK6pO,cAAc7pO,KAAK8pO,yBAAyB,GACjD9pO,KAAKgnO,YAAY4C,mBAAoB,EAE7C,EAEAZ,mCAAoC,WAChC,IAAI/2D,EAAejyK,KAAKmH,QAAQg3C,MAC5BA,EAAQv1C,EAASqpK,GAAgBA,EAAgBA,EAAa83D,aAAe93D,EAAanxI,KAE1Fqd,GACAn+C,KAAK6L,QAAQ8Z,aAAa,uBAAwBw4B,EAE1D,EAEAi5F,aAAc,SAAS4yF,GACnB,IAAI/oF,EACJ,GAAI+oF,IAAkBA,EAAcj+N,OAASi+N,EAAch+N,QAAUg+N,EAAc7iO,SAAU,CACzF,IAAIitB,EAAiBp0B,KAAKmH,QACtBA,EAAUqB,EAAW,CAAC,EAAGwhO,EAAc7iO,QAAS,CAChDixL,UAAW,CACPrsL,MAAOi+N,EAAcj+N,MACrBC,OAAQg+N,EAAch+N,UAI9Bi+N,GAAmBjqO,KAAK6mO,iBAAkB1/N,GAC1CnH,KAAKmH,QAAUqB,EAAW,CAAC,EAAGxI,KAAK6mO,iBAAkB1/N,GACrDnH,KAAK+mO,WAAW/mO,KAAKmH,QAASnH,KAAK8mO,QACnC9mO,KAAK0kO,iBAEL,IAAIx7K,EAAQlpD,KAAK8oO,YAEjB5/K,EAAMwhH,eACN4+D,GAAkBpgL,EAAM2wI,UAAUwhB,OAElCp6D,EAAS/3F,EAAM+3F,OAEfjhJ,KAAKmH,QAAUitB,CACnB,MACI6sH,EAASjhJ,KAAK2hF,QAAQy1D,eAG1B,OAAO6J,CACX,EAEAunF,eAAgB,WACZ,OAAOxoO,KAAK65L,qBAAqBkwB,IAAuB/pN,KAAKmH,QAAQ83J,SAAWj/J,KAAKmH,QAAQ83J,QAAQF,MACzG,EAEAoqE,gBAAiB,WACb,IAAIhiO,EAAUnH,KAAKmH,SACM,IAArBA,EAAQqtK,WACRx0K,KAAKkqO,UAAY,IAAI3a,GAASvvN,KAAK65L,UAAW1yL,EAAQqtK,UAE9D,EAEA40D,qBAAsB,WAClB,IAAIe,EAAWnqO,KAAKmH,QAAQgjO,SACxBjkM,GAAaikM,GAAY,CAAC,GAAGjkM,WAChB,IAAbikM,IAAoC,IAAdjkM,IACtBlmC,KAAKoqO,eAAiB,IAAIza,GAAc3vN,KAAMkmC,GAEtD,EAEAmjM,sBAAuB,WACnB,IAAIc,EAAWnqO,KAAKmH,QAAQgjO,SACxBxU,GAAcwU,GAAY,CAAC,GAAGxU,YACjB,IAAbwU,IAAqC,IAAfxU,IACtB31N,KAAKqqO,gBAAkB,IAAI3Z,GAAe1wN,KAAM21N,GAExD,EAEA2U,sBAAuB,WACnB,IAAI91D,EAAWx0K,KAAKmH,QAAQqtK,SACxB21D,EAAWnqO,KAAKmH,QAAQgjO,SACxBjkM,GAAaikM,GAAY,CAAC,GAAGjkM,UAC7ByvL,GAAcwU,GAAY,CAAC,GAAGxU,WAC9B4U,IAAa/1D,IAA0B,IAAb21D,IAAoC,IAAdjkM,GAAyBlmC,KAAK8jK,iBAAiB,CAAEm9B,GAAY98G,GAAM68G,MACnHwpC,IAA0B,IAAbL,IAAqC,IAAfxU,KAA0B31N,KAAK8jK,iBAAiB,CAAEo9B,GAAYC,GAAMC,KACvGv1L,EAAU7L,KAAK6L,QAEf7L,KAAKyqO,kBAAoBF,GAAaC,GACtC3+N,EAAQsB,MAAM40E,YAAc/hF,KAAK0qO,cAAgB,GACjD1qO,KAAKyqO,kBAAmB,GAChBzqO,KAAKyqO,kBAAsBF,GAAaC,IAChD3+N,EAAQsB,MAAM40E,YAAc,OAE5B/hF,KAAKyqO,kBAAmB,GAG5BzqO,KAAK2qO,kBAAkBJ,GAAYC,EACvC,EAEAG,iBAAkB,SAASC,EAAMn6L,GAC7B,IAAIo6L,EAAY7qO,KAAK6qO,UAChBA,IAIDA,EAAUC,YACVD,EAAUC,WAAWF,GAGrBC,EAAUE,YACVF,EAAUE,WAAWt6L,GAE7B,EAEAy4L,eAAgB,WACZ,IACI7wB,EADMr4M,KACemH,QAAQ83J,QASjC,OANIj/J,KAAKwoO,iBACKxoO,KAAKgrO,qBAAqB3yB,GAE1B,IAAI9xF,GAAQvmH,KAAKuqK,aAAc8tC,EAIjD,EAEA2yB,qBAAsB,SAAS7jO,GAC3B,OAAO,IAAImwN,GAAct3N,KAAK65L,UAAW1yL,EAC7C,EAEAyjL,cAAe,SAASzjL,EAASw/N,IAikDrC,SAA2Bx/N,EAASw/N,GAChC,IACI/+B,EAAUjS,EAAcrd,EADxB2yD,GAAsBtE,GAAgB,CAAC,GAAe,cAAK,CAAC,EAGhE,SAASuE,EAAexhD,GACpB,IAAIyhD,GAAazhD,GAAe,CAAC,GAAGz4D,OAAS0kE,EAAa1kE,MACtDn6G,EAAStO,EAAW,CAAC,EACrByiO,EACAA,EAAkBrjC,GAClBjS,EACAA,EAAaiS,GAAW,CACpBriC,KAAM,CAAEt0C,MAAOk6G,GACf/1D,OAAQ,CAAEnkD,MAAOk6G,GACjBhtL,MAAO,CAAE8yE,MAAOk6G,IAEpBzhD,GAKJ,cAFO5yK,EAAO8wL,GAEP9wL,CACX,CAEA,IAAK,IAAIlN,EAAM,EAAGA,EAAMu8N,GAAW3+N,OAAQoC,IACvCg+L,EAAWu+B,GAAWv8N,GAAO,OAC7B+rL,EAAexuL,EAAQwuL,cAAgB,CAAC,EAGxCrd,GAFAA,EAAO,GAAGl6J,OAAOjX,EAAQygM,KAEb/sL,IAAIqwN,GAEhB/jO,EAAQygM,GAAYtvB,EAAK9wK,OAAS,EAAI8wK,EAAOA,EAAK,EAE1D,CAhmDQ8yD,CAAkBjkO,EAASw/N,GAkmDnC,SAA6Bx/N,EAASw/N,GAClC,IAAI13L,EAAS9nC,EAAQ8nC,OACjBo8L,EAAep8L,EAAOznC,OACtB6rL,EAAiBlsL,EAAQksL,eACzBi4C,EAAiB9iO,EAAW,CAAC,EAAGrB,EAAQksL,gBACxCk4C,EAAsB5E,EAAen+N,EAAW,CAAC,EAAGm+N,EAAatzC,gBAAkB,CAAC,EACpFm4C,EAAsBhjO,EAAW,CAAC,EAAG+iO,GAEzCE,GAA4BH,GAC5BG,GAA4BD,GAE5B,IAAK,IAAIjkO,EAAI,EAAGA,EAAI8jO,EAAc9jO,IAAK,CACnC,IAAIo9M,EAAa11K,EAAO1nC,GAAG7B,MAAQyB,EAAQksL,eAAe3tL,KAEtDqoN,EAAcvlN,EACd,CAAE4F,KAAM,IACRo9N,EACAD,EAAoB5mB,GACpB,CAAE1lD,QAAS93J,EAAQ83J,SACnBqsE,EACAj4C,EAAesxB,IAGnB11K,EAAO1nC,GAAGyhM,UAAY+kB,EACtB9+K,EAAO1nC,GAAKiB,EAAW,CAAC,EAAGulN,EAAa9+K,EAAO1nC,IAC/C0nC,EAAO1nC,GAAG6G,KAAO6gC,EAAO1nC,GAAG6G,MAAQ,EACvC,CACJ,CA5nDQs9N,CAAoBvkO,EAASw/N,EACjC,EAEAgB,kBAAmB,WAKf,IAJA,IAAIxgO,EAAUnH,KAAKmH,QACf8nC,EAAS9nC,EAAQ8nC,OACjBC,EAAS/nC,EAAQkxL,cAAgB,GAE5B9wL,EAAI,EAAGA,EAAI0nC,EAAOznC,OAAQD,IAAK,CACpC,IAAIk9L,EAAgBx1J,EAAO1nC,GACvBokO,EAAcz8L,EAAO3nC,EAAI2nC,EAAO1nC,QAChC5G,EAAW6jM,EAAcuE,UAE7BvE,EAAcxzE,MAAQwzE,EAAcxzE,OAAS06G,EACzC/qO,IACAA,EAASqwH,MAAQrwH,EAASqwH,OAAS06G,EAE3C,CACJ,EAEA7C,UAAW,WACP,IAAI3hO,EAAUnH,KAAKmH,QACfgxK,EAAWn4K,KAAK4rO,kBAChB1iL,EAAQ,IAAIz+B,EAAQikJ,YAAY1uK,KAAK6rO,iBACzC3iL,EAAMorH,MAAQt0K,KACdkpD,EAAM2wI,UAAY1hB,EAElB,IAAIh6H,EAAQwzH,EAAMI,WAAW5qK,EAAQg3C,OACjC03I,EAAWlkB,EAAMI,WAAW5qK,EAAQ0uL,SAAU,CAC9C3kD,MAAO/pI,EAAQg3C,MAAM+yF,MACrB5jI,SAAUnG,EAAQg3C,MAAM7wC,WAI5B,GAFA47C,EAAM/O,OAAO/xC,MAAM8gD,EAAOyoH,EAAMO,YAAY,CAAC/zH,EAAO03I,KAEhD1uL,EAAQ2uL,QAAU3uL,EAAQ2uL,OAAO9oL,QAAS,CAC1C,IAAI8oL,EAAS,IAAIs9B,GAAOj7C,EAAShxK,QAAQ2uL,OAAQ91L,KAAKuqK,cACtDrhH,EAAM/O,OAAO27I,GACb5sI,EAAM+/K,QAAUnzC,CACpB,CAIA,OAHA5sI,EAAM/O,OAAOg+H,GACbjvH,EAAMmpF,SAECnpF,CACX,EAEA2iL,cAAe,WACX,IAAI1kO,EAAUnH,KAAKmH,QACf6I,EAAOhQ,KAAKuyB,UAEhB,OAAO/pB,EAAW,CACdkX,YAAavY,EAAQuY,YACrB3T,MAAOiE,EAAKjE,OAASmtL,EAAiBp3B,cACtC91J,OAAQgE,EAAKhE,QAAUktL,EAAiBr3B,gBACzC16J,EAAQixL,UACf,EAEAwzC,gBAAiB,SAASE,GACtB,IAAI3kO,EAAUnH,KAAKmH,QAInB,OAFeqtN,GAAgBxgN,QAAQozC,OAAO0kL,EAAa,GAAK3kO,EAAQ8nC,OAAQ9nC,EAASnH,KAAKuqK,aAGlG,EAEAu9D,gBAAiB,WAOb,IANA,IAGIxvD,EADMt4K,KACK65L,UAAUvhB,KACrByzD,EAAa/rO,KAAK4nO,YAAc,GAE3BrgO,EAAI,EAAGA,EAAI+wK,EAAK9wK,OAAQD,IAAK,CAClC,IAAI49B,EAAOmzI,EAAK/wK,GACZJ,EAAUg+B,EAAKh+B,QACnB,GAAIg+B,aAAgBu6I,GAAgBv4K,EAAQo/B,SAAWp/B,EAAQqrC,SAAU,CACrE,IAAIyhB,EAAQ9uB,EAAK8uB,QAEb/tB,EAAY,IAAI2uL,GAZb70N,KAYiCmlC,EACpC38B,EAAW,CAAEkO,IAAKu9C,EAAMv9C,IAAKyC,IAAK86C,EAAM96C,KAAOhS,EAAQo/B,SAG3DwlM,EAAWpqO,KAAKukC,EACpB,CACJ,CACJ,EAEA8lM,aAAc,SAASrnO,GACnB,OAAO3E,KAAKoK,QAAQi3L,GAAc18L,EACtC,EAEA+9E,QAAS,SAAS/9E,GACd,OAAO3E,KAAKoK,QAAQ2yE,GAAQp4E,EAChC,EAEAsnO,WAAY,SAAStnO,GACjB,OAAO3E,KAAKoK,QAAQk3L,GAAY38L,EACpC,EAEAsiO,cAAe,WACXjnO,KAAKksO,cAAgBlsO,KAAK+iF,OAAOv5E,KAAKxJ,MACtCA,KAAKmsO,gBAAkBnsO,KAAK4kH,SAASp7G,KAAKxJ,MAC1CA,KAAKosO,cAAgBpsO,KAAK42F,OAAOptF,KAAKxJ,MACtCA,KAAKqsO,aAAersO,KAAK4mH,MAAMp9G,KAAKxJ,MACpCA,KAAKssO,kBAAoBtsO,KAAK0yF,WAAWlpF,KAAKxJ,MAC9CA,KAAK41N,mBAAqB51N,KAAK61N,YAAYrsN,KAAKxJ,MAChDA,KAAK0+J,mBAAqB1+J,KAAK2mH,YAAYn9G,KAAKxJ,MAChDA,KAAK4oO,0BAA4B5oO,KAAKusO,WAAW/iO,KAAKxJ,MACtDA,KAAK6oO,0BAA4B7oO,KAAKwsO,UAAUhjO,KAAKxJ,MAErDA,KAAKs3I,WAAa32I,MAAM0kC,SACpBrlC,KAAKs3I,WAAW9tI,KAAKxJ,MAhiBX,GAmiBlB,EAEAi2H,YAAa,SAASG,GACdA,GACAp2H,KAAK+1H,UAAUp0H,KAAKy0H,EAE5B,EAEAF,eAAgB,SAASE,GACrB,IAAI98G,EAAQtZ,KAAK+1H,UAAUpgH,QAAQygH,GAC/B98G,GAAS,GACTtZ,KAAK+1H,UAAUvrH,OAAO8O,EAAO,EAErC,EAEAwqJ,iBAAkB,SAAS/5J,GAEvB,IADA,IAAIgsH,EAAY/1H,KAAK+1H,UACZnsH,EAAM,EAAGA,EAAMmsH,EAAUvuH,OAAQoC,IACtC,GAAImsH,EAAUnsH,GAAKk6J,iBAAiB/5J,GAChC,OAAO,CAGnB,EAEAK,QAAS,SAAShI,EAAMi1B,QACP,IAATA,IAAmBA,EAAO,CAAC,GAE/BA,EAAK/sB,OAAStK,KAEVoC,IAASo/L,GACTnqK,EAAK86D,OAAOgqC,MAAQn8H,KAAKysO,uBAAuBp1M,EAAK86D,OAAOgqC,OACrD/5H,IAASu+L,GAChB3gM,KAAK0sO,sBAAsBr1M,EAAK8kG,OACzB/5H,IAASw+L,GAChB5gM,KAAK2sO,uBACEvqO,IAASq+L,IAChBzgM,KAAK4sO,YAAYv1M,EAAK8kG,OACtBn8H,KAAK6sO,gBAAgBx1M,EAAK8kG,QACnB/5H,IAASk+L,IAChBtgM,KAAK8sO,iBAAiBz1M,GAK1B,IAFA,IAAI0+F,EAAY/1H,KAAK+1H,UACjB1sH,GAAqB,EAChBO,EAAM,EAAGA,EAAMmsH,EAAUvuH,OAAQoC,IAClCmsH,EAAUnsH,GAAKQ,QAAQhI,EAAMi1B,KAC7BhuB,GAAqB,GAI7B,OAAOA,CACX,EAEAg+N,cAAe,WACX,IAII15M,EAIIo/M,EARJlhO,EAAU7L,KAAK6L,SAEnB7L,KAAK0qO,aAAe7+N,EAAQsB,MAAM40E,YAGlCk3C,GAAWptH,IAAW8hB,EAAM,CAAC,GAAQ04M,IAAgBrmO,KAAKksO,cAAev+M,EAAK20K,IAAetiM,KAAK41N,mBAAoBjoM,EAAK24M,IAAetmO,KAAK0+J,mBAAoB/wI,EAAK44M,IAAYvmO,KAAKmsO,gBAAiBx+M,EAAe,UAAI3tB,KAAKssO,kBAAmB3+M,EAAK64M,IAAUxmO,KAAKosO,cAAez+M,EAAK84M,IAAQzmO,KAAKqsO,aAAc1+M,IAEpT3tB,KAAKgtO,2BAEL/zG,GAAWptH,IAAWkhO,EAAQ,CAAC,GAAU3G,IAAcpmO,KAAKs3I,WAAYy1F,IAG5E/sO,KAAK6qO,UAAYl2D,GAASD,iBAAiBttH,OAAOpnD,KAAK6L,QAAS,CAC5DiK,MAAO9V,KAAK4gF,OAAOp3E,KAAKxJ,MACxB06B,KAAM16B,KAAK4iF,MAAMp5E,KAAKxJ,MACtB2L,IAAK3L,KAAK8iF,KAAKt5E,KAAKxJ,MACpB+1N,IAAK/1N,KAAKqgF,KAAK72E,KAAKxJ,MACpBgnF,aAAchnF,KAAKg2N,cAAcxsN,KAAKxJ,MACtCknF,cAAelnF,KAAKi2N,eAAezsN,KAAKxJ,MACxCk2N,WAAYl2N,KAAKm2N,YAAY3sN,KAAKxJ,QAGtCA,KAAKsqO,uBACT,EAEA3jH,YAAa,SAAShiH,GACd3E,KAAKitO,gBACLjtO,KAAKitO,cAAc3+M,IAAItuB,KAAM2E,GAC7B3E,KAAKitO,cAAgB,MAGrBjtO,KAAKktO,mBACLltO,KAAKktO,kBAAmB,EACxBltO,KAAKoK,QAAQ22L,KAGb/gM,KAAKmtO,uBAAyBntO,KAAKotO,uBACnCptO,KAAKqtO,oBAAoBrtO,KAAKotO,qBAAqB73L,SAAU,MAAM,GACnEv1C,KAAKstO,qBAAqB,MAAM,GAExC,EAEA9D,iBAAkB,WACVxpO,KAAK6qO,WAAa7qO,KAAK6qO,UAAUlwM,QACjC36B,KAAK6qO,UAAUlwM,QAEvB,EAEAq7L,cAAe,SAASrxN,GAChB3E,KAAKqqO,kBAAoBrqO,KAAKutO,mBAAmB5oO,KACjD3E,KAAKwtO,iBAAmB7oO,EAAE65E,SAC1Bx+E,KAAKkzN,oBACLlzN,KAAKytO,uBACLztO,KAAK2hF,QAAQi2D,kBAErB,EAEAu+E,YAAa,SAASxxN,GACd3E,KAAK0tO,WAAa1tO,KAAKutO,mBAAmB5oO,KACtC3E,KAAK2hF,SACL3hF,KAAK2hF,QAAQm2D,iBAEjB93I,KAAK0tO,UAAW,EAChB1tO,KAAKoK,QAAQg3L,GAAU,CAAC,GAEhC,EAEA60B,eAAgB,SAAStxN,GACrB,IAAIgpO,EAAiB3tO,KAAKqqO,gBAE1B,GAAIsD,IAAmB3tO,KAAKutO,mBAAmB5oO,GAAI,CAC/CA,EAAEwE,iBACF,IAAIykO,EAA0B5tO,KAAKwtO,iBAC/BlmJ,GAAc3iF,EAAE65E,SAAWovJ,EAA0B,EAEzD,GAAIvqO,KAAKoU,IAAI6vE,IAAe,GAAK,CAC7BA,EAAajkF,KAAKiT,MAAmB,GAAbgxE,GAExBtnF,KAAKwtO,iBAAmB7oO,EAAE65E,SAC1B,IAAInnD,EAAO,CAAE0N,MAAOuiD,EAAYspH,WAAYA,GAAW5wM,KAAK65L,UAAUvhB,MAAO/uJ,cAAe5kB,GAC5F,GAAI3E,KAAK0tO,WAAa1tO,KAAKoK,QAAQ82L,GAAY7pK,GAAO,CAClD,IAAIm1K,EAASxsM,KAAKkuN,kBAAkBvpN,GAE/B3E,KAAK0tO,WACN1tO,KAAK0tO,UAAW,IAGPr2M,EAAKu5K,WAAa+8B,EAAe/c,aAAatpI,EAAYklH,MACxDxsM,KAAKoK,QAAQ+2L,GAAM9pK,IAC9Bs2M,EAAel9L,MAEvB,CACJ,CACJ,CACJ,EAEA+7L,UAAW,SAAS7nO,GAChB,GAAIA,EAAEkH,QAAS,CACX,IAAIA,EAAU7L,KAAK6tO,qBAAqBlpO,EAAEkH,QAASlH,GAE/CkH,GAAWA,EAAQiiO,OACnBjiO,EAAQiiO,MAAM9tO,KAAM2E,EAAE4kB,cAE9B,CACJ,EAEAq3D,OAAQ,SAASj8E,GACb,IAAI6nM,EAASxsM,KAAKkuN,kBAAkBvpN,IAEhC3E,KAAKutO,mBAAmB5oO,IAAO3E,KAAK65L,UAAUsnB,wBAAwB3U,KAItExsM,KAAK8jK,iBAAiB,CAAEm9B,GAAY98G,GAAM68G,MAC1ChhM,KAAK+tO,iBAAiBppO,EAAG6nM,EAAQvL,IAGjCjhM,KAAKkqO,WAAalqO,KAAKkqO,UAAUp0N,MAAMnR,KACvC3E,KAAK2hF,QAAQi2D,kBACb53I,KAAKkzN,oBACLlzN,KAAKytO,uBACLztO,KAAKguO,gBAAiB,EACtBhuO,KAAKuqK,aAAa0b,SAAU,GAG5BjmL,KAAKoqO,gBACDpqO,KAAKoqO,eAAet0N,MAAMnR,IAC1B3E,KAAKoK,QAAQ82L,GAAY,CAAE0P,WAAYA,GAAW5wM,KAAK65L,UAAUvhB,MAAO/uJ,cAAe5kB,IAGnG,EAEAi+E,MAAO,SAASj+E,GACZ,IACI2uD,EADMtzD,KACMupO,UACZ/0D,EAFMx0K,KAESkqO,UAEnB,IAAIlqO,KAAKutO,mBAAmB5oO,GAA5B,CAIA,GAAI6vK,EAAU,CACV,IAAIx7G,EAASw7G,EAAS95I,KAAK/1B,GAEvBq0D,IAAWh5D,KAAKoK,QAAQ+5E,GAAM,CAAEysH,WAAY53I,EAAQzvC,cAAe5kB,KACnE6vK,EAAS6N,KAEjB,MAAO,GAAI/uH,EAAO,CAId,IAHA,IAAI26K,EAAW,CAAC,EACZ31D,EAAOhlH,EAAMglH,KAER/wK,EAAI,EAAGA,EAAI+wK,EAAK9wK,OAAQD,IAAK,CAClC,IAAI4xM,EAAc7gC,EAAK/wK,GAEvB,GADe4xM,EAAYhyM,QAAQ/E,KACrB,CACV,IAAI+iC,EAAOg0K,EAAYhyM,QAAQqrC,SAAW7tC,EAAER,EAAIQ,EAAES,EAC9C2/B,EAAQI,EAAK65C,cAAgB75C,EAAK9hB,SAExB,IAAV0hB,IACAkpM,EAAS90B,EAAYhyM,QAAQ/E,MAAQ+2M,EAAYv3B,eAAe78I,GAExE,CACJ,CAEAuuB,EAAMs9I,WAAaq9B,EACnBjuO,KAAKoK,QAAQ+5E,GAAM,CACfysH,WAAYq9B,EACZ1kN,cAAe5kB,GAEvB,CAEI3E,KAAKoqO,gBACLpqO,KAAKoqO,eAAe1vM,KAAK/1B,EAjC7B,CAmCJ,EAEAm+E,KAAM,SAASn+E,GACX,IAAI3E,KAAKutO,mBAAmB5oO,GAA5B,CAIA,IAAI6vK,EAAWx0K,KAAKkqO,UAapB,GAZI11D,GAAYA,EAAS7oK,IAAIhH,IACzB3E,KAAK2hF,QAAQm2D,iBACb93I,KAAKoK,QAAQ42L,GAAU,CACnB4P,WAAYA,GAAW5wM,KAAK65L,UAAUvhB,MACtC/uJ,cAAe5kB,IAEnB3E,KAAKguO,gBAAiB,EACtBhuO,KAAKuqK,aAAa0b,SAAU,GAE5BjmL,KAAKkuO,eAAevpO,EAAGq8L,IAGvBhhM,KAAKoqO,eAAgB,CACrB,IAAIpxK,EAASh5D,KAAKoqO,eAAez+N,IAAIhH,GACjCq0D,IAAWh5D,KAAKoK,QAAQ+2L,GAAM,CAAEyP,WAAY53I,EAAQzvC,cAAe5kB,MACnE3E,KAAKoqO,eAAe35L,OACpBzwC,KAAKoK,QAAQg3L,GAAU,CAAEwP,WAAY53I,EAAQzvC,cAAe5kB,IAEpE,CArBA,CAsBJ,EAEA4oO,mBAAoB,SAAS5oO,GACzB,IAAIonO,EAAa/rO,KAAK4nO,aAAe,GACrC,IAAKmE,EAAWvkO,OACZ,OAAO,EAGX,IAAIglM,EAASxsM,KAAKkuN,kBAAkBvpN,GAChCiqF,EAAO5uF,KAAK65L,UAAU+nB,YAAYpV,GACtC,GAAI59G,EACA,IAAK,IAAIhlF,EAAM,EAAGA,EAAMmiO,EAAWvkO,OAAQoC,IACvC,GAAImiO,EAAWniO,GAAKqrN,OAAOrmI,GACvB,OAAO,CAIvB,EAEAu/I,oBAAqB,WACjB,IACIxY,GADW31N,KAAKmH,QAAQgjO,UACE,CAAC,GAAGxU,YAAc,CAAC,EACjD,OAAO38F,EAAe28F,EAAWhF,KA12gBd,GA22gBvB,EAEAkF,YAAa,SAASlxN,GAClB,IAAIsuH,EAAWjzH,KAEX+kC,EAAQta,EAAQylK,gBAAgBvrL,GAChCgpO,EAAiB3tO,KAAKqqO,gBACtB79B,EAASxsM,KAAKkuN,kBAAkBvpN,GAEpC,IAAI3E,KAAKutO,mBAAmB5oO,IAAO3E,KAAK65L,UAAUsnB,wBAAwB3U,GAI1E,GAAImhC,EAAgB,CAChB,IAAIt2M,EAAO,CAAE0N,MAAOA,EAAO6rK,WAAYA,GAAW5wM,KAAK65L,UAAUvhB,MAAO/uJ,cAAe5kB,IACnF3E,KAAK0tO,UAAa1tO,KAAKoK,QAAQ82L,GAAY7pK,KAC3C1yB,EAAEwE,iBAEGnJ,KAAK0tO,WACN1tO,KAAKkzN,oBACLlzN,KAAKytO,uBACLztO,KAAK2hF,QAAQi2D,kBACb53I,KAAK0tO,UAAW,GAGhB1tO,KAAKo2N,YACL97L,aAAat6B,KAAKo2N,YAGtB/+L,EAAKu5K,WAAa+8B,EAAe/c,aAAa7rL,EAAOynK,GACjDn1K,EAAKu5K,aAAe5wM,KAAKoK,QAAQ+2L,GAAM9pK,IACvCs2M,EAAel9L,OAGnBzwC,KAAKo2N,WAAal9L,YAAW,WACzB+5F,EAAS7oH,QAAQg3L,GAAU/pK,GAC3B47F,EAASy6G,UAAW,EAChBz6G,EAAStxC,SACTsxC,EAAStxC,QAAQm2D,gBAEzB,GAAGyqD,IAEX,KAAO,CACH,IAAIjvI,EAAQtzD,KAAKupO,UACjB,IAAKj2K,EACetzD,KAAK+tO,iBAAiBppO,EAAG6nM,EAAQtL,MAE7C5tI,EAAQtzD,KAAKupO,WAIrB,GAAIj2K,EAAO,CACP,IAAI86K,EAAa96K,EAAM86K,YAAcrpM,EACrCuuB,EAAM86K,WAAaA,EAAarpM,EAKhC,IAHA,IAAIuzI,EAAOt4K,KAAKupO,UAAUjxD,KACtBt/G,EAAS,CAAC,EAELzxD,EAAI,EAAGA,EAAI+wK,EAAK9wK,OAAQD,IAAK,CAClC,IAAI4xM,EAAc7gC,EAAK/wK,GACnBqgM,EAAWuR,EAAYhyM,QAAQ/E,KAC/BwlM,IACA5uI,EAAO4uI,GAAYuR,EAAYt3B,YAAYusD,EAAan7G,EAASk7G,sBAAuB3hC,GAEhG,CAEAxsM,KAAKoK,QAAQ+2L,GAAM,CACfp8J,MAAOA,EACP6rK,WAAY53I,EACZzvC,cAAe5kB,IAGf3E,KAAKo2N,YACL97L,aAAat6B,KAAKo2N,YAGtBp2N,KAAKo2N,WAAal9L,YAAW,WACzB+5F,EAASi7G,eAAevpO,EAAGy8L,GAC/B,GAAGmB,GACP,CACJ,CACJ,EAEAwrC,iBAAkB,SAASppO,EAAG6nM,EAAQ6hC,GAClC,IAAIl2D,EAAWn4K,KAAKioO,OAAOpuC,UACvBjrG,EAAOupF,EAAS2jC,cAActP,GAC9Bl0B,EAAOH,EAASG,KAAKzxK,MAAM,GAE/B,GAAK+nF,EAAL,CAIA,IAAI51B,EAAS43I,GAAWt4B,GAERt4K,KAAKoK,QAAQikO,EAAY,CACrCz9B,WAAY53I,EACZzvC,cAAe5kB,IAIf3E,KAAKwpO,oBAELxpO,KAAKguO,gBAAiB,EACtBhuO,KAAKkzN,oBACLlzN,KAAKytO,uBACLztO,KAAKupO,UAAY,CACb34B,WAAY53I,EACZ41B,KAAMA,EACN0pF,KAAMA,GAlBd,CAqBJ,EAEA41D,eAAgB,SAASvpO,EAAG0pO,GACpBruO,KAAKupO,YACLvpO,KAAKoK,QAAQikO,EAAY,CACrBz9B,WAAY5wM,KAAKupO,UAAU34B,WAC3BrnL,cAAe5kB,IAEnB3E,KAAKguO,gBAAiB,EACtBhuO,KAAKupO,UAAY,KAEzB,EAEA+E,iBAAkB,SAAS3pO,EAAG+L,GAC1B,IAAI7E,EAAU7L,KAAK2hF,QAAQt4D,YAAY1kB,GACvC,GAAIkH,EACA,OAAO7L,KAAK6tO,qBAAqBhiO,EAASlH,EAAG+L,EAErD,EAEAm9N,qBAAsB,SAAShiO,EAASlH,EAAG+L,GAGvC,IAFA,IACIq6J,EADA/2J,EAAUnI,EAEPmI,IAAY+2J,GACfA,EAAe/2J,EAAQ+2J,aACvB/2J,EAAUA,EAAQrH,OAGtB,GAAIo+J,EAYA,OAXIA,EAAaoI,WACbpI,EAAeA,EAAaoI,SAASxuK,EAAG3E,KAAKkuN,kBAAkBvpN,KAG/D+L,IACAq6J,EAAeA,EAAal+J,QAAQ6D,KAChBq6J,EAAaoI,WAC7BpI,EAAeA,EAAaoI,YAI7BpI,CAEf,EAEAmjD,kBAAmB,SAASvpN,GACxB,IAAIwiF,EAAc18D,EAAQ4tG,iBAAiB1zH,GAC3C,OAAO3E,KAAK02N,oBAAoBvvI,EAAY/hF,EAAG+hF,EAAYhjF,EAC/D,EAEAoqO,gBAAiB,WACb,IAAKvuO,KAAKwuO,SAAU,CAChB,IAAIn8G,EAAMgH,GAAcr5H,KAAK6L,QAAS,CAAE,cAAe,eACnD8tH,EAActH,EAAIsH,YAClBC,EAAavH,EAAIuH,WACrB55H,KAAKwuO,SAAW,CACZtpN,IAAK00G,EACLptG,KAAMmtG,EAEd,CAEA,OAAO35H,KAAKwuO,QAChB,EAEA/B,uBAAwB,SAAStwG,GAC7B,IAAI6b,EAAUh4I,KAAKuuO,kBACfzwN,EAAS2M,EAAQ46F,cAAcrlH,KAAK6L,SAExC,MAAO,CACH2gB,KAAMlW,EAAM6lH,EAAM/2H,EAAI4yI,EAAQxrH,KAAO1O,EAAO0O,MAC5CtH,IAAK5O,EAAM6lH,EAAMh4H,EAAI6zI,EAAQ9yH,IAAMpH,EAAOoH,KAElD,EAEAwxM,oBAAqB,SAAShtM,EAASC,GACnC,IAAI9d,EAAU7L,KAAK6L,QACfiS,EAAS2M,EAAQ46F,cAAcx5G,GAC/BmsI,EAAUh4I,KAAKuuO,kBACfp2F,EAAmB1tH,EAAQqwG,aAAajvH,GAASmuH,SACjDmC,EAAQ,IAAIg9D,GACZzvK,EAAU5L,EAAO0O,KAAOwrH,EAAQxrH,KAChC7C,EAAU7L,EAAOoH,IAAM8yH,EAAQ9yH,KACjCyuB,UAAUwkG,GAEZ,OAAO,IAAIrc,EAAMK,EAAM/2H,EAAG+2H,EAAMh4H,EACpC,EAEAk8E,KAAM,SAAS17E,GACX,IAAIsuH,EAAWjzH,KAEXyuO,EAAiBzuO,KAAK2hF,QAAQt4D,YAAY1kB,GAC1CkH,EAAU7L,KAAK6tO,qBAAqBY,EAAgB9pO,GACpD+pO,EAAgB1uO,KAAKwoO,iBAEpBxoO,KAAK2uO,YAAYF,EAAgB9pO,IAAO+pO,GACzC1uO,KAAKkzN,oBAGLwb,GACA1uO,KAAK4uO,oBAAoB5uO,KAAKkuN,kBAAkBvpN,GAAIA,GAAG,GAG3D3E,KAAK6uO,gBAAgBhjO,EAASlH,GAG9B3E,KAAK8uO,aAAc,EACnB51M,YAAW,WACP+5F,EAAS67G,aAAc,CAC3B,GAAG,EACP,EAEA/rJ,OAAQ,SAASp+E,GACb,IAAIkH,EAAU7L,KAAKsuO,iBAAiB3pO,GACpC3E,KAAK6uO,gBAAgBhjO,EAASlH,EAClC,EAEAkqO,gBAAiB,SAAShjO,EAASlH,GAI/B,IAHA,IAEIqP,EAAUnI,EACPmI,GACCA,EAAQkW,OACRlW,EAAQkW,MALDlqB,KAKiB2E,GAG5BqP,EAAUA,EAAQrH,MAE1B,EAEAoiO,qBAAsB,WAClB,IACIC,EADMhvO,KACemH,QAAQ2uL,OAAOxoL,SACpCwoL,EAFM91L,KAEOipO,QAEjB,OAAOnzC,GAAUA,EAAOg+B,aAAekb,IAAmB99I,GAAO89I,IAAmB5jN,EACxF,EAEAwrE,OAAQ,WACC52F,KAAKivO,4BACFjvO,KAAK+uO,uBACL/uO,KAAKkvO,wBAELlvO,KAAKmvO,oBAIbnvO,KAAKivO,2BAA4B,CACrC,EAEArqH,SAAU,SAASjgH,GACf,IACI+kO,EADM1pO,KACegnO,YACrB2C,EAAgBD,EAAeC,cAC/ByF,EAAiB1F,EAAe0F,eAChCt5C,EAJM91L,KAIOipO,QAEjB,GAAItkO,EAAEmN,MAAQonL,EAAiBjuK,IAAK,CAChCjrB,KAAKytO,uBACL,IAAI4B,EAAsBrvO,KAAK+uO,uBAE3BpF,GAAiB0F,IAAwB1qO,EAAE4iC,SAC3CvnC,KAAKsvO,gBAAgB3qO,IACbglO,GAAiB0F,IAAwB1qO,EAAE4iC,UAAYuuJ,EAAOg+B,YACtE9zN,KAAKuvO,gBAAgB5qO,EAE7B,MAAWA,EAAEmN,MAAQonL,EAAiBn3B,QAC9BqtE,GACAzqO,EAAEy1B,kBAGFp6B,KAAKggK,UAAYhgK,KAAKggK,SAAShzJ,QAC/BhN,KAAKwvO,eAELxvO,KAAK4mH,SAEFjiH,EAAEmN,MAAQonL,EAAiBhuK,MAC9BkkN,IACApvO,KAAKgnO,YAAY4C,mBAAoB,EACrC5pO,KAAK6uO,gBAAgBO,EAAgBzqO,GACrC3E,KAAK6pO,cAAcuF,IAEfzF,EAGR3pO,KAAKuvO,gBAAgB5qO,GAFrB3E,KAAKsvO,gBAAgB3qO,EAI7B,EAEA2qO,gBAAiB,SAAS3qO,GACtB,IAAIsuH,EAAWjzH,KAGXyvO,EADMzvO,KACWgnO,YACjB7uD,EAFMn4K,KAES65L,UAInB,GAFA41C,EAAW9F,eAAgB,GAEtB8F,EAAWL,eAGZ,OAFApvO,KAAKmvO,wBACLxqO,EAAEwE,iBAIN,IAAIumO,EAAY,SAAUvzG,GACtBszG,EAAWE,aAAexzG,EAE1BlJ,EAAS42G,cAAc4F,EAAWE,cAClC18G,EAAS28G,gBAAgBzzG,GACzBx3H,EAAEwE,gBACN,EAEA,OAAQxE,EAAEmN,KACN,KAAKonL,EAAiBx3B,YAClBguE,EAAUv3D,EAAS4qC,mBAAmB0sB,EAAWE,eACjD,MACJ,KAAKz2C,EAAiBz3B,WAClBiuE,EAAUv3D,EAAS8qC,kBAAkBwsB,EAAWE,eAChD,MACJ,KAAKz2C,EAAiB13B,WAClBkuE,EAAUv3D,EAASwqC,cAAc8sB,EAAWE,eAC5C,MACJ,KAAKz2C,EAAiB33B,SAClBmuE,EAAUv3D,EAAS2qC,cAAc2sB,EAAWE,eAKxD,EAEAJ,gBAAiB,SAAS5qO,GACtB,IAAIsuH,EAAWjzH,KAEXqyH,EAAMryH,KACNyvO,EAAap9G,EAAI20G,YACjBlxC,EAASzjE,EAAI42G,QACb7oF,EAAM/tB,EAAIk4C,aAAanqB,IAI3B,GAFAqvF,EAAW9F,eAAgB,GAEtB8F,EAAWL,eAGZ,OAFApvO,KAAKkvO,6BACLvqO,EAAEwE,iBAIN,IAAIu6D,EAAcoyH,EAAOi+B,WAAWvsN,OAChCkoO,EAAY,SAAUG,GACtBJ,EAAWK,uBAAyBD,EAChCJ,EAAWK,uBACXpsK,GAEJuvD,EAAS42G,cAAc52G,EAAS62G,yBAChCnlO,EAAEwE,gBACN,EAEA,OAAQxE,EAAEmN,KACN,KAAKonL,EAAiB33B,SACtB,KAAK23B,EAAiBz3B,WAClBiuE,EAAUtvF,EAAM31H,EAAQglK,QAAUhlK,EAAQilK,WAC1C,MACJ,KAAKwJ,EAAiB13B,WACtB,KAAK03B,EAAiBx3B,YAClBguE,EAAUtvF,EAAM31H,EAAQilK,UAAYjlK,EAAQglK,SAKxD,EAEA0/C,iBAAkB,WACd,IAAIhzG,EAAQn8H,KAAKgnO,YAAY2I,aAAe3vO,KAAK65L,UAAU6oB,gBAEvDvmF,IACAn8H,KAAK6pO,cAAc1tG,GACnBn8H,KAAK4vO,gBAAgBzzG,GAE7B,EAEA4zG,UAAW,WACP,OAAO/vO,KAAK6L,QAAQ+1E,cAAcjoE,gBAAkB3Z,KAAK6L,OAC7D,EAEA6mF,WAAY,WACH1yF,KAAK+vO,cACN/vO,KAAKivO,2BAA4B,EAEzC,EAEAe,YAAa,WACJhwO,KAAK+vO,cACN/vO,KAAKivO,2BAA4B,EACjCjvO,KAAK6L,QAAQk6B,QAErB,EAEA6mM,YAAa,SAASzwG,GAClBn8H,KAAKgnO,YAAY2I,aAAexzG,EAEhCn8H,KAAKgwO,cAELhwO,KAAK6pO,cAAc1tG,GAAO,EAC9B,EAEA+yG,sBAAuB,WACnB,IACIO,EADMzvO,KACWgnO,YAErByI,EAAWK,uBAAyB,EACpC9vO,KAAK6pO,cAAc7pO,KAAK8pO,yBACxB2F,EAAW9F,eAAgB,EAE3B3pO,KAAKwvO,cACT,EAEA1C,iBAAkB,SAASz1M,GACvB,IACIo4M,EADMzvO,KACWgnO,YAErByI,EAAWK,uBAAyB9vO,KAAKipO,QACpClV,WACA2R,WAAU,SAAUtgO,GAAK,OAAOA,EAAE+B,QAAQ8nC,OAAO31B,QAAU+d,EAAKiqL,aAC1Dl8M,EAAE+B,QAAQs6M,aAAepqL,EAAKoqL,UAAY,IAErDguB,EAAW9F,eAAgB,EAE3B3pO,KAAKgwO,cAELhwO,KAAK6pO,cAAc7pO,KAAK8pO,yBAAyB,EACrD,EAEAA,sBAAuB,WACnB,IACI2F,EADMzvO,KACWgnO,YAGrB,OAJUhnO,KAEOipO,QAEHlV,WAAW0b,EAAWK,uBACxC,EAEAjG,cAAe,SAASh+N,EAASokO,GAC7B,IACIR,EADMzvO,KACWgnO,YAIrB,GAFAhnO,KAAKytO,uBAEA5hO,IAIL4jO,EAAWL,eAAiBvjO,EAE5B7L,KAAKkwO,4BAA4BrkO,IAE5BokO,GAGD,GAFApkO,EAAQqgM,cAEJujC,EAAW9F,cAAe,CAC1B,IAAIxiO,EAAU0E,EAAQ1E,QAEtBnH,KAAKmwO,2BAA2BhpO,EAAQ8nC,OAAO31B,MAAOnS,EAAQs6M,WAClE,MACIzhN,KAAKowO,qBAAqBvkO,EAGtC,EAEA4hO,qBAAsB,WAClB,IACIgC,EADMzvO,KACWgnO,YAEhByI,IAIDA,EAAWL,iBACXK,EAAWL,eAAejjC,uBAC1BnsM,KAAKqwO,iCAGTZ,EAAWL,eAAiB,KAChC,EAEAc,4BAA6B,SAASrkO,GACJ,WAA1B7L,KAAKmH,QAAQuhO,WACb1oO,KAAKswO,sBAAwBtwO,KAAKuwO,4BAA4B1kO,GAC9D7L,KAAK6L,QAAQsuC,OAAOn6C,KAAKswO,wBAG7BtwO,KAAK6L,QAAQ8Z,aAAauzK,EAAiBv3B,uBAAwB91J,EAAQkzC,IAC/E,EAEAsxL,8BAA+B,WACvBrwO,KAAKswO,wBACLtwO,KAAKswO,sBAAsBjkO,SAC3BrM,KAAKswO,sBAAwB,MAGjCtwO,KAAK6L,QAAQs8B,gBAAgB+wJ,EAAiBv3B,uBAClD,EAEA4uE,4BAA6B,SAAS1kO,GAClC,IAAI2kO,EAAgB7gO,SAASkP,cAAc,OACvCkvJ,EAAuBliK,EAAQ1E,QAAQklK,cAE3CmkE,EAAcngN,GAAKxkB,EAAQkzC,IAC3ByxL,EAAc7qN,aAAa,aAAc9Z,EAAQo/L,oBACjDulC,EAAc7qN,aAAa,OAAQooJ,EAAqBv9I,MACxDggN,EAAc7qN,aAAa,uBAAwBooJ,EAAqBxyB,qBAExE,IAAI/oE,EAAUu7F,EAAqBtyB,YAKnC,OAJI3kB,EAAQtkD,IACRg+J,EAAc7qN,aAAa,eAAgB6sD,GAGxCg+J,CACX,EAEA5pH,MAAO,WACH5mH,KAAKgnO,YAAY2C,eAAgB,EACjC3pO,KAAKytO,uBACLztO,KAAKywO,sBACT,EAEA9B,YAAa,SAAS9iO,EAASlH,GAC3B,GAAI3E,KAAKguO,eACL,OAAO,EAGX,IAAI7xG,EAAQn8H,KAAK6tO,qBAAqBhiO,EAASlH,GAAG,SAASkH,GACvD,OAAQA,EAAQwrL,OAASxrL,EAAQ4nK,SAAW5nK,aAAmB6uM,GACnE,IAEIg2B,EAAc1wO,KAAK2wO,aAcvB,OAZA3wO,KAAK4wO,oBAAoBz0G,EAAOx3H,GAE5Bw3H,GAASu0G,IAAgBv0G,GAASA,EAAMk7D,QACxCr3L,KAAK2wO,aAAex0G,EAEfn8H,KAAKwoO,kBAAqBrsG,EAAMk7D,MAAMr3L,KAAM2E,KAC7C3E,KAAK4vO,gBAAgBzzG,GAErBn8H,KAAKowO,qBAAqBj0G,KAI3BA,CACX,EAEAyzG,gBAAiB,SAASzzG,GACD3zH,EAAW,CAAC,EAAGxI,KAAKmH,QAAQ83J,QAAS9iC,EAAMh1H,QAAQ83J,SACrDjyJ,SACfhN,KAAKggK,SAASvyJ,KAAK0uH,EAE3B,EAEAqzG,aAAc,WACNxvO,KAAKggK,UACLhgK,KAAKggK,SAAStyJ,MAEtB,EAEAmjO,wBAAyB,SAASH,EAAaI,EAAgBC,GAC3D,IAAIC,EAAgBhxO,KAAKotO,qBAAuBptO,KAAKixO,wBAAwBP,GAC7E,GAAKM,EAIL,GAAIF,EACA9wO,KAAKstO,qBAAqBoD,GAC1B1wO,KAAKqtO,oBAAoB2D,EAAcz7L,SAAU,MAAM,GACvDv1C,KAAKqtO,oBAAoB2D,EAAcz7L,SAAUm7L,EAAYzhM,QAC7DjvC,KAAK+rK,WAAWt+J,KAAKsjO,GAAmBL,OACrC,CACH,IAAIQ,EAEJ,IAAKF,EAAchkE,+BAEf,YADAhtK,KAAK+rK,WAAWt+J,KAAKijO,IAIzBQ,EAAiBlxO,KAAKmxO,mBAAmBT,EAAaM,KAEhCE,EAAe1pO,QACjCxH,KAAK+rK,WAAWt+J,KAAKyjO,EAAgB,EAAIlxO,KAAKoxO,6BAA6BV,EAAYzhM,QAE/F,CACJ,EAEAkiM,mBAAoB,SAAST,EAAaM,GAGtC,OAFgBhxO,KAAKqxO,oBAAoBL,EAAeN,EAAYpoO,aAEnDinB,QAAO,SAAU4sG,GAAS,OAAOA,IAAUu0G,CAAa,GAC7E,EAEAW,oBAAqB,SAAS56M,EAAW/wB,GAKrC,IAJA,IAEI09H,EAAS,GAEJ77H,EAAI,EAAGA,EAAIkvB,EAAU8e,SAAS/tC,OAAQD,IAAK,CAChD,IAAIsE,EAAU4qB,EAAU8e,SAAShuC,GAE7BsE,EAAQvD,cAAgB5C,EACxB09H,EAAOzhI,KAAKkK,GACLA,EAAQ0pC,UAAY1pC,EAAQ0pC,SAAS/tC,SAC5C47H,EAASA,EAAOhlH,OAVTpe,KAUyBqxO,oBAAoBxlO,EAASnG,IAErE,CAEA,OAAO09H,CACX,EAEAwtG,oBAAqB,SAASz0G,EAAOx3H,GACjC,IAAI2sO,EAAetxO,KAAKitO,cAEpBqE,GAAgBA,IAAiBn1G,IACjCm1G,EAAahjN,IAAItuB,KAAM2E,GACvB3E,KAAKitO,cAAgB,MAGrB9wG,GAASm1G,IAAiBn1G,GAASA,EAAMs3C,OACzCzzK,KAAKitO,cAAgB9wG,EACrBA,EAAMs3C,KAAKzzK,KAAM2E,GAEzB,EAEA+nO,sBAAuB,SAASvwG,GACvBA,GAAUA,EAAMltF,SAIXorJ,GAAarmL,QAAQ8mL,UAAU3+D,EAAMltF,OAAQ,KAAMktF,EAAM19D,UAClDhvC,OACN8hN,YACPvxO,KAAKwxO,gBAAkB,CAAEx2F,OAAQh7I,KAAK6L,QAAQsB,MAAM6tI,QACpDh7I,KAAK6L,QAAQsB,MAAM6tI,OAAS,WAEpC,EAEA2xF,qBAAsB,WACd3sO,KAAKwxO,kBACLxxO,KAAK6L,QAAQsB,MAAM6tI,OAASh7I,KAAKwxO,gBAAgBx2F,OACjDh7I,KAAKwxO,gBAAkB,KAE/B,EAEA3E,gBAAiB,SAAS1wG,GACtB,GAAKA,GAAUA,EAAMltF,OAArB,CAIA,IAAIA,EAASktF,EAAMltF,OAGfvmC,EAFM2xL,GAAarmL,QAAQ8mL,UAAU7rJ,EAAQ,KAAMktF,EAAM19D,UAC5ChvC,OACE8hN,UACnB,GAAI7oO,EAAO,CACP,IAAI2uB,EAAO,CAAE4X,OAAQA,EAAQktF,MAAOA,EAAOzzH,MAAOA,EAAO4B,OAAQtK,MACjEA,KAAKoK,QAAQo4L,GAAWnrK,EAC5B,CATA,CAUJ,EAEAi2M,qBAAsB,SAASnxG,EAAOs1G,GAMlC,IALA,IAEIt5D,EAAWn4K,KAAK65L,UAChBryL,EAAS2wK,EAASlpI,OAAOznC,OAEpBD,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAImqO,EAAav5D,EAASlpI,OAAO1nC,GAC7BoqO,EAPO3xO,KAOmB4xO,4BAA4BF,GACtDh7C,EARO12L,KAQoBoxO,6BAA6BM,GAEvDD,GAAgBC,IAAev1G,EAAMltF,QAQtCyiM,EAAW36M,QAAU46M,EAEjBD,EAAWnsE,OACXmsE,EAAWnsE,KAAKxuI,QAAU46M,KAV9BD,EAAWC,eAAiBA,EAC5BD,EAAW36M,QAAU2/J,EAEjBg7C,EAAWnsE,OACXmsE,EAAWnsE,KAAKxuI,QAAU2/J,GAStC,CACJ,EAEA22C,oBAAqB,SAAS10M,EAAUk5M,EAAch8L,EAAO5G,GAGzD,IAFA,IAES1nC,EAAI,EAAGA,EAAIoxB,EAASnxB,OAAQD,IAAK,CACtC,IAAIsE,EAAU8sB,EAASpxB,GACnBmqO,EAAa7lO,EAAQojC,QAAUA,EAGnC,GAFsByiM,IAAeA,EAAW/lE,WAAa,CAAC,GAAG3+J,SAE1CnB,EAAQo1I,OAAQ,CACnC,IAAIlqH,EAAUkY,EAASA,EAAOlY,QAAUlrB,EAAQojC,OAAOlY,SACnD26M,IAAeG,GAAgBh8L,IAC/BhqC,EAAQo1I,OAAOlqH,QAAQ8e,EAAQ,EAAI9e,EAE3C,CAEIlrB,EAAQ0pC,UAAY1pC,EAAQ0pC,SAAS/tC,QAd9BxH,KAeEqtO,oBAAoBxhO,EAAQ0pC,SAAUs8L,EAAch8L,EAAOhqC,EAAQojC,OAEpF,CACJ,EAEAgiM,wBAAyB,SAAS90G,GAG9B,IAFA,IAAI60G,EAAgB70G,EAAMxvH,OAEnBqkO,IAAkBA,EAAc74D,UACnC64D,EAAgBA,EAAcrkO,OAGlC,OAAOqkO,CACX,EAEAZ,qBAAsB,SAASj0G,GAC3B,IAAI20G,EAAiB9wO,KAAK65L,UAAU5qJ,OAAOznC,OAAS,EAC3BxH,KAAKmtO,sBAG1BntO,KAAK6wO,wBAAwB10G,EAAO20G,GAEpC9wO,KAAK+rK,WAAWt+J,KAAK0uH,EAE7B,EAEAs0G,qBAAsB,SAASt0G,GAC3B,IAAI20G,EAAiB9wO,KAAK65L,UAAU5qJ,OAAOznC,OAAS,EAC3BxH,KAAKmtO,wBAEtB2D,GAAkB9wO,KAAKotO,uBACvBptO,KAAKstO,qBAAqBnxG,GAAO,GACjCn8H,KAAKqtO,oBAAoBrtO,KAAKotO,qBAAqB73L,SAAU,MAAM,GACnEv1C,KAAKotO,qBAAuB,MAEhCptO,KAAK+rK,YAAc/rK,KAAK+rK,WAAWr+J,OACnC1N,KAAK2wO,aAAe,KAE5B,EAEAxD,oBAAqB,WACjB,IAAI2E,OAAsFnzF,IAA1D3+I,KAAKmH,QAAQksL,eAAe1nB,UAAU+qB,gBAClEq7C,EAAqB/xO,KAAKmH,QAAQ8nC,OAAO1f,QAAO,SAAUtqB,GAAK,YAAuC05I,IAAhC15I,EAAE0mK,UAAU+qB,eAA+B,IAAIlvL,OAAS,EAClI,OAAOsqO,GAA6BC,CACxC,EAEAX,6BAA8B,SAASniM,GACnC,IAAI+iM,EAAyBhyO,KAAKmH,QAAQksL,eAAe1nB,UAAU+qB,gBAEnE,OAD4BznJ,EAAO08H,UAAU+qB,iBACbs7C,GAA0B/iM,EAAOlY,SAAWmiK,EAAiB92B,sBACjG,EAEAwvE,4BAA6B,SAAS3iM,GAClC,OAAOA,EAAO0iM,gBAAkB1iM,EAAOlY,SAAWmiK,EAAiB92B,sBACvE,EAEAmqE,WAAY,SAAS5nO,GACjB,IAIQgpB,EAJJwuG,EAAQn8H,KAAK2uO,YAAYhqO,EAAEkH,QAASlH,EAAE4kB,eAEtC4yG,GAASA,EAAMwuE,kBAAoB3qM,KAAKiyO,yBAA2BjyO,KAAKwoO,mBACxExoO,KAAKiyO,uBAAyBjyO,KAAKkyO,mBAAmB1oO,KAAKxJ,MAE3Di5H,GAAWtpH,WAAYge,EAAM,CAAC,GAAQy4M,IAAcpmO,KAAKiyO,uBAAwBtkN,IAEzF,EAEAukN,mBAAoB,SAASvtO,GACzB,IAwBQgpB,EAxBJ0kG,EAAMryH,KACNmH,EAAUkrH,EAAIlrH,QACd83J,EAAU5sC,EAAI2tC,SACd2L,EAAYt5C,EAAI05C,WAChB5vC,EAAQ9J,EAAIs+G,aACZnkC,EAASxsM,KAAKkuN,kBAAkBvpN,GAEpC,GAAI3E,KAAK65L,UAAUvgJ,IAAI6kF,cAAcquE,IACjC,GAAIrwE,GAASA,EAAMwuE,iBAAmBxuE,EAAMltF,QAAUktF,EAAMxvH,OAAO8/L,gBAAiB,CAChF,IAAI0lC,EAAch2G,EAAMxvH,OAAO8/L,gBAAgBD,EAAOpnM,EAAGonM,EAAOroM,EAAGg4H,EAAMuqE,UACzE,GAAIyrC,GAAeA,IAAgBh2G,EAG/B,GAFAn8H,KAAK2wO,aAAewB,GAEfA,EAAY96C,MAAMr3L,KAAM2E,GACJ6D,EAAW,CAAC,EAAGrB,EAAQ83J,QAASkzE,EAAYhrO,QAAQ83J,SACtDjyJ,SACfiyJ,EAAQxxJ,KAAK0kO,GAGjBxmE,EAAUl+J,KAAK0kO,EAG3B,OAGA14G,GAAa9pH,WAAYge,EAAM,CAAC,GAAQy4M,IAAcpmO,KAAKiyO,uBAAwBtkN,IACnF3tB,KAAKkzN,oBACLlzN,KAAKytO,uBACLztO,KAAKiyO,uBAAyB,KAE9BjyO,KAAKywO,qBAAqBt0G,EAElC,EAEAmb,WAAY,SAAS3yI,GACjB,IAAI6nM,EAASxsM,KAAKkuN,kBAAkBvpN,GAChCwzK,EAAWn4K,KAAK65L,UAIpB,GAFA75L,KAAKoyO,iBAAiB5lC,GAElBr0B,EAASkf,MAAO,CAChB,IAAIg7C,EAAel6D,EAASgpC,wBAAwB3U,GAChD6lC,GACAryO,KAAKktO,kBAAmB,EACxBltO,KAAK65L,UAAUxC,MAAMr3L,KAAM2E,IACpB3E,KAAKktO,mBAAqBmF,IACjCryO,KAAKktO,kBAAmB,EACxBltO,KAAKoK,QAAQ22L,IAErB,CAEI/gM,KAAKwoO,kBACLxoO,KAAK4uO,oBAAoBpiC,EAAQ7nM,EAEzC,EAEAytO,iBAAkB,SAAS5lC,GAGvB,IAFA,IAAIoO,EAAa56M,KAAK65L,UAAU+gB,WAEvBrzM,EAAI,EAAGA,EAAIqzM,EAAWpzM,OAAQD,IAAK,CACxC,IAAIyM,EAAU4mM,EAAWrzM,GAErByM,EAAQslC,IAAI6kF,cAAcquE,GAC1Bx4L,EAAQykM,OAAOjM,GAEfx4L,EAAQtG,MAEhB,CACJ,EAEAkhO,oBAAqB,SAASpiC,EAAQ7nM,EAAGokB,GACrC,IAAI/oB,KAAKguO,eAAT,CAIA,IAAI37G,EAAMryH,KACNq4M,EAAiBhmF,EAAIlrH,QAAQ83J,QAC7BkZ,EAAW9lD,EAAIwnE,UACfjE,EAAevjE,EAAIwnE,UAAUjE,aAC7B32B,EAAU5sC,EAAI2tC,SACd2L,EAAYt5C,EAAI05C,WAEpB,GAAIoM,EAASgpC,wBAAwB3U,GAAS,CAC1C,IAAIlzL,EAAQs8K,EAAarU,mBAAmBirB,GAC5C,GAAIlzL,IAAUtZ,KAAKsyO,qBAAwBtyO,KAAKuyO,kBAAoBxpN,EAAS,CACzE,IAAIq6G,EAAS+0C,EAASipC,sBAAsB9nM,GACxCk5N,EAAYpvG,EAAOvoH,KAAI,SAASshH,GAChC,OAAOA,EAAMqqC,UAAU7hK,EAC3B,IACI8tO,EAAYD,EAAU,IAAM,CAAC,EACjCC,EAAUtsC,eAAiBqsC,EAEvBpvG,EAAO57H,OAAS,IAAMxH,KAAKoK,QAAQs2L,GAAc+xC,IAC7Cp6B,EAAerrM,SACfiyJ,EAAQw5C,OAAOr1E,EAAQopE,GAG3B7gC,EAAUl+J,KAAK21H,GAEfpjI,KAAKuyO,kBAAmB,GAExBtzE,EAAQvxJ,OAGZ1N,KAAKsyO,mBAAqBh5N,CAC9B,MAAWyP,GAAU/oB,KAAKuyO,mBACtB5mE,EAAUj+J,OACVuxJ,EAAQvxJ,OACR1N,KAAKuyO,kBAAmB,EAEhC,MAAWvyO,KAAKuyO,mBACZ5mE,EAAUj+J,OACVuxJ,EAAQvxJ,OACR1N,KAAKsyO,mBAAqB,KAC1BtyO,KAAKuyO,kBAAmB,EAzC5B,CA2CJ,EAEAG,aAAc,SAASvrO,GACnB,IAAIgxK,EAAWn4K,KAAK65L,UACpB75L,KAAKs3I,WAAW38G,SAEhBw9I,EAASwjC,iBAET37M,KAAKkzN,kBAAkB/rN,EAC3B,EAEA+rN,kBAAmB,SAAS/rN,GACxB,IACIwkK,EADM3rK,KACU+rK,WAEpB/rK,KAAK2wO,aAAe,KACpB3wO,KAAKitO,cAAgB,KAEhB9lO,GAAYA,EAAQwrO,iBACrB3yO,KAAKwvO,eAGTxvO,KAAKsyO,mBAAqB,KAC1BtyO,KAAKuyO,kBAAmB,EAEpB5mE,GACAA,EAAUj+J,MAElB,EAEAklO,aAAc,WACV5yO,KAAKonO,SACT,EAEAyL,oBAAqB,WACb7yO,KAAK8yO,iBACL5zL,cAAcl/C,KAAK8yO,gBACnB9yO,KAAK8yO,eAAiB,KAE9B,EAEApO,eAAgB,WAMZ,IALA,IAEIv9N,EAAUnH,KAAKmH,QACf2yI,EAAc,GAAG17H,OAAOjX,EAAQyuL,cAE3BmnB,EAAS,EAAGA,EAASjjE,EAAYtyI,OAAQu1M,IAAU,CACxD,IAAI53K,EAAO20G,EAAYijE,IACD,IAAlB53K,EAAK6sC,UAPEhyE,KAQE+yO,2BAA2B5tM,EAAM43K,EAElD,CACJ,EAEAg2B,2BAA4B,SAAS5tM,EAAM43K,GACvC,IAAI9pF,EAAWjzH,KAEXgzO,EAAmB,IAAI7tE,IACvB8tE,EAAejzO,KAAKmH,QAAQ8nC,OAAO1f,QAAO,SAAU0f,GAAU,OAAOA,EAAO2mJ,eAAiBzwJ,EAAK/iC,OAAU6sC,EAAO2mJ,cAA2B,IAAXmnB,CAAe,IAClJm2B,EAAqBD,EAAatmL,MAAK,SAAU1d,GAAU,OAAOn8B,QAAQm8B,EAAOq6K,cAAgB,IACjG6pB,EAAiBF,EAAa1jN,QAAO,SAAU0f,GAAU,OAAOA,EAAO7gC,MAAQ6gC,EAAO7gC,KAAK5G,OAAS,CAAG,IACvG4rO,EAAkBD,EAAet4N,KAAI,SAAUo0B,GAAU,OAAOorJ,GAAarmL,QAAQ8mL,UAAU7rJ,EAAQ,GAAGxf,OAAOy8I,QAAU,IAC3HggD,EAAWknB,EAAgBrvL,QAAO,SAAUjtC,EAAQiuN,GAAiB,OAAOjuN,GAAUguL,GAAW3/J,EAAM4/L,EAAgB,IAAG,GAa9H,GAZwBoO,EAAe5jN,QAAO,SAAU0f,EAAQy3J,GAAY,OAAOz3J,EAAOq6K,eAAiBxyF,EAAQs8G,EAAgB1sC,GAAY,IAE7HplM,SAAQ,SAAU2tC,GAAU,OAAOA,EAAO7gC,KAAK9M,SAAQ,SAAU+jK,EAAK/rJ,GACpF,IAAI4yJ,EAAWmuB,GAAarmL,QAAQ8mL,UAAU7rJ,EAAQ31B,GAAOmW,OAAOy8I,SACpE,GAAIggD,EAAU,CACV,IAAIt1M,EAAOguL,GAAkB14B,EAAU7G,EAAKpyC,EAASs3C,aAAa0J,MAClE/H,EAAWt1J,EAAOA,EAAK3N,eAAY01I,CACvC,CAEAq0F,EAAiBxlO,IAAI0+J,EACzB,GAAI,IAEA8mE,EAAiBhjO,KAAO,EAAG,CAC3B,IAAI6vK,EAAa38K,MAAM6Y,KAAKi3N,EAAiB35N,UACzC6yM,IACArsC,EAAaA,EAAW7jK,OAAOnB,KAAI,SAAUgjB,GAAQ,OAAOA,GAAQ,IAAIlvB,KAAKkvB,EAAO,KAGxFsH,EAAK06I,WAAaA,CACtB,MAAWqzD,IACP/tM,EAAK06I,WAAa,GAE1B,EAEAwzD,YAAa,SAASpkM,GAIlB,IAHA,IAAIyrJ,EAAcL,GAAarmL,QAAQ0mL,YAAYzrJ,GAC/Cn4B,GAAS,EAEJvP,EAAI,EAAGA,EAAImzL,EAAYlzL,OAAQD,IAAK,CACzC,IAAIwe,EAAQ20K,EAAYnzL,GAOxB,GANIwe,IAAUkpD,EACVlpD,EAAQ,QAERA,GAAgB,SAGf+wG,EAAQ7nF,EAAOlpB,IAAS,CACzBjP,GAAS,EACT,KACJ,CACJ,CAEA,OAAOA,CACX,EAEAixN,qBAAsB,WAClB,IACIuL,EADAnsO,EAAUnH,KAAKmH,SAGS,IAAxBA,EAAQuY,cACRvY,EAAQuY,aAAc,EACtB4zN,GAAmB,GAGvBtzO,KAAKonO,UAEDkM,IACAnsO,EAAQuY,aAAc,EAE9B,EAEAuzM,iBAAkB,SAAS3R,EAAaG,GACpCzhN,KAAKmwO,2BAA2B7uB,EAAaG,EACjD,EAEA0uB,2BAA4B,SAAS7uB,EAAaG,GAC9C,IAIIv1J,EAHAisH,EADMn4K,KACS65L,UACfluB,EAFM3rK,KAEU+rK,WAChB04B,GAAiBtsB,EAASyyC,WAAazyC,EAASlpI,QAAQqyK,GAW5D,GAPIp1J,EADAz2B,EAAQgvK,EAAc/+L,KAAM,CAAEk5L,GAAKP,GAAOC,GAAQC,KAC1CpmB,EAASwpC,WAAU,SAASxlF,GAChC,OAAOA,EAAMltF,OAAO31B,QAAUgoM,GAAenlF,EAAM7iH,QAAUmoM,CACjE,IAEQtpC,EAASkpC,oBAAoBC,GAGrCthN,KAAKmtO,uBAAyB1oC,EAAcz3L,SAAWk/C,EAAO,CAC9D,IAAI4kL,EAAiB34D,EAASlpI,OAAOznC,OAAS,EAC1C20H,EAAQjwE,EAAM1kD,OAAS0kD,EAAM,GAAKA,EAEtClsD,KAAK6wO,wBAAwB10G,EAAO20G,EAAgB5kL,EACxD,MACIy/G,EAAUl+J,KAAKy+C,EAEvB,EAEA8gL,uBAAwB,WACpB,OAAOhtO,KAAK65L,UAAU+gB,WAAWpzM,QAAWxH,KAAKggK,UAAYhgK,KAAKwoO,kBAAqBxoO,KAAK8jK,iBAAiB,CAAEg9B,GAAiBC,IACpI,EAEAwyC,uBAAwB,WACpB,IAAI5lN,EAIIo/M,GAHRtzG,GAAaz5H,KAAK6L,UAAW8hB,EAAM,CAAC,GAAQy4M,IAAcpmO,KAAKs3I,WAAY3pH,IAEvE3tB,KAAKgtO,2BAEL/zG,GAAWj5H,KAAK6L,UAAWkhO,EAAQ,CAAC,GAAU3G,IAAcpmO,KAAKs3I,WAAYy1F,GAErF,EAEAyG,aAAc,SAASrsO,EAAS+uL,GAC5B+zC,GAAmBjqO,KAAK6mO,iBAAkB1/N,GAC1CnH,KAAK6mO,iBAAmBr+N,EAAWxI,KAAK6mO,iBAAkB1/N,GAC1DnH,KAAKmH,QAAUqB,EAAW,CAAC,EAAGxI,KAAK6mO,kBAE/B3wC,IACAl2L,KAAK8mO,OAAS5wC,EACdl2L,KAAKuqK,aAAa2rB,MAAQA,GAE9Bl2L,KAAK+mO,WAAW/mO,KAAKmH,QAASnH,KAAK8mO,QAEnC9mO,KAAKsqO,uBACT,EAEAp4M,WAAY,SAAS/qB,EAAS+uL,GAC1Bl2L,KAAKwzO,aAAarsO,EAAS+uL,GAC3Bl2L,KAAK0kO,iBACL1kO,KAAKy9M,SACLz9M,KAAKuzO,wBACT,EAEAE,aAAc,SAASrzF,GACnBpgJ,KAAKuqK,aAAanqB,IAAMttI,QAAQstI,GAC5BpgJ,KAAK2hF,SAAiC,QAAtB3hF,KAAK2hF,QAAQj8E,MAC7B1F,KAAK2oO,iBAEb,EAEA+K,eAAgB,SAASz/D,GACrBj0K,KAAKuqK,aAAa0J,KAAOA,CAC7B,EAEA0/D,oBAAqB,WACjB3zO,KAAK+nO,sBACT,EAEA/lO,QAAS,WAGL,IAAI2rB,EASIo/M,GAXR/sO,KAAKi6D,YAAa,EAGlBw/D,GAAaz5H,KAAK6L,UAAW8hB,EAAM,CAAC,GAAQ04M,IAAgBrmO,KAAKksO,cAAev+M,EAAK20K,IAAetiM,KAAK41N,mBAAoBjoM,EAAKy4M,IAAcpmO,KAAKs3I,WAAY3pH,EAAK24M,IAAetmO,KAAK0+J,mBAAoB/wI,EAAK44M,IAAYvmO,KAAKmsO,gBAAiBx+M,EAAK64M,IAAUxmO,KAAKosO,cAAez+M,EAAK84M,IAAQzmO,KAAKqsO,aAAc1+M,IAEpT3tB,KAAK6qO,YACL7qO,KAAK6qO,UAAU7oO,iBACRhC,KAAK6qO,WAGZ7qO,KAAKiyO,yBAELx4G,GAAa9pH,WAAYo9N,EAAQ,CAAC,GAAU3G,IAAcpmO,KAAKiyO,uBAAwBlF,IAG3F/sO,KAAKgnO,YAAc,KAEnBhnO,KAAK+oO,eAEL/oO,KAAK2oO,kBAEL3oO,KAAK6yO,qBACT,EAEAlK,gBAAiB,WACb,IAAIhnJ,EAAU3hF,KAAK2hF,QACfA,IACAA,EAAQ13E,OAAO,aAAcjK,KAAK4oO,2BAClCjnJ,EAAQ13E,OAAO,aAAcjK,KAAK6oO,2BAClClnJ,EAAQ3/E,UAERhC,KAAK2hF,QAAU,KAEvB,EAEAkmJ,mBAAoB,WAChB,IAAIkE,EAAa/rO,KAAK4nO,YAEtB,GAAImE,EACA,KAAOA,EAAWvkO,OAAS,GACvBukO,EAAW31N,QAAQpU,SAG/B,EAEA+mO,aAAc,WACV,IAAI7/K,EAAQlpD,KAAKioO,OAEb/+K,IACAA,EAAMlnD,UACNhC,KAAKioO,OAAS,MAGlBjoO,KAAKkzN,oBACLlzN,KAAKytO,uBACLztO,KAAK2sO,uBACL3sO,KAAK6nO,qBAED7nO,KAAKggK,UACLhgK,KAAKggK,SAASh+J,UAGdhC,KAAK+rK,YACL/rK,KAAK+rK,WAAW/pK,UAGhBhC,KAAKoqO,iBACLpqO,KAAKoqO,eAAepoO,iBACbhC,KAAKoqO,gBAGZpqO,KAAKkqO,YACLlqO,KAAKkqO,UAAUloO,iBACRhC,KAAKkqO,WAGZlqO,KAAKqqO,kBACLrqO,KAAKqqO,gBAAgBroO,iBACdhC,KAAKqqO,gBAEpB,IAeJ,SAAS/B,GAAoBllG,EAAQhhI,GACjC,GAAIghI,EACA,IAAK,IAAIx5H,EAAM,EAAGA,EAAMw5H,EAAO57H,OAAQoC,IACnC,GAAIw5H,EAAOx5H,GAAKsiK,WAAa9pK,EACzB,MAAO,CAAEghI,EAAOx5H,GAIhC,CAiEA,SAAS6hO,GAA4Bp4C,UAC1BA,EAAeI,WACfJ,EAAeQ,cACfR,EAAeuB,mBACfvB,EAAe9tB,YACf8tB,EAAe6B,oBACf7B,EAAeU,WACfV,EAAeW,aACfX,EAAeC,YACfD,EAAe0B,oBACf1B,EAAewB,eACfxB,EAAeyB,mBACfzB,EAAeM,cACfN,EAAeO,mBACfP,EAAee,YACff,EAAeK,eACfL,EAAehgC,cACfggC,EAAe4B,sBACf5B,EAAemB,iBACfnB,EAAeoB,iBACfpB,EAAegB,iBACfhB,EAAeiB,iBACfjB,EAAe8B,SAC1B,CAEA,SAASyb,GAAWt4B,GAGhB,IAFA,IAAIt/G,EAAS,CAAC,EAELzxD,EAAI,EAAGA,EAAI+wK,EAAK9wK,OAAQD,IAAK,CAClC,IAAI49B,EAAOmzI,EAAK/wK,GACZqgM,EAAWziK,EAAKh+B,QAAQ/E,KACxBwlM,IACA5uI,EAAO4uI,GAAYziK,EAAK8uB,QAEhC,CAEA,OAAO+E,CACX,CAEA,IAAI46K,GAAc,CAAE,OAAQ,cAE5B,SAAS3J,GAAmBpvB,EAAiB1zM,GACzC,IAAK,IAAI4e,KAAS5e,EACd,IAAKsuB,EAAQ1P,EAAO6tN,KAAgBnpN,EAAQxb,eAAe9H,EAAS4e,GAAQ,CACxE,IAAI8tN,EAAa1sO,EAAQ4e,GACrB+tN,EAAgBj5B,EAAgB90L,GACpC,GAAI+wG,EAAQg9G,GAAgB,CACxB,IAAIC,EAA2B,OAAfF,EACXE,IAAcj9G,EAAQ+8G,WAChBh5B,EAAgB90L,GACnBguN,UACO5sO,EAAQ4e,IAEZ+tN,GAAiBhxE,EAAS+wE,IAC7B/wE,EAASgxE,IACT7J,GAAmB6J,EAAeD,EAG9C,CACJ,CAER,CAEA,SAASvK,GAAkBjuB,GACvB,IAAK,IAAIzxM,EAAM,EAAGA,EAAMyxM,EAAM7zM,OAAQoC,IAClCyxM,EAAMzxM,GAAKwwM,cAEnB,CAEAp2C,EAAkB0iE,GAAO,CACrBgC,SAAU,GACVtwC,UAAW,CAAC,EACZtC,OAAQ,CACJ9oL,SAAS,EACTooK,OAAQ,CAAC,EACT/I,cAAe,CACXV,UAAW,CACPe,OAAQ,CACJ31I,QAAS,EACTk6F,MAAOqvC,EACPv0J,MAAO,MAKvB6pL,aAAc,CAAC,EACfvC,eAAgB,CACZ3tL,KAAM04L,GACNhwL,KAAM,GACNu9J,UAAW,CACP3+J,SAAS,GAEbooK,OAAQ,CAAC,EACTyhC,eAAgB,CACZ7pM,SAAS,GAEbq/J,cAAe,CACXV,UAAW,CACPe,OAAQ,CACJ31I,QAAS,EACThrB,MAAO,GAEXiuC,OAAQ,OAIpB/K,OAAQ,GACRopJ,aAAc,KACdp5B,QAAS,CACLjyJ,SAAS,GAEb0S,aAAa,EACb6gK,UAAW,CAAC,EACZpI,SAAU,CAAC,EACXh6H,MAAO,CAAC,EACR+3J,MAAO,CAAC,EACRE,MAAO,CAAC,EACRiF,MAAO,CAAE,CAAC,GACV7mC,UAAU,EACV21D,UAAU,IAGdxpO,MAAM6H,WAAW7H,MAAM8pB,QAAS,CAC5B62I,UAAWA,GACX24B,WAAYA,GACZ6V,UAAWA,GACXvB,YAAaA,GACboC,sBAAuBA,GACvBS,IAAKA,GACLY,SAAUA,GACVjB,SAAUA,GACVsE,aAAcA,GACdnB,QAASA,GACTyC,YAAaA,GACbY,OAAQA,GACRM,YAAaA,GACb7D,iBAAkBA,GAClBlB,YAAaA,GACb9M,iBAAkBA,GAClBtC,oBAAqBA,GACrBqmB,oBAAqBA,GACrB2c,MAAOA,GACPttB,eAAgBA,GAChBpL,cAAeA,GACf2D,cAAeA,GACfmH,UAAWA,GACXR,iBAAkBA,GAClBoM,kBAAmBA,GACnBua,WAAYA,GACZK,cAAeA,GACfN,aAAcA,GACdj8B,aAAcA,GACdnH,qBAAsBA,GACtBizB,UAAWA,GACXyI,cAAeA,GACflE,OAAQA,GACRrB,WAAYA,GACZlB,aAAcA,GACdviB,UAAWA,GACX5D,UAAWA,GACX2B,YAAaA,GACbvlH,KAAMA,GACNoxI,aAAcA,GACd6D,SAAUA,GACVL,cAAeA,GACfmD,YAAaA,GACblE,WAAYA,GACZjgB,aAAcA,GACd8I,oBAAqBA,GACrBgR,gBAAiBA,GACjBjqB,iBAAkBA,GAClBqa,SAAUA,GACVK,cAAeA,GACfG,eAAgBA,GAChBiB,eAAgBA,GAChB5Q,aAAcA,GACdF,gBAAiBA,GACjB4iB,iBAAkBA,GAClBtD,UAAWA,GACXnR,iBAAkBA,GAClBrpB,aAAcA,GACd8S,cAAeA,GACfyC,kBAAmBA,GACnBkC,UAAWA,GACXvrF,QAASA,GACTugG,UAAWA,GACXN,UAAWA,GACXQ,eAAgBA,GAChBD,iBAAkBA,GAClBqS,WAAYA,GACZ1I,eAAgBA,GAChBf,cAAeA,GACfJ,SAAUA,GACVl2B,UAAWA,GACXG,UAAWA,GACXI,cAAeA,GACfL,eAAgBA,GAChBqK,aAAcA,GACdC,gBAAiBA,GACjBC,WAAYA,GACZG,aAAcA,GACdtiB,gBAAiBA,GACjBqY,aAAcA,GACdmK,iBAAkBA,GAClBC,YAAaA,GACbI,mBAAoBA,GACpBI,kBAAmBA,GACnBxK,SAAUA,GACVyK,mBAAoBA,GACpBzvH,SAAUA,GACV0vH,WAAYA,GACZf,eAAgBA,GAChBkB,kBAAmBA,GACnBQ,uBAAwBA,IAG3B,CAr7kBD,CAq7kBG3kM,OAAOH,MAAM+G,SAUhB,SAAU/E,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfywB,EAASzwB,EAAM4pB,GAAG6G,OAClBruB,EAASJ,EAAEI,OAEX4E,GADahH,EAAMJ,WACHoC,EAAEgF,eAElBonE,GADUpuE,EAAM4C,QACP5C,EAAM4tB,YAEfylN,EAAa,mBAEbC,EAAc,cAGdC,EAAQ,QAERzN,EAAO,OACPF,EAAU,UACVrpL,EAAS,SACTi3L,EAAM,IAENC,EAAmB,CACnB7gN,OAAQ,eACRu5I,QAAS,yBACT8L,QAAS,gBACTy7D,eAAgB,0DAChBC,KAAM,oBACNnlM,KAAM,oBACNolM,UAAW,8BACXC,SAAU,yBACVC,SAAU,yBACVC,aAAc,6BACdC,QAAS,UACTC,OAAQ,WACRC,aAAc,gCAGdC,EAAa1jN,EAAOruB,OAAO,CAC3BoF,KAAM,SAAS0D,EAAS1E,GACpB,IAAIc,EAAOjI,KAEXmH,EAAUA,GAAW,CAAC,EAEtBiqB,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GAEnCc,EAAKmxE,WAEDjyE,EAAQynD,WACR3mD,EAAK8sO,YACL9sO,EAAK6pB,aAGT7pB,EAAK2E,QAAQid,GAAGqqN,EAAQF,EAAY,qBAAsB/rO,EAAK86E,OAAOv5E,KAAKvB,IAEvEd,EAAQuB,OAASvB,EAAQ6tO,iBAAmB7tO,EAAQ+kD,MACpDjkD,EAAKsuN,SACEpvN,EAAQ+kD,OACfjkD,EAAKikD,MAAM/kD,EAAQ+kD,OAGvBjkD,EAAKoqB,mBAELpqB,EAAKgtO,eAAiBt0O,EAAMs4B,UAAS,WACjChxB,EAAKkiB,QAAO,EAChB,GACJ,EAEAhjB,QAAS,CACLynD,UAAU,EACVsmL,cAAc,EACdF,gBAAgB,EAChB9oL,MAAO,KACP9pD,KAAM,aACN4N,KAAM,SACNoB,IAAK,EACL+jO,SAAU,OACVC,cAAe,gBACfxqN,SAAU,CACNyqN,UAAW,eAInBhrO,OAAQ,CAAE6yC,EAAQg3L,GAElBlyO,QAAS,WACL,IAAIiG,EAAOjI,KAEXoxB,EAAOrpB,GAAG/F,QAAQuI,KAAKtC,GAEvBtH,EAAMw4B,aAAalxB,EAAKgtO,gBAExBhtO,EAAK2E,QACAY,IAAIvF,EAAK2E,QAAQupB,KAAK,UACtB3oB,IAAIvF,EAAK2E,QAAQupB,KAAK,MACtBiD,IAAI46M,EACb,EAEA9nL,MAAO,SAASA,GACZ,IAAIjkD,EAAOjI,KAEX,GAAIksD,IAAUtpD,EACV,OAAOqF,EAAKd,QAAQ+kD,MAGxBjkD,EAAKd,QAAQ+kD,MAAQA,EACrBjkD,EAAKslM,UAAYrhJ,EACjBjkD,EAAK0W,SACT,EAEA22N,QAAS,SAAS1lN,GACd,IAAI3nB,EAAOjI,KAEP4vB,IAAQ3nB,EAAKS,UACbT,EAAKstO,kBAAkB3lN,GACvB3nB,EAAK0W,UACL1W,EAAKmC,QAAQ8yC,EAAQ,CAAE5yC,OAAQtK,KAAM0I,MAAOknB,IAEpD,EAEA2lN,kBAAmB,SAAS7sO,GACxB,IAGI6mC,EAAM49F,EAHNllI,EAAOjI,KAEPksD,EADUjkD,EAAKd,QACC+kD,MAKpB,GAFAihF,EAAWllI,EAAKutO,OAAO9sO,GAElBwjD,EAAL,CAKAjkD,EAAKslM,UAAY,GAEjB,IAAK,IAAIhmM,EAAI,EAAGA,EAAI4lI,EAAS3lI,OAAQD,IAGpB,MAFbgoC,EAAOtnC,EAAKwtO,MAAMvpL,EAAMrlD,MAAM,EAAGU,EAAI,MAElBmB,EAAMiN,QAAQ45B,IAAS,GAAK2c,EAAM3kD,IAAM2kD,EAAM3kD,GAAGu5B,OAASqsG,EAAS5lI,GAClFU,EAAKslM,UAAU5rM,KAAKuqD,EAAM3kD,IAE1BU,EAAKslM,UAAU5rM,KAAKwrI,EAAS5lI,GAVrC,MAFIU,EAAKd,QAAQ+kD,MAAQjkD,EAAKslM,UAAYpgE,CAe9C,EAEApqD,OAAQ,SAASp+E,GACb,IAAIsD,EAAOjI,KACPmH,EAAUc,EAAKd,QACfgoC,EAAOxsC,EAAEgC,EAAE0C,QAAQwF,QAAQsnO,EAAMC,EAAiBjlM,MAClDumM,EAAmBvmM,EAAKwmM,UAAUv/M,UAClCw/M,EAAgB3tO,EAAK4tO,UAAUH,GAC/BnmM,EAAOtnC,EAAKwtO,MAAMG,GAClBrrG,EAAUtiI,EAAKslM,UAAUp+J,EAAK71B,SAE7BnS,EAAQ+tO,cACTvwO,EAAEwE,iBAGDlB,EAAKmC,QAAQ8pO,EAAO,CAAE5pO,OAAQrC,EAAMshB,cAAe5kB,EAAGmxO,OAAyB,aAAjBvrG,EAAQ7kI,KAAqBypC,KAAMo7F,KAClGtiI,EAAKqtO,QAAQ/lM,EAErB,EAEAsmM,UAAW,SAAS3pL,GAChB,IAAIjkD,EAAOjI,KAEX,OAAO2C,EAAEkY,IAAIqxC,GAAO,SAAS/c,GACzB,OAAOlnC,EAAKslM,UAAU5qM,EAAEwsC,GAAM71B,UAAY61B,EAAKgjC,SACnD,GACJ,EAEA4jK,MAAO,WACH,IAAI9tO,EAAOjI,KACPulB,EAAQtd,EAAKsd,MAEjBtd,EAAK+tO,SAAW/tO,EAAKS,QACrBT,EAAK4sO,aAAa5oO,IAAI,SAAUhE,EAAK2E,QAAQZ,UAC7C/D,EAAK6kK,QAAQp/J,OACbzF,EAAKsd,MAAMqK,IAAI3nB,EAAKS,SACpBT,EAAKsd,MAAM3B,KAAKqwN,GAAa,GAC7BhsO,EAAK4sO,aAAapnO,OAElByrB,YAAW,WACP3T,EAAMghB,QACV,GACJ,EAEAqgF,MAAO,SAASqvH,GACZ,IAAIhuO,EAAOjI,KACPulB,EAAQtd,EAAKsd,MACbsvN,EAAe5sO,EAAK4sO,aACpBjoO,EAAU3E,EAAK2E,QACfkgK,EAAU7kK,EAAK6kK,QACfl9I,EAAMrK,EAAMqK,MAAMntB,QAAQ,UAAW,KAErCqqK,EAAQ7/J,GAAG,cAIXgpO,IACArmN,EAAM3nB,EAAK+tO,UAGfzwN,EAAM3B,KAAKqwN,GAAa,GACxBY,EAAannO,OACbo/J,EAAQr/J,OACR8X,EAAMqK,IAAI,IACV3nB,EAAKqtO,QAAQ1lN,GACbhjB,EAAQmgB,YAAYqnN,EAAiBO,SACzC,EAEA/vH,SAAU,SAASjgH,GACf,IAAIsD,EAAOjI,KACP8R,EAAMnN,EAAE2iC,QACR4uM,EAAUpkO,IAAQnR,EAAMkqB,KAAKK,MAC7BirN,EAAQrkO,IAAQnR,EAAMkqB,KAAKM,KAE3B+qN,GAAWC,KACXluO,EAAK2+G,MAAMuvH,GAEXj9M,YAAW,WACPjxB,EAAK6kK,QAAQ32I,KAAK,KAAKjsB,QAAQE,QAAQ,QAC3C,IAER,EAEAgsO,eAAgB,SAAS/uO,GACrB,IAAIgvO,EACAhvO,EAAO0F,SAASqnO,EAAiBx7D,UACjCvxK,EAAOwF,QAAQsnO,EAAMC,EAAiBjlM,MAE1C,OAAI9nC,EAAO,KAAOrH,KAAK4M,QAAQ,KAIxBypO,IAAgBhvO,EAAO0F,SAAS,0BAC3C,EAEAupO,gBAAiB,SAASj1O,GACtB,IACIgG,EAAS1E,EAAEtB,EAAGgG,QACd+uO,EAFOp2O,KAEeo2O,eAAe/uO,GAErChG,EAAGimC,UAAY3mC,EAAMkqB,KAAKK,OAAUkrN,GAJ7Bp2O,KAKF+1O,OAEb,EAEAQ,cAAe,SAASl1O,GACpB,IACIgG,EAAS1E,EAAEtB,EAAGgG,QADPrH,KAEeo2O,eAAe/uO,IAGrCrH,KAAK+1O,OAEb,EAEAS,cAAe,SAASn1O,GACpBsB,EAAEtB,EAAGgG,QAAQge,SAAS+uN,EAAiBO,QAC3C,EAEA8B,aAAc,SAASp1O,GACnBsB,EAAEtB,EAAGgG,QAAQ0lB,YAAYqnN,EAAiBO,QAC9C,EAEAv7J,SAAU,WACN,IAAInxE,EAAOjI,KACP6L,EAAU7L,KAAK6L,QACf6qO,EAAiB7qO,EAAQoB,GAAG,SAC5B4nO,EAAelyO,EAAE,eAAkByxO,EAAiBS,aAAe,kBAAsBT,EAAiBC,eAAiB,mBAE/HpsO,EAAK2E,QAAU8pO,EAAiB7qO,EAC3B8gB,KAAKhqB,EAAE,YACPgK,SAAWd,EAEZ6qO,GACAzuO,EAAK4D,QACA8gB,KAAKkoN,GACLxvN,SAAS+uN,EAAiBx7D,SAE/B3wK,EAAK4sO,aAAe5sO,EAAK2E,QAAQupB,KAAKg+M,EAAMC,EAAiBS,cAAcnnO,QAE3EzF,EAAK4sO,aAAe5sO,EAAK2E,QACpButC,OAAO06L,GACP1+M,KAAKg+M,EAAMC,EAAiBS,cAAcnnO,OAGnDzF,EAAK2E,QAAQyY,SAAS+uN,EAAiB7gN,QACvCtrB,EAAK2E,QAAQgX,KArRJ,aAqRqB,cAE9B3b,EAAK6kK,QAAU7kK,EAAK2E,QACfutC,OAAOx3C,EAAE,UAAU0iB,SAAS+uN,EAAiBtnE,UAC7C32I,KAAKg+M,EAAMC,EAAiBtnE,QACrC,EAGAioE,UAAW,WACP,IAAI9sO,EAAOjI,KAEP02O,EADUzuO,EAAK4D,QACUoB,GAAG,SAG5BhF,EAAKsd,MADLmxN,EACazuO,EAAK4D,QAELlJ,EAAE,aAGnBsF,EAAK4sO,aAAa1+M,KAAKg+M,EAAMC,EAAiBC,eAAezpO,MAAM,KAAK,IAAIuvC,OAAOlyC,EAAKsd,OAExFtd,EAAKsd,MACAF,SAAS+uN,EAAiBx7D,SAC1Bh1J,KAAKqwN,GAAa,GAEvBhsO,EAAKsd,MACAsE,GAAG48M,EAAOuN,EAAY/rO,EAAK2+G,MAAMp9G,KAAKvB,GAAM,IAC5C4hB,GAAG08M,EAAUyN,EAAY/rO,EAAK28G,SAASp7G,KAAKvB,IAEjDA,EAAK2E,QACAid,GAhTD,QAgTYmqN,EAAY/rO,EAAKuuO,cAAchtO,KAAKvB,IAC/C4hB,GAAG48M,EAAOuN,EAAY/rO,EAAKwuO,aAAajtO,KAAKvB,IAC7C4hB,GAAG08M,EAAUyN,EAAY/rO,EAAKquO,gBAAgB9sO,KAAKvB,IACnD4hB,GAAGqqN,EAAQF,EAAY/rO,EAAKsuO,cAAc/sO,KAAKvB,GACxD,EAEAsuN,OAAQ,WACJ,IAAItuN,EAAOjI,KACPmH,EAAUc,EAAKd,QAEfA,EAAQuB,MACRT,EAAKS,MAAMvB,EAAQuB,OACZvB,EAAQ6tO,eACf/sO,EAAKS,MAAM5H,OAAOuiB,SAASgV,KAAK51B,QAAQ,gBAAgB,IAAIA,QAAQ,MAAO,KAE3EwF,EAAKS,MAAM,GAEnB,EAEA8sO,OAAQ,SAAS9sO,GACb,OAAOA,EAAMkC,MAAM,KAAK2kB,QAAO,SAAS4f,EAAM71B,GAC1C,QAAIA,EAAQ,GAAc,KAAT61B,EAKrB,GACJ,EAEA9vB,MAAO,WACH,OAAO1e,EAAM4C,QAAQ8b,MAAMrf,KAAK4M,QACpC,EAEA+R,QAAS,WACL,IAQI4rH,EACA3gI,EACApC,EAAQmvO,EAVR1uO,EAAOjI,KACPmH,EAAUc,EAAKd,QACfyjB,EAAWzjB,EAAQyjB,SACnBwqN,EAAgBntO,EAAKd,QAAQiuO,cAC7B/kO,EAAO,GACPgoB,EAAO,GACPu+M,EAA8B,KAAjB3uO,EAAKS,QAClBykI,EAAWllI,EAAKslM,UASpB,IAJqB,iBAAjB6nC,GAAoCntO,EAAKoX,UACzC+1N,EAAgB,gBAGfxrO,EAAM,EAAGpC,EAAS2lI,EAAS3lI,OAAQoC,EAAMpC,EAAQoC,IAClD2gI,EAAU4C,EAASvjI,GACnB+sO,EAAgB/sO,IAAQujI,EAAS3lI,OAAS,EAEtC+iI,IAAY3nI,IACPyN,EAGDgoB,GAAQkyG,EAAQzpG,MAAQypG,GAAW,GAFnClyG,EAAO,IAKY,iBAAZkyG,GACPA,EAAU,CACN7kI,KAAO2K,EAAoB,OAAb,WACdgoB,KAAMlxB,EAAQ+tO,aAAe78M,EAAO,IACpCyI,KAAMypG,EACNssG,UAAWxmO,EACXymO,WAAYzmO,EACZioF,KAAOjoF,EAA0B,GAAnBlJ,EAAQguO,SACtB4B,UAAY1mO,EAAkC,GAA3B,yBACnB2mO,UAAY3mO,EAAmC,GAA5B+jO,EAAiBK,SACpCW,cAAeA,EACf6B,iBAAkBN,IAAkBC,EACpCloG,YAAaioG,EACbv+I,UAAW,IAGfnwF,EAAKslM,UAAU/iM,OAAOZ,EAAK,EAAG2gI,IACvB5iI,EAAc4iI,KACrBA,EAAUxnI,EAAO,CAAC,EAAGwnI,EAAS,CAC1B7kI,KAAM6kI,EAAQ7kI,KAAO6kI,EAAQ7kI,KAAKmT,cAAgB,SAkBjC,cAfrB0xH,EAAUxnI,EAAO,CAAC,EAAGwnI,EAAS,CAC1BzpG,KAAMypG,EAAQzpG,MAAQ,GACtBqd,MAAOosF,EAAQzpG,MAAQ,GACvBw3D,KAAMiyC,EAAQjyC,OAA0B,aAAjBiyC,EAAQ7kI,KAAsByB,EAAQguO,SAAW,IACxE/8I,UAAWmyC,EAAQnyC,WAAa,GAChCs2C,YAAaioG,EACbM,iBAAkBN,GAAiBxpG,EAAS3lI,OAAS,EACrD6wB,KAAMlxB,EAAQ+tO,aAAe3qG,EAAQlyG,KAAO,IAC5C+8M,cAAeA,EACf2B,UAAWxsG,EAAQwsG,WAAa,GAChCC,UAAWzsG,EAAQysG,WAAa,GAChCH,SAAUtsG,EAAQssG,WAAaj0O,EAA+B,aAAjB2nI,EAAQ7kI,MAAwC,SAAjB6kI,EAAQ7kI,KAAkB6kI,EAAQssG,SAC9GC,SAAUvsG,EAAQusG,WAAal0O,EAA+B,SAAjB2nI,EAAQ7kI,MAAoC,aAAjB6kI,EAAQ7kI,KAAsB6kI,EAAQusG,YAGtGpxO,OACR6kI,EAAQwsG,WAAa,0BACrBxsG,EAAQysG,WAAa,IAAM5C,EAAiBK,WAI/B,aAAjBlqG,EAAQ7kI,MAAwC,KAAjB6kI,EAAQzpG,OACvCypG,EAAQpsF,MAAQvzB,EAASyqN,WAG7Bh9M,GAAQA,EAAK3nB,MAAM,OAAS,GAAK,IAEjCL,GAAQ1P,EAAMyP,SAASpQ,KAAKk3O,aAApBv2O,CAAkC4pI,IAIlDvqI,KAAK8sK,QACAlgH,QACAzS,OAAOx3C,EAAE0N,IAEdrQ,KAAKmqB,QAAO,EAChB,EAEA+sN,aAAe9oO,IACX,MAWM+oO,EAAU/oO,EAAKyoO,SAAWl2O,EAAM4pB,GAAG+tE,KAAK31F,EAAE,gBAAgBosE,EAAO3gE,EAAKgqF,uBAAwB,CAAEE,KAAMvpB,EAAO3gE,EAAKkqF,QAAW,GAC7H8+I,EAAehpO,EAAK6oO,gBAAkBt2O,EAAM4pB,GAAG+tE,KAAK31F,EAAE,wEAAyE,CAAE21F,KAAMvpB,EAAO3gE,EAAKgnO,eAAgBplO,KAAM,WAAc,GACvL8wB,EAAO1yB,EAAK0oO,SAAW,yCAAyD,IAAjB1oO,EAAKipO,QAAoBtoK,EAAO3gE,EAAK0yB,MAAQ1yB,EAAK0yB,cAAgB,GAEjIw2M,EAAU,YAAYvoK,EAAO3gE,EAAKiqB,iBAAiB02C,EAAO3gE,EAAK4oO,cAf9C,MACnB,IAAIO,EAAc,CACd,oBAAmC,aAAdnpO,EAAK1I,KAC1B,6BAA8B0I,EAAK0oO,UAAY1oO,EAAKyoO,SACpD,yBAA0BzoO,EAAKyoO,WAAazoO,EAAK0oO,SACjD,aAAc1oO,EAAKsgI,aAA6B,aAAdtgI,EAAK1I,MAG3C,OAAOjF,OAAOoqB,KAAK0sN,GAAahoN,QAAOhoB,GAAKgwO,EAAYhwO,KAAIsD,KAAK,IAAI,EAOU2sO,wBACjFppO,EAAKsgI,YAAc,sBAAwB,uBAC1CtgI,EAAKsgI,aAA6B,aAAdtgI,EAAK1I,KAAuB,uBAAyB,8BACnEqpE,EAAO3gE,EAAK0yB,MAAQ1yB,EAAK+vC,WAAWg5L,IAAUr2M,QAEvD,MAAO,gCAAgCiuC,EAAO3gE,EAAK2oO,cAAc3oO,EAAKsgI,YAAc,yBAA2B,OAAO4oG,IAAUF,QAAmB,EAGvJK,sBAAuB,SAASzqO,GAC5B,IACIwnO,EADOx0O,KACS4M,QAAQupB,KAAKg+M,EAAMC,EAAiBI,UAEpDxnO,EACAwnO,EAASr+M,KAAKg+M,EAAMC,EAAiBG,WAChClvN,SAAS+uN,EAAiBM,cAC1B3nN,YAAYqnN,EAAiBQ,QAElCJ,EAASr+M,KAAKg+M,EAAMC,EAAiBM,cAChC3nN,YAAYqnN,EAAiBM,cAC7BpyM,OAAOjd,SAAS+uN,EAAiBQ,OAE9C,EAEA8C,aAAc,WACV,IAMIC,EACAxoM,EAPAlnC,EAAOjI,KACP4M,EAAU3E,EAAK2E,QACfkgK,EAAU7kK,EAAK6kK,QACf5gH,EAAQjkD,EAAK6kK,QAAQ32I,KAAKg+M,EAAMC,EAAiBjlM,KAAO,iCACxDyoM,EAAiBj3O,EAAM8L,YAAYxE,EAAK6kK,QAAQ32I,KAAKg+M,EAAMC,EAAiBG,UAAY,YAAYrqO,SACpG2tO,EAAiBjrO,EAAQb,QAAU9D,EAAKd,QAAQiK,IAAMwmO,EAI1D,GAAoB,GAAhB1rL,EAAM1kD,OAAV,CAIA,IAAK,IAAID,EAAI,EAAGA,EAAI2kD,EAAM1kD,OAAQD,GAAK,EAGnC,GAFA4nC,EAAOxsC,EAAEupD,EAAM3kD,IAEX5G,EAAM8L,YAAYqgK,IAAY+qE,EAAgB,CAC9C,GAAItwO,GAAK2kD,EAAM1kD,OAAS,EACpB,MAGJmwO,EAAaxoM,EACbA,EAAKhZ,KAAKg+M,EAAMC,EAAiBG,WAAW7mO,OAC5CyhC,EAAKhZ,KAAKg+M,EAAMC,EAAiBE,MAAM5mO,OACvCzF,EAAKwvO,uBAAsB,EAC/B,CAGAE,GACAA,EAAWxhN,KAAKg+M,EAAMC,EAAiBG,WAAW9mO,MAlBtD,CAoBJ,EAEAqqO,UAAW,SAAS3oM,EAAM4oM,EAAcF,GACpC,SAAI1oM,EAAK3nC,QAAUqwO,EAAiBE,EAAep3O,EAAM8L,YAAY0iC,GAAM,MACvEA,EAAKhZ,KAAKg+M,EAAMC,EAAiBE,MAAM7mO,OACvC0hC,EAAK4Q,OAAO5pB,KAAKg+M,EAAMC,EAAiBG,WAAW9mO,QAC5C,EAIf,EAEAuqO,cAAe,WACX,IAMI7oM,EAAM4oM,EANN9vO,EAAOjI,KACP4M,EAAU3E,EAAK2E,QACfkgK,EAAU7kK,EAAK6kK,QACf5gH,EAAQjkD,EAAK6kK,QAAQ32I,KAAKg+M,EAAMC,EAAiBjlM,KAAO,iCACxDyoM,EAAiBj3O,EAAM8L,YAAYxE,EAAK6kK,QAAQ32I,KAAKg+M,EAAMC,EAAiBG,UAAY,YAAYrqO,SACpG2tO,EAAiBjrO,EAAQb,QAAU9D,EAAKd,QAAQiK,IAAMwmO,EAGrD1rL,EAAM1kD,QACPS,EAAKwvO,uBAAsB,GAG/B,IAAK,IAAIlwO,EAAI2kD,EAAM1kD,OAAS,EAAGD,GAAK,IAChC4nC,EAAOxsC,EAAEupD,EAAM3kD,OAEfwwO,EAAep3O,EAAM8L,YAAYqgK,IAEd+qE,IAAmB73O,KAAK83O,UAAU3oM,EAAM4oM,EAAcF,IALtCtwO,KAS3C,EAEAmrB,QAAS,WACL1yB,KAAK03O,eACL13O,KAAKg4O,eACT,EAEAzlN,QAAS,WACL,OAAO5xB,EAAMgyB,WAAW3yB,KAAK4M,QACjC,EAEAlE,MAAO,SAASknB,GACZ,IAAI3nB,EAAOjI,KAEX,OAAI4vB,IAAQhtB,GACRqF,EAAKstO,kBAAkB3lN,QACvB3nB,EAAK0W,WAIF1W,EAAKwtO,MAAMxtO,EAAKslM,UAC3B,EAEAkoC,MAAO,SAASwC,GACZ,OAAOt1O,EAAEkY,IAAIo9N,GAAO,SAASh8N,GACzB,IAAI6kB,EAAOn5B,EAAcsU,GAAKA,EAAE6kB,KAAO7kB,EACvC,MAAgB,MAAT6kB,EAAe,GAAKA,CAC/B,IAAGj2B,KAAK,IACZ,IAGJlK,EAAMwyB,cAAcoY,eAAe,aAAc,iBAEjD5qC,EAAM4pB,GAAG2M,OAAO49M,EAEnB,CApkBD,CAokBGh0O,OAAOH,MAAM+G,QACF/G,OAEd,SAAUgC,EAAGC,GAET,MAAMjC,EAAQG,OAAOH,MACf8pB,EAAU9pB,EAAM8pB,QAChB2G,EAASzwB,EAAM4pB,GAAG6G,OAElB8mN,EAAkB9mN,EAAOruB,OAAO,CAClCoF,KAAM,SAAS0D,EAAS1E,GAGpB,GAFAiqB,EAAOrpB,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAAS1E,IAE9BA,EAAQmtK,MACT,MAAM,IAAItjK,MAAM,kEAGpBhR,KAAKm4O,qBACLn4O,KAAKo4O,oBAELz3O,EAAMi0B,OAAO50B,KAAMyqB,EAAQF,GAC/B,EAEAlgB,OAAQ,GAERlD,QAAS,CACL/E,KAAM,kBACNoyO,SAAU,CACN9uO,KAAM,WACN4yF,KAAM,OACNx3D,KAAM,OACN+1M,UAAU,IAIlB70O,QAAS,WACDhC,KAAKq4O,aACLr4O,KAAKq4O,WAAWr2O,UAChBhC,KAAKq4O,WAAa,MAGlBr4O,KAAKs0K,QACLt0K,KAAKs0K,MAAMrqK,OAAO,YAAajK,KAAKs4O,mBACpCt4O,KAAKs0K,MAAMrqK,OAAO,uBAAwBjK,KAAKu4O,8BAC/Cv4O,KAAKs0K,MAAQ,MAGjBljJ,EAAOrpB,GAAG/F,QAAQuI,KAAKvK,KAC3B,EAEA,kBAAAm4O,CAAmBhsM,GACf,MAAMhlC,EAAUnH,KAAKmH,QAErB,GAAiD,mBAAtCA,EAAQmtK,MAAMkkE,oBACrBx4O,KAAKs0K,MAAQntK,EAAQmtK,UAClB,IAA6B,iBAAlBntK,EAAQmtK,MAQtB,MAAM,IAAItjK,MAAM,uFALhB,GAFAhR,KAAKs0K,MAAQ3xK,EAAEwE,EAAQmtK,OAAOmkE,iBAAmB91O,EAAE,IAAMwE,EAAQmtK,OAAOmkE,iBAEnEz4O,KAAKs0K,QAAUnoI,EAEhB,YADAjT,YAAW,IAAMl5B,KAAKm4O,oBAAmB,IAKjD,CAEAn4O,KAAKs4O,kBAAoBt4O,KAAKs4O,kBAAkB9uO,KAAKxJ,MACrDA,KAAKs0K,MAAM9qK,KAAK,YAAaxJ,KAAKs4O,mBAElCt4O,KAAKu4O,6BAA+Bv4O,KAAKu4O,6BAA6B/uO,KAAKxJ,MAC3EA,KAAKs0K,MAAM9qK,KAAK,uBAAwBxJ,KAAKu4O,6BACjD,EAEAH,kBAAmB,WACf,MAAMM,EAAoB/1O,EAAE,WAC5B3C,KAAK6L,QAAQsuC,OAAOu+L,GACpB14O,KAAKq4O,WAAa,IAAI13O,EAAM4pB,GAAGuqN,WAAW4D,EAAmB,CACzDxsL,MAAO,CAAClsD,KAAKmH,QAAQqtO,YAGzBx0O,KAAKq4O,WAAW7uO,KAAK,SAAS7E,GAAK3E,KAAK24O,mBAAmBh0O,IAC/D,EAEAg0O,mBAAoB,SAASh0O,GACzB,IAAK3E,KAAKq4O,aAAer4O,KAAKs0K,MAC1B,OAIJ,MAAM3oG,EADM3rE,KAAKq4O,WAAWnsL,QACRw5K,WAAWv2L,GAASA,IAASxqC,EAAEwqC,OAErCnvC,KAAKs0K,MACbkkE,oBAAoB7sK,EAC9B,EAEA2sK,kBAAmB,SAAS3zO,GACnB3E,KAAKq4O,aAAc1zO,EAAE0E,sBAI1BrJ,KAAKq4O,WAAWnsL,MAAM,IACflsD,KAAKq4O,WAAWnsL,QACnB,CAAExmD,KAAM,OAAQo7B,KAAMn8B,EAAEw3H,MAAM+vC,WAEtC,EAEAqsE,6BAA8B,SAAS5zO,GACnC,IAAK3E,KAAKq4O,WACN,OAGJ,IAAInsL,EAAQlsD,KAAKq4O,WAAWnsL,QAC5BA,EAAQA,EAAMrlD,MAAM,EAAGlC,EAAEgnE,MAAQ,GACjC3rE,KAAKq4O,WAAWnsL,MAAMA,EAC1B,IAGJzhC,EAAQF,GAAG2M,OAAOghN,EAErB,CApHD,CAoHGp3O,OAAOH,MAAM+G,QAEhB,SAAU/E,EAAGC,GAET,IAAIivF,EAAK,cACLlxF,EAAQG,OAAOH,MACfiH,EAAQjH,EAAMiH,MACduE,EAAaxL,EAAM8L,YACnBL,EAAczL,EAAM+L,aACpB+d,EAAU9pB,EAAM8pB,QAChB62I,EAAY72I,EAAQ62I,UACpBs3E,EAAanuN,EAAQi8M,MACrBrsC,EAAe5vK,EAAQ4vK,aACvBjpK,EAASzwB,EAAM4pB,GAAG6G,OAClB9iB,EAAa3N,EAAMyN,KAAKE,WACxB9F,EAAa7H,EAAM6H,WACnBsuH,EAAUrsG,EAAQqsG,QAClBsjE,EAAW3vK,EAAQ2vK,SACnB12B,EAAmBj5I,EAAQi5I,iBAC3BjuI,EAAUhL,EAAQgL,QAClBk/I,EAAWlqJ,EAAQkqJ,SACnB1xK,EAAUC,MAAMD,QAChBF,EAASJ,EAAEI,OACXqN,EAAWzP,EAAMyP,SACjB2+D,EAASpuE,EAAM4tB,WAEfsqN,EAAgB,aAAehnJ,EAC/BwuE,EAAmBiB,EAAUjB,iBAC7BigC,EAAoBh/B,EAAUg/B,kBAC9BC,EAAoBj/B,EAAUi/B,kBAC9BC,EAAoBl/B,EAAUk/B,kBAC9BC,EAAen/B,EAAUm/B,aACzBC,EAAep/B,EAAUo/B,aACzBC,EAAcr/B,EAAUq/B,YACxBC,EAAet/B,EAAUs/B,aACzBc,EAAcpgC,EAAUogC,YACxBb,EAAkBv/B,EAAUu/B,gBAC5BC,EAAkBx/B,EAAUw/B,gBAC5BC,EAAkBz/B,EAAUy/B,gBAC5B58G,EAAOm9E,EAAUn9E,KACjB68G,EAAW1/B,EAAU0/B,SACrBC,EAAa3/B,EAAU2/B,WACvBuB,EAAYlhC,EAAUkhC,UACtBs2C,EAAyB,uBACzB53C,EAAa5/B,EAAU4/B,WACvBC,EAAO7/B,EAAU6/B,KACjBC,EAAW9/B,EAAU8/B,SACrBC,EAAe//B,EAAU+/B,aACzBtkH,EAASukF,EAAUvkF,OACnBukH,EAAahgC,EAAUggC,WACvBC,EAASjgC,EAAUigC,OACnBxgC,EAAaO,EAAUP,WACvBC,EAAaM,EAAUN,WACvBC,EAAaK,EAAUL,WACvBtvE,EAAmBhvF,EAAEgN,SAASiK,iBAE9BsjC,EAAS,SACT67L,EAAY,YACZC,GAAQ,QAGR/pK,GAAQqyF,EAAUryF,MAClB2vH,GAAMt9B,EAAUs9B,IAChBP,GAAQ/8B,EAAU+8B,MAClBC,GAASh9B,EAAUg9B,OAEnBh1L,GAAa3I,EAAM2I,WAOvBqrK,EAASD,iBAAiBv9I,SAAS,CAC/BiwB,OAAQ,SAASv7C,EAASxB,GACrB,OAAO,IAAI1J,EAAM+/E,WAAW70E,EAASrD,EAAW,CAC5CpJ,QAAQ,EACRkiF,YAAY,EACZG,SAAS,GACVp3E,GACR,IAGJ,IAAI4uO,GAAwBv1E,EAAiB3gK,OAAO,CAChD4gK,WAAY,CACR1D,YAAa,eACbF,YAAa,eACbm5E,gBAAiB,qBACjB/oO,OAAQ,YACRhI,KAAM,UACNopO,UAAW,kBAIf7K,GAAQt1M,EAAOruB,OAAO,CACtBoF,KAAM,SAAS0D,EAASw9K,GACpB,IAAI53J,EAEJ9wB,EAAMqB,QAAQ6J,GAEdulB,EAAOrpB,GAAGI,KAAKoC,KAAKvK,KAAM6L,GAEtBw9K,IACA53J,EAAa43J,EAAY53J,kBAClB43J,EAAY53J,YAGvBzxB,KAAKmH,QAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAASkiL,GAE5CrpL,KAAK4M,QAAU5M,KAAK6L,QACpB7L,KAAKqnO,gBAEDh+C,IACAA,EAAY53J,WAAaA,GAG7BzxB,KAAKm5O,kBAAoB,IAAIC,GAE7Bp5O,KAAKwJ,KAAKxJ,KAAKqK,OAAQrK,KAAKmH,SAC5BnH,KAAKq5O,gBAAgBhwD,GAErBrpL,KAAKwxO,gBAAkB,GAEvB7wO,EAAMi0B,OAAO50B,KAAMyqB,EAAQF,IAEvBvqB,KAAKuxB,uBACLvxB,KAAKuxB,sBAAsBvxB,KAAK4M,QAAQ,GAEhD,EAEAvC,OAAQ,CACJ0uO,EACAv2C,EACAs2C,EACAr4C,EACAC,EACAC,EACAC,EACAvgC,EACAigC,EACAC,EACAC,EACAkB,EACAb,EACAC,EACAC,EACAE,EACA98G,EACA68G,EACAE,EACAC,EACAC,EACAC,EACAtkH,EACAukH,EACAvgC,EACAC,EACAC,EACAsgC,GAGJp6L,QAAS,CACL/E,KAAM,QACNsmO,SAAU,GACVxyC,MAAO,OACPP,aAAc,CAAC,EACfyC,UAAW,CAAC,EACZtC,OAAQ,CAAC,EACTF,aAAc,CAAC,EACf5jH,UAAU,EACVqhH,eAAgB,CAAC,EACjBpkJ,OAAQ,GACRopJ,aAAc,KACdp5B,QAAS,CAAC,EACVv/I,aAAa,EACb6gK,UAAW,CAAC,EACZpI,SAAU,CAAC,EACXh6H,MAAO,CAAC,EACR+3J,MAAO,CAAC,EACRE,MAAO,CAAC,EACRiF,MAAO,CAAC,CAAC,GACT7mC,UAAU,EACV21D,UAAU,GAGdj+K,MAAO,WACH,OAAOvpD,GACX,EAEAgc,QAAS,WACL,IAAI21J,EAAQt0K,KACR2nB,EAAW2sJ,EAAMlV,UACrBz3I,EAASijK,cAActW,EAAMntK,SAC7BwgB,EAASggN,oBAETrzD,EAAMglE,cACNhlE,EAAMilE,kBAENjlE,EAAMlqK,QAAQ2uO,GACdzkE,EAAM8yD,SACV,EAEA70M,QAAS,WACL,OAAO5xB,EAAMgyB,WAAW3yB,KAAK6L,QACjC,EAEA4xM,OAAQ,SAASuqB,GACbhoO,KAAKyyB,MAAQ,KACbzyB,KAAKo/J,UAAUq+C,OAAOuqB,EAC1B,EAEA91M,WAAY,SAAS/qB,GACjB,IAAImtK,EAAQt0K,KACRyxB,EAAatqB,EAAQsqB,kBAElBtqB,EAAQsqB,WAEfL,EAAOrpB,GAAGqqB,WAAW7nB,KAAK+pK,EAAOntK,GAEjCnH,KAAKo/J,UAAUo0E,aAAarsO,EAASnH,KAAKw5O,iBAAiBryO,IAC3DnH,KAAKmH,QAAUnH,KAAKo/J,UAAUj4J,QAC9BnH,KAAKggK,SAAS9tI,WAAWlyB,KAAKmH,QAAQ83J,SACtCj/J,KAAKm5O,kBAAkBjnN,WAAWlyB,KAAKmH,SACvCnH,KAAKy5O,cAAgB,KAEjBhoN,GACA6iJ,EAAMolE,cAAcjoN,GAGpB6iJ,EAAMqlE,eACNrlE,EAAMslE,kBAENtlE,EAAMilE,kBACNjlE,EAAMmpC,UAGVnpC,EAAMlV,UAAUm0E,wBAEpB,EAEAmG,cAAe,SAASjoN,GACpB,IAAI6iJ,EAAQt0K,KAEZs0K,EAAM7iJ,WAAWxnB,OAAOizC,EAAQo3H,EAAMulE,oBACtCvlE,EAAM7iJ,WAAaA,EAAanjB,EAAW84C,OAAO31B,GAClD6iJ,EAAMqlE,gBAAiB,EACvBrlE,EAAMwlE,UAAW,EAEjBroN,EAAWjoB,KAAK0zC,EAAQo3H,EAAMulE,oBAE1BvlE,EAAMntK,QAAQ6qE,UACdvgD,EAAW20C,OAEnB,EAEApkE,QAAS,WACL,IAAIsyK,EAAQt0K,KACRyxB,EAAa6iJ,EAAM7iJ,WAEvB6iJ,EAAMzoK,QAAQutB,IAAIy4D,GAEdpgE,GACAA,EAAWxnB,OAAOizC,EAAQo3H,EAAMulE,oBAGhCvlE,EAAMlV,YACNkV,EAAMlV,UAAUp9J,iBACThC,KAAKo/J,WAGZp/J,KAAKggK,WACLhgK,KAAKggK,SAASh+J,iBACPhC,KAAKggK,UAGhBhgK,KAAK+5O,4BAEL3oN,EAAOrpB,GAAG/F,QAAQuI,KAAK+pK,EAC3B,EAEA4zD,eAAgB,SAAS9lO,GAGrB,IAFA,IAAIi5M,EAAQr7M,KAAK65L,UAAUwhB,MAElBzxM,EAAM,EAAGA,EAAMyxM,EAAM7zM,OAAQoC,IAClC,GAAIyxM,EAAMzxM,GAAKzC,QAAQ/E,OAASA,EAC5B,OAAO,IAAIo3L,GAAUx5L,KAAMq7M,EAAMzxM,GAG7C,EAEAu+N,gBAAiB,SAASv+N,GACtB,IAAIyxM,EAAQr7M,KAAK65L,UAAUwhB,MAC3B,GAAIA,EAAMzxM,GACN,OAAO,IAAI4vL,GAAUx5L,KAAMq7M,EAAMzxM,GAEzC,EAEAowO,WAAY,SAASpwN,GAGjB,IAFA,IAAIuuJ,EAAWn4K,KAAK65L,UAChB5qJ,EAASkpI,EAASyyC,WAAazyC,EAASlpI,OACnCrlC,EAAM,EAAGA,EAAMqlC,EAAOznC,OAAQoC,IACnC,GAAIggB,EAASqlB,EAAOrlC,IAChB,OAAO,IAAIqwO,GAAYj6O,KAAMivC,EAAOrlC,GAGhD,EAEAswO,iBAAkB,SAAS93O,GACvB,OAAOpC,KAAKm6O,cAAc,CAAE/3O,KAAMA,GACtC,EAEAg4O,kBAAmB,SAAS9gO,GACxB,OAAOtZ,KAAKm6O,cAAc,CAAE7gO,MAAOA,GACvC,EAEA89H,aAAc,SAASjwI,GACnB,IAAIwgB,EAAW3nB,KAAKo/J,UACpB,GAAKz3I,EAAL,CAIA,IAAIs5H,EAGJ,GAAI95I,IAAYA,EAAQ4E,OAAS5E,EAAQ6E,QAAS,CAC9C,IAAIosL,EAAYzwK,EAASxgB,QAAQixL,UAC7BiiD,EAAoB1yN,EAASk/M,iBAAiBzuC,UAElD5vL,EAAW4vL,EAAWjxL,GAEtB,IAAI+hD,EAAQvhC,EAASmhN,YAErB1wC,EAAUrsL,MAAQsuO,EAAkBtuO,MACpCqsL,EAAUpsL,OAASquO,EAAkBruO,OAErCk9C,EAAMwhH,eAmlClB,SAA2B2wC,GACvB,IAAK,IAAIzxM,EAAM,EAAGA,EAAMyxM,EAAM7zM,OAAQoC,IAClCyxM,EAAMzxM,GAAKwwM,cAEnB,CArlCYkvB,CAAkBpgL,EAAM2wI,UAAUwhB,OAElCp6D,EAAS/3F,EAAM+3F,MACnB,MACIA,EAASt5H,EAASyvH,eAGtB,OAAO6J,CAzBP,CA0BJ,EAEA,mBAAAu3F,CAAoB7sK,GAChBA,EAAQA,GAAS,EACjB,MAAMrY,EAAQtzD,KAAKwxO,gBACnB,IAAKl+K,GAASqY,EAAQ,GAAKA,EAAQrY,EAAM9rD,OAAS,EAC9C,OAGJ,MAAM6vB,EAAO,CACTs0C,QACArhE,OAAQtK,MAEZA,KAAKoK,QAAQ0uO,EAAwBzhN,GAErCr3B,KAAKmH,QAAQ8nC,OAASjvC,KAAKwxO,gBAAgB7lK,GAC3C3rE,KAAKwxO,gBAAkBxxO,KAAKwxO,gBAAgB3qO,MAAM,EAAG8kE,GAErD3rE,KAAKu5O,kBACLv5O,KAAKonO,SACT,EAEA+S,cAAe,SAAShzO,GACpB,IAAIk/L,EAAgBrmM,KAAKs6O,eAAenzO,GACxC,GAAIk/L,EACA,OAAO,IAAI4zC,GAAYj6O,KAAMqmM,EAErC,EAEAi0C,eAAgB,SAASnzO,GACrB,IAEIk/L,EAFAluB,EAAWn4K,KAAK65L,UAChB5qJ,EAASkpI,EAASyyC,WAAazyC,EAASlpI,OAG5C,GAAI6nF,EAAQ3vH,EAAQmS,OAChB+sL,EAAgBp3J,EAAO9nC,EAAQmS,YAC5B,GAAIw9G,EAAQ3vH,EAAQ/E,MACvB,IAAK,IAAIwH,EAAM,EAAGA,EAAMqlC,EAAOznC,OAAQoC,IACnC,GAAIqlC,EAAOrlC,GAAKxH,OAAS+E,EAAQ/E,KAAM,CACnCikM,EAAgBp3J,EAAOrlC,GACvB,KACJ,CAIR,OAAOy8L,CACX,EAEAghC,cAAe,WACVrnO,KAAK6L,QAAQge,GAAGgvN,EAAe74O,KAAK2mH,YAAYn9G,KAAKxJ,MAC1D,EAEA2mH,YAAa,SAAShiH,GAClB,IAAIgjB,EAAW3nB,KAAKo/J,UAChBH,EAAUj/J,KAAKggK,SACf34J,EAAS1C,EAAE22B,cAETj0B,GAAU1E,EAAE0E,GAAQwF,QAAQoyJ,EAAQpzJ,SAASrE,SAAWmgB,GAAaA,EAASmnN,aAChFnnN,EAAS+qN,aAAa,CAClBC,iBAAkB1zE,EAAQ93J,QAAQ08G,UAG9C,EAEA21H,iBAAkB,SAASnwD,GACvB,IAAIsO,GAAatO,GAAe,CAAC,GAAG6M,MAEpC,GAAIyB,IAAuE,IAA1DltK,EAAQmmK,YAAYj7K,QAAQgiL,EAAU9+K,eACnD,OAAO4R,EAAQurK,YAAY1hB,MAG/B,GAAIx9C,EAAQ6gE,GAAY,CACpB,IAAIn/J,EAAS/N,EAAQF,GAAGiO,QAAU,CAAC,EAEnC,OADYA,EAAOm/J,IAAcn/J,EAAOm/J,EAAU9+K,gBAAkB,CAAC,GACxDy7J,OAAS,CAAC,CAC3B,CACJ,EAEAimE,WAAY,WACRv6O,KAAKw6O,aAAax6O,KAAKmH,QAASnH,KAAKw5O,iBAAiBx5O,KAAKmH,UAC3DnH,KAAKmH,QAAUnH,KAAKo/J,UAAUj4J,QAC9BnH,KAAKm5O,kBAAkBjnN,WAAWlyB,KAAKmH,QAC3C,EAEAqzO,aAAc,SAASrzO,EAASw/N,GAC5B3mO,KAAKo/J,UAAY,IAAIw5E,EAAW54O,KAAK6L,QAAQ,GAAI1E,EAASw/N,EAAc,CACpEvwG,SAAU,IAAI6iH,GAAsBj5O,MACpCsK,OAAQtK,KACRogJ,IAAKpgJ,KAAKy6O,UAElB,EAEAC,QAAS,SAAS/1O,GACd3E,KAAKo/J,UAAYz6J,EAAE2F,MACvB,EAEA+uO,gBAAiB,SAAShwD,GACtB,IAAI/U,EAAQt0K,KACRyxB,GAAc43J,GAAe,CAAC,GAAG53J,WAErC6iJ,EAAMulE,mBAAqBvlE,EAAMslE,eAAepwO,KAAK8qK,GAErDA,EAAM7iJ,WAAanjB,EACd84C,OAAO31B,GACPjoB,KAAK,SAAU8qK,EAAMulE,oBAE1BvlE,EAAMilE,kBAEF9nN,IACA6iJ,EAAMqlE,gBAAiB,GAG3B35O,KAAKu6O,aACLv6O,KAAK26O,eAEDlpN,GACI6iJ,EAAMntK,QAAQ6qE,UACdsiG,EAAM7iJ,WAAW20C,OAG7B,EAEA2zK,0BAA2B,WACvB,IAAIa,EAAW56O,KAAK66O,mBACpB,GAAID,EACA,IAAK,IAAI9oO,KAAO8oO,EACZA,EAAS9oO,GAAK9P,UAGtBhC,KAAK66O,mBAAqB,CAAC,CAC/B,EAEAC,qBAAsB,SAAS14O,EAAMkX,GACjC,IAAIshO,EAAW56O,KAAK66O,mBAAqB76O,KAAK66O,oBAAsB,CAAC,EACjE/oO,EAAM1P,EAAOkX,EACb2lJ,EAAU27E,EAAS9oO,GAIvB,OAHKmtJ,IACDA,EAAU27E,EAAS9oO,GAAO,IAAIwmM,GAAiBt4M,KAAK6L,UAEjDozJ,CACX,EAEA87E,aAAc,SAASp2O,GACfA,EAAE2zL,UACYt4L,KAAK86O,qBAAqBn2O,EAAEijM,SAAUjjM,EAAEqlM,WAC9Cv8L,KAAK9I,GACN3E,KAAKggK,UACZhgK,KAAKggK,SAASvyJ,KAAK9I,EAE3B,EAEA6qO,aAAc,SAAS7qO,GACfA,EAAE2zL,UACat4L,KAAK86O,qBAAqBn2O,EAAEijM,SAAUjjM,EAAEqlM,WAC9Ct8L,OACF1N,KAAKggK,UACZhgK,KAAKggK,SAAStyJ,MAEtB,EAEAstO,UAAW,SAASr2O,GAChB3E,KAAK+5O,4BACL/5O,KAAKi7O,aAAat2O,EAAE2F,QACftK,KAAK25O,iBAAkB35O,KAAK85O,UAAa95O,KAAKmH,QAAQ6qE,UACvDhyE,KAAKoK,QAAQm3L,EAErB,EAEA05C,aAAc,SAAStzN,GACnB3nB,KAAKmH,QAAUwgB,EAASxgB,QACxBnH,KAAK6mO,iBAAmBl/M,EAASk/M,iBACjC7mO,KAAK2hF,QAAUh6D,EAASg6D,QACxB3hF,KAAK65L,UAAYlyK,EAASkyK,UAC1B75L,KAAKioO,OAAStgN,EAASsgN,OACvBjoO,KAAK+rK,WAAapkJ,EAASokJ,WAC3B/rK,KAAK4nO,YAAcjgN,EAASigN,YAC5B5nO,KAAKkqO,UAAYviN,EAASuiN,UAC1BlqO,KAAKoqO,eAAiBziN,EAASyiN,eAC/BpqO,KAAKqqO,gBAAkB1iN,EAAS0iN,eACpC,EAEAvmE,iBAAkB,SAASnvJ,GAExB,IADA,IAAItK,EAASrK,KAAKuJ,QACTK,EAAM,EAAGA,EAAM+K,EAAMnN,OAAQoC,IAClC,GAAIktH,EAAQzsH,EAAOsK,EAAM/K,KACrB,OAAO,CAGlB,EAEA+wO,aAAc,WACV36O,KAAKggK,SAAWhgK,KAAKkpO,iBAErBlpO,KAAKggK,SAASx2J,KAAKwvO,GAAOh5O,KAAKk7O,cAAc1xO,KAAKxJ,MACtD,EAEAm7O,mBAAoB,SAASx2O,GACpB3E,KAAKoK,QAAQk2L,EAAmB37L,IACjC3E,KAAKo7O,iBAAiBz2O,EAAE28M,YAAa38M,EAAE88M,WAE/C,EAEA25B,iBAAkB,SAAS95B,EAAaG,GACpC,IAAIntC,EAAQt0K,KAAKo/J,UACb+Y,EAAW7D,EAAMulB,UACjB4K,GAAiBtsB,EAASyyC,WAAazyC,EAASlpI,QAAQqyK,GAQ5D,GANIhtC,EAAM64D,uBAAyB74D,EAAM84D,uBACrC94D,EAAMg5D,qBAAqB,MAAM,GACjCh5D,EAAM+4D,oBAAoB/4D,EAAM84D,qBAAqB73L,SAAU,MAAM,GACrE++H,EAAM84D,qBAAuB,MAG7BzqO,EAAE8yB,QAAQgvK,EAAc/+L,KAAM,CAACk5L,GAAKP,GAAOC,MAAY,EAAG,CAC1D,IAAIniE,EAAQsoE,EAAcr2L,KAAKqzM,GAC/B,GAAItlF,GAASrF,EAAQqF,EAAMnvH,SACvBmvH,EAAMnvH,SAAWmvH,EAAMnvH,YACpB,CACH,IAAIg3L,EAAkBS,EAAcT,gBAAkBS,EAAcT,iBAAmB,CAAC,EACpFh3L,EAAUg3L,EAAgByd,GAC9Bzd,EAAgByd,KAAc3qF,EAAQ9pH,KAAYA,CACtD,CACJ,MACIy3L,EAAcz3L,SAAWy3L,EAAcz3L,QACvChN,KAAKm5O,kBAAkBzqM,KAAK+1J,GAGhCnwB,EAAMyzD,sBACV,EAEAmB,eAAgB,WACZ,OAAO,IAAI3iH,GAAQvmH,KAAK6L,QAAS9I,EAAO,CAAC,EAAG/C,KAAKmH,QAAQ83J,QAAS,CAC9D7e,IAAKpgJ,KAAKy6O,WAElB,EAEAS,cAAe,WACPl7O,KAAKo/J,WACLp/J,KAAKo/J,UAAUszE,cAEvB,EAEA2I,aAAc,SAAS12O,GACnB,MAAMsqC,OAAEA,EAAMvmC,MAAEA,GAAU/D,EAE1B,GAAIsqC,EAAOqsM,uBAAwB,CAC/B,MAAMxkO,EAASm4B,EAAOqsM,uBAAuB5yO,GAE7C,IAAKoO,EACD,OACOA,aAAkButJ,QACzBvtJ,EAAOqoD,MAAMo8K,GAAav7O,KAAKw7O,iBAAiB72O,EAAG42O,KAEnDv7O,KAAKw7O,iBAAiB72O,EAAGmS,EAEjC,KAA4B,iBAAVpO,GACd1I,KAAKw7O,iBAAiB72O,EAAG+D,EAEjC,EAEA8yO,iBAAkB,SAAS72O,EAAGyJ,GAC1B,MAAMqtO,EAAkBh7O,OAAOC,OAAO,CAAC,EAAGiE,EAAEsqC,OAAQ7gC,GAC9CipB,EAAO,CACT8kG,MAAOx3H,EAAEw3H,MACTltF,OAAQtqC,EAAEsqC,OACVwsM,kBACAnxO,OAAQtK,MAGMA,KAAKoK,QAAQo4L,EAAWnrK,KAEtCr3B,KAAKwxO,gBAAgB7vO,KAAK3B,KAAKmH,QAAQ8nC,QAEvCjvC,KAAKmH,QAAQ8nC,OAAS,CAACwsM,GACvBz7O,KAAKu5O,kBACLv5O,KAAKonO,UAEb,EAEAsU,UAAW,SAAS/2O,GAChB,IAGI+hM,EAMAjC,EACAk3C,EAVArnE,EAAQt0K,KACRmH,EAAUmtK,EAAMntK,QAChB8nC,EAASqlI,EAAMmlE,eAAiBtyO,EAAQ8nC,OAExCo8L,EAAep8L,EAAOznC,OACtB4G,EAAOkmK,EAAM7iJ,WAAWmG,OACxBgkN,GAAWtnE,EAAM7iJ,WAAW8iC,SAAW,IAAI/sD,OAAS,EACpDqkN,EAAkB,GAClBgwB,EAAmB77O,KAAKm5O,kBAM5B,IAFA0C,EAAiB32L,OAEZwhJ,EAAW,EAAGA,EAAW2kC,EAAc3kC,IACxCjC,EAAgBx1J,EAAOy3J,GAEnBpyB,EAAM++D,YAAY5uC,IAAkBm3C,GACpCD,EAAgB9uB,GAAYpoB,EAAer2L,GAC3Cy9M,EAAkBA,EAAgBztM,OAAOu9N,GAEzCE,EAAiBC,aAAaH,EAAeh3O,KAE7C8/L,EAAgB1hM,EAAO,CAAC,EAAG0hM,GAC3BonB,EAAgBlqN,KAAK8iM,GAErBo3C,EAAiBE,aAAat3C,EAAe9/L,IAIrD2vK,EAAMmlE,cAAgBxqM,EACtB9nC,EAAQ8nC,OAAS48K,EACjB7rN,KAAKo/J,UAAUuoE,oBAEfrzD,EAAMglE,cACNhlE,EAAMilE,kBAENv5O,KAAK85O,UAAW,CACpB,EAEAF,eAAgB,SAASj1O,GACrB3E,KAAK07O,UAAU/2O,GAEf3E,KAAKoK,QAAQ2uO,GACT/4O,KAAKo/J,WAAap/J,KAAKo/J,UAAU+nE,YACjCnnO,KAAKonO,SAEb,EAEAkS,YAAa,WACT,IAGI5yC,EAEAjC,EACAwmB,EACA+wB,EAPA1nE,EAAQt0K,KACRoO,EAAOkmK,EAAM7iJ,WAAWmG,OACxBqX,EAASqlI,EAAMntK,QAAQ8nC,OAEvBo8L,EAAep8L,EAAOznC,OAK1B,IAAKk/L,EAAW,EAAGA,EAAW2kC,EAAc3kC,IACxCjC,EAAgBx1J,EAAOy3J,GAEnBpyB,EAAM++D,YAAY5uC,KAClBwmB,EAAUxmB,EAAcw3C,SACxBD,EAAallH,EAAQm0F,IAAY78M,EAAK68M,IAAY,CAAC,GAAG/+J,MAAQ99C,GAE/B,IAA3Bq2L,EAAczyH,WACdyyH,EAAcr2L,KAAO4tO,GAIrC,EAEAzC,gBAAiB,WACb,IAMIx8B,EACA53K,EAPAmvI,EAAQt0K,KACRoO,EAAOkmK,EAAM7iJ,WAAWmG,QAAU,GAClCgkN,GAAWtnE,EAAM7iJ,WAAW8iC,SAAW,IAAI/sD,OAAS,EACpD00O,EAAiB9tO,EACjBjH,EAAUmtK,EAAMntK,QAChB2yI,EAAc,GAAG17H,OAAOjX,EAAQyuL,cAUpC,IANIgmD,GACIxtO,EAAK5G,SACL00O,EAAiB9tO,EAAK,GAAG89C,OAI5B6wJ,EAAS,EAAGA,EAASjjE,EAAYtyI,OAAQu1M,KAEpB,KADtB53K,EAAO20G,EAAYijE,IACV/qI,UACLsiG,EAAM6nE,kBAAkBh3M,EAAM+2M,EAAgBn/B,EAG1D,EAEAo/B,kBAAmB,SAASh3M,EAAM/2B,EAAM2uM,GACpC,IACIn3B,EACA1Z,EACA7G,EAHA/pJ,GAASlN,GAAQ,IAAI5G,OAKzB,GAAI29B,EAAKpf,MAEL,IADAof,EAAK06I,WAAa,GACb+F,EAAa,EAAGA,EAAatqK,EAAOsqK,IACrCvgB,EAAMj3J,EAAKw3K,GAEX1Z,EAAWkuB,EAASj1J,EAAKpf,MAAOs/I,GACb,IAAfugB,GACAzgJ,EAAK06I,WAAa,CAAC3T,GACnB/mI,EAAK3Q,UAAY,CAAC6wI,KAElBlgI,EAAK06I,WAAWl+K,KAAKuqK,GACrB/mI,EAAK3Q,UAAU7yB,KAAK0jK,SAGrBrlK,KAAKo/J,WACZp/J,KAAKo/J,UAAU2zE,2BAA2B5tM,EAAM43K,EAExD,EAEAs2B,YAAa,SAASpkM,GAClB,IAEIlpB,EAAOxe,EAFPmzL,EAAcL,EAAarmL,QAAQ0mL,YAAYzrJ,GAC/Cn4B,GAAS,EAGb,IAAKvP,EAAI,EAAGA,EAAImzL,EAAYlzL,OAAQD,IAQhC,IAPAwe,EAAQ20K,EAAYnzL,MACN0nE,GACVlpD,EAAQ,QAERA,GAAgB,SAGf+wG,EAAQ7nF,EAAOlpB,IAAS,CACzBjP,GAAS,EACT,KACJ,CAGJ,OAAOA,CACX,EAEA2jO,OAAQ,WACJ,OAAO95O,EAAM4C,QAAQ8b,MAAMrf,KAAK6L,UA3rB9B,QA2rB0C7L,KAAK6L,QAAQI,IAAI,YACjE,IAGAmwO,GAAe,CAAC,UAAW,iBAAkB,WAAY,kBAAmB,cAC5E,cAAe,UAAW,UAAW,uBAAwB,mBAAoB,qBAErF,SAASC,GAAkBj6O,GACvBskO,GAAM3+N,GAAG3F,GAAQ,WACb,IAAIulB,EAAW3nB,KAAKo/J,UACpB,GAAIz3I,EACA,OAAOA,EAASvlB,GAAMgG,MAAMuf,EAAUrgB,UAE9C,CACJ,CAEA,IAAK,IAAIsC,GAAM,EAAGA,GAAMwyO,GAAa50O,OAAQoC,KACzCyyO,GAAkBD,GAAaxyO,KAGnC,SAASijN,GAAY59K,EAAQ7gC,GACzB,IACIkuO,EAEArxB,EAEAsxB,EALAzlO,EAAS,GAET0lO,EAAiBvtM,EAAOwtM,kBAExB92K,EAAav3D,EAAK5G,OAItB,GAAmB,IAAfm+D,EAGA,OAFA42K,EAAc/zO,EAAW,CAAC,EAAGymC,IACjBqtK,iBAAkB,EACvB,CAACigC,GAgBZ,IAbIzlH,EAAQ0lH,IACR77O,EAAMqwB,aACF,4HAIAwrN,IACAF,EAAelsO,EAASosO,KAG5BF,EAAelsO,EAAS6+B,EAAO7sC,MAlBT,GAAGmyD,WAAY,GAAGuiE,EAAQ7nF,EAAO7sC,MAAQmyD,EAAM7rD,MAAQ,KAAOumC,EAAO7sC,KAAOmyD,EAAM7rD,UAqBvGuiN,EAAU,EAAGA,EAAUtlJ,EAAYslJ,IACpCsxB,EAAc/zO,EAAW,CAAC,EAAGymC,GAExBtuC,EAAMuI,WAAWqzO,EAAYtrH,SAC9BsrH,EAAYtrH,MAAQruH,GAGxB25O,EAAYN,SAAWhxB,EACvBsxB,EAAYG,YAActuO,EAAK68M,GAASviN,MACxCoO,EAAOnV,KAAK46O,GAERD,IACAC,EAAYn6O,KAAOk6O,EAAa,CAC5BrtM,OAAQstM,EAAahoL,MAAOnmD,EAAK68M,MAK7C,OAAOn0M,CACX,CAEA2T,EAAQomK,YAAY9tL,OAAO2jO,GAAM3+N,IAE7BpH,EAAMg8O,UACNh8O,EAAMg8O,SAAS55O,OAAO2jO,GAAM3+N,IAGhC0iB,EAAQF,GAAG2M,OAAOwvM,IAElB,IAAI0S,GAAwBxxO,EAAM7E,OAAO,CACrCoF,KAAM,WACFnI,KAAK2pC,OAAS,CAAC,EACf3pC,KAAKsZ,MAAQ,CAAC,EACdtZ,KAAKmH,QAAU,CAAC,CACpB,EAEA20O,aAAc,SAAS7sM,EAAQtqC,GAC3B,GAAKA,GAAKA,EAAEyoC,QAAWptC,KAAKmH,QAAQy1O,wBAChC,IAAK,IAAIhzO,EAAM,EAAGA,EAAMqlC,EAAOznC,OAAQoC,KACU,IAAzC5J,KAAK2pC,OAAOsF,EAAOrlC,GAAK8yO,eACxBztM,EAAOrlC,GAAKoD,SAAU,QAI9BhN,KAAK2pC,OAAS,CAAC,CAEvB,EAEAoyM,aAAc,SAAS9sM,EAAQtqC,GACtBA,GAAKA,EAAEyoC,QAAWptC,KAAKmH,QAAQy1O,yBACC,IAA7B58O,KAAKsZ,MAAM21B,EAAO31B,SAClB21B,EAAOjiC,SAAU,GAGrBhN,KAAKsZ,MAAQ,CAAC,CAEtB,EAEAo1B,KAAM,SAASO,GACNA,IAIDjvC,KAAKmH,QAAQy1O,wBACb58O,KAAKmH,QAAQ8nC,OAAOA,EAAO31B,OAAOtM,QAAUiiC,EAAOjiC,QAEnDhN,KAAK68O,UAAU5tM,GAEvB,EAEA/c,WAAY,SAAS/qB,GACjBnH,KAAKmH,QAAUA,EACfnH,KAAK2pC,OAAS,CAAC,EACf3pC,KAAKsZ,MAAQ,CAAC,CAClB,EAEA4rC,KAAM,WACF,IAAI/9C,EAAUnH,KAAKmH,QACnB,GAAIA,EAAQy1O,wBAER,IADA,IAAI3tM,EAAS9nC,EAAQ8nC,OACZrlC,EAAM,EAAGA,EAAMqlC,EAAOznC,OAAQoC,IACnC5J,KAAK68O,UAAU5tM,EAAOrlC,GAGlC,EAEAizO,UAAW,SAAS5tM,GACZ6nF,EAAQ7nF,EAAOytM,aACf18O,KAAK2pC,OAAOsF,EAAOytM,aAAeztM,EAAOjiC,QAEzChN,KAAKsZ,MAAM21B,EAAO31B,OAAS21B,EAAOjiC,OAE1C,IAGA8vO,GAAOn8O,EAAMghI,SAYjB,IAAIpb,GAAUj9G,GAAWvG,OAAO,CAC5BoF,KAAM,SAAS4iK,EAAc5jK,GACzB,IAAI83J,EAAUj/J,KAEdsJ,GAAWvB,GAAGI,KAAKoC,KAAK00J,GAExBj/J,KAAKkyB,WAAW/qB,GAEhB83J,EAAQ8L,aAAeA,EAEvB9L,EAAQ7uJ,SAAWm2G,GAAQn2G,SACtB6uJ,EAAQ7uJ,WACT6uJ,EAAQ7uJ,SAAWm2G,GAAQn2G,SAAW,EAAGyzG,WAAUu8B,MAAKroD,OAAM20E,SAAQ31I,aAClE,yBAAyB8sF,EAAW,qBAAuB,sBAAsBu8B,EAAM,QAAU,OAC9Fz/I,EAAMijB,KAAK,2BAA2BjjB,EAAMijB,KAAK,gCACjDjjB,EAAMijB,KAAK,kBAAkBm0E,MAASp3F,EAAMijB,KAAK,qBAAqBmT,OACtE21I,EAAS,GAAG/rK,EAAMijB,KAAK,oBAAoB8oJ,EAAO3gK,kBAAoB,IAHzE,0CAMG83G,EAAW,GAAK,iCAAmCljH,EAAM4pB,GAAG+tE,KAAK31F,EAAE,kCAAmC,CAAE21F,KAAM,MAAS,UAC1H,UAGR2mE,EAAQpzJ,QAAUlJ,EAAEs8J,EAAQ7uJ,SAAS6uJ,EAAQ93J,UAC7CxG,EAAM+qC,+BAA+BuzH,EAAQpzJ,QAAS,CAAC,UAAW,WAAY,OAAQ,SAAU,YAEhGozJ,EAAQvkI,KAAOukI,EAAQvkI,KAAKlxB,KAAKy1J,GACjCA,EAAQt4C,YAAcs4C,EAAQt4C,YAAYn9G,KAAKy1J,GAE/C,IAAI89E,EAAyBp8O,EAAMsQ,OAAO,mCAAoCtQ,EAAMijB,KAAK,SACzFq7I,EAAQ+9E,gBAAkBjyE,EAAal+J,QAAQkwO,GAAwB3uO,KAAK,uBAC5E6wJ,EAAQ/sE,UAAYvxF,EAAMg7B,cAj4BlB,OAi4B2Ch7B,EAAMwvB,QACzD8uI,EAAQg+E,qBAAuBh+E,EAAQi+E,cAAc1zO,KAAKy1J,EAC9D,EAEAj9J,QAAS,WAGLhC,KAAKm9O,oBACLxrJ,EAAiBv4D,IAHHp5B,KAGekyF,UAHflyF,KAGkCi9O,sBAC5Cj9O,KAAK6L,UACL7L,KAAK6L,QAAQutB,IAAIy/M,GAAexsO,SAChCrM,KAAK6L,QAAU,KAEvB,EAEAqmB,WAAY,SAAS/qB,GACjBnH,KAAKmH,QAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAASA,EAChD,EAEAA,QAAS,CACL4vB,QAAS,EACTu7D,UAAW,CACPhrE,SA/4BqB,KAi5BzB81N,eAAgB,EAAGC,UAAS3lB,eAAct0F,SAAQz8E,UAAS22L,cAAaC,gBAEpE,uBAAgBF,MAAY3lB,SAkdxC,SAAgCt0F,EAAQk6G,EAAaC,EAAY52L,GAG7D,IAFA,IAAI7vC,EAAS,GAEJvP,EAAI,EAAGA,EAAI67H,EAAO57H,OAAQD,IAAK,CACpC,IAAI40H,EAAQiH,EAAO77H,GACnBuP,GAAU,OAENwmO,IACAxmO,GAAU,mDAAmDnW,EAAMijB,KAAK,8BAA8BmrD,EAAOotD,EAAMltF,OAAOgiF,wBAG1HssH,IACAzmO,GAAU,QAAQqlH,EAAMltF,OAAO7sC,KAAO+5H,EAAMltF,OAAO7sC,KAAO,IAAM,iBAGpE0U,GAAU,OAAO6vC,EAAQw1E,UACzBrlH,GAAU,OACd,CAEA,OAAOA,CACX,CAregB0mO,CAAuBp6G,EAAQk6G,EAAaC,EAAY52L,GAC5D,WACJgxK,eAAgB,QAChB9zG,UAAU,GAGdnpF,KAAM,WACF,IAGI5c,EAHAmhJ,EAAUj/J,KACVmH,EAAU83J,EAAQ93J,QAClB0E,EAAUozJ,EAAQpzJ,QAGjBozJ,EAAQ9sE,QAAW8sE,EAAQpzJ,UAIhCiS,EAASmhJ,EAAQ15C,UACZ05C,EAAQjyJ,SACTnB,EAAQI,IAAI,CAAEiZ,IAAKpH,EAAOoH,IAAKsH,KAAM1O,EAAO0O,OAGhDyyI,EAAQjyJ,SAAU,EAClBiyJ,EAAQw+E,eAAe9tO,SAASqP,MAChCnT,EACK2c,MAAK,GAAM,GACX/a,OACAia,QAAQ,CACL8E,KAAM1O,EAAO0O,KACbtH,IAAKpH,EAAOoH,KACb/d,EAAQmrF,UAAUhrE,UAC7B,EAEA61N,kBAAmB,WACXn9O,KAAK09O,cACLpjN,aAAat6B,KAAK09O,aAClB19O,KAAK09O,YAAc,KAE3B,EAEA9kC,UAAW,SAAS5oM,GAChB,IAAImiF,EAASnyF,KAAKmyF,OACdgqC,EAAQhqC,EAAOgqC,MACf+U,EAAQ/+C,EAAO++C,MACf9rI,EAAI+2H,EAAM3vG,KACVroB,EAAIg4H,EAAMj3G,IAad,MAZyB,WAArBgsH,EAAMx+F,WACNttC,GAAK4K,EAAKjE,MAAQ,EACU,UAArBmlI,EAAMx+F,aACbttC,GAAK4K,EAAKjE,OAGS,WAAnBmlI,EAAM1+F,SACNruC,GAAK6L,EAAKhE,OAAS,EACO,WAAnBklI,EAAM1+F,WACbruC,GAAK6L,EAAKhE,QAGP,CACH5G,EAAGA,EACHjB,EAAGA,EAEX,EAEAohH,QAAS,WACL,IAAI05C,EAAUj/J,KACVgQ,EAAOivJ,EAAQO,WACfrtE,EAAS8sE,EAAQ25C,UAAU5oM,GAC3BkV,EAAMitE,EAAOhuF,EACbqoB,EAAO2lE,EAAO/sF,EACdwf,EAAYjkB,EAAM4C,QAAQqhB,YAC1BkuE,EAAWnwF,EAAE7B,QACbg2B,EAAYh2B,OAAOitB,aAAepe,SAASiK,gBAAgBkd,WAAa,EACxEvJ,EAAazsB,OAAOktB,aAAere,SAASiK,gBAAgB2T,YAAc,EAC1EkvB,GAAWz8C,KAAKg9O,iBAAmB,CAAC,GAAGvgM,QAE3C,GAAKA,GAA6B,IAAlBA,EAAQ1M,MAGjB,CACH,IAAI4D,EAAYmpM,GAAKnpM,YAAY5D,MAAM0M,EAAQ1M,MAAO0M,EAAQ1M,MAAO,CAAC0M,EAAQr3C,EAAGq3C,EAAQt4C,IACrFg4H,EAAQ,IAAI2gH,GAAKhhH,MAAMtvG,EAAMtH,GAAKyuB,UAAUA,GAChDnnB,EAAO2vG,EAAM/2H,EACb8f,EAAMi3G,EAAMh4H,CAChB,MAPI+gB,GAAO+5I,EAAQ5qE,KAAKnvE,EAAM4R,EAAW9mB,EAAKhE,OAAQI,EAAY0mF,GAAYluE,GAC1E4H,GAAQyyI,EAAQ5qE,KAAK7nE,EAAOe,EAAYvd,EAAKjE,MAAOI,EAAW2mF,GAAYluE,GAQ/E,MAAO,CACHM,IAAKA,EACLsH,KAAMA,EAEd,EAEA/e,KAAM,SAAS9I,GACX,IAAIs6J,EAAUj/J,KACV29O,EAAgBh7O,EAAE,eACtB3C,KAAKmyF,OAASxtF,EAAEwtF,OAChBnyF,KAAK6L,QAAQI,IAnKrB,SAAwBkB,GACpB,IAAK,IAAI4Y,KAAS5Y,EACVA,EAAM4Y,KAAWnjB,IACjBuK,EAAM4Y,GAAS,IAIvB,OAAO5Y,CACX,CA2JyBywO,CAAej5O,EAAEwI,QAClCnN,KAAK6L,QAAQ+c,YAl/BC,4BAk/B8BjkB,EAAE0oB,WAC9CrtB,KAAK6L,QAAQ+c,YAl/BM,2BAk/B8BjkB,EAAEo6J,QAEnD,IAAIp4G,EAAUhiD,EAAEo6J,OAAS/+J,KAAK69O,eAAel5O,GAAK3E,KAAK89O,cAAcn5O,EAAEw3H,OACvEwhH,EAActtO,KAAKs2C,GACnBhmD,EAAM+qC,+BAA+BiyM,EAAe,CAAC,qBACrD39O,KAAK6L,QAAQsqB,KAAK,sBAAsBy2B,QAAQzS,OAAOwjM,GAElD1+E,EAAQ93J,QAAQ08G,WACjBo7C,EAAQpzJ,QAAQutB,IAAI,QAAUy4D,GAAIhoE,GAAG,QAAUgoE,EAAI,oBAAqBotE,EAAQg+E,sBAChFtrJ,EAAiBv4D,IAAI6lI,EAAQ/sE,UAAW+sE,EAAQg+E,sBAC3CpzN,GAAGo1I,EAAQ/sE,UAAW+sE,EAAQg+E,uBAGvCj9O,KAAKm9O,oBACLn9O,KAAK09O,YAAcxkN,WAAWl5B,KAAK06B,KAlgClB,IAmgCrB,EAEAhtB,KAAM,SAASqwO,GACX,IAAI9+E,EAAUj/J,MAETi/J,EAAQ93J,QAAQ08G,UAAak6H,KAIlCzjN,aAAa2kI,EAAQy+E,aACrBz+E,EAAQ++E,eAEJ/+E,EAAQjyJ,UACRiyJ,EAAQ9iC,MAAQ,KAChB8iC,EAAQjyJ,SAAU,EAClBiyJ,EAAQ3lJ,MAAQ,KAChBq4E,EAAiBv4D,IAAI6lI,EAAQ/sE,UAAW+sE,EAAQg+E,uBAExD,EAEAC,cAAe,SAASv4O,GACPhC,EAAEgC,EAAE0C,QAEL4F,GAAG,0CACXtI,EAAEwE,iBACFnJ,KAAK+qK,aAAa38J,KAAK,cAAcgxJ,UAAUszE,eAC/C1yO,KAAK0N,MAAK,GAElB,EAEAmwO,eAAgB,SAASl5O,GACrB,IAAIy+H,EAASz+H,EAAEy+H,OAGXm6G,EAAa9yN,EAAQ4T,KAAK+kG,GAAQ,SAASjH,GAC3C,OAAOrF,EAAQqF,EAAMltF,OAAO7sC,KAChC,IAAGoF,OAEC81O,EAAc34O,EAAEsqC,OAAOznC,OAAS,EAChC61O,EAAU,EAmBd,OAlBIE,GACAF,IAEAC,GACAD,IAGW18O,EAAMyP,SAASpQ,KAAKmH,QAAQi2O,eAC7BhtO,CAAS,CACnBgzH,OAAQA,EACR8oC,SAAUvnK,EAAEunK,SACZwrD,aAAc/yN,EAAE+yN,aAChB/wK,QAAS3mD,KAAK89O,cAAct0O,KApBrBxJ,MAqBPs9O,YAAaA,EACbC,WAAYA,EACZF,QAASA,GAIjB,EAEA79E,SAAU,WAQN,OAPAx/J,KAAKy9O,iBAEM,CACP1xO,MAAOI,EAAWnM,KAAK6L,SACvBG,OAAQI,EAAYpM,KAAK6L,SAIjC,EAEA4xO,eAAgB,WACRz9O,KAAK6L,SACL7L,KAAK6L,QACAK,SAASyD,SAASqP,MAClB6K,GAAGgvN,EAAe74O,KAAK2mH,YAEpC,EAEAA,YAAa,SAAShiH,GAClB,IAAI0C,EAAS1C,EAAE22B,cACXg5I,EAAQt0K,KAAK+qK,aAAa,GAC1B1jK,GAAUA,IAAWitK,IAAU3xK,EAAE4yB,SAAS++I,EAAOjtK,IACjDrH,KAAKoK,QAAQ4uO,GAErB,EAEAgF,aAAc,WACV,IAAI/+E,EAAUj/J,KACV6L,EAAU7L,KAAK6L,QACfA,GACAA,EAAQoyO,QAAQ,CACZC,OAAQ,WACCj/E,EAAQjyJ,SACTnB,EAAQutB,IAAIy/M,GAAexsO,QAEnC,GAGZ,EAEAyxO,cAAe,SAAS3hH,GACpB,IAEIx1E,EADAx/C,EAAUqB,EAAW,CAAC,EADZxI,KACuBmH,QAASg1H,EAAMh1H,QAAQ83J,SA4B5D,OAzBInoC,EAAQqF,EAAMzzH,SACdi+C,EAAUw1E,EAAMzzH,MAAM+I,YAGtBtK,EAAQiJ,SAERu2C,EADkBv2C,EAASjJ,EAAQiJ,SACzB+tO,CAAgB,CACtBz1O,MAAOyzH,EAAMzzH,MACbwjK,SAAU/vC,EAAM+vC,SAChBj9H,OAAQktF,EAAMltF,OACdwvB,SAAU09D,EAAM19D,SAChB5xC,WAAYsvG,EAAMtvG,WAClBs/I,aAAchwC,EAAMgwC,aACpBnlH,MAAOm1E,EAAMn1E,MACb4wE,IAAKuE,EAAMvE,IACX+4D,KAAMx0D,EAAMw0D,KACZytD,KAAMjiH,EAAMiiH,KACZC,MAAOliH,EAAMkiH,MACbC,KAAMniH,EAAMmiH,KACZC,MAAOpiH,EAAMoiH,QAEVp3O,EAAQ8J,SACf01C,EAAUw1E,EAAM6uE,YAAY7jM,EAAQ8J,SAGjC01C,CACX,EAEA0tC,KAAM,SAASv2E,EAAQ9N,EAAMskF,GACzB,IAAIC,EAAS,EAUb,OARIz2E,EAAS9N,EAAOskF,IAChBC,EAASD,GAAgBx2E,EAAS9N,IAGlC8N,EAAS,IACTy2E,GAAUz2E,GAGPy2E,CACX,IAGA+jH,GAAmB/xF,GAAQxjH,OAAO,CAClCoF,KAAM,SAAS4iK,EAAc5jK,GACzBo/G,GAAQx+G,GAAGI,KAAKoC,KAAKvK,KAAM+qK,EAAc5jK,GACzCnH,KAAK6L,QAAQwZ,SAAS,4BAC1B,EAEA5X,KAAM,SAAS9I,GACG3E,KAAK6L,UAGf7L,KAAKmyF,OAASxtF,EAAEwtF,OAChBnyF,KAAK6L,QAAQI,IAAItH,EAAEwI,OACnBnN,KAAK6L,QAAQwE,KAAKrQ,KAAK2mD,QAAQhiD,IAE/B3E,KAAK06B,OAEb,EAEAA,KAAM,WACF,IAAIukI,EAAUj/J,KACV6L,EAAUozJ,EAAQpzJ,QAClBiS,EAASmhJ,EAAQ15C,UAErB05C,EAAQw+E,iBACR5xO,EAAQI,IAAI,CAAEiZ,IAAKpH,EAAOoH,IAAKsH,KAAM1O,EAAO0O,OAAQ/e,MACxD,EAEAk5C,QAAS,SAAShiD,GACd,IAAIgiD,EAAUhiD,EAAE+D,MACZvB,EAAUxC,EAAE2zL,UAAUnxL,QAAQ83J,QAQlC,OANI93J,EAAQiJ,WACRu2C,EAAUv2C,EAASjJ,EAAQiJ,SAAjBA,CAA2B,CACjC1H,MAAOi+C,KAIRA,CACX,EAEAj5C,KAAM,WACF1N,KAAK6L,QAAQ6B,MACjB,IAGA8rL,GAAY5xL,EAAM7E,OAAO,CACzBoF,KAAM,SAASmsK,EAAO1lF,GAClB5uF,KAAKw+O,OAASlqE,EACdt0K,KAAK25L,MAAQ/qG,EACb5uF,KAAKihJ,OAASryD,EAAKqyD,OACnBjhJ,KAAKy5L,aAAe7qG,EAAK8qG,eAAez4C,OACxCjhJ,KAAKoC,KAAOwsF,EAAKznF,QAAQ/E,IAC7B,EAEA6sC,OAAQ,WACJ,IAAIqlI,EAAQt0K,KAAKw+O,OAEbvvM,EADeqlI,EAAMulB,UAAUojB,oBACTj9M,KAAKoC,MAAQ,WAEnC0U,EAAS,GACb,GAAIm4B,EACA,IAAK,IAAIrlC,EAAM,EAAGA,EAAMqlC,EAAOznC,OAAQoC,IACnCkN,EAAOnV,KAAK,IAAIs4O,GAAY3lE,EAAOrlI,EAAOrlC,KAIlD,OAAOkN,CACX,IAGAmjO,GAAcryO,EAAM7E,OAAO,CAC3BoF,KAAM,SAASmsK,EAAOntK,GAClBnH,KAAKw+O,OAASlqE,EACdt0K,KAAKk2I,SAAW/uI,CACpB,EAEAi8H,OAAQ,SAAS7zG,GACb,IAAI6zG,EAASpjI,KAAK8uN,QAClB,IAAK1rF,EAAQ,CACT,IAAIn0F,EAASjvC,KAAKs6O,iBACdniE,EAAWn4K,KAAKw+O,OAAO3kD,UAC3B75L,KAAK8uN,QAAU1rF,EAAS+0C,EAASkpC,oBAAoBpyK,EAAO31B,MAChE,CAMA,OALI3Y,EAAMuI,WAAWqmB,KACjB6zG,EAASpjI,KAAKy+O,cAAcr7G,EAAQ7zG,IAIjC6zG,CACX,EAEAh1H,KAAM,SAASA,GACX,IAAI6gC,EAASjvC,KAAKs6O,iBAClB,GAAIlsO,EAAM,CACN,IAAIkmK,EAAQt0K,KAAKw+O,OACbrmE,EAAW7D,EAAMulB,UAIrB,GAFA5qJ,EAAO7gC,KAAOA,EAEV6gC,EAAOq6K,cAAe,CACtB,IAAInkL,EAAOgzI,EAAS8tB,mBAAmBh3J,GACnC9nC,EAAU,GAAGiX,OAAOk2J,EAAMntK,QAAQyuL,cAEtCthB,EAAMlV,UAAU2zE,2BAA2B5rO,EAAQg+B,EAAK6kK,WAAY7kK,EAAK6kK,UAC7E,CAEA11B,EAAMyzD,uBACN/nO,KAAK0+O,cACT,CAEA,OAAOzvM,EAAO7gC,IAClB,EAEAuzM,UAAW,SAASpyL,GAEhB,IADA,IAAI6zG,EAASpjI,KAAKojI,SACTx5H,EAAM,EAAGA,EAAMw5H,EAAO57H,OAAQoC,IACnC,GAAI2lB,EAAO6zG,EAAOx5H,IACd,OAAOw5H,EAAOx5H,EAG1B,EAEAiiK,gBAAiB,SAASp+J,EAAMkrB,GAIxBA,EAHCA,EAEMh4B,EAAMuI,WAAWyvB,GACb34B,KAAKojI,OAAOzqG,GAEZ11B,EAAQ01B,GAAYA,EAAW,CAACA,GAJhC34B,KAAKojI,SAOpBpjI,KAAKw+O,OAAOp/E,UAAUmpE,sBAAsB96N,EAAMkrB,EACtD,EAEAgmN,iBAAkB,SAAS3xO,EAASuiB,GAChC,IAAI+kJ,EAAQt0K,KAAKw+O,OACbn4C,EAAgBrmM,KAAKs6O,iBAEzB,GADgB35O,EAAMuI,WAAWqmB,GAK7B,GAAIkG,EAAQ4wK,EAAc3gM,KAAM,CAACk5L,GAAKP,GAAOC,KAEzC,IADA,IAAIlwL,EAAOpO,KAAK4+O,YAAYrvN,GACnB3lB,EAAM,EAAGA,EAAMwE,EAAK5G,OAAQoC,IACjCwE,EAAKxE,GAAKoD,QAAUA,OAGxBq5L,EAAcr5L,QAAU,SAASoB,GAC7B,OAAOmhB,EAAOnhB,EAAKqwD,WAAYzxD,CACnC,OAXJq5L,EAAcr5L,QAAUA,EACxBsnK,EAAM6kE,kBAAkBzqM,KAAK23J,GAcjC/xB,EAAMyzD,uBAEN/nO,KAAK0+O,cACT,EAEAE,YAAa,SAASrvN,GAKlB,IAJA,IAAInhB,EAAOpO,KAAKs6O,iBAAiBlsO,KAC7B5G,EAAS4G,EAAK5G,OACdsP,EAAS,GAEJlN,EAAM,EAAGA,EAAMpC,EAAQoC,IACxB2lB,EAAOnhB,EAAKxE,KACZkN,EAAOnV,KAAKyM,EAAKxE,IAGzB,OAAOkN,CACX,EAEA2nO,cAAe,SAASr7G,EAAQ7zG,GAG5B,IAFA,IAAIzY,EAAS,GACTtP,EAAS47H,EAAO57H,OACXoC,EAAM,EAAGA,EAAMpC,EAAQoC,IACxB2lB,EAAO6zG,EAAOx5H,KACdkN,EAAOnV,KAAKyhI,EAAOx5H,IAG3B,OAAOkN,CACX,EAEAwjO,eAAgB,WACZ,IAAIrrM,EAASjvC,KAAK+jN,QAIlB,OAHK90K,IACDA,EAASjvC,KAAK+jN,QAAU/jN,KAAKw+O,OAAOlE,eAAet6O,KAAKk2I,WAErDjnG,CACX,EAEAyvM,aAAc,kBACH1+O,KAAK8uN,eACL9uN,KAAK+jN,OAChB,IA+BJt5L,EAAQ87F,QAAUA,GAClB97F,EAAQ6tL,iBAAmBA,GAC3B7tL,EAAQwuN,sBAAwBA,GAChCxuN,EAAQ+uK,UAAYA,GACpB/uK,EAAQwvN,YAAcA,EAEzB,CAl8CD,CAk8CGn5O,OAAOH,MAAM+G,QAgBF/G,OASd,SAAUgC,GAGV7B,OAAOH,MAAM8pB,QAAU3pB,OAAOH,MAAM8pB,SAAW,CAAC,EAChD,IAAIA,EAAU9pB,MAAM8pB,QAChBjiB,EAAaiiB,EAAQjiB,WACrBu+J,EAAMt8I,EAAQs8I,IACd/C,EAAoBv5I,EAAQu5I,kBAC5B1C,EAAY72I,EAAQ62I,UACpB3/B,EAAWhhI,MAAMghI,SACjBj3G,EAAU/pB,MAAM+pB,QAEhBm0N,EAAcp0N,EAAQ2oM,OAItBh+J,EAAM,SAAUr6C,EAAO+jO,GAAS,OAAO/jO,EAAMF,IAAIikO,GAAO/6L,QAAO,SAAUlP,EAAKrF,GAAQ,OAAQqF,EAAMrF,CAAO,GAAG,EAAI,EAClHuvM,EAAU,SAAU75O,EAAG+W,GAAK,OAAQ/W,EAAE85O,KAAO/iO,EAAE+iO,GAAK95O,EAAEoU,MAAQ2C,EAAE3C,MAAQpU,EAAE85O,GAAK95O,EAAEg5E,GAAKjiE,EAAE+iO,GAAK/iO,EAAEiiE,EAAK,EACpG+gK,EAAa,SAAU/5O,EAAG+W,GAAK,OAAO8iO,EAAQ75O,EAAE2I,OAAQoO,EAAEpO,OAAS,EACnEqxO,EAAa,SAAUh6O,EAAG+W,GAAK,OAAO8iO,EAAQ75O,EAAEmC,OAAQ4U,EAAE5U,OAAS,EACnEqB,EAAQ,SAAU26B,GAAQ,OAAOA,EAAK36B,KAAO,EAEjD,SAASy2O,EAAU/yL,GACfA,EAAM9qD,SAAQ,SAAU+hC,GACpBA,EAAK+7M,YAAY99O,SAAQ,SAAUgzO,GAC/BA,EAAKzmO,OAAOwxO,YAAYrjO,KAAKkjO,EACjC,IACA77M,EAAKg8M,YAAY/9O,SAAQ,SAAUgzO,GAC/BA,EAAKjtO,OAAO+3O,YAAYpjO,KAAKijO,EACjC,GACJ,GACJ,CAEA,IAAIK,EAAY,SAAUj8M,EAAMk8M,GAC5B,MAAmB,SAAfl8M,EAAK6tG,MACE7tG,EAAK8gI,MAGG,UAAf9gI,EAAK6tG,MACEquG,EAAWl8M,EAAKr3B,OAGpBq3B,EAAKg8M,YAAY73O,OAAS67B,EAAK8gI,MAAQo7E,CAClD,EAEIC,EAAW7+O,MAAMiH,MAAM7E,OAAO,CAC9BoF,KAAM,SAAShB,GACX,IAAIkrH,EAAMlrH,EAAQs4O,aACd3hO,EAASu0G,EAAIv0G,YAAuB,IAAXA,IAAqBA,EAAS,CAAC,GAC5D,IAAIozH,EAAQ7e,EAAI6e,MAChBlxI,KAAKoO,KAAO,CACRg+C,MAAOjlD,EAAQilD,MAAMvxC,KAAI,SAAUwoB,GAAQ,OAAO76B,EAAW,CAAC,EAAG,CAAEsV,OAAQA,EAAQozH,MAAOA,GAAS7tG,EAAO,IAC1Gq8M,MAAOv4O,EAAQu4O,MAAM7kO,KAAI,SAAUy5N,GAAQ,OAAO9rO,EAAW,CAAC,EAAG8rO,EAAO,KAG5Et0O,KAAK+L,MAAQ5E,EAAQ4E,MACrB/L,KAAKgM,OAAS7E,EAAQ6E,OACtBhM,KAAKunF,QAAUpgF,EAAQogF,SAAW,EAClCvnF,KAAKwnF,QAAUrgF,EAAQqgF,SAAW,EAClCxnF,KAAK2/O,UAAYx4O,EAAQs4O,aAAa1zO,MACtC/L,KAAK4/O,YAAcz4O,EAAQs4O,aAAaznG,QACxCh4I,KAAKqW,QAAUlP,EAAQkP,QACvBrW,KAAK6/O,kBAAoB14O,EAAQ04O,kBACjC7/O,KAAK8/O,MAAQ34O,EAAQ24O,MACrB9/O,KAAK+/O,WAAa54O,EAAQ44O,UAC9B,EAEAC,UAAW,WACP,IAAI3tH,EAAMryH,KAAKoO,KACXg+C,EAAQimE,EAAIjmE,MACZszL,EAAQrtH,EAAIqtH,MAChB1/O,KAAKigP,oBAAoB7zL,EAAOszL,GAChC1/O,KAAKkgP,oBAAoB9zL,GAEzB,IAAI+zL,EAAgBngP,KAAKogP,qBAAqBh0L,GAE9C,GAAI+zL,EACA,MAAO,CAAE/zL,MAAO,GAAIszL,MAAO,GAAIW,QAAS,GAAIF,cAAeA,GAG/DngP,KAAKsgP,oBAAoBl0L,GACzB,IAAIi0L,EAAUrgP,KAAKugP,qBAAqBn0L,GAKxC,OAJApsD,KAAKwgP,sBAAsBH,GAC3BrgP,KAAKygP,iBAAiBr0L,GACtBpsD,KAAK0gP,sBAAsBt0L,GAEpBzpD,EAAEI,OAAO,CAAC,EAAG/C,KAAKoO,KAAM,CAACiyO,QAASA,GAC7C,EAEAJ,oBAAqB,SAAS7zL,EAAOszL,GACjC,IAAIiB,EAAW,IAAIn9E,IAEnBp3G,EAAM9qD,SAAQ,SAAU+hC,EAAM97B,GAC1B87B,EAAK/pB,MAAQ/R,EACb87B,EAAKg8M,YAAc,GACnBh8M,EAAK+7M,YAAc,GACnB/7M,EAAKhT,QAAiBsuH,IAAZt7G,EAAKhT,GAAmBgT,EAAKhT,GAAKgT,EAAK/O,MAAMwM,KACvD6/M,EAASzwN,IAAImT,EAAKhT,GAAIgT,EAC1B,IAEAq8M,EAAMp+O,SAAQ,SAAUgzO,GACpBA,EAAKzmO,OAAS8yO,EAAS1wN,IAAIqkN,EAAKsM,UAChCtM,EAAKjtO,OAASs5O,EAAS1wN,IAAIqkN,EAAKuM,UAChCvM,EAAKzmO,OAAOwxO,YAAY19O,KAAK2yO,GAC7BA,EAAKjtO,OAAO+3O,YAAYz9O,KAAK2yO,EACjC,GACJ,EAEA4L,oBAAqB,SAAS9zL,GAC1BA,EAAM9qD,SAAQ,SAAU+hC,GACpBA,EAAK36B,MAAQrF,KAAK8V,IACdi8C,EAAI/xB,EAAKg8M,YAAa32O,GACtB0sD,EAAI/xB,EAAK+7M,YAAa12O,GAE9B,GACJ,EAEA43O,oBAAqB,SAASl0L,GAI1B,IAHA,IAAIp4C,EAAU,IAAImxJ,IAAI/4G,GAClBka,EAAO,IAAI6+F,IACX27E,EAAY,EACT9sO,EAAQhE,MAAM,CAEjB,IADA,IAAI+wO,EAAe79O,MAAM6Y,KAAK/H,GACrB4+G,EAAI,EAAGA,EAAImuH,EAAav5O,OAAQorH,IAAK,CAC1C,IAAIvvF,EAAO09M,EAAanuH,GACxBvvF,EAAK8gI,MAAQ28E,EACb,IAAK,IAAItuH,EAAI,EAAGA,EAAInvF,EAAKg8M,YAAY73O,OAAQgrH,IAAK,CAC9C,IAAI8hH,EAAOjxM,EAAKg8M,YAAY7sH,GAC5BlsD,EAAK94D,IAAI8mO,EAAKjtO,OAClB,CACJ,CACAy5O,IACA9sO,EAAUsyD,EACVA,EAAO,IAAI6+F,GACf,CACJ,EAEAi7E,qBAAsB,SAASh0L,GAW3B,IAVA,IAAI40L,EAAc50L,EAAM5kD,OACpBwM,EAAU,IAAImxJ,IAAI/4G,GAClBka,EAAO,IAAI6+F,IACX87E,EAAgB,EAChBC,EAAW,SAAU79M,GACrBA,EAAKr3B,OAASi1O,EACd59M,EAAK+7M,YAAY99O,SAAQ,SAAUgzO,GAC/BhuK,EAAK94D,IAAI8mO,EAAKzmO,OAClB,GACJ,EACOmG,EAAQhE,MAAM,CAGjB,GAFAgE,EAAQ1S,QAAQ4/O,KAChBD,EACoBD,EAChB,OAAO,EAEXhtO,EAAUsyD,EACVA,EAAO,IAAI6+F,GACf,CACA,OAAO,CACX,EAEAo7E,qBAAsB,SAASn0L,GAM3B,IALA,IAnJYrxC,EAAO+jO,EAqJfS,GArJQxkO,EAqJOqxC,EArJA0yL,EAqJO,SAAUt6O,GAAK,OAAOA,EAAE2/J,KAAO,EArJtB9gK,KAAK8V,IAAI/Q,MAAM,KAAM2S,EAAMF,IAAIikO,KAsJ9DqC,GAAenhP,KAAK+L,MAAQ/L,KAAKunF,QAAUvnF,KAAK2/O,WAAaJ,EAC7Dc,EAAU,IAAIn9O,MAAMq8O,EAAW,GAC1Bh4O,EAAI,EAAGA,EAAI6kD,EAAM5kD,OAAQD,IAAK,CACnC,IAAI87B,EAAO+oB,EAAM7kD,GACb65O,EAAQ/9O,KAAK8V,IAAI,EAAG9V,KAAKqT,IAAI6oO,EAAUD,EAAUj8M,EAAMk8M,KAC3Dl8M,EAAKg+M,GARMrhP,KAQQunF,QAAU65J,EAAQD,EACrC99M,EAAK46C,GAAK56C,EAAKg+M,GATJrhP,KASkB2/O,UAC7Bt8M,EAAK+9M,MAAQA,EACbf,EAAQe,GAASf,EAAQe,IAAU,GACnCf,EAAQe,GAAOz/O,KAAK0hC,EACxB,CAEA,OAAOg9M,CACX,EAEAG,sBAAuB,SAASH,GAC5B,IArKYtlO,EAAO+jO,EAqKf7rH,EAAWjzH,KAEXshP,GAvKQvmO,EAuKIslO,EAvKGvB,EAuKM,SAAUp6O,GAAK,OAAQuuH,EAASjnH,OAASinH,EAASzrC,SAAW9iF,EAAE8C,OAAS,GAAKyrH,EAAS2sH,aAAexqL,EAAI1wD,EAAGgE,EAAQ,EAvK1GrF,KAAKqT,IAAItO,MAAM,KAAM2S,EAAMF,IAAIikO,KA0LlE,GAjBAuB,EAAQ/+O,SAAQ,SAAU8qD,GACtB,IAAIjoD,EAAI8uH,EAASzrC,QACjBp7B,EAAM9qD,SAAQ,SAAU+hC,GACpBA,EAAK27M,GAAK76O,EACVk/B,EAAK66C,GAAK/5E,EAAIk/B,EAAK36B,MAAQ44O,EAC3Bn9O,EAAIk/B,EAAK66C,GAAK+0C,EAAS2sH,YACvBv8M,EAAKg8M,YAAY/9O,SAAQ,SAAUgzO,GAC/BA,EAAKvoO,MAAQuoO,EAAK5rO,MAAQ44O,CAC9B,GACJ,IACAn9O,GAAK8uH,EAASjnH,OAAS7H,EAAI8uH,EAAS2sH,cAAgBxzL,EAAM5kD,OAAS,GACnE4kD,EAAM9qD,SAAQ,SAAU+hC,EAAM97B,GAC1B87B,EAAK27M,IAAM76O,GAAKoD,EAAI,GACpB87B,EAAK66C,IAAM/5E,GAAKoD,EAAI,EACxB,GACJ,KAEwB,IAApBvH,KAAK+/O,WAIL,IAHA,IAAID,OAAuBnhG,IAAf3+I,KAAK8/O,MAAsB9/O,KAAK8/O,MAAQO,EAAQ74O,OAAS,EACjEq4O,EAAoB7/O,KAAK6/O,mBAAqB,EAEzCt4O,EAAI,EAAGA,EAAIu4O,EAAOv4O,IAClB0rH,EAAS58G,SAIV48G,EAASsuH,mBAAmBlB,EAASR,GACrC5sH,EAASuuH,kBAAkBnB,EAASR,KAJpC5sH,EAASuuH,kBAAkBnB,EAASR,GACpC5sH,EAASsuH,mBAAmBlB,EAASR,IAQjDQ,EAAQ/+O,QAAQ69O,EACpB,EAEAsB,iBAAkB,SAASr0L,GACvBA,EAAM9qD,SAAQ,SAAU+hC,GACpB,IAAIkkD,GAAWlkD,EAAKvlB,OAASulB,EAAKvlB,OAAO0O,KAAO,IAAM,EAClDg7D,GAAWnkD,EAAKvlB,OAASulB,EAAKvlB,OAAOoH,IAAM,IAAM,EACrDme,EAAKg+M,IAAM95J,EACXlkD,EAAK46C,IAAMsJ,EACXlkD,EAAK27M,IAAMx3J,EACXnkD,EAAK66C,IAAMsJ,CACf,GACJ,EAEAk5J,sBAAuB,SAASt0L,GAC5BA,EAAM9qD,SAAQ,SAAU+hC,GACpB,IAAIg8M,EAAch8M,EAAKg8M,YACnBD,EAAc/7M,EAAK+7M,YACnBj7O,EAAIk/B,EAAK27M,GACT9gK,EAAK/5E,EACTk7O,EAAY/9O,SAAQ,SAAUgzO,GAC1BA,EAAK+M,GAAK/M,EAAKzmO,OAAOowE,GACtBq2J,EAAK0K,GAAK76O,EAAImwO,EAAKvoO,MAAQ,EAC3B5H,GAAKmwO,EAAKvoO,KACd,IACAqzO,EAAY99O,SAAQ,SAAUgzO,GAC1BA,EAAKr2J,GAAKq2J,EAAKjtO,OAAOg6O,GACtB/M,EAAKp2J,GAAKA,EAAKo2J,EAAKvoO,MAAQ,EAC5BmyE,GAAMo2J,EAAKvoO,KACf,GACJ,GACJ,EAEAw1O,mBAAoB,SAASlB,EAASR,GAIlC,IAHA,IAAI5sH,EAAWjzH,KAEX4yH,EAAIytH,EAAQ74O,OACPD,EAAIs4O,EAAmBt4O,EAAIqrH,EAAGrrH,IAAK,CACxC,IAAIssL,EAASwsD,EAAQ94O,GACrBssL,EAAOvyL,SAAQ,SAAU+F,GACrB,IAAIlD,EAAI,EACJixD,EAAM,EACV/tD,EAAO+3O,YAAY99O,SAAQ,SAAUgzO,GACjC,IAAImN,EAASnN,EAAK5rO,OAASrB,EAAO+5O,MAAQ9M,EAAKzmO,OAAOuzO,OACtDj9O,GAAK8uH,EAASyuH,aAAapN,EAAKzmO,OAAQxG,GAAUo6O,EAClDrsL,GAAOqsL,CACX,IAEA,IAAInjK,EAAW,IAANn6E,EAAU,EAAKA,EAAIixD,EAAM/tD,EAAO23O,GACzC33O,EAAO23O,IAAM1gK,EACbj3E,EAAO62E,IAAMI,EACb6gK,EAAU,CAAC93O,GACf,IACAwsL,EAAO73K,KAAK+iO,GACZ9rH,EAAS0uH,uBAAuB9tD,EACpC,CACJ,EAEA2tD,kBAAmB,SAASnB,EAASR,GAKjC,IAJA,IAAI5sH,EAAWjzH,KAINuH,EAFD84O,EAAQ74O,OACK,EAAIq4O,EACAt4O,GAAK,EAAGA,IAAK,CAiBlC,IAhBA,IAAIssL,EAASwsD,EAAQ94O,GACjB+uI,EAAO,SAAWvrG,GAClB,IAAIl9B,EAASgmL,EAAO9oJ,GAChB5mC,EAAI,EACJixD,EAAM,EACVvnD,EAAOwxO,YAAY/9O,SAAQ,SAAUgzO,GACjC,IAAImN,EAASnN,EAAK5rO,OAAS4rO,EAAKjtO,OAAO+5O,MAAQvzO,EAAOuzO,OACtDj9O,GAAK8uH,EAAS2uH,aAAa/zO,EAAQymO,EAAKjtO,QAAUo6O,EAClDrsL,GAAOqsL,CACX,IACA,IAAInjK,EAAW,IAANn6E,EAAU,EAAKA,EAAIixD,EAAMvnD,EAAOmxO,GACzCnxO,EAAOmxO,IAAM1gK,EACbzwE,EAAOqwE,IAAMI,EACb6gK,EAAU,CAACtxO,GACf,EAESk9B,EAAI,EAAGA,EAAI8oJ,EAAOrsL,OAAQujC,IAAKurG,EAAMvrG,GAE9C8oJ,EAAO73K,KAAK+iO,GACZ9rH,EAAS0uH,uBAAuB9tD,EACpC,CACJ,EAEA8tD,uBAAwB,SAASv1L,GAC7B,IACI+b,EAAW/b,EAAM5kD,OAAS,EAE9BxH,KAAK6hP,UAAUz1L,EAAOpsD,KAAKgM,OAAQm8D,GACnCnoE,KAAK8hP,YAAY11L,EAAOpsD,KAAKwnF,QAJZ,EAKrB,EAEAs6J,YAAa,SAAS11L,EAAO21L,EAAMzoO,GAK/B,IAJA,IAEI0oO,EAAWD,EAENx6O,EAAI+R,EAAO/R,EAAI6kD,EAAM5kD,OAAQD,IAAK,CACvC,IAAI87B,EAAO+oB,EAAM7kD,GACb+2E,EAAKj7E,KAAK8V,IAAI,EAAG6oO,EAAW3+M,EAAK27M,IACrC37M,EAAK27M,IAAM1gK,EACXj7C,EAAK66C,IAAMI,EACX0jK,EAAW3+M,EAAK66C,GATLl+E,KASmB4/O,WAClC,CACJ,EAEAiC,UAAW,SAASz1L,EAAO21L,EAAMzoO,GAI7B,IAHA,IAEI0oO,EAAWD,EACNx6O,EAAI+R,EAAO/R,GAAK,IAAKA,EAAG,CAC7B,IAAI87B,EAAO+oB,EAAM7kD,GACb+2E,EAAKj7E,KAAK8V,IAAI,EAAGkqB,EAAK66C,GAAK8jK,GAC/B3+M,EAAK27M,IAAM1gK,EACXj7C,EAAK66C,IAAMI,EACX0jK,EAAW3+M,EAAK27M,GARLh/O,KAQmB4/O,WAClC,CACJ,EAEAgC,aAAc,SAAS/zO,EAAQxG,GAI3B,IAHA,IAEIlD,EAAIkD,EAAO23O,IAAO33O,EAAO+3O,YAAY53O,OAAS,GAAKxH,KAAK4/O,YAAe,EAClEr4O,EAAI,EAAGA,EAAIF,EAAO+3O,YAAY53O,OAAQD,IAAK,CAChD,IAAI+sO,EAAOjtO,EAAO+3O,YAAY73O,GAC9B,GAAI+sO,EAAKzmO,SAAWA,EAChB,MAEJ1J,GAAKmwO,EAAKvoO,MARC/L,KAQgB4/O,WAC/B,CACA,IAAK,IAAI35E,EAAM,EAAGA,EAAMp4J,EAAOwxO,YAAY73O,OAAQy+J,IAAO,CACtD,IAAIg8E,EAASp0O,EAAOwxO,YAAYp5E,GAChC,GAAIg8E,EAAO56O,SAAWA,EAClB,MAEJlD,GAAK89O,EAAOl2O,KAChB,CACA,OAAO5H,CACX,EAEAu9O,aAAc,SAAS7zO,EAAQxG,GAI3B,IAHA,IAEIlD,EAAI0J,EAAOmxO,IAAOnxO,EAAOwxO,YAAY73O,OAAS,GAAKxH,KAAK4/O,YAAe,EAClEr4O,EAAI,EAAGA,EAAIsG,EAAOwxO,YAAY73O,OAAQD,IAAK,CAChD,IAAI+sO,EAAOzmO,EAAOwxO,YAAY93O,GAC9B,GAAI+sO,EAAKjtO,SAAWA,EAChB,MAEJlD,GAAKmwO,EAAKvoO,MARC/L,KAQgB4/O,WAC/B,CACA,IAAK,IAAI35E,EAAM,EAAGA,EAAM5+J,EAAO+3O,YAAY53O,OAAQy+J,IAAO,CACtD,IAAIg8E,EAAS56O,EAAO+3O,YAAYn5E,GAChC,GAAIg8E,EAAOp0O,SAAWA,EAClB,MAEJ1J,GAAK89O,EAAOl2O,KAChB,CACA,OAAO5H,CACX,IAGA+9O,EAAkB,SAAU/6O,GAAW,OAAO,IAAIq4O,EAASr4O,GAAS64O,WAAa,EAqBrF,SAASmC,EAAkBC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,GAChD,IAAIC,GAAeD,EAAMJ,IAAQC,EAAMF,GACnCO,GAAeJ,EAAMF,IAAQG,EAAMJ,GAEvC,OAAIM,EAAcC,EACP,EACAD,IAAgBC,EAChB,GAGH,CACZ,CAWA,IAAIC,EAAiB,SAAU9sH,GAC3B,SAAS8sH,EAAcz7O,GACnB2uH,EAASvrH,KAAKvK,MACdA,KAAKmH,QAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAASA,GAC5CnH,KAAK2qK,cACT,CAqCA,OAnCK70C,IAAW8sH,EAAc1vN,UAAY4iG,GAC1C8sH,EAAcv6O,UAAY5H,OAAO2mD,OAAQ0uE,GAAYA,EAASztH,WAC9Du6O,EAAcv6O,UAAUC,YAAcs6O,EAEtCA,EAAcv6O,UAAUsiK,aAAe,WACnC3qK,KAAKihJ,OAASjhJ,KAAK6e,eACvB,EAEA+jO,EAAcv6O,UAAU+uI,aAAe,WACnC,OAAOp3I,KAAKihJ,MAChB,EAEA2hG,EAAcv6O,UAAUwW,cAAgB,WACpC,IAAIo0G,EAAWjzH,KAEX8rK,EAAe9rK,KAAKmH,QAAQ85I,OAahC,OAVI6qB,EACSA,EAAa,CAClBxhK,OAAQtK,KAAKoqK,YACbjjK,QAASnH,KAAK8tK,gBACdnD,aAAc,WAAc,OAAO13C,EAAS26C,YAAc,IAGrD5tK,KAAK4tK,YAItB,EAEAg1E,EAAcv6O,UAAU+hK,UAAY,WAChC,OAAOpqK,IACX,EAEO4iP,CACX,CA3CoB,CA2ClBn4N,EAAQ7iB,OAENqjE,EAAQ,SAAU43K,GAClB,SAAS53K,IACL43K,EAAiBz6O,MAAMpI,KAAMsH,UACjC,CA8BA,OA5BKu7O,IAAmB53K,EAAK/3C,UAAY2vN,GACzC53K,EAAK5iE,UAAY5H,OAAO2mD,OAAQy7L,GAAoBA,EAAiBx6O,WACrE4iE,EAAK5iE,UAAUC,YAAc2iE,EAE7BA,EAAK5iE,UAAUulK,WAAa,WACxB,IACIvqI,EADUrjC,KAAKmH,QACAk8B,KACfipD,EAAO,IAAIq1C,EAAS1E,KAAK,CAAC55F,EAAKg+M,GAAIh+M,EAAK27M,IAAK,CAAC37M,EAAK46C,GAAK56C,EAAKg+M,GAAIh+M,EAAK66C,GAAK76C,EAAK27M,KAEpF,OAAOt0N,EAAQ6jH,KAAKc,SAAS/iD,EAAMtsF,KAAK8tK,gBAC5C,EAEA7iG,EAAK5iE,UAAUylK,cAAgB,WAC3B,IAAI3mK,EAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAASnH,KAAKmH,QAAQk8B,MAExD,MAAO,CACH3P,KAAM,CACFu9F,MAAO9pH,EAAQ8pH,MACfl6F,QAAS5vB,EAAQ4vB,SAErB6oG,OAAQ,CAAE7zH,MAAO,GACjBshB,UAAW,gBACXmD,KAAM,kBACN+qH,oBAAqB,OACrBvnH,UAAW7sB,EAAQk8B,KAAK/O,MAAMwM,KAEtC,EAEOmqC,CACX,CAlCW,CAkCT23K,GAEEE,EAAY,SAAUz/M,EAAM0/M,EAAYzpO,GAAS,OAAO+pB,EAAK4tF,OAAS8xH,EAAWzpO,EAAQypO,EAAWv7O,OAAS,EAE7Gw7O,EAAqB,SAAU3/M,EAAMl8B,EAAS47O,EAAYzpO,GAC1D,IAAI2pO,EAAcz6O,EAAW,CAAC,EAAGrB,EAASA,EAAQk8B,MAClD,OAAO76B,EAAW,CAAC,EACf,CAAEyoH,MAAO6xH,EAAUz/M,EAAM0/M,EAAYzpO,IACrC2pO,EACA,CAAE5/M,KAAMA,GACR,CACI49G,OAAQ59G,EAAK49G,OACblqH,QAASsM,EAAKtM,QACdjZ,OAAQulB,EAAKvlB,OACbmzG,MAAO5tF,EAAK4tF,OAGxB,EAGI6F,EADMpsG,EAAQ88F,KACAsP,QAEdosH,EAAQ,SAAUL,GAClB,SAASK,IACLL,EAAiBz6O,MAAMpI,KAAMsH,UACjC,CA8BA,OA5BKu7O,IAAmBK,EAAKhwN,UAAY2vN,GACzCK,EAAK76O,UAAY5H,OAAO2mD,OAAQy7L,GAAoBA,EAAiBx6O,WACrE66O,EAAK76O,UAAUC,YAAc46O,EAE7BA,EAAK76O,UAAUulK,WAAa,WACxB,IAAI0mE,EAAOt0O,KAAKmH,QAAQmtO,KACpB+M,EAAK/M,EAAK+M,GACVpjK,EAAKq2J,EAAKr2J,GACV+gK,EAAK1K,EAAK0K,GACV9gK,EAAKo2J,EAAKp2J,GACVilK,GAAM9B,EAAKpjK,GAAM,EAErB,OAAO,IAAIvzD,EAAQ6jH,KAAKvuI,KAAK8tK,iBACxBtxH,OAAO6kM,EAAIrC,GAAIlyG,QAAQ,CAACq2G,EAAInE,GAAK,CAACmE,EAAIjlK,GAAK,CAACD,EAAIC,GACzD,EAEAglK,EAAK76O,UAAUylK,cAAgB,WAC3B,IAAI3mK,EAAUnH,KAAKmH,QACfmtO,EAAOt0O,KAAKmH,QAAQmtO,KACxB,MAAO,CACH10G,OAAQ,CACJ7zH,MAAO5E,EAAQmtO,KAAKvoO,MACpBklH,MAAOqjH,EAAKrjH,OAAS9pH,EAAQ8pH,MAC7Bl6F,QAAS+/F,EAAQw9G,EAAKv9M,SAAWu9M,EAAKv9M,QAAU5vB,EAAQ4vB,SAGpE,EAEOmsN,CACX,CAlCW,CAkCTN,GAwBE/hF,EAAS,SACTuiF,EAAS,SAGTC,EAAS,SAAUR,GACnB,SAASQ,IACLR,EAAiBz6O,MAAMpI,KAAMsH,UACjC,CAoDA,OAlDKu7O,IAAmBQ,EAAMnwN,UAAY2vN,GAC1CQ,EAAMh7O,UAAY5H,OAAO2mD,OAAQy7L,GAAoBA,EAAiBx6O,WACtEg7O,EAAMh7O,UAAUC,YAAc+6O,EAE9BA,EAAMh7O,UAAUulK,WAAa,WACzB,IAAIzmK,EAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAASnH,KAAKmH,QAAQk8B,KAAK/O,OACzD+O,EAAOl8B,EAAQk8B,KACfigN,EAAan8O,EAAQm8O,WACrBh2O,EAAWnG,EAAQmG,SACnBwzB,EAAO35B,EAAQ25B,KACfhjB,EAAS3W,EAAQ2W,OAErB,IAAK3W,EAAQ6F,UAAY8zB,EACrB,OAAO,KAGX,IAAIyiN,EAAU,IAAIx8E,EAAI1jI,EAAKg+M,GAAIh+M,EAAK27M,GAAI37M,EAAK46C,GAAI56C,EAAK66C,IAClD4vF,EAAgB9tK,KAAK8tK,gBACrB8K,EAAU,IAAInuJ,EAAQmmJ,QAAQ9vI,EAAMgtI,GACxC8K,EAAQvmC,OAAO,IAAI00B,GACnB,IAAIy8E,EAAc5qE,EAAQt/H,IAEtBmqM,EAAcpgN,EAAK46C,GAAKulK,EAAYz3O,QAAUu3O,EAC9CI,EAAQH,EAAQhlK,SAASp6E,EAAKq/O,EAAYx3O,SAAW,EAErD23O,EAAa,EADNr2O,IAAa81O,GAAW91O,IAAauzJ,GAAU4iF,EAAeL,EA/BrE,WAgCuBA,EAAS//M,EAAKg+M,GAAKmC,EAAYz3O,QAAUs3B,EAAK46C,GAAIylK,GAEzEE,EAAW,IAAI78E,EAAI48E,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAAKH,EAAYz3O,QAAS43O,EAAW,GAAKH,EAAYx3O,UAMtH,OALA43O,EAASxzM,UAAUtyB,EAAO0O,MAAQ,EAAG1O,EAAOoH,KAAO,GACnD0zJ,EAAQvmC,OAAOuxG,GAEfhrE,EAAQlO,eAEDkO,EAAQ33B,MACnB,EAEAoiG,EAAMh7O,UAAUylK,cAAgB,WAC5B,IAAI3mK,EAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAASnH,KAAKmH,QAAQk8B,KAAK/O,OAC7D,MAAO,CACH28F,MAAO9pH,EAAQ8pH,MACfl5B,KAAM5wF,EAAQ4wF,KACd20E,OAAQvlK,EAAQulK,OAChB3zH,OAAQ5xC,EAAQ4xC,OAChBi/F,QAAS7wI,EAAQ6wI,QACjB9G,MAAO/pI,EAAQ+pI,MACfoP,WAAYn5I,EAAQm5I,WACpB1gB,OAAQz4H,EAAQy4H,OAExB,EAEOyjH,CACX,CAxDY,CAwDVT,GAEF5+E,EAAkBq/E,EAAO,CACrB/1O,SAAUuzJ,IAGd,IAAIgjF,EAAsB,SAAUxgN,EAAMl8B,EAASm8O,GAAc,OAAO96O,EAAW,CAAC,EAChFrB,EACA,CACIk8B,KAAMA,EACNigN,WAAYA,EACZriG,OAAQ59G,EAAK/O,MAAM2sH,OACnBj0I,QAASq2B,EAAK/O,MAAMtnB,QACpB+rC,OAAQ1V,EAAK/O,MAAMykB,OACnBi/F,QAAS30G,EAAK/O,MAAM0jH,QACpB00B,OAAQrpI,EAAK/O,MAAMo4I,OACnBx7B,MAAO7tG,EAAK/O,MAAM48G,MAClBpzH,OAAQulB,EAAK/O,MAAMxW,QAExB,EAECgmO,EAAW,SAAUjB,GACrB,SAASkB,IACLlB,EAAiBz6O,MAAMpI,KAAMsH,UACjC,CA2BA,OAzBKu7O,IAAmBkB,EAAS7wN,UAAY2vN,GAC7CkB,EAAS17O,UAAY5H,OAAO2mD,OAAQy7L,GAAoBA,EAAiBx6O,WACzE07O,EAAS17O,UAAUC,YAAcy7O,EAEjCA,EAAS17O,UAAUulK,WAAa,WAC5B,IAAIzmK,EAAUnH,KAAKmH,QACf68O,EAAc78O,EAAQ68O,YACtBljN,EAAO35B,EAAQ25B,KAEnB,IAAwB,IAApB35B,EAAQ6F,UAAsB8zB,EAC9B,OAAO,KAGX,IAAIqd,EAAQ1zB,EAAQknJ,MAAMI,WAAWjxI,EAAM35B,GAK3C,OAHAg3C,EAAMk0F,OAAO2xG,GAEb7lM,EAAMusH,eACCvsH,EAAM8iG,MACjB,EAEA8iG,EAAS17O,UAAUwW,cAAgB,WAC/B,OAAO7e,KAAK4tK,YAChB,EAEOm2E,CACX,CA/Bc,CA+BZnB,GAEF5+E,EAAkB8/E,EAAS,CACvB5yG,MAAOowB,EAAUrwE,OACjBy7E,OAAQ,CACJ3gK,MAAO,GAEXgtC,OAAQtuB,EAAQy4I,WAAW,GAC3BlrB,QAASvtH,EAAQy4I,WAAW,KAGhC,IAEI+gF,EAAW,SAAU/+O,EAAG+W,GACxB,OAAI/W,EAAEm+B,KAAKg+M,GAAKplO,EAAEonB,KAAKg+M,IAAO,EACnBn8O,EAAEm+B,KAAKg+M,GAAKplO,EAAEonB,KAAKg+M,GAEvBn8O,EAAEm+B,KAAK27M,GAAK/iO,EAAEonB,KAAK27M,EAC9B,EAEI5rB,EAAU,SAAUyvB,GACpB,SAASzvB,IACLyvB,EAAiBz6O,MAAMpI,KAAMsH,UACjC,CAsCA,OApCKu7O,IAAmBzvB,EAAOlgM,UAAY2vN,GAC3CzvB,EAAO/qN,UAAY5H,OAAO2mD,OAAQy7L,GAAoBA,EAAiBx6O,WACvE+qN,EAAO/qN,UAAUC,YAAc8qN,EAE/BA,EAAO/qN,UAAUulK,WAAa,WAC1B,IAAIzmK,EAAUnH,KAAKmH,QACf68O,EAAc78O,EAAQ68O,YACtB53L,EAAQjlD,EAAQilD,WAAqB,IAAVA,IAAoBA,EAAQ,IAC3D,IAAIjd,EAAOhoC,EAAQgoC,KAEnB,IAAwB,IAApBhoC,EAAQ6F,UAAsBo/C,EAAM5kD,OACpC,OAAO,KAGX,IAAI4G,EAAOg+C,EAAMvxC,KAAI,SAAUwoB,GAAQ,MAAO,CAC1CvC,KAAOuC,EAAK/O,OAAS+O,EAAK/O,MAAMwM,MAAS,GACzCwyJ,KAAM,CACFx+B,gBAAoCnW,IAAxBxvG,EAAK+0M,eAA+B/0M,EAAK+0M,eAAiB7gN,EAAK4tF,MAC3El6F,aAA8B4nH,IAArBxvG,EAAKg1M,YAA4Bh1M,EAAKg1M,YAAc9gN,EAAKtM,SAEtEsM,KAAMA,EACN,IAEJj1B,EAAK4N,KAAKioO,GAEV,IAAInuD,EAAS,IAAI+oD,EAAYl8O,EAAEI,OAAO,CAAC,EAAGoE,EAAS,CAACiH,KAAMA,KAI1D,OAHA0nL,EAAOzjD,OAAO2xG,GAEdluD,EAAOprB,eACAorB,EAAO70C,MAClB,EAEAmyE,EAAO/qN,UAAUwW,cAAgB,WAC7B,OAAO7e,KAAK4tK,YAChB,EAEOwlD,CACX,CA1Ca,CA0CXwvB,GAEF5+E,EAAkBovD,EAAQ,CACtBphC,QAAS,CAAEhlL,SAAS,GACpBmiC,KAAM,CACFzpC,KAxDG,OAyDHs1I,OAAQsmB,EAAUe,QAClBtrI,QAAS,GAEbzpB,SAAUg0J,EAAUnwE,OACpB+/C,MAAOowB,EAAUrwE,OACjBy7E,OAAQ,CACJ3gK,MAAO,KAIf,IAAIq4O,EAAO,OACPC,EAAO,OAEPC,EAAU,SAAUrtG,GACpB,SAASqtG,EAAOz4O,EAAS1E,EAAS+uL,GAC9Bj/C,EAAc1sI,KAAKvK,MAEnBA,KAAK+mO,WAAW7wC,GAChBl2L,KAAKukP,YAAYp9O,GACjBnH,KAAK4mO,aAAa/6N,GAClB7L,KAAKknO,eAED//N,GAAWA,EAAQiH,OACnBpO,KAAKonO,UACLpnO,KAAKwkP,sBAEb,CAgkBA,OA9jBKvtG,IAAgBqtG,EAAOpxN,UAAY+jH,GACxCqtG,EAAOj8O,UAAY5H,OAAO2mD,OAAQ6vF,GAAiBA,EAAc5uI,WACjEi8O,EAAOj8O,UAAUC,YAAcg8O,EAE/BA,EAAOj8O,UAAUrG,QAAU,WACvBhC,KAAKiK,SACLjK,KAAK2oO,kBACL3oO,KAAKykP,wBACT,EAEAH,EAAOj8O,UAAUu+N,aAAe,SAAuB/6N,GACnD7L,KAAK6L,QAAUA,EACf4e,EAAQpF,SAASxZ,EAAS,CAAE,UAAW,aACvCA,EAAQ8Z,aAAa,OAAQ,qBAC7B9Z,EAAQgrF,SAAWhrF,EAAQspB,aAAa,aAAe,EAEvD,IACIgpB,EADMn+C,KAAKmH,QACCg3C,MAEZA,EAAMrd,MACNj1B,EAAQ8Z,aAAa,aAAcw4B,EAAMrd,MAGzCqd,EAAM4rL,aACNl+N,EAAQ8Z,aAAa,uBAAwBw4B,EAAM4rL,YAE3D,EAEAua,EAAOj8O,UAAU6+N,aAAe,WACvBlnO,KAAK2hF,UACN3hF,KAAK2oO,kBACL3oO,KAAK0kP,sBACL1kP,KAAK2hF,QAAU3hF,KAAK2kP,iBAE5B,EAEAL,EAAOj8O,UAAUm8O,oBAAsB,WACnC,IAAIvxH,EAAWjzH,KAEXo2H,EAAW,IAAIwuH,gBAAe,SAAUC,GACxCA,EAAQvjP,SAAQ,SAAU8yH,GACtB,IAAI/B,EAAM+B,EAAM0wH,YACZ/4O,EAAQsmH,EAAItmH,MACZC,EAASqmH,EAAIrmH,OACbooH,EAAM/sH,SAAW4rH,EAASpnH,SACzBonH,EAASjjH,MAAQijH,EAASjjH,KAAKjE,QAAUA,GAASknH,EAASjjH,KAAKhE,SAAWA,IAGhFinH,EAASjjH,KAAO,CAAEjE,MAAOA,EAAOC,OAAQA,GACxCinH,EAAStxC,QAAQ/uD,QAAQqgG,EAASjjH,MAClCijH,EAAS9oG,QAAS,EAClB8oG,EAASm0G,UACb,GACJ,IACApnO,KAAK+kP,gBAAkB3uH,EACvBA,EAASygB,QAAQ72I,KAAK6L,QAC1B,EAEAy4O,EAAOj8O,UAAUs8O,eAAiB,WAC9B,OAAOj6N,EAAQwsH,QAAQ9vF,OAAOpnD,KAAKiiF,eAAgB,CAC/C+iK,WAAYhlP,KAAK0mH,YAAYl9G,KAAKxJ,MAClCilP,WAAYjlP,KAAK2mH,YAAYn9G,KAAKxJ,MAClCgqB,UAAWhqB,KAAKs3I,WAAW9tI,KAAKxJ,MAChCkqB,MAAOlqB,KAAK+iF,OAAOv5E,KAAKxJ,OAEhC,EAEAskP,EAAOj8O,UAAU0+N,WAAa,SAAqB7wC,GAC/C,IAAIgvD,EAAehvD,GAASl2L,KAAKk2L,OAAS,CAAC,EAC3Cl2L,KAAKk2L,MAAQgvD,EACbllP,KAAKmH,QAAUqB,EAAW,CAAC,EAAG08O,EAAcllP,KAAKmH,QACrD,EAEAm9O,EAAOj8O,UAAU88O,gBAAkB,SAA0BpuN,GACzD,IAAIk8F,EAAWjzH,KAEfA,KAAKolP,aAAa9jP,SAAQ,SAAUgzO,GAChCrhH,EAAS6uB,WAAWwyF,EAAMv9M,EAASu9M,EAAK+Q,YAAYtuN,QACxD,GACJ,EAEAutN,EAAOj8O,UAAUi9O,0BAA4B,SAAoC5uD,GAC7E,IAAIzjE,EAAWjzH,KAEfA,KAAKolP,aAAa9jP,SAAQ,SAAUgzO,GAChCrhH,EAAS6uB,WAAWwyF,EAAM59C,EAAiB49C,EAAK+Q,YAAY15E,UAAU+qB,gBAC1E,GACJ,EAEA4tD,EAAOj8O,UAAUy5I,WAAa,SAAqBwyF,EAAMv9M,EAASwuN,GAC9DjR,EAAKntO,QAAQ+oB,IAAI,SAAUvtB,EAAEI,OAAO,CAAC,EAAGuxO,EAAKntO,QAAQy4H,OACjD,CAAC7oG,QAAS+/F,EAAQyuH,GAAaA,EAAYxuN,IACnD,EAEAutN,EAAOj8O,UAAU+B,QAAU,SAAkBhI,EAAMf,GAC/C,IAAI8e,EAAQxd,EAAEI,OAAO,CAAC,EAAG1B,EACrB,CAACqE,KAAMtD,EACPojP,WAAYnkP,EAAGwK,QAAQnG,KACvB+4D,SAAUp9D,EAAGwK,QAAQ4yD,WAEzB,OAAOw4E,EAAc5uI,UAAU+B,QAAQG,KAAKvK,KAAMoC,EAAM+d,EAC5D,EAEAmkO,EAAOj8O,UAAUq+G,YAAc,SAAsBrlH,GACjD,IAAIwK,EAAUxK,EAAGwK,QACb45O,EAAS55O,EAAQnG,OAAS0+O,EAC1BsB,EAAS75O,EAAQnG,OAAS2+O,EAC1BsB,EAAe7yO,QAAQjH,EAAQk/J,cAAgBl/J,EAAQk/J,aAAa5jK,QAAQk8B,MAEhF,KAAKoiN,GAAUzlP,KAAKoK,QAAQ,YAAa/I,IACpCqkP,GAAU1lP,KAAKoK,QAAQ,YAAa/I,IADzC,CAKA,IACIsqK,EADM3rK,KAAKmH,QAAQu4O,MACH/zE,UACpB,GAAI85E,EACAzlP,KAAKslP,0BAA0B35E,EAAU+qB,iBACzC12L,KAAK8hJ,WAAWj2I,EAAS8/J,EAAU50I,QAASlrB,EAAQw5O,YAAY15E,UAAU50I,cACvE,GAAI2uN,EACP1lP,KAAK4lP,eAAe/5O,EAAS8/J,QAC1B,GAAIg6E,EAAc,CACrB,IAAIE,EAAa7lP,KAAK8lP,aAAa71N,IAAIpkB,EAAQk/J,aAAa5jK,QAAQk8B,KAAKhT,IACzErwB,KAAK4lP,eAAeC,EAAYl6E,EACpC,CAZA,CAaJ,EAEA24E,EAAOj8O,UAAUs+G,YAAc,SAAsBtlH,GACjD,IAAI4xH,EAAWjzH,KAEX6L,EAAUxK,EAAGwK,QACb45O,EAAS55O,EAAQnG,OAAS0+O,EAC1BsB,EAAS75O,EAAQnG,OAAS2+O,EAC1BsB,EAAe7yO,QAAQjH,EAAQk/J,cAAgBl/J,EAAQk/J,aAAa5jK,QAAQk8B,MAC5Eh8B,EAAShG,EAAGkoB,cAAc+R,cAE1BmqN,GAAUp+O,GAA8B,SAApBA,EAAO8wB,YAI3BstN,GAAUC,KACN1lP,KAAK+lP,iBACLzrN,aAAat6B,KAAK+lP,gBAClB/lP,KAAK+lP,eAAiB,MAE1B/lP,KAAKgmP,cAAe,EACpBhmP,KAAKoK,QAAQ,cAAe/I,IAG3BokP,GAAUzlP,KAAKoK,QAAQ,YAAa/I,IACpCqkP,GAAU1lP,KAAKoK,QAAQ,YAAa/I,KAIrCokP,GAAUC,GAAUC,IACpB3lP,KAAKolP,aAAa9jP,SAAQ,SAAUgzO,GAChCrhH,EAAS6uB,WAAWwyF,EAAMrhH,EAAS9rH,QAAQu4O,MAAM3oN,QAASu9M,EAAK+Q,YAAYtuN,QAC/E,IAER,EAEAutN,EAAOj8O,UAAUivI,WAAa,SAAqBj2I,GAC/C,IAAI4xH,EAAWjzH,KAEXqyH,EAAMryH,KAAKmH,QAAQ83J,QACnBgnF,EAAgB5zH,EAAI4zH,cACpB3gN,EAAQ+sF,EAAI/sF,MACZz5B,EAAUxK,EAAGwK,QACbq6O,EAAgBr6O,EAAQnG,KAE5B,KAAKwgP,IAAkB9B,GAAQ8B,IAAkB7B,GAAUrkP,KAAKgmP,eAAiBC,GAAjF,CAIA,IAAIE,EAAa9kP,EAAGkoB,cAChB+iE,EAAOtsF,KAAK6L,QAAQqtH,wBACpBktH,EAASD,EAAWz8N,QAAU4iE,EAAK9/D,KAAO8/D,EAAKvgF,MAAQ,EACvDs6O,EAAQF,EAAWx8N,QAAU2iE,EAAKpnE,IAAMonE,EAAKtgF,OAAS,EAa1D,GAXA3K,EAAGilP,YAAc,CACbC,YAAa,CACT/5N,KAAM25N,EAAWnjK,MACjB99D,IAAKihO,EAAWljK,OAEpBujK,WAAY,CACR9zM,WAAY0zM,EAAS,OAAS,QAC9B5zM,SAAU6zM,EAAQ,MAAQ,WAI9BH,IAAkB7B,EAAM,CACxB,IAAI3xG,EAAQ7mI,EAAQ4yD,SAChB4gL,EAAc3sG,EAAM2sG,YACpBD,EAAc1sG,EAAM0sG,YACpBM,EAAQN,EAAY53O,OAAS43O,EAAcC,EAC/Ch+O,EAAGyiC,UAAY47M,EAAM37L,QAAO,SAAUlP,EAAKy/L,GAAQ,OAAOz/L,EAAMy/L,EAAK5rO,KAAO,GAAG,EACnF,CAEI1I,KAAK+lP,iBACLzrN,aAAat6B,KAAK+lP,gBAClB/lP,KAAK+lP,eAAiB,MAG1B,IAAIU,EAAYR,GAAiBjmP,KAAKgmP,aAAe,EAAI1gN,EAEzDtlC,KAAK+lP,eAAiB7sN,YAAW,WAC7B+5F,EAAS7oH,QAAQ,cAAe/I,GAChC4xH,EAAS+yH,cAAe,EACxB/yH,EAAS8yH,eAAiB,IAC9B,GAAGU,EArCH,CAsCJ,EAEAnC,EAAOj8O,UAAU06E,OAAS,SAAiB1hF,GACvC,IAAIwK,EAAUxK,EAAGwK,QACb45O,EAAS55O,EAAQnG,OAAS0+O,EACjBv4O,EAAQnG,OAAS2+O,EAG1BrkP,KAAKoK,QAAQ,YAAa/I,GACnBokP,GACPzlP,KAAKoK,QAAQ,YAAa/I,EAElC,EAEAijP,EAAOj8O,UAAUu9O,eAAiB,SAAyBviN,EAAMsoI,GAC7D,IAAI14C,EAAWjzH,KAEXqjC,IACArjC,KAAKslP,0BAA0B35E,EAAU+qB,iBACzCrzJ,EAAKq8M,MAAMp+O,SAAQ,SAAUgzO,GACzBrhH,EAAS6uB,WAAWwyF,EAAM3oE,EAAU50I,QAASu9M,EAAK+Q,YAAY15E,UAAU50I,QAC5E,IAER,EAEAutN,EAAOj8O,UAAUsgO,gBAAkB,WAC3B3oO,KAAK2hF,UACL3hF,KAAK2hF,QAAQ3/E,UACbhC,KAAK2hF,QAAU,KACf3hF,KAAK0mP,yBAEb,EAEApC,EAAOj8O,UAAUo8O,uBAAyB,WAClCzkP,KAAK+kP,kBACL/kP,KAAK+kP,gBAAgB4B,aACrB3mP,KAAK+kP,gBAAkB,KAE/B,EAEAT,EAAOj8O,UAAUq8O,oBAAsB,WAC9B1kP,KAAKiiF,iBACNjiF,KAAKiiF,eAAiBtyE,SAASkP,cAAc,OAC7C7e,KAAK6L,QAAQoT,YAAYjf,KAAKiiF,gBAEtC,EAEAqiK,EAAOj8O,UAAUq+O,uBAAyB,WAClC1mP,KAAKiiF,gBAAkBjiF,KAAKiiF,eAAez7D,aAC3CxmB,KAAKiiF,eAAez7D,WAAWpH,YAAYpf,KAAKiiF,gBAChDjiF,KAAKiiF,eAAiB,KAE9B,EAEAqiK,EAAOj8O,UAAU6pB,WAAa,SAAqB/qB,EAAS+uL,GACxDl2L,KAAKukP,YAAYp9O,GACjBnH,KAAK+mO,WAAW7wC,GAChBl2L,KAAKknO,eACLlnO,KAAKonO,SACT,EAEAkd,EAAOj8O,UAAU++N,QAAU,WACvBpnO,KAAK2hF,QAAQnrB,QAEb,IAAI67D,EAAMryH,KAAK4mP,WACX76O,EAAQsmH,EAAItmH,MACZC,EAASqmH,EAAIrmH,OACjBhM,KAAKgQ,KAAO,CAAEjE,MAAOA,EAAOC,OAAQA,GACpChM,KAAK2hF,QAAQ/uD,QAAQ5yB,KAAKgQ,MAE1BhQ,KAAK2qK,eAEL3qK,KAAK2hF,QAAQ81D,KAAKz3I,KAAKihJ,OAC3B,EAEAqjG,EAAOj8O,UAAUu+O,SAAW,WACxB,OAAO5mP,KAAK6L,QAAQqtH,uBACxB,EAEAorH,EAAOj8O,UAAUsiK,aAAe,WAC5B3qK,KAAKihJ,OAASjhJ,KAAK6mP,SACvB,EAEAvC,EAAOj8O,UAAUy+O,SAAW,SAAmB3oM,EAAO6lM,GAClD,OAAK7lM,IAA2B,IAAlBA,EAAMnxC,SAAsBmxC,EAAMrd,KAI7B,IAAIgjN,EAAQnhP,EAAEI,OAAO,CAAC,EAAG,CAACihP,YAAaA,GAAc7lM,IACzCi5F,eACZ2zB,aAAazxH,IALrB,IAMf,EAEAgrM,EAAOj8O,UAAU2rN,UAAY,SAAoB7sN,EAASilD,EAAO43L,GAC7D,OAAK78O,IAA+B,IAApBA,EAAQ6F,QAIX,IAAIomN,EAAOzwN,EAAEI,OAAO,CAAC,EAAG,CAACqpD,MAAOA,GAAQjlD,EAAS,CAAC68O,YAAaA,KAClD5sG,eAEN2zB,aAAazxH,IANtB,IAOf,EAEAgrM,EAAOj8O,UAAU65O,gBAAkB,SAA4B6E,EAAaC,GACxE,IAAI7oM,EAAQ6oM,EAAc7oM,MACtB23I,EAASkxD,EAAclxD,OACvB1nL,EAAO44O,EAAc54O,KACrBg+C,EAAQ46L,EAAc56L,MACtBgpH,EAAS4xE,EAAc5xE,OACvB2tE,EAAaiE,EAAcjE,WAE3BhD,GADoBiH,EAAcC,kBAGlCC,EAAY,IAAIngF,EAAI,EAAG,EAAGggF,EAAYh7O,MAAOg7O,EAAY/6O,QACzD86O,EAAW9mP,KAAK8mP,SAAS3oM,EAAO+oM,GAEhCC,EAAaD,EAAU9/O,QAE3B,GAAI0/O,EAAU,CACV,IAAIM,EAAcN,EAAS96O,SACvBmyC,EAAM7wC,WAAag0J,EAAUpwE,KAC7Bg2J,EAAUz/E,MAAM,CAAEviJ,IAAKkiO,IACvBD,EAAa,IAAIpgF,EAAI,EAAGqgF,EAAaL,EAAYh7O,MAAOg7O,EAAY/6O,UAEpEk7O,EAAU5/E,OAAO,EAAG8/E,GACpBD,EAAa,IAAIpgF,EAAI,EAAG,EAAGggF,EAAYh7O,MAAOg7O,EAAY/6O,OAASo7O,GAE3E,CAEA,IAAIpzB,EAAYh0N,KAAKg0N,UAAUl+B,EAAQ1nL,EAAKg+C,MAAO+6L,GAC/CnY,EAAkBl5C,GAAUA,EAAOxoL,UAAa8lN,EAAO/qN,UAAUlB,QAAQmG,SAEzE0mN,IACIgb,IAAmB1tE,EAAUl2I,MAC7B87N,EAAUz/E,MAAM,CAAEj7I,KAAMwnM,EAAUjoN,UAGlCijO,IAAmB1tE,EAAUh2I,OAC7B47N,EAAU5/E,OAAO0sD,EAAUjoN,QAAS,GAGpCijO,IAAmB1tE,EAAUpwE,KAC7Bg2J,EAAUz/E,MAAM,CAAEviJ,IAAK8uM,EAAUhoN,WAGjCgjO,IAAmB1tE,EAAUnwE,QAC7B+1J,EAAU5/E,OAAO,EAAG0sD,EAAUhoN,WAItC,IAAIqmH,EAAM6vH,EAAgBv/O,EAAEI,OAAO,CAAC,EAAGgkP,EAAa,CAACx/J,QAAS,EAAGC,QAAS,EAAGz7E,MAAOm7O,EAAUn7O,QAASC,OAAQk7O,EAAUl7O,YACrHq7O,EAAkBh1H,EAAIjmE,MACtB+zL,EAAgB9tH,EAAI8tH,cACxB,GAAIA,EAEA,OADAjvO,QAAQC,KAAK,kFACN,CAAEm2O,OAAQ,CAAEl7L,MAAO,GAAIszL,MAAO,GAAIS,cAAeA,GAAiBnsB,UAAWA,EAAW8yB,SAAUA,GAG7G,IAAIxtM,EAAM,IAAIytH,EAEdsgF,EAAgB/lP,SAAQ,SAAUimP,EAAQhgP,GACtC,IAAIigP,EAAUxE,EAAmBuE,EAAQn7L,EAAO22L,EAAYx7O,GACxDkgP,EAAe,IAAIx8K,EAAKu8K,GAC5BluM,EAAI3sB,KAAKlC,EAAQimJ,UAAU+2E,EAAarwG,eAAexV,YAEvD,IACI8lH,EADgB,IAAIrE,EAAMQ,EAAoB0D,EAAQnyE,EAAQ8xE,EAAUn7O,UAC5CqrI,eAC5BswG,GACApuM,EAAI3sB,KAAKlC,EAAQimJ,UAAUg3E,EAAY9lH,WAE/C,IAEA,IAAIr6C,EAAU2/J,EAAUjpK,GACpBuJ,EAAU0/J,EAAUhpK,GAEpBnyE,EAAQm7O,EAAUn7O,QAAUw7E,EAC5Bv7E,EAASk7O,EAAUl7O,SAAWw7E,EAQlC,GANAz7E,GAASutC,EAAI6kC,GAAK+oK,EAAUn7O,QAAUutC,EAAI6kC,GAAK+oK,EAAUn7O,QAAU,EACnEC,GAAUstC,EAAI8kC,GAAK8oK,EAAUl7O,SAAWstC,EAAI8kC,GAAK8oK,EAAUl7O,SAAW,EAEtEu7E,GAAWjuC,EAAI2kC,GAAK,GAAK3kC,EAAI2kC,GAAK,EAClCuJ,GAAWluC,EAAI4kC,GAAK,GAAK5kC,EAAI4kC,GAAK,GAEf,IAAf6hK,EACA,MAAO,CACHuH,OAAQpF,EAAgBv/O,EAAEI,OAAO,CAAC,EAAGgkP,EAAa,CAACx/J,QAASA,EAASC,QAASA,EAASz7E,MAAOA,EAAOC,OAAQA,EAAQ+zO,YAAY,KACjI/rB,UAAWA,EACX8yB,SAAUA,GAIlB,GAAI9mP,KAAKmqB,QAAU41N,GAAc//O,KAAK2nP,YAElC,OADA3nP,KAAKmqB,QAAS,EACP,CACHm9N,OAAQpF,EAAgBv/O,EAAEI,OAAO,CAAC,EAAGgkP,EAAa,CAACx/J,QAASA,EAASC,QAASA,EAASz7E,MAAOA,EAAOC,OAAQA,GAAShM,KAAK2nP,cAC3H3zB,UAAWA,EACX8yB,SAAUA,GAoBlB,IAhBA,IAEIc,EAAgB1F,EAAgBv/O,EAAEI,OAAO,CAAC,EAAGgkP,EAAa,CAACx/J,QAASA,EAASC,QAASA,EAASz7E,MAAOA,EAAOC,OAAQA,EAAQ+zO,YAAY,KAASM,QAAQ74O,OAC1Ju/C,EAAU,GAEV4gM,EAAc,SAAU9H,EAAmBxpO,GAC3C,IACIwxO,EA3zBG,SAAUnI,GAIzB,IAHA,IA+BeoI,EAAOC,EAClBp1L,EACAC,EACAo1L,EACAC,EAnCAv/O,EAAQ,EACRw/O,EAAcxI,EAAMl4O,OAEfD,EAAI,EAAGA,EAAI2gP,EAAa3gP,IAG7B,IAFA,IAAI+sO,EAAOoL,EAAMn4O,GAER4gP,EAAQ5gP,EAAI,EAAG4gP,EAAQD,EAAaC,IAAS,CAClD,IAAIC,EAAW1I,EAAMyI,GAwBPJ,EAtBMK,EAuBxBz1L,SACAC,SACAo1L,SACAC,SAHAt1L,EAAKwvL,GADM2F,EAtBOxT,GAuBW+M,GAAIyG,EAAM9I,GAAI8I,EAAM7pK,GAAI6pK,EAAM5pK,GAAI6pK,EAAM9pK,GAAI8pK,EAAM7pK,IAC/EtrB,EAAKuvL,EAAkB2F,EAAMzG,GAAIyG,EAAM9I,GAAI8I,EAAM7pK,GAAI6pK,EAAM5pK,GAAI6pK,EAAM1G,GAAI0G,EAAM/I,IAC/EgJ,EAAK7F,EAAkB2F,EAAMzG,GAAIyG,EAAM9I,GAAI+I,EAAM1G,GAAI0G,EAAM/I,GAAI+I,EAAM9pK,GAAI8pK,EAAM7pK,IAC/E+pK,EAAK9F,EAAkB2F,EAAM7pK,GAAI6pK,EAAM5pK,GAAI6pK,EAAM1G,GAAI0G,EAAM/I,GAAI+I,EAAM9pK,GAAI8pK,EAAM7pK,IAE5EvrB,IAAOC,GAAMo1L,IAAOC,IA3Bfv/O,GAASrF,KAAKqT,IAAI49N,EAAK5rO,MAAO0/O,EAAS1/O,OAE/C,CAGJ,OAAOA,CACX,CA0yB0B2/O,CADCnG,EAAgBv/O,EAAEI,OAAO,CAAC,EAAGgkP,EAAa,CAACx/J,QAASA,EAASC,QAASA,EAASz7E,MAAOA,EAAOC,OAAQA,EAAQ8zO,MALpH,EAKkID,kBAAmBA,EAAmBxpO,QAASA,KACrJqpO,OAMpC,OALA34L,EAAQplD,KAAK,CACTkmP,QAASA,EACTxxO,QAASA,EACTwpO,kBAAmBA,IAEJ,IAAZgI,CACX,EAESvuO,EAhBS,EAgBYA,GAASsuO,EAAgB,KAC/CD,EAAYruO,GAAO,KAAUquO,EAAYruO,GAAO,IADEA,KAM1D,IAAIgvO,EAAajlP,KAAKqT,IAAItO,MAAM,KAAM2+C,EAAQlsC,KAAI,SAAUq3G,GAAK,OAAOA,EAAE21H,OAAS,KAC/EU,EAAaxhM,EAAQ5wB,MAAK,SAAU+7F,GAAK,OAAOA,EAAE21H,UAAYS,CAAY,IAI9E,OAHAtoP,KAAK2nP,YAAc,CAAE9H,kBAAmB0I,EAAW1I,kBAAmBxpO,QAASkyO,EAAWlyO,SAGnF,CACHixO,OAHSpF,EAAgBv/O,EAAEI,OAAO,CAAC,EAAGgkP,EAAa,CAACx/J,QAASA,EAASC,QAASA,EAASz7E,MAAOA,EAAOC,OAAQA,GAAShM,KAAK2nP,cAI5H3zB,UAAWA,EACX8yB,SAAUA,EAElB,EAEAxC,EAAOj8O,UAAUw+O,QAAU,SAAkB1/O,EAAS60B,GAClD,IAAIgrN,EAAgB7/O,GAAWnH,KAAKmH,QAChCqhP,EAAgBxsN,GAAWh8B,KAE3BoO,EAAO44O,EAAc54O,KACrB+nK,EAAe6wE,EAAc5xE,OAC7BqqE,EAAeuH,EAAc56L,MAC7Bi5L,EAAc2B,EAActH,MAC5BqD,EAAaiE,EAAcjE,WAC3B5kM,EAAQ6oM,EAAc7oM,MACtB23I,EAASkxD,EAAclxD,OACvBzjE,EAAMm2H,EAAcx4O,KACpBjE,EAAQsmH,EAAItmH,MACZC,EAASqmH,EAAIrmH,OAEb+6O,EAAcpkP,EAAEI,OAAO,CAAC,EAAGqL,EAAM,CAACrC,MAAOA,EAAOC,OAAQA,EAAQyzO,aAAcA,EAActhM,MAAOA,EAAO23I,OAAQA,IAClHpjD,EAAQ1yI,KAAKkiP,gBAAgB6E,EAAaC,GAC1CM,EAAS50G,EAAM40G,OACfR,EAAWp0G,EAAMo0G,SACjB9yB,EAAYthF,EAAMshF,UAClB5nK,EAAQk7L,EAAOl7L,MACfszL,EAAQ4H,EAAO5H,MAEfz+F,EAAS,IAAIv2H,EAAQ+lH,MAAM,CAC3Bv2F,KAAMxvB,EAAQ6jH,KAAKc,SAAS,IAAI1N,EAAS1E,KAAK,CAAC,EAAG,GAAI,CAAClxH,EAAOC,OAGlE,GAAI86O,EAAU,CACV,IACI2B,EADe,IAAI3E,EAAQnhP,EAAEI,OAAO,CAAC,EAAGo7C,EAAO,CAAC6lM,YAAa8C,KAClC1vG,eAC/B6J,EAAO9mG,OAAOsuM,EAClB,CAEA,GAAInB,EAAOnH,cACP,OAAOl/F,EAGX,IAAIynG,EAAc,IAAIllF,IACtBglF,EAAc1C,aAAe4C,EAE7Bt8L,EAAM9qD,SAAQ,SAAU+hC,EAAM97B,GAC1B,IAAIigP,EAAUxE,EAAmB3/M,EAAMo8M,EAAcsD,EAAYx7O,GAG7Ds+O,EADe,IAAI56K,EAAKu8K,GACEpwG,eAC9ByuG,EAAWnG,MAAQ,GACnBmG,EAAWngP,KAAO2+O,EAElBhhN,EAAK4tF,MAAQu2H,EAAQv2H,MACrB5tF,EAAKtM,QAAUywN,EAAQzwN,QAEvB8uN,EAAWpnL,SAAW97D,EAAEI,OAAO,CAAC,EAAGqL,EAAKg+C,MAAM7kD,GAC1C,CAAC0pH,MAAOu2H,EAAQv2H,MAChBl6F,QAASywN,EAAQzwN,QACjBsoN,YAAah8M,EAAKg8M,YAAYxkO,KAAI,SAAUy5N,GAAQ,MAAO,CAAGsM,SAAUtM,EAAKsM,SAAUC,SAAUvM,EAAKuM,SAAUn4O,MAAO4rO,EAAK5rO,MAAU,IACtI02O,YAAa/7M,EAAK+7M,YAAYvkO,KAAI,SAAUy5N,GAAQ,MAAO,CAAGsM,SAAUtM,EAAKsM,SAAUC,SAAUvM,EAAKuM,SAAUn4O,MAAO4rO,EAAK5rO,MAAU,MAC1IggP,EAAYx4N,IAAImT,EAAKhT,GAAIw1N,GAEzB5kG,EAAO9mG,OAAO0rM,EAClB,IAEA,IAAI8C,EAAcjJ,EAAM74O,QAAQmV,MAAK,SAAU9W,EAAG+W,GAAK,OAAOA,EAAEvT,MAAQxD,EAAEwD,KAAO,IAE7E08O,EAAe,GACnBoD,EAAcpD,aAAeA,EAE7BuD,EAAYrnP,SAAQ,SAAUgzO,GAC1B,IAAIzmO,EAASymO,EAAKzmO,OACdxG,EAASitO,EAAKjtO,OACduhP,EAAaF,EAAYz4N,IAAIpiB,EAAOwiB,IACpCw4N,EAAaH,EAAYz4N,IAAI5oB,EAAOgpB,IACpCy4N,EA3uBS,SAAUxU,EAAMntO,EAASyhP,EAAYC,GAC1D,IAAIxD,EAAc78O,EAAW,CAAC,EAC1BrB,EACA,CACImtO,KAAMA,EACNv9M,QAASu9M,EAAKv9M,QACdk6F,MAAOqjH,EAAKrjH,MACZ83H,UAAWzU,EAAKyU,UAChB9nG,OAAQqzF,EAAKrzF,OACb0qB,UAAW2oE,EAAK3oE,YAUxB,MAN8B,WAA1B05E,EAAY0D,UACZ1D,EAAYp0H,MAAQ23H,EAAWzhP,QAAQusB,KAAKu9F,MACX,WAA1Bo0H,EAAY0D,YACnB1D,EAAYp0H,MAAQ43H,EAAW1hP,QAAQusB,KAAKu9F,OAGzCo0H,CACX,CAutB0B2D,CAAmB1U,EAAM+Q,EAAauD,EAAYC,GAE5DI,EADe,IAAI/F,EAAK4F,GACE1xG,eAE9B6xG,EAAWvjP,KAAO0+O,EAClB6E,EAAWxqL,SAAW,CAClB5wD,OAAQlL,EAAEI,OAAO,CAAC,EAAG6lP,EAAWnqL,UAChCp3D,OAAQ1E,EAAEI,OAAO,CAAC,EAAG8lP,EAAWpqL,UAChC/1D,MAAO4rO,EAAK5rO,OAEhBugP,EAAW5D,YAAcyD,EACzB1D,EAAazjP,KAAKsnP,GAElBL,EAAWlJ,MAAM/9O,KAAKsnP,GACtBJ,EAAWnJ,MAAM/9O,KAAKsnP,GAEtBhoG,EAAO9mG,OAAO8uM,EAClB,IAEA,IAAIC,EAAe98L,EAAMrI,QAAO,SAAUlP,EAAKxR,GAAQ,OAAOhgC,KAAK8V,IAAI07B,EAAKxR,EAAK46C,GAAK,GAAG,GAWzF,GAVA7xB,EAAM9qD,SAAQ,SAAU+hC,GACpB,IAAI8lN,EAAUtF,EAAoBxgN,EAAM8yI,EAAc+yE,GAElDxB,EADgB,IAAIrE,EAAM8F,GACE/xG,eAE5BswG,GACAzmG,EAAO9mG,OAAOutM,EAEtB,IAEI1zB,EAAW,CACX,IACIo1B,EADgB,IAAIh2B,EAAOzwN,EAAEI,OAAO,CAAC,EAAG+yL,EAAQ,CAACkuD,YAAahwB,EAAW5nK,MAAOA,KACnDgrF,eACjC6J,EAAO9mG,OAAOivM,EAClB,CAEA,OAAOnoG,CACX,EAEAqjG,EAAOj8O,UAAU+uI,aAAe,SAAuB4yF,GACnD,IAAI7iO,EAAW6iO,GAAiBA,EAAc7iO,QAC1CqB,EAAW,CAAC,EAAGxI,KAAKmH,QAAS6iO,EAAc7iO,SAAWnH,KAAKmH,QAE3D60B,EAAU,CACVhsB,KAAM,CACFjE,MAAO+qH,EAAQkzG,GAAiBA,EAAcj+N,OAASi+N,EAAcj+N,MAAQ/L,KAAKgQ,KAAKjE,MACvFC,OAAQ8qH,EAAQkzG,GAAiBA,EAAch+N,QAAUg+N,EAAch+N,OAAShM,KAAKgQ,KAAKhE,SAIlG,OAAOhM,KAAK6mP,QAAQ1/O,EAAS60B,EACjC,EAEAsoN,EAAOj8O,UAAUk8O,YAAc,SAAsBp9O,GACjDnH,KAAKmH,QAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAASA,EAChD,EAEOm9O,CACX,CA9kBa,CA8kBX75N,EAAQnhB,YAEV06J,EAAkBsgF,EAAQ,CACtBnmM,MAAO,CACH7wC,SAAUg0J,EAAUpwE,KAExBkkF,OAAQ,CACJpoK,SAAS,EACT+rC,OAAQ,CACJvsB,KAAM,EACNC,MAAO,GAEXurH,QAAS,EACT00B,OAAQ,CACJ3gK,MAAO,GAEXu0I,WAAY,SACZ1gB,OAAQ,CACJ4O,SAAU,QACVziI,MAAO,GAEXmlI,MAAOowB,EAAUl2I,KACjBtN,OAAQ,CAAE0O,KAAM,EAAGtH,IAAK,IAE5BknC,MAAO,CACHrgD,MAAO,GACPisI,QAAS,GACTjhH,QAAS,EACTm6G,MAAO,UACPpzH,OAAQ,CAAE0O,KAAM,EAAGtH,IAAK,IAE5Bw6N,MAAO,CACHqJ,UAAW,SACXhyN,QAAS,GACT40I,UAAW,CACP50I,QAAS,GACT2/J,gBAAiB,KAGzBz3B,QAAS,CACLgnF,eAAe,EACf3gN,MAAO,OAqDf3kC,MAAM6H,WAAW7H,MAAM8pB,QAAS,CAC5B65N,OAAQA,EACR+E,iBAnDmB,SAAUj7O,EAAMukB,EAAY4yD,GAC/C,IAAIn5B,EAAQ,IAAI+4G,IACZu6E,EAAQ,IAAIl8E,IACZ8lF,EAAW,IAAI9lF,IAEnBp1J,EAAK9M,SAAQ,SAAU+jK,GACnB1yI,EAAWrxB,SAAQ,SAAUolF,GACzBt6B,EAAM5+C,IAAIk5E,EAAUh+E,MAAM28J,GAC9B,IAEA,IAAK,IAAI99J,EAAI,EAAGA,EAAIorB,EAAWnrB,OAAS,EAAGD,IAAK,CAC5C,IAAIsG,EAAS8kB,EAAWprB,GAAGmB,MAAM28J,GAC7Bh+J,EAASsrB,EAAWprB,EAAI,GAAGmB,MAAM28J,GACjCvzJ,EAAMjE,EAAS,IAAMxG,EACrBqB,EAAQ68E,EAAQ78E,MAAM28J,GACtBkkF,EAAgB7J,EAAMzvN,IAAIne,QAER6sI,IAAlB4qG,EACA7J,EAAMxvN,IAAIpe,EAAKy3O,EAAgB7gP,IAE/Bg3O,EAAMxvN,IAAIpe,EAAKpJ,GACf4gP,EAASp5N,IAAIpe,EAAK,CAAEjE,OAAQA,EAAQxG,OAAQA,IAEpD,CACJ,IAEA,IAAImiP,EAAU,IAAIhmF,IACdimF,EAAavmP,MAAM6Y,KAAKqwC,GAAOvxC,KAAI,SAAUwoB,EAAM/pB,GAEnD,OADAkwO,EAAQt5N,IAAImT,EAAM/pB,GACX,CAAE+W,GAAI/W,EAAOgb,MAAO,CAAEwM,KAAMzuB,OAAOgxB,IAC9C,IAEIqmN,EAAaxmP,MAAM6Y,KAAK2jO,GAAO7kO,KAAI,SAAUw3G,GAC7C,IAAIvgH,EAAMugH,EAAI,GACV3pH,EAAQ2pH,EAAI,GAEZqgB,EAAQ42G,EAASr5N,IAAIne,GACrBjE,EAAS6kI,EAAM7kI,OACfxG,EAASqrI,EAAMrrI,OACnB,MAAO,CACHu5O,SAAU4I,EAAQv5N,IAAIpiB,GACtBgzO,SAAU2I,EAAQv5N,IAAI5oB,GACtBqB,MAAOA,EAEf,IAEA,MAAO,CAAE0jD,MAAOq9L,EAAY/J,MAAOgK,EACvC,GAOC,CAz7CD,CAy7CG5oP,OAAOH,MAAM+G,QAEhB,SAAU/E,GACN,IAAIhC,EAAQG,OAAOH,MACfywB,EAASzwB,EAAM4pB,GAAG6G,OAElB29C,EAASpuE,EAAM4tB,WACfoqH,EAAY,UACZgxG,EAA0B,GAAGhxG,0CAE7BixG,EAAc9oN,GAAS,SAAS63G,qBAAoC73G,WACpE+oN,EAAU54H,GAAU,QAAQ0nB,mDAA2D1nB,oDACvF64H,EAAmB,CACnBzmN,KAAM,UAASo7B,SAAEA,EAAQ/1D,MAAEA,IACvB,MAAMuoH,MAAEA,EAAK38F,MAAEA,GAAUmqC,EACzB,MAAO,QACKkrL,2BACNE,EAAO54H,2BACP24H,EAAW76K,EAAOz6C,EAAMwM,+BACxB8oN,EAAWlhP,4BAGrB,EACA4rO,KAAM,UAAS71K,SAAEA,EAAQ/1D,MAAEA,IACvB,MAAMmF,OAAEA,EAAMxG,OAAEA,GAAWo3D,EAC3B,MAAO,QACKkrL,2BACNE,EAAOh8O,EAAOojH,+BACd24H,EAAW76K,EAAOlhE,EAAOymB,MAAMwM,+BAC/B8oN,EAAWjpP,EAAM4pB,GAAG+tE,KAAK,CAAEA,KAAM,yCACjCuxJ,EAAOxiP,EAAO4pH,+BACd24H,EAAW76K,EAAO1nE,EAAOitB,MAAMwM,+BAC/B8oN,EAAWlhP,4BAGrB,GAGAqhP,EAAgB34N,EAAOruB,OAAO,CAC9BoF,KAAM,SAAS0D,EAAS1E,GACpBnH,KAAKmH,QAAUA,EAEfiqB,EAAOrpB,GAAGI,KAAKoC,KAAKvK,KAAM6L,GAE1B7L,KAAK6L,QAAQwZ,SAAS,oDACjB80B,OAAO,wCAChB,EAEAnqC,KAAM,WACF,MAAO,CACHjE,MAAO/L,KAAK6L,QAAQM,aACpBH,OAAQhM,KAAK6L,QAAQO,cAE7B,EAEA49O,WAAY,SAASrjM,GACjB3mD,KAAK6L,QAAQsqB,KAAK,sBAAsB9lB,KAAKs2C,GAC7C3mD,KAAK6L,QAAQsqB,KAAK,IAAIwiH,MAAc31I,MAAK,CAACuE,EAAGimB,KACzCA,EAAG2H,aAAawjH,GACX/tI,MAAM,KACN2kB,QAAOtqB,GAAW,KAANA,IACZ3D,SAAQ2D,IACL,MAAMsL,EAAQtL,EAAE2F,MAAM,KACtB4iB,EAAGrgB,MAAMoD,EAAM,GAAGozB,QAAUpzB,EAAM,GAAGozB,MAAM,IAEnDnW,EAAG2a,gBAAgBwwG,EAAU,GAErC,EAEAsxG,YAAa,SAASzD,EAAYD,EAAa2D,GAC3C,MAAMl6O,EAAOhQ,KAAKgQ,OACZ8N,EAAS,IAAKyoO,GAEpBzoO,EAAO0O,MAAmC,SAA1Bg6N,EAAW9zM,WAAyBw3M,GAAiB,EAAIA,EAC3C,UAA1B1D,EAAW9zM,aACX50B,EAAO0O,MAAQxc,EAAKjE,OAGI,WAAxBy6O,EAAWh0M,SACX10B,EAAOoH,KAAOlV,EAAKhE,OAASk+O,EAE5BpsO,EAAOoH,KAAOglO,EAGlBlqP,KAAK6L,QAAQI,IAAI6R,EACrB,EAEArQ,KAAM,WACFzN,KAAK6L,QAAQ4B,MACjB,EAEAC,KAAM,WACF1N,KAAK6L,QAAQ6B,MACjB,EAEA1L,QAAS,WACLhC,KAAK6L,QAAQQ,QACjB,IAGJ1L,EAAM6H,WAAW7H,EAAM8pB,QAAS,CAC5Bs/N,cAAe,CACXxjI,QAASwjI,EACTI,iBAAkBL,IAG7B,CAxGD,CAwGGhpP,OAAOH,MAAM+G,QAEhB,SAAU/E,GACN,IAAIhC,EAAQG,OAAOH,MACfyP,EAAWzP,EAAMyP,SACjBghB,EAASzwB,EAAM4pB,GAAG6G,OAClB3G,EAAU9pB,EAAM8pB,QAChBqsG,EAAUrsG,EAAQqsG,QAClB/nD,EAASpuE,EAAM4tB,WACf67N,EAAc3/N,EAAQ65N,OAW1B,MAAM/9H,QAAEA,EAAO4jI,iBAAEA,GAAqB1/N,EAAQs/N,cAE9C,IAAIzF,EAASlzN,EAAOruB,OAAO,CACvBoF,KAAM,SAAS0D,EAASw9K,GACpB1oL,EAAMqB,QAAQ6J,GACdlJ,EAAEkJ,GAAS+gD,QAEX5sD,KAAKmH,QAAUxG,EAAM6H,WAAWxI,KAAKmH,QAASkiL,GAE9Cj4J,EAAOrpB,GAAGI,KAAKoC,KAAKvK,KAAM6L,GAE1B7L,KAAK4M,QAAU5M,KAAK6L,QACpB7L,KAAKqqP,cAELrqP,KAAKqnO,gBAEL1mO,EAAMi0B,OAAO50B,KAAMyqB,EAAQF,IAEvBvqB,KAAKuxB,uBACLvxB,KAAKuxB,sBAAsBvxB,KAAK4M,QAAQ,GAEhD,EAEAslB,WAAY,SAAS/qB,GACjB,IAAIitB,EAAiBp0B,KAAKmH,QAE1BnH,KAAKqK,OAAO/I,SAAQmI,IACZ2qB,EAAe3qB,IACfzJ,KAAKiK,OAAOR,EAAW2qB,EAAe3qB,GAC1C,IAGJzJ,KAAKo/J,UAAUltI,WAAW/qB,GAE1BnH,KAAKwJ,KAAKxJ,KAAKqK,OAAQrK,KAAKo/J,UAAUj4J,QAC1C,EAEAkjP,YAAa,WACT,MAAM1jB,EAAe3mO,KAAKw5O,iBAAiBx5O,KAAKmH,UACxCkxL,aAAc0qD,EAAUptD,aAAEA,EAAYtC,eAAEA,EAAcyC,OAAEA,EAAM33I,MAAEA,GAAUwoL,GAC1EphE,KAAMm6E,EAAKtqE,OAAEA,GAAWugB,EAC1B20D,EAAcj3D,EAAeje,OAAOtgB,WAE1C90J,KAAKuqP,cAAcvqP,KAAKmH,QAAS,CAAE47O,aAAYrD,QAAOtqE,OAAQ,IAAKA,EAAQx1C,OAAQ,CAAE3O,MAAOq5H,IAAiBx0D,SAAQ33I,UACrHn+C,KAAKmH,QAAUnH,KAAKo/J,UAAUj4J,OAClC,EAEAojP,cAAe,SAASpjP,EAASw/N,GAC7B3mO,KAAKo/J,UAAY,IAAIgrF,EAAYpqP,KAAK6L,QAAQ,GAAI1E,EAASw/N,EAC/D,EAEA6S,iBAAkB,SAASnwD,GACvB,IAAIsO,GAAatO,GAAe,CAAC,GAAG6M,MAEpC,GAAIyB,IAAuE,IAA1DltK,EAAQmmK,YAAYj7K,QAAQgiL,EAAU9+K,eACnD,OAAO4R,EAAQurK,YAAY1hB,MAG/B,GAAIx9C,EAAQ6gE,GAAY,CACpB,IAAIn/J,EAAS/N,EAAQF,GAAGiO,QAAU,CAAC,EAEnC,OADYA,EAAOm/J,IAAcn/J,EAAOm/J,EAAU9+K,gBAAkB,CAAC,GACxDy7J,OAAS,CAAC,CAC3B,CACJ,EAEA+yD,cAAe,WACXrnO,KAAKqK,OAAO/I,SAAQmI,IAChBzJ,KAAKo/J,UAAU51J,KAAKC,GAAW0W,IACvBngB,KAAKuJ,QAAQE,IACbzJ,KAAKuJ,QAAQE,GAAWnI,SAAQwI,GAAWA,EAAQS,UAAKo0I,EAAWx+H,IACvE,GACF,IAGNngB,KAAKo/J,UAAU51J,KA9EJ,cA8EuBxJ,KAAKwqP,YAAYhhP,KAAKxJ,OACxDA,KAAKo/J,UAAU51J,KA9EJ,cA8EuBxJ,KAAKyqP,YAAYjhP,KAAKxJ,MAC5D,EAEAwqP,YAAa,SAAS7lP,GAClB,IAAK3E,KAAKggK,SAAU,CAChB,MAAMlU,EAAM9rJ,KAAK6L,QAAQ,GAAG+1E,cAC5B5hF,KAAKggK,SAAW,IAAIz5C,EAAQulC,EAAIjtI,cAAc,OAAQ,CAAC,GACvD,MAAM3S,SAAEA,EAAW4/I,EAAI9sI,MAAShf,KAAKmH,QAAQ83J,QAC7Cj/J,KAAKggK,SAASn0J,QAAQK,SAASvJ,EAAEuJ,GACrC,CAEA,MAAMw+O,aAAEA,EAAYC,aAAEA,EAAY7sO,OAAEA,GAAW9d,KAAKmH,QAAQ83J,QACtD2rF,EAAkBx6O,GAzFrB,SAyF+BzL,EAAE6gP,WAAsBkF,EAAeC,IAAiBR,EAAiBxlP,EAAE6gP,aACvG98O,EAAQqmE,EAAOpuE,EAAMsQ,OAAOjR,KAAKmH,QAAQyjB,SAASigO,aAAc/zH,EAAQnyH,EAAEm/B,WAAan/B,EAAEm/B,UAAYn/B,EAAE85D,SAAS/1D,QAEtH1I,KAAKggK,SAASgqF,WAAWY,EAAgB,CAAEnsL,SAAU95D,EAAE85D,SAAU/1D,WACjE1I,KAAKggK,SAASiqF,YAAYtlP,EAAE2hP,YAAYE,WAAY7hP,EAAE2hP,YAAYC,YAAazoO,GAC/E9d,KAAKggK,SAASvyJ,MAClB,EAEAg9O,YAAa,WACLzqP,KAAKggK,WACLhgK,KAAKggK,SAASh+J,UACdhC,KAAKggK,SAAW,KAExB,EAEA5oB,aAAc,SAAS4yF,GACnB,OAAOhqO,KAAKo/J,UAAUhoB,aAAa4yF,EACvC,EAEAhoO,QAAS,WACLovB,EAAOrpB,GAAG/F,QAAQuI,KAAKvK,MACvBA,KAAKyqP,cACLzqP,KAAKo/J,UAAUp9J,UACfhC,KAAKo/J,UAAY,IACrB,EAEA/0J,OAAQ,CA3HK,YACA,YACA,YACA,YACA,YACA,aA8HblD,QAAS,CACL/E,KAAM,SACN8zL,MAAO,UACPj3B,QAAS,CACLnhJ,OAAQ,IAEZ8M,SAAU,CACNigO,aAAc,kBAK1BpgO,EAAQomK,YAAY9tL,OAAOuhP,EAAOv8O,IAE9BpH,EAAMg8O,UACNh8O,EAAMg8O,SAAS55O,OAAOuhP,EAAOv8O,IAGjC0iB,EAAQF,GAAG2M,OAAOotN,GAElB3jP,EAAM6H,WAAWiiB,EAAS,CACtB65N,UAGP,CAnKD,CAmKGxjP,OAAOH,MAAM+G,QAgBF/G,OASd,SAAUgC,GAGV7B,OAAOH,MAAM8pB,QAAU3pB,OAAOH,MAAM8pB,SAAW,CAAC,EAChD,IAAIA,EAAU9pB,MAAM8pB,QAChBy4I,EAAaz4I,EAAQy4I,WACrBpsC,EAAUrsG,EAAQqsG,QAClBwqC,EAAY72I,EAAQ62I,UACpBhB,EAAQgB,EAAUhB,MAClBsB,EAAkBN,EAAUM,gBAC5B+S,EAAWlqJ,EAAQkqJ,SACnBnsK,EAAaiiB,EAAQjiB,WACrBvF,EAAUwnB,EAAQxnB,QAClB+gK,EAAoBv5I,EAAQu5I,kBAC5BskB,EAAc79J,EAAQ69J,YACtB9vD,EAAa/tG,EAAQ+tG,WACrBuuC,EAAMt8I,EAAQs8I,IACdkpB,EAAmBxlK,EAAQwlK,iBAC3B35K,EAAQmU,EAAQnU,MAChBoU,EAAU/pB,MAAM+pB,QAChBogO,EAAepgO,EAAQ+lH,MACvBs6G,EAAcrgO,EAAQ6jH,KACtBzyF,EAAYpxB,EAAQoxB,UACpBk6F,EAAmBtrH,EAAQsrH,iBAC3BrU,EAAWhhI,MAAMghI,SACjB1E,EAAO0E,EAAS1E,KAChBk8D,EAAgBx3D,EAAS7F,MACzBnoF,EAAYguF,EAAShuF,UAErBq3M,EAAgB,IAGhBC,EAAgB,eAChBC,EAAc,aAEdC,EAAqB,GAErBC,EAAS/nP,KAAK6zH,GAAK,IACnB2pC,EAAS,SACTwqF,EAAS,SACTnqF,EAAU,UACVoqF,EAAiB,gBACjBC,EAAuB,qBAE3B,SAAS//O,EAAImyH,EAAMj1H,GACf,IAAIswC,EAAS2kF,EAAKN,YACdrtH,EAAO2tH,EAAKprG,UACZi/G,EAAU0xB,EAAWx6J,GAKzB,OAHAi1H,EAAKR,UAAU,CAAEnkF,EAAO5zC,EAAIosI,EAAQhlH,KAAMwsB,EAAO70C,EAAIqtI,EAAQtsH,MAC7Dy4G,EAAK/qG,QAAQ,CAAE5iB,EAAKjE,OAASylI,EAAQhlH,KAAOglH,EAAQ/kH,OAAQzc,EAAKhE,QAAUwlI,EAAQtsH,IAAMssH,EAAQ9kH,UAE1FixG,CACX,CAEA,IAAI8S,EAAQq6G,EACRU,EAAST,EACT56G,EAAOzlH,EAAQylH,KAEnB,SAASs7G,EAAkBn3N,EAAOntB,GAC9B,IAAIizK,EAAW9lJ,EAAMglB,IACjB6/G,EAAU7kI,EAAMihB,SAAS,GAAG+D,IAC5BozH,EAASvlK,EAAQulK,QAAU,CAAC,EAC5B5X,EAAa3tJ,EAAQ2tJ,YAAc,GAEnCloJ,EAAU4+O,EAAOn8G,SAAS,IAAIpS,EAAK,CAAEm9C,EAASn8F,GAAIm8F,EAASl8F,IAAM,CAAEk8F,EAASruK,QAASquK,EAASpuK,WAAa,CAC3G4zH,OAAQ,CAAC,IAGT9+F,EAAO,IAAIqvG,EAAK77G,EAAMwM,KAAM,IAAIq4J,EAAchgC,EAAQl7E,GAAIk7E,EAAQj7E,IAAK,CACvE6Z,KAAM5wF,EAAQ4wF,KACdrkE,KAAM,CAAEu9F,MAAO9pH,EAAQ8pH,SAGvBy6H,EAAgBlgP,EAAIs1B,EAAK68F,OAAOv2H,QAASD,EAAQ6wI,SAEjD2zG,EAAWH,EAAOn8G,SAASq8G,EAAe,CAC1C9rH,OAAQ,CACJ3O,MAAOy7C,EAAO3gK,MAAQ2gK,EAAOz7C,MAAQ,GACrCllH,MAAO2gK,EAAO3gK,MACdgrB,QAAS21I,EAAO31I,QAChB8nH,SAAU6tB,EAAO7tB,SACjBrQ,SAAU,QACVyQ,QAAS,SAEbvrH,KAAM,CACFu9F,MAAO6jC,KAIXn8H,EAAW,IAAI83G,EAKnB,OAJA93G,EAASwhB,OAAOvtC,GAChB+rB,EAASwhB,OAAOwxM,GAChBhzN,EAASwhB,OAAOrZ,GAETnI,CACX,CAEA,SAASizN,EAAS33L,EAAOv9C,EAAKyC,GAC1B,IAAI4C,EAAO+6G,EAAQ7iE,EAAMl4C,MAAQk4C,EAAMl4C,KAAOulJ,EAAUR,UACpDxiI,EAAKw4F,EAAQ7iE,EAAM31B,IAAM21B,EAAM31B,GAAKgjI,EAAUlqC,UAKlD,OAHAnjE,EAAMl4C,KAAO1Y,KAAK8V,IAAI9V,KAAKqT,IAAI4nB,EAAIviB,GAAOrF,GAC1Cu9C,EAAM31B,GAAKj7B,KAAKqT,IAAIrT,KAAK8V,IAAImlB,EAAIviB,GAAO5C,GAEjC86C,CACX,CAEA,SAASwzG,EAAM9pC,EAAMj1H,GACjB,IAAI8oI,EAAU0xB,EAAWx6J,GAKzB,OAHA8oI,EAAQhlH,MAAQglH,EAAQhlH,KAAMglH,EAAQtsH,KAAOssH,EAAQtsH,IACrDssH,EAAQ/kH,OAAS+kH,EAAQ/kH,MAAO+kH,EAAQ9kH,QAAU8kH,EAAQ9kH,OAEnDlhB,EAAImyH,EAAM6T,EACrB,CAEA,IACIjD,EAAOw8G,EACP7zG,EAAUxsH,EAAQwsH,QAElB20G,EAAQphO,EAAQ7iB,MAAM7E,OAAO,CAC7BoF,KAAM,SAAS0D,EAASw9K,EAAa6M,EAAOl6J,QACxB,IAAZA,IAAsBA,EAAU,CAAC,GAErCh8B,KAAK6L,QAAUA,EACf7L,KAAKk2L,MAAQA,EACbl2L,KAAK8rP,eAAiB,IAAIn3E,EAASN,aAAar0K,KAAMg8B,GACtDh8B,KAAK6mO,iBAAmBr+N,EAAW,CAAC,EAAGxI,KAAKmH,QAASkiL,GACrDrpL,KAAKmH,QAAUqB,EAAW,CAAC,EAAGxI,KAAK6mO,kBACnC7mO,KAAK+mO,WAAW7wC,GAEhBl2L,KAAKy9M,QACT,EAEAz7M,QAAS,WACDhC,KAAK2hF,UACL3hF,KAAK2hF,QAAQ3/E,UACbhC,KAAK2hF,QAAU,aAGZ3hF,KAAK6L,eACL7L,KAAKiiF,cAChB,EAEAv5E,MAAO,SAASqjP,GACZ,IAAInuK,EAAU59E,KAAKinB,SAAS,GAE5B,GAAyB,IAArB3f,UAAUE,OACV,OAAOo2E,EAAQl1E,QAGnBk1E,EAAQl1E,MAAMqjP,GACd/rP,KAAKgsP,iBAAiBD,EAC1B,EAEAE,MAAO,WACH,IAAItqK,EAAU3hF,KAAK2hF,QAEnBA,EAAQnrB,QACRmrB,EAAQ81D,KAAKz3I,KAAKksP,SACtB,EAEA90G,aAAc,WACV,OAAOp3I,KAAKksP,QAChB,EAEAC,UAAW,SAAS9yO,GAChB,IAAI4N,EAAWjnB,KAAKinB,SAChBklO,EAAY,GAEhB,GAAyB,IAArB7kP,UAAUE,OAAc,CACxB,IAAK,IAAID,EAAI,EAAGA,EAAI0f,EAASzf,OAAQD,IACjC4kP,EAAUxqP,KAAKslB,EAAS1f,GAAGmB,SAG/B,OAAOyjP,CACX,CAEA,GAAIlpP,EAAQoW,GACR,IAAK,IAAI4sJ,EAAM,EAAGA,EAAM5sJ,EAAO7R,OAAQy+J,IAC/Bx7I,EAAQ4qC,SAASh8C,EAAO4sJ,KACxBh/I,EAASg/I,GAAKv9J,MAAM2Q,EAAO4sJ,IAKvCjmK,KAAKgsP,iBAAiB3yO,EAC1B,EAEA2yO,iBAAkB,SAAS3yO,GAIvB,IAHA,IAAI4N,EAAW,GAAG7I,OAAOpe,KAAKmH,QAAQy2E,SAClCwuK,EAAc,GAAGhuO,OAAO/E,GAEnB9R,EAAI,EAAGA,EAAI6kP,EAAY5kP,OAAQD,IACpC0f,EAAS1f,GAAGmB,MAAQ0jP,EAAY7kP,EAExC,EAEA4iB,OAAQ,WACJnqB,KAAK2zO,qBACT,EAEAA,oBAAqB,WACjB,IAAIj0N,EAAc1f,KAAKmH,QAAQuY,YAE/B1f,KAAKqsP,oBAAmB,GAExBrsP,KAAKy9M,SAELz9M,KAAKqsP,mBAAmB3sO,EAC5B,EAEA+9L,OAAQ,WACJ,IAAIztM,EAAOhQ,KAAKssP,eACZ1/O,EAAU,IAAIqwH,EAAK,CAAE,EAAG,GAAK,CAAEjtH,EAAKjE,MAAOiE,EAAKhE,SAEpDhM,KAAKknO,eAELlnO,KAAKusP,UAAYvsP,KAAKwsP,mBAEtBxsP,KAAKysP,eAEL,IAAI9uH,EAAO8pC,EAAM76J,EAAQ+wH,OAAQ39H,KAAK0sP,kBACtC1sP,KAAKqyI,OAAO1U,EAChB,EAEAzrG,WAAY,SAAS/qB,EAAS+uL,GAC1Bl2L,KAAK6mO,iBAAmBr+N,EAAWxI,KAAK6mO,iBAAkB1/N,GAC1DnH,KAAKmH,QAAUqB,EAAW,CAAC,EAAGxI,KAAK6mO,kBAEnC7mO,KAAK+mO,WAAW7wC,GAEhBl2L,KAAKy9M,QACT,EAEAg2B,aAAc,SAASrzF,GACnBpgJ,KAAK8rP,eAAe1rG,IAAMttI,QAAQstI,GAC9BpgJ,KAAK2hF,SAAiC,QAAtB3hF,KAAK2hF,QAAQj8E,OAC7B1F,KAAK2hF,QAAQ3/E,UACbhC,KAAK2hF,QAAU,KAEvB,EAEA+xJ,eAAgB,SAASz/D,GACrBj0K,KAAK8rP,eAAe73E,KAAOA,CAC/B,EAEA8yD,WAAY,SAAS7wC,GACjB,IAAIgvD,EAAehvD,GAASl2L,KAAKk2L,OAAS,CAAC,EAC3Cl2L,KAAKk2L,MAAQgvD,EAEbllP,KAAKmH,QAAUqB,EAAW,CAAC,EAAG08O,EAAcllP,KAAKmH,SACjD,IAAIA,EAAUnH,KAAKmH,QACfy2E,EAAUz2E,EAAQy2E,QAEtB,GAAI36E,EAAQ26E,GAAU,CAElB,IADA,IAAI32D,EAAW,GACN1f,EAAI,EAAGA,EAAIq2E,EAAQp2E,OAAQD,IAChC0f,EAAStlB,KAAK6G,EAAW,CAAC,EAAG08O,EAAatnK,QAASA,EAAQr2E,KAE/DJ,EAAQy2E,QAAU32D,CACtB,CACJ,EAEAulO,iBAAkB,WACd,IAAIrlP,EAAUnH,KAAKmH,QAAQolP,UACvBv8O,EAAOhQ,KAAK2hF,QAAQ3xE,OACpB08J,EAASvlK,EAAQulK,QAAU,CAAC,EAC5BigF,EAAe,IAAI1vH,EAAK,CAAE,EAAG,GAAK,CAAEjtH,EAAKjE,MAAOiE,EAAKhE,SAsBzD,OApBAhM,KAAK0sP,iBAAmBvlP,EAAQ4xC,QA1JnB,EA4JT2zH,EAAO3gK,MAAQ,IACf4gP,EAAellF,EAAMklF,EAAcjgF,EAAO3gK,QAG9BwiI,EAAKc,SAASs9G,EAAc,CACxC/sH,OAAQ,CACJ3O,MAAOy7C,EAAO3gK,MAAQ2gK,EAAOz7C,MAAQ,GACrCllH,MAAO2gK,EAAO3gK,MACdgrB,QAAS21I,EAAO31I,QAChB8nH,SAAU6tB,EAAO7tB,SACjBrQ,SAAU,QACVyQ,QAAS,SAEbvrH,KAAM,CACFu9F,MAAO9pH,EAAQ2tJ,aAK3B,EAEAoyE,aAAc,WACV,IACI//N,EADMnH,KACQmH,QACdw6E,EAFM3hF,KAEQ2hF,QACd91E,EAAU7L,KAAK4sP,kBACf58O,EAAOhQ,KAAKssP,eAEhB7hO,EAAQmjE,YAAY/hF,EAASmE,GAExB2xE,GAAWA,EAAQx6E,QAAQzB,OAASyB,EAAQuhO,UAS7C1oO,KAAK2hF,QAAQnrB,QACbx2D,KAAK2hF,QAAQx3D,WATTw3D,GACAA,EAAQ3/E,UAGZhC,KAAK2hF,QAAUu1D,EAAQ9vF,OAAOv7C,EAAS,CACnCnG,KAAMyB,EAAQuhO,WAM1B,EAEA4jB,aAAc,WACV,IAAInlP,EAAUnH,KAAKmH,QACf6I,EAAOhQ,KAAK4mP,WAMhB,OAJIz/O,EAAQolP,WACR/jP,EAAWwH,EAAM7I,EAAQolP,WAGtBv8O,CACX,EAEA48O,gBAAiB,WAMb,OALK5sP,KAAKiiF,iBACNjiF,KAAKiiF,eAAiBtyE,SAASkP,cAAc,OAC7C7e,KAAK6L,QAAQoT,YAAYjf,KAAKiiF,iBAG3BjiF,KAAKiiF,cAChB,EAEA1vD,QAAS,WACL,OAAOvyB,KAAK4mP,UAChB,EAEAA,SAAU,WACN,IAAI/6O,EAAU7L,KAAK6L,QACfghP,EAAc7sP,KAAK8sP,eACnB/gP,EAAQF,EAAQqT,YAChBlT,EAASH,EAAQ8oB,aAUrB,OARK5oB,IACDA,EAAQ8gP,EAAY9gP,OAGnBC,IACDA,EAAS6gP,EAAY7gP,QAGlB,CAAED,MAAOA,EAAOC,OAAQA,EACnC,EAEA8gP,aAAc,WACV,MAAO,CACH/gP,MApUQ,IAqURC,OAvUS,IAyUjB,EAEAqgP,mBAAoB,SAAS3jP,GAGzB1I,KAAKmH,QAAQuY,YAAchX,EAC3B,IAAK,IAAInB,EAAI,EAAGA,EAAIvH,KAAKinB,SAASzf,OAAQD,IAH3BvH,KAIFinB,SAAS1f,GAAGJ,QAAQmrF,UAAU5yE,YAAchX,CAE7D,IAGJs7J,EAAkB6nF,EAAO,CACrB1zE,SAAU,CAAC,EACX+d,MAAO,OACPwyC,SAAU,GACV9qJ,QAAS,CAAC,EACV7tC,MAAO,CAAC,EACRw8M,UAAW,CAAC,IAGhB,IAAIQ,EAAShC,EACTiC,EAAUlC,EACVhvH,EAAQq9D,EAEZ,SAAS8zD,EAAeC,EAAmBr4E,GACvC,IAGI/+J,EAAOnK,EAHP2B,EAAW4/O,EAAkB5/O,SAC7BwnK,EAAQo4E,EAAkBp4E,MAC1BC,EAAQm4E,EAAkBn4E,MAkB9B,OAfIm4E,EAAkB16M,UAClB18B,EAAQ,IAAIgmH,EAAMg5C,EAAOxnK,GACzB3B,EAAM,IAAImwH,EAAMg5C,EAAQD,EAAY7kK,KAAM1C,KAE1CwI,EAAQ,IAAIgmH,EAAMxuH,EAAUynK,GAC5BppK,EAAM,IAAImwH,EAAMxuH,EAAUynK,EAAQF,EAAY7kK,OAGnC,IAAI+8O,EAAO,CACtBntH,OAAQ,CACJ3O,MAAO4jD,EAAY5jD,MACnBllH,MAAO8oK,EAAY9oK,SAExBywC,OAAO1mC,GAAO+2H,OAAOlhI,EAG5B,CAEA,SAASwhP,EAAYC,EAAW51E,EAAe01E,EAAmBr4E,GAC9D,IAAIv5J,EAAQk8J,EAAchwK,OAE1B,GAAIqtK,EAAY7nK,QAGZ,IAFA,IAAIgnC,EAASk5M,EAAkBl5M,OAC3ByiI,EAAUy2E,EAAkBz2E,QACvBlvK,EAAIstK,EAAYhwH,KAAMt9C,EAAI+T,EAAO/T,GAAKstK,EAAY/hI,KACnDvrC,EAAIstK,EAAY4C,UAAa,IAIjCy1E,EAAkBp4E,MAAQ9gI,EAASyiI,EAAQt4F,GAAKs4F,EAAQt4F,GAAK02F,EAAY7kK,KACzEk9O,EAAkBn4E,MAAQ/gI,EAASyiI,EAAQv4F,GAAK22F,EAAY7kK,KAAOymK,EAAQv4F,GAC3EgvK,EAAkB5/O,SAAWkqK,EAAcjwK,GAE3C6lP,EAAUjzM,OAAO8yM,EAAeC,EAAmBr4E,IAG/D,CAEA,IAAIw4E,EAAc/kE,EAAYvlL,OAAO,CACjCoF,KAAM,SAAShB,EAASkjK,GACpB,IAAIgW,EAAel5K,GAAW,CAAC,GAC1B2vH,EAAQupD,EAAahqK,WAAsC,IAA1BgqK,EAAa7tI,WAAuB63H,GAAW,CAAC,GAAGjqB,MACrFigC,EAAe19K,EAAEI,OAAO,CAAC,EAAGs9K,EAAc,CACtChqK,SAAS,KAIjBiyK,EAAYvgL,GAAGI,KAAKoC,KAAKvK,KAAM,EAAG,EAAGqgL,EAAchW,GAEnDrqK,KAAKmH,QAAQywK,UAAY53K,KAAKmH,QAAQywK,WAAa53K,KAAKmH,QAAQmwK,UAAY,EAChF,EAEArN,gBAAiB,SAAS9iK,GACtB,IAAIk5K,EAAe73K,EAAW,CAAC,EAAGxI,KAAKmH,QAASA,GAIhD,OAHAk5K,EAAe73K,EAAW,CAAC,EAAG63K,EAAe,CAAEjL,OAAQ,CAAEphI,OAAQqsI,EAAarsI,WACjEsjI,UAAY+I,EAAa/I,WAAa7sJ,EAAQg8I,cAAc4Z,EAAa3pK,IAAK2pK,EAAalnK,KAEjGknK,CACX,EAEA1K,WAAY,WACZ,EAEAxlK,OAAQ,WACJ,IAAIwoB,EAAW34B,KAAK24B,SAAW,IAAIq0N,EAC/B53E,EAASp1K,KAAKstP,eACdC,EAAYvtP,KAAKwtP,aACjBC,EAAaztP,KAAKmtP,cAClBn0L,EAASh5D,KAAK0tP,eAIlB,OAFA/0N,EAASwhB,OAAOozM,EAAWn4E,EAAQq4E,EAAYz0L,GAExCrgC,CACX,EAEA+0N,aAAc,WAaV,IAZA,IAAIz6H,EAAWjzH,KAEXmH,EAAUnH,KAAKmH,QACfuP,EAAMvP,EAAQuP,IACdyC,EAAMhS,EAAQgS,IACdq5B,EAAWrrC,EAAQqrC,SACnBwB,EAAS7sC,EAAQiuK,OAAOphI,OACxBglB,EAAS7xD,EAAQ6xD,QAAU,GAC3BrgC,EAAW,IAAIq0N,EACf1xO,EAAQ09C,EAAOxxD,OACfs0K,EAAY30K,EAAQ20K,WAAa30K,EAAQouK,WAAWvlK,KAAO,EAEtDzI,EAAI,EAAGA,EAAI+T,EAAO/T,IAAK,CAC5B,IAAI0sD,EAAQ23L,EAAS5yL,EAAOzxD,GAAImP,EAAKyC,GACjC0hK,EAAO5nD,EAASwlD,QAAQxkH,EAAMl4C,KAAMk4C,EAAM31B,IAC1Ci6I,EAAQ/lI,EAAWygF,EAASwjD,UAAYoE,EACxCrC,EAAQhmI,EAAWqoI,EAAO5nD,EAASwjD,UACnCjkI,EACA+lI,EAAMt6F,IAAM69F,GAAa9nI,GAAU,EAAI,GAEvCwkI,EAAMp6F,IAAM09F,GAAa9nI,GAAU,EAAI,GAG3Crb,EAASwhB,OAAO4yM,EAAO19G,SAAS,IAAIpS,EAAK,CAAEs7C,EAAMt6F,GAAIu6F,EAAMt6F,IAAM,CAAEq6F,EAAMp6F,GAAKo6F,EAAMt6F,GAAIu6F,EAAMp6F,GAAKo6F,EAAMt6F,KAAO,CAC5GxqD,KAAM,CAAEu9F,MAAOh9D,EAAMg9D,MAAOl6F,QAASk9B,EAAMl9B,SAC3C6oG,OAAQ,CAAE,IAElB,CAEA,OAAOjnG,CACX,EAEA20N,aAAc,WAMV,IALA,IACIl4E,EADMp1K,KACOo1K,OACbjuK,EAFMnH,KAEQmH,QACdwxB,EAAW,IAAIq0N,EAEVzlP,EAAI,EAAGA,EAAI6tK,EAAO5tK,OAAQD,IAC/BoxB,EAASwhB,OAAOsxM,EAAkBr2E,EAAO7tK,GAAIJ,EAAQiuK,SAGzD,OAAOz8I,CACX,EAEA60N,WAAY,WACR,IAAIjoF,EAAOvlK,KAAKmH,QAAQo+J,KACpBkR,EAAUz2K,KAAKy2K,UACf99I,EAAW,IAAIq0N,EAEnB,GAAIznF,EAAKx5J,MAAQ,GAAKw5J,EAAKv4J,QAAS,CAChC,IAAI2gP,EAAW,IAAIZ,EAAO,CACtBntH,OAAQ,CACJ3O,MAAOs0C,EAAKt0C,MACZ4tB,SAAU0mB,EAAK1mB,SACf9yI,MAAOw5J,EAAKx5J,SAIpB4hP,EAASnxM,OAAOi6H,EAAQx4F,GAAIw4F,EAAQv4F,IAAI2uD,OAAO4pC,EAAQt4F,GAAIs4F,EAAQr4F,IACnEzlD,EAASwhB,OAAOwzM,EACpB,CAEA,OAAOh1N,CACX,EAEAw0N,YAAa,WACT,IAAIjvE,EAAQ,IAAI8uE,EACZ7lP,EAAUnH,KAAKmH,QACfmwK,EAAYnwK,EAAQsuK,WAAWzoK,QAAU7F,EAAQmwK,UAAY,EAC7D41E,EAAoB,CACpB16M,SAAUrrC,EAAQqrC,SAClBwB,OAAQ7sC,EAAQiuK,OAAOphI,OACvByiI,QAASz2K,KAAKy2K,WAQlB,OALA02E,EAAYjvE,EAAOl+K,KAAK03K,wBAAyBw1E,EAAmB/lP,EAAQsuK,YAC5E03E,EAAYjvE,EAAOl+K,KAAK23K,wBAAyBu1E,EAAmB1kP,EAAW,CAAC,EAAG,CAC/EivK,SAAUH,EAAYnwK,EAAQywK,WAC/BzwK,EAAQouK,aAEJ2I,CACX,IAGJla,EAAkBqpF,EAAa,CAC3B32O,IAAK,EACLyC,IAAK,GAELs8J,WAAY,CACRzlK,KAAM,GACNkhI,MAAO2vB,EACP5vC,MAAOqvC,EACPv0J,MAAOo/O,EACPn+O,SAAS,GAGbuoK,WAAY,CACRvlK,KAAM,GACNkhI,MAAO2vB,EACP5vC,MAAOqvC,EACPv0J,MAAOo/O,EACPn+O,SAAS,GAGbu4J,KAAM,CACFx5J,MAAOo/O,GAGX/1E,OAAQ,CACJ9nK,SAAUuzJ,EACV7oB,QAAS,GAEbhkG,QAAQ,EACR6jI,aAAa,IAGjB,IAAI+1E,EAAUnjO,EAAQ7iB,MAAM7E,OAAO,CAC/BoF,KAAM,SAAS4nC,EAAOs5I,GAElB,IAAIh3D,EAAMtiF,EAAM5oC,QACZuP,EAAM27G,EAAI37G,IACVyC,EAAMk5G,EAAIl5G,IACVhS,EAAUnH,KAAKmH,QAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAASkiL,GAE1DliL,EAAQusB,KAAOvsB,EAAQ8pH,MAEvBjxH,KAAK+vC,MAAQA,EAET+mF,EAAQ3vH,EAAQuB,OAChBvB,EAAQuB,MAAQ8vH,EAAWrxH,EAAQuB,MAAOgO,EAAKyC,GAE/ChS,EAAQuB,MAAQgO,CAExB,EAEAhO,MAAO,SAAS4rE,GACZ,IAAIntE,EAAUnH,KAAKmH,QACfuB,EAAQvB,EAAQuB,MAEpB,GAAyB,IAArBpB,UAAUE,OACV,OAAOkB,EAGX,IAAI2pH,EAAMryH,KAAK+vC,MAAM5oC,QACjBuP,EAAM27G,EAAI37G,IACVyC,EAAMk5G,EAAIl5G,IAEdhS,EAAQ0mP,UAAY/2H,EAAQ3vH,EAAQ0mP,WAAa1mP,EAAQuB,MAAQgO,EACjEvP,EAAQuB,MAAQ8vH,EAAWlkD,EAAU59D,EAAKyC,GAEtCnZ,KAAK24B,UACL34B,KAAK8tP,SAEb,IAGJ9pF,EAAkB4pF,EAAS,CACvB38H,MAAOqvC,IAGX,IAAIytF,EAAgBH,EAAQ7qP,OAAO,CAC/BoF,KAAM,SAAS4nC,EAAO5oC,GAClBymP,EAAQ7lP,GAAGI,KAAKoC,KAAKvK,KAAM+vC,EAAO5oC,GAElCnH,KAAKmH,QAAUqB,EAAW,CACtBwlP,MAAO,CACHhhP,QAAS8pH,EAAQ3vH,EAAQ6mP,SAE9BhuP,KAAKmH,QACZ,EAEAkrI,OAAQ,WACJ,IAaI47G,EAAYC,EAAiBC,EAZ7BhnP,EADMnH,KACQmH,QACd4oC,EAFM/vC,KAEM+vC,MACZ2iG,EAAQ3iG,EAAM5oC,QACd6sC,EAAS0+F,EAAM1+F,OACfxB,EAAWkgG,EAAMlgG,SACjB+6M,EAAYx9M,EAAM0mI,UAClB23E,EAAYjnP,EAAQ6mP,MAAMh+O,MAAQ7I,EAAQ6I,KAC1Cq+O,EAAkBlnP,EAAQ6I,KAAO,EACjC+oC,EAASmqH,EAAW/7J,EAAQ4xC,QAC5B9lC,EAAQu/B,EACRuG,EAAO/E,EAAS,OAAS,SACzB+E,EAAO/E,EAAS,SAAW,OAG/B/gC,EAAQ+gC,GAAU/gC,EAAQA,EAEtBu/B,GACA27M,EAAW,IAAIpnF,EACXwmF,EAAUtvK,GAAKhrE,EAAOs6O,EAAUrvK,GAChCqvK,EAAUtvK,GAAKhrE,EAAOs6O,EAAUnvK,IAEhCpqC,EACAm6M,EAASlwK,IAAMmwK,EAEfD,EAAShwK,IAAMiwK,EAGfjnP,EAAQ27I,QAAUooG,IAKlB+C,EAJAC,EAAkB,IAAInnF,EAClBwmF,EAAUpvK,GAAKlrE,EAAOs6O,EAAUrvK,GAAKmwK,EACrCd,EAAUpvK,GAAKlrE,EAAOs6O,EAAUnvK,GAAKiwK,MAK7CF,EAAW,IAAIpnF,EACXwmF,EAAUtvK,GAAIsvK,EAAUrvK,GAAKjrE,EAC7Bs6O,EAAUpvK,GAAIovK,EAAUrvK,GAAKjrE,GAE7B+gC,EACAm6M,EAAS/vK,IAAMgwK,EAEfD,EAASjwK,IAAMkwK,EAGfjnP,EAAQ27I,QAAUooG,IAKlB+C,EAJAC,EAAkB,IAAInnF,EAClBwmF,EAAUtvK,GAAKowK,EAAiBd,EAAUrvK,GAAKjrE,EAC/Cs6O,EAAUpvK,GAAKkwK,EAAiBd,EAAUrvK,GAAKjrE,KAM3DjT,KAAKmuP,SAAWA,EAChBnuP,KAAKkuP,gBAAkBA,EACvBluP,KAAKs5C,IAAM20M,GAAcE,EAAS/mP,QAAQoE,IAAIrE,EAAQulK,OAAO3gK,MACjE,EAEAuiP,kBAAmB,WACf,IAAInnP,EAAUnH,KAAKmH,QAEnB,MAAO,CACHusB,KAAM,CACFu9F,MAAO9pH,EAAQ8pH,MACfl6F,QAAS5vB,EAAQ4vB,SAErB6oG,OAAQ9I,EAAQ3vH,EAAQulK,QAAU,CAC9Bz7C,MAAO9pH,EAAQulK,OAAO3gK,MAAQ5E,EAAQulK,OAAOz7C,OAAS9pH,EAAQ8pH,MAAQ,GACtEllH,MAAO5E,EAAQulK,OAAO3gK,MACtB8yI,SAAU13I,EAAQulK,OAAO7tB,SACzB9nH,QAAS5vB,EAAQ4vB,SACjB,KAEZ,EAEAw3N,QAAS,WACL,IACIx+M,EADM/vC,KACM+vC,MACZ5oC,EAFMnH,KAEQmH,QACdurI,EAAQ3iG,EAAM5oC,QACd6sC,EAAS0+F,EAAM1+F,OACfxB,EAAWkgG,EAAMlgG,SACjBuG,EAASmqH,EAAW/7J,EAAQ4xC,QAMhC,OAJYvG,EACRuG,EAAO/E,EAAS,OAAS,SACzB+E,EAAO/E,EAAS,SAAW,MAGnC,IAGJgwH,EAAkB+pF,EAAe,CAC7BjrG,MAAOooG,EAEP8C,MAAO,CACHthF,OAAQ,CACJ3gK,MAAO,IAIfklH,MAAOqvC,EACPoM,OAAQ,CACJ3gK,MAAO,GAEXgrB,QAAS,EAETgiB,OAAQmqH,EAAW,GACnB5wE,UAAW,CACP5sF,KAAMwlP,GAEVl+O,SAAS,IAGb,IAAIwhP,EAA8B1yM,EAAU/4C,OAAO,CAC/C+yC,MAAO,WACH,IAAI3uC,EAAUnH,KAAKmH,QACf4xC,EAAS5xC,EAAQ4xC,OACjBh9B,EAAO5U,EAAQ4U,KACfuiB,EAAKn3B,EAAQm3B,GACbkU,EAAWrrC,EAAQqrC,SACnBrN,EAAOqN,EAAW,KAAO,KAEzBrrC,EAAQ6sC,SAAWxB,GACnBz2B,EAAKopB,IAAS4T,EAAQza,EAAG6G,IAAS4T,IAElCh9B,EAAKopB,IAAS4T,EAAQza,EAAG6G,IAAS4T,GAGtC,IAAI++K,EAAY93N,KAAK83N,UAAY,IAAI3+B,EAAcp9K,EAAKkiE,GAAIliE,EAAKmiE,IAC7DuwK,EAAUzuP,KAAKyuP,QAAU,IAAIt1D,EAAc76J,EAAG2/C,GAAI3/C,EAAG4/C,IAEhC,IAArB/2E,EAAQmgB,WACRngB,EAAQmgB,SAAWjkB,KAAK8V,IAAK2+M,EAAUx7F,WAAWmyH,GAAWtnP,EAAQmgB,SAAY,IAAM,GAE/F,EAEAwrB,KAAM,SAASuiD,GACX,IAAIq5J,EAAaz+D,EAAiBjwL,KAAK83N,UAAU1yN,EAAGpF,KAAKyuP,QAAQrpP,EAAGiwF,GAChEs5J,EAAa1+D,EAAiBjwL,KAAK83N,UAAU3zN,EAAGnE,KAAKyuP,QAAQtqP,EAAGkxF,GAEpEr1F,KAAK6L,QAAQ8nC,UAAUA,IAAYvD,UAAUs+M,EAAYC,GAC7D,IAGJ3qF,EAAkBwqF,EAA6B,CAC3Cr4G,OAAQk1G,EACR/jO,SA1vBe,MA6vBnB0uH,EAAiBhiI,QAAQmjB,SAAS8zN,EAAeuD,GAEjD,IAAIr9B,GAAUh4B,EACVy1D,GAAS7D,EAET8D,GAAqBd,EAAchrP,OAAO,CAC1CoF,KAAM,SAAS4nC,EAAO5oC,GAClB4mP,EAAchmP,GAAGI,KAAKoC,KAAKvK,KAAM+vC,EAAO5oC,GAEnC2vH,EAAQ92H,KAAKmH,QAAQ6I,QACtBhQ,KAAKmH,QAAQ6I,KAA4C,GAArChQ,KAAK+vC,MAAM5oC,QAAQsuK,WAAWzlK,KAE1D,EAEA8+O,aAAc,WACV,IACI/+M,EADM/vC,KACM+vC,MACZ//B,EAFMhQ,KAEKmH,QAAQ6I,KACnB07L,EAAW17L,EAAO,EAClB+G,EAAQg5B,EAAM5oC,QAAQ6sC,QAAU,EAAI,EAaxC,OAVIjE,EAAM5oC,QAAQqrC,SACN,CACJ,IAAI2+K,GAAQ,EAAG,EAAIzlB,GAAW,IAAIylB,GAAQ,EAAIp6M,EAAO/G,EAAM,GAAI,IAAImhN,GAAQ,EAAG,EAAIzlB,IAG9E,CACJ,IAAIylB,GAAQ,EAAIzlB,EAAU,GAAI,IAAIylB,GAAQ,EAAG,EAAIp6M,EAAO/G,GAAO,IAAImhN,GAAQ,EAAIzlB,EAAU,GAKrG,EAEAoiD,QAAS,WACL,IACI/9M,EADM/vC,KACM+vC,MACZ5oC,EAFMnH,KAEQmH,QACdmrF,EAAY,IAAIk8J,EAA4BxuP,KAAK24B,SAAUnwB,EAAWrB,EAAQmrF,UAAW,CACzF9/C,SAAUzC,EAAM5oC,QAAQqrC,SACxBwB,OAAQjE,EAAM5oC,QAAQ6sC,OACtB+E,OAAQ/4C,KAAKuuP,QAAQpnP,EAAQ4xC,QAC7Bh9B,KAAMg0B,EAAM0oI,QAAQtxK,EAAQ0mP,WAC5BvvN,GAAIyR,EAAM0oI,QAAQtxK,EAAQuB,WAGQ,IAAlCvB,EAAQmrF,UAAU5yE,cAClB4yE,EAAUnrF,QAAQmgB,SAAW,GAGjCgrE,EAAUx8C,QACVw8C,EAAUp7C,MACd,EAEA/mC,OAAQ,WACJ,IACI4/B,EADM/vC,KACM+vC,MACZ5oC,EAFMnH,KAEQmH,QACd4nP,EAAiB/uP,KAAKsuP,oBACtBxrG,EAAQ9iJ,KAAK8uP,aAAa3nP,EAAQuB,OAEtCvB,EAAQmrF,UAAU5sF,KAAOulP,EAEzB,IAAItyN,EAAW,IAAIi2N,GAAO,CACtBhvH,OAAQmvH,EAAenvH,OACvBlsG,KAAMq7N,EAAer7N,OACtB8oB,OAAOsmG,EAAM,IAAIjW,OAAOiW,EAAM,IAAIjW,OAAOiW,EAAM,IAAIp9F,QAElDm1H,EAAO9qI,EAAM0oI,QAAQtxK,EAAQuB,OAKjC,OAJAiwB,EAASgb,UAAUA,IAAYvD,UAAUyqI,EAAK58F,GAAI48F,EAAK38F,KAEvDl+E,KAAK24B,SAAWA,EAETA,CACX,IAGAq2N,GAA4BlzM,EAAU/4C,OAAO,CAC7C+yC,MAAO,WACH,IAAI3uC,EAAUnH,KAAKmH,QACfg+B,EAAOnlC,KAAKmlC,KAAOh+B,EAAQqrC,SAAW8uH,EAAU/rJ,EAAI+rJ,EAAUj8J,EAC9Di5B,EAAKt+B,KAAKs+B,GAAKn3B,EAAQ8nP,UAAU,GAAG9pN,GACpCppB,EAAO/b,KAAK+b,KAAO5U,EAAQ+nP,UAAU,GAAG/pN,GAEnB,IAArBh+B,EAAQmgB,WACRngB,EAAQmgB,SAAWjkB,KAAK8V,IAAK9V,KAAKoU,IAAI6mB,EAAKviB,GAAQ5U,EAAQgoP,MAAS,IAAM,IAG9EnvP,KAAK4tD,KAAK7xC,EACd,EAEA+2B,KAAM,SAASuiD,GACX,IAAI3sF,EAAQunL,EAAiBjwL,KAAK+b,KAAM/b,KAAKs+B,GAAI+2D,GACjDr1F,KAAK4tD,KAAKllD,EACd,EAEAklD,KAAM,SAASllD,GACX,IAAIgnB,EAAS,MAAQ1vB,KAAKmlC,KAAK71B,cAC3B8zH,EAASpjI,KAAKmH,QAAQ8nP,UAE1B7rH,EAAO,GAAG1zG,GAAQhnB,GAClB06H,EAAO,GAAG1zG,GAAQhnB,EACtB,IAGJs7J,EAAkBgrF,GAA2B,CACzC74G,OAAQk1G,EACR8D,MAz2Be,MA42BnBn5G,EAAiBhiI,QAAQmjB,SAAS+zN,EAAa8D,IAE/C,IAAII,GAAUtE,EACVuE,GAAStE,EAETuE,GAAmBvB,EAAchrP,OAAO,CACxCoF,KAAM,SAAS4nC,EAAO5oC,GAClB4mP,EAAchmP,GAAGI,KAAKoC,KAAKvK,KAAM+vC,EAAO5oC,GAEnC2vH,EAAQ92H,KAAKmH,QAAQ6I,QACtBhQ,KAAKmH,QAAQ6I,KAA4C,GAArChQ,KAAK+vC,MAAM5oC,QAAQsuK,WAAWzlK,KAE1D,EAEA8+O,aAAc,SAASpmP,GACnB,IACIqnC,EADM/vC,KACM+vC,MACZ5oC,EAFMnH,KAEQmH,QACdurI,EAAQ3iG,EAAM5oC,QACd6sC,EAAS0+F,EAAM1+F,OACfxB,EAAWkgG,EAAMlgG,SACjBjT,EAAMyU,IAAWxB,GAAY,EAAI,EACjCxiC,EAAO7I,EAAQ6I,KAAOuvB,EACtBgwN,EAAUx/M,EAAM0oI,QAAQ1oI,EAAM5oC,QAAQuP,KACtCmkK,EAAO9qI,EAAM0oI,QAAQ/vK,GACrBy8B,EAAOqN,EAAW8uH,EAAU/rJ,EAAI+rJ,EAAUj8J,EAC1CmqP,EAAWh9M,EAAW8uH,EAAUj8J,EAAIi8J,EAAU/rJ,EAC9CwjC,EAAS/4C,KAAKuuP,UAAYhvN,EAE1BukG,EAAK,IAAIq1D,EACbr1D,EAAG3+F,GAAQoqN,EAAQpqN,EAAO,KAC1B2+F,EAAG0rH,GAAYD,EAAQC,EAAW,KAElC,IAAIhsH,EAAK,IAAI21D,EACb31D,EAAGr+F,GAAQ01I,EAAK11I,EAAO,KACvBq+F,EAAGgsH,GAAY30E,EAAK20E,EAAW,KAE3Bh9M,GACAsxF,EAAG1zF,UAAU2I,EAAQ,GACrByqF,EAAGpzF,UAAU2I,EAAQ,KAErB+qF,EAAG1zF,UAAU,EAAG2I,GAChByqF,EAAGpzF,UAAU,EAAG2I,IAGpB,IAAIwrF,EAAKf,EAAGp8H,QACRyjI,EAAK/G,EAAG18H,QAUZ,OARIorC,GACA+xF,EAAGn0F,UAAUpgC,EAAM,GACnB66H,EAAGz6F,UAAUpgC,EAAM,KAEnBu0H,EAAGn0F,UAAU,EAAGpgC,GAChB66H,EAAGz6F,UAAU,EAAGpgC,IAGb,CAAE8zH,EAAIN,EAAIe,EAAIsG,EACzB,EAEAijH,QAAS,WACL,IACI/9M,EADM/vC,KACM+vC,MACZ5oC,EAFMnH,KAEQmH,QACd27I,EAAQ9iJ,KAAK8uP,aAAa3nP,EAAQuB,OAClC+mP,EAAczvP,KAAKyvP,YACnBC,EAAW1vP,KAAK8uP,aAAa3nP,EAAQ0mP,WAEzC4B,EAAYjzM,OAAOsmG,EAAM,IAAIjW,OAAOiW,EAAM,IAAIjW,OAAOiW,EAAM,IAAIjW,OAAOiW,EAAM,IAAIp9F,QAEhF,IAAI4sC,EAAY,IAAI08J,GAA0BS,EAAajnP,EAAWrB,EAAQmrF,UAAW,CACrFj8E,QAAS05B,EAAM5oC,QAAQkP,QACvBm8B,SAAUzC,EAAM5oC,QAAQqrC,SACxB08M,UAAW,CAAEQ,EAAS,GAAIA,EAAS,IACnCT,UAAW,CAAEnsG,EAAM,GAAIA,EAAM,QAGK,IAAlC37I,EAAQmrF,UAAU5yE,cAClB4yE,EAAUnrF,QAAQmgB,SAAW,GAGjCgrE,EAAUx8C,QACVw8C,EAAUp7C,MACd,EAEA/mC,OAAQ,WACJ,IAAIokD,EAAQ,IAAI66L,GACZL,EAAiB/uP,KAAKsuP,oBAEtBtuP,KAAKmH,QAAQ6mP,MAAMhhP,SACnBunD,EAAMpa,OAAOn6C,KAAK2vP,eAGtB,IAAI/xK,EAAU59E,KAAKyvP,YAAc,IAAIJ,GAAO,CACxCzvH,OAAQmvH,EAAenvH,OACvBlsG,KAAMq7N,EAAer7N,OAOzB,OAJA6gC,EAAMpa,OAAOyjC,GAEb59E,KAAK24B,SAAW47B,EAETA,CACX,EAEAo7L,YAAa,WACT,IAAIC,EAAe5vP,KAAKmH,QAAQ6mP,MAC5BthF,EAASkjF,EAAaljF,QAAU,CAAC,EACjCyhF,EAAWnuP,KAAKmuP,SAAS/mP,QAAQoE,IAAIkhK,EAAO3gK,OAAS,GAEzD,OAAO,IAAIsjP,GAAOhgH,SAAS8+G,EAASlmF,SAAU,CAC1Cv0I,KAAM,CACFu9F,MAAO2+H,EAAa3+H,MACpBl6F,QAAS64N,EAAa74N,SAE1B6oG,OAAQ,CACJ3O,MAAOy7C,EAAO3gK,MAAQ2gK,EAAOz7C,OAAS2+H,EAAa3+H,MAAQ,GAC3DllH,MAAO2gK,EAAO3gK,MACd8yI,SAAU6tB,EAAO7tB,WAG7B,IAMAgxG,GAAU/E,EAEVgF,GAAcjE,EAAM9oP,OAAO,CAC3BsvI,OAAQ,SAAS1U,GACb,IAAI12G,EAAWjnB,KAAKinB,SAChB8oO,EAAQpyH,EAAK3kF,OAAO5zC,EACpB4qP,EAAQryH,EAAK3kF,OAAO70C,EAEpBm1C,EAAM,IAAIytH,EAAIgpF,EAAOC,EAAOD,EAAQpyH,EAAK5xH,QAASikP,EAAQryH,EAAK3xH,UAEnEhM,KAAK+vC,MAAMsiG,OAAO/4F,GAClBt5C,KAAKiwP,kBAAkB32M,GAEvB,IAAK,IAAI/xC,EAAI,EAAGA,EAAI0f,EAASzf,OAAQD,IACjC0f,EAAS1f,GAAG8qI,SAGhBryI,KAAK29H,KAAO39H,KAAKkwP,QAAQ52M,GACzBt5C,KAAKmwP,iBACLnwP,KAAKowP,kBACLpwP,KAAKqwP,eACLrwP,KAAKisP,OACT,EAEAoE,aAAc,WACV,IAAI9kF,EAAU,IAAIskF,GACdS,EAAgBtwP,KAAK+vC,MAAM5/B,SAC3B8W,EAAWjnB,KAAKinB,SAEpBskJ,EAAQpxH,OAAOn6C,KAAKusP,WACpBhhF,EAAQpxH,OAAOm2M,GAEf,IAAK,IAAI/oP,EAAI,EAAGA,EAAI0f,EAASzf,OAAQD,IAAK,CACtC,IAAIyM,EAAUiT,EAAS1f,GACvBgkK,EAAQpxH,OAAOnmC,EAAQ7D,UACvB6D,EAAQtL,MAAMsL,EAAQ7M,QAAQuB,MAClC,CAEA1I,KAAKksP,SAAW3gF,CACpB,EAEAkhF,aAAc,WACV,IAEItlP,EAAUnH,KAAKmH,QACf4oC,EAAQ/vC,KAAK+vC,MAAQ,IAAIs9M,EAAYlmP,EAAQ4oC,MAAO/vC,KAAK8rP,gBAE7D9rP,KAAKinB,SAAW,GAEhB,IAAIA,EAAW9f,EAAQy2E,QACvB32D,EAAWhkB,EAAQgkB,GAAYA,EAAW,CAAEA,GAE5C,IAAK,IAAI1f,EAAI,EAAGA,EAAI0f,EAASzf,OAAQD,IAAK,CACtC,IAAI6sB,EAAiB5rB,EAAW,CAAC,EAAGye,EAAS1f,GAAI,CAC7C+qF,UAAW,CACP5yE,YAAavY,EAAQuY,eAGzB6wO,EAniCJ,UAmiCkBn8N,EAAe0uH,MAAkB+rG,GAAqBS,GAhB7DtvP,KAkBFinB,SAAStlB,KAAK,IAAI4uP,EAAYxgN,EAAO3b,GAClD,CACJ,EAEA04N,aAAc,WACV,IAAIt6M,EAAWxyC,KAAKmH,QAAQ4oC,MAAMyC,SAElC,MAAO,CACHzmC,MAAOymC,EAvEK,GAj+BJ,IAyiCRxmC,OAAQwmC,EA3iCC,IAo+BI,GAyErB,EAEA09M,QAAS,SAAS52M,GAOd,IANA,IAUItpC,EATA+/B,EADM/vC,KACM+vC,MACZ9oB,EAFMjnB,KAESinB,SACfyqJ,EAAYp4H,EAAIilC,SAChBiyK,EAAcvpO,EAAS,GAAGqyB,IAAIlyC,QAAQulB,KAAKojB,EAAMuJ,KAE5C/xC,EAAI,EAAGA,EAAI0f,EAASzf,OAAQD,IACjCipP,EAAY7jO,KAAK1F,EAAS1f,GAAG+xC,IAAIlyC,SAkBrC,OAdI2oC,EAAM5oC,QAAQqrC,UACdxiC,EAAOwgP,EAAYzkP,QAAU,EAC7BykP,EAAc,IAAIzpF,EACd2K,EAAUtsK,EAAI4K,EAAMspC,EAAI4kC,GACxBwzF,EAAUtsK,EAAI4K,EAAMspC,EAAI8kC,MAG5BpuE,EAAOwgP,EAAYxkP,SAAW,EAC9BwkP,EAAc,IAAIzpF,EACdztH,EAAI2kC,GAAIyzF,EAAUvtK,EAAI6L,EACtBspC,EAAI6kC,GAAIuzF,EAAUvtK,EAAI6L,IAIvBwgP,CACX,EAEAL,eAAgB,WAUZ,IATA,IAaIpxN,EAVAgR,EADM/vC,KACM+vC,MACZ9oB,EAFMjnB,KAESinB,SACfwpO,EAAW1gN,EAAMuJ,IACjBA,EAAMryB,EAAS,GAAGqyB,IAAIlyC,QAAQulB,KAAKojB,EAAMuJ,KACzCk3M,EAAcxwP,KAAK29H,KAEdp2H,EAAI,EAAGA,EAAI0f,EAASzf,OAAQD,IACjC+xC,EAAI3sB,KAAK1F,EAAS1f,GAAG+xC,IAAIlyC,SAIzB2oC,EAAM5oC,QAAQqrC,UACdzT,EAAOyxN,EAAYjyK,SAASn5E,EAAIk0C,EAAIilC,SAASn5E,EAC7C2qC,EAAMsiG,OAAO,IAAI00B,EACb0pF,EAASxyK,GAAKl/C,EAAMyxN,EAAYtyK,GAChCuyK,EAAStyK,GAAKp/C,EAAMyxN,EAAYpyK,OAGpCr/C,EAAOyxN,EAAYjyK,SAASp6E,EAAIm1C,EAAIilC,SAASp6E,EAC7C4rC,EAAMsiG,OAAO,IAAI00B,EACb0pF,EAASxyK,GAAIwyK,EAASvyK,GAAKn/C,EAC3B0xN,EAAStyK,GAAIsyK,EAASryK,GAAKr/C,KAInC,IAAK,IAAIknI,EAAM,EAAGA,EAAMh/I,EAASzf,OAAQy+J,IACrCh/I,EAASg/I,GAAK5zB,OA7BHryI,KA6BmB29H,KAEtC,EAEAsyH,kBAAmB,SAAStyH,GACxB,IACI5tF,EADM/vC,KACM+vC,MAChB,IAAKA,EAAM5oC,QAAQqrC,SAAU,CACzB,IAAIllB,EAAWyiB,EAAMw9H,aAAaxhK,QAAU4xH,EAAK5xH,QAC7CuhB,EAAW,IACXyiB,EAAMuJ,IAAIguH,OAAOh6I,EAAU,GAC3ByiB,EAAMuJ,IAAI8tH,QAAQzpC,EAAM,UACxB5tF,EAAMsiG,OAAOtiG,EAAMuJ,KAE3B,CACJ,EAEA82M,gBAAiB,WAUb,IATA,IAGIrgN,EADM/vC,KACM+vC,MACZ9oB,EAFMjnB,KAESinB,SACfwpO,EAAW1gN,EAAMuJ,IAAIlyC,QACrBiuF,EAAMtlD,EAAM5oC,QAAQqrC,SAAW,IAAM,IACrCy7M,EAAahnO,EAAS,GAAGqyB,IAEpB/xC,EAAI,EAAGA,EAAI0f,EAASzf,OAAQD,IACjC0mP,EAAWthO,KAAK1F,EAAS1f,GAAG+xC,IAAIlyC,SAGpCqpP,EAASp7J,EAAM,IAAMhyF,KAAK8V,IAAIs3O,EAASp7J,EAAM,GAAK44J,EAAW54J,EAAM,GAAI,GACvEo7J,EAASp7J,EAAM,IAAMhyF,KAAK8V,IAAI80O,EAAW54J,EAAM,GAAKo7J,EAASp7J,EAAM,GAAI,GAEvEtlD,EAAMsiG,OAAOo+G,GAEb,IAAK,IAAIxqF,EAAM,EAAGA,EAAMh/I,EAASzf,OAAQy+J,IACrCh/I,EAASg/I,GAAK5zB,OAnBHryI,KAmBmB29H,KAEtC,IAGJqmC,EAAkB8rF,GAAa,CAC3BpwO,aAAa,EACb6sO,UAAW,CACPz3F,WAAY,IAEhB/kH,MAAO,CACHyC,UAAU,KAIlB,IAAIk+M,GAAuB,IAEvBtuH,GAAM13G,EAAQ03G,IACduuH,GAAS5F,EACT6F,GAAU9F,EAEd,SAAS+F,GAAUliH,EAAKmiH,EAAY32H,EAAM06C,GACtC,IAAIqJ,EAAQ,IAAI0yE,GACZryK,EAASowD,EAAIpwD,OACbjyD,EAASqiH,EAAIoiH,aAEjB,GAAIl8E,EAAY7nK,QACZ,IAAK,IAAIzF,EAAI,EAAGA,EAAIupP,EAAWtpP,OAAQD,IAAK,CACxC,IAAIypP,EAAYriH,EAAIpO,QAAQuwH,EAAWvpP,IACnC0pP,EAAU,IAAI93D,EAAc56G,EAAOn5E,EAAIknB,EAASuoJ,EAAY7kK,KAAMuuE,EAAOp6E,GAAGgtC,OAAO2/M,EAAWvpP,GAAIg3E,GAEtG2/F,EAAM/jI,OAAO,IAAIw2M,GAAO,CACpB/wH,OAAQ,CACJ3O,MAAO4jD,EAAY5jD,MACnBllH,MAAO8oK,EAAY9oK,SAExBywC,OAAOw0M,GAAWnkH,OAAOokH,GAChC,CAGJ,OAAO/yE,CACX,CAEA,SAASgzE,GAAan1O,EAAMuiB,EAAI2yF,EAAOl6F,GACnC,MAAO,CAAEhb,KAAMA,EAAMuiB,GAAIA,EAAI2yF,MAAOA,EAAOl6F,QAASA,EACxD,CAEA,IAAIo6N,GAAc7oE,EAAYvlL,OAAO,CACjCoF,KAAM,SAAShB,EAASkjK,GACpBie,EAAYvgL,GAAGI,KAAKoC,KAAKvK,KAAM,EAAG,EAAGmH,EAASkjK,EAClD,EAEAJ,gBAAiB,SAAS9iK,GACtB,IAAIk5K,EAAe73K,EAAW,CAAC,EAAGxI,KAAKmH,QAASA,GAIhD,OAHAk5K,EAAa/I,UAAY+I,EAAa/I,WAAa7sJ,EAAQg8I,cAAc4Z,EAAa3pK,IAAK2pK,EAAalnK,KACxGknK,EAAazI,UAAYyI,EAAazI,WAAayI,EAAa/I,UAAY,GAErE+I,CACX,EAEA1K,WAAY,WACZ,EAEAxlK,OAAQ,SAASouE,EAAQjyD,GACrB,IAAIqiH,EAAM3uI,KAAKoxP,UAAU7yK,EAAQjyD,GAEjCtsB,KAAK29H,KAAOgR,EAAIhR,OAChB39H,KAAKqxP,cAAgBrxP,KAAKstP,eAC1BttP,KAAKk+K,MAAQl+K,KAAKmtP,cAClBntP,KAAKg5D,OAASh5D,KAAK0tP,cACvB,EAEAr7G,OAAQ,SAAS1U,GACb,IAAIp/C,EAASo/C,EAAKp/C,SACdjyD,EAASjpB,KAAKqT,IAAIinH,EAAK3xH,SAAU2xH,EAAK5xH,SAAW,EAErD,IAAI+qH,EAAQ92H,KAAK29H,MAMb,OAAO39H,KAAKmQ,OAAOouE,EAAQjyD,GAL3BtsB,KAAK29H,KAAO39H,KAAK2uI,IAAIhR,OACrB39H,KAAKssB,OAAOtsB,KAAK2uI,IAAIoiH,cACrB/wP,KAAKsxP,mBACLtxP,KAAKstP,cAIb,EAEA1/D,UAAW,SAASllL,GAChB,IAAI2pH,EAAMryH,KAAKmH,QACXuP,EAAM27G,EAAI37G,IACVyC,EAAMk5G,EAAIl5G,IACV9C,EAAUg8G,EAAIh8G,QACdksH,EAAalQ,EAAIkQ,WACjBC,EAAWnQ,EAAImQ,SACfpI,EAAQoI,EAAWD,EASvB,OANIlsH,EACSmsH,GAAY95H,EAAQgO,IAAQyC,EAAMzC,GAAO0jH,GAEvC1xH,EAAQgO,IAAQyC,EAAMzC,GAAO0jH,EAASmI,GAGrCmuH,EACpB,EAEAa,UAAW,WACP,IAAIv4L,EAASh5D,KAAKmH,QAAQ6xD,OAE1B,OAAOA,GAAUA,EAAOxxD,MAC5B,EAEAgqP,UAAW,WACP,IAAIn/H,EAAMryH,KAAKmH,QACXsuK,EAAapjD,EAAIojD,WACjBF,EAAaljD,EAAIkjD,WACjBvlK,EAAO,EASX,OARIylK,EAAWzoK,UACXgD,EAAOylK,EAAWzlK,MAGlBulK,EAAWvoK,UACXgD,EAAO3M,KAAK8V,IAAIo8J,EAAWvlK,KAAMA,IAG9BA,CACX,EAEAimK,YAAa,WACT,IAAI36J,EAAQgtK,EAAYvgL,GAAGkuK,YAAY1rK,KAAKvK,MACxCmH,EAAUnH,KAAKmH,QAOnB,OANYA,EAAQq7H,SAAWr7H,EAAQo7H,YAE1B,KAAQp7H,EAAQgS,IAAMhS,EAAQmwK,WAAc,IACrDh8J,GAAS,GAGNA,CACX,EAEAgyO,aAAc,WACV,IAAIr6H,EAAWjzH,KAEXmH,EAAUnH,KAAKmH,QACfwnI,EAAM3uI,KAAK2uI,IAAIvnI,QACfklB,EAASqiH,EAAIoiH,aACbD,EAAa9wP,KAAK8wP,WAAWniH,EAAKxnI,EAAQmwK,WAC1CwE,EAAY30K,EAAQ20K,UAAY30K,EAAQ20K,WAAsB,GAATxvJ,EACrDmlO,EAAc,IAAIb,GAElBc,EAAyB,IAATplO,EAChBwqG,EAAQ3vH,EAAQuqP,eAChBA,EAAgBvqP,EAAQuqP,cAExBvqP,EAAQuqP,cAAgBA,EAG5B,IAAI32B,EAAgB5zN,EAAQiuK,OACxBu8E,EAAW52B,EAAcztN,WAAauzJ,EACtC+wF,EAAmB96H,EAAQ92H,KAAKqxP,eAEhCM,IACArlO,GAAUtsB,KAAKwxP,YAEXxxP,KAAKuxP,cAAgBK,IACrBtlO,GAAUwvJ,EAAY41E,GAE1B/iH,EAAIkjH,WAAWvlO,GAAQwlO,WAAWxlO,IAStC,IANA,IAAI8oJ,EAASp1K,KAAKo1K,OACd95J,EAAQ85J,EAAO5tK,OACfwwI,EAAUkrB,EAAW63D,EAAc/iF,SACnC+5G,GAAgB/5G,EAAQxrH,KAAOwrH,EAAQvrH,OAAS,EAChDulO,GAAiBh6G,EAAQ9yH,IAAM8yH,EAAQtrH,QAAU,EAE5CnlB,EAAI,EAAGA,EAAI+T,EAAO/T,IAAK,CAC5B,IAAI+sB,EAAQ8gJ,EAAO7tK,GACfg8I,EAAYjvH,EAAMglB,IAAIvtC,QAAU,EAChCy3I,EAAalvH,EAAMglB,IAAIttC,SAAW,EAClCouH,EAAQ02H,EAAWvpP,GACnBozK,GAAcvgD,EAAQs2H,IAAwBtF,EAE9CnwB,EAAKtsF,EAAIpO,QAAQnG,GACjB2L,EAAKk1F,EAAG71N,EAAK/B,KAAKg3H,IAAIsgD,IAAep3B,EAAYwuG,IAAiBJ,EAAW,GAAK,GAClF3rH,EAAKi1F,EAAG92N,EAAKd,KAAKi3H,IAAIqgD,IAAen3B,EAAawuG,IAAkBL,EAAW,GAAK,GAExFr9N,EAAM+9G,OAAO,IAAI00B,EAAIhhC,EAAKwd,EAAWvd,EAAKwd,EAAYzd,EAAKwd,EAAWvd,EAAKwd,IAC3E,IAAIyuG,EAAW,IAAI94D,EAAc7kK,EAAMglB,IAAI2kC,GAAI3pD,EAAMglB,IAAI4kC,IAErDg0K,OAAe,EACnB,GAAKN,EAGE,CAEH,IAAIO,GADJD,EAAej/H,EAASo+H,cAAc97M,SAAShuC,IACfo2H,OAAO3kF,OAEnCo5M,EAAiBF,EAAav+M,aAAeA,IACjDy+M,EAAehiN,UAAU6hN,EAAS7sP,EAAI+sP,EAAa/sP,EAAG6sP,EAAS9tP,EAAIguP,EAAahuP,GAChF+tP,EAAav+M,UAAUy+M,EAC3B,MATIF,EAAezG,EAAkBn3N,EAAOntB,EAAQiuK,QAChDq8E,EAAYt3M,OAAO+3M,GAUvBj/H,EAAS0K,KAAOV,EAAKsB,MAAMtL,EAAS0K,KAAMu0H,EAAav0H,OAC3D,CAEA,OAAO8zH,CACX,EAEAH,iBAAkB,WACd,IAAIt4L,EAASh5D,KAAKg5D,OAAOzjB,SAEzB,GAAIyjB,EAAOxxD,OAAS,EAAG,CACnB,IAAI6qH,EAAMryH,KAAKmH,QACXuqP,EAAgBr/H,EAAIq/H,cACpB51E,EAAYzpD,EAAIypD,UAChBu2E,EAAcryP,KAAKsyP,iBAEnBtyP,KAAKmH,QAAQiuK,OAAO9nK,WAAauzJ,IACjCwxF,GAAev2E,EAAY41E,GAK/B,IAFA,IAAInpF,EAAY8pF,EAAev2E,EAAY,EAElCv0K,EAAI,EAAGA,EAAIyxD,EAAOxxD,OAAQD,IAC/ByxD,EAAOzxD,GAAGs6H,UAAUgwH,WAAWtpF,GAAWupF,WAAWvpF,GAGzDvoK,KAAK29H,KAAOV,EAAKsB,MAAMv+H,KAAK29H,KAAM39H,KAAKg5D,OAAO2kE,OAClD,CACJ,EAEA+vH,aAAc,WACV,IAAIz6H,EAAWjzH,KAEXmtI,EAAWntI,KAAKuyP,gBAChBC,EAAgBrlH,EAAS3lI,OACzBsP,EAAS,IAAI85O,GAEjB,GAAI4B,EAAe,CACf,IAAIngI,EAAMryH,KAAKmH,QACX20K,EAAYzpD,EAAIypD,UAChBzlK,EAAUg8G,EAAIh8G,QACdq7O,EAAgBr/H,EAAIq/H,cACpBW,EAAcryP,KAAKsyP,iBAGvBtyP,KAAKssB,OAAOtsB,KAAKssB,SAAWwvJ,EAAY41E,GAExC,IAAK,IAAInqP,EAAI,EAAGA,EAAIirP,EAAejrP,IAAK,CACpC,IAAIgjI,EAAU4C,EAAS5lI,GACnBwU,EAAOk3G,EAAS26D,UAAUrjD,EAAQl0H,EAAU,KAAO,SACnDioB,EAAK20F,EAAS26D,UAAUrjD,EAASl0H,EAAiB,OAAP,OAE3CioB,EAAKviB,GAAS,GACdjF,EAAOqjC,OAAO84E,EAAStsF,YAAY5qB,EAAMuiB,EAAI+zN,EAAa9nH,GAElE,CACJ,CAEA,OAAOzzH,CACX,EAEA6vB,YAAa,SAAS47F,EAAYC,EAAU6vH,EAAalrP,GACrD,IAAI20K,EAAY97K,KAAKmH,QAAQ20K,UACzB22E,EAAY,IAAI9wH,EAASS,IAAIpiI,KAAK2uI,IAAIpwD,OAAQ,CAC9C8jD,QAASgwH,EAAev2E,EAAY,EACpCx5C,QAAS+vH,EAAev2E,EAAY,EACpCv5C,WAAYA,EACZC,SAAUA,IAGd,OAAO,IAAIJ,GAAIqwH,EAAW,CACtB7yH,OAAQ,CACJ7zH,MAAO+vK,EACP7qD,MAAO9pH,EAAQ8pH,MACfl6F,QAAS5vB,EAAQ4vB,QACjBkoH,QAAS93I,EAAQ83I,UAG7B,EAEAszG,cAAe,WACX,IAAIprP,EAAUnH,KAAKmH,QACf6xD,EAAS7xD,EAAQ6xD,QAAU,GAC3B19C,EAAQ09C,EAAOxxD,OACf2lI,EAAW,GAEf,GAAI7xH,EAAO,CACP,IAAI5E,EAAMvP,EAAQuP,IACdyC,EAAMhS,EAAQgS,IACdqyL,EAAerkM,EAAQoxL,sBAC3BprD,EAASxrI,KAAKuvP,GAAax6O,EAAKyC,EAAKqyL,IAErC,IAAK,IAAIjkM,EAAI,EAAGA,EAAI+T,EAAO/T,IAIvB,IAHA,IAAI0sD,EAAQ23L,EAAS5yL,EAAOzxD,GAAImP,EAAKyC,GACjCq5O,EAAgBrlH,EAAS3lI,OAEpBujC,EAAI,EAAGA,EAAIynN,EAAeznN,IAAK,CACpC,IAAIw/F,EAAU4C,EAASpiG,GAEvB,GAAIw/F,EAAQxuH,MAAQk4C,EAAMl4C,MAAQk4C,EAAMl4C,MAAQwuH,EAAQjsG,GAAI,CACxD6uG,EAASxrI,KAAKuvP,GAAaj9L,EAAMl4C,KAAMk4C,EAAM31B,GAAI21B,EAAMg9D,MAAOh9D,EAAMl9B,UAEhEwzG,EAAQxuH,MAAQk4C,EAAM31B,IAAM21B,EAAM31B,IAAMisG,EAAQjsG,IAChD6uG,EAASxrI,KAAKuvP,GAAaj9L,EAAM31B,GAAIisG,EAAQjsG,GAAIktK,EAAcv3I,EAAMl9B,UAGzEwzG,EAAQjsG,GAAK21B,EAAMl4C,KAEnB,KACJ,CACJ,CAER,CAEA,OAAOoxH,CACX,EAEAmlH,eAAgB,WACZ,IACI3jH,EADM3uI,KACI2uI,IACVxnI,EAFMnH,KAEQmH,QACd20K,EAAY30K,EAAQ20K,UACpB41E,EAAgBvqP,EAAQuqP,cACxBr8E,EAAgBluK,EAAQsuK,WAAWzlK,KASvC,OANI7I,EAAQiuK,OAAO9nK,WAAa4zJ,EACnBvyB,EAAIoiH,aAAe17E,EAAgBq8E,EAAgB51E,EAEnDntC,EAAIoiH,aAAej1E,CAIpC,EAEAs1E,UAAW,SAAS7yK,EAAQjyD,GACxB,IAAInlB,EAAUnH,KAAKmH,QASnB,OAPUnH,KAAK2uI,IAAM,IAAIhN,EAASS,IAAI7jD,EAAQ,CAC1C8jD,QAAS/1G,EACTg2G,QAASh2G,EACTi2G,WAAYp7H,EAAQo7H,WAAamuH,GACjCluH,SAAUr7H,EAAQq7H,SAAWkuH,IAIrC,EAEAvD,YAAa,WACT,IACIx+G,EADM3uI,KACI2uI,IACVxnI,EAFMnH,KAEQmH,QACdurP,EAAU/jH,EAAIvnI,QAElBpH,KAAK2yP,gBAAkB3yP,KAAK8wP,WAAWniH,EAAKxnI,EAAQmwK,WACpDt3K,KAAKy1K,WAAao7E,GAAU6B,EAAS1yP,KAAK2yP,gBAAiBxrP,EAAQmwK,UAAWnwK,EAAQsuK,YAEtF,IAAIm9E,EAAW,IAAIhC,GACnBgC,EAASz4M,OAAOn6C,KAAKy1K,YAErB,IAAIJ,EAAgBluK,EAAQsuK,WAAWzlK,KACnCslK,EAAgBnuK,EAAQouK,WAAWvlK,KAIvC,GAFAhQ,KAAK6yP,gBAAkBx9E,EAAgBC,EAEnCnuK,EAAQiuK,OAAO9nK,WAAa4zJ,EAAS,CACrC,IAAI50I,EAASomO,EAAQ3B,aACrB2B,EAAQb,WAAWvlO,EAAS+oJ,EAAgBC,GACvCw8E,WAAWxlO,EAAS+oJ,EAAgBC,EAC7C,CAMA,OAJAt1K,KAAK8yP,gBAAkB9yP,KAAK+yP,oBAAoB/yP,KAAK8wP,WAAWniH,EAAKxnI,EAAQywK,YAC7E53K,KAAKu1K,WAAas7E,GAAU6B,EAAS1yP,KAAK8yP,gBAAiB3rP,EAAQywK,UAAWzwK,EAAQouK,YACtFq9E,EAASz4M,OAAOn6C,KAAKu1K,YAEdq9E,CACX,EAEAG,oBAAqB,SAASxpF,GAI1B,IAHA,IAAIpiK,EAAUnH,KAAKmH,QACf09C,EAAO19C,EAAQmwK,UAAYnwK,EAAQywK,UAE9BrwK,EAAIgiK,EAAO/hK,OAAS,EAAGD,GAAK,EAAGA,IAChCA,EAAIs9C,GAAS,GACb0kH,EAAO/+J,OAAOjD,EAAG,GAIzB,OAAOgiK,CACX,EAEAunF,WAAY,SAASpjE,EAAM7D,GACvB,IAAI1iL,EAAUnH,KAAKmH,QACfkP,EAAUlP,EAAQkP,QAClB49C,EAAQ9sD,EAAQgS,IAAMhS,EAAQuP,IAC9B0jH,EAAQszD,EAAKlrD,SAAWkrD,EAAKnrD,WAC7BywH,EAAY/+L,EAAQ41H,EACpBx0F,EAAMq4F,EAAKnrD,WACXzvF,EAAOsnF,EAAQ44H,EAEf38O,IACAg/E,GAAO+kC,EACPtnF,GAAQA,GAGRsnF,GAAS,KAAQjzH,EAAQgS,IAAM0wK,GAAc,IAC7CmpE,GAAa,GAIjB,IADA,IAAI99J,EAAY,GACP3tF,EAAI,EAAGA,EAAIyrP,EAAWzrP,IAC3B2tF,EAAUvzF,KAAK2U,EAAM++E,EAAKusE,IAC1BvsE,GAAOviD,EAOX,OAJIx8B,EAAM++E,IAAQq4F,EAAKlrD,UACnBttC,EAAUvzF,KAAK0zF,GAGZH,CACX,EAEA5oE,OAAQ,SAAS5jB,GACb,IAAIA,EAKA,OAAO1I,KAAK2uI,IAAIoiH,aAJhB/wP,KAAK2uI,IAAIkjH,WAAWnpP,GAAOopP,WAAWppP,GACtC1I,KAAKizP,gBAAgBjzP,KAAKy1K,WAAWlgI,SAAUv1C,KAAK2yP,iBACpD3yP,KAAKizP,gBAAgBjzP,KAAKu1K,WAAWhgI,SAAUv1C,KAAK8yP,iBAAiB,EAI7E,EAEAG,gBAAiB,SAAS/0E,EAAO4yE,EAAYoC,GACzC,IAAIn0N,EAAOm0N,GAASlzP,KAAK6yP,iBAAwB,EAC7CH,EAAU1yP,KAAK2uI,IACfriH,EAASomO,EAAQ3B,aAEjBmC,GAASlzP,KAAKmH,QAAQiuK,OAAO9nK,WAAa4zJ,GAAoB,IAATniI,IACrD2zN,EAAU1yP,KAAK2uI,IAAIvnI,SACXyqP,WAAWvlO,EAASyS,GAAM+yN,WAAWxlO,EAASyS,GAG1D,IAAK,IAAIx3B,EAAI,EAAGA,EAAI22K,EAAM12K,OAAQD,IAAK,CACnC,IAAI4rP,EAAWT,EAAQnyH,QAAQuwH,EAAWvpP,IACtC4lI,EAAW+wC,EAAM32K,GAAG4lI,SACpBimH,EAAQD,EAAS/tP,EAAI+nI,EAAS,GAAGh7C,SAAS/sF,EAC1CiuP,EAAQF,EAAShvP,EAAIgpI,EAAS,GAAGh7C,SAAShuF,EAE9C+5K,EAAM32K,GAAGosC,WAAU,IAAIA,GAAYvD,UAAUgjN,EAAOC,GACxD,CACJ,IAGJrvF,EAAkBmtF,GAAa,CAC3Bz6O,IAAK,EACLyC,IAAK,IAELs8J,WAAY,CACRzlK,KAAM,GACNkhI,MAAO2vB,EACP5vC,MAAOqvC,EACPv0J,MAAOo/O,EACPn+O,SAAS,GAGbuoK,WAAY,CACRvlK,KAAM,GACNkhI,MAAO2vB,EACP5vC,MAAOqvC,EACPv0J,MAAOo/O,EACPn+O,SAAS,GAGbu1H,YAAa,GACbC,SAAU,IAEV4yC,OAAQ,CACJ9nK,SAAUuzJ,EACV7oB,QAAS,KAIjB,IAAIs7G,GAAyBx3M,EAAU/4C,OAAO,CAC1CoF,KAAM,SAAS0D,EAAS1E,GACpB20C,EAAU/zC,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAAS1E,GAEtC,IAAI6vM,EAAmBh3M,KAAKmH,QAE5B6vM,EAAiB1vL,SAAWjkB,KAAK8V,IAAK9V,KAAKoU,IAAIu/L,EAAiBu8C,SAAWv8C,EAAiBw8C,UAAYx8C,EAAiB1vL,SAAY,IAAM,EAC/I,EAEAwrB,KAAM,SAASuiD,GACX,IAAIluF,EAAUnH,KAAKmH,QACfizH,EAAQ61D,EAAiB9oL,EAAQqsP,SAAUrsP,EAAQosP,SAAUl+J,GAEjEr1F,KAAK6L,QAAQ8nC,UAAUA,IAAYxC,OAAOipF,EAAOjzH,EAAQo3E,QAC7D,IAGJylF,EAAkBsvF,GAAwB,CACtCn9G,OAAQk1G,EACR/jO,SAAU0jO,IAGdh1G,EAAiBhiI,QAAQmjB,SAASm0N,EAAgBgI,IAElD,IACInzH,GAASz1G,EAAQy1G,OACjBszH,GAAU3I,EACV4I,GAAS3I,EAET4I,GAAgB/F,EAAQ7qP,OAAO,CAC/B6wP,SAAU,SAASx5H,GACfp6H,KAAK24B,SAASgb,UAAUA,IAAYxC,OAAOipF,EAAOp6H,KAAKu+E,QAC3D,EAEAuvK,QAAS,WACL,IACI/9M,EADM/vC,KACM+vC,MACZ5oC,EAFMnH,KAEQmH,QACdqsP,EAAWzjN,EAAM69I,UAAUzmL,EAAQ0mP,WACnC0F,EAAWxjN,EAAM69I,UAAUzmL,EAAQuB,QAED,IAAlCvB,EAAQmrF,UAAU5yE,YAClB1f,KAAK4zP,SAASL,GAEd,IAAID,GAAuBtzP,KAAK24B,SAAUnwB,EAAWrB,EAAQmrF,UAAW,CACpEkhK,SAAUA,EACVD,SAAUA,KACVr8M,MAEZ,EAEA/mC,OAAQ,WACJ,IACI4/B,EADM/vC,KACM+vC,MACZ5oC,EAFMnH,KAEQmH,QACdwxB,EAAW,IAAI86N,GAenB,OAb0B,IAAtBtsP,EAAQmrF,WACR9pF,EAAWrB,EAAQmrF,UAAW,CAC1BiwC,WAAY,EACZhkD,OAAQxuC,EAAM4+F,IAAIpwD,OAClBloE,QAAS05B,EAAM5oC,QAAQkP,UAI/BsiB,EAASwhB,OAAOn6C,KAAK6zP,gBAAiB7zP,KAAK8zP,cAE3C9zP,KAAK24B,SAAWA,EAChB34B,KAAK4zP,SAASxI,GAEPzyN,CACX,EAEA05G,OAAQ,SAAS1D,GACb,IAAIpwD,EAASv+E,KAAKu+E,OAASowD,EAAIpwD,OAC3B/2E,EAASgxH,EAAWx4H,KAAKmH,QAAQK,QAAU,EAAG,GAAK,KACnD8kB,EAAStsB,KAAKssB,OAASqiH,EAAIoiH,aAAevpP,EAC1CusP,EAAU/zP,KAAK+zP,QAAU1wP,KAAKiT,MAAMgW,EAAStsB,KAAKmH,QAAQ6sP,IAAIhkP,MAElEhQ,KAAK29H,KAAOV,EAAKe,WAAW,IAAIm7D,EAAc56G,EAAOn5E,EAAI2uP,EAASx1K,EAAOp6E,EAAI4vP,GACzE,IAAI56D,EAAc56G,EAAOn5E,EAAI2uP,EAASx1K,EAAOp6E,EAAI4vP,GACzD,EAEAF,cAAe,WACX,IAAIv+E,EAAgBt1K,KAAK+vC,MAAM5oC,QAAQouK,WAAWvlK,KAC9CuuE,EAASv+E,KAAKu+E,OACd01K,EAAcj0P,KAAKmH,QAAQ8pH,MAE3BijI,EAAa,IAAIR,GAAO,CACxBhgO,KAAM,CAAEu9F,MAAOgjI,GACfr0H,OAAQ,CAAE3O,MAAOgjI,EAAaloP,MAAOo/O,KAQzC,OALA+I,EAAW13M,OAAO+hC,EAAOn5E,EAAIpF,KAAKssB,OAASgpJ,EAAe/2F,EAAOp6E,GAC5D0oI,OAAOtuD,EAAOn5E,EAAGm5E,EAAOp6E,EAAKnE,KAAK+zP,QAAU,GAC5ClnH,OAAOtuD,EAAOn5E,EAAGm5E,EAAOp6E,EAAKnE,KAAK+zP,QAAU,GAC5CruM,QAEEwuM,CACX,EAEAJ,WAAY,WACR,IAAI3sP,EAAUnH,KAAKmH,QACfgtP,EAAWhtP,EAAQ6sP,IAAI/iI,OAAS9pH,EAAQ8pH,MACxCgjC,EAAS,IAAItyB,EAASxB,OAAOngI,KAAKu+E,OAAQv+E,KAAK+zP,SAOnD,OALU,IAAI5zH,GAAO8zB,EAAQ,CACzBvgI,KAAM,CAAEu9F,MAAOkjI,GACfv0H,OAAQ,CAAE3O,MAAOkjI,IAIzB,IAGJnwF,EAAkB2vF,GAAe,CAC7BK,IAAK,CACDhkP,KA7FO,KA+FXw1G,MAAO,CACHz5G,MAAO,GACPC,OAAQ,IAEZsmF,UAAW,CACP5sF,KAAM4lP,EACNhkO,SAAU0jO,KAIlB,IAAIoJ,GAAUtJ,EAEVuJ,GAAcxI,EAAM9oP,OAAO,CAC3BsvI,OAAQ,SAAS1U,GACb,IAAI1K,EAAWjzH,KAEXinB,EAAWjnB,KAAKinB,SACpBjnB,KAAK+vC,MAAMsiG,OAAO1U,GAClB39H,KAAKs0P,iBAAmBt0P,KAAK+vC,MAAM4tF,KAEnC,IAAK,IAAIp2H,EAAI,EAAGA,EAAI0f,EAASzf,OAAQD,IACjC0f,EAAS1f,GAAG8qI,OAAOpf,EAASljF,MAAM4+F,KAClC1b,EAASqhI,iBAAmBr3H,EAAKsB,MAAMtL,EAASqhI,iBAAkBrtO,EAAS1f,GAAGo2H,MAGlF39H,KAAKi9C,SAAS0gF,GACd39H,KAAKu0P,WAAW52H,GAChB39H,KAAKqwP,aAAarwP,KAAKusP,UAAWtlO,EAAUjnB,KAAK+vC,OACjD/vC,KAAKisP,OACT,EAEAoE,aAAc,SAAS9D,EAAWtlO,EAAU8oB,GACxC,IAAIw7H,EAAUvrK,KAAKksP,SAAW,IAAIkI,GAElC7oF,EAAQpxH,OAAOoyM,GACfhhF,EAAQpxH,OAAOpK,EAAMmuI,OACrB3S,EAAQpxH,OAAOpK,EAAMipB,QACrBh5D,KAAKw0P,eAAevtO,GACpBskJ,EAAQpxH,OAAOpK,EAAMshN,cACzB,EAEAmD,eAAgB,SAASvtO,GAGrB,IAFA,IAES1f,EAAI,EAAGA,EAAI0f,EAASzf,OAAQD,IAAK,CACtC,IAAIyM,EAAUiT,EAAS1f,GACvByM,EAAQ7D,SAJGnQ,KAKFksP,SAAS/xM,OAAOnmC,EAAQ2kB,UAEjC3kB,EAAQtL,MAAMsL,EAAQ7M,QAAQuB,MAClC,CACJ,EAEAu0C,SAAU,SAAS0gF,GAYf,IAXA,IAOIgoD,EAAS8uE,EAASttE,EAAS+rB,EAAKwhD,EAPhCzhI,EAAWjzH,KAEX2uI,EAAM3uI,KAAK+vC,MAAM4+F,IACjB6hH,EAAcxwP,KAAKs0P,iBACnBxhN,EAAOzvC,KAAKoU,IAAIzX,KAAK20P,QAAQnE,EAAa7yH,IAC1CjnH,EAAMJ,EAAMw8B,EAAM8uH,GAClBzoJ,EAAM7C,GAAOw8B,EAAM8uH,GAEnBgzF,EAAY,EACZrtP,EAAI,MAEDA,IAAM,OACTqtP,EAAaF,IAAYvtE,EAAYytE,EAAY,EAAK,GAEtC,GAIZl+O,IAAQw8L,GAEJ,IADJvtB,EAAU1yD,EAAS4hI,WAAWn+O,EAAKinH,EAAMgR,KACrBg3C,GAAW,GAK/BxsK,IAAQ+5L,GAEJ,IADJ/rB,EAAUl0D,EAAS4hI,WAAW17O,EAAKwkH,EAAMgR,KACrBw4C,GAAW,IAM/B+rB,EADAvtB,EAAU,GAAKwB,EAAU,EACb,EAANzwK,EACCivK,EAAU,GAAKwB,EAAU,EACpB,EAANhuK,EAEA7C,GAAQI,EAAMyC,GAAO,GAAM,EAAGyoJ,GAIpC,IADJ6yF,EAAUxhI,EAAS4hI,WAAW3hD,EAAKv1E,EAAMgR,KACrB8lH,GAAW,KAI/BC,EAAUvtE,EAENstE,EAAU,GACVt7O,EAAM+5L,EACN/rB,EAAUstE,IAEV/9O,EAAMw8L,EACNvtB,EAAU8uE,EAGtB,EAEAI,WAAY,SAAS/hN,EAAM6qF,EAAMgR,GAC7B,IAEI5+F,EAAQ/vC,KAAK+vC,MACb9oB,EAAWjnB,KAAKinB,SAChBqF,EAASqiH,EAAIoiH,aACb+D,EAAWnmH,EAAIvnI,QAEnB0tP,EAASjD,WAAWvlO,EAASwmB,GAAMg/M,WAAWxlO,EAASwmB,GAEvD/C,EAAM4+F,IAAMmmH,EACZ/kN,EAAMsiG,OAAO1U,GACb39H,KAAK+0P,SAAWhlN,EAAM4tF,KAEtB,IAAK,IAAIp2H,EAAI,EAAGA,EAAI0f,EAASzf,OAAQD,IACjC0f,EAAS1f,GAAG8qI,OAAOyiH,GAdR90P,KAeF+0P,SAAW93H,EAAKsB,MAfdv+H,KAe6B+0P,SAAU9tO,EAAS1f,GAAGo2H,MAGlE,OAAO39H,KAAK20P,QAAQ30P,KAAK+0P,SAAUp3H,EACvC,EAEAg3H,QAAS,SAASK,EAAS17M,GACvB,OAAOj2C,KAAKqT,IAAI4iC,EAAIvtC,QAAUipP,EAAQjpP,QAASutC,EAAIttC,SAAWgpP,EAAQhpP,SAC1E,EAEAuoP,WAAY,SAAS52H,GACjB,IAEIs3H,EAAgBj1P,KAAK+0P,SAASx2K,SAC9BmzF,EAAY/zC,EAAKp/C,SACjB22K,EAAWD,EAAc7vP,EAAIssK,EAAUtsK,EACvC+vP,EAAWF,EAAc9wP,EAAIutK,EAAUvtK,EAEvC4rC,EADM/vC,KACM+vC,MACZ9oB,EAFMjnB,KAESinB,SAEnB8oB,EAAM4+F,IAAIpwD,OAAOn5E,GAAK8vP,EACtBnlN,EAAM4+F,IAAIpwD,OAAOp6E,GAAKgxP,EAEtBplN,EAAMsiG,OAAO1U,GAEb,IAAK,IAAIp2H,EAAI,EAAGA,EAAI0f,EAASzf,OAAQD,IACjC0f,EAAS1f,GAAG8qI,OAAOtiG,EAAM4+F,KAhBd3uI,KAiBF+0P,SAAW93H,EAAKsB,MAAMxuF,EAAM4tF,KAAM12G,EAAS1f,GAAGo2H,KAE/D,EAEA8uH,aAAc,WACV,IAEItlP,EAAUnH,KAAKmH,QACf8f,EAAW9f,EAAQy2E,QACnB7tC,EAAQ/vC,KAAK+vC,MAAQ,IAAIohN,GAAYhqP,EAAQ4oC,MAAO/vC,KAAK8rP,gBAE7D9rP,KAAKinB,SAAW,GAGhB,IADA,IAAImuO,EAAcnyP,EAAQgkB,GAAYA,EAAW,CAAEA,GAC1C1f,EAAI,EAAGA,EAAI6tP,EAAY5tP,OAAQD,IAAK,CACzC,IAAIyM,EAAU,IAAI2/O,GAAc5jN,EAAOvnC,EAAW,CAAC,EAAG4sP,EAAY7tP,GAAI,CAClE+qF,UAAW,CACP5yE,YAAavY,EAAQuY,gBAZlB1f,KAgBFinB,SAAStlB,KAAKqS,EAC3B,CACJ,IAGJgwJ,EAAkBqwF,GAAa,CAC3B30O,aAAa,EACb6sO,UAAW,CACPz3F,WAAY,MAIpB,IAAIugG,GAAWlE,GAAYpuP,OAAO,CAC9BwvP,cAAe,WACX,IAAIlgI,EAAMryH,KAAKmH,QAMf,MAAO,CAAE,CAAE4U,KALDs2G,EAAI37G,IAKQ4nB,GAJZ+zF,EAAIl5G,IAIiB83G,MAHHoB,EAAIkmE,sBAG6Bt5C,QAF1C5sB,EAAIijI,cAG3B,EAEA/D,UAAW,WACP,OAAO,CACX,EAEAgE,sBAAuB,SAASn7H,GAC5B,IAAIo7H,EAAcx1P,KAAKg5D,OAAOzjB,SAAS,GAAGosF,WAEtC3hI,KAAKmH,QAAQkP,QACbm/O,EAAYC,YAAYr7H,GAExBo7H,EAAYE,cAAct7H,EAElC,EAEAu7H,SAAU,SAAS55O,EAAMuiB,EAAIn3B,GACzB,IAAIkP,EAAUrW,KAAKmH,QAAQkP,QAEvBksH,EAAaviI,KAAK4tL,UAAUv3K,EAAUioB,EAAKviB,GAC3CymH,EAAWxiI,KAAK4tL,UAAUv3K,EAAU0F,EAAOuiB,GAE3C21B,EAAQj0D,KAAK2mC,YAAY47F,EAAYC,EAAUxiI,KAAKsyP,iBAAkBnrP,GAI1E,OAFAnH,KAAKg5D,OAAO7e,OAAO8Z,GAEZA,CACX,IAGJ+vG,EAAkBqxF,GAAU,CACxB3+O,IAAK,EACLyC,IAAK,IAELs8J,WAAY,CACRzoK,SAAS,GAGbuoK,WAAY,CACRvoK,SAAS,GAGbooK,OAAQ,CACJpoK,SAAS,GAGbu1H,WAAY,EACZC,SAAU,IACV8yH,aAAc,UAGlB,IAEIM,GAAwB95M,EAAU/4C,OAAO,CACzCoF,KAAM,SAAS0D,EAAS1E,GACpB20C,EAAU/zC,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAAS1E,GAEtC,IAAI6vM,EAAmBh3M,KAAKmH,QACxBmgB,EAAYjkB,KAAKoU,IAAIu/L,EAAiBu8C,SAAWv8C,EAAiBw8C,UAAYx8C,EAAiB1vL,SAAY,IAC/G0vL,EAAiB1vL,SAAWkxG,EAAWlxG,EAAU0jO,EARtC,KAUX,IAAI6K,EAAahqP,EAAQ8sB,SAASxxB,QAAQ8oB,IAAI,gBAC1CghG,EAAQplH,EAAQiqP,eAChBD,IAAe5kI,IACfjxH,KAAK61P,WAAa,IAAIl1P,MAAMqyH,MAAM6iI,GAClC71P,KAAKixH,MAAQ,IAAItwH,MAAMqyH,MAAM/B,GAErC,EAEAn+E,KAAM,SAASuiD,GACX,IAAIg9B,EAAMryH,KACNmH,EAAUkrH,EAAIlrH,QACd0uP,EAAaxjI,EAAIwjI,WACjB5kI,EAAQoB,EAAIpB,MACZmJ,EAAQ61D,EAAiB9oL,EAAQqsP,SAAUrsP,EAAQosP,SAAUl+J,GAGjE,GAFAr1F,KAAK6L,QAAQuuH,MAAMA,GAEfnJ,EAAO,CACP,IAAIiB,EAAI57G,EAAM25K,EAAiB4lE,EAAW3jI,EAAGjB,EAAMiB,EAAG78B,IAClDjgF,EAAIkB,EAAM25K,EAAiB4lE,EAAWzgP,EAAG67G,EAAM77G,EAAGigF,IAClDp5E,EAAI3F,EAAM25K,EAAiB4lE,EAAW55O,EAAGg1G,EAAMh1G,EAAGo5E,IAEtDr1F,KAAK6L,QAAQ+zH,OAAO,IAAIj/H,MAAMqyH,MAAMd,EAAG98G,EAAG6G,GAAGs1G,QACjD,CACJ,IAGJyyC,EAAkB4xF,GAAuB,CACrCz/G,OAAQk1G,EACR/jO,SAAU0jO,IAGdh1G,EAAiBhiI,QAAQmjB,SAASo0N,EAAsBqK,IAExD,IAAIG,GAAenI,EAAQ7qP,OAAO,CAC9B+qP,QAAS,WACL,IACI/9M,EADM/vC,KACM+vC,MACZ5oC,EAFMnH,KAEQmH,QACdqsP,EAAWzjN,EAAM69I,UAAUzmL,EAAQ0mP,WACnC0F,EAAWxjN,EAAM69I,UAAUzmL,EAAQuB,OAEnC1I,KAAKsyF,WACLtyF,KAAKsyF,UAAU+jD,SAGmB,IAAlClvI,EAAQmrF,UAAU5yE,aAClB1f,KAAKo6H,MAAMm5H,GACXvzP,KAAK4/H,OAAO5/H,KAAK81P,kBAEjB91P,KAAKsyF,UAAY,IAAIsjK,GAAsB51P,KAAMwI,EAAWrB,EAAQmrF,UAAW,CAC3EkhK,SAAUA,EACVD,SAAUA,KAGdvzP,KAAKsyF,UAAUp7C,OAEvB,EAEAkjF,MAAO,SAAS1xH,GACZ,IAAI8sP,EAAcx1P,KAAK24B,SAASgpG,WAC5B3hI,KAAK+vC,MAAM5oC,QAAQkP,QACnBm/O,EAAYE,cAAchtP,GAE1B8sP,EAAYC,YAAY/sP,GAE5B1I,KAAK+vC,MAAMwlN,sBAAsB7sP,EACrC,EAEAk3H,OAAQ,SAASl3H,GACb1I,KAAK24B,SAASinG,OAAOl3H,EACzB,EAEAyH,OAAQ,WACJ,IAAInQ,KAAK24B,SAAT,CAIA,IACIoX,EADM/vC,KACM+vC,MACZ5oC,EAFMnH,KAEQmH,SAEQ,IAAtBA,EAAQmrF,WACR9pF,EAAWrB,EAAQmrF,UAAW,CAC1BiwC,WAAY,EACZhkD,OAAQxuC,EAAM4+F,IAAIpwD,OAClBloE,QAAS05B,EAAM5oC,QAAQkP,UAI/BrW,KAAK24B,SAAWoX,EAAM4lN,SAAS5lN,EAAM5oC,QAAQuP,IAAK1W,KAAKmH,QAAQuB,MAAO,CAClEuoH,MAAOjxH,KAAK81P,eACZ/+N,QAAS5vB,EAAQ4vB,QACjBkoH,QAASlvG,EAAM5oC,QAAQmuP,cAjB3B,CAmBJ,EAEAQ,aAAc,WACV,IAAIzjI,EAAMryH,KAAK+vC,MAAM5oC,QACjBuP,EAAM27G,EAAI37G,IACVyC,EAAMk5G,EAAIl5G,IACVu5H,EAAQ1yI,KAAKmH,QACb+nC,EAASwjG,EAAMxjG,OACf+hF,EAAQyhB,EAAMzhB,MACdvoH,EAAQgqI,EAAMhqI,MACduiC,EAAexgB,EAAQ4qC,SAAS3sD,GAASA,EAAQgO,EAErD,GAAIw4B,EACA,IAAK,IAAItlC,EAAM,EAAGA,EAAMslC,EAAO1nC,OAAQoC,IAAO,CAC1C,IAAIw6N,EAAQl1L,EAAOtlC,GACfosP,EAAa5xB,EAAMnzG,MACnBl1G,EAAOqoN,EAAMroN,UAAmB,IAATA,IAAmBA,EAAOrF,GACrD,IAAI4nB,EAAK8lM,EAAM9lM,GAEf,QAF8B,IAAPA,IAAiBA,EAAKnlB,GAEzC4C,GAAQkvB,GAAgBA,GAAgB3M,EACxC,OAAO03N,CAEf,CAGJ,OAAO/kI,CACX,EAEAohB,OAAQ,WACJryI,KAAKmQ,SAELnQ,KAAK29H,KAAO39H,KAAK24B,SAASglG,MAC9B,IAGJqmC,EAAkB+xF,GAAc,CAC5BzjK,UAAW,CACP5sF,KAAM6lP,EACNjkO,SAAU0jO,KAIlB,IAAIiL,GAAW5B,GAAYtxP,OAAO,CAC9BgkO,WAAY,SAAS7wC,GACjBm+D,GAAYtsP,GAAGg/N,WAAWx8N,KAAKvK,KAAMk2L,GAErCl2L,KAAKmH,QAAQ8pH,MAAQjxH,KAAKmH,QAAQ8pH,QAAUjxH,KAAKk2L,MAAMt4G,SAAW,CAAC,GAAGqzC,KAC1E,EAEAw7H,aAAc,WACV,IAAItlP,EAAUnH,KAAKmH,QACf4oC,EAAQ/vC,KAAK+vC,MAAQ,IAAIslN,GAASluP,EAAQ4oC,MAAO/vC,KAAK8rP,gBAEtDluK,EAAU,IAAIm4K,GAAahmN,EAAOvnC,EAAW,CAAC,EAAG,CACjD0mC,OAAQ/nC,EAAQ+nC,OAChB+hF,MAAO9pH,EAAQ8pH,MACfvoH,MAAOvB,EAAQuB,MACfquB,QAAS5vB,EAAQ4vB,QACjBu7D,UAAW,CACP5yE,YAAavY,EAAQuY,gBAI7B1f,KAAKinB,SAAW,CAAE22D,EACtB,EAEA42K,eAAgB,SAASvtO,GACrB,IAAK,IAAI1f,EAAI,EAAGA,EAAI0f,EAASzf,OAAQD,IAAK,CACtC,IAAIyM,EAAUiT,EAAS1f,GACvByM,EAAQ7D,SAER6D,EAAQtL,MAAMsL,EAAQ7M,QAAQuB,MAClC,CACJ,EAEAsjP,iBAAkB,SAAStjP,GACvB1I,KAAKmH,QAAQuB,MAAQA,CACzB,EAEAotP,aAAc,WACV,IAAIl4K,EAAU59E,KAAKinB,SAAS,GAC5B,GAAI22D,EACA,OAAOA,EAAQk4K,cAEvB,EAEAI,oBAAqB,SAASnqP,EAAOC,GACjC,IAAIgE,EAAOhQ,KAAKuyB,UACZgsD,EAASv+E,KAAK+vC,MAAM4+F,IAAIpwD,OAExB/xD,EAAO+xD,EAAOn5E,EAAI2G,EAAQ,EAC1BmZ,EAAMq5D,EAAOp6E,EAAI6H,EAAS,EAE9B,GAAID,EAAQiE,EAAKjE,MAAO,CACpB,IAAI0gB,EAAQD,EAAOzgB,EAEnBygB,EAAOnpB,KAAK8V,IAAIqT,EAAM,GAElBC,EAAQzc,EAAKjE,QACbygB,GAAQC,EAAQzc,EAAKjE,MAE7B,CAEA,GAAIC,EAASgE,EAAKhE,OAAQ,CACtB,IAAI2xH,EAAO39H,KAAK+vC,MAAM4tF,KAClBw4H,EAASx4H,EAAKH,cAAcr5H,EAC5BuoB,EAASxH,EAAMlZ,EAEnBkZ,EAAM7hB,KAAK8V,IAAI+L,EAAKy4G,EAAK3kF,OAAO70C,GAE5BuoB,EAASypO,IACTjxO,GAAOwH,EAASypO,EAExB,CAEA,MAAO,CACH3pO,KAAMA,EACNtH,IAAKA,EAEb,IAKAkxO,GAAgBH,GAASlzP,OAAO,CAChC0pP,aAAc,WACV,IAAIpsE,EAAergL,KAAKmH,QAAQ4oC,MACO,iBAA5BswI,EAAa99C,aACpB89C,EAAa99C,WAND,IAShB89C,EAAa79C,SAAW69C,EAAa99C,WAAa,IAElD0zH,GAASluP,GAAG0kP,aAAaliP,KAAKvK,KAClC,IAGJW,MAAM6H,WAAW7H,MAAM8pB,QAAS,CAC5BohO,MAAOA,EACPiE,YAAaA,GACb/B,cAAeA,EACfc,mBAAoBA,GACpBS,iBAAkBA,GAClBjC,YAAaA,EACbgH,YAAaA,GACbV,cAAeA,GACfxC,YAAaA,GACb8E,SAAUA,GACVF,aAAcA,GACdV,SAAUA,GACVe,cAAeA,IAGlB,CApwED,CAowEGt1P,OAAOH,MAAM+G,QAEhB,SAAU/E,GACN,IAAIhC,EAAQG,OAAOH,MACfywB,EAASzwB,EAAM4pB,GAAG6G,OAClB3G,EAAU9pB,EAAM8pB,QAChBqlO,EAAcrlO,EAAQqlO,YACtBuE,EAAc5pO,EAAQ4pO,YACtB4B,EAAWxrO,EAAQwrO,SACnBG,EAAgB3rO,EAAQ2rO,cACxB3+G,EAAO92I,EAAM+pB,QAEjB,SAASi8M,EAAax/N,GAClB,IAAIqxB,EAAS/N,EAAQF,GAAGiO,QAAU,CAAC,EAC/Bm/J,EAAYxwL,EAAQ+uL,OAAS,GAC7BmgE,EAAY1+D,EAAU9+K,cAE1B,OAA+C,GAA3C4R,EAAQmmK,YAAYj7K,QAAQ0gP,GACrB5rO,EAAQurK,YAAY4B,OAGvBp/J,EAAOm/J,IAAcn/J,EAAO69N,IAAc,CAAC,GAAGz+D,KAC1D,CAEA,IAAIi0D,EAAQz6N,EAAOruB,OAAO,CACtBoF,KAAM,SAAS0D,EAASw9K,GACpB1oL,EAAMqB,QAAQ6J,GACdlJ,EAAEkJ,GAAS+gD,QAEXx7B,EAAOrpB,GAAGI,KAAKoC,KAAKvK,KAAM6L,GAE1B7L,KAAKmH,QAAUxG,EAAM6H,WAAWxI,KAAKmH,QAASkiL,GAE9CrpL,KAAK4M,QAAU5M,KAAK6L,QACpB7L,KAAKs2P,kBAELt2P,KAAK6L,QAAQwZ,SAAS,WAEtB1kB,EAAMi0B,OAAO50B,KAAMyqB,EAAQF,GAC/B,EAEApjB,QAAS,CACL+uL,MAAO,OACPwyC,SAAU,GACV9qJ,QAAS,CAAC,EACV7tC,MAAO,CAAC,EACRw8M,UAAW,CACPz3F,WAAY,IAEhBp1I,aAAa,GAGjBwS,WAAY,SAAS/qB,GACjBnH,KAAKo/J,UAAUltI,WAAW/qB,EAASw/N,EAAax/N,IAEhDnH,KAAKu2P,aACT,EAEA94C,OAAQ,WACJz9M,KAAKo/J,UAAUq+C,SACfz9M,KAAKu2P,aACT,EAEAv0P,QAAS,WACLovB,EAAOrpB,GAAG/F,QAAQuI,KAAKvK,MACvBA,KAAKo/J,UAAUp9J,SACnB,EAEAs0P,gBAAiB,WACb,IAAIE,EAAYx2P,KAAKy2P,aACrBz2P,KAAKo/J,UAAY,IAAIo3F,EAAUx2P,KAAK6L,QAAQ,GAAI7L,KAAKmH,QAASw/N,EAAa3mO,KAAKmH,UAChFnH,KAAKu2P,aACT,EAEAA,YAAa,WACTv2P,KAAK6mO,iBAAmB7mO,KAAKo/J,UAAUynE,iBACvC7mO,KAAKmH,QAAUnH,KAAKo/J,UAAUj4J,QAC9BnH,KAAK2hF,QAAU3hF,KAAKo/J,UAAUz9E,QAC9B3hF,KAAK29H,KAAO39H,KAAKo/J,UAAUzhC,KAC3B39H,KAAKusP,UAAYvsP,KAAKo/J,UAAUmtF,UAChCvsP,KAAKinB,SAAWjnB,KAAKo/J,UAAUn4I,SAC/BjnB,KAAK+vC,MAAQ/vC,KAAKo/J,UAAUrvH,KAChC,EAEArd,QAAS,WACL1yB,KAAKo/J,UAAUj1I,QACnB,IAGAiyN,EAAe,CAAC,UAAW,QAAS,YAAa,gBAErD,SAASC,EAAkBj6O,GACvBypP,EAAM9jP,GAAG3F,GAAQ,WACb,OAAOpC,KAAKo/J,UAAUh9J,GAAMgG,MAAMpI,KAAKo/J,UAAW93J,UACtD,CACJ,CAEA,IAAK,IAAIsC,EAAM,EAAGA,EAAMwyO,EAAa50O,OAAQoC,IACzCyyO,EAAkBD,EAAaxyO,IAGnC6gB,EAAQomK,YAAY9tL,OAAO8oP,EAAM9jP,IAEjC,IAAI2uP,EAAoB7K,EAAM9oP,OAAO,CAEjCoE,QAAS,CACL/E,KAAM,eAGVq0P,WAAY,WACR,OAAOpC,CACX,IAGAsC,EAAoB9K,EAAM9oP,OAAO,CAEjCoE,QAAS,CACL/E,KAAM,cACN2tC,MAAO,CACHyC,UAAU,IAIlBikN,WAAY,WACR,OAAO3G,CACX,IAGA8G,EAAiB/K,EAAM9oP,OAAO,CAC9BoF,KAAM,SAAS0D,EAASw9K,GACpBwiE,EAAM9jP,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAASw9K,GAElCrpL,KAAK6L,QAAQI,IAAI,WAAY,YAC7BjM,KAAK6L,QAAQwZ,SAAS,cAEtBrlB,KAAK62P,iBACT,EAEA1vP,QAAS,CACL/E,KAAM,YAGV8vB,WAAY,SAAS/qB,GACjB0kP,EAAM9jP,GAAGmqB,WAAW3nB,KAAKvK,KAAMmH,GAC/BnH,KAAK62P,iBACT,EAEAp5C,OAAQ,WACJouC,EAAM9jP,GAAG01M,OAAOlzM,KAAKvK,MACrBA,KAAK62P,iBACT,EAEAnuP,MAAO,SAASA,GACZ,IAAIif,EAAW3nB,KAAKo/J,UACpB,GAAyB,IAArB93J,UAAUE,OACV,OAAOmgB,EAASjf,QAGpBif,EAASjf,MAAMA,GAEf1I,KAAK62P,iBACT,EAEA70P,QAAS,WACL6pP,EAAM9jP,GAAG/F,QAAQuI,KAAKvK,aACfA,KAAK82P,cAChB,EAEA1/G,aAAc,WACV,OAAIp3I,KAAK82P,gBAIFjL,EAAM9jP,GAAGqvI,aAAa7sI,KAAKvK,KACtC,EAEA0yB,QAAS,WACL1yB,KAAKo/J,UAAUj1I,SAEfnqB,KAAK62P,iBACT,EAEAA,gBAAiB,WACb,GAAI72P,KAAKmH,QAAQ4vP,eAAgB,CAC7B,IAAI3mP,EAAWzP,EAAMyP,SAASpQ,KAAKmH,QAAQ4vP,gBAEvCpvO,EAAW3nB,KAAKo/J,UAChB43F,EAAgBh3P,KAAKi3P,oBAEzBD,EAAc3mP,KAAKD,EAAS,CAAE6gH,MAAOtpG,EAASmuO,eAAgBptP,MAAOif,EAASjf,WAE9E,IAAI4E,EAAWqa,EAASuuO,oBAAoBc,EAAcjrP,QAASirP,EAAchrP,UAEjFgrP,EAAc/qP,IAAIqB,EACtB,MAAWtN,KAAK82P,iBACZ92P,KAAK82P,eAAezqP,SACpBrM,KAAK82P,eAAiB,KAE9B,EAEAG,kBAAmB,WACf,IAAID,EAAgBh3P,KAAK82P,eAMzB,OALKE,IACDA,EAAgBh3P,KAAK82P,eAAiBn0P,EAAE,eAAe0iB,SAAS,oBAChErlB,KAAK6L,QAAQsuC,OAAO68M,IAGjBA,CACX,EAEAP,WAAY,WACR,OAAOR,CACX,IAGAiB,EAAsBN,EAAe7zP,OAAO,CAC5CoE,QAAS,CACL/E,KAAM,iBAGVq0P,WAAY,WACR,OAAOL,CACX,IAGJ,SAASe,EAAmB/0P,GACxBw0P,EAAe7uP,GAAG3F,GAAQ,SAAS+E,GAC/B,IAAIywL,EAAQ53L,KACRs3B,EAASmgH,EAAKr1I,GAElB,OAAKw1L,EAAMk/D,eAIJr/G,EAAK+iB,QAAQo9B,EAAM/rL,SAASszD,MAAK,SAAS8hF,GAC7C,OAAO3pH,EAAO2pH,EAAQ95I,EAC1B,IALWmwB,EAAOsgK,EAAMxgD,eAAgBjwI,EAM5C,CACJ,CAEA,IAAIiwP,EAAgB,CAAC,YAAa,cAAe,aAEjD,IAAKxtP,EAAM,EAAGA,EAAMwtP,EAAc5vP,OAAQoC,IACtCutP,EAAmBC,EAAcxtP,IAGrC6gB,EAAQF,GAAG2M,OAAOy/N,GAClBlsO,EAAQF,GAAG2M,OAAOw/N,GAClBjsO,EAAQF,GAAG2M,OAAO0/N,GAClBnsO,EAAQF,GAAG2M,OAAOggO,GAElBv2P,EAAM6H,WAAWiiB,EAAS,CACtBohO,MAAOA,EACPiE,YAAa6G,EACbtC,YAAaqC,EACbT,SAAUW,EACVR,cAAec,GAGtB,CAjQD,CAiQGp2P,OAAOH,MAAM+G,QAUF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfywB,EAASzwB,EAAM4pB,GAAG6G,OAElBruB,EAASJ,EAAEI,OACXyF,EAAa7H,EAAM6H,WACnBitB,EAAU9yB,EAAE8yB,QACZ9tB,EAAgBhF,EAAEgF,cAElB8vI,EAAO92I,EAAM+pB,QACboyN,EAAOn8O,EAAMghI,SAEb7K,EADOn2H,EAAM+pB,QAAQ88F,KACNsP,QACfrsG,EAAU9pB,EAAM8pB,QAChBymK,EAAQzmK,EAAQymK,MAChBtgB,EAAUnmJ,EAAQmmJ,QAIlBymF,EAAc,QACdC,EAAoB,eAGxB,SAASC,EAAQ7uP,EAAO4Q,EAAOgC,GAC3B,OAAO5S,EAAMsC,UAAUsO,EAAOA,EAAQgC,EAC1C,CAEA,IAAIk8O,EAAW72P,EAAMiH,MAAM7E,OAAO,CAC9BoF,KAAM,SAAShB,GACXnH,KAAKkyB,WAAW/qB,EACpB,EACA+qB,WAAY,SAAS/qB,GACjB,IAAIc,EAAOjI,KACXiI,EAAKd,QAAUpE,EAAO,CAAC,EAAGkF,EAAKd,QAASA,GACxCc,EAAKwvP,gBAAkBxvP,EAAKd,QAAQuwP,aAAe,EAAIzvP,EAAKd,QAAQswP,gBAAkB,CAC1F,EACA1oL,OAAQ,SAASrmE,EAAOqD,EAAOC,GAC3B,IAAI/D,EAAOjI,KAiBX,OAhBI82H,EAAQpuH,KACRA,GAAS,IAGbT,EAAK0vP,UAAUjvP,EAAOqD,EAAOC,GAEzB/D,EAAKd,QAAQuwP,cACbzvP,EAAKyvP,eAGTzvP,EAAK2vP,UAED3vP,EAAKd,QAAQuwP,cACbzvP,EAAKyvP,eAGF,CACHr4E,SAAUp3K,EAAKo3K,SACfprK,QAAShM,EAAKgM,QAEtB,EACA9M,QAAS,CACLswP,gBA1CuB,GA2CvBC,cAAc,EACdG,aAAa,GAEjBF,UAAW,WAAY,EACvBD,aAAc,WACV13P,KAAKiU,QAAQtS,KAAK3B,KAAKmH,QAAQswP,iBAhDR,GAiD3B,EACAG,QAAS,WACT,EACAE,sBAAuB,SAASC,GAC5B,MAAM,IAAI/mP,MAAMrQ,EAAMsQ,OAlDM,iDAkDgC8mP,EAAW/3P,KAAKoC,MAChF,IAGA41P,EAAY,CAAC,EAEbC,EAAaT,EAASz0P,OAAO,CAC7Bm1P,kBAAmB,GACnBN,QAAS,WACL,IAAI3vP,EAAOjI,KACP0I,EAAQT,EAAKS,MAEjBT,EAAKkwP,WAEL,IAAK,IAAIvuP,EAAM,EAAGA,EAAMlB,EAAMlB,OAAQoC,IAClC3B,EAAKmwP,aAAa1vP,EAAMoC,OAAOlB,IAG/B3B,EAAKd,QAAQ0wP,aACb5vP,EAAKowP,eAGTpwP,EAAKktI,UACLltI,EAAKqwP,eACT,EACAF,aAAc,SAASL,GACnB,IAAI9vP,EAAOjI,KACPu4P,EAAWtwP,EAAKuwP,aAAaT,GAC5BQ,GACDtwP,EAAK6vP,sBAAsBC,GAE/B9vP,EAAKwwP,QAAQF,EACjB,EACAE,QAAS,WAAY,IAGrBC,EAAqB,CACrBN,aAAc,SAASL,GACnB,IAAI9vP,EAAOjI,KACPiI,EAAKuwP,aAAaT,GAClB9vP,EAAKwwP,QAAQxwP,EAAKuwP,aAAaT,IAE1BA,EAAUlmP,WAAW,GAAK,IAC/B5J,EAAK6vP,sBAAsBC,GAG3B9vP,EAAK0wP,YAAYZ,EAAUlmP,WAAW,GAE9C,EACA8mP,YAAa,SAASlwM,GAGlB,IAFA,IACIxzC,EADAhN,EAAOjI,KAEFuH,EAAI,EAAGA,EAAIU,EAAK2wP,iBAAiBpxP,OAAQD,IAC9C,GAAK0N,EAAWhN,EAAK2wP,iBAAiBrxP,GAAGgD,KAAKtC,EAAMwgD,GAAQ,CACxD,IAAK,IAAI1d,EAAI,EAAGA,EAAI91B,EAASzN,OAAQujC,IACjC9iC,EAAKwwP,QAAQxjP,EAAS81B,IAG1B,YADA9iC,EAAK09D,YAAc1wD,EAASzN,OAAS,EAEzC,CAER,EACAoxP,iBAAkB,CACd,SAASnwM,GACL,GAAI,IAAMA,GAAQA,GAAQ,IAAK,CAC3B,IAAIxgD,EAAOjI,KACX,MAAO,CAACiI,EAAKuwP,aAAavwP,EAAK4wP,gBAAgB,IAAK5wP,EAAKuwP,aAAanmP,OAAOyc,aAAa25B,EAAO,KACrG,CACJ,EACA,SAASA,GACL,GAAI,IAAMA,GAAQA,GAAQ,GAAI,CAC1B,IAAIxgD,EAAOjI,KACX,MAAO,CAACiI,EAAKuwP,aAAavwP,EAAK4wP,gBAAgB,IAAK5wP,EAAKuwP,aAAanmP,OAAOyc,aAAa25B,EAAO,KACrG,CACJ,EACA,SAASA,GACL,GAAI,GAAKA,GAAQA,GAAQ,GAAI,CACzB,IAAIxgD,EAAOjI,KACX,MAAO,CAACiI,EAAKuwP,aAAavwP,EAAK4wP,gBAAgB,IAAK5wP,EAAKuwP,aAAanmP,OAAOyc,aAAa25B,EAAO,KACrG,CACJ,EACA,SAASA,GACL,IACI3xC,EACAgiP,EAFA7wP,EAAOjI,KAGX,GAAKiI,EAAK8wP,kBAAkBtwM,GAIvB,CACD3xC,EAAS,GACT,IAAK,IAAIvP,EAAI,EAAGA,EAAIU,EAAK8wP,kBAAkBtwM,GAAMjhD,OAAQD,IACrDuP,EAAOnV,KAAKsG,EAAKuwP,aAAavwP,EAAK4wP,gBAAgB,KACnD/hP,EAAOnV,KAAKsG,EAAKuwP,aAAavwP,EAAK8wP,kBAAkBtwM,GAAMlhD,IAEnE,MATIuxP,EAAwC,EAAxBz1P,KAAKyN,MAAM23C,EAAO,KAAWA,EAAO,IAAM,GAAK,GAC/D3xC,EAAS,CAAC7O,EAAKuwP,aAAavwP,EAAK4wP,gBAAgB,IAAK5wP,EAAKuwP,aAAanmP,OAAOyc,aAAagqO,KAUhG,OAAOhiP,CACX,GAEJiiP,kBAAmB,CACf,EAAK,CAAC,KACN,GAAM,CAAC,KACP,GAAM,CAAC,KACP,IAAO,CAAC,IAAI,IAAI,IAAI,MAExBC,sBAAuB,CACnB,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,IAEVR,aAAc,CACV,KAAK,EACL,KAAK,EACL71P,GAAK,EACL,KAAK,GAETk2P,gBAAiB,CAAC,SAAU,SAAU,SAAU,WAGpDb,EAAUiB,OAAShB,EAAWl1P,OAAO,CACjCX,KAAM,UACN82P,YAAa,GACbC,SAAU,IACVC,SAAU,EACVC,SAAU,EACVC,eAAgB,IAChB3B,UAAW,SAASjvP,EAAOqD,EAAOC,GAC9B,IAAI/D,EAAOjI,KACXiI,EAAK8D,MAAQA,EACb9D,EAAK+D,OAASA,EACd/D,EAAKS,MAAQA,EACbT,EAAK09D,WAAaj9D,EAAMlB,OACxBS,EAAKgM,QAAU,GACfhM,EAAKsxP,cAAgB,EACzB,EACAjB,cAAe,WACX,IACIj5E,EADAp3K,EAAOjI,KAEPw5P,EAAcvxP,EAAKiwP,kBACnBhuE,EAAQjiL,EAAKmxP,SACbD,EAAWlxP,EAAKkxP,SAChBM,EAAYp2P,KAAK8V,IAAI,IAAOlR,EAAK8D,MAAO,IAC5C,GAAI9D,EAAK+D,OAASytP,EACd,MAAM,IAAIzoP,MAAM,sDAAwD/I,EAAKS,MAAQ,QAAU+wP,GAGnG,MAAQp6E,EAAWp3K,EAAKyxP,YAAYxvE,IAAUsvE,GAAetvE,EAAQivE,GACjEjvE,EAAQnhL,YAAYmhL,EAAQ,IAAKzzK,QAAQ,IAG7C,GAAI4oK,EAAWm6E,EAAa,CACxB,IAAIj9B,EAAWl5N,KAAK6jE,KAAKj/D,EAAK0xP,aAAaR,GAAYK,GACvD,MAAM,IAAIxoP,MAAM,oDAAsD/I,EAAKS,MAAQ,QAAU6zN,EACjG,CAEAt0N,EAAKiiL,MAAQA,EACbjiL,EAAKo3K,SAAWA,EAChBp3K,EAAKsxP,cAAgBtxP,EAAKsxP,cAAcvuP,UAAU,EAAG/C,EAAKsxP,cAAc/xP,OAAS,GACjFS,EAAKgM,QAAUhM,EAAKgM,QAAQmK,OAAOnW,EAAKsxP,cAAc92P,QAAQ,SAAUynL,GAAOt/K,MAAM3C,EAAKqxP,gBAC9F,EACAI,YAAa,SAASxvE,GAClB,OAAOlqL,KAAK+L,MAAQ/L,KAAK25P,aAAazvE,EAC1C,EACAyvE,aAAc,SAASzvE,GACnB,IAAIjiL,EAAOjI,KACP45P,EAAkB,GAAK1vE,EAAQ,GACnC,OAAOjiL,EAAKwvP,gBAAkBmC,GAAmB3xP,EAAK09D,WAAa,GAAK19D,EAAKoxP,UAAYpxP,EAAK09D,WAAa,EAC/G,EACAwyL,SAAU,WACN,IAAIlwP,EAAOjI,KACXiI,EAAK4xP,WAAW5xP,EAAKuwP,aAAax7K,MAAM/oE,SACxChM,EAAK6xP,iBACT,EACArB,QAAS,SAASV,GACd/3P,KAAK65P,WAAW9B,EAAU9jP,SAC1BjU,KAAK85P,iBACT,EACA3kH,QAAS,WACLn1I,KAAK65P,WAAW75P,KAAKw4P,aAAax7K,MAAM/oE,QAC5C,EACA4lP,WAAY,SAAS5lP,GACjB,IAAK,IAAI1M,EAAI,EAAGA,EAAI0M,EAAQzM,OAAQD,IAC/BvH,KAAKu5P,eAAiBv5P,KAAK+5P,gBAAgB9lP,EAAQnJ,OAAOvD,GAEnE,EACAuyP,gBAAiB,WACb,IAAI7xP,EAAOjI,KACXiI,EAAKsxP,eAAiBtxP,EAAKoxP,SAAWpxP,EAAKqxP,cAC/C,EACAS,gBAAiB,CACb99O,EAAK,KACL+9O,EAAK,KACLjxC,EAAK,SACLkxC,EAAK,UAETzB,aAAc,CACV,EAAK,CAAEvkP,QAAW,YAAYvL,MAAS,GACvC,EAAK,CAAEuL,QAAW,YAAYvL,MAAS,GACvC,EAAK,CAAEuL,QAAW,YAAYvL,MAAS,GACvC,EAAK,CAAEuL,QAAW,YAAYvL,MAAS,GACvC,EAAK,CAAEuL,QAAW,YAAYvL,MAAS,GACvC,EAAK,CAAEuL,QAAW,YAAYvL,MAAS,GACvC,EAAK,CAAEuL,QAAW,YAAYvL,MAAS,GACvC,EAAK,CAAEuL,QAAW,YAAYvL,MAAS,GACvC,EAAK,CAAEuL,QAAW,YAAYvL,MAAS,GACvC,EAAK,CAAEuL,QAAW,YAAYvL,MAAS,GACvCwxP,EAAK,CAAEjmP,QAAW,YAAYvL,MAAS,IACvCqgN,EAAK,CAAE90M,QAAW,YAAYvL,MAAS,IACvCyxP,EAAK,CAAElmP,QAAW,YAAYvL,MAAS,IACvCwM,EAAK,CAAEjB,QAAW,YAAYvL,MAAS,IACvCjE,EAAK,CAAEwP,QAAW,YAAYvL,MAAS,IACvCyM,EAAK,CAAElB,QAAW,YAAYvL,MAAS,IACvCxE,EAAK,CAAE+P,QAAW,YAAYvL,MAAS,IACvC7D,EAAK,CAAEoP,QAAW,YAAYvL,MAAS,IACvC0xP,EAAK,CAAEnmP,QAAW,YAAYvL,MAAS,IACvC2xP,EAAK,CAAEpmP,QAAW,YAAYvL,MAAS,IACvC3D,EAAK,CAAEkP,QAAW,YAAYvL,MAAS,IACvCnE,EAAK,CAAE0P,QAAW,YAAYvL,MAAS,IACvCpE,EAAK,CAAE2P,QAAW,YAAYvL,MAAS,IACvC4xP,EAAK,CAAErmP,QAAW,YAAYvL,MAAS,IACvC6xP,EAAK,CAAEtmP,QAAW,YAAYvL,MAAS,IACvC8xP,EAAK,CAAEvmP,QAAW,YAAYvL,MAAS,IACvCrE,EAAK,CAAE4P,QAAW,YAAYvL,MAAS,IACvC+xP,EAAK,CAAExmP,QAAW,YAAYvL,MAAS,IACvCgyP,EAAK,CAAEzmP,QAAW,YAAYvL,MAAS,IACvC2M,EAAK,CAAEpB,QAAW,YAAYvL,MAAS,IACvCiyP,EAAK,CAAE1mP,QAAW,YAAYvL,MAAS,IACvCkyP,EAAK,CAAE3mP,QAAW,YAAYvL,MAAS,IACvCuxP,EAAK,CAAEhmP,QAAW,YAAYvL,MAAS,IACvCrD,EAAK,CAAE4O,QAAW,YAAYvL,MAAS,IACvC6M,EAAK,CAAEtB,QAAW,YAAYvL,MAAS,IACvCnD,EAAK,CAAE0O,QAAW,YAAYvL,MAAS,IACvC,IAAK,CAAEuL,QAAW,YAAYvL,MAAS,IACvC,IAAK,CAAEuL,QAAW,YAAYvL,MAAS,IACvC,IAAK,CAAEuL,QAAW,YAAYvL,MAAS,IACvC/F,EAAK,CAAEsR,QAAW,YAAYvL,MAAS,IACvC,IAAK,CAAEuL,QAAW,YAAYvL,MAAS,IACvC,IAAK,CAAEuL,QAAW,YAAYvL,MAAS,IACvC,IAAK,CAAEuL,QAAW,YAAYvL,MAAS,IACvCs0E,MAAO,CAAE/oE,QAAS,cAEtB9M,QAAS,CACL0wP,aAAa,KAIrBG,EAAU6C,eAAiB7C,EAAUiB,OAAOl2P,OAAOyF,EAAW,CAAC,EAAGkwP,EAAoB,CAClFt2P,KAAM,mBACNo2P,aAAc,CACVsC,OAAQ,CAAE7mP,QAAW,YAAYvL,MAAS,IAC1CqyP,OAAQ,CAAE9mP,QAAW,YAAYvL,MAAS,IAC1CsyP,OAAQ,CAAE/mP,QAAW,YAAYvL,MAAS,IAC1CuyP,OAAQ,CAAEhnP,QAAW,YAAYvL,MAAS,QAIlDsvP,EAAUkD,OAASjD,EAAWl1P,OAAO,CACjCX,KAAM,UACN+4P,eAAgB,GAChBC,eAAgB,GAChBlC,YAAa,GACbvB,UAAW,SAASjvP,EAAOqD,EAAOC,GAC9B,IAAI/D,EAAOjI,KACXiI,EAAKS,MAAQA,EACbT,EAAK8D,MAAQA,EACb9D,EAAK+D,OAASA,EACd/D,EAAKgM,QAAU,GACfhM,EAAKoR,OAAS,GACdpR,EAAK09D,WAAaj9D,EAAMlB,MAC5B,EACA8wP,cAAe,WACX,IAAIrwP,EAAOjI,KACPy5P,EAAYp2P,KAAK8V,IAAI,IAAOlR,EAAK8D,MAAO,IAC5C,GAAI9D,EAAK+D,OAASytP,EACd,MAAM,IAAIzoP,MAAM,uBAKpB,GAFA/I,EAAKozP,cAEDpzP,EAAKo3K,SAAWp3K,EAAKiwP,kBACrB,MAAM,IAAIlnP,MAAM,qBAExB,EACAqqP,YAAa,WACT,IAAIpzP,EAAOjI,KAEXiI,EAAKo3K,SAAWp3K,EAAK8D,OAAS,GAAK9D,EAAK09D,WAAa,EADhC,GACsD19D,EAAKwvP,gBAAkB,EACtG,EACAU,SAAU,WACN,IAAIlkP,EAAUjU,KAAKw4P,aAAax7K,MAAM/oE,QACtCjU,KAAK65P,WAAW5lP,EACpB,EACAkhI,QAAS,WACL,IAAIltI,EAAOjI,KACXiI,EAAKkwP,WACLlwP,EAAKgM,QAAQtS,KAAKsG,EAAKuwP,aAAa8C,gBACxC,EACA7C,QAAS,SAASF,GACdv4P,KAAK65P,WAAWtB,EAAStkP,SACzBjU,KAAKqZ,OAAO1X,KAAK42P,EAAS7vP,MAC9B,EACA2vP,aAAc,WACV,IAEIE,EAFAtwP,EAAOjI,KACPu7P,EAActzP,EAAKuzP,kBAGvBvzP,EAAKwzP,SAAWF,EAAY1wP,KAAK,IACjC,IAAK,IAAItD,EAAI,EAAGA,EAAIg0P,EAAY/zP,OAAQD,IACpCgxP,EAAWtwP,EAAKuwP,aAAavwP,EAAKyzP,sBAAsBH,EAAYh0P,KACpEU,EAAK4xP,WAAWtB,EAAStkP,QAEjC,EACAunP,gBAAiB,WACb,IAIIG,EAEA/xP,EANA3B,EAAOjI,KACPqZ,EAASpR,EAAKoR,OACd7R,EAAS6R,EAAO7R,OAChBo0P,EAAa,EAKjB,IAAKhyP,EAAMpC,EAAS,EAAGoC,GAAO,EAAGA,IAC7BgyP,GAAc3zP,EAAK4zP,cAAcxiP,EAAOzP,GAAKpC,EAASoC,EAAK3B,EAAKkzP,gBAKpE,IAHAQ,EAASC,EAAa3zP,EAAKixP,YAE3B0C,EAAa3zP,EAAK4zP,cAAcF,EAAQ,EAAG1zP,EAAKmzP,gBAC3CxxP,EAAMpC,EAAS,EAAGoC,GAAO,EAAGA,IAC7BgyP,GAAc3zP,EAAK4zP,cAAcxiP,EAAOzP,GAAMpC,EAASoC,EAAM,EAAG3B,EAAKmzP,gBAIzE,MAAO,CAACO,EADCC,EAAa3zP,EAAKixP,YAE/B,EACAwC,sBAAuB,SAAShzP,GAC5B,IAAK,IAAIqvP,KAAa/3P,KAAKw4P,aACvB,GAAIx4P,KAAKw4P,aAAaT,GAAWrvP,QAAUA,EACvC,OAAOqvP,CAGnB,EACA8D,cAAe,SAASnzP,EAAO4Q,EAAO0tC,GAClC,OAAQ1tC,EAAQ0tC,GAASA,GAASt+C,CACtC,EACAmxP,WAAY,SAAS5lP,GAGjB,IAFA,IAAIvL,EAEKnB,EAAI,EAAGA,EAAI0M,EAAQzM,OAAQD,IAChCmB,EAAQ8Q,SAASvF,EAAQnJ,OAAOvD,GAAG,IACnCvH,KAAKiU,QAAQtS,KAAK+G,EAE1B,EACA8vP,aAAc,CACV,EAAK,CAAEvkP,QAAW,SAASvL,MAAS,GACpC,EAAK,CAAEuL,QAAW,SAASvL,MAAS,GACpC,EAAK,CAAEuL,QAAW,SAASvL,MAAS,GACpC,EAAK,CAAEuL,QAAW,SAASvL,MAAS,GACpC,EAAK,CAAEuL,QAAW,SAASvL,MAAS,GACpC,EAAK,CAAEuL,QAAW,SAASvL,MAAS,GACpC,EAAK,CAAEuL,QAAW,SAASvL,MAAS,GACpC,EAAK,CAAEuL,QAAW,SAASvL,MAAS,GACpC,EAAK,CAAEuL,QAAW,SAASvL,MAAS,GACpC,EAAK,CAAEuL,QAAW,SAASvL,MAAS,GACpCwxP,EAAK,CAAEjmP,QAAW,SAASvL,MAAS,IACpCqgN,EAAK,CAAE90M,QAAW,SAASvL,MAAS,IACpCyxP,EAAK,CAAElmP,QAAW,SAASvL,MAAS,IACpCwM,EAAK,CAAEjB,QAAW,SAASvL,MAAS,IACpCjE,EAAK,CAAEwP,QAAW,SAASvL,MAAS,IACpCyM,EAAK,CAAElB,QAAW,SAASvL,MAAS,IACpCxE,EAAK,CAAE+P,QAAW,SAASvL,MAAS,IACpC7D,EAAK,CAAEoP,QAAW,SAASvL,MAAS,IACpC0xP,EAAK,CAAEnmP,QAAW,SAASvL,MAAS,IACpC2xP,EAAK,CAAEpmP,QAAW,SAASvL,MAAS,IACpC3D,EAAK,CAAEkP,QAAW,SAASvL,MAAS,IACpCnE,EAAK,CAAE0P,QAAW,SAASvL,MAAS,IACpCpE,EAAK,CAAE2P,QAAW,SAASvL,MAAS,IACpC4xP,EAAK,CAAErmP,QAAW,SAASvL,MAAS,IACpC6xP,EAAK,CAAEtmP,QAAW,SAASvL,MAAS,IACpC8xP,EAAK,CAAEvmP,QAAW,SAASvL,MAAS,IACpCrE,EAAK,CAAE4P,QAAW,SAASvL,MAAS,IACpC+xP,EAAK,CAAExmP,QAAW,SAASvL,MAAS,IACpCgyP,EAAK,CAAEzmP,QAAW,SAASvL,MAAS,IACpC2M,EAAK,CAAEpB,QAAW,SAASvL,MAAS,IACpCiyP,EAAK,CAAE1mP,QAAW,SAASvL,MAAS,IACpCkyP,EAAK,CAAE3mP,QAAW,SAASvL,MAAS,IACpCuxP,EAAK,CAAEhmP,QAAW,SAASvL,MAAS,IACpCrD,EAAK,CAAE4O,QAAW,SAASvL,MAAS,IACpC6M,EAAK,CAAEtB,QAAW,SAASvL,MAAS,IACpCnD,EAAK,CAAE0O,QAAW,SAASvL,MAAS,IACpC,IAAK,CAAEuL,QAAW,SAASvL,MAAS,IACpC,IAAK,CAAEuL,QAAW,SAASvL,MAAS,IACpC,IAAK,CAAEuL,QAAW,SAASvL,MAAS,IACpC/F,EAAK,CAAEsR,QAAW,SAASvL,MAAS,IACpC,IAAK,CAAEuL,QAAW,SAASvL,MAAS,IACpC,IAAK,CAAEuL,QAAW,SAASvL,MAAS,IACpC,IAAK,CAAEuL,QAAW,SAASvL,MAAS,IACpCoyP,OAAQ,CAAE7mP,QAAW,SAASvL,MAAS,IACvCqyP,OAAQ,CAAE9mP,QAAW,SAASvL,MAAS,IACvCsyP,OAAQ,CAAE/mP,QAAW,SAASvL,MAAS,IACvCuyP,OAAQ,CAAEhnP,QAAW,SAASvL,MAAS,IACvCs0E,MAAO,CAAE/oE,QAAW,UACpBqnP,gBAAiB,OAIzBtD,EAAU8D,eAAiB9D,EAAUkD,OAAOn4P,OAAOyF,EAAW,CAAC,EAAGkwP,EAAoB,CAClFt2P,KAAM,mBACNi2P,aAAc,WACV,IAEI3vP,EAFAT,EAAOjI,KACPu7P,EAActzP,EAAKuzP,kBAGvBvzP,EAAKwzP,SAAWF,EAAY1wP,KAAK,IAEjC,IAAK,IAAItD,EAAI,EAAGA,EAAIg0P,EAAY/zP,OAAQD,IACpCmB,EAAQ6yP,EAAYh0P,GAChBU,EAAK+wP,sBAAsBtwP,GAC3BT,EAAK0wP,YAAY1wP,EAAK+wP,sBAAsBtwP,IAG5CT,EAAK4xP,WAAW5xP,EAAKuwP,aAAavwP,EAAKyzP,sBAAsBhzP,IAAQuL,QAGjF,KAGJ,IAAI8nP,EAAWp7P,EAAMiH,MAAM7E,OAAO,CAC9BoF,KAAM,SAAS6zP,GACXh8P,KAAKg8P,SAAWA,CACpB,EACA7D,SAAU,WAAY,EACtBlrP,GAAI,WAAY,EAChBytB,KAAM,WAAY,EAClBjU,UAAW,WAAY,IAGvBw1O,EAAaF,EAASh5P,OAAO,CAC7Bm5P,KAAM,OACN/zP,KAAM,SAAS6zP,EAAUG,GACrB,IAAIl0P,EAAOjI,KACXiI,EAAK+zP,SAAWA,EAChB/zP,EAAKk0P,OAASA,EACdl0P,EAAKm0P,WAAWD,EACpB,EACAhE,SAAU,WACNn4P,KAAKg8P,SAASnC,WAAW75P,KAAKg9E,MAClC,EACA/vE,GAAI,SAASvE,EAAO4Q,GAChB,IAAImvC,EAAO//C,EAAMmJ,WAAWyH,GAC5B,OAAOtZ,KAAKq8P,OAAO5zM,EACvB,EACA/tB,KAAM,SAAS4hO,GAIX,IAHA,IAAIr0P,EAAOjI,KACP4J,EAAM,GAEF3B,EAAKs0P,OAAO3yP,GAAKW,KAAKtC,EAAMq0P,IAAkB1yP,EAAM3B,EAAKs0P,OAAO/0P,QACpEoC,GAER,EACA6c,UAAW,SAAS61O,GAChB,IAII7zM,EAJAxgD,EAAOjI,KACPm8P,EAASl0P,EAAKk0P,OACdzzP,EAAQ4zP,EAAc5zP,MACtB8zP,EAAY9zP,EAAMlB,OAGtB,GAAIiuB,EAAQ,IAAK0mO,IAAW,EAAG,CAC3B,IAAIM,EAAc/zP,EAAM6T,OAAO+/O,EAAchjP,OAAO5I,MAAM,WACtD+rP,IACAD,EAAY9zP,EAAMiN,QAAQ8mP,EAAY,GAAIH,EAAchjP,OAEhE,CAEA,MAAQmvC,EAAO6zM,EAAc5zP,MAAMmJ,WAAWyqP,EAAchjP,SAAW,GACnErR,EAAKo0P,OAAO5zM,IAAS6zM,EAAchjP,MAAQkjP,GAC3Cv0P,EAAK+zP,SAASnC,WAAW5xP,EAAK+hL,SAASvhI,IACvC6zM,EAAchjP,OAEtB,EACA8iP,WAAY,SAASD,GACjB,IAAIl0P,EAAOjI,KACXiI,EAAKs0P,OAAS,GAEV9mO,EAAQxtB,EAAKi0P,KAAMC,IAAW,GAC9Bl0P,EAAKs0P,OAAO56P,KAAKsG,EAAKy0P,UAGtBjnO,EAAQxtB,EAAKs/B,SAAU40N,IAAW,GAClCl0P,EAAKs0P,OAAO56P,KAAKsG,EAAK00P,aAE1B10P,EAAKs0P,OAAO56P,KAAKsG,EAAK20P,WAC1B,EACAF,SAAU,SAASJ,GACf,GAAIA,EAAcO,IAEd,OADAP,EAAcO,KAAM,EACbP,EAAcQ,eAAiB98P,KAAK8R,GAEnD,EACA6qP,YAAa,SAASL,GAClB,IAAIr0P,EAAOjI,KACX,GAAIs8P,EAAcQ,eAAiB70P,EAAKs/B,WACnC+0N,EAAchjP,MAAQ,GAAKgjP,EAAc5zP,MAAMlB,QAC5CS,EAAK+zP,SAAS/zP,EAAKs/B,UAAUt6B,GAAGqvP,EAAc5zP,MAAO4zP,EAAchjP,MAAQ,IAG/E,OAFArR,EAAK+zP,SAASnC,WAAW5xP,EAAK80P,OAC9BT,EAActnL,SAAU,GACjB,CAEf,EACA4nL,WAAY,WAER,OADA58P,KAAKg8P,SAASnC,WAAW75P,KAAKi9E,OACvB,CACX,EACA8/K,MAAO,KAGPC,EAAY,CAAC,EAEjBA,EAAU9C,EAAI+B,EAAWl5P,OAAO,CAC5B+O,IAAK,IACLy1B,SAAU,IACV80N,OAAQ,SAAS5zM,GACb,OAAOA,GAAQ,GAAKA,EAAO,EAC/B,EACAuhI,SAAU,SAASvhI,GACf,OAAIA,EAAO,GACAA,EAAO,GAGXA,EAAO,EAClB,EACAw0B,KAAM,IACND,MAAO,MAGXggL,EAAUj0C,EAAIkzC,EAAWl5P,OAAO,CAC5B+O,IAAK,IACLy1B,SAAU,IACV80N,OAAQ,SAAS5zM,GACb,OAAOA,GAAQ,IAAMA,EAAO,GAChC,EACAuhI,SAAU,SAASvhI,GACf,OAAOA,EAAO,EAClB,EACAw0B,KAAM,IACND,MAAO,MAGXggL,EAAU7C,EAAI4B,EAASh5P,OAAO,CAC1B+O,IAAK,IACLqmP,SAAU,WACNn4P,KAAKg8P,SAASnC,WAAW75P,KAAKg9E,MAClC,EACA/vE,GAAI,SAASvE,EAAO4Q,GAChB,IAAI2jP,EAAQ1F,EAAQ7uP,EAAO4Q,EAAO,GAClC,OAAQA,EAAQ,GAAK5Q,EAAMlB,QAA0B,GAAhBkB,EAAMlB,SAAgB6vP,EAAY9pP,KAAK0vP,EAChF,EACAviO,KAAM,WACF16B,KAAKg8P,SAASnC,WAAW75P,KAAKi9E,KAClC,EACAx2D,UAAW,SAAS61O,GAEhB,IADA,IAAI7zM,GACKA,EAAO8uM,EAAQ+E,EAAc5zP,MAAO4zP,EAAchjP,MAAO,KAC9D+9O,EAAY9pP,KAAKk7C,IAAwB,GAAfA,EAAKjhD,QAE/BxH,KAAKg8P,SAASnC,WAAWrgP,SAASivC,EAAM,KACxC6zM,EAAchjP,OAAS,CAE/B,EACA0wK,SAAU,SAASvhI,GACf,OAAOA,CACX,EACAw0B,KAAM,GACND,MAAO,MAGXggL,EAAUd,KAAOH,EAASh5P,OAAO,CAC7B+O,IAAK,OACLorP,gBAAiB,CAAC,IAAI,KACtB/0P,KAAM,SAAS6zP,EAAUG,GACrBn8P,KAAKg8P,SAAWA,EAChBh8P,KAAKm9P,eAAehB,EACxB,EACAhE,SAAU,SAASmE,GACf,IAAI7zM,EAAO6zM,EAAc5zP,MAAMmJ,WAAW,GAAK,IAC3CurP,EAAWp9P,KAAKq9P,aAAa50M,GAEjCzoD,KAAKg8P,SAASoB,GAAUjF,UAC5B,EACAlrP,GAAI,SAASvE,EAAO4Q,GAChB,IAAImvC,EAAO//C,EAAMmJ,WAAWyH,GAC5B,OAAOtZ,KAAKq8P,OAAO5zM,EACvB,EACA4zM,OAAQ,SAAS5zM,GACb,OAAOA,GAAQ,KAAOA,EAAO,GACjC,EACAhiC,UAAW,SAAS61O,GAChB,IAAIr0P,EAAOjI,KACPo9P,EAAWn1P,EAAKq1P,cAAchB,GAC9BN,EAAW/zP,EAAK+zP,SAChBx0P,EAAS41P,EAAS10P,MAAMlB,OAG5B,GAFA80P,EAAchjP,OAAS9R,EAEnBA,EAAS,EAET,IADA,IAAIihD,EACG20M,EAAS9jP,MAAQ9R,EAAQ41P,EAAS9jP,QACrCmvC,EAAO20M,EAAS10P,MAAMmJ,WAAWurP,EAAS9jP,OAC1C8jP,EAAS9pM,MAAQrrD,EAAKo1P,aAAa50M,GAC/B20M,EAASN,eAAiBM,EAAS9pM,QACnC8pM,EAASN,cAAgBM,EAAS9pM,MAClC0oM,EAASoB,EAAS9pM,OAAO54B,KAAK0iO,IAElCpB,EAASnC,WAAWmC,EAASoB,EAAS9pM,OAAO2pB,MAC7C++K,EAASnC,WAAWmC,EAASoB,EAAS9pM,OAAO02H,SAASvhI,SAItD20M,EAAS9pM,OAAS8pM,EAASN,eAC3Bd,EAASoB,EAAS9pM,OAAO54B,KAAK0iO,GAElCn1P,EAAKs1P,WAAWH,GAChBpB,EAASwB,SAASJ,EAAUn1P,EAAKw1P,WAC7BnB,EAAchjP,MAAQgjP,EAAc5zP,MAAMlB,QAC1CS,EAAKs1P,WAAWH,GAIxBd,EAAcO,KAAM,EACpBP,EAAchpM,MAAQ8pM,EAAS9pM,KACnC,EACAiqM,WAAY,SAASH,GACjB,IAAIn1P,EAAOjI,KACXiI,EAAK+zP,SAASnC,WAAW5xP,EAAK+zP,SAASoB,EAAS9pM,OAAO2pB,MACvDh1E,EAAK+zP,SAASnC,WAAW5xP,EAAK+zP,SAASoB,EAAS9pM,OAAO2pB,KAC3D,EACAqgL,cAAe,SAAShB,GACpB,IAAIr0P,EAAOjI,KACPo9P,EAAW,CACP10P,MAAOT,EAAKy1P,QAAQpB,EAAc5zP,MAAO4zP,EAAchjP,OACvDA,MAAO,GAKf,OAHA8jP,EAAS9pM,MAAQrrD,EAAKo1P,aAAaD,EAAS10P,MAAMmJ,WAAW,IAC7DurP,EAASN,cAAgBR,EAAcQ,eAAiB70P,EAAK6J,IACzDsrP,EAAS9pM,MAAQgpM,EAAcQ,cAC5BM,CACX,EACAD,eAAgB,SAAShB,GACrB,IAAIl0P,EAAOjI,KACXiI,EAAKw1P,UAAY,GACjB,IAAK,IAAIl2P,EAAI,EAAGA,EAAI40P,EAAO30P,OAAQD,IAC3BkuB,EAAQ0mO,EAAO50P,GAAIU,EAAKi1P,kBAAoB,GAC5Cj1P,EAAKw1P,UAAU97P,KAAKw6P,EAAO50P,GAGvC,EACA81P,aAAc,SAAS50M,GAEnB,IADA,IAAIxgD,EAAOjI,KACFuH,EAAI,EAAGA,EAAIU,EAAKw1P,UAAUj2P,OAAQD,IACvC,GAAIU,EAAK+zP,SAAS/zP,EAAKw1P,UAAUl2P,IAAI80P,OAAO5zM,GACxC,OAAOxgD,EAAKw1P,UAAUl2P,EAGlC,EACAm2P,QAAS,SAASh1P,EAAO4Q,GAGrB,IAFA,IAAImvC,EACA3xC,EAAS,IACL2xC,EAAO//C,EAAMmJ,WAAWyH,OAAatZ,KAAKq8P,OAAO5zM,IACrD3xC,GAAUzE,OAAOyc,aAAa25B,EAAO,KAEzC,OAAO3xC,CACX,IAGJkmP,EAAUW,KAAO5B,EAASh5P,OAAO,CAC7B+O,IAAK,OACL8rP,WAAY,IACZV,gBAAiB,CAAC,IAAI,KACtBW,QAAS,IACTC,MAAO,IACP31P,KAAM,SAAS6zP,EAAUG,GACrBn8P,KAAKg8P,SAAWA,EAChBh8P,KAAKm8P,OAASA,CAClB,EACAhE,SAAU,WACNn4P,KAAKg8P,SAASh8P,KAAK49P,YAAYzF,UACnC,EACAlrP,GAAI,WACA,OAAOwoB,EAAQz1B,KAAK8R,IAAK9R,KAAKm8P,SAAW,CAC7C,EACA11O,UAAW,SAAS61O,GAChB,IAQItoP,EACA+pP,EACAC,EAVA/1P,EAAOjI,KACPg8P,EAAW/zP,EAAK+zP,SAChBtzP,EAAQ4zP,EAAc5zP,MAAMjG,QAAQ,MAAO,IAC3Cw7P,EAAkB,IAAIzvP,OAAO,IAAMvG,EAAK41P,QAAU51P,EAAK61P,MAAQ,IAAK,KACpExkP,EAAQgjP,EAAchjP,MACtB8jP,EAAW,CACP9pM,MAAOrrD,EAAK21P,YAQpB,IAFA5B,EAASnC,WAAW5xP,EAAK+0E,SAEZ,CAKT,GAJAogL,EAAS9jP,MAAQ,GAGjBtF,GADAgqP,EAAkBt1P,EAAMoC,OAAOwO,KAAWrR,EAAK41P,QAAU,EAAI,GACjC,EAAI51P,EAAKi2P,eAAex1P,EAAO4Q,GAASrR,EAAKk2P,YAAYz1P,EAAO4Q,IAChFq/G,GAAGnxH,OACXu2P,EAAYzkP,EAAQ0kP,EAAkBhqP,EAAQqc,GAAG7oB,OAASwM,EAAQ2kH,GAAGnxH,YAIrE,IADAu2P,EAAYr1P,EAAMiN,QAAQ1N,EAAK41P,QAASvkP,EAAQ,IAChC,EAAG,CACf,GAAIA,EAAQtF,EAAQ2kH,GAAGx/G,IAAMnF,EAAQqc,GAAG7oB,OAASw2P,EAAkBt1P,EAAMlB,OACrE,MAAM,IAAIwJ,MAAM,6DAEpB+sP,EAAYr1P,EAAMlB,MACtB,CAOJ,GALA41P,EAAS10P,MAAQA,EAAMsC,UAAUsO,EAAOykP,GAAWt7P,QAAQw7P,EAAiB,IAC5Eh2P,EAAKm2P,SAASpqP,EAASopP,EAAS10P,OAEhCszP,EAASwB,SAASJ,EAAUn1P,EAAKi1P,iBAE7Ba,GAAar1P,EAAMlB,OACnB,MAGJ8R,EAAQykP,EAEJX,EAAS9pM,OAASrrD,EAAK21P,aACvB5B,EAAS/zP,EAAK21P,YAAYljO,KAAK0iO,GAC/BA,EAAS9pM,MAAQrrD,EAAK21P,YAGrB5pP,EAAQ2kH,GAAGnxH,QACZw0P,EAASnC,WAAW5xP,EAAK+0E,MAEjC,CACAs/K,EAAchjP,MAAQgjP,EAAc5zP,MAAMlB,MAC9C,EACA42P,SAAU,SAASpqP,EAAStL,GACxB,IAAI+/C,EAAO//C,EAAM6T,OAAOvI,EAAQqc,GAAG7oB,QAC/BmxH,EAAK3kH,EAAQ2kH,GACjB,IAAKA,EAAGjzH,OAAS2xP,EAAY9pP,KAAKk7C,GAC9B,MAAM,IAAIz3C,MAAM,0BAA4BgD,EAAQqc,GAAK,2DAG7D,GAAe,gBAAXsoG,EAAGjzH,OAA2B4xP,EAAkB/pP,KAAKk7C,GACpD,MAAM,IAAIz3C,MAAM,0BAA4BgD,EAAQqc,GAAK,qEAG9D,GAAIsoG,EAAGnxH,QAAUmxH,EAAGnxH,SAAWihD,EAAKjhD,OAC/B,MAAM,IAAIwJ,MAAM,0BAA4BgD,EAAQqc,GAAK,YAAcsoG,EAAGnxH,OAAS,qBAGxF,GAAImxH,EAAGjiH,KAAOiiH,EAAGjiH,IAAM+xC,EAAKjhD,OACvB,MAAM,IAAIwJ,MAAM,0BAA4BgD,EAAQqc,GAAK,qBAAuBsoG,EAAGjiH,IAAM,qBAG9F,GAAIiiH,EAAGx/G,KAAOw/G,EAAGx/G,IAAMsvC,EAAKjhD,OACvB,MAAM,IAAIwJ,MAAM,0BAA4BgD,EAAQqc,GAAK,oBAAsBsoG,EAAGx/G,IAAM,oBAEjG,EACAglP,YAAa,SAASz1P,EAAO4Q,GAIzB,IAHA,IACI+W,EACAsoG,EAFA1wH,EAAOjI,KAGFuH,EAAI,EAAGA,GAAK,EAAGA,IAGpB,GAFA8oB,EAAKknO,EAAQ7uP,EAAO4Q,EAAO/R,GAC3BoxH,EAAK1wH,EAAKo2P,MAAMhuO,IAAOpoB,EAAKo2P,MAAMhuO,EAAGrlB,UAAU,EAAGqlB,EAAG7oB,OAAS,IAE1D,MAAO,CACH6oB,GAAIA,EACJsoG,GAAIA,GAIhB1wH,EAAKq2P,mBAAmBjuO,EAC5B,EACAiuO,mBAAoB,SAASjuO,GACzB,MAAM,IAAIrf,MAAMrQ,EAAMsQ,OAAO,mDAAmDof,EACpF,EACA6tO,eAAgB,SAASx1P,EAAO4Q,GAC5B,IAAIrR,EAAOjI,KACP8V,EAAQpN,EAAMiN,QAAQ1N,EAAK41P,QAASvkP,GACpC3N,EAAMjD,EAAMiN,QAAQ1N,EAAK61P,MAAOhoP,GAChCua,EAAK3nB,EAAMsC,UAAU8K,EAAQ,EAAEnK,GAC/BgtH,EAAK1wH,EAAKo2P,MAAMhuO,IAAOpoB,EAAKo2P,MAAMhuO,EAAG9T,OAAO8T,EAAG7oB,OAAS,IAK5D,OAJKmxH,GACD1wH,EAAKq2P,mBAAmBjuO,GAGrB,CACHsoG,GAAIA,EACJtoG,GAAIA,EAEZ,EACAguO,MAAO,SAAShuO,GACZ,IAAIsoG,EAAK34H,KAAKu+P,uBACVC,EAAW7lI,EAAG6lI,SAClB,GAAI7lI,EAAGtoG,GACH,OAAOsoG,EAAGtoG,GAGd,IAAK,IAAI9oB,EAAI,EAAGA,EAAIi3P,EAASh3P,OAAQD,IAAK,CACtC,GAAIi3P,EAASj3P,GAAGk3P,KAAOhpO,EAAQpF,EAAImuO,EAASj3P,GAAGk3P,MAAQ,EACnD,OAAOD,EAASj3P,GAAG7B,KAElB,GAAI84P,EAASj3P,GAAGyxD,OAEjB,IADA,IAAIA,EAASwlM,EAASj3P,GAAGyxD,OAChBjuB,EAAI,EAAGA,EAAIiuB,EAAOxxD,OAAQujC,IAC/B,GAAIiuB,EAAOjuB,GAAG,IAAM1a,GAAMA,GAAM2oC,EAAOjuB,GAAG,GACtC,OAAOyzN,EAASj3P,GAAG7B,IAInC,CACJ,EACA64P,uBAAwB,CACpB,GAAM,CAAEplP,IAAK,GAAIzT,KAAM,gBACvB,IAAO,CAAE8B,OAAQ,IACjB,KAAQ,CAAE2R,IAAK,EAAGzT,KAAM,gBACxB,IAAO,CAAEyT,IAAK,EAAGzT,KAAM,gBACvB,KAAQ,CAAEyT,IAAK,GAAIzT,KAAM,gBACzB,IAAO,CAAEgR,IAAK,EAAGyC,IAAK,GAAIzT,KAAM,gBAChC,KAAQ,CAAEgR,IAAK,EAAGyC,IAAK,GAAIzT,KAAM,gBACjC,IAAO,CAAEgR,IAAK,GAAIyC,IAAK,GAAIzT,KAAM,gBACjC,KAAQ,CAAEgR,IAAK,GAAIyC,IAAK,GAAIzT,KAAM,gBAClC84P,SAAU,CAAC,CACPC,IAAK,CAAC,KAAM,KAAM,OAAQ,QAC1BzlM,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MAEVtzD,KAAM,CAAE8B,OAAQ,IAClB,CACEi3P,IAAK,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,OAAQ,OAAQ,QAC/EzlM,OAAQ,CAAC,EAAC,IACVtzD,KAAM,CAAEyT,IAAK,GAAIzT,KAAM,iBACzB,CACE+4P,IAAK,CAAC,QACNzlM,OAAQ,CAAC,CAAC,IAAK,MACftzD,KAAM,CAAE8B,OAAQ,KAClB,CACEi3P,IAAK,CAAC,KAAK,KAAM,MAAO,MAAO,QAC/B/4P,KAAM,CAAEyT,IAAK,GAAIzT,KAAM,iBACzB,CACE+4P,IAAK,CAAC,KAAM,OAAQ,OAAQ,QAC5B/4P,KAAM,CAAE8B,OAAQ,KAClB,CACEi3P,IAAK,CAAC,KAAM,KAAM,QAClB/4P,KAAM,CAAE8B,OAAQ,KAClB,CACEi3P,IAAK,CAAC,OACNzlM,OAAQ,CACJ,CAAC,IAAK,MAEVtzD,KAAM,CAAE8B,OAAQ,IAClB,CACEi3P,IAAK,CAAC,KAAM,QACZ/4P,KAAM,CAAE8B,OAAQ,IAClB,CACEi3P,IAAK,CAAC,KAAK,MACX/4P,KAAM,CAAEyT,IAAK,EAAGzT,KAAM,iBACxB,CACE+4P,IAAK,CAAC,MAAM,OACZ/4P,KAAM,CAAEyT,IAAK,GAAIzT,KAAM,iBACzB,CACE+4P,IAAK,CAAC,MAAO,OACb/4P,KAAM,CAAEgR,IAAK,EAAGyC,IAAK,GAAIzT,KAAM,iBAChC,CACC+4P,IAAK,CAAC,MAAO,OACb/4P,KAAM,CAAEgR,IAAK,EAAGyC,IAAK,GAAIzT,KAAM,iBACjC,CACE+4P,IAAK,CAAC,OAAQ,QACd/4P,KAAM,CAAE8B,OAAQ,OAGxBw1E,MAAO,MAGX,IAAI0hL,EAAclH,EAASz0P,OAAO,CAC9BoF,KAAM,SAAShB,GACXqwP,EAASzvP,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAC5BnH,KAAK2+P,aACT,EACAA,YAAa,WAET,IADA,IAAI12P,EAAOjI,KACFuH,EAAI,EAAGA,EAAIU,EAAKk0P,OAAO30P,OAAQD,IACpCU,EAAKA,EAAKk0P,OAAO50P,IAAM,IAAIy1P,EAAU/0P,EAAKk0P,OAAO50P,IAAIU,EAAMA,EAAKk0P,OAExE,EACAxE,UAAW,SAASjvP,EAAOqD,EAAOC,GAC/B,IAAI/D,EAAOjI,KACXiI,EAAKgM,QAAU,GACfhM,EAAKS,MAAQA,EACbT,EAAK8D,MAAQA,EACb9D,EAAK+D,OAASA,EACd/D,EAAK22P,SAAW,EAChB32P,EAAKu9K,WAAa,EAClBv9K,EAAKqR,MAAQ,EACbrR,EAAKqF,SAAW,CACnB,EACAsqP,QAAS,WACL,IAAI3vP,EAAOjI,KACPs8P,EAAgB,CACZ5zP,MAAOT,EAAKS,MACZ4Q,MAAO,EACPg6C,MAAO,IAEW,IAAtBrrD,EAAKS,MAAMlB,SAIf80P,EAAchpM,MACVgpM,EAAcQ,cAAgB70P,EAAK42P,aAAavC,EAAer0P,EAAKk0P,QAExEl0P,EAAKkwP,SAASmE,GAEdr0P,EAAKu1P,SAASlB,EAAer0P,EAAKk0P,QAElCl0P,EAAK4vP,cACL5vP,EAAKktI,UACLltI,EAAKozP,cACT,EACAmC,SAAU,SAASlB,EAAeH,GAE9B,IADA,IAAIl0P,EAAOjI,KAEPiI,EAAKq0P,EAAchpM,OAAO7sC,UAAU61O,KAChCA,EAAchjP,OAASgjP,EAAc5zP,MAAMlB,SAI/C,GAAK80P,EAActnL,QAKd,CACF,IAAIx6B,EAAO8hN,EAAchpM,MACzBgpM,EAAchpM,MAAQgpM,EAAcQ,cACpCR,EAAcQ,cAAgBtiN,EAC9B8hN,EAActnL,SAAU,CAC3B,MATIsnL,EAAcQ,cAAgBR,EAAchpM,MAC5CgpM,EAAchpM,MAAQrrD,EAAK42P,aAAavC,EAAeH,GACvDl0P,EAAKq0P,EAAchpM,OAAO54B,KAAK4hO,EAS3C,EACAnE,SAAU,SAASmE,GACft8P,KAAKs8P,EAAchpM,OAAO6kM,SAASmE,GACnCt8P,KAAKsN,SAAW,CACpB,EACAuqP,YAAa,WACT,IAAI5vP,EAAOjI,KAEXiI,EAAKwzP,SAAWxzP,EAAK22P,SAAW,IAChC32P,EAAK4xP,WAAW5xP,EAAKwzP,SACzB,EACAtmH,QAAS,WACLn1I,KAAK65P,WAAW75P,KAAK8+P,KACzB,EACAzD,YAAa,WACT,IAAIpzP,EAAOjI,KACXiI,EAAKo3K,SAAWp3K,EAAK8D,OAAS9D,EAAKu9K,WAAav9K,EAAKwvP,gBACzD,EACAoC,WAAY,SAASpxM,GAKjB,IAJA,IAEI//C,EAFAT,EAAOjI,KACPiU,EAAUhM,EAAKuwP,aAAa/vM,GAAMh3C,WAG7BlK,EAAI,EAAGA,EAAI0M,EAAQzM,OAAQD,IAChCmB,EAAQ8Q,SAASvF,EAAQnJ,OAAOvD,GAAG,IACnCU,EAAKgM,QAAQtS,KAAK+G,GAClBT,EAAKu9K,YAAc98K,EAEvBT,EAAK22P,UAAYn2M,EAAOxgD,EAAKqF,UACjC,EACAuxP,aAAc,SAASvC,EAAeH,GAClC,IAAK,IAAI50P,EAAI,EAAGA,EAAI40P,EAAO30P,OAAQD,IAC/B,GAAIvH,KAAKm8P,EAAO50P,IAAI0F,GAAGqvP,EAAc5zP,MAAO4zP,EAAchjP,OACtD,OAAO6iP,EAAO50P,GAGtBvH,KAAK83P,sBAAsBwE,EAAc5zP,MAAMoC,OAAOwxP,EAAchjP,OACxE,EACAk/O,aAAc,CACV,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAC/D,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAC/D,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAC/D,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAC/D,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAC/D,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAC/D,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAC/D,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAC/D,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAC/D,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAC/D,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,SAE9CsG,KAAM,MAGV9G,EAAU+G,SAAWL,EAAY37P,OAAO,CACpCX,KAAM,aACN+5P,OAAQ,CAAC,OAIbnE,EAAUgH,SAAWN,EAAY37P,OAAO,CACpCX,KAAM,aACN+5P,OAAQ,CAAC,OAGbnE,EAAUiH,SAAWP,EAAY37P,OAAO,CACpCX,KAAM,aACN+5P,OAAQ,CAAC,OAGbnE,EAAUkH,QAAUR,EAAY37P,OAAO,CACnCX,KAAM,WACN+5P,OAAQ,CAAC,IAAK,IAAK,IAAK,UAG5BnE,EAAU,WAAa0G,EAAY37P,OAAO,CACvCX,KAAM,eACN+5P,OAAQ,CAAC,OAAQ,IAAK,OAGzB,IAAIgD,EAAU3H,EAASz0P,OAAO,CAC1B40P,UAAW,SAASjvP,EAAOqD,GACvB,IAAI9D,EAAOjI,KACXiI,EAAKgM,QAAU,GACfhM,EAAKS,MAAQA,EACbT,EAAKm3P,eAAiB,EACtBn3P,EAAK8D,MAAQA,CACjB,EACAsvP,YAAa,WACT,IAAIpzP,EAAOjI,KAGXiI,EAAKo3K,SAAWp3K,EAAK8D,OACX,IAAM9D,EAAKS,MAAMlB,OAASS,EAAKm3P,gBAAkBn3P,EAAKwvP,gBAH1C,EAI1B,EACAG,QAAS,WACL,IAAI3vP,EAAOjI,KACP0I,EAAQT,EAAKS,MACjBT,EAAK4xP,WAAW5xP,EAAK+0E,OAErB,IAAK,IAAIz1E,EAAI,EAAGA,EAAImB,EAAMlB,OAAQD,IAC9BU,EAAKmwP,aAAa1vP,EAAMoC,OAAOvD,IAG/BU,EAAKd,QAAQ0wP,aACb5vP,EAAK4vP,cAGT5vP,EAAK4xP,WAAW5xP,EAAK62P,MACrB72P,EAAKozP,aACT,EACAjD,aAAc,SAASL,GACnB,IAAI9vP,EAAOjI,KACPiU,EAAUhM,EAAKuwP,aAAaT,GAC3B9jP,GACDhM,EAAK6vP,sBAAsBC,GAE/B9vP,EAAK4xP,WAAW5lP,EACpB,EACA4lP,WAAY,SAAS5lP,GACjB,IAAK,IAAI1M,EAAI,EAAGA,EAAI0M,EAAQzM,OAAQD,IAChCvH,KAAKiU,QAAQtS,KAAK6X,SAASvF,EAAQnJ,OAAOvD,GAAG,IAErD,EACAswP,YAAa,WACT,IAEI0D,EAFAtzP,EAAOjI,KAIXu7P,EAHuBtzP,EAAKo3P,UAAUp3P,EAAKq3P,cAGZ/0P,KAAKtC,EAAKo3P,UAAWp3P,EAAKS,OAEzDT,EAAKwzP,SAAWF,EAAY1wP,KAAK,IACjC,IAAK,IAAItD,EAAI,EAAGA,EAAIg0P,EAAY/zP,OAAQD,IACpCU,EAAKm3P,iBACLn3P,EAAK4xP,WAAW5xP,EAAKuwP,aAAa+C,EAAYh0P,IAEtD,EACA83P,UAAW,CACPE,SAAU,SAAS72P,GACf,IAEAkB,EACA41P,EACAC,EAJIlE,EAAc,CAAC,EAAG,IACtBmE,EAAMh3P,EAAMlB,OAAS,EAKrB,IAAKoC,EAAM,EAAGA,EAAMlB,EAAMlB,OAAQoC,IAC9B2xP,GAAa3xP,EAAM81P,GAAO,IAAMlmP,SAAS9Q,EAAMoC,OAAOlB,GAAK,IAM/D,IAHA61P,EAASlE,EAAY,GACrBiE,GAA4B,EAAjBjE,EAAY,IAAQ9pP,WAE1B7H,EAAM,EAAGA,EAAM41P,EAAQh4P,OAAQoC,IAChC61P,GAAUjmP,SAASgmP,EAAQ10P,OAAOlB,GAAK,IAG3C,MAAO,EAAE,GAAM61P,EAAS,IAAO,GACnC,EACAE,SAAU,SAASj3P,GAOf,IANA,IAIIk3P,EAJAC,EAAc,EAEdr4P,EAASkB,EAAMlB,OAIVD,EAAI,EAAGA,EAAIC,EAAQD,IAExBs4P,MADWr4P,EAASD,GAAK,GAAK,GAAK,GACXmB,EAAMoC,OAAOvD,GAGzC,OAAkB,KADlBq4P,GATU,GASUC,EATV,QAWC,CAACD,GAEL,CAAC,EAAG,EACf,EACAE,iBAAkB,SAASp3P,GACvB,IACIq3P,EADAxE,EAAcv7P,KAAK2/P,SAASj3P,GAIhC,OAFAq3P,EAAar3P,EAAQ6yP,EAAY,GAE1BA,EAAYn9O,OAAOpe,KAAKu/P,SAASQ,GAC5C,EACAC,iBAAkB,SAASt3P,GACvB,IACIu3P,EADA1E,EAAcv7P,KAAKu/P,SAAS72P,GAIhC,OAFAu3P,EAAav3P,EAAQ6yP,EAAY,GAE1BA,EAAYn9O,OAAOpe,KAAKu/P,SAASU,GAC5C,GAEJzH,aAAc,CAAC,WAAY,WAAW,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1Hx7K,MAAO,KACP8hL,KAAM,MACNQ,aAAc,KAGlBtH,EAAUkI,SAAWf,EAAQp8P,OAAO,CAChCX,KAAM,eACNk9P,aAAc,aAGlBtH,EAAUmI,SAAWhB,EAAQp8P,OAAO,CAChCX,KAAM,eACNk9P,aAAc,aAGlBtH,EAAUoI,WAAajB,EAAQp8P,OAAO,CAClCX,KAAM,wBACNk9P,aAAc,qBAGlBtH,EAAUqI,WAAalB,EAAQp8P,OAAO,CAClCX,KAAM,wBACNk9P,aAAc,qBAGlBtH,EAAUsI,OAAS9I,EAASz0P,OAAO,CAC/BX,KAAM,UACN+4P,eAAgB,GAChBC,eAAgB,EAChBmF,mBAAoB,GACpBrH,YAAa,GACbsH,WAAY,GACZC,KAAM,IACNzjL,MAAO,SACP8hL,KAAM,QACNnH,UAAW,SAASjvP,EAAOqD,GACvB,IAAI9D,EAAOjI,KACXiI,EAAKgM,QAAU,GACfhM,EAAKS,MAAQA,EACbT,EAAK8D,MAAQA,EACb9D,EAAKu9K,WAAa,CACtB,EACAoyE,QAAS,WACL,IAAI3vP,EAAOjI,KACP0I,EAAQT,EAAKS,MACjBT,EAAK4xP,WAAW5xP,EAAK+0E,OAErB,IAAK,IAAIz1E,EAAI,EAAGA,EAAImB,EAAMlB,OAAQD,IAC9BU,EAAKmwP,aAAa1vP,EAAMoC,OAAOvD,IAG/BU,EAAKd,QAAQ0wP,aACb5vP,EAAK4vP,cAGT5vP,EAAK4xP,WAAW5xP,EAAK62P,MACrB72P,EAAKozP,aACT,EACAA,YAAa,WACT,IAAIpzP,EAAOjI,KACXiI,EAAKo3K,SAAWp3K,EAAK8D,OAAS9D,EAAKu9K,WAAav9K,EAAKwvP,gBACzD,EACAI,YAAa,WACT,IAGI8D,EAHA1zP,EAAOjI,KACP0I,EAAQT,EAAKS,MACblB,EAASkB,EAAMlB,OAQnB,GALAm0P,EAAS1zP,EAAKy4P,eAAeh4P,EAAOlB,EAAQS,EAAKkzP,gBAAkBlzP,EAAKixP,YACxEjxP,EAAKwzP,SAAWE,EAAS,GACzB1zP,EAAK4xP,WAAW5xP,EAAKuwP,aAAamD,MAElCn0P,GACcS,EAAKs4P,mBAAoB,CACnC,IAAI9e,GAAUka,EAAS1zP,EAAKy4P,eAAeh4P,EAAOlB,EAAQS,EAAKmzP,iBAAmBnzP,EAAKixP,YACvFjxP,EAAKwzP,UAAYha,EACjBx5O,EAAK4xP,WAAW5xP,EAAKuwP,aAAa/W,GACtC,CACJ,EACAif,eAAgB,SAASh4P,EAAOlB,EAAQw/C,GAEpC,IADA,IAAI64M,EAAc,EACTt4P,EAAI,EAAGA,EAAImB,EAAMlB,OAAQD,IAC9Bs4P,GAAe7/P,KAAK67P,cAAc77P,KAAKgqL,SAASthL,EAAMoC,OAAOvD,IAAKC,EAAQD,EAAGy/C,GAGjF,OAAO64M,CACX,EACAhE,cAAe,SAASnzP,EAAOlB,EAAQ8R,EAAO0tC,GAE1C,QADcx/C,EAAS8R,GAAS0tC,GAASA,GACzBt+C,CACpB,EACAshL,SAAU,SAAS+tE,GACf,IAAI9vP,EAAOjI,KACX,OAAK8I,MAAMivP,IAGFA,IAAc9vP,EAAKw4P,MACxBx4P,EAAK6vP,sBAAsBC,GAExB9vP,EAAKu4P,YALDhnP,SAASu+O,EAAU,GAMlC,EACAK,aAAc,SAASL,GACnB,IAAI9vP,EAAOjI,KACP0I,EAAQT,EAAK+hL,SAAS+tE,GACtB9jP,EAAUhM,EAAKuwP,aAAa9vP,GAChCT,EAAK4xP,WAAW5lP,EACpB,EACA4lP,WAAY,SAAS5lP,GAEjB,IADA,IAAIvL,EACKnB,EAAI,EAAGA,EAAI0M,EAAQzM,OAAQD,IAChCmB,EAAQ8Q,SAASvF,EAAQnJ,OAAOvD,GAAG,IACnCvH,KAAKiU,QAAQtS,KAAK+G,GAClB1I,KAAKwlL,YAAc98K,CAE3B,EACA8vP,aAAc,CAAC,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,UACnHrxP,QAAS,CACL0wP,aAAa,KAIrBG,EAAU2I,QAAUnJ,EAASz0P,OAAO,CAChCX,KAAM,UACN46E,MAAO,IACP4jL,mBAAoB,CAAC,EAAE,EAAG,IAC1BC,gBAAiB,IACjBlJ,UAAW,SAASjvP,EAAOqD,EAAOC,GAC9B,IAAI/D,EAAOjI,KACXiI,EAAK+D,OAASA,EACd/D,EAAK8D,MAAQA,EACb9D,EAAK64P,WAAa90P,EAAS,EAC3B/D,EAAKS,MAAQA,EAAMjG,QAAQ,IAAI+L,OAAOvG,EAAK44P,gBAAgB,KAAM,IACjE54P,EAAKgM,QAAU,GACfhM,EAAKm2P,SAASn2P,EAAKS,OACnBT,EAAK22P,SAAW,EAChB32P,EAAKozP,aACT,EACAzD,QAAS,WACL,IAAI3vP,EAAOjI,KACP0I,EAAQT,EAAKS,MACjBT,EAAK4xP,WAAW5xP,EAAK+0E,OAErB,IAAK,IAAIz1E,EAAI,EAAGA,EAAImB,EAAMlB,OAAQD,IAC9BU,EAAKmwP,aAAa1vP,EAAMoC,OAAOvD,IAG/BU,EAAKd,QAAQ0wP,aACb5vP,EAAK4vP,cAGT5vP,EAAK4xP,WAAW5xP,EAAK+0E,OACrB/0E,EAAKgM,QAAQ8b,KACjB,EACAqoO,aAAc,SAASL,GACnB,IAAI9vP,EAAOjI,KACPiU,EAAUhM,EAAKuwP,aAAaT,GAChC9vP,EAAK22P,UAAYplP,SAASu+O,EAAU,IACpC9vP,EAAK4xP,WAAW5lP,EACpB,EACA4jP,YAAa,WACT,IAAI5vP,EAAOjI,KACXiI,EAAKwzP,UAAY,GAAMxzP,EAAK22P,SAAW,IAAO,GAC9C32P,EAAKmwP,aAAanwP,EAAKwzP,SAC3B,EACAJ,YAAa,WACT,IAAIpzP,EAAOjI,KAEXiI,EAAKo3K,SAAWp3K,EAAK8D,OAAmC,IAAzB9D,EAAKS,MAAMlB,OAAS,GAD7B,EACyDS,EAAKwvP,gBACxF,EACA2G,SAAU,SAAS11P,GACf,IAAIT,EAAOjI,KAKX,GAHKq3P,EAAY9pP,KAAK7E,IAClBT,EAAK6vP,sBAAsBpvP,EAAMgI,MAAM,UAAU,IAEjD+kB,EAAQ/sB,EAAMlB,OAAQS,EAAK24P,oBAAsB,EACjD,MAAM,IAAI5vP,MAAM,qEAAuE/I,EAAK24P,mBAAmB/1P,KAAK,KAE5H,EACAgvP,WAAY,SAAS5lP,GAGjB,IAFA,IACIiqE,EADAj2E,EAAOjI,KAEFuH,EAAI,EAAGA,EAAI0M,EAAQzM,OAAQD,IAChC22E,EAAKj2E,EAAK+D,OAAS/D,EAAK64P,WAAa7sP,EAAQnJ,OAAOvD,GACpDU,EAAKgM,QAAQtS,KAAK,CAAEoK,MAAO,EAAGmyE,GAAIA,EAAIE,GAAIn2E,EAAK+D,SAC/C/D,EAAKgM,QAAQtS,KAAK,EAE1B,EACA62P,aAAc,CAAC,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,WAGpGR,EAAU+I,MAAQvJ,EAASz0P,OAAO,CAC9B40P,UAAW,SAASjvP,EAAOqD,EAAOC,GAG9B,GAAoB,KAFpBtD,GAAS,IAEClB,QAAgB,KAAK+F,KAAK7E,GAChC,MAAM,IAAIsI,MAAM,0DAGpB,IAAI/I,EAAOjI,KACXiI,EAAKgM,QAAU,GACfhM,EAAKd,QAAQ6E,OAASA,EACtB/D,EAAKo3K,SAAWtzK,GAAS,GAAK9D,EAAKwvP,iBACnCxvP,EAAKS,MAAQA,EACbT,EAAKwzP,SAAWxzP,EAAK+4P,oBACrB/4P,EAAKg5P,QAAUv4P,EAAM,GACrBT,EAAKi5P,SAAWx4P,EAAM6T,OAAO,EAAE,GAC/BtU,EAAKk5P,UAAYz4P,EAAM6T,OAAO,GAAKtU,EAAKwzP,QAC5C,EACA7D,QAAS,WACL,IAAI3vP,EAAOjI,KACXiI,EAAKm5P,UAAUn5P,EAAKuwP,aAAa1iP,OACjC7N,EAAKo5P,QAAQp5P,EAAKi5P,SAASj5P,EAAKg5P,SAChCh5P,EAAKm5P,UAAUn5P,EAAKuwP,aAAalwF,QACjCrgK,EAAKo5P,QAAQp5P,EAAKk5P,WAClBl5P,EAAKm5P,UAAUn5P,EAAKuwP,aAAa1iP,MACrC,EACAurP,QAAS,SAASH,EAASpvP,GAEvB,IADA,IAAI7J,EAAOjI,KACFuH,EAAI,EAAGA,EAAI25P,EAAS15P,OAAQD,IAC7BuK,GAAO0H,SAASvR,EAAKq5P,SAASxvP,GAAKhH,OAAOvD,GAAG,IAC7CU,EAAKm5P,UAAUl+P,MAAMmF,UAAUxB,MAAM0D,KAAKtC,EAAKuwP,aAAa9sP,OAAOw1P,EAASp2P,OAAOvD,KAAK8O,WAAU,GAElGpO,EAAKm5P,UAAUn5P,EAAKuwP,aAAa9sP,OAAOw1P,EAASp2P,OAAOvD,KAAI,EAGxE,EACA65P,UAAW,SAASG,EAASC,GAEzB,IADA,IAAIv5P,EAAOjI,KACFuH,EAAI,EAAGA,EAAIg6P,EAAS/5P,OAAQD,IAC7Bi6P,EACAv5P,EAAKgM,QAAQtS,KAAK,CACdu8E,GAAI,EACJE,GAA0B,IAAtBn2E,EAAKd,QAAQ6E,OACjBD,MAAOw1P,EAASh6P,KAGpBU,EAAKgM,QAAQtS,KAAK4/P,EAASh6P,GAGvC,EACAy5P,kBAAmB,WAIf,IAHA,IAAItB,EAAM,EACN+B,EAAO,EACP/4P,EAAQ1I,KAAK0I,MAAMkC,MAAM,IAAIyL,UAAUxL,KAAK,IACvCtD,EAAI,EAAGA,EAAImB,EAAMlB,OAAQD,IAC1BA,EAAI,EACJk6P,GAAQjoP,SAAS9Q,EAAMoC,OAAOvD,GAAG,IAGjCm4P,GAAOlmP,SAAS9Q,EAAMoC,OAAOvD,GAAG,IAIxC,OADgB,IAAO,EAAIm4P,EAAM+B,GAAQ,IAAO,EAEpD,EACAH,SAAU,CACN,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,UAEJ9I,aAAc,CACV9sP,OAAQ,CACJ,CAAC,EAAE,EAAE,EAAE,GACP,CAAC,EAAE,EAAE,EAAE,GACP,CAAC,EAAE,EAAE,EAAE,GACP,CAAC,EAAE,EAAE,EAAE,GACP,CAAC,EAAE,EAAE,EAAE,GACP,CAAC,EAAE,EAAE,EAAE,GACP,CAAC,EAAE,EAAE,EAAE,GACP,CAAC,EAAE,EAAE,EAAE,GACP,CAAC,EAAE,EAAE,EAAE,GACP,CAAC,EAAE,EAAE,EAAE,IAEXoK,MAAO,CAAC,EAAE,EAAE,GACZwyJ,OAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,MAIzB0vF,EAAU0J,KAAO1J,EAAU+I,MAAMh+P,OAAO,CACpC40P,UAAW,SAASjvP,EAAOqD,EAAOC,GAC9B,IAAI/D,EAAOjI,KACX,GAAoB,GAAhB0I,EAAMlB,QAAe,KAAK+F,KAAK7E,GAC/B,MAAM,IAAIsI,MAAM,0BAEpB/I,EAAKS,MAAQA,EACbT,EAAKd,QAAQ6E,OAASA,EACtB/D,EAAKwzP,SAAWxzP,EAAK+4P,kBAAkB/4P,EAAKS,OAC5CT,EAAKi5P,SAAWj5P,EAAKS,MAAM6T,OAAO,EAAE,GACpCtU,EAAKk5P,UAAYl5P,EAAKS,MAAM6T,OAAO,GAAKtU,EAAKwzP,SAC7CxzP,EAAKgM,QAAU,GACfhM,EAAKo3K,SAAWtzK,GAAS,GAAK9D,EAAKwvP,gBACvC,IAGJ,IAAIkK,EAAUvwO,EAAOruB,OAAO,CACxBoF,KAAM,SAAS0D,EAAS1E,GACnB,IAAIc,EAAOjI,KACXoxB,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GACnCc,EAAK4D,QAAUlJ,EAAEkJ,GACjB5D,EAAK2E,QAAU3E,EAAK4D,QACpB5D,EAAK4D,QAAQwZ,SAAS,aAAapZ,IAAI,UAAW,SAClDhE,EAAK25P,YAAcj/P,EAAE,WAAWsJ,IAAI,WAAY,YAAYC,SAASlM,KAAK6L,SAC1E5D,EAAK05E,QAAU81D,EAAKP,QAAQ9vF,OAAOn/C,EAAK25P,YAAa,CACjDl8P,KAAMuC,EAAKd,QAAQuhO,WAEvBzgO,EAAKs8O,YAAYp9O,GACbA,GAAW2vH,EAAQ3vH,EAAQuB,QAC3BT,EAAKw1M,QAEd,EAEAvrL,WAAY,SAAS/qB,GACjBnH,KAAKukP,YAAYp9O,GACjBnH,KAAKy9M,QACT,EAEAA,OAAQ,WACJ,IAAIztM,EAAOhQ,KAAK4mP,WAEhB5mP,KAAK2hF,QAAQnrB,QACbx2D,KAAK2hF,QAAQ/uD,QAAQ,CACjB7mB,MAAOiE,EAAKjE,MACZC,OAAQgE,EAAKhE,SAGjBhM,KAAK2qK,eACL3qK,KAAK2hF,QAAQ81D,KAAKz3I,KAAKihJ,OAC3B,EAEA1uH,QAAS,WACL,OAAO5xB,EAAMgyB,WAAW3yB,KAAK6L,QACjC,EAEA6mB,QAAS,WACL1yB,KAAKy9M,QACT,EAEA9yC,aAAc,WACV3qK,KAAKihJ,OAASjhJ,KAAK6mP,SACvB,EAEAA,QAAS,WACL,IAUI/vO,EAAQ+qP,EAVR55P,EAAOjI,KACPmH,EAAUc,EAAKd,QACfuB,EAAQvB,EAAQuB,MAChBsoK,EAAc7pK,EAAQ25B,KACtBghO,EAAar3O,EAAQy4I,WAAW8N,EAAYj4H,QAC5C/oC,EAAO/H,EAAK2+O,WACZl6E,EAASvlK,EAAQulK,QAAU,CAAC,EAC5BsvF,EAAW/zP,EAAK+zP,SAChBzuF,EAAa,IAAI2jB,EAAM,EAAG,EAAGlhL,EAAKjE,MAAOiE,EAAKhE,QAAQy7J,MAAMiF,EAAO3gK,OAAO07J,MAAMtgK,EAAQ6wI,SACxF+pH,EAAYx0F,EAAWvhK,SAIvBi1I,EAAS,IAAIxJ,EAAKhH,MAyBtB,OAvBAxoI,EAAKslK,WAAaA,EAClBtsB,EAAO9mG,OAAOlyC,EAAK+5P,eAAehyP,IAE9BghK,EAAYhkK,UAEZ+0P,GADatqH,EAAKjwB,KAAKiO,YAAY/sH,EAAO,CAAEqvF,KAAMi5E,EAAYj5E,OAAQ/rF,OAC5C81P,EAAW58O,IAAM48O,EAAWp1O,QAG1D5V,EAASklP,EAASjtL,OAAOrmE,EAAO6kK,EAAWxhK,QAASg2P,GAEhD/wF,EAAYhkK,UACZ60P,EAAgBn5P,EACZvB,EAAQs0P,UAAY3kI,EAAQklI,EAASP,YACrCoG,GAAiB,IAAM7F,EAASP,UAGpCx6G,EAAO9mG,OAAOlyC,EAAKg6P,SAASJ,KAGhC55P,EAAK85P,UAAYA,EACjB/hQ,KAAKkiQ,YAAcliQ,KAAKmiQ,UAAUrrP,EAAO7C,QAAS6C,EAAOuoK,UACzDp+B,EAAO9mG,OAAOn6C,KAAKkiQ,aAEZjhH,CACX,EAEA7J,aAAc,WACV,OAAOp3I,KAAK6mP,SAChB,EAEAD,SAAU,WACN,IAAI3+O,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACfmE,EAAO,IAAI8sO,EAAK9/G,KA3jDR,IACC,KAykDb,OAbInxH,EAAQE,QAAU,IAClBiE,EAAKjE,MAAQF,EAAQE,SAErBF,EAAQG,SAAW,IACnBgE,EAAKhE,OAASH,EAAQG,UAEtB/D,EAAKd,QAAQ4E,QACdiE,EAAKjE,MAAQ9D,EAAKd,QAAQ4E,OAEzB9D,EAAKd,QAAQ6E,SACdgE,EAAKhE,OAAS/D,EAAKd,QAAQ6E,QAGvBgE,CACX,EAEAtH,MAAO,SAASA,GACZ,IAAIT,EAAOjI,KACX,IAAK82H,EAAQpuH,GACT,OAAOT,EAAKd,QAAQuB,MAExBT,EAAKd,QAAQuB,MAAQA,EAAQ,GAC7BT,EAAKw1M,QACT,EAEA0kD,UAAW,SAASluP,EAASorK,GAQzB,IAPA,IAGIvsI,EACA3D,EAJAlnC,EAAOjI,KACPutK,EAAatlK,EAAKslK,WAClBjgK,EAAWigK,EAAWtvF,GAItB1pB,EAAQ,IAAIkjF,EAAKhH,MACZlpI,EAAI,EAAGA,EAAI0M,EAAQzM,OAAQD,IAAK,CASrC,GAFAurC,GANA3D,EAAOxnC,EAAcsM,EAAQ1M,IAAM0M,EAAQ1M,GAAK,CAC5CwE,MAAOkI,EAAQ1M,GACf22E,GAAI,EACJE,GAAIn2E,EAAK85P,YAGDh2P,MAAQszK,EAEhB93K,EAAI,EAAG,CACP,IAAI+kF,EAAOwwJ,EAAK7/G,KAAKe,WACjB,IAAI8+G,EAAKhhH,MAAMxuH,EAAU6hC,EAAK+uC,GAAKqvF,EAAWrvF,IAC9C,IAAI4+J,EAAKhhH,MAAMxuH,EAAWwlC,EAAM3D,EAAKivC,GAAKmvF,EAAWrvF,KAGrD3uC,EAAOkoG,EAAKlJ,KAAKc,SAAS/iD,EAAM,CAChC54D,KAAM,CACFu9F,MAAOhpH,EAAKd,QAAQ8pH,OAExB2O,OAAQ,OAGZrrE,EAAMpa,OAAO5K,EACjB,CAEAjiC,GAAYwlC,CAChB,CAEA,OAAOyhB,CACX,EAEAytM,eAAgB,SAAShyP,GACrB,IACI7I,EADOnH,KACQmH,QACfulK,EAASvlK,EAAQulK,QAAU,CAAC,EAE5BpzH,EAAM,IAAI43I,EAAM,EAAE,EAAGlhL,EAAKjE,MAAOiE,EAAKhE,QAAQy7J,MAAMiF,EAAO3gK,MAAQ,GAYvE,OAXW0rI,EAAKlJ,KAAKc,SAAS/1F,EAAI2uH,SAAU,CACxCv0I,KAAM,CACFu9F,MAAO9pH,EAAQ2tJ,YAEnBl1B,OAAQ,CACJ3O,MAAOy7C,EAAO3gK,MAAQ2gK,EAAOz7C,MAAQ,GACrCllH,MAAO2gK,EAAO3gK,MACd8yI,SAAU6tB,EAAO7tB,WAK7B,EAEAojH,SAAU,SAASv5P,GACf,IAAIT,EAAOjI,KACPgxK,EAAc/oK,EAAKd,QAAQ25B,KAC3BA,EAAO74B,EAAKm6P,SAAW,IAAIxxF,EAAQloK,EAAO,CACtCqvF,KAAMi5E,EAAYj5E,KAClBk5B,MAAO+/C,EAAY//C,MACnBigB,MAAO,SACPkpB,OAAQ,SACRrhH,OAAQi4H,EAAYj4H,SAM5B,OAHAjY,EAAKuxG,OAAOpqI,EAAKslK,YACjBzsI,EAAK4pI,eAEE5pI,EAAKmgH,MAChB,EAEAsjG,YAAa,SAASp9O,GAClB,IAAIc,EAAOjI,KAaX,GAZAiI,EAAKvC,MAAQyB,EAAQzB,MAAQuC,EAAKd,QAAQzB,MAAMmT,cAE/B,QAAb5Q,EAAKvC,OACLuC,EAAKvC,KAAO,QACZyB,EAAQuB,MAAQ,IAAMvB,EAAQuB,OAGjB,QAAbT,EAAKvC,OACLuC,EAAKvC,KAAO,OACZyB,EAAQuB,MAAQ,IAAMvB,EAAQuB,QAG7BsvP,EAAU/vP,EAAKvC,MAChB,MAAM,IAAIsL,MAAM,YAAc/I,EAAKvC,KAAO,qBAG9CuC,EAAK+zP,SAAW,IAAIhE,EAAU/vP,EAAKvC,MAEnCuC,EAAKd,QAAUpE,GAAO,EAAMkF,EAAKd,QAASA,EAC9C,EAEAA,QAAS,CACL/E,KAAM,UACNsmO,SAAU,MACVhgO,MAAO,GACPhD,KAAM,SACN+1P,UAAU,EACV1vP,MAAO,EACPC,OAAQ,EACRilH,MAAO,QACP6jC,WAAY,QACZh0H,KAAM,CACF9zB,SAAS,EACT+qF,KAAM,0DACNk5B,MAAO,QACPl4E,OAAQ,CACJ7zB,IAAK,EACLwH,OAAQ,EACRF,KAAM,EACNC,MAAO,IAGfigJ,OAAQ,CACJ3gK,MAAO,EACP8yI,SAAU,QACV5tB,MAAO,SAEX+mB,QAAS,CACL9yH,IAAK,EACLwH,OAAQ,EACRF,KAAM,EACNC,MAAO,MAInBhC,EAAQomK,YAAY9tL,OAAO4+P,EAAQ55P,IAEnC0iB,EAAQF,GAAG2M,OAAOyqO,GAElBhhQ,EAAM6H,WAAWiiB,EAAS,CACtButO,UAAWA,EACXR,SAAUA,GAGjB,CApvDD,CAovDG12P,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfoC,EAASJ,EAAEI,OACX00I,EAAO92I,EAAM+pB,QACbD,EAAU9pB,EAAM8pB,QAChB2G,EAASzwB,EAAM4pB,GAAG6G,OAClB8/J,EAAQzmK,EAAQymK,MAChBmxE,EAAa,OACbC,EAAU,UACVC,EAAgB,eAChBC,EAAO,OACPC,EAAc,CAAE,EAAK,GACrBC,EAAoB,CAAE,EAAK,GAC3BC,EAAuB,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IACpCC,EAA0C,CAAE,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,IACzJC,EAA+B,CAAC,CAAEt+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,EAAE,KAAKm5N,mBAAoB,GAAGC,uBAAwB,GAAIz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,EAAE,KAAKm5N,mBAAoB,GAAGC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,EAAE,KAAKm5N,mBAAoB,GAAGC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,EAAE,IAAIm5N,mBAAoB,EAAEC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,EAAE,KAAKm5N,mBAAoB,GAAGC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,EAAE,KAAKm5N,mBAAoB,GAAGC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,EAAE,KAAKm5N,mBAAoB,GAAGC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,EAAE,KAAKm5N,mBAAoB,GAAGC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,EAAE,KAAKm5N,mBAAoB,GAAGC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,EAAE,KAAKm5N,mBAAoB,GAAGC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,EAAE,KAAKm5N,mBAAoB,GAAGC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,EAAE,KAAKm5N,mBAAoB,GAAGC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,EAAE,KAAKm5N,mBAAoB,GAAGC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,EAAE,KAAKm5N,mBAAoB,GAAGC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,EAAE,KAAKm5N,mBAAoB,GAAGC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,EAAE,IAAIm5N,mBAAoB,GAAGC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,EAAE,MAAMm5N,mBAAoB,IAAIC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,EAAE,KAAKm5N,mBAAoB,GAAGC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,GAAGC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,GAAGC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,EAAE,KAAKm5N,mBAAoB,GAAGC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,EAAE,KAAKm5N,mBAAoB,GAAGC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,GAAGC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,GAAGC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,GAAGC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,EAAE,MAAMm5N,mBAAoB,IAAIC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,EAAE,MAAMm5N,mBAAoB,IAAIC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAMm5N,mBAAoB,IAAIC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,IAAIC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAMm5N,mBAAoB,IAAIC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,IAAIC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAMm5N,mBAAoB,IAAIC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,IAAIC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAMm5N,mBAAoB,IAAIC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,IAAIC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAMm5N,mBAAoB,IAAIC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,IAAIC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAMm5N,mBAAoB,IAAIC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,GAAG,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAMm5N,mBAAoB,KAAKC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,GAAG,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,GAAG,KAAKm5N,mBAAoB,IAAIC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAMm5N,mBAAoB,KAAKC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,IAAIC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAMm5N,mBAAoB,KAAKC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAMm5N,mBAAoB,KAAKC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,IAAKC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,IAAIC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,MAAMm5N,mBAAoB,KAAKC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,KAAKC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAMm5N,mBAAoB,KAAKC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,KAAKC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,IAAIC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,MAAMm5N,mBAAoB,KAAKC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,KAAKC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,IAAIC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAMm5N,mBAAoB,KAAKC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,KAAKC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,IAAIC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,MAAMm5N,mBAAoB,KAAKC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,KAAKC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,IAAIC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,IAAIC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,MAAMm5N,mBAAoB,KAAKC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,KAAKC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,KAAKC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,IAAIC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,GAAG,MAAMm5N,mBAAoB,KAAKC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,KAAKC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,KAAKC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,IAAIC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,MAAMm5N,mBAAoB,KAAKC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,KAAKC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,KAAKC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,IAAIC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,MAAMm5N,mBAAoB,KAAKC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,KAAKC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,KAAKC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,IAAIC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,MAAMm5N,mBAAoB,KAAKC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,KAAKC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,KAAKC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,IAAIC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,MAAMm5N,mBAAoB,KAAKC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,KAAKC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,KAAKC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,KAAKC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,MAAMm5N,mBAAoB,KAAKC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,KAAKC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,KAAKC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,KAAKC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,MAAMm5N,mBAAoB,KAAKC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,KAAKC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,KAAKC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,KAAKC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,MAAMm5N,mBAAoB,KAAKC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAKm5N,mBAAoB,KAAKC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,KAAKC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,KAAKC,uBAAwB,KAAO,CAAEx+P,EAAG,CAAEolC,OAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,MAAMm5N,mBAAoB,KAAKC,uBAAwB,IAAKz+P,EAAG,CAAEqlC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,KAAKC,uBAAwB,IAAK1+P,EAAG,CAAEslC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,KAAKC,uBAAwB,IAAKl+P,EAAG,CAAE8kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAKm5N,mBAAoB,KAAKC,uBAAwB,MAC/9ZC,EAAgB,CAAC,EAAE,EAAE,EAAE,EAAE,GACzBC,EAAmB,CAAC,EAAE,EAAE,GACxBC,EAA0B,CAAE3+P,EAAG,KAAMD,EAAG,KAAMD,EAAG,KAAMQ,EAAG,MAI1Ds+P,EAAmB,CAAC,WAAY,YAEhCC,EAAwB,CACpB,SAAS/9F,EAAIwuB,GAAS,OAAQxuB,EAAMwuB,GAAU,GAAM,CAAE,EACtD,SAASxuB,GAAM,OAAOA,EAAM,GAAM,CAAE,EACpC,SAASA,EAAIwuB,GAAS,OAAOA,EAAS,GAAM,CAAE,EAC9C,SAASxuB,EAAIwuB,GAAS,OAAQxuB,EAAMwuB,GAAU,GAAM,CAAE,EACtD,SAASxuB,EAAIwuB,GAAS,OAAQxwL,KAAKyN,MAAMu0J,EAAM,GAAKhiK,KAAKyN,MAAM+iL,EAAS,IAAM,GAAM,CAAE,EACtF,SAASxuB,EAAIwuB,GAAS,OAASxuB,EAAMwuB,EAAU,EAAOxuB,EAAMwuB,EAAU,GAAO,CAAE,EAC/E,SAASxuB,EAAIwuB,GAAS,OAAUxuB,EAAMwuB,EAAU,EAAOxuB,EAAMwuB,EAAU,GAAM,GAAM,CAAE,EACrF,SAASxuB,EAAIwuB,GAAS,QAAUxuB,EAAMwuB,GAAU,EAAOxuB,EAAMwuB,EAAU,GAAM,GAAM,CAAE,GAEzFwjE,EAAc,OACdgM,EAAe,kBAEfC,EAAa,IAAI90P,OAAO,oBACxB+0P,EAAoB,IAAI/0P,OAAO,KAAO60P,EAAe,MACrDG,EAAY,IAAIh1P,OAAO,MAAQ60P,EAAe,MAO9C/sP,EAAQjT,KAAKiT,MAGbmtP,EAAe,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,IACjFC,EAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,IAGhC,SAASC,EAAUj7P,GACf,OAAO8Q,SAAS9Q,EAAO,EAC3B,CAEA,SAASk7P,EAAal7P,EAAOlB,GACzB,IAAIsP,EAASjE,OAAOnK,GAAO+I,SAAS,GAIpC,OAHIqF,EAAOtP,OAASA,IAChBsP,EAAS,IAAI5T,MAAMsE,EAASsP,EAAOtP,OAAS,GAAGqD,KAAK,GAAKiM,GAEtDA,CACX,CAEA,SAAS+sP,EAAU10P,EAAKyjH,GAGpB,IAFA,IAAI97G,EAAS,GACTlN,EAAM,EACHA,EAAMuF,EAAI3H,QACbsP,EAAOnV,KAAKwN,EAAInE,UAAUpB,EAAKA,EAAMgpH,IACrChpH,GAAOgpH,EAEX,OAAO97G,CACX,CAEA,IAAIgtP,EAAanjQ,EAAMiH,MAAM7E,OAAO,CAChCghQ,gBAAiB,SAASvhQ,GACtB,OAAIA,EAAU,GACH,EAEFA,EAAU,GACR,EAGJ,CACX,EACAwhQ,sBAAuB,SAASxhQ,GAE5B,OADWxC,KACCikQ,qBADDjkQ,KAC2B+jQ,gBAAgBvhQ,GAAW,IACrE,EACA0hQ,mBAAoB,SAAS18P,EAAQhF,GAEjC,OADWxC,KACCmkQ,cAAgBP,EAAap8P,EAD9BxH,KAC2CgkQ,sBAAsBxhQ,GAChF,EACAusE,OAAQ,WAAY,EACpBq1L,oBAAqB,WAAY,EACjCp6E,SAAU,WAAY,EACtBm6E,cAAe,GACfF,qBAAsB,KAGtBI,EAAQ,CAAC,EACbA,EAAM/B,GAAWwB,EAAW/gQ,OAAO,CAC/BkhQ,qBAAsB,CAAC,GAAI,GAAI,IAC/BE,cAAe,OACfn6E,SAAU,SAAS+tE,GACf,OAAOv+O,SAASu+O,EAAW,GAC/B,EACAhpL,OAAQ,SAAS5/D,EAAK3M,GAKlB,IAJA,IACI+N,EAAQszP,EAAU10P,EAAK,GACvB2H,EAFO9W,KAEOkkQ,mBAAmB/0P,EAAI3H,OAAQhF,GAExC+E,EAAI,EAAGA,EAAIgJ,EAAM/I,OAAS,EAAGD,IAClCuP,GAAU8sP,EAAarzP,EAAMhJ,GAAI,IAErC,OAAOuP,EAAS8sP,EAAarzP,EAAMhJ,GAAI,EAAI,EAAIgJ,EAAMhJ,GAAGC,OAC5D,EACA48P,oBAAqB,SAASE,EAAa9hQ,GACvC,IAAI+hQ,EAAOD,EAAc,EACzB,OAAO,EAAItkQ,KAAKgkQ,sBAAsBxhQ,GAAW,GAAKa,KAAKyN,MAAMwzP,EAAc,GAAK,EAAIC,GAAiB,IAATA,EAAa,EAAI,EACrH,IAGJF,EAAM9B,GAAiBuB,EAAW/gQ,OAAO,CACrCyhQ,WAAY,CAAE,EAAK,EAAE,EAAK,EAAE,EAAK,EAAE,EAAK,EAAE,EAAK,EAAE,EAAK,EAAE,EAAK,EAAE,EAAK,EAAE,EAAK,EAAE,EAAK,EAAEtK,EAAK,GAAGnxC,EAAK,GAAGoxC,EAAK,GAAGjlP,EAAK,GAAGzQ,EAAK,GAAG0Q,EAAK,GAAGjR,EAAK,GAAGW,EAAK,GAAGu1P,EAAK,GAAGC,EAAK,GAAGt1P,EAAK,GAAGR,EAAK,GAAGD,EAAK,GAAGg2P,EAAK,GAAGC,EAAK,GAAGC,EAAK,GAAGn2P,EAAK,GAAGo2P,EAAK,GAAGC,EAAK,GAAGrlP,EAAK,GAAGslP,EAAK,GAAGC,EAAK,GAAGX,EAAK,GAAG50P,EAAK,GAAGkQ,EAAK,GAAGhQ,EAAK,GAAG,IAAK,GAAG5C,EAAK,GAAG,IAAK,GAAG,IAAK,GAAG,IAAK,GAAG,IAAK,GAAG,IAAK,GAAG,IAAK,GAAG,IAAK,IACzWshQ,qBAAsB,CAAC,EAAE,GAAG,IAC5BE,cAAe,OACfn6E,SAAU,SAAS+tE,GACf,OAAO/3P,KAAKwkQ,WAAWzM,EAC3B,EACAhpL,OAAQ,SAAS5/D,EAAK3M,GAKlB,IAJA,IAAIiiQ,EAAOzkQ,KACPuQ,EAAQszP,EAAU10P,EAAK,GACvB2H,EAAS2tP,EAAKP,mBAAmB/0P,EAAI3H,OAAQhF,GAExC+E,EAAI,EAAGA,EAAIgJ,EAAM/I,OAAS,EAAGD,IAElCuP,GAAU8sP,EADF,GAAKa,EAAKz6E,SAASz5K,EAAMhJ,GAAGuD,OAAO,IAAM25P,EAAKz6E,SAASz5K,EAAMhJ,GAAGuD,OAAO,IACjD,IAKlC,OAAOgM,EAAS8sP,EAHW,GAAnBrzP,EAAMhJ,GAAGC,OACb,GAAKi9P,EAAKz6E,SAASz5K,EAAMhJ,GAAGuD,OAAO,IAAM25P,EAAKz6E,SAASz5K,EAAMhJ,GAAGuD,OAAO,IACvE25P,EAAKz6E,SAASz5K,EAAMhJ,GAAGuD,OAAO,IACE,EAAI,EAAIyF,EAAMhJ,GAAGC,OACzD,EACA48P,oBAAqB,SAASE,EAAa9hQ,GACvC,OAAO,EAAIxC,KAAKgkQ,sBAAsBxhQ,GAAW,GAAKa,KAAKyN,MAAMwzP,EAAc,GAAUA,EAAc,EAAnB,CACxF,IAGJD,EAAM7B,GAAQsB,EAAW/gQ,OAAO,CAC5BkhQ,qBAAsB,CAAC,EAAE,GAAG,IAC5BE,cAAe,OACfn6E,SAAU,SAAS+tE,GACf,IAAItvM,EAAOsvM,EAAUlmP,WAAW,GAChC,GAAI42C,GAAQ,KAAQ,KAAOA,GAAQA,GAAQ,IACvC,OAAOA,EAGP,MAAM,IAAIz3C,MAAM,0BAA4B+mP,EAEpD,EACAhpL,OAAQ,SAAS5/D,EAAK3M,GAIlB,IAHA,IACIsU,EADO9W,KACOkkQ,mBAAmB/0P,EAAI3H,OAAQhF,GAExC+E,EAAI,EAAGA,EAAI4H,EAAI3H,OAAQD,IAC5BuP,GAAU8sP,EAJH5jQ,KAIqBgqL,SAAS76K,EAAIrE,OAAOvD,IAAK,GAEzD,OAAOuP,CACX,EACAstP,oBAAqB,SAASE,EAAa9hQ,GACvC,OAAO,EAAIxC,KAAKgkQ,sBAAsBxhQ,GAAW,EAAI8hQ,CACzD,IAGJ,IAAII,EAAgB,CAAC,EACrB,IAAK,IAAID,KAAQJ,EACbK,EAAcD,GAAQ,IAAIJ,EAAMI,GAGpC,IAAIE,EAAkB,SAAS5qI,GAC3B,IAAI9xH,EAAOjI,KACPqlK,EAAMtrC,EAAOvyH,OAAS,EACtBqsL,EAAS95D,EAAOvyH,OAAS,EACzBo9P,EAAc/wE,EACdt0J,GAAO,EACP76B,EAAI,EACRuD,EAAKyyB,KAAO,WACR2qI,GAAO9lI,EAAM76B,EAEbmvL,EAAS+wE,GADTlgQ,GAAK,EAET,EACAuD,EAAK48P,YAAc,WACf,KAAO9qI,EAAOsrC,GAAKwuB,KAAYjxL,GAC3BqF,EAAKyyB,QACD2qI,EAAM,GAAKA,GAAOtrC,EAAOvyH,UAGzBqsL,EADA+wE,GAA8B,GAAfA,EAAmB,EAAI,EAEtCv/F,GAHA9lI,GAAOA,GAGK,EAAIw6F,EAAOvyH,OAAS,EAAI,GAG5C,MAAO,CAAE69J,IAAKA,EAAKwuB,OAAQA,EAC/B,EACA5rL,EAAK68P,qBAAuB,WAExB,GADA78P,EAAKyyB,OACDq/F,EAAOsrC,GAAKwuB,KAAYjxL,EACvB,MAAO,CAAEyiK,IAAKA,EAAKwuB,OAAQA,EAEpC,CACJ,EAEA,SAASkxE,EAAiBC,EAAUC,EAAK7/P,EAAGjB,GACxC,IAAK,IAAIoD,EAAI,EAAGA,EAAIy9P,EAASx9P,OAAQD,IACjCy9P,EAASz9P,GAAGnC,GAAGjB,GAAK8gQ,CAE5B,CAEA,SAASC,EAAaF,EAAUC,EAAK7/P,EAAGjB,GACpC,IAAK,IAAIoD,EAAI,EAAGA,EAAI67P,EAAsB57P,OAAQD,IAC9Cy9P,EAASz9P,GAAGnC,GAAGjB,GAAKi/P,EAAsB77P,GAAGnC,EAAEjB,GAAW,EAAN8gQ,EAAUzrP,SAASyrP,EAAK,GAEpF,CAEA,IAAIE,EAAW,SAASH,EAAUI,GAM9B,IALA,IACIC,EACAC,EACAh7L,EAHAi7L,EAAc,IAAIZ,EAAgBK,EAAS,IAKtCQ,EAAW,EAAGA,EAAWJ,EAAO59P,OAAQg+P,IAG7C,IAFAH,EAAQD,EAAOI,GACfF,EAAc,EACPD,EAAM79P,OAAS,GAAG,CACrB,IAAK,IAAID,EAAI,EAAGA,EAAI89P,EAAM79P,OAAQD,IAC7B,IAAK,IAAIwjC,EAAI,EAAGA,EAAI,EAAGA,IACpBu/B,EAAOi7L,EAAYV,cACnBK,EAAaF,EAAUK,EAAM99P,GAAG+9P,GAAax6P,OAAOigC,GAAIu/B,EAAK+6F,IAAK/6F,EAAKupH,QAK/E,IADAyxE,IACOD,EAAM,IAAMC,GAAeD,EAAM,GAAG79P,QACvC69P,EAAM76P,OAAO,EAAE,EAEvB,CAGJ,KAAQ8/D,EAAOi7L,EAAYT,wBACvBI,EAAaF,EAAU,EAAG16L,EAAK+6F,IAAK/6F,EAAKupH,OAEjD,EAEI4xE,EAAgB,SAASC,EAAY5C,GAIrC,IAHA,IAAI6C,EAAqC,EAArB7C,EAChB8C,EAAkB,EAClBC,EAAuB,EACpBH,EAAWl+P,OAASm+P,GAAiBC,EAAkBvD,GAC1DqD,GAAcrD,EAAWv3P,OAAO86P,KAOpC,IAJIF,EAAWl+P,OAAS,GAAM,IAC1Bk+P,GAAc,IAAIxiQ,MAAM,EAAIwiQ,EAAWl+P,OAAS,GAAGqD,KAAK,MAGrD66P,EAAWl+P,OAASm+P,GACvBD,GAAcvC,EAAiB0C,GAC/BA,GAAwB,EAE5B,OAAOH,CACX,EAoBA,IAAII,EAAiB,SAAS1gQ,EAAEjB,GAG5B,IAFA,IAAI2S,EAAS,GAEJvP,EADCnC,EAAEoC,OAAS,EACHD,GAAK,EAAGA,IACrBuP,EAAOvP,GAAKnC,EAAEmC,GAAKpD,EAAEoD,GAG1B,OAAOuP,CACX,EAEIivP,EAAsB,SAAS3gQ,EAAGjB,GAElC,IADA,IAAI2S,EAAS,GACJvP,EAAI,EAAGA,EAAInC,EAAEoC,OAAQD,IAC1B,IAAK,IAAIwjC,EAAI,EAAGA,EAAI5mC,EAAEqD,OAAQujC,IACtBj0B,EAAOvP,EAAIwjC,KAAOnoC,EACjBkU,EAAOvP,EAAIwjC,IAAM3lC,EAAEmC,IAAMpD,EAAE4mC,IAAM,EAAI5mC,EAAE4mC,GAAK,IAAM,IAGpDj0B,EAAOvP,EAAIwjC,GAAK03N,EAAYC,EAAkB5rP,EAAOvP,EAAIwjC,IAAM23N,GAAmBt9P,EAAEmC,GAAKpD,EAAE4mC,IAAM,MAK5G,OAAOj0B,CACX,EAeA,SAASkvP,EAAmBr9H,EAAY5P,GACpC,IAAIjiH,EAAS,GACTlN,EAAM++H,EAAWnhI,OAAS,EAC9B,GACIsP,EAAOlN,GAAO84P,GAAmB/5H,EAAW/+H,GAAOmvH,GAAS,KAC5DnvH,UACK++H,EAAW/+H,KAAShH,GAE7B,OAAOkU,CACX,EAlEA,WAEI,IADA,IAAIA,EACKiiH,EAAQ,EAAGA,EAAQ,IAAKA,KAE7BjiH,EAAwC,EAA/B4rP,EAAkB3pI,EAAQ,IACtB,MACTjiH,GAAkB,KAGtB4rP,EAAkB3pI,GAASjiH,EAC3B2rP,EAAY3rP,GAAUiiH,EAG1BjiH,EAAyC,EAA/B4rP,EAAkB3pI,EAAQ,GAAU,IAC9C2pI,EAAkB3pI,GAASjiH,EAC3B4rP,GAAmB,GAAK,CAC5B,CAsCAuD,GAVA,WAEI,IADA,IACSr8P,EAAM,EAAGA,GADqB,GACoBA,IAAO,CAC9D,IAAIs8P,EAAkBvD,EAAqB/4P,EAAM,GAC7Cu8P,EAAmB,CAACv8P,EAAK,GAC7B+4P,EAAqB/4P,GAAOm8P,EAAoBG,EAAiBC,EACrE,CACJ,CAIAC,GAaA,IAAIC,EAAyB,SAASj4P,EAAMk4P,GACxC,IAKI5tN,EACA9uC,EANA28P,EAAY5D,EAAqB2D,EAAsB,GACvDxvP,EAAS,IAAI5T,MAAMojQ,GAAqBloP,OAAOhQ,GAC/Co4P,EAAsB,IAAItjQ,MAAM4T,EAAOtP,OAAS++P,EAAU/+P,QAAQ4W,OAAOmoP,GACzEE,EAAQr4P,EAAK5G,OACbk/P,EAAiB,GAIrB,IAAK98P,EAAM,EAAGA,EAAM68P,EAAO78P,IACvB8uC,EAAUstN,EAAmBQ,EAAqB/D,EAAY3rP,EAAOA,EAAOtP,OAAS,KACrFg/P,EAAoBh8P,OAAO,EAAE,GAE7BsM,EAASgvP,EAAeptN,EAAS5hC,GAGrC,IAAKlN,EAAMkN,EAAOtP,OAAS,EAAGoC,GAAO,EAAGA,IACpC88P,EAAeJ,EAAsB,EAAI18P,GAAOg6P,EAAa9sP,EAAOlN,GAAM,GAG9E,OAAO88P,CACX,EAEIC,EAAY,SAASC,EAAYC,GAWjC,IAVA,IAGIC,EAEAC,EACAC,EACAC,EACAC,EARAC,EAAgB,EAChBC,EAAa,GACbC,EAAc,GAEdC,EAAgBT,EAA4Bl9N,OAMvCopG,EAAW,EAAGA,EAAWu0H,EAAc9/P,OAAQurI,IAAY,CAChEi0H,EAAmBM,EAAcv0H,GAAU,GAC3C,IAAK,IAAIyyH,EAAW,EAAGA,EAAWwB,EAAkBxB,IAAY,CAC5DuB,EAAsBO,EAAcv0H,GAAU,GAC9C+zH,EAAY,GACZG,EAAoB,GACpB,IAAK,IAAI3B,EAAc,EAAGA,GAAeyB,EAAqBzB,IAC1D4B,EAAWN,EAAW57P,UAAUm8P,EAAeA,EAAgB,GAC/DL,EAAUnlQ,KAAKulQ,GACfD,EAAkBF,EAAsBzB,GAAe3B,EAAUuD,GACjEC,GAAiB,EAErBC,EAAWzlQ,KAAKmlQ,GAChBO,EAAY1lQ,KAAK0kQ,EAAuBY,EACpCJ,EAA4B9D,wBACpC,CACJ,CACA,MAAO,CAACqE,EAAYC,EACxB,EAEIE,EAAa,SAASp4P,EAAKq4P,EAAuBC,EAAsBC,EAAoBC,GAC3F,IAMGlD,EACAmD,EAPCC,EAAUxQ,EAAYz+O,KAAKzJ,GAC5B24P,EAAeD,EAAUA,EAAQ,GAAK,GACtCl1I,EAAQ2wI,EAAW1qP,KAAKzJ,GACxB44P,EAAap1I,EAAQA,EAAM,GAAK,GAChCq1I,EAAezE,EAAkB3qP,KAAKzJ,GACtC84P,EAAoBD,EAAeA,EAAa,GAAK,GAyBxD,OArBIF,IAAiBA,EAAatgQ,QAAUggQ,GACpCr4P,EAAI3H,QAAUsgQ,EAAatgQ,QAAWsgQ,EAAatgQ,QAAUigQ,IAC5DlE,EAAkBh2P,KAAK4B,EAAIrE,OAAOg9P,EAAatgQ,WACrDi9P,EAAOnC,EACPsF,EAAaE,GAEPG,IAAsB94P,EAAI3H,QAAUygQ,EAAkBzgQ,QAC5DygQ,EAAkBzgQ,QAAUkgQ,GAAsBC,GAAgBpF,IAClEkC,EAAOlC,EACPqF,EAAaE,GAAgBC,IAG7BtD,EAAOjC,EAEHoF,EADAK,EACaA,EAAoBzE,EAAU5qP,KAAKzJ,EAAInE,UAAUi9P,EAAkBzgQ,SAAS,GAG5Eg8P,EAAU5qP,KAAKzJ,GAAK,IAIjC,CACJs1P,KAAMA,EACNmD,WAAYA,EAEpB,EAEIM,EAAW,SAAS/4P,GACpB,IACIw4P,EADAtD,EAAQ,GAERz6P,EAAM,EAKV,IAJAy6P,EAAM1iQ,KAAK4lQ,EAAWp4P,EA5YE,EACD,EACF,EA0YmFw4P,IACxGA,EAAetD,EAAM,GAAGI,KACxBt1P,EAAMA,EAAIoN,OAAO8nP,EAAM,GAAGuD,WAAWpgQ,QAE9B2H,EAAI3H,OAAS,GAAG,CACpB,IAAI2gQ,EAAWZ,EAAWp4P,EA9YT,GACD,EACF,GA4YkFw4P,GAC5FQ,EAAS1D,MAAQkD,GAChBA,EAAeQ,EAAS1D,KACxBJ,EAAM1iQ,KAAKwmQ,GACXv+P,KAGAy6P,EAAMz6P,GAAKg+P,YAAcO,EAASP,WAEvCz4P,EAAMA,EAAIoN,OAAO4rP,EAASP,WAAWpgQ,OACxC,CAEA,OAAO68P,CACX,EAEI+D,EAAwB,SAAS/D,GAGjC,IAFA,IAAI78P,EAAS,EAEJD,EAAI,EAAGA,EAAI88P,EAAM78P,OAAQD,IAE9BC,GADOk9P,EAAcL,EAAM98P,GAAGk9P,MACfL,oBAAoBC,EAAM98P,GAAGqgQ,WAAWpgQ,QAG3D,OAAOnE,KAAK6jE,KAAK1/D,EAAS,EAC9B,EAEI6gQ,EAAa,SAASC,EAAoBC,GAC1C,IAAInjQ,EAAI,EACJjB,EAAI0+P,EAA6Br7P,OAAS,EAC1ChF,EAAUa,KAAKyN,MAAM+xP,EAA6Br7P,OAAS,GAE/D,GACQ8gQ,EAAqBzF,EAA6BrgQ,GAAS+lQ,GAAsBzF,mBACjF3+P,EAAI3B,EAGJ4C,EAAI5C,EAERA,EAAU4C,EAAI/B,KAAKyN,OAAO3M,EAAIiB,GAAK,SAE9BjB,EAAIiB,EAAI,GAEjB,OAAIkjQ,GAAsBzF,EAA6Bz9P,GAAGmjQ,GAAsBzF,mBACrEtgQ,EAAU,EAEd2B,EAAI,CACf,EAEIqkQ,EAAgB,SAASnE,EAAO7hQ,GAGhC,IAFA,IAAIkjQ,EAAa,GAERn+P,EAAI,EAAGA,EAAI88P,EAAM78P,OAAQD,IAE9Bm+P,GADOhB,EAAcL,EAAM98P,GAAGk9P,MACX11L,OAAOs1L,EAAM98P,GAAGqgQ,WAAYplQ,GAGnD,OAAOkjQ,CACX,EAGI+C,EAA0B,SAASx3P,GACnC,IACIy3P,EACA5xP,EAAS,GACb,GAAqB,IAHF6sP,EAAU1yP,GAIzB,MAAO,kBAGPy3P,EAAgBC,EAAUhF,EAAU1yP,GAzehB,cAyeoD,IAE5E,IAAK,IAAI1J,EAAI,EAAGA,EAAImhQ,EAAclhQ,OAAQD,IACtCuP,GAAU4xP,EAAc59P,OAAOvD,GA7enB,kBA6e0CuD,OAAOvD,GAGjE,OAAOuP,CACX,EAEI6xP,EAAY,SAASjgQ,EAAO89P,EAAqBoC,GACjD,IAAIC,EAAkBlF,EAAU6C,GAC5BsC,EAAmBtC,EAAoBh/P,OAAS,EAChDuhQ,EAAcrgQ,GAASogQ,EAEvBE,EAAcpF,EAAal7P,EADlBkgQ,EAAaE,GAEtBhyP,EAASmyP,GAAkBF,EAAaF,GAE5C,OADA/xP,EAASkyP,EAAcpF,EAAa9sP,EAAQgyP,EAEhD,EAEIG,GAAoB,SAASC,EAAQC,GACjC,IAAIC,EAAUD,EAAQ13P,SAAS,GAAGjK,OAC9B6hQ,EAAUH,EAAQz3P,SAAS,GAAGjK,OAClC,GAEI6hQ,GADAH,GAAWC,GAAWE,EAAUD,GACd33P,SAAS,GAAGjK,aAE3B6hQ,GAAWD,GAElB,OAAOF,CACf,EAEA,SAASI,GAAYn6P,EAAKvF,GACtB,OAAO4P,SAASrK,EAAIrE,OAAOlB,GAAM,GACrC,CAEA,IAAI2/P,GAAe,SAAS/mQ,GAGxB,IAFA,IAAIwiQ,EAAW,GACXwE,EAAU,GAAK,EAAIhnQ,EACd+E,EAAI,EAAGA,EAAI67P,EAAsB57P,OAAQD,IAAK,CACnDy9P,EAASz9P,GAAK,IAAIrE,MAAMsmQ,GACxB,IAAK,IAAIz+N,EAAI,EAAGA,EAAIy+N,EAASz+N,IACzBi6N,EAASz9P,GAAGwjC,GAAK,IAAI7nC,MAAMsmQ,EAEnC,CAEA,OAAOxE,CACX,EAEIyE,GAAuB,SAASzE,EAAUhxF,GAC1C,IACI5uK,EACAjB,EAFA41H,EAASirI,EAAS,GAGlBp7P,EAAM,EACNpC,EAASwsK,EAAaxsK,OAE1B,IAAKpC,EAAI,EAAGjB,EAAI,EAAGiB,GAAK,EAAGA,IACb,IAANA,GACA2/P,EAAiBC,EAAUsE,GAAYt1F,EAAcxsK,EAAS,EAAIoC,KAAQxE,EAAGjB,GAIrF,IAAKiB,EAAI,EAAGjB,EAAI,EAAGA,GAAK,EAAGA,IACb,IAANA,GACA4gQ,EAAiBC,EAAUsE,GAAYt1F,EAAcxsK,EAAS,EAAIoC,KAAQxE,EAAGjB,GAIrF,IADAyF,EAAM,EACDzF,EAAI41H,EAAOvyH,OAAS,EAAGpC,EAAI,EAAGjB,GAAK41H,EAAOvyH,OAAS,EAAGrD,IACvD4gQ,EAAiBC,EAASsE,GAAYt1F,EAAcxsK,EAAS,EAAIoC,KAAQxE,EAAGjB,GAKhF,IAFA4gQ,EAAiBC,EAAU,EAAGjrI,EAAOvyH,OAAS,EAAG,GAE5CpC,EAAI20H,EAAOvyH,OAAS,EAAGrD,EAAI,EAAGiB,EAAI20H,EAAOvyH,OAAQpC,IAClD2/P,EAAiBC,EAAUsE,GAAYt1F,EAAcxsK,EAAS,EAAIoC,KAAQxE,EAAGjB,EAErF,EAEIulQ,GAA2B,SAASlnQ,GACpC,OAAOmmQ,EAAUnmQ,EAxjBQ,gBAwjB6B,GAC1D,EAEImnQ,GAAwB,SAAS3E,EAAUU,GAW3C,IAVA,IAMIkE,EACAC,EACAnhQ,EAPA8gQ,EADSxE,EAAS,GACDx9P,OAEjB02E,EAAKsrL,EAAU,GACfrrL,EAAKqrL,EAAU,GAMV5/P,EAAM,EAAGA,EAAM87P,EAAWl+P,OAAQoC,IACvCggQ,EAAWvmQ,KAAKyN,MAAMlH,EAAM,GAC5BigQ,EAAMjgQ,EAAM,EAEZm7P,EAAiBC,EADjBt8P,EAAQ4gQ,GAAY5D,EAAYA,EAAWl+P,OAASoC,EAAM,GAXrD,EAYkCggQ,EAAU1rL,EAAK2rL,GACtD9E,EAAiBC,EAAUt8P,EAAOy1E,EAAK0rL,EAVlC,EAU4CD,EAEzD,EAEIE,GAAoB,SAAS9E,EAAU/wP,EAAS7O,EAAGjB,GAKnD,IAJA,IAEIuE,EAFAsH,EAAOiE,EAAQzM,OAAS,EACxBA,EAASyM,EAAQzM,OAAS,EAGrBD,EAAI,EAAGA,EAAI0M,EAAQzM,OAAQD,IAChC,IAAK,IAAIwjC,EAAIxjC,EAAGwjC,EAAI/6B,EAAOzI,EAAGwjC,IAE1Bg6N,EAAiBC,EADjBt8P,EAAQuL,EAAQ1M,GACkBnC,EAAI2lC,EAAG5mC,EAAIoD,GAC7Cw9P,EAAiBC,EAAUt8P,EAAOtD,EAAImC,EAAGpD,EAAI4mC,GAC7Cg6N,EAAiBC,EAAUt8P,EAAOtD,EAAIoC,EAASujC,EAAG5mC,EAAIqD,EAASD,GAC/Dw9P,EAAiBC,EAAUt8P,EAAOtD,EAAIoC,EAASD,EAAGpD,EAAIqD,EAASujC,EAG3E,EAEIg/N,GAAqB,SAAS/E,EAAU3wN,EAAWjvC,EAAGjB,GACtD,IAAI6lQ,EAAQ5kQ,EACR6kQ,EAAQ9lQ,EACR41H,EAASirI,EAAS,GACtB,GACID,EAAiBC,EAAU,EAAGgF,EAAO7lQ,GACrC4gQ,EAAiBC,EAAU,EAAG5/P,EAAG6kQ,GACjCD,GAAS31N,EAAU,GACnB41N,GAAS51N,EAAU,SAEhB21N,GAAS,GAAKA,EAAQjwI,EAAOvyH,OACxC,EAEI0iQ,GAAoB,SAASlF,GAC7B,IAAIwE,EAAUxE,EAAS,GAAGx9P,OAC1BsiQ,GAAkB9E,EAAUhC,EAAe,EAAG,GAC9C+G,GAAmB/E,EAAU,EAAE,GAAG,GAAI,EAAE,GACxC8E,GAAkB9E,EAAUhC,EAAewG,EAAU,EAAG,GACxDO,GAAmB/E,EAAU,CAAC,GAAG,GAAIwE,EAAU,EAAG,GAClDM,GAAkB9E,EAAUhC,EAAe,EAAIwG,EAAU,GACzDO,GAAmB/E,EAAU,EAAE,EAAE,GAAG,EAAGwE,EAAU,EACrD,EAEIW,GAAuB,SAASnF,EAAUxiQ,GAC1C,KAAIA,EAAU,GAAd,CAIA,IAII4nQ,EACA5rL,EALAu7C,EAASirI,EAAS,GAClBwE,EAAUzvI,EAAOvyH,OACjBuvM,EAAc1zM,KAAKyN,MAAMtO,EAAU,GACnC4gI,EAAS,CAAC,GAGVx5H,EAAM,EASV,KAPKwgQ,EAAgBxH,EAAwCpgQ,IACzDg8E,GAAYgrL,EAAU,GAAKY,GAAiBrzD,EAG5CqzD,EAAgB5rL,GAAYgrL,EAAU,KAAOzyD,EAAc,GAE/D3zE,EAAOzhI,KAAKyhI,EAAOx5H,KAASwgQ,GACpBhnI,EAAOx5H,GAAO40E,EAAYgrL,GAC9BpmI,EAAOzhI,KAAKyhI,EAAOx5H,KAAS40E,GAEhC,IAAK,IAAIj3E,EAAI,EAAGA,EAAI67H,EAAO57H,OAAQD,IAC/B,IAAK,IAAIwjC,EAAI,EAAGA,EAAIq4F,EAAO57H,OAAQujC,IAC3BgvF,EAAOqJ,EAAO77H,IAAI67H,EAAOr4F,MAAQnoC,GACjCknQ,GAAkB9E,EAAU/B,EAAkB7/H,EAAO77H,GAAK,EAAG67H,EAAOr4F,GAAK,EAvBrF,CA2BJ,EAEIs/N,GAAqB,SAASrF,GAK9B,IAJA,IAEIt8P,EAAQ,EACR8gQ,EAAUxE,EAAS,GAAGx9P,OACjBD,EAAI,EAAGA,EAAIiiQ,EAAU,EAAGjiQ,IAC7Bw9P,EAAiBC,EAAUt8P,EALrB,EAKiCnB,GACvCw9P,EAAiBC,EAAUt8P,EAAOnB,EALzB,GAMTmB,GAAS,CAEjB,EAEI4hQ,GAAoB,SAAStF,GAC7B,IAKIjrI,EACAxyH,EANAgjQ,EAAS,GACTC,EAAe,GACfC,EAAc,GACdx1P,EAAW,GACXy1P,EAAmB,GAKnBlB,EAAUxE,EAAS,GAAGx9P,OAG1B,IAAKD,EAAI,EAAGA,EAAIy9P,EAASx9P,OAAQD,IAC7BgjQ,EAAOhjQ,GAAK,EACZkjQ,EAAYljQ,GAAK,EACjBmjQ,EAAiBnjQ,GAAK,CAAC,EAAE,GACzB0N,EAAS1N,GAAK,CAAC,EAAG,GAClBijQ,EAAajjQ,GAAK,GAEtB,IAAKA,EAAI,EAAGA,EAAIiiQ,EAASjiQ,IACrB,IAAK,IAAIwjC,EAAI,EAAGA,EAAIy+N,EAASz+N,IACzB,IAAK,IAAIjmC,EAAI,EAAGA,EAAIkgQ,EAASx9P,OAAQ1C,IACjCi1H,EAASirI,EAASlgQ,GAClB2lQ,EAAY3lQ,IAAM0U,SAASugH,EAAOxyH,GAAGwjC,GAAI,IACrCy/N,EAAa1lQ,GAjBnB,KAiB+Bi1H,EAAOxyH,GAAGwjC,IAAMxjC,EAAI,EAAIiiQ,GAAWz+N,EAAI,GAAK,GACrEgvF,EAAOxyH,EAAI,GAAGwjC,IAAMy/N,EAAa1lQ,GAlBvC,IAkBkDi1H,EAAOxyH,EAAI,GAAGwjC,EAAI,IAAMy/N,EAAa1lQ,GAlBvF,KAmBMylQ,EAAOzlQ,IAAM,GAEjB6lQ,GAA4B7lQ,EAAGmQ,EAAUs1P,EArB3C,EAqBwDxwI,EAAOxyH,GAAGwjC,IAChE4/N,GAA4B7lQ,EAAGmQ,EAAUs1P,EArBxC,EAqBwDxwI,EAAOhvF,GAAGxjC,IACnEqjQ,GAAsB9lQ,EAAEylQ,EAAOC,EAAazwI,EAAOxyH,GAAGwjC,GAAG2/N,EAvB3D,GAwBEE,GAAsB9lQ,EAAEylQ,EAAOC,EAAazwI,EAAOhvF,GAAGxjC,GAAGmjQ,EAvBxD,GA2Bb,IACIlmF,EADAx9H,EAAQwiN,EAAUA,EAElB9yP,EAAM7D,OAAOukH,UAEjB,IAAK7vH,EAAI,EAAGA,EAAIgjQ,EAAO/iQ,OAAQD,IAC3BgjQ,EAAOhjQ,IAAMsjQ,GAA+BJ,EAAYljQ,GAAIy/C,GACxDujN,EAAOhjQ,GAAKmP,IACZA,EAAM6zP,EAAOhjQ,GACbi9K,EAASj9K,GAIjB,OAAOi9K,CACX,EAEA,SAASmmF,GAA4B/gQ,EAAKqL,EAAUs1P,EAAQO,EAAW7F,GACnEhwP,EAASrL,GAAKkhQ,IAAe71P,EAASrL,GAAKkhQ,IAAc,EAAK7F,GAAO,IAptBpD,IAqtBbhwP,EAASrL,GAAKkhQ,KACdP,EAAO3gQ,IAAQ,GAEvB,CAEA,SAASghQ,GAAsBhhQ,EAAK2gQ,EAAQC,EAAcvF,EAAK8F,EAAcD,GACrEN,EAAa5gQ,GAAKkhQ,IAAc7F,EAChC8F,EAAanhQ,GAAKkhQ,MAGlBN,EAAa5gQ,GAAKkhQ,GAAa7F,EAC3B8F,EAAanhQ,GAAKkhQ,IAAc,IAChCP,EAAO3gQ,IAAQ,EAAImhQ,EAAanhQ,GAAKkhQ,GAAa,GAEtDC,EAAanhQ,GAAKkhQ,GAAa,EAEvC,CAEA,SAASD,GAA+BJ,EAAazjN,GACjD,IAAI5yC,EAAU/Q,KAAKyN,MAAO25P,EAAczjN,EAAS,KAC7CgkN,EAAO52P,EAAU,EACjBwkC,EAAWv1C,KAAKoU,IAAIrD,EAAU42P,EAAO,IACrC1kM,EAAOjjE,KAAKoU,IAAIrD,EAAU,EAAI42P,EAAO,IAEzC,OADY,GAAK3nQ,KAAKqT,IAAIkiC,EAAW,EAAG0tB,EAAO,EAEnD,CAEA,IAAI2kM,GAAiB,SAASvF,EAAYljQ,GACtCxC,KAAK0lQ,WAAaA,EAClB1lQ,KAAKwC,QAAUA,CACnB,EAEI0oQ,GAAa,WACblrQ,KAAKmrQ,kBAAoB,SAASC,EAAa7C,GAC3C,IAAIlE,EAAQ6D,EAASkD,GACrB9C,EAAqBF,EAAsB/D,GAC3C7hQ,EAAU6lQ,EAAWC,EAAoBC,GACzC7C,EAAa8C,EAAcnE,EAAO7hQ,GAElC,OAAO,IAAIyoQ,GAAevF,EAAYljQ,EAC1C,CACJ,EAEI6oQ,GAAc,WACdrrQ,KAAKykQ,KAAOC,EAAc1kQ,KAAKsrQ,aACnC,EAEAD,GAAYtjQ,GAAKsjQ,GAAYhjQ,UAAY,CACrCijQ,aAAc9I,EACd+I,OAAQ,2BACRC,6BAA8B,GAC9BL,kBAAmB,SAASC,EAAa7C,GACrC,IAAItgQ,EAAOjI,KACPoO,EAAOnG,EAAK8mE,OAAOq8L,GACnB9C,EAAqBrgQ,EAAKmgQ,sBAAsBh6P,GAChD5L,EAAU6lQ,EAAWC,EAAoBC,GACzC7C,EAAaz9P,EAAKw8P,KAAKP,mBAAmB91P,EAAK5G,OAAS,EAAGhF,GAAW4L,EAE1E,OAAO,IAAI68P,GAAevF,EAAYljQ,EAC1C,EACA4lQ,sBAAuB,SAASh6P,GAC5B,IACIu3D,EAAav3D,EAAK5G,OAGtB,OAFyBnE,KAAK6jE,MAFnBlnE,KAE+BwrQ,6BAA+B7lM,GAAc,EAG3F,EACAoJ,OAAQ,SAAS5/D,GAGb,IAFA,IACI2H,EADO9W,KACOurQ,OACThkQ,EAAI,EAAGA,EAAI4H,EAAI3H,OAAQD,IAC5BuP,GAHO9W,KAGQyrQ,gBAAgBt8P,EAAI0C,WAAWtK,IAElD,OAAOuP,CACX,EACA20P,gBAAiB,SAAShjN,GACtB,IAAIijN,EAAa1rQ,KAAK2rQ,cAAcljN,GAChCmjN,EAAKF,EAAa,EAClB50P,EAAS,GAEb,GAAkB,GAAd40P,EACA50P,EAAS8sP,EAAan7M,EAAM,OAE3B,CAGD,IAFA,IAAIojN,EAAkB,EAAIH,EAEjBnkQ,EAAI,EAAGA,EAAIqkQ,EAAIrkQ,IACpBuP,EAAS8sP,EAAan7M,GAAa,EAAJlhD,EAAS,GAAK,IAAK,GAAKuP,EAG3DA,GAAW2xC,GAAa,EAALmjN,EAAY,KAAOC,GAAoBA,GAAkBp6P,SAAS,GAAKqF,CAC9F,CACA,OAAOA,CACX,EACA60P,cAAe,SAASljN,GAEpB,IADA,IAAIuQ,EAASh5D,KAAKg5D,OACTzxD,EAAI,EAAGA,EAAIyxD,EAAOxxD,OAAQD,IAC/B,GAAIkhD,EAAOuQ,EAAOzxD,GACd,OAAOA,EAAI,CAGvB,EACAyxD,OAAQ,CAAC,IAAI,KAAK,MAAM,QAAQ,WAGpC,IAAI8yM,GAAoB,SAAS9P,GAC7B,OAAIA,GAAYA,EAASnjP,cAAclD,QAAQ,UAAY,EAChD,IAAI01P,GAGJ,IAAIH,EAEnB,EAEIa,GAAa,SAASX,EAAa7C,EAAsBvM,GACzD,IACIgQ,EADU,IAAIF,GAAkB9P,GACPmP,kBAAkBC,EAAa7C,GACxD/lQ,EAAUwpQ,EAAexpQ,QACzBypQ,EAAqBpJ,EAA6BrgQ,EAAU,GAAG+lQ,GAC/D7C,EAAaD,EAAcuG,EAAetG,WAAYuG,EAAmBnJ,oBACzEsC,EAASuB,EAAUjB,EAAYuG,GAC/BjH,EAAWuE,GAAa/mQ,GAE5B0nQ,GAAkBlF,GAClBmF,GAAqBnF,EAAUxiQ,GAC/B6nQ,GAAmBrF,GAEfxiQ,GAAW,GACXmnQ,GAAsB3E,EAAUpB,EAAa,EAAG,KAGpD6F,GAAqBzE,EAAUpB,EAAa,EAAG,KAC/CuB,EAASH,EAAUI,GAEnB,IAAI5gF,EAAS8lF,GAAkBtF,GAC3BkH,EAAgBlH,EAASxgF,GAEzBhiL,GAAW,GACXmnQ,GAAsB,CAACuC,GAAgBxC,GAAyBlnQ,IAGpE,IAAIwxK,EAAekvF,EAAwBqF,GAAwB3E,EAAap/E,EAAQ,GAGxF,OAFAilF,GAAqB,CAACyC,GAAgBzD,EAAwBz0F,IAEvDk4F,CACX,EAEIC,GAAiB,CACjBC,aAAc,IACdC,kBAAmB,EACnBC,+BAAgC,IAChCC,mBAAoB,OACpBC,0BAA2B,OAC3BC,mBAAoB,GAGpBC,GAASt7O,EAAOruB,OAAO,CACvBoF,KAAM,SAAS0D,EAAS1E,GACpB,IAAIc,EAAOjI,KAEXoxB,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GAEnCc,EAAK4D,QAAUlJ,EAAEkJ,GACjB5D,EAAK2E,QAAU3E,EAAK4D,QACpB5D,EAAK4D,QAAQwZ,SAAS,YACtBpd,EAAK25P,YAAcj/P,EAAE,WAAWsJ,IAAI,WAAY,YAAYC,SAASlM,KAAK6L,SAC1E5D,EAAK05E,QAAU81D,EAAKP,QAAQ9vF,OAAOn/C,EAAK25P,YAAa,CACjDl8P,KAAMuC,EAAKd,QAAQuhO,WAEvBzgO,EAAKiqB,WAAW/qB,EACpB,EAEAs2M,OAAQ,WACJ,IAAIztM,EAAOhQ,KAAK4mP,WAEhB5mP,KAAK4hQ,YAAY31P,IAAI,CACjBF,MAAOiE,EACPhE,OAAQgE,IAEZhQ,KAAK2hF,QAAQnrB,QACbx2D,KAAK2hF,QAAQx3D,SAEbnqB,KAAK2qK,eACL3qK,KAAK2hF,QAAQ81D,KAAKz3I,KAAKihJ,OAC3B,EAEA1uH,QAAS,WACL,OAAO5xB,EAAMgyB,WAAW3yB,KAAK6L,QACjC,EAEA6mB,QAAS,WACL1yB,KAAKy9M,QACT,EAEA9yC,aAAc,WACV3qK,KAAKihJ,OAASjhJ,KAAK6mP,SACvB,EAEAzvG,aAAc,WACV,OAAOp3I,KAAK6mP,SAChB,EAEAA,QAAS,WACL,IAEIxnE,EAIAstF,EACA5yI,EACA/pH,EAEA48P,EAVA3kQ,EAAOjI,KACP0I,EAAQT,EAAKsuN,OAEb7pD,EAASzkK,EAAKd,QAAQulK,QAAU,CAAC,EACjC10B,EAAU/vI,EAAKd,QAAQ6wI,SAAW,EAClCo1B,EAAcV,EAAO3gK,OAAS,EAOlC2gK,EAAO3gK,MAAQqhK,EAEf,IAAInsB,EAAS,IAAIxJ,EAAKhH,MAmBtB,OAjBI/nI,IACAqxH,EAASgyI,GAAWrjQ,EAAOT,EAAKd,QAAQ0lQ,gBAAiB5kQ,EAAKd,QAAQ60P,UAEtE4Q,GADA58P,EAAO/H,EAAK2+O,YACS,GAAKx5E,EAAcp1B,GACxCqnC,EAAWp3K,EAAK6kQ,mBAAmBF,EAAa7yI,EAAOvyH,QAEvDmlQ,EAAgBv/F,EAAcp1B,GAAW40H,EAD9B7yI,EAAOvyH,OAAS63K,GACwC,EAEnEp+B,EAAO9mG,OAAOlyC,EAAK8kQ,kBAAkB/8P,EAAM08J,IAC3CzrB,EAAO9mG,OAAOlyC,EAAK+kQ,cAAcjzI,EAAQslD,EAAUstF,IAC/C1kQ,EAAKglQ,iBACLhsH,EAAO9mG,OAAOlyC,EAAKilQ,YAAYl9P,EAAMqvK,IAC9Bp3K,EAAKklQ,YACZlsH,EAAO9mG,OAAOlyC,EAAKmlQ,iBAAiBp9P,EAAMqvK,KAI3Cp+B,CACX,EAEAisH,YAAa,SAAcG,EAAQhuF,GAC/B,IACIiuF,EACA/uL,EAASjoE,EAAM+2P,EAAS,GACxBE,EAAWvtQ,KAAKwtQ,aA56BR,EA46BqBnuF,GAC7BouF,EAAUztQ,KAAKmH,QAAQ2lK,QAAQ4gG,SAC/BpgQ,EAAW,CACXlI,EAAGm5E,EAASgvL,EAASxhQ,MAAQ,EAC7B5H,EAAGo6E,EAASgvL,EAASvhQ,OAAS,GASlC,OANAshQ,EAAY,IAAI3sQ,EAAMghI,SAAS1E,KAC3B,IAAIt8H,EAAMghI,SAAS7F,MAAMxuH,EAASlI,EAAGkI,EAASnJ,GAC9C,IAAIxD,EAAMghI,SAAS3E,KAAKuwI,EAASxhQ,MAAOwhQ,EAASvhQ,SAG7C,IAAIyrI,EAAKpH,MAAMo9H,EAASH,EAEpC,EAEAF,iBAAkB,SAASC,EAAQhuF,GAC/B,IAAIkuF,EAAWvtQ,KAAKwtQ,aA77BR,EA67BqBnuF,GAE7BsuF,GADJJ,EAAWlqQ,KAAK8V,IAAIo0P,EAASxhQ,MAAOwhQ,EAASvhQ,SAClB,EACvB4hQ,EAAcD,EAAY,EAC1BpvL,EAAS8uL,EAAS,EAClBv3P,EAAQ,CAAC,EACTmrI,EAAS,IAAIxJ,EAAKhH,MAYtB,OAVA36H,EAAM1Q,EAAI0Q,EAAM3R,EAAId,KAAK6jE,KAAKqX,EAAS8gG,EAAWkuF,EAAW,GAC7DtsH,EAAO9mG,OAAOn6C,KAAK6tQ,aAAa/3P,EAAOzS,KAAK6jE,KAAKqmM,EAAsB,EAAXluF,GAAeqkF,EAAe,SAE1F5tP,EAAM1Q,EAAI0Q,EAAM3R,EAAIo6E,EAASgvL,EAAW,EACxCtsH,EAAO9mG,OAAOn6C,KAAK6tQ,aAAa/3P,EAAOy3P,EAAU7J,EAAe1jQ,KAAKmH,QAAQ8pH,QAE7En7G,EAAM1Q,EAAIm5E,EAASqvL,EAAcL,EAAW,EAC5Cz3P,EAAM3R,EAAIo6E,EAASqvL,EAAcD,EAAYJ,EAAW,EACxDtsH,EAAO9mG,OAAOn6C,KAAK6tQ,aAAa/3P,EAAO63P,EAAWlK,EAAc,SAEzDxiH,CACX,EAEA4sH,aAAc,SAAS/3P,EAAOg9B,EAAM7+B,EAASg9G,GACzC,IAAI1hF,EAAO,IAAIkoG,EAAKrI,UAAU,CAC1B17G,KAAM,CACFu9F,MAAOA,GAEX2O,OAAQ,OAGZrwF,EAAKiN,OAAO1mC,EAAM1Q,EAAG0Q,EAAM3R,GAC3B,IAAK,IAAIoD,EAAI,EAAGA,EAAI0M,EAAQzM,OAAQD,IAChCgoC,EAAKs9F,OAAO/2H,EAAM1Q,EAAI0tC,EAAO7+B,EAAQ1M,GAAG,GAAIuO,EAAM3R,EAAI2uC,EAAO7+B,EAAQ1M,GAAG,IAI5E,OAFAgoC,EAAKmW,QAEEnW,CACX,EAEAq3M,SAAU,WACN,IACI52O,EADA/H,EAAOjI,KAGX,GAAIiI,EAAKd,QAAQ6I,KACdA,EAAOwJ,SAASvR,EAAKd,QAAQ6I,KAAM,QAC/B,CACH,IAAInE,EAAU5D,EAAK4D,QACf6K,EAAMrT,KAAKqT,IAAI7K,EAAQE,QAASF,EAAQG,UAGxCgE,EADA0G,EAAM,EACCA,EAEAy1P,GAAeC,YAE9B,CAEA,OAAOp8P,CACX,EAEA88P,mBAAoB,SAAS98P,EAAM89P,GAC/B,IAAIzuF,EAAWh8K,KAAKyN,MAAMd,EAAO89P,GAEjC,GAAIzuF,EAAW8sF,GAAeM,mBAC1B,MAAM,IAAIz7P,MAAM,sBAQpB,OALIquK,EAAWyuF,GAAc99P,GACzBqvK,EAAW,GAAK8sF,GAAeM,oBAC/BptF,IAGGA,CACX,EAEA2tF,cAAe,SAASjzI,EAAQslD,EAAUstF,GAQtC,IAPA,IAAIp9N,EAAO,IAAIkoG,EAAKrI,UAAU,CAC1B17G,KAAM,CACFu9F,MAAOjxH,KAAKmH,QAAQ8pH,OAExB2O,OAAQ,OAGHylC,EAAM,EAAGA,EAAMtrC,EAAOvyH,OAAQ69J,IAInC,IAHA,IAAIlhK,EAAIwoQ,EAAgBtnG,EAAMga,EAC1BwU,EAAS,EAENA,EAAS95D,EAAOvyH,QAAQ,CAC3B,KAA+B,IAAxBuyH,EAAOsrC,GAAKwuB,IAAiBA,EAAS95D,EAAOvyH,QAChDqsL,IAGJ,GAAIA,EAAS95D,EAAOvyH,OAAQ,CAExB,IADA,IAAIpC,EAAIyuL,EACsB,GAAvB95D,EAAOsrC,GAAKwuB,IACfA,IAGJ,IAAI51G,EAAK3nE,EAAMq2P,EAAgBvnQ,EAAIi6K,GAC/BnhG,EAAK5nE,EAAMnS,GACXg6E,EAAK7nE,EAAMq2P,EAAgB94E,EAASxU,GACpCjhG,EAAK9nE,EAAMnS,EAAIk7K,GAEnB9vI,EAAKiN,OAAOyhC,EAAIC,GACX2uD,OAAO5uD,EAAIG,GACXyuD,OAAO1uD,EAAIC,GACXyuD,OAAO1uD,EAAID,GACXx4B,OACT,CACJ,CAGJ,OAAOnW,CACX,EAEAw9N,kBAAmB,SAAS/8P,EAAM08J,GAC9B,IAAIpzH,EAAM,IAAI43I,EAAM,EAAE,EAAGlhL,EAAMA,GAAMy3J,MAAMiF,EAAO3gK,MAAQ,GAC1D,OAAO0rI,EAAKlJ,KAAKc,SAAS/1F,EAAI2uH,SAAU,CACpCv0I,KAAM,CACFu9F,MAAOjxH,KAAKmH,QAAQ2tJ,YAExBl1B,OAAQ,CACJ3O,MAAOy7C,EAAOz7C,MACdllH,MAAO2gK,EAAO3gK,QAG1B,EAEAmmB,WAAY,SAAS/qB,GACjB,IAAIc,EAAOjI,KACXmH,EAAUA,GAAW,CAAC,EACtBc,EAAKd,QAAUpE,EAAOkF,EAAKd,QAASA,GAChCA,EAAQuB,QAAU9F,IAClBqF,EAAKsuN,OAAStuN,EAAKd,QAAQuB,MAAQ,IAEvCT,EAAKw1M,QACT,EACA/0M,MAAO,SAASA,GACZ,IAAIT,EAAOjI,KACX,GAAI0I,IAAU9F,EACV,OAAOqF,EAAKsuN,OAEhBtuN,EAAKsuN,OAAS7tN,EAAQ,GACtBT,EAAKw1M,QACT,EACAt2M,QAAS,CACL/E,KAAM,SACNsmO,SAAU,MACVszB,SAAU,aACVtzP,MAAO,GACPmkQ,gBAAiBV,GAAeG,+BAChCx3G,WAAYq3G,GAAeI,mBAC3Bt7I,MAAOk7I,GAAeK,0BACtBx8P,KAAM,GACNgoI,QAAS,EACT00B,OAAQ,CACJz7C,MAAO,GACPllH,MAAO,GAEX+gK,QAAS,CACLpnK,KA/lCJ,QAgmCIgoQ,SAAU,GACV3hQ,MAAO,EACPC,OAAQ,IAIhBihQ,eAAgB,WACZ,QAASjtQ,KAAKmH,QAAQ2lK,QAAQ4gG,QAClC,EAEAP,SAAU,WACN,MA1mCG,UA0mCIntQ,KAAKmH,QAAQ2lK,QAAQpnK,IAChC,EAEA8nQ,aAAc,SAASO,GACnB,IAAIhiQ,EAAQ/L,KAAKmH,QAAQ2lK,QAAQ/gK,MAC7BC,EAAShM,KAAKmH,QAAQ2lK,QAAQ9gK,OAUlC,OARKD,GAAUC,EAEJD,IAAUC,EACjBA,EAASD,GACDA,GAASC,IACjBD,EAAQC,GAJRD,EAAQC,EAAS+hQ,EAOd,CACHhiQ,MAAOA,EACPC,OAAQA,EAEhB,IAGJye,EAAQomK,YAAY9tL,OAAO2pQ,GAAO3kQ,IAClC0iB,EAAQF,GAAG2M,OAAOw1O,IAEpB/rQ,EAAM6H,WAAWiiB,EAAS,CACpBiiP,OAAQA,GACRP,eAAgBA,GAChB6B,gBAAiB,CACbrJ,gBAAiBA,EACjBQ,SAAUA,EACVM,cAAeA,EACfY,uBAAwBA,EACxBP,eAAgBA,EAChBa,UAAWA,EACXZ,oBAAqBA,EACrBwB,WAAYA,EACZW,SAAUA,EACVE,sBAAuBA,EACvBC,WAAYA,EACZG,cAAeA,EACfC,wBAAyBA,EACzBE,UAAWA,EACXM,kBAAmBA,GACnBM,aAAcA,GACdE,qBAAsBA,GACtBC,yBAA0BA,GAC1BC,sBAAuBA,GACvBG,kBAAmBA,GACnBC,mBAAoBA,GACpBG,kBAAmBA,GACnBC,qBAAsBA,GACtBE,mBAAoBA,GACpBC,kBAAmBA,GACnByB,WAAYA,GACZV,YAAaA,IAEjB4C,aAAc,CACV5J,MAAOK,EACPjC,YAAaA,EACbC,kBAAmBA,EACnBC,qBAAsBA,IAIrC,CA3tCD,CA2tCG7hQ,OAAOH,MAAM+G,QACF/G,OASd,WAGAG,OAAOH,MAAM8pB,QAAU3pB,OAAOH,MAAM8pB,SAAW,CAAC,EAChD,IAAIA,EAAU9pB,MAAM8pB,QAChB4uG,EAAgB5uG,EAAQ4uG,cACxB7wH,EAAaiiB,EAAQjiB,WACrB02K,EAASz0J,EAAQy0J,OACjBga,EAAmBzuK,EAAQ62I,UAC3BolE,EAAQj8M,EAAQi8M,MAChBh8M,EAAU/pB,MAAM+pB,QAEhBwjP,EAAmBxjP,EAAQoxB,UAAU/4C,OAAO,CAC5C+yC,MAAO,WACH91C,KAAKmuQ,gBAAkBplQ,WAAWswH,EAAcr5H,KAAK6L,QAAS,WAAWkrB,QAC7E,EAEA+b,KAAM,SAASuiD,GACXgkC,EAAcr5H,KAAK6L,QAAS,CACxBkrB,QAAS1kB,OAAOoY,EAAQwlK,iBAAiBjwL,KAAKmuQ,gBAAiB,EAAG94K,KAE1E,EAEAghD,MAAO,WACH3rH,EAAQoxB,UAAU/zC,GAAGsuI,MAAM9rI,KAAKvK,MAChCq5H,EAAcr5H,KAAK6L,QAAS,CACxBwB,QAAS,OACT0pB,QAAS1kB,OAAOrS,KAAKmuQ,kBAE7B,EAEAxzO,OAAQ,WACJjQ,EAAQoxB,UAAU/zC,GAAGsuI,MAAM9rI,KAAKvK,MAChCq5H,EAAcr5H,KAAK6L,QAAS,CACxBkrB,QAAS1kB,OAAOrS,KAAKmuQ,kBAE7B,IAGJ,SAASx5C,EAAUtnM,EAAWlgB,GAC1B,IAAIyR,EAAMjP,SAASkP,cAAc,OAMjC,OALAD,EAAIyO,UAAYA,EACZlgB,IACAyR,EAAIzR,MAAM2R,QAAU3R,GAGjByR,CACX,CAEA,IAAIwvP,EAAgB3jP,EAAQ7iB,MAAM7E,OAAO,CACrCoF,KAAM,SAASsuB,EAAW8zI,EAAcpjK,GAEpCnH,KAAKmH,QAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAASA,GAC5CnH,KAAKy2B,UAAYA,EACjBz2B,KAAKuqK,aAAeA,EAEpB,IAAIvyB,EAAU3e,EAAc5iG,EAAW,CAAE,cAAe,eACxDz2B,KAAKquQ,aAAe,CAChBnpP,IAAK8yH,EAAQpe,WACbptG,KAAMwrH,EAAQre,aAGlB35H,KAAKg1N,iBACLv+L,EAAUxX,YAAYjf,KAAK6L,QAC/B,EAEAmpN,eAAgB,WACZ,IAAInpN,EAAU7L,KAAK6L,QAAU8oN,EAAU,mBAAoB,2DACvD11D,EAAUj/J,KAAKi/J,QAAU01D,EAAU,6BACnC25C,EAAStuQ,KAAKsuQ,OAAS35C,EAAU,YAErC11D,EAAQlgJ,UAAY,SAEpBlT,EAAQoT,YAAYggJ,GACpBpzJ,EAAQoT,YAAYqvP,EACxB,EAEA7gQ,KAAM,SAASsO,EAAMuiB,EAAIq/F,GACrB,IAAItL,EAAMryH,KACN6L,EAAUwmH,EAAIxmH,QACd1E,EAAUkrH,EAAIlrH,QACdmnQ,EAASj8I,EAAIi8I,OACbrvG,EAAU5sC,EAAI4sC,QACdqJ,EAAS79I,EAAQ0zJ,OAAOe,EAAOnjK,GAAQmjK,EAAO5gJ,EAAKviB,GAAQ,GAC3DoD,EAA6B,GAAfw+G,EAAK5xH,QACnBwiQ,EAAS5wI,EAAKp/C,SAASn5E,EAAI+Z,EAI3B4wB,GAHS4tF,EAAKp/C,SAASn5E,EACHmpQ,IACZpnQ,EAAQgS,IAAMhS,EAAQuP,KAE9BoH,EAASwqJ,EAASnhK,EAAQuP,IAC1BoqB,EAAO9gC,KAAKuqK,aAAa0J,KAAKhjK,OAAO9J,EAAQ8J,OAAQ8K,EAAMuiB,GAC3DluB,EAAWqa,EAAQ44I,YAAYl8J,GAEnCnH,KAAKwuQ,mBAEAxuQ,KAAKyuQ,WACNp1I,EAAcxtH,EAAS,CACnBqiF,WAAY,SACZ7gF,QAAS,UAEbrN,KAAKyuQ,UAAW,GAGhBr+P,IACA0wB,EAAO1wB,EAAS,CACZ2L,KAAMA,EACNuiB,GAAIA,KAIZ2gI,EAAQlgJ,UAAY+hB,EACpBu4F,EAAc4lC,EAAS,CACnBzyI,KAAMmxG,EAAKp/C,SAASn5E,EAAI65J,EAAQ//I,YAAc,EAC9CgG,IAAKy4G,EAAKz/C,KAGd,IAAIwwL,EAAer1I,EAAc4lC,EAAS,CAAE,YAAa,iBAAkB,WAE3E5lC,EAAci1I,EAAQ,CAClBviQ,MAAOoT,EACPqN,KAAM+hP,EAASzwP,EAASiyB,EACxB7qB,IAAKy4G,EAAKz/C,GAAKwwL,EAAa73N,UAAY63N,EAAaC,eAAiBD,EAAa1iQ,OAAS,IAGhGqtH,EAAcxtH,EAAS,CACnBqiF,WAAY,WAEpB,EAEAsgL,iBAAkB,WACVxuQ,KAAK4uQ,cACLt0O,aAAat6B,KAAK4uQ,cAGlB5uQ,KAAK6uQ,gBACL7uQ,KAAK6uQ,eAAel0O,QAE5B,EAEAjtB,KAAM,WACF,IAAIulH,EAAWjzH,KAEfA,KAAKwuQ,mBAELxuQ,KAAK4uQ,aAAe11O,YAAW,WAC3B+5F,EAASw7I,UAAW,EACpBx7I,EAAS47I,eAAiB,IAAIX,EAAiBj7I,EAASpnH,SACxDonH,EAAS47I,eAAe/4N,QACxBm9E,EAAS47I,eAAe33N,MAC5B,GAAGl3C,KAAKmH,QAAQk3J,UACpB,EAEAr8J,QAAS,WACLhC,KAAKwuQ,mBACDxuQ,KAAKy2B,WACLz2B,KAAKy2B,UAAUrX,YAAYpf,KAAK6L,gBAE7B7L,KAAKy2B,iBACLz2B,KAAKuqK,oBACLvqK,KAAK6L,eACL7L,KAAKi/J,eACLj/J,KAAKsuQ,MAChB,IAGJ7jP,EAAQu5I,kBAAkBoqG,EAAe,CACrCn9P,OAAQ,gBACRotJ,UAAW,MAGf,IAAIywG,EAAiB,aACjBC,EAAiBD,EACjBE,EAAe,WAEf1tG,EAAY,CACfytG,eAAgBA,EAChBD,eAAgBA,EAChBE,aAAcA,GAKXC,EAAYxkP,EAAQ7iB,MAAM7E,OAAO,CACjCoF,KAAM,SAASmsK,GAEXt0K,KAAKs0K,MAAQA,EACb,IAWI3mJ,EAXAxmB,EAAUnH,KAAKmH,QAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAASmtK,EAAMntK,QAAQyb,WACpE2jB,EAASp/B,EAAQo/B,OACjBA,IACAA,EAAOxqB,KAAO/b,KAAKse,UAAUioB,EAAOxqB,MACpCwqB,EAAOjI,GAAKt+B,KAAKse,UAAUioB,EAAOjI,KAGjC7T,EAAQqsG,QAAQ3vH,EAAQ6iF,KAAKh9E,WAC9B7F,EAAQ6iF,KAAKh9E,QAAU7F,EAAQ6F,SAInChN,KAAKkvQ,cAAgB,IAAIzkP,EAAQi5I,iBAAiB1jK,OAAQ2tB,EAAM,CAAC,GAAOurK,EAAiB/0G,MAAQ,QAASx2D,EAAIurK,EAAiB8H,UAAY,WAAYrzK,EAAIurK,EAAiBiI,MAAQ,QAASxzK,EAAIurK,EAAiBkI,UAAY,WAAYzzK,IAC1O2mJ,EAAMr+C,YAAYj2H,KAAKkvQ,cAC3B,EAEA5wP,UAAW,SAAS5V,GAChB,OAAO+hB,EAAQnM,UAAUte,KAAKs0K,MAAM/J,aAAa0J,KAAMvrK,EAC3D,EAEAymQ,MAAO,WACCnvQ,KAAKkmC,YACLlmC,KAAKkmC,UAAUlkC,UACfhC,KAAKkmC,UAAY,MAGjBlmC,KAAKgqF,OACLhqF,KAAKgqF,KAAKhoF,UACVhC,KAAKgqF,KAAO,KAEpB,EAEAhoF,QAAS,WACDhC,KAAKs0K,QACLt0K,KAAKs0K,MAAMp+C,eAAel2H,KAAKkvQ,sBACxBlvQ,KAAKs0K,OAGhBt0K,KAAKmvQ,OACT,EAEA1xD,OAAQ,WACJz9M,KAAKovQ,cACLpvQ,KAAKqvQ,eACT,EAEAA,cAAe,WACX,IA4bO1hP,EA3bH2mJ,EADMt0K,KACMs0K,MACZntK,EAFMnH,KAEQmH,QACdg+B,EAAOnlC,KAAKsvQ,WACZ58H,EAAQvtG,EAAKg7I,eACbzpK,EAAMg8H,EAAMh8H,IACZyC,EAAMu5H,EAAMv5H,IACZirN,EAAQj9N,EAAQo/B,OAChBxqB,EAAOqoN,EAAMroN,KACbuiB,EAAK8lM,EAAM9lM,GACXq3L,EAAayO,EAAMzO,WACnB45C,GAibG5hP,EAjbewX,EAkb1BqqO,EAAannQ,UAAYslB,EAClB,IAAI6hP,GAjbwB,IAA3BrqO,EAAKw8I,oBAIT3hL,KAAKmvQ,QAGLI,EAAUj2N,IAAMnU,EAAKmU,IAErBt5C,KAAKkmC,UAAY,IAAIzb,EAAQoqM,UAAUvgD,EAAOi7F,EAAW,CACrD74P,IAAKA,EACLyC,IAAKA,EACL4C,KAAMA,GAAQrF,EACd4nB,GAAIA,GAAMnlB,EACVw8M,WAAYlrM,EAAQuuG,eAAe28F,EAAY,CAAEllL,KAAM,SACvDzjC,QAAS7F,EAAQ6F,SAClB,IAAIyd,EAAQi5I,iBAAiB1jK,KAAM,CAClCyvQ,YAAa,eACblpO,OAAQ,UACRmpO,UAAW,gBAGXvoQ,EAAQ6iF,KAAKh9E,UACbhN,KAAKgqF,KAAO,IAAIokL,EAAc95F,EAAMzoK,QAASyoK,EAAM/J,aAAc,CAC7D7zJ,IAAKA,EACLyC,IAAKA,EACL/I,SAAUqa,EAAQ44I,YAAYl8J,EAAQ6iF,MACtC/4E,OAAQ9J,EAAQ6iF,KAAK/4E,UAGjC,EAEA2yN,SAAU,WACN,IAGIvxG,EAHWryH,KAAKs0K,MAAMs3D,iBAAgB,GACtB5hB,kBAAkB+kD,GAEvB5uF,eACXzpK,EAAM27G,EAAI37G,IACVyC,EAAMk5G,EAAIl5G,IAEVotB,EAASvmC,KAAKmH,QAAQo/B,QAAU,CAAC,EACjCxqB,EAAOwqB,EAAOxqB,MAAQrF,EACtBqF,EAAOrF,IACPqF,EAAOrF,GAGX,IAAI4nB,EAAKiI,EAAOjI,IAAMnlB,EAClBmlB,EAAKnlB,IACLmlB,EAAKnlB,GAGTnZ,KAAKmH,QAAQo/B,OAAS/9B,EAAW,CAAC,EAAG+9B,EAAQ,CACzCxqB,KAAMA,EACNuiB,GAAIA,IAGRt+B,KAAK2vQ,YACT,EAEAP,YAAa,SAAS3vN,GAClB,IAAI04H,EAAWn4K,KAAKs0K,MAAMulB,UAEtB1hB,GACAA,EAASslC,OAAOhzL,EAAQ6X,KAAK61I,EAASkjC,OAAQ57J,EAEtD,EAEAmwN,aAAc,WACV,IAAIt7F,EAAQt0K,KAAKs0K,MACb6D,EAAW7D,EAAMulB,UACjBg2E,EAAa13F,EAASkjC,MAAM9rL,QAAO,SAAUq/D,GAAQ,OAAOA,EAAKznF,QAAQ/E,OAAS0sQ,CAAgB,IAGtG32F,EAASyyC,UAAYt2C,EAAMntK,QAAQ8nC,OACnCkpI,EAAShxK,QAAQyuL,aAAethB,EAAMntK,QAAQyuL,aAC9Czd,EAAS6zC,yBAET7zC,EAASslC,OAAOoyD,EACpB,EAEA5mL,MAAO,SAAStkF,GACZ,IAUI2iB,EATAgtJ,EADMt0K,KACMs0K,MACZpuI,EAFMlmC,KAEUkmC,UAChBsmK,EAASl4B,EAAM45C,kBAAkBvpN,EAAE4kB,eACnCumP,EAAgB9vQ,KAAKsvQ,WACrBS,EAAYD,EAAc3vF,eAC1B6vF,EAAcF,EAAclhL,KAAKt1C,IAAI6kF,cAAcquE,GACnDrnK,EAAOmvI,EAAMulB,UAAUjE,aACvB3hI,EAAQtvD,EAAEisM,WAAWzrK,EAAKh+B,QAAQ/E,MAClCmkC,EAASvmC,KAAKmH,QAAQo/B,OAG1B,GAAK0tB,IAAS+7M,GAAgB9pO,EAA9B,CAKI5e,EADAif,EAAOxqB,MAAQwqB,EAAOjI,GACX4gJ,EAAO34I,EAAOjI,IAAM4gJ,EAAO34I,EAAOxqB,MAElCmjK,EAAOh5I,EAAU/+B,QAAQm3B,IAAM4gJ,EAAOh5I,EAAU/+B,QAAQ4U,MAGvE,IAAIA,EAAO0O,EAAQ0zJ,OAAO1zJ,EAAQ+tG,WAC9B0mD,EAAOjrH,EAAMv9C,KACbq5P,EAAUr5P,IAAKwoK,EAAO6wF,EAAU52P,KAAOmO,IAGvCgX,EAAK7T,EAAQ0zJ,OAAO1zJ,EAAQ+tG,WAC5B0mD,EAAOnjK,GAAQuL,EACf43J,EAAO6wF,EAAUr5P,KAAO4Q,EAAUyoP,EAAU52P,MAGhDnZ,KAAKmH,QAAQo/B,OAAS,CAAExqB,KAAMA,EAAMuiB,GAAIA,GAEpCt+B,KAAKmH,QAAQ8oQ,WACbjwQ,KAAK2vQ,aACL3vQ,KAAK4vQ,gBAGT1pO,EAAUhW,IAAInU,EAAMuiB,GAEpBt+B,KAAKkwQ,SAASn0P,EAAMuiB,EA3BpB,CA4BJ,EAEAoyD,SAAU,WACN1wF,KAAK2vQ,aACL3vQ,KAAKuvB,SACLvvB,KAAK4vQ,eAED5vQ,KAAKgqF,MACLhqF,KAAKgqF,KAAKt8E,MAElB,EAEAyiQ,cAAe,WACX,IACIC,EADMpwQ,KACsBkmC,UAAU/+B,QACtC4U,EAAOq0P,EAAsBr0P,KAC7BuiB,EAAK8xO,EAAsB9xO,GAC3BiI,EAJMvmC,KAIOmH,QAAQo/B,OAEzBA,EAAOxqB,KAAOA,EACdwqB,EAAOjI,GAAKA,CAChB,EAEAqxO,WAAY,WACR,IACIppO,EADMvmC,KACOmH,QAAQo/B,YAAuB,IAAXA,IAAqBA,EAAS,CAAE,GAMrE,IALA,IACI0zK,EAHMj6M,KAEMs0K,MACIntK,QAAQyuL,aACxB75K,EAAOwqB,EAAOxqB,KACduiB,EAAKiI,EAAOjI,GAEP10B,EAAM,EAAGA,EAAMqwM,EAAQzyM,OAAQoC,IAAO,CAC3C,IAAIu7B,EAAO80K,EAAQrwM,GACfu7B,EAAKypD,OAASkgL,IACd3pO,EAAKzuB,IAAMqF,EACXopB,EAAKhsB,IAAMmlB,EAEnB,CACJ,EAEA/O,OAAQ,WACJ,IACI+kJ,EADMt0K,KACMs0K,MACZ/tI,EAFMvmC,KAEOmH,QAAQo/B,OAEzB,GAAK+tI,EAAMxQ,iBAAiB,CAAE,oBAA9B,CAIA,IAAIwrG,EAAWtvQ,KAAKsvQ,WAChBj4O,EAAO,CACPtb,KAAMwqB,EAAOxqB,KACbuiB,GAAIiI,EAAOjI,IAGf,GAA8B,aAA1BgxO,EAASnoQ,QAAQzB,KAAqB,CACtC,IAAIgkL,EAAc,IAAIj/J,EAAQq7J,iBAAiBt9K,EAAW,CACtD62K,SAAU,OACX/K,EAAMntK,QAAQyuL,aAAa,GAAI,CAC9B/V,WAAY,CAAEt5I,EAAOxqB,KAAMwqB,EAAOjI,MAClCg2I,EAAM/J,cAAcpjK,QAExBkwB,EAAKtb,KAAO0O,EAAQ6zJ,YAAYoL,EAAYhzK,KAAMgzK,EAAYnK,aAAcmK,EAAYrK,UACxFhoJ,EAAKiH,GAAK7T,EAAQ6zJ,YAAYoL,EAAYvwK,IAAKuwK,EAAYnK,aAAcmK,EAAYrK,SACzF,CAEAr/K,KAAKs0K,MAAMlqK,QAAQ,kBAAmBitB,EAnBtC,CAoBJ,EAEAg5O,MAAO,SAAS1rQ,GACZ,IAAI0tH,EAAMryH,KACNmlC,EAAOktF,EAAIiiD,MAAMulB,UAAUjE,aAC3B1vJ,EAAYmsF,EAAInsF,UAChB2yK,EAAcxmF,EAAIlrH,QAClBo/B,EAASsyK,EAAYtyK,OACrB0pO,EAAWp3D,EAAYo3D,SACvBX,EAAWtvQ,KAAKsvQ,WAChBvqO,EAAQpgC,EAAEogC,MAEd,GAAKmB,EAAL,CAIA,IAAIoqO,EAAShB,EAAShuF,cAAcp7I,EAAU/+B,QAAQ4U,MAClDw0P,EAAOjB,EAAShuF,cAAcp7I,EAAU/+B,QAAQm3B,IAChDkuK,EAASxsM,KAAKs0K,MAAM45C,kBAAkBvpN,EAAE4kB,eAE5C5kB,EAAE4kB,cAAcpgB,iBAEZ9F,KAAKoU,IAAIstB,GAAS,IAClBA,GAvRY,GA0RZwrO,EAAOD,EAAS,GAChBpqO,EAAUuK,KAAK1L,EAAOynK,GACtBxsM,KAAKmwQ,kBAELhrO,EAAKh+B,QAAQuP,IAAM6vB,EAAOxqB,KAC1BwqB,EAAOxqB,KAAOopB,EAAK08I,YAAYl9K,EAAEogC,MAAQ/kC,KAAKs0K,MAAM65D,sBAAuB3hC,GAAQ91L,KAGnFu5P,IACAjwQ,KAAK2vQ,aACL3vQ,KAAK4vQ,gBAGT1pO,EAAUhW,IAAIqW,EAAOxqB,KAAMwqB,EAAOjI,IAElCt+B,KAAKkwQ,SAASlwQ,KAAKmH,QAAQo/B,OAAOxqB,KAAM/b,KAAKmH,QAAQo/B,OAAOjI,GA3B5D,CA4BJ,EAEAkyO,SAAU,SAAS7rQ,GACf3E,KAAK0wF,SAAS/rF,EAClB,EAEAurQ,SAAU,SAASn0P,EAAMuiB,GACrB,IAAI65I,EAAWn4K,KAAKs0K,MAAMulB,UAEtB75L,KAAKgqF,MACLhqF,KAAKgqF,KAAKv8E,KAAKsO,EAAMuiB,EAAI65I,EAASyoC,gBAE1C,EAEAorB,aAAc,SAASrnO,GACnB,OAAO3E,KAAKs0K,MAAM03D,aAAarnO,EACnC,EAEA+9E,QAAS,SAAS/9E,GAGd,OAFA3E,KAAKkwQ,SAASvrQ,EAAEoX,KAAMpX,EAAE25B,IAEjBt+B,KAAKs0K,MAAM5xF,QAAQ/9E,EAC9B,EAEAsnO,WAAY,SAAStnO,GAUjB,OATI3E,KAAKgqF,MACLhqF,KAAKgqF,KAAKt8E,OAGd1N,KAAKmwQ,gBACLnwQ,KAAK2vQ,aACL3vQ,KAAKuvB,SACLvvB,KAAK4vQ,eAEE5vQ,KAAKs0K,MAAM23D,WAAWtnO,EACjC,EAEA2qQ,SAAU,WACN,IAAIn3F,EAAWn4K,KAAKs0K,MAAMulB,UAE1B,GAAI1hB,EACA,OAAOA,EAAS6xC,kBAAkB+kD,EAE1C,EAEAxoO,OAAQ,SAASxqB,EAAMuiB,GACnB,IAAIiI,EAASvmC,KAAKmH,QAAQo/B,OAa1B,OAXIxqB,GAAQuiB,IACRiI,EAAOxqB,KAAO/b,KAAKse,UAAUvC,GAC7BwqB,EAAOjI,GAAKt+B,KAAKse,UAAUggB,GAE3Bt+B,KAAK2vQ,aACL3vQ,KAAKuvB,SACLvvB,KAAK4vQ,eAEL5vQ,KAAKkmC,UAAUhW,IAAInU,EAAMuiB,IAGtB,CACHviB,KAAMwqB,EAAOxqB,KACbuiB,GAAIiI,EAAOjI,GAEnB,IAuIJ,SAASkxO,IAAiB,CApI1BP,EAAUn5N,MAAQ,SAAS3uC,EAASw/N,GAIhC,QAHgB,IAAZx/N,IAAsBA,EAAU,CAAC,QAChB,IAAjBw/N,IAA2BA,EAAe,CAAC,IAE3Cx/N,EAAQspQ,OAAZ,CAGAtpQ,EAAQspQ,QAAS,EAEjB,IAAIC,EAAcloQ,EAAW,CAAC,EAAGm+N,EAAa/jN,UAAWzb,EAAQyb,WAC7Dy4L,EAAQl0M,EAAQk0M,MAAQ,GAAGj9L,OAAOjX,EAAQk0M,OAC1CD,EAAc5yM,EAAW,CAAC,EAAGkoQ,EAAY9hL,KAAM,CAAExsF,KAAM0sQ,IAEtD4B,EAAY1jQ,UACbouM,EAAYpuM,SAAU,EACtBouM,EAAYpvM,OAAS,IAGU,QAA/B7E,EAAQyb,UAAUtV,SAClB+tM,EAAM15M,KAAKy5M,GAEXC,EAAMlxM,QAAQixM,GAGlBC,EAAM/5M,SAAQ,SAAUstF,GACpBA,EAAKxsF,KAAOwsF,EAAKxsF,MAAQ4sQ,CAC7B,IAEAC,EAAU0B,WAAWxpQ,EAASupQ,GAC9BzB,EAAU2B,aAAazpQ,EAASupQ,EAAa/pC,EAvB7C,CAwBJ,EAEAsoC,EAAU0B,WAAa,SAASxpQ,EAASupQ,GACrC,IAAIzhO,EAASyhO,EAAYzhO,QAAU,GAC/B09K,EAAexlN,EAAQyuL,aAAe,GAAGx3K,OAAOjX,EAAQyuL,cACxDi7E,EAAY1pQ,EAAQo5K,UAAY,GAAGniK,OAAOjX,EAAQo5K,WACxCosC,EAAavuM,OAAOyyP,GAC1BvvQ,SAAQ,SAAU6jC,GACtBA,EAAKypD,KAAOzpD,EAAKypD,MAAQogL,CAC7B,IAEA,IACI8B,EAA6C,IADvBrmP,EAAQ+5K,mBAAmBv1J,EAAQiqJ,EAAiB4G,uBACxCt4L,OAElCQ,EAAOQ,EAAW,CAClB9C,KAAM,OACNkpF,KAAMkgL,EACNhrF,iBAAkBgtF,EAClBn0F,UAAWm0F,EACXC,WAAW,EACXt7F,WAAY,CAAEzoK,SAAS,GACvBiyJ,QAAS,CAAEjyJ,SAAS,GACpBooK,OAAQ,CAAEtiI,KAAM,GAChBk/B,SAAU0+L,EAAYM,iBACtB7rF,kBAAmB,CACftuK,QAAS,CAAE,GACXqG,MAAO,CAAE,EAAG,GACZxI,KAAM,CAAE,EAAG,GACXqpK,MAAO,GACPjpK,OAAQ,CAAE,GACVgpK,MAAO,CAAE,MAGbmzF,EAAOP,EAAY96E,aAEvB+2B,EAAahrN,KACT6G,EAAW,CAAC,EAAGR,EAAM,CACjBo9K,cAAe,KAChB6rF,EAAM,CACL7uQ,KAAM2sQ,EACN5wN,MAAO,KACPkhI,SAAU,MACVE,aAAc,OACdnK,OAAQ,CAAEpoK,SAAS,GACnByoK,WAAY,CAAEzoK,SAAS,KACvBxE,EAAW,CAAC,EAAGR,EAAMipQ,EAAM,CAC3B7uQ,KAAM2sQ,EAAiB,UACvB3pF,cAAe,GACf7F,aAAc,OACdnK,OAAQ,CAAE9nK,SAAU,IACpB4qK,UAAW,GACXiN,kBAAmB,CACftuK,QAAS,IAEbmoM,UAAU,IACVx2M,EAAW,CAAC,EAAGR,EAAMipQ,EAAM,CAC3B7uQ,KAAM2sQ,EAAiB,SACvB3pF,cAAe,IACf3P,WAAY,CACR1pK,MAAO,IAEXmsK,UAAW,GACX/5H,MAAO,KACPi3H,OAAQ,CAAEpoK,SAAS,EAAOgnC,QAAQ,GAClCgrK,UAAU,KAIlB6xD,EAAUlvQ,KAAK6G,EAAW,CACtBpG,KAAM2sQ,EACNngL,KAAMkgL,EACN91F,eAAgB,CACZhsK,SAAS,GAEbA,SAAS,GACV0jQ,EAAYnwF,WACnB,EAEA0uF,EAAU2B,aAAe,SAASzpQ,EAASupQ,EAAa/pC,GAMpD,IALA,IAAI13L,EAAS9nC,EAAQ8nC,OAAS9nC,EAAQ8nC,QAAU,GAC5CiiO,EAAkB,GAAG9yP,OAAOsyP,EAAYzhO,QAAU,IAClDopJ,EAAesuC,EAAatuC,aAC5Bz3L,EAAW8vQ,EAAYr9E,eAElBzpL,EAAM,EAAGA,EAAMsnQ,EAAgB1pQ,OAAQoC,IAC5CqlC,EAAOttC,KACH6G,EAAW,CACPyoH,MAAOonE,EAAazuL,EAAMyuL,EAAa7wL,QACvC8hN,cAAeonD,EAAYS,UAC3B70D,iBAAiB,EACjBr9C,QAAS,CACLjyJ,SAAS,IAEdpM,EAAUswQ,EAAgBtnQ,GAAM,CAC/Bu7B,KAAM4pO,EACNn5E,aAAcm5E,EACd/8L,SAAU0+L,EAAYM,mBAItC,EAQA,IAEII,EAAa1qC,EAAM3jO,OAAO,CAC1B6nL,cAAe,SAASzjL,EAASw/N,GAC7B,IAAI56N,EAAQ0e,EAAQmjE,YAAY5tF,KAAK6L,SAASE,OAASmtL,EAAiBp3B,cACpEo0B,EAAQywC,EAER0qC,EAAgB,CAChBh+E,eAAgB,CACZi2B,cAAeniN,EAAQgqQ,WAE3Bx7E,aAAc,CACVC,aAAc,CACVxzL,KAAM,UACN42K,eAAgB,CACZhsK,SAAS,GAEbooK,OAAQ,CACJtiI,KAAM,GAEV2iI,WAAY,CACRzoK,SAAS,GAEbo4K,cAAe/hL,KAAKyN,MAAM/E,EAvBpB,OA4BdmqL,IACAA,EAAQ1tL,EAAW,CAAC,EAAG0tL,EAAOm7E,IAGlCpC,EAAUn5N,MAAM3uC,EAAS+uL,GAEzBwwC,EAAM3+N,GAAG6iL,cAAcrgL,KAAKvK,KAAMmH,EAAS+uL,EAC/C,EAEAoxC,iBAAkB,SAASz7N,GACvB4e,EAAQpF,SAASxZ,EAAS,uBAC9B,EAEAqmB,WAAY,SAAS/qB,GACjBnH,KAAKsxQ,mBACL5qC,EAAM3+N,GAAGmqB,WAAW3nB,KAAKvK,KAAMmH,EACnC,EAEAwsO,oBAAqB,WACjB,IAAIj0N,EAAc1f,KAAKmH,QAAQuY,YAE/B1f,KAAKmH,QAAQuY,aAAc,EAC3B1f,KAAKuxQ,cACLvxQ,KAAKmH,QAAQuY,YAAcA,CAC/B,EAEAgT,QAAS,WACL1yB,KAAK2zO,qBACT,EAEAvM,QAAS,WACL,IAAIxkN,EAAY5iB,KAAK4iB,WAEhB5iB,KAAKwxQ,UAAY5uP,GAAaA,EAAUzb,QAAQsqQ,cACjD7uP,EAAUgtP,eAEV5vQ,KAAKuxQ,aAEb,EAEAC,OAAQ,WACJ,IAAIrqQ,EAAUnH,KAAKmH,QACf8nC,EAAS,GAAG7wB,OAAOjX,EAAQ8nC,OAAQ9nC,EAAQyb,UAAUqsB,QACrDi1J,EAAcz5K,EAAQ4T,KAAK4Q,GAAQ,SAAShqC,GAAK,OAAOA,GAAKA,EAAE+H,OAAS,IAAGxF,OAC3EunC,EAAQ/uC,KAAK0xQ,eAAiBxtE,EAGlC,OAFAlkM,KAAK0xQ,aAAextE,EAEbn1J,CACX,EAEAwiO,YAAa,WACT,IAAI3uP,EAAY5iB,KAAK4iB,UAEhBA,IACDA,EAAY5iB,KAAK4iB,UAAY,IAAIqsP,EAAUjvQ,MAC3CA,KAAKoK,QAAQ,mBAAoB,CAAEwY,UAAWA,KAGlDA,EAAUusP,QACVvsP,EAAUghN,WAEV8C,EAAM3+N,GAAGq/N,QAAQ78N,KAAKvK,MAEtB4iB,EAAUysP,eACd,EAEAzgC,oBAAqB,SAASpiC,GAC1B,IACI59G,EADW5uF,KAAK65L,UACA+nB,YAAYpV,GAE5B59G,GAAQA,EAAKznF,QAAQ/E,OAAS0sQ,EAC9B9uQ,KAAKkzN,oBAELwT,EAAM3+N,GAAG6mO,oBAAoBrkO,KAAKvK,KAAMwsM,EAEhD,EAEAk4B,eAAgB,WACZgC,EAAM3+N,GAAG28N,eAAen6N,KAAKvK,MAC7BA,KAAK2xQ,yBACT,EAEAA,wBAAyB,WAIrB,IAHA,IACI9xF,EADA/lC,EAAc,GAAG17H,OAAOpe,KAAKmH,QAAQyuL,cAGhCmnB,EAAS,EAAGA,EAASjjE,EAAYtyI,OAAQu1M,IAAU,CACxD,IAAI53K,EAAO20G,EAAYijE,GACnB53K,EAAK/iC,OAAS2sQ,EACdlvF,EAAa16I,EAAK06I,WACXA,GAAc16I,EAAKypD,OAASkgL,IACnC3pO,EAAK06I,WAAaA,EAE1B,CACJ,EAEAyxF,iBAAkB,WACVtxQ,KAAK4iB,YACL5iB,KAAK4iB,UAAU5gB,UACfhC,KAAK4iB,UAAY,KAEzB,EAEA5gB,QAAS,WACLhC,KAAKsxQ,mBACL5qC,EAAM3+N,GAAG/F,QAAQuI,KAAKvK,KAC1B,EAEAutO,mBAAoB,SAAS5oO,GACzB,IAAI6nM,EAASxsM,KAAKkuN,kBAAkBvpN,GAChCiqF,EAAO5uF,KAAK65L,UAAU+nB,YAAYpV,GAEtC,OAAOk6B,EAAM3+N,GAAGwlO,mBAAmBhjO,KAAKvK,KAAM2E,IAAOiqF,GAAQA,EAAKznF,QAAQ/E,OAAS0sQ,CACvF,EAEAxkC,sBAAuB,WACdtqO,KAAKyqO,mBACNzqO,KAAK6L,QAAQsB,MAAM40E,YAAc,OAEjC/hF,KAAKyqO,kBAAmB,EAEhC,IAGJhgN,EAAQu5I,kBAAkBotG,EAAY,CAClCD,UAAW,OACXx7E,aAAc,CACVC,aAAc,CACVlwL,KAAM,OACN25K,SAAU,MACV1C,WAAW,GAEf4D,UAAW,CACPiI,aAAa,EACbpT,OAAQ,CACJnkK,OAAQ,OAIpB2R,UAAW,CACP2jB,OAAQ,CAAC,EACT8sJ,eAAgB,CACZrB,QAAS,CACLhlL,SAAS,GAEbiyJ,QAAS,CACLjyJ,SAAS,GAEb2+J,UAAW,CACP3+J,SAAS,GAEbu4J,KAAM,CACFx5J,MAAO,IAGfi+E,KAAM,CAAC,EACPh9E,SAAS,GAEbiyJ,QAAS,CACLjyJ,SAAS,GAEb8oL,OAAQ,CACJ9oL,SAAS,KAIjBrM,MAAM6H,WAAW7H,MAAM8pB,QAAS,CAC5B62I,UAAWA,EACX2tG,UAAWA,EACXb,cAAeA,EACfgD,WAAYA,GAGf,CAp3BD,GAs3BA,SAAUzuQ,GAEN,IAAIhC,EAAQG,OAAOH,MACf8pB,EAAU9pB,EAAM8pB,QAChBwuN,EAAwBxuN,EAAQwuN,sBAChCvS,EAAQj8M,EAAQF,GAAGm8M,MACnBkrC,EAAkBnnP,EAAQ2mP,WAC1B9vG,EAAY72I,EAAQ62I,UACpBytG,EAAiBztG,EAAUytG,eAC3BD,EAAiBxtG,EAAUwtG,eAC3BtmQ,EAAa7H,EAAM6H,WACnBsuH,EAAUrsG,EAAQqsG,QAElB55E,EAAS,SAET20N,EAAwB54B,EAAsBl2O,OAAO,CACrD4gK,WAAY,CACRmuG,gBAAiB,qBACjBC,iBAAkB,yBAItBX,EAAa1qC,EAAM3jO,OAAO,CAE1BoE,QAAS,CACL/E,KAAM,aACN+uQ,UAAW,OACXx7E,aAAc,CACVC,aAAc,CACVlwL,KAAM,OACN25K,SAAU,MACV1C,WAAW,GAEf4D,UAAW,CACPiI,aAAa,EACbpT,OAAQ,CACJnkK,OAAQ,OAIpB2R,UAAW,CACP2jB,OAAQ,CAAC,EACT8sJ,eAAgB,CACZrB,QAAS,CACLhlL,SAAS,GAEbiyJ,QAAS,CACLjyJ,SAAS,EACToD,SAAU,EAAG87J,cAAevrK,EAAM8Q,SAASy6J,EAAU,MAEzD3G,KAAM,CACFx5J,MAAO,IAGfi+E,KAAM,CAAC,EACPh9E,SAAS,GAEbiyJ,QAAS,CACLjyJ,SAAS,GAEb8oL,OAAQ,CACJ9oL,SAAS,GAEb4vO,yBAAyB,GAG7BpC,aAAc,SAASrzO,EAASw/N,GAC5B3mO,KAAKgyQ,sBAAsB7qQ,GAC3BnH,KAAKo/J,UAAY,IAAIwyG,EAAgB5xQ,KAAK6L,QAAQ,GAAI1E,EAASw/N,EAAc,CACzEvwG,SAAU,IAAIy7I,EAAsB7xQ,MACpCsK,OAAQtK,KACRogJ,IAAKpgJ,KAAKy6O,UAElB,EAEAu3B,sBAAuB,SAAS7qQ,GAC5B,IAAI8qQ,EAAmB9qQ,EAAQyb,WAAa,CAAC,EACzCrf,EAAU5C,EAAM4C,QAChB2uQ,EAAU3uQ,EAAQic,MAClB2yP,EAAY5uQ,EAAQuf,QAAQqB,QAEhC3b,EAAWypQ,EAAkB,CACzBjB,kBAAmBiB,EAAiBxgP,WACpCggP,cAAeQ,EAAiBxgP,WAChCw+O,UAAWiC,IAAYC,GAE/B,EAEA94B,gBAAiB,SAAShwD,GACtB,IAAIliL,EAAUkiL,GAAe,CAAC,EAC1B53J,EAAatqB,EAAQsqB,WACrB2gP,EAAqB3gP,GAAcA,EAAWsqC,gBAC9CuzM,EAAW,GAAGlxP,OAAOjX,EAAQyuL,cAAc,GAE3CrvJ,GADcp/B,EAAQyb,WAAa,CAAC,GACf2jB,OACrB8rO,EAAY9rO,GAAUA,EAAOxqB,MAAQwqB,EAAOjI,GAEhD,GAAI8zO,GAAsBC,EAAW,CACjC,IAAI9iP,EAAS,GAAGnR,OAAOqT,EAAWlC,QAAU,IAExCxT,EAAOpb,EAAM2d,UAAUioB,EAAOxqB,MAC9BuiB,EAAK39B,EAAM2d,UAAUioB,EAAOjI,IAC5Bg0O,EAAY,IAAI7nP,EAAQq7J,iBAAiBt9K,EAAW,CACpD62K,SAAU,OACXiwF,EAAU,CACTzvF,WAAY,CAAC9jK,EAAMuiB,KACnB39B,GAEJ8wB,EAAWlC,OAASgjP,EAAYD,EAAUr+M,QAAQv9C,IAAK4nB,GAAIlgB,OAAOmR,EACtE,CAEAm3M,EAAM3+N,GAAGsxO,gBAAgB9uO,KAAKvK,KAAMqpL,EACxC,EAEAmpF,oBAAqB,SAAS7tQ,GAC1B3E,KAAKo/J,UAAYz6J,EAAE2F,OACnBtK,KAAKmH,QAAUxC,EAAE2F,OAAOnD,QACxBnH,KAAKyyQ,WAAazyQ,KAAK4iB,UAAYje,EAAEie,UACrC5iB,KAAK0yQ,0BACT,EAEAA,yBAA0B,WACtB,IAAIT,EAAmBjyQ,KAAKmH,QAAQyb,UAChCovD,EAAWigM,EAAiBjgM,SAC5B2gM,EAAYV,EAAiBxgP,WAE7BkhP,IACA3yQ,KAAK4yQ,6BAA+B5yQ,KAAK4yQ,8BAAgC5yQ,KAAK6yQ,wBAAwBrpQ,KAAKxJ,MAC3GA,KAAK8yQ,qBAAuBnyQ,EAAMyN,KAAKE,WAClC84C,OAAOurN,GACPnpQ,KAAK0zC,EAAQl9C,KAAK4yQ,8BAElB97I,EAAQ9kD,KACVA,EAAWhyE,KAAKmH,QAAQ6qE,UAGvBA,GACAhyE,KAAK8yQ,qBAAqB1sM,QAGtC,EAEA2sM,qBAAsB,SAAS9jO,EAAQ7gC,GACnC,IAAIs4L,EAAUjC,EACV4mC,EAAep8L,EAAOznC,OAE1B,IAAKk/L,EAAW,EAAGA,EAAW2kC,EAAc3kC,KACxCjC,EAAgBx1J,EAAOy3J,IAELvhK,MAAQ4pO,GAAkB/uQ,KAAKqzO,YAAY5uC,KACzDA,EAAcr2L,KAAOA,EAGjC,EAEAykQ,wBAAyB,WACrB,IAGI91D,EAGA5D,EACA65D,EAPA1+F,EAAQt0K,KACR2nB,EAAW2sJ,EAAMlV,UACjButD,EAAer4C,EAAMntK,QAAQyuL,aAE7Bq9E,EAAatmD,EAAanlN,OAC1B4G,EAAOkmK,EAAMw+F,qBAAqBl7O,OAStC,IALA53B,KAAK+yQ,qBAAqBz+F,EAAMntK,QAAQ8nC,OAAQ7gC,GAC5CkmK,EAAMmlE,eACNz5O,KAAK+yQ,qBAAqBz+F,EAAMmlE,cAAerrO,GAG9C2uM,EAAS,EAAGA,EAASk2D,EAAYl2D,KAClC5D,EAAcwT,EAAa5P,IAEXnuH,MAAQkgL,IAChB31D,EAAY/2M,MAAQ2sQ,GACpBz6F,EAAM6nE,kBAAkBhjC,EAAa/qM,EAAM2uM,GAC3Ci2D,EAAiB75D,EAAYt5B,YAE7Bs5B,EAAYt5B,WAAamzF,GAKrC,GAAIrrP,EAASsgN,OAAQ,CACjB,IAAIrlN,EAAY5iB,KAAK4iB,UACrBA,EAAU66L,SACV76L,EAAUghN,aAELtvD,EAAMntK,QAAQsqB,YAAe6iJ,EAAMntK,QAAQsqB,YAAc6iJ,EAAM9jG,aAChE5tD,EAAUgtP,cAElB,CACJ,EAEAr2B,gBAAiB,WACb7S,EAAM3+N,GAAGwxO,gBAAgBhvO,KAAKvK,MAC1BA,KAAKo/J,WACLp/J,KAAKo/J,UAAUuyG,yBAEvB,EAEA/3B,eAAgB,WACZlT,EAAM3+N,GAAG6xO,eAAervO,KAAKvK,MAE7BA,KAAKwwE,YAAa,CACtB,EAEAt+C,WAAY,SAAS/qB,GACjBnH,KAAKkzQ,6BACLlzQ,KAAKgyQ,sBAAsB7qQ,GAC3BnH,KAAKo/J,UAAUkyG,mBACf5qC,EAAM3+N,GAAGmqB,WAAW3nB,KAAKvK,KAAMmH,EACnC,EAEAgsQ,mBAAoB,SAASxuQ,GACzB3E,KAAKyxB,WAAWlC,OAAOgjP,EAAY5tQ,EAAEoX,KAAMpX,EAAE25B,IACjD,EAEAwlI,iBAAkB,SAASnvJ,GACvB,GAAI8V,EAAQgL,QAAQ,kBAAmB9gB,GAAQ,CAC3C,IAAI8c,EAAazxB,KAAKyxB,WAEtB,OADyBA,GAAcA,EAAWtqB,QAAQ40D,iBAC7B/7D,KAAKmH,QAAQyb,UAAU6O,UACxD,CAEA,OAAOi1M,EAAM3+N,GAAG+7J,iBAAiBv5J,KAAKvK,KAAM2U,EAChD,EAEAu+P,2BAA4B,WACxB,IAAIE,EAAsBpzQ,KAAK8yQ,qBAC3BM,IACAA,EAAoBnpQ,OAAOizC,EAAQl9C,KAAK4yQ,qCACjC5yQ,KAAK8yQ,qBAEpB,EAEA9wQ,QAAS,WACL0kO,EAAM3+N,GAAG/F,QAAQuI,KAAKvK,MACtBA,KAAKkzQ,4BACT,IAKJ,SAASX,EAAYx2P,EAAMuiB,GACvB,MAAO,CAAC,CACJvY,MAAO,OAAQq9B,SAAU,MAAO16C,MAAOqT,GACxC,CACCgK,MAAO,OAAQq9B,SAAU,KAAM16C,MAAO41B,GAE9C,CARA7T,EAAQF,GAAG2M,OAAOk6O,EAUrB,CA5PD,CA4PGtwQ,OAAOH,MAAM+G,QASF/G,OASd,WAGAG,OAAOH,MAAM8pB,QAAU3pB,OAAOH,MAAM8pB,SAAW,CAAC,EAChD,IAAIA,EAAU9pB,MAAM8pB,QAChB62I,EAAY72I,EAAQ62I,UACpBolE,EAAQj8M,EAAQi8M,MAChB94I,EAAcnjE,EAAQmjE,YACtBplF,EAAaiiB,EAAQjiB,WAIrB6qQ,EAAkB5oP,EAAQ6sM,cAAcv0N,OAAO,CAC/Cy0N,YAAa,SAAShrB,EAAQ3xB,GAC1B,IACIroI,EADOxyC,KAAKm4K,SAASyd,aACLzuL,QAAQqrC,SACxB0+F,EAAQ1+F,EAAW,CACnBE,WAAY,OACZF,SAAU,UACV,CACAE,WAAY,SACZF,SAAU,UAWd,MAAO,CACH2pF,MAPA3pF,EACQ,IAAI/nB,EAAQqxG,MAAM97H,KAAKm4K,SAAS7+H,IAAI6kC,GAAI08F,EAAKt8F,SAASp6E,GAEtD,IAAIsmB,EAAQqxG,MAAM++C,EAAKt8F,SAASn5E,GAnBnC,GAwBL8rI,MAAOA,EAEf,EAEAumF,eAAgB,SAASt7F,EAAO0+C,GAC5B,OAAO76K,KAAKw3N,YAAY,CAAC,EAAG38C,EAChC,IAKAy4F,EAAe,CAAEhyG,EAAUy8B,IAAKz8B,EAAU48B,QAE9C,SAASxwL,EAAK6nC,GAEV,IADA,IAAI+d,EAAQ,GACH1pD,EAAM,EAAGA,EAAM2rC,EAAS/tC,OAAQoC,IAAO,CAC5C,IAAIi6B,EAAQ0R,EAAS3rC,GACrB0pD,EAAM1pD,GAAOi6B,EAAM12B,MAAME,QACzBw2B,EAAM12B,MAAME,QAAU,MAC1B,CAEA,OAAOimD,CACX,CAEA,SAAS7lD,EAAK8nC,EAAU+d,GACpB,IAAK,IAAI1pD,EAAM,EAAGA,EAAM2rC,EAAS/tC,OAAQoC,IACrC2rC,EAAS3rC,GAAKuD,MAAME,QAAUimD,EAAM1pD,EAE5C,CAEA,SAAS2pQ,EAAW7qQ,GAChB,OAAO+hB,EAAQ4qC,SAAS3sD,GAAS,CAAEA,GAAUA,CACjD,CAEA,IAAI8qQ,EAAY9sC,EAAM3jO,OAAO,CACzBukO,iBAAkB,SAASz7N,GACvB4e,EAAQpF,SAASxZ,EAAS,cAC9B,EAEA+6N,aAAc,SAAS/6N,GACnB66N,EAAM3+N,GAAG6+N,aAAar8N,KAAKvK,KAAM6L,GAEjC7L,KAAKyzQ,cAAgBpwQ,KAAKyN,MAAM88E,EAAY/hF,GAASE,MACzD,EAEA2mB,QAAS,WACL,IAAI7mB,EAAU7L,KAAK6L,QACfynD,EAAQ5lD,EAAK7B,EAAQ+3B,YAEzB5jC,KAAKyzQ,cAAgBpwQ,KAAKyN,MAAM88E,EAAY/hF,GAASE,OAErD0B,EAAK5B,EAAQ+3B,WAAY0vB,GAEzBozK,EAAM3+N,GAAG2qB,QAAQnoB,KAAKvK,KAC1B,EAEA6rO,cAAe,WACX,IAAIhK,EAAe7hO,KAAKmH,QACpBusQ,EAAQ1zQ,KAAKyoO,eACbkrC,EAAejmQ,EAAKgmQ,EAAM9vO,YAE1B3wB,EAAQtD,SAASkP,cAAc,QACnC5L,EAAM8L,UAAY,SAElB20P,EAAMz0P,YAAYhM,GAElB,IAAI9L,EAAUqB,EAAW,CACrBuD,MAAO/L,KAAK4zQ,WACZ5nQ,OAAQ4hF,EAAY8lL,GAAO1nQ,OAC3B0T,YAAamiN,EAAaniN,aAC3BmiN,EAAazpC,UAAW,CACvBy7E,QAAQ,EACR3iI,OAAO,IAgBX,OAbAtjD,EAAY8lL,EAAO,CACf3nQ,MAAO5E,EAAQ4E,MACfC,OAAQ7E,EAAQ6E,SAGpB0nQ,EAAMt0P,YAAYnM,GAElBxF,EAAKimQ,EAAM9vO,WAAY+vO,GAEnB3zQ,KAAK2hF,SACL3hF,KAAK2hF,QAAQx3D,SAGVhjB,CACX,EAEAshO,aAAc,WACV,IAAKzoO,KAAK0zQ,MAAO,CACb,IAAIA,EAAQ1zQ,KAAK0zQ,MAAQ/jQ,SAASkP,cAAc,QAChD7e,KAAK6L,QAAQoT,YAAYy0P,EAC7B,CACA,OAAO1zQ,KAAK0zQ,KAChB,EAEA9nC,gBAAiB,SAASE,GACtB,IAAI3zD,EAAWuuD,EAAM3+N,GAAG6jO,gBAAgBrhO,KAAKvK,KAAM8rO,GAGnD,OAFA9rO,KAAK4zQ,WAAa5zQ,KAAKyzQ,eAAiBzzQ,KAAK8zQ,gBAAgB37F,GAEtDA,CACX,EAEA27F,gBAAiB,SAAS37F,GAOtB,IANA,IAAIhxK,EAAUnH,KAAKmH,QACf4xC,EAAStuB,EAAQy4I,WAAW/7J,EAAQixL,UAAUr/I,QAC9C2gK,EAASvhC,EAASuhC,OAClBg6D,EAAQ1zQ,KAAKyoO,eACbzhL,EAAQ,EAEHz/C,EAAI,EAAGA,EAAImyM,EAAOlyM,OAAQD,IAAK,CACpC,IAAIwsQ,EAAer6D,EAAOnyM,GACtBulN,GAAeinD,EAAa5sQ,QAAQ8nC,QAAU,IAAI,GACtD,GAAK69K,EAAL,CAIA,GAAIA,EAAYpnN,OAAS47J,EAAUy8B,IAC/B,OAhHO,IAmHX,GAAI+uB,EAAYpnN,OAAS47J,EAAU48B,OAC/B,OAnHU,IAsHd,GAAI4uB,EAAYpnN,OAAS47J,EAAUs9B,IAC/B,OAAOhxG,EAAY8lL,GAAO1nQ,OAG9B,IAAI4pL,EAAem+E,EAAan+E,aAChC,GAAIA,EAAc,CACd,IAAImhB,EAAcnhB,EAAajU,oBACzBoyF,EAAa5sQ,QAAQggM,WAAa18K,EAAQgL,QAAQq3L,EAAYpnN,KAAM,CAAE47J,EAAU88B,OAAQ98B,EAAUo+B,kBAAqBq0E,EAAa1tE,cAAc7+L,OAAS,GAEjKw/C,EAAQ3jD,KAAK8V,IAAI6tC,EAAO+vJ,EAC5B,CApBA,CAqBJ,CAEA,IAAI/mM,EAAOg3C,EAAQ7/C,EAAQ6sQ,WAK3B,OAJIhkQ,EAAO,IACPA,GAAQ+oC,EAAOvsB,KAAOusB,EAAOtsB,OAG1Bzc,CACX,EAEAg7N,qBAAsB,SAAS7jO,GAC3B,OAAO,IAAIksQ,EAAgBrzQ,KAAK65L,UAAW1yL,EAC/C,IAGJqsQ,EAAUS,iBAAmB,SAAS5qF,GAClC,IAAIliL,EAAUosQ,EAAWlqF,GA6BzB,OA1BIliL,EADAsjB,EAAQxnB,QAAQkE,GACN,CAAEksL,eAAgB,CAAEjlL,KAAMjH,IAE1BqB,EAAW,CAAC,EAAGrB,IAGhB8nC,SACT9nC,EAAQ8nC,OAAS,CAAE,CAAE7gC,KAAMmlQ,EAAWpsQ,EAAQiH,SAGlD5F,EAAWrB,EAAS,CAChBksL,eAAgB,CACZ3tL,KAAMyB,EAAQzB,SAIlB+kB,EAAQgL,QAAQtuB,EAAQ8nC,OAAO,GAAGvpC,KAAM4tQ,IACxC7oP,EAAQgL,QAAQtuB,EAAQksL,eAAe3tL,KAAM4tQ,MAC7CnsQ,EAAUqB,EAAW,CAAC,EAAG,CACrBotL,aAAc,CACV0C,UAAW,CACPtrL,SAAS,KAGlB7F,IAGAA,CACX,EAEAsjB,EAAQu5I,kBAAkBwvG,EAAW,CACjCp7E,UAAW,CACPr/I,OAAQ,GAEZ48I,aAAc,CACV3oL,SAAS,EACTgsK,eAAgB,CACZhsK,SAAS,GAEbuzK,UAAW,CACPiI,aAAa,IAGrB6K,eAAgB,CACZ3tL,KAAM,OACN4tL,KAAM,CACF/tB,KAAM,CACFx5J,MAAO,KAGf0nL,IAAK,CACDt/C,OAAO,GAEX6D,QAAS,EACTjsI,MAAO,GACP+gK,QAAS,CACL9mB,SAAU,MAEd2lB,UAAW,CACP3+J,SAAS,GAEb0/J,OAAQ,CACJ3gK,MAAO,GAEXimL,QAAS,CACLhiL,KAAM,EACNhD,SAAS,IAGjBiyJ,QAAS,CACLjyJ,SAAS,EACT+xJ,QAAQ,GAEZ62B,aAAc,CACV0C,UAAW,CACPtrL,SAAS,EACTiyJ,QAAS,CACLjyJ,SAAS,KAIrB8oL,OAAQ,CACJ9oL,SAAS,GAEb0S,aAAa,EAEbs0P,WAAY,EAEZ34D,MAAO,CAAE,CAAEnhK,MAAM,MAGrBv5C,MAAM6H,WAAW7H,MAAM8pB,QAAS,CAC5B+oP,UAAWA,GAGd,CA9RD,GAgSA,SAAU7wQ,GAEV,IAAI8nB,EAAU9pB,MAAM8pB,QAChBi8M,EAAQj8M,EAAQF,GAAGm8M,MACnBwtC,EAAiBzpP,EAAQ+oP,UACzBv6B,EAAwBxuN,EAAQwuN,sBAEhCl2O,EAASJ,EAAEI,OAEXywQ,EAAY9sC,EAAM3jO,OAAO,CAEzBoF,KAAM,SAAS0D,EAASw9K,GACpB,IAAIliL,EAAUkiL,EACVliL,aAAmBxG,MAAMyN,KAAKD,kBAC9BhH,EAAU,CAAEksL,eAAgB,CAAEjlL,KAAMjH,KAGxCu/N,EAAM3+N,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAASqoQ,EAAeD,iBAAiB9sQ,GACtE,EAEAqzO,aAAc,SAASrzO,EAASw/N,GAC5B3mO,KAAKo/J,UAAY,IAAI80G,EAAel0Q,KAAK6L,QAAQ,GAAI1E,EAASw/N,EAAc,CACxEvwG,SAAU,IAAI6iH,EAAsBj5O,MACpCsK,OAAQtK,KACRogJ,IAAKpgJ,KAAKy6O,UAElB,EAEAvR,eAAgB,WACZ,OAAO,IAAIirC,EAAiBn0Q,KAAK6L,QAAS9I,EAAO,CAAC,EAAG/C,KAAKmH,QAAQ83J,QAAS,CACvE7e,IAAKpgJ,KAAKy6O,WAElB,EAEAtzO,QAAS,CACL/E,KAAM,YACNg2L,UAAW,CACPr/I,OAAQ,GAEZ48I,aAAc,CACV3oL,SAAS,EACTgsK,eAAgB,CACZhsK,SAAS,GAEbuzK,UAAW,CACPiI,aAAa,IAGrB6K,eAAgB,CACZ3tL,KAAM,OACN4tL,KAAM,CACF/tB,KAAM,CACFx5J,MAAO,KAGf0nL,IAAK,CACDt/C,OAAO,GAEX6D,QAAS,EACTjsI,MAAO,GACP+gK,QAAS,CACL9mB,SAAU,MAEd2lB,UAAW,CACP3+J,SAAS,GAEb0/J,OAAQ,CACJ3gK,MAAO,GAEXimL,QAAS,CACLhiL,KAAM,EACNhD,SAAS,IAGjBiyJ,QAAS,CACLjyJ,SAAS,EACT+xJ,QAAQ,GAEZ62B,aAAc,CACV0C,UAAW,CACPtrL,SAAS,EACTiyJ,QAAS,CACLjyJ,SAAS,KAIrB8oL,OAAQ,CACJ9oL,SAAS,GAEb0S,aAAa,EAEbs0P,WAAY,EAEZ34D,MAAO,CAAC,CACJnhK,MAAM,OAKlBzvB,EAAQF,GAAG2M,OAAOs8O,GAElB,IAAIW,EAAmB1pP,EAAQ87F,QAAQxjH,OAAO,CAC1CoE,QAAS,CACLmrF,UAAW,CACPhrE,SAAU,IAIlB02N,aAAc,WACNh+O,KAAK6L,SACL7L,KAAK6L,QAAQ6B,OAAOrB,QAE5B,IAGJoe,EAAQ0pP,iBAAmBA,CAE1B,CArHD,CAqHGrzQ,OAAOH,MAAM+G,QASF/G,OAEd,WAEI,IAAIA,EAAQG,OAAOH,MACf6H,EAAa7H,EAAM6H,WAMvB,IAAIwqC,EAAMrkC,KAAKqkC,IACVA,IACDA,EAAM,WACF,OAAO,IAAIrkC,MAAO1F,SACtB,GAkHJT,EAAW7H,EAAO,CACd6mH,KAAM,CACFx0E,IAAKA,EACLohO,UAxGR,SAAmB/+K,GACf,IAAIv+E,EAAS,GAEb,GAAIu+E,EAGA,IAFA,IAAI9kF,EAAQ5P,EAAMitB,UAAUynE,GAAKzqF,MAAM,KAE9BrD,EAAI,EAAGA,EAAIgJ,EAAM/I,OAAQD,IAC9BuP,EAAOnV,KAAK,SAAW4O,EAAMhJ,IAIrC,OAAOuP,EAAOjM,KAAK,IACvB,EA6FQwpQ,WAjHR,SAAoBrkQ,GAKhB,MAJoB,iBAATA,IACPA,GAAQ,MAGLA,CACX,EA4GQskQ,IA/HR,SAAa5rQ,GACT,OAAOA,EAAQA,CACnB,EA8HQ6rQ,cAhER,SAAuBriJ,GACnBA,EAAIA,EAAEr5G,cAWN,IAVA,IAAInN,EAAS,CACTnE,EAAG,EACHyK,EAAG,EACH5M,EAAG,GACHotH,EAAG,GACH9tH,EAAG,IACHF,EAAG,IACHQ,EAAG,KAEH0D,EAAQ,EAAGq3C,EAAO,EACbx4C,EAAI,EAAGA,EAAI2qH,EAAE1qH,SAAUD,EAAG,CAC/B,IAAIyK,EAAItG,EAAOwmH,EAAEpnH,OAAOvD,IACxB,IAAKyK,EACD,OAAO,KAEXtJ,GAASsJ,EACLA,EAAI+tC,IACJr3C,GAAS,EAAIq3C,GAEjBA,EAAO/tC,CACX,CACA,OAAOtJ,CACX,EAyCQkuH,cA9FR,SAAuBhE,GAkBnB,IAjBA,IAAIn6G,EAAW,CACX,EAAO,IAAW,GAAO,IAAW,IAAO,IAC3C,EAAO,KAAW,GAAO,KAAW,IAAO,KAC3C,EAAO,MAAW,GAAO,MAAW,IAAO,MAC3C,EAAO,KAAW,GAAO,KAAW,IAAO,KAC3C,EAAO,IAAW,GAAO,IAAW,IAAO,IAC3C,EAAO,KAAW,GAAO,KAAW,IAAO,KAC3C,EAAO,MAAW,GAAO,MAAW,IAAO,MAC3C,EAAO,OAAW,GAAO,OAAW,IAAO,OAC3C,EAAO,KAAW,GAAO,KAAW,IAAO,KAC3C,IAAO,KAEPY,EAAS,CAAE,IACA,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACzC,GAAM,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACzC,EAAM,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,GACpDw9G,EAAQ,GACLjE,EAAI,GACHA,EAAIv5G,EAAO,GACXA,EAAOjD,SAEPygH,GAASp+G,EAASY,EAAO,IACzBu5G,GAAKv5G,EAAO,IAGpB,OAAOw9G,CACX,EAoEQ29I,QAxCR,SAAiBhnN,GACb,IAAI1vB,EAAQr9B,OAAO2mD,OAAO,MAC1B,OAAO,WAEH,IADA,IAAI/2B,EAAK,GACA9oB,EAAID,UAAUE,SAAUD,GAAK,GAClC8oB,GAAM,IAAM/oB,UAAUC,GAE1B,OAAO8oB,KAAMyN,EAAQA,EAAMzN,GAAOyN,EAAMzN,GAAMm9B,EAAEplD,MAAMpI,KAAMsH,UAChE,CACJ,EAgCQmtQ,gBA9BR,SAAyBz8P,GACrB,OAAO08P,EAAkBnnQ,KAAKyK,EAClC,EA6BQ28P,SA3BR,SAAkBnnN,EAAG7/B,GACjB,IACI,OAAO6/B,EAAEjjD,KAAKojB,GAAK,SAASjlB,GACxB,MAAM,IAAIksQ,EAAOlsQ,EACrB,GACJ,CAAE,MAAMyjJ,GACJ,GAAIA,aAAcyoH,EACd,OAAOzoH,EAAGzjJ,MAEd,MAAMyjJ,CACV,CACA,SAASyoH,EAAOlsQ,GACZ1I,KAAK0I,MAAQA,CACjB,CACJ,KAiBA,IAAIgsQ,EAAoB,IAAIlmQ,OAAO,q2JAEtC,CA/ID,GAiJA,SAAU7L,EAAGC,GAET,IAAIQ,EAAOC,KACPoU,EAAMrU,EAAKqU,IACXy9I,EAAO9xJ,EAAK8xJ,KACZrhH,EAAQzwC,EAAKywC,MACbwmF,EAAMj3H,EAAKi3H,IACXlhH,EAAM/V,EAAK+V,IACXzC,EAAMtT,EAAKsT,IACX4jH,EAAMl3H,EAAKk3H,IACXjK,EAAMjtH,EAAKitH,IAEX1vH,EAAQG,OAAOH,MACfiH,EAAQjH,EAAMiH,MAEd6iB,EAAU9pB,EAAM8pB,QAChBjiB,EAAa7H,EAAM6H,WAEnBg/G,EAAO7mH,EAAM+pB,QAAQ88F,KACrBsP,EAAUtP,EAAKsP,QACfQ,EAAM9P,EAAK8P,IACXuB,EAAMrR,EAAKqR,IACXviH,EAAQkxG,EAAKlxG,MACb0iH,EAAiBxR,EAAKwR,eAEtBs7I,EAAM3zQ,EAAM6mH,KAAK8sJ,IAGjBO,EAAWjtQ,EAAM7E,OAAO,CACxBoF,KAAM,SAAS2sQ,EAAKC,GACS,IAArBztQ,UAAUE,QACVxH,KAAK80Q,IAAMA,EAAI,GACf90Q,KAAK+0Q,IAAMD,EAAI,KAEf90Q,KAAK80Q,IAAMA,EACX90Q,KAAK+0Q,IAAMA,EAEnB,EAEAC,oBAAqB,IACrBC,qBAAsB,MACtBC,mBAAoB,EACpBC,OAAQ,gBAERnhN,QAAS,WACL,MAAO,CAACh0D,KAAK80Q,IAAK90Q,KAAK+0Q,IAC3B,EAEA5jN,OAAQ,SAASikN,GACb,OAAOA,GAAOA,EAAIN,MAAQ90Q,KAAK80Q,KAAOM,EAAIL,MAAQ/0Q,KAAK+0Q,GAC3D,EAEA3tQ,MAAO,WACH,OAAO,IAAIytQ,EAAS70Q,KAAK80Q,IAAK90Q,KAAK+0Q,IACvC,EAEAz+P,MAAO,SAASC,GAGZ,OAFAvW,KAAK+0Q,IAAMz+P,EAAMtW,KAAK+0Q,IAAKx+P,GAC3BvW,KAAK80Q,IAAMx+P,EAAMtW,KAAK80Q,IAAKv+P,GACpBvW,IACX,EAEA2sB,KAAM,WAGF,OAFA3sB,KAAK+0Q,IAAM/0Q,KAAK+0Q,IAAM,IACtB/0Q,KAAK80Q,IAAM90Q,KAAK80Q,IAAM,GACf90Q,IACX,EAEAs8H,WAAY,SAASjkE,EAAMg9M,GACvB,OAAOr1Q,KAAKs1Q,cAAcj9M,EAAMg9M,GAAO72L,QAC3C,EAEA7wE,YAAa,SAAS6wE,EAAU+2L,EAASF,GACrCE,EAAU18I,EAAI08I,GACdF,EAAQA,GAAS5qP,EAAQ5P,IAAI26P,OAAOC,MAEpC,IAAIC,EAAU78I,EAAI74H,KAAK80Q,KACnBa,EAAU98I,EAAI74H,KAAK+0Q,KACnBa,EAAOp3L,EAAW79E,EAAM8pB,QAAQ5P,IAAI26P,OAAOC,MAAMvwQ,EAEjD4vQ,EAAM1xQ,EAAK2yI,KAAKzb,EAAIo7I,GAAWr7I,EAAIu7I,GACnBv7I,EAAIq7I,GAAWp7I,EAAIs7I,GAAQv7I,EAAIk7I,IAE/CR,EAAMY,EAAU9hO,EAAMymF,EAAIi7I,GAAWj7I,EAAIs7I,GAAQv7I,EAAIq7I,GAC/Br7I,EAAIu7I,GAAQt7I,EAAIo7I,GAAWp7I,EAAIw6I,IAE1D,OAAO,IAAID,EAASv9I,EAAIw9I,GAAMx9I,EAAIy9I,GACrC,EAEAO,cAAe,SAASj9M,EAAMg9M,GAI1B,GAHAh9M,EAAOw8M,EAASztN,OAAOiR,GACvBg9M,EAAQA,GAAS5qP,EAAQ5P,IAAI26P,OAAOC,OAE/Bp9M,GAAQr4D,KAAKoH,QAAQkP,MAAM,GAAG66C,OAAOkH,EAAKjxD,QAAQkP,MAAM,IACzD,MAAO,CACHkoE,SAAU,EACVq3L,YAAa,EACbC,UAAW,GAmCnB,IA5BA,IAeIC,EAKAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EA1BApxQ,EAAImwQ,EAAMnwQ,EACV+W,EAAIo5P,EAAMp5P,EACVuxC,EAAI6nN,EAAM7nN,EAEVjpD,EAAIs0H,EAAIxgE,EAAK08M,IAAM/0Q,KAAK+0Q,KAExBwB,EAAKrhH,GAAM,EAAI1nG,GAAK6iE,EAAIwI,EAAI74H,KAAK80Q,OACjC0B,EAAQl8I,EAAIi8I,GACZE,EAAQp8I,EAAIk8I,GAEZG,EAAKxhH,GAAM,EAAI1nG,GAAK6iE,EAAIwI,EAAIxgE,EAAKy8M,OACjC6B,EAAQr8I,EAAIo8I,GACZE,EAAQv8I,EAAIq8I,GAEZG,EAAStyQ,EAGTgD,EAAIvH,KAAKg1Q,oBACT8B,GAAY,GAURA,GAAavvQ,KAAM,GAAG,CAC1ByuQ,EAAY17I,EAAIu8I,GAChBZ,EAAY57I,EAAIw8I,GAChBX,EAAO9yQ,EAAKq7E,KACR61L,EAAIsC,EAAQZ,GAAa1B,EAAImC,EAAQE,EAAQH,EAAQI,EAAQX,IAIjEK,EAAQziO,EAAMqiO,EADdE,EAAOI,EAAQG,EAAQF,EAAQG,EAAQX,GAGvC,IAAIc,EAAON,EAAQG,EAAQZ,EAAYE,EAEvCG,EAAS,EACK,KAFdF,EAAQ,EAAI7B,EAAIyC,MAGZV,EAASD,EAAO,EAAII,EAAQG,EAAQR,GAGxCJ,EAAac,EACb,IAAI1c,EAAI3sM,EAAI,GAAK2oN,GAAS,EAAI3oN,GAAK,EAAI,EAAI2oN,IAC3CU,EAAStyQ,GAAK,EAAI41P,GAAK3sM,EAAIupN,GACvBT,EAAQnc,EAAI+b,GAAQG,EAASlc,EAAIic,GAAa,EAAI9B,EAAI+B,GAAZ,KAG9CS,EAAYr/P,EAAIo/P,EAASd,IAAe/1Q,KAAKi1Q,oBACjD,CAEA,IAAI+B,EAAKb,GAAS7B,EAAIpvQ,GAAKovQ,EAAIr4P,IAAMq4P,EAAIr4P,GACrCi+O,EAAI,EAAI8c,EAAK,OAAS,KAAOA,GAAaA,GAAM,IAAM,IAAMA,GAAxB,MACpCjuD,EAAIiuD,EAAK,MAAQ,IAAMA,GAAaA,GAAM,GAAK,GAAKA,GAAtB,MAC9BC,EAASluD,EAAImtD,GAAQG,EAASttD,EAAI,GAClCqtD,GAAa,EAAI9B,EAAI+B,GAAZ,GAAuBttD,EAAI,EAAIstD,GAAe,EAAI/B,EAAI4B,GAAZ,IAA2B,EAAI5B,EAAI+B,GAAZ,KAG1ER,EAAchiO,EAAM+iO,EAAQZ,EAAWS,EAAQE,EAAQH,EAAQI,EAAQX,GACvEH,EAAYjiO,EAAM4iO,EAAQT,GAAYQ,EAAQI,EAAQH,EAAQE,EAAQV,GAE1E,MAAO,CACHz3L,SAAUloE,EAAM2F,EAAIi+O,GAAKoc,EAAQW,GAASj3Q,KAAKk1Q,oBAC/CW,YAAav+I,EAAIu+I,GACjBC,UAAWx+I,EAAIw+I,GAEvB,IAIJjB,EAAS9sQ,GAAG0J,SAAW,WACnB,OAAO9Q,EAAMsQ,OAAOjR,KAAKm1Q,OAAQn1Q,KAAK80Q,IAAK90Q,KAAK+0Q,IACpD,EAEAF,EAASqC,WAAa,SAASC,GAC3B,OAAO,IAAItC,EAASsC,EAAG,GAAIA,EAAG,GAClC,EAEAtC,EAASuC,WAAa,SAASD,GAC3B,OAAO,IAAItC,EAASsC,EAAG,GAAIA,EAAG,GAClC,EAEAtC,EAASztN,OAAS,SAASliD,EAAG+W,GAC1B,GAAI66G,EAAQ5xH,GACR,OAAIA,aAAa2vQ,EACN3vQ,EAAEkC,QACmB,IAArBE,UAAUE,QAA6B,IAAbtC,EAAEsC,OAC5BqtQ,EAASuC,WAAWlyQ,GAEpB,IAAI2vQ,EAAS3vQ,EAAG+W,EAGnC,EAEA,IAAIo7P,EAASzvQ,EAAM7E,OAAO,CACtBoF,KAAM,SAASmvQ,EAAIC,GACfD,EAAKzC,EAASztN,OAAOkwN,GACrBC,EAAK1C,EAASztN,OAAOmwN,GAEjBD,EAAGvC,IAAM,IAAMwC,EAAGxC,IAAM,KACxBuC,EAAGxC,IAAM,GAAKyC,EAAGzC,IAAM,IACvB90Q,KAAKu3Q,GAAKD,EACVt3Q,KAAKs3Q,GAAKC,IAEVv3Q,KAAKu3Q,GAAKA,EACVv3Q,KAAKs3Q,GAAKA,EAElB,EAEA/hP,SAAU,SAAS6/O,GACf,IAAIkC,EAAKt3Q,KAAKs3Q,GACVC,EAAKv3Q,KAAKu3Q,GACVxC,EAAM/7I,EAAeo8I,EAAIL,IAAKK,EAAI,IAClCN,EAAM97I,EAAeo8I,EAAIN,IAAKM,EAAI,IAEtC,OAAOA,GACAL,EAAM,KAAOuC,EAAGvC,IAAM,KACtBA,EAAM,KAAOwC,EAAGxC,IAAM,KACtBD,EAAM,IAAMyC,EAAGzC,IAAM,IACrBA,EAAM,IAAMwC,EAAGxC,IAAM,EAChC,EAEAv2L,OAAQ,WACJ,IAAI+4L,EAAKt3Q,KAAKs3Q,GACVC,EAAKv3Q,KAAKu3Q,GAEVxC,EAAMuC,EAAGvC,KAAOwC,EAAGxC,IAAMuC,EAAGvC,KAAO,EACnCD,EAAMwC,EAAGxC,KAAOyC,EAAGzC,IAAMwC,EAAGxC,KAAO,EACvC,OAAO,IAAID,EAASC,EAAKC,EAC7B,EAEAyC,YAAa,SAASC,GAElB,IADA,IAAI3gQ,GAAS,EACJvP,EAAI,EAAGA,EAAIkwQ,EAAKjwQ,OAAQD,IAC7BuP,EAASA,GAAU9W,KAAKu1B,SAASkiP,EAAKlwQ,IAG1C,OAAOuP,CACX,EAEA4gQ,QAAS,SAAStC,GACd,IAAIkC,EAAKt3Q,KAAKs3Q,GACVC,EAAKv3Q,KAAKu3Q,GACVxC,EAAM/7I,EAAeo8I,EAAIL,IAAKK,EAAI,IAClCN,EAAM97I,EAAeo8I,EAAIN,IAAKM,EAAI,IAEtCkC,EAAGvC,IAAMr+P,EAAI4gQ,EAAGvC,IAAKA,GACrBuC,EAAGxC,IAAM37P,EAAIm+P,EAAGxC,IAAKA,GAErByC,EAAGxC,IAAM57P,EAAIo+P,EAAGxC,IAAKA,GACrBwC,EAAGzC,IAAMp+P,EAAI6gQ,EAAGzC,IAAKA,EACzB,EAEA6C,WAAY,SAASF,GACjB,IAAK,IAAIlwQ,EAAI,EAAGA,EAAIkwQ,EAAKjwQ,OAAQD,IAC7BvH,KAAK03Q,QAAQD,EAAKlwQ,GAE1B,EAEAqwQ,MAAO,WACH,IAAIN,EAAKt3Q,KAAKs3Q,GACVC,EAAKv3Q,KAAKu3Q,GAEd,MAAO,CAAED,GAAIt3Q,KAAKs3Q,GAAIhmN,GAAI,IAAIujN,EAASyC,EAAGxC,IAAKyC,EAAGxC,KAC1CwC,GAAIv3Q,KAAKu3Q,GAAIM,GAAI,IAAIhD,EAAS0C,EAAGzC,IAAKwC,EAAGvC,KACrD,EAEA/gN,QAAS,WACL,IAAIsjN,EAAKt3Q,KAAKs3Q,GACVC,EAAKv3Q,KAAKu3Q,GAEd,MAAO,CAACD,EAAI,IAAIzC,EAASyC,EAAGxC,IAAKyC,EAAGxC,KAC5BwC,EAAI,IAAI1C,EAAS0C,EAAGzC,IAAKwC,EAAGvC,KACxC,EAEAptG,SAAU,SAASmwG,GACf,OAAO93Q,KAAKw3Q,YAAYM,EAAO9jN,YACxB8jN,EAAON,YAAYx3Q,KAAKg0D,UACnC,IAGJqjN,EAAOU,MAAQ,IAAIV,EAAO,CAAC,IAAK,KAAM,EAAE,GAAI,MAE5CA,EAAOjwN,OAAS,SAASliD,EAAG+W,GACxB,OAAI/W,aAAamyQ,EACNnyQ,EACAA,GAAK+W,EACL,IAAIo7P,EAAOnyQ,EAAG+W,GACd/W,GAAkB,IAAbA,EAAEsC,SAAiByU,EACxB,IAAIo7P,EAAO,CAACnyQ,EAAE,GAAIA,EAAE,IAAK,CAACA,EAAE,GAAIA,EAAE,UADtC,CAGX,EAGAsD,EAAWiiB,EAAS,CAChB5P,IAAK,CACDw8P,OAAQA,EACRxC,SAAUA,IAIrB,CApTD,CAoTG/zQ,OAAOH,MAAM+G,QAEhB,WACI,IAAI/G,EAAQG,OAAOH,MACfywB,EAASzwB,EAAM4pB,GAAG6G,OAClBhhB,EAAWzP,EAAMyP,SAEjBo3G,EAAO7mH,EAAM+pB,QAAQ88F,KACrBwR,EAAiBxR,EAAKwR,eACtBlC,EAAUtP,EAAKsP,QAEfkhJ,EAAc5mP,EAAOruB,OAAO,CAC5BoF,KAAM,SAAS0D,EAAS1E,GACpBiqB,EAAOrpB,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAAS1E,GACnCnH,KAAKuI,aAAapB,GAClBnH,KAAKksD,MAAQ,GACblsD,KAAK6L,QAAQwZ,SAAS,yBAC1B,EAEAle,QAAS,CACL/E,KAAM,cACN83H,UAAW,gBACXg9G,aAAc,EAAGp2M,UAAWA,GAGhCvR,OAAQ,SAASuoP,EAAQrnO,GACrBzwC,KAAKi4Q,QAAUH,EACf93Q,KAAKqwQ,MAAQ5/N,EACbzwC,KAAK6mP,SACT,EAEAr5O,IAAK,SAAS2hC,GACN2nF,EAAQ3nF,KACY,iBAATA,IACPA,EAAO,CAAErO,KAAMqO,IAGnBnvC,KAAKksD,MAAMvqD,KAAKwtC,GAChBnvC,KAAK6mP,UAEb,EAEAx6O,OAAQ,SAASy0B,GAEb,IADA,IAAIhqB,EAAS,GACJvP,EAAI,EAAGA,EAAIvH,KAAKksD,MAAM1kD,OAAQD,IAAK,CACxC,IAAI4nC,EAAOnvC,KAAKksD,MAAM3kD,GAClB4nC,EAAKrO,OAASA,GACdhqB,EAAOnV,KAAKwtC,EAEpB,CAEAnvC,KAAKksD,MAAQp1C,EAEb9W,KAAK6mP,SACT,EAEArwL,MAAO,WACHx2D,KAAKksD,MAAQ,GACblsD,KAAK6L,QAAQ+gD,OACjB,EAEAi6L,QAAS,WAIL,IAHA,IAAI/vO,EAAS,GACTogO,EAAe9mO,EAASpQ,KAAKmH,QAAQ+vO,cAEhC3vO,EAAI,EAAGA,EAAIvH,KAAKksD,MAAM1kD,OAAQD,IAAK,CACxC,IAAI4nC,EAAOnvC,KAAKksD,MAAM3kD,GAClBu5B,EAAO9gC,KAAKk4Q,UAAU/oO,GACb,KAATrO,GACAhqB,EAAOnV,KAAKu1O,EAAa,CACrBp2M,KAAMA,IAGlB,CAEIhqB,EAAOtP,OAAS,EAChBxH,KAAK6L,QAAQ+gD,QACRzS,OAAOrjC,EAAOjM,KAAK7K,KAAKmH,QAAQ+yH,YAChCzsH,OAELzN,KAAK6L,QAAQ6B,MAErB,EAEAwqQ,UAAW,SAAS/oO,GAChB,IAAIrO,EAAO,GACPq3O,EAAcn4Q,KAAKo4Q,aAAajpO,EAAKkpO,QAASlpO,EAAKmpO,SACnDC,EAASv4Q,KAAKw4Q,QAAQrpO,EAAK2oO,QAM/B,OAJIK,GAAeI,IACfz3O,GAAQqO,EAAKrO,MAGVA,CACX,EAEAs3O,aAAc,SAAS1hQ,EAAKyC,GAOxB,OALAzC,EAAMsiH,EAAetiH,GAAM7D,OAAOukH,WAClCj+G,EAAM6/G,EAAe7/G,EAAKtG,OAAOukH,WAExBp3H,KAAKqwQ,MAAQ35P,GAAO1W,KAAKqwQ,MAAQl3P,CAG9C,EAEAq/P,QAAS,SAASllF,GACd,IAAIx8K,GAAS,EAMb,OAJIw8K,IACAx8K,EAASw8K,EAAK/9J,SAASv1B,KAAKi4Q,UAGzBnhQ,CACX,IAGJnW,EAAM8pB,QAAQF,GAAG2M,OAAO8gP,EAC3B,CApHD,CAoHGl3Q,OAAOH,MAAM+G,QAEhB,SAAU/E,GACN,IAAIhC,EAAQG,OAAOH,MACfywB,EAASzwB,EAAM4pB,GAAG6G,OAClBvG,EAAOlqB,EAAMkqB,KAKjB,SAAS4tP,EAAOl5O,GACb,MAAO,qGAAqGA,uBAAyBA,MAC7H5+B,EAAM4pB,GAAG+tE,KAAK,CAAEA,KAAM,aAAa/4D,IAAO64D,UAAW,kBACzD,WACP,CAEA,IAAIsgL,EAAUD,EAAO,MAAQA,EAAO,SAAWA,EAAO,QAAUA,EAAO,QAEnExJ,EAAY79O,EAAOruB,OAAO,CAC1BoF,KAAM,SAAS0D,EAAS1E,GACpBiqB,EAAOrpB,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAAS1E,GACnCnH,KAAKuI,aAAapB,GAElBnH,KAAK6L,QAAQwZ,SAAS,wBACT80B,OAAOu+N,GACP7uP,GAAG,uBAAc,YAAa7pB,KAAK+iF,OAAOv5E,KAAKxJ,OAE5D,IAAI+6H,EAAgB/6H,KAAK6L,QAAQc,SAASE,QAAQ,IAAMlM,EAAMijB,KAAK,QAAU,KAC7E5jB,KAAK24Q,SAAW59I,EAAcvzH,OAAS,EAAIuzH,EAAgB/6H,KAAK6L,QAChE7L,KAAK8xB,UAAU9xB,KAAK24Q,UAEpB34Q,KAAK4kH,SAAW5kH,KAAK4kH,SAASp7G,KAAKxJ,MACnCA,KAAK24Q,SAAS9uP,GAAG,UAAW7pB,KAAK4kH,SACrC,EAEAz9G,QAAS,CACL/E,KAAM,YACNw2Q,QAAS,GAGbvuQ,OAAQ,CACJ,OAGJs2E,QAAS,WACL3gF,KAAK24Q,SAASv/O,IAAI,UAAWp5B,KAAK4kH,SACtC,EAEAi0J,KAAM,SAASzzQ,EAAGjB,GACd,IAAIy0Q,EAAU54Q,KAAKmH,QAAQyxQ,QAC3B54Q,KAAKoK,QAAQ,MAAO,CAChBhF,EAAGA,EAAIwzQ,EACPz0Q,EAAGA,EAAIy0Q,GAEf,EAEA71L,OAAQ,SAASp+E,GACb,IAAIS,EAAI,EACJjB,EAAI,EACJs0Q,EAAS91Q,EAAEgC,EAAEg6E,eAEb85L,EAAOxrQ,GAAG,mBACV9I,EAAI,EACGs0Q,EAAOxrQ,GAAG,qBACjB9I,GAAK,EACEs0Q,EAAOxrQ,GAAG,sBACjB7H,EAAI,EACGqzQ,EAAOxrQ,GAAG,uBACjB7H,GAAK,GAGTpF,KAAK64Q,KAAKzzQ,EAAGjB,GACbQ,EAAEwE,gBACN,EAEAy7G,SAAU,SAASjgH,GACf,OAAQA,EAAEg+E,OACN,KAAK93D,EAAKQ,GACNrrB,KAAK64Q,KAAK,EAAG,GACbl0Q,EAAEwE,iBACF,MAEJ,KAAK0hB,EAAKU,KACNvrB,KAAK64Q,KAAK,GAAI,GACdl0Q,EAAEwE,iBACF,MAEJ,KAAK0hB,EAAKS,MACNtrB,KAAK64Q,KAAK,EAAG,GACbl0Q,EAAEwE,iBACF,MAEJ,KAAK0hB,EAAKO,KACNprB,KAAK64Q,MAAM,EAAG,GACdl0Q,EAAEwE,iBAGd,IAIJxI,EAAM8pB,QAAQF,GAAG2M,OAAO+3O,EAE3B,CArGD,CAqGGnuQ,OAAOH,MAAM+G,QAEhB,SAAU/E,GACN,IAAIhC,EAAQG,OAAOH,MACfywB,EAASzwB,EAAM4pB,GAAG6G,OAClBvG,EAAOlqB,EAAMkqB,KAGjB,SAAS4tP,EAAOl5O,EAAK+4D,GAClB,MAAO,4GAA4G/4D,kBAAoBA,uBAAyBA,MAAQ5+B,EAAM4pB,GAAG+tE,KAAK,CAAEA,KAAMA,EAAMF,UAAW,4BAClN,CAEA,IACIsgL,EAAUD,EAAO,KAAM,QAAUA,EAAO,MAAO,SAQ/CK,EAAc1nP,EAAOruB,OAAO,CAC5BoF,KAAM,SAAS0D,EAAS1E,GACpBiqB,EAAOrpB,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAAS1E,GACnCnH,KAAKuI,aAAapB,GAElBnH,KAAK6L,QAAQwZ,SAAS,6DACT80B,OAAOu+N,GACP7uP,GAAG,yBAAc,YAAa7pB,KAAK+iF,OAAOv5E,KAAKxJ,OAE5D,IAAI+6H,EAAgB/6H,KAAK6L,QAAQc,SAASE,QAAQ,IAAMlM,EAAMijB,KAAK,QAAU,KAC7E5jB,KAAK24Q,SAAW59I,EAAcvzH,OAAS,EAAIuzH,EAAgB/6H,KAAK6L,QAEhE7L,KAAK8xB,UAAU9xB,KAAK24Q,UAEpB34Q,KAAK4kH,SAAW5kH,KAAK4kH,SAASp7G,KAAKxJ,MACnCA,KAAK24Q,SAAS9uP,GAAG,UAAW7pB,KAAK4kH,SACrC,EAEAz9G,QAAS,CACL/E,KAAM,cACN22Q,SAAU,GAGd1uQ,OAAQ,CACJ,UAGJk1D,QAAS,SAAShgC,GACd,IAAIw5O,EAAW/4Q,KAAKmH,QAAQ4xQ,SAC5B/4Q,KAAKoK,QAAQ,SAAU,CACnB26B,MAAOxF,EAAMw5O,GAErB,EAEAh2L,OAAQ,SAASp+E,GACb,IACI46B,EAAM,EADG58B,EAAEgC,EAAEg6E,eAGN1xE,GAAG,iBACVsyB,GAAO,GAGXv/B,KAAKu/D,QAAQhgC,GACb56B,EAAEwE,gBACN,EAEAy7G,SAAU,SAASjgH,GACf,OAAQA,EAAEg+E,OACN,KAAK93D,EAAKmB,YACV,KAvDD,IAwDC,KAtDE,GAuDEhsB,KAAKu/D,QAAQ,GACb,MAEJ,KAAK10C,EAAKoB,aACV,KA5DA,IA6DA,KA3DG,IA4DCjsB,KAAKu/D,SAAS,GAG1B,IAKJ5+D,EAAM8pB,QAAQF,GAAG2M,OAAO4hP,EAE3B,CAtFD,CAsFGh4Q,OAAOH,MAAM+G,QAEhB,SAAU/E,EAAGC,GAET,IAAIQ,EAAOC,KACP6xJ,EAAO9xJ,EAAK8xJ,KACZk0D,EAAMhmN,EAAKgmN,IACXv/K,EAAMzmC,EAAKymC,IACXywF,EAAMl3H,EAAKk3H,IACXnpG,EAAM/tB,EAAK+tB,IACXk/F,EAAMjtH,EAAKitH,IAEX1vH,EAAQG,OAAOH,MACfiH,EAAQjH,EAAMiH,MAEd6iB,EAAU9pB,EAAM8pB,QAChBjiB,EAAa7H,EAAM6H,WAEnB4M,EAAIzU,EAAMghI,SACV7F,EAAQ1mH,EAAE0mH,MAGV+4I,EADMpqP,EAAQ5P,IACCg6P,SAEfrtJ,EAAO7mH,EAAM+pB,QAAQ88F,KACrBqR,EAAMrR,EAAKqR,IACXvB,EAAM9P,EAAK8P,IACXojD,EAAQlzD,EAAKgR,WAGbtB,EAAK9zH,EAAK8zH,GACV+I,EAAW/I,EAAK,EAChB8hJ,EAAW9hJ,EAAK,EAChBD,EAAaC,EAAK,IAGlBu+I,EAAQ,CACRvwQ,EAAG,QACH+W,EAAG,kBACHuxC,EAAG,qBACH7oD,EAAG,oBAIHs0Q,EAAWrxQ,EAAM7E,OAAO,CACxBoF,KAAM,SAAShB,GACXnH,KAAKuI,aAAapB,EACtB,EAEA+xQ,QAAS,IACTC,QAAS,cACTC,mBAAoB,GACpBC,oBAAqB,MAErBlyQ,QAAS,CACLmyQ,gBAAiB,EACjBjE,MAAOI,GAGX13N,QAAS,SAASq3N,EAAKmE,GACnB,IAAIC,EAAOx5Q,KACPmH,EAAUqyQ,EAAKryQ,QAEf+qH,EADQ/qH,EAAQkuQ,MACNnwQ,EACVu0Q,EAAOtyQ,EAAQmyQ,gBACfxE,EAAMp6F,EAAM06F,EAAIN,KAAM0E,EAAKL,QAASK,EAAKL,SACzCpE,EAAMwE,EAAQ7+F,EAAM06F,EAAIL,KAAMyE,EAAKN,QAASM,EAAKN,SAAW9D,EAAIL,IAChE3vQ,EAAIyzH,EAAIk8I,EAAM0E,GAAQvnJ,EACtB/tH,EAAIq1Q,EAAKE,YAAY5E,GAEzB,OAAO,IAAIh5I,EAAM12H,EAAGjB,EACxB,EAEAu1Q,YAAa,SAAS5E,GAClB,IAAIO,EAAQr1Q,KAAKmH,QAAQkuQ,MACrBsE,EAAMtE,EAAM1wQ,EACZutH,EAAImjJ,EAAMnwQ,EACVf,EAAI00H,EAAIi8I,GACR8E,EAAKvpJ,EAAI2oJ,EAAW70Q,EAAI,GACxB01Q,EAAMF,EAAMr/I,EAAIn2H,GAChB0uH,EAAIhpF,GAAK,EAAIgwO,IAAQ,EAAIA,GAAMF,EAAM,GAIzC,OAAOznJ,EAAI/gG,EAAIyoP,EAAK/mJ,EACxB,EAEA+yC,QAAS,SAASzpC,EAAOo9I,GACrB,IAAIC,EAAOx5Q,KACPmH,EAAUqyQ,EAAKryQ,QAEf+qH,EADQ/qH,EAAQkuQ,MACNnwQ,EACVu0Q,EAAOtyQ,EAAQmyQ,gBACfvE,EAAM54I,EAAM/2H,GAAK6xH,EAAa/E,GAAKunJ,EACnC3E,EAAMp6F,EAAM8+F,EAAKM,UAAU39I,EAAMh4H,IAAKq1Q,EAAKL,QAASK,EAAKL,SAM7D,OAJII,IACAxE,EAAMr6F,EAAMq6F,GAAMyE,EAAKN,QAASM,EAAKN,UAGlC,IAAIrE,EAASC,EAAKC,EAC7B,EAEA+E,UAAW,SAAS31Q,GAChB,IAOIoD,EAPAiyQ,EAAOx5Q,KACPq1Q,EAAQmE,EAAKryQ,QAAQkuQ,MACrBnjJ,EAAImjJ,EAAMnwQ,EACVy0Q,EAAMtE,EAAM1wQ,EACZo1Q,EAAOJ,EAAM,EACbC,EAAKxwD,GAAKjlN,EAAI+tH,GACd8nJ,EAAM/5I,EAAW,EAAIi1B,EAAK0kH,GAG9B,IAAKryQ,EAAI,EAAGA,GAAKiyQ,EAAKJ,mBAAoB7xQ,IAAK,CAC3C,IAAIsyQ,EAAMF,EAAMr/I,EAAI0/I,GAChBnnJ,EAAIhpF,GAAK,EAAIgwO,IAAQ,EAAIA,GAAME,GAC/BE,EAAOh6I,EAAW,EAAIi1B,EAAK0kH,EAAK/mJ,GAAKmnJ,EAIzC,GAFAA,GAAOC,EAEH72Q,EAAKqU,IAAIwiQ,IAAST,EAAKH,oBACvB,KAER,CAEA,OAAO/hJ,EAAI0iJ,EACf,IAMAE,EAAoBjB,EAASl2Q,OAAO,CACpCo2Q,QAAS,cAETO,YAAa,SAAS5E,GAClB,IAAI5iJ,EAAIlyH,KAAKmH,QAAQkuQ,MAAMnwQ,EACvBf,EAAI00H,EAAIi8I,GACR8E,EAAKvpJ,EAAI2oJ,EAAW70Q,EAAI,GAE5B,OAAO+tH,EAAI/gG,EAAIyoP,EACnB,EAEAE,UAAW,SAAS31Q,GAChB,IAAI+tH,EAAIlyH,KAAKmH,QAAQkuQ,MAAMnwQ,EACvB00Q,EAAKxwD,GAAKjlN,EAAI+tH,GAElB,OAAOoF,EAAI2I,EAAY,EAAIi1B,EAAK0kH,GACpC,IAGAO,EAAkBvyQ,EAAM7E,OAAO,CAC/Bg7C,QAAS,SAASq3N,GACd,OAAO,IAAIt5I,EAAMs5I,EAAIL,IAAKK,EAAIN,IAClC,EAEAlvG,QAAS,SAASzpC,GACd,OAAO,IAAI04I,EAAS14I,EAAMh4H,EAAGg4H,EAAM/2H,EACvC,IAIAg1Q,EAAWxyQ,EAAM7E,OAAO,CACxBoF,KAAM,WACF,IACIqxQ,EADMx5Q,KACKq6Q,MAAQ,IAAIH,EAEvBx1Q,EAAI1E,KAAK0E,EAAI,EAAIwyH,EAAKsiJ,EAAKryQ,QAAQkuQ,MAAMnwQ,EAG7ClF,KAAKs6Q,IAAMllQ,EAAEu+B,YAAYvD,UAAU,GAAK,IAAKL,MAAM,EAAIrrC,GAAI,EAAIA,GAG/D1E,KAAKu6Q,KAAOnlQ,EAAEu+B,YAAY5D,MAAMrrC,GAAIA,GAAG0rC,WAAW,IAAM,GAC5D,EAGAm1K,QAAS,SAAS6vD,EAAKrlO,EAAOwpO,GAG1B,OAFYv5Q,KAAKq6Q,MAAMt8N,QAAQq3N,EAAKmE,GAG/B5lO,UAAU3zC,KAAKs6Q,KACfvqO,MAAMA,GAAS,EACxB,EAEAyqO,WAAY,SAASr+I,EAAOpsF,EAAOwpO,GAM/B,OALAp9I,EAAQA,EACH/0H,QACA2oC,MAAM,GAAKA,GAAS,IACpB4D,UAAU3zC,KAAKu6Q,MAEbv6Q,KAAKq6Q,MAAMz0G,QAAQzpC,EAAOo9I,EACrC,IAiCJ/wQ,EAAWiiB,EAAS,CAChB5P,IAAK,CACD4/P,IAAK,CACDC,SAjCG9yQ,EAAM7E,OAAO,CACxBoF,KAAM,WACFnI,KAAKq6Q,MAAQ,IAAIpB,CACrB,EAEA1zD,QAAS,SAAS6vD,GACd,OAAOp1Q,KAAKq6Q,MAAMt8N,QAAQq3N,EAC9B,EAEAoF,WAAY,SAASr+I,GACjB,OAAOn8H,KAAKq6Q,MAAMz0G,QAAQzpC,EAC9B,IAuBQi+I,SAAUA,EACVO,SApBG/yQ,EAAM7E,OAAO,CACxBoF,KAAM,WACFnI,KAAKq6Q,MAAQ,IAAIF,CACrB,EAEA50D,QAAS,SAAS6vD,GACd,OAAOp1Q,KAAKq6Q,MAAMt8N,QAAQq3N,EAC9B,EAEAoF,WAAY,SAASr+I,GACjB,OAAOn8H,KAAKq6Q,MAAMz0G,QAAQzpC,EAC9B,KAWIq5I,OAAQ,CACJC,MAAOA,GAEXmF,YAAa,CACTT,gBAAiBA,EACjBlB,SAAUA,EACViB,kBAAmBA,KAKlC,CAjPD,CAiPGp5Q,OAAOH,MAAM+G,QAEhB,SAAU/E,EAAGC,GAET,IAAIjC,EAAQG,OAAOH,MACfiH,EAAQjH,EAAMiH,MAEd6iB,EAAU9pB,EAAM8pB,QAChBjiB,EAAa7H,EAAM6H,WAEnB6uQ,EAAS5sP,EAAQ5P,IAAIw8P,OAGrBvgJ,EADOn2H,EAAM+pB,QAAQ88F,KACNsP,QAoGnBtuH,EAAWiiB,EAAS,CAChB5P,IAAK,CACDggQ,OAAQ,CACJC,MApGAlzQ,EAAM7E,OAAO,CACrBoF,KAAM,SAAS0S,EAAK1T,GAChBnH,KAAKuI,aAAapB,GAClBnH,KAAK6a,IAAMA,EAEX7a,KAAK6L,QAAUlJ,EAAE,+BACbsJ,IAAI,CACD+tC,OAAUh6C,KAAKmH,QAAQ6yC,OACvBjjB,QAAW/2B,KAAKmH,QAAQ4vB,UAE3B7qB,SAAS2O,EAAIwzE,eAEjBruF,KAAK+6Q,aAAe/6Q,KAAK+6Q,aAAavxQ,KAAKxJ,MAC3CA,KAAKmtE,OAASntE,KAAKmtE,OAAO3jE,KAAKxJ,MAC/BA,KAAK0yB,QAAU1yB,KAAK0yB,QAAQlpB,KAAKxJ,MACjCA,KAAKg7Q,QAAUh7Q,KAAKg7Q,QAAQxxQ,KAAKxJ,MACjCA,KAAKi7Q,YAELj7Q,KAAKk7Q,oBACT,EAEAl5Q,QAAS,WACLhC,KAAKm7Q,aACT,EAEA1tQ,KAAM,WACFzN,KAAK61C,QACL71C,KAAKi7Q,YACLj7Q,KAAKo7Q,cAAa,EACtB,EAEA1tQ,KAAM,WACF1N,KAAKm7Q,cACLn7Q,KAAKq7Q,gBAAe,EACxB,EAEAxlO,MAAO,WACH71C,KAAK+6Q,eACL/6Q,KAAKmtE,QACT,EAEAA,OAAQ,WACJntE,KAAKo7Q,cACT,EAEAL,aAAcp4Q,EAAEQ,KAEhBuvB,QAAS/vB,EAAEQ,KAEX63Q,QAAS,WACLh7Q,KAAKo7Q,cACT,EAEAA,aAAc,WACV,IAAIj0Q,EAAUnH,KAAKmH,QAEfspC,EAAOzwC,KAAK6a,IAAI41B,OAChB6qO,GAAgBxkJ,EAAQ3vH,EAAQkxQ,UAAY5nO,GAAQtpC,EAAQkxQ,QAC5DkD,GAAgBzkJ,EAAQ3vH,EAAQmxQ,UAAY7nO,GAAQtpC,EAAQmxQ,QAE5DR,EAAST,EAAOjwN,OAAOjgD,EAAQ2wQ,QAC/B0D,GAAU1D,GAAUA,EAAOnwG,SAAS3nK,KAAK6a,IAAIi9P,UAEjD93Q,KAAKq7Q,eAAeC,GAAgBC,GAAgBC,EACxD,EAEAH,eAAgB,SAASruQ,GACrBhN,KAAK6L,QAAQI,IAAI,UAAWe,EAAU,GAAK,OAC/C,EAEAiuQ,UAAW,WACP,IAAIpgQ,EAAM7a,KAAK6a,IACf7a,KAAKm7Q,cACLtgQ,EAAIrR,KAAK,cAAexJ,KAAK+6Q,cAC7BlgQ,EAAIrR,KAAK,QAASxJ,KAAKmtE,QACvBtyD,EAAIrR,KAAK,SAAUxJ,KAAK0yB,SACxB7X,EAAIrR,KAAK,SAAUxJ,KAAKg7Q,QAC5B,EAEAG,YAAa,WACT,IAAItgQ,EAAM7a,KAAK6a,IACfA,EAAI5Q,OAAO,cAAejK,KAAK+6Q,cAC/BlgQ,EAAI5Q,OAAO,QAASjK,KAAKmtE,QACzBtyD,EAAI5Q,OAAO,SAAUjK,KAAK0yB,SAC1B7X,EAAI5Q,OAAO,SAAUjK,KAAKg7Q,QAC9B,EAEAE,mBAAoB,WAChB,IAAIt3P,EAAO5jB,KAAK6a,IAAI4gQ,YAEhB73P,GACAA,EAAKpW,IAAIxN,KAAKmH,QAAQs0Q,YAE9B,OAYP,CAvHD,CAuHG36Q,OAAOH,MAAM+G,QAEhB,SAAU/E,EAAGC,GAET,IAAIjC,EAAQG,OAAOH,MACfiH,EAAQjH,EAAMiH,MACd0G,EAAa3N,EAAMyN,KAAKE,WAExBmc,EAAU9pB,EAAM8pB,QAChBjiB,EAAa7H,EAAM6H,WAEnB4M,EAAIzU,EAAMghI,SAEVn9H,EAAI7D,EAAM+pB,QACV+lH,EAAQjsI,EAAEisI,MAEVnuG,EAAO99B,EAAEgjH,KAAKllF,KACdw0F,EAAUtyH,EAAEgjH,KAAKsP,QAEjBj8G,EAAM4P,EAAQ5P,IACdg6P,EAAWh6P,EAAIg6P,SACfiG,EAAQjgQ,EAAIggQ,OAAOC,MAGnBY,EAAaZ,EAAM/3Q,OAAO,CAC1BoF,KAAM,SAAS0S,EAAK1T,GAEhBnH,KAAK64Q,KAAO74Q,KAAK64Q,KAAKrvQ,KAAKxJ,MAE3B86Q,EAAM/yQ,GAAGI,KAAKoC,KAAKvK,KAAM6a,EAAK1T,GAE9BnH,KAAK2hF,QAAUn9E,EAAE0yI,QAAQ9vF,OAAOpnD,KAAK6L,QAAS,CAC1CE,MAAO8O,EAAIwzE,cAActiF,QACzBC,OAAQ6O,EAAIwzE,cAAcriF,WAG9BhM,KAAK27Q,YAEL37Q,KAAKy8C,QAAU,IAAI97C,EAAM4pB,GAAGo9D,QAAQ3nF,KAAK2hF,QAAQ91E,SACjD7L,KAAK47Q,SAAW,GAEhB57Q,KAAK+iF,OAAS/iF,KAAKq3I,SAAS,cAC5Br3I,KAAK2hF,QAAQn4E,KAAK,QAASxJ,KAAK+iF,QAEhC/iF,KAAK0mH,YAAc1mH,KAAKq3I,SAAS,mBACjCr3I,KAAK2hF,QAAQn4E,KAAK,aAAcxJ,KAAK0mH,aAErC1mH,KAAK2mH,YAAc3mH,KAAKq3I,SAAS,mBACjCr3I,KAAK2hF,QAAQn4E,KAAK,aAAcxJ,KAAK2mH,aAErC3mH,KAAKq5O,iBACT,EAEAlyO,QAAS,CACL6qE,UAAU,GAGdhwE,QAAS,WACL84Q,EAAM/yQ,GAAG/F,QAAQuI,KAAKvK,MAEtBA,KAAK2hF,QAAQ3/E,UACbhC,KAAKyxB,WAAWxnB,OAAO,SAAUjK,KAAK67Q,YAC1C,EAEAniC,cAAe,SAASjoN,GAChBzxB,KAAKyxB,YACLzxB,KAAKyxB,WAAWxnB,OAAO,SAAUjK,KAAK67Q,aAG1C77Q,KAAKyxB,WAAa9wB,EAAMyN,KAAKE,WAAW84C,OAAO31B,GAC/CzxB,KAAKyxB,WAAWjoB,KAAK,SAAUxJ,KAAK67Q,aAEhC77Q,KAAKmH,QAAQ6qE,UACbhyE,KAAKyxB,WAAW20C,OAExB,EAEA+G,OAAQ,WACJ2tM,EAAM/yQ,GAAGolE,OAAO5iE,KAAKvK,MACrBA,KAAK87Q,oBAED97Q,KAAK45D,OACL55D,KAAK+7Q,MAAM/7Q,KAAK45D,MAExB,EAEA+hN,UAAW,WACP37Q,KAAKygJ,MAAQ,IAAIhQ,EACjBzwI,KAAK2hF,QAAQ81D,KAAKz3I,KAAKygJ,MAC3B,EAEAs6H,aAAc,WACV/6Q,KAAK2hF,QAAQnrB,QACbx2D,KAAK27Q,WACT,EAEAjpP,QAAS,WACL1yB,KAAK2hF,QAAQ3xE,KAAKhQ,KAAK6a,IAAI7K,OAC/B,EAEAqpO,gBAAiB,WACb,IAAIs5B,EAAY3yQ,KAAKmH,QAAQsqB,WAC7BzxB,KAAK67Q,YAAc77Q,KAAK67Q,YAAYryQ,KAAKxJ,MACzCA,KAAKyxB,WAAanjB,EACb84C,OAAOurN,GACPnpQ,KAAK,SAAUxJ,KAAK67Q,aAErBlJ,GAAa3yQ,KAAKmH,QAAQ6qE,UAC1BhyE,KAAKyxB,WAAW20C,OAExB,EAEAy1M,YAAa,SAASl3Q,GAClB3E,KAAK45D,MAAQj1D,EAAE2F,OAAOstB,OACtB53B,KAAK+7Q,MAAM/7Q,KAAK45D,MACpB,EAEAmiN,MAAO,SAAS3tQ,GACZpO,KAAKg8Q,gBAEAh8Q,KAAKi8Q,UACNj8Q,KAAKi8Q,QAAU,IAAIC,EAAcl8Q,KAAK6a,IAAK7a,KAAKmH,QAAQgG,MAAOnN,OAInE,IADA,IAAIy2B,EAAY,IAAIg6G,EACXlpI,EAAI,EAAGA,EAAI6G,EAAK5G,OAAQD,IAAK,CAClC,IAAIu7I,EAAQ9iJ,KAAKi8Q,QAAQ7mP,MAAMhnB,EAAK7G,IAChCu7I,GACArsH,EAAU0jB,OAAO2oG,EAEzB,CAEA9iJ,KAAKygJ,MAAMjqF,QACXx2D,KAAKygJ,MAAMtmG,OAAO1jB,EACtB,EAEA0lP,aAAc,SAASr5H,GACnB,IAAIs5H,GAAY,EAKhB,GAJIt5H,aAAiBt+I,EAAE27H,SACnBi8I,EAAYtlJ,EAAQ92H,KAAKoyN,cAActvE,MAGtCs5H,EAAW,CACZ,IAAI/kP,EAAO,CAAE+pN,MAAOphP,KAAM8iJ,MAAOA,GACjCs5H,EAAYp8Q,KAAK6a,IAAIzQ,QAAQ,eAAgBitB,EACjD,CAEA,OAAO+kP,CACX,EAEAC,eAAgB,SAAS13Q,GACrBA,EAAEy8O,MAAQphP,KACVA,KAAK6a,IAAIzQ,QAAQ,sBAAuBzF,EAC5C,EAEAytN,cAAe,SAAStvE,GACpB,IAAIp6F,EAAS1oD,KAAK6a,IAAIm3K,QAAQxoL,KAAK,CAC/B6Z,SAAUy/H,EAAMz/H,UACjBy/H,EAAMrkF,UAMT,OAJI/V,GACA1oD,KAAK47Q,SAASj6Q,KAAK+mD,GAGhBA,CACX,EAEAszN,cAAe,WACX,IAAK,IAAIz0Q,EAAI,EAAGA,EAAIvH,KAAK47Q,SAASp0Q,OAAQD,IACtCvH,KAAK6a,IAAIm3K,QAAQ3lL,OAAOrM,KAAK47Q,SAASr0Q,IAE1CvH,KAAK47Q,SAAW,EACpB,EAEA/C,KAAM,WACG74Q,KAAKs8Q,WACNt8Q,KAAKs8Q,UAAW,EAChBt8Q,KAAK2hF,QAAQi2D,kBAErB,EAEAojI,QAAS,SAASr2Q,GACdm2Q,EAAM/yQ,GAAGizQ,QAAQzwQ,KAAKvK,KAAM2E,GAC5B3E,KAAK87Q,oBACL97Q,KAAK2hF,QAAQm2D,iBACb93I,KAAKs8Q,UAAW,CACpB,EAEAR,kBAAmB,WACf,IAAIjhQ,EAAM7a,KAAK6a,IACXy8P,EAAKz8P,EAAI0hQ,eAAe1hQ,EAAIi9P,SAASR,IAErCt3Q,KAAK2hF,QAAQvxC,YACbpwC,KAAK2hF,QAAQvxC,UAAUknO,GACvBt3Q,KAAKy8C,QAAQD,OAAO,CAAEp3C,EAAGkyQ,EAAGlyQ,EAAGjB,EAAGmzQ,EAAGnzQ,IAE7C,EAEAkzI,SAAU,SAASl3H,GACf,IAAIihO,EAAQphP,KACZ,OAAO,SAAS2E,GACZ,GAAIA,EAAEkH,QAAS,CACX,IAAIwrB,EAAO,CACP+pN,MAAOA,EACPt+F,MAAOn+I,EAAEkH,QACT0d,cAAe5kB,EAAE4kB,eAGrB63N,EAAMvmO,IAAIzQ,QAAQ+V,EAAOkX,EAC7B,CACJ,CACJ,EAEA4jP,UAAW,WACPH,EAAM/yQ,GAAGkzQ,UAAU1wQ,KAAKvK,MAExBA,KAAK6a,IAAIrR,KAAK,MAAOxJ,KAAK64Q,KAC9B,EAEAsC,YAAa,WACTL,EAAM/yQ,GAAGozQ,YAAY5wQ,KAAKvK,MAE1BA,KAAK6a,IAAI5Q,OAAO,MAAOjK,KAAK64Q,KAChC,IAGAqD,EAAgBt0Q,EAAM7E,OAAO,CAC7BoF,KAAM,SAASq0Q,EAASC,EAAcrmJ,GAClCp2H,KAAKo2H,SAAWA,EAChBp2H,KAAKw8Q,QAAUA,EACfx8Q,KAAKmN,MAAQsvQ,CACjB,EAEArnP,MAAO,SAAS+Z,GACZ,IAAI0O,EAAO,IAAI4yF,EACXisI,GAAS,EAcb,MAZkB,YAAdvtO,EAAKzpC,MACLg3Q,GAAS,EACT18Q,KAAK28Q,gBAAgB9+N,EAAM1O,EAAKwyF,SAAUxyF,GAC1CnvC,KAAK48Q,gBAAgB/+N,EAAM1O,IAE3BnvC,KAAK28Q,gBAAgB9+N,EAAM1O,EAAMA,GAGjCutO,GAAU7+N,EAAKtI,SAAS/tC,OAAS,IACjCq2C,EAAOA,EAAKtI,SAAS,IAGlBsI,CACX,EAEAg/N,cAAe,SAAS/5H,GACpB,IAAIs5H,GAAY,EAMhB,OAJIp8Q,KAAKo2H,UAAYp2H,KAAKo2H,SAAS+lJ,eAC/BC,EAAYp8Q,KAAKo2H,SAAS+lJ,aAAar5H,IAGpCs5H,CACX,EAEAQ,gBAAiB,SAASroN,EAAOkK,GACzBz+D,KAAKo2H,UAAYp2H,KAAKo2H,SAASimJ,gBAC/Br8Q,KAAKo2H,SAASimJ,eAAe,CACzB9nN,MAAOA,EACPkK,SAAUA,EACVjvD,WAAYivD,EAASjvD,YAGjC,EAEAmtQ,gBAAiB,SAASlmP,EAAWkrG,EAAUljE,GAC3C,IACIl3D,EACAgoC,EAFAi9J,EAAS7qE,EAASx6C,YAItB,OAAQw6C,EAASj8H,MACb,IAAK,aACD6pC,EAAOvvC,KAAK88Q,aAAarmP,EAAW,CAAC+1K,GAAS/tI,GAC9Cz+D,KAAK+8Q,aAAaxtO,GAClB,MAEJ,IAAK,kBACD,IAAKhoC,EAAI,EAAGA,EAAIilM,EAAOhlM,OAAQD,IAC3BgoC,EAAOvvC,KAAK88Q,aAAarmP,EAAW,CAAC+1K,EAAOjlM,IAAKk3D,GACjDz+D,KAAK+8Q,aAAaxtO,GAEtB,MAEJ,IAAK,UACDvvC,KAAK88Q,aAAarmP,EAAW+1K,EAAQ/tI,GACrC,MAEJ,IAAK,eACD,IAAKl3D,EAAI,EAAGA,EAAIilM,EAAOhlM,OAAQD,IAC3BvH,KAAK88Q,aAAarmP,EAAW+1K,EAAOjlM,GAAIk3D,GAE5C,MAEJ,IAAK,QACDz+D,KAAKg9Q,WAAWvmP,EAAW+1K,EAAQ/tI,GACnC,MAEJ,IAAK,aACD,IAAKl3D,EAAI,EAAGA,EAAIilM,EAAOhlM,OAAQD,IAC3BvH,KAAKg9Q,WAAWvmP,EAAW+1K,EAAOjlM,GAAIk3D,GAItD,EAEAs+M,aAAc,SAASxtO,GACnB,IAAI49F,EAAW59F,EAAK49F,UAChBA,EAAS3lI,OAAS,IAAM2lI,EAAS,GAAGh7C,SAAShhC,OAAO7uB,EAAK6qG,GAAUh7C,aACnE5iD,EAAKpoC,QAAQusB,KAAO,KAE5B,EAEAupP,WAAY,SAASxmP,EAAWqsH,GAK5B,OAJK9iJ,KAAK68Q,cAAc/5H,IACpBrsH,EAAU0jB,OAAO2oG,GAGdA,CACX,EAEAg6H,aAAc,SAASrmP,EAAWymP,EAAOz+M,GACrC,IAAIqkF,EAAQ9iJ,KAAKm9Q,cAAcD,GAG/B,OAFAp6H,EAAMrkF,SAAWA,EAEVz+D,KAAKi9Q,WAAWxmP,EAAWqsH,EACtC,EAEAq6H,cAAe,SAASD,GAIpB,IAHA,IACI3tO,EAAO,IADA2tO,EAAM11Q,OAAS,EAAIhD,EAAE4qI,UAAY5qI,EAAE+pI,MAC1BvuI,KAAKmN,OAEhB5F,EAAI,EAAGA,EAAI21Q,EAAM11Q,OAAQD,IAC9B,IAAK,IAAIwjC,EAAI,EAAGA,EAAImyO,EAAM31Q,GAAGC,OAAQujC,IAAK,CACtC,IAAIoxF,EAAQn8H,KAAKw8Q,QAAQD,eACrB1H,EAASqC,WAAWgG,EAAM31Q,GAAGwjC,KAGvB,IAANA,EACAwE,EAAKiN,OAAO2/E,EAAM/2H,EAAG+2H,EAAMh4H,GAE3BorC,EAAKs9F,OAAO1Q,EAAM/2H,EAAG+2H,EAAMh4H,EAEnC,CAGJ,OAAOorC,CACX,EAEAytO,WAAY,SAASvmP,EAAW+1K,EAAQ/tI,GACpC,IAAIp7C,EAAWwxP,EAASqC,WAAW1qE,GAC/BrwE,EAAQn8H,KAAKw8Q,QAAQD,eAAel5P,GAEpC4wI,EAAS,IAAI7+I,EAAE+qH,OAAOhE,EAAO,IAC7B2mB,EAAQ,IAAIt+I,EAAE27H,OAAO8zB,EAAQj0J,KAAKmN,OAItC,OAHA21I,EAAMrkF,SAAWA,EACjBqkF,EAAMz/H,SAAWA,EAEVrjB,KAAKi9Q,WAAWxmP,EAAWqsH,EACtC,IAIJt6I,EAAW7H,EAAMyN,KAAM,CACnBy4C,QAAS,CACLu2N,QAAS,CACL13Q,KAAM,OACN0I,KAAM,SAASA,GACX,MAAkB,sBAAdA,EAAK1I,KACE0I,EAAKivQ,SAGE,uBAAdjvQ,EAAK1I,KACE0I,EAAKkvQ,WAGTlvQ,CACX,IAGR64C,WAAY,CACRm2N,QAAS,CACLl4N,KAAM,CACFC,SAAU,YAM1B38C,EAAWiiB,EAAS,CAChB5P,IAAK,CACDggQ,OAAQ,CACJ/3H,MAAO44H,EACPA,WAAYA,GAEhBQ,cAAeA,IAI1B,CAnZD,CAmZGp7Q,OAAOH,MAAM+G,QAEhB,SAAU/E,EAAGC,GAET,IAAIjC,EAAQG,OAAOH,MACf6uB,EAAS7uB,EAAM6uB,OAEf/E,EAAU9pB,EAAM8pB,QAChBjiB,EAAa7H,EAAM6H,WAEnB4M,EAAIzU,EAAMghI,SACVn9H,EAAI7D,EAAM+pB,QAGVosG,EADOtyH,EAAEgjH,KACMsP,QAEfj8G,EAAM4P,EAAQ5P,IACdg6P,EAAWh6P,EAAIg6P,SAIf0I,EAHa1iQ,EAAIggQ,OAAOa,WAGC34Q,OAAO,CAChCoE,QAAS,CACL6qE,UAAU,EACVwrM,cAAe,WACfvrM,WAAY,QACZilI,QAAS,EACThjE,QAAS,IACTnkG,MAAO,OACP17B,OAAQ,UAGZ0nQ,MAAO,SAAS3tQ,GAGZ,GAFApO,KAAK2hF,QAAQnrB,QAEO,IAAhBpoD,EAAK5G,OAAT,CAIA,IAAIi2Q,EAAMz9Q,KAAKmH,QACX6iL,EAAWx6J,EAAOiuP,EAAIxrM,aAE1B7jE,EAAOA,EAAKvH,MAAM,IACbmV,MAAK,SAAS9W,EAAG+W,GAClB,OAAO+tK,EAAS/tK,GAAK+tK,EAAS9kL,EAClC,IAIA,IAFA,IACI6qC,EADA2tO,EAAY19Q,KAAK29Q,aAEZp2Q,EAAI,EAAGA,EAAI6G,EAAK5G,OAAQD,IAAK,CAClC,IAAIk3D,EAAWrwD,EAAK7G,GAChB8b,EAAWmM,EAAOiuP,EAAID,cAAXhuP,CAA0BivC,GACrC/1D,EAAQ8mB,EAAOiuP,EAAIxrM,WAAXziD,CAAuBivC,GAEnC,GAAIq4D,EAAQzzG,IAAayzG,EAAQpuH,GAAQ,CAChCqnC,IACDA,EAAQ,IAAI2tO,EAAU,CAAC,EAAGh1Q,GAAQ,CAAC+0Q,EAAIvmE,QAASumE,EAAIvpI,WAGxD7wH,EAAWwxP,EAASztN,OAAO/jC,GAC3B,IAAIk7D,EAASv+E,KAAK6a,IAAI0hQ,eAAel5P,GACjCrT,EAAO+/B,EAAMl1B,IAAInS,GAEjB2L,EAASrU,KAAK49Q,cAAc,CAC5Br/L,OAAQA,EACRvuE,KAAMA,EACN7C,MAAOswQ,EAAItwQ,MACXsxD,SAAUA,EACVp7C,SAAUA,IAGdhP,EAAOoqD,SAAWA,EAClBpqD,EAAOgP,SAAWA,EAClBhP,EAAO3L,MAAQA,EAEf1I,KAAK69Q,YAAYxpQ,EACrB,CACJ,CAxCA,CAyCJ,EAEAspQ,WAAY,WACR,IAAI5tO,EAAQ/vC,KAAKmH,QAAQ4oC,MAEzB,OAAIpvC,EAAMuI,WAAW6mC,GACVA,EAGJtlB,EAAQ5P,IAAIijQ,OAAO/tO,EAC9B,EAEA6tO,cAAe,SAASvmP,GACpB,IAAIhjB,EAASrU,KAAKmH,QAAQkN,OAK1B,OAJK1T,EAAMuI,WAAWmL,KAClBA,EAASoW,EAAQ5P,IAAIkjQ,QAAQ1pQ,IAG1BA,EAAOgjB,EAClB,EAEAwmP,YAAa,SAAS/6H,GAClB,IAAIzrH,EAAO,CAAE+pN,MAAOphP,KAAM8iJ,MAAOA,GACjB9iJ,KAAK6a,IAAIzQ,QAAQ,eAAgBitB,IAE7Cr3B,KAAK2hF,QAAQ81D,KAAKqL,EAE1B,IAGAk7H,EAAYr9Q,EAAMiH,MAAM7E,OAAO,CAC/BoF,KAAM,SAAS81Q,EAAQhqN,GACnBj0D,KAAKk+Q,QAAUD,EACfj+Q,KAAKizE,OAAShf,EAEd,IAAIkqN,EAAc96Q,KAAKo7E,KAAKw/L,EAAO,IAAM56Q,KAAKo7E,KAAKw/L,EAAO,IACtDG,EAAcnqN,EAAM,GAAKA,EAAM,GACnCj0D,KAAKq+Q,OAASD,EAAcD,CAChC,EAEAtjQ,IAAK,SAASnS,GACV,IAAI41Q,GAAOj7Q,KAAKo7E,KAAK/1E,GAASrF,KAAKo7E,KAAKz+E,KAAKk+Q,QAAQ,KAAOl+Q,KAAKq+Q,OACjE,OAAOr+Q,KAAKizE,OAAO,GAAKqrM,CAC5B,IAyBJ91Q,EAAWiiB,EAAS,CAChB5P,IAAK,CACDggQ,OAAQ,CACJlnF,OAAQ4pF,EACRA,YAAaA,GAEjBO,OAAQ,CACJr/L,KAAMu/L,GAEVD,QA/BM,CACV9pH,OAAQ,SAAS58H,GACb,IAAIknP,EAAM,IAAInpQ,EAAE+qH,OAAO9oG,EAAKknD,OAAQlnD,EAAKrnB,KAAO,GAChD,OAAO,IAAIxL,EAAE27H,OAAOo+I,EAAKlnP,EAAKlqB,MAClC,EAEAqxQ,OAAQ,SAASnnP,GACb,IAAIkY,EAAO,IAAI/qC,EAAE+pI,KAAKl3G,EAAKlqB,OACvBu+L,EAAWr0K,EAAKrnB,KAAO,EACvBuuE,EAASlnD,EAAKknD,OAQlB,OANAhvC,EAAKiN,OAAO+hC,EAAOn5E,EAAIsmM,EAAUntH,EAAOp6E,EAAIunM,GACvC7+D,OAAOtuD,EAAOn5E,EAAIsmM,EAAUntH,EAAOp6E,EAAIunM,GACvC7+D,OAAOtuD,EAAOn5E,EAAIsmM,EAAUntH,EAAOp6E,EAAIunM,GACvC7+D,OAAOtuD,EAAOn5E,EAAIsmM,EAAUntH,EAAOp6E,EAAIunM,GACvChmJ,QAEEnW,CACX,KAiBP,CA7JD,CA6JGzuC,OAAOH,MAAM+G,QAEhB,SAAU/E,EAAGC,GAET,IAAIQ,EAAOC,KAEP1C,EAAQG,OAAOH,MACfiH,EAAQjH,EAAMiH,MACdwI,EAAWzP,EAAMyP,SAEjBqa,EAAU9pB,EAAM8pB,QAChBjiB,EAAa7H,EAAM6H,WAGnBszH,EADIn7H,EAAMghI,SACA7F,MAEVg/I,EAAQrwP,EAAQ5P,IAAIggQ,OAAOC,MAE3BtzJ,EAAO7mH,EAAM6mH,KACb6sJ,EAAa7sJ,EAAK6sJ,WAElBoK,EAAc99Q,EAAM+pB,QAAQ88F,KAC5BlxG,EAAQmoQ,EAAYnoQ,MACpBokK,EAAQ+jG,EAAYjmJ,WAGpBkmJ,EAAY5D,EAAM/3Q,OAAO,CACzBoF,KAAM,SAAS0S,EAAK1T,GAChB2zQ,EAAM/yQ,GAAGI,KAAKoC,KAAKvK,KAAM6a,EAAK1T,GAES,iBAA5BnH,KAAKmH,QAAQw3Q,aACpB3+Q,KAAKmH,QAAQw3Q,WAAa3+Q,KAAKmH,QAAQw3Q,WAAW/zQ,MAAM,KAG5D,IAAIg0Q,EAAW5+Q,KAAK6+Q,YACpB7+Q,KAAK+5D,MAAQ,IAAI6kN,EAAS5+Q,KAAK6L,QAAS7L,KAAKmH,QACjD,EAEAnF,QAAS,WACL84Q,EAAM/yQ,GAAG/F,QAAQuI,KAAKvK,MAEtBA,KAAK+5D,MAAM/3D,UACXhC,KAAK+5D,MAAQ,IACjB,EAEAghN,aAAc,WACV,IAAIlgQ,EAAM7a,KAAK6a,IACXm+B,EAASn+B,EAAIikQ,gBAAgBjkQ,EAAIi9P,SAASR,IAAIhhQ,QAClDtW,KAAK+5D,MAAMglN,WAAW/lO,EAC1B,EAEAm0B,OAAQ,SAASxoE,GACb,IAAIq6Q,EAGAA,EADAr6Q,EACYA,EAAEq6Q,UAEF,GAGhBlE,EAAM/yQ,GAAGolE,OAAO5iE,KAAKvK,MACrBA,KAAKi/Q,cACLj/Q,KAAK+5D,MAAMlkB,MAAMmpO,EACrB,EAEAH,UAAW,WACP,OAAOK,CACX,EAEAjE,UAAW,WACPH,EAAM/yQ,GAAGkzQ,UAAU1wQ,KAAKvK,MAEnBW,EAAM4C,QAAQggB,WACVvjB,KAAK64Q,OACN74Q,KAAK64Q,KAAOl4Q,EAAM0kC,SACdrlC,KAAK6mP,QAAQr9O,KAAKxJ,MAClB,MAIRA,KAAK6a,IAAIrR,KAAK,MAAOxJ,KAAK64Q,MAElC,EAEAsC,YAAa,WACTL,EAAM/yQ,GAAGozQ,YAAY5wQ,KAAKvK,MAEtBA,KAAK64Q,MACL74Q,KAAK6a,IAAI5Q,OAAO,MAAOjK,KAAK64Q,KAEpC,EAEAoG,YAAa,WACT,IAAIrnP,EAAO53B,KAAK+5D,MACZl/C,EAAM7a,KAAK6a,IACXi9P,EAASj9P,EAAIi9P,SACbqH,EAAgB,CACZ7H,GAAIz8P,EAAIikQ,gBAAgBhH,EAAOR,IAAIhhQ,QACnCihQ,GAAI18P,EAAIikQ,gBAAgBhH,EAAOP,IAAIjhQ,SAG3CshB,EAAK2mD,OAAO1jE,EAAIikQ,gBAAgBjkQ,EAAI0jE,WACpC3mD,EAAKkgP,OAAOqH,GACZvnP,EAAK6Y,KAAK51B,EAAI41B,OAClB,EAEA/d,QAAS,WACL1yB,KAAK6mP,SACT,EAEAm0B,QAAS,SAASr2Q,GACdm2Q,EAAM/yQ,GAAGizQ,QAAQzwQ,KAAKvK,KAAM2E,GAC5B3E,KAAK6mP,SACT,EAEAA,QAAS,WACL7mP,KAAKi/Q,cACLj/Q,KAAK+5D,MAAM5pD,QACf,IAGA+uQ,EAAWt3Q,EAAM7E,OAAO,CACxBoF,KAAM,SAAS0D,EAAS1E,GACpBnH,KAAK6L,QAAUA,EACf7L,KAAKuI,aAAapB,GAElBnH,KAAKo/Q,KAAO,IAAIC,CACpB,EAEAl4Q,QAAS,CACLm4Q,SAAU,IACVX,WAAY,CAAC,IAAK,IAAK,KACvBY,YAAa,IAAM,IAGvBhhM,OAAQ,SAASA,GACbv+E,KAAKw/Q,QAAUjhM,CACnB,EAEAu5L,OAAQ,SAASA,GACb93Q,KAAKi4Q,QAAUH,CACnB,EAEAiH,WAAY,SAAS/lO,GACjBh5C,KAAKy/Q,YAAczmO,CACvB,EAEAvI,KAAM,SAASA,GACXzwC,KAAKqwQ,MAAQ5/N,CACjB,EAEAivO,iBAAkB,SAASvjJ,GACvB,OAAO,IAAIL,EACP14H,EAAK0N,MAAMqrH,EAAM/2H,EAAIpF,KAAKmH,QAAQm4Q,UAClCl8Q,EAAK0N,MAAMqrH,EAAMh4H,EAAInE,KAAKmH,QAAQm4Q,UAE1C,EAEAK,UAAW,WACP,IAAI3vQ,EAAOhQ,KAAKgQ,OACZ4vQ,EAAiB5/Q,KAAK0/Q,iBAAiB1/Q,KAAKi4Q,QAAQX,IACpDA,EAAKt3Q,KAAKi4Q,QAAQX,GAClBn7I,EAAQn8H,KAAK6/Q,aAAaD,GAAgBxvO,WAAWknO,EAAGlyQ,GAAIkyQ,EAAGnzQ,GAEnE,MAAO,CACHiB,EAAGhC,EAAK8jE,MAAM9jE,EAAKqU,IAAI0kH,EAAM/2H,GAAK4K,EAAKjE,OAAS/L,KAAKmH,QAAQm4Q,UAC7Dn7Q,EAAGf,EAAK8jE,MAAM9jE,EAAKqU,IAAI0kH,EAAMh4H,GAAK6L,EAAKhE,QAAUhM,KAAKmH,QAAQm4Q,UAEtE,EAEAtvQ,KAAM,WACF,IAAIsnQ,EAAKt3Q,KAAKi4Q,QAAQX,GAElBv4O,EADK/+B,KAAKi4Q,QAAQV,GACRnwQ,QAAQgpC,WAAWknO,EAAGlyQ,GAAIkyQ,EAAGnzQ,GAE3C,MAAO,CACH4H,MAAOgzB,EAAK35B,EACZ4G,OAAQ+yB,EAAK56B,EAErB,EAEA07Q,aAAc,SAASvmQ,GACnB,IAAIlU,EAAIkU,EAAMlU,EAAGjB,EAAImV,EAAMnV,EAE3B,OAAO,IAAI23H,EACP12H,EAAIpF,KAAKmH,QAAQm4Q,SACjBn7Q,EAAInE,KAAKmH,QAAQm4Q,SAEzB,EAEAQ,cAAe,WACX,IAAInB,EAAa3+Q,KAAKmH,QAAQw3Q,WAE9B,OAAOA,EAAW3+Q,KAAK+/Q,iBAAmBpB,EAAWn3Q,OACzD,EAEAxF,QAAS,WACLhC,KAAK6L,QAAQ+gD,QACb5sD,KAAKo/Q,KAAKxyN,OACd,EAEA/W,MAAO,SAASmpO,GACZh/Q,KAAKggR,WAAahB,EAClBh/Q,KAAKo/Q,KAAKvpO,QACV71C,KAAK+/Q,eAAiB,EACtB//Q,KAAKmQ,QACT,EAEAA,OAAQ,WACJ,IAEI8vQ,EAAM76Q,EAAGjB,EAFT6L,EAAOhQ,KAAK2/Q,YACZC,EAAiB5/Q,KAAK0/Q,iBAAiB1/Q,KAAKi4Q,QAAQX,IAGxD,IAAKlyQ,EAAI,EAAGA,EAAI4K,EAAK5K,EAAGA,IACpB,IAAKjB,EAAI,EAAGA,EAAI6L,EAAK7L,EAAGA,KACpB87Q,EAAOjgR,KAAKkgR,WAAW,CACnB96Q,EAAGw6Q,EAAex6Q,EAAIA,EACtBjB,EAAGy7Q,EAAez7Q,EAAIA,KAGhB6I,SACNizQ,EAAKxyQ,MAIrB,EAEAyyQ,WAAY,SAASC,GACjB,IAAIh5Q,EAAUnH,KAAKogR,YAAYD,GAC3BF,EAAOjgR,KAAKo/Q,KAAKnvP,IAAIjwB,KAAKw/Q,QAASr4Q,GAKvC,OAJqC,IAAjC84Q,EAAKp0Q,QAAQc,SAASnF,QACtBxH,KAAK6L,QAAQsuC,OAAO8lO,EAAKp0Q,SAGtBo0Q,CACX,EAEAG,YAAa,SAASD,GAClB,IAAI7mQ,EAAQtZ,KAAKqgR,UAAUF,GACvBhkJ,EAAQn8H,KAAK6/Q,aAAaM,GAC1BnnO,EAASh5C,KAAKy/Q,YACd3hQ,EAASq+G,EAAM/0H,QAAQgpC,WAAW4I,EAAO5zC,GAAI4zC,EAAO70C,GAExD,MAAO,CACHmV,MAAOA,EACP6mQ,aAAcA,EACdhkJ,MAAOA,EACPr+G,OAAQwiQ,EAAWxiQ,GACnB2yB,KAAMzwC,KAAKqwQ,MACXrgQ,KAAMhQ,KAAKmH,QAAQm4Q,SACnBiB,UAAWvgR,KAAK8/Q,gBAChBP,YAAav/Q,KAAKmH,QAAQo4Q,YAC1BiB,iBAAkBxgR,KAAKmH,QAAQq5Q,iBAC/BxB,UAAWh/Q,KAAKggR,WAExB,EAEAK,UAAW,SAAS/mQ,GAChB,IAAImsC,EAAWriD,EAAKymC,IAAI,EAAG7pC,KAAKqwQ,OAChC,MAAO,CACHjrQ,EAAGpF,KAAKygR,UAAUnnQ,EAAMlU,EAAGqgD,GAC3BthD,EAAGu2K,EAAMphK,EAAMnV,EAAG,EAAGshD,EAAW,GAExC,EAEAg7N,UAAW,SAAS/3Q,EAAO+8C,GACvB,IAAI0kI,EAAa/mL,EAAKqU,IAAI/O,GAAS+8C,EAOnC,OALI/8C,EADAA,GAAS,EACDyhL,EAEA1kI,GAA0B,IAAd0kI,EAAkB1kI,EAAW0kI,EAIzD,IAGAu2F,EAAY94Q,EAAM7E,OAAO,CACzBoF,KAAM,SAASkoB,EAAIlpB,GACfnH,KAAKqwB,GAAKA,EACVrwB,KAAKgN,SAAU,EAEfhN,KAAKuI,aAAapB,GAClBnH,KAAK6e,gBACL7e,KAAKyN,MACT,EAEAtG,QAAS,CACLo4Q,YAAa,IAAM,GACnBiB,iBAAkB,IAAM,IAG5B3hQ,cAAe,WACX7e,KAAK6L,QAAUlJ,EAAE,aAAe3C,KAAKmH,QAAQ63Q,UAAY,QACxC/yQ,IAAI,CAAEqB,SAAU,WAAYD,QAAS,QAAStB,MAAO/L,KAAKmH,QAAQ6I,KAAMhE,OAAQhM,KAAKmH,QAAQ6I,OAC7F6Z,GAAG,QAAS,SAAUllB,GACf3E,KAAK2gR,WACLh8Q,EAAE0C,OAAOse,aAAa,MAAO3lB,KAAK2gR,YAElCh8Q,EAAE0C,OAAO8gC,gBAAgB,MAEhC,EAAE3+B,KAAKxJ,MAC5B,EAEAyN,KAAM,WACF,IAAI5B,EAAU7L,KAAK6L,QAAQ,GAC3BA,EAAQsB,MAAM+X,IAAMmvP,EAAWr0Q,KAAKmH,QAAQ2W,OAAO3Z,GACnD0H,EAAQsB,MAAMqf,KAAO6nP,EAAWr0Q,KAAKmH,QAAQ2W,OAAO1Y,GAEpD,IAAI4pB,EAAMhvB,KAAKgvB,MACXA,GACAnjB,EAAQ8Z,aAAa,MAAOqJ,GAGhCnjB,EAAQsB,MAAM+gF,WAAa,UAC3BluF,KAAKgN,SAAU,CACnB,EAEAU,KAAM,WACF1N,KAAK6L,QAAQ,GAAGsB,MAAM+gF,WAAa,SACnCluF,KAAKgN,SAAU,CACnB,EAEAgiB,IAAK,WAGD,OAFgB5e,EAASpQ,KAAKmH,QAAQo4Q,YAE/BqB,CAAU5gR,KAAK6gR,aAC1B,EAEAF,SAAU,WAGN,OAFgBvwQ,EAASpQ,KAAKmH,QAAQq5Q,iBAE/BI,CAAU5gR,KAAK6gR,aAC1B,EAEAA,WAAY,WACR,IAAI15Q,EAAUnH,KAAKmH,QACnB,MAAO,CACHspC,KAAMtpC,EAAQspC,KACd8vO,UAAWp5Q,EAAQo5Q,UACnBj7Q,EAAG6B,EAAQspC,KACXrrC,EAAG+B,EAAQmS,MAAMlU,EACjBjB,EAAGgD,EAAQmS,MAAMnV,EACjBc,EAAGkC,EAAQo5Q,UACXO,QAAS35Q,EAAQ25Q,QACjB18Q,EAAG+C,EAAQ25Q,QACXjtQ,QAAS1M,EAAQ0M,QACjBnP,EAAGyC,EAAQ0M,QAEnB,EAEA7R,QAAS,WACDhC,KAAK6L,UACL7L,KAAK6L,QAAQQ,SACbrM,KAAK6L,QAAU,KAEvB,IAGAwzQ,EAAWz3Q,EAAM7E,OAAO,CACxBoF,KAAM,WACFnI,KAAKi2I,OAAS,EAClB,EAEA9uI,QAAS,CACL+sI,QAAS,KAGbjkH,IAAK,SAASsuD,EAAQp3E,GAKlB,OAJInH,KAAKi2I,OAAOzuI,QAAUxH,KAAKmH,QAAQ+sI,SACnCl0I,KAAK4mI,QAAQroD,GAGVv+E,KAAK+gR,QAAQ55Q,EACxB,EAEAylD,MAAO,WAEH,IADA,IAAIV,EAAQlsD,KAAKi2I,OACR1uI,EAAI,EAAGA,EAAI2kD,EAAM1kD,OAAQD,IAC9B2kD,EAAM3kD,GAAGvF,UAGbhC,KAAKi2I,OAAS,EAClB,EAEApgG,MAAO,WAEH,IADA,IAAIqW,EAAQlsD,KAAKi2I,OACR1uI,EAAI,EAAGA,EAAI2kD,EAAM1kD,OAAQD,IAC9B2kD,EAAM3kD,GAAGmG,MAEjB,EAEAqzQ,QAAS,SAAS55Q,GAad,IAZA,IACI84Q,EADA/zN,EAAQlsD,KAAKi2I,OAKb5lH,EAAKm3F,EAAKoN,QACVztH,EAAQg1H,MAAM1qH,WACdtK,EAAQ2W,OAAOrM,WACftK,EAAQspC,KACRtpC,EAAQo4Q,aAGHh4Q,EAAI,EAAGA,EAAI2kD,EAAM1kD,OAAQD,IAC9B,GAAI2kD,EAAM3kD,GAAG8oB,KAAOA,EAAI,CACpB4vP,EAAO/zN,EAAM3kD,GACb,KACJ,CAUJ,OAPI04Q,EACAA,EAAKxyQ,QAELwyQ,EAAO,IAAIS,EAAUrwP,EAAIlpB,GACzBnH,KAAKi2I,OAAOt0I,KAAKs+Q,IAGdA,CACX,EAEAr5I,QAAS,SAASroD,GAKd,IAJA,IAAIryB,EAAQlsD,KAAKi2I,OACb+qI,GAAW,EACX1nQ,GAAS,EAEJ/R,EAAI,EAAGA,EAAI2kD,EAAM1kD,OAAQD,IAAK,CACnC,IAAI8hK,EAAOn9G,EAAM3kD,GAAGJ,QAAQg1H,MAAMG,WAAW/9C,GACzC8qF,EAAO23G,IAAY90N,EAAM3kD,GAAGyF,UAC5BsM,EAAQ/R,EACRy5Q,EAAU33G,EAElB,EAEe,IAAX/vJ,IACA4yC,EAAM5yC,GAAOtX,UACbkqD,EAAM1hD,OAAO8O,EAAO,GAE5B,IAIJ,SAASgnQ,EAAWnkJ,GAChB,OAAO,IAAIL,EAAMxlH,EAAM6lH,EAAM/2H,GAAIkR,EAAM6lH,EAAMh4H,GACjD,CAGAqE,EAAWiiB,EAAS,CAChB5P,IAAK,CACDggQ,OAAQ,CACJoF,KAAMvB,EACNA,UAAWA,EAEXgC,UAAWA,EACXrB,SAAUA,EACVH,SAAUA,KAKzB,CA3cD,CA2cGp+Q,OAAOH,MAAM+G,QAEhB,SAAU/E,EAAGC,GAET,IAAIjC,EAAQG,OAAOH,MAEf8pB,EAAU9pB,EAAM8pB,QAChBjiB,EAAa7H,EAAM6H,WACnBsuH,EAAUn2H,EAAM+pB,QAAQ88F,KAAKsP,QAE7BugJ,EAAS5sP,EAAQ5P,IAAIw8P,OACrBxC,EAAWpqP,EAAQ5P,IAAIg6P,SACvB6J,EAAYj0P,EAAQ5P,IAAIggQ,OAAO6D,UAC/BQ,EAAWz0P,EAAQ5P,IAAIggQ,OAAOqE,SAG9B+B,EAAYvC,EAAU37Q,OAAO,CAC7BoF,KAAM,SAAS0S,EAAK1T,GAChBnH,KAAKmH,QAAQ80I,QACTj8I,KAAKkhR,UACL,oDAEJxC,EAAU32Q,GAAGI,KAAKoC,KAAKvK,KAAM6a,EAAK1T,GAElCnH,KAAKmhR,YAAcnhR,KAAKmhR,YAAY33Q,KAAKxJ,MACzCA,KAAKohR,gBACT,EAEAj6Q,QAAS,CACLk6Q,WAAY,QAGhBD,eAAgB,WACZ,IAAIj6Q,EAAUnH,KAAKmH,QAEnB,IAAKA,EAAQ2K,IACT,MAAM,IAAId,MAAM,wCAGpBrO,EAAEulD,KAAK,CACHl5B,IAAK7nB,EAAQ80I,QAAU90I,EAAQk6Q,WAC/BjzQ,KAAM,CACFmmF,OAAQ,OACRmjL,QAAS,mBACT5lQ,IAAK3K,EAAQ2K,IACbwvQ,UAAWthR,KAAKkhR,WAEpBx7Q,KAAM,MACNy/C,SAAU,QACV+B,MAAO,QACPiB,QAASnoD,KAAKmhR,aAEtB,EAEAD,QAAS,SAASr5Q,GAEd,MAAkC,WADlCA,EAAQA,GAAS/G,OAAOuiB,SAASC,UACpB7gB,QAAQ,IAAK,IAAkB,QAAU,MAC1D,EAEA0+Q,YAAa,SAAS/yQ,GAClB,IAAInG,EAAOjI,KACX,GAAIoO,GAAQA,EAAKmzQ,aAAa/5Q,OAAQ,CAClC,IAAIg6Q,EAAWv5Q,EAAKu5Q,SAAWpzQ,EAAKmzQ,aAAa,GAAGp6J,UAAU,GAE9D3+G,EAAWP,EAAK8xD,MAAM5yD,QAAS,CAC3Bo4Q,YAAa,EAAGgB,YAAWO,UAASjtQ,aAAc5L,EAAKu5Q,SAAS9T,SAC3DjrQ,QAAQ,cAAe89Q,GACvB99Q,QAAQ,YAAaq+Q,GACrBr+Q,QAAQ,YAAaoR,GAC1B8qQ,WAAY6C,EAASC,qBAGzB,IAAIt6Q,EAAUc,EAAKd,QACd2vH,EAAQ3vH,EAAQkxQ,WACjBlxQ,EAAQkxQ,QAAUmJ,EAASE,SAE1B5qJ,EAAQ3vH,EAAQmxQ,WACjBnxQ,EAAQmxQ,QAAUkJ,EAASG,SAG/B15Q,EAAK25Q,kBAE+B,SAAhC35Q,EAAK4D,QAAQI,IAAI,YACjBhE,EAAKklE,QAEb,CACJ,EAEA0xM,UAAW,WACP,OAAOgD,CACX,EAEAD,gBAAiB,WACb,IAAIh+P,EAAO5jB,KAAK6a,IAAI4gQ,YACpB,GAAI73P,EAAM,CACN,IAAIsoC,EAAQlsD,KAAKwhR,SAASM,iBAC1B,GAAI51N,EACA,IAAK,IAAI3kD,EAAI,EAAGA,EAAI2kD,EAAM1kD,OAAQD,IAE9B,IADA,IAAI4nC,EAAO+c,EAAM3kD,GACRpD,EAAI,EAAGA,EAAIgrC,EAAK4yO,cAAcv6Q,OAAQrD,IAAK,CAChD,IAAImvL,EAAOnkJ,EAAK4yO,cAAc59Q,GAC9Byf,EAAKpW,IAAI,CACLszB,KAAMqO,EAAKssO,YACXpD,QAAS/kF,EAAKouF,QACdpJ,QAAShlF,EAAKquF,QACd7J,OAAQ,IAAIT,EACR,IAAIxC,EAASvhF,EAAK31D,KAAK,GAAI21D,EAAK31D,KAAK,IACrC,IAAIk3I,EAASvhF,EAAK31D,KAAK,GAAI21D,EAAK31D,KAAK,MAGjD,CAGZ,CACJ,EAEA0jJ,WAAY,SAAS34Q,GACjB,IAAIA,EAKA,OAAO1I,KAAKmH,QAAQk6Q,WAJpBrhR,KAAKmH,QAAQk6Q,WAAa34Q,EAC1B1I,KAAK6a,IAAI4gQ,YAAYjlN,QACrBx2D,KAAKohR,gBAIb,IAGAS,EAAW3C,EAASn8Q,OAAO,CAC3BoE,QAAS,CACL0M,QAAS,SAGbusQ,YAAa,SAASD,GAClB,IAAIh5Q,EAAU+3Q,EAASn3Q,GAAGq4Q,YAAY71Q,KAAKvK,KAAMmgR,GAKjD,OAHAh5Q,EAAQ0M,QAAU7T,KAAKmH,QAAQ0M,QAC/B1M,EAAQ25Q,QAAU9gR,KAAKgiR,YAAYhiR,KAAKqgR,UAAUF,IAE3Ch5Q,CACX,EAEA66Q,YAAa,SAAS1oQ,GAClB,IACI2oQ,EAAOprP,EAAMtvB,EADb26Q,EAAU,GAGd,IAAK36Q,EAAIvH,KAAKqwQ,MAAO9oQ,EAAI,EAAGA,IACxB06Q,EAAQ,EACRprP,EAAO,GAAMtvB,EAAI,EAEQ,IAApB+R,EAAMlU,EAAIyxB,IACXorP,IAGqB,IAApB3oQ,EAAMnV,EAAI0yB,KACXorP,GAAS,GAGbC,GAAWD,EAGf,OAAOC,CACX,IAIJ15Q,EAAWiiB,EAAS,CAChB5P,IAAK,CACDggQ,OAAQ,CACJsH,KAAMlB,EACNA,UAAWA,EACXY,SAAUA,KAKzB,CA7KD,CA6KG/gR,OAAOH,MAAM+G,QAEhB,SAAU/E,EAAGC,GAET,IAAIkpJ,EAAMn8I,SACNvM,EAAOC,KACPsS,EAAUhT,EAAE8yB,QAEZ90B,EAAQG,OAAOH,MACfiH,EAAQjH,EAAMiH,MACd0G,EAAa3N,EAAMyN,KAAKE,WACxBi4G,EAAU5lH,EAAM4pB,GAAGg8F,QAEnB97F,EAAU9pB,EAAM8pB,QAChBjiB,EAAa7H,EAAM6H,WAEnBqS,EAAM4P,EAAQ5P,IACdg6P,EAAWh6P,EAAIg6P,SACfiG,EAAQjgQ,EAAIggQ,OAAOC,MAGnBsH,EAActH,EAAM/3Q,OAAO,CAC3BoF,KAAM,SAAS0S,EAAK1T,GAChB2zQ,EAAM/yQ,GAAGI,KAAKoC,KAAKvK,KAAM6a,EAAK1T,GAE9BnH,KAAKqiR,aAAeriR,KAAKqiR,aAAa74Q,KAAKxJ,MAC3CA,KAAK6L,QAAQge,GAAG,QAAS,YAAa7pB,KAAKqiR,cAE3CriR,KAAKksD,MAAQ,GACblsD,KAAKq5O,iBACT,EAEAr3O,QAAS,WACL84Q,EAAM/yQ,GAAG/F,QAAQuI,KAAKvK,MAEtBA,KAAK6L,QAAQutB,IAAI,QAAS,YAAap5B,KAAKqiR,cAE5CriR,KAAKyxB,WAAWxnB,OAAO,SAAUjK,KAAK67Q,aACtC77Q,KAAKw2D,OACT,EAEArvD,QAAS,CACL6yC,OAAQ,IACRg4B,UAAU,EACVvgD,WAAY,CAAC,EACb+rP,cAAe,WACf8E,WAAY,SAGhB90Q,IAAK,SAASonI,GACV,IAAI1xI,MAAMD,QAAQ2xI,GAKd,OAAO50I,KAAKuiR,QAAQ3tI,GAJpB,IAAK,IAAIrtI,EAAI,EAAGA,EAAIqtI,EAAIptI,OAAQD,IAC5BvH,KAAKuiR,QAAQ3tI,EAAIrtI,GAK7B,EAEA8E,OAAQ,SAASq8C,GACbA,EAAO1mD,UAEP,IAAIsX,EAAQ3D,EAAQ+yC,EAAQ1oD,KAAKksD,OAC7B5yC,GAAS,GACTtZ,KAAKksD,MAAM1hD,OAAO8O,EAAO,EAEjC,EAEAk9C,MAAO,WACH,IAAK,IAAIjvD,EAAI,EAAGA,EAAIvH,KAAKksD,MAAM1kD,OAAQD,IACnCvH,KAAKksD,MAAM3kD,GAAGvF,UAGlBhC,KAAKksD,MAAQ,EACjB,EAEA/E,OAAQ,SAASuB,GACb,IAAI0sN,EAAM1sN,EAAOrlC,WACjB,GAAI+xP,EAAK,CACL1sN,EAAO+vJ,OAAOz4M,KAAK6a,IAAI0hQ,eAAenH,IAEtC,IAAI/9O,EAAO,CAAEqxB,OAAQA,EAAQ04L,MAAOphP,MACpCA,KAAK6a,IAAIzQ,QAAQ,iBAAkBitB,EACvC,CACJ,EAEA81C,OAAQ,WACJ2tM,EAAM/yQ,GAAGolE,OAAO5iE,KAAKvK,MAErB,IADA,IAAIksD,EAAQlsD,KAAKksD,MACR3kD,EAAI,EAAGA,EAAI2kD,EAAM1kD,OAAQD,IAC9BvH,KAAKmnD,OAAO+E,EAAM3kD,GAE1B,EAEAiC,KAAM,SAASrC,EAASs3D,GACpB,IAAI/V,EAAS7tC,EAAI2nQ,OAAOp7N,OAAOjgD,EAASnH,KAAKmH,SAC7CuhD,EAAO+V,SAAWA,EAElB,IAAIpnC,EAAO,CAAEqxB,OAAQA,EAAQ04L,MAAOphP,MAEpC,IADgBA,KAAK6a,IAAIzQ,QAAQ,gBAAiBitB,GAG9C,OADAr3B,KAAKwN,IAAIk7C,GACFA,CAEf,EAEAgxL,cAAe,SAASjoN,GAChBzxB,KAAKyxB,YACLzxB,KAAKyxB,WAAWxnB,OAAO,SAAUjK,KAAK67Q,aAG1C77Q,KAAKyxB,WAAa9wB,EAAMyN,KAAKE,WAAW84C,OAAO31B,GAC/CzxB,KAAKyxB,WAAWjoB,KAAK,SAAUxJ,KAAK67Q,aAEhC77Q,KAAKmH,QAAQ6qE,UACbhyE,KAAKyxB,WAAW20C,OAExB,EAEAm8M,QAAS,SAAS3tI,GACd,IAAIlsF,EAAS85N,EAAOp7N,OAAOwtF,EAAK50I,KAAKmH,SAGrC,OAFAuhD,EAAO+5N,MAAMziR,MAEN0oD,CACX,EAEA2wL,gBAAiB,WACb,IAAIs5B,EAAY3yQ,KAAKmH,QAAQsqB,WAC7BzxB,KAAK67Q,YAAc77Q,KAAK67Q,YAAYryQ,KAAKxJ,MACzCA,KAAKyxB,WAAanjB,EACb84C,OAAOurN,GACPnpQ,KAAK,SAAUxJ,KAAK67Q,aAErBlJ,GAAa3yQ,KAAKmH,QAAQ6qE,UAC1BhyE,KAAKyxB,WAAW20C,OAExB,EAEAy1M,YAAa,SAASl3Q,GAClB3E,KAAK+7Q,MAAMp3Q,EAAE2F,OAAOstB,OACxB,EAEAmkP,MAAO,SAAS3tQ,GACZpO,KAAK45D,MAAQxrD,EACbpO,KAAKw2D,QAIL,IAFA,IAAIksN,EAAc/hR,EAAM6uB,OAAOxvB,KAAKmH,QAAQq2Q,eACxCmF,EAAWhiR,EAAM6uB,OAAOxvB,KAAKmH,QAAQm7Q,YAChC/6Q,EAAI,EAAGA,EAAI6G,EAAK5G,OAAQD,IAAK,CAClC,IAAIk3D,EAAWrwD,EAAK7G,GACpBvH,KAAKwJ,KAAK,CACN6Z,SAAUq/P,EAAYjkN,GACtBtgB,MAAOwkO,EAASlkN,IACjBA,EACP,CACJ,EAEA4jN,aAAc,SAAS19Q,GACnB,IAAI0yB,EAAO,CAAEqxB,OAAQ/lD,EAAEgC,EAAEg6E,eAAevwE,KAAK,eAAgBgzO,MAAOphP,MACpEA,KAAK6a,IAAIzQ,QAAQ,cAAeitB,EACpC,IAGAmrP,EAAS56Q,EAAM7E,OAAO,CACtBoF,KAAM,SAAShB,GACXnH,KAAKmH,QAAUA,GAAW,CAAC,CAC/B,EAEAs7Q,MAAO,SAAS91Q,GACZ3M,KAAKohP,MAAQz0O,EAAOqlL,SAAWrlL,EAC/B3M,KAAKohP,MAAMl1L,MAAMvqD,KAAK3B,MACtBA,KAAKohP,MAAMj6L,OAAOnnD,KACtB,EAEAqjB,SAAU,SAAS3a,GACf,OAAIA,GACA1I,KAAKmH,QAAQkc,SAAWwxP,EAASztN,OAAO1+C,GAAOsrD,UAE3Ch0D,KAAKohP,OACLphP,KAAKohP,MAAMj6L,OAAOnnD,MAGfA,MAEA60Q,EAASztN,OAAOpnD,KAAKmH,QAAQkc,SAE5C,EAEAo1L,OAAQ,SAASt8E,GACbn8H,KAAKmQ,SACLnQ,KAAK6L,QAAQI,IAAI,CACbugB,KAAMppB,EAAKkT,MAAM6lH,EAAM/2H,GACvB8f,IAAK9hB,EAAKkT,MAAM6lH,EAAMh4H,KAGtBnE,KAAKi/J,SAAWj/J,KAAKi/J,QAAQ/qE,OAE7Bl0F,KAAKi/J,QAAQ/qE,MAAMP,WAE3B,EAEAjmF,KAAM,WACE1N,KAAK6L,UACL7L,KAAK6L,QAAQQ,SACbrM,KAAK6L,QAAU,MAGf7L,KAAKi/J,UACLj/J,KAAKi/J,QAAQj9J,UACbhC,KAAKi/J,QAAU,KAEvB,EAEAj9J,QAAS,WACLhC,KAAKohP,MAAQ,KACbphP,KAAK0N,MACT,EAEAyC,OAAQ,WACJ,IAAKnQ,KAAK6L,QAAS,CACf,IAAI1E,EAAUnH,KAAKmH,QACfi6O,EAAQphP,KAAKohP,MAEjBphP,KAAK6L,QAAUlJ,EAAEmpJ,EAAIjtI,cAAc,SAC9B+E,KAAK,QAASzc,EAAQg3C,OACtBv6B,KAAKzc,EAAQ8iD,YAAc,CAAC,GAC5B77C,KAAK,cAAepO,MACpBiM,IAAI,SAAU9E,EAAQ6yC,QAEvB7yC,EAAQ27I,MACc,cAAlB37I,EAAQ27I,MACRniJ,EAAM4pB,GAAG+tE,KAAKt4F,KAAK6L,QAAS,CAAEysF,KAAM,oBAAqBF,UAAW,WAAYpoF,KAAM,YAC7D,QAAlB7I,EAAQ27I,MACfniJ,EAAM4pB,GAAG+tE,KAAKt4F,KAAK6L,QAAS,CAAEysF,KAAM,aAAcF,UAAW,WAAYpoF,KAAM,YAE/EhQ,KAAK6L,QAAQwZ,SAAS,8BAAgC1kB,EAAMitB,UAAUzmB,EAAQ27I,QAGlFniJ,EAAM4pB,GAAG+tE,KAAKt4F,KAAK6L,QAAS,CAAEysF,KAAM,aAAcF,UAAW,WAAYpoF,KAAM,YAG/EoxO,GACAA,EAAMv1O,QAAQsuC,OAAOn6C,KAAK6L,SAG9B7L,KAAK4iR,eACT,CACJ,EAEAA,cAAe,WACX,IAAIl6N,EAAS1oD,KACTm+C,EAAQuK,EAAOvhD,QAAQg3C,MACvBh3C,EAAUuhD,EAAOvhD,QAAQ83J,SAAW,CAAC,EAEzC,GAAI93J,GAAWo/G,EAAS,CACpB,IAAIn2G,EAAWjJ,EAAQiJ,SACvB,GAAIA,EAAU,CACV,IAAIyyQ,EAAkBliR,EAAMyP,SAASA,GACrCjJ,EAAQw/C,QAAU,SAAShiD,GAGvB,OAFAA,EAAE0e,SAAWqlC,EAAOrlC,WACpB1e,EAAE+jD,OAASA,EACJm6N,EAAgBl+Q,EAC3B,CACJ,EAEIw5C,GAASh3C,EAAQw/C,SAAWx/C,EAAQ27Q,cACpC9iR,KAAKi/J,QAAU,IAAI14C,EAAQvmH,KAAK6L,QAAS1E,GACzCnH,KAAKi/J,QAAQv2G,OAAS1oD,KAE9B,CACJ,IAGJwiR,EAAOp7N,OAAS,SAASwtF,EAAKh0I,GAC1B,OAAIg0I,aAAe4tI,EACR5tI,EAGJ,IAAI4tI,EAAOh6Q,EAAW,CAAC,EAAG5H,EAAUg0I,GAC/C,EAGApsI,EAAWiiB,EAAS,CAChB5P,IAAK,CACDggQ,OAAQ,CACJnyN,OAAQ05N,EACRA,YAAaA,GAEjBI,OAAQA,IAInB,CAlSD,CAkSG1hR,OAAOH,MAAM+G,QAEhB,SAAU/E,EAAGC,GAET,IAAIkpJ,EAAMn8I,SACNvM,EAAOC,KACPqT,EAAMtT,EAAKsT,IACXmzB,EAAMzmC,EAAKymC,IAEXlpC,EAAQG,OAAOH,MACfywB,EAASzwB,EAAM4pB,GAAG6G,OAClB5oB,EAAa7H,EAAM6H,WAEnBiiB,EAAU9pB,EAAM8pB,QAChBF,EAAKE,EAAQF,GAEbnV,EAAIzU,EAAMghI,SACV7F,EAAQ1mH,EAAE0mH,MAEVjhH,EAAM4P,EAAQ5P,IACdw8P,EAASx8P,EAAIw8P,OACbxC,EAAWh6P,EAAIg6P,SACfuF,EAAWv/P,EAAI4/P,IAAIL,SAGnBhG,EADOzzQ,EAAM6mH,KACI4sJ,UAEjBqK,EAAc99Q,EAAM+pB,QAAQ88F,KAE5BsP,EAAU2nJ,EAAY3nJ,QACtB4jD,EAAQ+jG,EAAYjmJ,WACpBQ,EAAiBylJ,EAAYzlJ,eAW7BwqC,EAAMpyI,EAAOruB,OAAO,CACpBoF,KAAM,SAAS0D,EAAS1E,GACpBxG,EAAMqB,QAAQ6J,GACdulB,EAAOrpB,GAAGI,KAAKoC,KAAKvK,KAAM6L,GAE1B7L,KAAKuI,aAAapB,GAClBnH,KAAKwJ,KAAKxJ,KAAKqK,OAAQlD,GAEvBnH,KAAKy6Q,IAAM,IAAIL,EAEfp6Q,KAAK6L,QACAwZ,SAnBI,KAmBkBrlB,KAAKmH,QAAQ/E,KAAKyW,eACxC5M,IAAI,WAAY,YAChB2gD,QACAzS,OAAO2xG,EAAIjtI,cAAc,QAE9B7e,KAAKy/Q,YAAcz/Q,KAAK+iR,aACxB/iR,KAAKgjR,gBACLhjR,KAAKijR,eACLjjR,KAAKkjR,gBACLljR,KAAKmjR,cACLnjR,KAAKmtE,SAELntE,KAAK61N,YAAc71N,KAAK61N,YAAYrsN,KAAKxJ,MACzCA,KAAK6L,QAAQge,GA7BJ,4BA6BmB7pB,KAAK61N,YACrC,EAEA1uN,QAAS,CACL/E,KAAM,MACNghR,SAAU,CACN3H,aAAa,EACb74P,UAAW,CACPg2P,QAAS,KAEbnoO,MAAM,GAEVoqO,OAAQ,GACRwI,cAAe,CACXvgI,MAAO,CACH31I,MAAO,CACHumB,KAAM,CACFu9F,MAAO,QAEX2O,OAAQ,CACJ3O,MAAO,OACPllH,MAAO,MAInB4nL,OAAQ,CACJxmL,MAAO,CACHumB,KAAM,CACFu9F,MAAO,OACPl6F,QAAS,IAEb6oG,OAAQ,CACJ3O,MAAO,OACPllH,MAAO,MAInB28C,OAAQ,CACJo6F,MAAO,YACPmc,QAAS,CACL3xJ,SAAU,SAItBixE,OAAQ,CAAC,EAAG,GACZ9tC,KAAM,EACNymK,QAAS,IACTmhE,QAAS,EACTC,QAAS,GACTtmF,QAAS,GACTsxF,eAAgB,CACZxgI,MAAO,YACPmc,QAAS,CACL3xJ,SAAU,QAGlBi2Q,YAAY,EACZ34P,SAAU,CACNo0P,UAAW,aAInB30Q,OAAQ,CACJ,cACA,QACA,iBACA,cACA,gBACA,MACA,SACA,QACA,aACA,eACA,sBACA,kBACA,kBACA,UACA,aAGJrI,QAAS,WACLhC,KAAKwjR,SAASxhR,UAEVhC,KAAK4iB,WACL5iB,KAAK4iB,UAAU5gB,UAGfhC,KAAKy7Q,aACLz7Q,KAAKy7Q,YAAYz5Q,UAGjBhC,KAAKyjR,aACLzjR,KAAKyjR,YAAYzhR,UAGrBhC,KAAKgyL,QAAQhwL,UAEb,IAAK,IAAIuF,EAAI,EAAGA,EAAIvH,KAAK66Q,OAAOrzQ,OAAQD,IACpCvH,KAAK66Q,OAAOtzQ,GAAGvF,UAGnBovB,EAAOrpB,GAAG/F,QAAQuI,KAAKvK,KAC3B,EAEAywC,KAAM,SAASk7B,GACX,IAAIxkE,EAAUnH,KAAKmH,QAEnB,OAAI2vH,EAAQnrD,IACRA,EAAQvoE,EAAKkT,MAAMokK,EAAM/uG,EAAOxkE,EAAQkxQ,QAASlxQ,EAAQmxQ,UACrDnxQ,EAAQspC,OAASk7B,IACjBxkE,EAAQspC,KAAOk7B,EACf3rE,KAAKmtE,UAGFntE,MAEAmH,EAAQspC,IAEvB,EAEA8tC,OAAQ,SAASA,GACb,OAAIA,GACAv+E,KAAKmH,QAAQo3E,OAASs2L,EAASztN,OAAOm3B,GAAQvqB,UAC9Ch0D,KAAKmtE,SAEEntE,MAEA60Q,EAASztN,OAAOpnD,KAAKmH,QAAQo3E,OAE5C,EAEAu5L,OAAQ,SAASA,GACb,OAAIA,GACA93Q,KAAK0jR,WAAW5L,GACT93Q,MAEAA,KAAK2jR,YAEpB,EAEAzxP,WAAY,SAAS/qB,GACjBiqB,EAAOrpB,GAAGmqB,WAAW3nB,KAAKvK,KAAMmH,GAChCnH,KAAKmtE,QACT,EAEA2xM,gBAAiB,SAASz7P,EAAUotB,GAChC,IAAI8oO,GAASv5Q,KAAKmH,QAAQo8Q,WAE1B,OADAlgQ,EAAWwxP,EAASztN,OAAO/jC,GACpBrjB,KAAKy6Q,IAAIl1D,QAAQliM,EAAUrjB,KAAK4jR,WAAWnzO,GAAO8oO,EAC7D,EAEAsK,gBAAiB,SAAS1nJ,EAAO1rF,GAC7B,IAAI8oO,GAASv5Q,KAAKmH,QAAQo8Q,WAE1B,OADApnJ,EAAQL,EAAM10E,OAAO+0E,GACdn8H,KAAKy6Q,IAAID,WAAWr+I,EAAOn8H,KAAK4jR,WAAWnzO,GAAO8oO,EAC7D,EAEAgD,eAAgB,SAASl5P,GACrBA,EAAWwxP,EAASztN,OAAO/jC,GAC3B,IAAI21B,EAASh5C,KAAK8+Q,gBAAgB9+Q,KAAKy/Q,aAGvC,OAFYz/Q,KAAK8+Q,gBAAgBz7P,GAEpB64G,cAAcljF,EAAOjJ,OAAO,GAC7C,EAEA+zO,eAAgB,SAAS3nJ,EAAO1rF,GAC5B,IAAIuI,EAASh5C,KAAK8+Q,gBAAgB9+Q,KAAK+iR,aAActyO,GAGrD,OADA0rF,GADAA,EAAQL,EAAM10E,OAAO+0E,IACP/0H,QAAQ80H,cAAcljF,GAC7Bh5C,KAAK6jR,gBAAgB1nJ,EAAO1rF,EACvC,EAEAszO,YAAa,SAASp/Q,GAClB,IAAIw3H,EACA/2H,EACAjB,EACA2Z,EAAS9d,KAAK6L,QAAQiS,SAE1B,GAAInZ,EAAES,GAAKT,EAAER,EAAG,CACZ,IAAI4hB,EAAQ,WACZ3gB,EAAIT,EAAES,EAAE2gB,GAASjI,EAAO0O,KACxBroB,EAAIQ,EAAER,EAAE4hB,GAASjI,EAAOoH,IACxBi3G,EAAQ,IAAI/mH,EAAE0mH,MAAM12H,EAAGjB,EAC3B,KAAO,CACH,IAAIgc,EAAQxb,EAAE4kB,eAAiB5kB,EAC/BS,EAAI4zH,EAAe74G,EAAM6iE,MAAO7iE,EAAMuJ,SAAW5L,EAAO0O,KACxDroB,EAAI60H,EAAe74G,EAAM8iE,MAAO9iE,EAAMwJ,SAAW7L,EAAOoH,IACxDi3G,EAAQ,IAAI/mH,EAAE0mH,MAAM12H,EAAGjB,EAC3B,CAEA,OAAOg4H,CACX,EAEA6nJ,YAAa,SAASr/Q,GAClB,IAAIq2I,EAASh7I,KAAK+jR,YAAYp/Q,GAC9B,OAAO3E,KAAKu8Q,eAAev8Q,KAAK8jR,eAAe9oI,GACnD,EAEAipI,aAAc,SAASt/Q,GACnB,OAAO3E,KAAK8+Q,gBAAgB9+Q,KAAKkkR,gBAAgBv/Q,GACrD,EAEAu/Q,gBAAiB,SAASv/Q,GACtB,IAAIq2I,EAASh7I,KAAK+jR,YAAYp/Q,GAC9B,OAAO3E,KAAK8jR,eAAe9oI,EAC/B,EAEAhuE,SAAU,WACN,IAAInhE,EAAU7L,KAAK6L,QACfkkC,EAAQ/vC,KAAK4jR,aACb73Q,EAAQF,EAAQE,QAKpB,OAHK/L,KAAKmH,QAAQo8Q,aACdx3Q,EAAQ2K,EAAIq5B,EAAOhkC,IAEhB,CACHA,MAAOA,EACPC,OAAQ0K,EAAIq5B,EAAOlkC,EAAQG,UAEnC,EAEAorI,aAAc,WAEV,OADAp3I,KAAKmtE,UACE,CACX,EAEAg3M,WAAY,SAASnrO,EAAQvI,GACzB,IACI8sF,EADAvtH,EAAOhQ,KAAKgtE,WAUhB,OAPAh0B,EAASh5C,KAAKokR,QAAUvP,EAASztN,OAAOpO,IACxCukF,EAAUv9H,KAAK8+Q,gBAAgB9lO,EAAQvI,IAC/BrrC,GAAK4K,EAAKjE,MAAQ,EAC1BwxH,EAAQp5H,GAAK6L,EAAKhE,OAAS,EAE3BhM,KAAKmH,QAAQo3E,OAASv+E,KAAK6jR,gBAAgBtmJ,EAAS9sF,GAAMujB,UAEnDh0D,IACX,EAEA+iR,WAAY,SAAShsI,GACjB,IACIxZ,EADAvtH,EAAOhQ,KAAKgtE,WAWhB,OARI+pE,GAAe/2I,KAAKokR,WACpB7mJ,EAAUv9H,KAAK8+Q,gBAAgB9+Q,KAAKu+E,WAC5Bn5E,GAAK4K,EAAKjE,MAAQ,EAC1BwxH,EAAQp5H,GAAK6L,EAAKhE,OAAS,EAE3BhM,KAAKokR,QAAUpkR,KAAK6jR,gBAAgBtmJ,IAGjCv9H,KAAKokR,OAChB,EAEAV,WAAY,SAAS5L,GACjB,IAAIttN,EAAM6sN,EAAOjwN,OAAO0wN,GACpBP,EAAK/sN,EAAI+sN,GAAGnwQ,QACZpH,KAAKmH,QAAQo8Q,YAAchM,EAAGxC,IAAM,GAAK+C,EAAOR,GAAGvC,IAAM,IACzDwC,EAAGxC,IAAM,KAAO,IAAMwC,EAAGxC,MAG7B+C,EAAS,IAAIT,EAAO7sN,EAAI8sN,GAAIC,GAC5Bv3Q,KAAKu+E,OAAOu5L,EAAOv5L,UAInB,IAFA,IAAIxyE,EAAQ/L,KAAK6L,QAAQE,QACrBC,EAAShM,KAAK6L,QAAQG,SACjBykC,EAAOzwC,KAAKmH,QAAQmxQ,QAAS7nO,GAAQzwC,KAAKmH,QAAQkxQ,QAAS5nO,IAAQ,CACxE,IAAI8sF,EAAUv9H,KAAK8+Q,gBAAgBhH,EAAOR,GAAI7mO,GAC1C+sF,EAAcx9H,KAAK8+Q,gBAAgBhH,EAAOP,GAAI9mO,GAE9C4zO,EAAajhR,EAAKqU,IAAI+lH,EAAYp4H,EAAIm4H,EAAQn4H,GAC9Ck/Q,EAAclhR,EAAKqU,IAAI+lH,EAAYr5H,EAAIo5H,EAAQp5H,GAEnD,GAAIkgR,GAAct4Q,GAASu4Q,GAAet4Q,EACtC,KAER,CAEAhM,KAAKywC,KAAKA,EACd,EAEAkzO,WAAY,WACR,IAAIrM,EAAKt3Q,KAAK+iR,aACVvlJ,EAAcx9H,KAAK8+Q,gBAAgBxH,GACnCtnQ,EAAOhQ,KAAKgtE,WAEhBwwD,EAAYp4H,GAAK4K,EAAKjE,MACtByxH,EAAYr5H,GAAK6L,EAAKhE,OAEtB,IAAIurQ,EAAKv3Q,KAAK6jR,gBAAgBrmJ,GAC9B,OAAO,IAAI65I,EAAOC,EAAIC,EAC1B,EAEAgN,YAAa,SAASC,EAAO74M,GACzB3rE,KAAKmkR,WAAWnkR,KAAK6jR,gBAAgBW,EAAO74M,GAAQA,GACpD3rE,KAAKywC,KAAKk7B,EACd,EAEAu3M,cAAe,WACX,IAAIE,EAAWpjR,KAAKmH,QAAQi8Q,SAExB74P,EAAGytP,aAAeoL,EAAS3H,aAC3Bz7Q,KAAKykR,mBAAmBrB,EAAS3H,aAGhC96Q,EAAM4C,QAAQggB,WACXgH,EAAG0kP,WAAamU,EAASxgQ,WACzB5iB,KAAK0kR,iBAAiBtB,EAASxgQ,WAG/B2H,EAAGuuP,aAAesK,EAAS3yO,MAC3BzwC,KAAK2kR,mBAAmBvB,EAAS3yO,MAG7C,EAEAm0O,sBAAuB,SAASz9Q,EAAS09Q,GACrC,IAAIxvL,EAAMluF,EAAQmG,UAAYu3Q,EAC1BC,EAAc,IAAM1Q,EAAU/+K,GAAK5yF,QAAQ,IAAK,KAChDkqB,EAAOhqB,EAAE,kBAAoBmiR,EAAa9kR,KAAK6L,SAOnD,OANoB,IAAhB8gB,EAAKnlB,SACLmlB,EAAOhqB,EAAE,SACD0iB,SAAS,kBAAoB+uP,EAAU/+K,IACvCnpF,SAASlM,KAAK6L,UAGnBlJ,EAAE,SAASuJ,SAASygB,EAC/B,EAEA83P,mBAAoB,SAASt9Q,GACzB,IAAI0E,EAAU7L,KAAK4kR,sBAAsBz9Q,EAAS,eAClDnH,KAAKy7Q,YAAc,IAAIlxP,EAAGytP,YAAYnsQ,EAAS1E,EACnD,EAEAu9Q,iBAAkB,SAASv9Q,GACvB,IAAI0E,EAAU7L,KAAK4kR,sBAAsBz9Q,EAAS,WAC9Cyb,EAAY5iB,KAAK4iB,UAAY,IAAI2H,EAAG0kP,UAAUpjQ,EAAS1E,GAE3DnH,KAAK+kR,cAAgB/kR,KAAK+kR,cAAcv7Q,KAAKxJ,MAC7C4iB,EAAUpZ,KAAK,MAAOxJ,KAAK+kR,eAE3B/kR,KAAKglR,iBAAmBhlR,KAAKglR,iBAAiBx7Q,KAAKxJ,MACnD4iB,EAAUpZ,KAAK,SAAUxJ,KAAKglR,iBAClC,EAEAD,cAAe,SAASpgR,GACpB,IAAIkW,EAAM7a,KACNwjR,EAAW3oQ,EAAI2oQ,SAEfp+Q,EAAIo+Q,EAASj2P,WAAa5oB,EAAES,EAC5BjB,EAAIq/Q,EAAS1sP,UAAYnyB,EAAER,EAE3B8gR,EAASjlR,KAAKklR,aACdl5Q,EAAShM,KAAK6L,QAAQG,SACtBD,EAAQ/L,KAAK6L,QAAQE,QAGzB3G,EAAIs1K,EAAMt1K,EAAG6/Q,EAAO7/Q,EAAEsR,IAAKuuQ,EAAO7/Q,EAAE+T,IAAMpN,GAC1C5H,EAAIu2K,EAAMv2K,EAAG8gR,EAAO9gR,EAAEuS,IAAKuuQ,EAAO9gR,EAAEgV,IAAMnN,GAE1C6O,EAAI2oQ,SAAS75Q,IAAI,UAAU,SAAShF,GAAKkW,EAAIsqQ,WAAWxgR,EAAI,IAC5DkW,EAAI2oQ,SAASz0L,UAAU3pF,GAAIjB,EAC/B,EAEA6gR,iBAAkB,WACdhlR,KAAKu+E,OAAOv+E,KAAKmH,QAAQo3E,OAC7B,EAEAomM,mBAAoB,SAASx9Q,GACzB,IAAI0E,EAAU7L,KAAK4kR,sBAAsBz9Q,EAAS,WAC9Cs8Q,EAAczjR,KAAKyjR,YAAc,IAAIl5P,EAAGuuP,YAAYjtQ,EAAS1E,GAEjEnH,KAAKolR,mBAAqBplR,KAAKolR,mBAAmB57Q,KAAKxJ,MACvDyjR,EAAYj6Q,KAAK,SAAUxJ,KAAKolR,mBACpC,EAEAA,mBAAoB,SAASzgR,GACpB3E,KAAKoK,QAAQ,YAAa,CAAEmf,cAAe5kB,MAC5C3E,KAAKywC,KAAKzwC,KAAKywC,OAAS9rC,EAAEogC,OAC1B/kC,KAAKoK,QAAQ,UAAW,CAAEmf,cAAe5kB,IAEjD,EAEAq+Q,cAAe,WACX,IAAI51L,EAAWzsF,EAAM4C,QAAQggB,SA/Zf,IADP,GAiaH4mN,GAAqC,IAA1BnqO,KAAKmH,QAAQgjO,SACxBq5C,EAAWxjR,KAAKwjR,SAAW,IAAI7iR,EAAMb,OAAOyqB,GAAGsO,SAC/C74B,KAAK6L,QAAQ0pC,SAAS,GAAI,CACtB63C,SAAUA,EACVD,mBAlaU,EAmaV18C,KAAM05L,EACNn7I,qBAAqB,EACrBnP,kBAAkB,IAG1B2jM,EAASh6Q,KAAK,SAAUxJ,KAAKqlR,QAAQ77Q,KAAKxJ,OAC1CwjR,EAASh6Q,KAAK,YAAaxJ,KAAKmlR,WAAW37Q,KAAKxJ,OAChDwjR,EAASlkM,WAAW91E,KAAK,eAAgBxJ,KAAKslR,YAAY97Q,KAAKxJ,OAC/DwjR,EAASlkM,WAAW91E,KAAK,aAAcxJ,KAAKiwF,OAAOzmF,KAAKxJ,OACxDwjR,EAASlkM,WAAW91E,KAAK,YAAaxJ,KAAKulR,WAAW/7Q,KAAKxJ,OAC3DwjR,EAASlkM,WAAW91E,KAAK,MAAOxJ,KAAKqgF,KAAK72E,KAAKxJ,OAE/CA,KAAKquF,cAAgBm1L,EAASn1L,aAClC,EAEA80L,YAAa,WAIT,IAHA,IAAIxlI,EAAO39I,KAAKmH,QAAQ0zQ,OACpBA,EAAS76Q,KAAK66Q,OAAS,GAElBtzQ,EAAI,EAAGA,EAAIo2I,EAAKn2I,OAAQD,IAAK,CAClC,IAAIJ,EAAUw2I,EAAKp2I,GACf7B,EAAOyB,EAAQzB,MAAQ,QACvB9E,EAAWZ,KAAKmH,QAAQk8Q,cAAc39Q,GACtCsqD,EAAOvlC,EAAQ5P,IAAIggQ,OAAOn1Q,GAE9Bm1Q,EAAOl5Q,KAAK,IAAIquD,EAAKhwD,KAAMwI,EAAW,CAAC,EAAG5H,EAAUuG,IACxD,CACJ,EAEA87Q,aAAc,WACVjjR,KAAKgyL,QAAU,IAAIn3K,EAAIggQ,OAAOuH,YAAYpiR,KAAMA,KAAKmH,QAAQm8Q,gBAC7DtjR,KAAKgyL,QAAQxkL,IAAIxN,KAAKmH,QAAQ6qL,QAClC,EAEAqzF,QAAS,SAAS1gR,GACd,IAAIq0C,EAASh5C,KAAK8+Q,gBAAgB9+Q,KAAKy/Q,aAAanpQ,QAChDmmC,EAAU93C,EAAE2F,OAAOmyC,QAEnB3+B,EAAS,IAAI1I,EAAE0mH,MAAMr/E,EAAQr3C,EAAGq3C,EAAQt4C,GAAG4rC,OAAO,GAAGA,MAAM,EAAI0M,EAAQ1M,OAC3EiJ,EAAO5zC,GAAK0Y,EAAO1Y,EACnB4zC,EAAO70C,GAAK2Z,EAAO3Z,EAEnBnE,KAAKwlR,cAAgB1nQ,EAErB9d,KAAKmkR,WAAWnkR,KAAK6jR,gBAAgB7qO,IACrCh5C,KAAKoK,QAAQ,MAAO,CAChBmf,cAAe5kB,EACfq0C,OAAQh5C,KAAK+iR,aACbxkM,OAAQv+E,KAAKu+E,UAErB,EAEA4mM,WAAY,SAASxgR,GACZ3E,KAAKwlR,eAAkBxlR,KAAKylR,iBAIjCzlR,KAAKwlR,cAAgB,KACrBxlR,KAAK0lR,UAAY,IAAI/2Q,KAErB3O,KAAKoK,QAAQ,SAAU,CACnBmf,cAAe5kB,EACfq0C,OAAQh5C,KAAK+iR,aACbxkM,OAAQv+E,KAAKu+E,WAErB,EAEAknM,aAAc,WACV,OAAO,IAAI92Q,MAAU3O,KAAK0lR,WAAa,GAAK,EAChD,EAEAJ,YAAa,SAAS3gR,GAClB,GAAI3E,KAAKoK,QAAQ,YAAa,CAAEmf,cAAe5kB,IAAM,CACjD,IAAI6a,EAAQ7a,EAAE2kB,QAAQ,GAClB9J,GACAA,EAAMmb,QAEd,CACJ,EAEAs1D,OAAQ,SAAStrF,GACb,IAAIorC,EAAQ/vC,KAAKwjR,SAAS/mO,QAAQ1M,MAC9BU,EAAOzwC,KAAK2lR,aAAa51O,GACzB61O,EAAgB,IAAIxwQ,EAAE0mH,MAAMn3H,EAAE45E,OAAOn5E,EAAGT,EAAE45E,OAAOp6E,GACjD0hR,EAAiB7lR,KAAK8jR,eAAe8B,EAAen1O,GAEpDwrF,EADcj8H,KAAK8+Q,gBAAgB+G,EAAgBp1O,GACzBL,WAAWw1O,EAAcxgR,GAAIwgR,EAAczhR,GAEzEnE,KAAKukR,YAAYtoJ,EAAaxrF,GAC9BzwC,KAAKoK,QAAQ,UAAW,CAAEmf,cAAe5kB,GAC7C,EAEAghR,aAAc,SAASr+L,GACnB,IACIw+L,EADQ9lR,KAAK4jR,aAAet8L,EACZtnF,KAAKmH,QAAQ+vM,QAC7BzmK,EAAOrtC,EAAK+tB,IAAI20P,GAAS1iR,EAAK+tB,IAAI,GAEtC,OAAO/tB,EAAKkT,MAAMm6B,EACtB,EAEA08B,OAAQ,WACAntE,KAAKy7Q,aACLz7Q,KAAKy7Q,YAAYlsP,OAAOvvB,KAAKu+E,SAAUv+E,KAAKywC,QAGhDzwC,KAAKy/Q,YAAcz/Q,KAAK+iR,YAAW,GACnC/iR,KAAK+lR,iBACL/lR,KAAKoK,QAAQ,eACbpK,KAAKoK,QAAQ,QAAS,CAClB40Q,UAAWh/Q,KAAKmH,QAAQyjB,SAASo0P,WAEzC,EAEA+G,eAAgB,WACZ,IAAIvC,EAAWxjR,KAAKwjR,SAChBp+Q,EAAIo+Q,EAAS7wP,WAAWvtB,EACxBjB,EAAIq/Q,EAAS7wP,WAAWxuB,EACxB4rC,EAAQ/vC,KAAK4jR,aACbtM,EAAKt3Q,KAAK83Q,SAASR,GACnB/5I,EAAUv9H,KAAK8+Q,gBAAgBxH,GAAIhhQ,QAEvCktQ,EAAS/mO,QAAQnmC,OAAQ,EACzBktQ,EAAS3tO,QACT2tO,EAASlkM,WAAW3kD,SAEpB,IAAI8V,EAAOzwC,KAAKywC,OAChB+yO,EAAS7wP,WAAW0zD,eAAiBx8C,EAAI,EAAG7pC,KAAKmH,QAAQkxQ,QAAU5nO,GACnE+yO,EAAS7wP,WAAW2zD,SAAWz8C,EAAI,EAAG7pC,KAAKmH,QAAQmxQ,QAAU7nO,GAE7D,IAAIu1O,EAAU,CAAEtvQ,KAAM6mH,EAAQn4H,EAAG+T,IAAK42B,EAAQwtF,EAAQn4H,GAClD6gR,EAAU,CAAEvvQ,KAAM6mH,EAAQp5H,EAAGgV,IAAK42B,EAAQwtF,EAAQp5H,GAOtD,GALInE,KAAKmH,QAAQo8Q,aACbyC,EAAQ7sQ,IAAM,GAAK42B,EACnBi2O,EAAQtvQ,KAAOsvQ,EAAQ7sQ,MAGG,IAA1BnZ,KAAKmH,QAAQqtK,SAAoB,CACjC,IAAIxnG,EAAWhtE,KAAKgtE,WACpBg5M,EAAQtvQ,IAAMuvQ,EAAQvvQ,IAAM,EAC5BsvQ,EAAQ7sQ,IAAM6zD,EAASjhE,MACvBk6Q,EAAQ9sQ,IAAM6zD,EAAShhE,MAC3B,CAEA5G,EAAEqgF,cACFthF,EAAEshF,cACFrgF,EAAEwgF,YAAYogM,EAAQtvQ,IAAKsvQ,EAAQ7sQ,KACnChV,EAAEyhF,YAAYqgM,EAAQvvQ,IAAKuvQ,EAAQ9sQ,KAEnCnZ,KAAKklR,aAAe,CAAE9/Q,EAAG4gR,EAAS7hR,EAAG8hR,EACzC,EAEAC,cAAe,WACX,IAAIvoI,EAAO39I,KAAKmH,QAAQ0zQ,OACpBA,EAAS76Q,KAAK66Q,OAAS,GACV76Q,KAAKmmR,WAEXv5N,QAEX,IAAK,IAAIrlD,EAAI,EAAGA,EAAIo2I,EAAKn2I,OAAQD,IAAK,CAClC,IAAIJ,EAAUw2I,EAAKp2I,GACf7B,EAAOyB,EAAQzB,MAAQ,QACvB9E,EAAWZ,KAAKmH,QAAQk8Q,cAAc39Q,GACtCsqD,EAAOvlC,EAAQ5P,IAAIggQ,OAAOn1Q,GAE9Bm1Q,EAAOl5Q,KAAK,IAAIquD,EAAKhwD,KAAMwI,EAAW,CAAC,EAAG5H,EAAUuG,IACxD,CACJ,EAEAy8Q,WAAY,SAASnzO,GAEjB,OADAA,EAAOuoF,EAAevoF,EAAMzwC,KAAKmH,QAAQspC,MAClCzwC,KAAKmH,QAAQ+vM,QAAUrtK,EAAI,EAAG4G,EACzC,EAEA4vC,KAAM,SAAS17E,GACX,GAAK3E,KAAKylR,eAAV,CAIA,IAAIzqI,EAASh7I,KAAK+jR,YAAYp/Q,GAC9B3E,KAAKoK,QAAQ,QAAS,CAClBmf,cAAe5kB,EACf0e,SAAUrjB,KAAK8jR,eAAe9oI,IALlC,CAOJ,EAEAuqI,WAAY,SAAS5gR,GAEjB,IAAyB,IADX3E,KAAKmH,QACPgjO,WACHnqO,KAAKoK,QAAQ,YAAa,CAAEmf,cAAe5kB,IAAM,CAClD,IAAIyhR,EAASpmR,KAAKywC,OAhmBV,EAimBJuqG,EAASh7I,KAAK+jR,YAAYp/Q,GAC1B0e,EAAWrjB,KAAK8jR,eAAe9oI,GAE/BhiG,EADWh5C,KAAK8+Q,gBAAgBz7P,EAAU+iQ,GACxBh2O,WAAW4qG,EAAO51I,GAAI41I,EAAO72I,GACnDnE,KAAKukR,YAAYvrO,EAAQotO,GACzBpmR,KAAKoK,QAAQ,UAAW,CAAEmf,cAAe5kB,GAC7C,CAER,EAEAkxN,YAAa,SAASlxN,GAClBA,EAAEwE,iBACF,IAAI47B,EAAQta,EAAQ0mK,QAAQxsL,GAAK,GAAK,EAAI,EACtCwC,EAAUnH,KAAKmH,QACfk/Q,EAAWrmR,KAAKywC,OAChB21O,EAAS1rG,EAAM2rG,EAAWthP,EAAO59B,EAAQkxQ,QAASlxQ,EAAQmxQ,SAE9D,IAAyB,IAArBnxQ,EAAQgjO,UAAsBi8C,IAAWC,IACpCrmR,KAAKoK,QAAQ,YAAa,CAAEmf,cAAe5kB,IAAM,CAClD,IAAIq2I,EAASh7I,KAAK+jR,YAAYp/Q,GAC1B0e,EAAWrjB,KAAK8jR,eAAe9oI,GAE/BhiG,EADWh5C,KAAK8+Q,gBAAgBz7P,EAAU+iQ,GACxBh2O,WAAW4qG,EAAO51I,GAAI41I,EAAO72I,GACnDnE,KAAKukR,YAAYvrO,EAAQotO,GAEzBpmR,KAAKoK,QAAQ,UAAW,CAAEmf,cAAe5kB,GAC7C,CAER,IAIJ8lB,EAAQF,GAAG2M,OAAOssI,EAErB,CAxqBD,CAwqBG1iK,OAAOH,MAAM+G,QAUE/G,OAElB,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfk3L,EAAUl3L,EAAM8pB,QAAQotK,QAAU,CAAC,EACnCrvL,EAAa7H,EAAM6H,WACnBvF,EAAUC,MAAMD,QAIhBqjR,EAAQ,CACZ,EAEA99Q,EAAW89Q,EAAO,CACdC,WAAY,SAASr7H,GACjB,OAAO7nJ,KAAKoU,IAAIyzI,GARV,IASV,EACAs7H,UAAW,SAAS74P,GAChB,YAAsB,IAARA,CAClB,EAEA84P,YAAa,SAAS94P,GAClB,OAAO,MAAQA,CACnB,EAIAm1I,SAAU,SAASn1I,GACf,OAAOA,IAAQltB,OAAOktB,EAC1B,EAIAq3I,IAAK,SAASr3I,EAAK7b,GACf,OAAOrR,OAAOwO,eAAe1E,KAAKojB,EAAK7b,EAC3C,EAIAlJ,SAAU,SAAS+kB,GACf,MAA8C,mBAAvCltB,OAAO4H,UAAUoJ,SAASlH,KAAKojB,EAC1C,EACA+4P,UAAW,SAAS/4P,GAChB,MAA8C,oBAAvCltB,OAAO4H,UAAUoJ,SAASlH,KAAKojB,EAC1C,EACAg5P,OAAQ,SAASh5P,EAAKjoB,GAClB,OAAOjF,OAAO4H,UAAUoJ,SAASlH,KAAKojB,IAAQ,WAAajoB,EAAO,GACtE,EAIA2vD,SAAU,SAAS1nC,GACf,OAAQ7kB,MAAMC,WAAW4kB,KAASvb,SAASub,EAC/C,EAIAk5J,QAAS,SAASl5J,GACd,GAAY,OAARA,EACA,OAAO,EAEX,GAAI1qB,EAAQ0qB,IAAQ24P,EAAM19Q,SAAS+kB,GAC/B,OAAsB,IAAfA,EAAInmB,OAEf,IAAK,IAAIsK,KAAO6b,EACZ,GAAI24P,EAAMthH,IAAIr3I,EAAK7b,GACf,OAAO,EAGf,OAAO,CACX,EACA80Q,aAAc,SAASj5Q,EAAaE,GAChC,GAAKy4Q,EAAMxjH,SAASj1J,GAIpB,IAAK,IAAIzL,KAAQyL,EACbF,EAAYvL,GAAQyL,EAAOzL,EAEnC,EAOAykR,UAAW,SAAuB72Q,EAAMtH,GAEpC,IADA,IAAIqS,EAAQ,GACHxT,EAAI,EAAGA,EAAIyI,IAAQzI,EACxBwT,EAAMxT,GAAKmB,EAEf,OAAOqS,CACX,EACA+rQ,gBAAiB,SAAS1jJ,GAEtB,IADA,IAAI2jJ,EAAM,GACDx/Q,EAAI,EAAGA,EAAI67H,EAAO57H,OAAQD,IAAK,CACpC,IAAIsrH,EAAIuQ,EAAO77H,GACfw/Q,EAAIplR,KAAKkxH,EAAEztH,EAAI,IAAMytH,EAAE1uH,EAC3B,CACA,OAAO4iR,EAAIl8Q,KAAK,IACpB,EACAm8Q,kBAAmB,SAAS/hR,GACxB,IAAI+M,EAAI/M,EAAE2F,MAAM,KAAMw4H,EAAS,GAC/B,GAAIpxH,EAAExK,OAAS,GAAM,EACjB,KAAM,0BAEV,IAAK,IAAID,EAAI,EAAGA,EAAIyK,EAAExK,OAAQD,GAAK,EAC/B67H,EAAOzhI,KAAK,IAAIk2L,EAAQ/7D,MACpBtiH,SAASxH,EAAEzK,GAAI,IACfiS,SAASxH,EAAEzK,EAAI,GAAI,MAG3B,OAAO67H,CACX,EAOA6jJ,cAAe,SAASxqQ,EAAOioK,GAC3B,OAAOlrK,SAASnW,KAAKyN,MAAMzN,KAAK+sB,SAAWs0J,GAASjoK,EAAO,GAC/D,EAIAyqQ,IAAK,SAAS15P,EAAIsrC,GAEd,GADAA,EAAKtrC,GACDA,EAAGoW,WACH,IAAK,IAAIr8B,EAAI,EAAGA,EAAIimB,EAAGoW,WAAWp8B,OAAQD,IAAK,CAC3C,IAAI4nC,EAAO3hB,EAAGoW,WAAWr8B,GACzBvH,KAAKknR,IAAI/3O,EAAM2pB,EACnB,CAER,EAIAquN,eAAgB,SAASniR,GACrB,OAAU,OAANA,GAAsB,IAARA,EAAER,EACT,EAEmB,IAAvBnB,KAAKwwC,MAAM7uC,EAAEiX,EAAGjX,EAAER,GAAWnB,KAAK6zH,EAC7C,EAKAkwJ,iBAAkB,SAASpiR,GAGvB,MAAO,CAFE3B,KAAKo7E,KAAKz5E,EAAEE,EAAIF,EAAEE,EAAIF,EAAEN,EAAIM,EAAEN,GAC9BrB,KAAKo7E,KAAKz5E,EAAEiX,EAAIjX,EAAEiX,EAAIjX,EAAER,EAAIQ,EAAER,GAE3C,IAqEJ8hR,EAAMvvQ,KAAO,SAAStL,GAClB,OAAOA,EAASA,EAAS,GAAK,EAAI,EAAI,CAC1C,EAEA66Q,EAAMe,UAAY,SAAS9oM,EAAQ5yE,GAC/B,OAAiC,IAlBrC,SAAoBmK,EAAOnK,GACvB,GAAImK,GAASnK,EACT,OAAO,EAEX,IAAI27Q,EAAW37Q,EAAIvG,EAAI0Q,EAAM1Q,EACzBmiR,EAAWzxQ,EAAM3R,EAAIwH,EAAIxH,EACzB+wJ,EAAO7xJ,KAAK6xJ,KAAKoyH,EAAWC,GAChC,OAAIA,GAAY,EACLD,EAAW,EAAIpyH,EAAQ,EAAI7xJ,KAAK6zH,GAAMg+B,EAE1CA,EAAO7xJ,KAAK6zH,EACvB,CAOWswJ,CAAWjpM,EAAQ5yE,GAAatI,KAAK6zH,EAChD,EAIAovJ,EAAMhlR,QAAU,SAASspC,EAAK1H,EAAUukP,GACpC,IAAK,IAAIlgR,EAAI,EAAGA,EAAIqjC,EAAIpjC,OAAQD,IAC5B27B,EAAS34B,KAAKk9Q,EAAS78O,EAAIrjC,GAAIA,EAAGqjC,EAE1C,EAEA07O,EAAMtpE,IAAM,SAASpyK,EAAKylJ,GACtB,IAAK,IAAI9oL,EAAI,EAAGA,EAAIqjC,EAAIpjC,SAAUD,EAC9B,GAAI8oL,EAAUzlJ,EAAIrjC,IACd,OAAOqjC,EAAIrjC,GAGnB,OAAO,IACX,EAEA++Q,EAAMj6Q,OAAS,SAASu+B,EAAK88O,GAEzB,IADA,IAAIj/G,GACwC,KAApCA,EAAK69G,EAAM3wQ,QAAQi1B,EAAK88O,KAC5B98O,EAAIpgC,OAAOi+J,EAAI,GAEnB,OAAO79H,CACX,EAEA07O,EAAM/wP,SAAW,SAASqV,EAAKjd,GAC3B,OAAoC,IAA7B24P,EAAM3wQ,QAAQi1B,EAAKjd,EAC9B,EAEA24P,EAAM3wQ,QAAU,SAASi1B,EAAK88O,GAC1B,OAAO/kR,EAAE8yB,QAAQiyP,EAAM98O,EAC3B,EAEA07O,EAAMqB,KAAO,SAASn7M,EAAMtpC,EAAU2R,EAAK7Y,GAGvC,IAFA,IAAI0gB,EAAUp1C,UAAUE,OAAS,EAExBD,EAAI,EAAGA,EAAIilE,EAAKhlE,OAAQD,IAAK,CAClC,IAAImB,EAAQ8jE,EAAKjlE,GACZm1C,EAKD7H,EAAM3R,EAAS34B,KAAKyxB,EAAS6Y,EAAKnsC,EAAOnB,EAAGilE,IAJ5C33B,EAAMnsC,EACNg0C,GAAU,EAKlB,CAEA,IAAKA,EACD,KAAM,8CAGV,OAAO7H,CACX,EAEAyxO,EAAMnwP,KAAO,SAASyU,EAAK1H,EAAUlH,GACjC,IAAIllB,EAQJ,OAPAwvQ,EAAMtpE,IAAIpyK,GAAK,SAASliC,EAAO4Q,EAAOkzD,GAClC,QAAItpC,EAAS34B,KAAKyxB,EAAStzB,EAAO4Q,EAAOkzD,KACrC11D,EAASpO,GACF,EAGf,IACOoO,CACX,EAEAwvQ,EAAMp8Q,MAAQ,SAAS0gC,EAAKg9O,EAAY5rP,GACpC,OAAmB,IAAf4O,EAAIpjC,OACG,KAEP8+Q,EAAMG,YAAYmB,GACXh9O,EAAI,GAGR07O,EAAMnwP,KAAKyU,EAAKg9O,EAAY5rP,EACvC,EAKAsqP,EAAMnpN,OAAS,SAASvyB,EAAK/+B,EAASyB,GAElC,OADAs9B,EAAIpgC,OAAO8C,EAAU,EAAGzB,GACjB++B,CACX,EAEA07O,EAAMt1M,IAAM,SAASpmC,EAAK1H,EAAUlH,GAIhC,IAHA,IACItzB,EADAoO,GAAS,EAGJvP,EAAI,EAAGA,EAAIqjC,EAAIpjC,SACpBkB,EAAQkiC,EAAIrjC,GACZuP,EAASA,GAAUosB,EAAS34B,KAAKyxB,EAAStzB,EAAOnB,EAAGqjC,IAFxBrjC,KAShC,OAAOuP,CACX,EAEAwvQ,EAAM9vN,MAAQ,SAAS5rB,GACnBA,EAAIpgC,OAAO,EAAGogC,EAAIpjC,OACtB,EAQA8+Q,EAAMuB,OAAS,SAAS3iR,EAAG+W,EAAG6rQ,GAC1B,GAAIxB,EAAMG,YAAYvhR,GAClB,KAAM,gCAEV,GAAIohR,EAAMG,YAAYxqQ,GAClB,KAAM,iCAEV,GAAI/W,EAAEsC,QAAUyU,EAAEzU,OACd,KAAM,0CAGV,IAAcD,EAAVypE,EAAM,GAEV,IAAKzpE,EAAI,EAAGA,EAAIrC,EAAEsC,OAAQD,IACtBypE,EAAIrvE,KAAK,CAAEyD,EAAKF,EAAEqC,GAAIpD,EAAK8X,EAAE1U,KAgBjC,IAdI++Q,EAAMG,YAAYqB,GAClB92M,EAAIh1D,MAAK,SAAShX,EAAG4tH,GACjB,OAAO5tH,EAAEI,EAAIwtH,EAAExtH,CACnB,IAGA4rE,EAAIh1D,MAAK,SAAShX,EAAG4tH,GACjB,OAAOk1J,EAAS9iR,EAAEI,EAAGwtH,EAAExtH,EAC3B,IAGJkhR,EAAM9vN,MAAMtxD,GACZohR,EAAM9vN,MAAMv6C,GAEP1U,EAAI,EAAGA,EAAIypE,EAAIxpE,OAAQD,IACxBrC,EAAEvD,KAAKqvE,EAAIzpE,GAAGnC,GACd6W,EAAEta,KAAKqvE,EAAIzpE,GAAGpD,EAEtB,EAEAmiR,EAAM3wB,SAAW,SAAS/qN,EAAKqpB,GAC3BrpB,EAAIjpC,KAAKyG,MAAMwiC,EAAKqpB,EACxB,EAEA,IAAI8zN,EACW,SAAS1yL,GAChB,OAAUhyF,KAAKg3H,IAAIhlC,EAAMhyF,KAAK6zH,IAAM,EAAK,EAC7C,EAQA8wJ,EAASrnR,EAAMiH,MAAM7E,OAAO,CAC5BoF,KAAM,WACFnI,KAAKioR,SAAW,GAChBjoR,KAAKqH,OAAS,EACdrH,KAAKk8C,KAAO,EACZl8C,KAAK6iI,SAAW,GAChB7iI,KAAKsnB,SAAW,IAChBtnB,KAAKkoR,SAAW,KAChBloR,KAAK0J,SAAW,GAChB,IAAIy+Q,EAAQnoR,KACZA,KAAKuyC,WAAaw1O,EAClB/nR,KAAKooR,cAAgB,WACjBD,EAAME,cACV,CACJ,EACAC,WAAY,SAASpjR,GACjBlF,KAAKioR,SAAStmR,KAAKuD,EACvB,EACAqjR,WAAY,SAASz+Q,GACjB9J,KAAK0J,SAAS/H,KAAKmI,EACvB,EACA0+Q,cAAe,SAAS1+Q,GACpB9J,KAAK0J,SAAW/G,EAAE07B,KAAKr+B,KAAK0J,UAAU,SAAS9E,GAC3C,OAAOA,IAAMkF,CACjB,GACJ,EACAM,QAAS,WACL,IAAI+9Q,EAAQnoR,KACRA,KAAK0J,UACL48Q,EAAMhlR,QAAQtB,KAAK0J,UAAU,SAAS9E,GAClC,OAAOA,EAAE2F,KAAsB,OAAjB49Q,EAAMM,OAAkBN,EAAMM,OAASN,EACzD,GAER,EACAO,OAAQ,WACR,EACAC,OAAQ,SAASrqP,GACbt+B,KAAK4oR,WAAW5oR,KAAKk8C,KAAM5d,EAC/B,EACAsqP,WAAY,SAAS7sQ,EAAMuiB,GACvBt+B,KAAKqH,OAAShE,KAAK8V,IAAI,EAAG9V,KAAKqT,IAAI,EAAG4nB,IACtCt+B,KAAKk8C,KAAO74C,KAAK8V,IAAI,EAAG9V,KAAKqT,IAAI,EAAGqF,IACpC/b,KAAKkoR,UAAW,IAAIv5Q,MAAO1F,UACtBjJ,KAAK6oR,aACN7oR,KAAK6oR,WAAa/nR,OAAOm+C,YAAYj/C,KAAKooR,cAAepoR,KAAK6iI,UAEtE,EACAr6G,KAAM,WACExoB,KAAK6oR,aACL/nR,OAAOo+C,cAAcl/C,KAAK6oR,YAC1B7oR,KAAK6oR,WAAa,KAGlB7oR,KAAKoK,UAGb,EACA8sC,KAAM,SAAS8B,GACkB,IAAzBh5C,KAAKioR,SAASzgR,SAGH,OAAXwxC,IACAh5C,KAAKyoR,OAASzvO,GAElBh5C,KAAK8oR,YACL9oR,KAAK4oR,WAAW,EAAG,GACvB,EACAvyQ,QAAS,WACLrW,KAAK4oR,WAAW,EAAG,EACvB,EACAE,UAAW,WACP,GAA6B,IAAzB9oR,KAAKioR,SAASzgR,OAGlB,IAAK,IAAID,EAAI,EAAGA,EAAIvH,KAAKioR,SAASzgR,OAAQD,IACtCvH,KAAKioR,SAAS1gR,GAAGuhR,WAEzB,EACAC,UAAW,WAGP,IAFA,IAAIrgR,EAAQ1I,KAAKuyC,WAAWvyC,KAAKk8C,MAExB30C,EAAI,EAAGA,EAAIvH,KAAKioR,SAASzgR,OAAQD,IACtCvH,KAAKioR,SAAS1gR,GAAG4/C,OAAOz+C,EAEhC,EACA2/Q,aAAc,WACV,IAAIr1O,GAAM,IAAIrkC,MAAO1F,UACjBqzC,EAAatJ,EAAMhzC,KAAKkoR,SAC5BloR,KAAKkoR,SAAWl1O,EAChB,IAAIg2O,EAAY1sO,EAAat8C,KAAKsnB,UAAatnB,KAAKk8C,KAAOl8C,KAAKqH,OAAS,GAAK,GAC1EhE,KAAKoU,IAAIuxQ,IAAa3lR,KAAKoU,IAAIzX,KAAKk8C,KAAOl8C,KAAKqH,QAChDrH,KAAKk8C,KAAOl8C,KAAKqH,OAEjBrH,KAAKk8C,MAAQ8sO,EAGjB,IACIhpR,KAAK+oR,WACT,CAAE,QACE/oR,KAAK0oR,OAAOn+Q,KAAKvK,MACbA,KAAKqH,QAAUrH,KAAKk8C,MACpBl8C,KAAKwoB,MAEb,CACJ,IAGJ7nB,EAAM6H,WAAWqvL,EAAS,CACtB1vL,KAAM,SAAS0D,GACXlL,EAAMwH,KAAK0D,EAASgsL,EAAQttK,GAChC,EAEA+7P,MAAOA,EACP2C,MArVJ,SAAenzQ,EAAO0S,EAAMsqB,GACxB,QAAoB,IAATh9B,QAAuC,IAAR0S,EACtC,MAAO,GAEX,GAAIsqB,GAAQwzO,EAAMvvQ,KAAKyR,EAAO1S,IAAUwwQ,EAAMvvQ,KAAK+7B,GAC/C,KAAM,kEAKV,GAFAh9B,EAAQA,GAAS,IACjB0S,EAAOA,GAAQ1S,GACHA,IAHZg9B,EAAOA,GAAQ,IAGe4lH,IAC1B,KAAM,0BAEV,IAAwB3tH,EAApBkpB,EAAQ,GAAI1sD,GAAK,EAUjBzC,EARJ,SAA2BM,GAEvB,IADA,IAAIN,EAAI,EACDM,EAAIN,EAAI,GACXA,GAAK,GAET,OAAOA,CACX,CAEQokR,CAAkB7lR,KAAKoU,IAAIq7B,IAOnC,GAJAA,GAAQhuC,GAFRgR,GAAShR,IACT0jB,GAAQ1jB,IAEYguC,EAAO,IACvBA,GAAQA,GAERA,EAAO,EACP,MAAQ/H,EAAIj1B,EAAQg9B,IAASvrC,IAAMihB,GAC/ByrC,EAAMtyD,KAAKopC,EAAIjmC,QAInB,MAAQimC,EAAIj1B,EAAQg9B,IAASvrC,IAAMihB,GAC/ByrC,EAAMtyD,KAAKopC,EAAIjmC,GAGvB,OAAOmvD,CACX,EA6SI+zN,OAAQA,GAEf,CAzfD,CAyfGlnR,OAAOH,MAAM+G,QAEhB,SAAU/E,EAAGC,GAET,IAAIjC,EAAQG,OAAOH,MACfk3L,EAAUl3L,EAAM8pB,QAAQotK,QACxBjwL,EAAQjH,EAAMiH,MACdY,EAAa7H,EAAM6H,WACnBiiB,EAAU9pB,EAAM8pB,QAChB67P,EAAQzuF,EAAQyuF,MAChBxqJ,EAAQrxG,EAAQwmK,QAChB/nL,EAAavI,EAAMuI,WACnBqsB,EAAW+wP,EAAM/wP,SACjB1a,EAAMlY,EAAEkY,IAIRsuQ,EAAU,KAEd3gR,EAAWszH,EAAM/zH,GAAI,CACjBqhR,KAAM,SAASv2J,GACX,OAAO,IAAIiJ,EAAM97H,KAAKoF,EAAIytH,EAAEztH,EAAGpF,KAAKmE,EAAI0uH,EAAE1uH,EAC9C,EACAklR,MAAO,SAASx2J,GACZ,OAAO,IAAIiJ,EAAM97H,KAAKoF,EAAIytH,EAAEztH,EAAGpF,KAAKmE,EAAI0uH,EAAE1uH,EAC9C,EACA2Z,OAAQ,SAASpV,GACb,OAAO,IAAIozH,EAAM97H,KAAKoF,EAAIsD,EAAO1I,KAAKmE,EAAIuE,EAC9C,EACA4gR,MAAO,SAASrkR,GACZ,OAAO,IAAI62H,EAAM97H,KAAKoF,EAAIH,EAAGjF,KAAKmE,EAAIc,EAC1C,EACAo5C,UAAW,WACP,OAAsB,IAAlBr+C,KAAKwH,SACE,IAAIs0H,EAER97H,KAAKspR,MAAM,EAAItpR,KAAKwH,SAC/B,EACAA,OAAQ,WACJ,OAAOnE,KAAKo7E,KAAKz+E,KAAKoF,EAAIpF,KAAKoF,EAAIpF,KAAKmE,EAAInE,KAAKmE,EACrD,EACAsN,SAAU,WACN,MAAO,IAAMzR,KAAKoF,EAAI,IAAMpF,KAAKmE,EAAI,GACzC,EACAolR,cAAe,WACX,OAAQvpR,KAAKoF,EAAIpF,KAAKoF,EAAIpF,KAAKmE,EAAInE,KAAKmE,CAC5C,EACAqlR,SAAU,SAAkB32J,EAAGzuH,GAC3B,OAAO,IAAI03H,EAAM13H,EAAEgB,EAAIytH,EAAEztH,EAAGhB,EAAED,EAAI0uH,EAAE1uH,GAAGmlR,MAAM,IAAKF,KAAKv2J,EAC3D,EACA42J,QAAS,SAASC,GACd,IAAIC,EAAS,EACTD,IACAC,EAAS,IAAMtmR,KAAK6zH,IAExB,IAAIhyH,EAAI7B,KAAKwwC,MAAMxwC,KAAKoU,IAAIzX,KAAKmE,GAAId,KAAKoU,IAAIzX,KAAKoF,IAC/CwkR,EAASvmR,KAAK6zH,GAAK,EACnBnmG,EAAM/wB,KAAKwH,SACf,GAAe,IAAXxH,KAAKoF,EAAS,CAGd,GAAe,IAAXpF,KAAKmE,EACL,OAAO,IAAI0lR,EAAM,EAAG,GAExB,GAAI7pR,KAAKmE,EAAI,EACT,OAAO,IAAI0lR,EAAM94P,EAAK44P,EAASC,GAEnC,GAAI5pR,KAAKmE,EAAI,EACT,OAAO,IAAI0lR,EAAM94P,EAAc,EAAT44P,EAAaC,EAE3C,MACK,GAAI5pR,KAAKoF,EAAI,EAAG,CACjB,GAAe,IAAXpF,KAAKmE,EACL,OAAO,IAAI0lR,EAAM94P,EAAK,GAE1B,GAAI/wB,KAAKmE,EAAI,EACT,OAAO,IAAI0lR,EAAM94P,EAAK44P,EAASzkR,GAEnC,GAAIlF,KAAKmE,EAAI,EACT,OAAO,IAAI0lR,EAAM94P,EAAK44P,GAAU,EAAIC,EAAS1kR,GAErD,KACK,CACD,GAAe,IAAXlF,KAAKmE,EACL,OAAO,IAAI0lR,EAAM94P,EAAK,EAAI64P,GAE9B,GAAI5pR,KAAKmE,EAAI,EACT,OAAO,IAAI0lR,EAAM94P,EAAK44P,GAAU,EAAIC,EAAS1kR,IAEjD,GAAIlF,KAAKmE,EAAI,EACT,OAAO,IAAI0lR,EAAM94P,EAAK44P,GAAU,EAAIC,EAAS1kR,GAErD,CACJ,EACA4kR,SAAU,SAAS/tQ,EAAMuiB,GACrB,GAAIviB,EAAK3W,EAAIk5B,EAAGl5B,EAAG,CACf,IAAIo1C,EAAOlc,EACXA,EAAKviB,EACLA,EAAOy+B,CACX,CACA,IACiEuvO,EAAIC,EADjEpiH,EAAK,IAAI3qC,EAAKlhH,EAAK3W,EAAG2W,EAAK5X,GAAG8lR,QApFxB,KAqFNniH,EAAK,IAAI7qC,EAAK3+F,EAAGl5B,EAAGk5B,EAAGn6B,GAAG8lR,QArFpB,KAsFV,QAAIriH,EAAGrpC,MAAMupC,GAAIvyI,SAASv1B,QAClB+b,EAAK3W,IAAMk5B,EAAGl5B,GAAK2W,EAAK5X,IAAMm6B,EAAGn6B,IAG5B4X,EAAK5X,EAAIm6B,EAAGn6B,GACjB4lR,EAAKniH,EAAGxiK,GAAO0iK,EAAG1iK,EAAIwiK,EAAGxiK,IAAMpF,KAAKmE,GAAKyjK,EAAGzjK,EAAIyjK,EAAG57J,UAAc87J,EAAG3jK,EAAI2jK,EAAG97J,QAAW47J,EAAGzjK,EAAIyjK,EAAG57J,SAChGg+Q,EAAMpiH,EAAGxiK,EAAIwiK,EAAG77J,OAAa+7J,EAAG1iK,EAAI0iK,EAAG/7J,OAAU67J,EAAGxiK,EAAIwiK,EAAG77J,SAAW/L,KAAKmE,EAAIyjK,EAAGzjK,IAAO2jK,EAAG3jK,EAAIyjK,EAAGzjK,KAGnG4lR,EAAKniH,EAAGxiK,GAAO0iK,EAAG1iK,EAAIwiK,EAAGxiK,IAAMpF,KAAKmE,EAAIyjK,EAAGzjK,IAAO2jK,EAAG3jK,EAAIyjK,EAAGzjK,GAC5D6lR,EAAMpiH,EAAGxiK,EAAIwiK,EAAG77J,OAAa+7J,EAAG1iK,EAAI0iK,EAAG/7J,OAAU67J,EAAGxiK,EAAIwiK,EAAG77J,SAAW/L,KAAKmE,GAAKyjK,EAAGzjK,EAAIyjK,EAAG57J,UAAc87J,EAAG3jK,EAAI2jK,EAAG97J,QAAW47J,EAAGzjK,EAAIyjK,EAAG57J,UAEnIhM,KAAKoF,EAAI2kR,GAAM/pR,KAAKoF,EAAI4kR,GAGxC,IAGJxhR,EAAWszH,EAAO,CACd1mG,MAAO,SAASjmB,GACZ,IACIu4M,EADUv4M,EAAItI,MAAM,EAAGsI,EAAI3H,OAAS,GACvBoD,MAAM,KACnBxF,EAAIoU,SAASkuM,EAAG,GAAI,IACpBvjN,EAAIqV,SAASkuM,EAAG,GAAI,IACxB,IAAK5+M,MAAM1D,KAAO0D,MAAM3E,GACpB,OAAO,IAAI23H,EAAM12H,EAAGjB,EAE5B,IAQJ,IAAI+lR,EAActiR,EAAM7E,OACpB,CACIoF,KAAM,SAAS0qH,EAAGrmG,EAAMC,GACpBzsB,KAAKm8H,MAAQtJ,EACb7yH,KAAKwsB,KAAOA,EACZxsB,KAAKysB,MAAQA,CACjB,IAOJwwG,EAAOr1H,EAAM7E,OAAO,CACpBoF,KAAM,SAAS/C,EAAGjB,EAAG4H,EAAOC,GACxBhM,KAAKoF,EAAIA,GAAK,EACdpF,KAAKmE,EAAIA,GAAK,EACdnE,KAAK+L,MAAQA,GAAS,EACtB/L,KAAKgM,OAASA,GAAU,CAC5B,EACAupB,SAAU,SAAS4mG,GACf,OAASA,EAAM/2H,GAAKpF,KAAKoF,GAAO+2H,EAAM/2H,GAAMpF,KAAKoF,EAAIpF,KAAK+L,OAAYowH,EAAMh4H,GAAKnE,KAAKmE,GAAOg4H,EAAMh4H,GAAMnE,KAAKmE,EAAInE,KAAKgM,MAC3H,EACAi+Q,QAAS,SAAS5rM,EAAIC,GASlB,OAvKZ,YA+JgBA,IACAA,EAAKD,GAGTr+E,KAAKoF,GAAKi5E,EACVr+E,KAAKmE,GAAKm6E,EACVt+E,KAAK+L,OAAS,EAAIsyE,EAAK,EACvBr+E,KAAKgM,QAAU,EAAIsyE,EAAK,EACjBt+E,IACX,EACA8d,OAAQ,SAASugE,EAAIC,GACjB,IAAIl5E,EAAIi5E,EAAIl6E,EAAIm6E,EAOhB,OANID,aAAcy9C,IACd12H,EAAIi5E,EAAGj5E,EACPjB,EAAIk6E,EAAGl6E,GAEXnE,KAAKoF,GAAKA,EACVpF,KAAKmE,GAAKA,EACHnE,IACX,EACAu+H,MAAO,SAASrM,GACZ,IAAIj0C,EAAK56E,KAAKqT,IAAI1W,KAAKoF,EAAG8sH,EAAE9sH,GACxB84E,EAAK76E,KAAKqT,IAAI1W,KAAKmE,EAAG+tH,EAAE/tH,GACxBg6E,EAAK96E,KAAK8V,IAAKnZ,KAAKoF,EAAIpF,KAAK+L,MAASmmH,EAAE9sH,EAAI8sH,EAAEnmH,OAC9CqyE,EAAK/6E,KAAK8V,IAAKnZ,KAAKmE,EAAInE,KAAKgM,OAAUkmH,EAAE/tH,EAAI+tH,EAAElmH,QACnD,OAAO,IAAIixH,EAAKh/C,EAAIC,EAAIC,EAAKF,EAAIG,EAAKF,EAC1C,EACAK,OAAQ,WACJ,OAAO,IAAIu9C,EAAM97H,KAAKoF,EAAIpF,KAAK+L,MAAQ,EAAG/L,KAAKmE,EAAInE,KAAKgM,OAAS,EACrE,EACAkZ,IAAK,WACD,OAAO,IAAI42G,EAAM97H,KAAKoF,EAAIpF,KAAK+L,MAAQ,EAAG/L,KAAKmE,EACnD,EACAsoB,MAAO,WACH,OAAO,IAAIqvG,EAAM97H,KAAKoF,EAAIpF,KAAK+L,MAAO/L,KAAKmE,EAAInE,KAAKgM,OAAS,EACjE,EACA0gB,OAAQ,WACJ,OAAO,IAAIovG,EAAM97H,KAAKoF,EAAIpF,KAAK+L,MAAQ,EAAG/L,KAAKmE,EAAInE,KAAKgM,OAC5D,EACAwgB,KAAM,WACF,OAAO,IAAIsvG,EAAM97H,KAAKoF,EAAGpF,KAAKmE,EAAInE,KAAKgM,OAAS,EACpD,EACAuxH,QAAS,WACL,OAAO,IAAIzB,EAAM97H,KAAKoF,EAAGpF,KAAKmE,EAClC,EACAs5H,SAAU,WACN,OAAO,IAAI3B,EAAM97H,KAAKoF,EAAIpF,KAAK+L,MAAO/L,KAAKmE,EAC/C,EACAu5H,WAAY,WACR,OAAO,IAAI5B,EAAM97H,KAAKoF,EAAGpF,KAAKmE,EAAInE,KAAKgM,OAC3C,EACAwxH,YAAa,WACT,OAAO,IAAI1B,EAAM97H,KAAKoF,EAAIpF,KAAK+L,MAAO/L,KAAKmE,EAAInE,KAAKgM,OACxD,EACA5E,MAAO,WACH,OAAO,IAAI61H,EAAKj9H,KAAKoF,EAAGpF,KAAKmE,EAAGnE,KAAK+L,MAAO/L,KAAKgM,OACrD,EACA66K,QAAS,WACL,OAAQ7mL,KAAK+L,QAAU/L,KAAKgM,MAChC,EACAmlD,OAAQ,SAASm7B,GACb,OAAOtsF,KAAKoF,IAAMknF,EAAKlnF,GAAKpF,KAAKmE,IAAMmoF,EAAKnoF,GAAKnE,KAAK+L,QAAUugF,EAAKvgF,OAAS/L,KAAKgM,SAAWsgF,EAAKtgF,MACvG,EACAm+Q,cAAe,SAAS/vJ,GACpB,IAAI9tC,EAAOtsF,KAAKoH,QACZg8H,EAASpjI,KAAK8qI,cAAc1Q,GAC5BwD,EAAKwF,EAAO,GACZvF,EAAKuF,EAAO,GACZtF,EAAKsF,EAAO,GACZrF,EAAKqF,EAAO,GAOhB,OALA92C,EAAKlnF,EAAI/B,KAAKqT,IAAIonH,EAAG14H,EAAGw4H,EAAGx4H,EAAGy4H,EAAGz4H,EAAG24H,EAAG34H,GACvCknF,EAAKnoF,EAAId,KAAKqT,IAAIonH,EAAG35H,EAAGy5H,EAAGz5H,EAAG05H,EAAG15H,EAAG45H,EAAG55H,GACvCmoF,EAAKvgF,MAAQ1I,KAAK8V,IAAI2kH,EAAG14H,EAAGw4H,EAAGx4H,EAAGy4H,EAAGz4H,EAAG24H,EAAG34H,GAAKknF,EAAKlnF,EACrDknF,EAAKtgF,OAAS3I,KAAK8V,IAAI2kH,EAAG35H,EAAGy5H,EAAGz5H,EAAG05H,EAAG15H,EAAG45H,EAAG55H,GAAKmoF,EAAKnoF,EAE/CmoF,CACX,EACAw+C,cAAe,SAAS1Q,GACpB,IAAI9tC,EAAOtsF,KACP0E,EAAI4nF,EAAK/N,SACTu/C,EAAKxxC,EAAKkxC,cAAcrsF,OAAOzsC,EAAG,IAAM01H,GAK5C,MAAO,CAJE9tC,EAAKixC,UAAUpsF,OAAOzsC,EAAG,IAAM01H,GAC/B9tC,EAAKmxC,WAAWtsF,OAAOzsC,EAAG,IAAM01H,GAGzB0D,EAFPxxC,EAAKoxC,aAAavsF,OAAOzsC,EAAG,IAAM01H,GAG/C,EACA3oH,SAAU,SAAS8iO,GAGf,OAFAA,EAAYA,GAAa,IAElBv0O,KAAKoF,EAAImvO,EAAYv0O,KAAKmE,EAAIowO,EAAYv0O,KAAK+L,MAAQwoO,EAAYv0O,KAAKgM,MACnF,EACA+jC,MAAO,SAASwqF,EAAQC,EAAQ4vJ,EAAYC,EAAejwJ,GACvD,IAAIwD,EAAK59H,KAAKu9H,UACV+sJ,EAAatqR,KAAKu+E,SACtBq/C,EAAGzsF,OAAOm5O,EAAY,IAAMlwJ,GAAOjpF,OAAOk5O,EAAejwJ,GAEzD,IAAIr1F,EAAQqlP,EAAWf,MAAMzrJ,GACzB2sJ,EAAS,IAAIzuJ,EAAM/2F,EAAM3/B,EAAIm1H,EAAQx1F,EAAM5gC,EAAIq2H,GAC/CltH,EAAWy3B,EAAMskP,MAAMkB,IAC3B3sJ,EAAKA,EAAGwrJ,KAAK97Q,IACV6jC,OAAOk5O,EAAe,IAAMjwJ,GAAOjpF,OAAOm5O,EAAYlwJ,GAEzDp6H,KAAKoF,EAAIw4H,EAAGx4H,EACZpF,KAAKmE,EAAIy5H,EAAGz5H,EAEZnE,KAAK+L,OAASwuH,EACdv6H,KAAKgM,QAAUwuH,CACnB,EAEA/pF,KAAM,SAASA,GAKX,OAJAzwC,KAAKoF,GAAKqrC,EACVzwC,KAAKmE,GAAKssC,EACVzwC,KAAK+L,OAAS0kC,EACdzwC,KAAKgM,QAAUykC,EACRzwC,IACX,EAEA2nK,SAAU,SAASr7E,GACf,IAAIkxC,EAAcx9H,KAAKw9H,cACnBgtJ,EAAkBl+L,EAAKkxC,cAG3B,QAFiBA,EAAYp4H,EAAIknF,EAAKlnF,GAAKo4H,EAAYr5H,EAAImoF,EAAKnoF,GAC5DqmR,EAAgBplR,EAAIpF,KAAKoF,GAAKolR,EAAgBrmR,EAAInE,KAAKmE,EAE/D,IAGA64H,EAAOp1H,EAAM7E,OAAO,CACpBoF,KAAM,SAAS4D,EAAOC,GAClBhM,KAAK+L,MAAQA,EACb/L,KAAKgM,OAASA,CAClB,IA4BJ,SAASy+Q,EAAcC,EAAQC,EAAMC,EAAQC,EAAMC,GAC/C,IAAIC,GAAgBJ,EAAKvlR,EAAIslR,EAAOtlR,IAAMylR,EAAK1mR,EAAIymR,EAAOzmR,IAAQwmR,EAAKxmR,EAAIumR,EAAOvmR,IAAM0mR,EAAKzlR,EAAIwlR,EAAOxlR,GACxG,GANgB8lJ,EAMD6/H,IALR1nR,KAAKoU,IAAIyzI,GAAOi+H,GAKvB,CANJ,IAAoBj+H,EAaZh5B,IAFSw4J,EAAOvmR,EAAIymR,EAAOzmR,IAAM0mR,EAAKzlR,EAAIwlR,EAAOxlR,IAAQslR,EAAOtlR,EAAIwlR,EAAOxlR,IAAMylR,EAAK1mR,EAAIymR,EAAOzmR,IAEtF4mR,EACX9lR,IAFSylR,EAAOvmR,EAAIymR,EAAOzmR,IAAMwmR,EAAKvlR,EAAIslR,EAAOtlR,IAAQslR,EAAOtlR,EAAIwlR,EAAOxlR,IAAMulR,EAAKxmR,EAAIumR,EAAOvmR,IAEtF4mR,EAEf,IAAID,KAAc54J,EAAI,GAAKA,EAAI,GAAKjtH,EAAI,GAAKA,EAAI,GAQjD,OAAO,IAAI62H,EAAM4uJ,EAAOtlR,EAAK8sH,GAAKy4J,EAAKvlR,EAAIslR,EAAOtlR,GAAKslR,EAAOvmR,EAAK+tH,GAAKy4J,EAAKxmR,EAAIumR,EAAOvmR,GAfxF,CAgBJ,CA9CA64H,EAAK30H,UAAU2iR,MAAQ,IAAIhuJ,EAAK,EAAG,GAEnCC,EAAKgrC,OAAS,SAAS37E,GAKnB,OAJMA,aAAgB2wC,IAClB3wC,EAAO,IAAI2wC,EAAK3wC,EAAKlnF,EAAGknF,EAAKnoF,EAAGmoF,EAAKvgF,MAAOugF,EAAKtgF,SAG9CsgF,CACX,EAEA2wC,EAAKrwE,MAAQ,WACT,OAAO,IAAIqwE,EAAK,EAAG,EAAG,EAAG,EAC7B,EAEAA,EAAKe,WAAa,SAASnL,EAAGzuH,GAC1B,GAAI0E,MAAM+pH,EAAEztH,IAAM0D,MAAM+pH,EAAE1uH,IAAM2E,MAAM1E,EAAEgB,IAAM0D,MAAM1E,EAAED,GAClD,KAAM,uBAEV,OAAO,IAAI84H,EAAK55H,KAAKqT,IAAIm8G,EAAEztH,EAAGhB,EAAEgB,GAAI/B,KAAKqT,IAAIm8G,EAAE1uH,EAAGC,EAAED,GAAId,KAAKoU,IAAIo7G,EAAEztH,EAAIhB,EAAEgB,GAAI/B,KAAKoU,IAAIo7G,EAAE1uH,EAAIC,EAAED,GAClG,EA6BA,IAAI8mR,EAAY,CACZ93E,MAAO,SAASu3E,EAAQC,EAAMC,EAAQC,GAClC,OAAOJ,EAAcC,EAAQC,EAAMC,EAAQC,EAC/C,EACA19I,SAAU,SAASu9I,EAAQC,EAAMC,EAAQC,GACrC,OAAOJ,EAAcC,EAAQC,EAAMC,EAAQC,GAAM,EACrD,EACAK,aAAc,SAAS5+L,EAAMx2E,EAAOnK,GAChC,OAAOs/Q,EAAU99I,SAASr3H,EAAOnK,EAAK2gF,EAAKixC,UAAWjxC,EAAKmxC,aACvDwtJ,EAAU99I,SAASr3H,EAAOnK,EAAK2gF,EAAKmxC,WAAYnxC,EAAKkxC,gBACrDytJ,EAAU99I,SAASr3H,EAAOnK,EAAK2gF,EAAKoxC,aAAcpxC,EAAKkxC,gBACvDytJ,EAAU99I,SAASr3H,EAAOnK,EAAK2gF,EAAKixC,UAAWjxC,EAAKoxC,aAC5D,EACAytJ,MAAO,SAAS1sJ,EAAOC,EAAOtE,GAC1B,IAAIwD,EAAKc,EAAMnB,UACXM,EAAKa,EAAMjB,WACXM,EAAKW,EAAMhB,aACXI,EAAKY,EAAMlB,cACXj/C,EAASmgD,EAAMngD,SACf67C,IACAwD,EAAKA,EAAGzsF,OAAOotC,EAAQ67C,GACvByD,EAAKA,EAAG1sF,OAAOotC,EAAQ67C,GACvB2D,EAAKA,EAAG5sF,OAAOotC,EAAQ67C,GACvB0D,EAAKA,EAAG3sF,OAAOotC,EAAQ67C,IAG3B,IAAIoE,EAAYC,EAAMlpG,SAASqoG,IAC3Ba,EAAMlpG,SAASsoG,IACfY,EAAMlpG,SAASwoG,IACfU,EAAMlpG,SAASuoG,IACfmtJ,EAAUC,aAAazsJ,EAAOb,EAAIC,IAClCotJ,EAAUC,aAAazsJ,EAAOb,EAAIG,IAClCktJ,EAAUC,aAAazsJ,EAAOZ,EAAIC,IAClCmtJ,EAAUC,aAAazsJ,EAAOV,EAAID,GAEtC,IAAKU,EAAW,CAMZ,GALAZ,EAAKa,EAAMlB,UACXM,EAAKY,EAAMhB,WACXM,EAAKU,EAAMf,aACXI,EAAKW,EAAMjB,cAEPpD,EAAO,CACP,IAAIgxJ,EAAe,IAAMhxJ,EACzBwD,EAAKA,EAAGzsF,OAAOotC,EAAQ6sM,GACvBvtJ,EAAKA,EAAG1sF,OAAOotC,EAAQ6sM,GACvBrtJ,EAAKA,EAAG5sF,OAAOotC,EAAQ6sM,GACvBttJ,EAAKA,EAAG3sF,OAAOotC,EAAQ6sM,EAC3B,CAEA5sJ,EAAYE,EAAMnpG,SAASqoG,IACvBc,EAAMnpG,SAASsoG,IACfa,EAAMnpG,SAASwoG,IACfW,EAAMnpG,SAASuoG,EACvB,CAEA,OAAOU,CACX,GAMA6sJ,EAAYzjR,EAAM7E,OAAO,CACzBoF,KAAM,SAASsuB,GACXz2B,KAAKy2B,UAAYwmG,EAAKgrC,OAAOxxI,EACjC,EAEAy6G,MAAO,SAASvqF,EAAS+sF,GAGrB,IAFA,IAAI43I,EAAc53I,EAAU76H,cAAcjO,MAAM,KAEvCrD,EAAI,EAAGA,EAAI+jR,EAAY9jR,OAAQD,IACpCo/C,EAAU3mD,KAAKurR,aAAa5kO,EAAS2kO,EAAY/jR,IAGrD,OAAOo/C,CACX,EACA4kO,aAAc,SAAS5kO,EAAS+sF,GAC5B,OAAIxqI,EAAWlJ,KAAK0zI,IACT1zI,KAAK0zI,GAAW/sF,GAGhBA,CAEf,EAEAn6B,KAAM,SAASm6B,GACX,OAAO3mD,KAAKo1F,OAAOzuC,EAAS3mD,KAAKwrR,MACrC,EACAjtM,OAAQ,SAAS53B,GACb,OAAO3mD,KAAKo1F,OAAOzuC,EAAS3mD,KAAKw/Q,QACrC,EACA/yP,MAAO,SAASk6B,GACZ,OAAO3mD,KAAKo1F,OAAOzuC,EAAS3mD,KAAKyrR,OACrC,EACAC,QAAS,SAAS/kO,GACd,OAAO3mD,KAAKo1F,OAAOzuC,EAAS3mD,KAAK2rR,SACrC,EACAzmQ,IAAK,SAASyhC,GACV,OAAO3mD,KAAKo1F,OAAOzuC,EAAS3mD,KAAK4rR,KACrC,EACAtjH,OAAQ,SAAS3hH,GACb,OAAO3mD,KAAKo1F,OAAOzuC,EAAS3mD,KAAK6rR,QACrC,EACAn/P,OAAQ,SAASi6B,GACb,OAAO3mD,KAAKo1F,OAAOzuC,EAAS3mD,KAAK8rR,QACrC,EAEAN,MAAO,SAAS/0P,EAAWkwB,GACvBA,EAAQvhD,EAAIqxB,EAAUrxB,CAC1B,EACAo6Q,QAAS,SAAS/oP,EAAWkwB,GACzBA,EAAQvhD,GAAMqxB,EAAU1qB,MAAQ46C,EAAQ56C,OAAS,GAAM,CAC3D,EACA0/Q,OAAQ,SAASh1P,EAAWkwB,GACxBA,EAAQvhD,EAAIqxB,EAAU1qB,MAAQ46C,EAAQ56C,KAC1C,EACA6/Q,KAAM,SAASn1P,EAAWkwB,GACtBA,EAAQxiD,EAAIsyB,EAAUtyB,CAC1B,EACA0nR,QAAS,SAASp1P,EAAWkwB,GACzBA,EAAQxiD,GAAMsyB,EAAUzqB,OAAS26C,EAAQ36C,QAAU,GAAM,CAC7D,EACA8/Q,QAAS,SAASr1P,EAAWkwB,GACzBA,EAAQxiD,EAAIsyB,EAAUzqB,OAAS26C,EAAQ36C,MAC3C,EACA2/Q,SAAU,SAASl1P,EAAWkwB,GAC1BA,EAAQvhD,EAAI,EACZuhD,EAAQxiD,EAAI,EACZwiD,EAAQ36C,OAASyqB,EAAUzqB,OAC3B26C,EAAQ56C,MAAQ0qB,EAAU1qB,KAC9B,EACAqpF,OAAQ,SAASzuC,EAASolO,GAItB,OAHAplO,EAAUs2E,EAAKgrC,OAAOthH,GACtBolO,EAAU/rR,KAAKy2B,UAAWkwB,GAEnBA,CACX,IAGAkjO,EAAQjiR,EAAM7E,OAAO,CACrBoF,KAAM,SAAS+pH,EAAGhtH,GACdlF,KAAKkyH,EAAIA,EACTlyH,KAAKo6H,MAAQl1H,CACjB,IAMA20H,EAASjyH,EAAM7E,OAAO,CACtBoF,KAAM,SAASjD,EAAG+W,EAAGvX,EAAGF,EAAGG,EAAG6oD,GAC1BxtD,KAAKkF,EAAIA,GAAK,EACdlF,KAAKic,EAAIA,GAAK,EACdjc,KAAK0E,EAAIA,GAAK,EACd1E,KAAKwE,EAAIA,GAAK,EACdxE,KAAK2E,EAAIA,GAAK,EACd3E,KAAKwtD,EAAIA,GAAK,CAClB,EACA47N,KAAM,SAASpkR,GACXhF,KAAKkF,GAAKF,EAAEE,EACZlF,KAAKic,GAAKjX,EAAEiX,EACZjc,KAAK0E,GAAKM,EAAEN,EACZ1E,KAAKwE,GAAKQ,EAAER,EACZxE,KAAK2E,GAAKK,EAAEL,EACZ3E,KAAKwtD,GAAKxoD,EAAEwoD,CAChB,EACA67N,MAAO,SAASrkR,GACZhF,KAAKkF,GAAKF,EAAEE,EACZlF,KAAKic,GAAKjX,EAAEiX,EACZjc,KAAK0E,GAAKM,EAAEN,EACZ1E,KAAKwE,GAAKQ,EAAER,EACZxE,KAAK2E,GAAKK,EAAEL,EACZ3E,KAAKwtD,GAAKxoD,EAAEwoD,CAChB,EACA87N,MAAO,SAAStkR,GACZ,OAAO,IAAI60H,EACP75H,KAAKkF,EAAIF,EAAEE,EAAIlF,KAAK0E,EAAIM,EAAEiX,EAC1Bjc,KAAKic,EAAIjX,EAAEE,EAAIlF,KAAKwE,EAAIQ,EAAEiX,EAC1Bjc,KAAKkF,EAAIF,EAAEN,EAAI1E,KAAK0E,EAAIM,EAAER,EAC1BxE,KAAKic,EAAIjX,EAAEN,EAAI1E,KAAKwE,EAAIQ,EAAER,EAC1BxE,KAAKkF,EAAIF,EAAEL,EAAI3E,KAAK0E,EAAIM,EAAEwoD,EAAIxtD,KAAK2E,EACnC3E,KAAKic,EAAIjX,EAAEL,EAAI3E,KAAKwE,EAAIQ,EAAEwoD,EAAIxtD,KAAKwtD,EAE3C,EACAplD,MAAO,SAASyqH,GACZ,OAAO,IAAIiJ,EAAM97H,KAAKkF,EAAI2tH,EAAEztH,EAAIpF,KAAK0E,EAAImuH,EAAE1uH,EAAInE,KAAK2E,EAAG3E,KAAKic,EAAI42G,EAAEztH,EAAIpF,KAAKwE,EAAIquH,EAAE1uH,EAAInE,KAAKwtD,EAC9F,EACAw+N,UAAW,SAAS95J,GAChB,OAAO+K,EAAKe,WAAWh+H,KAAKoI,MAAM8pH,EAAEqL,WAAYv9H,KAAKoI,MAAM8pH,EAAEsL,eACjE,EACA/rH,SAAU,WACN,MAAO,UAAYzR,KAAKkF,EAAI,IAAMlF,KAAKic,EAAI,IAAMjc,KAAK0E,EAAI,IAAM1E,KAAKwE,EAAI,IAAMxE,KAAK2E,EAAI,IAAM3E,KAAKwtD,EAAI,GAC3G,IAGJhlD,EAAWqxH,EAAQ,CACfoyJ,cAAe,SAASC,GACpB,IAAIlnR,EAAI,IAAI60H,EAOZ,OANA70H,EAAEE,EAAIgnR,EAAGhnR,EACTF,EAAEiX,EAAIiwQ,EAAGjwQ,EACTjX,EAAEN,EAAIwnR,EAAGxnR,EACTM,EAAER,EAAI0nR,EAAG1nR,EACTQ,EAAEL,EAAIunR,EAAGvnR,EACTK,EAAEwoD,EAAI0+N,EAAG1+N,EACFxoD,CACX,EACAmnR,iBAAkB,SAASn6Q,GACvB,IAAIhN,EAAI,IAAI60H,EAOZ,OANA70H,EAAEE,EAAI8M,EAAE9M,EACRF,EAAEiX,EAAIjK,EAAEiK,EACRjX,EAAEN,EAAIsN,EAAEtN,EACRM,EAAER,EAAIwN,EAAExN,EACRQ,EAAEL,EAAIqN,EAAErN,EACRK,EAAEwoD,EAAIx7C,EAAEw7C,EACDxoD,CACX,EACAonR,SAAU,SAASp6Q,GACf,GAAiB,IAAbA,EAAExK,OACF,KAAM,iDAEV,IAAIxC,EAAI,IAAI60H,EAOZ,OANA70H,EAAEE,EAAI8M,EAAE,GACRhN,EAAEiX,EAAIjK,EAAE,GACRhN,EAAEN,EAAIsN,EAAE,GACRhN,EAAER,EAAIwN,EAAE,GACRhN,EAAEL,EAAIqN,EAAE,GACRhN,EAAEwoD,EAAIx7C,EAAE,GACDhN,CACX,EACAqnR,YAAa,SAASjnR,EAAGjB,GACrB,IAAIa,EAAI,IAAI60H,EAOZ,OANA70H,EAAEE,EAAI,EACNF,EAAEiX,EAAI,EACNjX,EAAEN,EAAI,EACNM,EAAER,EAAI,EACNQ,EAAEL,EAAIS,EACNJ,EAAEwoD,EAAIrpD,EACCa,CACX,EACAm1H,KAAM,WACF,OAAO,IAAIN,EAAO,EAAG,EAAG,EAAG,EAAG,EAAG,EACrC,EACA9/E,SAAU,SAASqgF,EAAOh1H,EAAGjB,GACzB,IAAIa,EAAI,IAAI60H,EAOZ,OANA70H,EAAEE,EAAI7B,KAAKg3H,IAAID,EAAQ/2H,KAAK6zH,GAAK,KACjClyH,EAAEiX,EAAI5Y,KAAKi3H,IAAIF,EAAQ/2H,KAAK6zH,GAAK,KACjClyH,EAAEN,GAAKM,EAAEiX,EACTjX,EAAER,EAAIQ,EAAEE,EACRF,EAAEL,EAAKS,EAAIA,EAAIJ,EAAEE,EAAIf,EAAIa,EAAEiX,GAAM,EACjCjX,EAAEwoD,EAAKrpD,EAAIA,EAAIa,EAAEE,EAAIE,EAAIJ,EAAEiX,GAAM,EAC1BjX,CACX,EACAsnR,QAAS,SAAS/xJ,EAAQC,GACtB,IAAIx1H,EAAI,IAAI60H,EAOZ,OANA70H,EAAEE,EAAIq1H,EACNv1H,EAAEiX,EAAI,EACNjX,EAAEN,EAAI,EACNM,EAAER,EAAIg2H,EACNx1H,EAAEL,EAAI,EACNK,EAAEwoD,EAAI,EACCxoD,CACX,EACAowB,MAAO,SAASpjB,GACZ,IAAIzB,EAAOg8Q,EACX,GAAIv6Q,EAAG,CAGH,GAAoC,YAFpCA,EAAIA,EAAE2xB,QAEA98B,MAAM,EAAG,GAAGgS,cAA4B,CAG1C,GAAqB,KADrBtI,GADAg8Q,EAAOv6Q,EAAEnL,MAAM,EAAGmL,EAAExK,OAAS,GAAGm8B,QACnB/4B,MAAM,MACTpD,OACN,OAAOqyH,EAAOuyJ,SAASvxQ,EAAItK,GAAO,SAASsiH,GACvC,OAAO9pH,WAAW8pH,EACtB,KAGJ,GAAqB,KADrBtiH,EAAQg8Q,EAAK3hR,MAAM,MACTpD,OACN,OAAOqyH,EAAOuyJ,SAASvxQ,EAAItK,GAAO,SAASsiH,GACvC,OAAO9pH,WAAW8pH,EACtB,IAER,CAKA,GAHsB,MAAlB7gH,EAAEnL,MAAM,EAAG,IAAwC,MAA1BmL,EAAEnL,MAAMmL,EAAExK,OAAS,KAC5CwK,EAAIA,EAAEuK,OAAO,EAAGvK,EAAExK,OAAS,IAE3BwK,EAAE2D,QAAQ,KAAO,GAEI,KADrBpF,EAAQyB,EAAEpH,MAAM,MACNpD,OACN,OAAOqyH,EAAOuyJ,SAASvxQ,EAAItK,GAAO,SAASsiH,GACvC,OAAO9pH,WAAW8pH,EACtB,KAGR,GAAI7gH,EAAE2D,QAAQ,KAAO,GAEI,KADrBpF,EAAQyB,EAAEpH,MAAM,MACNpD,OACN,OAAOqyH,EAAOuyJ,SAASvxQ,EAAItK,GAAO,SAASsiH,GACvC,OAAO9pH,WAAW8pH,EACtB,IAGZ,CACA,OAAOtiH,CACX,IAMJ,IAAIi8Q,EAAe5kR,EAAM7E,OAAO,CAC5BoF,KAAM,SAASjD,EAAG+W,EAAGvX,EAAGF,EAAGG,EAAG6oD,GAC1BxtD,KAAKkF,EAAIA,GAAK,EACdlF,KAAKic,EAAIA,GAAK,EACdjc,KAAK0E,EAAIA,GAAK,EACd1E,KAAKwE,EAAIA,GAAK,EACdxE,KAAK2E,EAAIA,GAAK,EACd3E,KAAKwtD,EAAIA,GAAK,CAClB,EACAi/N,WAAY,SAAoBznR,GAC5B,IAAIgN,EAAI,IAAIw6Q,EAOZ,OANAx6Q,EAAE9M,EAAIF,EAAEE,EACR8M,EAAEiK,EAAIjX,EAAEiX,EACRjK,EAAEtN,EAAIM,EAAEN,EACRsN,EAAExN,EAAIQ,EAAER,EACRwN,EAAErN,EAAIK,EAAEL,EACRqN,EAAEw7C,EAAIxoD,EAAEwoD,EACDx7C,CACX,IAwBJ,SAAS06Q,EAASllR,GACV8+Q,EAAMG,YAAYj/Q,KAClBA,EAAS,IAKb,IAFA,IAAIsP,EAAS,GACTwZ,EAAQ,iEACH/oB,EAAIC,EAAQD,EAAI,IAAKA,EAC1BuP,GAAUwZ,EAAMxlB,OAAOzH,KAAKiT,MAAsB,GAAhBjT,KAAK+sB,WAE3C,OAAOtZ,CACX,CAEA,IAAI61Q,EAAW,CAQXC,uBAAwB,SAAS/5J,EAAG3tH,EAAG+W,GACnC,SAAS+9I,EAAG6yH,EAAKC,GACb,OAAQD,EAAIznR,EAAI0nR,EAAI1nR,IAAMynR,EAAIznR,EAAI0nR,EAAI1nR,IAAMynR,EAAI1oR,EAAI2oR,EAAI3oR,IAAM0oR,EAAI1oR,EAAI2oR,EAAI3oR,EAC9E,CAEA,GAAIe,IAAM+W,EACN,OAAO+9I,EAAGnnC,EAAG3tH,GAGjB,IAAI6nR,EAAK9wQ,EAAE7W,EAAIF,EAAEE,EACb4nR,EAAK/wQ,EAAE9X,EAAIe,EAAEf,EACb25I,GAAOjrB,EAAEztH,EAAIF,EAAEE,GAAK2nR,GAAMl6J,EAAE1uH,EAAIe,EAAEf,GAAK6oR,EAC3C,OAAIlvI,EAAM,EACCkc,EAAG90J,EAAG2tH,IAGjBirB,GAAO7hI,EAAE7W,EAAIytH,EAAEztH,GAAK2nR,GAAM9wQ,EAAE9X,EAAI0uH,EAAE1uH,GAAK6oR,GAC7B,EACChzH,EAAG/9I,EAAG42G,IAGjBirB,GAAO7hI,EAAE7W,EAAIytH,EAAEztH,GAAK4nR,GAAM/wQ,EAAE9X,EAAI0uH,EAAE1uH,GAAK4oR,GAC1BjvI,GAAOivI,EAAKA,EAAKC,EAAKA,EACvC,EAQAC,eAAgB,SAASp6J,EAAG3tH,EAAG+W,GAC3B,OAAO5Y,KAAKo7E,KAAKz+E,KAAK4sR,uBAAuB/5J,EAAG3tH,EAAG+W,GACvD,EAQAixQ,mBAAoB,SAASr6J,EAAGuQ,GAC5B,IAAI+pJ,EAAUt6Q,OAAOukH,UACrB,GAAIkvJ,EAAMG,YAAYrjJ,IAA6B,IAAlBA,EAAO57H,OACpC,OAAOqL,OAAOukH,UAElB,IAAK,IAAInyH,EAAI,EAAGA,EAAIm+H,EAAO57H,OAAS,EAAGvC,IAAK,CACxC,IAAI6+H,EAAKV,EAAOn+H,GACZu+H,EAAKJ,EAAOn+H,EAAI,GAEhBT,EAAIxE,KAAK4sR,uBAAuB/5J,EAAGiR,EAAIN,GACvCh/H,EAAI2oR,IACJA,EAAU3oR,EAElB,CACA,OAAOnB,KAAKo7E,KAAK0uM,EACrB,GAWAC,EAAYzsR,EAAMiH,MAAM7E,OAAO,CAC/BoF,KAAM,WACFnI,KAAKqtR,SAAW,GAChBrtR,KAAKwH,OAAS,CAClB,EAKAgG,IAAK,SAASsE,EAAKpJ,GAEf,IAAIilB,EAAM3tB,KAAKstR,iBAAiBx7Q,GAIhC,OAHIw0Q,EAAME,UAAU99Q,KAChBilB,EAAIjlB,MAAQA,GAETilB,CACX,EAKAsC,IAAK,SAASne,GACV,OAAI9R,KAAKutR,cAAcz7Q,GACZ9R,KAAKstR,iBAAiBx7Q,GAE1B,IACX,EAOAoe,IAAK,SAASpe,EAAKpJ,GACf1I,KAAKwN,IAAIsE,EAAKpJ,EAClB,EAKA8kR,YAAa,SAAS17Q,GAClB,OAAO9R,KAAKutR,cAAcz7Q,EAC9B,EAMAzF,OAAQ,SAASyF,GACb,GAAI9R,KAAKutR,cAAcz7Q,GAAM,CACzB,IAAI27Q,EAASztR,KAAK+gL,MAAMjvK,GAGxB,cAFO9R,KAAKqtR,SAASI,GACrBztR,KAAKwH,SACEsK,CACX,CACJ,EAMAxQ,QAAS,SAASw3D,GAEd,IADA,IAAI40N,EAAS1tR,KAAK2tR,UACTpmR,EAAI,EAAGwpB,EAAM28P,EAAOlmR,OAAQD,EAAIwpB,EAAKxpB,IAAK,CAC/C,IAAIm3C,EAAOgvO,EAAOnmR,GACdqmR,EAAS5tR,KAAKqtR,SAAS3uO,GACvB4nO,EAAMG,YAAYmH,IAGtB90N,EAAK80N,EACT,CACJ,EAMAxmR,MAAO,WAGH,IAFA,IAAIymR,EAAK,IAAIT,EACTM,EAAS1tR,KAAK2tR,UACTpmR,EAAI,EAAGwpB,EAAM28P,EAAOlmR,OAAQD,EAAIwpB,EAAKxpB,IAAK,CAC/C,IAAIm3C,EAAOgvO,EAAOnmR,GACdqmR,EAAS5tR,KAAKqtR,SAAS3uO,GACvB4nO,EAAMG,YAAYmH,IAGtBC,EAAGrgR,IAAIogR,EAAO97Q,IAAK87Q,EAAOllR,MAC9B,CACA,OAAOmlR,CACX,EAOAF,QAAS,WACL,IAAID,EAAS,GACb,IAAK,IAAIhvO,KAAQ1+C,KAAKqtR,SACdrtR,KAAKqtR,SAASp+Q,eAAeyvC,IAC7BgvO,EAAO/rR,KAAK+8C,GAGpB,OAAOgvO,CACX,EAEAH,cAAe,SAASz7Q,GACpB,IAAI27Q,EAASztR,KAAK+gL,MAAMjvK,GACxB,OAAOw0Q,EAAME,UAAUxmR,KAAKqtR,SAASI,GACzC,EAOAH,iBAAkB,SAASx7Q,GACvB,IAAI27Q,EAASztR,KAAK+gL,MAAMjvK,GACpB87Q,EAAS5tR,KAAKqtR,SAASI,GAM3B,OALInH,EAAMG,YAAYmH,KAClBA,EAAS,CAAE97Q,IAAKA,GAChB9R,KAAKqtR,SAASI,GAAUG,EACxB5tR,KAAKwH,UAEFomR,CACX,EAKA7sG,MAAO,SAASjvK,GACZ,GAAIw0Q,EAAMjxN,SAASvjD,GACf,OAAOA,EAEX,GAAIw0Q,EAAM19Q,SAASkJ,GACf,OAAO9R,KAAK8tR,YAAYh8Q,GAE5B,GAAIw0Q,EAAMxjH,SAAShxJ,GACf,OAAO9R,KAAK+tR,cAAcj8Q,GAE9B,KAAM,uBACV,EAKAg8Q,YAAa,SAAS7oR,GAElB,IAAI6R,EAAS,EACb,GAAiB,IAAb7R,EAAEuC,OACF,OAAOsP,EAEX,IAAK,IAAIvP,EAAI,EAAGA,EAAItC,EAAEuC,OAAQD,IAAK,CAE/BuP,EAAoB,GAATA,EAAeA,EADjB7R,EAAE4M,WAAWtK,EAE1B,CACA,OAAOuP,CACX,EAKAi3Q,cAAe,SAASj8Q,GACpB,IAAIue,EAAKve,EAAIk8Q,QAKb,OAJI1H,EAAMG,YAAYp2P,KAClBA,EAAKq8P,IACL56Q,EAAIk8Q,QAAU39P,GAEXA,CACX,IASA49P,EAAattR,EAAM2I,WAAWvG,OAAO,CAKrCoF,KAAM,SAAS+lR,GAKX,GAHAvtR,EAAM2I,WAAWvB,GAAGI,KAAKoC,KADdvK,MAEXA,KAAKmuR,WAAa,IAAIf,EACtBptR,KAAKwH,OAAS,EACV8+Q,EAAME,UAAU0H,GAChB,GAAIhrR,MAAMD,QAAQirR,GACd,IAAK,IAAI3mR,EAAI,EAAGA,EAAI2mR,EAAW1mR,OAAQD,IACnCvH,KAAKwN,IAAI0gR,EAAW3mR,SAGxB2mR,EAAW5sR,SAAQ,SAASwD,EAAGkN,GAC3BhS,KAAKwN,IAAI1I,EAAGkN,EAChB,GAAGhS,KAGf,EAMAwN,IAAK,SAASsE,EAAKpJ,GACf,IAAI0rH,EAAQp0H,KAAKmuR,WAAWl+P,IAAIne,GAC3BsiH,IACDA,EAAQp0H,KAAKmuR,WAAW3gR,IAAIsE,GAC5B9R,KAAKwH,SACLxH,KAAKoK,QAAQ,YAEjBgqH,EAAM1rH,MAAQA,CAClB,EAOAwnB,IAAK,SAASpe,EAAKpJ,GACf1I,KAAKwN,IAAIsE,EAAKpJ,EAClB,EAKAunB,IAAK,SAASne,GACV,IAAIsiH,EAAQp0H,KAAKmuR,WAAWl+P,IAAIne,GAChC,GAAIsiH,EACA,OAAOA,EAAM1rH,MAEjB,MAAM,IAAIsI,MAAM,mBAAqBc,EACzC,EAKA07Q,YAAa,SAAS17Q,GAClB,OAAO9R,KAAKmuR,WAAWX,YAAY17Q,EACvC,EAKAzF,OAAQ,SAASyF,GACb,GAAI9R,KAAKwtR,YAAY17Q,GAGjB,OAFA9R,KAAKoK,QAAQ,WACbpK,KAAKwH,SACExH,KAAKmuR,WAAW9hR,OAAOyF,EAEtC,EAKAxQ,QAAS,SAASw3D,EAAM2uN,GACpBznR,KAAKmuR,WAAW7sR,SAAQ,SAAS8yH,GAC7Bt7D,EAAKvuD,KAAKk9Q,EAASrzJ,EAAMtiH,IAAKsiH,EAAM1rH,MACxC,GACJ,EAKA0lR,aAAc,SAASt1N,EAAM2uN,GACzBznR,KAAKmuR,WAAW7sR,SAAQ,SAAS8yH,GAC7Bt7D,EAAKvuD,KAAKk9Q,EAASrzJ,EAAM1rH,MAC7B,GACJ,EAKA2lR,WAAY,SAASv1N,EAAM2uN,GACvBznR,KAAKmuR,WAAW7sR,SAAQ,SAAS8yH,GAC7Bt7D,EAAKvuD,KAAKk9Q,EAASrzJ,EAAMtiH,IAC7B,GACJ,EAKA+Y,KAAM,WACF,IAAIA,EAAO,GAIX,OAHA7qB,KAAKquR,YAAW,SAASv8Q,GACrB+Y,EAAKlpB,KAAKmQ,EACd,IACO+Y,CACX,IAKAyjQ,EAAQ3tR,EAAMiH,MAAM7E,OAAO,CAE3BoF,KAAM,WACFnI,KAAKs0H,MAAQ,KACbt0H,KAAKq0H,MAAQ,KACbr0H,KAAKwH,OAAS,CAClB,EAKA+mR,QAAS,SAAS7lR,GACd,IAAI0rH,EAAQ,CAAE1rH,MAAOA,EAAO49D,KAAM,MAC7BtmE,KAAKq0H,OAKNr0H,KAAKs0H,MAAMhuD,KAAO8tD,EAClBp0H,KAAKs0H,MAAQt0H,KAAKs0H,MAAMhuD,OALxBtmE,KAAKq0H,MAAQD,EACbp0H,KAAKs0H,MAAQt0H,KAAKq0H,OAMtBr0H,KAAKwH,QACT,EAKAwgB,QAAS,WACL,GAAIhoB,KAAKwH,OAAS,EACd,MAAM,IAAIwJ,MAAM,uBAEpB,IAAItI,EAAQ1I,KAAKq0H,MAAM3rH,MAGvB,OAFA1I,KAAKq0H,MAAQr0H,KAAKq0H,MAAM/tD,KACxBtmE,KAAKwH,SACEkB,CACX,EAEA6sB,SAAU,SAAS4Z,GAEf,IADA,IAAIn7B,EAAUhU,KAAKq0H,MACZrgH,GAAS,CACZ,GAAIA,EAAQtL,QAAUymC,EAClB,OAAO,EAEXn7B,EAAUA,EAAQsyD,IACtB,CACA,OAAO,CACX,IASA6+F,EAAMxkK,EAAM2I,WAAWvG,OAAO,CAC9BoF,KAAM,SAASq5Q,GAEX7gR,EAAM2I,WAAWvB,GAAGI,KAAKoC,KADdvK,MAEXA,KAAKmuR,WAAa,IAAIf,EACtBptR,KAAKwH,OAAS,EACV8+Q,EAAME,UAAUhF,KACZA,aAAoB4L,EACpB5L,EAASlgR,SAAQ,SAASkD,GACtBxE,KAAKwN,IAAIhJ,EACb,IAEKg9Q,aAAoByM,GACzBzM,EAASlgR,SAAQ,SAASwD,EAAGkN,GACzBhS,KAAKwN,IAAI,CAAEsE,IAAKhN,EAAG4D,MAAOsJ,GAC9B,GAAGhS,MAGf,EAEAu1B,SAAU,SAAS4Z,GACf,OAAOnvC,KAAKmuR,WAAWX,YAAYr+O,EACvC,EAEA3hC,IAAK,SAAS2hC,GACEnvC,KAAKmuR,WAAWl+P,IAAIkf,KAE5BnvC,KAAKmuR,WAAW3gR,IAAI2hC,EAAMA,GAC1BnvC,KAAKwH,SACLxH,KAAKoK,QAAQ,WAErB,EAEA6lB,IAAK,SAASkf,GACV,OAAInvC,KAAKu1B,SAAS4Z,GACPnvC,KAAKmuR,WAAWl+P,IAAIkf,GAAMzmC,MAG1B,IAEf,EAOAg2C,KAAM,SAASvP,GACX,OAAOnvC,KAAKmuR,WAAWptG,MAAM5xI,EACjC,EAMA9iC,OAAQ,SAAS8iC,GACTnvC,KAAKu1B,SAAS4Z,KACdnvC,KAAKmuR,WAAW9hR,OAAO8iC,GACvBnvC,KAAKwH,SACLxH,KAAKoK,QAAQ,WAErB,EAKA9I,QAAS,SAASw3D,EAAM98B,GACpBh8B,KAAKmuR,WAAW7sR,SAAQ,SAASktR,GAC7B11N,EAAK01N,EAAG9lR,MACZ,GAAGszB,EACP,EACAg4B,QAAS,WACL,IAAIk+D,EAAI,GAIR,OAHAlyH,KAAKsB,SAAQ,SAASkD,GAClB0tH,EAAEvwH,KAAK6C,EACX,IACO0tH,CACX,IAQAjnD,EAAOtqE,EAAMiH,MAAM7E,OAAO,CAE1BoF,KAAM,SAASkoB,EAAIyyH,GA+Bf,GAzBA9iJ,KAAK0/O,MAAQ,GAMb1/O,KAAKyuR,SAAW,GAMhBzuR,KAAK0uR,SAAW,GAKhB1uR,KAAK2uR,OAAS,EAEVrI,EAAME,UAAUn2P,GAChBrwB,KAAKqwB,GAAKA,EAGVrwB,KAAKqwB,GAAKq8P,IAEVpG,EAAME,UAAU1jI,GAAQ,CACxB9iJ,KAAK4uR,gBAAkB9rI,EAEvB,IAAI7mI,EAAI6mI,EAAMmiI,SACdjlR,KAAK+L,MAAQkQ,EAAElQ,MACf/L,KAAKgM,OAASiQ,EAAEjQ,OAChBhM,KAAKoF,EAAI6W,EAAE7W,EACXpF,KAAKmE,EAAI8X,EAAE9X,CACf,MAEInE,KAAK4uR,gBAAkB,KAM3B5uR,KAAKoO,KAAO,KACZpO,KAAK0F,KAAO,OACZ1F,KAAK6uR,UAAY,SAAW7uR,KAAKqwB,GAAK,IAKtCrwB,KAAK8uR,WAAY,CACrB,EAKAC,WAAY,WACR,OAAOzI,EAAMz/F,QAAQ7mL,KAAK0/O,MAC9B,EAMAulC,OAAQ,SAAS/yJ,GACb,IAAKo0J,EAAME,UAAUt0J,GACjB,OAAO,IAAI2lE,EAAQ56D,KAAKj9H,KAAKoF,EAAGpF,KAAKmE,EAAGnE,KAAK+L,MAAO/L,KAAKgM,QAG7DhM,KAAKoF,EAAI8sH,EAAE9sH,EACXpF,KAAKmE,EAAI+tH,EAAE/tH,EACXnE,KAAK+L,MAAQmmH,EAAEnmH,MACf/L,KAAKgM,OAASkmH,EAAElmH,MACpB,EAMAgjR,WAAY,SAAS3rP,GACjB,IAAIp7B,EAAOjI,KACX,OAAOsmR,EAAMtpE,IAAI/0M,EAAKy3O,OAAO,SAASpL,GAClC,OAAOA,EAAK26C,cAAchnR,KAAUo7B,CACxC,GACJ,EAMA6rP,YAAa,WACT,GAA6B,IAAzBlvR,KAAKyuR,SAASjnR,OACd,MAAO,GAGX,IADA,IAAI+tC,EAAW,GACNhuC,EAAI,EAAGwpB,EAAM/wB,KAAKyuR,SAASjnR,OAAQD,EAAIwpB,EAAKxpB,IAAK,CACtD,IAAI+sO,EAAOt0O,KAAKyuR,SAASlnR,GACzBguC,EAAS5zC,KAAK2yO,EAAK26C,cAAcjvR,MACrC,CACA,OAAOu1C,CACX,EAMA45O,WAAY,WACR,GAA6B,IAAzBnvR,KAAK0uR,SAASlnR,OACd,MAAO,GAGX,IADA,IAAI+wB,EAAU,GACLhxB,EAAI,EAAGwpB,EAAM/wB,KAAK0uR,SAASlnR,OAAQD,EAAIwpB,EAAKxpB,IAAK,CACtD,IAAI+sO,EAAOt0O,KAAK0uR,SAASnnR,GACzBgxB,EAAQ52B,KAAK2yO,EAAK26C,cAAcjvR,MACpC,CACA,OAAOu4B,CACX,EAMAnxB,MAAO,WACH,IAAIF,EAAO,IAAI+jE,EAef,OAdIq7M,EAAME,UAAUxmR,KAAK2uR,UACrBznR,EAAKynR,OAAS3uR,KAAK2uR,QAEnBrI,EAAME,UAAUxmR,KAAKovR,WACrBloR,EAAKkoR,QAAUpvR,KAAKovR,SAEpB9I,EAAME,UAAUxmR,KAAK6oM,SACrB3hM,EAAK2hM,MAAQ7oM,KAAK6oM,OAEtB3hM,EAAK0nR,gBAAkB5uR,KAAK4uR,gBAC5B1nR,EAAK9B,EAAIpF,KAAKoF,EACd8B,EAAK/C,EAAInE,KAAKmE,EACd+C,EAAK6E,MAAQ/L,KAAK+L,MAClB7E,EAAK8E,OAAShM,KAAKgM,OACZ9E,CACX,EAKAmoR,WAAY,SAAShsP,GACjB,OAAiC,OAA1BrjC,KAAKgvR,WAAW3rP,EAC3B,EAMAisP,WAAY,SAASh7C,GACbA,EAAKzmO,SAAW7N,OAChBsmR,EAAMj6Q,OAAOrM,KAAK0/O,MAAOpL,GACzBgyC,EAAMj6Q,OAAOrM,KAAKyuR,SAAUn6C,GAC5BA,EAAKzmO,OAAS,MAGdymO,EAAKjtO,SAAWrH,OAChBsmR,EAAMj6Q,OAAOrM,KAAK0/O,MAAOpL,GACzBgyC,EAAMj6Q,OAAOrM,KAAK0uR,SAAUp6C,GAC5BA,EAAKjtO,OAAS,KAEtB,EAKAkoR,UAAW,SAASlsP,GAChB,OAAOijP,EAAMtpE,IAAIh9M,KAAKyuR,UAAU,SAASn6C,GACrC,OAAOA,EAAKjtO,SAAWg8B,CAC3B,GACJ,EAKAmsP,OAAQ,WACJ,OAAOxvR,KAAK0/O,MAAMl4O,MACtB,EAKAioR,aAAc,SAASn7C,GACnB,OAAO/+M,EAASv1B,KAAK0/O,MAAOpL,EAChC,EAKAo7C,aAAc,SAASrsP,GACnB,OAAOijP,EAAMt1M,IAAIhxE,KAAK0/O,OAAO,SAASpL,GAClC,OAAOA,EAAK26C,cAAcjvR,QAAUqjC,CACxC,GAAGrjC,KACP,EAKA2vR,aAAc,WACV,IAAIC,EAAY,GAOhB,OANAtJ,EAAMhlR,QAAQtB,KAAK0uR,UAAU,SAAS/pR,GAClCirR,EAAUjuR,KAAKgD,EAAEsqR,cAAcjvR,MACnC,GAAGA,MACHsmR,EAAMhlR,QAAQtB,KAAKyuR,UAAU,SAAS9pR,GAClCirR,EAAUjuR,KAAKgD,EAAEsqR,cAAcjvR,MACnC,GAAGA,MACI4vR,CACX,IAMA1sC,EAAOviP,EAAMiH,MAAM7E,OAAO,CAE1BoF,KAAM,SAAS0F,EAAQxG,EAAQgpB,EAAIw/P,GAC/B,GAAIvJ,EAAMG,YAAY54Q,GAClB,KAAM,yCAEV,GAAIy4Q,EAAMG,YAAYp/Q,GAClB,KAAM,yCAEV,IAAIyoR,EAAaC,EAEbD,EADAxJ,EAAM19Q,SAASiF,GACD,IAAIo9D,EAAKp9D,GAGTA,EAGdkiR,EADAzJ,EAAM19Q,SAASvB,GACD,IAAI4jE,EAAK5jE,GAGTA,EAGlBrH,KAAK6N,OAASiiR,EACd9vR,KAAKqH,OAAS0oR,EACd/vR,KAAK6N,OAAO6xO,MAAM/9O,KAAK3B,MACvBA,KAAKqH,OAAOq4O,MAAM/9O,KAAK3B,MACvBA,KAAK6N,OAAO4gR,SAAS9sR,KAAK3B,MAC1BA,KAAKqH,OAAOqnR,SAAS/sR,KAAK3B,MACtBsmR,EAAME,UAAUn2P,GAChBrwB,KAAKqwB,GAAKA,EAGVrwB,KAAKqwB,GAAKq8P,IAEVpG,EAAME,UAAUqJ,GAChB7vR,KAAKgwR,qBAAuBH,EAG5B7vR,KAAKgwR,qBAAuB,KAEhChwR,KAAK0F,KAAO,OACZ1F,KAAK6uR,UAAY,SAAW7uR,KAAK6N,OAAOwiB,GAAK,KAAOrwB,KAAKqH,OAAOgpB,GAAK,GACzE,EAKA4+P,cAAe,SAAS5rP,GACpB,GAAIrjC,KAAK6N,SAAWw1B,GAAQrjC,KAAKqH,SAAWg8B,EACxC,KAAM,iDAEV,OAAOrjC,KAAK6N,SAAWw1B,EAAOrjC,KAAKqH,OAASrH,KAAK6N,MACrD,EAKAoiR,cAAe,SAAS37C,GACpB,OAAIt0O,KAAK6N,SAAWymO,EAAKzmO,QAAU7N,KAAK6N,SAAWymO,EAAKjtO,OAC7CrH,KAAK6N,OAEZ7N,KAAKqH,SAAWitO,EAAKzmO,QAAU7N,KAAKqH,SAAWitO,EAAKjtO,OAC7CrH,KAAKqH,OAET,IACX,EAKA6oR,WAAY,SAASC,EAAIC,GACrB,OAAOpwR,KAAK6N,SAAWsiR,GAAMnwR,KAAKqH,SAAW+oR,GAAMpwR,KAAK6N,SAAWuiR,GAAMpwR,KAAKqH,SAAW8oR,CAC7F,EAKAE,SAAU,WACN,MAAO,CAACrwR,KAAK6N,OAAQ7N,KAAKqH,OAC9B,EAKAooR,aAAc,SAASpsP,GACnB,OAAOrjC,KAAK6N,SAAWw1B,GAAQrjC,KAAKqH,SAAWg8B,CACnD,EAMAgsP,WAAY,SAAS/6C,GACjB,OAAO/+M,EAASv1B,KAAK6N,OAAO6xO,MAAOpL,IAAS/+M,EAASv1B,KAAKqH,OAAOq4O,MAAOpL,EAC5E,EAKAg8C,aAAc,SAASjtP,GACnBijP,EAAMj6Q,OAAOrM,KAAK6N,OAAO6xO,MAAO1/O,MAChCsmR,EAAMj6Q,OAAOrM,KAAK6N,OAAO4gR,SAAUzuR,MAEnCqjC,EAAKq8M,MAAM/9O,KAAK3B,MAChBqjC,EAAKorP,SAAS9sR,KAAK3B,MAEnBA,KAAK6N,OAASw1B,CAClB,EAMAktP,aAAc,SAASltP,GACnBijP,EAAMj6Q,OAAOrM,KAAKqH,OAAOq4O,MAAO1/O,MAChCsmR,EAAMj6Q,OAAOrM,KAAKqH,OAAOqnR,SAAU1uR,MAEnCqjC,EAAKq8M,MAAM/9O,KAAK3B,MAChBqjC,EAAKqrP,SAAS/sR,KAAK3B,MAEnBA,KAAKqH,OAASg8B,CAClB,EAKAmtP,aAAc,SAASx+Q,EAAGgoP,GAClBh6P,KAAK6N,SAAWmE,EAChBhS,KAAKswR,aAAat2B,GAEbh6P,KAAKqH,SAAW2K,GACrBhS,KAAKuwR,aAAav2B,EAE1B,EAKA3jP,QAAS,WACL,IAAIo6Q,EAAYzwR,KAAK6N,OACjB6iR,EAAY1wR,KAAKqH,OASrB,OAPArH,KAAK6N,OAAS6iR,EACdpK,EAAMj6Q,OAAOokR,EAAUhC,SAAUzuR,MACjCA,KAAK6N,OAAO4gR,SAAS9sR,KAAK3B,MAE1BA,KAAKqH,OAASopR,EACdnK,EAAMj6Q,OAAOqkR,EAAUhC,SAAU1uR,MACjCA,KAAKqH,OAAOqnR,SAAS/sR,KAAK3B,MACnBA,IACX,EAKA2wR,SAAU,SAAStpR,GACf,GAAIrH,KAAK6N,SAAWxG,GAAUrH,KAAKqH,SAAWA,EAC1C,KAAM,iDAENrH,KAAKqH,SAAWA,GAChBrH,KAAKqW,SAEb,EAKAu6Q,kBAAmB,WACf,IAAI1+J,EAAIlyH,KAAKoH,QAGb,OAFA8qH,EAAE77G,UACF67G,EAAE2+J,UAAW,EACN3+J,CACX,EAKA9qH,MAAO,WAEH,OADY,IAAI87O,EAAKljP,KAAK6N,OAAQ7N,KAAKqH,OAE3C,IASAypR,EAAQnwR,EAAMiH,MAAM7E,OAAO,CAC3BoF,KAAM,SAAS4oR,GAKX/wR,KAAK0/O,MAAQ,GAKb1/O,KAAKosD,MAAQ,GAEbpsD,KAAKgxR,SAAW,IAAI/C,EAKpBjuR,KAAK63L,QAAU,KAOf73L,KAAKygJ,MAAQ,KACT6lI,EAAME,UAAUuK,GACZzK,EAAM19Q,SAASmoR,GACf/wR,KAAKqwB,GAAK0gQ,GAGV/wR,KAAK63L,QAAUk5F,EACf/wR,KAAKqwB,GAAK0gQ,EAAY1gQ,IAI1BrwB,KAAKqwB,GAAKq8P,IAOd1sR,KAAKilR,OAAS,IAAIhoJ,EAElBj9H,KAAKixR,yBAA0B,EAC/BjxR,KAAK0F,KAAO,OAChB,EAMAwrR,mBAAoB,SAASC,GAIzB,GAHI7K,EAAMG,YAAY0K,KAClBA,GAAe,IAEfnxR,KAAKixR,yBAA4BE,EAArC,CAGA,IAAK,IAAI5pR,EAAI,EAAGwpB,EAAM/wB,KAAKosD,MAAM5kD,OAAQD,EAAIwpB,EAAKxpB,IAAK,CACnD,IAAI87B,EAAOrjC,KAAKosD,MAAM7kD,GACtB87B,EAAKkS,SAAWv1C,KAAKkvR,YAAY7rP,GACjCA,EAAK9K,QAAUv4B,KAAKmvR,WAAW9rP,EACnC,CACArjC,KAAKixR,yBAA0B,CAN/B,CAOJ,EAUAG,aAAc,SAASC,EAAWvzQ,EAAQwzQ,GACtC,IAAKD,EACD,KAAM,4BAEN/K,EAAMG,YAAY3oQ,KAClBA,EAAS,GAGb9d,KAAKkxR,qBACD5K,EAAMG,YAAY6K,KAClBA,EAAU,IAAIrD,EACd3H,EAAMhlR,QAAQtB,KAAKosD,OAAO,SAASwmE,GAC/B0+J,EAAQ9jR,IAAIolH,GAAG,EACnB,KAEJ0+J,EAAQphQ,IAAImhQ,GAAW,GACvBA,EAAU1lN,MAAQ7tD,EAElB,IADA,IAAIy3B,EAAW87O,EAAU97O,SAChBhuC,EAAI,EAAGwpB,EAAMwkB,EAAS/tC,OAAQD,EAAIwpB,EAAKxpB,IAAK,CACjD,IAAIs8B,EAAQ0R,EAAShuC,GAChBs8B,IAASytP,EAAQrhQ,IAAI4T,IAG1B7jC,KAAKoxR,aAAavtP,EAAO/lB,EAAS,EAAGwzQ,EACzC,CACJ,EAQAzzO,KAAM,SAASn1C,GACX,GAAI49Q,EAAMG,YAAY/9Q,GAAQ,CAC1B,GAAK1I,KAAKygJ,MAWN,OAAOzgJ,KAAKygJ,MATZ,IAAItiF,EAAQmoN,EAAMp8Q,MAAMlK,KAAKosD,OAAO,SAASwmE,GACzC,OAA6B,IAAtBA,EAAE87J,SAASlnR,MACtB,IACA,OAAI22D,GAGGmoN,EAAMp8Q,MAAMlK,KAAKosD,MAKhC,CAEIpsD,KAAKygJ,MAAQ/3I,CAErB,EAQA6oR,uBAAwB,WACpBvxR,KAAKwxR,eAAiB,EACtBxxR,KAAKyxR,iBAGL,IAFA,IAAIC,EAAcpL,EAAMO,UAAU7mR,KAAKosD,MAAM5kD,QAAS,GAE7CwK,EAAI,EAAGA,EAAIhS,KAAKosD,MAAM5kD,OAAQwK,KACX,IAApB0/Q,EAAY1/Q,KACZhS,KAAK2xR,uBAAuBD,EAAa1/Q,GACzChS,KAAKwxR,kBAIb,IAAqBjqR,EAAjBqqR,EAAa,GACjB,IAAKrqR,EAAI,EAAGA,EAAIvH,KAAKwxR,iBAAkBjqR,EACnCqqR,EAAWrqR,GAAK,IAAIupR,EAExB,IAAKvpR,EAAI,EAAGA,EAAImqR,EAAYlqR,SAAUD,EAAG,CACzBqqR,EAAWF,EAAYnqR,IAC7BsqR,oBAAoB7xR,KAAKosD,MAAM7kD,GACzC,CAKA,OAHAqqR,EAAW51Q,MAAK,SAAS9W,EAAG+W,GACxB,OAAOA,EAAEmwC,MAAM5kD,OAAStC,EAAEknD,MAAM5kD,MACpC,IACOoqR,CACX,EAEAD,uBAAwB,SAASG,EAAQC,GACrCD,EAAOC,GAAa/xR,KAAKwxR,eACzB,IAAInuP,EAAOrjC,KAAKosD,MAAM2lO,GACtBzL,EAAMhlR,QAAQ+hC,EAAKq8M,OACf,SAASpL,GACL,IACI09C,EADO19C,EAAK26C,cAAc5rP,GACZ/pB,OACM,IAApBw4Q,EAAOE,IACPhyR,KAAK2xR,uBAAuBG,EAAQE,EAE5C,GAAGhyR,KACX,EAMAiyR,WAAY,WACR,GAAIjyR,KAAK6mL,UAEL,OADA7mL,KAAKilR,OAAS,IAAIhoJ,EACXj9H,KAAKilR,OAGhB,IADA,IAAIhpQ,EAAI,KACC1U,EAAI,EAAGwpB,EAAM/wB,KAAKosD,MAAM5kD,OAAQD,EAAIwpB,EAAKxpB,IAAK,CACnD,IAAI87B,EAAOrjC,KAAKosD,MAAM7kD,GAKlB0U,EAJCA,EAIGA,EAAEsiH,MAAMl7F,EAAK4hP,UAHb5hP,EAAK4hP,QAKjB,CAEA,OADAjlR,KAAKilR,OAAShpQ,EACPjc,KAAKilR,MAChB,EAUAiN,gBAAiB,SAASr0O,GACtB,IAC4BhwC,EAAQxG,EADhCijD,EAAO,IAAIwmO,EACXj2Q,EAAM,IAAIozQ,EACd3jO,EAAKzM,KAAOA,EAAKz2C,QACjBkjD,EAAKzM,KAAK8tB,MAAQ,EAClBrhB,EAAKzM,KAAKxtB,GAAKwtB,EAAKxtB,GACpBxV,EAAIrN,IAAIqwC,EAAMyM,EAAKzM,MACnBA,EAAK8tB,MAAQ,EAEb,IAAI2lN,EAAU,GACVplP,EAAY,GAChBoe,EAAK6nO,SAAS7nO,EAAKzM,MACnByzO,EAAQ3vR,KAAKk8C,GACb3R,EAAUvqC,KAAKk8C,GAGf,IADA,IAAIu0O,EAAa,EACVlmP,EAAU1kC,OAAS,GAEtB,IADA,IAAI8+D,EAAOp6B,EAAUnc,MACZsiQ,EAAK,EAAGA,EAAK/rN,EAAKo5K,MAAMl4O,OAAQ6qR,IAAM,CAC3C,IACIC,EADOhsN,EAAKo5K,MAAM2yC,GACRpD,cAAc3oN,GAC5B,IAAI/wC,EAAS+7P,EAASgB,GAAtB,CAIAA,EAAG3mN,MAAQrF,EAAKqF,MAAQ,EACpBymN,EAAaE,EAAG3mN,MAAQ,IACxBymN,EAAaE,EAAG3mN,MAAQ,GAEvBp2C,EAAS2W,EAAWomP,IACrBpmP,EAAUvqC,KAAK2wR,GAEd/8P,EAAS+7P,EAASgB,IACnBhB,EAAQ3vR,KAAK2wR,GAEbz3Q,EAAI2yQ,YAAYlnN,GAChBz4D,EAASgN,EAAIoV,IAAIq2C,KAGjBz4D,EAASy4D,EAAKl/D,SACPukE,MAAQrF,EAAKqF,MACpB99D,EAAOwiB,GAAKi2C,EAAKj2C,GACjBxV,EAAIrN,IAAI84D,EAAMz4D,IAEdgN,EAAI2yQ,YAAY8E,GAChBjrR,EAASwT,EAAIoV,IAAIqiQ,KAGjBjrR,EAASirR,EAAGlrR,SACLukE,MAAQ2mN,EAAG3mN,MAClBtkE,EAAOgpB,GAAKiiQ,EAAGjiQ,GACfxV,EAAIrN,IAAI8kR,EAAIjrR,IAEhB,IAAIkrR,EAAU,IAAIrvC,EAAKr1O,EAAQxG,GAC/BijD,EAAKkoO,QAAQD,EA/Bb,CAgCJ,CAKJ,IADA,IAAIE,EAAa,GACRlrR,EAAI,EAAGA,EAAI6qR,EAAY7qR,IAC5BkrR,EAAW9wR,KAAK,IASpB,OANA2kR,EAAMhlR,QAAQgpD,EAAK8B,OAAO,SAAS/oB,GAC/BovP,EAAWpvP,EAAKsoC,OAAOhqE,KAAK0hC,EAChC,IAEAinB,EAAKmoO,WAAaA,EAClBnoO,EAAK4mO,qBACE5mO,CACX,EAQAooO,eAAgB,SAASC,EAAeC,GAOpC,GANItM,EAAMG,YAAYkM,KAClBA,EAAgB,IAEhBrM,EAAMG,YAAYmM,KAClBA,EAAoB,GAEE,IAAtB5yR,KAAKosD,MAAM5kD,OACX,OAAO,KAEX,GAA0B,IAAtBxH,KAAKosD,MAAM5kD,OACX,OAAO+tB,EAASo9P,EAAe3yR,KAAKosD,MAAM,IAAM,KAAOpsD,KAAKosD,MAAM,GAEtE,IAAIgzN,EAAOz8Q,EAAE07B,KAAKr+B,KAAKosD,OAAO,SAAS/oB,GACnC,OAAQ9N,EAASo9P,EAAetvP,IAASA,EAAKmsP,UAAYoD,CAC9D,IACA,OAAItM,EAAMz/F,QAAQu4F,GACP,KAEJA,EAAKkH,EAAMW,cAAc,EAAG7H,EAAK53Q,QAC5C,EAKAq/K,QAAS,WACL,OAAOy/F,EAAMz/F,QAAQ7mL,KAAKosD,MAC9B,EAKAymO,UAAW,WACP,OAAOvM,EAAMt1M,IAAIhxE,KAAK0/O,OAAO,SAASpL,GAClC,OAAO/+M,EAASv1B,KAAKosD,MAAOkoL,EAAKzmO,SAAW0nB,EAASv1B,KAAKosD,MAAOkoL,EAAKjtO,OAC1E,GAAGrH,KACP,EAMAmvR,WAAY,SAASv8J,GACjB,IAAK5yH,KAAK8yR,QAAQlgK,GACd,KAAM,4CAEV,OAAOA,EAAEu8J,YACb,EAMAD,YAAa,SAASt8J,GAClB,IAAK5yH,KAAK8yR,QAAQlgK,GACd,KAAM,4CAEV,OAAOA,EAAEs8J,aACb,EAKAsD,QAAS,SAASO,EAAc1rR,EAAQwhM,GAEpC,GAAIy9E,EAAMG,YAAYsM,GAClB,KAAM,yCAEV,GAAIzM,EAAMG,YAAYp/Q,GAAS,CAE3B,GAAIi/Q,EAAME,UAAUuM,EAAartR,OAA+B,SAAtBqtR,EAAartR,KAEnD,YADA1F,KAAKgzR,gBAAgBD,GAIrB,KAAM,wCAEd,CAEA,IAAIE,EAAcjzR,KAAKkzR,QAAQH,GAC3BzM,EAAMG,YAAYwM,KAClBA,EAAcjzR,KAAKmzR,QAAQJ,IAE/B,IAAIK,EAAcpzR,KAAKkzR,QAAQ7rR,GAC3Bi/Q,EAAMG,YAAY2M,KAClBA,EAAcpzR,KAAKmzR,QAAQ9rR,IAG/B,IAAIkrR,EAAU,IAAIrvC,EAAK+vC,EAAaG,GAapC,OAXI9M,EAAME,UAAU39E,KAChB0pF,EAAQ1pF,MAAQA,GAQpB7oM,KAAK0/O,MAAM/9O,KAAK4wR,GAETA,CACX,EAKAc,eAAgB,WACZ,KAAOrzR,KAAK0/O,MAAMl4O,OAAS,GAAG,CAC1B,IAAI8sO,EAAOt0O,KAAK0/O,MAAM,GACtB1/O,KAAKsvR,WAAWh7C,EACpB,CACJ,EAKA0+C,gBAAiB,SAAS1+C,GAEtB,IAAIt0O,KAAKszR,QAAQh/C,GAAjB,CAIA,GADAt0O,KAAK0/O,MAAM/9O,KAAK2yO,GACZt0O,KAAK8yR,QAAQx+C,EAAKzmO,OAAOwiB,IAAK,CAE9B,IAAIprB,EAAIjF,KAAKkzR,QAAQ5+C,EAAKzmO,OAAOwiB,IACjCikN,EAAKg8C,aAAarrR,EACtB,MAEIjF,KAAKmzR,QAAQ7+C,EAAKzmO,QAGtB,GAAI7N,KAAK8yR,QAAQx+C,EAAKjtO,OAAOgpB,IAAK,CAC9B,IAAIlrB,EAAInF,KAAKkzR,QAAQ5+C,EAAKjtO,OAAOgpB,IACjCikN,EAAKi8C,aAAaprR,EACtB,MAEInF,KAAKmzR,QAAQ7+C,EAAKjtO,OAhBtB,CA+BJ,EAOAisR,QAAS,SAASC,GACd,GAAIjN,EAAM19Q,SAAS2qR,GACf,OAAOjN,EAAMtpE,IAAIh9M,KAAK0/O,OAAO,SAASpL,GAClC,OAAOA,EAAKjkN,KAAOkjQ,CACvB,IAEJ,GAAsB,SAAlBA,EAAS7tR,KACT,OAAO6vB,EAASv1B,KAAK0/O,MAAO6zC,GAEhC,KAAM,uDACV,EAIAL,QAAS,SAASM,GACd,IAAInjQ,EAAKmjQ,EAASnjQ,IAAMmjQ,EACxB,GAAIxzR,KAAKgxR,SAASxD,YAAYn9P,GAC1B,OAAOrwB,KAAKgxR,SAAS/gQ,IAAII,EAEjC,EAKAyiQ,QAAS,SAASU,GACd,IAAInjQ,EAAKmjQ,EAASnjQ,IAAMmjQ,EACxB,OAAOxzR,KAAKgxR,SAASxD,YAAYn9P,EACrC,EAEA8hQ,SAAU,SAAS9uP,GACfrjC,KAAKosD,MAAMzqD,KAAK0hC,GAChBrjC,KAAKgxR,SAASxjR,IAAI61B,EAAKhT,GAAIgT,EAC/B,EAEAowP,YAAa,SAASpwP,GAClBijP,EAAMj6Q,OAAOrM,KAAKosD,MAAO/oB,GACzBrjC,KAAKgxR,SAAS3kR,OAAOg3B,EAAKhT,GAC9B,EAMAqjQ,WAAY,SAASF,GACjB,IAAI5gK,EAAI4gK,EAKR,GAJIlN,EAAM19Q,SAAS4qR,KACf5gK,EAAI5yH,KAAKkzR,QAAQM,KAGjBlN,EAAME,UAAU5zJ,GAUhB,KAAM,gEATN,IAAI8sH,EAAQ9sH,EAAE8sH,MACd9sH,EAAE8sH,MAAQ,GACV,IAAK,IAAIn4O,EAAI,EAAGwpB,EAAM2uN,EAAMl4O,OAAQD,EAAIwpB,EAAKxpB,IAAK,CAC9C,IAAI+sO,EAAOoL,EAAMn4O,GACjBvH,KAAKsvR,WAAWh7C,EACpB,CACAt0O,KAAKyzR,YAAY7gK,EAKzB,EAKA+gK,aAAc,SAASC,EAAIC,GACvB,OAAOvN,EAAMtpE,IAAIh9M,KAAK0/O,OAAO,SAASpL,GAClC,OAAOA,EAAKzmO,QAAU+lR,GAAMt/C,EAAKjtO,QAAUwsR,GAAMv/C,EAAKzmO,QAAUgmR,GAAMv/C,EAAKjtO,QAAUusR,CACzF,GACJ,EAKAtE,WAAY,SAASh7C,GAKjBgyC,EAAMj6Q,OAAOrM,KAAK0/O,MAAOpL,GAEzBgyC,EAAMj6Q,OAAOioO,EAAKzmO,OAAO4gR,SAAUn6C,GACnCgyC,EAAMj6Q,OAAOioO,EAAKzmO,OAAO6xO,MAAOpL,GAChCgyC,EAAMj6Q,OAAOioO,EAAKjtO,OAAOqnR,SAAUp6C,GACnCgyC,EAAMj6Q,OAAOioO,EAAKjtO,OAAOq4O,MAAOpL,EACpC,EAOA6+C,QAAS,SAASK,EAAUM,EAAYjrF,GAEpC,IAAIkrF,EAAU,KAEd,IAAKzN,EAAME,UAAUgN,GACjB,KAAM,iDAGV,GAAIlN,EAAM19Q,SAAS4qR,GAAW,CAC1B,GAAIxzR,KAAK8yR,QAAQU,GACb,OAAOxzR,KAAKkzR,QAAQM,GAExBO,EAAU,IAAI9oN,EAAKuoN,EACvB,KACK,CACD,GAAIxzR,KAAK8yR,QAAQU,GACb,OAAOxzR,KAAKkzR,QAAQM,GAGxBO,EAAUP,CACd,CAUA,OARIlN,EAAME,UAAUsN,IAChBC,EAAQ9O,OAAO6O,GAGfxN,EAAME,UAAU39E,KAChBkrF,EAAQlrF,MAAQA,GAEpB7oM,KAAKmyR,SAAS4B,GACPA,CACX,EAKAlC,oBAAqB,SAASxuP,GACrBrjC,KAAK8yR,QAAQzvP,IACdrjC,KAAKmyR,SAAS9uP,GAGlB,IAAI2wP,EAAW3wP,EAAKorP,SACpBprP,EAAKorP,SAAW,GAChBnI,EAAMhlR,QAAQ0yR,GAAU,SAAS1/C,GAC7Bt0O,KAAKgzR,gBAAgB1+C,EACzB,GAAGt0O,KACP,EAKAyxR,eAAgB,WACZ,IAAIlqR,EACJ,IAAKA,EAAI,EAAGA,EAAIvH,KAAKosD,MAAM5kD,SAAUD,EACjCvH,KAAKosD,MAAM7kD,GAAG+R,MAAQ/R,EAG1B,IAAKA,EAAI,EAAGA,EAAIvH,KAAK0/O,MAAMl4O,SAAUD,EACjCvH,KAAK0/O,MAAMn4O,GAAG+R,MAAQ/R,CAE9B,EAKAH,MAAO,SAAS6sR,GACZ,IAAI/sR,EAAO,IAAI4pR,EACXpiP,EAAO43O,EAAME,UAAUyN,KAAgC,IAAhBA,EACvCvlP,IACAxnC,EAAKgtR,QAAU,IAAIjG,EACnB/mR,EAAKitR,QAAU,IAAIlG,GAGvB,IAAIpzQ,EAAM,IAAIozQ,EAoBd,OAnBA3H,EAAMhlR,QAAQtB,KAAKosD,OAAO,SAASgoO,GAC/B,IAAIC,EAAQD,EAAUhtR,QACtByT,EAAIqV,IAAIkkQ,EAAWC,GACnBntR,EAAKirR,SAASkC,GAEV3lP,GACAxnC,EAAKgtR,QAAQhkQ,IAAImkQ,EAAOD,EAEhC,IAEA9N,EAAMhlR,QAAQtB,KAAK0/O,OAAO,SAAS40C,GAC/B,GAAIz5Q,EAAI2yQ,YAAY8G,EAAazmR,SAAWgN,EAAI2yQ,YAAY8G,EAAajtR,QAAS,CAC9E,IAAIktR,EAAWrtR,EAAKsrR,QAAQ33Q,EAAIoV,IAAIqkQ,EAAazmR,QAASgN,EAAIoV,IAAIqkQ,EAAajtR,SAC3EqnC,GACAxnC,EAAKitR,QAAQjkQ,IAAIqkQ,EAAUD,EAEnC,CACJ,IAEOptR,CACX,EAOAstR,UAAW,SAASC,GAChB,OAAO3D,EAAMxK,MAAMkO,UAAUx0R,KAAMy0R,EACvC,EAOAC,oBAAqB,SAASrD,EAAWjkP,GACrC,GAAIk5O,EAAMG,YAAY4K,GAClB,KAAM,sCAEV,GAAI/K,EAAMG,YAAYr5O,GAClB,KAAM,gCAEV,IAAKptC,KAAK8yR,QAAQzB,GACd,KAAM,iDAEV,IAAIsD,EAAY30R,KAAKkzR,QAAQ7B,GAE7BrxR,KAAK40R,aAAaD,EAAWvnP,EADf,GAElB,EAEAwnP,aAAc,SAASvxP,EAAM+J,EAAQkkP,GAEjClkP,EAAO/J,GACPiuP,EAAQ3vR,KAAK0hC,GAEb,IADA,IAAIkS,EAAWlS,EAAK6rP,cACX3nR,EAAI,EAAGwpB,EAAMwkB,EAAS/tC,OAAQD,EAAIwpB,EAAKxpB,IAAK,CACjD,IAAIs8B,EAAQ0R,EAAShuC,GACjBguB,EAAS+7P,EAASztP,IAGtB7jC,KAAK40R,aAAa/wP,EAAOuJ,EAAQkkP,EACrC,CACJ,EAOAuD,sBAAuB,SAASxD,EAAWjkP,GAEvC,GAAIk5O,EAAMG,YAAY4K,GAClB,KAAM,sCAEV,GAAI/K,EAAMG,YAAYr5O,GAClB,KAAM,gCAGV,IAAKptC,KAAK8yR,QAAQzB,GACd,KAAM,iDAEV,IAAIsD,EAAY30R,KAAKkzR,QAAQ7B,GACzBzpQ,EAAQ,IAAI0mQ,EACZgD,EAAU,GAGd,IAFA1pQ,EAAM2mQ,QAAQoG,GAEP/sQ,EAAMpgB,OAAS,GAAG,CACrB,IAAI67B,EAAOzb,EAAMI,UACjBolB,EAAO/J,GACPiuP,EAAQ3vR,KAAK0hC,GAEb,IADA,IAAIkS,EAAWlS,EAAK6rP,cACX3nR,EAAI,EAAGwpB,EAAMwkB,EAAS/tC,OAAQD,EAAIwpB,EAAKxpB,IAAK,CACjD,IAAIs8B,EAAQ0R,EAAShuC,GACjBguB,EAAS+7P,EAASztP,IAAUtO,EAAS3N,EAAOic,IAGhDjc,EAAM2mQ,QAAQ1qP,EAClB,CACJ,CACJ,EAcAixP,6BAA8B,SAASC,EAAoB1xP,EAAMw9I,EAASm0G,EAAUC,EAAW9gJ,EAAO76H,GAClGunK,EAAQrzK,IAAI61B,EAAM/pB,GAClB07Q,EAASxnR,IAAI61B,EAAM/pB,GACnBA,IAEA66H,EAAMxyI,KAAK0hC,GAGX,IADA,IAAmCijC,EAA/B/wB,EAAWlS,EAAK6rP,cACX3nR,EAAI,EAAGwpB,EAAMwkB,EAAS/tC,OAAQD,EAAIwpB,EAAKxpB,IAC5C++D,EAAO/wB,EAAShuC,GACXs5K,EAAQ2sG,YAAYlnN,GAIhB/wC,EAAS4+G,EAAO7tE,IACrB0uN,EAASxnR,IAAI61B,EAAMhgC,KAAKqT,IAAIs+Q,EAAS/kQ,IAAIoT,GAAOw9I,EAAQ5wJ,IAAIq2C,MAJ5DtmE,KAAK80R,6BAA6BC,EAAoBzuN,EAAMu6G,EAASm0G,EAAUC,EAAW9gJ,EAAO76H,GACjG07Q,EAASxnR,IAAI61B,EAAMhgC,KAAKqT,IAAIs+Q,EAAS/kQ,IAAIoT,GAAO2xP,EAAS/kQ,IAAIq2C,MAOrE,GAAI0uN,EAAS/kQ,IAAIoT,KAAUw9I,EAAQ5wJ,IAAIoT,GAAO,CAC1C,IAAI6xP,EAAY,GAChB,GACI5uN,EAAO6tE,EAAMpkH,MACbmlQ,EAAUvzR,KAAK2kE,SAEZA,IAASjjC,KACX0xP,GAAuBG,EAAU1tR,OAAS,IAC3CytR,EAAUtzR,KAAKuzR,EAEvB,CACJ,EAQAC,WAAY,SAASJ,GACbzO,EAAMG,YAAYsO,KAClBA,GAAqB,GAMzB,IAJA,IAAIl0G,EAAU,IAAIotG,EACd+G,EAAW,IAAI/G,EACfgH,EAAY,GACZ9gJ,EAAQ,GACH5sI,EAAI,EAAGwpB,EAAM/wB,KAAKosD,MAAM5kD,OAAQD,EAAIwpB,EAAKxpB,IAAK,CACnD,IAAI87B,EAAOrjC,KAAKosD,MAAM7kD,GAClBs5K,EAAQ2sG,YAAYnqP,IAGxBrjC,KAAK80R,6BAA6BC,EAAoB1xP,EAAMw9I,EAASm0G,EAAUC,EAAW9gJ,EAAO,EACrG,CACA,OAAO8gJ,CACX,EAMAG,UAAW,WACP,OAAO9O,EAAMz/F,QAAQ7mL,KAAKm1R,aAC9B,EAMAE,WAAY,SAASvjK,GACjB,IAAIwjK,EAAaxjK,EAAM0iK,YACnBe,EAAYv1R,KAAKw0R,YACrB,OAAOlO,EAAMt1M,IAAIskN,GAAY,SAASrwR,GAClC,OAAOswB,EAASggQ,EAAWtwR,EAC/B,GACJ,EAMAuwR,YAAa,WAET,GAAIx1R,KAAK6mL,WAAa7mL,KAAKosD,MAAM5kD,QAAU,GAAKxH,KAAK0/O,MAAMl4O,QAAU,EACjE,MAAO,GAGX,GAAyB,GAArBxH,KAAKosD,MAAM5kD,OAAa,CACxB,IAAIsP,EAAS,GACb,GAAI9W,KAAK0/O,MAAMl4O,OAAS,EAGpB,IAFA,IACIiuR,EADUz1R,KAAK0/O,MAAM,GACH7xO,OACbtG,EAAI,EAAGwpB,EAAM/wB,KAAK0/O,MAAMl4O,OAAQD,EAAIwpB,EAAKxpB,IAAK,CACnD,IAAI+sO,EAAOt0O,KAAK0/O,MAAMn4O,GACtB,GAAI+sO,EAAKzmO,QAAU4nR,EAAnB,CAGA,IAAIC,EAAMphD,EAAKj+N,UACfS,EAAOnV,KAAK+zR,EAFZ,CAGJ,CAEJ,OAAO5+Q,CACX,CAEA,IAAI5P,EAAOlH,KAAKoH,OAAM,GAClBkzP,EAAIt6P,KAAKosD,MAAM5kD,OAEfmuR,EAAmB,IAAI1H,EAQvB2H,EAAgB,SAASvyP,GACzB,OAA6B,IAAzBA,EAAKorP,SAASjnR,OACN,EAAI8yP,EAEkB,IAAzBj3N,EAAKqrP,SAASlnR,OACX8yP,EAAI,EAGLj3N,EAAKorP,SAASjnR,OAAS67B,EAAKqrP,SAASlnR,MAEpD,EAOIquR,EAAwB,SAASxyP,EAAMsyP,GACvC,IAAIG,EAAYF,EAAcvyP,GACzBsyP,EAAiBnI,YAAYsI,IAC9BH,EAAiBzlQ,IAAI4lQ,EAAW,IAEpCH,EAAiB1lQ,IAAI6lQ,GAAWn0R,KAAK0hC,EACzC,EAEAijP,EAAMhlR,QAAQ4F,EAAKklD,OAAO,SAASp6C,GAC/B6jR,EAAsB7jR,EAAG2jR,EAC7B,IAKA,IAHA,IAAII,EAAc,GACdC,EAAc,GAEX9uR,EAAKklD,MAAM5kD,OAAS,GAAG,CAC1B,IAAIqG,EAAQxG,EAAQyuR,EACpB,GAAIH,EAAiBnI,YAAY,EAAIlzB,GAEjC,IADA,IAAIzuK,EAAU8pM,EAAiB1lQ,IAAI,EAAIqqO,GAChCzuK,EAAQrkF,OAAS,GAAG,CACvBH,EAASwkF,EAAQ97D,MACjB,IAAK,IAAI+rI,EAAK,EAAGA,EAAKz0J,EAAOq4O,MAAMl4O,OAAQs0J,IAAM,CAC7C,IAAIm6H,EAAa5uR,EAAOq4O,MAAM5jF,GAC9BjuJ,EAASooR,EAAWhH,cAAc5nR,GAClCyuR,EAAYF,EAAc/nR,GAC1By4Q,EAAMj6Q,OAAOspR,EAAiB1lQ,IAAI6lQ,GAAYjoR,GAC9CA,EAAOyhR,WAAW2G,GAClBJ,EAAsBhoR,EAAQ8nR,EAClC,CACAzuR,EAAKusR,YAAYpsR,GACjB2uR,EAAY7rR,QAAQ9C,EACxB,CAIJ,GAAIsuR,EAAiBnI,YAAYlzB,EAAI,GAEjC,IADA,IAAI47B,EAAUP,EAAiB1lQ,IAAIqqO,EAAI,GAChC47B,EAAQ1uR,OAAS,GAAG,CACvBqG,EAASqoR,EAAQnmQ,MACjB,IAAK,IAAIomQ,EAAK,EAAGA,EAAKtoR,EAAO6xO,MAAMl4O,OAAQ2uR,IAAM,CAC7C,IAAIC,EAAavoR,EAAO6xO,MAAMy2C,GAC9B9uR,EAAS+uR,EAAWnH,cAAcphR,GAClCioR,EAAYF,EAAcvuR,GAC1Bi/Q,EAAMj6Q,OAAOspR,EAAiB1lQ,IAAI6lQ,GAAYzuR,GAC9CA,EAAOioR,WAAW8G,GAClBP,EAAsBxuR,EAAQsuR,EAClC,CACAI,EAAYp0R,KAAKkM,GACjB3G,EAAKusR,YAAY5lR,EACrB,CAGJ,GAAI3G,EAAKklD,MAAM5kD,OAAS,EACpB,IAAK,IAAI1C,EAAIw1P,EAAI,EAAGx1P,EAAI,EAAIw1P,EAAGx1P,IAC3B,GAAI6wR,EAAiBnI,YAAY1oR,IAC7B6wR,EAAiB1lQ,IAAInrB,GAAG0C,OAAS,EAAG,CAGpC,IAFA,IACIwK,EADU2jR,EAAiB1lQ,IAAInrB,GACnBirB,MACP6kI,EAAK,EAAGA,EAAK5iJ,EAAE0tO,MAAMl4O,OAAQotJ,IAAM,CACxC,IAAIyhI,EAAMrkR,EAAE0tO,MAAM9qF,GACdt/I,EAAI+gR,EAAIpH,cAAcj9Q,GAC1B8jR,EAAYF,EAActgR,GAC1BgxQ,EAAMj6Q,OAAOspR,EAAiB1lQ,IAAI6lQ,GAAYxgR,GAC9CA,EAAEg6Q,WAAW+G,GACbR,EAAsBvgR,EAAGqgR,EAC7B,CACAI,EAAYp0R,KAAKqQ,GACjB9K,EAAKusR,YAAYzhR,GACjB,KACJ,CAGZ,CAEA+jR,EAAcA,EAAY33Q,OAAO43Q,GAGjC,IADA,IAAIM,EAAc,IAAIrI,EACbsI,EAAK,EAAGA,EAAKv2R,KAAKosD,MAAM5kD,OAAQ+uR,IACrCD,EAAYpmQ,IAAIhpB,EAAKgtR,QAAQjkQ,IAAI8lQ,EAAYQ,IAAMA,GAGvD,IAAIC,EAAgB,GAOpB,OANAlQ,EAAMhlR,QAAQtB,KAAK0/O,OAAO,SAASpL,GAC3BgiD,EAAYrmQ,IAAIqkN,EAAKzmO,QAAUyoR,EAAYrmQ,IAAIqkN,EAAKjtO,UACpDitO,EAAKj+N,UACLmgR,EAAc70R,KAAK2yO,GAE3B,IACOkiD,CACX,IAMJ1F,EAAM2F,WAAa,CAMfC,WAAY,WACR,OAAO5F,EAAMxK,MAAMlxP,MAAM,CAAE,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QACvF,EAOAuhQ,QAAS,WACL,OAAO7F,EAAMxK,MAAMlxP,MAAM,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,QAAS,QAChH,SAAU,SAAU,QAAS,QAAS,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,QAAS,SAAU,SAAU,SACvI,EAOAwhQ,WAAY,WACR,OAAO9F,EAAMxK,MAAMlxP,MAAM,CAAE,OAAQ,OAAQ,QAC/C,EAQAyhQ,WAAY,SAASC,GAIjB,OAHIxQ,EAAMG,YAAYqQ,KAClBA,EAAS,GAENhG,EAAMxK,MAAMyQ,mBAAmBD,EAAQ,EAClD,EAQAE,OAAQ,SAASxvR,GAIb,OAHI8+Q,EAAMG,YAAYj/Q,KAClBA,EAAS,IAENspR,EAAMxK,MAAMyQ,mBAAmBvvR,EAAQ,EAClD,EAYAyvR,KAAM,SAASH,EAAQI,GACnB,OAAOpG,EAAMxK,MAAMyQ,mBAAmBD,EAAQI,EAClD,EAaAC,OAAQ,SAASL,EAAQI,EAAeE,GACpC,OAAOtG,EAAMxK,MAAM+Q,qBAAqBP,EAAQI,EAAeE,EACnE,EAOAE,SAAU,WACN,OAAOxG,EAAMxK,MAAMlxP,MACf,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAEjF,EAUAmiQ,KAAM,SAAS3kK,EAAG5tH,GACd,IAAIoQ,EAAI,IAAIyiL,EAAQi5F,MACpB,GAAIl+J,GAAK,GAAK5tH,GAAK,EACf,OAAOoQ,EAGX,IAAK,IAAI7N,EAAI,EAAGA,EAAIqrH,EAAI,EAAGrrH,IAEvB,IADA,IAAIqxC,EAAW,KACN7N,EAAI,EAAGA,EAAI/lC,EAAI,EAAG+lC,IAAK,CAE5B,IAAI1H,EAAO,IAAI4nC,EAAK1jE,EAAEkK,WAAa,IAAMs5B,EAAEt5B,YAK3C,GAJA2D,EAAE+9Q,QAAQ9vP,GACNuV,GACAxjC,EAAEo9Q,QAAQ55O,EAAUvV,GAEpB97B,EAAI,EAAG,CACP,IAAIilB,EAAOpX,EAAE89Q,SAAS3rR,EAAI,GAAGkK,WAAa,IAAMs5B,EAAEt5B,YAClD2D,EAAEo9Q,QAAQhmQ,EAAM6W,EACpB,CACAuV,EAAWvV,CACf,CAEJ,OAAOjuB,CACX,GAOJ07Q,EAAMxK,MAAQ,CAMVlxP,MAAO,SAASoiQ,GAGZ,IADA,IAAIC,EAAcC,EAAQ,IAAI7/F,EAAQi5F,MAASvgR,EAAQinR,EAAY3wR,QAC1DU,EAAI,EAAGwpB,EAAMxgB,EAAM/I,OAAQD,EAAIwpB,EAAKxpB,IAAK,CAC9C,IAAImD,EAAO6F,EAAMhJ,GACjB,GAAI++Q,EAAM19Q,SAAS8B,GACnB,CACI,GAAIA,EAAKiL,QAAQ,MAAQ,EACrB,KAAM,0CAEV,IAAIk9G,EAAInoH,EAAKE,MAAM,MACnB,GAAgB,GAAZioH,EAAErrH,OACF,KAAM,0CAEViwR,EAAe,IAAIv0C,EAAKrwH,EAAE,GAAIA,EAAE,IAChC6kK,EAAMlF,QAAQiF,EAClB,CACA,GAAInR,EAAMxjH,SAASp4J,GAAO,CACtB,IAAK+sR,EACD,KAAM,8CAEV92R,EAAM6H,WAAWivR,EAAc/sR,EACnC,CACJ,CACA,OAAOgtR,CACX,EAMAlD,UAAW,SAASkD,EAAOjD,GACvB,GAAInO,EAAMG,YAAYiR,GAClB,KAAM,sDAENpR,EAAMG,YAAYgO,KAClBA,GAAS,GAGb,IADA,IAAIkD,EAAM,GACDpwR,EAAI,EAAGwpB,EAAM2mQ,EAAMh4C,MAAMl4O,OAAQD,EAAIwpB,EAAKxpB,IAAK,CACpD,IAAI+sO,EAAOojD,EAAMh4C,MAAMn4O,GACvBowR,EAAIh2R,KAAK2yO,EAAKzmO,OAAOwiB,GAAK,KAAOikN,EAAKjtO,OAAOgpB,IACzCokQ,GACAkD,EAAIh2R,KAAK,CAAE0uB,GAAIikN,EAAKjkN,IAE5B,CACA,OAAOsnQ,CACX,EAWAC,UAAW,SAASC,EAAchlK,EAAGxiG,EAAI+mK,GAqBrC,OApBIkvF,EAAMG,YAAY5zJ,KAClBA,EAAI,IAAIglE,EAAQ/7D,MAAM,EAAG,IAGzBwqJ,EAAMG,YAAYp2P,KAClBA,EAAKq8P,KAGTt1F,EAAgBz2L,EAAM6H,WAAW,CAC7BuD,MAAO,GACPC,OAAQ,GACRqkB,GAAIA,EACJ/D,OAAQ,GACRoH,KAAM,UACNtlB,KAAM,SACN0pR,UAAU,EACV1yR,EAAGytH,EAAEztH,EACLjB,EAAG0uH,EAAE1uH,GACNizL,GAEIygG,EAAaE,SAAS3gG,EACjC,EAUA4gG,eAAgB,SAASngG,EAAS97K,EAAMuiB,EAAIn3B,GACxC,OAAO0wL,EAAQogG,QAAQl8Q,EAAMuiB,EAAIn3B,EACrC,EAOA+wR,uBAAwB,SAASrgG,EAAS6/F,EAAOS,EAAUC,GAEvD,GAAI9R,EAAMG,YAAY5uF,GAClB,KAAM,oCAEV,GAAIyuF,EAAMG,YAAYiR,GAClB,KAAM,kCAENpR,EAAMG,YAAY0R,KAClBA,GAAW,GAEX7R,EAAMG,YAAY2R,KAClBA,GAAa,GAMjB,IAHA,IAEc/0P,EAAMy/G,EAFhB/2I,EAAQ8rL,EAAQhsL,QAAQoZ,aAAe,IACvCjZ,EAAS6rL,EAAQhsL,QAAQmZ,cAAgB,IACzCnK,EAAM,GACDtT,EAAI,EAAGwpB,EAAM2mQ,EAAMtrO,MAAM5kD,OAAQD,EAAIwpB,EAAKxpB,IAAK,CAEpD,IAAIsrH,GADJxvF,EAAOq0P,EAAMtrO,MAAM7kD,IACN+F,SACTg5Q,EAAMG,YAAY5zJ,KAEdA,EADAyzJ,EAAME,UAAUnjP,EAAKj+B,IAAMkhR,EAAME,UAAUnjP,EAAKl/B,GAC5C,IAAI23H,EAAMz4F,EAAKj+B,EAAGi+B,EAAKl/B,GAGvB,IAAI23H,EAAMwqJ,EAAMW,cAAc,GAAIl7Q,EAAQ,IAAKu6Q,EAAMW,cAAc,GAAIj7Q,EAAS,MAG5F,IAAIyxQ,EAAM,CAAC,EAEK,MAAZp6O,EAAKhT,IAUA+nQ,GACLz3R,EAAM6H,WAAWi1Q,EAAK,CAClB1xQ,MAAuB,IAAhB1I,KAAK+sB,SAAiB,GAC7BpkB,OAAwB,GAAhB3I,KAAK+sB,SAAgB,GAC7BhiB,KAAM,YACNslB,KAAM,CACFu9F,MAAO,aAQnB,IAAIg0J,GAHJniI,EAAQ9iJ,KAAK43R,UAAU//F,EAAShlE,EAAGxvF,EAAKhT,GAAIotP,IAGzBwH,SACfqB,EAAME,UAAUvB,KAChB5hP,EAAKj+B,EAAI6/Q,EAAO7/Q,EAChBi+B,EAAKl/B,EAAI8gR,EAAO9gR,EAChBk/B,EAAKt3B,MAAQk5Q,EAAOl5Q,MACpBs3B,EAAKr3B,OAASi5Q,EAAOj5Q,QAEzB6O,EAAIwoB,EAAKhT,IAAMyyH,CACnB,CACA,IAAK,IAAIu1I,EAAM,EAAGA,EAAMX,EAAMh4C,MAAMl4O,OAAQ6wR,IAAO,CAC/C,IAAI/jD,EAAOojD,EAAMh4C,MAAM24C,GACnBC,EAAcz9Q,EAAIy5N,EAAKzmO,OAAOwiB,IAClC,IAAIi2P,EAAMG,YAAY6R,GAAtB,CAGA,IAAIC,EAAc19Q,EAAIy5N,EAAKjtO,OAAOgpB,IAC9Bi2P,EAAMG,YAAY8R,IAGtBv4R,KAAKg4R,eAAengG,EAASygG,EAAaC,EAAa,CAAEloQ,GAAIikN,EAAKjkN,IALlE,CAOJ,CACA,GAAI8nQ,EAAU,CACF,IAAItgG,EAAQ2gG,aAAa3gG,GAC/B4gG,YAAYf,EAAO,CAAEgB,aAAa,IACpC,IAAK,IAAIC,EAAM,EAAGA,EAAMjB,EAAMtrO,MAAM5kD,OAAQmxR,KAExC71I,EAAQjoI,GADRwoB,EAAOq0P,EAAMtrO,MAAMusO,IACFtoQ,KACX40P,OAAO,IAAIhoJ,EAAK55F,EAAKj+B,EAAGi+B,EAAKl/B,EAAGk/B,EAAKt3B,MAAOs3B,EAAKr3B,QAE/D,CACJ,EAWA+qR,mBAAoB,SAASD,EAAQI,GAC7B5Q,EAAMG,YAAYqQ,KAClBA,EAAS,GAETxQ,EAAMG,YAAYyQ,KAClBA,EAAgB,GAGpB,IAA2D0B,EAAvDxjR,EAAI,IAAIyiL,EAAQi5F,MAAS+H,GAAW,EAAGC,EAAY,GACvD,GAAIhC,GAAU,GAAKI,GAAiB,EAChC,OAAO9hR,EAEX,IAAIyoC,EAAO,IAAIotB,KAAQ4tN,GAASpnR,YAChC2D,EAAE+9Q,QAAQt1O,GACVzoC,EAAEyoC,KAAOA,EACTi7O,EAAUn3R,KAAKk8C,GACf,IAAK,IAAIt2C,EAAI,EAAGA,EAAIuvR,EAAQvvR,IAAK,CAC7BqxR,EAAO,GACP,IAAK,IAAI7tP,EAAI,EAAGA,EAAI+tP,EAAUtxR,OAAQujC,IAElC,IADA,IAAIp+B,EAASmsR,EAAU/tP,GACdjmC,EAAI,EAAGA,EAAIoyR,EAAepyR,IAAK,CACpC,IAAIqqC,EAAO,IAAI87B,KAAQ4tN,GAASpnR,YAChC2D,EAAEo9Q,QAAQ7lR,EAAQwiC,GAClBypP,EAAKj3R,KAAKwtC,EACd,CAEJ2pP,EAAYF,CAChB,CACA,OAAOxjR,CACX,EAYAiiR,qBAAsB,SAASP,EAAQI,EAAe6B,GAC9CzS,EAAMG,YAAYqQ,KAClBA,EAAS,GAETxQ,EAAMG,YAAYyQ,KAClBA,EAAgB,GAEhB5Q,EAAMG,YAAYsS,KAClBA,EAAY,GAEhB,IAA2DH,EAAvDxjR,EAAI,IAAIyiL,EAAQi5F,MAAS+H,GAAW,EAAGC,EAAY,GACvD,GAAIhC,GAAU,GAAKI,GAAiB,GAAK6B,GAAa,EAClD,OAAO3jR,EAGX,IAAK,IAAIjQ,EAAI,EAAGA,EAAI4zR,EAAW5zR,IAAK,CAChC,IAAI04C,EAAO,IAAIotB,KAAQ4tN,GAASpnR,YAChC2D,EAAE+9Q,QAAQt1O,GACVi7O,EAAY,CAACj7O,GACb,IAAK,IAAIt2C,EAAI,EAAGA,EAAIuvR,EAAQvvR,IAAK,CAC7BqxR,EAAO,GACP,IAAK,IAAI7tP,EAAI,EAAGA,EAAI+tP,EAAUtxR,OAAQujC,IAElC,IADA,IAAIp+B,EAASmsR,EAAU/tP,GACdjmC,EAAI,EAAGA,EAAIoyR,EAAepyR,IAAK,CACpC,IAAIqqC,EAAO,IAAI87B,KAAQ4tN,GAASpnR,YAChC2D,EAAEo9Q,QAAQ7lR,EAAQwiC,GAClBypP,EAAKj3R,KAAKwtC,EACd,CAEJ2pP,EAAYF,CAChB,CACJ,CACA,OAAOxjR,CACX,EASA4jR,2BAA4B,SAASC,EAAWC,EAAcC,GAWtD7S,EAAMG,YAAYwS,KAClBA,EAAY,IAEZ3S,EAAMG,YAAYyS,KAClBA,EAAe,GAEf5S,EAAMG,YAAY0S,KAClBA,GAAS,GAGb,IAAI/jR,EAAI,IAAIyiL,EAAQi5F,MAAS+H,GAAW,EACxC,GAAII,GAAa,EACb,OAAO7jR,EAGX,IAAIyoC,EAAO,IAAIotB,KAAQ4tN,GAASpnR,YAEhC,GADA2D,EAAE+9Q,QAAQt1O,GACQ,IAAdo7O,EACA,OAAO7jR,EAEX,GAAI6jR,EAAY,EAAG,CAEf,IAAK,IAAI1xR,EAAI,EAAGA,EAAI0xR,EAAW1xR,IAAK,CAChC,IAAI6xR,EAAWhkR,EAAEs9Q,eAAe,GAAIwG,GACpC,IAAKE,EAED,MAEJ,IAAIrF,EAAU3+Q,EAAE+9Q,QAAQ5rR,EAAEkK,YAC1B2D,EAAEo9Q,QAAQ4G,EAAUrF,EACxB,CACA,IAAKoF,GAAUF,EAAY,EAEvB,IADA,IAAII,EAAkB/S,EAAMW,cAAc,EAAGgS,GACpCrkI,EAAK,EAAGA,EAAKykI,EAAiBzkI,IAAM,CACzC,IAAIg/H,EAAKx+Q,EAAEs9Q,eAAe,GAAIwG,GAC1BrF,EAAKz+Q,EAAEs9Q,eAAe,GAAIwG,GAC1BtF,GAAMC,IAAOz+Q,EAAEu+Q,aAAaC,EAAIC,IAChCz+Q,EAAEo9Q,QAAQoB,EAAIC,EAEtB,CAEJ,OAAOz+Q,CACX,CACJ,EAUAkkR,cAAe,SAASzhG,EAAS0hG,EAAYL,EAAcC,EAAQf,GAC/D,IAAIhjR,EAAIzU,EAAM8pB,QAAQotK,QAAQi5F,MAAMxK,MAAM0S,2BAA2BO,EAAYL,EAAcC,GAC/FrI,EAAMxK,MAAM4R,uBAAuBrgG,EAASziL,GAAG,EAAOgjR,EAC1D,GAGJz3R,EAAM6H,WAAWqvL,EAAS,CACtB1vL,KAAM,SAAS0D,GACXlL,EAAMwH,KAAK0D,EAASgsL,EAAQttK,GAChC,EAEAuxG,MAAOA,EACPmvJ,UAAWA,EACX0B,SAAUA,EACV1vJ,KAAMA,EACND,KAAMA,EACNquJ,UAAWA,EACXxxJ,OAAQA,EACR2yJ,aAAcA,EACdgN,eAl2EJ,SAAwB9mG,EAAMyJ,GAC1B,IAAI/2L,EAAGjB,EAAG+tH,EACV,GAGIA,GAFA9sH,EAAoB,EAAhB/B,KAAK+sB,SAAe,GAEhBhrB,GADRjB,EAAoB,EAAhBd,KAAK+sB,SAAe,GACRjsB,SAEZ+tH,GAAKA,EAAI,GACjB,OAAOwgE,EAAOyJ,EAAY/2L,EAAI/B,KAAKo7E,MAAM,EAAIp7E,KAAK8tB,IAAI+gG,GAAKA,EAC/D,EA01EIw6J,SAAUA,EACVuB,WAAYA,EACZb,UAAWA,EACXkB,MAAOA,EACPnpH,IAAKA,EACLl6F,KAAMA,EACNi4K,KAAMA,EACN4tC,MAAOA,EACP5G,YAAaA,GAEpB,CAphGD,CAohGGppR,OAAOH,MAAM+G,QAEhB,SAAU/E,EAAGC,GAET,IAAIjC,EAAQG,OAAOH,MACfk3L,EAAUl3L,EAAM8pB,QAAQotK,QACxBjwL,EAAQjH,EAAMiH,MACdY,EAAa7H,EAAM6H,WACnBszH,EAAQ+7D,EAAQ/7D,MAChBmB,EAAO46D,EAAQ56D,KACfpD,EAASg+D,EAAQh+D,OACjBysJ,EAAQzuF,EAAQyuF,MAChBjxN,EAAWixN,EAAMjxN,SACjBzsD,EAAW09Q,EAAM19Q,SACjB4jR,EAAe30F,EAAQ20F,aAEvBp3Q,EAAIzU,EAAMghI,SACVn9H,EAAI7D,EAAM+pB,QAEVosG,EAAUtyH,EAAEgjH,KAAKsP,QAEjBrhG,EAAU9yB,EAAE8yB,QAGZk8J,EAAc,cACd8nG,EAAU,CACNC,KAAM,OACNC,WAAY,aACZC,aAAc,eACdC,SAAU,YAGd78M,EAAQ,QACRxxD,EAAM,MACNgmB,EAAQ,QACRC,EAAS,SAMb,SAASqoP,EAAmB3yR,EAASsoB,GAIjC,IAHA,IAEI/mB,EAAOqd,EAFPgpO,EAAiB/uP,KAAKmH,QACtB04D,GAAa,EAERt4D,EAAI,EAAGA,EAAIkoB,EAAOjoB,OAAQD,IAE/BmB,EAAQvB,EADR4e,EAAQ0J,EAAOloB,IAEX8tD,EAAS3sD,IAAUqmP,EAAehpO,KAAWrd,IAC7CqmP,EAAehpO,GAASrd,EACxBm3D,GAAa,GAIrB,OAAOA,CACX,CAhBAg4H,EAAQ4hG,QAAUA,EAkBlB,IAAIM,EAAQnyR,EAAM7E,OAAO,CACrBoF,KAAM,SAAS/C,EAAGjB,GACdnE,KAAKoF,EAAIA,EACTpF,KAAKmE,EAAIA,CACb,EACA03H,SAAU,WACN,OAAOhC,EAAOyyJ,QAAQtsR,KAAKoF,EAAGpF,KAAKmE,EACvC,EACAsN,SAAU,WACN,OAAO9Q,EAAMsQ,OAAO,iBAAkBjR,KAAKoF,EAAGpF,KAAKmE,EACvD,EACA61H,OAAQ,WACJ,OAAO,IAAI+/J,EAAM,EAAI/5R,KAAKoF,EAAG,EAAIpF,KAAKmE,EAC1C,IAGA61R,EAAcpyR,EAAM7E,OAAO,CAC3BoF,KAAM,SAAS/C,EAAGjB,GACdnE,KAAKoF,EAAIA,EACTpF,KAAKmE,EAAIA,CACb,EACA81R,eAAgB,WACZ,OAAO,IAAIzN,EAAa,EAAG,EAAG,EAAG,EAAGxsR,KAAKoF,EAAGpF,KAAKmE,EACrD,EACA03H,SAAU,WACN,OAAOhC,EAAOwyJ,YAAYrsR,KAAKoF,EAAGpF,KAAKmE,EAC3C,EACAsN,SAAU,WACN,OAAO9Q,EAAMsQ,OAAO,qBAAsBjR,KAAKoF,EAAGpF,KAAKmE,EAC3D,EACAilR,KAAM,SAASrkP,GACX/kC,KAAKoF,GAAK2/B,EAAM3/B,EAChBpF,KAAKmE,GAAK4gC,EAAM5gC,CACpB,EACAmlR,MAAO,SAASK,GACZ3pR,KAAKoF,GAAKukR,EACV3pR,KAAKmE,GAAKwlR,CACd,EACAniR,OAAQ,WACJ,OAAOnE,KAAKo7E,KAAKz+E,KAAKoF,EAAIpF,KAAKoF,EAAIpF,KAAKmE,EAAInE,KAAKmE,EACrD,EACAk6C,UAAW,WACa,IAAhBr+C,KAAKk6R,QAGTl6R,KAAKspR,MAAM,EAAItpR,KAAKwH,SACxB,EACAwyH,OAAQ,WACJ,OAAO,IAAIggK,GAAah6R,KAAKoF,GAAIpF,KAAKmE,EAC1C,IAGAg2R,EAAWvyR,EAAM7E,OAAO,CACxBoF,KAAM,SAASiyH,EAAOh1H,EAAGjB,GACrBnE,KAAKoF,EAAIA,GAAK,EACdpF,KAAKmE,EAAIA,GAAK,EACdnE,KAAKo6H,MAAQA,CACjB,EACA3oH,SAAU,WACN,OAAIzR,KAAKoF,GAAKpF,KAAKmE,EACRxD,EAAMsQ,OAAO,sBAAuBjR,KAAKo6H,MAAOp6H,KAAKoF,EAAGpF,KAAKmE,GAE7DxD,EAAMsQ,OAAO,cAAejR,KAAKo6H,MAEhD,EACAyB,SAAU,WACN,OAAOhC,EAAO9/E,SAAS/5C,KAAKo6H,MAAOp6H,KAAKoF,EAAGpF,KAAKmE,EACpD,EACAo6E,OAAQ,WACJ,OAAO,IAAIu9C,EAAM97H,KAAKoF,EAAGpF,KAAKmE,EAClC,EACA61H,OAAQ,WACJ,OAAO,IAAImgK,EAlGK,IAkGwBn6R,KAAKo6H,MAAOp6H,KAAKoF,EAAGpF,KAAKmE,EACrE,IAGJg2R,EAAS1mR,KAAO,IAAI0mR,EAAS,GAE7BA,EAAS/yO,OAAS,SAASrN,GACvB,OAAO,IAAIogP,EAASpgP,EAASqgF,MAAOrgF,EAAS30C,EAAG20C,EAAS51C,EAC7D,EAEAg2R,EAAS/kQ,MAAQ,SAASjmB,GACtB,IAAIkK,EAASlK,EAAItI,MAAM,EAAGsI,EAAI3H,OAAS,GAAGoD,MAAM,KAC5CwvH,EAAQ/gH,EAAO,GACfjU,EAAIiU,EAAO,GACXlV,EAAIkV,EAAO,GAEf,OADe,IAAI8gR,EAAS//J,EAAOh1H,EAAGjB,EAE1C,EAEA,IAAIi2R,EAAqBxyR,EAAM7E,OAAO,CAClCoF,KAAM,SAAS/C,EAAGjB,EAAGo2H,EAAQC,EAAQJ,EAAO77C,GACxCv+E,KAAKowC,UAAY,IAAI4pP,EAAY50R,EAAGjB,GAChCo2H,IAAW33H,GAAe43H,IAAW53H,IACrC5C,KAAK+vC,MAAQ,IAAIgqP,EAAMx/J,EAAQC,IAE/BJ,IAAUx3H,IACV5C,KAAKmxC,OAASotC,EAAS,IAAI47M,EAAS//J,EAAO77C,EAAOn5E,EAAGm5E,EAAOp6E,GAAK,IAAIg2R,EAAS//J,GAEtF,EACA3oH,SAAU,WACN,IAAIA,EAAW,SAASkiC,GACpB,OAAOA,EAAYA,EAAUliC,WAAa,EAC9C,EAEA,OAAOA,EAASzR,KAAKowC,WACjB3+B,EAASzR,KAAKmxC,QACd1/B,EAASzR,KAAK+vC,MACtB,EAEA5/B,OAAQ,SAAS8wI,GACbA,EAAOo5I,WAAar6R,KACpBihJ,EAAOq5I,kBACX,EAEAz+J,SAAU,WACN,IAAI72H,EAAI60H,EAAOM,OAWf,OATIn6H,KAAKowC,YACLprC,EAAIA,EAAEskR,MAAMtpR,KAAKowC,UAAUyrF,aAE3B77H,KAAKmxC,SACLnsC,EAAIA,EAAEskR,MAAMtpR,KAAKmxC,OAAO0qF,aAExB77H,KAAK+vC,QACL/qC,EAAIA,EAAEskR,MAAMtpR,KAAK+vC,MAAM8rF,aAEpB72H,CACX,EACAg1H,OAAQ,WACJ,IAAI7oF,EAASnxC,KAAKmxC,OAASnxC,KAAKmxC,OAAO6oF,SAAWp3H,EAC9C23R,EAAeppP,EAASA,EAAO0qF,WAAahC,EAAOM,OACnDpqF,EAAQ/vC,KAAK+vC,MAAQ/vC,KAAK+vC,MAAMiqF,SAAWp3H,EAC3C43R,EAAczqP,EAAQA,EAAM8rF,WAAahC,EAAOM,OAEhDsgK,EAAiB,IAAI3+J,GAAO97H,KAAKowC,UAAUhrC,GAAIpF,KAAKowC,UAAUjsC,GAClEs2R,EAAiBF,EAAajR,MAAMkR,GAAapyR,MAAMqyR,GACvD,IAAIrqP,EAAY,IAAI4pP,EAAYS,EAAer1R,EAAGq1R,EAAet2R,GAE7DwvC,EAAY,IAAIymP,EAKpB,OAJAzmP,EAAUvD,UAAYA,EACtBuD,EAAUxC,OAASA,EACnBwC,EAAU5D,MAAQA,EAEX4D,CACX,IAGA+mP,EAAoB,CACpBC,UAAW,WACP,IAAIxzR,EAAUnH,KAAKmH,QACfyzR,EAAc56R,KAAK66R,aACnBC,EAAe96R,KAAK+6R,cACpBxgK,EAASpzH,EAAQ4E,MAAQ6uR,EACzBpgK,EAASrzH,EAAQ6E,OAAS8uR,EAEzBzlO,EAASklE,KACVA,EAAS,GAERllE,EAASmlE,KACVA,EAAS,GAGbx6H,KAAKq6R,WAAWtqP,MAAQ,IAAIgqP,EAAMx/J,EAAQC,EAC9C,EAEAwgK,cAAe,WACX,IAAI7zR,EAAUnH,KAAKmH,QACf/B,EAAI+B,EAAQ/B,GAAK,EACjBjB,EAAIgD,EAAQhD,GAAK,EACrBnE,KAAKq6R,WAAWjqP,UAAY,IAAI4pP,EAAY50R,EAAGjB,EACnD,EAEA82R,UAAW,WACP,IAAI9zR,EAAUnH,KAAKmH,QACfwsC,GAAY,GACS,IAArBxsC,EAAQ+zR,WAAuBpkK,EAAQ3vH,EAAQ4E,QAAU+qH,EAAQ3vH,EAAQ6E,WACzEhM,KAAKw/J,UAAS,GACdx/J,KAAK26R,YACLhnP,GAAY,IAGZmjF,EAAQ3vH,EAAQ/B,IAAM0xH,EAAQ3vH,EAAQhD,MACtCnE,KAAKg7R,gBACLrnP,GAAY,GAGZA,GACA3zC,KAAKs6R,kBAEb,EAEAa,YAAa,SAASh0R,GAClB,IAAIggD,GAAS,EAiBb,OAf8B,IAA1BnnD,KAAKmH,QAAQ+zR,UAAsBl7R,KAAKo7R,oBAAoBj0R,EAAS,CAACqqC,EAAOC,MAC7E0V,GAAS,EACTnnD,KAAKw/J,UAAS,GACdx/J,KAAK26R,aAGL36R,KAAKo7R,oBAAoBj0R,EAAS,CA/NtC,IACA,QA+NIggD,GAAS,EACTnnD,KAAKg7R,iBAGL7zO,GACAnnD,KAAKs6R,mBAGFnzO,CACX,GAGAp/B,EAAUngB,EAAM7E,OAAO,CACvBoF,KAAM,SAAShB,GACX,IAAI0E,EAAU7L,KACd6L,EAAQ1E,QAAUqB,EAAW,CAAC,EAAGqD,EAAQ1E,QAASA,GAClD0E,EAAQwkB,GAAKxkB,EAAQ1E,QAAQkpB,GAC7BxkB,EAAQwvR,YAAcp+J,EAAKrwE,QAC3B/gD,EAAQwuR,WAAa,IAAID,CAC7B,EAEAptR,QAAS,SAAStE,GACd,OAAO1I,KAAKs7R,mBAAmBtuR,QAAQtE,EAC3C,EAEA+0M,OAAQ,SAASt2M,GACTA,GAAWA,EAAQkpB,KAClBrwB,KAAKqwB,GAAKlpB,EAAQkpB,GAE3B,EAEA/iB,SAAU,SAASlI,EAAGjB,GAClB,IAAIgD,EAAUnH,KAAKmH,QACnB,IAAK2vH,EAAQ1xH,GACV,OAAO,IAAI02H,EAAM30H,EAAQ/B,EAAG+B,EAAQhD,GAGnC2yH,EAAQ3yH,IACRgD,EAAQ/B,EAAIA,EACZ+B,EAAQhD,EAAIA,GACLiB,aAAa02H,IACpB30H,EAAQ/B,EAAIA,EAAEA,EACd+B,EAAQhD,EAAIiB,EAAEjB,GAGlBnE,KAAKq6R,WAAWjqP,UAAY,IAAI4pP,EAAY7yR,EAAQ/B,EAAG+B,EAAQhD,GAC/DnE,KAAKs6R,kBACT,EAEAnpP,OAAQ,SAASipF,EAAO77C,GAKpB,OAJIu4C,EAAQsD,KACRp6H,KAAKq6R,WAAWlpP,OAAS,IAAIgpP,EAAS//J,EAAO77C,EAAOn5E,EAAGm5E,EAAOp6E,GAC9DnE,KAAKs6R,oBAEFt6R,KAAKq6R,WAAWlpP,QAAUgpP,EAAS1mR,IAC9C,EAEA6nR,iBAAkB,WACd,OAAOt7R,KAAKyuO,cAChB,EAEA6rD,iBAAkB,WACd,IAAIvgK,EAAS/5H,KAAKq6R,WAAWx+J,WAC7B77H,KAAKs7R,mBAAmB3nP,UAAU,IAAIv+B,EAAEykH,OAAOE,EAAO70H,EAAG60H,EAAO99G,EAAG89G,EAAOr1H,EAAGq1H,EAAOv1H,EAAGu1H,EAAOp1H,EAAGo1H,EAAOvsE,GAC5G,EAEA+tO,OAAQ,WAAY,EAEpBH,oBAAqBtB,EAErBt6H,SAAU,SAASltI,GACf,IAAIg6D,EACJ,IAAKtsF,KAAKw7R,WAAalpQ,EAAO,CAC1B,IAAIgnB,EAAMt5C,KAAKy7R,gBAAkB,IAAIrmR,EAAE6nH,KACnCmH,EAAa9qF,EAAIikF,UACrBjxC,EAAO,IAAI2wC,EAAKmH,EAAWh/H,EAAGg/H,EAAWjgI,EAAGm1C,EAAIvtC,QAASutC,EAAIttC,UAC7DhM,KAAKq7R,YAAc/uM,EACnBtsF,KAAK66R,aAAevuM,EAAKvgF,MACzB/L,KAAK+6R,cAAgBzuM,EAAKtgF,OAC1BhM,KAAKw7R,WAAY,CACrB,MACIlvM,EAAOtsF,KAAKq7R,YAEhB,OAAO/uM,CACX,EAEAmvM,aAAc,WACV,OAAOz7R,KAAKyuO,eAAe7sG,SAC/B,IAGA85J,EAAa3zQ,EAAQhlB,OAAO,CAC5BoF,KAAM,SAAShB,GACX4gB,EAAQhgB,GAAGI,KAAKoC,KAAKvK,KAAMmH,IAE3BA,EAAUnH,KAAKmH,SACPusB,KAAOioQ,EAAwBx0R,EAAQusB,MAC/CvsB,EAAQy4H,OAAS+7J,EAAwBx0R,EAAQy4H,OACrD,EAEAz4H,QAAS,CACLy4H,OAAQ,CACJ3O,MAAO,OACPllH,MAAO,GAEX2nB,KAAM,CACFu9F,MAAO0gE,IAIfj+J,KAAM,SAASu9F,EAAOl6F,GAClB/2B,KAAK47R,MAAM,CACP3qK,MAAO4qK,EAAS5qK,GAChBl6F,QAASA,GAEjB,EAEA6oG,OAAQ,SAAS3O,EAAOllH,EAAOgrB,GAC3B/2B,KAAK87R,QAAQ,CACT7qK,MAAO4qK,EAAS5qK,GAChBllH,MAAOA,EACPgrB,QAASA,GAEjB,EAEA0mL,OAAQ,SAASt2M,GACb,GAAIA,EAAS,CACT,IAAIy4H,EAASz4H,EAAQy4H,OACjBlsG,EAAOvsB,EAAQusB,KACfksG,GACA5/H,KAAK87R,QAAQH,EAAwB/7J,IAErClsG,GACA1zB,KAAK47R,MAAMD,EAAwBjoQ,IAGvC3L,EAAQhgB,GAAG01M,OAAOlzM,KAAKvK,KAAMmH,EACjC,CACJ,EAEAo0R,OAAQ,SAAS9tR,GACb,IAAIghO,EAAiBzuO,KAAKyuO,eACtBtnO,EAAUnH,KAAKmH,QACfkwL,EAAQlwL,EAAQkwL,MAEpB,GAAIA,GAASA,EAAM3jK,KAAM,CACrB,IAAIA,EAAOjmB,EAAOkuR,EAAwBtkG,EAAM3jK,MAAQvsB,EAAQusB,KAChE+6M,EAAe/6M,KAAKA,EAAKu9F,MAAOv9F,EAAKqD,QACzC,CACJ,EAEA+kQ,QAAS,SAASC,GACd,IAAI50R,EAAUnH,KAAKmH,QACnBqB,EAAWrB,EAAS,CAChBy4H,OAAQm8J,IAKZ,IAAIn8J,EAAS,MAFbm8J,EAAgB50R,EAAQy4H,QAGN7zH,MAAQ,IACtB6zH,EAAS,CACL3O,MAAO8qK,EAAc9qK,MACrBllH,MAAOgwR,EAAchwR,MACrBgrB,QAASglQ,EAAchlQ,QACvB8nH,SAAUk9I,EAAcl9I,WAIhC7+I,KAAKyuO,eAAetnO,QAAQ+oB,IAAI,SAAU0vG,EAC9C,EAEAg8J,MAAO,SAASI,GACZ,IAAI70R,EAAUnH,KAAKmH,QACnBqB,EAAWrB,EAAS,CAChBusB,KAAMsoQ,GAAe,CAAC,IAE1B,IAAItoQ,EAAOvsB,EAAQusB,KAEnB,GAAIA,EAAKsyH,SAAU,CACf,IAAIA,EAAWtyH,EAAKsyH,SAChBi2I,EAAmC,WAAlBj2I,EAAStgJ,KAAoBlB,EAAE8wI,eAAiB9wI,EAAE6wI,eACvEr1I,KAAKyuO,eAAe/6M,KAAK,IAAIuoQ,EAAcj2I,GAC/C,MACIhmJ,KAAKyuO,eAAe/6M,KAAKA,EAAKu9F,MAAOv9F,EAAKqD,QAElD,IAGAmlQ,EAAYR,EAAW34R,OAAO,CAC9BoF,KAAM,SAAShB,GACXA,EAAUnH,KAAKm8R,WAAWh1R,GAC1Bu0R,EAAW3zR,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAE9BnH,KAAKo8R,QACLp8R,KAAKq8R,YACLr8R,KAAKi7R,WACT,EAEA9zR,QAAS,CACLowJ,SAAU,GACV+kI,WAAY,aACZ18J,OAAQ,CACJ7zH,MAAO,GAEX2nB,KAAM,CACFu9F,MAAO,SAEXiqK,UAAU,GAGdmB,UAAW,WACP,IAAIl1R,EAAUnH,KAAKmH,QAEnBnH,KAAKyuO,eAAiB,IAAIjqO,EAAE2rI,KAAKrZ,EAAQ3vH,EAAQ25B,MAAQ35B,EAAQ25B,KAAO,GAAI,IAAI1rB,EAAE0mH,MAAS,CACvF/jC,KAAM5wF,EAAQ4wF,OAGlB/3F,KAAK47R,QACL57R,KAAK87R,SACT,EAEAK,WAAY,SAASh1R,GAQjB,OAPIA,GAAWA,EAAQ8pH,QACnB9pH,EAAUqB,EAAW,CAAC,EAAGrB,EAAS,CAC9BusB,KAAM,CACFu9F,MAAO9pH,EAAQ8pH,UAIpB9pH,CACX,EAEAi1R,MAAO,WACH,IAAIj1R,EAAUnH,KAAKmH,QACnB,GAAIA,EAAQm1R,YAAcxlK,EAAQ3vH,EAAQowJ,UAAW,CACjD,IAAIglI,EAAc,GAEdp1R,EAAQq1R,WACRD,EAAY56R,KAAKwF,EAAQq1R,WAGzBr1R,EAAQs1R,YACRF,EAAY56R,KAAKwF,EAAQs1R,YAG7BF,EAAY56R,KAAKwF,EAAQowJ,UAAYliG,EAASluD,EAAQowJ,UAAY,KAAO,KACzEglI,EAAY56R,KAAKwF,EAAQm1R,YAEzBn1R,EAAQ4wF,KAAOwkM,EAAY1xR,KAAK,IACpC,aACW1D,EAAQ4wF,IAEvB,EAEApxC,QAAS,SAAS7lB,GACd,OAAO9gC,KAAKyuO,eAAe9nL,QAAQ7lB,EACvC,EAEA28K,OAAQ,SAASt2M,GACb,GAAIA,EAAS,CACT,IAAIu1R,GAAc,EACd1rH,EAAchxK,KAAKmH,QAEvBA,EAAUnH,KAAKm8R,WAAWh1R,GAE1Bu0R,EAAW3zR,GAAG01M,OAAOlzM,KAAKvK,KAAMmH,IAE5BA,EAAQm1R,YAAcxlK,EAAQ3vH,EAAQowJ,WAAapwJ,EAAQq1R,WAAar1R,EAAQs1R,cAChFj0R,EAAWwoK,EAAa,CACpBsrH,WAAYn1R,EAAQm1R,WACpB/kI,SAAUpwJ,EAAQowJ,SAClBilI,UAAWr1R,EAAQq1R,UACnBC,WAAYt1R,EAAQs1R,aAExBz8R,KAAKo8R,QACLp8R,KAAKyuO,eAAetnO,QAAQ+oB,IAAI,OAAQ8gJ,EAAYj5E,MACpD2kM,GAAc,GAGdv1R,EAAQ25B,OACR9gC,KAAK2mD,QAAQx/C,EAAQ25B,MACrB47P,GAAc,IAGb18R,KAAKm7R,YAAYh0R,IAAYu1R,GAC9B18R,KAAKi7R,WAEb,CACJ,IAGJzyR,EAAW0zR,EAAUn0R,GAAI2yR,GAEzB,IAAIiC,EAAYjB,EAAW34R,OAAO,CAC9BoF,KAAM,SAAShB,GACXu0R,EAAW3zR,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAC9BnH,KAAK48R,YACL58R,KAAK68R,cACT,EAEAA,aAAc,WACV,IAAI11R,EAAUnH,KAAKmH,QACf/B,EAAI+B,EAAQ/B,EACZjB,EAAIgD,EAAQhD,GACZ2yH,EAAQ1xH,IAAM0xH,EAAQ3yH,KACtBnE,KAAKsN,SAASlI,GAAK,EAAGjB,GAAK,EAEnC,EAEAs5M,OAAQ,SAASt2M,GACTA,IACAu0R,EAAW3zR,GAAG01M,OAAOlzM,KAAKvK,KAAMmH,GAC5BnH,KAAKo7R,oBAAoBj0R,EAAS,CAACqqC,EAAOC,KAC1CzxC,KAAK88R,YAEL98R,KAAKo7R,oBAAoBj0R,EAAS,CA5hB1C,IACA,OA4hBQnH,KAAK68R,eAGjB,EAEAD,UAAW,WACP,IAAIz1R,EAAUnH,KAAKmH,QACnBnH,KAAKyuO,eAAiB,IAAIjqO,EAAE+pI,KAAK,CAC7B3O,OAAQz4H,EAAQy4H,OAChBiP,QAAQ,IAGZ7uI,KAAK47R,QACL57R,KAAK88R,WACT,EAEAA,UAAW,WACP,IAAIruD,EAAiBzuO,KAAKyuO,eACtBsuD,EAAcC,EAAqBh9R,KAAKmH,SACxC4E,EAAQgxR,EAAYhxR,MACpBC,EAAS+wR,EAAY/wR,OAEzByiO,EAAethG,SAASx0G,SAAS,CAC7Bg1K,EAAc,EAAG,GACjBA,EAAc5hM,EAAO,GACrB4hM,EAAc5hM,EAAOC,GACrB2hM,EAAc,EAAG3hM,IAEzB,IAGAixR,EAAavB,EAAW34R,OAAO,CAC/BoF,KAAM,SAAShB,GACZu0R,EAAW3zR,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAC9B,IAAIgrF,EAASnyF,KAAKmH,QAAQgrF,OAC1BnyF,KAAKmyF,OAAS,IAAI/8E,EAAE0mH,MAAM3pC,EAAO/sF,EAAG+sF,EAAOhuF,GAC3CnE,KAAK6e,eACR,EAEA1X,QAAS,CACNy4H,OAAQ,CACH3O,MAAO0gE,EACP5lL,MAAO,GAEZ2nB,KAAM,CACDu9F,MAAO,UAIfisK,iBAAkB,SAAS/gK,EAAO5sF,GAC9B,IAAIoE,EAAYpE,EAAKoE,YAIrB,OAHIwoF,GAASxoF,IACTwoF,EAAQA,EAAME,cAAc1oF,IAEzBwoF,CACX,EAEAshF,OAAQ,SAASt2M,GACTA,IACIA,EAAQmG,WACRtN,KAAKmH,QAAQmG,SAAWnG,EAAQmG,UAGpCouR,EAAW3zR,GAAG01M,OAAOlzM,KAAKvK,KAAMmH,GAExC,IAGAg2R,EAAeF,EAAWl6R,OAAO,CACjCoE,QAAS,CACLmlB,OAAQ,EACR6lE,OAAQ,CACJ/sF,EAAG,EACHjB,EAAG,IAIX0a,cAAe,WACX,IAAI1X,EAAUnH,KAAKmH,QACnBnH,KAAKyuO,eAAiB,IAAIjqO,EAAE27H,OAAO,IAAI/qH,EAAE+qH,OAAOngI,KAAKmyF,OAAQhrF,EAAQmlB,QAAS,CAC1EoH,KAAMvsB,EAAQusB,KACdksG,OAAQz4H,EAAQy4H,QAExB,EAEAw9J,eAAgB,SAAS7tP,GACrB,IAGI8tP,EACAlhK,EAHA7uH,EADUtN,KAAKmH,QACImG,SACnB6/H,EAAW59F,EAAK49F,UAKhBkwJ,EADA/vR,GAAY0vE,EACImwD,EAAS,GAETA,EAASA,EAAS3lI,OAAS,MAG3C20H,EAAQn8H,KAAKk9R,iBAAiBG,EAAclrM,SAAU5iD,GACtDvvC,KAAKyuO,eAAe96L,UAAUv+B,EAAEu+B,YAAYvD,UAAU+rF,EAAM/2H,EAAG+2H,EAAMh4H,IAE7E,IAGAm5R,EAAcL,EAAWl6R,OAAO,CAChCoE,QAAS,CACLooC,KAAM,8BACN4iD,OAAQ,CACJ/sF,EAAG,GACHjB,EAAG,IAIX0a,cAAe,WACX,IAAI1X,EAAUnH,KAAKmH,QACnBnH,KAAKyuO,eAAiBjqO,EAAE+pI,KAAKn5G,MAAMjuB,EAAQooC,KAAM,CAC7C7b,KAAMvsB,EAAQusB,KACdksG,OAAQz4H,EAAQy4H,QAExB,EAEAw9J,eAAgB,SAAS7tP,GACrB,IAqvBWu0F,EAAIN,EACf4vH,EACAC,EAvvBIjwH,EAASpjI,KAAKu9R,YAAYhuP,GAC1Bz5B,EAAQstH,EAAOttH,MACfnK,EAAMy3H,EAAOz3H,IACbgoC,EAAYv+B,EAAEu+B,YAKlB,GAJI79B,GACA69B,EAAUxC,QAgvBH2yF,EAhvBoBhuH,EAivB/Bs9O,GADe5vH,EAhvBuB73H,GAivB3BvG,EAAI0+H,EAAG1+H,EAClBiuP,EAAQ7vH,EAAGr/H,EAAI2/H,EAAG3/H,EACVK,EAAEgjH,KAAK8P,IAAIj0H,KAAKwwC,MAAMw/M,EAAOD,KAnvBOznP,GAGxCA,EAAK,CACL,IAAIwmF,EAASnyF,KAAKmyF,OACd/hD,EAAYzkC,EAAIvE,QAAQgpC,WAAW+hD,EAAO/sF,GAAI+sF,EAAOhuF,GACzDwvC,EAAUvD,UAAUA,EAAUhrC,EAAGgrC,EAAUjsC,EAC/C,CACAnE,KAAKyuO,eAAe96L,UAAUA,EAClC,EAEA4pP,YAAa,SAAShuP,GAClB,IAEI60F,EAAYX,EAAU45J,EAFtBl2R,EAAUnH,KAAKmH,QACfgmI,EAAW59F,EAAK49F,SAEpB,GAAIhmI,EAAQmG,UAAY0vE,GAEpB,GADAqgN,EAAgBlwJ,EAAS,GACN,CACf1J,EAAW45J,EAAclrM,SACzBiyC,EAAai5J,EAAcj0J,aAC3B,IAAIs5F,EAAcv1F,EAAS,IACtB/I,GAAcs+F,IACft+F,EAAas+F,EAAYvwI,SAEjC,OAGA,GADAkrM,EAAgBlwJ,EAASA,EAAS3lI,OAAS,GACxB,CACfi8H,EAAW45J,EAAclrM,SACzBiyC,EAAai5J,EAAcl0J,YAC3B,IAAIqlE,EAAcrhE,EAASA,EAAS3lI,OAAS,IACxC48H,GAAcoqE,IACfpqE,EAAaoqE,EAAYr8G,SAEjC,CAEJ,GAAIsxC,EACA,MAAO,CACH3tH,MAAO9V,KAAKk9R,iBAAiB94J,EAAY70F,GACzC5jC,IAAK3L,KAAKk9R,iBAAiBz5J,EAAUl0F,GAGjD,IAGAiuP,EAAkB,CAClBC,SAAU,SAASnwR,GACf,IAAIiiC,EAAOvvC,KAAKyuO,eAQhB,GAPIl/L,aAAgB/qC,EAAE4qI,YAEd7/F,EADAjiC,GAAY0vE,EACLztC,EAAKue,MAAM,GAEXve,EAAKue,MAAMve,EAAKue,MAAMtmD,OAAS,IAG1C+nC,GAAQA,EAAK49F,SAAS3lI,OACtB,OAAO+nC,CAEf,EAEAmuP,wBAAyB,SAASv2R,GAC9B,IAAIw2R,EAAWx2R,EAAQw2R,SACnBC,EAASz2R,EAAQy2R,OAEjBh1R,EAAS+0R,KACTx2R,EAAQw2R,SAAW,CACfj4R,KAAMi4R,IAIV/0R,EAASg1R,KACTz2R,EAAQy2R,OAAS,CACbl4R,KAAMk4R,GAGlB,EAEAC,cAAe,SAASvwR,GACpB,IAAIo7C,EAAS1oD,KAAK47Q,SAAStuQ,GACvBo7C,IACA1oD,KAAKs7R,mBAAmBjvR,OAAOq8C,EAAO+lL,uBAC/BzuO,KAAK47Q,SAAStuQ,GAE7B,EAEAwwR,eAAgB,WACZ,IAAI32R,EAAUnH,KAAKmH,QACnBnH,KAAK09R,wBAAwBv2R,GAE7BnH,KAAK47Q,SAAW,CAAC,EACjB57Q,KAAK47Q,SAAS5+L,GAASh9E,KAAKoyN,cAAcjrN,EAAQw2R,SAAU3gN,GAC5Dh9E,KAAK47Q,SAASpwP,GAAOxrB,KAAKoyN,cAAcjrN,EAAQy2R,OAAQpyQ,EAC5D,EAEA4mM,cAAe,SAASjrN,EAASmG,GAC7B,IAEIywR,EAAYr1O,EAFZhjD,GAAQyB,GAAW,CAAC,GAAGzB,KACvB6pC,EAAOvvC,KAAKy9R,SAASnwR,GAEzB,GAAKiiC,EAYL,OAPI7pC,GAAQ+zR,EAAQG,aAChBmE,EAAaZ,EACNz3R,GAAQ+zR,EAAQE,YAAcj0R,GAAQ+zR,EAAQI,SACrDkE,EAAaT,EAEbt9R,KAAK69R,cAAcvwR,GAEnBywR,IACAr1O,EAAS,IAAIq1O,EAAWv1R,EAAW,CAAC,EAAGrB,EAAS,CAC5CmG,SAAUA,MAEP8vR,eAAe7tP,GACtBvvC,KAAKs7R,mBAAmBnhP,OAAOuO,EAAO+lL,gBAE/B/lL,QAPX,EAXI1oD,KAAK69R,cAAcvwR,EAoB3B,EAEA0wR,gBAAiB,SAAS1wR,GACtB,IAAIo7C,EAAS1oD,KAAK47Q,SAAStuQ,GAE3B,GAAIo7C,EAAQ,CACR,IAAInZ,EAAOvvC,KAAKy9R,SAASnwR,GACrBiiC,EACAmZ,EAAO00O,eAAe7tP,GAEtBvvC,KAAK69R,cAAcvwR,EAE3B,CACJ,EAEA2wR,QAAS,CACLnoR,MAAO,WACPnK,IAAK,UAGTuyR,cAAe,SAASC,EAAY7wR,EAAUnG,GAC1CnH,KAAK09R,wBAAwBv2R,GAE7B,IAAIi3R,EAAcp+R,KAAKmH,QACnB6sP,EAAMh0P,KAAKi+R,QAAQ3wR,GACnB+wR,GAAeD,EAAYpqC,IAAQ,CAAC,GAAGtuP,KACvC44R,EAAan3R,EAAQ6sP,GACrBjsM,GAAU,EAcd,OAbIu2O,GACAF,EAAYpqC,GAAOxrP,EAAW,CAAC,EAAG41R,EAAYpqC,GAAMsqC,GAChDA,EAAW54R,MAAQ24R,GAAeC,EAAW54R,MAC7C1F,KAAK69R,cAAcvwR,GACnBtN,KAAK47Q,SAAStuQ,GAAYtN,KAAKoyN,cAAcgsE,EAAYpqC,GAAM1mP,GAC/Dy6C,GAAU,GACH/nD,KAAK47Q,SAAStuQ,IACtBtN,KAAK47Q,SAAStuQ,GAAUmwM,OAAO6gF,IAE3BH,IAAen+R,KAAK47Q,SAAStuQ,IAAa8wR,EAAYpqC,KAC7Dh0P,KAAK47Q,SAAStuQ,GAAYtN,KAAKoyN,cAAcgsE,EAAYpqC,GAAM1mP,GAC/Dy6C,GAAU,GAEPA,CACX,EAEAw2O,eAAgB,SAASJ,EAAYh3R,IAC5BnH,KAAKk+R,cAAcC,EAAYnhN,EAAO71E,IAAYg3R,GACnDn+R,KAAKg+R,gBAAgBhhN,IAEpBh9E,KAAKk+R,cAAcC,EAAY3yQ,EAAKrkB,IAAYg3R,GACjDn+R,KAAKg+R,gBAAgBxyQ,EAE7B,GAGA+iH,EAAOmtJ,EAAW34R,OAAO,CACzBoF,KAAM,SAAShB,GACXu0R,EAAW3zR,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAC9BnH,KAAKy2B,UAAY,IAAIjyB,EAAEisI,MACvBzwI,KAAKw+R,kBACLx+R,KAAKi7R,WACT,EAEA9zR,QAAS,CACL+zR,UAAU,GAGdI,iBAAkB,WACd,OAAOt7R,KAAKy2B,SAChB,EAEAroB,KAAM,SAAS1F,GACX,IAAIvB,EAAUnH,KAAKmH,QACnB,IAAIuB,EAQA,OAAOvB,EAAQiH,KAPXjH,EAAQiH,MAAQ1F,IACjBvB,EAAQiH,KAAO1F,EACf1I,KAAKy+R,SAAS/1R,GACd1I,KAAKi7R,YACLj7R,KAAKu+R,gBAAe,EAAM,CAAC,GAKtC,EAEA9gF,OAAQ,SAASt2M,GACb,GAAIA,EAAS,CACTu0R,EAAW3zR,GAAG01M,OAAOlzM,KAAKvK,KAAMmH,GAEhC,IAAIi3R,EAAcp+R,KAAKmH,QACnBiH,EAAOjH,EAAQiH,KAEf0oH,EAAQ1oH,IAASgwR,EAAYhwR,MAAQA,GACrCgwR,EAAYhwR,KAAOA,EACnBpO,KAAKy+R,SAASrwR,GACTpO,KAAKm7R,YAAYh0R,IAClBnH,KAAKi7R,YAETj7R,KAAKu+R,gBAAe,EAAMp3R,KAE1BnH,KAAKm7R,YAAYh0R,GACjBnH,KAAKu+R,gBAAe,EAAOp3R,GAEnC,CACJ,EAEAq3R,gBAAiB,WACb,IAAIr3R,EAAUnH,KAAKmH,QAEnBnH,KAAKyuO,eAAiBjqO,EAAE+pI,KAAKn5G,MAAMjuB,EAAQiH,MAAQ,GAAI,CACnDwxH,OAAQz4H,EAAQy4H,SAGpB5/H,KAAK47R,QACL57R,KAAKy2B,UAAU0jB,OAAOn6C,KAAKyuO,gBAC3BzuO,KAAK89R,gBACT,EAEAW,SAAU,SAASrwR,GACf,IAAIqgO,EAAiBzuO,KAAKyuO,eACtBvtB,EAAY18M,EAAE+pI,KAAKn5G,MAAMhnB,GAAQ,IACjC0/C,EAAQozJ,EAAUpzJ,MAAMjnD,MAAM,GAClCq6M,EAAUpzJ,MAAMn1B,SAAS,IACzB81M,EAAe3gL,MAAMn1B,SAASm1B,EAClC,IAGJtlD,EAAW+lI,EAAKxmI,GAAI2yR,GACpBlyR,EAAW+lI,EAAKxmI,GAAIy1R,GAEpB,IAAIkB,EAAOhD,EAAW34R,OAAO,CACzBoF,KAAM,SAAShB,GACXu0R,EAAW3zR,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAC9BnH,KAAKy2B,UAAY,IAAIjyB,EAAEisI,MACvBzwI,KAAK48R,YACL58R,KAAK89R,gBACT,EAEAxC,iBAAkB,WACd,OAAOt7R,KAAKy2B,SAChB,EAEAgnL,OAAQ,SAASt2M,GACb,GAAIA,EAAS,CAET,IAAI4U,GADJ5U,EAAUA,GAAW,CAAC,GACH4U,KACfuiB,EAAKn3B,EAAQm3B,GACbviB,IACA/b,KAAKmH,QAAQ4U,KAAOA,GAGpBuiB,IACAt+B,KAAKmH,QAAQm3B,GAAKA,GAGlBviB,GAAQuiB,GACRt+B,KAAK88R,YACL98R,KAAKu+R,gBAAe,EAAMp3R,IAE1BnH,KAAKu+R,gBAAe,EAAOp3R,GAG/Bu0R,EAAW3zR,GAAG01M,OAAOlzM,KAAKvK,KAAMmH,EACpC,CACJ,EAEAy1R,UAAW,WACP,IAAIz1R,EAAUnH,KAAKmH,QACfsnO,EAAiBzuO,KAAKyuO,eAAiB,IAAIjqO,EAAE+pI,KAAK,CAClD3O,OAAQz4H,EAAQy4H,SAGpB5/H,KAAK47R,QACL57R,KAAK88R,YACL98R,KAAKy2B,UAAU0jB,OAAOs0L,EAC1B,EAEAquD,UAAW,WACP,IAAI31R,EAAUnH,KAAKmH,QACfsnO,EAAiBzuO,KAAKyuO,eACtB1yN,EAAO5U,EAAQ4U,MAAQ,IAAI+/G,EAC3Bx9F,EAAKn3B,EAAQm3B,IAAM,IAAIw9F,EAE3B2yG,EAAethG,SAASx0G,SAAS,CAC7Bg1K,EAAc5xL,EAAK3W,EAAG2W,EAAK5X,GAC3BwpM,EAAcrvK,EAAGl5B,EAAGk5B,EAAGn6B,IAE/B,IAGJqE,EAAWk2R,EAAK32R,GAAIy1R,GAEpB,IAAImB,EAAWjD,EAAW34R,OAAO,CAC7BoF,KAAM,SAAShB,GACXu0R,EAAW3zR,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAC9BnH,KAAKy2B,UAAY,IAAIjyB,EAAEisI,MACvBzwI,KAAK48R,YACL58R,KAAK89R,gBACT,EAEAxC,iBAAkB,WACd,OAAOt7R,KAAKy2B,SAChB,EAEA2sG,OAAQ,SAASA,GACb,IAAIj8H,EAAUnH,KAAKmH,QACnB,IAAIi8H,EAIA,OAAOj8H,EAAQi8H,OAHfj8H,EAAQi8H,OAASA,EACjBpjI,KAAK4+R,aAIb,EAEAnhF,OAAQ,SAASt2M,GACb,GAAIA,EAAS,CACT,IAAIi8H,EAASj8H,EAAQi8H,OACrBs4J,EAAW3zR,GAAG01M,OAAOlzM,KAAKvK,KAAMmH,GAE5Bi8H,GAAUpjI,KAAK6+R,cAAcz7J,IAC7BpjI,KAAKojI,OAAOA,GACZpjI,KAAKu+R,gBAAe,EAAMp3R,IAE1BnH,KAAKu+R,gBAAe,EAAOp3R,EAEnC,CACJ,EAEAy1R,UAAW,WACP,IAAIz1R,EAAUnH,KAAKmH,QACnBnH,KAAKyuO,eAAiB,IAAIjqO,EAAE+pI,KAAK,CAC7B3O,OAAQz4H,EAAQy4H,SAGpB5/H,KAAK47R,QACL57R,KAAKy2B,UAAU0jB,OAAOn6C,KAAKyuO,gBAEvBtnO,EAAQi8H,QACRpjI,KAAK4+R,aAEb,EAEAC,cAAe,SAASz7J,GACpB,IAAI07J,EAAgB9+R,KAAKmH,QAAQi8H,OAC7B27J,EAASD,EAAct3R,SAAW47H,EAAO57H,OAC7C,IAAKu3R,EACD,IAAK,IAAIx3R,EAAI,EAAGA,EAAI67H,EAAO57H,OAAQD,IAC/B,GAAIu3R,EAAcv3R,GAAGnC,IAAMg+H,EAAO77H,GAAGnC,GAAK05R,EAAcv3R,GAAGpD,IAAMi/H,EAAO77H,GAAGpD,EAAG,CAC1E46R,GAAS,EACT,KACJ,CAIR,OAAOA,CACX,EAEAH,YAAa,WAMT,IALA,IAIIziK,EAJAsyG,EAAiBzuO,KAAKyuO,eAEtBrrG,EADUpjI,KAAKmH,QACEi8H,OACjB+J,EAAW,GAEN5lI,EAAI,EAAGA,EAAI67H,EAAO57H,OAAQD,IAC/B40H,EAAQiH,EAAO77H,GACf4lI,EAASxrI,KAAKgsM,EAAcxxE,EAAM/2H,EAAG+2H,EAAMh4H,IAG/CsqO,EAAethG,SAASx0G,SAASw0G,EACrC,EAEAhmI,QAAS,CACLi8H,OAAQ,MAIhB56H,EAAWm2R,EAAS52R,GAAIy1R,GAExB,IAAIntJ,EAAQtoH,EAAQhlB,OAAO,CACvBoF,KAAM,SAAShB,GACX4gB,EAAQhgB,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAE3BnH,KAAKg/R,YACT,EAEAvhF,OAAQ,SAASt2M,GACTA,IACIA,EAAQ0G,QACR7N,KAAKyuO,eAAeznO,IAAIG,EAAQ0G,QAGhC7N,KAAKo7R,oBAAoBj0R,EAAS,CAACqqC,EAAOC,EArjClD,IACA,OAqjCQzxC,KAAKyuO,eAAeniJ,KAAKtsF,KAAKswI,SAGlCvoH,EAAQhgB,GAAG01M,OAAOlzM,KAAKvK,KAAMmH,GAErC,EAEA63R,WAAY,WACR,IAAI73R,EAAUnH,KAAKmH,QACfmlF,EAAOtsF,KAAKswI,QAEhBtwI,KAAKyuO,eAAiB,IAAIjqO,EAAE6rI,MAAMlpI,EAAQ0G,OAAQy+E,EAAM,CAAC,EAC7D,EAEAgkD,MAAO,WACH,IAAIysJ,EAAcC,EAAqBh9R,KAAKmH,SACxC6xC,EAAS,IAAI5jC,EAAE0mH,MAAMihK,EAAY33R,EAAG23R,EAAY54R,GAChD6L,EAAO,IAAIoF,EAAE4nH,KAAK+/J,EAAYhxR,MAAOgxR,EAAY/wR,QAErD,OAAO,IAAIoJ,EAAE6nH,KAAKjkF,EAAQhpC,EAC9B,IAGAygI,EAAQ1oH,EAAQhlB,OAAO,CACvBoF,KAAM,SAAShB,GACXnH,KAAKu1C,SAAW,GAChBxtB,EAAQhgB,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAC3BnH,KAAKyuO,eAAiB,IAAIjqO,EAAEisI,MAC5BzwI,KAAKi7R,WACT,EAEA9zR,QAAS,CACL+zR,UAAU,GAGd/gP,OAAQ,SAAS8mG,GACbjhJ,KAAKyuO,eAAet0L,OAAO8mG,EAAOq6I,oBAClCt7R,KAAKu1C,SAAS5zC,KAAKs/I,GACnBjhJ,KAAKi/R,iBAAkB,CAC3B,EAEA5yR,OAAQ,SAAS40I,GACTjhJ,KAAK4mI,QAAQqa,KACbjhJ,KAAKi/R,iBAAkB,EAE/B,EAEAr4J,QAAS,SAASqa,GACd,IAAI3nI,EAAQmc,EAAQwrH,EAAQjhJ,KAAKu1C,UACjC,GAAIj8B,GAAS,EAGT,OAFAtZ,KAAKyuO,eAAe59F,SAASv3H,GAC7BtZ,KAAKu1C,SAAS/qC,OAAO8O,EAAO,IACrB,CAEf,EAEAk9C,MAAO,WACHx2D,KAAKyuO,eAAej4K,QACpBx2D,KAAKu1C,SAAW,GAChBv1C,KAAKi/R,iBAAkB,CAC3B,EAEAC,QAAS,SAAS3zH,GAGd,IAFA,IAAItqB,EAEK15I,EAAI,EAAGA,EAAIgkK,EAAQ/jK,OAAQD,IAChC05I,EAASsqB,EAAQhkK,GACbvH,KAAK4mI,QAAQqa,IACbjhJ,KAAKm6C,OAAO8mG,EAGxB,EAEAk+I,OAAQ,SAAS5zH,GACbvrK,KAAKo/R,iBAAiB7zH,EAAS,EACnC,EAEA8zH,QAAS,SAAS9zH,EAASsV,GACvB7gL,KAAKo/R,iBAAiB7zH,EAASsV,EACnC,EAEAu+G,iBAAkB,SAAS7zH,EAASsV,GAChC,IAIIt5K,EAAG+R,EAAO+lR,EAAS5wD,EAAgBxtF,EAJnC1sF,EAAQv0D,KAAKyuO,eACb6wD,EAAkB/qO,EAAMhf,SAAS1uC,MAAM,GACvC0uC,EAAWv1C,KAAKu1C,SAChBgqP,EAAgBlqO,EAASwrH,GAG7B,IAAKt5K,EAAI,EAAGA,EAAIgkK,EAAQ/jK,OAAQD,IAE5BknO,GADAxtF,EAASsqB,EAAQhkK,IACO+zR,oBAExBhiR,EAAQmc,EAAQwrH,EAAQ1rG,KACX,IACT+pP,EAAgB90R,OAAO8O,EAAO,GAC9Bi8B,EAAS/qC,OAAO8O,EAAO,GAEvB+lR,EAAUE,EAAgB1+G,EAAUA,EAAQt5K,GAE5C+3R,EAAgB90R,OAAO60R,EAAS,EAAG5wD,GACnCl5L,EAAS/qC,OAAO60R,EAAS,EAAGp+I,IAGpC1sF,EAAMiC,QACNjC,EAAMpa,OAAO/xC,MAAMmsD,EAAO+qO,EAC9B,EAEA7hF,OAAQ,SAASt2M,GACTA,IACInH,KAAKi/R,iBACLj/R,KAAKi/R,iBAAkB,EAClBj/R,KAAKm7R,YAAYh0R,IAClBnH,KAAKi7R,aAGTj7R,KAAKm7R,YAAYh0R,GAGrB4gB,EAAQhgB,GAAG01M,OAAOlzM,KAAKvK,KAAMmH,GAErC,EAEAs0R,aAAc,WAIV,IAHA,IACIttJ,EACA8S,EAAQu+I,EAFRjqP,EAAWv1C,KAAKu1C,SAGXhuC,EAAI,EAAGA,EAAIguC,EAAS/tC,OAAQD,KACjC05I,EAAS1rG,EAAShuC,IACPyF,YAAuC,IAA1Bi0I,EAAOw+I,iBAC3BD,EAAmBv+I,EAAOq6I,mBAAmBh8J,YAAY,SAGjD6O,EADAA,EACc/4H,EAAE6nH,KAAKsB,MAAM4P,EAAaqxJ,GAE1BA,GAM9B,OAAOrxJ,CACX,IAGJ3lI,EAAWioI,EAAM1oI,GAAI2yR,GAErB,IAAI/gN,EAAS82D,EAAM1tI,OAAO,CACtBoF,KAAM,SAASmkF,EAAMnlF,GACjBnH,KAAKu1C,SAAW,GAChBxtB,EAAQhgB,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAC3BnH,KAAKyuO,eAAiB,IAAIjqO,EAAEm1E,OAAO+lN,EAAcpzM,GAAOnlF,GACxDnH,KAAKi7R,WACT,EAEA3uM,KAAM,SAASA,GACX,GAAIA,EACAtsF,KAAKyuO,eAAeniJ,KAAKozM,EAAcpzM,QACpC,CACH,IAAI03J,EAAchkP,KAAKyuO,eAAeniJ,OACtC,GAAI03J,EACA,OAAO,IAAI/mH,EAAK+mH,EAAYhrM,OAAO5zC,EAAG4+O,EAAYhrM,OAAO70C,EAAG6/O,EAAYh0O,KAAKjE,MAAOi4O,EAAYh0O,KAAKhE,OAE7G,CACJ,EAEAqmI,OAAQ,WACJryI,KAAKyuO,eAAep8F,QACxB,EAEAorE,OAAQ,SAASt2M,GACbxG,EAAM6H,WAAWxI,KAAKyuO,eAAetnO,QAASA,GAC9CspI,EAAM1oI,GAAG01M,OAAOlzM,KAAKvK,KAAMmH,EAC/B,IAGAg5H,EAASu7J,EAAW34R,OAAO,CAC3BoF,KAAM,SAAShB,GACXu0R,EAAW3zR,GAAGI,KAAKoC,KAAKvK,KAAMmH,GAC9BnH,KAAK2/R,cACL3/R,KAAKi7R,WACT,EAEAx9E,OAAQ,SAASt2M,GACb,GAAIA,EAAS,CACT,IAAIy4R,EAAgB5/R,KAAKmH,QAErBA,EAAQo3E,SACR/1E,EAAWo3R,EAAe,CACtBrhN,OAAQp3E,EAAQo3E,SAEpBv+E,KAAKw/Q,QAAQ9kP,KAAKklQ,EAAcrhN,OAAOn5E,EAAGw6R,EAAcrhN,OAAOp6E,IAG/DnE,KAAKo7R,oBAAoBj0R,EAAS,CAAC,YACnCnH,KAAK6/R,QAAQx/J,UAAUu/J,EAActzQ,QAGzCtsB,KAAKm7R,YAAYh0R,GAEjBu0R,EAAW3zR,GAAG01M,OAAOlzM,KAAKvK,KAAMmH,EACpC,CACJ,EAEAw4R,YAAa,WACT,IAAIx4R,EAAUnH,KAAKmH,QACf4E,EAAQ5E,EAAQ4E,MAChBC,EAAS7E,EAAQ6E,OACjBsgB,EAASnlB,EAAQmlB,OAChBwqG,EAAQxqG,KACJwqG,EAAQ/qH,KACTA,EAAQC,GAEP8qH,EAAQ9qH,KACTA,EAASD,GAEb5E,EAAQmlB,OAASA,EAASjpB,KAAKqT,IAAI3K,EAAOC,GAAU,GAGxD,IAAIuyE,EAASp3E,EAAQo3E,QAAU,CAAEn5E,EAAGknB,EAAQnoB,EAAGmoB,GAC/CtsB,KAAKw/Q,QAAU,IAAIpqQ,EAAE0mH,MAAMv9C,EAAOn5E,EAAGm5E,EAAOp6E,GAC5CnE,KAAK6/R,QAAU,IAAIzqR,EAAE+qH,OAAOngI,KAAKw/Q,QAASlzP,GAC1CtsB,KAAKyuO,eAAiB,IAAIjqO,EAAE27H,OAAOngI,KAAK6/R,QAAS,CAC7CjgK,OAAQz4H,EAAQy4H,SAGpB5/H,KAAK47R,OACT,IAEJpzR,EAAW23H,EAAOp4H,GAAI2yR,GAEtB,IAAIoF,EAASl4R,EAAM7E,OAAO,CACtBoF,KAAM,SAAS0D,EAAS1E,GACpBA,EAAUA,GAAW,CAAC,EACtBnH,KAAK6L,QAAUA,EACf7L,KAAK2hF,QAAUn9E,EAAE0yI,QAAQ9vF,OAAOv7C,EAAS1E,GACrCxG,EAAMuI,WAAWlJ,KAAK2hF,QAAQvxC,aAC9BpwC,KAAKowC,UAAYpwC,KAAK+/R,YAG1B//R,KAAKyuO,eAAiB,IAAIjqO,EAAEisI,MAC5BzwI,KAAKggS,SAAW,IAAI/iK,EAAK,EAAG,EAAG91H,EAAQ4E,MAAO5E,EAAQ6E,QACtDhM,KAAKgQ,KAAKhQ,KAAKggS,SACnB,EAEA/a,OAAQ,WACJ,IAAI3rO,EAAMt5C,KAAKyuO,eAAenvG,cAC9B,OAAO,IAAIrC,EAAK,EAAG,EAAG3jF,EAAIvtC,QAASutC,EAAIttC,SAC3C,EAEAgE,KAAM,SAASA,GACX,IAAI6oF,EAAU74F,KAAKggS,SAMnB,OALIlpK,EAAQ9mH,KACR6oF,EAAQ9sF,MAAQiE,EAAKjE,MACrB8sF,EAAQ7sF,OAASgE,EAAKhE,OACtBhM,KAAK2hF,QAAQ/uD,QAAQ5iB,IAElB,CACHjE,MAAO8sF,EAAQ9sF,MACfC,OAAQ6sF,EAAQ7sF,OAExB,EAEA+zR,WAAY,SAAS36R,EAAGjB,GACpB,IAAI00F,EAAU74F,KAAKggS,SAMnB,OALIlpK,EAAQ1xH,IAAM0xH,EAAQ3yH,KACtB00F,EAAQzzF,EAAIA,EACZyzF,EAAQ10F,EAAIA,EACZnE,KAAK2hF,QAAQvxC,UAAU,CAAEhrC,EAAGA,EAAGjB,EAAGA,KAE/B,CACHiB,EAAGyzF,EAAQzzF,EACXjB,EAAG00F,EAAQ10F,EAEnB,EAEAszI,KAAM,WACFz3I,KAAK2hF,QAAQ81D,KAAKz3I,KAAKyuO,eAC3B,EAEAt0L,OAAQ,SAAS8mG,GAEb,OADAjhJ,KAAKyuO,eAAet0L,OAAO8mG,EAAOq6I,oBAC3Bt7R,IACX,EAEAqM,OAAQ,SAAS40I,GACbjhJ,KAAKyuO,eAAepiO,OAAO40I,EAAOq6I,mBACtC,EAEAhpN,aAAc,WAEd,EAEA9b,MAAO,WACHx2D,KAAKyuO,eAAej4K,OACxB,EAEAx0D,QAAS,SAASi+R,GACdjgS,KAAK2hF,QAAQ3/E,UACTi+R,GACAt9R,EAAE3C,KAAK6L,SAASQ,QAExB,IAKJ,SAAS2wR,EAAqB71R,GAC1B,MAAO,CACH/B,EAAG+B,EAAQ/B,GAAK,EAChBjB,EAAGgD,EAAQhD,GAAK,EAChB4H,MAAO5E,EAAQ4E,OAAS,EACxBC,OAAQ7E,EAAQ6E,QAAU,EAElC,CAEA,SAAS2vR,EAAwBx0R,GAC7B,GAAIA,EAAS,CACT,IAAI+4R,EAAiB/4R,EAWrB,OATIyB,EAASs3R,KACTA,EAAiB,CACbjvK,MAAOivK,IAIXA,EAAejvK,QACfivK,EAAejvK,MAAQ4qK,EAASqE,EAAejvK,QAE5CivK,CACX,CACJ,CAEA,SAASrE,EAASnzR,GAOd,OALIA,GAASipL,EACD,IAAIntL,EAAEwuH,MAAMtqH,GAAO6oH,QAEnB7oH,CAGhB,CASA,SAASilM,EAAcvoM,EAAGjB,GACtB,OAAO,IAAIK,EAAE0kI,QAAQ,IAAI9zH,EAAE0mH,MAAM12H,EAAGjB,GACxC,CAEA,SAASu7R,EAAcpzM,GACnB,GAAIA,EACA,OAAO,IAAIl3E,EAAE6nH,KAAK,CAAC3wC,EAAKlnF,EAAGknF,EAAKnoF,GAAI,CAACmoF,EAAKvgF,MAAOugF,EAAKtgF,QAE9D,CAGArL,EAAM6H,WAAWqvL,EAAS,CACtB1vL,KAAM,SAAS0D,GACXlL,EAAMwH,KAAK0D,EAASgsL,EAAQttK,GAChC,EACAuvQ,mBAAoBA,EACpB/xQ,QAASA,EACTgyQ,MAAOA,EACPC,YAAaA,EACbG,SAAUA,EACVh6J,OAAQA,EACRsQ,MAAOA,EACPksJ,UAAWA,EACXmD,OAAQA,EACRvxJ,KAAMA,EACN50D,OAAQA,EACR+kN,KAAMA,EACNzB,WAAYA,EACZK,YAAaA,EACbH,aAAcA,EACdwB,SAAUA,EACVvE,mBAAoBA,EACpB8B,UAAWA,EACX7rJ,MAAOA,EACPqrJ,WAAYA,GAEnB,CAz9CD,CAy9CG56R,OAAOH,MAAM+G,QAEhB,SAAU/E,EAAGC,GAEL,IAAIjC,EAAQG,OAAOH,MAEfk3L,EADUl3L,EAAM8pB,QACEotK,QAClBjwL,EAAQjH,EAAMiH,MACd6oI,EAAQonD,EAAQpnD,MAChBxT,EAAO46D,EAAQ56D,KACf0/J,EAAY9kG,EAAQ8kG,UACpBrW,EAAQzuF,EAAQyuF,MAChBG,EAAcH,EAAMG,YACpB3qJ,EAAQ+7D,EAAQ/7D,MAChBqE,EAAS03D,EAAQ13D,OACjB6nJ,EAASnwF,EAAQmwF,OACjBx/Q,EAAa7H,EAAM6H,WACnBm/E,EAAUhnF,EAAM4pB,GAAGo9D,QACnB6/B,EAAO7mH,EAAM+pB,QAAQ88F,KACrBsP,EAAUtP,EAAKsP,QACfrhG,EAAU9yB,EAAE8yB,QAGZ0qQ,EAAU,CACN36K,MAAO,UACP46K,KAAM,UACNC,MAAO,UACP7yR,IAAK,UACLktB,KAAM,OACN6L,OAAQ,UACR+5P,MAAO,WACPC,KAAM,WACNC,KAAM,WACNC,MAAO,WACPC,UAAW,aACXC,UAAW,cAEfC,EAAoB,GACpBrvP,EAAO,OACP2/C,EAAM,MACN5lE,EAAQ,QACRF,EAAO,OACP+lE,EAAS,SAGT8vG,EAAa,YACb98G,EAAO,OACP68G,EAAW,UAEX6/F,EAAmB,mBAYnBlvG,EAAc,cAEdmvG,EAAU,UAEVC,EAAS,SACTC,EAAe,CACX,KAHK,SAIL,EAAKD,GAGblpG,EAAQsoG,QAAUA,EAElB,IAAIc,EAAkBtgS,EAAMiH,MAAM7E,OAAO,CACrCoF,KAAM,SAAS+4R,GACXlhS,KAAKkhS,YAAcA,EACnBlhS,KAAK63L,QAAUqpG,EAAYrpG,OAC/B,EACAixF,UAAW,WACP9oR,KAAKmhS,MAAQ,GACbnhS,KAAKohS,IAAM,GACXphS,KAAKqhS,SAAW,GAUhBrhS,KAAKkhS,YAAYhN,QAAQ5yR,SATzB,SAAgB+uB,EAAI40P,GAChB,IAAIniI,EAAQ9iJ,KAAK63L,QAAQypG,aAAajxQ,GAClCyyH,IACA9iJ,KAAKqhS,SAAS1/R,KAAKmhJ,GACnB9iJ,KAAKmhS,MAAMx/R,KAAKmhJ,EAAMmiI,SAAS1nJ,WAC/Bv9H,KAAKohS,IAAIz/R,KAAKsjR,EAAO1nJ,WAE7B,GAEyCv9H,KAC7C,EACAmnD,OAAQ,SAASjL,GACb,KAAIl8C,KAAKqhS,SAAS75R,QAAU,GAG5B,IAAK,IAAID,EAAI,EAAGA,EAAIvH,KAAKqhS,SAAS75R,OAAQD,IAEtCvH,KAAKqhS,SAAS95R,GAAG+F,SACb,IAAIwuH,EAAM97H,KAAKmhS,MAAM55R,GAAGnC,GAAKpF,KAAKohS,IAAI75R,GAAGnC,EAAIpF,KAAKmhS,MAAM55R,GAAGnC,GAAK82C,EAAMl8C,KAAKmhS,MAAM55R,GAAGpD,GAAKnE,KAAKohS,IAAI75R,GAAGpD,EAAInE,KAAKmhS,MAAM55R,GAAGpD,GAAK+3C,GAGxI,IAGAqlP,EAAiB35R,EAAM7E,OAAO,CAC9BoF,KAAM,SAASq5R,EAAcC,EAAY/5Q,GACjC++P,EAAY/+P,GACZ1nB,KAAK0nB,SAAU,EAGf1nB,KAAK0nB,QAAUA,EAEnB1nB,KAAK0hS,cAAgBF,EACrBxhS,KAAK2hS,YAAcF,EACnBzhS,KAAKm+C,MAAQ,gBACjB,EACAyjP,KAAM,WACF5hS,KAAK6hS,SAAS7hS,KAAK0hS,cACvB,EACAI,KAAM,WACF9hS,KAAK6hS,SAAS7hS,KAAK2hS,YACvB,EACAE,SAAU,SAASvuO,GACf,IAAIukI,EAAUvkI,EAAMukI,QACpB,GAAI73L,KAAK0nB,QAAS,CACd4rC,EAAM6gO,QAAQ7yR,SACV,SAAS+uB,EAAI+yG,GACT,IAAI2+J,EAAOlqG,EAAQypG,aAAajxQ,GAChC0xQ,EAAK/0R,SAAQ,GACT+0R,GACAA,EAAK3+J,OAAOA,EAEpB,IAEJ,IAAI4+J,EAAS,IAAIha,EACjBga,EAAO1Z,WAAW,IAAI2Y,EAAgB3tO,IACtC0uO,EAAOzZ,YAAW,WACdj1N,EAAM6gO,QAAQ7yR,SACV,SAAS+uB,GACMwnK,EAAQypG,aAAajxQ,GAC3BrjB,SAAQ,EACjB,GAER,IACAg1R,EAAO9qP,MACX,MAEIoc,EAAM4gO,QAAQ5yR,SAAQ,SAAS+uB,EAAI40P,GAC/B,IAAIniI,EAAQ+0C,EAAQypG,aAAajxQ,GAC7ByyH,GACAA,EAAMx1I,SAAS23Q,EAAO1nJ,UAE9B,IACAjqE,EAAM6gO,QAAQ7yR,SACV,SAAS+uB,EAAI+yG,GACT,IAAI2+J,EAAOlqG,EAAQypG,aAAajxQ,GAC5B0xQ,GACAA,EAAK3+J,OAAOA,EAEpB,GAGZ,IAGA6+J,EAAgBr6R,EAAM7E,OAAO,CAC7BoF,KAAM,SAASgyH,GACXn6H,KAAKulL,MAAQ,GACbvlL,KAAKm+C,MAAQ,iBACTg8E,IAASv3H,GACT5C,KAAKulL,MAAM5jL,KAAKw4H,EAExB,EACA3sH,IAAK,SAAS00R,GACVliS,KAAKulL,MAAM5jL,KAAKugS,EACpB,EACAN,KAAM,WACF,IAAK,IAAIr6R,EAAI,EAAGA,EAAIvH,KAAKulL,MAAM/9K,OAAQD,IACnCvH,KAAKulL,MAAMh+K,GAAGq6R,MAEtB,EACAE,KAAM,WACF,IAAK,IAAIv6R,EAAI,EAAGA,EAAIvH,KAAKulL,MAAM/9K,OAAQD,IACnCvH,KAAKulL,MAAMh+K,GAAGu6R,MAEtB,IAGAK,EAAqBv6R,EAAM7E,OAAO,CAClCoF,KAAM,SAASgnC,EAAMizP,EAAYC,GAC7BriS,KAAKmvC,KAAOA,EACZnvC,KAAKsiS,YAAcF,EACnBpiS,KAAKuiS,YAAcF,EACfvrK,EAAQsrK,KACRpiS,KAAKwiS,YAAcrzP,EAAKthC,UAGxBipH,EAAQurK,KACRriS,KAAKyiS,YAActzP,EAAK9nC,UAE5BrH,KAAKm+C,MAAQ,oBACjB,EACAyjP,KAAM,WACE5hS,KAAKwiS,cAAgB5/R,GACrB5C,KAAKmvC,KAAKuzP,iBAAiB1iS,KAAKwiS,YAAa,UAG7CxiS,KAAKyiS,cAAgB7/R,GACrB5C,KAAKmvC,KAAKuzP,iBAAiB1iS,KAAKyiS,YAAa,UAGjDziS,KAAKmvC,KAAKwzP,aACd,EACAb,KAAM,WACE9hS,KAAKsiS,cAAgB1/R,GACrB5C,KAAKmvC,KAAKuzP,iBAAiB1iS,KAAKsiS,YAAa,UAG7CtiS,KAAKuiS,cAAgB3/R,GACrB5C,KAAKmvC,KAAKuzP,iBAAiB1iS,KAAKuiS,YAAa,UAGjDviS,KAAKmvC,KAAKwzP,aACd,IAGAC,EAAyBh7R,EAAM7E,OAAO,CACtCoF,KAAM,SAASgnC,EAAM0zP,EAAYC,GAC7B9iS,KAAKmvC,KAAOA,EACZnvC,KAAKwiS,YAAcK,EACnB7iS,KAAKyiS,YAAcK,EACnB9iS,KAAKsiS,YAAcnzP,EAAKthC,SACxB7N,KAAKuiS,YAAcpzP,EAAK9nC,SACxBrH,KAAKm+C,MAAQ,oBACjB,EACAyjP,KAAM,WACF5hS,KAAKmvC,KAAKuzP,iBAAiB1iS,KAAKwiS,YAAa,UAC7CxiS,KAAKmvC,KAAKuzP,iBAAiB1iS,KAAKyiS,YAAa,UAC7CziS,KAAKmvC,KAAKwzP,aACd,EACAb,KAAM,WACF9hS,KAAKmvC,KAAKuzP,iBAAiB1iS,KAAKsiS,YAAa,UAC7CtiS,KAAKmvC,KAAKuzP,iBAAiB1iS,KAAKuiS,YAAa,UAC7CviS,KAAKmvC,KAAKwzP,aACd,IAGAI,EAAuBn7R,EAAM7E,OAAO,CACpCoF,KAAM,SAAS0nR,GACX7vR,KAAK6vR,WAAaA,EAClB7vR,KAAK63L,QAAUg4F,EAAWh4F,QAC1B73L,KAAKgjS,gBAAkBnT,EAAWmT,gBAClChjS,KAAKm+C,MAAQ,mBACjB,EACAyjP,KAAM,WACF5hS,KAAK63L,QAAQmgG,eAAeh4R,KAAK6vR,YAAY,EACjD,EACAiS,KAAM,WACF9hS,KAAK63L,QAAQxrL,OAAOrM,KAAK6vR,YAAY,EACzC,IAGAoT,EAAkBr7R,EAAM7E,OAAO,CAC/BoF,KAAM,SAAS26I,GACX9iJ,KAAK8iJ,MAAQA,EACb9iJ,KAAK63L,QAAU/0C,EAAM+0C,QACrB73L,KAAKm+C,MAAQ,UACjB,EACAyjP,KAAM,WACF5hS,KAAK63L,QAAQ+/F,UAAU53R,KAAK8iJ,OAAO,GACnC9iJ,KAAK8iJ,MAAMv8G,QAAO,EACtB,EACAu7P,KAAM,WACF9hS,KAAK8iJ,MAAMv8G,QAAO,GAClBvmC,KAAK63L,QAAQxrL,OAAOrM,KAAK8iJ,OAAO,EACpC,IAMAogJ,EAAgBt7R,EAAM7E,OAAO,CAC7BoF,KAAM,SAAS06I,EAAQsgJ,EAAYC,GAC/BpjS,KAAK6iJ,OAASA,EACd7iJ,KAAKmjS,WAAaA,EAClBnjS,KAAKm+C,MAAQ,iBACbn+C,KAAKqjS,WAAa,GAClBrjS,KAAKojS,QAAUA,EACf,IAAK,IAAI77R,EAAI,EAAGA,EAAIvH,KAAK6iJ,OAAOr7I,OAAQD,IAAK,CACzC,IAAIu7I,EAAQ9iJ,KAAK6iJ,OAAOt7I,GACxBvH,KAAKqjS,WAAW1hS,KAAKmhJ,EAAMmiI,SAC/B,CACJ,EACA2c,KAAM,WACF,IAAK,IAAIr6R,EAAI,EAAGA,EAAIvH,KAAK6iJ,OAAOr7I,OAAQD,IAAK,CACzC,IAAIu7I,EAAQ9iJ,KAAK6iJ,OAAOt7I,GACxBu7I,EAAMmiI,OAAOjlR,KAAKmjS,WAAW57R,IACzBu7I,EAAM7zI,eAAe,WACrB6zI,EAAMyxE,OAAOzxE,EAAO9iJ,KAAKqjS,WAAW97R,GAAIvH,KAAKmjS,WAAW57R,IAE5Du7I,EAAM6/I,aACV,CACI3iS,KAAKojS,UACLpjS,KAAKojS,QAAQE,gBACbtjS,KAAKojS,QAAQzkR,UAErB,EACAmjR,KAAM,WACF,IAAK,IAAIv6R,EAAI,EAAGA,EAAIvH,KAAK6iJ,OAAOr7I,OAAQD,IAAK,CACzC,IAAIu7I,EAAQ9iJ,KAAK6iJ,OAAOt7I,GACxBu7I,EAAMmiI,OAAOjlR,KAAKqjS,WAAW97R,IAEzBu7I,EAAM7zI,eAAe,WACrB6zI,EAAMyxE,OAAOzxE,EAAO9iJ,KAAKmjS,WAAW57R,GAAIvH,KAAKqjS,WAAW97R,IAE5Du7I,EAAM6/I,aACV,CAEI3iS,KAAKojS,UACLpjS,KAAKojS,QAAQE,gBACbtjS,KAAKojS,QAAQzkR,UAErB,IAGA4kR,EAAoB37R,EAAM7E,OAAO,CACjCoF,KAAM,SAAS0nR,EAAYh4F,GACvB73L,KAAK6vR,WAAaA,EAClB7vR,KAAK63L,QAAUA,EACf73L,KAAKm+C,MAAQ,gBACjB,EAEAyjP,KAAM,WACF5hS,KAAK63L,QAAQxrL,OAAOrM,KAAK6vR,YAAY,EACzC,EAEAiS,KAAM,WACF9hS,KAAK63L,QAAQmgG,eAAeh4R,KAAK6vR,YAAY,EACjD,IAGA2T,EAAe57R,EAAM7E,OAAO,CAC5BoF,KAAM,SAAS26I,EAAO+0C,GAClB73L,KAAK8iJ,MAAQA,EACb9iJ,KAAK63L,QAAUA,EACf73L,KAAKm+C,MAAQ,WACjB,EAEAyjP,KAAM,WACF5hS,KAAK63L,QAAQ4rG,WACbzjS,KAAK63L,QAAQxrL,OAAOrM,KAAK8iJ,OAAO,EACpC,EAEAg/I,KAAM,WACF9hS,KAAK63L,QAAQ+/F,UAAU53R,KAAK8iJ,OAAO,EACvC,IAGA4gJ,EAAc97R,EAAM7E,OAAO,CAC3BoF,KAAM,SAASw7R,EAAiBC,EAAe/rG,GAC3C73L,KAAK08C,QAAUinP,EACf3jS,KAAK6jS,SAAWD,EAChB5jS,KAAK63L,QAAUA,EACf73L,KAAKm+C,MAAQ,UACjB,EACAyjP,KAAM,WACF5hS,KAAK63L,QAAQxV,IAAIriL,KAAK08C,QAC1B,EACAolP,KAAM,WACF9hS,KAAK63L,QAAQxV,IAAIriL,KAAK6jS,SAC1B,IAGAC,EAAal8R,EAAM7E,OAAO,CAC1BoF,KAAM,SAASi7R,EAASvgJ,EAAQkhJ,GAC5B/jS,KAAK6iJ,OAASA,EACd7iJ,KAAK+jS,YAAcA,EACnB/jS,KAAKm+C,MAAQ,WACbn+C,KAAKgkS,YAAc,GACnBhkS,KAAKikS,UAAYb,EAAQc,OACzBlkS,KAAKojS,QAAUA,EACfpjS,KAAKu+E,OAAS6kN,EAAQe,aAAa5lN,SACnC,IAAK,IAAIh3E,EAAI,EAAGA,EAAIvH,KAAK6iJ,OAAOr7I,OAAQD,IAAK,CACzC,IAAIu7I,EAAQ9iJ,KAAK6iJ,OAAOt7I,GACxBvH,KAAKgkS,YAAYriS,KAAKmhJ,EAAM3xG,SAASipF,MACzC,CACJ,EACAwnK,KAAM,WACF,IAAIr6R,EAAGu7I,EACP,IAAKv7I,EAAI,EAAGA,EAAIvH,KAAK6iJ,OAAOr7I,OAAQD,KAChCu7I,EAAQ9iJ,KAAK6iJ,OAAOt7I,IACd4pC,OAAOnxC,KAAK+jS,YAAYx8R,GAAIvH,KAAKu+E,QAAQ,GAC3CukE,EAAM7zI,eAAe,WACrB6zI,EAAMyxE,OAAOzxE,GAEjBA,EAAM6/I,cAEN3iS,KAAKojS,UACLpjS,KAAKojS,QAAQgB,cACbpkS,KAAKojS,QAAQzkR,UAErB,EACAmjR,KAAM,WACF,IAAIv6R,EAAGu7I,EACP,IAAKv7I,EAAI,EAAGA,EAAIvH,KAAK6iJ,OAAOr7I,OAAQD,KAChCu7I,EAAQ9iJ,KAAK6iJ,OAAOt7I,IACd4pC,OAAOnxC,KAAKgkS,YAAYz8R,GAAIvH,KAAKu+E,QAAQ,GAC3CukE,EAAM7zI,eAAe,WACrB6zI,EAAMyxE,OAAOzxE,GAEjBA,EAAM6/I,cAEN3iS,KAAKojS,UACLpjS,KAAKojS,QAAQgB,cACbpkS,KAAKojS,QAAQzkR,UAErB,IAGA0lR,EAAcz8R,EAAM7E,OAAO,CAC3BoF,KAAM,SAAS0vL,EAAS3rI,EAAOo4O,GAC3BtkS,KAAK63L,QAAUA,EACf73L,KAAK6gL,QAAUyjH,EACftkS,KAAKksD,MAAQA,EACblsD,KAAKm+C,MAAQ,aACjB,EACAyjP,KAAM,WACF5hS,KAAK63L,QAAQ0sG,SAASvkS,KAAKksD,MAAOlsD,KAAK6gL,QAC3C,EACAihH,KAAM,WACF9hS,KAAK63L,QAAQqnG,QAAQl/R,KAAKksD,OAAO,EACrC,IAGAs4O,EAAa58R,EAAM7E,OAAO,CAC1BoF,KAAM,SAAS0vL,EAAS3rI,EAAOo4O,GAC3BtkS,KAAK63L,QAAUA,EACf73L,KAAK6gL,QAAUyjH,EACftkS,KAAKksD,MAAQA,EACblsD,KAAKm+C,MAAQ,aACjB,EACAyjP,KAAM,WACF5hS,KAAK63L,QAAQ0sG,SAASvkS,KAAKksD,MAAOlsD,KAAK6gL,QAC3C,EACAihH,KAAM,WACF9hS,KAAK63L,QAAQsnG,OAAOn/R,KAAKksD,OAAO,EACpC,IAMAu4O,EAAkB9jS,EAAM2I,WAAWvG,OAAO,CAC1CoF,KAAM,SAAShB,GACXxG,EAAM2I,WAAWvB,GAAGI,KAAKoC,KAAKvK,KAAMmH,GACpCnH,KAAKwJ,KAAKxJ,KAAKqK,OAAQlD,GACvBnH,KAAKm0I,MAAQ,GACbn0I,KAAKsZ,MAAQ,EACbtZ,KAAK0kS,SAAW,GACpB,EAEAr6R,OAAQ,CAAC,SAAU,UAMnBs6R,MAAO,WACH3kS,KAAK6tD,UAAY,IAAIo0O,CACzB,EAKAtnQ,OAAQ,WACJ36B,KAAK6tD,UAAYjrD,CACrB,EAKAgiS,OAAQ,SAASC,GACT7kS,KAAK6tD,UAAU03H,MAAM/9K,OAAS,GAC9BxH,KAAK8kS,SAAS9kS,KAAK6tD,UAAWg3O,GAElC7kS,KAAK6tD,UAAYjrD,CACrB,EAMAmiS,iBAAkB,SAAS7C,GACnBliS,KAAK6tD,UACL7tD,KAAK6tD,UAAUrgD,IAAI00R,GAEnBliS,KAAKwN,IAAI00R,EAEjB,EAOA10R,IAAK,SAAS00R,EAAU2C,GACpB7kS,KAAK8kS,SAAS5C,EAAU2C,EAC5B,EAOA90Q,IAAK,WACG/vB,KAAKsZ,MAAQ,IACbtZ,KAAKm0I,MAAMpkH,MACX/vB,KAAKsZ,QAEb,EAEAgC,MAAO,WACH,OAAOtb,KAAKm0I,MAAM3sI,MACtB,EAKAo6R,KAAM,WACE5hS,KAAKsZ,MAAQ,IACbtZ,KAAKsZ,QACLtZ,KAAKm0I,MAAMn0I,KAAKsZ,OAAOsoR,OACvB5hS,KAAKoK,QAAQ,UAErB,EAKA03R,KAAM,WACE9hS,KAAKm0I,MAAM3sI,OAAS,GAAKxH,KAAKsZ,MAAQtZ,KAAKm0I,MAAM3sI,SACjDxH,KAAKm0I,MAAMn0I,KAAKsZ,OAAOwoR,OACvB9hS,KAAKsZ,QACLtZ,KAAKoK,QAAQ,UAErB,EAEA06R,SAAU,SAASj3O,EAAWg3O,GAE1B7kS,KAAKm0I,MAAM3pI,OAAOxK,KAAKsZ,MAAOtZ,KAAKm0I,MAAM3sI,OAASxH,KAAKsZ,OACvDtZ,KAAKm0I,MAAMxyI,KAAKksD,IACA,IAAZg3O,EACA7kS,KAAK8hS,OAEL9hS,KAAKsZ,QAGLtZ,KAAKm0I,MAAM3sI,OAASxH,KAAK0kS,WACzB1kS,KAAKm0I,MAAM3pI,OAAO,EAAGxK,KAAKm0I,MAAM3sI,OAASxH,KAAK0kS,UAC9C1kS,KAAKsZ,MAAQtZ,KAAK0kS,SAE1B,EAKAluO,MAAO,WACHx2D,KAAKm0I,MAAQ,GACbn0I,KAAKsZ,MAAQ,CACjB,IAKA0rR,EAAYp9R,EAAM7E,OAAO,CACzBoF,KAAM,SAAS88R,GACXjlS,KAAKilS,YAAcA,CACvB,EACAnvR,MAAO,WACP,EACA4kB,KAAM,WACN,EACA/uB,IAAK,WACL,EACAu5R,YAAa,WACT,OAAO,CACX,EACAC,UAAW,WACP,OAAOhF,EAAQ36K,KACnB,IAGA4/K,EAAeJ,EAAUjiS,OAAO,CAChCoF,KAAM,SAAS88R,GACX,IAAII,EAAOrlS,KACPotF,EAAWzsF,EAAM4C,QAAQggB,SA1hBf,IADP,GA4hBPyhR,EAAUj9R,GAAGI,KAAKoC,KAAK86R,EAAMJ,GAE7B,IAAIptG,EAAUwtG,EAAKJ,YAAYptG,QAC3Bz1C,EAASy1C,EAAQz1C,OAEjBohI,EAAW3rF,EAAQ2rF,SAAW6hB,EAAK7hB,SAAW7gR,EAAEk1L,EAAQytG,YAAYxsQ,oBAAoB,CACxFs0D,SAAUA,EACVD,mBAjiBc,EAkiBd6B,qBAAqB,EACrBv+C,MAAM,EACN69N,OAAQ+2B,EAAKziN,MAAMp5E,KAAK67R,KACzBj3R,KAAK,uBAEJg0I,EAAOhyG,YACPi1P,EAAKE,cAAgB,IAAI59M,EAAQy6D,EAAOv2I,UAG5C,IAAI25R,EAAgB,SAAS9+M,EAAWhwE,EAAKyC,GACzCutE,EAAUjB,cACViB,EAAUd,YAAYlvE,IAjjBjB,IAijBoCyC,GAhjBpC,IAijBT,EAEAqsR,EAAchiB,EAAS7wP,WAAWvtB,GAClCogS,EAAchiB,EAAS7wP,WAAWxuB,GAClCq/Q,EAASv7P,SACb,EAEAi9Q,YAAa,SAASryK,EAAGrhH,GACrB,IAAIyzR,EAAcjlS,KAAKilS,YACnB99R,EAAU89R,EAAYptG,QAAQ1wL,QAAQqtK,SACtC1sJ,EAAUtW,EAAKi+E,QAUnB,OARIqnC,EAAQ3vH,EAAQ2K,OAIZgW,EAHC3gB,EAAQ2K,KAAsB,QAAf3K,EAAQ2K,IAGdN,EAAKrK,EAAQ2K,IAAM,OAFnB2zR,GAAOj0R,KAAUslH,EAAQmuK,EAAYS,eAMpC,IAAZv+R,GAAqB2gB,IAAYgvG,EAAQmuK,EAAYU,kBAAoB7uK,EAAQmuK,EAAYW,kBACxG,EAEA9vR,MAAO,WACH9V,KAAKwjR,SAASr7P,QAClB,EACAuS,KAAM,WACN,EACAkoD,MAAO,SAASvrD,GACZ,IACIwgK,EADO73L,KACQilS,YAAYptG,QAC3Bz1C,EAASy1C,EAAQz1C,OACjByjJ,EAAY,IAAI/pK,EAAMzkG,EAAK9J,WAAY8J,EAAKP,WAE5CsrH,EAAOhyG,WACPynJ,EAAQiuG,UAAUD,EAAUvc,OAAO,IAN5BtpR,KAOFulS,cAAc/oP,OAAOqpP,GAC1BzjJ,EAAOhyG,UAAUy1P,EAAUzgS,EAAGygS,EAAU1hS,IAExC0hS,EAAYA,EAAUzc,KAAKvxF,EAAQghF,KAAKyQ,OAAO,IAGnDzxF,EAAQztL,QAtlBN,MAslBmB,CAAEi4K,IAAKwjH,GAChC,EACAl6R,IAAK,WACD3L,KAAKwjR,SAASv7P,SAClB,EACAk9Q,UAAW,WACP,OAAOhF,EAAQzlQ,IACnB,IAOAqrQ,EAAcn+R,EAAM7E,OAAO,CAC3BoF,KAAM,SAAS88R,GACXjlS,KAAKilS,YAAcA,CACvB,EACAC,YAAa,WACT,OAAO,CACX,EACApvR,MAAO,SAAS+8G,EAAGrhH,GACf,IAAIyzR,EAAcjlS,KAAKilS,YACnBptG,EAAUotG,EAAYptG,QACtB6tG,EAAcT,EAAYS,YAE1BA,IACAT,EAAYe,aAAaN,EAAal0R,GAClCk0R,EAAYtC,UACZpjS,KAAKojS,QAAUsC,EAAYtC,QAC3BpjS,KAAKm7B,OAASn7B,KAAKojS,QAAQ6C,SAASpzK,KAIvC7yH,KAAKm7B,SACNn7B,KAAKm7B,OAAS08J,EAAQquG,iBAAiBD,SAASpzK,GAC5C7yH,KAAKm7B,SACLn7B,KAAKojS,QAAUvrG,EAAQquG,mBAI3BlmS,KAAKojS,UACApjS,KAAKojS,QAAQ+C,aAAanmS,KAAKm7B,SAAY08J,EAAQztL,QAAQ62L,EAAY,CAAEp+C,OAAQ7iJ,KAAKojS,QAAQvgJ,OAAQujJ,YAAa,MAGpHnB,EAAY7gK,WAAavR,EACzBoyK,EAAYt5R,IAAIknH,IAHhB7yH,KAAKojS,QAAQttR,MAAM+8G,GAM/B,EAEAn4F,KAAM,SAASm4F,GACP7yH,KAAKojS,UACLpjS,KAAKojS,QAAQ1oQ,KAAK16B,KAAKm7B,OAAQ03F,GAC3B7yH,KAAKojS,QAAQ+C,aAAanmS,KAAKm7B,SAC/Bn7B,KAAKilS,YAAYptG,QAAQztL,QAAQ+5E,EAAM,CAAE0+D,OAAQ7iJ,KAAKojS,QAAQvgJ,OAAQujJ,YAAa,KAG/F,EAEAz6R,IAAK,WACD,IAEIwuH,EAFA09D,EAAU73L,KAAKilS,YAAYptG,QAC3BurG,EAAUpjS,KAAKojS,QAGfA,IACKA,EAAQ+C,aAAanmS,KAAKm7B,SAAY08J,EAAQztL,QAAQ42L,EAAU,CAAEn+C,OAAQugJ,EAAQvgJ,OAAQujJ,YAAa,KAMxGhD,EAAQzoQ,UALRw/F,EAAOipK,EAAQ56Q,SAEXqvK,EAAQwuG,gBAAgB74R,IAAI2sH,GAAM,IAO9Cn6H,KAAKojS,QAAUxgS,EACf5C,KAAKm7B,OAASv4B,CAClB,EACAuiS,UAAW,SAAStyK,GAChB,OAAO7yH,KAAKilS,YAAYS,YAAc1lS,KAAKilS,YAAYS,YAAYrgJ,WAAWxyB,GAAKstK,EAAQ36K,KAC/F,IAGA8gL,EAAgB1+R,EAAM7E,OAAO,CAC7BoF,KAAM,SAAS88R,GACXjlS,KAAKilS,YAAcA,CACvB,EACAC,YAAa,SAASryK,EAAGrhH,GACrB,IAAIyzR,EAAcjlS,KAAKilS,YACnB1tG,EAAa0tG,EAAYptG,QAAQ1wL,QAAQowL,WACzCzvK,EAAUyvK,IAAsC,IAAxBA,EAAWjhJ,SAUvC,OARIxuB,IAEIA,EADAyvK,EAAWzlL,KAAyB,QAAlBylL,EAAWzlL,IACnBN,EAAK+lL,EAAWzlL,IAAM,OAEtB2zR,GAAOj0R,IAIlBsW,IAAYgvG,EAAQmuK,EAAYS,eAAiB5uK,EAAQmuK,EAAYU,eAChF,EACA7vR,MAAO,SAAS+8G,GACZ,IAAIglE,EAAU73L,KAAKilS,YAAYptG,QAC/BA,EAAQ4rG,WACR5rG,EAAQxxK,SAASvQ,MAAM+8G,EAC3B,EACAn4F,KAAM,SAASm4F,GACG7yH,KAAKilS,YAAYptG,QACvBxxK,SAASqU,KAAKm4F,EAC1B,EACAlnH,IAAK,SAASknH,EAAGrhH,GACb,IAAIqmL,EAAU73L,KAAKilS,YAAYptG,QAAS6tG,EAAc1lS,KAAKilS,YAAYS,YACnEp5M,EAAOurG,EAAQxxK,SAAS4+P,SACtBygB,GAAgBA,EAAYa,YAAgB/0R,EAAKi+E,SACnDooG,EAAQ4rG,WAEPn3M,EAAKu6F,WACNgR,EAAQ2uG,WAAWl6M,GAEvBurG,EAAQxxK,SAAS1a,KACrB,EACAw5R,UAAW,WACP,OAAOhF,EAAQ36K,KACnB,IAGAihL,EAAiB7+R,EAAM7E,OAAO,CAC9BoF,KAAM,SAAS88R,GACXjlS,KAAKilS,YAAcA,EACnBjlS,KAAK0F,KAAO,gBAChB,EACAw/R,YAAa,WACT,OAAOllS,KAAKilS,YAAYW,iBAC5B,EACA9vR,MAAO,SAAS+8G,EAAGrhH,GACf,IAAIyzR,EAAcjlS,KAAKilS,YACnBptG,EAAUotG,EAAYptG,QACtB6uG,EAAYzB,EAAYW,kBACxB/V,EAAah4F,EAAQ8uG,kBAAkB,CAAC,EAAGD,EAAUE,GAAI/zK,GAEzDg0K,GAAQhX,KAAgBh4F,EAAQztL,QAAQ62L,EAAY,CAAEp+C,OAAQ,GAAIujJ,YAAa,CAACvW,GAAaiX,iBAAkB/F,KAAalpG,EAAQmgG,eAAenI,IACnJoV,EAAY8B,wBAAwBlX,EAAY6W,EAAUE,GAAG9jJ,OAAO,GACpEmiJ,EAAY+B,eACZ/B,EAAYe,aAAaf,EAAYgC,iBAAkBz1R,GACtC,aAAbA,EAAK9L,OACLmyL,EAAQqvG,mBAAqBR,EAAUzlJ,UAG3C4uI,EAAWhiR,OAAO,MAClBo3R,EAAYt5R,IAAIknH,GAExB,EAEAn4F,KAAM,SAASm4F,GACX,IAAIoyK,EAAcjlS,KAAKilS,YACnBpV,EAAaoV,EAAYgC,iBAI7B,OAFApX,EAAWxoR,OAAOwrH,GAClBoyK,EAAYptG,QAAQztL,QAAQ+5E,EAAM,CAAE0+D,OAAQ,GAAIujJ,YAAa,CAACvW,GAAaiX,iBAAkB/F,KACtF,CACX,EAEAp1R,IAAK,SAASknH,GACV,IAKIxrH,EALA49R,EAAcjlS,KAAKilS,YACnBzgS,EAAIygS,EAAYptG,QAChBg4F,EAAaoV,EAAYgC,iBACzBvB,EAAcT,EAAYS,YAC1BgB,EAAYzB,EAAYW,kBAExBuB,EAAoB3iS,EAAE0iS,mBAErBrX,IAKDxoR,EADAq/R,GAAaA,EAAUE,IAAM/W,EAAWuX,gBAC/BV,EAAUE,GACZlB,GAAeA,aAAuB7tG,EAAQwvG,MAC5C3B,EAAY4B,aAAa/1P,IAASm0P,EAAY4B,aAAaz0K,GAE3DA,EAGbg9J,EAAWxoR,OAAOA,GAEb7C,EAAE4F,QAAQ42L,EAAU,CAAEn+C,OAAQ,GAAIujJ,YAAa,CAACvW,GAAaiX,iBAAkB/F,KAIhFv8R,EAAE6H,OAAOwjR,GAAY,GACrBrrR,EAAE6hS,gBAAgBt2Q,QAJlB8/P,EAAW8S,cACXn+R,EAAE+iS,0BAKNtC,EAAY8B,0BAERI,IACA3iS,EAAEgjS,mBAAmBvmJ,OAAO50I,OAAO86R,GACnC3iS,EAAE0iS,mBAAqB,MAE/B,EAEA/B,UAAW,WACP,OAAOhF,EAAQ36K,KACnB,IAGAiiL,EAAqB7/R,EAAM7E,OAAO,CAClCoF,KAAM,SAAS88R,GACXjlS,KAAKilS,YAAcA,EACnBjlS,KAAK0F,KAAO,gBAChB,EAEAw/R,YAAa,SAASryK,EAAGrhH,GACrB,IAAIyzR,EAAcjlS,KAAKilS,YAEnB1tG,EADU0tG,EAAYptG,QACD1wL,QAAQowL,WAC7BpoJ,EAAO81P,EAAYS,YACnBgC,GAA0B,IAAfnwG,GACApoJ,GAAQA,EAAKI,QAAUJ,EAAKo3P,YAAc/0R,EAAKi+E,SAM9D,OAJIi4M,IACA1nS,KAAK4mS,GAAKz3P,GAGPu4P,CACX,EAEA5xR,MAAO,SAAS+8G,EAAGrhH,GACf,IAAIyzR,EAAcjlS,KAAKilS,YACnBpV,EAAa7vR,KAAK4mS,GAEtB3B,EAAYe,aAAanW,EAAYr+Q,GAErC,IAEI2pB,EAAQ/4B,EAFRghS,EAAUvT,EAAWuT,QAGrBA,IACAjoQ,EAASioQ,EAAQ6C,SAASpzK,GAC1BzwH,EAAO4+R,EAAa7lQ,IAGpB0rQ,GAAQhX,IAAeuT,IAAY6B,EAAYptG,QAAQztL,QAAQ62L,EAAY,CAAEp+C,OAAQ,GAAIujJ,YAAa,CAACvW,GAAaiX,iBAAkB1kS,KACtIpC,KAAKm7B,OAASA,EACdn7B,KAAK2nS,WAAavlS,EAClBghS,EAAQttR,MAAM+8G,KAEdoyK,EAAY7gK,WAAavR,EACzBoyK,EAAYt5R,IAAIknH,GAExB,EAEAn4F,KAAM,SAASm4F,GACX,IAAIuwK,EAAUpjS,KAAK4mS,GAAGxD,QACtB,GAAIyD,GAAQ7mS,KAAK4mS,KAAOxD,EAIpB,OAHAA,EAAQ1oQ,KAAK16B,KAAKm7B,OAAQ03F,GAC1B7yH,KAAKilS,YAAYptG,QAAQztL,QAAQ+5E,EAAM,CAAE0+D,OAAQ,GAAIujJ,YAAa,CAACpmS,KAAK4mS,IAAKE,iBAAkB9mS,KAAK2nS,cAE7F,CAEf,EAEAh8R,IAAK,SAASknH,GACV,IAAIg9J,EAAa7vR,KAAK4mS,GAClBxD,EAAUvT,EAAWuT,QAErBvrG,EADc73L,KAAKilS,YACGptG,QAE1B,GAAIurG,GACIyD,GAAQhX,GAAa,CACrB,IAAI11J,EAAOipK,EAAQ56Q,KAAKqqG,GACnBglE,EAAQztL,QAAQ42L,EAAU,CAAEn+C,OAAQ,GAAIujJ,YAAa,CAACvW,GAAaiX,iBAAkB9mS,KAAK2nS,aAK3FxtK,EAAKynK,QAJL/pG,EAAQwuG,gBAAgB74R,IAAI2sH,GAAM,GAClC01J,EAAW8S,cACX9qG,EAAQ0vG,yBAIhB,CAER,EAEApC,UAAW,WACP,OAAOhF,EAAQzlQ,IACnB,IAGJ,SAASktQ,GAAQ91R,EAAK3C,GAClB,OAAOA,EAAI0C,WAAW,IAAMC,GAAO3C,EAAIG,cAAcuC,WAAW,IAAMC,CAC1E,CAMA,IAAI+1R,GAAcjgS,EAAM7E,OAAO,CAC3BoF,KAAM,SAAS0vL,GACX73L,KAAK63L,QAAUA,EACf73L,KAAKy3L,MAAQ,CACT,IAAI2tG,EAAaplS,MACjB,IAAIynS,EAAmBznS,MACvB,IAAIymS,EAAezmS,MACnB,IAAIsmS,EAActmS,MAClB,IAAI+lS,EAAY/lS,OAGpBA,KAAK8nS,WAAallS,CACtB,EAEAkT,MAAO,SAAS+8G,EAAGrhH,GAYf,OAXAA,EAAOhJ,EAAW,CAAC,EAAGgJ,GAClBxR,KAAK8nS,YACL9nS,KAAK8nS,WAAWn8R,IAAIknH,EAAGrhH,GAE3BxR,KAAK+nS,mBAAmBl1K,GACxB7yH,KAAKgoS,cAAcn1K,EAAGrhH,GACtBxR,KAAK8nS,WAAWhyR,MAAM+8G,EAAGrhH,GACzBxR,KAAKioS,cAAcp1K,GACnB7yH,KAAK63L,QAAQ9xJ,QACb/lC,KAAK63L,QAAQz1C,OAAOzgE,QAAQi2D,kBAC5B53I,KAAKokI,WAAavR,GACX,CACX,EAEAn4F,KAAM,SAASm4F,EAAGrhH,GACdA,EAAOhJ,EAAW,CAAC,EAAGgJ,GACtB,IAAI02R,GAAgB,EAQpB,OAPIloS,KAAK8nS,aACLI,EAAgBloS,KAAK8nS,WAAWptQ,KAAKm4F,EAAGrhH,IAExC02R,GACAloS,KAAK+nS,mBAAmBl1K,GAE5B7yH,KAAKioS,cAAcp1K,IACZ,CACX,EAEAlnH,IAAK,SAASknH,EAAGrhH,GAQb,OAPAA,EAAOhJ,EAAW,CAAC,EAAGgJ,GAClBxR,KAAK8nS,YACL9nS,KAAK8nS,WAAWn8R,IAAIknH,EAAGrhH,GAE3BxR,KAAK63L,QAAQz1C,OAAOzgE,QAAQm2D,iBAC5B93I,KAAK8nS,WAAallS,EAClB5C,KAAKioS,cAAcp1K,IACZ,CACX,EAEAs1K,QAAS,SAASr2R,EAAKN,GACnB,IAAIqmL,EAAU73L,KAAK63L,QAEnB,KADArmL,EAAOhJ,EAAW,CAAEinF,SAAS,EAAO24M,SAAS,EAAO/4E,QAAQ,GAAS79M,IAC3Di+E,UAAWj+E,EAAK42R,SAAa52R,EAAK69M,OA8BrC,IAAY,KAARv9M,GAAsB,IAARA,EAAW,CAChC,IAAIu2R,EAAWroS,KAAK63L,QAAQywG,eAAezwG,EAAQtxJ,UAOnD,OANI8hQ,EAAS7gS,SACTxH,KAAK63L,QAAQxrL,OAAOg8R,GAAU,GAC9BroS,KAAK63L,QAAQ0wG,eACbvoS,KAAK63L,QAAQ2wG,oBAGV,CACX,CAAO,GAAY,KAAR12R,EAIP,OAHA9R,KAAKyoS,wBACL5wG,EAAQ4rG,WACR5rG,EAAQ2wG,mBACD,CACX,KA5CoD,CAChD,GAAIZ,GAAQ91R,EAAK,KAGb,OAFA+lL,EAAQ6wG,YACR7wG,EAAQ2wG,mBACD,EACJ,GAAIZ,GAAQ91R,EAAK,KAGpB,OAFA+lL,EAAQ+pG,OACR/pG,EAAQ2wG,mBACD,EACJ,GAAIZ,GAAQ91R,EAAK,KAGpB,OAFA+lL,EAAQiqG,OACRjqG,EAAQ2wG,mBACD,EACAZ,GAAQ91R,EAAK,MACpB+lL,EAAQ3wL,OACR2wL,EAAQ2wG,mBACDZ,GAAQ91R,EAAK,MACpB+lL,EAAQpzK,MACRozK,EAAQ2wG,mBACDZ,GAAQ91R,EAAK,MACpB+lL,EAAQnzK,QACRmzK,EAAQ2wG,mBACDZ,GAAQ91R,EAAK,MACpB+lL,EAAQ08B,SACR18B,EAAQ2wG,mBACDZ,GAAQ91R,EAAK,OACpB+lL,EAAQ2wG,kBACR3wG,EAAQ3wL,OACR2wL,EAAQnzK,QAEhB,CAgBJ,EACAikR,MAAO,SAAS91K,EAAGrhH,GACf,IAAIqmL,EAAU73L,KAAK63L,QACf9yJ,EAAQvzB,EAAKuzB,MACbz/B,EAAIuyL,EAAQpnJ,OACZtpC,EAAU0wL,EAAQ1wL,QAClByhS,EAAWzhS,EAAQyhS,SACnBC,EAAc,CAAE1sK,MAAOtJ,EAAGrhH,KAAMA,EAAMi/B,KAAMnrC,GAEhD,IAAIuyL,EAAQztL,QAp/BH,YAo/BuBy+R,GAgBhC,OAZI9jQ,EAAQ,EACRz/B,GAAKsjS,EAELtjS,GAAKsjS,EAGTtjS,EAAI3E,EAAM8pB,QAAQnU,MAAMjT,KAAK8V,IAAIhS,EAAQu6Q,QAASr+Q,KAAKqT,IAAIvP,EAAQw6Q,QAASr8Q,IAAK,GACjFujS,EAAYp4P,KAAOnrC,EAEnBuyL,EAAQpnJ,KAAKnrC,EAAGujS,GAChBhxG,EAAQztL,QAjgCD,UAigCmBy+R,IAEnB,CACX,EACAC,QAAS,SAASzD,EAAM/rR,GACpB+rR,EAAKJ,YAAcjlS,KACnBA,KAAKy3L,MAAMn+K,GAAS+rR,CACxB,EAEAW,aAAc,SAAS72P,EAAM39B,GACzB,IAAIqmL,EAAU73L,KAAK63L,QACfN,EAAaM,EAAQ1wL,QAAQowL,WACjC,GAAIA,IAAepoJ,EAAKo3P,aAA0C,IAA5Bp3P,EAAKhoC,QAAQowL,WAAsB,CACrE,IAAIwxG,EAAiBv3R,EAAKi+E,UAAmC,IAAxB8nG,EAAWjhJ,SAChDuhJ,EAAQtxJ,OAAO4I,EAAM,CAAE45P,eAAgBA,GAC3C,CACJ,EAEAN,sBAAuB,WACfzoS,KAAKgpS,gBACLhpS,KAAK63L,QAAQxrL,OAAOrM,KAAKgpS,eACzBhpS,KAAKgpS,cAAgBpmS,EAE7B,EACAolS,cAAe,SAASn1K,EAAGrhH,GACvB,IAAK,IAAIjK,EAAI,EAAGA,EAAIvH,KAAKy3L,MAAMjwL,OAAQD,IAAK,CACxC,IAAI89R,EAAOrlS,KAAKy3L,MAAMlwL,GACtB,GAAI89R,EAAKH,YAAYryK,EAAGrhH,GAAO,CAC3BxR,KAAK8nS,WAAazC,EAClB,KACJ,CACJ,CACJ,EACA4C,cAAe,SAASp1K,GACpB,IAAIhnH,EAAU7L,KAAK63L,QAAQhsL,QACvBmvI,EAASh7I,KAAK8nS,WAAa9nS,KAAK8nS,WAAW3C,UAAUtyK,GAAM7yH,KAAK2lS,eAAiB3lS,KAAK2lS,eAAetgJ,WAAWxyB,GAAM7yH,KAAK0lS,YAAc1lS,KAAK0lS,YAAYrgJ,WAAWxyB,GAAKstK,EAAQ36K,MAEtL35G,EAAQI,IAAI,CAAE+uI,OAAQA,GAC1B,EACA+rJ,wBAAyB,SAASlX,EAAYoZ,EAAen6O,GACzD9uD,KAAKinS,iBAAmBpX,EACxB7vR,KAAKipS,cAAgBA,EAEjBjpS,KAAKgpS,cADLl6O,EACqB9uD,KAAKinS,iBAELrkS,CAE7B,EACAmlS,mBAAoB,SAASl1K,GACzB,IAAIq2K,EAAMlpS,KAAKimS,SAASpzK,GACpBglE,EAAU73L,KAAK63L,QAEfqxG,GAAOlpS,KAAK0lS,aAAiB1lS,KAAKipS,eAAiBC,GAAOlpS,KAAKipS,gBAC3DjpS,KAAK0lS,cACL7tG,EAAQztL,QAzjCN,aAyjC2B,CAAE+kC,KAAMnvC,KAAK0lS,cAC1C1lS,KAAK0lS,YAAYnK,QAAO,IAGxB2N,GAAOA,EAAI/hS,QAAQghB,QACnB0vK,EAAQztL,QA/jCN,aA+jC2B,CAAE+kC,KAAM+5P,IAErClpS,KAAK0lS,YAAcwD,EACnBlpS,KAAK0lS,YAAYnK,QAAO,IAExBv7R,KAAK0lS,YAAc9iS,EAG/B,EACAokS,aAAc,WACNhnS,KAAK0lS,cACL1lS,KAAK0lS,YAAYnK,QAAO,GACxBv7R,KAAK0lS,YAAc9iS,EAE3B,EACAqjS,SAAU,SAAS9pK,GACf,IAAI+sK,EAAuB/5P,EAAM5nC,EAAxB/C,EAAIxE,KAAK63L,QAOlB,GAJI73L,KAAK4lS,oBACL5lS,KAAK4lS,kBAAkBrK,QAAO,GAC9Bv7R,KAAK4lS,kBAAoBhjS,GAEzB4B,EAAEgjS,mBAAmB/4B,WACrBy6B,EAAM1kS,EAAEgjS,mBAAmBvB,SAAS9pK,IAEhC,OAAO+sK,EAKf,GADAA,EAAMlpS,KAAK63L,QAAQquG,iBAAiBD,SAAS9pK,GACpC,CAEL,GADAn8H,KAAK2lS,eAAiBnhS,EAAE0hS,iBACV,IAAVgD,EAAI9jS,GAAqB,IAAV8jS,EAAI/kS,EACnB,OAEJ+kS,EAAMtmS,CACV,MACI5C,KAAK2lS,eAAiB/iS,EAG1B,IAAK5C,KAAK8nS,YAAuC,mBAAzB9nS,KAAK8nS,WAAWpiS,KAA2B,CAC/D,IAAIyjS,EAAsB,GAE1B,IAAK5hS,EAAI,EAAGA,EAAI/C,EAAE4kS,eAAe5hS,OAAQD,KACrC4nC,EAAO3qC,EAAE4kS,eAAe7hS,cACJswL,EAAQwxG,YACxBF,EAAoBxnS,KAAKwtC,GAGjC+5P,EAAMlpS,KAAKspS,cAAcH,EAAqBhtK,EAClD,CAEA,OAAO+sK,GAAOlpS,KAAKupS,iBAAiBptK,EACxC,EAEAotK,iBAAkB,SAASptK,GACvB,IAGI+sK,EAHArxG,EAAU73L,KAAK63L,QACf2xG,EAAWxpS,KAAKspS,cAAczxG,EAAQh1C,OAAQ1mB,GAC9CstK,EAAgBzpS,KAAKspS,cAAczxG,EAAQuuG,YAAajqK,GAG5D,KAAMn8H,KAAK8nS,YAAsC,kBAAxB9nS,KAAK8nS,WAAWpiS,OAA6B8jS,GAAYC,IA2oC1F,SAAgC3mJ,EAAO3mB,GAEnC,IADA,IAAIuqK,EAAWp5R,EAAUg/E,EAChB1iF,EAAM,EAAGA,EAAMk5I,EAAM41C,WAAWlxL,OAAQoC,IAK7C,GAHA0D,GADAo5R,EAAY5jJ,EAAM41C,WAAW9uL,IACR0D,YACrBg/E,EAAO,IAAI2wC,EAAK3vH,EAASlI,EAAGkI,EAASnJ,IAChC8lR,QAAQ2W,EAAmBA,GAC5Bt0M,EAAK/2D,SAAS4mG,GACd,OAAOuqK,CAGnB,CAtpC4GgD,CAAuBF,EAAUrtK,GAAQ,CACzI,IAAIwtK,EAAY9xG,EAAQ8xG,UAGxBT,EAFezzQ,EAAQ+zQ,EAASvoJ,OAAQ0oJ,EAAUp0P,UAC9B9f,EAAQg0Q,EAAcxoJ,OAAQ0oJ,EAAUp0P,UAC3Bi0P,EAAWC,CAChD,CACA,OAAOP,GAAOM,GAAYC,CAC9B,EAEAH,cAAe,SAASvuR,EAAOohH,GAC3B,IAAI50H,EAAS2hS,EACb,IAAK3hS,EAAIwT,EAAMvT,OAAS,EAAGD,GAAK,EAAGA,IAG/B,GADA2hS,EADOnuR,EAAMxT,GACF0+R,SAAS9pK,GAEhB,OAAO+sK,CAGnB,IAQAU,GAAuBjpS,EAAMiH,MAAM7E,OAAO,CAC1CoF,KAAM,WACN,IAcA0hS,GAAyBD,GAAqB7mS,OAAO,CACrDoF,KAAM,SAAS0nR,GAEX+Z,GAAqB7hS,GAAGI,KAAKoC,KADlBvK,MAEXA,KAAK6vR,WAAaA,CACtB,EAIAia,QAAS,SAASj3K,GAEd,QADU7yH,KAAK+pS,YAAY9f,QAAQ2W,GAC1BrrQ,SAASs9F,IAGXglE,EAAQ80F,SAASO,mBAAmBr6J,EAAG7yH,KAAK6vR,WAAW/hF,aAAe8yF,CACjF,EAMAmJ,UAAW,WASP,IARA,IAAI3mK,EAASpjI,KAAK6vR,WAAW/hF,YACzB7oM,EAAIm+H,EAAO,GACXz+H,EAAIy+H,EAAOA,EAAO57H,OAAS,GAC3BilB,EAAQppB,KAAK8V,IAAIlU,EAAEG,EAAGT,EAAES,GACxBonB,EAAOnpB,KAAKqT,IAAIzR,EAAEG,EAAGT,EAAES,GACvB8f,EAAM7hB,KAAKqT,IAAIzR,EAAEd,EAAGQ,EAAER,GACtBuoB,EAASrpB,KAAK8V,IAAIlU,EAAEd,EAAGQ,EAAER,GAEpBoD,EAAI,EAAGA,EAAI67H,EAAO57H,OAAS,IAAKD,EACrCklB,EAAQppB,KAAK8V,IAAIsT,EAAO22G,EAAO77H,GAAGnC,GAClConB,EAAOnpB,KAAKqT,IAAI8V,EAAM42G,EAAO77H,GAAGnC,GAChC8f,EAAM7hB,KAAKqT,IAAIwO,EAAKk+G,EAAO77H,GAAGpD,GAC9BuoB,EAASrpB,KAAK8V,IAAIuT,EAAQ02G,EAAO77H,GAAGpD,GAGxC,OAAO,IAAI84H,EAAKzwG,EAAMtH,EAAKuH,EAAQD,EAAME,EAASxH,EACtD,IAQA8kR,GAAiBH,GAAuB9mS,OAAO,CAC/CoF,KAAM,SAAS0nR,GAEXga,GAAuB9hS,GAAGI,KAAKoC,KADpBvK,MAEXA,KAAK6vR,WAAaA,CACtB,EACAjvO,MAAO,WAEP,IAGAqpP,GAAkBJ,GAAuB9mS,OAAO,CAChDmnS,yBAA0B,EAE1B/hS,KAAM,SAAS0nR,GAEXga,GAAuB9hS,GAAGI,KAAKoC,KADpBvK,MAEXA,KAAK6vR,WAAaA,CACtB,EAEAsa,YAAa,SAASr0R,EAAOnK,EAAKy7R,EAAiBpE,GAQ/C,OALIoE,GAAmBpE,EACVhjS,KAAKoqS,iBAAiBt0R,EAAOnK,EAAKy7R,EAAiBpE,GAEnDhjS,KAAKqqS,gBAAgBv0R,EAAOnK,EAAKy7R,EAGlD,EAEAxmP,MAAO,WACH,IAAIwmP,EAAkBpnS,KAAK6vR,WAAWya,yBAClCtH,EAAkBhjS,KAAK6vR,WAAW0a,yBAClCz0R,EAAQ9V,KAAK6vR,WAAW2a,cACxB7+R,EAAM3L,KAAK6vR,WAAW4a,cACtBrnK,EAASpjI,KAAKmqS,YAAYr0R,EAAOnK,EAAKy7R,EAAiBpE,GAC3DhjS,KAAK6vR,WAAWzsJ,OAAOA,EAC3B,EAEAsnK,gBAAiB,CAAC,CACdtoS,KAAM,MACN+iC,KAAM,IACNwlQ,YAAa,UACbC,cAAe,GAChB,CACCxoS,KAAM,OACN+iC,KAAM,IACNwlQ,YAAa,UACbC,cAAe,GAChB,CACCxoS,KAAM,SACN+iC,KAAM,IACNwlQ,YAAa,cACbC,eAAgB,GACjB,CACCxoS,KAAM,QACN+iC,KAAM,IACNwlQ,YAAa,cACbC,eAAgB,IAGpBC,eAAgB,SAASnE,EAAW+D,GAahC,IAZA,IAQIK,EACAC,EACA5lQ,EACAspH,EAXAnhJ,EAAWo5R,EAAUp5R,WACrB09R,EAActE,EAAU5jJ,MAAMmiI,OAAO6b,GACrC7b,EAAS,CACT1nJ,QAASytK,EAAYztK,UACrBC,YAAawtK,EAAYxtK,eAEzBytK,EAAQjrS,KAAK0qS,gBACbh0R,EAAM8wG,EAAK2P,QAKNvtH,EAAM,EAAGA,EAAMqhS,EAAMzjS,OAAQoC,IAElCu7B,GADAspH,EAAOw8I,EAAMrhS,IACDu7B,MACZ2lQ,EAAeznS,KAAKiT,MAAMjT,KAAKoU,IAAInK,EAAS63B,GAAQ8/O,EAAOx2H,EAAKk8I,aAAaxlQ,MAC1DzuB,GACfA,EAAMo0R,EACNC,EAAUt8I,GACHq8I,IAAiBp0R,IACvBpJ,EAAS63B,GAAQslQ,EAAYtlQ,IAASspH,EAAKm8I,eAAiBt9R,EAASy9R,EAAQ5lQ,MAAQslQ,EAAYM,EAAQ5lQ,OAAS4lQ,EAAQH,gBAC3HG,EAAUt8I,GAGlB,OAAOs8I,EAAQ3oS,IACnB,EAEA8oS,kBAAmB,SAASxE,GACxB,IAAIzhB,EAASyhB,EAAU5jJ,MAAMmiI,OAAO6b,GACpC,OAAOz9R,KAAKqT,IAAIuuQ,EAAOl5Q,MAAOk5Q,EAAOj5Q,QAAUhM,KAAKkqS,wBACxD,EAEAE,iBAAkB,SAASt0R,EAAOnK,EAAKy7R,EAAiBpE,GACpD,IAMImI,EAAQC,EANRC,EAAsBrrS,KAAK6qS,eAAezD,EAAiBz7R,GAC3D2/R,EAAsBtrS,KAAK6qS,eAAe7H,EAAiBltR,GAC3Dy1R,EAAS5/R,EAAIvG,EAAI0Q,EAAM1Q,EACvB4/B,EAASr5B,EAAIxH,EAAI2R,EAAM3R,EACvBqnS,EAAmBxrS,KAAKkrS,kBAAkB9D,GAC1CtwR,EAAS,GAkCb,OA/BIu0R,IAAwBn6M,GAAOm6M,GAAuBl6M,EAClDm6M,GAAuBp6M,GAAOo6M,GAAuBn6M,EACjDk6M,GAAuBC,GAEnBF,EADAC,GAAuBn6M,EACd7tF,KAAKqT,IAAIZ,EAAM3R,EAAGwH,EAAIxH,GAAKqnS,EAE3BnoS,KAAK8V,IAAIrD,EAAM3R,EAAGwH,EAAIxH,GAAKqnS,EAExC10R,EAAS,CAAC,IAAIglH,EAAMhmH,EAAM1Q,EAAGgmS,GAAS,IAAItvK,EAAMnwH,EAAIvG,EAAGgmS,KAEvDt0R,EAAS,CAAC,IAAIglH,EAAMhmH,EAAM1Q,EAAG0Q,EAAM3R,EAAI6gC,EAAS,GAAI,IAAI82F,EAAMnwH,EAAIvG,EAAG0Q,EAAM3R,EAAI6gC,EAAS,IAG5FluB,EAAS,CAAC,IAAIglH,EAAMhmH,EAAM1Q,EAAGuG,EAAIxH,IAGjCmnS,GAAuBlgR,GAAQkgR,GAAuBhgR,EAClD+/Q,GAAuBC,GAEnBH,EADAE,GAAuBjgR,EACd/nB,KAAKqT,IAAIZ,EAAM1Q,EAAGuG,EAAIvG,GAAKomS,EAE3BnoS,KAAK8V,IAAIrD,EAAM1Q,EAAGuG,EAAIvG,GAAKomS,EAExC10R,EAAS,CAAC,IAAIglH,EAAMqvK,EAAQr1R,EAAM3R,GAAI,IAAI23H,EAAMqvK,EAAQx/R,EAAIxH,KAE5D2S,EAAS,CAAC,IAAIglH,EAAMhmH,EAAM1Q,EAAImmS,EAAS,EAAGz1R,EAAM3R,GAAI,IAAI23H,EAAMhmH,EAAM1Q,EAAImmS,EAAS,EAAGz1R,EAAM3R,EAAI6gC,IAGlGluB,EAAS,CAAC,IAAIglH,EAAMnwH,EAAIvG,EAAG0Q,EAAM3R,IAGlC2S,CACX,EAEAuzR,gBAAiB,SAASv0R,EAAOnK,EAAKy7R,GAWlC,IAVA,IAMIqE,EACAC,EAPAL,EAAsBjE,EAAkBpnS,KAAK6qS,eAAezD,EAAiBz7R,GAAO,KACpFggS,EAAyB3rS,KAAK4rS,iBAAiB91R,EAAOnK,EAAK0/R,GAC3DjoK,EAAS,CAACttH,EAAOA,EAAOnK,EAAKA,GAC7B4/R,EAAS5/R,EAAIvG,EAAI0Q,EAAM1Q,EACvB4/B,EAASr5B,EAAIxH,EAAI2R,EAAM3R,EACvBqD,EAAS47H,EAAO57H,OAKXoC,EAAM,EAAGA,EAAMpC,EAAS,IAAKoC,EAC9B+hS,EACI/hS,EAAM,GAAM,GACZ6hS,EAASF,GAAU/jS,EAAS,GAC5BkkS,EAAS,IAGTD,EAAS,EACTC,EAAS1mQ,IAAWx9B,EAAS,GAAK,IAIlCoC,EAAM,GAAM,GACZ6hS,EAAS,EACTC,EAAS1mQ,GAAUx9B,EAAS,KAG5BikS,EAASF,IAAW/jS,EAAS,GAAK,GAClCkkS,EAAS,GAGjBtoK,EAAOx5H,GAAO,IAAIkyH,EAAMsH,EAAOx5H,EAAM,GAAGxE,EAAIqmS,EAAQroK,EAAOx5H,EAAM,GAAGzF,EAAIunS,GAU5E,OAPA9hS,IAEIw5H,EAAO57H,EAAS,GADfmkS,GAA2B/hS,EAAM,GAAM,IAAS+hS,GAA2B/hS,EAAM,GAAM,EACnE,IAAIkyH,EAAMsH,EAAO57H,EAAS,GAAGpC,EAAGg+H,EAAO57H,EAAS,GAAGrD,GAEnD,IAAI23H,EAAMsH,EAAO57H,EAAS,GAAGpC,EAAGg+H,EAAO57H,EAAS,GAAGrD,GAGrE,CAACi/H,EAAO,GAAIA,EAAO,GAC9B,EAEAwoK,iBAAkB,SAAS91R,EAAOnK,EAAKkgS,GAQnC,OANmB,OAAfA,IAAwBA,IAAevgR,GAASugR,IAAezgR,IAGlD/nB,KAAKoU,IAAI3B,EAAM1Q,EAAIuG,EAAIvG,GAAK/B,KAAKoU,IAAI3B,EAAM3R,EAAIwH,EAAIxH,EAIxE,IAKA2nS,GAAclkS,EAAM7E,OAAO,CAC3BoF,KAAM,SAAS0vL,EAAS1wL,GACpB,IAAIc,EAAOjI,KACXiI,EAAK4vL,QAAUA,EACf5vL,EAAKd,QAAUqB,EAAW,CAAC,EAAGP,EAAKd,QAASA,GAC5Cc,EAAKg5I,OAAS,IAAIxQ,EAClBxoI,EAAK4vL,QAAQk0G,UAAUpqS,KAAKsG,EAChC,EACA0W,QAAS,WAET,IAGAqtR,GAAwBF,GAAY/oS,OAAO,CAC3CoF,KAAM,SAAS0nR,EAAY1oR,GACvB,IAAiB0wL,EAAb5vL,EAAOjI,KACXiI,EAAK4nR,WAAaA,EAClBh4F,EAAU5vL,EAAK4nR,WAAWh4F,QAC1B5vL,EAAKgkS,IAAMp0G,EAAQotG,YACnB6G,GAAY/jS,GAAGI,KAAKoC,KAAKtC,EAAM4vL,EAAS1wL,GACxC,IAAI+kS,EAAKjkS,EAAK4nR,WAAW2a,cACrB2B,EAAKlkS,EAAK4nR,WAAW4a,cACzBxiS,EAAKmkS,SAAW,IAAIjsK,EAAO33H,EAAWP,EAAKd,QAAQmwL,QAAS,CAAE/4G,OAAQ2tN,KACtEjkS,EAAKokS,SAAW,IAAIlsK,EAAO33H,EAAWP,EAAKd,QAAQmwL,QAAS,CAAE/4G,OAAQ4tN,KACtElkS,EAAKg5I,OAAO9mG,OAAOlyC,EAAKmkS,UACxBnkS,EAAKg5I,OAAO9mG,OAAOlyC,EAAKokS,SAC5B,EAEAllS,QAAS,CACLmwL,QAAS,CAAC,GAGdjyC,WAAY,WACR,OAAO86I,EAAQzlQ,IACnB,EAEA5kB,MAAO,SAAS+8G,GAKZ,OAJA7yH,KAAKm7B,OAASn7B,KAAKimS,SAASpzK,GAC5B7yH,KAAKokI,WAAavR,EAClB7yH,KAAKssS,eAAiBtsS,KAAK6vR,WAAWhiR,SACtC7N,KAAKusS,eAAiBvsS,KAAK6vR,WAAWxoR,SAC9BrH,KAAKm7B,QACT,KAAM,EACEn7B,KAAK6vR,WAAWmT,iBAChBhjS,KAAKisS,IAAIlF,wBAAwB/mS,KAAK6vR,WAAY7vR,KAAK6vR,WAAWmT,gBAAgBlgJ,OAEtF,MACJ,KAAK,EACG9iJ,KAAK6vR,WAAWuX,iBAChBpnS,KAAKisS,IAAIlF,wBAAwB/mS,KAAK6vR,WAAY7vR,KAAK6vR,WAAWuX,gBAAgBtkJ,OAIlG,EAEApoH,KAAM,SAASS,EAAQ03F,GACnB,OAAQ13F,GACJ,KAAM,EACFn7B,KAAK6vR,WAAWhiR,OAAOglH,GACvB,MACJ,KAAK,EACD7yH,KAAK6vR,WAAWxoR,OAAOwrH,GACvB,MACJ,QACI,IAAI9tF,EAAQ8tF,EAAEw2J,MAAMrpR,KAAKokI,YACzBpkI,KAAKokI,WAAavR,EACb7yH,KAAK6vR,WAAWuX,iBACjBpnS,KAAK6vR,WAAWhiR,OAAO7N,KAAK6vR,WAAW2a,cAAcphB,KAAKrkP,IAEzD/kC,KAAK6vR,WAAWmT,iBACjBhjS,KAAK6vR,WAAWxoR,OAAOrH,KAAK6vR,WAAW4a,cAAcrhB,KAAKrkP,IAKtE,OADA/kC,KAAK2e,WACE,CACX,EAEA6J,KAAM,SAASqqG,GACX,IAA0DxrH,EAAtDuyQ,EAAK55Q,KAAK63L,QAAQotG,YAAa91P,EAAOyqO,EAAG8rB,YAiB7C,OAfIr+R,EADAuyQ,EAAGgsB,kBACMhsB,EAAGgsB,kBAAkBgB,GACvBz3P,GAAQA,aAAgB0oJ,EAAQwvG,MAC9Bl4P,EAAKm4P,aAAa/1P,IAASpC,EAAKm4P,aAAaz0K,GAE7CA,GAGQ,IAAjB7yH,KAAKm7B,OACLn7B,KAAK6vR,WAAWhiR,OAAOxG,GACA,IAAhBrH,KAAKm7B,QACZn7B,KAAK6vR,WAAWxoR,OAAOA,GAG3BrH,KAAKm7B,OAASv4B,EACd5C,KAAKisS,IAAIlF,0BACF,IAAInE,EAAuB5iS,KAAK6vR,WAAY7vR,KAAKssS,eAAgBtsS,KAAKusS,eACjF,EAEAtG,SAAU,SAAS9pK,GACf,IAAIquK,EAAcxqS,KAAK6vR,WAAW2a,cAC9BC,EAAczqS,KAAK6vR,WAAW4a,cAC9BpoK,EAAUriI,KAAKmH,QAAQmwL,QAAQvrL,MAAQ,EAAI60R,EAC3Ct+J,EAAUtiI,KAAKmH,QAAQmwL,QAAQtrL,OAAS,EAAI40R,EAC5C4L,EAAsBhC,EAAYluK,WAAWH,GAC7CswK,EAAsBhC,EAAYnuK,WAAWH,GAC7CuwK,EAAe,IAAIzvK,EAAKutK,EAAYplS,EAAGolS,EAAYrmS,GAAG8lR,QAAQ5nJ,EAASC,GAAS/sG,SAAS4mG,GACzFwwK,EAAe,IAAI1vK,EAAKwtK,EAAYrlS,EAAGqlS,EAAYtmS,GAAG8lR,QAAQ5nJ,EAASC,GAAS/sG,SAAS4mG,GACzFhhG,EAAS,EAQb,OANIuxQ,KAAkBC,GAAgBH,EAAsBC,GACxDtxQ,GAAU,EACHwxQ,KAAkBD,GAAgBD,EAAsBD,KAC/DrxQ,EAAS,GAGNA,CACX,EAEAxc,QAAS,WACL3e,KAAKosS,SAAS3uF,OAAO,CAAEl/H,OAAQv+E,KAAK63L,QAAQ+0G,aAAa5sS,KAAK6vR,WAAW2a,iBACzExqS,KAAKqsS,SAAS5uF,OAAO,CAAEl/H,OAAQv+E,KAAK63L,QAAQ+0G,aAAa5sS,KAAK6vR,WAAW4a,gBAC7E,IAGAoC,GAAoBf,GAAY/oS,OAAO,CACvCoF,KAAM,SAAS0vL,EAAS1wL,GACpB,IAAIc,EAAOjI,KACX8rS,GAAY/jS,GAAGI,KAAKoC,KAAKtC,EAAM4vL,EAAS1wL,GACxCc,EAAK6kS,gBAAkB,SAASnoS,GACxBA,EAAEwqC,MAAQlnC,EAAK66I,OACf76I,EAAK0W,SAEb,CACJ,EAEAlR,KAAM,SAASq1I,GACX,IAAiB/xH,EAAKxpB,EAAGwlS,EAArB9kS,EAAOjI,KAOX,IANAiI,EAAKwmQ,UAAW,EAChBxmQ,EAAK66I,MAAQA,EACb76I,EAAK4vL,QAAQruL,KAAKq3R,EAAkB54R,EAAK6kS,iBACzC/7Q,EAAM+xH,EAAM41C,WAAWlxL,OACvBS,EAAKywL,WAAa,GAClBzwL,EAAK+kS,eACAzlS,EAAI,EAAGA,EAAIwpB,EAAKxpB,IACjBwlS,EAAM,IAAIE,GAAgBnqJ,EAAM41C,WAAWnxL,IAC3CU,EAAKywL,WAAW/2L,KAAKorS,GACrB9kS,EAAKg5I,OAAO9mG,OAAO4yP,EAAI9rJ,QAE3Bh5I,EAAKg5I,OAAOj0I,SAAQ,GACpB/E,EAAK0W,SACT,EAEAquR,aAAc,WACV,IAAI/kS,EAAOjI,KACPiI,EAAK4vL,QAAQqvG,mBACbj/R,EAAKilS,yBAELjlS,EAAKg5I,OAAOzqF,OAEpB,EAEA02O,uBAAwB,WAKpB,IAJA,IAAIjlS,EAAOjI,KACPmtS,EAAiBllS,EAAKg5I,OAAO1rG,SAC7Bk1H,EAAgB0iI,EAAe3lS,OAC/B8R,EAAQmc,EAAQxtB,EAAK4vL,QAAQqvG,mBAAoBiG,GAC5C5lS,EAAIkjK,EAAgB,EAAGljK,GAAK,EAAGA,IAChCA,GAAK+R,GAGTrR,EAAKg5I,OAAO50I,OAAO8gS,EAAe5lS,GAE1C,EAEAvF,QAAS,WACL,IAAIiG,EAAOjI,KACXiI,EAAK4vL,QAAQ5tL,OAAO42R,EAAkB54R,EAAK6kS,iBAC3C7kS,EAAK66I,MAAQlgJ,EACbqF,EAAKwmQ,SAAW7rQ,EAChBqF,EAAKg5I,OAAOj0I,SAAQ,EACxB,EAEAi5R,SAAU,SAASpzK,GACf,IAAIk6K,EAAKxlS,EACT,IAAKA,EAAI,EAAGA,EAAIvH,KAAK04L,WAAWlxL,OAAQD,IAEpC,IADAwlS,EAAM/sS,KAAK04L,WAAWnxL,IACd0+R,SAASpzK,GAAI,CACjBk6K,EAAIxR,QAAO,GACXv7R,KAAK63L,QAAQotG,YAAYW,kBAAoBmH,EAC7C,KACJ,CAER,EAEApuR,QAAS,WACL,GAAI3e,KAAK8iJ,MAAO,CACZ,IAAImiI,EAASjlR,KAAK8iJ,MAAMmiI,SACpBA,EAASjlR,KAAK63L,QAAQ+0G,aAAa3nB,GACvCjlR,KAAKihJ,OAAO3zI,SAAS23Q,EAAO1nJ,WAC5B56H,EAAEK,KAAKhD,KAAK04L,YAAY,WACpB14L,KAAK2e,SACT,GACJ,CACJ,IA2BJ,IAAIyuR,GAAkBtB,GAAY/oS,OAAO,CACrCoF,KAAM,SAAS0vL,EAAS1wL,GACpB,IAAIc,EAAOjI,KACX8rS,GAAY/jS,GAAGI,KAAKoC,KAAKtC,EAAM4vL,EAAS1wL,GACxCc,EAAKolS,eAAgB,EACrBplS,EAAK4S,IAAM,GACX5S,EAAK46I,OAAS,GAEd56I,EAAKqlS,iBACLrlS,EAAKslS,iBACLtlS,EAAKw1M,SACLx1M,EAAK4vL,QAAQruL,KAAK,UAAU,SAAS7E,GACjCsD,EAAKm8R,YAAYz/R,EAAE+tE,SACvB,IAEAzqE,EAAK6kS,gBAAkB,WACd7kS,EAAKulS,kBACNvlS,EAAKq7R,gBACLr7R,EAAK0W,UAEb,EAEA1W,EAAKwlS,gBAAkB,WACO,GAAtBxlS,EAAK46I,OAAOr7I,SACZS,EAAKi8R,OAASj8R,EAAK46I,OAAO,GAAG1xG,SAASipF,OAE1CnyH,EAAK6kS,iBACT,EAEA7kS,EAAK4vL,QAAQruL,KAAKq3R,EAAkB54R,EAAK6kS,iBAAiBtjS,KAlqDjD,aAkqDkEvB,EAAKwlS,iBAChFxlS,EAAKq7R,gBACLr7R,EAAK0W,SACT,EAEAxX,QAAS,CACLmwL,QAAS,CACL5jK,KAAM,CACFu9F,MAAO,QAEX2O,OAAQ,CACJ3O,MAAO,WAEXjlH,OAAQ,EACRD,MAAO,EACPsrL,MAAO,CACH3jK,KAAM,CACFu9F,MAAO,WAEX2O,OAAQ,CACJ3O,MAAO,aAInBsmE,WAAY,CACR33D,OAAQ,CACJ3O,MAAO,UACPllH,MAAO,EACP8yI,SAAU,QAEdnrH,KAAM,CACFu9F,MAAO0gE,IAGf7zK,OAAQ,IAGZwvR,eAAgB,WACZ,IAAIrlS,EAAOjI,KAEPu3L,EADUtvL,EAAK4vL,QACM1wL,QAAQowL,WAC7BpwL,EAAUqB,EAAW,CAAC,EAAGP,EAAKd,QAAQowL,WAAYA,GACtDtvL,EAAKqkF,KAAO,IAAIqwM,EAAUx1R,GAC1Bc,EAAKg5I,OAAO9mG,OAAOlyC,EAAKqkF,KAC5B,EAEAohN,WAAY,WACR,OAAO1tS,KAAKmH,QAAQynD,WAA6C,IAAjC5uD,KAAKmH,QAAQynD,SAASzkC,MAC1D,EAEAwjR,eAAgB,WACZ,OAAQ3tS,KAAKmH,QAAQynD,SAASzkC,QAAU,CAAC,GAAGmtK,SAAWt3L,KAAKmH,QAAQmwL,OACxE,EAEAi2G,eAAgB,WACZ,IAAIj2G,EAASnoJ,EAAMhrC,EAAGiB,EAEtB,GAAIpF,KAAK0tS,aAEL,IADAp2G,EAAUt3L,KAAK2tS,iBACVvoS,GAAK,EAAGA,GAAK,EAAGA,IACjB,IAAKjB,GAAK,EAAGA,GAAK,EAAGA,IACN,IAANiB,GAAmB,IAANjB,KACdgrC,EAAO,IAAIwtP,EAAUrlG,IAChBm3C,eAAe8sD,OAASv7R,KAAKu7R,OAAO/xR,KAAKxJ,MAC9CA,KAAK6a,IAAIlZ,KAAK,CAAEyD,EAAGA,EAAGjB,EAAGA,EAAG88I,OAAQ9xG,IACpCnvC,KAAKihJ,OAAO9mG,OAAOhL,GAKvC,EAEA81O,OAAQ,SAASv8Q,GACb,IAAIA,EAIA,OAAO1I,KAAK4tS,QAHZ5tS,KAAKmkS,aAAez7R,EAAMtB,QAC1BpH,KAAK4tS,QAAU5tS,KAAK63L,QAAQ+0G,aAAalkS,GAAOuhR,QAAQjqR,KAAKmH,QAAQ2W,OAAQ9d,KAAKmH,QAAQ2W,OAIlG,EAEAmoR,SAAU,SAASpzK,GACf,IACItrH,EAAG2hS,EAAK2E,EAA8C1yQ,EADtDgxQ,EAAKnsS,KAAK63L,QAAQ+0G,aAAa/5K,GACTi7K,EAAe9tS,KAAK6a,IAAIrT,OAMlD,GAJIxH,KAAKkkS,SACLiI,EAAKA,EAAG/kS,QAAQ+pC,OAAOnxC,KAAK4tS,QAAQrvN,SAAUv+E,KAAKkkS,SAGnDlkS,KAAK0tS,aACL,IAAKnmS,EAAI,EAAGA,EAAIumS,EAAcvmS,IAK1B,GAJA4zB,EAASn7B,KAAK6a,IAAItT,GAClB2hS,EAAM,IAAIptK,EAAM3gG,EAAO/1B,EAAG+1B,EAAOh3B,IACjC0pS,EAAe7tS,KAAK+tS,iBAAiB7E,IACxBprR,OAAO9d,KAAK4tS,QAAQxoS,EAAGpF,KAAK4tS,QAAQzpS,GAC7C0pS,EAAat4Q,SAAS42Q,GACtB,OAAOjD,EAKnB,GAAIlpS,KAAK4tS,QAAQr4Q,SAAS42Q,GACtB,OAAO,IAAIrwK,EAAM,EAAG,EAE5B,EAEAiyK,iBAAkB,SAASl7K,GACvB,GAAI7yH,KAAK0tS,aAAc,CACnB,IAAIp2G,EAAUt3L,KAAK2tS,iBACf3zC,EAAI1iE,EAAQvrL,MACZnH,EAAI0yL,EAAQtrL,OACZkmH,EAAI,IAAI+K,EAAK,EAAG,EAAG+8H,EAAGp1P,GAgB1B,OAdIiuH,EAAEztH,EAAI,EACN8sH,EAAE9sH,GAAM40P,EAAI,EACG,IAARnnI,EAAEztH,EACT8sH,EAAE9sH,EAAI/B,KAAKyN,MAAM9Q,KAAK4tS,QAAQ7hS,MAAQ,GAAKiuP,EAAI,EACxCnnI,EAAEztH,EAAI,IACb8sH,EAAE9sH,EAAIpF,KAAK4tS,QAAQ7hS,MAAQ,EAAMiuP,EAAI,GACnCnnI,EAAE1uH,EAAI,EACR+tH,EAAE/tH,GAAMS,EAAI,EACG,IAARiuH,EAAE1uH,EACT+tH,EAAE/tH,EAAId,KAAKyN,MAAM9Q,KAAK4tS,QAAQ5hS,OAAS,GAAKpH,EAAI,EACzCiuH,EAAE1uH,EAAI,IACb+tH,EAAE/tH,EAAInE,KAAK4tS,QAAQ5hS,OAAS,EAAMpH,EAAI,GAGnCstH,CACX,CACJ,EAEAmzB,WAAY,SAASlpB,GACjB,IAAI+sK,EAAMlpS,KAAKimS,SAAS9pK,GACxB,GAAI+sK,GAAQA,EAAI9jS,IAAM,GAAO8jS,EAAI9jS,GAAK,GAAO8jS,EAAI/kS,IAAM,GAAO+kS,EAAI/kS,GAAK,GAAMnE,KAAK0tS,aAAc,CAC5F,IAAItzK,EAAQp6H,KAAKkkS,OAOjB,GANI9pK,IACAA,EAAQ,IAAMA,EACd8uK,EAAI/3P,OAAO,IAAI2qF,EAAM,EAAG,GAAI1B,GAC5B8uK,EAAM,IAAIptK,EAAMz4H,KAAKiT,MAAM4yR,EAAI9jS,GAAI/B,KAAKiT,MAAM4yR,EAAI/kS,MAGxC,GAAV+kS,EAAI9jS,IAAqB,GAAV8jS,EAAI/kS,EACnB,MAAO,YAEX,GAAa,GAAT+kS,EAAI9jS,GAAmB,GAAT8jS,EAAI/kS,EAClB,MAAO,YAEX,IAAc,GAAV+kS,EAAI9jS,GAAoB,GAAT8jS,EAAI/kS,EACnB,MAAO,YAEX,GAAa,GAAT+kS,EAAI9jS,IAAoB,GAAV8jS,EAAI/kS,EAClB,MAAO,YAEX,GAAc,IAAV+kS,EAAI9jS,IAAqB,GAAV8jS,EAAI/kS,EACnB,MAAO,WAEX,GAAc,IAAV+kS,EAAI9jS,GAAoB,GAAT8jS,EAAI/kS,EACnB,MAAO,WAEX,GAAa,GAAT+kS,EAAI9jS,GAAoB,IAAV8jS,EAAI/kS,EAClB,MAAO,WAEX,IAAc,GAAV+kS,EAAI9jS,GAAqB,IAAV8jS,EAAI/kS,EACnB,MAAO,UAEf,CACA,OAAOnE,KAAKqtS,cAAgBlN,EAAQzlQ,KAAOylQ,EAAQ55P,MACvD,EAEA69P,YAAa,WACT,IAAiB78R,EAAG4nC,EAAhBlnC,EAAOjI,KACPksD,EAAQjkD,EAAK4vL,QAAQtxJ,SAGzB,IADAt+B,EAAK46I,OAAS,GACTt7I,EAAI,EAAGA,EAAI2kD,EAAM1kD,OAAQD,KAC1B4nC,EAAO+c,EAAM3kD,cACOswL,EAAQwvG,QACxBp/R,EAAK46I,OAAOlhJ,KAAKwtC,GACjBA,EAAK6+P,gBAAkB,IAAIlyK,GAInC7zH,EAAKi8R,OAA+B,GAAtBj8R,EAAK46I,OAAOr7I,OAAcS,EAAK46I,OAAO,GAAG1xG,SAASipF,MAAQ,EACxEnyH,EAAKgmS,YAAchmS,EAAKi8R,OACxBj8R,EAAKimS,WACLjmS,EAAKkmS,aACLlmS,EAAKq7R,gBACLr7R,EAAK0W,UACL1W,EAAKw1M,QACT,EAEAywF,SAAU,WACN,IAAiB3mS,EAAGu7I,EAAhB76I,EAAOjI,KAEX,IADAiI,EAAKmmS,eAAiB,GACjB7mS,EAAI,EAAGA,EAAIU,EAAK46I,OAAOr7I,OAAQD,IAChCu7I,EAAQ76I,EAAK46I,OAAOt7I,GACpBU,EAAKmmS,eAAezsS,KAAKmhJ,EAAM3xG,SAASipF,MAEhD,EAEA+zK,WAAY,WACR,IAAiB5mS,EAAGu7I,EAAhB76I,EAAOjI,KAEX,IADAiI,EAAKomS,cAAgB,GAChB9mS,EAAI,EAAGA,EAAIU,EAAK46I,OAAOr7I,OAAQD,IAChCu7I,EAAQ76I,EAAK46I,OAAOt7I,GACpBU,EAAKomS,cAAc1sS,KAAKmhJ,EAAMmiI,SAEtC,EAEAsW,OAAQ,SAAS7yR,EAAOmD,GACpB,GAAI7L,KAAK0tS,aAAc,CACnB,IAAIY,EAAgBtuS,KAAK2tS,iBACrBt2G,EAAQi3G,EAAcj3G,MACtBz3D,EAAS0uK,EAAc1uK,OACvBlsG,EAAO46Q,EAAc56Q,KAErBhrB,GAAS49Q,EAAME,UAAUnvF,EAAMz3D,UAC/BA,EAASp3H,EAAW,CAAC,EAAGo3H,EAAQy3D,EAAMz3D,SAGtCl3H,GAAS49Q,EAAME,UAAUnvF,EAAM3jK,QAC/BA,EAAO2jK,EAAM3jK,MAEjB7nB,EAAQ+zH,OAAOA,EAAO3O,MAAO2O,EAAO7zH,MAAO6zH,EAAO7oG,SAClDlrB,EAAQ6nB,KAAKA,EAAKu9F,MAAOv9F,EAAKqD,QAClC,CACJ,EAEAjhB,MAAO,SAAS+8G,GACZ7yH,KAAKuuS,IAAM17K,EACX7yH,KAAKwuS,IAAM37K,EACX7yH,KAAKyuS,IAAM57K,EACX7yH,KAAKqtS,eAAgB,EACrBrtS,KAAKwtS,iBAAkB,EACvBxtS,KAAK0uS,YAAc,GACnB,IAAK,IAAInnS,EAAI,EAAGA,EAAIvH,KAAK6iJ,OAAOr7I,OAAQD,IAAK,CACzC,IAAIu7I,EAAQ9iJ,KAAK6iJ,OAAOt7I,GACxBvH,KAAK0uS,YAAY/sS,KAAKmhJ,EAAMmiI,SAChC,CACJ,EAEAxnE,OAAQ,WACJ,IAAIl2M,EACAonS,EAAiB3uS,KAAK0tS,aAE1B,IAAKnmS,EAAI,EAAGA,EAAIvH,KAAK6a,IAAIrT,OAAQD,IACpBvH,KAAK6a,IAAItT,GACX05I,OAAOj0I,QAAQ2hS,EAE9B,EAEAv0K,MAAO,SAAS1xH,GAKZ,OAJIouH,EAAQpuH,KACR1I,KAAKkkS,OAASx7R,GAGX1I,KAAKkkS,MAChB,EAEA/yP,OAAQ,WACJ,IAAIotC,EAASv+E,KAAKmkS,aAAa5lN,SAC3B2kD,EAAeljI,KAAKo6H,QACxBp6H,KAAKwtS,iBAAkB,EACvB,IAAK,IAAIjmS,EAAI,EAAGA,EAAIvH,KAAK6iJ,OAAOr7I,OAAQD,IAAK,CACzC,IAAIu7I,EAAQ9iJ,KAAK6iJ,OAAOt7I,GACxB27H,GAAgBA,EAAeljI,KAAKouS,eAAe7mS,GAAKvH,KAAKiuS,aAAe,IAC5EnrJ,EAAM3xG,OAAO+xF,EAAc3kD,EAC/B,CACAv+E,KAAK2e,SACT,EAEA+b,KAAM,SAASS,EAAQ03F,GACnB,IAAI9tF,EAAO6pQ,EAGP3pB,EAAQ1mM,EAAQukE,EAChBv7I,EAAG6yH,EAAOy0K,EACGC,EACbv0K,EAAQC,EALRu0K,EAAM,IAAIjzK,EACVkzK,EAAM,IAAIlzK,EAGVmzK,EAAU,EAGd,IAAkB,IAAd9zQ,EAAOh3B,IAA0B,IAAdg3B,EAAO/1B,EAAU,CAGpC,IAFAm5E,EAASv+E,KAAKmkS,aAAa5lN,SAC3Bv+E,KAAKkkS,OAASlkS,KAAKkvS,eAAe5oB,EAAMe,UAAU9oM,EAAQs0C,IACrDtrH,EAAI,EAAGA,EAAIvH,KAAK6iJ,OAAOr7I,OAAQD,IAChCu7I,EAAQ9iJ,KAAK6iJ,OAAOt7I,GACpB6yH,GAASp6H,KAAKkkS,OAASlkS,KAAKouS,eAAe7mS,GAAKvH,KAAKiuS,aAAe,IACpEnrJ,EAAM3xG,OAAOipF,EAAO77C,GAChBukE,EAAM7zI,eAAe,WACrB6zI,EAAMyxE,OAAOzxE,GAEjB9iJ,KAAKmvS,WAAY,EAErBnvS,KAAK2e,SACT,KAAO,CACH,GAAI3e,KAAKovS,aAAc,CACnB,IAAIC,EAAMrvS,KAAKsvS,kBAAkBz8K,EAAEw2J,MAAMrpR,KAAKyuS,MAE9C,GAAc,IAAVY,EAAIjqS,GAAqB,IAAViqS,EAAIlrS,EAEnB,YADAnE,KAAKwuS,IAAM37K,GAGf9tF,EAAQsqQ,EACRrvS,KAAKyuS,IAAM,IAAI3yK,EAAM97H,KAAKyuS,IAAIrpS,EAAIiqS,EAAIjqS,EAAGpF,KAAKyuS,IAAItqS,EAAIkrS,EAAIlrS,EAC9D,MACI4gC,EAAQ8tF,EAAEw2J,MAAMrpR,KAAKwuS,KA4BzB,IAzBIxuS,KAAKmmS,aAAahrQ,IAClB6zQ,EAAMD,EAAMhqQ,EACZ6pQ,GAAW,IAEP5uS,KAAKkkS,QACLn/P,EAAMoM,OAAO,IAAI2qF,EAAM,EAAG,GAAI97H,KAAKkkS,SAEtB,GAAb/oQ,EAAO/1B,EACP2pS,EAAI3pS,EAAI2/B,EAAM3/B,EACK,GAAZ+1B,EAAO/1B,IACd4pS,EAAI5pS,EAAI2/B,EAAM3/B,IAED,GAAb+1B,EAAOh3B,EACP4qS,EAAI5qS,EAAI4gC,EAAM5gC,EACK,GAAZg3B,EAAOh3B,IACd6qS,EAAI7qS,EAAI4gC,EAAM5gC,IAIjByqS,IACDE,EA5XhB,SAA2B5F,EAAKjkB,GAC5B,IAAInuQ,EAoBJ,OAlBc,GAAVoyR,EAAI9jS,IAAqB,GAAV8jS,EAAI/kS,EACnB2S,EAASmuQ,EAAOznJ,cACA,GAAT0rK,EAAI9jS,GAAmB,GAAT8jS,EAAI/kS,EACzB2S,EAASmuQ,EAAO1nJ,WACC,GAAV2rK,EAAI9jS,GAAoB,GAAT8jS,EAAI/kS,EAC1B2S,EAASmuQ,EAAOxnJ,WACA,GAATyrK,EAAI9jS,IAAoB,GAAV8jS,EAAI/kS,EACzB2S,EAASmuQ,EAAOvnJ,aACC,IAAVwrK,EAAI9jS,IAAqB,GAAV8jS,EAAI/kS,EAC1B2S,EAASmuQ,EAAOv4P,SACC,IAAVw8Q,EAAI9jS,GAAoB,GAAT8jS,EAAI/kS,EAC1B2S,EAASmuQ,EAAO//P,MACA,GAATgkR,EAAI9jS,GAAoB,IAAV8jS,EAAI/kS,EACzB2S,EAASmuQ,EAAOz4P,QACC,GAAV08Q,EAAI9jS,GAAqB,IAAV8jS,EAAI/kS,IAC1B2S,EAASmuQ,EAAOx4P,SAGb3V,CACX,CAsW8By4R,CAAkBp0Q,EAAQn7B,KAAKmkS,cAC7C5pK,GAAUv6H,KAAKmkS,aAAap4R,MAAQg5B,EAAM3/B,EAAI+1B,EAAO/1B,GAAKpF,KAAKmkS,aAAap4R,MAC5EyuH,GAAUx6H,KAAKmkS,aAAan4R,OAAS+4B,EAAM5gC,EAAIg3B,EAAOh3B,GAAKnE,KAAKmkS,aAAan4R,QAG5EzE,EAAI,EAAGA,EAAIvH,KAAK6iJ,OAAOr7I,OAAQD,IAAK,CAGrC,GADA09Q,GADAniI,EAAQ9iJ,KAAK6iJ,OAAOt7I,IACL09Q,SACX2pB,EAAU,CACV,IAAK/H,GAAQ/jJ,GACT,SAEJ+rJ,EAAY7uS,KAAKwvS,gBAAgBvqB,EAAQ8pB,EAAKC,EAAKJ,EACvD,KAAO,EACHC,EAAY5pB,EAAO79Q,SACT2oC,MAAMwqF,EAAQC,EAAQs0K,EAAa9uS,KAAKmkS,aAAa5lN,SAAUukE,EAAM3xG,SAASipF,OACxF,IAAIq1K,EAAYZ,EAAUtwN,SAC1BkxN,EAAUt+P,OAAO8zO,EAAO1mM,UAAWv+E,KAAKkkS,QACxC2K,EAAY,IAAI5xK,EAAKwyK,EAAUrqS,EAAIypS,EAAU9iS,MAAQ,EAAG0jS,EAAUtrS,EAAI0qS,EAAU7iS,OAAS,EAAG6iS,EAAU9iS,MAAO8iS,EAAU7iS,OAC3H,CACA,GAAI6iS,EAAU9iS,OAAS+2I,EAAM37I,QAAQo1N,UAAYsyE,EAAU7iS,QAAU82I,EAAM37I,QAAQsyP,UAAW,CAC1F,IAAIi2C,EAAYzqB,EAChBniI,EAAMmiI,OAAO4pB,GACT/rJ,EAAM7zI,eAAe,WACrB6zI,EAAMyxE,OAAOzxE,EAAO4sJ,EAAWb,GAE/Ba,EAAU3jS,QAAU8iS,EAAU9iS,OAAS2jS,EAAU1jS,SAAW6iS,EAAU7iS,QACtE82I,EAAM3xG,OAAO2xG,EAAM3xG,SAASipF,OAEhC60K,GAAW,CACf,CACJ,CAEIA,IACIA,GAAW1nS,GACXsnS,EAAY7uS,KAAKwvS,gBAAgBxvS,KAAKmkS,aAAc4K,EAAKC,EAAKJ,GAC9D5uS,KAAKilR,OAAO4pB,IAEZ7uS,KAAKsjS,gBAETtjS,KAAK2e,WAGT3e,KAAKmuS,YACT,CAEAnuS,KAAKwuS,IAAM37K,CACf,EAEAszK,aAAc,SAAShrQ,GACnB,OAAoB,IAAbA,EAAO/1B,GAAwB,IAAb+1B,EAAOh3B,CACpC,EAEAw2B,OAAQ,WAGJ,IAFA,IAAIkoH,EAAS7iJ,KAAK6iJ,OACds5G,EAASn8P,KAAK0uS,YACT9kS,EAAM,EAAGA,EAAMi5I,EAAOr7I,OAAQoC,IACnCi5I,EAAOj5I,GAAKq7Q,OAAO9oB,EAAOvyP,IAE9B5J,KAAKsjS,gBACLtjS,KAAK2e,UACL3e,KAAKqtS,cAAgBzqS,EACrB5C,KAAKwtS,gBAAkB5qS,EACvB5C,KAAKmvS,UAAYvsS,CACrB,EAEA+sS,0BAA2B,SAAS1qB,GAChC,OAAIjlR,KAAK63L,QAAQ+3G,MACN5vS,KAAK63L,QAAQ+3G,MAAMC,yBAAyB5qB,GAEhDA,CACX,EAEA6qB,sBAAuB,SAAS7qB,GAC5B,OAAIjlR,KAAK63L,QAAQ+3G,MACN5vS,KAAK63L,QAAQ+3G,MAAMG,qBAAqB9qB,GAE5CA,CACX,EAEAiqB,eAAgB,SAAShqS,GACrB,IAAI8qS,EAAOhwS,KAAKiwS,cACZC,EAAY7sS,KAAK8V,IAAI62R,EAAK51K,OA/jEb,GAOJ,GAyjEb,OAAO41K,EAAO3sS,KAAKyN,MAAO5L,EAAI,IAAOgrS,GAAaA,EAAahrS,EAAI,GACvE,EAEAoqS,kBAAmB,SAAS9qS,GACxB,GAAIA,aAAaqzL,EAAQ/7D,MACrB,OAAO,IAAI+7D,EAAQ/7D,MAAM97H,KAAKsvS,kBAAkB9qS,EAAEY,GAAIpF,KAAKsvS,kBAAkB9qS,EAAEL,IAE/E,IAAI6rS,EAAOhwS,KAAKiwS,eAAiB,CAAC,EAC9BE,EAAW9sS,KAAK8V,IAAI62R,EAAKhgS,MAzkEjB,GAOJ,GAmkER,OAAOggS,EAAO3sS,KAAKyN,MAAMtM,EAAI2rS,GAAYA,EAAW3rS,CAE5D,EAEAyrS,YAAa,WAGT,QAFejwS,KAAK63L,QAAQ1wL,QAAQynD,UACX,CAAC,GAAGg8K,MAAQ,CAAC,GAAGolE,MAAQ,CAAC,CAEtD,EAEAZ,WAAY,WACR,IAAIxgP,EAAW5uD,KAAK63L,QAAQ1wL,QAAQynD,SAChCg8K,GAAQh8K,GAAY,CAAC,GAAGg8K,KACxBolE,GAAQplE,GAAQ,CAAC,GAAGolE,KACxB,OAAoB,IAAbphP,IAA+B,IAATg8K,IAA2B,IAATolE,CACnD,EAEAR,gBAAiB,SAASvqB,EAAQ8pB,EAAKC,EAAKJ,GACxC,IAGIa,EAHA7xK,EAAKqnJ,EAAO1nJ,UAAU6rJ,KAAK2lB,GAC3BjxK,EAAKmnJ,EAAOznJ,cAAc4rJ,KAAK4lB,GAC/BH,EAAY5xK,EAAKe,WAAWJ,EAAIE,GAOpC,OALK8wK,KACDa,EAAYZ,EAAUtwN,UACZptC,OAAO8zO,EAAO1mM,UAAWv+E,KAAKkkS,QACxC2K,EAAY,IAAI5xK,EAAKwyK,EAAUrqS,EAAIypS,EAAU9iS,MAAQ,EAAG0jS,EAAUtrS,EAAI0qS,EAAU7iS,OAAS,EAAG6iS,EAAU9iS,MAAO8iS,EAAU7iS,SAEpH6iS,CACX,EAEArmR,KAAM,WACF,IAAI2xG,EAAM5yH,EAAGu7I,EACb,GAAI9iJ,KAAKwuS,KAAOxuS,KAAKuuS,IACjB,GAAIvuS,KAAKmvS,UACLh1K,EAAO,IAAI2pK,EAAW9jS,KAAMA,KAAK6iJ,OAAQ7iJ,KAAKouS,gBAC9CpuS,KAAKmvS,WAAY,OACd,GAAInvS,KAAKowS,cAAe,CAC3B,GAAIpwS,KAAK63L,QAAQ+3G,MACb,IAAKroS,EAAI,EAAGA,EAAIvH,KAAK6iJ,OAAOr7I,OAAQD,IAAK,CAErC,IAAI09Q,GADJniI,EAAQ9iJ,KAAK6iJ,OAAOt7I,IACD09Q,SACnBA,EAASjlR,KAAK8vS,sBAAsB9vS,KAAK2vS,0BAA0B1qB,IACnEniI,EAAMmiI,OAAOA,GACbjlR,KAAKsjS,gBACLtjS,KAAK2e,SACT,CAEJ,IAAKpX,EAAI,EAAGA,EAAIvH,KAAK6iJ,OAAOr7I,OAAQD,KAChCu7I,EAAQ9iJ,KAAK6iJ,OAAOt7I,IACdo7R,cAEVxoK,EAAO,IAAI+oK,EAAcljS,KAAK6iJ,OAAQ7iJ,KAAK0uS,YAAa1uS,MACxDA,KAAK63L,QAAQw4G,mBACjB,CAMJ,OAHArwS,KAAKqtS,cAAgBzqS,EACrB5C,KAAKwtS,gBAAkB5qS,EACvB5C,KAAKmvS,UAAYvsS,EACVu3H,CACX,EAEAi2K,YAAa,WAGT,IAFA,IAAIvtJ,EAAS7iJ,KAAK6iJ,OACds5G,EAASn8P,KAAK0uS,YACT9kS,EAAM,EAAGA,EAAMi5I,EAAOr7I,OAAQoC,IACnC,IAAKi5I,EAAOj5I,GAAKq7Q,SAAS9zN,OAAOgrM,EAAOvyP,IACpC,OAAO,EAGf,OAAO,CACX,EAEA05R,cAAe,WACX,IAAIre,EAA+B,GAAtBjlR,KAAK6iJ,OAAOr7I,OACrBxH,KAAK6iJ,OAAO,GAAGoiI,SAAS79Q,QACxBpH,KAAK63L,QAAQ1pD,YAAYnuI,KAAK6iJ,QAAQ,GAE1C7iJ,KAAKilR,OAAOA,EAChB,EAEAtmQ,QAAS,WACL,IAAiB1C,EAAGgpQ,EAAhBh9Q,EAAOjI,KACX,GAAIA,KAAK6iJ,OAAOr7I,OAAS,EAAG,CACxBy9Q,EAASjlR,KAAKilR,SACdjlR,KAAKihJ,OAAOj0I,SAAQ,GACpBhN,KAAKihJ,OAAO3zI,SAAS23Q,EAAO1nJ,WAC5B56H,EAAEK,KAAKhD,KAAK6a,KAAK,WACboB,EAAIhU,EAAK8lS,iBAAiB,IAAIjyK,EAAM97H,KAAKoF,EAAGpF,KAAKmE,IACjDnE,KAAKihJ,OAAO3zI,SAAS2O,EAAEshH,UAC3B,IACAv9H,KAAKihJ,OAAO3zI,SAAS23Q,EAAO1nJ,WAE5B,IAAIh/C,EAAS,IAAIu9C,EAAMmpJ,EAAOl5Q,MAAQ,EAAGk5Q,EAAOj5Q,OAAS,GAGzD,GAFAhM,KAAKihJ,OAAO9vG,OAAOnxC,KAAKkkS,OAAQ3lN,GAChCv+E,KAAKssF,KAAKmxH,OAAO,CAAE1xM,MAAOk5Q,EAAOl5Q,MAAOC,OAAQi5Q,EAAOj5Q,SACnDhM,KAAKswS,cAAe,CACpB,IAAI73G,EAAQz4L,KAAKmH,QAAQynD,SAASzd,OAAOsnJ,MACzCz4L,KAAKuwS,qBAAuB,IAAItzK,EAAKgoJ,EAAO1mM,SAASn5E,EAAG6/Q,EAAO9gR,EAAIs0L,EAAMt0L,EAAG,EAAG,GAAG8lR,QAAQxxF,EAAM1sL,OAChG/L,KAAKswS,cAAc7yF,OAAO,CAAEr4M,EAAG6/Q,EAAOl5Q,MAAQ,EAAI0sL,EAAM1sL,MAAQ,GACpE,CACJ,MACI/L,KAAKihJ,OAAOj0I,SAAQ,EAE5B,IAGAwjS,GAAW5oS,EAAM7E,OAAO,CACxBoF,KAAM,SAAS0vL,GACX,IAAIN,EAAaM,EAAQ1wL,QAAQowL,WACjCv3L,KAAKmH,QAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAASowL,GAE5Cv3L,KAAKihJ,OAAS,IAAI07I,EAAU38R,KAAKmH,SACjCnH,KAAK63L,QAAUA,CACnB,EACA1wL,QAAS,CACLy4H,OAAQ,CACJ3O,MAAO,UACPllH,MAAO,EACP8yI,SAAU,QAEdnrH,KAAM,CACFu9F,MAAO0gE,IAGf77K,MAAO,SAAS+8G,GACZ7yH,KAAKuuS,IAAMvuS,KAAKywS,IAAM59K,EACtB7yH,KAAK2e,UACL3e,KAAK63L,QAAQ64G,OAAO1wS,MAAM,EAC9B,EACA2L,IAAK,WACD3L,KAAKuuS,IAAMvuS,KAAKywS,IAAM7tS,EACtB5C,KAAK63L,QAAQ64G,OAAO1wS,MAAM,EAC9B,EACAilR,OAAQ,SAASv8Q,GAIb,OAHIA,IACA1I,KAAK4tS,QAAUllS,GAEZ1I,KAAK4tS,OAChB,EACAlzQ,KAAM,SAASm4F,GACX7yH,KAAKywS,IAAM59K,EACX7yH,KAAK2e,SACT,EACAA,QAAS,WACL,GAAI3e,KAAKuuS,IAAK,CACV,IAAIoC,EAAe1zK,EAAKe,WAAWh+H,KAAK63L,QAAQ+0G,aAAa5sS,KAAKuuS,KAAMvuS,KAAK63L,QAAQ+0G,aAAa5sS,KAAKywS,MACvGzwS,KAAKilR,OAAOhoJ,EAAKe,WAAWh+H,KAAKuuS,IAAKvuS,KAAKywS,MAC3CzwS,KAAKihJ,OAAO3zI,SAASqjS,EAAapzK,WAClCv9H,KAAKihJ,OAAOw8D,OAAO,CAAEzxM,OAAQ2kS,EAAa3kS,OAAS,EAAGD,MAAO4kS,EAAa5kS,MAAQ,GACtF,CACJ,IAGAkhS,GAAkBrlS,EAAM7E,OAAO,CAC/BoF,KAAM,SAASu+R,GACX1mS,KAAKmH,QAAUqB,EAAW,CAAC,EAAGk+R,EAAUv/R,SACxCnH,KAAK4mS,GAAKF,EACV1mS,KAAKihJ,OAAS,IAAI9gB,EAAOngI,KAAKmH,SAC9BnH,KAAK2e,SACT,EACA48Q,OAAQ,SAAS7yR,GACb,IAAIvB,EAAUnH,KAAKmH,QACfkwL,EAAQlwL,EAAQkwL,MAChBz3D,EAASz4H,EAAQy4H,OACjBlsG,EAAOvsB,EAAQusB,KAEfhrB,GAAS49Q,EAAME,UAAUnvF,EAAMz3D,UAC/BA,EAASp3H,EAAW,CAAC,EAAGo3H,EAAQy3D,EAAMz3D,SAGtCl3H,GAAS49Q,EAAME,UAAUnvF,EAAM3jK,QAC/BA,EAAO2jK,EAAM3jK,MAGjB1zB,KAAKihJ,OAAOw8D,OAAO,CACf79E,OAAQA,EACRlsG,KAAMA,GAEd,EACA/U,QAAS,WACL,IAAIk0G,EAAI7yH,KAAK4mS,GAAG9jJ,MAAM+0C,QAAQ+4G,YAAY5wS,KAAK4mS,GAAGt5R,YAC9C+pN,EAAWxkG,EAAEw2J,MAAMrpR,KAAK4mS,GAAG9jJ,MAAMmiI,OAAO,eAAe1nJ,WACvD70H,EAAQ,IAAIu0H,EAAKpK,EAAEztH,EAAGytH,EAAE1uH,EAAG,EAAG,GAClCuE,EAAMuhR,QAAQjqR,KAAKmH,QAAQ4E,MAAQ,EAAG/L,KAAKmH,QAAQ6E,OAAS,GAC5DhM,KAAK6wS,cAAgBnoS,EACrB1I,KAAKihJ,OAAOw8D,OAAO,CAAEl/H,OAAQ,IAAIu9C,EAAMu7F,EAASjyN,EAAGiyN,EAASlzN,IAChE,EACA8hS,SAAU,SAASpzK,GACf,IAAIs5K,EAAKnsS,KAAK4mS,GAAG9jJ,MAAM+0C,QAAQ+4G,YAAY/9K,GAC3C,OAAO7yH,KAAK6wS,cAAct7Q,SAAS42Q,EACvC,IAGJ,SAAStF,GAAQh7R,GACb,IAAI+iD,EAAW/iD,EAAQ1E,QAAQynD,SAC/B,OAAOA,IAA8B,IAAlBA,EAASg8K,IAChC,CAeA,SAAS66D,GAAOj0R,GACZ,OAAwB,IAAjBA,EAAKi+E,UAAqC,IAAhBj+E,EAAK69M,SAAsC,IAAlB79M,EAAK+1B,QACnE,CAEA/+B,EAAWqvL,EAAS,CAChBoqG,cAAeA,EACfiB,cAAeA,EACfQ,YAAaA,EACbF,aAAcA,EACdD,kBAAmBA,EACnBN,gBAAiBA,EACjBF,qBAAsBA,EACtBiJ,sBAAuBA,GACvBvF,eAAgBA,EAChBwG,gBAAiBA,GACjBxI,gBAAiBA,EACjB2I,gBAAiBA,GACjBoD,SAAUA,GACV3I,YAAaA,GACbgF,kBAAmBA,GACnBtL,eAAgBA,EAChBY,mBAAoBA,EACpBkC,YAAaA,EACbG,WAAYA,EACZoF,qBAAsBA,GACtBI,eAAgBA,GAChBC,gBAAiBA,GACjB3D,cAAeA,EACflB,aAAcA,EACdW,YAAaA,EACb0B,mBAAoBA,EACpB3D,WAAYA,GAEvB,CAx2ED,CAw2EGhjS,OAAOH,MAAM+G,QAEhB,SAAU/E,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfk3L,EAAUl3L,EAAM8pB,QAAQotK,QACxBi5F,EAAQj5F,EAAQi5F,MAChB7lN,EAAO4sH,EAAQ5sH,KACfi4K,EAAOrrD,EAAQqrD,KACf16O,EAAa7H,EAAM6H,WACnBw0H,EAAO66D,EAAQ76D,KACfC,EAAO46D,EAAQ56D,KACfgxJ,EAAap2F,EAAQo2F,WACrB9oH,EAAM0yB,EAAQ1yB,IACd2rI,EAAYj5G,EAAQi5F,MACpBxK,EAAQzuF,EAAQyuF,MAChBxqJ,EAAQ+7D,EAAQ/7D,MAChBqtJ,EAAU,KACVlyJ,EAAa5zH,KAAK6zH,GAAK,IACvB3hG,EAAW+wP,EAAM/wP,SACjB8I,EAAO17B,EAAE07B,KAMT0yQ,EAAapwS,EAAMiH,MAAM7E,OAAO,CAChCivK,eAAgB,CACZtsK,KAAM,OACNsrS,QAAS,OACTpoK,MAAO,KACPlhH,SAAS,EAKTgxQ,aAAa,EAIbtrM,SAAU,GAIV6jN,aAAc,GAIdC,WAAY,IAKZC,qBAAsB,GAItBC,mBAAoB,GAMpBC,4BAA6B,GAI7BC,2BAA4B,GAI5BC,6BAA8B,GAK9B18N,KAAM,CAIF9oE,MAAO,KAIPw7E,QAAS,GAITC,QAAS,GAITgqN,kBAAmB,GAInBC,kBAAmB,IAOvBC,gBAAiB,GAIjBC,kBAAmB,EAInBC,iBAAkB,EAIlBC,eAAgB,IAIhBC,iBAAkB,IAIlBC,2BAA4B,IAI5BC,iCAAiC,EAIjCC,kBAAkB,EAClBC,yBAAyB,EACzBC,iBAAiB,EACjBC,oBAAoB,GAExBjqS,KAAM,WACN,EAOAkqS,qBAAsB,SAASzgB,GAC3B,IAAKA,EACD,KAAM,0BAIVtL,EAAMhlR,QAAQswR,GAAY,SAASltR,GAC/BA,EAAEutR,YACN,IAGAL,EAAW51Q,MAAK,SAAS9W,EAAG+W,GACxB,OAAOA,EAAEgpQ,OAAOl5Q,MAAQ7G,EAAE+/Q,OAAOl5Q,KACrC,IAcA,IAZA,IAQIxE,EARA+qS,EAAWtyS,KAAKmH,QAAQ0tE,KAAK9oE,MAC7Bw7E,EAAUvnF,KAAKmH,QAAQ0tE,KAAK28N,kBAC5BhqN,EAAUxnF,KAAKmH,QAAQ0tE,KAAK48N,kBAC5BzlS,EAAS,EACTumS,EAASvyS,KAAKmH,QAAQ0tE,KAAK0S,QAE3BniF,EAAImtS,EACJpuS,EAFSnE,KAAKmH,QAAQ0tE,KAAK2S,QAI3BgrN,EAAgB,GAChBC,EAAgB,GAEb7gB,EAAWpqR,OAAS,GAAG,CACtBpC,GAAKktS,IAELltS,EAAImtS,EACJpuS,GAAK6H,EAASw7E,EAEdx7E,EAAS,GAEb,IAAIkpR,EAAYtD,EAAW7hQ,MAE3B,IADA/vB,KAAK0yS,aAAaxd,EAAW,IAAIp5J,EAAM12H,EAAGjB,IACrCoD,EAAI,EAAGA,EAAI2tR,EAAU9oO,MAAM5kD,OAAQD,IACpCkrS,EAAc9wS,KAAKuzR,EAAU9oO,MAAM7kD,IAEvC,IAAKA,EAAI,EAAGA,EAAI2tR,EAAUx1C,MAAMl4O,OAAQD,IACpCirS,EAAc7wS,KAAKuzR,EAAUx1C,MAAMn4O,IAEvC,IAAIorS,EAAezd,EAAUjQ,OACzBhkC,EAAgB0xD,EAAa3mS,QAC7Bi1O,GAAiB,GAAKn4O,MAAMm4O,MAC5BA,EAAgB,GAEpB,IAAI2xD,EAAeD,EAAa5mS,OAC5B6mS,GAAgB,GAAK9pS,MAAM8pS,MAC3BA,EAAe,GAGf3xD,GAAiBj1O,IACjBA,EAASi1O,GAEb77O,GAAKwtS,EAAerrN,CACxB,CAEA,MAAO,CACHn7B,MAAOqmP,EACP/yD,MAAO8yD,EAEf,EAEAE,aAAc,SAASxd,EAAWriK,GAC9B,IAAItrH,EAAGwjC,EACHk6O,EAASiQ,EAAUjQ,OACnB4tB,EAAShgL,EAAEztH,EAAI6/Q,EAAO7/Q,EACtB0tS,EAASjgL,EAAE1uH,EAAI8gR,EAAO9gR,EAE1B,IAAKoD,EAAI,EAAGA,EAAI2tR,EAAU9oO,MAAM5kD,OAAQD,IAAK,CACzC,IAAI87B,EAAO6xP,EAAU9oO,MAAM7kD,GACvBwrS,EAAa1vQ,EAAK4hP,SACG,IAArB8tB,EAAWhnS,OAAqC,IAAtBgnS,EAAW/mS,QAAiC,IAAjB+mS,EAAW3tS,GAA4B,IAAjB2tS,EAAW5uS,IACtF4uS,EAAa,IAAI91K,EAAK,EAAG,EAAG,EAAG,IAEnC81K,EAAW3tS,GAAKytS,EAChBE,EAAW5uS,GAAK2uS,EAChBzvQ,EAAK4hP,OAAO8tB,EAChB,CACA,IAAKxrS,EAAI,EAAGA,EAAI2tR,EAAUx1C,MAAMl4O,OAAQD,IAAK,CACzC,IAAI+sO,EAAO4gD,EAAUx1C,MAAMn4O,GAC3B,GAAI+sO,EAAKlxG,OAAQ,CACb,IAAI4vK,EAAY,GACZ5vK,EAASkxG,EAAKlxG,OAClB,IAAKr4F,EAAI,EAAGA,EAAIq4F,EAAO57H,OAAQujC,IAAK,CAChC,IAAIwlH,EAAKntB,EAAOr4F,GAChBwlH,EAAGnrJ,GAAKytS,EACRtiJ,EAAGpsJ,GAAK2uS,EACRE,EAAUrxS,KAAK4uJ,EACnB,CACA+jF,EAAKlxG,OAAS4vK,CAClB,CACJ,CAEA,OADAhzS,KAAKizS,yBAA2BhuB,EAAOl5Q,MAAQ/L,KAAKmH,QAAQ0tE,KAAK0S,QAC1D,IAAIu0C,EAAM+2K,EAAQC,EAC7B,EAEAI,gBAAiB,SAAS/rS,GAItBnH,KAAKmH,QAAUxG,EAAM6H,WAAW,CAAC,EAAGxI,KAAKgyK,gBACrCs0G,EAAMG,YAAYt/Q,KAItBnH,KAAKmH,QAAUxG,EAAM6H,WAAWxI,KAAKmH,QAASA,GAAW,CAAC,GAC9D,IAuBAgsS,EAA4BxyS,EAAMiH,MAAM7E,OAAO,CAC/CoF,KAAM,SAAS0vL,GAMX73L,KAAKk0R,QAAU,IAAIjG,EAMnBjuR,KAAKozS,SAAW,IAAInlB,EAMpBjuR,KAAKosD,MAAQ,GAMbpsD,KAAK43Q,MAAQ,GAIb53Q,KAAKqzS,QAAU,IAAIplB,EAMnBjuR,KAAKszS,WAAa,GAMlBtzS,KAAKuzS,WAAa,GAMlBvzS,KAAKwzS,mBAAqB,GAM1BxzS,KAAKyzS,cAAgB,GAMrBzzS,KAAK0zS,SAAW,IAAIzlB,EAOpBjuR,KAAK2zS,UAAY,IAAI7iB,EAOrB9wR,KAAK4zS,WAAa,KAElB5zS,KAAK63L,QAAUA,CACnB,EAYA55K,QAAS,SAAS9W,GAEd,GAAIm/Q,EAAMG,YAAYzmR,KAAK63L,SACvB,KAAM,yBA6BV,OA1BA73L,KAAKmH,QAAUxG,EAAM6H,WAAW,CACxB2pS,iBAAiB,EACjBF,kBAAkB,EAClBC,yBAAyB,GAE7B/qS,GAAW,CAAC,GAGhBnH,KAAKw2D,QAELx2D,KAAK6zS,qBAGL7zS,KAAK8zS,0BAGL9zS,KAAKszS,WAAa,IAAIrlB,EAAWjuR,KAAKosD,OACtCpsD,KAAKuzS,WAAa,IAAItlB,EAAWjuR,KAAK43Q,OAEtC53Q,KAAK4zS,WAAa,IAAI9iB,EACtB9wR,KAAKszS,WAAWhyS,SAAQ,SAASsxH,GAC7B5yH,KAAK4zS,WAAWzgB,QAAQvgK,EAC5B,GAAG5yH,MACHA,KAAKuzS,WAAWjyS,SAAQ,SAASkxH,GAC7BxyH,KAAK4zS,WAAW5gB,gBAAgBxgK,EACpC,GAAGxyH,MACIA,KAAK4zS,UAChB,EAOAG,cAAe,SAASlkB,GACpB,OAAO7vR,KAAKqzS,QAAQpjR,IAAI4/P,EAAWx/P,GACvC,EAOA2jR,SAAU,SAASlxJ,GACf,OAAO9iJ,KAAKk0R,QAAQjkQ,IAAI6yH,EAAMzyH,GAClC,EAOA4jR,QAAS,SAAS/uS,EAAG+W,GACjB,OAAOqqQ,EAAMp8Q,MAAMhF,EAAEw6O,OAAO,SAASpL,GACjC,OAAOA,EAAK26C,cAAc/pR,KAAO+W,CACrC,GACJ,EAKAu6C,MAAO,WACHx2D,KAAK4zS,WAAa,KAClB5zS,KAAK2zS,WAAc3zS,KAAKmH,QAAQ8qS,kBAAoBjyS,KAAKmH,QAAQ+qS,wBAA2B,IAAIpB,EAAc,KAC9G9wS,KAAK0zS,UAAa1zS,KAAKmH,QAAQ8qS,kBAAoBjyS,KAAKmH,QAAQ+qS,wBAA2B,IAAIjkB,EAAe,KAC9GjuR,KAAKk0R,QAAU,IAAIjG,EACnBjuR,KAAKozS,SAAW,IAAInlB,EACpBjuR,KAAKosD,MAAQ,GACbpsD,KAAK43Q,MAAQ,GACb53Q,KAAKqzS,QAAU,IAAIplB,EACnBjuR,KAAKwzS,mBAAqB,GAC1BxzS,KAAKyzS,cAAgB,GACrBzzS,KAAKszS,WAAa,GAClBtzS,KAAKuzS,WAAa,EACtB,EAOAW,WAAY,SAASC,GACjB,IAAI3nO,EAAO,GACPvnE,EAAIkvS,EAAe19Q,UACvB,IAAKxxB,EACD,OAAOunE,EAGX,IADAA,EAAK7qE,KAAKsD,GACHA,EAAEmvS,iBACLnvS,EAAIA,EAAEmvS,gBACN5nO,EAAK7qE,KAAKsD,GAGd,OADAunE,EAAKn2D,UACEm2D,CACX,EAEA6nO,2BAA4B,SAASvxJ,GAEjC,OAAIA,EAAMwxJ,cAAgBt0S,KAAKu0S,iBAAiBzxJ,GACrCA,EAEHA,EAAMsxJ,gBAAyBp0S,KAAKq0S,2BAA2BvxJ,EAAMsxJ,iBAA7C,IACpC,EACAI,sBAAuB,SAAStvS,EAAG+W,GAC/B,SAAI/W,EAAEovS,cAAet0S,KAAKy0S,eAAevvS,EAAG+W,KAGrCA,EAAEq4R,aAAet0S,KAAKy0S,eAAex4R,EAAG/W,EACnD,EASAuvS,eAAgB,SAASC,EAAOxvS,GAC5B,IAAKwvS,EAAMJ,YACP,KAAM,yBAEV,GAAII,IAAUxvS,EACV,OAAO,EAEX,GAAIqwB,EAASm/Q,EAAMn/P,SAAUrwC,GACzB,OAAO,EAGX,IADA,IAAI00E,EAAa,GACRryE,EAAI,EAAGwpB,EAAM2jR,EAAMn/P,SAAS/tC,OAAQD,EAAIwpB,EAAKxpB,IAAK,CACvD,IAAI7C,EAAIgwS,EAAMn/P,SAAShuC,GACnB7C,EAAE4vS,aAAet0S,KAAKy0S,eAAe/vS,EAAGQ,IACxC00E,EAAWj4E,KAAK+C,EAExB,CAEA,OAAOk1E,EAAWpyE,OAAS,CAC/B,EACAmtS,gBAAiB,SAAS7xJ,GACtB,OAAI9iJ,KAAKmH,QAAQgrS,kBACTrvJ,EAAM8xJ,cAAe50S,KAAK60S,WAAW/xJ,QAGpCA,EAAM8xJ,aAAe50S,KAAK60S,WAAW/xJ,IAMnCA,EAAM8xJ,cAAgB50S,KAAK80S,OAAOhyJ,EAEjD,EAQAiyJ,cAAe,SAASjyJ,GACpB,OAAOA,EAAM8xJ,cAAgB50S,KAAK60S,WAAW/xJ,KAAW9iJ,KAAK80S,OAAOhyJ,EACxE,EAEAkyJ,oBAAqB,SAAS9vS,EAAG+W,GAC7B,IAAK/W,EACD,KAAM,gCAEV,IAAK+W,EACD,KAAM,gCAGV,IAAKjc,KAAK2zS,UACN,KAAM,0BAEV,IAAIsB,EAAKj1S,KAAKk0S,WAAWhvS,GACrB64H,EAAK/9H,KAAKk0S,WAAWj4R,GACrBkiD,EAAQ,KACZ,GAAImoN,EAAMz/F,QAAQouH,IAAO3uB,EAAMz/F,QAAQ9oD,GACnC,OAAO/9H,KAAK2zS,UAAU91P,KAAKzvC,KAK/B,IAHA,IAAI8mS,EAAKD,EAAG,GACRE,EAAKp3K,EAAG,GACRx2H,EAAI,EACD2tS,IAAOC,IACVh3O,EAAQ82O,EAAG1tS,OACXA,GACS0tS,EAAGztS,QAAUD,GAAKw2H,EAAGv2H,UAG9B0tS,EAAKD,EAAG1tS,GACR4tS,EAAKp3K,EAAGx2H,GAEZ,OAAK42D,EAIM9/B,EAAKr+B,KAAK2zS,UAAUvnP,OAAO,SAASwmE,GACvC,OAAOA,EAAExkH,KAAKqoB,YAAc0nC,CAChC,IALOn+D,KAAK2zS,UAAU91P,KAAKzvC,IAOnC,EAOA0mS,OAAQ,SAAS3lQ,GACb,OAAQA,EAAKilQ,eACjB,EASAS,WAAY,SAAS/xJ,GAEjB,QAAKA,EAAM91I,YAGH81I,EAAMsxJ,gBAAoCp0S,KAAK60S,WAAW/xJ,EAAMsxJ,iBAAxCtxJ,EAAM91I,UAC1C,EAEAooS,aAAc,SAAStyJ,GAEnB,SAAIA,EAAMwxJ,cAAexxJ,EAAM8xJ,cAGxB9xJ,EAAMsxJ,iBAAmBp0S,KAAKo1S,aAAatyJ,EAAMsxJ,gBAC5D,EAMAP,mBAAoB,WAEhB,IAAI7zS,KAAKmH,QAAQ8qS,iBAkBb,KAAM,oDAjBN,IAAK,IAAI1qS,EAAI,EAAGwpB,EAAM/wB,KAAK63L,QAAQh1C,OAAOr7I,OAAQD,EAAIwpB,EAAKxpB,IAAK,CAC5D,IAAIu7I,EAAQ9iJ,KAAK63L,QAAQh1C,OAAOt7I,GAGhC,GAAKvH,KAAKmH,QAAQgrS,kBAAoBnyS,KAAK60S,WAAW/xJ,IAAWA,EAAMwxJ,YACnEt0S,KAAKyzS,cAAc9xS,KAAKmhJ,OAD5B,CAIA,IAAIz/G,EAAO,IAAI4nC,EAAK63E,EAAMzyH,GAAIyyH,GAC9Bz/G,EAAKyrP,WAAY,EAGjB9uR,KAAKk0R,QAAQ1mR,IAAIs1I,EAAMzyH,GAAIgT,GAC3BrjC,KAAKosD,MAAMzqD,KAAK0hC,EANhB,CAOJ,CAKR,EAMAywQ,wBAAyB,WACrB,GAAwC,IAApC9zS,KAAK63L,QAAQuuG,YAAY5+R,OAG7B,IAAK,IAAID,EAAI,EAAGwpB,EAAM/wB,KAAK63L,QAAQuuG,YAAY5+R,OAAQD,EAAIwpB,EAAKxpB,IAAK,CACjE,IAAIw6R,EAAO/hS,KAAK63L,QAAQuuG,YAAY7+R,GAEpC,GAAIvH,KAAK20S,gBAAgB5S,GACrB/hS,KAAKwzS,mBAAmB7xS,KAAKogS,OADjC,CAKA,IAAIl0R,EAAUk0R,EAAKqF,gBAAyBrF,EAAKqF,gBAAgBtkJ,MAA5B,KACjCuyJ,EAAQtT,EAAKiB,gBAAyBjB,EAAKiB,gBAAgBlgJ,MAA5B,KAGnC,GAAKj1I,GAAWwnS,EAKhB,IAAI9/Q,EAASv1B,KAAKyzS,cAAe5lS,IAAY7N,KAAKozS,SAAS5lB,YAAY3/Q,GAIvE,IAAI0nB,EAASv1B,KAAKyzS,cAAe4B,IAAUr1S,KAAKozS,SAAS5lB,YAAY6nB,GAArE,CAMIr1S,KAAKozS,SAAS5lB,YAAY3/Q,KAC1BA,EAAS7N,KAAKozS,SAASvlS,IAEvB7N,KAAKozS,SAAS5lB,YAAY6nB,KAC1BA,EAAOr1S,KAAKozS,SAASiC,IAGzB,IAAIzsD,EAAa5oP,KAAKg0S,SAASnmS,GAC3BynS,EAAWt1S,KAAKg0S,SAASqB,GAC7B,GAAKzsD,IAAe0sD,GAAat1S,KAAKu1S,oBAAoB3sD,EAAY0sD,GAClEt1S,KAAKwzS,mBAAmB7xS,KAAKogS,OADjC,CAKA,GAAmB,OAAfn5C,GAAoC,OAAb0sD,EACvB,KAAM,oCAEV,IAAIt1S,KAAKmH,QAAQ8qS,iBAYb,KAAM,oDAVN,GAAIrpD,EAAWkmC,WAAawmB,EAASxmB,UACjC9uR,KAAKwzS,mBAAmB7xS,KAAKogS,OADjC,CAIA,IAAIyT,EAAU,IAAItyD,EAAK0F,EAAY0sD,EAAUvT,EAAK1xQ,GAAI0xQ,GAEtD/hS,KAAKqzS,QAAQ7lS,IAAIu0R,EAAK1xQ,GAAImlR,GAC1Bx1S,KAAK43Q,MAAMj2Q,KAAK6zS,EAJhB,CAVJ,CAfA,MAFIx1S,KAAKwzS,mBAAmB7xS,KAAKogS,QAJ7B/hS,KAAKwzS,mBAAmB7xS,KAAKogS,QAL7B/hS,KAAKwzS,mBAAmB7xS,KAAKogS,EAPjC,CAoDJ,CACJ,EAEAwT,oBAAqB,SAAS3iL,EAAG5tH,GAC7B,OAAOshR,EAAMtpE,IAAIh9M,KAAK43Q,OAAO,SAASplJ,GAClC,OAAOA,EAAE3kH,SAAW+kH,GAAKJ,EAAEnrH,SAAWrC,GAAKwtH,EAAE3kH,SAAW7I,GAAKwtH,EAAEnrH,SAAWurH,CAC9E,GACJ,IAwCA4lK,EAAeuY,EAAWhuS,OAAO,CACjCoF,KAAM,SAAS0vL,GAGX,GADAk5G,EAAWhpS,GAAGI,KAAKoC,KADRvK,MAEPsmR,EAAMG,YAAY5uF,GAClB,KAAM,4BAEV73L,KAAK63L,QAAUA,CACnB,EAEA08B,OAAQ,SAASptN,GAEbnH,KAAKkzS,gBAAgB/rS,GAErB,IACIuwR,EADU,IAAIyb,EAA0BnzS,KAAK63L,SAC7B55K,QAAQ9W,GAC5B,IAAIuwR,EAAM7wG,UAAV,CAIA,IAAI+qG,EAAa8F,EAAMnG,yBACvB,IAAIjL,EAAMz/F,QAAQ+qG,GAAlB,CAGA,IAAK,IAAIrqR,EAAI,EAAGA,EAAIqqR,EAAWpqR,OAAQD,IAAK,CACxC,IAAI2tR,EAAYtD,EAAWrqR,GAC3BvH,KAAKy4R,YAAYvD,EAAW/tR,EAChC,CACA,IAAIsuS,EAAez1S,KAAKqyS,qBAAqBzgB,GAC7C,OAAO,IAAI/5F,EAAQ69G,YAAY11S,KAAK63L,QAAS49G,EAN7C,CALA,CAYJ,EAEAhd,YAAa,SAASf,EAAOvwR,GAErBm/Q,EAAME,UAAUr/Q,IAChBnH,KAAKkzS,gBAAgB/rS,GAEzBnH,KAAK03R,MAAQA,EAEb,IAAIie,EAAiD,EAA5B31S,KAAKmH,QAAQ8pS,aACtCjxS,KAAK41S,YAAcD,EAEnB,IAAIE,EAAc71S,KAAK81S,kBACvB91S,KAAK+L,MAAQ8pS,EAAY9pS,MACzB/L,KAAKgM,OAAS6pS,EAAY7pS,OAE1B,IAAK,IAAI8mC,EAAO,EAAGA,EAAO9yC,KAAKmH,QAAQ+pS,WAAYp+P,IAC/C9yC,KAAK+1S,YAAcjjQ,GAAkC,EAA1B9yC,KAAKmH,QAAQ+pS,WAAiB,EACzDlxS,KAAKk8C,OAELl8C,KAAK41S,YAAc51S,KAAK+1S,YACpBJ,EAAqB,GACrBA,GAAsB,EAAI7iQ,GAAQ,EAAI9yC,KAAKmH,QAAQ+pS,YAE/D,EAKAh1P,KAAM,WACF,IAAI30C,EAEJ,IAAKA,EAAI,EAAGA,EAAIvH,KAAK03R,MAAMtrO,MAAM5kD,OAAQD,IACrCvH,KAAKg2S,WAAWh2S,KAAK03R,MAAMtrO,MAAM7kD,IAIrC,IAAKA,EAAI,EAAGA,EAAIvH,KAAK03R,MAAMh4C,MAAMl4O,OAAQD,IACrCvH,KAAKi2S,YAAYj2S,KAAK03R,MAAMh4C,MAAMn4O,IAGtC,IAAKA,EAAI,EAAGA,EAAIvH,KAAK03R,MAAMtrO,MAAM5kD,OAAQD,IAAK,CAC1C,IAAI87B,EAAOrjC,KAAK03R,MAAMtrO,MAAM7kD,GACxBuW,EAASza,KAAKo7E,KAAKp7C,EAAKg7C,GAAKh7C,EAAKg7C,GAAKh7C,EAAKi7C,GAAKj7C,EAAKi7C,IAC1D,GAAe,IAAXxgE,EACA,OAEJulB,EAAKj+B,GAAK/B,KAAKqT,IAAIoH,EAAQ9d,KAAK41S,aAAevyQ,EAAKg7C,GAAKvgE,EACzDulB,EAAKl/B,GAAKd,KAAKqT,IAAIoH,EAAQ9d,KAAK41S,aAAevyQ,EAAKi7C,GAAKxgE,EACrD9d,KAAKmH,QAAQuxR,cACbr1P,EAAKj+B,EAAI/B,KAAKqT,IAAI1W,KAAK+L,MAAO1I,KAAK8V,IAAIkqB,EAAKt3B,MAAQ,EAAGs3B,EAAKj+B,IAC5Di+B,EAAKl/B,EAAId,KAAKqT,IAAI1W,KAAKgM,OAAQ3I,KAAK8V,IAAIkqB,EAAKr3B,OAAS,EAAGq3B,EAAKl/B,IAEtE,CACJ,EAOA+xS,OAAQ,SAAS7yQ,GAEb,IAAI8yQ,EAAM9yS,KAAK+sB,SAAWpwB,KAAKmH,QAAQ8pS,aAAe,EAClDt+K,EAAwB,EAAhBtvH,KAAK+sB,SAAe/sB,KAAK6zH,GACrC7zF,EAAKj+B,GAAK+wS,EAAM9yS,KAAKg3H,IAAI1H,GACzBtvF,EAAKl/B,GAAKgyS,EAAM9yS,KAAKi3H,IAAI3H,EAC7B,EAWAyjL,oBAAqB,SAAS5xS,EAAGouH,EAAG5tH,GAChC,IAAIstB,EACJ,GAAKtyB,KAAK+1S,YAGL,CACD,IAAIlD,EAASjgL,EAAExtH,EAAIJ,EAAEI,EACjB0tS,EAASlgL,EAAEzuH,EAAIa,EAAEb,EAEjBkyS,EAAKzjL,EAAE7mH,MAAQ,EACfuqS,EAAK1jL,EAAE5mH,OAAS,EAChBuqS,EAAKvxS,EAAE+G,MAAQ,EACfyqS,EAAKxxS,EAAEgH,OAAS,EAEpBsmB,EAASjvB,KAAKwmC,IAAIgpQ,EAAQ,GAAKxvS,KAAKwmC,IAAIwsQ,EAAKE,EAAKv2S,KAAKmH,QAAQ8pS,aAAc,GAAO5tS,KAAKwmC,IAAIipQ,EAAQ,GAAKzvS,KAAKwmC,IAAIysQ,EAAKE,EAAKx2S,KAAKmH,QAAQ8pS,aAAc,EAC5J,MAZI3+Q,EAAQjvB,KAAKwmC,IAAIrlC,EAAG,GAAKnB,KAAKwmC,IAAI7pC,KAAKmH,QAAQ8pS,aAAc,GAajE,OAAe,EAAR3+Q,EAAY,CACvB,EAUAmkR,aAAc,SAASjyS,EAAGouH,EAAG5tH,GACzB,OAAO,EAAIhF,KAAKo2S,oBAAoB5xS,EAAGouH,EAAG5tH,EAC9C,EAEAgxS,WAAY,SAASpjL,GACjBA,EAAEv0C,GAAK,EACPu0C,EAAEt0C,GAAK,EACPgoM,EAAMhlR,QAAQtB,KAAK03R,MAAMtrO,OAAO,SAASpnD,GACrC,GAAIA,IAAM4tH,EAAV,CAGA,KAAOA,EAAExtH,IAAMJ,EAAEI,GAAKwtH,EAAEzuH,IAAMa,EAAEb,GAC5BnE,KAAKk2S,OAAOlxS,GAEhB,IAAI+nR,EAAKn6J,EAAExtH,EAAIJ,EAAEI,EACb4nR,EAAKp6J,EAAEzuH,EAAIa,EAAEb,EACbq6E,EAAWn7E,KAAKo7E,KAAKsuM,EAAKA,EAAKC,EAAKA,GACpC96J,EAAwC,EAApClyH,KAAKy2S,aAAaj4N,EAAUo0C,EAAG5tH,GACvC4tH,EAAEv0C,IAAO0uM,EAAKvuM,EAAY0zC,EAC1BU,EAAEt0C,IAAO0uM,EAAKxuM,EAAY0zC,CAT1B,CAUJ,GAAGlyH,KACP,EACAi2S,YAAa,SAAS3hE,GAClB,IAAInvO,EAAImvO,EAAKjtO,OACTpC,EAAIqvO,EAAKzmO,OACb,GAAI5I,IAAME,EAAV,CAIA,KAAOF,EAAEG,IAAMD,EAAEC,GAAKH,EAAEd,IAAMgB,EAAEhB,GAC5BnE,KAAKk2S,OAAO/wS,GAGhB,IAAI4nR,EAAK9nR,EAAEG,EAAID,EAAEC,EACb4nR,EAAK/nR,EAAEd,EAAIgB,EAAEhB,EACbq6E,EAAWn7E,KAAKo7E,KAAKsuM,EAAKA,EAAKC,EAAKA,GAEpC9nR,EAA+C,EAA3ClF,KAAKo2S,oBAAoB53N,EAAUv5E,EAAGE,GAC1Ck5E,EAAM0uM,EAAKvuM,EAAYt5E,EACvBo5E,EAAM0uM,EAAKxuM,EAAYt5E,EAC3BC,EAAEk5E,IAAMA,EACRl5E,EAAEm5E,IAAMA,EACRr5E,EAAEo5E,IAAMA,EACRp5E,EAAEq5E,IAAMA,CAfR,CAgBJ,EAOAw3N,gBAAiB,WAEb,IAAI9lS,EAAMsqP,EAAIt6P,KAAK03R,MAAMtrO,MAAM5kD,OAC/B,GAAU,IAAN8yP,EACA,OAAOtqP,EAUX,IACI0mS,GATJ1mS,EAAOs2Q,EAAMqB,KAAK3nR,KAAK03R,MAAMtrO,OAAO,SAASnnD,EAAGo+B,GAC5C,IAAIiwJ,EAAOjwJ,EAAKt3B,MAAQs3B,EAAKr3B,OAC7B,OAAIsnL,EAAO,EACPruL,GAAK5B,KAAKo7E,KAAK60G,GAGZ,CACX,GAAG,EAAGtzL,OACUs6P,EACMj3P,KAAK6jE,KAAK7jE,KAAKo7E,KAAK67K,IAG1C,MAAO,CAAEvuP,MAhBmF,GAchF2qS,EAAarzS,KAAKo7E,KAd4C,MAgBtCzyE,OAhBwD,GAe/E0qS,EAAarzS,KAAKo7E,KAf2C,MAiB9E,IAIAk4N,EAAsBh2S,EAAMiH,MAAM7E,OAAO,CAEzCoF,KAAM,SAAShB,GACXnH,KAAKu+E,OAAS,KACdv+E,KAAKmH,QAAUA,CACnB,EACAotN,OAAQ,SAASqiF,EAAW/4P,GAExB,GADA79C,KAAK03R,MAAQkf,EACR52S,KAAK03R,MAAMtrO,OAAqC,IAA5BpsD,KAAK03R,MAAMtrO,MAAM5kD,OAA1C,CAIA,IAAK+tB,EAASv1B,KAAK03R,MAAMtrO,MAAOvO,GAC5B,KAAM,sCAGV79C,KAAKu+E,OAAS1gC,EACd79C,KAAK03R,MAAMxG,qBAkBXlxR,KAAK62S,cAzBL,CA6BJ,EAEAC,WAAY,SAAStqR,GACjBxsB,KAAK+2S,qBAAqB/2S,KAAKu+E,OAAQ,QAAQ,GAC/Cv+E,KAAKg3S,kBAAkBh3S,KAAKu+E,OAAQ,WAAW,GAC/C,IAAkBp6E,EAAGoD,EAAG87B,EAApBz+B,EAAI,EAAGo1P,EAAI,EACf,IAAKzyP,EAAI,EAAGA,EAAIilB,EAAKhlB,OAAQD,IAAK,EAC9B87B,EAAO7W,EAAKjlB,IACP0vS,cAAgB,OACrB,IAAIhyS,EAAIjF,KAAKulF,QAAQliD,EAAM25F,EAAKguJ,OAChChxB,EAAI32P,KAAK8V,IAAI6gP,EAAG/0P,EAAEiyS,OAClBtyS,GAAKK,EAAE+G,OAAShM,KAAKmH,QAAQiqS,kBACjC,CAEAxsS,GAAK5E,KAAKmH,QAAQiqS,mBAClB,IAAIhsS,EAAIpF,KAAKu+E,OAAOn5E,EAAIpF,KAAKmH,QAAQgqS,qBAErC,IADAhtS,EAAInE,KAAKu+E,OAAOp6E,GAAMnE,KAAKu+E,OAAOvyE,OAASpH,GAAK,EAC3C2C,EAAI,EAAGA,EAAIilB,EAAKhlB,OAAQD,IAAK,CAC9B87B,EAAO7W,EAAKjlB,GACZ,IAAIsrH,EAAI,IAAIiJ,EAAM12H,EAAIi+B,EAAK25F,KAAKjxH,MAAO5H,GAEvCnE,KAAKm3S,QAAQ9zQ,EAAMwvF,GACnB1uH,GAAKk/B,EAAK25F,KAAKhxH,OAAShM,KAAKmH,QAAQiqS,kBACzC,CACJ,EAEAgG,YAAa,SAAS3qR,GAClBzsB,KAAK+2S,qBAAqB/2S,KAAKu+E,OAAQ,SAAS,GAChDv+E,KAAKg3S,kBAAkBh3S,KAAKu+E,OAAQ,WAAW,GAC/C,IAAkBp6E,EAAGoD,EAAG87B,EAApBz+B,EAAI,EAAGo1P,EAAI,EACf,IAAKzyP,EAAI,EAAGA,EAAIklB,EAAMjlB,OAAQD,IAAK,EAC/B87B,EAAO5W,EAAMllB,IACR0vS,cAAgB,QACrB,IAAIhyS,EAAIjF,KAAKulF,QAAQliD,EAAM25F,EAAKguJ,OAChChxB,EAAI32P,KAAK8V,IAAI6gP,EAAG/0P,EAAEiyS,OAClBtyS,GAAKK,EAAE+G,OAAShM,KAAKmH,QAAQiqS,kBACjC,CAEAxsS,GAAK5E,KAAKmH,QAAQiqS,mBAClB,IAAIhsS,EAAIpF,KAAKu+E,OAAOn5E,EAAIpF,KAAKmH,QAAQgqS,qBAAuBnxS,KAAKu+E,OAAOxyE,MAExE,IADA5H,EAAInE,KAAKu+E,OAAOp6E,GAAMnE,KAAKu+E,OAAOvyE,OAASpH,GAAK,EAC3C2C,EAAI,EAAGA,EAAIklB,EAAMjlB,OAAQD,IAAK,CAC/B87B,EAAO5W,EAAMllB,GACb,IAAIsrH,EAAI,IAAIiJ,EAAM12H,EAAGjB,GACrBnE,KAAKm3S,QAAQ9zQ,EAAMwvF,GACnB1uH,GAAKk/B,EAAK25F,KAAKhxH,OAAShM,KAAKmH,QAAQiqS,kBACzC,CACJ,EAEAiG,SAAU,SAASjpR,GACfpuB,KAAK+2S,qBAAqB/2S,KAAKu+E,OAAQ,MAAM,GAC7Cv+E,KAAKg3S,kBAAkBh3S,KAAKu+E,OAAQ,WAAW,GAC/C,IAAWp6E,EAAGk/B,EAAM97B,EAAhByyP,EAAI,EACR,IAAKzyP,EAAI,EAAGA,EAAI6mB,EAAG5mB,OAAQD,IAAK,EAC5B87B,EAAOjV,EAAG7mB,IACL0vS,cAAgB,KAErBj9C,GADQh6P,KAAKulF,QAAQliD,EAAM25F,EAAKguJ,OACzBj/Q,MAAQ/L,KAAKmH,QAAQgqS,oBAChC,CAEAn3C,GAAKh6P,KAAKmH,QAAQgqS,qBAClB,IAAI/rS,EAAIpF,KAAKu+E,OAAOn5E,EAAKpF,KAAKu+E,OAAOxyE,MAAQ,EAAMiuP,EAAI,EAGvD,IAAKzyP,EAAI,EAAGA,EAAI6mB,EAAG5mB,OAAQD,IAAK,CAC5B87B,EAAOjV,EAAG7mB,GACVpD,EAAInE,KAAKu+E,OAAOp6E,EAAInE,KAAKmH,QAAQiqS,mBAAqB/tQ,EAAK25F,KAAKhxH,OAChE,IAAI6mH,EAAI,IAAIiJ,EAAM12H,EAAGjB,GACrBnE,KAAKm3S,QAAQ9zQ,EAAMwvF,GACnBztH,GAAKi+B,EAAK25F,KAAKjxH,MAAQ/L,KAAKmH,QAAQgqS,oBACxC,CACJ,EAEAmG,WAAY,SAASnpR,GACjB,IAAIkV,EAAM97B,EACVvH,KAAK+2S,qBAAqB/2S,KAAKu+E,OAAQ,QAAQ,GAC/Cv+E,KAAKg3S,kBAAkBh3S,KAAKu+E,OAAQ,WAAW,GAC/C,IAAWp6E,EAAP61P,EAAI,EACR,IAAKzyP,EAAI,EAAGA,EAAI4mB,EAAK3mB,OAAQD,IAAK,EAC9B87B,EAAOlV,EAAK5mB,IACPgwS,cAAgB,OAErBv9C,GADQh6P,KAAKulF,QAAQliD,EAAM25F,EAAKguJ,OACzBj/Q,MAAQ/L,KAAKmH,QAAQgqS,oBAChC,CAEAn3C,GAAKh6P,KAAKmH,QAAQgqS,qBAClB,IAAI/rS,EAAIpF,KAAKu+E,OAAOn5E,EAAKpF,KAAKu+E,OAAOxyE,MAAQ,EAAMiuP,EAAI,EAEvD,IADA71P,EAAInE,KAAKu+E,OAAOp6E,EAAInE,KAAKmH,QAAQiqS,mBAAqBpxS,KAAKu+E,OAAOvyE,OAC7DzE,EAAI,EAAGA,EAAI4mB,EAAK3mB,OAAQD,IAAK,CAC9B87B,EAAOlV,EAAK5mB,GACZ,IAAIsrH,EAAI,IAAIiJ,EAAM12H,EAAGjB,GACrBnE,KAAKm3S,QAAQ9zQ,EAAMwvF,GACnBztH,GAAKi+B,EAAK25F,KAAKjxH,MAAQ/L,KAAKmH,QAAQgqS,oBACxC,CACJ,EAEAqG,iBAAkB,WAEdx3S,KAAK+2S,qBAAqB/2S,KAAKu+E,OAAQ,UAAU,GACjDv+E,KAAKg3S,kBAAkBh3S,KAAKu+E,OAAQ,WAAW,GAC/Cv+E,KAAKy3S,aAAe,KACpB,IAAIl1K,EAAaviI,KAAKmH,QAAQyqS,iBAAmB36K,EAC7CuL,EAAWxiI,KAAKmH,QAAQ0qS,eAAiB56K,EAC7C,GAAIuL,GAAYD,EACZ,KAAM,uDAGVviI,KAAKu/O,SAAW,EAChBv/O,KAAKg5C,OAAS,IAAI8iF,EAAM97H,KAAKu+E,OAAOn5E,EAAGpF,KAAKu+E,OAAOp6E,GACnDnE,KAAK03S,sBAAsB13S,KAAKu+E,OAAQ,GAGpCv+E,KAAKu/O,SAAW,GAChBv/O,KAAK23S,aAAa33S,KAAKu+E,OAAQv+E,KAAKmH,QAAQ4qS,2BAA4BxvK,EAAYC,GAIxFxiI,KAAKu+E,OAAOq5N,MAAQp1K,EAAWD,CACnC,EAEAs1K,YAAa,SAAS1pR,EAAM2pR,GACpBxxB,EAAMG,YAAYqxB,KAClBA,EAAiB,GAGrB93S,KAAK+2S,qBAAqB/2S,KAAKu+E,OAAQ,QAAQ,GAC/Cv+E,KAAKg3S,kBAAkBh3S,KAAKu+E,OAAQ,WAAW,GAC/Cv+E,KAAKg3S,kBAAkBh3S,KAAKu+E,OAAQ,cAAc,EAAOu5N,GACzD,IAAW3zS,EAAGk/B,EAAM97B,EAAhByyP,EAAI,EACR,IAAKzyP,EAAI,EAAGA,EAAI4mB,EAAK3mB,OAAQD,IAAK,EAC9B87B,EAAOlV,EAAK5mB,IAGP0vS,cAAgB,OAErBj9C,GADQh6P,KAAKulF,QAAQliD,EAAM25F,EAAKguJ,OACzBj/Q,MAAQ/L,KAAKmH,QAAQgqS,oBAChC,CAEAn3C,GAAKh6P,KAAKmH,QAAQgqS,qBAGlBn3C,GAAK7rO,EAAKA,EAAK3mB,OAAS,GAAGuE,MAC3BiuP,GAAK7rO,EAAKA,EAAK3mB,OAAS,GAAGonR,gBAAgB3J,SAASl5Q,MAEpD,IAAI3G,EAAIpF,KAAKu+E,OAAOn5E,EAAKpF,KAAKu+E,OAAOxyE,MAAQ,EAAMiuP,EAAI,EAEvD,IADA71P,EAAInE,KAAKu+E,OAAOp6E,EAAInE,KAAKmH,QAAQiqS,mBAAqBpxS,KAAKu+E,OAAOvyE,OAC7DzE,EAAI,EAAGA,EAAI4mB,EAAK3mB,OAAQD,IAAK,CAC9B87B,EAAOlV,EAAK5mB,GAEZ,IAAIsrH,EAAI,IAAIiJ,EAAM12H,EAAGjB,GACrBnE,KAAKm3S,QAAQ9zQ,EAAMwvF,GACnBztH,GAAKi+B,EAAK25F,KAAKjxH,MAAQ/L,KAAKmH,QAAQgqS,oBACxC,CAUJ,EACAuG,sBAAuB,SAAS9kL,EAAGpuH,GAC3BA,EAAIxE,KAAKu/O,WACTv/O,KAAKu/O,SAAW/6O,GAGpB,IAAIuzS,EAAK,EAAuBC,EAAiB,IAANxzS,EAAU,EAAInB,KAAKo7E,KAAK,KAAqBj6E,EAExF,GAAIouH,EAAEr9E,SAAS/tC,OAAS,EAAG,CAEvB,IAAK,IAAID,EAAI,EAAGwpB,EAAM6hG,EAAEr9E,SAAS/tC,OAAQD,EAAIwpB,EAAKxpB,IAAK,CACnD,IAAIs8B,EAAQ+uF,EAAEr9E,SAAShuC,GACvBwwS,GAAM/3S,KAAK03S,sBAAsB7zQ,EAAOr/B,EAAI,EAChD,CACAuzS,EAAK10S,KAAK8V,IAAI6+R,EAAUD,EAC5B,MAEIA,EAAKC,EAIT,OADAplL,EAAEqlL,YAAcF,EACTA,CACX,EACAG,aAAc,SAAStlL,GACnB,IAAmBrrH,EAAf4wS,EAAY,EAGhB,GAAIvlL,EAAEr6F,QAAQ/wB,OAAS,EACnB,KAAM,8BAEV,IAAIqrH,EAAID,EAAEr6F,QAAQ,GAClB,GAAIs6F,EAAG,CACH,IAAI69B,EAAK,IAAI50B,EAAMjJ,EAAEztH,EAAGytH,EAAE1uH,GACtBi0S,EAAK,IAAIt8K,EAAMlJ,EAAExtH,EAAGwtH,EAAEzuH,GAC1Bg0S,EAAYn4S,KAAKq4S,eAAeh1S,KAAKwwC,MAAM68G,EAAGvsJ,EAAIi0S,EAAGj0S,EAAGusJ,EAAGtrJ,EAAIgzS,EAAGhzS,GACtE,CAEA,IAAIkW,EAAQs3G,EAAEr9E,SAAS/tC,OACvB,GAAc,IAAV8T,EACA,OAAO,KAGX,IAAI8+G,EAAQ,GACRxwH,EAAM,GAEV,IAAKrC,EAAI,EAAGA,EAAI+T,IAAS/T,EAAG,CACxB,IAAI7C,EAAIkuH,EAAEr9E,SAAShuC,GACfirH,EAAI,IAAIsJ,EAAMp3H,EAAEU,EAAGV,EAAEP,GACzByF,EAAIrC,GAAKA,EACT6yH,EAAM7yH,GAAKvH,KAAKq4S,gBAAgBF,EAAY90S,KAAKwwC,MAAM2+E,EAAEruH,EAAIquH,EAAEruH,EAAGquH,EAAEptH,EAAIotH,EAAEptH,GAC9E,CAEAkhR,EAAMuB,OAAOztJ,EAAOxwH,GACpB,IAAI07J,EAAM,GACN/vH,EAAWq9E,EAAEr9E,SACjB,IAAKhuC,EAAI,EAAGA,EAAI+T,IAAS/T,EACrB+9J,EAAI3jK,KAAK4zC,EAAS3rC,EAAIrC,KAG1B,OAAO+9J,CACX,EAEA+yI,eAAgB,SAASj+K,GACrB,KAAOA,EAAkB,EAAV/2H,KAAK6zH,IAChBkD,GAAS,EAAI/2H,KAAK6zH,GAEtB,KAAOkD,EAAQ,GACXA,GAAmB,EAAV/2H,KAAK6zH,GAElB,OAAOkD,CACX,EACAu9K,aAAc,SAASt0Q,EAAM/W,EAAQi2G,EAAYC,GAM7C,IALA,IAAI81K,EAAa91K,EAAWD,EACxBg2K,EAAiBD,EAAa,EAC9BE,EAAen1Q,EAAK40Q,YACpBlgS,EAAW,EACX+N,EAAS9lB,KAAKk4S,aAAa70Q,GACtB97B,EAAI,EAAGwpB,EAAMjL,EAAOte,OAAQD,EAAIwpB,EAAKxpB,IAAK,CAC/C,IAAIyyI,EAAYl0H,EAAOve,GACnBilI,EAAKwN,EACLy+J,EAAqBjsK,EAAGyrK,YAAcO,EACtCx+J,EAAUzkG,SAAS/tC,OAAS,GAC5BxH,KAAK23S,aAAa39J,EACd1tH,EAAStsB,KAAKmH,QAAQ2qS,iBACtBvvK,EAAcxqH,EAAWugS,EACzB/1K,GAAexqH,EAAW0gS,GAAsBH,GAGxDt4S,KAAK04S,iBAAiB1+J,EAAW1tH,EAAQi2G,EAAcxqH,EAAWugS,EAAeG,EAAqBF,GACtG/rK,EAAGpS,MAAQq+K,EAAqBH,EAChCvgS,GAAY0gS,CAChB,CACJ,EACAC,iBAAkB,SAASr1Q,EAAM/W,EAAQ8tG,GACrC/2F,EAAKj+B,EAAIpF,KAAKg5C,OAAO5zC,EAAKknB,EAASjpB,KAAKg3H,IAAID,GAC5C/2F,EAAKl/B,EAAInE,KAAKg5C,OAAO70C,EAAKmoB,EAASjpB,KAAKi3H,IAAIF,GAC5C/2F,EAAKs1Q,kBAAoB,IAAI17K,EAAK55F,EAAKj+B,EAAGi+B,EAAKl/B,EAAGk/B,EAAKt3B,MAAOs3B,EAAKr3B,OACvE,EAQA+qS,qBAAsB,SAAS1zQ,EAAMgR,EAAWukQ,GAC5C,IAAIC,EAAgBx1Q,EAAKk0Q,cACzBv3S,KAAK03R,MAAMhD,oBAAoBrxP,GAAM,SAASuvF,GAC1CA,EAAE2kL,cAAgBljQ,CACtB,IACKukQ,IACDv1Q,EAAKk0Q,cAAgBsB,EAE7B,EASA7B,kBAAmB,SAAS3zQ,EAAMkxL,EAAQqkF,EAAcd,GAChDxxB,EAAMG,YAAYqxB,KAClBA,EAAiB,GAErB,IAAIgB,EAAaz1Q,EAAK01Q,eAClBjB,EAAiB,GAEjB93S,KAAK03R,MAAMtG,aAAa/tP,GAGxBrjC,KAAK03R,MAAMhD,oBACPrxP,GAAM,SAASp+B,GACPA,EAAE0mE,OAASmsO,EAAiB,IAC5B7yS,EAAE8zS,eAAiBxkF,EAE3B,MAIJv0N,KAAK03R,MAAMhD,oBAAoBrxP,GAAM,SAASp+B,GAC1CA,EAAE8zS,eAAiBxkF,CACvB,IAGKqkF,IACDv1Q,EAAK01Q,eAAiBD,GAGlC,EAQAvzN,QAAS,SAASliD,EAAM21Q,GACpB,IAAkB/zS,EAAd+0P,EAAI,EAAGp1P,EAAI,EACXkS,EAAS,IAAIkmH,EAAK,EAAG,GACzB,IAAK35F,EACD,KAAM,GAEV,IAAIpnB,EAAIonB,EAAKurP,gBAAgB3J,SACzBg0B,EAAah9R,EAAElQ,MACfmtS,EAAcj9R,EAAEjQ,OACpB,GAA4B,IAAxBq3B,EAAK9K,QAAQ/wB,OACb,KAAM,+BAGV,IAAImF,EAAS02B,EAAK9K,QAAQ,GAK1B,GAJ2B,cAAvB8K,EAAKk0Q,gBACLl0Q,EAAKk0Q,cAAgB5qS,EAAO4qS,eAG5BjxB,EAAMz/F,QAAQxjJ,EAAKkS,UACnBz+B,EAAS,IAAIkmH,EACT35H,KAAKoU,IAAIwhS,GAAc9vB,EAAU,GAAK8vB,EACtC51S,KAAKoU,IAAIyhS,GAAe/vB,EAAU,GAAK+vB,QAE1C,GAA6B,IAAzB71Q,EAAKkS,SAAS/tC,OAAc,CACjC,OAAQ67B,EAAKk0Q,eACT,IAAK,SACDtyS,EAAIjF,KAAKulF,QAAQliD,EAAKkS,SAAS,GAAIyjQ,GACnCh/C,EAAIi/C,EAAcj5S,KAAKmH,QAAQ2qS,iBAAmBzuS,KAAKg3H,IAAIh3F,EAAK81Q,eAAkBl0S,EAAE8G,MACpFnH,EAAIs0S,EAAc71S,KAAKoU,IAAIzX,KAAKmH,QAAQ2qS,iBAAmBzuS,KAAKi3H,IAAIj3F,EAAK81Q,gBAAkBl0S,EAAE+G,OAC7F,MACJ,IAAK,OACL,IAAK,QACD,OAAQq3B,EAAK01Q,gBAET,IAAK,uBAGL,IAAK,0BACD,MAEJ,IAAK,aAED/+C,EAAIi/C,GADJh0S,EAAIjF,KAAKulF,QAAQliD,EAAKkS,SAAS,GAAIyjQ,IAChBjtS,MAAQ/L,KAAKmH,QAAQmqS,2BACxC1sS,EAAIs0S,EAAcl5S,KAAKmH,QAAQkqS,4BAA8BpsS,EAAE+G,OAC/D,MAEJ,IAAK,UACD/G,EAAIjF,KAAKulF,QAAQliD,EAAKkS,SAAS,GAAIyjQ,GACnCh/C,EAAIi/C,EAAaj5S,KAAKmH,QAAQgqS,qBAAuBlsS,EAAE8G,MACvDnH,EAAIvB,KAAK8V,IAAI+/R,EAAaj0S,EAAE+G,QAC5B,MAEJ,QACI,KAAM,0DAEd,MACJ,IAAK,KACL,IAAK,OACD,OAAQq3B,EAAK01Q,gBAET,IAAK,uBACL,IAAK,0BACD,MAEJ,IAAK,aACD9zS,EAAIjF,KAAKulF,QAAQliD,EAAKkS,SAAS,GAAIyjQ,GACnCh/C,EAAI32P,KAAK8V,IAAI8/R,EAAYh0S,EAAE8G,MAAQ/L,KAAKmH,QAAQmqS,4BAChD1sS,EAAIs0S,EAAcl5S,KAAKmH,QAAQkqS,4BAA8BpsS,EAAE+G,OAC/D,MAEJ,IAAK,UACD/G,EAAIjF,KAAKulF,QAAQliD,EAAKkS,SAAS,GAAIyjQ,GACnCp0S,EAAIs0S,EAAcl5S,KAAKmH,QAAQiqS,mBAAqBnsS,EAAE+G,OACtDguP,EAAI32P,KAAK8V,IAAI8/R,EAAYh0S,EAAE8G,OAC3B,MAEJ,QACI,KAAM,wDAEd,MACJ,QACI,KAAM,mDAGd+K,EAAS,IAAIkmH,EAAKg9H,EAAGp1P,EACzB,KACK,CACD,IAAI2C,EAAGyyI,EACP,OAAQ32G,EAAKk0Q,eACT,IAAK,OACL,IAAK,QACD,OAAQl0Q,EAAK01Q,gBAET,IAAK,uBACL,IAAK,0BACD,MAEJ,IAAK,aAGD,IAFA/+C,EAAIi/C,EACJr0S,EAAIs0S,EAAcl5S,KAAKmH,QAAQkqS,4BAC1B9pS,EAAI,EAAGA,EAAI87B,EAAKkS,SAAS/tC,OAAQD,IAClCyyI,EAAY32G,EAAKkS,SAAShuC,GAC1BtC,EAAIjF,KAAKulF,QAAQy0D,EAAWg/J,GAC5Bh/C,EAAI32P,KAAK8V,IAAI6gP,EAAG/0P,EAAE8G,MAAQ/L,KAAKmH,QAAQmqS,4BACvC1sS,GAAKK,EAAE+G,OAAShM,KAAKmH,QAAQoqS,6BAGjC3sS,GAAK5E,KAAKmH,QAAQoqS,6BAClB,MAEJ,IAAK,UAGD,IAFAv3C,EAAIi/C,EACJr0S,EAAI,EACC2C,EAAI,EAAGA,EAAI87B,EAAKkS,SAAS/tC,OAAQD,IAClCyyI,EAAY32G,EAAKkS,SAAShuC,GAC1BtC,EAAIjF,KAAKulF,QAAQy0D,EAAWg/J,GAC5Bh/C,EAAI32P,KAAK8V,IAAI6gP,EAAGi/C,EAAaj5S,KAAKmH,QAAQgqS,qBAAuBlsS,EAAE8G,OACnEnH,GAAKK,EAAE+G,OAAShM,KAAKmH,QAAQiqS,mBAEjCxsS,GAAK5E,KAAKmH,QAAQiqS,mBAClB,MAEJ,QACI,KAAM,yDAGd,MACJ,IAAK,KACL,IAAK,OAED,OAAQ/tQ,EAAK01Q,gBAET,IAAK,uBACL,IAAK,0BACD,MAEJ,IAAK,aAGD,IAFA/+C,EAAIi/C,EACJr0S,EAAIs0S,EAAcl5S,KAAKmH,QAAQkqS,4BAC1B9pS,EAAI,EAAGA,EAAI87B,EAAKkS,SAAS/tC,OAAQD,IAClCyyI,EAAY32G,EAAKkS,SAAShuC,GAC1BtC,EAAIjF,KAAKulF,QAAQy0D,EAAWg/J,GAC5Bh/C,EAAI32P,KAAK8V,IAAI6gP,EAAG/0P,EAAE8G,MAAQ/L,KAAKmH,QAAQmqS,4BACvC1sS,GAAKK,EAAE+G,OAAShM,KAAKmH,QAAQoqS,6BAGjC3sS,GAAK5E,KAAKmH,QAAQoqS,6BAClB,MAEJ,IAAK,UAGD,IAFAv3C,EAAI,EACJp1P,EAAI,EACC2C,EAAI,EAAGA,EAAI87B,EAAKkS,SAAS/tC,OAAQD,IAClCyyI,EAAY32G,EAAKkS,SAAShuC,GAE1ByyP,IADA/0P,EAAIjF,KAAKulF,QAAQy0D,EAAWg/J,IACrBjtS,MAAQ/L,KAAKmH,QAAQgqS,qBAC5BvsS,EAAIvB,KAAK8V,IAAIvU,EAAGK,EAAE+G,OAAShM,KAAKmH,QAAQiqS,mBAAqB8H,GAGjEl/C,GAAKh6P,KAAKmH,QAAQgqS,qBAClB,MAEJ,QACI,KAAM,wDAGd,MACJ,QACI,KAAM,mDAGdr6R,EAAS,IAAIkmH,EAAKg9H,EAAGp1P,EACzB,CAIA,OAFAy+B,EAAK+1Q,YAAc/1S,KAAKo7E,KAAMu7K,EAAIA,EAAI,EAAMp1P,EAAIA,EAAI,GACpDy+B,EAAK25F,KAAOlmH,EACLA,CACX,EACAqgS,QAAS,SAASvkL,EAAGC,GACjB,IAAItrH,EAAG8xS,EAAWh2Q,EAAMi2Q,EAShBl0S,EAAGjB,EACHo1S,EAV+Bt9R,EAAI22G,EAAEg8J,gBAAgB3J,SACzDg0B,EAAah9R,EAAElQ,MACfmtS,EAAcj9R,EAAEjQ,OACpB,GAAIs6Q,EAAMz/F,QAAQj0D,EAAEr9E,UAChBq9E,EAAExtH,EAAIytH,EAAEztH,EACRwtH,EAAEzuH,EAAI0uH,EAAE1uH,EACRyuH,EAAE+lL,kBAAoB,IAAI17K,EAAKpK,EAAEztH,EAAGytH,EAAE1uH,EAAG80S,EAAYC,QAKrD,OAAQtmL,EAAE2kL,eACN,IAAK,OACD,OAAQ3kL,EAAEmmL,gBACN,IAAK,uBACL,IAAK,0BACD,MAEJ,IAAK,aAMD,IALAQ,EAAe1mL,EACfD,EAAExtH,EAAIm0S,EAAan0S,EACnBwtH,EAAEzuH,EAAIo1S,EAAap1S,EACnByuH,EAAE+lL,kBAAoB,IAAI17K,EAAKrK,EAAExtH,EAAGwtH,EAAEzuH,EAAGyuH,EAAE7mH,MAAO6mH,EAAE5mH,QACpD7H,EAAI0uH,EAAE1uH,EAAI+0S,EAAcl5S,KAAKmH,QAAQkqS,4BAChC9pS,EAAI,EAAGA,EAAI87B,EAAKkS,SAAS/tC,OAAQD,IAClC87B,EAAOA,EAAKkS,SAAShuC,GACrBnC,EAAIm0S,EAAan0S,EAAIi+B,EAAKurP,gBAAgB7iR,MAAQ/L,KAAKmH,QAAQmqS,2BAC/D+H,EAAK,IAAIv9K,EAAM12H,EAAGjB,GAClBnE,KAAKm3S,QAAQ9zQ,EAAMg2Q,GACnBl1S,GAAKk/B,EAAK25F,KAAKhxH,OAAShM,KAAKmH,QAAQoqS,6BAEzC,MAEJ,IAAK,UAOD,IANAgI,EAAe,IAAIz9K,EAAMjJ,EAAEztH,EAAIwtH,EAAEoK,KAAKjxH,MAAQktS,EAAYpmL,EAAE1uH,GAAMyuH,EAAEoK,KAAKhxH,OAASktS,GAAe,GACjGtmL,EAAExtH,EAAIm0S,EAAan0S,EACnBwtH,EAAEzuH,EAAIo1S,EAAap1S,EACnByuH,EAAE+lL,kBAAoB,IAAI17K,EAAKrK,EAAExtH,EAAGwtH,EAAEzuH,EAAGyuH,EAAE7mH,MAAO6mH,EAAE5mH,QACpD5G,EAAIm0S,EAAan0S,EAAIpF,KAAKmH,QAAQgqS,qBAClChtS,EAAI0uH,EAAE1uH,EACDoD,EAAI,EAAGA,EAAIqrH,EAAEr9E,SAAS/tC,OAAQD,IAC/B87B,EAAOuvF,EAAEr9E,SAAShuC,GAClB8xS,EAAK,IAAIv9K,EAAM12H,EAAIi+B,EAAK25F,KAAKjxH,MAAO5H,GACpCnE,KAAKm3S,QAAQ9zQ,EAAMg2Q,GACnBl1S,GAAKk/B,EAAK25F,KAAKhxH,OAAShM,KAAKmH,QAAQiqS,mBAEzC,MAEJ,QACI,KAAM,4BAGd,MACJ,IAAK,QACD,OAAQx+K,EAAEmmL,gBACN,IAAK,uBACL,IAAK,0BACD,MAEJ,IAAK,aASD,IARAQ,EAAe1mL,EACfD,EAAExtH,EAAIm0S,EAAan0S,EACnBwtH,EAAEzuH,EAAIo1S,EAAap1S,EACnByuH,EAAE+lL,kBAAoB,IAAI17K,EAAKrK,EAAExtH,EAAGwtH,EAAEzuH,EAAGyuH,EAAE7mH,MAAO6mH,EAAE5mH,QACpD5G,EAAIytH,EAAEztH,EAAI6zS,EAAaj5S,KAAKmH,QAAQmqS,2BAGpCntS,EAAI0uH,EAAE1uH,EAAI+0S,EAAcl5S,KAAKmH,QAAQkqS,4BAChC9pS,EAAI,EAAGA,EAAIqrH,EAAEr9E,SAAS/tC,OAAQD,IAC/B87B,EAAOuvF,EAAEr9E,SAAShuC,GAClB8xS,EAAK,IAAIv9K,EAAM12H,EAAGjB,GAClBnE,KAAKm3S,QAAQ9zQ,EAAMg2Q,GACnBl1S,GAAKk/B,EAAK25F,KAAKhxH,OAAShM,KAAKmH,QAAQoqS,6BAGzC,MAEJ,IAAK,UAOD,IANAgI,EAAe,IAAIz9K,EAAMjJ,EAAEztH,EAAGytH,EAAE1uH,GAAMyuH,EAAEoK,KAAKhxH,OAASktS,GAAe,GACrEtmL,EAAExtH,EAAIm0S,EAAan0S,EACnBwtH,EAAEzuH,EAAIo1S,EAAap1S,EACnByuH,EAAE+lL,kBAAoB,IAAI17K,EAAKrK,EAAExtH,EAAGwtH,EAAEzuH,EAAGyuH,EAAE7mH,MAAO6mH,EAAE5mH,QACpD5G,EAAIytH,EAAEztH,EAAI6zS,EAAaj5S,KAAKmH,QAAQgqS,qBACpChtS,EAAI0uH,EAAE1uH,EACDoD,EAAI,EAAGA,EAAIqrH,EAAEr9E,SAAS/tC,OAAQD,IAC/B87B,EAAOuvF,EAAEr9E,SAAShuC,GAClB8xS,EAAK,IAAIv9K,EAAM12H,EAAGjB,GAClBnE,KAAKm3S,QAAQ9zQ,EAAMg2Q,GACnBl1S,GAAKk/B,EAAK25F,KAAKhxH,OAAShM,KAAKmH,QAAQiqS,mBAEzC,MAEJ,QACI,KAAM,4BAGd,MACJ,IAAK,KAKD,GAJAmI,EAAe,IAAIz9K,EAAMjJ,EAAEztH,GAAMwtH,EAAEoK,KAAKjxH,MAAQktS,GAAc,EAAIpmL,EAAE1uH,EAAIyuH,EAAEoK,KAAKhxH,OAASktS,GACxFtmL,EAAExtH,EAAIm0S,EAAan0S,EACnBwtH,EAAEzuH,EAAIo1S,EAAap1S,EACnByuH,EAAE+lL,kBAAoB,IAAI17K,EAAKrK,EAAExtH,EAAGwtH,EAAEzuH,EAAGyuH,EAAE7mH,MAAO6mH,EAAE5mH,QAChD3I,KAAKoU,IAAI8hS,EAAan0S,EAAIytH,EAAEztH,GAAK+jR,EAAS,CAG1C,IAFAmwB,EAAgB,EAEX/xS,EAAI,EAAGA,EAAIqrH,EAAEr9E,SAAS/tC,OAAQD,IAE/B+xS,GADQ1mL,EAAEr9E,SAAShuC,GACIy1H,KAAKjxH,MAAQ/L,KAAKmH,QAAQgqS,qBAErDmI,GAAiBt5S,KAAKmH,QAAQgqS,qBAC9B/rS,EAAIytH,EAAEztH,GAAM6zS,EAAaK,GAAiB,CAC9C,MAEIl0S,EAAIytH,EAAEztH,EAGV,IAAKmC,EAAI,EAAGA,EAAIqrH,EAAEr9E,SAAS/tC,OAAQD,IAC/B87B,EAAOuvF,EAAEr9E,SAAShuC,GAClBpD,EAAIo1S,EAAap1S,EAAInE,KAAKmH,QAAQiqS,mBAAqB/tQ,EAAK25F,KAAKhxH,OACjEqtS,EAAK,IAAIv9K,EAAM12H,EAAGjB,GAClBnE,KAAKm3S,QAAQ9zQ,EAAMg2Q,GACnBj0S,GAAKi+B,EAAK25F,KAAKjxH,MAAQ/L,KAAKmH,QAAQgqS,qBAExC,MAEJ,IAAK,OAED,OAAQv+K,EAAEmmL,gBACN,IAAK,uBACL,IAAK,0BACD,MACJ,IAAK,aAOD,IANAQ,EAAe1mL,EACfD,EAAExtH,EAAIm0S,EAAan0S,EACnBwtH,EAAEzuH,EAAIo1S,EAAap1S,EACnByuH,EAAE+lL,kBAAoB,IAAI17K,EAAKrK,EAAExtH,EAAGwtH,EAAEzuH,EAAGyuH,EAAE7mH,MAAO6mH,EAAE5mH,QACpD5G,EAAIytH,EAAEztH,EAAIpF,KAAKmH,QAAQmqS,2BACvBntS,EAAI0uH,EAAE1uH,EAAI+0S,EAAcl5S,KAAKmH,QAAQkqS,4BAChC9pS,EAAI,EAAGA,EAAIqrH,EAAEr9E,SAAS/tC,OAAQD,IAC/B87B,EAAOuvF,EAAEr9E,SAAShuC,GAClB8xS,EAAK,IAAIv9K,EAAM12H,EAAGjB,GAClBnE,KAAKm3S,QAAQ9zQ,EAAMg2Q,GACnBl1S,GAAKk/B,EAAK25F,KAAKhxH,OAAShM,KAAKmH,QAAQoqS,6BAEzC,MAEJ,IAAK,UAKD,GAJAgI,EAAe,IAAIz9K,EAAMjJ,EAAEztH,GAAMwtH,EAAEoK,KAAKjxH,MAAQktS,GAAc,EAAIpmL,EAAE1uH,GACpEyuH,EAAExtH,EAAIm0S,EAAan0S,EACnBwtH,EAAEzuH,EAAIo1S,EAAap1S,EACnByuH,EAAE+lL,kBAAoB,IAAI17K,EAAKrK,EAAExtH,EAAGwtH,EAAEzuH,EAAGyuH,EAAE7mH,MAAO6mH,EAAE5mH,QAChD3I,KAAKoU,IAAI8hS,EAAan0S,EAAIytH,EAAEztH,GAAK+jR,EAAS,CAG1C,IAFAmwB,EAAgB,EAEX/xS,EAAI,EAAGA,EAAIqrH,EAAEr9E,SAAS/tC,OAAQD,IAE/B+xS,GADQ1mL,EAAEr9E,SAAShuC,GACIy1H,KAAKjxH,MAAQ/L,KAAKmH,QAAQgqS,qBAGrDmI,GAAiBt5S,KAAKmH,QAAQgqS,qBAC9B/rS,EAAIytH,EAAEztH,GAAM6zS,EAAaK,GAAiB,CAC9C,MAEIl0S,EAAIytH,EAAEztH,EAGV,IAAKmC,EAAI,EAAGA,EAAIqrH,EAAEr9E,SAAS/tC,OAAQD,IAC/B87B,EAAOuvF,EAAEr9E,SAAShuC,GAClBpD,EAAIo1S,EAAap1S,EAAInE,KAAKmH,QAAQiqS,mBAAqB8H,EACvDG,EAAK,IAAIv9K,EAAM12H,EAAGjB,GAClBnE,KAAKm3S,QAAQ9zQ,EAAMg2Q,GACnBj0S,GAAKi+B,EAAK25F,KAAKjxH,MAAQ/L,KAAKmH,QAAQgqS,qBAExC,MAEJ,QACI,KAAM,4BAEd,MAEJ,IAAK,OACD,MAEJ,QACI,KAAM,4BAGtB,EACA0F,aAAc,WACV,GAAK72S,KAAKu+E,SAIN+nM,EAAMz/F,QAAQ7mL,KAAKu+E,OAAOhpC,UAA9B,CAIA,IAIIgB,EAAQijQ,EAAMC,EAAQC,EAJtBh0S,EAAO1F,KAAKmH,QAAQ6pS,QACpB1qB,EAAMG,YAAY/gR,KAClBA,EAAO,QAGX,IAAI6vC,EAAWv1C,KAAKu+E,OAAOhpC,SAC3B,OAAQ7vC,EAAKmT,eACT,IAAK,SACL,IAAK,aACD7Y,KAAKw3S,mBACL,MAEJ,IAAK,oBACL,IAAK,UACDjhQ,EAASv2C,KAAKu+E,OAAOhpC,SAEe,IAAhCv1C,KAAKu+E,OAAOhpC,SAAS/tC,OACrBxH,KAAKo3S,YAAY7gQ,IAIjBmjQ,EAAYnkQ,EAAS/tC,OAAS,EAC9BgyS,EAAOn7Q,EAAKr+B,KAAKu+E,OAAOhpC,UAAU,SAASq9E,GACvC,OAAO0zJ,EAAM3wQ,QAAQ4/B,EAAUq9E,GAAK8mL,CACxC,IACAD,EAASp7Q,EAAKr+B,KAAKu+E,OAAOhpC,UAAU,SAASq9E,GACzC,OAAO0zJ,EAAM3wQ,QAAQ4/B,EAAUq9E,IAAM8mL,CACzC,IAEA15S,KAAK82S,WAAW0C,GAChBx5S,KAAKo3S,YAAYqC,IAErB,MAEJ,IAAK,kBACDljQ,EAASv2C,KAAKu+E,OAAOhpC,SAEe,IAAhCv1C,KAAKu+E,OAAOhpC,SAAS/tC,OACrBxH,KAAKs3S,WAAW/gQ,IAIhBmjQ,EAAYnkQ,EAAS/tC,OAAS,EAC9BgyS,EAAOn7Q,EAAKr+B,KAAKu+E,OAAOhpC,UAAU,SAASq9E,GACvC,OAAO0zJ,EAAM3wQ,QAAQ4/B,EAAUq9E,GAAK8mL,CACxC,IACAD,EAASp7Q,EAAKr+B,KAAKu+E,OAAOhpC,UAAU,SAASq9E,GACzC,OAAO0zJ,EAAM3wQ,QAAQ4/B,EAAUq9E,IAAM8mL,CACzC,IACA15S,KAAKq3S,SAASmC,GACdx5S,KAAKs3S,WAAWmC,IAEpB,MAEJ,IAAK,QACDz5S,KAAKo3S,YAAYp3S,KAAKu+E,OAAOhpC,UAC7B,MAEJ,IAAK,OACDv1C,KAAK82S,WAAW92S,KAAKu+E,OAAOhpC,UAC5B,MAEJ,IAAK,KACL,IAAK,SACDv1C,KAAKq3S,SAASr3S,KAAKu+E,OAAOhpC,UAC1B,MAEJ,IAAK,OACL,IAAK,MACDv1C,KAAKs3S,WAAWt3S,KAAKu+E,OAAOhpC,UAC5B,MAEJ,IAAK,UACL,IAAK,cACD,GAAIv1C,KAAKmH,QAAQwyS,sBAAwB,EACrC,KAAM,mDAEV35S,KAAK63S,YAAY73S,KAAKu+E,OAAOhpC,SAAUv1C,KAAKmH,QAAQwyS,uBA/E5D,CAsFJ,IAOAC,EAAa7I,EAAWhuS,OAAO,CAC/BoF,KAAM,SAAS0vL,GAGX,GADAk5G,EAAWhpS,GAAGI,KAAKoC,KADRvK,MAEPsmR,EAAMG,YAAY5uF,GAClB,KAAM,wBAEV73L,KAAK63L,QAAUA,CACnB,EAKA08B,OAAQ,SAASptN,GAEbnH,KAAKkzS,gBAAgB/rS,GAGrB,IAAIi4C,EAAU,IAAI+zP,EAA0BnzS,KAAK63L,SAMjD73L,KAAK03R,MAAQt4O,EAAQnhC,UAErB,IAAIw3R,EAAez1S,KAAK65S,mBAIxB,OAAO,IAAIhiH,EAAQ69G,YAAY11S,KAAK63L,QAAS49G,EACjD,EAEAoE,iBAAkB,WACd,IAAI75S,KAAK03R,MAAM7wG,UAAf,CAKA,IAAI+qG,EAAa5xR,KAAK03R,MAAMnG,yBAC5B,IAAIjL,EAAMz/F,QAAQ+qG,GAAlB,CAOA,IAHA,IAAIr9D,EAAS,IAAIoiF,EAAoB32S,KAAKmH,SACtCiwR,EAAQ,GAEH7vR,EAAI,EAAGA,EAAIqqR,EAAWpqR,OAAQD,IAAK,CACxC,IAAI2tR,EAAYtD,EAAWrqR,GAEvBqvS,EAAY52S,KAAK85S,QAAQ5kB,GAC7B,IAAK0hB,EACD,KAAM,oDAEV,IAAI/4P,EAAO+4P,EAAU/4P,KACjByM,EAAOssP,EAAUtsP,KACrBiqK,EAAOA,OAAOjqK,EAAMzM,GAEpBu5O,EAAMz1R,KAAK2oD,EACf,CAEA,OAAOtqD,KAAKqyS,qBAAqBjb,EAnBjC,CANA,CA2BJ,EAQA0iB,QAAS,SAASpiB,GACd,IAAI75O,EAAO,KACX,GAAI79C,KAAKmH,QAAQyhI,OAAS5oI,KAAKmH,QAAQyhI,MAAMphI,OAAS,EAClD,IAAK,IAAID,EAAI,EAAGwpB,EAAM2mQ,EAAMtrO,MAAM5kD,OAAQD,EAAIwpB,EAAKxpB,IAE/C,IADA,IAAI87B,EAAOq0P,EAAMtrO,MAAM7kD,GACdwjC,EAAI,EAAGA,EAAI/qC,KAAKmH,QAAQyhI,MAAMphI,OAAQujC,IAAK,CAEhD,GADqB/qC,KAAKmH,QAAQyhI,MAAM79F,KACjB1H,EAAKurP,gBAAiB,CACzC/wO,EAAOxa,EACP,KACJ,CACJ,CAGR,IAAKwa,KAEDA,EAAO65O,EAAM75O,QAGT,KAAM,sCAGd,OAAO79C,KAAK+5S,eAAeriB,EAAO75O,EACtC,EAEAk8P,eAAgB,SAASriB,EAAO75O,GAE5B,IAAIyM,EAAOotO,EAAMxF,gBAAgBr0O,GACjC,OAAIyoO,EAAMG,YAAYn8N,IAASA,EAAKu8H,UACzB,KAEJ,CACHv8H,KAAMA,EACNzM,KAAMyM,EAAKzM,KAEnB,IAQAm8P,EAAgBjJ,EAAWhuS,OAAO,CAClCoF,KAAM,SAAS0vL,GAGX,GADAk5G,EAAWhpS,GAAGI,KAAKoC,KADRvK,MAEPsmR,EAAMG,YAAY5uF,GAClB,KAAM,4BAEV73L,KAAK63L,QAAUA,CACnB,EAEA08B,OAAQ,SAASptN,GAEbnH,KAAKkzS,gBAAgB/rS,GAErB,IACIuwR,EADU,IAAIyb,EAA0BnzS,KAAK63L,SAC7B55K,QAAQ9W,GAC5B,IAAIuwR,EAAM7wG,UAAV,CAIA,IAAI+qG,EAAa8F,EAAMnG,yBACvB,IAAIjL,EAAMz/F,QAAQ+qG,GAAlB,CAGA,IAAK,IAAIrqR,EAAI,EAAGA,EAAIqqR,EAAWpqR,OAAQD,IAAK,CACxC,IAAI2tR,EAAYtD,EAAWrqR,GAC3BvH,KAAKy4R,YAAYvD,EAAW/tR,EAChC,CACA,IAAIsuS,EAAez1S,KAAKqyS,qBAAqBzgB,GAC7C,OAAO,IAAI/5F,EAAQ69G,YAAY11S,KAAK63L,QAAS49G,EAN7C,CALA,CAaJ,EAMAwE,uBAAwB,WACpB,IAAK,IAAIn1S,EAAI,EAAGA,EAAI9E,KAAK03R,MAAMtrO,MAAM5kD,OAAQ1C,IAAK,CAC9C,IAAIu+B,EAAOrjC,KAAK03R,MAAMtrO,MAAMtnD,GAC5Bu+B,EAAK+9M,OAAS,EACd/9M,EAAK62Q,oBAAsB,EAC3B72Q,EAAK82Q,kBAAoB,EAEzB92Q,EAAKyrP,WAAY,EAEjBzrP,EAAK+2Q,YAAc,EACnB/2Q,EAAKg3Q,YAAc,EAEnBh3Q,EAAKi3Q,iBAAmB,EACxBj3Q,EAAKk3Q,mBAAqB,EAE1Bl3Q,EAAKm3Q,aAAe,CACxB,CACJ,EACAC,SAAU,SAAS/iB,GACf,IAAkBnwR,EAAGirH,EAAG8hH,EAKpBomE,EAAap0O,EAAMj/D,EALnB2M,EAAU,GAGV2mS,EAAW,IAAI1sB,EACf2sB,EAAa,EAUjB,IAPAt0B,EAAMhlR,QAAQo2R,EAAMtrO,OAAO,SAAS/oB,GACH,IAAzBA,EAAKqrP,SAASlnR,SACdmzS,EAASzqR,IAAImT,EAAM,GACnBrvB,EAAQrS,KAAK0hC,GAErB,IAEOrvB,EAAQxM,OAAS,GAEpB,IADA8+D,EAAOtyD,EAAQoC,QACV7O,EAAI,EAAGA,EAAI++D,EAAKmoN,SAASjnR,OAAQD,IAElCF,GADAitO,EAAOhuK,EAAKmoN,SAASlnR,IACPF,OAGVqzS,EADAC,EAASntB,YAAYnmR,GACPhE,KAAK8V,IAAIwhS,EAAS1qR,IAAIq2C,GAAQ,EAAGq0O,EAAS1qR,IAAI5oB,IAE9CszS,EAAS1qR,IAAIq2C,GAAQ,EAEvCq0O,EAASzqR,IAAI7oB,EAAQqzS,GACjBA,EAAcE,IACdA,EAAaF,GAGZnlR,EAASvhB,EAAS3M,IACnB2M,EAAQrS,KAAK0F,GAKzB,IA2BI+5O,EA3BAy5D,EAAcF,EAAS9vR,OAE3BgwR,EAAY7+R,MAAK,SAAS+tQ,EAAI+wB,GAC1B,IAAIC,EAAUJ,EAAS1qR,IAAI85P,GACvBixB,EAAUL,EAAS1qR,IAAI6qR,GAC3B,OAAOx0B,EAAMvvQ,KAAKikS,EAAUD,EAChC,IAEA,IAAK,IAAInoL,EAAI,EAAGA,EAAIioL,EAAYrzS,SAAUorH,EAAG,CACzC,IAAIvvF,EAAOw3Q,EAAYjoL,GACnBqoL,EAAWpoS,OAAOukH,UAEtB,GAA6B,IAAzB/zF,EAAKorP,SAASjnR,OAAlB,CAIA,IAAKgrH,EAAI,EAAGA,EAAInvF,EAAKorP,SAASjnR,SAAUgrH,EACpC8hH,EAAOjxM,EAAKorP,SAASj8J,GACrByoL,EAAW53S,KAAKqT,IAAIukS,EAAUN,EAAS1qR,IAAIqkN,EAAKjtO,SAGhD4zS,EAAW,GACXN,EAASzqR,IAAImT,EAAM43Q,EAAW,EARlC,CAUJ,CAIA,IAFAj7S,KAAK66Q,OAAS,GAETtzQ,EAAI,EAAGA,EAAIqzS,EAAa,EAAGrzS,KAC5B65O,EAAQ,IACF85D,QAAU,CAAC,EACjBl7S,KAAK66Q,OAAOl5Q,KAAKy/O,GASrB,IANAu5D,EAASr5S,SAAQ,SAAS+hC,EAAM+9M,GAC5B/9M,EAAK+9M,MAAQA,EACbphP,KAAK66Q,OAAOz5B,GAAOz/O,KAAK0hC,EAC5B,GAAGrjC,MAGEwyH,EAAI,EAAGA,EAAIxyH,KAAK66Q,OAAOrzQ,OAAQgrH,IAEhC,IADA4uH,EAAQphP,KAAK66Q,OAAOroJ,GACfjrH,EAAI,EAAGA,EAAI65O,EAAM55O,OAAQD,IAC1B65O,EAAM75O,GAAGizS,aAAejzS,CAGpC,EAIAkxR,YAAa,SAASf,EAAOvwR,GACzB,GAAIm/Q,EAAMG,YAAYiR,GAClB,KAAM,0DAENpR,EAAME,UAAUr/Q,IAChBnH,KAAKkzS,gBAAgB/rS,GAEzBnH,KAAK03R,MAAQA,EAGbA,EAAMjG,iBAGN,IAAI+E,EAAgBkB,EAAMlC,cAG1Bx1R,KAAKi6S,yBAELj6S,KAAKy6S,SAAS/iB,EAAOvwR,GAErBnH,KAAKm7S,WAELn7S,KAAKo7S,qBAELp7S,KAAKq7S,aAELr7S,KAAKs7S,eAELt7S,KAAKu7S,oBAELv7S,KAAKw7S,aAGLl1B,EAAMhlR,QAAQk1R,GAAe,SAAS7xR,GAC9BA,EAAEy+H,QACFz+H,EAAEy+H,OAAO/sH,SAEjB,GACJ,EAEAolS,WAAY,SAASz2S,EAAG4tH,EAAG8oL,GACvB,IAAIlpL,EAAIxtH,EAAEo8O,MACN75O,EAAIvC,EAAE22S,WACV37S,KAAK47S,aAAappL,GAAGjrH,GAAKm0S,CAC9B,EAEAG,WAAY,SAAS72S,EAAG4tH,GAQpB,IAPA,IAAIy2C,EAAO,EACPyyI,EAAK92S,EAAE22S,WACPI,EAAKnpL,EAAE+oL,WACPnpL,EAAIxtH,EAAEo8O,MACN1qO,EAAMrT,KAAKqT,IAAIolS,EAAIC,GACnB5iS,EAAM9V,KAAK8V,IAAI2iS,EAAIC,GAEdj3S,EAAI4R,EAAK5R,EAAIqU,IAAOrU,EACzBukK,GAAQrpK,KAAK47S,aAAappL,GAAG1tH,GAEjC,OAAOukK,CACX,EAEA2yI,iBAAkB,SAASC,GAEvB,IADA,IAAgCrpL,EAAGvvF,EAA/B64Q,EAAU,IAAIjuB,EACTvpR,EAAI,EAAGA,EAAI1E,KAAK66Q,OAAOrzQ,SAAU9C,EAAG,CACzC,IAAIy3S,EAAaF,EAAYv3S,GAC7B,GAAKy3S,EAAL,CAIA,IAAKvpL,EAAI,EAAGA,EAAIupL,EAAW30S,OAAQorH,IAC/BvvF,EAAO84Q,EAAWvpL,GACbspL,EAAQ1uB,YAAYnqP,IACrBrjC,KAAKo8S,UAAU/4Q,EAAM64Q,EAASx3S,GAKtC,IAAIF,EAAIqO,OAAOwpS,kBACf,IAAKzpL,EAAI,EAAGA,EAAIupL,EAAW30S,OAAQorH,IAAK,CACpCvvF,EAAO84Q,EAAWvpL,GAClB,IAAI0pL,EAAet8S,KAAKs8S,aAAaj5Q,GACjCi5Q,GAAgBt8S,KAAKu8S,cAActsR,IAAIqsR,KAAkB53S,IACzDF,EAAInB,KAAKqT,IAAIlS,EAAG03S,EAAQjsR,IAAIqsR,GAAgBJ,EAAQjsR,IAAIoT,GAAQrjC,KAAK67S,WAAWx4Q,EAAMi5Q,IAE9F,CACA,GAAI93S,IAAMqO,OAAOwpS,kBAAmB,CAChC,IAAInnS,EAAI,GACR,IAAK09G,EAAI,EAAGA,EAAIupL,EAAW30S,OAAQorH,IAAK,CACpCvvF,EAAO84Q,EAAWvpL,GAClB,IAAIg9J,EAAY,GAChBtJ,EAAM3wB,SAASi6B,EAAW5vR,KAAKw8S,QAAQvsR,IAAIoT,IAC3CijP,EAAM3wB,SAASi6B,EAAW5vR,KAAKy8S,UAAUxsR,IAAIoT,IAE7C,IAAK,IAAI1+B,EAAI,EAAGA,EAAIirR,EAAUpoR,OAAQ7C,IAAK,CACvC,IAAI+3S,EAAW9sB,EAAUjrR,GACrB3E,KAAKu8S,cAActsR,IAAIysR,GAAYh4S,GACnCwQ,EAAEvT,KAAKu6S,EAAQjsR,IAAIysR,GAAYR,EAAQjsR,IAAIoT,GAEnD,CACJ,CACAnuB,EAAE8G,OAEExX,EADa,IAAb0Q,EAAE1N,OACE,EAEC0N,EAAE1N,OAAS,GAAM,EAClB0N,EAAElV,KAAK28S,OAAOznS,EAAE1N,OAAQ,KAGvB0N,EAAElV,KAAK28S,OAAOznS,EAAE1N,OAAQ,GAAK,GAAK0N,EAAElV,KAAK28S,OAAOznS,EAAE1N,OAAQ,KAAO,CAE9E,CACA,IAAKorH,EAAI,EAAGA,EAAIupL,EAAW30S,OAAQorH,IAC/BvvF,EAAO84Q,EAAWvpL,GAClBspL,EAAQhsR,IAAImT,EAAM64Q,EAAQjsR,IAAIoT,GAAQ7+B,EA9C1C,CAgDJ,CACA,OAAO03S,CACX,EAEAU,iBAAkB,SAASC,GAEvB,IADA,IAAiCjqL,EAAGvvF,EAAhCy5Q,EAAW,IAAI7uB,EACVvpR,EAAI,EAAGA,EAAI1E,KAAK66Q,OAAOrzQ,SAAU9C,EAAG,CACzC,IAAIy3S,EAAaU,EAAan4S,GAC9B,GAAKy3S,EAAL,CAIA,IAAKvpL,EAAI,EAAGA,EAAIupL,EAAW30S,OAAQorH,IAC/BvvF,EAAO84Q,EAAWvpL,GACbkqL,EAAStvB,YAAYnqP,IACtBrjC,KAAK+8S,WAAW15Q,EAAMy5Q,EAAUp4S,GAKxC,IAAIF,EAAIqO,OAAOmqS,kBACf,IAAKpqL,EAAI,EAAGA,EAAIupL,EAAW30S,OAAQorH,IAAK,CACpCvvF,EAAO84Q,EAAWvpL,GAClB,IAAIqqL,EAAcj9S,KAAKi9S,YAAY55Q,GAC/B45Q,GAAej9S,KAAKk9S,eAAejtR,IAAIgtR,KAAiBv4S,IACxDF,EAAInB,KAAK8V,IAAI3U,EAAGs4S,EAAS7sR,IAAIgtR,GAAeH,EAAS7sR,IAAIoT,GAAQrjC,KAAK67S,WAAWoB,EAAa55Q,IAEtG,CACA,GAAI7+B,IAAMqO,OAAOmqS,kBAAmB,CAChC,IAAI9nS,EAAI,GACR,IAAK09G,EAAI,EAAGA,EAAIupL,EAAW30S,OAAQorH,IAAK,CACpCvvF,EAAO84Q,EAAWvpL,GAClB,IAAIg9J,EAAY,GAChBtJ,EAAM3wB,SAASi6B,EAAW5vR,KAAKw8S,QAAQvsR,IAAIoT,IAC3CijP,EAAM3wB,SAASi6B,EAAW5vR,KAAKy8S,UAAUxsR,IAAIoT,IAE7C,IAAK,IAAI1+B,EAAI,EAAGA,EAAIirR,EAAUpoR,OAAQ7C,IAAK,CACvC,IAAI+3S,EAAW9sB,EAAUjrR,GACrB3E,KAAKk9S,eAAejtR,IAAIysR,GAAYh4S,GACpCwQ,EAAEvT,KAAKm7S,EAAS7sR,IAAIoT,GAAQy5Q,EAAS7sR,IAAIysR,GAEjD,CACJ,CACAxnS,EAAE8G,OAEExX,EADa,IAAb0Q,EAAE1N,OACE,EAEC0N,EAAE1N,OAAS,GAAM,EAClB0N,EAAElV,KAAK28S,OAAOznS,EAAE1N,OAAQ,KAGvB0N,EAAElV,KAAK28S,OAAOznS,EAAE1N,OAAQ,GAAK,GAAK0N,EAAElV,KAAK28S,OAAOznS,EAAE1N,OAAQ,KAAO,CAE9E,CACA,IAAKorH,EAAI,EAAGA,EAAIupL,EAAW30S,OAAQorH,IAC/BvvF,EAAO84Q,EAAWvpL,GAClBkqL,EAAS5sR,IAAImT,EAAMy5Q,EAAS7sR,IAAIoT,GAAQ7+B,EA9C5C,CAgDJ,CACA,OAAOs4S,CACX,EAEAK,aAAc,WACV,IAAIC,EAAW,CAAE10S,MAAO,MACpBoO,EAAS9W,KAAKq9S,eAAeD,EAAU,GAE3C,OADAp9S,KAAKu8S,cAAgBa,EAAS10S,MACvBoO,CACX,EAEAwmS,cAAe,WACX,IAAIC,EAAY,CAAE70S,MAAO,MACrBoO,EAAS9W,KAAKq9S,eAAeE,GAAY,GAE7C,OADAv9S,KAAKk9S,eAAiBK,EAAU70S,MACzBoO,CACX,EAEAumS,eAAgB,SAASG,EAAUh5S,GAI/B,IAHA,IAAIi5S,EAAc,EACdC,EAAOF,EAAS90S,MAAQ,IAAIulR,EAEvBz7J,EAAI,EAAGA,EAAIxyH,KAAK66Q,OAAOrzQ,SAAUgrH,EAAG,CACzCirL,EAAcjrL,EAGd,IADA,IAAI4uH,EAAQphP,KAAK66Q,OAAOroJ,GACfI,EAAU,IAANpuH,EAAU,EAAI48O,EAAM55O,OAAS,EAAGorH,GAAK,GAAKA,EAAIwuH,EAAM55O,OAAQorH,GAAKpuH,EAAG,CAC7E,IAAI6+B,EAAO+9M,EAAMxuH,GACjB,GAAK8qL,EAAKlwB,YAAYnqP,GAWlBo6Q,EAAcC,EAAKztR,IAAIoT,QATvB,GADAq6Q,EAAKxtR,IAAImT,EAAMo6Q,GACXp6Q,EAAKyrP,UAEL,IADA,IAAI6uB,EAAS39S,KAAK49S,aAAav6Q,GACtBkzP,EAAK,EAAGA,EAAKonB,EAAOn2S,OAAQ+uR,IAAM,CACvC,IAAIsnB,EAAQF,EAAOpnB,GACnBmnB,EAAKxtR,IAAI2tR,EAAOJ,EACpB,CAMZ,CACJ,CAGA,IADA,IAAIK,EAAQ,GACHv2S,EAAI,EAAGA,EAAIvH,KAAK66Q,OAAOrzQ,OAAQD,IACpCu2S,EAAMn8S,KAAK,MASf,OAPA+7S,EAAKp8S,SAAQ,SAAS+hC,EAAM06Q,GACE,OAAtBD,EAAMC,KACND,EAAMC,GAAc,IAExBD,EAAMC,GAAYp8S,KAAK0hC,EAC3B,IAEOy6Q,CACX,EACAE,kBAAmB,WACf,MAA8C,OAAvCh+S,KAAKmH,QAAQ6pS,QAAQn4R,eAAiE,SAAvC7Y,KAAKmH,QAAQ6pS,QAAQn4R,eAAmE,aAAvC7Y,KAAKmH,QAAQ6pS,QAAQn4R,aAChI,EAEAolS,oBAAqB,WACjB,MAA8C,UAAvCj+S,KAAKmH,QAAQ6pS,QAAQn4R,eAAoE,SAAvC7Y,KAAKmH,QAAQ6pS,QAAQn4R,eAAmE,eAAvC7Y,KAAKmH,QAAQ6pS,QAAQn4R,aACnI,EACAqlS,oBAAqB,WAEjB,MAA8C,UAAvCl+S,KAAKmH,QAAQ6pS,QAAQn4R,eAAoE,SAAvC7Y,KAAKmH,QAAQ6pS,QAAQn4R,aAClF,EACA0iS,kBAAmB,WACf,IAAIh0S,EAAGirH,EAAGnvF,EAAM+9M,EAAOxuH,EAAGonI,EAE1B,IAAKxnI,EAAI,EAAGA,EAAIxyH,KAAK66Q,OAAOrzQ,SAAUgrH,GAClC4uH,EAAQphP,KAAK66Q,OAAOroJ,IACdx2G,KAAKhc,KAAKm+S,uBAIpB,IADAn+S,KAAK47S,aAAe,GACfppL,EAAI,EAAGA,EAAIxyH,KAAK66Q,OAAOrzQ,SAAUgrH,EAGlC,IAFA4uH,EAAQphP,KAAK66Q,OAAOroJ,GACpBxyH,KAAK47S,aAAappL,GAAK,GAClBI,EAAI,EAAGA,EAAIwuH,EAAM55O,SAAUorH,GAC5BvvF,EAAO+9M,EAAMxuH,IACR+oL,WAAa/oL,EAClB5yH,KAAK47S,aAAappL,GAAGI,GAAK5yH,KAAKmH,QAAQ8pS,aACnCr+K,EAAIwuH,EAAM55O,OAAS,IACfxH,KAAKg+S,oBACLh+S,KAAK47S,aAAappL,GAAGI,KAAOvvF,EAAKt3B,MAAQq1O,EAAMxuH,EAAI,GAAG7mH,OAAS,EAG/D/L,KAAK47S,aAAappL,GAAGI,KAAOvvF,EAAKr3B,OAASo1O,EAAMxuH,EAAI,GAAG5mH,QAAU,GAkCjF,IA5BAhM,KAAKy8S,UAAY,IAAIxuB,EACrBjuR,KAAKw8S,QAAU,IAAIvuB,EACnB3H,EAAMhlR,QAAQtB,KAAK03R,MAAMtrO,OAAO,SAAS/oB,GACrCrjC,KAAKy8S,UAAUvsR,IAAImT,EAAM,IACzBrjC,KAAKw8S,QAAQtsR,IAAImT,EAAM,GAC3B,GAAGrjC,MACHsmR,EAAMhlR,QAAQtB,KAAK03R,MAAMh4C,OAAO,SAASpL,GACrC,IAAIt7L,EAASs7L,EAAKzmO,OACdwqD,EAAOi8K,EAAKjtO,OACZ8mB,EAAO,KAAMC,EAAK,KAClB4qB,EAAOooM,MAAQ/oL,EAAK+oL,OACpBjzN,EAAOmmN,EAAKzmO,OACZugB,EAAKkmN,EAAKjtO,SAGV+mB,EAAKkmN,EAAKzmO,OACVsgB,EAAOmmN,EAAKjtO,QAEhBrH,KAAKy8S,UAAUxsR,IAAI7B,GAAIzsB,KAAKwsB,GAC5BnuB,KAAKw8S,QAAQvsR,IAAI9B,GAAMxsB,KAAKysB,EAChC,GAAGpuB,MACHA,KAAKy8S,UAAUruB,cAAa,SAAS5hN,GACjCA,EAAKxwD,KAAKhc,KAAKm+S,sBACnB,GAAGn+S,MACHA,KAAKw8S,QAAQpuB,cAAa,SAAS5hN,GAC/BA,EAAKxwD,KAAKhc,KAAKm+S,sBACnB,GAAGn+S,MAEEwyH,EAAI,EAAGA,EAAIxyH,KAAK66Q,OAAOrzQ,OAAS,IAAKgrH,EAEtC,IADA4uH,EAAQphP,KAAK66Q,OAAOroJ,GACfwnI,EAAI,EAAGA,EAAI5Y,EAAM55O,OAAS,EAAGwyP,IAAK,CACnC,IAAIokD,EAAch9D,EAAM4Y,GACxB,GAAKokD,EAAYtvB,UAAjB,CAIA,IAAIuvB,EAAWr+S,KAAKy8S,UAAUxsR,IAAImuR,GAAa,GAC/C,GAAKC,EAASvvB,UAId,IAAKl8J,EAAIonI,EAAI,EAAGpnI,EAAIwuH,EAAM55O,SAAUorH,EAEhC,IADAvvF,EAAO+9M,EAAMxuH,IACHk8J,UAAV,CAIA,IAAIwvB,EAAWt+S,KAAKy8S,UAAUxsR,IAAIoT,GAAM,GACxC,GAAKi7Q,EAASxvB,WAIVuvB,EAAS7D,aAAe8D,EAAS9D,aAAc,CAC/C,IAAInlN,EAAMgpN,EAAS7D,aACnB6D,EAAS7D,aAAe8D,EAAS9D,aACjC8D,EAAS9D,aAAenlN,EACxB,IAAIymN,EAAKuC,EAAS1C,WACdI,EAAKuC,EAAS3C,WAClB37S,KAAK66Q,OAAOroJ,EAAI,GAAGspL,GAAMwC,EACzBt+S,KAAK66Q,OAAOroJ,EAAI,GAAGupL,GAAMsC,EACzBA,EAAS1C,WAAaI,EACtBuC,EAAS3C,WAAaG,CAC1B,CAjBA,CAXJ,CA8BJ,CAIJ,IAAIG,EAAcj8S,KAAKm9S,eACnBN,EAAe78S,KAAKs9S,gBAGpBpB,EAAUl8S,KAAKg8S,iBAAiBC,GAChCa,EAAW98S,KAAK48S,iBAAiBC,GACjCz3S,EAAI,IAAI6oR,EACZ3H,EAAMhlR,QAAQtB,KAAK03R,MAAMtrO,OAAO,SAAS/oB,GACrCj+B,EAAE8qB,IAAImT,GAAO64Q,EAAQjsR,IAAIoT,GAAQy5Q,EAAS7sR,IAAIoT,IAAS,EAC3D,IAGA,IAAIshB,EAAQ,IAAIspO,EACZswB,EAAS,IAAItwB,EACjB,IAAKz7J,EAAI,EAAGA,EAAIxyH,KAAK66Q,OAAOrzQ,SAAUgrH,EAAG,CACrC4uH,EAAQphP,KAAK66Q,OAAOroJ,GACpB,IAAIgsL,GAAiB,EACrB,IAAK5rL,EAAI,EAAGA,EAAIwuH,EAAM55O,SAAUorH,EAC5BvvF,EAAO+9M,EAAMxuH,GACbjuE,EAAMz0B,IAAImT,EAAM,GAChBk7Q,EAAOruR,IAAImT,GAAM,GACbA,EAAKyrP,aACkB,IAAnB0vB,GAGKA,IAAkB5rL,EAAI,IAIbA,EACdjuE,EAAMz0B,IAAIkxN,EAAMo9D,GAAgB,GAC5Bp5S,EAAE6qB,IAAIoT,GAAQj+B,EAAE6qB,IAAImxN,EAAMo9D,MAAoBx+S,KAAK67S,WAAWz6D,EAAMo9D,GAAgBn7Q,GACpFk7Q,EAAOruR,IAAIkxN,EAAMo9D,IAAgB,GAGjCD,EAAOruR,IAAIkxN,EAAMo9D,IAAgB,IAZrCA,EAAgB5rL,EAkBhC,CAEA0zJ,EAAMhlR,QADW,CAAC,GAAI,IACI,SAASkD,GAE/B,IADA,IACSguH,EADS,IAANhuH,EAAU,EAAIxE,KAAK66Q,OAAOrzQ,OAAS,EAC3BgrH,GAAK,GAAKA,EAAIxyH,KAAK66Q,OAAOrzQ,OAAQgrH,GAAKhuH,EAAG,CAC1D,IAAI48O,EAAQphP,KAAK66Q,OAAOroJ,GACpBisL,EAAoBz+S,KAAK0+S,kBAAkBt9D,GAC3Cu9D,EAAe,KACfC,EAAW,KACf,IAA2B,IAAvBH,EAGA,IAFAE,EAAev9D,EAAMq9D,GACrBG,EAAW,GACNr3S,EAAI,EAAGA,EAAIk3S,EAAmBl3S,IAC/Bq3S,EAASj9S,KAAKy/O,EAAM75O,SAIxBo3S,EAAe,KACfC,EAAWx9D,EAEf,GAAIw9D,EAASp3S,OAAS,EAAG,CAErB,IADAxH,KAAK6+S,WAAWz5S,EAAG,KAAMu5S,EAAcn6S,EAAGo6S,GACrCr3S,EAAI,EAAGA,EAAIq3S,EAASp3S,OAAS,IAAKD,EACnCvH,KAAKy7S,WAAWmD,EAASr3S,GAAIq3S,EAASr3S,EAAI,GAAInC,EAAE6qB,IAAI2uR,EAASr3S,EAAI,IAAMnC,EAAE6qB,IAAI2uR,EAASr3S,KAEtFo3S,GACA3+S,KAAKy7S,WAAWmD,EAASA,EAASp3S,OAAS,GAAIm3S,EAAcv5S,EAAE6qB,IAAI0uR,GAAgBv5S,EAAE6qB,IAAI2uR,EAASA,EAASp3S,OAAS,IAE5H,CAEA,KAAOm3S,GAAc,CACjB,IAAIG,EAAa9+S,KAAK++S,gBAAgB39D,EAAOu9D,GAC7C,GAAKG,GAcA,GAAIn6P,EAAM10B,IAAI0uR,KAAkBn6S,EAAG,CACpCi6S,EAAoBE,EAAahD,WACjC,IAAIqD,EAAkBF,EAAWnD,WAEjC,IADAiD,EAAW,GACNr3S,EAAIk3S,EAAoB,EAAGl3S,EAAIy3S,EAAiBz3S,IACjDq3S,EAASj9S,KAAKy/O,EAAM75O,IAEpBq3S,EAASp3S,OAAS,GAClBxH,KAAK6+S,WAAWz5S,EAAGu5S,EAAcG,EAAYt6S,EAAGo6S,GAEpDL,EAAOruR,IAAIyuR,GAAc,EAC7B,MAzBiB,CAGb,IAFAF,EAAoBE,EAAahD,WACjCiD,EAAW,GACNr3S,EAAIk3S,EAAoB,EAAGl3S,EAAI65O,EAAM55O,OAAQD,IAC9Cq3S,EAASj9S,KAAKy/O,EAAM75O,IAExB,GAAIq3S,EAASp3S,OAAS,EAAG,CAErB,IADAxH,KAAK6+S,WAAWz5S,EAAGu5S,EAAc,KAAMn6S,EAAGo6S,GACrCr3S,EAAI,EAAGA,EAAIq3S,EAASp3S,OAAS,IAAKD,EACnCvH,KAAKy7S,WAAWmD,EAASr3S,GAAIq3S,EAASr3S,EAAI,GAAInC,EAAE6qB,IAAI2uR,EAASr3S,EAAI,IAAMnC,EAAE6qB,IAAI2uR,EAASr3S,KAE1FvH,KAAKy7S,WAAWkD,EAAcC,EAAS,GAAIx5S,EAAE6qB,IAAI2uR,EAAS,IAAMx5S,EAAE6qB,IAAI0uR,GAC1E,CACJ,CAaAA,EAAeG,CACnB,CACA9+S,KAAKi/S,iBAAiBzsL,EAAGhuH,EAAGmgD,EAAO45P,EACvC,CACJ,GAAGv+S,MAGH,IACsC8E,EAAG08I,EADrC09J,EAAiBl/S,KAAKk+S,sBAAwB,EAAIl+S,KAAK66Q,OAAOrzQ,OAAS,EASvE23S,EAAiBn/S,KAAKk+S,sBAAwB,GAAM,EAAGpgS,EAAS,EAKpE,SAASshS,EAAch+D,EAAO5/F,GAE1B,IADA,IAAIx1I,EAAS6G,OAAOiuJ,UACXluC,EAAI,EAAGA,EAAIwuH,EAAM55O,SAAUorH,EAAG,CACnC,IAAIvvF,EAAO+9M,EAAMxuH,GAEb5mH,EADAw1I,EAAIw8J,oBACK36S,KAAK8V,IAAInN,EAAQq3B,EAAKr3B,QAGtB3I,KAAK8V,IAAInN,EAAQq3B,EAAKt3B,MAEvC,CACA,OAAOC,CACX,CAEA,IAAKzE,EAAI23S,EA3B6Bp6S,EA2BUyC,GA3BPi6I,EA2BUxhJ,MA1BvCk+S,sBACGp5S,EAAI08I,EAAIq5H,OAAOrzQ,OAGf1C,GAAK,EAsBsCyC,GAAK43S,EAAgB,CAE3E,IAAInzS,EAASozS,EADbh+D,EAAQphP,KAAK66Q,OAAOtzQ,GACcvH,MAElC,IAAK4yH,EAAI,EAAGA,EAAIwuH,EAAM55O,SAAUorH,EAC5BvvF,EAAO+9M,EAAMxuH,GACT5yH,KAAKg+S,qBACL36Q,EAAKj+B,EAAIA,EAAE6qB,IAAIoT,GACfA,EAAKl/B,EAAI2Z,EAAS9R,EAAS,IAG3Bq3B,EAAKj+B,EAAI0Y,EAAS9R,EAAS,EAC3Bq3B,EAAKl/B,EAAIiB,EAAE6qB,IAAIoT,IAIvBvlB,GAAU9d,KAAKmH,QAAQuqS,gBAAkB1lS,CAC7C,CACJ,EAEAizS,iBAAkB,SAASzsL,EAAGhuH,EAAGmgD,EAAO45P,GACpC,KAAI/rL,EAAIhuH,EAAI,GAAKguH,EAAIhuH,GAAKxE,KAAK66Q,OAAOrzQ,QAMtC,IAFA,IAAI63S,EAAa,KAAMC,EAAmB,KACtCl+D,EAAQphP,KAAK66Q,OAAOroJ,EAAIhuH,GACnBouH,EAAI,EAAGA,EAAIwuH,EAAM55O,SAAUorH,EAAG,CACnC,IAAI2sL,EAAan+D,EAAMxuH,GACvB,GAAI2sL,EAAWzwB,UAAW,CACtB,IAAI0wB,EAAmBx/S,KAAKy/S,mBAAmBF,EAAY/sL,GAC3D,GAAIgtL,EAAiB1wB,UAAW,CAC5B,GAAIuwB,EAAY,CAKZ,IAJA,IAAIxsL,EAAI0rL,EAAOtuR,IAAIqvR,GACfI,EAAS1/S,KAAK66Q,OAAOroJ,GACrBspL,EAAKwD,EAAiB3D,WACtBI,EAAKyD,EAAiB7D,WACjBp0S,EAAIu0S,EAAK,EAAGv0S,EAAIw0S,IAAMx0S,EACvBm4S,EAAOn4S,GAAGunR,YACVj8J,EAAIA,GAAK0rL,EAAOtuR,IAAIyvR,EAAOn4S,KAGnC,GAAIsrH,EAAG,CACHluE,EAAMz0B,IAAImvR,EAAY76S,GAGtB,IAFA,IAAIm7S,EAAKN,EAAW1D,WAChBiE,EAAKL,EAAW5D,WACX5wQ,EAAI40Q,EAAK,EAAG50Q,EAAI60Q,IAAM70Q,EACvBq2M,EAAMr2M,GAAG+jP,WACTnqO,EAAMz0B,IAAIkxN,EAAMr2M,GAAIvmC,EAGhC,CACJ,CACA66S,EAAaE,EACbD,EAAmBE,CACvB,CACJ,CACJ,CACJ,EAEAC,mBAAoB,SAASp8Q,EAAMmvF,GAC/B,IAAIkqL,EAAW18S,KAAKw8S,QAAQvsR,IAAIoT,GAAM,GACtC,OAAIq5Q,EAASt7D,QAAU5uH,IAGvBkqL,EAAW18S,KAAKy8S,UAAUxsR,IAAIoT,GAAM,IACvB+9M,QAAU5uH,EAHZkqL,EAMJ,IACX,EAEAmC,WAAY,SAASz5S,EAAGu5S,EAAcG,EAAYv/Q,EAAKq/Q,GAKnD,GAJwB,IAApBA,EAASp3S,QACTxH,KAAK6/S,gBAAgBz6S,EAAGu5S,EAAcG,EAAYv/Q,EAAKq/Q,EAAS,IAGhEA,EAASp3S,OAAS,EAAG,CACrB,IAAI0qH,EAAI0sL,EAASp3S,OAAQrC,EAAInF,KAAK28S,OAAOzqL,EAAG,GAC5ClyH,KAAK6+S,WAAWz5S,EAAGu5S,EAAcG,EAAYv/Q,EAAKq/Q,EAAS/3S,MAAM,EAAG1B,IACpEnF,KAAK6+S,WAAWz5S,EAAGu5S,EAAcG,EAAYv/Q,EAAKq/Q,EAAS/3S,MAAM1B,IACjEnF,KAAK8/S,iBAAiB16S,EAAGu5S,EAAcG,EAAYv/Q,EAAKq/Q,EAC5D,CACJ,EAEAiB,gBAAiB,SAASz6S,EAAGu5S,EAAcG,EAAYv/Q,EAAK8D,GACxD,IAAIusP,GAAqB,IAATrwP,EAAav/B,KAAKy8S,UAAUxsR,IAAIoT,GAAQrjC,KAAKw8S,QAAQvsR,IAAIoT,GAErEuvF,EAAIg9J,EAAUpoR,OACR,IAANorH,IACIA,EAAI,GAAM,EACVxtH,EAAE8qB,IAAImT,EAAMj+B,EAAE6qB,IAAI2/P,EAAU5vR,KAAK28S,OAAO/pL,EAAG,MAG3CxtH,EAAE8qB,IAAImT,GAAOj+B,EAAE6qB,IAAI2/P,EAAU5vR,KAAK28S,OAAO/pL,EAAG,GAAK,IAAMxtH,EAAE6qB,IAAI2/P,EAAU5vR,KAAK28S,OAAO/pL,EAAG,MAAQ,GAG9F+rL,GACAv5S,EAAE8qB,IAAImT,EAAMhgC,KAAK8V,IAAI/T,EAAE6qB,IAAIoT,GAAOj+B,EAAE6qB,IAAI0uR,GAAgB3+S,KAAK67S,WAAW8C,EAAct7Q,KAEtFy7Q,GACA15S,EAAE8qB,IAAImT,EAAMhgC,KAAKqT,IAAItR,EAAE6qB,IAAIoT,GAAOj+B,EAAE6qB,IAAI6uR,GAAc9+S,KAAK67S,WAAWx4Q,EAAMy7Q,KAGxF,EAEAgB,iBAAkB,SAAS16S,EAAGu5S,EAAcG,EAAYv/Q,EAAKq/Q,GACzD,IAGmBr3S,EAAG7C,EAAGkuH,EAAGg9J,EAAW8sB,EAAUqD,EAH7C7tL,EAAI0sL,EAASp3S,OAAQrC,EAAInF,KAAK28S,OAAOzqL,EAAG,GAGxC8tL,EAAW,GACf,IAAKz4S,EAAI,EAAGA,EAAIpC,IAAKoC,EAAG,CAGpB,IAFA7C,EAAI,EACJkrR,GAAqB,IAATrwP,EAAav/B,KAAKy8S,UAAUxsR,IAAI2uR,EAASr3S,IAAMvH,KAAKw8S,QAAQvsR,IAAI2uR,EAASr3S,IAChFqrH,EAAI,EAAGA,EAAIg9J,EAAUpoR,SAAUorH,EAChC8pL,EAAW9sB,EAAUh9J,GACjBxtH,EAAE6qB,IAAIysR,IAAat3S,EAAE6qB,IAAI2uR,EAASr3S,IAClC7C,KAGAA,IACAs7S,EAASr+S,KAAK,CAAEmD,EAAGM,EAAE6qB,IAAIysR,GAAY18S,KAAK67S,WAAW+C,EAASr3S,GAAIq3S,EAASz5S,EAAI,IAAK6M,EAAG,KAG/FguS,EAASr+S,KAAK,CAAEmD,EAAGM,EAAE6qB,IAAI2uR,EAASr3S,IAAMvH,KAAK67S,WAAW+C,EAASr3S,GAAIq3S,EAASz5S,EAAI,IAAK6M,EAAGtN,GAC9F,CACIi6S,GACAqB,EAASr+S,KAAK,CAAEmD,EAAGM,EAAE6qB,IAAI0uR,GAAgB3+S,KAAK67S,WAAW8C,EAAcC,EAASz5S,EAAI,IAAK6M,EAAGa,OAAOukH,YAEvG4oL,EAAShkS,KAAKhc,KAAKigT,6BAGnB,IAAIC,EAAY,GAChB,IAAK34S,EAAIpC,EAAGoC,EAAI2qH,IAAK3qH,EAAG,CAGpB,IAFA7C,EAAI,EACJkrR,GAAqB,IAATrwP,EAAav/B,KAAKy8S,UAAUxsR,IAAI2uR,EAASr3S,IAAMvH,KAAKw8S,QAAQvsR,IAAI2uR,EAASr3S,IAChFqrH,EAAI,EAAGA,EAAIg9J,EAAUpoR,SAAUorH,EAChC8pL,EAAW9sB,EAAUh9J,GACjBxtH,EAAE6qB,IAAIysR,IAAat3S,EAAE6qB,IAAI2uR,EAASr3S,IAClC7C,KAGAA,IACAw7S,EAAUv+S,KAAK,CAAEmD,EAAGM,EAAE6qB,IAAIysR,GAAY18S,KAAK67S,WAAW+C,EAASr3S,GAAIq3S,EAASz5S,IAAK6M,EAAG,KAG5FkuS,EAAUv+S,KAAK,CAAEmD,EAAGM,EAAE6qB,IAAI2uR,EAASr3S,IAAMvH,KAAK67S,WAAW+C,EAASr3S,GAAIq3S,EAASz5S,IAAK6M,EAAGtN,GAC3F,CACIo6S,GACAoB,EAAUv+S,KAAK,CAAEmD,EAAGM,EAAE6qB,IAAI6uR,GAAc9+S,KAAK67S,WAAWiD,EAAYF,EAASz5S,IAAK6M,EAAGa,OAAOukH,YAEhG8oL,EAAUlkS,KAAKhc,KAAKmgT,4BAIpB,IAFA,IAAIC,EAAU,EAAGC,EAAW,EACxBr7S,EAAIhF,KAAK67S,WAAW+C,EAASz5S,EAAI,GAAIy5S,EAASz5S,IAC3CC,EAAE6qB,IAAI2uR,EAASz5S,IAAMC,EAAE6qB,IAAI2uR,EAASz5S,EAAI,IAAMH,GACjD,GAAIo7S,EAAUC,EAAU,CACpB,GAAwB,IAApBL,EAASx4S,OAAc,CACvBpC,EAAE8qB,IAAI0uR,EAASz5S,EAAI,GAAIC,EAAE6qB,IAAI2uR,EAASz5S,IAAMH,GAC5C,KACJ,CAGIo7S,IADAL,EAAOC,EAAS5pS,SACSpE,EACzB5M,EAAE8qB,IAAI0uR,EAASz5S,EAAI,GAAI46S,EAAKj7S,GAC5BM,EAAE8qB,IAAI0uR,EAASz5S,EAAI,GAAI9B,KAAK8V,IAAI/T,EAAE6qB,IAAI2uR,EAASz5S,EAAI,IAAKC,EAAE6qB,IAAI2uR,EAASz5S,IAAMH,GAErF,KACK,CACD,GAAyB,IAArBk7S,EAAU14S,OAAc,CACxBpC,EAAE8qB,IAAI0uR,EAASz5S,GAAIC,EAAE6qB,IAAI2uR,EAASz5S,EAAI,IAAMH,GAC5C,KACJ,CAGIq7S,IADAN,EAAOG,EAAU9pS,SACUpE,EAC3B5M,EAAE8qB,IAAI0uR,EAASz5S,GAAI46S,EAAKj7S,GACxBM,EAAE8qB,IAAI0uR,EAASz5S,GAAI9B,KAAKqT,IAAItR,EAAE6qB,IAAI2uR,EAASz5S,IAAKC,EAAE6qB,IAAI2uR,EAASz5S,EAAI,IAAMH,GAEjF,CAEJ,IAAKuC,EAAIpC,EAAI,EAAGoC,GAAK,EAAGA,IACpBnC,EAAE8qB,IAAI0uR,EAASr3S,GAAIlE,KAAKqT,IAAItR,EAAE6qB,IAAI2uR,EAASr3S,IAAKnC,EAAE6qB,IAAI2uR,EAASz5S,EAAI,IAAMnF,KAAK67S,WAAW+C,EAASr3S,GAAIq3S,EAASz5S,EAAI,MAEvH,IAAKoC,EAAIpC,EAAI,EAAGoC,EAAI2qH,EAAG3qH,IACnBnC,EAAE8qB,IAAI0uR,EAASr3S,GAAIlE,KAAK8V,IAAI/T,EAAE6qB,IAAI2uR,EAASr3S,IAAKnC,EAAE6qB,IAAI2uR,EAASz5S,IAAMnF,KAAK67S,WAAW+C,EAASr3S,GAAIq3S,EAASz5S,KAEnH,EAEAi3S,UAAW,SAAS/4Q,EAAM64Q,EAASoE,GAC/B,IAAIjrN,EAAMxiF,OAAOmqS,kBACjB12B,EAAMhlR,QAAQtB,KAAKugT,cAAcl9Q,IAAO,SAASrxB,GAC7C,IAAIirS,EAAcj9S,KAAKi9S,YAAYjrS,GAC/BirS,GAAej9S,KAAKu8S,cAActsR,IAAIgtR,KAAiBj9S,KAAKu8S,cAActsR,IAAIje,KACzEkqS,EAAQ1uB,YAAYyvB,IACrBj9S,KAAKo8S,UAAUa,EAAaf,EAASoE,GAEzCjrN,EAAMhyF,KAAK8V,IAAIk8E,EAAK6mN,EAAQjsR,IAAIgtR,GAAej9S,KAAK67S,WAAWoB,EAAajrS,IAEpF,GAAGhS,MACCq1F,IAAQxiF,OAAOmqS,oBACf3nN,EAAM,GAEVixL,EAAMhlR,QAAQtB,KAAKugT,cAAcl9Q,IAAO,SAASrxB,GAC7CkqS,EAAQhsR,IAAIle,EAAGqjF,EACnB,GACJ,EAEA0nN,WAAY,SAAS15Q,EAAMy5Q,EAAU0D,GACjC,IAAInrN,EAAMxiF,OAAOwpS,kBACjB/1B,EAAMhlR,QAAQtB,KAAKugT,cAAcl9Q,IAAO,SAASrxB,GAC7C,IAAIsqS,EAAet8S,KAAKs8S,aAAatqS,GACjCsqS,GAAgBt8S,KAAKk9S,eAAejtR,IAAIqsR,KAAkBt8S,KAAKk9S,eAAejtR,IAAIje,KAC7E8qS,EAAStvB,YAAY8uB,IACtBt8S,KAAK+8S,WAAWT,EAAcQ,EAAU0D,GAE5CnrN,EAAMhyF,KAAKqT,IAAI2+E,EAAKynN,EAAS7sR,IAAIqsR,GAAgBt8S,KAAK67S,WAAW7pS,EAAGsqS,IAE5E,GAAGt8S,MACCq1F,IAAQxiF,OAAOwpS,oBACfhnN,EAAM,GAEVixL,EAAMhlR,QAAQtB,KAAKugT,cAAcl9Q,IAAO,SAASrxB,GAC7C8qS,EAAS5sR,IAAIle,EAAGqjF,EACpB,GACJ,EAEA4nN,YAAa,SAAS55Q,GAClB,IAAI+9M,EAAQphP,KAAK66Q,OAAOx3O,EAAK+9M,OACzBu6D,EAAat4Q,EAAKs4Q,WACtB,OAAsB,IAAfA,EAAmB,KAAOv6D,EAAMu6D,EAAa,EACxD,EAEAW,aAAc,SAASj5Q,GACnB,IAAI+9M,EAAQphP,KAAK66Q,OAAOx3O,EAAK+9M,OACzBu6D,EAAat4Q,EAAKs4Q,WACtB,OAAOA,IAAev6D,EAAM55O,OAAS,EAAI,KAAO45O,EAAMu6D,EAAa,EAEvE,EAEA4E,cAAe,SAASl9Q,GACpB,OAAOA,EAAKyrP,UAAY9uR,KAAK49S,aAAav6Q,GAAQ,CAACA,EACvD,EAEAi4Q,aAAc,WACV,IAAI/zS,EAAGirH,EAAG6/J,EAAIjxC,EAAO/9M,EAErB,IAAKmvF,EAAI,EAAGA,EAAIxyH,KAAK66Q,OAAOrzQ,OAAQgrH,IAGhC,IAFA4uH,EAAQphP,KAAK66Q,OAAOroJ,GAEf6/J,EAAK,EAAGA,EAAKjxC,EAAM55O,OAAQ6qR,KAC5BhvP,EAAO+9M,EAAMixC,IACRioB,iBAAmBj3Q,EAAK82Q,kBAC7B92Q,EAAKk3Q,mBAAqBl3Q,EAAK62Q,oBAQvC,IADA,IACSuG,EAAK,EAAGA,EADS,EACiBA,IAAM,CAC7C,IAAKl5S,EAAIvH,KAAK66Q,OAAOrzQ,OAAS,EAAGD,GAAK,EAAGA,IACrCvH,KAAK0gT,aAAY,EAAOn5S,GAG5B,IAAKA,EAAI,EAAGA,EAAIvH,KAAK66Q,OAAOrzQ,OAAS,EAAGD,IACpCvH,KAAK0gT,aAAY,EAAMn5S,EAE/B,CAGA,IAAIo5S,EAAU9tS,OAAOukH,UACrB,IAAK5E,EAAI,EAAGA,EAAIxyH,KAAK66Q,OAAOrzQ,OAAQgrH,IAGhC,IAFA4uH,EAAQphP,KAAK66Q,OAAOroJ,GAEf6/J,EAAK,EAAGA,EAAKjxC,EAAM55O,OAAQ6qR,IAC5BhvP,EAAO+9M,EAAMixC,GACbsuB,EAAUt9S,KAAKqT,IAAIiqS,EAASt9Q,EAAKm3Q,cAIzC,GAAImG,EAAU,EACV,IAAKnuL,EAAI,EAAGA,EAAIxyH,KAAK66Q,OAAOrzQ,OAAQgrH,IAGhC,IAFA4uH,EAAQphP,KAAK66Q,OAAOroJ,GAEf6/J,EAAK,EAAGA,EAAKjxC,EAAM55O,OAAQ6qR,KAC5BhvP,EAAO+9M,EAAMixC,IACRmoB,aAAen3Q,EAAKm3Q,aAAemG,CAIxD,EAQAD,YAAa,SAASvyR,EAAMizN,GACxB,IAAIw/D,EACAC,EAGAA,EADA1yR,EACanuB,KAAK66Q,OAAO+lC,EAAcx/D,EAAQ,GAGlCphP,KAAK66Q,OAAO+lC,EAAcx/D,EAAQ,GAKnD,IADA,IAAIt7N,EAAS,GACJ8sG,EAAI,EAAGA,EAAIiuL,EAAWr5S,OAAQorH,IACnC9sG,EAAOnkB,KAAKk/S,EAAWjuL,IAE3B9sG,EAAO9J,MAAK,SAAS43Q,EAAIC,GACrB,IAAIitB,GAAcltB,EAAG0mB,iBAAmB1mB,EAAG2mB,oBAAsB,EAC7DwG,GAAcltB,EAAGymB,iBAAmBzmB,EAAG0mB,oBAAsB,EAEjE,OAAIl3S,KAAKoU,IAAIqpS,EAAaC,GAAc,KAC7B,EAEPD,EAAaC,EACN,GAEH,CACZ,IAGAz6B,EAAMhlR,QAAQwkB,GAAQ,SAASud,GAC3B,IAAI29Q,EAAc39Q,EAAKm3Q,aACnByG,EAAiBjhT,KAAKkhT,eAAe79Q,GACrC89Q,GAAgB99Q,EAAKi3Q,iBAAmBj3Q,EAAKk3Q,oBAAsB,EAEvE,KAAIl3S,KAAKoU,IAAIupS,EAAcC,GAAkB,MAKzC59S,KAAKoU,IAAIupS,EAAcC,GAAkB,OAK7C,GAAID,EAAcC,EAGd,KAAOD,EAAcC,GACZjhT,KAAKohT,UAAU/9Q,EAAMw9Q,EAAYM,IAItCH,EAAc39Q,EAAKm3Q,kBAMvB,KAAOwG,EAAcC,GACZjhT,KAAKqhT,SAASh+Q,EAAMw9Q,EAAYM,IAIrCH,EAAc39Q,EAAKm3Q,YAG/B,GAAGx6S,MAIC4gT,EAAc,GACd5gT,KAAKshT,aAAaV,EAAc,GAEhCA,EAAc5gT,KAAK66Q,OAAOrzQ,OAAS,GACnCxH,KAAKuhT,WAAWX,EAAc,EAEtC,EAQAQ,UAAW,SAAS/9Q,EAAM+9M,EAAOogE,GAC7B,IAAIloS,EAAQgtQ,EAAM3wQ,QAAQyrO,EAAO/9M,GACjC,GAAI/pB,IAAU8nO,EAAM55O,OAAS,EAGzB,OADA67B,EAAKm3Q,aAAen3Q,EAAKm3Q,aAAe,IACjC,EAGX,IAAIiH,EAAYrgE,EAAM9nO,EAAQ,GAC1BooS,GAAqBD,EAAUnH,iBAAmBmH,EAAUlH,oBAAsB,EAGtF,OAAIkH,EAAUjH,aAAen3Q,EAAKm3Q,aAAe,GAC7Cn3Q,EAAKm3Q,aAAen3Q,EAAKm3Q,aAAe,IACjC,KAIPkH,EAAoBF,GACpBn+S,KAAKoU,IAAIiqS,EAAoBF,GAAY,UAKzCxhT,KAAKohT,UAAUK,EAAWrgE,EAAOogE,KACjCn+Q,EAAKm3Q,aAAen3Q,EAAKm3Q,aAAe,IACjC,GAIf,EAQA6G,SAAU,SAASh+Q,EAAM+9M,EAAOogE,GAC5B,IAAIloS,EAAQgtQ,EAAM3wQ,QAAQyrO,EAAO/9M,GACjC,GAAc,IAAV/pB,EAGA,OADA+pB,EAAKm3Q,aAAen3Q,EAAKm3Q,aAAe,IACjC,EAGX,IAAImH,EAAWvgE,EAAM9nO,EAAQ,GACzBsoS,GAAoBD,EAASrH,iBAAmBqH,EAASpH,oBAAsB,EAGnF,OAAIoH,EAASnH,aAAen3Q,EAAKm3Q,aAAe,GAC5Cn3Q,EAAKm3Q,aAAen3Q,EAAKm3Q,aAAe,IACjC,KAIPoH,EAAmBJ,GACnBn+S,KAAKoU,IAAImqS,EAAmBJ,GAAY,UAKxCxhT,KAAKqhT,SAASM,EAAUvgE,EAAOogE,KAC/Bn+Q,EAAKm3Q,aAAen3Q,EAAKm3Q,aAAe,IACjC,GAIf,EAEAqH,eAAgB,SAASx+Q,EAAMixM,GAC3Bt0O,KAAK8hT,cAAc5xR,IAAImT,EAAMixM,GACxBt0O,KAAK+hT,cAAcv0B,YAAYl5C,IAChCt0O,KAAK+hT,cAAc7xR,IAAIokN,EAAM,IAEjCt0O,KAAK+hT,cAAc9xR,IAAIqkN,GAAM3yO,KAAK0hC,EACtC,EAEAu6Q,aAAc,SAASv6Q,GACnB,OAAOrjC,KAAK+hT,cAAc9xR,IAAIjwB,KAAK8hT,cAAc7xR,IAAIoT,GACzD,EAKA83Q,SAAU,WACNn7S,KAAK+hT,cAAgB,IAAI9zB,EACzBjuR,KAAK8hT,cAAgB,IAAI7zB,EAEzB,IAAI7sC,EAAO/rJ,EAAK0+L,EAAS1wP,EAAM6uF,EAAGqgK,EAAShrR,EAAGirH,EAAGktH,EAAQ1/O,KAAK03R,MAAMh4C,MAAM74O,MAAM,GAC5Eg0Q,EAAS76Q,KAAK66Q,OAEdmnC,EAAuB,SAASC,EAASC,EAAW5tE,GACpDumC,EAAOonC,GAAS/G,QAAQgH,GAAarnC,EAAOonC,GAAS/G,QAAQgH,IAAc,GAC3ErnC,EAAOonC,GAAS/G,QAAQgH,GAAWvgT,KAAK2yO,EAC5C,EAEA,IAAK9hH,EAAI,EAAGA,EAAIktH,EAAMl4O,OAAQgrH,IAAK,CAC/B,IAAI8hH,EAAOoL,EAAMltH,GACbjnE,EAAI+oL,EAAKzmO,OACTrJ,EAAI8vO,EAAKjtO,OAET86S,EAAS52P,EAAE61L,MACXghE,EAAS59S,EAAE48O,MACXihE,EAAO92P,EAAEivP,aACT8H,EAAO99S,EAAEg2S,aAET1nQ,GAAQwvQ,EAAOD,GAAQh/S,KAAKoU,IAAI2qS,EAASD,GAEzCtvL,EAAItnE,EACR,GAAI42P,EAASC,EAAS,EAAG,CACrB,IAAK76S,EAAI46S,EAAS,EAAG56S,EAAI66S,EAAQ76S,IAAK,CAmClC,KAlCAwsR,EAAU,IAAI9oN,GACN7lE,EAAImmD,EAAEnmD,EACd2uR,EAAQ5vR,EAAIonD,EAAEpnD,EACd4vR,EAAQhoR,MAAQw/C,EAAEx/C,MAAQ,IAC1BgoR,EAAQ/nR,OAASu/C,EAAEv/C,OAAS,KAG5BqpF,GAAO9tF,EAAI66S,GAAUtvQ,EAAOuvQ,IAD5BjhE,EAAQy5B,EAAOtzQ,IAECC,SACZ6tF,EAAM+rJ,EAAM55O,QAIZ66S,GAAQxnC,EAAOsnC,GAAQ36S,OAAS,GAChC86S,GAAQznC,EAAOunC,GAAQ56S,OAAS,EAChC6tF,EAAM+rJ,EAAM55O,OAIE,IAAT66S,GAAuB,IAATC,IACnBjtN,EAAM,GAGV0+L,EAAQ3yC,MAAQ75O,EAChBwsR,EAAQqmB,YAAc,EACtBrmB,EAAQsmB,YAAc,EACtBtmB,EAAQomB,kBAAoB,EAC5BpmB,EAAQmmB,oBAAsB,EAC9BnmB,EAAQymB,aAAenlN,EACvB0+L,EAAQjF,WAAY,EAEpBxI,EAAMnpN,OAAOikL,EAAO2yC,EAAS1+L,GAGxB68B,EAAI78B,EAAM,EAAG68B,EAAIkvH,EAAM55O,OAAQ0qH,KAChC7uF,EAAO+9M,EAAMlvH,IACRsoL,aAAen3Q,EAAKm3Q,aAAe,GAG5CjoB,EAAU,IAAIrvC,EAAKrwH,EAAGkhK,IACdwuB,iBAAmB,EAE3BP,EAAqBz6S,EAAI,EAAGA,EAAGgrR,GAE/B1/J,EAAIkhK,EAGJ/zR,KAAK03R,MAAMvF,SAAS4B,GACpB/zR,KAAK03R,MAAMlF,QAAQD,GAEnBwB,EAAQz6Q,MAAQtZ,KAAK03R,MAAMtrO,MAAM5kD,OAAS,EAC1CxH,KAAK6hT,eAAe9tB,EAASz/C,EACjC,CAGA0tE,EAAqBI,EAAS,EAAGA,EAAQ7vB,GACzCj+C,EAAKg8C,aAAaz9J,GAClByhH,EAAKiuE,iBAAmBJ,EAASC,EAAS,CAC9C,MAAO,GAAID,EAASC,GAAU,EAAG,CAC7B,IAAK76S,EAAI46S,EAAS,EAAG56S,EAAI66S,EAAQ76S,IAAK,CAoClC,KAnCAwsR,EAAU,IAAI9oN,GACN7lE,EAAImmD,EAAEnmD,EACd2uR,EAAQ5vR,EAAIonD,EAAEpnD,EACd4vR,EAAQhoR,MAAQw/C,EAAEx/C,MAAQ,IAC1BgoR,EAAQ/nR,OAASu/C,EAAEv/C,OAAS,KAG5BqpF,GAAO9tF,EAAI46S,GAAUrvQ,EAAOuvQ,IAD5BjhE,EAAQy5B,EAAOtzQ,IAECC,SACZ6tF,EAAM+rJ,EAAM55O,QAIZ66S,GAAQxnC,EAAOsnC,GAAQ36S,OAAS,GAChC86S,GAAQznC,EAAOunC,GAAQ56S,OAAS,EAChC6tF,EAAM+rJ,EAAM55O,OAIE,IAAT66S,GAAuB,IAATC,IACnBjtN,EAAM,GAGV0+L,EAAQ3yC,MAAQ75O,EAChBwsR,EAAQqmB,YAAc,EACtBrmB,EAAQsmB,YAAc,EACtBtmB,EAAQomB,kBAAoB,EAC5BpmB,EAAQmmB,oBAAsB,EAC9BnmB,EAAQymB,aAAenlN,EACvB0+L,EAAQjF,WAAY,EAEpBz5L,GAAOA,EACPixL,EAAMnpN,OAAOikL,EAAO2yC,EAAS1+L,GAGxB68B,EAAI78B,EAAM,EAAG68B,EAAIkvH,EAAM55O,OAAQ0qH,KAChC7uF,EAAO+9M,EAAMlvH,IACRsoL,aAAen3Q,EAAKm3Q,aAAe,GAG5CjoB,EAAU,IAAIrvC,EAAKrwH,EAAGkhK,IACdwuB,iBAAmB,EAC3BP,EAAqBz6S,EAAI,EAAGA,EAAGgrR,GAE/B1/J,EAAIkhK,EAGJ/zR,KAAK03R,MAAMvF,SAAS4B,GACpB/zR,KAAK03R,MAAMlF,QAAQD,GAEnBwB,EAAQz6Q,MAAQtZ,KAAK03R,MAAMtrO,MAAM5kD,OAAS,EAC1CxH,KAAK6hT,eAAe9tB,EAASz/C,EACjC,CACA0tE,EAAqBI,EAAS,EAAGA,EAAQ9tE,GAGzCA,EAAKg8C,aAAaz9J,GAClByhH,EAAKiuE,iBAAmBH,EAASD,EAAS,CAC9C,MACIH,EAAqBG,EAAQC,EAAQ9tE,EAE7C,CACJ,EAMAknE,WAAY,WAER,IADA,IAAIgH,GAAQ,EACLA,GAAO,CACVA,GAAQ,EAER,IAAK,IAAIhwL,EAAI,EAAGA,EAAIxyH,KAAK03R,MAAMh4C,MAAMl4O,OAAQgrH,IAAK,CAC9C,IAAI8hH,EAAOt0O,KAAK03R,MAAMh4C,MAAMltH,GAC5B,GAAK8hH,EAAKiuE,iBAAV,CAIA,IAAIn/K,EAAS,GAGbA,EAAOj5H,QAAQ,CAAE/E,EAAGkvO,EAAKjtO,OAAOjC,EAAGjB,EAAGmwO,EAAKjtO,OAAOlD,IAClDi/H,EAAOj5H,QAAQ,CAAE/E,EAAGkvO,EAAKzmO,OAAOzI,EAAGjB,EAAGmwO,EAAKzmO,OAAO1J,IAKlD,IAFA,IAAIq2C,EAAO85L,EACPiuE,EAAmBjuE,EAAKiuE,iBACnB/9S,EAAI,EAAGA,EAAI+9S,EAAkB/9S,IAAK,CACvC,IACIi+S,EADOjoQ,EAAK3sC,OACI6gR,SAAS,GAE7BtrJ,EAAOj5H,QAAQ,CAAE/E,EAAGq9S,EAAS50S,OAAOzI,EAAGjB,EAAGs+S,EAAS50S,OAAO1J,IAE1Dq2C,EAAOioQ,CACX,CAGAnuE,EAAKg8C,aAAa91O,EAAK3sC,QAGvBymO,EAAKiuE,iBAAmB,EAGpBn/K,EAAO57H,OAAS,GAEhB47H,EAAO54H,OAAO,EAAG,GACjB44H,EAAO54H,OAAO44H,EAAO57H,OAAS,GAC9B8sO,EAAKlxG,OAASA,GAGdkxG,EAAKlxG,OAAS,GAMlBo/K,GAAQ,EACR,KAzCA,CA0CJ,CACJ,CACJ,EAKApH,mBAAoB,WAKhB,IAJA,IAAgB7zS,EAAZm7S,GAAS,EAETC,EAAO,EAEM,IAAVD,KACCC,IAJY,IAGA,CAOhB,IAFAD,EAAQ,EAEHn7S,EAAIvH,KAAK66Q,OAAOrzQ,OAAS,EAAGD,GAAK,EAAGA,IACrCm7S,GAAS1iT,KAAK4iT,wBAAuB,EAAOr7S,GAGhD,IAAKA,EAAI,EAAGA,EAAIvH,KAAK66Q,OAAOrzQ,OAAS,EAAGD,IACpCm7S,GAAS1iT,KAAK4iT,wBAAuB,EAAMr7S,EAEnD,CACJ,EAEAg6S,WAAY,SAASngE,GACjB,GAAc,IAAVA,EAAJ,CAIA,IAAqC75O,EAAGirH,EAAG8hH,EAAvCusE,EAAa7gT,KAAK66Q,OAAOz5B,GACzB6gE,EAAU,IAAI98I,EACd3qH,EAAOx6C,KAAK66Q,OAAOz5B,EAAQ,GAC/B,IAAK75O,EAAI,EAAGA,EAAIizC,EAAKhzC,OAAQD,IACzB06S,EAAQz0S,IAAIgtC,EAAKjzC,IAGrB,IAAKA,EAAI,EAAGA,EAAIs5S,EAAWr5S,OAAQD,IAAK,CACpC,IAAI87B,EAAOw9Q,EAAWt5S,GAGlB6tD,EAAM,EACNpO,EAAQ,EAEZ,IAAKwrE,EAAI,EAAGA,EAAInvF,EAAKqrP,SAASlnR,OAAQgrH,IAClC8hH,EAAOjxM,EAAKqrP,SAASl8J,GACjByvL,EAAQ1sR,SAAS++M,EAAKzmO,UACtBm5C,IACAoO,GAAOk/K,EAAKzmO,OAAO2sS,cAI3B,IAAKhoL,EAAI,EAAGA,EAAInvF,EAAKorP,SAASjnR,OAAQgrH,IAClC8hH,EAAOjxM,EAAKorP,SAASj8J,GACjByvL,EAAQ1sR,SAAS++M,EAAKjtO,UACtB2/C,IACAoO,GAAOk/K,EAAKjtO,OAAOmzS,cAIvBxzP,EAAQ,GACR3jB,EAAK+2Q,YAAchlP,EAAMpO,EACzB3jB,EAAK82Q,kBAAoBnzP,IAGzB3jB,EAAK+2Q,YAAc7yS,EACnB87B,EAAK82Q,kBAAoB,EAEjC,CAxCA,CAyCJ,EAEAmH,aAAc,SAASlgE,GACnB,GAAIA,IAAUphP,KAAK66Q,OAAOrzQ,OAAS,EAAnC,CAIA,IAAqCD,EAAIirH,EAAG8hH,EAAxCusE,EAAa7gT,KAAK66Q,OAAOz5B,GACzB8gE,EAAY,IAAI/8I,EAChB3qH,EAAOx6C,KAAK66Q,OAAOz5B,EAAQ,GAC/B,IAAK75O,EAAI,EAAGA,EAAIizC,EAAKhzC,OAAQD,IACzB26S,EAAU10S,IAAIgtC,EAAKjzC,IAGvB,IAAKA,EAAI,EAAGA,EAAIs5S,EAAWr5S,OAAQD,IAAK,CACpC,IAAI87B,EAAOw9Q,EAAWt5S,GAGlB6tD,EAAM,EACNpO,EAAQ,EAEZ,IAAKwrE,EAAI,EAAGA,EAAInvF,EAAKqrP,SAASlnR,OAAQgrH,IAClC8hH,EAAOjxM,EAAKqrP,SAASl8J,GACjB0vL,EAAU3sR,SAAS++M,EAAKzmO,UACxBm5C,IACAoO,GAAOk/K,EAAKzmO,OAAO2sS,cAI3B,IAAKhoL,EAAI,EAAGA,EAAInvF,EAAKorP,SAASjnR,OAAQgrH,IAClC8hH,EAAOjxM,EAAKorP,SAASj8J,GACjB0vL,EAAU3sR,SAAS++M,EAAKjtO,UACxB2/C,IACAoO,GAAOk/K,EAAKjtO,OAAOmzS,cAIvBxzP,EAAQ,GACR3jB,EAAKg3Q,YAAcjlP,EAAMpO,EACzB3jB,EAAK62Q,oBAAsBlzP,IAG3B3jB,EAAKg3Q,YAAc9yS,EACnB87B,EAAK62Q,oBAAsB,EAEnC,CAxCA,CAyCJ,EAUA0I,uBAAwB,SAASz0R,EAAMizN,GACnC,IAAIw/D,EACAC,EAUAgC,GAPAhC,EADA1yR,EACanuB,KAAK66Q,OAAO+lC,EAAcx/D,EAAQ,GAGlCphP,KAAK66Q,OAAO+lC,EAAcx/D,EAAQ,IAIxBv6O,MAAM,GAG7BsnB,EACAnuB,KAAKuhT,WAAWX,GAGhB5gT,KAAKshT,aAAaV,GAGtB,IAAI34S,EAAOjI,KAEX6gT,EAAW7kS,MAAK,SAAS43Q,EAAIC,GACzB,IAAIivB,EAAe76S,EAAKi5S,eAAettB,GACnCmvB,EAAe96S,EAAKi5S,eAAertB,GACvC,GAAIxwR,KAAKoU,IAAIqrS,EAAeC,GAAgB,KAExC,OAAInvB,EAAGpE,WAAaqE,EAAGrE,SACZvnR,EAAK+6S,eAAepvB,EAAIC,GAE1BD,EAAGpE,SAAWqE,EAAGrE,SACf,GAEH,EAEZ,IAAIyzB,EAA+C,KAA/BF,EAAeD,GACnC,OAAIG,EAAe,GACP,EAEHA,EAAe,EACb,EAEJh7S,EAAK+6S,eAAepvB,EAAIC,EACnC,IAGA,IAAItsR,EAAGm7S,EAAQ,EACf,IAAKn7S,EAAI,EAAGA,EAAIs5S,EAAWr5S,OAAQD,IAC3Bs5S,EAAWt5S,KAAOs7S,EAAUt7S,IAC5Bm7S,IAIR,GAAIA,EAAQ,EAAG,CAEX,IAAIQ,EAAQ,EACZ,IAAK37S,EAAI,EAAGA,EAAIs5S,EAAWr5S,OAAQD,IAAK,CACzBs5S,EAAWt5S,GACjBizS,aAAe0I,GACxB,CACJ,CAEA,OAAOR,CACX,EAOArH,WAAY,WAIR,IAHA,IAAI8H,EAAgBnjT,KAAKmH,QAAQwqS,kBAC7BgR,EAAO,IAGHA,IAASQ,IAOb,IAHA,IAAIC,EAAaT,EAAO,GAAK,EACzBU,EAAcV,EAAO,GAAM,EAEtBnwL,EAAK4wL,EAAY,EAAIpjT,KAAK66Q,OAAOrzQ,OAAS,EAC9C47S,EAAY5wL,GAAKxyH,KAAK66Q,OAAOrzQ,OAAS,EAAIgrH,GAAK,EAAGA,GAAM4wL,EAAY,GAAK,EAAI,CAS9E,IARA,IAAIhiE,EAAQphP,KAAK66Q,OAAOroJ,GACpB8wL,GAAa,EAIbC,GAAgB,EAChBC,EAAe,EAEV5wL,EAAI,EAAGA,EAAIwuH,EAAM55O,OAAS,EAAGorH,IAAK,CAEvC,IAAIxkG,EAAK,EACLD,EAAO,EACPs1R,EAAc,EAsBlB,GApBIF,GACU,IAAN/wL,IACApkG,EAAKpuB,KAAK0jT,mCAAmClxL,EAAI,EAAGA,IAEpDA,IAAMxyH,KAAK66Q,OAAOrzQ,OAAS,IAC3B2mB,EAAOnuB,KAAK0jT,mCAAmClxL,EAAGA,EAAI,IAEtD4wL,EACAh1R,GAAM,EAGND,GAAQ,EAGZs1R,EAAcr1R,EAAKD,GAGnBs1R,EAAcD,EAGE,IAAhBC,EAAJ,CAKA,IAAIE,EAAQviE,EAAMxuH,GACdgxL,EAAQxiE,EAAMxuH,EAAI,GAElBixL,EAAeF,EAAMnJ,aACrBsJ,EAAeF,EAAMpJ,aACzBp5D,EAAMxuH,GAAKgxL,EACXxiE,EAAMxuH,EAAI,GAAK+wL,EACfA,EAAMnJ,aAAesJ,EACrBF,EAAMpJ,aAAeqJ,EAGrBz1R,EAAK,EACK,IAANokG,IACApkG,EAAKpuB,KAAK0jT,mCAAmClxL,EAAI,EAAGA,IAExDrkG,EAAO,EACHqkG,IAAMxyH,KAAK66Q,OAAOrzQ,OAAS,IAC3B2mB,EAAOnuB,KAAK0jT,mCAAmClxL,EAAGA,EAAI,IAEtD4wL,EACAh1R,GAAM,EAGND,GAAQ,EAEZ,IAAI41R,EAAa31R,EAAKD,GAGlBk1R,EACSU,GAAcN,EAGdM,EAAaN,IAItBE,EAAQviE,EAAMxuH,GACdgxL,EAAQxiE,EAAMxuH,EAAI,GAElBixL,EAAeF,EAAMnJ,aACrBsJ,EAAeF,EAAMpJ,aACrBp5D,EAAMxuH,GAAKgxL,EACXxiE,EAAMxuH,EAAI,GAAK+wL,EACfA,EAAMnJ,aAAesJ,EACrBF,EAAMpJ,aAAeqJ,EAIrBL,EAAeC,EACfF,GAAgB,IAGhBD,GAAa,EACbC,GAAgB,EAxDpB,CA0DJ,CAEID,IACI9wL,IAAMxyH,KAAK66Q,OAAOrzQ,OAAS,GAC3BxH,KAAKuhT,WAAW/uL,EAAI,GAEd,IAANA,GACAxyH,KAAKshT,aAAa9uL,EAAI,GAGlC,CAER,EAQAkxL,mCAAoC,SAASM,EAAQC,GACjD,IACIn8D,EAAOC,EAAOm8D,EAAKC,EAAKC,EAAKC,EAAKC,EAAIC,EADtC7kE,EAAQ1/O,KAAK66Q,OAAOmpC,GAAQ9I,QAAQ+I,GAEpCO,EAAY,EACZh9S,EAASk4O,EAAMl4O,OAEnB,IAAK88S,EAAK,EAAGA,EAAK98S,EAAQ88S,IAEtB,IADAx8D,EAAQpI,EAAM4kE,GACTC,EAAKD,EAAK,EAAGC,EAAK/8S,EAAQ+8S,IAAM,CAEjCx8D,EAAQrI,EAAM6kE,GAEVz8D,EAAMzgP,OAAO+5O,QAAU6iE,GACvBC,EAAMp8D,EAAMj6O,OACZs2S,EAAMr8D,EAAMzgP,SAGZ68S,EAAMp8D,EAAMzgP,OACZ88S,EAAMr8D,EAAMj6O,QAGZk6O,EAAM1gP,OAAO+5O,QAAU6iE,GACvBG,EAAMr8D,EAAMl6O,OACZw2S,EAAMt8D,EAAM1gP,SAGZ+8S,EAAMr8D,EAAM1gP,OACZg9S,EAAMt8D,EAAMl6O,QAGhB,IAAI42S,EAAQP,EAAI1J,aACZkK,EAAQP,EAAI3J,cAIXiK,EAHOL,EAAI5J,eAGOkK,EAFXL,EAAI7J,cAEwB,GACpCgK,GAER,CAGJ,OAAOA,CACX,EAEAtD,eAAgB,SAAS79Q,GACrB,IAAI82Q,EAAoB92Q,EAAK82Q,kBACzBD,EAAsB72Q,EAAK62Q,oBAC3BE,EAAc/2Q,EAAK+2Q,YACnBC,EAAch3Q,EAAKg3Q,YAEvB,OAAIF,EAAoB,GAAKD,EAAsB,GACvCE,EAAcC,GAAe,EAErCF,EAAoB,EACbC,EAEPF,EAAsB,EACfG,EAGJ,CACX,EAEA8D,sBAAuB,SAAS/4S,EAAGjB,GAC/B,OAAIiB,EAAEo1S,aAAer2S,EAAEq2S,cACX,EAERp1S,EAAEo1S,aAAer2S,EAAEq2S,aACZ,EAEJ,CACX,EAEA2F,2BAA4B,SAAS/6S,EAAGjB,GACpC,OAAOiB,EAAEN,EAAIX,EAAEW,GAAK,EAAIM,EAAEN,EAAIX,EAAEW,EAAI,EAAI,CAC5C,EAEAm7S,4BAA6B,SAAS76S,EAAGjB,GACrC,OAAOiB,EAAEN,EAAIX,EAAEW,EAAI,EAAIM,EAAEN,EAAIX,EAAEW,GAAK,EAAI,CAC5C,EAEA45S,kBAAmB,SAASt9D,GACxB,IAAK,IAAI18O,EAAI,EAAGA,EAAI08O,EAAM55O,OAAQ9C,IAC9B,GAAI08O,EAAM18O,GAAGoqR,UACT,OAAOpqR,EAGf,OAAQ,CACZ,EAEAs+S,eAAgB,SAASj5B,EAAI+wB,GACzB,IAAIgB,EAAK/xB,EAAGzwQ,MACRyiS,EAAKjB,EAAGxhS,MAEZ,OAAIwiS,EAAKC,EACE,EAGPD,EAAKC,GACG,EAGL,CACX,EAEAY,OAAQ,SAASgI,EAAWC,GACxB,OAAQD,EAAYA,EAAYC,GAAeA,CACnD,EAEA7F,gBAAiB,SAAS39D,EAAO/9M,GAE7B,IADA,IACS97B,EADO87B,EAAKs4Q,WACI,EAAGp0S,EAAI65O,EAAM55O,SAAUD,EAC5C,GAAI65O,EAAM75O,GAAGunR,UACT,OAAO1tC,EAAM75O,GAGrB,OAAO,IACX,IAQAmuS,EAAc/0S,EAAMiH,MAAM7E,OAAO,CACjCoF,KAAM,SAAS0vL,EAASgtH,GACpB,GAAIv+B,EAAMG,YAAY5uF,GAClB,KAAM,mBAEV73L,KAAK63L,QAAUA,EACf73L,KAAKk0R,QAAU,IAAIjG,EACnBjuR,KAAKm0R,QAAU,IAAIlG,EACnBjuR,KAAKsiF,QAAQuiO,GAA8BhtH,EAC/C,EAUAv1G,QAAS,SAASwiO,GACd,IAAIzhR,EACA+oB,EACA02F,EACAv7I,EACAw6R,EACAztD,EACAoL,EAEJ,GAAIolE,aAAiCjtH,EAAQi5F,MAAO,CAEhD,IAAKvpR,EAAI,EAAGA,EAAIu9S,EAAsB14P,MAAM5kD,OAAQD,IAEhDu7I,GADAz/G,EAAOyhR,EAAsB14P,MAAM7kD,IACtBqnR,gBAEb5uR,KAAKk0R,QAAQhkQ,IAAI4yH,EAAM7B,OAAO5wH,GAAI,IAAI4sG,EAAK55F,EAAKj+B,EAAGi+B,EAAKl/B,EAAGk/B,EAAKt3B,MAAOs3B,EAAKr3B,SAEhF,IAAKzE,EAAI,EAAGA,EAAIu9S,EAAsBplE,MAAMl4O,OAAQD,IAEhDw6R,GADAztD,EAAOwwE,EAAsBplE,MAAMn4O,IACvByoR,qBACZhwR,KAAKm0R,QAAQjkQ,IAAI6xQ,EAAK9gJ,OAAO5wH,GAAIikN,EAAKlxG,SAE9C,MACK,GAAI0hL,aAAiC5hT,MAEtC,IADAkpD,EAAQ04P,EACHv9S,EAAI,EAAGA,EAAI6kD,EAAM5kD,OAAQD,KAE1Bu7I,GADAz/G,EAAO+oB,EAAM7kD,IACAqnR,kBAET5uR,KAAKk0R,QAAQhkQ,IAAI4yH,EAAM7B,OAAO5wH,GAAI,IAAI4sG,EAAK55F,EAAKj+B,EAAGi+B,EAAKl/B,EAAGk/B,EAAKt3B,MAAOs3B,EAAKr3B,cAInF,GAAI84S,EAAsB71S,eAAe,UAAY61S,EAAsB71S,eAAe,SAAU,CAGrG,IAFAm9C,EAAQ04P,EAAsB14P,MAC9BszL,EAAQolE,EAAsBplE,MACzBn4O,EAAI,EAAGA,EAAI6kD,EAAM5kD,OAAQD,KAE1Bu7I,GADAz/G,EAAO+oB,EAAM7kD,IACAqnR,kBAET5uR,KAAKk0R,QAAQhkQ,IAAI4yH,EAAM7B,OAAO5wH,GAAI,IAAI4sG,EAAK55F,EAAKj+B,EAAGi+B,EAAKl/B,EAAGk/B,EAAKt3B,MAAOs3B,EAAKr3B,SAGpF,IAAKzE,EAAI,EAAGA,EAAIm4O,EAAMl4O,OAAQD,KAE1Bw6R,GADAztD,EAAOoL,EAAMn4O,IACDyoR,uBAERhwR,KAAKm0R,QAAQjkQ,IAAI6xQ,EAAK9gJ,OAAO5wH,GAAIikN,EAAKlxG,OAGlD,KACK,CACD,IAAIyf,EAAS7iJ,KAAK63L,QAAQh1C,OACtBujJ,EAAcpmS,KAAK63L,QAAQuuG,YAC/B,IAAK7+R,EAAI,EAAGA,EAAIs7I,EAAOr7I,OAAQD,IAC3Bu7I,EAAQD,EAAOt7I,GACfvH,KAAKk0R,QAAQhkQ,IAAI4yH,EAAM7B,OAAO5wH,GAAIyyH,EAAMmiI,UAE5C,IAAK19Q,EAAI,EAAGA,EAAI6+R,EAAY5+R,OAAQD,IAChCw6R,EAAOqE,EAAY7+R,GACnBvH,KAAKm0R,QAAQjkQ,IAAI6xQ,EAAK9gJ,OAAO5wH,GAAI0xQ,EAAK3+J,SAE9C,CACJ,IAGJ56H,EAAWqvL,EAAS,CAChB1vL,KAAM,SAAS0D,GACXlL,EAAMwH,KAAK0D,EAASgsL,EAAQttK,GAChC,EACAiuQ,aAAcA,EACdohB,WAAYA,EACZmL,aAAc5R,EACd6G,cAAeA,EACfjJ,WAAYA,EACZ2E,YAAaA,GAEpB,CA/oHD,CA+oHG50S,OAAOH,MAAM+G,SAWhB,SAAU/E,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfu2F,EAAWv2F,EAAM0P,KAAK6mF,SAGtB8tN,EAAc,gBAYdC,EAAa/tN,EAASn0F,OAAO,CAC7BoF,KAAM,SAAS0D,EAAS1E,GACpB,IAAIc,EAAOjI,KACXk3F,EAASnvF,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GACrCc,EAAK2E,QAAU3E,EAAK4D,QAAQwZ,SAjBtB,aAmBDpd,EAAK4D,QAAQ+X,KAAK,SAAW3b,EAAKd,QAAQzB,MAC3CuC,EAAK4D,QAAQ+X,KAAK,OAAQ3b,EAAKd,QAAQzB,MAG3CuC,EAAKmvF,cACLnvF,EAAKkoL,cACLloL,EAAKi9S,cACT,EACA/9S,QAAS,CACL/E,KAAM,aACNsD,KAAM,SACN4yF,KAAM,GACNF,UAAW,GACX+sN,eAAgB,GAChBz3C,SAAU,GACV19P,KAAM,SACNkJ,QAAS,SACTua,SAAU,QACVY,WAAY,OACZ8iE,eAAgB,CAAE,OAAQ,UAAW,WAAY,eAErDg5F,YAAa,WACT,IAOIjL,EAAM19C,EAAKq/C,EAPX5+K,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACf1E,EAAUc,EAAKd,QACfmxF,EAAOnxF,EAAQmxF,KACfF,EAAYjxF,EAAQixF,UACpB+sN,EAAiBh+S,EAAQg+S,eACzBz3C,EAAWvmQ,EAAQumQ,UAGnBy3C,GAAkBz3C,GAAYp1K,GAAQF,KACtCyuF,GAAU,EAEVh7K,EAAQqtE,WAAW3pD,QAAO,WACtB,QAAS5sB,EAAE3C,MAAM+M,SAAS,aAAgBpK,EAAE3C,MAAM+M,SAAS,WAAcpK,EAAE3C,MAAM+M,SAAS,eAAkBpK,EAAE3C,MAAM+M,SAAS,WACjI,IAAG/J,MAAK,SAAS4G,EAAK4jB,IACC,GAAfA,EAAGsI,UAAgC,GAAftI,EAAGsI,UAAiBn1B,EAAMgjC,KAAKnW,EAAGsW,WAAWt8B,OAAS,KAC1Eq/K,GAAU,EAElB,KAGAA,GACA5+K,EAAK4D,QAAQwZ,SAAS,iBAGtBqoP,IACAlmI,EAAM37H,EAAQ0pC,SAAS,eAAerrC,SAC7B,KACLs9H,EAAM7kI,EAAE,sCAAsCs0B,UAAUprB,IAE5D27H,EAAI5jH,KAAK,MAAO8pP,GAChBlmI,EAAIniH,SAAS2/R,IACN1sN,GAAQF,IACf8sF,EAAOr5K,EAAQ0pC,SAAS,gCAAgCrrC,SAC9C,GAGNvJ,EAAM4pB,GAAG+tE,KAAK4sF,EAAM,CAAE5sF,OAAMF,cAF5B8sF,EAAOviL,EAAEhC,EAAM4pB,GAAG+tE,KAAK,CAAEA,OAAMF,eAAcnhE,UAAUprB,GAK3Dq5K,EAAK7/J,SAAS2/R,IACPG,KACPjgI,EAAOr5K,EAAQ0pC,SAAS,iBAAiBrrC,SAC/B,KACNg7K,EAAOviL,EAAE,kCAAkCs0B,UAAUprB,IAEzDq5K,EAAK7/J,SAAS8/R,EAAiB,IAAMH,GAE7C,EACAE,aAAc,WACIllT,KAAK6L,QAEXqtE,WAAW3pD,QAAO,WACtB,QAAS5sB,EAAE3C,MAAM+M,SAASi4S,IAAiBriT,EAAE3C,MAAM+M,SAAS,aAAgBpK,EAAE3C,MAAM+M,SAAS,WAAcpK,EAAE3C,MAAM+M,SAAS,WAChI,IAAG/J,MAAK,SAAS4G,EAAK4jB,GAClB,GAAmB,GAAfA,EAAGsI,UAAgC,GAAftI,EAAGsI,UAAiBn1B,EAAMgjC,KAAKnW,EAAGsW,WAAWt8B,OAAS,EAAG,CAC7E,GAAoB,IAAhBgmB,EAAGsI,SAAgB,CACnB,IAAIsvR,EAAUz1S,SAASkP,cAAc,QAErC2O,EAAGhH,WAAW8rD,aAAa8yO,EAAS53R,GACpC43R,EAAQnmS,YAAYuO,GACpBA,EAAK43R,CACT,CAEA53R,EAAGmtH,UAAUntI,IAvGX,gBAwGN,CACJ,GACJ,IAGJ7K,EAAEI,OAAOpC,EAAM0P,KAAM,CACjBg1S,aA5Ge,SAASx5S,EAAS1E,GAMjC,OAdR,YASYG,UAAU,IAAsB3E,EAAEgF,cAAcL,UAAU,OAC1DH,EAAU0E,EACVA,EAAUlJ,EAAE,sBAGT,IAAKsiT,EAAWp5S,EAAS1E,GAAUkJ,MAC9C,EAsGI40S,WAAYA,IAGhBtkT,EAAMwyB,cAAcoY,eAAe,aAAc,aAEjD5qC,EAAMwyB,cAAc2X,eAAe,aAAc,CAAC,CAC9Cjb,KAAM,WACNxW,OAAQ1Y,EAAMwyB,cAAc0X,eAAezsB,OAAO,CAAC,OAAQ,WAC5D,CACCyR,KAAM,UACNxW,OAAQ1Y,EAAMwyB,cAAcgX,cAAc/rB,OAAO,CAAC,CAAC,OAAQ,YAGlE,CAlID,CAkIGtd,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfywB,EAASzwB,EAAM4pB,GAAG6G,OAClBygE,EAAK,mBACLtnE,EAAK5pB,EAAM4pB,GACXM,EAAOlqB,EAAMkqB,KACbkkD,EAASpuE,EAAM4tB,WACfxrB,EAASJ,EAAEI,OAEXoxO,EAAM,IACNx6B,EAAK,KACL2rG,EAAO,OAEPC,EAAgB,aAGhBC,EAAgB,gBAGhBzzR,EAAW,WAEXmiN,EAAQ,QACRuxE,EAAa,YACb50N,EAAO,WACPC,EAAQ,YACRy1I,EAAU,UACVC,EAAQ,QAERk/E,EAAa,CACTv3R,KAAQ,CACJ6qB,OAAQ,cACR1rC,SAAU,YAEd8gB,GAAM,CACF4qB,OAAQ,WACR1rC,SAAU,gBAIlBq4S,EACO,eADPA,EAEM,eAFNA,EAGU,qBAHVA,EAIU,cAJVA,EAKU,mBALVA,EAMM,qBANNA,EAOQ,WAPRA,EAQO,UAIPC,EAAW,CACX9kR,KAAM,KACNw3D,KAAM,KACNtpE,IAAK,KACLi7B,WAAY,KACZniC,SAAS,EACT8sN,QAAQ,EACRvkN,GAAI,KACJq9O,SAAU,KACVy3C,eAAgB,MAGhBU,EAAiB,EAAGn4C,cAAe,IAAGA,EAAW,0BAA0Bi4C,WAA0B52O,EAAO2+L,SAAkB,IAC9Ho4C,EAAkB,EAAGX,oBAAqB,IAAGA,EAAiB,gBAAgBQ,KAAqB52O,EAAOo2O,cAA6B,IACvIY,EAAgB,EAAGztN,UAAW,GAAGA,EAAO33F,EAAM4pB,GAAG+tE,KAAKvpB,EAAOupB,IAAS,KACtE0tN,EAAgB,EAAGllR,UAAW,IAAGA,EAAO,gBAAgB6kR,MAAwB52O,EAAOjuC,YAAiB,IAExGmlR,EAAgB,EAAGv4C,WAAUy3C,iBAAgB7sN,OAAMx3D,UAAW,gBAAgB6kR,MAC3BE,EAAe,CAAEn4C,eACjBo4C,EAAgB,CAAEX,qBAClBY,EAAc,CAAEztN,WAChB0tN,EAAc,CAAEllR,kBAGnEolR,EAAgB,EAAGl3R,MAAK0+O,WAAUy3C,iBAAgB7sN,OAAMx3D,OAAMmpB,gBAAiB,YAAY8kB,EAAO//C,OAASi7B,EAAW5iD,OAAS,WAAW4iD,EAAW5iD,UAAY,aAAas+S,MAC/HE,EAAe,CAAEn4C,eACjBo4C,EAAgB,CAAEX,qBAClBY,EAAc,CAAEztN,WAChB0tN,EAAc,CAAEllR,eAGnE,SAASqlR,EAAqBt6S,EAAS0zB,GACnC,IAAI6mR,EAAa7mR,IAAQ+lR,EAAO3iT,EAAEoF,GAAGu+D,KAAO3jE,EAAEoF,GAAGg4C,KAC7CvwB,EAAS+P,IAAQ+lR,EAAO3iT,EAAEoF,GAAGmC,MAAQvH,EAAEoF,GAAGu6B,KAC1C+jR,EAAYD,EAAW77S,KAAKsB,GAC5BosB,EAAY,kBAMhB,OAJKouR,EAAU7+S,SACX6+S,EAAY72R,EAAOjlB,KAAKsB,EAAQc,SAASwpB,KAAKg+M,EAAMwxE,KAGpDU,EAAUp5S,GAAGgrB,KAAeouR,EAAU7+S,OAC/B6+S,EAGPA,EAAUlwR,KAAK8B,GAAWzwB,OACnBgoB,EAAOjlB,KAAK87S,EAAUlwR,KAAK8B,IAG/BkuR,EAAqBE,EAAW9mR,EAC3C,CAEA,IAAI+mR,EAAal1R,EAAOruB,OAAO,CAC3BoF,KAAM,SAAS0D,EAAS1E,GACpB,IAAIc,EAAOjI,KAGXoxB,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GAEnCc,EAAKs+S,WAAap/S,EAAQo/S,WAC1Bt+S,EAAKu+S,eAAiB,CAAC,EAEvBv+S,EAAKw+S,cAELx+S,EAAKm/G,aAELn/G,EAAKo/N,gBAELp/N,EAAKoqB,iBAAiBpqB,EAAKukE,KAC/B,EAEArlE,QAAS,CACL/E,KAAM,aACNiyC,UAAW,OACXxoC,QAAS,KACTqgD,MAAO,GACPl8C,KAAM,UAGV3F,OAAQ,CACJo7S,EACA50N,EACAC,GAGJ21N,YAAa,WACT,IAAIx+S,EAAOjI,KACPksD,EAAQjkD,EAAKd,QAAQ+kD,MACrBgoC,EAAQjsF,EAAK4D,QAAQwZ,SAASsgS,GAC9Bt1R,EAAKpoB,EAAKs+S,WAAW3iS,KAAK+1L,IAAOh5M,EAAMwvB,OACvCq8C,EAAO7pE,EAAE,yBAAwC0iB,SAASsgS,GAE9D19S,EAAKukE,KAAOA,EAAKtgE,SAASgoF,GAE1BjsF,EAAKukE,KAAK5oD,KAAK+1L,EAAItpL,EAAK,eAExB67B,EAAM5qD,QAAQ2G,EAAKy+S,gBAAgBl9S,KAAKvB,GAC5C,EAEAy+S,gBAAiB,SAASv3Q,GACtB,IAEI9e,EAAIs2R,EAFJ1+S,EAAOjI,KACP4mT,EAAez3Q,EAAK8a,WAAa9a,EAAK8a,WAAW55B,GAAK,KAO1DA,GAJA8e,EAAOpsC,EAAO,CAAC,EAAG6iT,EAAUz2Q,EAAM,CAC9BrnB,QAASqnB,EAAKhnB,QAAUgnB,EAAKrnB,WAGvBuI,IAAMu2R,GAAgBjmT,EAAMwvB,OACtCw2R,EAAWhkT,EAAE,WAAc0tB,EAAd,4BAAmEs1R,EAAsB,KAAQ19S,EAAK4+S,kBAAkB13Q,GAAQ,SAEzIA,EAAKjlB,QACLjiB,EAAKu+S,eAAen2R,GAAM8e,EAAKjlB,OAG/BilB,EAAK8a,oBACE9a,EAAK8a,WAAW5iD,OAEnB8nC,EAAK8a,WAAW68P,QAChBH,EAASthS,SAAS8pB,EAAK8a,WAAW68P,cAC3B33Q,EAAK8a,WAAW68P,OAG3BH,EAAS/iS,KAAKurB,EAAK8a,aAGnB9a,EAAK/gC,MAAQzN,EAAMuI,WAAWimC,EAAK/gC,OACnCu4S,EAASv4S,KAAK+gC,EAAK/gC,KAAK+gC,IAG5BlnC,EAAKukE,KAAKryB,OAAOwsQ,GAEjB1+S,EAAKkgB,OAAOgnB,EAAKrnB,QAAS6+R,GAC1B1+S,EAAK8+S,MAAM53Q,EAAKylM,OAAQ+xE,EAC5B,EAEAE,kBAAmB,SAAS13Q,GACxB,IACIhoC,EADOnH,KACQmH,QAEnB,OAAIA,EAAQ+vO,aACDv2O,EAAMyP,SAASjJ,EAAQ+vO,aAAvBv2O,CAAqCwuC,GAG5CA,EAAKngB,IACEruB,EAAMyP,SAAS81S,EAAfvlT,CAA8BwuC,GAE9BxuC,EAAMyP,SAAS61S,EAAftlT,CAA8BwuC,EAE7C,EAEAi4E,WAAY,WACR,IAAIn/G,EAAOjI,KACPmH,EAAUc,EAAKd,QACfktC,EAAYltC,EAAQktC,WAAa,OAErCpsC,EAAK++S,OAAS,IAAIz8R,EAAGunE,MAAM7pF,EAAK4D,QAAS9I,EAAO,CAAC,EAAGoE,EAAQ+sF,MAAO,CAC/D/B,OAAQlqF,EAAKs+S,WACblnS,MAAOpX,EAAKwyO,OACZ7nJ,aAAczrF,EAAQyrF,aACtBG,kBAAkB,EAClBT,UAAWnrF,EAAQmrF,UACnBC,KAAMtqF,EAAKg/S,kBAAkBz9S,KAAKvB,GAClCy9C,MAAOz9C,EAAKi/S,mBAAmB19S,KAAKvB,GACpCo/G,SAAUp/G,EAAKk/S,oBAAoB39S,KAAKvB,IACzCy9S,EAAWrxQ,IAClB,EAEA4yQ,kBAAmB,SAAS5lT,GACbrB,KAEmBoK,QAAQymF,GAGlCxvF,EAAG8H,iBALInJ,KASNwsE,KAAKr2C,KAAKg+M,EAAMwxE,GAAqB/hS,KAAKmO,EAAU,EAC7D,EAEAm1R,mBAAoB,SAAS7lT,GACdrB,KACmBoK,QAAQ0mF,IAGlCzvF,EAAG8H,iBAJInJ,KAONwsE,KAAKr2C,KAAKg+M,EAAMwxE,GAAqB/hS,KAAKmO,GAAW,EAC9D,EAEAo1R,oBAAqB,WACNnnT,KAENwsE,KAAKr2C,KAAK,mBAAmBjsB,QAAQE,QAAQo8N,EACtD,EAEA4gF,iBAAkB,SAASr7S,GACZ/L,KAEN6L,QAAQI,IAAI,CACb,YAAaF,GAErB,EAEAs7N,cAAe,WACX,IAAIp/N,EAAOjI,KAEXiI,EAAKukE,KACA3iD,GAAGqqN,EAAQriJ,EAAIsiJ,EAAMwxE,EAAqB19S,EAAK86E,OAAOv5E,KAAKvB,IAC3D4hB,GAAG08M,EAAU10I,EAAIsiJ,EAAMwxE,EAAqB19S,EAAKo/S,gBAAgB79S,KAAKvB,IAE3EA,EAAKs+S,WACA18R,GAAG08M,EAAU10I,EAAI5pF,EAAK28G,SAASp7G,KAAKvB,GAC7C,EAEA28G,SAAU,SAASvjH,GAGf,IAAIsB,EAAEtB,EAAGgG,QAAQ4F,GAAGknO,EAAMoxE,KAAkB5iT,EAAEtB,EAAGgG,QAAQkxB,QAAQ47M,EAAMoxE,GAAe/9S,OAItF,OAAInG,EAAGguN,QAAUhuN,EAAGimC,UAAYzc,EAAKU,MAN1BvrB,KAOFgnT,OAAOz0N,YACZlxF,EAAG8H,uBAFP,CAKJ,EAEAk+S,gBAAiB,SAAShmT,GACtB,IAAI4G,EAAOjI,KACP87J,EAAKn5J,EAAEtB,EAAGgG,QAEdhG,EAAG8H,iBAEC9H,EAAGimC,UAAYzc,EAAKM,KAAO9pB,EAAGimC,UAAYzc,EAAKI,KAAQ5pB,EAAGguN,QAAUhuN,EAAGimC,UAAYzc,EAAKQ,IACxFpjB,EAAK++S,OAAOthQ,QACZz9C,EAAKs+S,WAAWn8S,QAAQo8N,IACjBnlO,EAAGimC,UAAYzc,EAAKU,KAC3B46R,EAAqBrqJ,EAAIwpJ,GAAMl7S,QAAQo8N,GAChCnlO,EAAGimC,UAAYzc,EAAKQ,GAC3B86R,EAAqBrqJ,EA1RtB,QA0RgC1xJ,QAAQo8N,GAC/B1qE,EAAG7uJ,GAAGknO,EAAMoxE,IAAmBlkT,EAAGimC,UAAYzc,EAAKa,UAAYrqB,EAAGimC,UAAYzc,EAAKK,MAEpF7pB,EAAGimC,UAAYzc,EAAKY,KAC3BxjB,EAAKukE,KAAKr2C,KAAK,mBACV5G,OAAO4kN,EAAMwxE,GACbz7S,QAAQE,QAAQo8N,GACdnlO,EAAGimC,UAAYzc,EAAKW,KAC3BvjB,EAAKukE,KAAKr2C,KAAK,mBACV5G,OAAO4kN,EAAMwxE,GACbrjR,OAAOl4B,QAAQo8N,GARpB1qE,EAAG1xJ,QAAQ8pO,EAUnB,EAEAnxJ,OAAQ,SAAS1hF,GACb,IAAI4G,EAAOjI,KACPqH,EAAS1E,EAAEtB,EAAGgG,QAAQwF,QAAQsnO,EAAMwxE,GACpCt1R,EAAKhpB,EAAOuc,KAAK+1L,GAEjB1xM,EAAKu+S,eAAen2R,IACpBpoB,EAAKu+S,eAAen2R,GAAIhvB,GAG5B4G,EAAKmC,QAAQq7S,EAAY,CAAEp1R,GAAIA,EAAIhpB,OAAQA,EAAQ3B,KAAM,aAAc6jB,cAAeloB,GAC1F,EAEA0nB,OAAQ,WACJ/oB,KAAKgnT,OAAOj+R,QAChB,EAEAZ,OAAQ,SAASA,EAAQ+jC,IAMjBA,EAHCA,GAAUA,EAAM1kD,OAFVxH,KAKMwsE,KAAKr2C,KAAK+1B,GALhBlsD,KAGMksD,SAKXtjC,YAAY28R,GAAgBp9R,GAE9BA,EACA+jC,EAAMj6B,WAAWuzR,GAEjBt5P,EAAMtoC,KAAK4hS,GAAgBr9R,EAEnC,EAGA4+R,MAAO,SAASnyE,EAAQ1oL,IAMhBA,EAHCA,GAAUA,EAAM1kD,OAFVxH,KAKMwsE,KAAKr2C,KAAK+1B,GALhBlsD,KAGMksD,SAKXtjC,YAlVD,WAkVqBgsN,EAC9B,EAEAlnO,KAAM,SAASw+C,GACXlsD,KAAK+mT,OAAM,EAAM76P,EACrB,EAEAz+C,KAAM,SAASy+C,GACXlsD,KAAK+mT,OAAM,EAAO76P,EACtB,EAEAxG,MAAO,WACH1lD,KAAKgnT,OAAOthQ,OAChB,EAEAwG,MAAO,WACH,OAAOlsD,KAAKwsE,KAAKj3B,SAAS4+L,EAAMwxE,EACpC,EAEA2B,aAAc,WACV,IAAIr/S,EAAOjI,KAEPiI,EAAK++S,SACL/+S,EAAK++S,OAAOhlT,UACZiG,EAAK++S,OAAS,KAEd/+S,EAAKukE,KAAKpzC,IAAIy4D,GACd5pF,EAAKukE,KAAKngE,SACVpE,EAAKukE,KAAO,KAEpB,EAEAxqE,QAAS,WACL,IAAIiG,EAAOjI,YAEJiI,EAAKu+S,eAEZv+S,EAAKq/S,eACLr/S,EAAKs+S,WAAWntR,IAAIy4D,GACpBzgE,EAAOrpB,GAAG/F,QAAQuI,KAAKtC,EAC3B,IAGJtH,EAAMwyB,cAAcoY,eAAe,aAAc,iBAEjDhhB,EAAG2M,OAAOovR,EAEb,CA/YD,CA+YGxlT,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfywB,EAASzwB,EAAM4pB,GAAG6G,OAClBygE,EAAK,oBACLtnE,EAAK5pB,EAAM4pB,GACXxnB,EAASJ,EAAEI,OACXsN,EAAO1P,EAAM0P,KACblE,EAAaxL,EAAM8L,YACnBoe,EAAOlqB,EAAMkqB,KAGb8uL,EAAK,KAGL6rG,EAAgB,gBAEhB9+S,EAAa,aACb6gT,EAAgB,gBAEhBC,EAAW,WACXjC,EAAgB,aAChBkC,EAAa,UAEbvzE,EAAQ,QAERrjJ,EAAO,OACPC,EAAQ,QAER01I,EAAQ,QAGRm/E,EACQ,gCAGR+B,EAAct2R,EAAOruB,OAAO,CAC5BoF,KAAM,SAAS0D,EAAS1E,GACpB,IAAIc,EAAOjI,MAEXmH,EAAUA,GAAW,CAAC,GACd2gB,SAA8B,IAApB3gB,EAAQ2gB,UAAsBnlB,EAAEkJ,GAASgkB,KAAK23R,GAChEp2R,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GAEnCc,EAAKmxE,WACLnxE,EAAK0/S,iBACL1/S,EAAK2/S,cAEL3/S,EAAK4/S,QAAQ5/S,EAAKd,QAAQ2gB,SAE1B7f,EAAK6/S,QAEL7/S,EAAKo/N,gBAEL1mO,EAAMi0B,OAAO3sB,GAEbA,EAAKoqB,kBACT,EAEAlrB,QAAS,CACL/E,KAAM,cACN0lB,SAAS,EACTokC,MAAO,GACPhzC,QAAS,SACTlJ,KAAM,SACNyjB,SAAU,QACVY,WAAY,OACZikE,KAAM,KACNpE,MAAO,KACP6zN,UAAW,iBACXn9R,SAAU,CACNo9R,YAAa,gBAIrB39S,OAAQ,CACJ6pO,EACArjJ,EACAC,GAGJ1X,SAAU,WACN,IAAInxE,EAAOjI,KAEPioT,GADKhgT,EAAK4D,QAAQ+X,KAAK+1L,IAAOh5M,EAAMwvB,QACnB,WAErBloB,EAAK2E,QAAU3E,EAAK4D,QACf8gB,KAAK,YAAes7R,EAAY,YAAgBtC,EAAoB,YACpEh5S,OAAO,mBAEZ1E,EAAKigT,YAAcvlT,EAAE,0FAAgGuJ,SAASjE,EAAK2E,QACvI,EAEAylB,iBAAkB,WACHryB,KAEN4M,QAAQyY,SAFFrlB,KAEgBmoT,wBAC/B,EAEAh2R,iBAAkB,WACHnyB,KAEN4M,QAAQmgB,YAFF/sB,KAEmBmoT,wBAClC,EAEAA,sBAAuB,WACnB,IACIn1R,EADOhzB,KACWkzB,UAAU/rB,QAAQ/E,KAOxC,OANmBzB,EAAMwyB,cAAcG,cAAc,CAC7CC,OAAQP,EACRQ,SAAU,UACV9qB,MALG1I,KAKSmH,QAAQ+R,SAIhC,EAEAyuS,eAAgB,WACD3nT,KAENooT,cAFMpoT,KAGNqoT,cACT,EAEAD,YAAa,WACT,IAAIngT,EAAOjI,KACPmH,EAAUpE,EAAO,CAAC,EAAGkF,EAAKd,QAAS,CAC/BzB,KAAMuC,EAAK4D,QAAQ+X,KAAK,SAAW,kBAGpCzc,EAAQ+iB,MAEf7Z,EAAKg1S,aAAap9S,EAAK4D,QAAS1E,EACpC,EAEAkhT,aAAc,WACV,IAAIpgT,EAAOjI,KACPmH,EAAUpE,EAAO,CAAC,EAAGkF,EAAKd,QAAS,CAC/BzB,KAAM,SACN4yF,KAAMrwF,EAAKd,QAAQ4gT,mBAGpB5gT,EAAQ25B,YACR35B,EAAQumQ,gBACRvmQ,EAAQ+iB,aACR/iB,EAAQixF,UAEf/nF,EAAKg1S,aAAap9S,EAAKigT,YAAa/gT,EACxC,EAEA2gT,MAAO,WACH,IAAI7/S,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACfy8S,EAAOrgT,EAAKqgT,KAEhBz8S,EAAQ+X,KA7II,gBA6IgB0kS,EAAO,OAAS,MAC5Cz8S,EAAQ+X,KAAK2jS,GAAee,GAAe,MAC3Cz8S,EAAQ+X,KA7II,gBA6IgB0kS,EAAOA,EAAK97O,KAAK5oD,KAAK+1L,GAAM,MAEnD9tM,EAAQ+X,KAAKld,IACdmF,EAAQ+X,KAAKld,EAAYmF,EAAQi1B,OAAS,IAAM74B,EAAKd,QAAQyjB,SAASo9R,YAE9E,EAEAJ,YAAa,WACT,IAAI3/S,EAAOjI,KACPmH,EAAUpE,EAAO,CAAC,EAAGkF,EAAKd,SAC1BmhT,EAAO3lT,EAAE,sBAENwE,EAAQ+iB,aACR/iB,EAAQ/E,KAEV+E,EAAQ+kD,MAAM1kD,SAInBS,EAAKqgT,KAAOA,EAAKp8S,SAASjE,EAAK2E,SAAS27S,gBAAgBxlT,EAAO,CAC3DwjT,WAAYt+S,EAAK4D,QACjB+mF,aAAc3qF,EAAKigT,YACnBM,SAAUvgT,EAAKwgT,gBAAgBj/S,KAAKvB,GACpCygT,UAAWzgT,EAAK0gT,iBAAiBn/S,KAAKvB,GACtC2gT,UAAW3gT,EAAK86E,OAAOv5E,KAAKvB,IAC7Bd,IAAUiH,KAAK,mBACtB,EAEAq6S,gBAAiB,SAASpnT,GACtB,IAAI4G,EAAOjI,KACP6oT,EAAgB18S,EAAWlE,EAAK2E,SAEX3E,EAAKmC,QAAQymF,EAAM,CAAExpF,OAAQY,EAAK4D,UAEvDxK,EAAG8H,kBAIP9H,EAAGiJ,OAAO88S,iBAAiByB,GAC3B5gT,EAAK4D,QAAQ+X,KAAK2jS,GAAe,GACrC,EAEAoB,iBAAkB,SAAStnT,GACvB,IAAI4G,EAAOjI,KACciI,EAAKmC,QAAQ0mF,EAAO,CAAEzpF,OAAQY,EAAK4D,UAGxDxK,EAAG8H,kBAIPlB,EAAK4D,QAAQ+X,KAAK2jS,GAAe,GACjCt/S,EAAK4D,QAAQzB,QAAQo8N,GACzB,EAEAa,cAAe,WACX,IAAIp/N,EAAOjI,KAEXiI,EAAK4D,QAAQge,GAAGqqN,EAAQriJ,EAAI5pF,EAAK86E,OAAOv5E,KAAKvB,IAC7CA,EAAK4D,QAAQge,GA/LP,UA+LoBgoE,EAAI5pF,EAAK28G,SAASp7G,KAAKvB,IACjDA,EAAK4D,QAAQge,GAAG28M,EAAQ30I,EAAI5pF,EAAK2uF,OAAOptF,KAAKvB,IAC7CA,EAAK4D,QAAQge,GA5LV,OA4LoBgoE,EAAI5pF,EAAK2+G,MAAMp9G,KAAKvB,GAC/C,EAEA2uF,OAAQ,WACJ52F,KAAK4M,QAAQyY,SAASoiS,EAC1B,EAEA7gM,MAAO,WACH5mH,KAAK4M,QAAQmgB,YAAY06R,EAC7B,EAEA1kO,OAAQ,SAAS1hF,GACb,IACIgG,EAAS1E,EAAEtB,EAAGgG,QAAQwF,QAAQ,aAC9BwjB,EAAKhpB,EAAOuc,KAAK+1L,GACjBpwL,EAAgBloB,EAEJ,eAAZA,EAAGqE,OACH2qB,EAAKhvB,EAAGgvB,GACRhpB,EAAShG,EAAGgG,OACZkiB,EAAgBloB,EAAGkoB,eARZvpB,KAWNsoT,KAAK5iQ,QAXC1lD,KAaNoK,QAAQ8pO,EAAO,CAAE7jN,GAAIA,EAAIhpB,OAAQA,EAAQkiB,cAAeA,GACjE,EAEAq7F,SAAU,SAASvjH,IACJrB,KAEF6L,QAAQoB,GA9Of,IA8OwBs4S,IAAmBlkT,EAAGimC,UAAYzc,EAAKK,OAAS7pB,EAAGimC,UAAYzc,EAAKa,UAC1FrqB,EAAG8H,gBAEX,EAEA48B,MAAO,WACQ/lC,KACN6L,QAAQzB,QAAQo8N,EACzB,EAEAqhF,QAAS,SAAS1/R,EAAQ2gS,GACtB9oT,KAAK6L,QAAQ2B,IAAIxN,KAAKkoT,aACjBt/R,YAAY28R,GAAgBp9R,GAE7BA,EACAnoB,KAAK6L,QAAQomB,WAAWuzR,GAExBxlT,KAAK6L,QAAQ+X,KAAK4hS,GAAgBr9R,GAGjC2gS,GACD9oT,KAAK6L,QAAQ+X,KAAK4jS,GAAWr/R,GAGjCnoB,KAAKkoT,YAAYtkS,KAAK4jS,GAAWr/R,EACrC,EAEAA,OAAQ,SAASA,EAAQw+R,EAAUmC,GAC/B,IAAI7gT,EAAOjI,KApRvB,YAsRgBmoB,IACAA,GAAS,GAGTw+R,GAAYA,EAASn/S,OACrBS,EAAKqgT,KAAKngS,OAAOA,EAAQw+R,IAI7B1+S,EAAKd,QAAQ2gB,QAAUK,EAEvBlgB,EAAK4/S,QAAQ1/R,EAAQ2gS,GACrB7gT,EAAKqgT,KAAKngS,OAAOA,GACrB,EAEAza,KAAM,SAASi5S,GAGPA,GAAYA,EAASn/S,QAFdxH,KAGFsoT,KAAK56S,KAAKi5S,EAEvB,EAEAl5S,KAAM,SAASk5S,GAGPA,GAAYA,EAASn/S,QAFdxH,KAGFsoT,KAAK76S,KAAKk5S,EAEvB,EAEAp0N,KAAM,WACFvyF,KAAKsoT,KAAKtB,OAAOz0N,MACrB,EAEA7sC,MAAO,WACH1lD,KAAKsoT,KAAKtB,OAAOthQ,OACrB,EAEAwG,MAAO,WACH,OAAOlsD,KAAKsoT,KAAKp8P,OACrB,EAEAh6B,WAAY,SAAS/qB,GACjB,IAAIc,EAAOjI,KAEXoxB,EAAOrpB,GAAGmqB,WAAW3nB,KAAKtC,EAAMd,IAE5BA,EAAQ+sF,OAAS/sF,EAAQ+kD,OAAS/kD,EAAQ6I,QAC1C/H,EAAKqgT,KAAKtmT,UACViG,EAAK2/S,eAGT3/S,EAAK0/S,iBAEL1/S,EAAK6/S,OACT,EAEA9lT,QAAS,WACL,IAAIiG,EAAOjI,KAEPiI,EAAKqgT,MACLrgT,EAAKqgT,KAAKtmT,UAGdiG,EAAK4D,QAAQutB,IAAIy4D,GAEjBzgE,EAAOrpB,GAAG/F,QAAQuI,KAAKtC,EAC3B,IAGJtH,EAAMwyB,cAAcoY,eAAe,cAAe,kBAElD5qC,EAAMwyB,cAAc2X,eAAe,cAAe,CAAC,CAC/Cjb,KAAM,UACNxW,OAAQ1Y,EAAMwyB,cAAcgX,cAAc/rB,OAAO,CAAC,CAAC,OAAQ,aAG/DmM,EAAG2M,OAAOwwR,EAEb,CAtWD,CAsWG5mT,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfywB,EAASzwB,EAAM4pB,GAAG6G,OAClBygE,EAAK,uBACLtnE,EAAK5pB,EAAM4pB,GACXM,EAAOlqB,EAAMkqB,KACb9nB,EAASJ,EAAEI,OACXsN,EAAO1P,EAAM0P,KACblE,EAAaxL,EAAM8L,YAMnB+4S,EAAgB,gBAEhB9+S,EAAa,aACb6gT,EAAgB,gBAEhBC,EAAW,WACXjC,EAAgB,aAEhBrxE,EAAQ,QAERrjJ,EAAO,OACPC,EAAQ,QAER01I,EAAQ,QAERm/E,EACY,gBADZA,EAEgB,oBAGhBoD,EAAiB33R,EAAOruB,OAAO,CAC/BoF,KAAM,SAAS0D,EAAS1E,GACpB,IAAIc,EAAOjI,KAEXmH,EAAQ2gB,SAA8B,IAApB3gB,EAAQ2gB,UAAsBnlB,EAAEkJ,GAASgkB,KAAK23R,GAChEp2R,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GAEnCc,EAAK2E,QAAU3E,EAAK4D,QAEpB5D,EAAKmgT,cACLngT,EAAK2/S,cAEL3/S,EAAK4/S,QAAQ5/S,EAAKd,QAAQ2gB,SAE1B7f,EAAK6/S,QAEL7/S,EAAKo/N,gBAEL1mO,EAAMi0B,OAAO3sB,GAEbA,EAAKoqB,kBACT,EAEAlrB,QAAS,CACL/E,KAAM,iBACNiyC,UAAW,OACXvsB,SAAS,EACTokC,MAAO,GACPhzC,QAAS,SACTlJ,KAAM,SACNyjB,SAAU,QACVY,WAAY,OACZikE,KAAM,KACNpE,MAAO,KACPtpE,SAAU,CACNo9R,YAAa,mBAIrB39S,OAAQ,CACJ6pO,EACArjJ,EACAC,GAGJs3N,YAAa,WACT,IAAIngT,EAAOjI,KACPmH,EAAUpE,EAAO,CAAC,EAAGkF,EAAKd,QAAS,CAC/BzB,KAAMuC,EAAK4D,QAAQ+X,KAAK,SAAW,kBAGpCzc,EAAQ+iB,MAEfjiB,EAAK4D,QAAQwZ,SAASsgS,GAAuBtgS,SAASsgS,GAEtDt1S,EAAKg1S,aAAap9S,EAAK4D,QAAS1E,EACpC,EAEA2gT,MAAO,WACH,IAAI7/S,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACfy8S,EAAOrgT,EAAKqgT,KAEhBz8S,EAAQ+X,KApFI,gBAoFgB0kS,EAAO,OAAS,MAC5Cz8S,EAAQ+X,KAAK2jS,GAAee,GAAe,MAC3Cz8S,EAAQ+X,KApFI,gBAoFgB0kS,EAAOA,EAAK97O,KAAK5oD,KAxF5C,MAwFuD,MAEnD/X,EAAQ+X,KAAKld,IACdmF,EAAQ+X,KAAKld,EAAYmF,EAAQi1B,OAAS,IAAM74B,EAAKd,QAAQyjB,SAASo9R,YAE9E,EAEAJ,YAAa,WACT,IAAI3/S,EAAOjI,KACPmH,EAAUpE,EAAO,CAAC,EAAGkF,EAAKd,SAC1BmhT,EAAO3lT,EAAE,sBAENwE,EAAQ+iB,aACR/iB,EAAQ/E,KAEV+E,EAAQ+kD,MAAM1kD,SAInBS,EAAKqgT,KAAOA,EAAKp8S,SAASyD,SAASqP,MAAMupS,gBAAgBxlT,EAAO,CAC5DwjT,WAAYt+S,EAAK4D,QACjB+mF,aAAc3qF,EAAK4D,QACnB28S,SAAUvgT,EAAKwgT,gBAAgBj/S,KAAKvB,GACpCygT,UAAWzgT,EAAK0gT,iBAAiBn/S,KAAKvB,GACtC2gT,UAAW3gT,EAAK86E,OAAOv5E,KAAKvB,IAC7Bd,IAAUiH,KAAK,mBACtB,EAEAq6S,gBAAiB,SAASpnT,GACtB,IAAI4G,EAAOjI,KACP6oT,EAAgB18S,EAAWlE,EAAK4D,SAEX5D,EAAKmC,QAAQymF,EAAM,CAAExpF,OAAQY,EAAK4D,UAEvDxK,EAAG8H,kBAIP9H,EAAGiJ,OAAO88S,iBAAiByB,GAC3B5gT,EAAK4D,QAAQ+X,KAAK2jS,GAAe,GACrC,EAEAoB,iBAAkB,SAAStnT,GACvB,IAAI4G,EAAOjI,KACciI,EAAKmC,QAAQ0mF,EAAO,CAAEzpF,OAAQY,EAAK4D,UAGxDxK,EAAG8H,kBAIPlB,EAAK4D,QAAQ+X,KAAK2jS,GAAe,GACjCt/S,EAAK4D,QAAQzB,QAAQo8N,GACzB,EAEAa,cAAe,WACX,IAAIp/N,EAAOjI,KAEXiI,EAAK4D,QAAQge,GAtIP,UAsIoBgoE,EAAI5pF,EAAK28G,SAASp7G,KAAKvB,GACrD,EAEA86E,OAAQ,SAAS1hF,GACb,IACIgvB,EAAKhvB,EAAGgvB,GACRhpB,EAAShG,EAAGgG,OACZkiB,EAAgBloB,EAAGkoB,cAHZvpB,KAKNsoT,KAAK5iQ,QALC1lD,KAONoK,QAAQ8pO,EAAO,CAAE7jN,GAAIA,EAAIhpB,OAAQA,EAAQkiB,cAAeA,GACjE,EAEAq7F,SAAU,SAASvjH,IACJrB,KAEF6L,QAAQoB,GApKf,IAoKwBs4S,IAAmBlkT,EAAGimC,UAAYzc,EAAKK,OAAS7pB,EAAGimC,UAAYzc,EAAKa,UAC1FrqB,EAAG8H,gBAEX,EAEA48B,MAAO,WACQ/lC,KACN6L,QAAQzB,QAAQo8N,EACzB,EAEAqhF,QAAS,SAAS1/R,EAAQ2gS,GACtB9oT,KAAK6L,QACA+c,YAAY28R,GAAgBp9R,GAE7BA,EACAnoB,KAAK6L,QAAQomB,WAAWuzR,GAExBxlT,KAAK6L,QAAQ+X,KAAK4hS,GAAgBr9R,GAGjC2gS,GACD9oT,KAAK6L,QAAQ+X,KAAK4jS,GAAWr/R,EAErC,EAEAA,OAAQ,SAASA,EAAQw+R,EAAUmC,GAC/B,IAAI7gT,EAAOjI,KAxMvB,YA0MgBmoB,IACAA,GAAS,GAGTw+R,GAAYA,EAASn/S,OACrBS,EAAKqgT,KAAKngS,OAAOA,EAAQw+R,IAI7B1+S,EAAKd,QAAQ2gB,QAAUK,EAEvBlgB,EAAK4/S,QAAQ1/R,EAAQ2gS,GACrB7gT,EAAKqgT,KAAKngS,OAAOA,GACrB,EAEAza,KAAM,SAASi5S,GAGPA,GAAYA,EAASn/S,QAFdxH,KAGFsoT,KAAK56S,KAAKi5S,EAEvB,EAEAl5S,KAAM,SAASk5S,GAGPA,GAAYA,EAASn/S,QAFdxH,KAGFsoT,KAAK76S,KAAKk5S,EAEvB,EAEAp0N,KAAM,WACFvyF,KAAKsoT,KAAKtB,OAAOz0N,MACrB,EAEA7sC,MAAO,WACH1lD,KAAKsoT,KAAKtB,OAAOthQ,OACrB,EAEAwG,MAAO,WACH,OAAOlsD,KAAKsoT,KAAKp8P,OACrB,EAEAh6B,WAAY,SAAS/qB,GACjB,IAAIc,EAAOjI,KAEXoxB,EAAOrpB,GAAGmqB,WAAW3nB,KAAKtC,EAAMd,IAE5BA,EAAQ+sF,OAAS/sF,EAAQ+kD,OAAS/kD,EAAQ6I,QAC1C/H,EAAKqgT,KAAKtmT,UACViG,EAAK2/S,eAGT3/S,EAAKmgT,cAELngT,EAAK6/S,OACT,EAEA9lT,QAAS,WACL,IAAIiG,EAAOjI,KAEXiI,EAAKqgT,KAAKtmT,UAEViG,EAAK4D,QAAQutB,IAAIy4D,GAEjBzgE,EAAOrpB,GAAG/F,QAAQuI,KAAKtC,EAC3B,IAGJsiB,EAAG2M,OAAO6xR,EAEb,CAjRD,CAiRGjoT,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfywB,EAASzwB,EAAM4pB,GAAG6G,OAClB7G,EAAK5pB,EAAM4pB,GAGXy+R,EAAe,EAAG1wN,UAAW33F,EAAM4pB,GAAG+tE,KAAK31F,EAAE,sCAAuC,CAAE21F,KAAMA,IAC5F2wN,EAAkB,EAAG3wN,UAAW,gDAAgDA,WAEhF4wN,EAAQ93R,EAAOruB,OAAO,CACtBoF,KAAM,SAAS0D,EAAS1E,GACpB,IAAIc,EAAOjI,KAEXoxB,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GAEnCc,EAAKkhT,WAELlhT,EAAKmhT,cAELzoT,EAAMi0B,OAAO3sB,EACjB,EAEAjG,QAAS,WAGLovB,EAAOrpB,GAAG/F,QAAQuI,KAFPvK,KAGf,EAEAmH,QAAS,CACL/E,KAAM,QACNinT,cAAc,EACdj7S,KAAM,CAAC,EACPqlB,SAAU,QACV6kE,KAAM,GACNn/E,IAAKu/I,IACLprJ,SAAU,SACV4jI,MAAO,GACPh4H,QAAS,SACTowS,UAAW,CACPlpT,MAAS,KACTC,OAAU,KACVC,MAAS,KACTipT,KAAQ,QAEZC,MAAO,CACHppT,MAAS,KACTC,OAAU,KACVC,MAAS,MAEb0P,KAAM,SACNI,SAAU,KACV0wB,KAAM,GACNzM,WAAY,YACZrnB,SAAS,EACTy8S,YAAa,IAGjBN,SAAU,WACN,IAAIlhT,EAAOjI,KACP8gC,EAAO74B,EAAKd,QAAQ25B,KACpB1wB,EAAWnI,EAAKd,QAAQiJ,SACxBhC,EAAOnG,EAAKd,QAAQiH,KACpBkqF,EAAOrwF,EAAKd,QAAQmxF,KAQxB,GAAiB,OAAbloF,EAKA,OAJAnI,EAAKyhT,MAAQ5oR,EACb74B,EAAKy4I,UAAY//I,EAAMyP,SAASA,GAAU5G,KAAKvB,QAC/CA,EAAK4D,QAAQwE,KAAMpI,EAAKy4I,UAAUtyI,IAKzB,KAATkqF,EAMS,KAATx3D,EAMJ74B,EAAK64B,KAAK74B,EAAK4D,QAAQwE,QALnBpI,EAAK64B,KAAKA,GANV74B,EAAKqwF,KAAKA,EAYlB,EAEA8wN,YAAa,WACT,IAAInhT,EAAOjI,KACXiI,EAAK0hT,YAAc1hT,EAAKd,QAAQktB,WAChCpsB,EAAK2hT,OAAS3hT,EAAKd,QAAQ27I,MAC3B76I,EAAK4hT,OAAS5hT,EAAKd,QAAQqiT,MAC3BvhT,EAAKwqB,MAAQxqB,EAAKd,QAAQ6I,KAC1B/H,EAAK6hT,UAAY7hT,EAAKd,QAAQssB,SAC9BxrB,EAAK8hT,SAAW9hT,EAAKd,QAAQ+R,QAC7BjR,EAAK+hT,WAAa/hT,EAAKd,QAAQmiT,UAC/BrhT,EAAKgiT,cAAgBhiT,EAAKd,QAAQkiT,aAClCphT,EAAKmtF,OAASntF,EAAKd,QAAQ+pI,MAC3BjpI,EAAK0rF,UAAY1rF,EAAKd,QAAQmG,SAC9BrF,EAAKwmQ,SAAWxmQ,EAAKd,QAAQ6F,QAE7B/E,EAAKiiT,mBACT,EAEAA,kBAAmB,WACf,IAAIjiT,EAAOjI,KACPw3E,EAAa,CAAC,WACd2yO,EAAiBliT,EAAKd,QAAQsiT,YAC9Bp1R,EAAapsB,EAAK0hT,YAClB7mK,EAAQ76I,EAAK2hT,OACbJ,EAAQvhT,EAAK4hT,OACb75S,EAAO/H,EAAKwqB,MACZ23R,EAAWZ,EAAMx5S,KAAUpN,EAAcoN,EAAOw5S,EAAMx5S,GACtDyjB,EAAWxrB,EAAK6hT,UAChB5wS,EAAUjR,EAAK8hT,SACfT,EAAYrhT,EAAK+hT,WACjBK,EAAcf,EAAUpwS,KAAatW,EAAcsW,EAAUowS,EAAUpwS,GACvEmwS,EAAephT,EAAKgiT,cACpB/4K,EAAQjpI,EAAKmtF,OACb9nF,EAAWrF,EAAK0rF,UAChB3mF,EAAU/E,EAAKwmQ,SAGnBxmQ,EAAK4D,QAAQkhB,aAAY,SAASzT,EAAO+T,GACL,IAA5BA,EAAU1X,QAAQ,QAAsD,IAAvCw0S,EAAex0S,QAAQ0X,IACxDplB,EAAK4D,QAAQkhB,YAAYM,EAEjC,IAGwB,iBAAboG,GAAsC,KAAbA,GAChC+jD,EAAW71E,KAAK,WAAa8xB,GAIP,iBAAfY,GAA0C,KAAfA,GAClCmjD,EAAW71E,KAAK,WAAa8xB,EAAW,IAAMY,GAI9B,iBAATrkB,GAA8B,KAATA,GAC5BwnE,EAAW71E,KAAK,WAAayoT,GAIV,iBAAZlxS,GAAoC,KAAZA,GAC/Bs+D,EAAW71E,KAAK,aAAe0oT,GAId,iBAAVvnK,GAAgC,KAAVA,GAC7BtrE,EAAW71E,KAAK,WAAamhJ,GAIL,kBAAjBumK,IAA+C,IAAjBA,GACrC7xO,EAAW71E,KAAK,yBAII,iBAAb2L,GAAsC,KAAbA,GAChCkqE,EAAW71E,KAAK,WAAa2L,GAIT,iBAAbA,GAAsC,KAAbA,GAAgC,WAAbA,GAA0C,iBAAV4jI,GAAiD,GAA3BA,EAAMtmI,MAAM,KAAKpD,QAC1HgwE,EAAW71E,KAAK,KAAOuvI,EAAMzuI,QAAQ,IAAK,OAI9B,IAAZuK,GACAwqE,EAAW71E,KA7KV,YAiLLsG,EAAK4D,QAAQwZ,SAASmyD,EAAW3sE,KAAK,KAC1C,EAEAqnB,WAAY,SAAS/qB,GACjB,IAAIc,EAAOjI,KAEXiI,EAAK4D,QAAQkhB,aAAY,SAASzT,EAAO+T,GACjCA,EAAU1X,QAAQ,OAAS,GAC3B1N,EAAK4D,QAAQkhB,YAAYM,EAEjC,IAEA+D,EAAOrpB,GAAGmqB,WAAW3nB,KAAKtC,EAAMd,GAEhCc,EAAKkhT,WAELlhT,EAAKmhT,aACT,EAEAtoR,KAAM,SAASA,GACX,IAAI74B,EAAOjI,KACPmZ,EAAMlR,EAAKd,QAAQgS,IAGvB,GAAyB,IAArB7R,UAAUE,QAAgBs5B,IAASl+B,EACnC,OAAOqF,EAAKyhT,MAGhBzhT,EAAKyhT,MAAQ5oR,GAGA,IAATA,IAA0B,IAATA,GAA2B,OAATA,EAOnB,iBAATA,EAOS,iBAATA,EAWS,iBAATA,GAAqB,aAAcA,GAC1C74B,EAAK4D,QAAQwE,KAAKywB,EAAKrvB,YAXnBqvB,EAAO3nB,EACPlR,EAAK4D,QAAQwE,KAAK8I,EAAM,KAExBlR,EAAK4D,QAAQwE,KAAKywB,GAVtB74B,EAAK4D,QAAQwE,KAAKywB,GAPlB74B,EAAK4D,QAAQwE,KAAK,GA8B1B,EAEAioF,KAAM,SAASA,GACX,IACIgyN,EADAriT,EAAOjI,KAIX,OAAyB,IAArBsH,UAAUE,QAAgB8wF,IAAS11F,EAC5BqF,EAAKo7G,OAGhBp7G,EAAKo7G,MAAQ/qB,EAGgB,IAAzBA,EAAK3iF,QAAQ,SACb20S,EAAuB3pT,EAAMyP,SAAS64S,QACtChhT,EAAK4D,QAAQwE,KAAKi6S,EAAqB,CAAEhyN,KAAMA,OAMnDgyN,EAAuB3pT,EAAMyP,SAAS44S,QACtC/gT,EAAK4D,QAAQwE,KAAKi6S,EAAqB,CAAEhyN,KAAMA,MACnD,EAEAjkE,WAAY,SAAS48F,GACjB,IAAIhpH,EAAOjI,KAGX,GAAyB,IAArBsH,UAAUE,QAAgBypH,IAAUruH,EACpC,OAAOqF,EAAK0hT,YAGhB1hT,EAAK0hT,YAAc14L,EACnBhpH,EAAKiiT,mBACT,EAEAhxS,QAAS,SAASA,GACd,IAAIjR,EAAOjI,KAGX,GAAyB,IAArBsH,UAAUE,QAAgB0R,IAAYtW,EACtC,OAAOqF,EAAK8hT,SAGhB9hT,EAAK8hT,SAAW7wS,EAChBjR,EAAKiiT,mBACT,EAEAx8S,KAAM,WACS1N,KACNyuQ,UAAW,EADLzuQ,KAGNkqT,mBACT,EAEAz8S,KAAM,WACSzN,KACNyuQ,UAAW,EADLzuQ,KAGNkqT,mBACT,IAGJ3/R,EAAG2M,OAAOgyR,EAEb,CAtTD,CAsTGpoT,OAAOH,MAAM+G,QACF/G,OAUV,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfywB,EAASzwB,EAAM4pB,GAAG6G,OAClB/gB,EAAO1P,EAAM0P,KACbka,EAAK5pB,EAAM4pB,GACXM,EAAOlqB,EAAMkqB,KACbqpN,EAAQ,QACRq2E,EAAY5pT,EAAM4C,QAAQumB,UAC1B0gS,EAAU7pT,EAAM4C,QAAQwmB,QAExB8nE,EAAK,eACL21N,EAAW,WAEXiD,EAAe,UACfC,EAAc,WASlB/pT,EAAM2uC,YAAY,SAPI,CAClBgpD,KAAM,GACNF,UAAW,GACX+sN,eAAgB,GAChBz3C,SAAU,GACV54L,MAAO,OAIX,IAAI61O,EAASv5R,EAAOruB,OAAO,CACvBoF,KAAM,SAAS0D,EAAS1E,GACpB,IAAIc,EAAOjI,KAEXoxB,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GAEnC0E,EAAU5D,EAAK2E,QAAU3E,EAAK4D,QAC9B1E,EAAUc,EAAKd,QAEfkJ,EAAKg1S,aAAax5S,EAASlJ,EAAEI,OAAO,CAAC,EAAGoE,IAExC0E,EAAQ+X,KAAK,OAAQ,UAErBzc,EAAQghB,OAAShhB,EAAQghB,QAAUhhB,EAAQ2gB,UAAYjc,EAAQ+X,KAAK4jS,GACpEv/S,EAAKkgB,OAAOhhB,EAAQghB,QAEhBhhB,EAAQghB,QACRlgB,EAAK6pB,YAGT7pB,EAAK2iT,SAEL/+S,EACKge,GAAGqqN,EAAQriJ,EAAI5pF,EAAK86E,OAAOv5E,KAAKvB,IAChC4hB,GAAG,QAAUgoE,EAAI5pF,EAAK2uF,OAAOptF,KAAKvB,IAClC4hB,GAAG,OAASgoE,EAAI5pF,EAAK2+G,MAAMp9G,KAAKvB,IAChC4hB,GAAG,UAAYgoE,EAAI5pF,EAAK28G,SAASp7G,KAAKvB,IACtC4hB,GAAG,QAAUgoE,EAAI5pF,EAAK4iT,cAAcrhT,KAAKvB,IACzC4hB,GAAG0gS,EAAY14N,EAAI5pF,EAAK6iT,WAAWthT,KAAKvB,IACxC4hB,GAAG2gS,EAAU34N,EAAV24N,YAAgC34N,EAAI5pF,EAAK4iT,cAAcrhT,KAAKvB,IAEpEtH,EAAMi0B,OAAO3sB,EACjB,EAEAjG,QAAS,WACL,IAAIiG,EAAOjI,KAEXiI,EAAK2E,QAAQwsB,IAAIy4D,GAEb5pF,EAAK6sE,OACL7sE,EAAK6sE,MAAM9yE,UAGfovB,EAAOrpB,GAAG/F,QAAQuI,KAAKtC,EAC3B,EAEAoC,OAAQ,CACJ6pO,GAGJ/sO,QAAS,CACL/E,KAAM,SACN+lB,QAAQ,EACRL,SAAS,EACTwwE,KAAM,GACNF,UAAW,GACX+sN,eAAgB,GAChBz3C,SAAU,GACV54L,MAAO,KACP9kE,KAAM,SACN8yI,MAAO,YACP5pI,QAAS,SACTua,SAAU,QACVY,WAAY,QAGhB02R,gBAAiB,WACb,MAAqD,UAA9C/qT,KAAK6L,QAAQgkB,KAAK,WAAWhX,aACxC,EAEAkqE,OAAQ,SAASp+E,GACT3E,KAAKmH,QAAQghB,QACTnoB,KAAKoK,QAAQ8pO,EAAO,CACpB/zN,MAAOxb,EACP0rB,GAAIrwB,KAAK6L,QAAQ+X,KAAK,MACtBvc,OAAQrH,KAAK6L,WAEblH,EAAEwE,gBAGd,EAEAytF,OAAQ,WACA52F,KAAKmH,QAAQghB,QACbnoB,KAAK6L,QAAQwZ,SAASolS,EAE9B,EAEA7jM,MAAO,WACH,IAAI3+G,EAAOjI,KACXiI,EAAK4D,QAAQkhB,YAAY09R,GACzBvxR,YAAW,WACPjxB,EAAK4D,QAAQkhB,YAAY29R,EAC7B,GACJ,EAEA9lM,SAAU,SAASjgH,GACf,IAAIsD,EAAOjI,KACP2E,EAAE2iC,SAAWzc,EAAKK,OAASvmB,EAAE2iC,SAAWzc,EAAKa,WAC7CzjB,EAAK6iT,aAEA7iT,EAAK8iT,oBACFpmT,EAAE2iC,SAAWzc,EAAKa,UAClB/mB,EAAEwE,iBAENlB,EAAK86E,OAAOp+E,IAGxB,EAEAkmT,cAAe,WACX7qT,KAAK6L,QAAQkhB,YAAY29R,EAC7B,EAEAI,WAAY,WACJ9qT,KAAKmH,QAAQghB,QACbnoB,KAAK6L,QAAQwZ,SAASqlS,EAE9B,EAEAviS,OAAQ,SAASA,GACb,IAAIlgB,EAAOjI,KACP6L,EAAU5D,EAAK4D,QAEfsc,IAAWvlB,IACXulB,GAAS,GAGbA,IAAWA,EACXlgB,EAAKd,QAAQghB,OAASA,EACtBtc,EAAQ+c,YA/II,cA+IwBT,GAC/BvE,KAAK,iBAAkBuE,GACvBvE,KAAK4jS,GAAWr/R,GAEjBA,GACAlgB,EAAK6pB,YAIT,IACIjmB,EAAQzB,QAAQ,OACpB,CAAE,MAAO4gT,GAAM,CACnB,EAEAJ,OAAQ,SAASzjT,GACb,IAEI8jT,EAFAhjT,EAAOjI,KACPkrT,EAAe/jT,GAAWc,EAAKd,QAAQ2tE,MAGtB,OAAjBo2O,GAAyBA,IAAiBtoT,IAI1CsoT,EAAa5iT,cAAgB7H,SAC7ByqT,EAAe,CAAEpqR,KAAMoqR,IAGvBA,EAAa59S,WAAa1K,GAAyC,KAA1BsoT,EAAa59S,WACtD49S,EAAa59S,SAAW,OAEpB49S,EAAah6K,QAAUtuI,GAAsC,KAAvBsoT,EAAah6K,QACnDg6K,EAAah6K,MAAQ,YAI7Bg6K,EAAazB,YAAc,CAAC,kBAE5BxhT,EAAK4D,QAAQwZ,SAAS,qBAEtB4lS,EAAgBtoT,EAAE,YAAYuJ,SAASjE,EAAK4D,SAC5C5D,EAAK6sE,MAAQ,IAAIvqD,EAAG2+R,MAAM+B,EAAeC,GAC7C,KAGyC,IAAzCP,EAAO5iT,GAAGkH,eAAe,aACzBxO,OAAOquC,eAAe67Q,EAAO5iT,GAAI,WAAY,CACzCkoB,IAAK,WACD,OAAOtvB,EAAMC,SAAS63Q,MAC1B,IAIR93Q,EAAMwyB,cAAcoY,eAAe,SAAU,aAE7C5qC,EAAMwyB,cAAc2X,eAAe,SAAU,CAAC,CAC1Cjb,KAAM,WACNxW,OAAQ1Y,EAAMwyB,cAAc0X,eAAezsB,OAAO,CAAC,OAAQ,WAC5D,CACCyR,KAAM,UACNxW,OAAQ1Y,EAAMwyB,cAAcgX,cAAc/rB,OAAO,CAAC,CAAC,OAAQ,aAG/Dzd,EAAM4pB,GAAG2M,OAAOyzR,EAEnB,CA3ND,CA2NG7pT,OAAOH,MAAM+G,QACN/G,OAUV,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfgqT,EAAShqT,EAAM4pB,GAAGogS,OAClBz2E,EAAQ,QACRi3E,EAAS,SAETC,EAAe,eACfC,EAAW,aAIXC,EAAeX,EAAO5nT,OAAO,CAC7BoF,KAAM,SAAS0D,EAAS1E,GACpB,IAAIc,EAAOjI,KAEX2qT,EAAO5iT,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GAEnC0E,EAAU5D,EAAK2E,QAAU3E,EAAK4D,QAC9B1E,EAAUc,EAAKd,QAGfc,EAAKsjT,WAAiC,IAArBpkT,EAAQurE,SACzBzqE,EAAK8gB,OAAO9gB,EAAKsjT,WAEbpkT,EAAQotD,OACR1oD,EAAQ+X,KAjBH,aAiBoBzc,EAAQotD,OAGrC5zD,EAAMi0B,OAAO3sB,EACjB,EAEAjG,QAAS,WACMhC,KAEN4M,QAAQwsB,IA7BZ,sBA8BDuxR,EAAO5iT,GAAG/F,QAAQuI,KAHPvK,KAIf,EAEAqK,OAAQ,CACJ6pO,EACAi3E,GAGJhkT,QAAS,CACL/E,KAAM,eACNmyD,MAAO3xD,EACP8vE,UAAU,GAGd3pD,OAAQ,SAASA,GACTA,IAAWnmB,IACXmmB,GAAU/oB,KAAKurT,WAGnBvrT,KAAKurT,UAAYxiS,GAEF,IAAXA,GACA/oB,KAAK6L,QAAQ+X,KAAKwnS,GAAc,GAChCprT,KAAK6L,QAAQwZ,SAASgmS,KACJ,IAAXtiS,IACP/oB,KAAK6L,QAAQ+X,KAAKwnS,GAAc,GAChCprT,KAAK6L,QAAQkhB,YAAYs+R,GAEjC,EAEAtoO,OAAQ,SAASp+E,GACT3E,KAAKmH,QAAQghB,SACTnoB,KAAKoK,QAAQ8pO,EAAO,CACpB/zN,MAAOxb,EACP0rB,GAAIrwB,KAAK6L,QAAQ+X,KA5DxB,MA6DOvc,OAAQrH,KAAK6L,UAEblH,EAAEwE,kBAEFnJ,KAAK+oB,SAEL/oB,KAAKoK,QAAQ+gT,EAAQ,CACjBhrS,MAAOxb,EACP6tE,QAASxyE,KAAKurT,UACdh3P,MAAOv0D,KAAKmH,QAAQotD,MACpBlkC,GAAIrwB,KAAK6L,QAAQ+X,KAvE5B,MAwEWvc,OAAQrH,KAAK6L,WAI7B,IAGJlL,EAAMwyB,cAAcoY,eAAe,eAAgB,aAEnD5qC,EAAMwyB,cAAc2X,eAAe,eAAgB,CAAC,CAChDjb,KAAM,WACNxW,OAAQ1Y,EAAMwyB,cAAc0X,eAAezsB,OAAO,CAAC,UACpD,CACCyR,KAAM,UACNxW,OAAQ1Y,EAAMwyB,cAAcgX,cAAc/rB,OAAO,CAAC,CAAC,OAAQ,aAG/Dzd,EAAM4pB,GAAG2M,OAAOo0R,EAEnB,CApGD,CAoGGxqT,OAAOH,MAAM+G,QACN/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACf4pB,EAAK5pB,EAAM4pB,GACX6G,EAAS7G,EAAG6G,OACZk6R,EAAe/gS,EAAG+gS,aAClBX,EAASpgS,EAAGogS,OACZ9/R,EAAOlqB,EAAMkqB,KACbgnE,EAAK,oBAEL25N,EAAU,WACVH,EAAW,aACX7D,EAAW,aAEXzqO,EAAS,SAETyoO,EAAgB,gBAEhBrxE,EAAM,IACNz7F,EAAO,OACP+yK,EAAS,SACTC,EAAW,WAEXllF,EAAQ,QAERmlF,EAAcv6R,EAAOruB,OAAO,CAC5BoF,KAAM,SAAS0D,EAAS1E,GACpB,IAAIc,EAAOjI,KAEXoxB,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GAEnCc,EAAK2E,QAAU3E,EAAK4D,QAEpB5D,EAAK2jT,gBAAkB,GAEvB3jT,EAAK4jT,SAAW5jT,EAAK6jT,aAAa7jT,EAAKd,QAAQ+kD,OAE/CjkD,EAAK4D,QACAwZ,SAAS/R,wCACTsQ,KAAK,OAAQ,SAElB3b,EAAK4/S,SAAU,EAEV5/S,EAAKd,QAAQghB,QAAWlgB,EAAKd,QAAQ2gB,UACtC7f,EAAK4/S,SAAU,EACf5/S,EAAK4D,QACI+X,KAAK4hS,GAAe,GACpBngS,SAASmiS,GAElBv/S,EAAK4jT,SAASvqT,SAAS2a,IACnBA,EAAEkM,QAAO,EAAM,KAInBlgB,EAAKd,QAAQ++B,YAAcwyG,GAC3BzwI,EAAKs+B,OAAOt+B,EAAKd,QAAQmS,OAG7BrR,EAAKo/N,eACT,EAEAh9N,OAAQ,CACJ0yE,GAGJ51E,QAAS,CACL/E,KAAM,cACN8jC,UAAWulR,EACXnyS,OAAQ,EACR6O,QAAQ,EACRL,SAAS,EACTikS,eAAe,EACf/7S,KAAM,SACNkJ,QAAS,SACTua,SAAU,QACVY,WAAY,QAGhBygD,MAAO,SAAS3lC,EAAMzmC,GAClB,IAIIosE,EAAOk3O,EAHPngT,EADO7L,KACQ6L,QACf4sQ,EAAU3vQ,MAAMqmC,GAA8BtjC,EAAQsqB,KAAKgZ,GAAM88Q,wBAA0BpgT,EAAQsqB,KAAKgZ,GAAM+8Q,iBAFvGlsT,KAEsB6rT,SAAS18Q,GACtC/D,EAAa1iC,GAAmB,IAAVA,EAG1B,GAAK+vQ,EAAL,CAMA,KAFA3jM,EAAQ2jM,EAAO3jM,QAED1pC,EAEV,OADAqtO,EAAOmyC,OAAO,CAAE9pR,KAAMngC,EAAM4tB,WAAW7lB,KAChC/H,EAAM4tB,WAAW7lB,GAG5B,GAAI0iC,EACA0pC,EAAMh0C,KAAKngC,EAAM4tB,WAAW7lB,SACzB,IAAc,IAAVA,EAKP,OAJA+vQ,EAAO3jM,MAAQ,KACfk3O,EAAUl3O,EAAMjpE,QAChBipE,EAAM9yE,eACNgqT,EAAQp/P,QAAQvgD,SAIpB,OAAOyoE,EAAQA,EAAMh0C,OAAS,IAnB9B,CAoBJ,EAEA9sB,QAAS,WACL,OAAOhU,KAAK6L,QAAQsqB,KAAKg+M,EAAMk3E,EACnC,EAEArpT,QAAS,WACL,IAAIiG,EAAOjI,KAEXiI,EAAK4D,QAAQutB,IAAIy4D,GAEjB5pF,EAAK4D,QAAQsqB,KAAKg+M,EAAMq3E,GAASxoT,MAAK,SAASuE,EAAGimB,GAC9C,IAAI0nQ,EAAYvyR,EAAE6qB,GAAIy+R,wBAA0BtpT,EAAE6qB,GAAI0+R,iBAElDh3B,GACAA,EAAUlzR,SAElB,IAEAovB,EAAOrpB,GAAG/F,QAAQuI,KAAKtC,EAC3B,EAEAkgB,OAAQ,SAASA,QACQ,IAAVA,IACPA,GAAS,GAGbnoB,KAAK6L,QACI+X,KAAK4hS,GAAgBr9R,GACrBS,YAAY4+R,GAAWr/R,GAEhCnoB,KAAK6rT,SAASvqT,SAAS2a,IACnB,IAAI04N,EAAU14N,EAAEpQ,QAAQkB,SA9HvB,YA8H2CkP,EAAEpQ,QAAQoB,GAAG,UAEzDgP,EAAEkM,OAAOA,GAELwsN,GACA14N,EAAEpQ,QAAQomB,WAAW,YAAY5M,SAAS,WAAWjb,QAAQ,QACjE,IAGJpK,KAAK6nT,QAAU7nT,KAAKmH,QAAQghB,OAASA,CACzC,EAEAoe,OAAQ,SAAS/Y,GACb,IAAIvlB,EAAOjI,KAEPsZ,GAAS,EAETtZ,KAAKmH,QAAQ++B,YAAcwyG,GA3J3C,YA2JmDlrH,IAA8B,IAARA,IAKzDlU,EADc,iBAAPkU,EACCA,EACDA,EAAGsI,UACVtI,EAAK7qB,EAAE6qB,IACIlU,QAEHkU,EAAGlU,QAGNrR,EAAK4jT,SAASvyS,KAMnBrR,EAAKd,QAAQ++B,YAAcwlR,EACvBl+R,EAAGhmB,OAAS,EACZgmB,EAAGxqB,MAAK,CAACuE,EAAGsE,KACR,IAAIjC,EAAMjH,EAAEkJ,GAASyN,QAErBrR,EAAK4jT,SAASjiT,GAAKmf,SACnB9gB,EAAKkkT,aAAaviT,EAAI,KAG1B3B,EAAK4jT,SAASvyS,GAAOyP,SACrB9gB,EAAKkkT,aAAa7yS,IAGtBrR,EAAKmkT,cAAc9yS,IAE3B,EAEA+yS,WAAY,SAAS7+R,EAAIrmB,GACrB,GAAInH,KAAKmH,QAAQ++B,YAAcwyG,EAG3B,cAFOvxI,EAAQurE,SAER,IAAIi4O,EAAOn9R,EAAIrmB,GAEtB,IAAImlT,EAAM,IAAIhB,EAAa99R,EAAIrmB,GAI/B,OAFAmlT,EAAI9iT,KAlLH,SAkLgBxJ,KAAK0iF,QAAQl5E,KAAKxJ,KAAMwtB,IAElC8+R,CAEf,EAEAjlF,cAAe,WACNrnO,KAAKmH,QAAQ4kT,eACd/rT,KAAK6L,QAAQge,GAjMX,UAiMwBgoE,EAAI7xF,KAAKusT,SAAS/iT,KAAKxJ,MAEzD,EAEAusT,SAAU,SAAS5nT,GACf,IACI6nT,EAAc7pT,EADP3C,KACc6L,SACrB4gT,EAAiBD,EAAYr2R,KAAKg+M,EAAMq3E,GACxCp8E,EAAiBo9E,EAAYr2R,KAAK,UAClCgqP,EAAessC,EAAenzS,MAAM81N,GACpC/vN,EAAQ1e,EAAM4C,QAAQ8b,MALfrf,KAK0B6L,SAGhClH,EAAE2iC,UAAYzc,EAAKO,OAAS/L,GAAW1a,EAAE2iC,UAAYzc,EAAKS,OAASjM,IACrC,IAAjB8gQ,EAAqBssC,EAAez0R,GAAGy0R,EAAejlT,OAAS,GAAK7E,EAAE8pT,EAAetsC,EAAe,KACtG/1Q,QAAQo8N,GACpB7hO,EAAEwE,mBACMxE,EAAE2iC,UAAYzc,EAAKO,MAAQ/L,GAAW1a,EAAE2iC,UAAYzc,EAAKS,QAAUjM,MAC7D8gQ,EAAe,IAAMssC,EAAejlT,OAASilT,EAAez0R,GAAG,GAAKr1B,EAAE8pT,EAAetsC,EAAe,KACtG/1Q,QAAQo8N,GACpB7hO,EAAEwE,iBAEV,EAEAujT,iBAAkB,SAASC,GACnBA,EAAQnlT,SACR7E,EAAEgqT,EAAQ,GAAG9gT,SAASwZ,SAAS,iBAC/B1iB,EAAEgqT,EAAQA,EAAQnlT,OAAS,GAAGqE,SAASwZ,SAAS,eAExD,EAEAymS,aAAc,SAAS5/P,GACnB,IAAIjkD,EAAOjI,KACP+vK,EAAe9nK,EAAKd,QACpBouC,EAAWttC,EAAK4D,QAAQ0pC,WACxBo3Q,EAAU,GA0Bd,OAxBIp3Q,EAAS/tC,OAAS,GAClB+tC,EAASvyC,MAAK,SAASsW,GACnB,IAAIkU,EAAK7qB,EAAE3C,MACPgpC,EAAQxb,EAAG2I,KAAK,OAAO9Q,SAAS,WAChC+S,EAAW5K,EAAGvgB,GAAG,eAAiBugB,EAAGzgB,SAASy6S,GAC9CrgT,EAAU,CACN2tE,MAAOn0E,EAAM04B,UAAU7L,EAAI,SAC3B8qE,KAAOtvD,EAAM,GAAmC,KAA9BroC,EAAM04B,UAAU7L,EAAI,QACtC4K,SAAUA,EACVs6C,UAAWt6C,GAAW5K,EAAGvgB,GAAGknO,EAAMk3E,GAClCr7S,KAAM+/J,EAAa//J,KACnBkJ,QAAS62J,EAAa72J,QACtBua,SAAUs8I,EAAat8I,SACvBY,WAAY07I,EAAa17I,YAGjCs4R,EAAQhrT,KAAKsG,EAAKokT,WAAW7+R,EAAIrmB,IAE7BA,EAAQurE,UACRzqE,EAAK2jT,gBAAgBjqT,KAAK2X,EAElC,IAGC4yC,GAKLA,EAAM5qD,SAAQ,SAAS6tC,EAAM71B,GACzB,IAAIwnB,EAAOqO,EAAKrO,MAAwB,IAAjBqO,EAAKkoM,QAAoBloM,EAAKrO,KAAOngC,EAAM4tB,WAAW4gB,EAAKrO,MAAQ,GACtFtT,EAAK2hB,EAAKngB,IAAMrsB,EAAE,WAAawsC,EAAKngB,IAAM,KAAOrsB,EAAE,YAEvD6qB,EAAGnd,KAAKywB,GAEJqO,EAAK8a,YACLz8B,EAAG5J,KAAKurB,EAAK8a,YAGjB9a,EAAOxsC,EAAEI,OAAO,CAAC,EAAGosC,EAAM,CACtBn/B,KAAM+/J,EAAa//J,KACnBkJ,QAAS62J,EAAa72J,QACtBua,SAAUs8I,EAAat8I,SACvBY,WAAY07I,EAAa17I,aAG7B7G,EAAGthB,SAASjE,EAAK4D,SACjB8gT,EAAQhrT,KAAKsG,EAAKokT,WAAW7+R,EAAI2hB,IAE7BA,EAAKujC,UACLzqE,EAAK2jT,gBAAgBjqT,KAAK2X,EAElC,IAEArR,EAAKykT,iBAAiBC,GAEfA,IA/BH1kT,EAAKykT,iBAAiBC,GACfA,EA+Bf,EAEAP,cAAe,SAAS9yS,GACpBtZ,KAAK4rT,gBAAkB,GACvB5rT,KAAK6rT,SAASvqT,SAAS2a,IACnBA,EAAE8M,QAAO,EAAM,IAGnB/oB,KAAK6rT,SAASvyS,GAAOyP,QAAO,GAC5B/oB,KAAK4rT,gBAAgBjqT,KAAK2X,EAC9B,EAEAopE,QAAS,SAAS+1L,GACd,IAAIvyO,EAAYlmC,KAAKmH,QAAQ++B,UACzB5sB,EAAQm/P,EAAOn/P,QAEdtZ,KAAK6nT,UAAWpvC,EAAOxrQ,GAAGknO,EAAMqzE,KAIjCthR,IAAcwlR,EACd1rT,KAAKmsT,aAAa7yS,GACX4sB,IAAculR,GACrBzrT,KAAKosT,cAAc9yS,GAGvBtZ,KAAKoK,QAAQ2yE,EAAQ,CAAE8jG,QAAS7gL,KAAK4rT,gBAAiBvkT,OAAQoxQ,IAClE,EAEA0zC,aAAc,SAAS7yS,IAC0B,IAAzCtZ,KAAK4rT,gBAAgBj2S,QAAQ2D,GAC7BtZ,KAAK4rT,gBAAgBjqT,KAAK2X,GAE1BtZ,KAAK4rT,gBAAgBphT,OAAOxK,KAAK4rT,gBAAgBj2S,QAAQ2D,GAAQ,EAEzE,IAGJiR,EAAG2M,OAAOy0R,EACb,CApVD,CAoVG7qT,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACf4pB,EAAK5pB,EAAM4pB,GACX5Q,EAAgBhZ,EAAM+Y,eACtB8F,EAAS7e,EAAM4C,QAAQic,OAAS7e,EAAM4C,QAAQggB,SAC9CtgB,EAAUC,MAAMD,QAChBsL,EAAyB5N,EAAMyN,KAAKG,uBACpCg8S,EAAY,YACZr2E,EAAQ,QAGRnxO,EAASJ,EAAEI,OACXC,EAAOL,EAAEK,KACT+rE,EAASpuE,EAAM4tB,WACfne,EAAWzP,EAAMyP,SACjBya,EAAOlqB,EAAMkqB,KACbuG,EAAS7G,EAAG6G,OACZw7R,EAAsB,gBACtB/6N,EAAK,aAELhB,EAAO,OACPg8N,EAAO,SACPzoE,EAAO,qBACP0oE,EAAgB,UAChBC,EAAgB,4BAChBC,EAAO,SACPl8N,EAAQ,QACRm8N,EAAQ,QACRpnF,EAAQ,UACRqnF,EAAQ,UACRnwO,EAAS,SACTowO,EAAS,SACTn8N,EAAW,WACXD,EAAa,aACbq8N,EAAc,aAAev7N,EAAK,iBAAmBA,EAAK,eAAiBA,EAC3E5qE,EAAWtmB,EAAM4C,QAAQ0jB,SACzBF,EAAapmB,EAAM4C,QAAQwjB,WAC3BsmS,EAActmS,GAAcE,EAC5Bi2B,EAAS,SACT8N,EAAQ,QACRsiQ,EAAa3sT,EAAM4C,QAAQic,MAAQ,aAAe,GAClD+tS,EAAatmS,EAAW,cAAiBF,EAAa,gBAAkB,aACxEu/M,EAAar/M,EAAW,aAAgBF,EAAa,eAAiB,aACtEu7K,EAAa,iBAAmBzwG,EAAK,cAAgBA,EACrD27N,EAAS7sT,EAAM4C,QAAQ4mB,OAAS0nE,EAKhC47N,EAAgB,QAChBC,EAAoB,cACpB/7N,EAAmBhvF,EAAEgN,SAASiK,iBAC9B+zS,EAAa,aACbC,EAAa,UACbnD,EAAe,UACflF,EAAgB,aAEhBsI,EAAe,UAEfC,EAA6B,yBAC7BC,EAAkC,+BAClCC,EAAgB,kBAAoBF,EACpCG,GAAmB,iDAEnBC,GAAe,UACfC,GAAyB,2BAEzBC,GAAoB,oCAEpBC,GAAuB,wBACvBC,GAAoB,CAAE,EAAK,EAAG9uS,MAAS,GAEvCu5N,GAAY,YACZwuE,GAAgB,gBAChBgH,GAAO,OAEPx+O,GAAW,CACPjvC,KAAM,gBACN9R,IAAK,eACLm2R,eAAgB,0BAChBz3C,SAAU,oBACV8gD,UAAW,qBACX7nQ,QAAS,oBAGb8nQ,GAAY,CACRC,gBAAiB,SAASn6P,EAAOplB,GAC7B,IAAIr4B,EAAS,qBACTwC,EAAQ61B,EAAK71B,MA8BjB,OA5BI61B,EAAK+qF,YACLpjH,GAAU,iBAGO,IAAjBq4B,EAAKrnB,UACLhR,GAAU,eAGVy9C,EAAMo6P,YAAwB,IAAVr1S,IACpBxC,GAAU,YAGVwC,GAASi7C,EAAM/sD,OAAS,IACxBsP,GAAU,WAGVq4B,EAAKhqB,WACLrO,GAAU,IAAMq4B,EAAKhqB,UAGrBgqB,EAAKvrB,MAAQurB,EAAKvrB,KAAK3U,eAAe,WACtC6H,GAAU,IAAMq4B,EAAKvrB,KAAY,OAGjCurB,EAAKujC,WACL57D,GAAU,eAGPA,CACX,EAEA83S,kBAAmB,SAASz/Q,GACxB,IAAIr4B,EAAS,GACTmzC,EAAa9a,EAAKvrB,MAAQ,CAAC,EAE/B,IAAK,IAAIA,KAAQqmC,EACTA,EAAWh7C,eAAe2U,IAAkB,UAATA,IACnC9M,GAAU8M,EAAO,KAAQqmC,EAAWrmC,GAAQ,MAIpD,OAAO9M,CACX,EAEA+3S,mBAAoB,SAASC,GACzB,IAAIh4S,EAAS,GACTmzC,EAAa6kQ,GAAiBA,EAAc38S,OAAS28S,EAAc38S,SAAW,CAAC,EAQnF,IAAK,IAAIyR,KANJqmC,EAAkB,MAGnBA,EAAkB,OAAK,IAAMijQ,EAF7BjjQ,EAAkB,MAAIijQ,EAKTjjQ,EACTA,EAAWh7C,eAAe2U,KAC1B9M,GAAU8M,EAAO,KAAQqmC,EAAWrmC,GAAQ,MAIpD,OAAO9M,CACX,EAEAi4S,qBAAsB,SAAS5/Q,GAC3B,IAAIr4B,EAAS,GACTmzC,EAAa9a,EAAK6/Q,aAAe,CAAC,EAClCC,EAAiB,iDAQrB,IAAK,IAAIrrS,KANJqmC,EAAkB,MAGnBA,EAAkB,OAAK,IAAMglQ,EAF7BhlQ,EAAkB,MAAIglQ,EAKThlQ,EACTA,EAAWh7C,eAAe2U,KAC1B9M,GAAU8M,EAAO,KAAQqmC,EAAWrmC,GAAQ,MAIpD,OAAO9M,CACX,EAEAo4S,UAAW,WACP,OAAO9qE,CACX,EAEA+qE,gBAAiB,SAAS56P,GACtB,OAA0B,IAAnBA,EAAM66P,SAAoB,GAAGzuT,EAAMijB,KAAK,0BAA4B,EAC/E,EAEAyrS,cAAe,WACX,MAAO,sCACX,EAEAC,qBAAsB,WAClB,MAAO,cACX,EAEA3oQ,QAAS,SAASxX,GACd,OAAOA,EAAKwX,QAAUxX,EAAKwX,QAAU,QACzC,GA2BR,SAASpxB,GAAS5oB,EAAQk3B,GACtB,IACI,OAAOlhC,EAAE4yB,SAAS5oB,EAAQk3B,EAC9B,CAAE,MAAOl/B,GACL,OAAO,CACX,CACJ,CAEA,SAAS4qT,GAAkBpgR,IACvBA,EAAOxsC,EAAEwsC,IACWvrB,KAAKjjB,EAAMijB,KAAK,gBAMpCurB,EAAK9pB,SAAS,sBACTkwB,SAxNC,OAyNDlwB,SAAS6nS,GAEd/9Q,EACKoG,SAAS,KACTlwB,SAAS++N,GACT7uM,SA9NC,OA+NDlwB,SAAS6nS,GAEd/9Q,EACK5f,OAAO,oBAEZ4f,EACK5f,OAAO,gBACPxC,YAAY,eACZ1H,SAAS,oBACTunC,QACAzS,OAAO,UAEZhL,EACK5f,OAAO,gBACPlK,SAASkgS,GACT11R,KAAK,YAAY,GACjBjM,KAAK,iBAAiB,GAEtBurB,EAAK5f,OAAO,UAAU/nB,QACvB2nC,EAAKvrB,KAAK2qS,GAAM,YAGfp/Q,EAAKoG,SAASu3Q,GAAetlT,QAC9B2nC,EAAK+pC,WACA3pD,QAAO,WAAa,QAASvvB,KAAKm4B,SAASznB,MAAMk8S,IAA4C,IAAlB5sT,KAAK81B,WAAmBn1B,EAAMgjC,KAAK3jC,KAAK8jC,WAAc,IAGjI4nB,QAAQ,gBAAkB04L,EAAO,yBACjC70N,QAAO,SAAS3lB,EAAK4lT,GAAO,OAAwB,IAAjBA,EAAI15R,QAAgB,IACvDnJ,KAAK,sDAGd8iS,GAAYtgR,GACZugR,GAAgBvgR,GACpB,CAEA,SAASsgR,GAAYtgR,IACjBA,EAAOxsC,EAAEwsC,IACJhZ,KAAK,iJAAiJxpB,SAASN,SAEpK8iC,EAAK5f,OAAO,uBACPgmB,SAAS,iHACTvyC,MAAK,WACF,IAAImsC,EAAOxsC,EAAE3C,MAEbmvC,EAAKgL,OAAO,wDAAwDx5C,EAAM4pB,GAAG+tE,KAAK,CAAEA,KAAMq3N,GAAiBxgR,GAAOipD,UAAW,sCACjI,GACR,CAEA,SAASu3N,GAAiBxgR,GACtB,IACIxiC,EAASwiC,EAAKxiC,SAASA,SACvB0S,EAAQ1e,EAAM4C,QAAQ8b,MAAM1S,GAYhC,OAVIA,EAAOI,SAAS8/S,EAAO,eACP,iBAEZxtS,EACgB,iBAGA,iBAI5B,CAEA,SAASqwS,GAAgBvgR,IACrBA,EAAOxsC,EAAEwsC,IAEJ5f,OAAO,8BAA8BxC,YAAY84M,GACtD12L,EAAK5f,OAAO,4BAA4BxC,YAAYigS,GACpD79Q,EAAK5f,OAAO,gBAAgBlK,SAASwgN,GACrC12L,EAAK5f,OAAO,eAAelK,SAAS2nS,EACxC,CAEA,SAAS4C,GAAmBr3R,GACxB,GAAIA,GAAWA,EAAQ/wB,OACnB,IAAK,IAAI8R,KAASif,EAAS,CACvB,IAAIs3R,EAAWt3R,EAAQP,GAAG1e,GACtBu2S,EAAS15R,KAAK,MAAM3uB,OACpBqoT,EAASjsS,KAAK,iBAAiB,GAE/BisS,EAAS59R,WAAW,gBAE5B,CAER,CAEA,SAAS69R,GAAiBv7P,GACtB,IAAKA,EAAMxnD,SAAS8/S,GAChB,OAAOt4P,EAAM5sB,aAAa,IAAMklR,EAAM,KAE9C,CAEA,SAASkD,GAA4BlkT,EAAS1E,GAC1C,IAAI6oT,EAkBR,SAAmC7oT,GAC/B,IAAI6oT,EAAgB7oT,EAAQo/B,OACxBr9B,EAAavI,EAAMuI,WAEvB,GAAI8mT,GAAiB9mT,EAAW8mT,GAC5B,OAAOA,EAEX,OAAO,IACX,CA1BwBC,CAA0B9oT,GAC1C6oT,GAWR,SAAqBnkT,EAASmkT,GAC1BrtT,EAAEkJ,GAAS0pC,SAAS,WAAWnnC,KAAK,CAChC4hT,cAAeA,GAEvB,CAdQE,CAAYrkT,EAASmkT,GAGrB7oT,EAAQ+kD,OACRvpD,EAAEkJ,GAAS0pC,SAAS,OAAOA,SAAS,MAAMA,SAAS,MAAMvyC,MAAK,SAASuE,GACnEwoT,GAA4B/vT,KAAMmH,EAAQ+kD,MAAM3kD,GACpD,GAER,CAkBA,SAAS4oT,GAAoB9/R,GACzB,OAAOA,EAAK,wBAA0BA,EAAK,KAAO,sBACtD,CACA,SAAS+/R,GAAmB//R,GACxB,IAAIhK,EAAWgK,EAAK,gBAAkBA,EAAK,KAAO,eAClD,MAAO,KAAOhK,EAAW,OAASA,CACtC,CACA,SAASgqS,GAAeC,EAAcC,GAClC,IAAIC,EAAmBF,EAAan6R,KAAKg6R,MACrCr5S,EAAS,GAeb,OAdA05S,EAAiBxtT,MAAK,SAASuE,EAAGkpT,GAI9B,IAFA,IAAIC,GADJD,EAAS9tT,EAAE8tT,IACUriT,KAAKs/S,GACtBx5N,EAAQo8N,EACLI,IACHx8N,EAAQq8N,EAAgBp6R,KAAKi6R,GAAmBM,GAAW,aACjDlpT,QACNsP,EAAOnV,KAAKuyF,GAGhBw8N,GADAD,EAASv8N,EAAM/9D,KAAKg6R,OACH/hT,KAAKs/S,EAE9B,IAEO52S,CACX,CAEA,SAAS65S,GAAgBC,EAAcL,GACnC,IAAIG,EAAUE,EAAaxiT,KAAKq/S,GAChC,OAAOiD,EAAUH,EAAgBp6R,KAAKg6R,GAAoBO,IAAY/tT,EAAE,GAC5E,CAEA,SAASkuT,GAAU1hR,EAAMohR,GACrB,IAAIG,EAAUvhR,EAAK/gC,KAAKs/S,GACxB,OAAOgD,EAAUH,EAAgBh7Q,SAASu4Q,GAA4B33R,KAAKi6R,GAAmBM,IAAY/tT,EAAE,GAChH,CAyCA,SAASmuT,GAAc98S,EAAS+8S,GAG5B,IAFA,IAAIziD,EAAS,EACT3hQ,EAASqH,EAAQwS,WACd7Z,IAAW7D,MAAM6D,EAAOokT,KAC3BziD,GAAU3hQ,EAAOokT,GACjBpkT,EAASA,EAAO6Z,WAEpB,OAAO8nP,CACX,CAEA,SAAS0iD,GAAersT,GACpB,OAAO0oT,GAAe1oT,EAAE4kB,eAAiB5kB,EAAE4kB,cAAcgnO,eAAe+9D,EAC5E,CAOA,SAAS2C,GAAyBC,GAC9BA,EAAGh4O,WAAW3pD,QAAO,WAAa,MAAwB,MAAjBvvB,KAAKm4B,QAAkB,IAAG9rB,QACvE,CAEA,IAAI8kT,GAAOxwT,EAAM4pB,GAAGgK,gBAAgBxxB,OAAO,CACvCoF,KAAM,SAAS0D,EAAS1E,GACpB,IAAIc,EAAOjI,KAEXoxB,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GAEnC0E,EAAU5D,EAAK2E,QAAU3E,EAAK4D,QAC9B1E,EAAUc,EAAKd,QACfc,EAAKmpT,aACLnpT,EAAKopT,aACLppT,EAAK6kE,cAEL7kE,EAAKqpT,iBACLrpT,EAAKspT,cAELtpT,EAAKupT,YAAYrqT,GAEjBc,EAAKwpT,eAAiB,IAEtBxpT,EAAK6pB,YAEL7pB,EAAKypT,cAAcvqT,GAEnBc,EAAK0pT,4BAEDxqT,EAAQyqT,cACR3pT,EAAK4pT,SAAU,GAGnBhmT,EAAQ+X,KAAK2qS,GAAM,WAEf1iT,EAAQ,GAAGwkB,GACXpoB,EAAK6pT,QAAUnxT,EAAMsQ,OAAO,gBAAiBpF,EAAQ,GAAGwkB,IAExDpoB,EAAK6pT,QAAUnxT,EAAMsQ,OAAO,gBAAiBtQ,EAAMwvB,QAGvDxvB,EAAMi0B,OAAO3sB,EACjB,EAEAoC,OAAQ,CACJwmF,EACAC,EACAE,EACAD,EACAhU,EACAg8J,IAGJ5xO,QAAS,CACL/E,KAAM,OACNkwF,UAAW,CACPC,KAAM,CACFjrE,SAAU,KAEdo+B,MAAO,CACHp+B,SAAU,MAGlBmqH,YAAa,aACbp9F,UAAW,UACXu9Q,aAAa,EACbG,cAAc,EACdC,WAAY,IACZ1sB,YAAY,EACZ2sB,eAAgBrvT,GAGpBsvT,UAAW,WACP,IAAIjqT,EAAOjI,KAEPiI,EAAKwpB,aACLxpB,EAAK4D,QAAQ+gD,QAEb3kD,EAAKkyC,OAAOlyC,EAAKwpB,WAAWmG,OAAQ3vB,EAAK4D,SAEjD,EAEA8lT,0BAA2B,WACvB,IAAI1pT,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACf1E,EAAUc,EAAKd,QACfopT,EAAkBtoT,EAAKkqT,mBAE3BlqT,EAAKmqT,kBAAoBnqT,EAAKoqT,oBAAoB7oT,KAAKvB,IAEtDsoT,GAAmB1kT,GAASge,GAAGujS,EAAac,GAAcjmT,EAAKmkO,cAAc5iO,KAAKvB,IAC3E4hB,GAAGqqN,EAAQriJ,EAzeJ,sBAye0B,GACjChoE,GAAGqqN,EAAQriJ,EAAIq8N,GAAcjmT,EAAK86E,OAAOv5E,KAAKvB,IAC9C4hB,GAAGujS,EAAc,IAAM7C,EAAY14N,EAAI,aAAc5pF,EAAKqqT,cAAc9oT,KAAKvB,IAC7E4hB,GAAG0jS,EAAa17N,EAAIs8N,GAAwBlmT,EAAKy+G,YAAYl9G,KAAKvB,IAClE4hB,GAAGy8M,EAAaz0I,EAAIs8N,GAAwBlmT,EAAK0+G,YAAYn9G,KAAKvB,IAClE4hB,GAAG0gS,EAAY14N,EAAIs8N,GAAwBlmT,EAAKyqF,WAAWlpF,KAAKvB,IAChE4hB,GAAGyjS,EAAaz7N,EAAK,IAAM07N,EAAa17N,EAAK,IAAMy0I,EAAaz0I,EAAK,IAClE04N,EAAY14N,EAAK,IAAMqiJ,EAAQriJ,EA7e/B,qCA6eiD5pF,EAAKsqT,aAAa/oT,KAAKvB,IAEnF4D,EAAQge,GAAG,UAAYgoE,EAAI5pF,EAAK28G,SAASp7G,KAAKvB,IACtC4hB,GAAG,QAAUgoE,EAAI5pF,EAAK2uF,OAAOptF,KAAKvB,IAClC4hB,GAAG,QAAUgoE,EAAI,aAAc5pF,EAAK2uF,OAAOptF,KAAKvB,IAChD4hB,GAAG,OAASgoE,EAAI5pF,EAAKuqT,iBAAiBhpT,KAAKvB,IAC3C4hB,GAAG,OAASgoE,EAAI,aAAc5pF,EAAKmqT,mBAEvC7B,GACAA,EACK1mS,GAAGy8M,EAAaz0I,EAAIm8N,EAAe/lT,EAAKwqT,iBAAiBjpT,KAAKvB,IAC9D4hB,GAAG0jS,EAAa17N,EAAIm8N,EAAe/lT,EAAKyqT,iBAAiBlpT,KAAKvB,IAGnEd,EAAQyqT,cACR3pT,EAAK0qT,sBAAwB1qT,EAAK2qT,eAAeppT,KAAKvB,GACtDtF,EAAEgN,UAAUka,GAAG,QAAS5hB,EAAK0qT,uBAErC,EAEAE,0BAA2B,WACvB,IAAI5qT,EAAOjI,KACPuwT,EAAkBtoT,EAAKkqT,mBAEvB5B,GACAA,EAAgBn3R,IAAIy4D,GAGxB5pF,EAAK4D,QAAQutB,IAAIy4D,GAEb5pF,EAAK0qT,uBACLhwT,EAAEgN,UAAUypB,IAAI,QAASnxB,EAAK0qT,sBAEtC,EAEAjB,cAAe,SAASvqT,GACpB,IAEI2rT,EAAaC,EAFb9qT,EAAOjI,KACPgzT,EAAsC,cAAvB7rT,EAAQsqI,YAG3B,GAAItqI,EAAQm+R,WAAY,CACpBr9R,EAAKgrT,cAAgB,CAAC,EACtBhrT,EAAKirT,eAAiBjrT,EAAK4D,QAAQ8gB,KAAK,uCAAyCxlB,EAAQsqI,YAAc,YAAY9kI,SAC/GqmT,GACA/B,GAAyBhpT,EAAK4D,SAGlCinT,EAAcnwT,EAAEsF,EAAKkrT,UAAUC,aAAa,CAAE/+Q,UAAW2+Q,EAAe,OAAS,QACjFD,EAAapwT,EAAEsF,EAAKkrT,UAAUC,aAAa,CAAE/+Q,UAAW2+Q,EAAe,QAAU,UACjFF,EAAYtlT,IAAIulT,GAAY7mT,SAASjE,EAAKirT,gBAE1CjrT,EAAKorT,eAAeprT,EAAK4D,QAASinT,EAAaC,EAAYC,GAE3D,IAAIM,EAAerrT,EAAK4D,QAAQM,aAC5BonT,EAAkBtrT,EAAK4D,QAAQ,GAAGsB,MAAMpB,MAC5CwnT,EAAsC,SAApBA,EAA6B,GAAKA,EAEhDP,GACArwT,EAAE7B,QAAQ+oB,GAAG2jS,GAAQ,WACjBt0R,YAAW,WACPjxB,EAAKurT,yBAAyBF,EAAcC,GAC5CtrT,EAAKwrT,qBAAqBxrT,EAAK4D,QAASinT,EAAaC,EAAYC,EACrE,GAAG,IACP,IAGJ/qT,EAAKurT,yBAAyBF,EAAcC,GAC5CtrT,EAAKwrT,qBAAqBxrT,EAAK4D,QAASinT,EAAaC,EAAYC,EACrE,CACJ,EAEAb,iBAAkB,WACd,OAAOnyT,KAAKkzT,gBAAkBlzT,KAAK0zT,cACvC,EAEAF,yBAA0B,SAASF,EAAcC,GAC7C,IAAItrT,EAAOjI,KACP2zT,EAAkB1rT,EAAKirT,eAAejnT,IAAI,SAE9ChE,EAAKirT,eAAejnT,IAAI,CAAEF,MAAO,KACjC,IAAI6nT,EAAe3rT,EAAKirT,eAAe/mT,aACvClE,EAAKirT,eAAejnT,IAAI,CAAEF,MAAO4nT,IAEjC,IAAIE,EAAY5rT,EAAK4D,QAAQM,aACzB2nT,EAAU7rT,EAAK4D,QAAQ,GAAGqT,YAAcjX,EAAK4D,QAAQ,GAAGoZ,YAE5D,GAAI4uS,GAAaD,GAAgBA,EAAe,EAAG,CAC/C,IAAI7nT,EAAQwnT,EAAkBlwT,KAAKqT,IAAI48S,EAAcM,GAAgBA,EACrE3rT,EAAK4D,QAAQE,MAAMA,EAAQ+nT,GAC3B7rT,EAAKirT,eAAennT,MAAMA,EAC9B,CACJ,EAEAgoT,gBAAiB,SAAS5sT,GACtB,IAAIc,EAAOjI,MACamH,EAAQm+R,aAAer9R,EAAKd,QAAQm+R,aAAiBn+R,EAAQm+R,YAAcr9R,EAAKd,QAAQm+R,YAC3Gn+R,EAAQm+R,YAAcr9R,EAAKd,QAAQm+R,YAAcn+R,EAAQm+R,WAAW9mN,UAAYv2E,EAAKd,QAAQm+R,WAAW9mN,UACzGr3E,EAAQsqI,aAAexpI,EAAKd,QAAQsqI,eAGpCxpI,EAAK4qT,4BACL5qT,EAAK+rT,mBACL/rT,EAAKypT,cAAcvqT,GACnBc,EAAK0pT,4BAEb,EAEAqC,iBAAkB,WACd,IAAI/rT,EAAOjI,KACPuwT,EAAkBtoT,EAAKkqT,mBACvB5B,IACAA,EAAgBn3R,IAAIy4D,GACpB0+N,EAAgBp6R,KAAKk4R,IAAsBj1R,IAAIy4D,GAAIxlF,SACnDkkT,EAAgBh7Q,SAASu4Q,GAA4B9qT,MAAK,SAASuE,EAAG0sT,GAClE,IAAI/C,EAAKvuT,EAAEsxT,GAAc99R,KAAK,gDAC9B+6R,EAAG93R,IAAIkpK,GACP,IAAI4xH,EAAgBvD,GAAgBO,EAAIX,GACpC2D,EAAc1sT,QACd0sT,EAAc/5Q,OAAO85Q,EAE7B,IAEA1D,EAAgBp6R,KAAKg6R,MAAuBl+R,WAAW,oBACvDs+R,EAAgBp6R,KAAKi6R,MAAsBn+R,WAAW,cACtDhqB,EAAK4D,QAAQutB,IAAIkpK,GACjB3/L,EAAE7B,QAAQs4B,IAAIo0R,GACd+C,EAAgBr3O,WAAWwjM,SAE3Bz0Q,EAAKirT,eAAiBjrT,EAAKyrT,eAAiBzrT,EAAKgrT,cAAgBrwT,EAEzE,EAEAywT,eAAgB,SAAShlO,EAAeykO,EAAaC,EAAYC,GAC7D,IAAI/qT,EAAOjI,KACPslS,EAAar9R,EAAKd,QAAQm+R,WAC1B9mN,EAAWv2E,EAAKY,UAAUy8R,EAAW9mN,UAAY8mN,EAAW9mN,SA5qBtD,GA6qBN21O,EAAqB31O,EAAW,EAChC41O,EAAW,KAAO51O,EAClBzgC,EAAU,KAAOygC,EACjB61O,EAAiB,KAAkB,EAAX71O,EACxB81O,EAAgB,KAAkB,EAAX91O,EACvB+1O,GAAY,EACZC,GAAc,EAEdlmD,EAAS,SAAS5lQ,GAClB,IAAI+rT,EAAczB,EAAe,CAAEzlS,WAAc7kB,GAAU,CAAEouB,UAAapuB,GAC1E2lF,EAAc+nD,SAAS1uH,QAAQ+sS,EAAa,OAAQ,UAAU,WACtDF,GACAjmD,EAAO5lQ,EAEf,IACAT,EAAKwrT,qBAAqBplO,EAAeykO,EAAaC,EAAYC,EACtE,EAEI0B,EAAoB,SAAS/vT,GACxB4vT,GAAcC,IACflmD,EAAO3pQ,EAAEyJ,KAAKimC,WACdkgR,GAAY,EAEpB,EAEII,EAAmB,SAAShwT,GAC5B,IAAI8vT,EAAczB,EAAe,CAAEzlS,WAAc5oB,EAAEyJ,KAAKimC,WAAc,CAAEvd,UAAanyB,EAAEyJ,KAAKimC,WAC5FmgR,EA1QZ,SAAiB7vT,GACb,IAAItD,EAAKsD,EAAE4kB,cACX,OAAO/J,GAAS,SAASjS,KAAKlM,EAAGqE,MAAQ,GAC7C,CAuQ0BwsQ,CAAQvtQ,IAAMqsT,GAAersT,GAC3C0pF,EAAc7lE,OAAOd,QAAQ+sS,EAAa,OAAQ,UAAU,WACnDD,GAGAvsT,EAAKwrT,qBAAqBplO,EAAeykO,EAAaC,EAAYC,GAClEuB,GAAY,GAHb5xT,EAAEgC,EAAEg6E,eAAev0E,QAAQmjT,EAKnC,IACAgH,GAAY,EAEZ5vT,EAAEy1B,kBACFz1B,EAAEwE,gBACN,EAEA2pT,EAAYjpS,GAAG0jS,EAAa17N,EAAI,CAAEx9C,UAAW+/Q,GAAYM,GACpD7qS,GAAGlpB,EAAM85B,SAAStM,KAAO0jE,EAAI,CAAEx9C,UAAWggR,GAAkBM,GAEjE5B,EAAWlpS,GAAG0jS,EAAa17N,EAAI,CAAEx9C,UAAW0J,GAAW22Q,GAClD7qS,GAAGlpB,EAAM85B,SAAStM,KAAO0jE,EAAI,CAAEx9C,UAAWigR,GAAiBK,GAEhE7B,EAAYtlT,IAAIulT,GACXlpS,GAAGy8M,EAAaz0I,GAAI,WACjBxD,EAAc7lE,OACd+rS,GAAY,EACZtsT,EAAKwrT,qBAAqBplO,EAAeykO,EAAaC,EAAYC,EACtE,IAEJ3kO,EAAcxkE,GAAGy4K,GAAY,SAAS39L,GAClC,IAAKA,EAAE8qF,UAAY9qF,EAAE4iC,WAAa5iC,EAAE0qN,OAAQ,CACxC,IAAIpqL,EArUpB,SAAyBtgC,GACrB,IAAIogC,EAAQ,EAWZ,OATIpgC,EAAEsgC,aAEFF,GADAA,GAASpgC,EAAEsgC,WAAa,KACR,EAAI5hC,KAAK6jE,KAAKniC,GAAS1hC,KAAKyN,MAAMi0B,IAGlDpgC,EAAEugC,SACFH,EAAQ1hC,KAAKiT,MAAM3R,EAAEugC,OAAS,IAG3BH,CACX,CAwTiCmrJ,CAAgBvrL,EAAE4kB,eAE/B7gB,GAASu8B,EAAa,EAAI,KAAO,MADnB5hC,KAAKoU,IAAIwtB,GAAckvR,EAErCM,EAAczB,EAAe,CAAEzlS,WAAc7kB,GAAU,CAAEouB,UAAapuB,GAE1ET,EAAK2sT,kBAAkBvmO,GAEvBA,EAAc+nD,SAAS1uH,QAAQ+sS,EAAa,OAAQ,UAAU,WAC1DxsT,EAAKwrT,qBAAqBplO,EAAeykO,EAAaC,EAAYC,EACtE,IACAruT,EAAEwE,gBACN,CACJ,GACJ,EAEAN,UAAW,SAAS+pH,GAChB,OAAQ9pH,MAAMC,WAAW6pH,KAAOxgH,SAASwgH,EAC7C,EAEA6gM,qBAAsB,SAASplO,EAAeykO,EAAaC,EAAYrgR,GACnE,IAAImiR,EAAgBniR,EAAa/xC,EAAM4sB,WAAW8gE,GAAiBA,EAAcv3D,YAC7E0uD,EAAa9yC,EAxtBP,cACC,eAwtBP50B,EAAS40B,EAvtBH,cACC,eAwtBXogR,EAAY/pS,OAAyB,IAAlB8rS,GACnB9B,EAAWhqS,OAAO8rS,EAAgBxmO,EAAc,GAAG7I,GAAc6I,EAAc,GAAGvwE,GAAU,EAChG,EAEAoU,WAAY,SAAS/qB,GACjB,IAAImrF,EAAYtyF,KAAKmH,QAAQmrF,UAE7BtyF,KAAKwxT,YAAYrqT,GAEjBA,EAAQmrF,UAAYvvF,GAAO,EAAMuvF,EAAWnrF,EAAQmrF,WAEhD,eAAgBnrF,GAChBnH,KAAK8sE,YAAY3lE,GAGrBnH,KAAKsxT,iBACLtxT,KAAKuxT,cACLvxT,KAAK+zT,gBAAgB5sT,GAErBiqB,EAAOrpB,GAAGmqB,WAAW3nB,KAAKvK,KAAMmH,EACpC,EAEAnF,QAAS,WACL,IAAIiG,EAAOjI,KAEXoxB,EAAOrpB,GAAG/F,QAAQuI,KAAKtC,GAEvBA,EAAK4qT,4BAEL5qT,EAAK+rT,mBAELrzT,EAAMqB,QAAQiG,EAAK4D,QACvB,EAEAsc,OAAQ,SAAStc,EAASsc,GAGtB,OAFAnoB,KAAK80T,gBAAgBjpT,GAAoB,IAAXsc,GAEvBnoB,IACX,EAEAioB,QAAS,SAASpc,GAGd,OAFA7L,KAAK80T,gBAAgBjpT,GAAS,GAEvB7L,IACX,EAEA+0T,eAAgB,SAAS1O,GACrBA,EAAYA,GAAarmT,KAAK6L,QAC9B,IAAIsjC,EAAOnvC,KAAK6L,QAAQsqB,KAAKkwR,GACzBkK,EAAkBvwT,KAAKmyT,mBAE3B,OAAIhjR,EAAK3nC,QAAU6+S,IAAcrmT,KAAK6L,QAC3BsjC,EACAohR,EACAA,EAAgBp6R,KAAKkwR,GAErB1jT,GAEf,EAEAw3C,OAAQ,SAAShL,EAAM6lR,GACnBA,EAAgBh1T,KAAK+0T,eAAeC,GAEpC,IAAI1xK,EAAWtjJ,KAAKukJ,QAAQp1G,EAAM6lR,EAAeA,EAAcxtT,OAASxH,KAAKi1T,mBAAmBD,GAAez/Q,WAAWvd,GAAG,GAAK,MAYlI,OAVAh1B,EAAKsgJ,EAASp3F,OAAO,SAAS3kD,GAC1B+7I,EAAS/uF,MAAMpa,OAAOn6C,MACtByvT,GAAYzvT,MACZ+vT,GAA4B/vT,KAAMmvC,EAAK5nC,IAAM4nC,EACjD,IAEAsgR,GAAYuF,GACZtF,GAAgBpsK,EAAS/uF,MAAMp+B,KAAK,qBAAqB3oB,IAAI81I,EAASp3F,QACtE0jQ,GAAmBE,GAAiBxsK,EAAS/uF,QAEtCv0D,IACX,EAEAsyE,aAAc,SAASnjC,EAAM6lR,GACzBA,EAAgBh1T,KAAK+0T,eAAeC,GAEpC,IAAI1xK,EAAWtjJ,KAAKukJ,QAAQp1G,EAAM6lR,EAAeA,EAAcroT,UAW/D,OATA3J,EAAKsgJ,EAASp3F,OAAO,SAAS3kD,GAC1BytT,EAAcxuI,OAAOxmL,MACrByvT,GAAYzvT,MACZ0vT,GAAgB1vT,MAChB+vT,GAA4B/vT,KAAMmvC,EAAK5nC,IAAM4nC,EACjD,IAEAugR,GAAgBsF,GAETh1T,IACX,EAEAk1T,YAAa,SAAS/lR,EAAM6lR,GACxBA,EAAgBh1T,KAAK+0T,eAAeC,GAEpC,IAAI1xK,EAAWtjJ,KAAKukJ,QAAQp1G,EAAM6lR,EAAeA,EAAcroT,UAW/D,OATA3J,EAAKsgJ,EAASp3F,OAAO,SAAS3kD,GAC1BytT,EAAc56O,MAAMp6E,MACpByvT,GAAYzvT,MACZ0vT,GAAgB1vT,MAChB+vT,GAA4B/vT,KAAMmvC,EAAK5nC,IAAM4nC,EACjD,IAEAugR,GAAgBsF,GAETh1T,IACX,EAEAukJ,QAAS,SAASp1G,EAAM6lR,EAAeroT,GACnC,IACIu/C,EAAOviB,EADP1hC,EAAOjI,KAGNg1T,GAAkBA,EAAcxtT,SACjCmF,EAAS1E,EAAK4D,SAGlB,IAAIspT,EAAQxyT,EAAEgF,cAAcwnC,IAASA,aAAgBxuC,EAAMyN,KAAKq9C,iBAC5D2pQ,EAAY,CACRzG,WAAYhiT,EAAOI,SAAS8/S,GAC5Bn6Q,WAAY/lC,EAAOI,SAAS8/S,EAAO,eACnCuC,UAAU,EACV5nT,OAAQmF,EAAO4oC,WAAW/tC,QA0ClC,OAvCIwtT,IAAkBroT,EAAOnF,SACzBmF,EAAShK,EAAEsF,EAAKotT,YAAY,CAAE9gQ,MAAO6gQ,EAAWjuT,QAASc,EAAKd,WAAY8E,IAAI,UAAW,QAAQC,SAAS8oT,GAC1Gr0T,EAAM+qC,+BAA+B/+B,EAAQ,CAAC,aAG9CwoT,GAASlyT,EAAQksC,IAASA,aAAgBxuC,EAAMyN,KAAKD,gBACrD+9C,EAAQvpD,EAAEA,EAAEkY,IAAIs6S,EAAQ,CAAEhmR,GAASA,GAAM,SAASzmC,EAAOkB,GAC7C,GAAqB,iBAAVlB,EACP,OAAO/F,EAAE+F,GAAOunB,MACb,CACH,IAAIqlS,EAAc3yT,EAAEsF,EAAKstT,WAAW,CAChChhQ,MAAO6gQ,EACPjmR,KAAMpsC,EAAO2F,EAAO,CAAE4Q,MAAO1P,OAIjC,OADAjJ,EAAM+qC,+BAA+B4pR,EAAa,CAAC,YAC5CA,EAAYrlS,KACvB,CACJ,MAQR0Z,GALIuiB,EADe,iBAAR/c,GAAsC,KAAlBA,EAAKrkC,OAAO,GAC/B7C,EAAK4D,QAAQsqB,KAAKgZ,GAElBxsC,EAAEwsC,IAGChZ,KAAK,QACH9Q,SAAS,gCACTzB,KAAK2qS,GAAM,SAE5BriQ,EAAQA,EAAM38B,OAAO,OAEf/hB,IAAIm8B,EAAOxT,KAAK,SAASnzB,MAAK,WAChCusT,GAAkBvvT,KACtB,KAKG,CAAEksD,MAAOA,EAAOqI,MAFvB5nD,EAASA,EAAOM,GAAG+gT,GAAiBrhT,EAAOwpB,KAn3B/B,iBAm3BmDjsB,QAAUyC,EAG7E,EAEAN,OAAQ,SAASR,GAGb,IACIc,GAHJd,EAAU7L,KAAK+0T,eAAelpT,IAGT87B,aADV3nC,KAC4B6L,QAASoiT,IAC5C15P,EAAQ1oD,EAAQc,OAAO,mBAI3B,GAFAd,EAAQQ,SAEJkoD,IAAUA,EAAMhf,SAAS04Q,IAAkBzmT,OAAQ,CACnD,IAAIguT,EAAc1F,GAAiBv7P,GAE/B99B,EAAY89B,EAAM5nD,OAAOmhT,GAEzBr3R,EAAUjvB,OACVivB,EAAUpqB,SAEVkoD,EAAMloD,SAGVujT,GAAmB4F,EACvB,CASA,OAPI7oT,EAAOnF,SAGPioT,GAFA9iT,EAASA,EAAOqrB,GAAG,IAGnB03R,GAAgB/iT,IAxBT3M,IA4Bf,EAEAy1T,eAAgB,SAAS5pT,EAAS4yD,GAC9B,IAAIx2D,EAAOjI,KACPy+D,EAASiN,UACTzjE,EAAKsqF,KAAK1mF,GACV5D,EAAKkkD,UAAW,GAEhBsS,EAAS90D,IAAIuzC,GAAQ,WACjBrxC,EAAQsqB,KAAK42R,GAAehgS,YAAY,eACpC9kB,EAAKkkD,WACLlkD,EAAKsqF,KAAK1mF,GACV5D,EAAKkkD,UAAW,EAExB,GAER,EAEAomC,KAAM,SAAS1mF,GACX,IAAI5D,EAAOjI,KACPmH,EAAUc,EAAKd,QACfurC,EAAoC,cAAvBvrC,EAAQsqI,YACrBp9F,EAAYltC,EAAQktC,UACpBh1B,EAAQ1e,EAAM4C,QAAQ8b,MAAMpX,EAAK2E,SACjC2jT,EAAkBtoT,EAAKkqT,mBAC3BtmT,GAAW0kT,GAAmBtoT,EAAK4D,SAASsqB,KAAKtqB,GAEjD,IAAI4yD,EAAWx2D,EAAKwpB,YAAcxpB,EAAKwpB,WAAWorC,SAAShxD,EAAQuC,KAAKzN,EAAMwrB,GAAK,QAEnF,GAAIsyC,GAAYA,EAASyM,cAAgBzM,EAASiN,WAAazjE,EAAKkkD,SAKhE,OAJAlkD,EAAKkkD,UAAW,EAChBtgD,EAAQsqB,KAAK42R,GAAe1nS,SAAS,eACrCo5C,EAASoN,YACT5jE,EAAKwtT,eAAe5pT,EAAS4yD,GAI7B,yBAAyBlxD,KAAK8mC,KAE1BA,EADAh1B,EACYqzB,GAAc2B,EAAY,SAAS5xC,QAAQ,UAAW,UAAY,OAElEiwC,GAAc2B,EAAY,UAAU5xC,QAAQ,UAAW,UAAY,SAIvF,IAAIizT,EAAgB,mGAChBC,EAAa,WACDhzT,EAAE3C,MAAMoO,KAAKu/S,IAGrB1lT,EAAKy9C,MAAM/iD,EAAE3C,MAAM6M,QAAQ,cAAc,EAEjD,EAqIA,OAnIAhB,EAAQspF,WACAh/D,KAAKu/R,GACL1yT,KAAK2yT,GAETpF,GACA1kT,EAAQsqB,KAAKu/R,GAAe1yT,KAAK2yT,GAGjC1tT,EAAKd,QAAQyqT,cACb3pT,EAAK4pT,SAAU,GAGnBhmT,EAAQ7I,MAAK,WACT,IAAI84J,EAAKn5J,EAAE3C,MAEXs6B,aAAawhI,EAAG1tJ,KAAK6+S,IACrB3yR,aAAaryB,EAAK2tT,eAClB3tT,EAAK2tT,cAAgB18R,YAAW,WAC5B,IACIg7D,EACA2hO,EAFAj3S,EAAMk9I,EAAG3lI,KAAK,4FAA4F5G,OAAO,WAAWrlB,QAQhI,IAJK0U,EAAI,IAAM2xS,IACXsF,EAAgB5tT,EAAK6tT,UAAUh6J,GAC/Bl9I,EAAMi3S,GAAiBA,EAAchqT,UAErC+S,EAAI3R,GAAG,aAIP2R,EAAI,KAA0D,IAApD3W,EAAK8tT,cAAc,CAAE5mR,KAAM2sH,EAAG,GAAIp2J,KAAMmrF,IAAmB,CAErE,IAAKjyE,EAAIuX,KAAK,iBAAiB,IAAMvX,EAAI22B,SAAS,iBAAiBA,SAAS,WAAW/tC,OAAS,EAAG,CAC/F,IAAIwuT,EAAerzT,EAAE7B,QAAQkL,SAErB4S,EAAI3S,IAAI,CAAEgqT,UAAWD,GAAgBr1T,EAAM+L,aAAakS,GAAOA,EAAI5S,UAAYrL,EAAMyrB,WAAWxN,GAAK8N,OAAQY,SAAU,QAInI,MACI1O,EAAI3S,IAAI,CAAEgqT,UAAW,GAAI3oS,SAAU,YAGvCwuI,EAAG1tJ,KAAK++S,EAAQrxJ,EAAG7vJ,IAAIkhT,IACvB,IAAI+I,EAAajuT,EAAKwpT,iBACtB31J,EAAG7vJ,IAAIkhT,EAAQ+I,GAEXjuT,EAAKd,QAAQm+R,YACbxpI,EAAGnvJ,SAASwoF,SAASk5N,IAAsBpiT,IAAI,CAAE+tC,SAAUk8Q,IAG/DhiO,EAAQt1E,EAAIxQ,KAAKu/S,GACjB,IAAI9vQ,EAAOi+G,EAAGnvJ,SAASI,SAAS8/S,GAC5BsJ,EAAmBt4Q,GAAQnL,EAC3BxkB,EAt3BxB,SAAwBmmB,EAAWwJ,EAAMx+B,GACrCg1B,EAAYA,EAAUzpC,MAAM,MAAMizC,EAAO,IAAMxJ,EAC/C,IAAIkgD,EAAS,CAAEv7C,OAAQ,CAAC,SAAW35B,EAAQ,QAAU,QAAU/R,SAAU,CAAC,MAAQ+R,EAAQ,QAAU,SAcpG,MAbiB,aAAa9R,KAAK8mC,IAG/BkgD,EAAOv7C,OAAS,CAAE,MAAO3E,GACzBkgD,EAAOjnF,SAAS,GAAK3M,EAAMutB,WAAWmmB,GAAWh+B,UAEjDk+E,EAAOv7C,OAAO,GAAK3E,EACnBkgD,EAAOjnF,SAAS,GAAK3M,EAAMutB,WAAWmmB,GAAWh+B,SAGrDk+E,EAAOv7C,OAASu7C,EAAOv7C,OAAOnuC,KAAK,KACnC0pF,EAAOjnF,SAAWinF,EAAOjnF,SAASzC,KAAK,KAEhC0pF,CACX,CAq2BqC6hO,CAAe/hR,EAAWwJ,EAAMx+B,GAC7C+H,EAAUjgB,EAAQmrF,UAAUC,KAAKnrE,QACjC4sE,EAAc5sE,IAAYxkB,EAAcwkB,EAAU,WA73B1E,SAA4BitB,EAAWwJ,GAEnC,OADAxJ,EAAYA,EAAUzpC,MAAM,MAAMizC,EAAO,IAAMxJ,GAC9B5xC,QAAQ,MAAO,MAAMA,QAAQ,SAAU,OAC5D,CA03BuF4zT,CAAmBhiR,EAAWwJ,GAE5Fq2C,IAoDDA,EAAQt1E,EAAIxQ,KAAKu/S,IACXxmT,QAAQ6xC,OAAS9qB,EAAW8qB,OAClCk7C,EAAM/sF,QAAQmG,SAAW4gB,EAAW5gB,SACpC4mF,EAAM/sF,QAAQmrF,UAAUC,KAAKnrE,QAAU4sE,IAtDvCE,EAAQt1E,EAAI03S,WAAW,CACnBjvM,SAAU,WAAap/G,EAAK8tT,cAAc,CAAE5mR,KAAMnvC,KAAK4M,QAAQD,SAAUjH,KAAMsrF,GAAa,EAC5FulO,WAAY,SAAS5xT,GACjBsD,EAAKmrF,UAAW,EAChBzuF,EAAE2F,OAAOuB,QACJgnB,WAAW,mBACX5mB,IAAI,CAAE8qB,QAAS,KACpB9uB,EAAK8tT,cAAc,CAAE5mR,KAAMnvC,KAAK4M,QAAQD,SAAUjH,KAAMqrF,GAC5D,EACA/3C,OAAQ9qB,EAAW8qB,OACnB1rC,SAAU4gB,EAAW5gB,SACrB2kF,UAAW9qF,EAAQ8qT,iBAAmBrvT,EAAcuE,EAAQ8qT,eAAkBkE,EAAmB,MAAQ,WACzGhkO,OAAQ2pE,EACR5vJ,SAAUqkT,GAAmBz0J,EAC7BxpE,UAAW,CACPC,KAAMxvF,GAAO,EAAM,CAAEqkB,QAAS4sE,GAAe7sF,EAAQmrF,UAAUC,MAC/D7sC,MAAOv+C,EAAQmrF,UAAU5sC,OAE7B6sC,KAAMtqF,EAAKuuT,WAAWhtT,KAAKvB,GAC3By9C,MAAO,SAAS/gD,GACZsD,EAAKmrF,SAAWzuF,EAAE2F,OAAOuB,QACzB,IAAIiwJ,EAAKn3J,EAAE2F,OAAOsC,QAAQD,SAE1B,GAAI4jT,EAAiB,CACjB,IAAIG,EAAU/rT,EAAE2F,OAAOuB,QAAQuC,KAAKq/S,GAChCiD,IACA50J,GAAMy0J,GAAmBtoT,EAAK4D,SAASsqB,KAAKg6R,GAAoBO,KAEpE/rT,EAAE2F,OAAOsC,QAAQ2oC,SAAS84Q,IAAsB3gT,MACpD,CAEKzF,EAAK8tT,cAAc,CAAE5mR,KAAM2sH,EAAG,GAAIp2J,KAAMorF,IAazCnsF,EAAEwE,kBAZF2yJ,EAAG7vJ,IAAIkhT,EAAQrxJ,EAAG1tJ,KAAK++S,IACvBrxJ,EAAGjpI,WAAWs6R,GAEVllT,EAAKd,QAAQm+R,YACbxpI,EAAGnvJ,SAASwoF,SAASk5N,IAAsBpiT,IAAI,CAAE+tC,OAAQ,MAGzDx6B,GAAS6tS,GAAe1sT,EAAM4C,QAAQsgB,wBACtCi4I,EAAG/uI,YAAY6gS,GACf3lT,EAAKuqT,oBAKjB,IACDpkT,KAAKu/S,GAER/uS,EAAI/R,QAAQihT,GAA4B77R,WAAWs8R,KAOvD3vS,EAAIqT,WAAW,eACf6pI,EAAGl4I,KAAK2jS,IAAe,GAEvBt/S,EAAKwuT,wBAAwBviO,EAAO4nE,GAEpC5nE,EAAM9B,UAAW,EACjB8B,EAAM3B,OAENtqF,EAAKyuT,oBAAoBxiO,EAC7B,CAEJ,GAAGjsF,EAAKd,QAAQ6qT,YAEhBl2J,EAAG1tJ,KAAK6+S,EAAOhlT,EAAK2tT,cACxB,IAEO3tT,CACX,EAEAwuT,wBAAyB,SAASviO,EAAOyiO,GAEtC,GADY32T,KACHmH,QAAQm+R,aADLtlS,KAEF42T,kBAAkB1iO,IAClByiO,EAAY/yS,KAAK,qBAAqB,CACvC,IAAIizS,GAAU,IAAIloT,MAAO1F,UACzB0tT,EAAY/yS,KAAK,mBAAoBizS,GACrC3iO,EAAMroF,QAAQ+X,KAAK,aAAcizS,EACrC,CAER,EAEAD,kBAAmB,SAAS1iO,GACnBA,EAAMroF,QAAQc,SAASM,GAAG8gT,KAC3B75N,EAAMtnF,QAAUjM,EAAMgsB,KAAKunE,EAAMroF,QAASqoF,EAAM/sF,QAAQoF,UACnDN,IAAI,CACDqhB,SAAU,SACVjgB,QAAS,QACTC,SAAU,aAG1B,EAEAopT,oBAAqB,SAASxiO,EAAO8+N,EAAc8D,GACpC92T,KAEFmH,QAAQm+R,YAAcpxM,EAAMroF,QAAQ,GAAGkZ,aAAemvE,EAAMroF,QAAQ,GAAG8oB,cAFrE30B,KAGF+2T,wBAAwB7iO,EAAO8+N,EAAc8D,EAE1D,EAEAC,wBAAyB,SAAS7iO,EAAO8+N,EAAc8D,GACnD,IAAI7uT,EAAOjI,KACPg3T,EAAgB9iO,EAAMtnF,QAAQ2oC,SAAS84Q,IACvC/7N,EAAYrqF,EAAKd,QAAQmrF,UACzB/sD,GAAY+sD,GAAaA,EAAUC,MAAQD,EAAUC,KAAKjrE,UAAa,GAvqCvE,GAwqCJ4R,YAAW,WACP,IAAK89R,EAAcxvT,OAAQ,CACvB,IAAIsrT,EAAcnwT,EAAEsF,EAAKkrT,UAAUC,aAAa,CAAE/+Q,UAAW2+Q,EAAe,OAAS,QACjFD,EAAapwT,EAAEsF,EAAKkrT,UAAUC,aAAa,CAAE/+Q,UAAW2+Q,EAAe,QAAU,UAErFgE,EAAgBlE,EAAYtlT,IAAIulT,GAAY7mT,SAASgoF,EAAMtnF,SAE3D3E,EAAKorT,eAAeprT,EAAK4D,QAASinT,EAAaC,EAAYC,GACtD8D,GACDE,EAAcntS,GAAG0jS,EAAa17N,GAAI,WAC9B,IAAI0+N,EAAkBtoT,EAAKkqT,mBAC3BxvT,EAAE0tT,GAAen8N,EAAMroF,QAAS0kT,IAAkBvtT,MAAK,SAASuE,EAAGsrH,GAC/D,IAAI8jM,EAAcpG,EAAgBp6R,KAAKg6R,GAAoBt9L,EAAEzkH,KAAKq/S,KAClExlT,EAAKy9C,MAAMixQ,EACf,GACJ,IACC9sS,GAAGy8M,EAAaz0I,GAAI,WACjB34D,YAAW,WACHv2B,EAAEqzB,cAAc/tB,EAAKgrT,gBACrBhrT,EAAKgvT,mBAAmB/iO,EAAMroF,QAEtC,GA7rCZ,GA8rCQ,GAER,CACA5D,EAAKwrT,qBAAqBxrT,EAAK4D,QAASmrT,EAAc9sT,QAAS8sT,EAAc10R,OAAQ0wR,EACzF,GAAGztR,EACP,EAEAixR,WAAY,SAAS7xT,GACZ3E,KAAKk3T,eACNvyT,EAAE2F,OAAOuB,QAAQsqB,KAAK,IAAMs0R,GAAc19R,YAAY09R,GAEtDzqT,KAAKmH,QAAQm+R,YACbtlS,KAAKm3T,gBAAgBxyT,EAAE2F,OAE/B,EAEA6sT,gBAAiB,SAASjjO,EAAO19C,GAC7B,IAAIo6Q,EAAe18N,EAAMroF,QACrBurT,EAASxG,EAAapjT,IAAIojT,EAAajkT,OAAOohT,IAElDqJ,EAAOprT,OAAQ4kT,EAAa7jT,SAAS8/S,IAAS7sT,KAAKq3T,gBAAmB,IAEtE,IAAIh0S,EAAW6wE,EAAMJ,UAAUt9C,GAC3Bw/Q,EAAerzT,EAAE7B,QAAQkL,SACzBsrT,EAAmBj0S,EAASrX,OAC5BurT,EAAiB/gR,EAAU,EAAInzC,KAAK8V,IAAIkK,EAAS6B,IAAK,GACtD4R,EAAY0f,EAAU,EAAIs6Q,GAAc9wT,KAAKmyT,mBAAmB,GAAI,aACpEqF,EAAkB12T,OAAO6f,YAAcq1S,EACvCC,EAAYD,EAAer1T,EAAMyrB,WAAWwkS,GAAclkS,OAAS8qS,EAGvE,KAFavB,EAAYn/R,EAAYwgS,EAAmBC,GAE3C,CACT,IAAIvrT,EAAS3I,KAAKqT,IAAIu/S,EAAWA,EAAYsB,EAAiBzgS,GAC9DsgS,EAAOnrT,IAAI,CAAEqhB,SAAU,SAAUthB,OAAQA,EAAS,MACtD,CACJ,EAEA05C,MAAO,SAASwG,EAAOurQ,GACnB,IAAIxvT,EAAOjI,KACPuwT,EAAkBtoT,EAAKkqT,mBACvBtmT,EAAW0kT,GAAmBtoT,EAAK4D,SAEvCqgD,EAAQrgD,EAAQsqB,KAAK+1B,IAEV1kD,SACP0kD,EAAQrgD,EAAQsqB,KAAK,aAkDzB,OA9BA+1B,EAAMlpD,MAAK,WACP,IAAI84J,EAAKn5J,EAAE3C,MAEX87J,EAAGl4I,KAAK2jS,IAAe,IAElBkQ,GAAkBxvT,EAAKyvT,YAAY57J,KACpC7zJ,EAAK4pT,SAAU,GAGnBv3R,aAAawhI,EAAG1tJ,KAAK6+S,IAErBnxJ,EAAG1tJ,KAAK6+S,EAAO/zR,YAAW,WACtB,IA7B6Bo3R,EAC7Bx5S,EAYA+/S,EAgBI3iO,EAAQjsF,EAAK6tT,UAAUh6J,GAC3B,GAAI5nE,IAjBJ2iO,EAiBiC/6J,EAjBhB1tJ,KAAKs/S,IACjB6C,IAAoBsG,IAAY5uT,EAAKgrT,cAAc4D,EAAQplT,aAgBxBxJ,EAAK0vT,aAAc,CACvD,IAAK1vT,EAAK0vT,cA/BerH,EA+BsBp8N,EAAMroF,QA9BzDiL,GAAS,EACTnU,EAAEqzB,cAAc/tB,EAAKgrT,gBAGzBtwT,EAAE0tT,GAAeC,EAAcC,IAAkBvtT,MAAK,SAASuE,EAAG2sF,GAE9D,QADAp9E,IAAW7O,EAAKgrT,cAAc/+N,EAAM9lF,KAAKq/S,GAAeh8S,YAE5D,IALWqF,GA6BC,OAGJo9E,EAAMxuC,QACNwuC,EAAMroF,QAAQ+X,KAAK,eAAe,GAE9B2sS,GACItoT,EAAK0vT,aAAezrQ,EAAM5pB,OAAOr1B,GAAG6uJ,EAAG,YAChC7zJ,EAAK0vT,WAGxB,CACJ,GAAG1vT,EAAKd,QAAQ6qT,YACpB,IAEO/pT,CACX,EAEA6tT,UAAW,SAASh6J,GAChB,IACI5nE,EAAQ4nE,EAAG3lI,KAAK,2EAA2EjsB,QAAQkE,KAAKu/S,GACxG4C,EAFOvwT,KAEgBmyT,mBAE3B,IAAKj+N,GAASq8N,EAAiB,CAC3B,IAAIsG,EAAU/6J,EAAG1tJ,KAAKs/S,GACtB,GAAImJ,EAEA3iO,EADmBq8N,EAAgBp6R,KAAKi6R,GAAmByG,IACtCzoT,KAAKu/S,EAElC,CACA,OAAOz5N,CACX,EAEA4gO,gBAAiB,SAAS5oQ,EAAO/jC,GAC7BnoB,KAAK6L,QAAQsqB,KAAK+1B,GAAOlpD,MAAK,WAC1BL,EAAE3C,MACG4oB,YAAY28R,GAAgBp9R,GAC5BvE,KAAK,iBAAkBuE,EAChC,GACJ,EAEAoqS,aAAc,SAAS5tT,GACnB,IAAI0C,EAAS1E,EAAEhC,EAAM0oB,YAAY1kB,IAAMA,EAAE0C,QAAQwF,QAAQohT,IACrD/3E,EAAUvxO,EAAEe,MAAQ6nT,IAA6C,IAA/BhD,EAAU50S,QAAQhR,EAAEe,MAE1D2B,EAAO8tF,WAAWpoE,YAAY6gS,GAEzBvmT,EAAOkxB,QAAQ,MAAQgtR,GAAe/9S,QACvCH,EAAOuhB,YAAYglS,EAAY13E,GAAqB,aAAVvxO,EAAEe,MAAiC,eAAVf,EAAEe,MAAyBf,EAAEe,MAAQ4nT,GAG5GttT,KAAKwyT,kBACT,EAEAF,cAAe,WACNtyT,KAAKmH,QAAQ4qT,eACd/xT,KAAK43T,mBAAoB,EAEjC,EAEAvF,oBAAqB,SAAS1tT,GAC1B,IAAIsD,EAAOjI,KACP63T,EAAYl1T,EAAEgC,EAAIA,EAAEg6E,cAAgB3+E,KAAK83T,cACzCzwT,EAASY,EAAK8vT,gBAAgBF,GAAW,GAExC73T,KAAK43T,mBACN1+R,YAAW,WACFvpB,SAASqoT,aAAgBziS,GAASluB,EAAQ1G,EAAM+Y,oBAAqB/U,GAAM4wB,GAASluB,EAAQ1C,EAAEg6E,iBAC/F12E,EAAKy9C,MAAMr+C,EAEnB,GAAG,GAGPrH,KAAK43T,mBAAoB,CAC7B,EAEApF,iBAAkB,WACd,IAAIyF,EAAej4T,KAAK83T,aAEpBG,GAAgBA,EAAalrT,SAAS09S,KACtCwN,EAAalrS,YAAY09R,GACzBzqT,KAAKk4T,cAAgB,KAE7B,EAEA3G,YAAa,WACT,IAAItpT,EAAOjI,KAEXiI,EAAK4D,QAAQsqB,KAAK,WACb5G,QAAO,WACJ,OAAQ5sB,EAAE3C,MAAM2M,SAASI,SAAS,eACtC,IACC4f,KAAK,4CACLhgB,OAAO,OACPiX,KAAK,cAAe3b,EAAK4D,QAAQoB,GAAG,aACpCS,OAELzF,EAAK4D,QAAQsqB,KAAK,MAAMnzB,MAAK,WACzB,IAAIuxD,EAAQ5xD,EAAE3C,MACVqwB,EAAK1vB,EAAMwvB,OACfokC,EAAM3wC,KAAK,KAAMyM,GACZxjB,QAAQ,MACR+W,KAAK,gBAAiByM,EAC/B,GACJ,EAEAihS,eAAgB,WACZ,IAEIplQ,EAFArgD,EAAU7L,KAAK6L,QAInBA,EAAQkhB,YAAY,qCACpBlhB,EAAQwZ,SAAS,yCAA2CwnS,GAAMxnS,SAASwnS,EAAO,IAAM7sT,KAAKmH,QAAQsqI,aAEpE,aAA7BzxI,KAAKmH,QAAQsqI,YACb5lI,EAAQ+X,KAAK,mBAAoB,YAEjC/X,EAAQ+X,KAAK,mBAAoB,cAGrC/X,EAAQsqB,KAAK,WACL5G,QAAO,WACJ,OAAQ5uB,EAAM4C,QAAQyiB,gBAAgBzb,KAAKvK,KAdvB,sBAexB,IACCqlB,SAAS,wCACTzB,KAAK2qS,GAAM,QACX5hT,OAAO,MACPiX,KAAK,gBAAiB,QACtBjY,MACAwqB,KAAK,YACL9Q,SAAS,aACTzB,KAAK,WAAY,MAEzB/X,EAAQsqB,KAAK,qBAAqBvS,KAAK2jS,IAAe,GAEtDr7P,EAAQrgD,EAAQsqB,KAAK,2BAErBtqB,EAAQkhB,YAAY,eAEpBm/B,EAAMlpD,MAAK,WACPusT,GAAkBvvT,KACtB,GACJ,EAEA0mH,YAAa,SAAS/hH,GAClB,IAAIsD,EAAOjI,KACP6L,EAAUlJ,EAAEgC,EAAEg6E,eACdzT,EAAcjjE,EAAKkwT,iBAAiBtsT,GACpC6kT,EAAU7kT,EAAQuC,KAAKs/S,IAAsB7hT,EAAQgB,QAAQmhT,GAAe5/S,KAAKq/S,GACjF2K,EAAepH,GAAersT,GAC9B0zT,GAAkB,EAElB3H,IACAzoT,EAAKgrT,cAAcvC,EAAQj/S,aAAc,GAGzCxJ,EAAKmrF,WACLilO,IAAoBpwT,EAAKmrF,SAASj9D,KAAKtqB,GAASrE,QAGhD6wT,GAAoB1zT,EAAE2zT,gBAAkBzsT,EAAQ0sB,QAAQs1R,GAAc,IAAMlpT,EAAE2zT,gBAAkBzsT,EAAQ0sB,QAAQ,4CAA4C,KAIhKtwB,EAAKivT,eAAgB,EAEhBjvT,EAAKd,QAAQyqT,YAAY2G,eAAiBtwT,EAAKyvT,YAAY7rT,EAAQgB,QAAQohT,MAC3EhmT,EAAKd,QAAQyqT,YAAY4G,eAAiBvwT,EAAKyvT,YAAY7rT,EAAQgB,QAAQohT,UAI9C,IAA7BhmT,EAAKd,QAAQyqT,cAC8B,IAA3C3pT,EAAKd,QAAQyqT,YAAY2G,eAA2BtwT,EAAKyvT,YAAY7rT,EAAQgB,QAAQohT,OAC3C,IAA1ChmT,EAAKd,QAAQyqT,YAAY4G,eAA2BvwT,EAAKyvT,YAAY7rT,EAAQgB,QAAQohT,MAAuBhmT,EAAK4pT,UAAaryS,GAC7H44S,GAAgBnwT,EAAKyvT,YAAY7rT,EAAQgB,QAAQohT,OAE9C14R,GAAS5wB,EAAEg6E,cAAeh6E,EAAE22B,gBAAkB4vC,GAC/CjjE,EAAKsqF,KAAK1mF,KAIe,IAA7B5D,EAAKd,QAAQyqT,aAAwB3pT,EAAK4pT,SAAWryS,IACrD3T,EAAQspF,WAAWnyF,MAAK,SAAS2rB,EAAG68I,GAChCvjK,EAAKy9C,MAAM8lH,GAAS,EACxB,KAER,EAEA94E,WAAY,SAAS/tF,GACjB,IAAIsD,EAAOjI,KACP6L,EAAUlJ,EAAEgC,EAAEg6E,gBAEd12E,EAAKd,QAAQyqT,YAAY4G,eAAiBvwT,EAAKyvT,YAAY7rT,IAAY2T,IACvE3T,EAAQspF,WAAWnyF,MAAK,SAAS2rB,EAAG68I,GAChCvjK,EAAKy9C,MAAM8lH,GAAS,EACxB,GAER,EAEA7kD,YAAa,SAAShiH,GAClB,IAAIsD,EAAOjI,KACP6L,EAAUlJ,EAAEgC,EAAEg6E,eACdg4O,EAAc9qT,EAAQuC,KAAKs/S,GAC3BxiP,EAAcr/D,EAAQ0pC,SAASy4Q,GAAexmT,QAAUmvT,EACxD9yO,EAAUlhF,EAAE7B,QAMhB,GAJI61T,UACO1uT,EAAKgrT,cAAc0D,EAAYllT,aAGtC5F,EAAQ87B,aAAammR,EAA4B,2CAA2C,GAKhG,OAAkC,IAA7B7lT,EAAKd,QAAQyqT,cAA2B3pT,EAAKd,QAAQyqT,YAAY2G,gBAAiBtwT,EAAKyvT,YAAY7rT,MAClG5D,EAAKd,QAAQyqT,YAAY4G,cAAiBvwT,EAAKyvT,YAAY7rT,KAAe2T,GAAUwxS,GAAersT,IACpG4wB,GAAS5wB,EAAEg6E,cAAeh6E,EAAE22B,eAAiB32B,EAAE0C,UAAW6jE,GAC1D31C,GAAS5wB,EAAEg6E,cAAeh+E,EAAM+Y,wBAO/B/Y,EAAM4C,QAAQuf,QAAQoB,OAASvf,EAAE8zT,YAAc9zT,EAAE22B,gBAAkB01R,GAAersT,IACpFA,EAAE+kB,QAAU,GAAK/kB,EAAEglB,QAAU,GAC7BhlB,EAAEglB,QAAUk6D,EAAQ73E,UACpBrH,EAAE+kB,QAAUm6D,EAAQ93E,UACpB9D,EAAKy9C,MAAM75C,KAVP5D,EAAKy9C,MAAM75C,GAAS,QACpB5D,EAAKkkD,UAAW,IATpBxnD,EAAE+zT,0BAoBV,EAEAhG,iBAAkB,SAAS/tT,GACvB,IACIisT,EAAejuT,EAAEgC,EAAEg6E,eAEvB,IAAIiyO,EAAajkT,SAASM,GAAG8gT,GAA7B,CAKA,IAAI2C,GADJE,EAAeA,EAAaz6R,KAAK63R,IACN5/S,KAAKq/S,GAE5BiD,IAVO1wT,KAWFizT,cAAcvC,EAAQj/S,aAAc,EAN7C,CAQJ,EAEAghT,iBAAkB,SAAS9tT,GACvB,IACIisT,EAAejuT,EAAEgC,EAAEg6E,gBAElBqyO,GAAersT,IAAMisT,EAAa3jT,GAAG6gT,IAH/B9tT,KAIF24T,aAAa/H,EAAaz6R,KAAK63R,GAE5C,EAEA2K,aAAc,SAASC,GACnB,IAAI3wT,EAAOjI,KACPuwT,EAAkBtoT,EAAKkqT,mBACvBzB,EAAUkI,EAAUxqT,KAAKq/S,GAE7B,GAAIiD,EAAS,QACFzoT,EAAKgrT,cAAcvC,EAAQj/S,YAClC,IAAIonT,EAActI,EAAgBp6R,KAAKg6R,GAAoBO,IAE3Dx3R,YAAW,WACP,GAAIjxB,EAAKd,QAAQyqT,YACb3pT,EAAK2sT,kBAAkBgE,QAEvB,GAAIj2T,EAAEqzB,cAAc/tB,EAAKgrT,eAAgB,CACrC,IAAI6F,EAAa7wT,EAAK8wT,YAAYH,GAClC3wT,EAAKgvT,mBAAmB6B,EAC5B,MACI7wT,EAAKy9C,MAAMmzQ,GAAa,EAGpC,GAAG,EACP,CACJ,EAEAjE,kBAAmB,SAAS5gT,GACxB,IAAI/L,EAAOjI,KACPuwT,EAAkBtoT,EAAKkqT,mBAC3BxvT,EAAE0tT,GAAer8S,EAASu8S,IAAkBvtT,MAAK,WAC7C,IAAI2zT,EAAcpG,EAAgBp6R,KAAKg6R,GAAoBnwT,KAAKoO,KAAKq/S,KACrExlT,EAAKy9C,MAAMixQ,GAAa,EAC5B,GACJ,EAEAoC,YAAa,SAAS/kT,GAClB,IACIojT,EAAS/G,GAAer8S,EADNhU,KAAKmyT,oBAE3B,OAAOiF,EAAOA,EAAO5vT,OAAS,IAAMwM,CACxC,EAEAijT,mBAAoB,SAASjjT,GACzB,IAAI/L,EAAOjI,KACPuwT,EAAkBtoT,EAAKkqT,mBACvBzB,EAAU18S,EAAQ5F,KAAKq/S,GACvBkJ,EAAcpG,EAAgBp6R,KAAKg6R,GAAoBO,IAG3D,IAFAA,EAAUiG,EAAY9pT,QAAQmhT,GAAe5/S,KAAKq/S,GAClDxlT,EAAKy9C,MAAMixQ,GAAa,GACjBjG,IAAYzoT,EAAKgrT,cAAcvC,KAC9BiG,EAAYhqT,SAASM,GAAG4gT,IAG5B8I,EAAcpG,EAAgBp6R,KAAKg6R,GAAoBO,IACvDzoT,EAAKy9C,MAAMixQ,GAAa,GACxBjG,EAAUiG,EAAY9pT,QAAQmhT,GAAe5/S,KAAKq/S,EAE1D,EAEA1qO,OAAQ,SAASp+E,GACb,IAAiBq0T,EASaC,EAAYC,EAOtCC,EAhBAlxT,EAAOjI,KACPmH,EAAUc,EAAKd,QACfE,EAAS1E,EAAEhC,EAAM0oB,YAAY1kB,IAC7BwmF,EAAgB9jF,EAAO,GACvB8wB,EAAW9wB,EAAO,GAAKA,EAAO,GAAG8wB,SAAS7oB,cAAgB,GAC1D8pT,EAAwB,SAAZjhS,GAAmC,UAAZA,GAAoC,UAAZA,GAAoC,SAAZA,EACnFm8M,EAAOjtO,EAAOwF,QAAQigT,GACtBjhT,EAAUxE,EAAOwF,QAAQohT,IACzBqH,EAAczpT,EAAQ,GACtBwsB,EAAOi8M,EAAK1wN,KAAK,QACjBy1S,EAAahyT,EAAOuc,KAAK,QACzB01S,EAAa32T,EAAE,kBAAkBihB,KAAK,QACtC6hO,IAAYptN,GAAQA,IAASihS,EAC7BC,EAAc9zE,KAAYptN,EAAK3nB,MAAM,MACrC8oT,IAAkBH,GAAcA,IAAeC,EAC/C/I,EAAkBtoT,EAAKkqT,mBAG3B,IAAIhnO,GAAmBA,EAAc3kE,YAAe8uS,EAApD,CAQA,IAJI3yT,EAAE0E,GAAQwF,QAAQ,QAAQE,SAAS,8BACnC/M,KAAKy5T,oBAAsBnE,GAGxBnqO,GAAiBA,EAAc3kE,YAAc8uS,GAChDnqO,EAAgBA,EAAc3kE,WAGlC,IAAI7jB,EAAEwoF,GAAel+E,GA5iDN,qDAgjDf,GAAIpB,EAAQkB,SAASw4S,GACjB5gT,EAAEwE,qBADN,CAYA,GAPKxE,EAAE+0T,UAAWzxT,EAAK0xT,eAAetyT,EAAQiuT,IAAiB8D,GAC3Dz0T,EAAEwE,iBAGNxE,EAAE+0T,SAAU,EAEZT,EAAaptT,EAAQ0pC,SAASy4Q,GAC1BuC,EAAiB,CACjB,IAAIqJ,EAAe/tT,EAAQuC,KAAKs/S,GAC5BkM,IACAX,EAAa1I,EAAgBp6R,KAAKi6R,GAAmBwJ,IAE7D,CAIA,GAHAV,EAAoBD,EAAWhsT,GAAG,YAClCksT,EAAyBhyT,EAAQyqT,aAAesH,GAAqBjxT,EAAKyvT,YAAY7rT,GAElF1E,EAAQ4qT,gBAAkBtsE,GAAU8zE,MAAkBN,EAAWzxT,QAAU2xT,GAAyB,CACpGttT,EAAQkhB,YAAY6gS,GAAY3hT,IAAI,UACpChE,EAAKiwT,cAAgBjwT,EAAK8vT,gBAAgBlsT,GAC1C,IAAIsjC,EAAOlnC,EAAK4xT,cAAcvlF,EAAMrsO,EAAK4D,QAASoiT,IAOlD,OANAhmT,EAAK0vT,cAAgBpH,EACrBtoT,EAAKy9C,MAAMvW,GACXlnC,EAAK4pT,SAAU,QACuB,GAAlC,cAAcl8S,QAAQhR,EAAEe,OACxBf,EAAEwE,iBAGV,CAEIs8O,GAAU9gP,EAAEm1T,UACZxlF,EAAK,GAAGpqN,SAGLjiB,EAAKyvT,YAAY7rT,KAAoC,IAAxB1E,EAAQyqT,aAA2BzqT,EAAQyqT,YAAY4G,cAAkB73T,EAAM4C,QAAQic,OAAWwxS,GAAersT,IAAMsD,EAAKyvT,YAAY7rT,EAAQgB,QAAQohT,QAIvLxoE,GAAW2zE,GAAaI,GACzB70T,EAAEwE,iBAGNlB,EAAK4pT,SAAU,EACfmH,EAAaC,EAAWhsT,GAAG,YAAc6jF,EAAQD,GAC5C1pF,EAAQ4qT,cAAgBiH,GAAcloO,IAG3C7oF,EAAK+wT,GAAYntT,GAhDjB,CAjBA,CAkEJ,EAEAguT,cAAe,SAAS79R,EAAS9W,EAAKmB,GAClC,IAAIkqS,EAAkBvwT,KAAKmyT,mBAC3B,GAAK5B,EAEE,CACH,IAAIh4R,EA5xChB,SAA6BvkB,EAASu8S,GAClC,IAAIh4R,EAAU,GACV42P,EAAa,SAAShgP,GACtB,KAAOA,EAAK3oB,aAAe+pS,EAAgBtjT,GAAGkiC,EAAK3oB,aAC/C+R,EAAQ52B,KAAKwtC,EAAK3oB,YAClB2oB,EAAOA,EAAK3oB,UAEpB,EACIusB,EAAO/+B,EAAQ,IAAMA,EACzBm7Q,EAAWp8O,GAEX,IADA,IAAIzQ,EAAO/J,EAAQA,EAAQ/wB,OAAS,GAC7B7E,EAAE2/B,GAAMr1B,GAAG6gT,KAEd/6Q,EAAO49Q,GADYhuT,EAAE2/B,GAAMnM,KAAK63R,GACKuC,GAAiB,KAItDh4R,EAAQ52B,KAAKoxC,GACbo8O,EAAWp8O,GACXzQ,EAAO/J,EAAQA,EAAQ/wB,OAAS,GAEpC,OAAO+wB,CACX,CAswC0BwhS,CAAoB/9R,EAASu0R,GACvCz5S,EAAS,GAUb,OATAnU,EAAE41B,GAASv1B,MAAK,WACZ,IAAI2J,EAAShK,EAAE3C,MACf,GAAI2M,EAAOM,GAAGiY,GACV,OAAO,EAEPvY,EAAOM,GAAGoZ,IACVvP,EAAOnV,KAAK3B,KAEpB,IACO2C,EAAEmU,EACb,CAdI,OAAOklB,EAAQ2L,aAAaziB,EAAKmB,EAezC,EAEAszS,eAAgB,SAAStyT,EAAQiuT,GAG7B,IACI0E,EADAhK,GAFJ3oT,EAASA,EAAO4F,GAAG,WAAa5F,EAASA,EAAOwF,QAAQ,YAE7BuB,KAAK,iBAG5B4hT,IACAgK,EAAsBh6T,KAAKi6T,cAAc5yT,GACzC2oT,EAAczlT,KAAKvK,KAAMg6T,IAG7B,IAAIE,EAA+BF,GAAuBA,EAAoB3wT,qBAC1E8wT,EAA2Bn6T,KAAK+1T,cAAc,CAAE5mR,KAAMmmR,EAAa5vT,KAAMq3E,IAC7E,OAAOm9O,GAAgCC,CAC3C,EAEAF,cAAe,SAAS5yT,GAYpB,MAXgB,CACZiD,OAAQtK,KACRqH,OAAQA,EACR+B,mBAAmB,EACnBD,eAAgB,WACZnJ,KAAKoJ,mBAAoB,CAC7B,EACAC,mBAAoB,WAChB,OAAOrJ,KAAKoJ,iBAChB,EAGR,EAEAwpT,eAAgB,SAASjuT,GACrB,IAAIsD,EAAOjI,KACPqH,EAAS1E,EAAEgC,EAAE0C,QAAQwF,QAAQ,QAAQE,SAAS,4BAA8B9E,EAAKwxT,oBAAsB90T,EAAE0C,OAEzGkuB,IAAUttB,EAAKkqT,oBAAsBlqT,EAAK4D,SAAS,GAAIxE,GACvDY,EAAKwxT,oBAAsB72T,EAI/BqF,EAAK4pT,SAAU,CACnB,EAEAj7N,OAAQ,SAASjyF,GACb,IAAIsD,EAAOjI,KACPqH,EAAS1C,EAAE0C,OACXwwT,EAAY5vT,EAAK6vT,aACjBr7G,EAAS9iM,IAEb,GAAItS,GAAUY,EAAK2E,QAAQ,KAAOjK,EAAE0E,GAAQ4F,GAAG,mBAI3C,OAHAtI,EAAEy1B,kBACFz3B,EAAE0E,GAAQwF,QAAQ,cAAcA,QAAQ,iBAAiBA,QAAQ,WAAWwY,SAASolS,QACrFxiT,EAAK2E,QAAQxC,QAAQ,SAIrBqyM,IAAW93M,EAAEg6E,gBACTk5O,EAAUrwT,OACVS,EAAKmyT,WAAW,GAAIvC,GACZ5vT,EAAKiwT,eACbjwT,EAAKmyT,WAAW,GAAInyT,EAAK2E,QAAQ2oC,WAAWrrC,SAGxD,EAEA06G,SAAU,SAASjgH,GACf,IAGI0C,EACAgzT,EACAnvP,EALAjjE,EAAOjI,KACP8R,EAAMnN,EAAE2iC,QACRuwR,EAAY5vT,EAAKiwT,cAIjB74S,EAAQ1e,EAAM4C,QAAQ8b,MAAMpX,EAAK2E,SAErC,GAAIjI,EAAE0C,QAAU1C,EAAEg6E,eAAiB7sE,GAAO+Y,EAAKM,IAA/C,CAYA,GARK0sS,IACDA,EAAY5vT,EAAKiwT,cAAgBjwT,EAAK6vT,cAG1CuC,EAAoBpyT,EAAKqyT,uBAAuBzC,GAChD3sP,EAAcjjE,EAAKkwT,iBAAiBN,GACpC5vT,EAAKivT,eAAgB,EAEjBplT,GAAO+Y,EAAKS,MACZjkB,EAASY,EAAKoX,EAAQ,YAAc,cAAcw4S,EAAWwC,EAAmBnvP,QAC7E,GAAIp5D,GAAO+Y,EAAKO,KACnB/jB,EAASY,EAAKoX,EAAQ,aAAe,aAAaw4S,EAAWwC,EAAmBnvP,QAC7E,GAAIp5D,GAAO+Y,EAAKU,KACnBlkB,EAASY,EAAKsyT,UAAU1C,EAAWwC,EAAmBnvP,QACnD,GAAIp5D,GAAO+Y,EAAKQ,GACnBhkB,EAASY,EAAKuyT,QAAQ3C,EAAWwC,EAAmBnvP,QACjD,GAAIp5D,GAAO+Y,EAAKY,KACnBxjB,EAAKmyT,WAAWvC,EAAWA,EAAUlrT,SAAS4oC,SAAS,YAAYrrC,SACnEvF,EAAEwE,sBACC,GAAI2I,GAAO+Y,EAAKW,IACnBvjB,EAAKmyT,WAAWvC,EAAWA,EAAUlrT,SAAS4oC,SAAS,YAAYjT,QACnE39B,EAAEwE,sBACC,GAAI2I,GAAO+Y,EAAKM,IACnB9jB,EAASY,EAAKwyT,SAAS5C,EAAWwC,QAC/B,GAAIvoT,GAAO+Y,EAAKK,OAASpZ,GAAO+Y,EAAKa,UACxCrkB,EAASwwT,EAAUtiR,SAAS,YACjB/tC,OAAS,IAChBS,EAAK86E,OAAO,CAAE17E,OAAQA,EAAO,GAAI8B,eAAgB,WAAY,EAAG2wT,UAAU,IACtE5uP,IAAgB2sP,EAAU9qT,SAASw4S,IACnCt9S,EAAKsqF,KAAKslO,GACV5vT,EAAKmyT,WAAWvC,EAAW5vT,EAAKgtT,mBAAmB4C,GAAWtiR,WAAWpf,KAAK,MAAMjsB,UAC7E2tT,EAAU5qT,GAAG,OAAoC,qBAA3B4qT,EAAUj0S,KAAK,QAC5Ci0S,EAAU1hS,KAAK,eAAevS,KAAK,WAAW,GAE9C3b,EAAKyyT,iBAAiB7C,EAAW5vT,EAAK8vT,gBAAgBF,UAG3D,GAAI/lT,GAAO+Y,EAAKI,IAInB,OAHA5jB,EAASY,EAAK8vT,gBAAgBF,GAC9B5vT,EAAKmyT,WAAWvC,EAAWxwT,QAC3BY,EAAKoqT,sBAILhrT,GAAUA,EAAO,KACjB1C,EAAEwE,iBACFxE,EAAEy1B,kBAhDN,CAkDJ,EAEA09R,WAAY,WACR,OAAO93T,KAAK4M,QAAQupB,KAAK,mCAAmC5G,OAAO,WACvE,EAEA+qS,uBAAwB,SAASnrR,GAC7B,IAAIwrR,EAAiB36T,KAAK4M,QAAQG,SAAS,mBAE3C,OAAKoiC,EAAK3nC,QAGH2nC,EAAKxiC,SAASI,SAAS,iBAFnB4tT,CAGf,EAEAxC,iBAAkB,SAAShpR,GACvB,SAAKA,GAASA,EAAK3nC,QAAW2nC,EAAK,GAAGrZ,YAG/BqZ,EAAKoG,SAAS,2DAA2D/tC,OAAS,KAClF2nC,EAAK/gC,KAAKs/S,MAAwB1tT,KAAKmyT,mBAAmB58Q,SAAS66Q,GAAmBjhR,EAAK/gC,KAAKs/S,KAC3G,EAEA0M,WAAY,SAASjrR,EAAMyrR,GACvB,IAAI3yT,EAAOjI,KACPqwB,EAAKpoB,EAAK6pT,QAEV3iR,EAAK3nC,QAAUozT,EAASpzT,QACxB2nC,EAAKpiB,YAAY09R,GAGjBmQ,EAASpzT,SACLozT,EAAS,GAAGvqS,KACZA,EAAKuqS,EAAS,GAAGvqS,IAGrBuqS,EAASv1S,SAASolS,GAClBxiT,EAAKiwT,cAAgB0C,EAEjBvqS,IACApoB,EAAK4D,QAAQomB,WAAW,yBACxBtvB,EAAE,IAAM0tB,GAAI4B,WAAW,MACvB2oS,EAASh3S,KAAK,KAAMyM,GACpBpoB,EAAK4D,QAAQ+X,KAAK,wBAAyByM,IAE/CpoB,EAAK4yT,cAAcD,GAE3B,EAEAF,iBAAkB,SAASvrR,EAAMyrR,GAC7B56T,KAAKo6T,WAAWjrR,EAAMyrR,EAC1B,EAEA7C,gBAAiB,SAAS5oR,GACtB,OAAInvC,KAAK03T,YAAYvoR,GACVA,EAEAnvC,KAAK65T,cAAc1qR,EAAM0+Q,EAAc,aAAavrR,MAEnE,EAEAo1R,YAAa,SAASvoR,GAClB,OAAOA,EAAKxiC,SAASI,SAAS8/S,EAClC,EAEAiO,WAAY,SAAS3rR,EAAMkrR,EAAmBnvP,GAC1C,IACI0vP,EACAG,EACAxK,EAHAtoT,EAAOjI,KAKX,GAAKq6T,GAME,GAAInvP,IAAgB/7B,EAAKpiC,SAASw4S,GACrCt9S,EAAKsqF,KAAKpjD,GACVyrR,EAAW3yT,EAAKgtT,mBAAmB9lR,GAAMoG,WAAWpf,KAAK,MAAMjsB,aAC5D,GAAgC,cAA5BjC,EAAKd,QAAQsqI,YAA6B,CAGjD,GAFAspL,EAAa9yT,EAAK8vT,gBAAgB5oR,GAClCohR,EAAkBtoT,EAAKkqT,mBACF,CACjB,IAAIyG,EAAY/H,GAAUkK,EAAYxK,GACtCtoT,EAAK2sT,kBAAkBgE,EAC3B,CACA3wT,EAAKy9C,MAAMq1Q,GACXH,EAAWG,EAAWC,QAAQ9M,GAAeE,IAAmBp2R,GAAG,EACvE,OAjBI4iS,EAAWzrR,EAAK6rR,QAAQ9M,GAAeE,IAAmBp2R,GAAG,IAC/CxwB,SACVozT,EAAWzrR,EAAKwmM,QAAQu4E,GAAeE,IAAmB9rR,QAE9Dr6B,EAAKy9C,MAAMvW,GAsBf,OAPIyrR,IAAaA,EAASpzT,OACtBozT,EAAW3yT,EAAK2E,QAAQ2oC,SAAS,WAAWrrC,QACpC0wT,IACRA,EAAW,IAGf3yT,EAAKmyT,WAAWjrR,EAAMyrR,GACfA,CACX,EAEAK,UAAW,SAAS9rR,EAAMkrR,GACtB,IACIO,EACArK,EAFAtoT,EAAOjI,KA2BX,OAvBKq6T,GAODO,EAAWzrR,EAAKxiC,SAASE,QAAQ,WACjC0jT,EAAkBtoT,EAAKkqT,oBAClByI,EAASpzT,QAAU+oT,IACpBqK,EAAWjK,GAAgBxhR,EAAKxiC,SAAU4jT,IAE9CtoT,EAAKy9C,MAAMk1Q,GACP3yT,EAAKyvT,YAAYkD,IAAyC,cAA5B3yT,EAAKd,QAAQsqI,cAC3CmpL,EAAWA,EAASjlF,QAAQu4E,GAAeE,IAAmBp2R,GAAG,OAbrE4iS,EAAWzrR,EAAKwmM,QAAQu4E,GAAeE,IAAmBp2R,GAAG,IAC/CxwB,SACVozT,EAAWzrR,EAAK6rR,QAAQ9M,GAAeE,IAAmB9rR,QAE9Dr6B,EAAKy9C,MAAMvW,IAaVyrR,EAASpzT,SACVozT,EAAW3yT,EAAK2E,QAAQ2oC,SAAS,WAAWjT,QAGhDr6B,EAAKmyT,WAAWjrR,EAAMyrR,GACfA,CACX,EAEAL,UAAW,SAASprR,EAAMkrR,EAAmBnvP,GACzC,IACI0vP,EADA3yT,EAAOjI,KAGX,GAAKq6T,EAQDO,EAAWzrR,EAAK6rR,QAAQ9M,GAAeE,IAAmBp2R,GAAG,OARzC,CACpB,IAAKkzC,GAAe/7B,EAAKpiC,SAASw4S,GAC9B,OAEAt9S,EAAKsqF,KAAKpjD,GACVyrR,EAAW3yT,EAAKgtT,mBAAmB9lR,GAAMoG,WAAWpf,KAAK,MAAMjsB,OAEvE,CAWA,OAPK0wT,EAASpzT,QAAU2nC,EAAK3nC,OACzBozT,EAAWzrR,EAAKxiC,SAAS4oC,SAAS,YAAYrrC,QACtCilC,EAAK3nC,SACbozT,EAAW3yT,EAAK2E,QAAQ2oC,SAAS,WAAWrrC,SAGhDjC,EAAKmyT,WAAWjrR,EAAMyrR,GACfA,CACX,EAEAJ,QAAS,SAASrrR,EAAMkrR,GACpB,IACIO,EAEJ,GAAKP,EAaL,QAVIO,EAAWzrR,EAAKwmM,QAAQu4E,GAAeE,IAAmBp2R,GAAG,IAGnDxwB,QAAU2nC,EAAK3nC,OACzBozT,EAAWzrR,EAAKxiC,SAAS4oC,SAAS,YAAYjT,OACtC6M,EAAK3nC,SACbozT,EAZO56T,KAYS4M,QAAQ2oC,SAAS,WAAWjT,QAZrCtiC,KAeNo6T,WAAWjrR,EAAMyrR,GACfA,CACX,EAEAC,cAAe,SAAS1rR,GACpB,IAAIlnC,EAAOjI,KACX,GAAIiI,EAAKd,QAAQm+R,YAAcn2P,GAAQA,EAAK3nC,OAAQ,CAChD,IAUI0zT,EAVAhK,EAAK/hR,EAAKxiC,SACVqmT,IAAe9B,EAAGnkT,SAAS8/S,IAAoC,cAA5B5kT,EAAKd,QAAQsqI,YAChD0pL,EAAYnI,EAAe,aAAe,YAC1CzgS,EAAUygS,EAAeryT,EAAM8L,YAAc9L,EAAM+L,aACnD0uT,EAAsBlK,EAAGiK,KACzBE,EAAW9oS,EAAQ4c,GACnBmsR,EAAansR,EAAK,GAAG6jR,EAAe,aAAe,aACnDuI,EAAShpS,EAAQ2+R,GACjB8F,EAAgB9F,EAAG/7N,SAASk5N,IAC5BmN,EAAmBxE,EAAcxvT,OAAS+qB,EAAQykS,EAAc9sT,SAAW,EAS/E,GANIkxT,EAAsBG,EAASD,EAAaD,EAAWG,EACvDN,EAAeI,EAAaD,EAAWE,EAASC,EACzCJ,EAAsBE,EAAaE,IAC1CN,EAAeI,EAAaE,IAG3B1yT,MAAMoyT,GAAe,CACtB,IAAI3G,EAAY,CAAC,EACjBA,EAAU4G,GAAaD,EACvBhK,EAAG96K,SAAS1uH,QAAQ6sS,EAAW,OAAQ,UAAU,WAC7CtsT,EAAKwrT,qBAAqBvC,EAAI8F,EAAc9sT,QAAS8sT,EAAc10R,OAAQ0wR,EAC/E,GACJ,CACJ,CACJ,EAEAyH,SAAU,SAAStrR,EAAMkrR,GACrB,IACIO,EAAU/D,EADV5uT,EAAOjI,KAGX,OAAKq6T,GAKuB,KAFxBO,EAAWzrR,EAAKxiC,SAASE,QAAQ,YAEpBrF,SACTqvT,EAAU1nR,EAAKtiC,QAAQ,iBAAiBuB,KAAK,SAC7CwsT,EAAW3yT,EAAK2E,QAAQupB,KAAK,6BAA+B0gS,EAAU,OAG1E5uT,EAAKy9C,MAAMk1Q,GACX3yT,EAAKmyT,WAAWjrR,EAAMyrR,GAGnBA,GAbIzrR,CAcf,EAEA8lR,mBAAoB,SAAS9lR,GACzB,IAAIyhR,EAAezhR,EAAKhZ,KAAK,iBACzBvpB,EAAU5M,KAAKmyT,mBAInB,OAHKvB,EAAappT,QAAUoF,IACxBgkT,EAAeC,GAAU1hR,EAAMviC,IAE5BgkT,CACX,EAEAmF,cAAe,SAASpxT,GAGpB,OAFW3E,KAECoK,QAAQzF,EAAEe,KAAM,CAAEA,KAAMf,EAAEe,KAAMypC,KAAMxqC,EAAEwqC,MACxD,EAEAi9L,cAAe,SAASznO,GACpB,IAAIsD,EAAOjI,KACPmvC,EAAOxsC,EAAEhC,EAAM0oB,YAAY1kB,IAAIkI,QAAQohT,IAEvC9+Q,EAAKpiC,SAASw4S,IAIlBrsR,YAAW,WACPjxB,EAAKmyT,WAAW,GAAIjrR,GAChBA,EAAKoG,SAAS,cAAc,IAC5BpG,EAAKxiC,SAASE,QAAQ,WAAWkgB,YAAY09R,EAErD,GAAG,IACP,EAEA+G,YAAa,SAASrqT,GACdA,GAAY,cAAeA,IAAaA,EAAQmrF,YAChDnrF,EAAQmrF,UAAY,CAAEC,KAAM,CAAEnrE,QAAS,CAAC,GAAKs+B,MAAO,CAAEh4C,MAAM,EAAM0Z,QAAS,CAAC,IAEpF,EACA0lD,YAAa,SAAS3lE,GAClB,IAAIc,EAAOjI,KACPyxB,EAAatqB,EAAUA,EAAQsqB,WAAaxpB,EAAKd,QAAQsqB,WAExDA,IAILA,EAAaxuB,EAAQwuB,GAAc,CAAErjB,KAAMqjB,GAAeA,EAE1DxpB,EAAKwzT,oBAEAhqS,EAAWhC,SACZgC,EAAWhC,OAAS,CAChB,CAAE1J,MAAO,OACT,CAAEA,MAAO,QACT,CAAEA,MAAO,OACT,CAAEA,MAAO,YACT,CAAEA,MAAO,kBACT,CAAEA,MAAO,YACT,CAAEA,MAAO,aACT,CAAEA,MAAO,QACT,CAAEA,MAAO,eACT,CAAEA,MAAO,WACT,CAAEA,MAAO,WACT,CAAEA,MAAO,SACT,CAAEA,MAAO,YAIjB9d,EAAKwpB,WAAaljB,EAAuB64C,OAAO31B,GAEhDxpB,EAAKyzT,kBAELzzT,EAAKwpB,WAAW20C,QACpB,EAEAs1P,gBAAiB,WACb17T,KAAK8sS,gBAAkB9sS,KAAK2e,QAAQnV,KAAKxJ,MACzCA,KAAK27T,cAAgB37T,KAAK47T,OAAOpyT,KAAKxJ,MAEtCA,KAAKyxB,WAAWjoB,KAAK0zC,EAAQl9C,KAAK8sS,iBAClC9sS,KAAKyxB,WAAWjoB,KAAKwhD,EAAOhrD,KAAK27T,cACrC,EAEAF,kBAAmB,WACf,IAAIhqS,EAAazxB,KAAKyxB,WAElBA,IACAA,EAAWxnB,OAAOizC,EAAQl9C,KAAK8sS,iBAC/Br7Q,EAAWxnB,OAAO+gD,EAAOhrD,KAAK27T,eAEtC,EAEAC,OAAQ,WAER,EAEAC,UAAW,SAASnuQ,GAEhB,OADqB1tD,KAAKmyT,oBAAsBnyT,KAAK6L,SAC/BsqB,KAAK,IAAMx1B,EAAMijB,KAAK,OAAS,IAAM8pC,EAAM,IACrE,EAEA/uC,QAAS,SAAStd,GACd,IAAI4G,EAAOjI,KACPqjC,EAAOhiC,EAAGgiC,KACV+J,EAAS/rC,EAAG+rC,OACZ2tF,EAAgB13F,EAAOp7B,EAAK4zT,UAAUx4R,EAAKqqB,KAAOzlD,EAAK4D,QACvDiwT,EAAgBz6T,EAAG6qD,MACnB5yC,EAAQjY,EAAGiY,MACXyiT,EAAc9zT,EAAK+zT,YAAYxyT,KAAKvB,GACpCg0T,EAAch0T,EAAKi0T,YAAY1yT,KAAKvB,GAE1B,OAAVmlC,EACAnlC,EAAKk0T,aAAaL,EAAexiT,EAAOyhH,GACvB,UAAV3tF,EACP0uR,EAAcx6T,QAAQ26T,GACL,cAAV7uR,EACP0uR,EAAcx6T,QAAQy6T,GACJ,eAAX3uR,EACPnlC,EAAKkyC,OAAO94C,EAAG6qD,MAAO6uE,GAEtB/6H,KAAKkyT,YAGTlyT,KAAKoK,QAAQ2uO,GAAW,CAAE5pM,KAAM4rF,EAAet8D,SAAUp7B,GAC7D,EAEA84R,aAAc,SAASjwQ,EAAO5yC,EAAO3M,GACjC,IACIqoT,EAAgBroT,EAAOwpB,KAAK+3R,IAAcl2R,GAAG1e,GAE7C07S,EAAcxtT,OAHPxH,KAIFsyE,aAAapmB,EAAO8oQ,GAJlBh1T,KAMFm6C,OAAO+R,EAAOv/C,EAE3B,EAEAuvT,YAAa,SAAS/sR,GAClB,IACItjC,EADO7L,KACQ67T,UAAU1sR,EAAKue,KADvB1tD,KAENqM,OAAOR,EAChB,EAEAmwT,YAAa,SAAS7sR,GAClB,IAAIlnC,EAAOjI,KACP6L,EAAU5D,EAAK4zT,UAAU1sR,EAAKue,KAC9B0uQ,EAAcvwT,EAAQy6D,OACtB9/C,EAAa2oB,EAAK3oB,aAEtBve,EAAKoE,OAAOR,GAERuwT,EAAY50T,OACZS,EAAKqqE,aAAanjC,EAAMitR,GAExBn0T,EAAKkyC,OAAOhL,EAAM3oB,GAAcve,EAAK4zT,UAAUr1S,EAAWknC,KAElE,EAEA0jQ,WAAY,WACR,IAEI7pT,EAAGwe,EAAO2mD,EADVvlE,EADOnH,KACQmH,QAEf0E,EAHO7L,KAGQ6L,QAEnB,IAAKtE,KAAKwoE,GACNhqD,EAAQ5e,EAAQ4oE,GAASxoE,IACzBmlE,EAAY7gE,EAAQ+X,KAAKjjB,EAAMijB,KAAKrc,EAAI,YAEnCwe,GAAS2mD,IACV3mD,EAAQ2mD,GAGP3mD,IACDA,EAAQxe,GAGPtE,EAAQ8iB,KACTA,EAAQ,CAACA,IAGb5e,EAAQ4oE,GAASxoE,IAAMwe,CAE/B,EAEAs2S,eAAgB,SAAS3tQ,GACrB,IAAI4tQ,EAAgBt8T,KAAKmH,QAAQ4oE,GAASrhB,KAAe,GACrDpzC,EAAQghT,EAAc90T,OAE1B,OAAc,IAAV8T,EACO,SAAU6zB,GAAQ,OAAOA,EAAKuf,EAAa,EAE3C,SAAUvf,GACb,IAAI2nP,EAASn0R,EAAEkY,IAAIyhT,EAAe37T,EAAM6uB,QACxC,OAAI2f,EAAKw8B,MACEmrN,EAAOzzR,KAAKqT,IAAIy4B,EAAKw8B,QAASrwD,EAAQ,IAAI6zB,GAE1C2nP,EAAOx7Q,EAAQ,GAAG6zB,EAEhC,CAET,EAEAkiR,WAAY,WACR,IAAIppT,EAAOjI,KACPmH,EAAUc,EAAKd,QACfo1T,EAAgBt0T,EAAKo0T,eAAe7yT,KAAKvB,GAEzCd,EAAQiJ,UAvqEP,iBAuqE0BjJ,EAAQiJ,SACnCjJ,EAAQiJ,SAAWA,EAASjJ,EAAQiJ,UAC5BjJ,EAAQiJ,WAChBjJ,EAAQiJ,SAAWA,GAAUhC,IACzB,IAAI0yB,EAAOy7R,EAAc,OAAdA,CAAsBnuT,EAAK+gC,MAKtC,YAJkC,IAArB/gC,EAAK+gC,KAAKkoM,UAAgD,IAAtBjpO,EAAK+gC,KAAKkoM,UACvDv2M,EAAOiuC,EAAOjuC,IAGX,8CAA8CA,UAAa,KAI1E74B,EAAKkrT,UAAY,CACbxsQ,QAASv2C,GAAUhC,IACf,IAAI+gC,EAAO/gC,EAAK+gC,KACZqtR,EAAcD,EAAc,UAAdA,CAAyBptR,GAE3C,MAAO,QADiB/gC,EAAK2gT,qBAAqB5/Q,EAAKh9B,OAASg9B,EAAKh9B,SAAWg9B,oBAC9BqtR,GAAe,UAAU,IAE/EjoQ,MAAOnkD,GAAUhC,GACb,eAAeA,EAAKkhT,qBAAqBlhT,EAAKmmD,WAAWnmD,EAAK+gT,gBAAgB/gT,EAAKmmD,qBACrEnmD,EAAKihT,cAAcjhT,EAAKmmD,eAAenmD,EAAKyoT,wBACvDzoT,EAAKquT,YAAYruT,kBAIxBsuT,YAAatsT,GAAUhC,IACnB,IAAI+gC,EAAO/gC,EAAK+gC,KACZngB,EAAMutS,EAAc,MAAdA,CAAqBptR,GAC3Bu+N,EAAW6uD,EAAc,WAAdA,CAA0BptR,GACrC2/Q,EAAgByN,EAAc,YAAdA,CAA2BptR,GAC3CunH,EAAM1nI,EAAM,IAAM,OAEtB,MAAO,IAAI0nI,YAAc+3J,GAAUS,UAAU//Q,mBAAsBngB,EAAM,SAASA,KAAS,QACtF0+O,EAAW,QAAQ+gD,GAAUI,mBAAmBC,mBAA+BphD,QAAiB,IACjG1tQ,KAAKmzT,UAAUwJ,OAAOxtR,GACtBnvC,KAAKmH,QAAQiJ,SAAShC,GACtBA,EAAKo3G,MAAMp3G,GACX,KAAKsoJ,IAAM,IAEnBvnH,KAAM/+B,GAAUhC,IACZ,IAAI+gC,EAAO/gC,EAAK+gC,KACZm5Q,EAAOl6S,EAAKk6S,KACZ/zP,EAAQnmD,EAAKmmD,MACb+P,EAAWl2D,EAAKk2D,SAChBk4P,EAAcD,EAAc,UAAdA,CAAyBptR,GACvC0nR,EAAUl2T,EAAMwvB,OACpB,MAAO,cAAcs+R,GAAUC,gBAAgBn6P,EAAOplB,OAAWA,EAAK+7B,aAAe/7B,EAAK+c,MAAS,kBAAoB2qQ,EAAU,IAAM,MAAOpI,GAAUG,kBAAkBz/Q,EAAKh9B,OAASg9B,EAAKh9B,SAAWg9B,uBAA0BA,EAAK+c,MAAQ,uBAAyB,OAChP,IAAjB/c,EAAKrnB,QAAoB,uBAAyB,IACrDnnB,EAAMijB,KAAK,OAAS,KAAKurB,EAAKue,SAC7Bve,EAAK+c,OAAS/c,EAAK+c,MAAM1kD,OAAS,EAC9B2nC,EAAKigR,SACF,wBACE,yBACJ,IACN,IACA,GAAIjgR,EAAK+qF,WAAc/qF,EAAKwX,QAA6C,GAAnC3mD,KAAKmzT,UAAUuJ,YAAYtuT,MAC/D+gC,EAAK+7B,aAAe/7B,EAAK+c,MACvB,GAAGoY,EAAS,CAAEpY,MAAO/c,EAAK+c,MAAOo8P,KAAMA,EAAM/zP,MAAO,CAAE66P,SAAUjgR,EAAKigR,UAAYyH,QAASA,MACvF1nR,EAAKwX,SAAWxX,EAAK2zO,YAAc05C,EACtC,GAAGpuT,EAAK8xI,cAAc9xI,KACpB,IAEN,OAAO,IAEfglT,aAAchjT,GAAS,EAAGikC,eACtB,iIAAiIA,wBAC7H1zC,EAAM4pB,GAAG+tE,KAAK,CAAEA,KAAM,aAAajkD,IAAa+jD,UAAW,kBAC/D,YAEJotB,MAAOp1G,GAAS,EAAG++B,OAAMolB,WACrB,wDAAwD5zD,EAAM4pB,GAAG+tE,KAAK,CAAEA,KAAM/jC,EAAM7hB,WAAa,iBAAmB,kBAAmB0lD,UAAW,wCACtJukO,OAAQvsT,GAAUhC,IACd,IAAI+2S,EAAiBoX,EAAc,iBAAdA,CAAgCnuT,GACrD,OAAI+2S,EACO,yBAAyBA,aAE7B,EAAE,IAEbv4P,MAAOx8C,GAAS,IAAM,KAE9B,EAEAmlT,WAAY,SAASpuT,GACjB,IAAIc,EAAOjI,KACXmH,EAAUpE,EAAO,CAAEulT,KAAMrgT,EAAMssD,MAAO,CAAC,GAAKptD,GAE5C,IAAIylD,EAAQ3kD,EAAKkrT,UAAUvmQ,MACvBzd,EAAOhoC,EAAQgoC,KAEnB,OAAOlnC,EAAKkrT,UAAUhkR,KAAKpsC,EAAOoE,EAAS,CACvC+yH,UAAW/qF,EAAK+qF,UAAYjyH,EAAKkrT,UAAUj5L,UAAYttE,EACvD+vQ,OAAQ10T,EAAKkrT,UAAUwJ,OACvBD,YAAaz0T,EAAKkrT,UAAUuJ,YAC5Bx8K,cAAej4I,EAAKi4I,cACpB16B,MAAOr2E,EAAK+c,OAAS/c,EAAKwX,SAAWxX,EAAKlnC,EAAKd,QAAQy1T,iBAAiB,IAAM30T,EAAKkrT,UAAU3tM,MAAQ54D,EACrG0X,SAAUr8D,EAAKotT,YAAY7rT,KAAKvB,IACjCwmT,IACP,EAEA4G,YAAa,SAASluT,GAIlB,OAHWnH,KACUmzT,WAAahsT,EAAQmhT,KAAK6K,WAE9B5+P,MAAMxxD,EAAO,CAC1B05T,YAAa,SAASt1T,GAOlB,IANA,IAAIkJ,EAAO,GACP9I,EAAI,EACJ2kD,EAAQ/kD,EAAQ+kD,MAChBn7B,EAAMm7B,EAAQA,EAAM1kD,OAAS,EAC7B+sD,EAAQxxD,EAAO,CAAEyE,OAAQupB,GAAO5pB,EAAQotD,OAErChtD,EAAIwpB,EAAKxpB,IACZ8I,GAAQlJ,EAAQmhT,KAAKiN,WAAWxyT,EAAOoE,EAAS,CAC5CotD,MAAOA,EACPplB,KAAMpsC,EAAO,CAAEuW,MAAO/R,GAAK2kD,EAAM3kD,OAIzC,OAAO8I,CACX,GACDlJ,EAASsnT,IAChB,EAEAvuK,cAAe,SAAS/4I,GACpB,OAAOA,EAAQmhT,KAAK6K,UAAUxsQ,QAAQ5jD,EAAOoE,EAASsnT,IAC1D,IAGAoO,GAAc1L,GAAKpuT,OAAO,CAC1BoF,KAAM,SAAS0D,EAAS1E,GACpB,IAAIc,EAAOjI,KAEXmxT,GAAKppT,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GAEjCc,EAAK4D,QAAQ+X,KAAK2qS,GAAM,QAExBtmT,EAAKkqN,QAAUxxN,EAAMwvB,OAAOnlB,UAAU,EAAG,GAEzC/C,EAAKZ,OAAS1E,EAAEsF,EAAKd,QAAQE,QAE7BY,EAAK++S,SACL/+S,EAAK60T,OACT,EAEApL,cAAe,SAASvqT,GACpB,IAAIc,EAAOjI,KACPmH,EAAQm+R,aAAer9R,EAAKkqT,qBAC5BlqT,EAAKgrT,cAAgB,CAAC,EAEtBhrT,EAAKyrT,gBAAkBzrT,EAAK4D,QAAQc,SAASM,GAAG8gT,GAAmC9lT,EAAK4D,QAAQkxT,OAAOjP,GAA8B7lT,EAAK4D,SACrI8gB,KAAK,qCAAuCxlB,EAAQsqI,YAAc,YAAY9kI,SAEnD,cAA5B1E,EAAKd,QAAQsqI,aACbw/K,GAAyBhpT,EAAK4D,SAG9B1E,EAAQ+E,WACR/E,EAAQ+E,SAAWvJ,EAAEwE,EAAQ+E,UAC7B/E,EAAQ+E,SAASiuC,OAAOlyC,EAAKyrT,iBAGjCzrT,EAAKovT,eAAiBpvT,EAAK4D,QAAQ,GAAGsB,MAAMnB,OAC5C/D,EAAKwrQ,cAAgBxrQ,EAAK4D,QAAQ,GAAGsB,MAAMpB,MAEnD,EAEA5E,QAAS,CACL/E,KAAM,cACNmtB,OAAQ,KACRo1F,OAAQ,cACR8sB,YAAa,WACburL,eAAe,EACfjqO,kBAAkB,EAClB1rF,OAAQ,OACR2xC,OAAQp2C,EACR0K,SAAU1K,GAGdyH,OAAQ,CACJwmF,EACAC,EACAE,EACAD,EACAhU,GAGJ7qD,WAAY,SAAS/qB,GACjB,IAAIc,EAAOjI,KAEXmxT,GAAKppT,GAAGmqB,WAAW3nB,KAAKtC,EAAMd,GAE9Bc,EAAKZ,OAAO+xB,IAAInxB,EAAK08G,OAAS9yB,EAAK5pF,EAAKkqN,QAASlqN,EAAKg1T,YAElDh1T,EAAKq3E,YACLr3E,EAAKq3E,WAAWt9E,UAGpBiG,EAAKZ,OAAS1E,EAAEsF,EAAKd,QAAQE,QACzBF,EAAQsqI,aAAexpI,EAAKisF,MAAMtnF,QAAQ,IAC1C3E,EAAKisF,MAAMroF,QAAQ6wQ,SAGvBz0Q,EAAK60T,QAEL3L,GAAKppT,GAAGmqB,WAAW3nB,KAAKvK,KAAMmH,EAClC,EAEAnF,QAAS,WACL,IAAIiG,EAAOjI,KAEXiI,EAAKZ,OAAO+xB,IAAInxB,EAAKd,QAAQw9G,OAAS9yB,EAAK5pF,EAAKkqN,SAChDxgI,EAAiBv4D,IAAIz4B,EAAM4C,QAAQumB,UAAY+nE,EAAK5pF,EAAKkqN,QAASlqN,EAAKi1T,aAEnEj1T,EAAKq3E,YACLr3E,EAAKq3E,WAAWt9E,UAGpBmvT,GAAKppT,GAAG/F,QAAQuI,KAAKtC,GAEjBA,EAAKisF,OACLjsF,EAAKisF,MAAMlyF,SAEnB,EAEAuwF,KAAM,SAASntF,EAAGjB,GACd,IAAI8D,EAAOjI,KAIX,GAFAoF,EAAIzC,EAAEyC,GAAG,GAELmwB,GAASttB,EAAK4D,QAAQ,GAAIlJ,EAAEyC,GAAG,KAAO6C,EAAKkwT,iBAAiBx1T,EAAEyC,IAC9D+rT,GAAKppT,GAAGwqF,KAAKhoF,KAAKtC,EAAM7C,QAExB,IAA+D,IAA3D6C,EAAK8tT,cAAc,CAAE5mR,KAAMlnC,EAAK4D,QAASnG,KAAMmrF,IAAmB,CAWlE,GAVI5oF,EAAKisF,MAAMlnF,WAAa/E,EAAKd,QAAQooB,SACrCtnB,EAAKisF,MAAMxuC,OAAM,GACjBz9C,EAAKisF,MAAMroF,QAAQwc,WAAU,IAG5BpgB,EAAKk1T,0BACNl1T,EAAKk1T,wBAA0Bl1T,EAAKm1T,WAAW5zT,KAAKvB,IAExDA,EAAKuB,KAAKwnF,EAAU/oF,EAAKk1T,yBAErBh5T,IAAMvB,EAAa,CACnB,IAAI2tT,EAAkBtoT,EAAKkqT,mBAC3B,GAAI5B,EAAiB,CACjB,IAAIzyS,EAASyyS,EAAgBzyS,SAC7B1Y,GAAK0Y,EAAO0O,KACZroB,GAAK2Z,EAAOoH,GAChB,CACAjd,EAAKisF,MAAMtnF,QAAQc,OACnBzF,EAAKo1T,yBAAyBj4T,EAAGjB,GACjC8D,EAAKisF,MAAM3B,KAAKntF,EAAGjB,EACvB,MACI8D,EAAKisF,MAAM/sF,QAAQgrF,OAAU/sF,GAAQ6C,EAAKisF,MAAM/B,QAAWlqF,EAAKZ,OAChEY,EAAKisF,MAAMroF,QAAQwc,WAAU,GAC7BpgB,EAAKo1T,2BACLp1T,EAAKisF,MAAM3B,OAGfZ,EAAiBv4D,IAAInxB,EAAKisF,MAAMhC,UAAWjqF,EAAKisF,MAAMzB,iBACtDd,EACK9nE,GAAGlpB,EAAM4C,QAAQumB,UAAY+nE,EAAK5pF,EAAKkqN,QAASlqN,EAAKi1T,YAC9D,CAGJ,OAAOj1T,CACX,EAEAm1T,WAAY,WACR,IAAIn1T,EAAOjI,KAEXiI,EAAKgC,OAAO+mF,EAAU/oF,EAAKk1T,yBAC3Bl1T,EAAK4D,QAAQzB,QAAQ,QACzB,EAEAizT,yBAA0B,SAASj4T,EAAGjB,GAClC,IAAI8D,EAAOjI,KACPk0F,EAAQjsF,EAAKisF,MACb8+N,EAA2C,cAA5B/qT,EAAKd,QAAQsqI,YAE5BxpI,EAAKd,QAAQm+R,aACbr9R,EAAK2uT,kBAAkB1iO,GAEvBA,EAAMroF,QAAQc,SAASV,IAAI,CACvBqB,SAAU,GACVtB,OAAQ,KAGZkoF,EAAMroF,QAAQI,IAAI,CACdiiF,WAAY,SACZ7gF,QAAS,GACTC,SAAU,KAGV0lT,EACA/qT,EAAKq1T,eAAeppO,EAAOprF,MAAM1D,GAAKxC,EAAc,CAAE4zC,SAAS,EAAMpxC,EAAGA,EAAGjB,EAAGA,IAE9E8D,EAAKkvT,gBAAgBjjO,EAAOprF,MAAM1D,GAAKxC,EAAc,CAAE4zC,SAAS,EAAMpxC,EAAGA,EAAGjB,EAAGA,IAGnF+vF,EAAMroF,QAAQI,IAAI,CACdiiF,WAAY,GACZ7gF,QAAS,OACTC,SAAU,aAGdrF,EAAK8uT,wBAAwB7iO,EAAO8+N,GAAc,GAClD9+N,EAAMroF,QAAQspF,SAASk5N,IAAsB3gT,OAErD,EAEA4vT,eAAgB,SAASppO,EAAO19C,GAC5B,IAAIo6Q,EAAe18N,EAAMroF,QACrBurT,EAASxG,EAAapjT,IAAIojT,EAAajkT,OAAOohT,IAElDqJ,EAAOrrT,MAAM/L,KAAKyzQ,eAAiB,IAEnC,IAAIpwP,EAAW6wE,EAAMJ,UAAUt9C,GAC3B+mR,EAAc56T,EAAE7B,QAAQiL,QACxByxT,EAAkBn6S,EAAStX,MAC3B0xT,EAAkBp6T,KAAK8V,IAAIkK,EAASmJ,KAAM,GAC1Ce,EAAaipB,EAAU,EAAIs6Q,GAAc9wT,KAAKmyT,mBAAmB,GAAI,cACrE9lS,EAAS1rB,EAAMyrB,WAAWwkS,GAC1Bte,EAAWirB,EAAclxS,EAAOG,KAAOH,EAAOI,MACrC6lR,EAAW/kR,EAAaiwS,EAAkBC,GAGnDrG,EAAOnrT,IAAI,CAAEqhB,SAAU,SAAUvhB,MAAQumS,EAAWmrB,EAAkBlwS,EAAc,MAE5F,EAEAm4B,MAAO,WACH,IAAIz9C,EAAOjI,KAEPu1B,GAASttB,EAAK4D,QAAQ,GAAIlJ,EAAE2E,UAAU,IAAI,KAAOW,EAAKkwT,iBAAiB7wT,UAAU,IACjF6pT,GAAKppT,GAAG29C,MAAMn7C,KAAKtC,EAAMX,UAAU,IAE/BW,EAAKisF,MAAMlnF,YACqD,IAA5D/E,EAAK8tT,cAAc,CAAE5mR,KAAMlnC,EAAK4D,QAASnG,KAAMorF,MAC/C7oF,EAAKuqT,mBACLvqT,EAAK4D,QAAQsqB,KAAK,IAAMluB,EAAK6pT,SAAS7/R,WAAW,MACjDhqB,EAAKisF,MAAMxuC,QACXisC,EAAiBv4D,IAAIz4B,EAAM4C,QAAQumB,UAAY+nE,EAAK5pF,EAAKkqN,QAASlqN,EAAKi1T,aACvEj1T,EAAKgC,OAAO8yE,EAAQ90E,EAAKy1T,oBACzBz1T,EAAKisF,MAAM/sF,QAAQgrF,OAAOpsD,QAI1C,EAEAu4H,aAAc,SAAS35J,GACnB,IAAYmZ,EAARzc,EAAKsD,EACLsD,EAAOjI,KACPmH,EAAUc,EAAKd,QACfE,EAAS1G,EAAM4C,QAAQggB,SAAW5gB,EAAEtB,EAAGgG,QAAU1E,EAAEtB,EAAGs9E,eAEtDh6E,EAAEwb,SACF9e,EAAKsD,EAAEwb,OACJ6iE,MAAQr+E,EAAES,EAAEie,SACfhiB,EAAG4hF,MAAQt+E,EAAER,EAAEkf,UAGfkS,GAASttB,EAAK4D,QAAQ,GAAIlH,EAAE22B,eAAiB32B,EAAE0C,UAInDY,EAAK01T,aAAet8T,EAEpBA,EAAG8H,iBACH9H,EAAGq3T,2BAEHzwT,EAAK4D,QAAQsqB,KAAK,IAAMs0R,GAAc19R,YAAY09R,IAE7CtjT,EAAQooB,QAAUloB,EAAO4F,GAAG9F,EAAQooB,UAAapoB,EAAQooB,UACtDpoB,EAAQ61T,eACR/0T,EAAKisF,MAAM/sF,QAAQgrF,OAAS9wF,EAAGs9E,cAC/B12E,EAAKsqF,KAAKlxF,EAAGs9E,iBAEb12E,EAAKisF,MAAM/sF,QAAQgrF,OAAS9wF,EAAGs9E,cAE3B12E,EAAK21T,cACL9/S,EAAS7V,EAAKZ,OAAOyW,SACrB7V,EAAKsqF,KAAKlxF,EAAG2hF,MAAQllE,EAAO0O,KAAMnrB,EAAG4hF,MAAQnlE,EAAOoH,MAEpDjd,EAAKsqF,KAAKlxF,EAAG2hF,MAAO3hF,EAAG4hF,SAIvC,EAEA46O,cAAe,SAASl5T,GACpB,IAAIsD,EAAOjI,KACPqH,EAAS1E,EAAEgC,EAAE22B,eAAiB32B,EAAE0C,QAChCy2T,EAAaz2T,EAAOwF,QAAQ5E,EAAKZ,OAAOgf,UAAU,IAAMpe,EAAKZ,OAAO,GACpE8nC,EAAO9nC,EAAOwF,QAAQqhT,IACtB34Q,EAAWttC,EAAKkwT,iBAAiBhpR,GACjCohR,EAAkBtoT,EAAKkqT,mBACvB4L,EAAcxoS,GAASttB,EAAK4D,QAAQ,GAAIxE,EAAO,KAAQkpT,GAAmBh7R,GAASg7R,EAAgB,GAAIlpT,EAAO,IAElHY,EAAK01T,aAAeh5T,EAEpB,IAAIq5T,EAA0B,IAAZr5T,EAAEg+E,MAEhB16E,EAAKisF,MAAMlnF,YAAegxT,GAAeF,IAAgBA,KAAiB71T,EAAKd,QAAQ4qT,eAAiBx8Q,GAAYwoR,IAAiBA,KACjIA,GACA/9T,KAAKiK,OAAO8yE,EAAQ/8E,KAAK09T,oBACzBz1T,EAAKuB,KAAKuzE,EAAQ90E,EAAKy1T,qBAEvBz1T,EAAKy9C,QAGjB,EAEAo3Q,MAAO,WACH,IAAI70T,EAAOjI,KACPmH,EAAUc,EAAKd,QACfE,EAASY,EAAKZ,OAElBY,EAAKg2T,cAAgB,KACrBh2T,EAAKg1T,WAAah1T,EAAKq2J,aAAa90J,KAAKvB,GACzCA,EAAKi1T,YAAcj1T,EAAK41T,cAAcr0T,KAAKvB,GAC3CA,EAAKy1T,mBAAqBz1T,EAAKy9C,MAAMl8C,KAAKvB,GAEtCZ,EAAO,KACH1G,EAAM4C,QAAQggB,UAA8B,eAAlBpc,EAAQw9G,SAClC18G,EAAKq3E,WAAa,IAAI3+E,EAAM+/E,WAAWr5E,EAAQ,CAC3CkoB,OAAQpoB,EAAQooB,OAChBgyD,gBAAgB,IAGpBt5E,EAAKg2T,cAAgB,WAAa,OAAO,CAAO,EAEhDh2T,EAAKq3E,WAAW91E,KAAK,OAAQvB,EAAKg1T,aAGlC91T,EAAQooB,OACRloB,EAAOwiB,GAAG1iB,EAAQw9G,OAAS9yB,EAAK5pF,EAAKkqN,QAAShrN,EAAQooB,OAAQtnB,EAAKg2T,eAAiBh2T,EAAKg1T,YAEzF51T,EAAOwiB,GAAG1iB,EAAQw9G,OAAS9yB,EAAK5pF,EAAKkqN,QAASlqN,EAAKg2T,eAAiBh2T,EAAKg1T,YAG7E51T,EAAOwiB,GAAG,WAAYllB,IACdA,EAAE2iC,UAAY3mC,EAAMkqB,KAAKiB,KAAOnnB,EAAE4iC,WAClC5iC,EAAEwE,iBACFlB,EAAKsqF,KAAK5tF,EAAE0C,QAChB,IAGZ,EAEA0uT,cAAe,SAASpxT,GACpB,IAAIsD,EAAOjI,KACPmyF,EAASxvF,EAAEsF,EAAKisF,MAAM/sF,QAAQgrF,QAAQ,GACtCn5C,EAAS/wC,EAAK01T,aAIlB,OAFA11T,EAAK01T,aAAe/6T,EAEbqF,EAAKmC,QAAQzF,EAAEe,KAAM3C,EAAO,CAAE2C,KAAMf,EAAEe,KAAMypC,KAAMxqC,EAAEwqC,MAAQnvC,KAAK6L,QAAQ,GAAIxE,OAAQ8qF,GAAUn5C,EAAS,CAAE74B,MAAO64B,GAAW,CAAC,GACxI,EAEAguQ,OAAQ,WACJ,IAAI/+S,EAAOjI,KACPuwT,EAAkBtoT,EAAKkqT,mBACvB+L,EAAqBj2T,EAAK4D,QAAQwZ,SAAS,kBAE/Cpd,EAAKk2T,cAAgBl2T,EAAK8tT,cAAcvsT,KAAKvB,GAE7CA,EAAKisF,MAAQvxF,EAAE,eACEw3C,OAAO+jR,GACP5H,WAAW,CACRt9Q,OAAQ/wC,EAAKd,QAAQ6xC,OACrB1rC,SAAUrF,EAAKd,QAAQmG,SACvBf,SAAuC,eAA7BtE,EAAKd,QAAQsqI,YACvBt/C,OAAQlqF,EAAKZ,QAAU,OACvB0rF,iBAAkB9qF,EAAKd,QAAQ4rF,iBAC/Bd,UAAWhqF,EAAKd,QAAQ8qT,gBAAkB,MAC1C3/N,UAAWrqF,EAAKd,QAAQmrF,UACxB+0B,SAAUp/G,EAAKk2T,cACf5H,WAAYtuT,EAAKk2T,cACjBjyT,SAAUqkT,GAAmBtoT,EAAKd,QAAQ+E,SAC1Cw5C,MAAQ6qQ,EAA2B,SAAS5rT,GACxChC,EAAE0tT,GAAe1rT,EAAE2F,OAAOuB,QAAS0kT,IAAkBvtT,MAAK,SAASuE,EAAGsrH,GAClE,IAAI3+B,EAAQ2+B,EAAEzkH,KAAKu/S,GACfz5N,GACAA,EAAMxuC,OAAM,EAEpB,GACJ,EAP0B/iD,EAAEQ,OAQ7BiL,KAAKu/S,GAExB1lT,EAAK21T,aAAeroS,GAASttB,EAAKZ,OAAO,GAAIY,EAAKisF,MAAMroF,QAAQ,GACpE,EAEA6uT,iBAAkB,SAASvrR,EAAMyrR,GAC7B56T,KAAKo6T,WAAWjrR,EAAMyrR,GACtB56T,KAAK0lD,OACT,EAEAkxC,OAAQ,SAASjyF,GACb,IAAIkzT,EAAY73T,KAAKk4T,cAAgBl4T,KAAK83T,cAAgB,GAE1D3G,GAAKppT,GAAG6uF,OAAOrsF,KAAKvK,KAAM2E,GAEtBgV,MAAoBhV,EAAEg6E,eACtB3+E,KAAKo6T,WAAWvC,EAAW73T,KAAK4M,QAAQ2oC,WAAWhmB,OAAO,YAAY6uS,IAAI,gBAAgBl0T,QAElG,IAGJqgB,EAAG2M,OAAOi6R,IACV5mS,EAAG2M,OAAO2lS,GAEb,CAjvFD,CAivFG/7T,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MAEfywB,EADKzwB,EAAM4pB,GACC6G,OACZloB,EAAavI,EAAMuI,WACnB2hB,EAAOlqB,EAAMkqB,KACb1e,EAAaxL,EAAM8L,YACnB0f,EAAK,gBACLkyS,EAAU,UAEV7S,EAAU,WACV8S,EAAe,iBACfC,EAAe,iBACfC,EAAc,gBAGdC,EAAe,WAIfC,EAAiB,aAEjBC,EAAe,WACfC,EAAe,iBACfC,EAAc,gBACdC,EAAY,cACZC,EAAY,cACZC,EAAY,cACZC,EAAkB,4BAClBC,EAAgB,iBAChBC,EAAe,iBACfC,EAAmB,qBACnBC,EAAe,iBACfC,EAAe,iBAEfC,EAAS,UAITC,EAAmB,gBAGnBC,EAAe,eACf/4T,EAAa,aAEbw2C,EAAS,SACTg3L,EAAQ,QACRi3E,EAAS,SACTt6N,EAAO,OACPC,EAAQ,QACR01I,EAAQ,QAGRD,EAAU,UAEVm5F,EAAS,SAETnR,EAAO,OACPoR,EAAY,YACZ9tR,EAAW,WACX9f,EAAW,WACX6tS,EAAQ,QACR7iP,EAAS,SAET8iP,EAAQ,QACRC,EAAW,WAEXC,EAAqB,cACrBC,EAAuB,gBACvBC,EAAuB,yBAEvBC,EAAkB,kBAElBC,EAAgB,eAChBC,EAAiB,gBACjBC,EAAiB,QACjBC,GAAgB,OAChBC,GAAkB,SAElBC,GAAiB7/T,EAAMijB,KAAK,OAE5B68S,GAAU,GACVhgE,GAAO,IACPntP,GAAQ,IACR6gO,GAAM,IACNusF,GAAQ,IACR/mH,GAAK,KACLgnH,GAAM,MAGNC,GAAqB,sBACrBC,GAAiB,mBACjBC,GAAkB,oBAClBC,GAAiB,mBAEjBpgU,EAAMqgU,QAAU,CAAC,EAErB,IAAIC,GAAe,CACfxoD,OAAQ,SACRyoD,YAAa,cACbC,eAAgB,iBAChB3U,YAAa,cACb4U,YAAa,SACb7uO,KAAM,UAGN8uO,GAAwB,CACxB1W,OAAQ,mBACRW,aAAc,0BACd5D,YAAa,yBACbqB,eAAgB,wBAChB4C,YAAa,yBACb2V,YAAa,yBACbC,OAAQ,oBAGRC,GAAkB,CAAE,SAAU,cAAe,iBAAkB,cAAe,SAAU,eAExFC,GAAwB,wGAAwG9gU,EAAM4pB,GAAG+tE,KAAK,oCAO9IopO,GAAUtwS,EAAOruB,OAAO,CACxBoF,KAAM,SAAS0D,EAAS1E,GACpBiqB,EAAOrpB,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAAS1E,GAEnCA,EAAUnH,KAAKmH,QAEfnH,KAAKy6O,OAAS95O,EAAM4C,QAAQ8b,MAAMxT,GAClC7L,KAAK0tD,IAAM/sD,EAAMwvB,QAEjBtkB,EAAU7L,KAAK4M,QAAU5M,KAAK6L,SACtB+X,KAAK48S,GAAgBxgU,KAAK0tD,KAClC7hD,EAAQwZ,SA/HD,aAgIPxZ,EAAQ+X,KAAK2qS,EAAM8P,GAEfl3T,EAAQw6T,WACR3hU,KAAK0tS,aAGLvmS,EAAQswL,OAAStwL,EAAQswL,MAAMjwL,OAAS,IACxCL,EAAQ+kD,MAAQlsD,KAAK4hU,uBAGrBz6T,EAAQ+kD,OAAS/kD,EAAQ+kD,MAAM1kD,QAC/BxH,KAAKi2I,SAGTj2I,KAAKqnO,gBACLrnO,KAAK6hU,YACL7hU,KAAKqyB,mBAEDlrB,EAAQw6T,YACR3hU,KAAK8hU,QAAQ9hU,KAAK6L,QAAQ2U,cAC1BxgB,KAAK+hU,eAAe71T,SAASlM,KAAK4M,SAClC5M,KAAKgiU,yBAGTrhU,EAAMi0B,OAAO50B,KACjB,EAEAqK,OAAQ,CACJ6pO,EACAi3E,EACAt6N,EACAC,EACAqvO,EACAC,EACAljR,GAGJ/1C,QAAS,CACL/E,KAAM,UACN8pD,MAAO,GACPy1Q,WAAW,EACXM,eAAe,EACfC,mBAAmB,EACnBlyT,KAAM,UAGVhO,QAAS,WACL,IAAIiG,EAAOjI,KAEPiI,EAAKd,QAAQw6T,YACbhhU,EAAMw4B,aAAalxB,EAAKgtO,gBACxBhtO,EAAKk6T,aAAangU,WAGtBiG,EAAK4D,QAAQsqB,KAAKg+M,mBAAoBnxO,MAAK,CAACuE,EAAGimB,KAC3C,IACI0mE,EAAO+/N,EAAcmO,EADrB3pD,EAAS91Q,EAAE6qB,GAAI0+R,iBAGfzzC,IACA2pD,EAAU3pD,EAAO2pD,QAEjBnO,GADA//N,EAAQukL,EAAOvkL,OACMtnF,QAErBw1T,EAAQpgU,UACRkyF,EAAMlyF,UACNiyT,EAAa5nT,SACjB,IAGJ1L,EAAMqB,QAAQiG,EAAK4D,QAAQ0pC,YAE3BnkB,EAAOrpB,GAAG/F,QAAQuI,KAAKtC,EAC3B,EAEAuF,IAAK,SAASrG,GACVnH,KAAK2mI,KAAKx/H,GAENnH,KAAKmH,QAAQw6T,WACb3hU,KAAKmqB,QAAO,EAEpB,EAEAhC,OAAQ,SAASk+R,EAAWl+R,GACxB,IAI2BwsN,EAAS/nO,EAJhC3E,EAAOjI,KACP0tD,EAAM1tD,KAAKqiU,QAAQhc,GACnBl3Q,EAAOnvC,KAAKsiU,SAASjc,EAAW34P,GAChCwnO,EAAY/lP,EAAK+lP,eAGA,IAAV/sQ,IACPA,GAAS,GAGTgnB,EAAK+lP,WAELvgD,GADA/nO,EAAUsoR,EAAUtoR,SACFG,SAASwyT,IAAW3yT,EAAQK,GAAG,UACjDioR,EAAU/sQ,OAAOA,GACjBvb,EAAQupB,KAAK,cAAclE,WAAW,YACtCrlB,EAAQqlB,WAAW,YAEf0iN,GACA/nO,EAAQyY,SAASk6S,GAAQn1T,QAAQo8N,IAE9Br3L,EAAKozR,iBAAiB/6T,OAAS,GACxB7G,EAAM41B,eAAe4Y,EAAKozR,iBAAiB11T,QAAQsnO,kBACrDhsN,OAAOA,EAAQgnB,EAAKozR,kBAGhCviU,KAAKmiU,eACLniU,KAAKmiU,aAAah6S,OAAOgnB,EAAKw3Q,SAAUx+R,GAE7BnoB,KAAKmiU,aAAat2T,QACxBsqB,KAAK,mBAAqBu3B,EAAM,KAE5B1qD,MAAK,CAACuE,EAAGimB,KACdvlB,EAAKk6T,aAAah6S,OAAOxlB,EAAE6qB,GAAKrF,EAAO,IAGnD,EAEAq6S,qBAAsB,SAASt6O,GAC3B,OAAOloF,KAAK6L,QAAQsqB,KAAK,gBAAkB+xD,EAAY,MAAM34D,OAAO4kN,GAAMuqF,EAC9E,EAEAhxT,KAAM,SAAS24S,GACX,IAGI1tR,EAAuC8pS,EAHvCx6T,EAAOjI,KACP0tD,EAAM1tD,KAAKqiU,QAAQhc,GACnBl3Q,EAAOlnC,EAAKq6T,SAASjc,EAAW34P,GAG/Bve,KAILxW,EAAWwW,EAAKuzR,WAAWl1T,IAAI2hC,EAAKwzR,WAAWn1T,IAAI2hC,EAAKozR,kBAAkB/0T,IAAI2hC,EAAKw3Q,WAE1EthS,SAASs5S,GAClBhmS,EAAStT,SAASu5S,GAEd5+T,KAAKmiU,cACMniU,KAAKmiU,aAAat2T,QACxBsqB,KAAK,mBAAqBu3B,EAAM,KAE5B1qD,MAAK,CAACuE,EAAGimB,KACd7qB,EAAE6qB,GAAInI,SAASu5S,GACfj8T,EAAE6qB,GAAInI,SAASs5S,EAAa,KAIpC8D,EAAgBtzR,EAAKwzR,UAAUh2T,SAASE,QAAQsnO,GAAMmqF,IACpBlwT,KAAK2yT,MAGsB,IAArD0B,EAAcltR,SAAS,mBAAmB/tC,OAC1CS,EAAKyF,KAAK+0T,GAEVx6T,EAAK26T,qBAAqBH,IAI9B9pS,EAASxC,KAAK,gBAAgBC,QAAQ,gBAAgB5uB,OAAS,GAC/DxH,KAAK6iU,eAAe56T,EAAK66T,eAAe54T,SAGxClK,KAAKmH,QAAQw6T,WACb3hU,KAAKmqB,QAAO,GAEpB,EAEA9d,OAAQ,SAASg6S,GACb,IAGImG,EAHAvkT,EAAOjI,KACP0tD,EAAM1tD,KAAKqiU,QAAQhc,GACnBl3Q,EAAOnvC,KAAKsiU,SAASjc,EAAW34P,GAG/Bve,IAIDA,EAAK+lP,aACLs3B,EAAcr9Q,EAAKwzR,UAAU91T,QAAQ,8BACrBrF,OAAS,GAA0C,IAArC2nC,EAAKwzR,UAAUxtO,WAAW3tF,QACpDglT,EAAYp+S,KAAK2yT,IAAgB/+T,UACjCwqT,EAAYngT,SAEZ8iC,EAAKwzR,UAAYhgU,EAAE89T,KAEnBtxR,EAAK+lP,UAAUlzR,WAInBmtC,EAAKuzR,WAAWl7T,OAAS,EACzB2nC,EAAKuzR,WAAWr2T,SACT8iC,EAAKwzR,UAAUn7T,OAAS,GAC/B2nC,EAAKwzR,UAAUt2T,SAGf8iC,EAAKozR,iBAAiB/6T,OAAS,GAC/B2nC,EAAKozR,iBAAiBl2T,SAGtBrM,KAAKmiU,eACLniU,KAAKmiU,aAAa91T,OAAO8iC,EAAKw3Q,UAEnB3mT,KAAKmiU,aAAat2T,QACxBsqB,KAAK,mBAAqBu3B,EAAM,KAE5B1qD,MAAK,CAACuE,EAAGimB,KACdvlB,EAAKk6T,aAAa91T,OAAO1J,EAAE6qB,GAAI,KAInCxtB,KAAKmH,QAAQw6T,WACb3hU,KAAKmqB,QAAO,GAEpB,EAEA1c,KAAM,SAAS44S,GACX,IAGI1tR,EAAuC8pS,EAFvC/0Q,EAAM1tD,KAAKqiU,QAAQhc,GACnBl3Q,EAAOnvC,KAAKsiU,SAASjc,EAAW34P,GAG/Bve,KAILxW,EAAWwW,EAAKuzR,WAAWl1T,IAAI2hC,EAAKwzR,WAAWn1T,IAAI2hC,EAAKozR,mBAC/Cx1S,YAAY6xS,GACrBjmS,EAAS5L,YAAY4xS,GAErBxvR,EAAKw3Q,SAAS55R,YAAY6xS,GAEtB5+T,KAAKmiU,cACMniU,KAAKmiU,aAAat2T,QACxBsqB,KAAK,mBAAqBu3B,EAAM,KAE5B1qD,MAAK,CAACuE,EAAGimB,KACd7qB,EAAE6qB,GAAIT,YAAY6xS,EAAa,KAIvC6D,EAAgBtzR,EAAKwzR,UAAUh2T,SAASE,QAAQsnO,GAAMmqF,IACpBlwT,KAAK2yT,MAG/B0B,EAAc11T,SAAS,aAAe01T,EAAcltR,SAAS,mBAAmB/tC,OAAS,EA5BtFxH,KA6BEyN,KAAKg1T,GA7BPziU,KA+BE4iU,qBAAqBH,IAI9BziU,KAAKmH,QAAQw6T,WACb3hU,KAAKmqB,QAAO,GAEpB,EAEApB,OAAQ,SAASs9R,EAAW7zO,GACxB,IAGIimM,EAAQsqD,EAAaxuQ,EAHrBplB,EAAOnvC,KAAKsiU,SAASjc,GACrBx6S,EAAUsjC,EAAKwzR,UACfhc,EAAWx3Q,EAAKw3Q,SAGhBn0O,IAAY5vE,IACZ4vE,GAAU,GAGdimM,EAAS5sQ,EAAQuC,KAAK0yT,KAEjB3xR,EAAK+lP,WAA8D,IAAjDyxB,EAASxwR,KAAKg+M,GAAMirF,GAAkB53T,UAI7D+sD,EAAQ1oD,EAAQuC,KAAKyxT,GAEjB1wR,EAAK+lP,aACL6tC,EAAcl3T,EAAQgB,QAAQsnO,GAAMmqF,GAAclwT,KAAK2yT,MAG/Cl1T,EAAQkB,SAAS2xT,KAAoBlsP,GACrCuwP,EAAY5W,aAAatgT,EAAQyN,SAIzCm/P,EAAO1vP,OAAOypD,GAEVA,GACexyE,KAAK6L,QAAQsqB,KAAK,eAAiBo+B,EAAQ,KAE7CvxD,MAAK,CAACuE,EAAGimB,KACdA,IAAO3hB,EAAQ,IACflJ,EAAE6qB,GAAIpf,KAAK0yT,IAAiB/3S,QAAO,EACvC,KAKR49R,IACAA,EACK/iS,KAAK67S,EAAcjtP,GACnBr8C,KAAKg+M,GAAMirF,GACXx2S,YAAY81S,EAAgBlsP,GAE7BA,GAAWxyE,KAAKmiU,cACDniU,KAAKmiU,aAAat2T,QAAQsqB,KAAK,eAAiBo+B,EAAQ,KAE1DvxD,MAAK,CAACuE,EAAGimB,KACdA,IAAOm5R,EAAS,IAChBhkT,EAAE6qB,GACG5J,KAAK67S,GAAc,GACnBtpS,KAAKg+M,GAAMirF,GACXryS,YAAY2xS,EACrB,KAIhB,EAEAsE,YAAa,SAASC,GAClB,IAAIh7T,EAAOjI,KACPy3L,EAAQxvL,EAAK4D,QAAQsqB,KAAK6pS,GAC1B/nS,EAAYhwB,EAAK4D,QAAQsqB,KAAK+pS,GAAiB9B,IAAIoB,GAEvD/nI,EAAMz0L,MAAK,SAASsW,EAAOk2S,GACvB,IAAInqB,EAAO1iS,EAAE6sT,GACTj8R,EAAS,KACT2vS,EAAY79B,EAAKj3R,KAAK+8S,GACtBgY,EAAWF,GAAcA,EAAWC,GAEpC79B,EAAKp4R,GAAG8yT,KACRxsS,EAAS5yB,EAAM41B,eAAe8uQ,IAG9B9xQ,GAAUA,EAAOpL,OACjBoL,EAAOpL,OAAOg7S,IAAY,GAE1Bl7T,EAAKkgB,OAAOk9Q,EAAM89B,EAE1B,IAEAl7T,EAAK4D,QAAQsqB,KAAK6pS,EAAuB,cAAc/tS,WAAW,YAElEhqB,EAAK4D,QAAQsqB,KAAK+pS,GAAiB9B,IAAIoB,GAAkB57S,KAAK,YAAa,GAC3EqU,EAAUrU,KAAKmO,EAAU,EAC7B,EAEA40G,KAAM,SAASx/H,GACX,IAII0E,EAJAy8D,EAAYtoE,KAAKojU,gBAAgBj8T,GACjCiJ,EAAWk4D,EAAUl4D,SACrBizT,EAAmB/6P,EAAU+6P,iBAC7B39T,EAAOu7T,GAAa34P,EAAU5iE,MAG9B0K,GAAYizT,EACZx3T,EAAU7L,KAAKsjU,aAAah7P,GACrB3nE,EAAM4pB,GAAG+9C,EAAU4sN,WAC1BrpR,EAAU7L,KAAKujU,iBAAiBj7P,GACzB5iE,EACPmG,EAAU7L,KAAKwjU,gBAAgB99T,EAAM4iE,GAC9BA,EAAU5iE,OAASg6T,EAC1B1/T,KAAKyjU,aACEn7P,EAAU5iE,OAASi6T,GAC1B3/T,KAAK0jU,cAAcp7P,GAGnBz8D,IACI7L,KAAK+hU,eACLl2T,EAAQymE,aAAatyE,KAAK+hU,gBAE1Bl2T,EAAQK,SAASlM,KAAK6L,SAG1BA,EAAQsqB,KAAK,cAAclE,WAAW,YAElCpmB,EAAQoB,GAAG,eACXpB,EAAQomB,WAAW,YAG/B,EAEA0xS,eAAgB,SAASx8T,EAAS0E,GAC9B,IAAIo+C,EAAa9iD,EAAQ8iD,WACrBthC,EAAU83S,GAETx2Q,IACDA,EAAa,CAAC,GAGd9iD,EAAQytO,SACRjsN,EAAUg2S,EAAerrT,GAAQsrT,GAGjCz3T,EAAQ+pI,QACRvoH,EAAUA,EAAU,YAAcxhB,EAAQ+pI,OAG1CjnF,IACIA,EAAW68P,QACXn+R,EAAUA,EAAUrV,GAAQ22C,EAAW68P,aAChC78P,EAAW68P,OAGtBj7S,EAAQ+X,KAAKqmC,IAGjBp+C,EAAQwZ,SAASsD,GACjB9c,EAAQ+X,KAAK48S,GAAgBr5T,EAAQumD,KAEjCvmD,EAAQkpB,IACRxkB,EAAQ+X,KAAK+1L,GAAIxyM,EAAQkpB,IAEzBlpB,EAAQmmB,WAAa+yS,GACrBx0T,EAAQ+X,KAAK,gBAAiBy8S,EAEtC,EAEAkD,iBAAkB,SAASp8T,GACvB,IACIosB,EAAQzc,EAAQ6R,EADhB9c,EAAUlJ,EAAEwE,EAAQ0E,SAAW,WAmCnC,OAhCI1E,EAAQy8T,mBACR5jU,KAAK6jU,aAAa18T,EAAQy8T,kBAAkBl+T,KAAM/C,EAAEI,OAAO,CAAC,EAAGoE,EAASA,EAAQy8T,oBAGhFz8T,EAAQ8iD,aACRthC,EAAUxhB,EAAQ8iD,WAAW68P,aACtB3/S,EAAQ8iD,WAAkB,MACjCp+C,EAAQ+X,KAAKzc,EAAQ8iD,mBACd9iD,EAAQ8iD,WAAWvjD,IAGzBS,EAAQ28T,mBACT38T,EAAQ28T,iBAAmB,CAAC,GAGhC38T,EAAQ28T,iBAAiB9zT,KAAOhQ,KAAKmH,QAAQ6I,KAE7CujB,EAAS,IAAI5yB,EAAM4pB,GAAGpjB,EAAQ+tR,WAAWrpR,EAAS1E,EAAQ28T,kBAEtDtC,GAAgB7rT,QAAQxO,EAAQ+tR,YAAc,GAC9C3hQ,EAAO3mB,QAAQyY,SAAS85S,EAAe,IAAMkC,GAAsBl6T,EAAQ+tR,YAC3Ep+Q,EAASyc,EAAO3mB,SAEhBkK,GAAUyc,EAAO3mB,SAAW2mB,EAAO1nB,SAAS8gB,KA7c/B,6DA6cwDhgB,SAGrExF,EAAQ8iD,aACR9iD,EAAQ8iD,WAAW68P,MAAQn+R,GAG/B3oB,KAAK2jU,eAAex8T,EAAS2P,GAEtBA,CACX,EAEA0sT,gBAAiB,SAAStuC,EAAW/tR,GACjC,IAAI0E,EAAS63C,EAgBb,OAdIv8C,EAAQmmB,WAAaizS,KACrB10T,EAAU7L,KAAK+jU,gBAAgB7uC,EAAWvyR,EAAEI,QAAO,EAAM,CAAC,EAAGoE,KAG7DnH,KAAKmiU,cAAgBh7T,EAAQmmB,WAAa+yS,IACtCl5T,EAAQy8T,0BACRlgR,EAAK/gD,EAAEI,QAAO,EAAM,CAAC,EAAGoE,EAASA,EAAQy8T,oBAC/B,gBACV5jU,KAAK6jU,aAAa,SAAUngR,IAE5B1jD,KAAK6jU,aAAa3uC,EAAWvyR,EAAEI,QAAO,EAAM,CAAC,EAAGoE,KAIjD0E,CACX,EAEAg4T,aAAc,SAAS3uC,EAAW/tR,GAC9B,IAEI68T,EAFA/7T,EAAOjI,KACP0yE,EAAWvrE,EAAQurE,SAkFvB,cA/EOvrE,EAAQurE,SAEXvrE,EAAQkpB,KACRlpB,EAAQkpB,GAAKlpB,EAAQkpB,GAAKowO,GAAO5uN,GAEjC1qC,EAAQ0vO,WAAawnF,WACdl3T,EAAQumQ,gBACRvmQ,EAAQmxF,MAGfnxF,EAAQ2vO,WAAaunF,GAChBl3T,EAAQ8iD,aACT9iD,EAAQ8iD,WAAa,CAAC,GAG1B9iD,EAAQ8iD,WAAWvjD,GAAcS,EAAQ25B,KAEzC35B,EAAQ25B,KAAO2/R,IACRt5T,EAAQ25B,OAASl+B,GAAeuE,EAAQ25B,OAAS2/R,KACxDt5T,EAAQ25B,KAriBT,SAsiBC35B,EAAQkwO,SAAU,GAGtBpvO,EAAKk6T,aAAahoR,OAAOhzC,GACzB68T,EAAW/7T,EAAKk6T,aAAat2T,QAAQsqB,KAAKg+M,GAAM6qF,GAAW18R,OAEvDn7B,EAAQmxF,MACR0rO,EAAS7tS,KAAKg+M,GAAM4qF,GAAW3wO,QAAQztF,EAAM4pB,GAAG+tE,KAAKnxF,EAAQmxF,OAG/C,iBAAd48L,GAA+C,WAAdA,IAAgD,IAAtB/tR,EAAQ88T,WACnED,EAAS7tS,KAAKg+M,GAAM4qF,GAAW15S,SAAS+5S,GAEpC1sP,GACAsxP,EAAS7tS,KAAKg+M,GAAM4qF,GAAW15S,SAASq5S,GAGxCv3T,EAAQotD,OACRyvQ,EAASpgT,KAAK,aAAczc,EAAQotD,QAEjCptD,EAAQ+8T,YACf/8T,EAAQ+8T,YAAY5iU,SAASiG,IACzBA,EAAE+lB,SAAWnmB,EAAQmmB,SACrBrlB,EAAK47T,aAAa,KAAMt8T,EAAE,IAEvBJ,EAAQwlT,UACfqX,EAAS33T,SACT23T,EAAW,KAEX78T,EAAQwlT,QAAQrrT,SAASiG,IACrB,IAAI0iD,EAAa1iD,EAAE0iD,WACnB1iD,EAAE+lB,SAAWnmB,EAAQmmB,SACrB/lB,EAAE0iD,WAAatnD,EAAEI,OAAOknD,EAAY9iD,EAAQ8iD,YAE5ChiD,EAAK47T,aAAa,SAAUt8T,EAAE,KAIpB,mBAAd2tR,IACA8uC,EAAS3+S,SAhpBA,cAipBT2+S,EAASpgT,KA7nBD,iBA6nBqB,IAG7BogT,IACA/7T,EAAK07T,eAAex8T,EAAS68T,GAEzB78T,EAAQmmB,WAAagzS,IACrB0D,EAAS3+S,SAASs5S,IAGlBx3T,EAAQ+iB,OAAS/iB,EAAQ4hB,SACzB9gB,EAAKk6T,aAAa34T,KAAKuzE,GAASp4E,IACxBA,EAAEwqC,OAAS60R,EAAS,IACpBhkU,KAAKmkU,kBAAkBx/T,EAAGwC,EAAQ+iB,MAAO/iB,EAAQ4hB,OACrD,KAKLi7S,CACX,EAEAI,gBAAiB,SAASj9T,GACtB,IAGI+sF,EAAOkuO,EAHPn6T,EAAOjI,KACPqkU,EAAgB1hU,EAAE8+T,IAClBvsC,EAAY/tR,EAAQm9T,eAqBxB,OAlBAD,EAAczgT,KAAKld,EAAYS,EAAQ25B,MAEvCozD,EAAQvxF,EAAE,UAAUuJ,SAASvJ,EAAE,WAAW2zT,WAAW,CACjDnkO,OAAQkyO,IACTj2T,KAAK,cAERi2T,EAAcx6S,GAAGqqN,EAAQ,aAAcvvO,IACnCuvF,EAAMnrE,SACNpkB,EAAEwE,gBAAgB,KAGtBi5T,EAAU,IAAIltC,EAAUhhM,EAAMroF,UAEtBrC,KAAKrC,EAAQo9T,WAAY5/T,IAC7BsD,EAAKmC,QAAQ8yC,EAAQ,CAAE71C,OAAQg9T,EAAe37T,MAAO/D,EAAE+D,OAAS/D,IAChEuvF,EAAMxuC,OAAO,IAGV,CAAE2+Q,gBAAejC,UAASluO,QACrC,EAEAwvO,cAAe,SAASv8T,GACpB,IAAI+yH,EAAYv3H,EA9lBL,sCA+lBP6hU,EAAoB7hU,EAhmBJ,4EAkmBpBu3H,EAAU70G,SA5sBD,eA6sBT60G,EAAUt2G,KAAK2qS,EAAMoR,GAEjB3/T,KAAK+hU,eACL7nM,EAAU5nD,aAAatyE,KAAK+hU,gBAE5B7nM,EAAUhuH,SAASlM,KAAK6L,SAG5B7L,KAAK2jU,eAAex8T,EAAS+yH,GAEzB/yH,EAAQkpB,KACRlpB,EAAQkpB,GAAKlpB,EAAQkpB,GAAKowO,GAAO5uN,GAGrC7xC,KAAK2jU,eAAex8T,EAASq9T,GAEzBxkU,KAAKmiU,cACLniU,KAAKmiU,aAAat2T,QAAQsuC,OAAOqqR,EAEzC,EAEAf,WAAY,WACR,IAAIgB,EAAS9hU,EAvnBL,qBAwnBR8hU,EAAOp/S,SAASo5S,GAEZz+T,KAAK+hU,eACL0C,EAAOnyP,aAAatyE,KAAK+hU,gBAEzB0C,EAAOv4T,SAASlM,KAAK6L,QAE7B,EAEAy3T,aAAc,SAASn8T,GACnB,IAEI0E,EAASm4T,EAFT5zT,EAAWjJ,EAAQiJ,SACnBizT,EAAmBl8T,EAAQk8T,iBACRqB,EAAmB/hU,EAAE89T,IA4C5C,OA1CI4C,GAAoBrjU,KAAKmiU,cAAgBh7T,EAAQmmB,WAAa+yS,IAC9DgD,EAAmBn6T,EAAWm6T,GAAoBA,EAAiBl8T,GAAS,GAAKk8T,EACjFrjU,KAAKmiU,aAAahoR,OAAO,CAAC,GAC1B6pR,EAAWhkU,KAAKmiU,aAAat2T,QACxBsqB,KAAKg+M,GAAM6qF,GACX18R,OACAnM,KAAKg+M,GAAM4qF,GACX1uT,KAAKgzT,GACL12T,UAGLyD,GAAYjJ,EAAQmmB,WAAaizS,KAC7BvgU,KAAKmH,QAAQ+6T,oBACb9xT,EAAWzP,EAAMyP,SAASA,IAG9BA,EAAWlH,EAAWkH,GAAYA,EAASjJ,GAAWiJ,GAEtDvE,EAAUlJ,EA5pBC,iEA6pBH0N,KAAKD,GAET4zT,GACAA,EAAS3+S,SAASs5S,IAItB9yT,IACA64T,EAAmB74T,EAAQsqB,KAAKypS,EAAQc,GAAQ3jP,GAChD/8E,KAAK2jU,eAAex8T,EAAS0E,IAG7Bm4T,IACAU,EAAiBl3T,IAAIw2T,EAAS7tS,KAAKypS,EAAQc,GAAQ3jP,IACnD/8E,KAAK2jU,eAAex8T,EAAS68T,KAG5BhkU,KAAKmH,QAAQ86T,eAAiByC,EAAiBl9T,OAAS,IACzDqE,EAAQ+X,KAAKmO,EAAU,GACvBlmB,EAAQwZ,SAAS85S,GACjBuF,EAAiB9gT,KAAKmO,GAAW,IAG9BlmB,CACX,EAEAk4T,gBAAiB,SAAS7uC,EAAW/tR,GACjC,IAEIosB,EAAQ1nB,EAAS84T,EAFjBN,EAAgB1hU,EAAE,YAClBiiU,GAAa,EA8FjB,OA3FwB,IAApBz9T,EAAQ09T,UACR19T,EAAQktB,WA5vBN,WA8vBFltB,EAAQ6nB,MACRq1S,EAAgB1hU,EAAE,YAAcwE,EAAQ6nB,IAAM,OAE9C7nB,EAAQ0vO,WAAahlM,WACd1qC,EAAQumQ,gBACRvmQ,EAAQmxF,MAEfnxF,EAAQ2vO,WAAajlM,EACrBwyR,EAAcvjS,KAAK35B,EAAQ25B,MAE3BujS,EAAczgT,KAAKld,EAAYS,EAAQ25B,MAGtB,gBAAjB35B,EAAQzB,KAER2+T,GADAM,EAAW3kU,KAAKokU,gBAAgBj9T,IACPk9T,cACJ,WAAdnvC,IAAgD,IAAtB/tR,EAAQ88T,UACzC/uC,EAAY,eACL/tR,EAAQ+8T,aACf/8T,EAAQ+kD,MAAQ/kD,EAAQ+8T,mBACjB/8T,EAAQ+8T,YAEX/8T,EAAQ8iD,YAAc9iD,EAAQ8iD,WAAW68P,OACzCud,EAAch/S,SAASle,EAAQ8iD,WAAW68P,OAG9Cud,EAAczgT,KAAKk8S,EAAU34T,EAAQumD,YAC9BvmD,EAAQumD,KACRvmD,EAAQwlT,UACf0X,EAAgB1hU,EAAE,iBAClBiiU,GAAa,EACbz9T,EAAQ+kD,MAAQ/kD,EAAQwlT,eACjBxlT,EAAQwlT,QAEfxlT,EAAQ4kT,eAAgB,EAExB5kT,EAAQ+kD,MAAM5qD,SAAQiG,IACdA,EAAEsvO,WAAahlM,WACRtqC,EAAEmmQ,gBACFnmQ,EAAE+wF,MAGT/wF,EAAEuvO,WAAajlM,IACVtqC,EAAE0iD,aACH1iD,EAAE0iD,WAAa,CAAC,GAGpB1iD,EAAE0iD,WAAWvjD,GAAca,EAAEu5B,YAEtBv5B,EAAEu5B,KACb,KAIJ35B,EAAQkpB,KACRg0S,EAAczgT,KAAK+1L,GAAIxyM,EAAQkpB,WACxBlpB,EAAQkpB,IAGnBlpB,EAAQ6I,KAAOhQ,KAAKmH,QAAQ6I,MAG5BnE,GADA0nB,EAAS,IAAI5yB,EAAM4pB,GAAG2qQ,GAAWvyR,EAAE0hU,GAAgBl9T,IAClCyF,SAAW2mB,EAAO1nB,SAC3BwZ,SAASg8S,GAAsBnsC,IACvCl1R,KAAK2jU,eAAex8T,EAAS0E,GAEzB1E,EAAQ6nB,KACRq1S,EAAcpyS,WAAWs8R,GAGzBqW,GACA/4T,EAAQsqB,KAAKg+M,GAAMq3E,GAASnmS,SAAS85S,GACrCn/T,KAAK4iU,qBAAqB/2T,IAE1B0nB,EAAO1nB,QAAQwZ,SAAS85S,GAGP,gBAAjBh4T,EAAQzB,MAA2C,SAAjByB,EAAQzB,KAC1C1F,KAAK8kU,oBAAoBvxS,GACD,SAAjBpsB,EAAQzB,MACf2+T,EAAch/S,SAr3BN,mBAs3BRrlB,KAAK+kU,WAAWV,EAAel9T,EAAQ69T,YACvCn5T,EAAUw4T,EAAc13T,WAExB4mB,EAAO6uS,QAAUuC,EAASvC,QAC1B7uS,EAAO2gE,MAAQywO,EAASzwO,OAGrBroF,CACX,EAEAw7N,cAAe,WACX,IAAIp/N,EAAOjI,KAEXiI,EAAK4D,QAAQge,GAAG08M,EAAUp6M,EAAIlkB,EAAK28G,SAASp7G,KAAKvB,IAC5C4hB,GAl2BC,UAk2BYsC,EAAIlkB,EAAKg9T,SAASz7T,KAAKvB,IACpC4hB,GAl2BE,WAk2BYsC,EAAIlkB,EAAKi9T,UAAU17T,KAAKvB,GAC/C,EAEA68T,oBAAqB,SAASvxS,GAC1B,IAAItrB,EAAOjI,KAEXuzB,EAAO/pB,KAAK0qO,EAAOjsO,EAAKk9T,SAAS37T,KAAKvB,IACtCsrB,EAAO/pB,KAAK2hT,EAAQljT,EAAKm9T,UAAU57T,KAAKvB,IACxCsrB,EAAO/pB,KAAKuzE,EAAQ90E,EAAKo9T,UAAU77T,KAAKvB,IACxCsrB,EAAO/pB,KAAKqnF,EAAM5oF,EAAKq9T,QAAQ97T,KAAKvB,IACpCsrB,EAAO/pB,KAAKsnF,EAAO7oF,EAAKs9T,SAAS/7T,KAAKvB,IAEtCsrB,EAAO3mB,QAAQupB,KAAKg+M,GAAMq3E,GAASxoT,MAAK,CAACuE,EAAGimB,KACxC,IAAIk8H,EAAM/mJ,EAAE6qB,GAERk8H,EAAIt7I,KAAK,gBACTs7I,EAAIt7I,KAAK,eAAe5E,KAAK0qO,GAAQvvO,IACjCsD,EAAKmC,QAAQ8pO,EAAO,CAAE7jN,GAAI1rB,EAAE0rB,GAAIhpB,OAAQ1C,EAAE0C,OAAQkiB,cAAe5kB,EAAE4kB,eAAiB5kB,EAAEwb,OAAQ,GAEtG,GAER,EAEAqlT,eAAgB,WACZ,IAAIp0T,EAAMoI,SAASxZ,KAAK6L,QAAQI,IAAI,OAAQ,KAAO,EAC/Cw5T,EAAgBr0T,EAMpB,OAJApR,KAAK6L,QAAQ0pC,SAAS,iBAAwBkpR,EAAe,KAAKz7T,MAAK,WACnEyiU,GAAiBt5T,EAAWxJ,EAAE3C,OAAO,GAASoR,CAClD,IAEO/N,KAAK6jE,KAAKu+P,EACrB,EAEA7D,oBAAqB,WACjB,IAAIz6T,EAAUnH,KAAKmH,QACf+kD,EAAQ/kD,EAAQswL,MAAMiuI,SAASrgC,GAASrlS,KAAK2lU,SAAStgC,EAAMl+R,EAAQy+T,eAAgBz+T,EAAQ0+T,gBAIhG,OAFA7lU,KAAKmH,QAAQ+kD,MAAQA,EAEdA,CACX,EAEA+4Q,SAAU,SAAStgU,GACf,IACI8zQ,EADS91Q,EAAEgC,EAAE0C,QACGwF,QAAQsnO,GAAMq3E,GAE9B/yC,EAAOjxQ,OAAS,IAChBxH,KAAK6iU,eAAepqD,GACpBA,EAAOpzP,SAASk6S,GAExB,EAEA2F,UAAW,SAASvgU,GAChB3E,KAAK4M,QAAQupB,KAAKg+M,GAAMq3E,EAAUr3E,GAAMorF,GAAQxyS,YAAYwyS,EAChE,EAEAuD,aAAc,WACV,OAAO9iU,KAAK4M,QAAQupB,KAAKg+M,GAAMgrF,GAC1B5vS,OAAO,YACPA,QAAO,CAAChoB,EAAGimB,IAn5BX,WAo5BOA,EAAGrgB,MAAM+gF,YAMzB,EAEAo0O,SAAU,SAASjc,EAAWyf,GAC1B,IAEIC,EAAapD,EAFbj1Q,EAAMo4Q,GAAY9lU,KAAKqiU,QAAQhc,GAC/B2f,EAAgBrjU,EAAEs9T,GAGtB,OAAKvyQ,GASLq4Q,EAAc,aAAer4Q,EAAM,IAG5B,CACHi1Q,UAHJA,EAAY3iU,KAAK6L,QAAQsqB,KAAK4vS,GAI1BrD,WAAYC,EAAU91T,QAAQsnO,GAAM+qF,EAAgBwB,GAAQvsF,GAAMoqF,GAClErpC,UAAWv0R,EAAM41B,eAAeosS,GAChChc,SAAU3mT,KAAKmiU,aAAeniU,KAAKmiU,aAAat2T,QAAQsqB,KAAK4vS,GAAepjU,EAAE89T,IAC9E8B,iBAAkByD,EAAc7vS,KAAK4vS,KAhB9B,CACHpD,UAAW3iU,KAAK6L,QAAQsqB,KAAKkwR,GAC7Bqc,WAAY//T,EAAE89T,IACd9Z,SAAU3mT,KAAKmiU,aAAeniU,KAAKmiU,aAAat2T,QAAQsqB,KAAKkwR,GAAa1jT,EAAE89T,IAC5E8B,iBAAkB5/T,EAAE89T,IAchC,EAEAwF,gBAAiB,SAAS92R,EAAMkF,GAC5B,IAAI6X,EAAQlsD,KAAK8iU,eACbpqQ,GAAmC,IAAvBxM,EAAM5yC,MAAM61B,GAAe+c,EAAM5yC,MAAM61B,EAAK4rF,eAAiB7uE,EAAM5yC,MAAM61B,GACrF+2R,EAAgBh6Q,EAAMwM,EAAYrkB,GAUtC,OARK6xR,IAEGA,GADe,IAAf7xR,EACgB6X,EAAM5pB,OAEN4pB,EAAMhiD,SAIvBg8T,CACX,EAEA7D,QAAS,SAAShc,GACd,IAAIx6S,EAeJ,OAZAA,EAAU7L,KAAK6L,QAAQsqB,KAAKkwR,IAGf7+S,SACTqE,EAAUlJ,EAAEs9T,GAAsB9pS,KAAKkwR,KAItCx6S,EAAQrE,QAAUxH,KAAKmiU,eACxBt2T,EAAU7L,KAAKmiU,aAAat2T,QAAQsqB,KAAKkwR,IAGxCx6S,EAAQrE,OAGFqE,EAAQuC,KAAKuyT,KAAQ90T,EAAQgB,QAAQsnO,GAAMgrF,GAAc/wT,KAAKuyT,IAF9D,IAIf,EAEAiC,qBAAsB,SAASp1S,GAC3B,IACI24S,EADAxZ,EAAUn/R,EAAG+nB,WAGjBo3Q,EAAQ5/R,YAAY+xS,GAAW/xS,YAAY8xS,IAC3CsH,EAAcxZ,EAAQp9R,OAAO,UAAYovS,EAAe,OAC5Cz0T,QAAQmb,SAASw5S,GAC7BsH,EAAY7jS,OAAOjd,SAASy5S,EAChC,EAEAsH,UAAW,SAASj3R,GAChB,IAAIlnC,EAAOjI,KAGXmvC,EAAK9pB,SAASs5S,GAEV12T,EAAKk6T,eACDhzR,EAAKpiC,SAASwxT,IAAiBpvR,EAAKpiC,SAASyxT,KACzCrvR,EAAKpiC,SAASwxT,IACdpvR,EAAOA,EAAKoG,WAAWvd,GAAG,IACZ5pB,KAAKyyT,IAEV1xR,EAAK/gC,KAAKwyT,KAGhBtY,KAAK97O,KAAKj3B,WAAWvyC,MAAK,CAACuE,EAAGimB,KACjCvlB,EAAKo+T,cAAc1jU,EAAE6qB,GAAI,IAG7BvlB,EAAKo+T,cAAcl3R,IACZA,EAAKpiC,SAASuxT,GACrBnvR,EAAKoG,WAAWvyC,MAAK,CAACuE,EAAGimB,KACrBvlB,EAAKo+T,cAAc1jU,EAAE6qB,GAAI,IAG7BvlB,EAAKo+T,cAAcl3R,GAG/B,EAEAm3R,cAAe,SAASn3R,GACpBnvC,KAAKmiU,aAAat2T,QACbsqB,KAAK,iBAAmBgZ,EAAK/gC,KAAKuyT,IAAO,MACzCt7S,SAASs5S,EAClB,EAEA1oL,OAAQ,WACJ,IAAI9uI,EAAUnH,KAAKmH,QAEnB,IAAK,IAAII,EAAI,EAAGA,EAAIJ,EAAQ+kD,MAAM1kD,OAAQD,IACtCvH,KAAK2mI,KAAKx/H,EAAQ+kD,MAAM3kD,GAEhC,EAEAq9G,SAAU,SAASjgH,GACf,IAAI0C,EAAS1E,EAAEgC,EAAE0C,QACbigC,EAAU3iC,EAAE2iC,QACZi/R,EAAel/T,EAAOwF,QAAQsnO,GAAM+qF,GACpCsH,EAAmBn/T,EAAO4F,GAAGknO,GAAM8qF,GAEvC,IAAKj/T,KAAKmH,QAAQ86T,gBAAkB56T,EAAO4F,GAAG,oBAAsBq6B,IAAYzc,EAAKM,KAAOo7S,EAAa/+T,OAAS,EAG9G,OAFA7C,EAAEy1B,uBACFp6B,KAAKymU,uBAAuBF,GAI3Bl/T,EAAO0F,SAASoyT,MAIhBn/T,KAAKmH,QAAQ86T,eAAiB36R,IAAYzc,EAAKK,OAAS7jB,EAAO0F,SAASmyT,GACzEl/T,KAAK0mU,qBAAqBr/T,GACnBm/T,IAAqB7hU,EAAE0qN,QAAU/nL,IAAYzc,EAAKU,MAAQ+b,IAAYzc,EAAKK,OAASoc,IAAYzc,EAAKa,UAC5G1rB,KAAK2mU,iBAAiBhiU,EAAG2iC,GAClBA,IAAYzc,EAAKY,KACxBzrB,KAAK4mU,eAAev/T,EAAQ1C,GACrB2iC,IAAYzc,EAAKW,IACxBxrB,KAAK6mU,cAAcx/T,EAAQ1C,GACnB3E,KAAKmH,QAAQ86T,eAAkB36R,IAAYzc,EAAKS,OAASgc,IAAYzc,EAAKO,MAClFprB,KAAK8mU,cAAcx/R,EAAS3iC,GAEpC,EAEA+hU,qBAAsB,SAASr/T,GAC3B,IAAI0/T,EAAiB1/T,EAAO8uB,KAAK+pS,EAAkB,SAAW/rF,GAAMmrF,EAAe,KAAOoB,GAAQvsF,GAAMkrF,GAEpG0H,EAAev/T,OAAS,IACxBH,EAAOuc,KAAKmO,GAAW,GAEvBg1S,EAAenjT,KAAKmO,EAAU,GAC9Bg1S,EAAe78T,QAAQE,QAAQo8N,GAEvC,EAEAigG,uBAAwB,SAASF,GAC7B,IAEIhwS,EAFAywS,EAAcT,EAAapwS,KAAK4pS,GAChCgH,EAAiBR,EAAapwS,KAAK+pS,EAAkB,SAAW/rF,GAAMmrF,EAAe,KAAOoB,GAAQvsF,GAAMkrF,GAG9G,GAAI2H,EAAYx/T,OAAS,IACrB+uB,EAAiB51B,EAAM41B,eAAeywS,IAElB,CAChB,GAAIzwS,EAAe4rS,cAAgB5rS,EAAe4rS,aAAan1T,UAC3D,OAEAu5T,EAAa3iT,KAAKmO,EAAU,GAC5Bw0S,EAAan8T,QAAQo8N,GACrB+/F,EAAapwS,KAAK+pS,GAAiBt8S,KAAKmO,GAAW,EAE3D,CAGAg1S,EAAev/T,OAAS,IACxB++T,EAAa3iT,KAAKmO,EAAU,GAC5Bw0S,EAAan8T,QAAQo8N,GACrBugG,EAAenjT,KAAKmO,GAAW,GAEvC,EAEA60S,eAAgB,SAASv/T,EAAQ1C,GAC7B,IAAIunD,EAAQlsD,KAAK8iU,eAEbz7T,EAAO4F,GAAGknO,GAAMkrF,IAAiBh4T,EAAO4F,GAAG2yT,KAI/C5/T,KAAK6iU,eAAe32Q,EAAMhiD,SAC1BgiD,EAAMhiD,QAAQE,QAAQo8N,GACtB7hO,EAAEwE,iBACN,EAEA09T,cAAe,SAASx/T,EAAQ1C,GAC5B,IACI29B,EADA4pB,EAAQlsD,KAAK8iU,eAGbz7T,EAAO4F,GAAGknO,GAAMkrF,IAAiBh4T,EAAO4F,GAAG2yT,KAM1B,KAFrBt9R,EAAO4pB,EAAM5pB,QAEJv2B,UACLu2B,EAAO4pB,EAAMl0B,GAAGk0B,EAAM1kD,OAAS,IAGnCxH,KAAK6iU,eAAevgS,GACpBA,EAAKl4B,QAAQo8N,GACb7hO,EAAEwE,iBACN,EAEA29T,cAAe,SAASx/R,EAAS3iC,GAC7B,IACI2hE,EADAjyB,EAAYr0C,KAAKy6O,QAAU,EAAI,EAG/BnzM,IAAYzc,EAAKO,OACjBipB,IAAa,GAGjBiyB,EAAO3jE,EAAE3C,KAAKimU,gBAAgBthU,EAAE0C,OAAQgtC,IACxCr0C,KAAK6iU,eAAev8P,GACpBA,EAAKl8D,QAAQo8N,GAEb7hO,EAAEwE,gBACN,EAEAw9T,iBAAkB,SAAShiU,EAAG2iC,GACtBA,IAAYzc,EAAKa,UACjB/mB,EAAEwE,iBAGNnJ,KAAKmiU,aAAa5vO,MACtB,EAEA00O,eAAgB,SAASC,EAAat8S,GAClC,MAAO,CACH,aAAcA,EAASs8S,EAAY9kU,MAAQ8kU,EAAYp5T,UACvDqwC,MAASvzB,EAASs8S,EAAY9kU,MAAQ8kU,EAAYp5T,UAClD,eAAgBo5T,EAAYphR,QAC5B,eAAgBohR,EAAY//T,QAC5B,cAAe+/T,EAAYC,OAC3B,gBAAiBD,EAAYp5T,SAC7B,aAAco5T,EAAYx+T,MAC1B,cAAew+T,EAAYE,gBAEnC,EAEAC,cAAe,SAASnyC,EAAWtqQ,GAC/B,IAKIzjB,EALAc,EAAOjI,KACP8jU,EAAmB5uC,EAAU4uC,iBAC7BwD,EAAoBxD,EAAiBl5S,SACrC28S,EAAuBzD,EAAiBt+S,YACxCykC,EAAatnD,EAAEI,OAAO,CAAC,EAAGkF,EAAKg/T,eAAe/xC,EAAWtqQ,GAAWsqQ,EAAUjrO,YAkDlF,OA/CIirO,EAAU0uC,oBACVz8T,EAAU+tR,EAAU/tR,SAAW,CAAC,EAE5B+tR,EAAU4uC,iBAAiBryS,aAC3BtqB,EAAQA,QAAU+tR,EAAU4uC,iBAAiBryS,YAE7CyjQ,EAAU4uC,iBAAiBp7T,QAC3BvB,EAAQmnD,QAAU4mO,EAAU4uC,iBAAiBp7T,OAG7CjI,OAAOoqB,KAAK1jB,GAASK,OAAS,IAC9B0tR,EAAU0uC,kBAAkBz8T,QAAU7D,KAAKyP,UAAU5L,IAGzD+tR,EAAU0uC,kBAAoB37T,EAAK09T,SAASzwC,EAAU0uC,kBAAmBh5S,IAGzE08S,GACA7mU,OAAOoqB,KAAKy8S,GAAmBhmU,SAASwQ,IACpCojR,EAAU4uC,iBAAiBl5S,SAAS9Y,GAAO8Y,EAAS08S,EAAkBx1T,KAASw1T,EAAkBx1T,EAAI,IAIzGy1T,IACAryC,EAAU4uC,iBAAiBt+S,YAAcoF,EAAS28S,IAAyBA,GAG/E9mU,OAAOoqB,KAAKi5S,GAAkBxiU,SAASwQ,IACvB,cAARA,IACAojR,EAAU4uC,iBAAiBA,EAAiBhyT,IAASzQ,IACjD4G,EAAKmC,QAAQ8yC,EAAQ,CAAE71C,OAAQhG,EAAGgG,QAAUhG,EAAGiJ,OAAOuB,SAAU,EAExE,IAGAi4T,EAAiBryS,YAAcqyS,EAAiBryS,WAAWjqB,SAC3D0tR,EAAU4uC,iBAAiBryS,WAAaqyS,EAAiBryS,WAAW5W,KAAItT,IAChEA,EAAEnF,MAAQwoB,EAASrjB,EAAEnF,QACrBmF,EAAEu5B,KAAOlW,EAASrjB,EAAEnF,OAGjBmF,MAIf2tR,EAAUjrO,WAAaA,EAEhBirO,CACX,EAEAywC,SAAU,SAAStgC,EAAMz6Q,EAAUi7S,GAC/B,IAEmBqB,EAAaj9Q,EAF5BhiD,EAAOjI,KAIX,OAHckD,MAAMD,QAAQoiS,GAIjB,CACH3/R,KAAM,cACNinT,QAAStnB,EAAKxqR,KAAI1V,GAAK8C,EAAK09T,SAASxgU,EAAGylB,EAAUi7S,OAK1DxgC,EADgB1iS,EAAEgF,cAAc09R,IAAsC,IAA7B5kS,OAAOoqB,KAAKw6Q,GAAM79R,QAAgB69R,EAAKjjS,KACzDijS,EAAKjjS,KAAOijS,EACnC6hC,EAAcvkU,EAAEgF,cAAc09R,GAAQA,EAAO1iS,EAAEI,OAAO,CAAC,EAAG8iU,EAAaxgC,IAEvEp7O,EAAatnD,EAAEI,OAAO,CAAC,EAAGkF,EAAKg/T,eAAeC,EAAat8S,GAAWs8S,EAAYj9Q,YAElFtpD,EAAM6H,WAAW0+T,EAAa,CAC1BpmS,KAAMlW,EAASs8S,EAAY9kU,MAAQ8kU,EAAYp5T,UAC/Cm8C,WAAYA,IAGS,cAArBi9Q,EAAYxhU,KACRwhU,EAAYh7Q,MACLg7Q,EAAYh7Q,MAAMrxC,KAAI1V,GAAK8C,EAAKo/T,cAAcliU,EAAGylB,KAEjD3iB,EAAKo/T,cAAcH,EAAat8S,IAEf,gBAArBs8S,EAAYxhU,aACZwhU,EAAYj9Q,WAAWvjD,GAC9BwgU,EAAYva,QAAUua,EAAYva,QAAQ9xS,KAAI1V,GAAK8C,EAAK09T,SAASxgU,EAAGylB,EAAUi7S,MAClD,gBAArBqB,EAAYxhU,aACZwhU,EAAYj9Q,WAAWvjD,GAC9BwgU,EAAYhD,YAAcgD,EAAYhD,YAAYwB,SAAQvgU,GAAK8C,EAAK09T,SAASxgU,EAAGylB,EAAUi7S,MAC9D,gBAArBqB,EAAYxhU,MAA0BwhU,EAAYtD,oBACzDsD,EAAYtD,kBAAoB37T,EAAK09T,SAASuB,EAAYtD,kBAAmBh5S,WAG1Es8S,EAAY9kU,KAEZ8kU,GACX,EAEAM,gBAAiB,SAAS7iU,GACtB,IAII8iU,EAAcC,EAJdv4R,EAAOxsC,EAAEgC,EAAEwqC,MACX9e,EAAK8e,EAAKvrB,KAAK+1L,IACfsqH,EAAY90R,EAAKhZ,KAAKg+M,GAAMirF,GAC5Bl3O,EAAY/4C,EAAK/gC,KAAKyxT,GAGtBxvS,GAAMA,EAAG1a,QAAQ8qP,GAAO5uN,IAAa,IACrCxhB,EAAKA,EAAG5tB,QAAQg+P,GAAO5uN,EAAU4uR,KAGjCwD,EAAUz8T,QACN0gF,GACAloF,KAAKmiU,aAAat2T,QAAQsqB,KAAK,eAAiB+xD,EAAY,KAAKllF,MAAK,CAACuE,EAAGimB,KACtE,IAAIxZ,EAAUrR,EAAE6qB,GAEhBxZ,EAAQ4P,KAAK67S,GAAc,GAC3BzrT,EAAQmiB,KAAKg+M,GAAMirF,GAAkBryS,YAAY2xS,EAAe,IAIxE+I,IAAev/O,IAAoB+7O,EAAUl3T,SAAS2xT,GAEtDuF,EAAUr7S,YAAY81S,EAAgB+I,GACtCt4R,EAAKvrB,KAAK67S,EAAcgI,IAExBC,EAAO1nU,KAAK6L,QAAQsqB,KAAK,aAAegZ,EAAK/gC,KAAKuyT,IAAO,MAEhDn5T,SACDkgU,EAAK76T,QAAQsnO,GAAMmqF,GAAc92T,OACzBkgU,EAAK76T,QAAQsnO,GAAMmqF,GAAclwT,KAAK2yT,IACxCx6R,OAAOmhS,IAETx/O,GACAloF,KAAK6L,QAAQsqB,KAAK,eAAiB+xD,EAAY,KAAKllF,MAAK,CAACuE,EAAGimB,KACzD7qB,EAAE6qB,GAAIpf,KAAK0yT,IAAiB/3S,QAAO,EAAM,IAIjD2+S,EAAKt5T,KAAK0yT,IAAiB/3S,QAAO,KAI1C/oB,KAAKoK,QAAQ+gT,EAAQ,CACjB96R,GAAI8e,EAAKvrB,KAAK+1L,IACdtyM,OAAQ8nC,EACRqjC,QAASi1P,KAGbznU,KAAKoK,QAAQ8pO,EAAO,CAChB7jN,GAAIA,EACJhpB,OAAQ8nC,GAGpB,EAEAg2R,SAAU,SAASxgU,GACf,IAAI6oB,EAAK7oB,EAAE0C,OACP48T,EAAYz2S,EAAGzgB,SAAS,2BACxBwnD,EAAQ/mC,EAAGpf,KAAKyxT,GAEfoE,GACDjkU,KAAKoK,QAAQ8pO,EAAO,CAAE7jN,GAAI1rB,EAAE0rB,GAAIhpB,OAAQ1C,EAAE0C,OAAQkiB,cAAe5kB,EAAE4kB,eAAiB5kB,EAAEwb,QAGtFo0C,GAASv0D,KAAK6L,QAAQsqB,KAAK,eAAiBo+B,EAAQ,KAAK/sD,OAAS,GAC9DgmB,EAAGzgB,SAAS2xT,IACZ/5T,EAAEwE,gBAGd,EAEAo8T,SAAU,SAAS5gU,GACX3E,KAAKoK,QAAQ0mF,EAAO,CAAEv9D,OAAQ5uB,EAAE2F,UAChC3F,EAAEwE,gBAEV,EAEAg7T,kBAAmB,SAASx/T,EAAGulB,EAAOnB,GAClC,IAAIomB,EAAOxsC,EAAEgC,EAAEwqC,MACX80R,EAAY90R,EAAKhZ,KAAKg+M,GAAMirF,GAAkB53T,OAAS,EACvD6oB,EAAK8e,EAAKvrB,KAAK+1L,IAEftpL,GAAMA,EAAG1a,QAAQ8qP,GAAO5uN,IAAa,IACrCxhB,EAAKA,EAAG5tB,QAAQg+P,GAAO5uN,EAAU4uR,KAGjCv2S,GACAA,EAAM1gB,KAAKxJ,KAAXkqB,CAAiB,CACb/J,MAAOxb,EAAEwb,MACTkQ,GAAIA,EACJhpB,OAAQ8nC,IAIZ80R,GAAal7S,GACbmQ,YAAW,KACPnQ,EAAOvf,KAAKxJ,KAAZ+oB,CAAkB,CACd5I,MAAOxb,EAAEwb,MACTkQ,GAAIA,EACJhpB,OAAQ8nC,EACRqjC,QAASrjC,EAAKhZ,KAAKg+M,GAAMuqF,GAAgBl3T,OAAS,GACpD,GAGd,EAEA89T,QAAS,SAAS3gU,GACV3E,KAAKoK,QAAQymF,EAAM,CAAEt9D,OAAQ5uB,EAAE2F,UAC/B3F,EAAEwE,gBAEV,EAEAk8T,UAAW,SAAS1gU,GAChB,IAAIgjU,EAAS3nU,KAAKmiU,aAAeniU,KAAKmiU,aAAat2T,QAAUlJ,EAAE89T,IAE/D97T,EAAE2F,OAAOuB,QAAQ0pC,WAAWvyC,MAAK,CAACuE,EAAGimB,KACjC,IAAIxZ,EAAUrR,EAAE6qB,GACZkgC,EAAM15C,EAAQ5F,KAAKuyT,IACnBjuP,EAAW1+D,EAAQjH,SAAS2xT,GAEhCiJ,EACKxxS,KAAK,aAAeu3B,EAAM,KAC1B9pC,KAAK67S,EAAc/sP,GACnBv8C,KAAKg+M,GAAMirF,GACXx2S,YAAY81S,EAAgBhsP,EAAS,IAG9C1yE,KAAKoK,QAAQ+gT,EAAQ,CACjB96R,GAAI1rB,EAAE0C,OAAOuc,KAAK+1L,IAClBtyM,OAAQ1C,EAAE0C,OACVmrE,QAAS7tE,EAAE0C,OAAO0F,SAAS2xT,IAEnC,EAEA0G,UAAW,SAASzgU,GAChB,IAGIijU,EAHA3/T,EAAOjI,KACPwtB,EAAK7oB,EAAE0C,OACPktD,EAAQ/mC,EAAGpf,KAAKyxT,GAIhB53T,EAAKk6T,eACLyF,EAAe3/T,EAAKk6T,aAAat2T,QAAQsqB,KAAK,aAAe3I,EAAG5J,KAAKk8S,GAAY,KACjE73T,EAAKk6T,aAAat2T,QAAQsqB,KAAK,eAAiBo+B,EAAQ,KAE1D3wC,KAAK67S,GAAc,GAAOtpS,KAAKg+M,GAAMirF,GAAkBryS,YAAY2xS,GACjFkJ,EAAahkT,KAAK67S,GAAc,GAAMtpS,KAAKg+M,GAAMirF,GAAkB/5S,SAASq5S,IAG5EnqQ,GACAtsD,EAAK4D,QAAQsqB,KAAK,eAAiBo+B,EAAQ,KAAKvxD,MAAK,CAACuE,EAAG4nC,KACjDA,IAAS3hB,EAAG,IACZ7qB,EAAEwsC,GAAM/gC,KAAK0yT,IAAiB/3S,QAAO,EACzC,IAIR/oB,KAAKoK,QAAQ+gT,EAAQ,CAAE96R,GAAI1rB,EAAE0rB,GAAIhpB,OAAQ1C,EAAE0C,OAAQmrE,QAAS7tE,EAAE6tE,QAASjpD,cAAe5kB,EAAE4kB,eAAiB5kB,EAAEwb,OAC/G,EAEA,aAAA0nT,CAAc37Q,EAAO47Q,GAGjB,IAFA,IAAgB9zT,EAEPzM,EAAI,EAAGA,EAAI2kD,EAAM1kD,OAAQD,KAC9ByM,EAAUk4C,EAAM3kD,IACK0iD,aAGjBiC,EAAM3kD,GAAG0iD,WAAa,CAAC,GAG3BiC,EAAM3kD,GAAG0iD,WAAW61Q,GAAYn/T,EAAMwvB,OACtC+7B,EAAM3kD,GAAG0iD,WAx6CA,kBAw6C6B69Q,EAElC9zT,EAAQqc,KACR67B,EAAM3kD,GAAG0iD,WAAW0vJ,IAAMztJ,EAAM3kD,GAAG8oB,IAGnCrc,EAAQ4gO,SACH1oL,EAAM3kD,GAAG0iD,WAAW68P,QACrB56P,EAAM3kD,GAAG0iD,WAAW68P,MAAQ2Z,IAGhCv0Q,EAAM3kD,GAAG0iD,WAAW68P,OAAUxzS,GAAQqrT,EAAerrT,GAAQsrT,GAIrE,OAAO1yQ,CACX,EAEAk3Q,gBAAiB,SAASj8T,GACtB,IAGI+gF,EAHA93E,EAAWjJ,EAAQiJ,SACnBizT,EAAmBl8T,EAAQk8T,iBAC3B31Q,EAAM/sD,EAAMwvB,OAoChB,OAjCAxtB,EAAEI,OAAOoE,EAAS,CACdumD,IAAKA,EACLq6Q,QAAS/nU,KAAK0tD,MAGdvmD,EAAQ+8T,YACR/8T,EAAQ+8T,YAAclkU,KAAK6nU,cAAc1gU,EAAQ+8T,YAAax2Q,GACvDvmD,EAAQwlT,SAAWxlT,EAAQwlT,QAAQnlT,SAC1CL,EAAQwlT,QAAU3sT,KAAK6nU,cAAc1gU,EAAQwlT,QAASj/P,GAElDvmD,EAAQwlT,QAAQjgQ,OAAMzwC,GAAKA,EAAEgoT,aAC7B/7O,EAAY/gF,EAAQwlT,QAAQ,GAAGp4P,QAEZptD,EAAQwlT,QAAQjgQ,OAAMzwC,GAAKA,EAAEs4C,QAAU2zB,IACtD/gF,EAAQ++B,UA5+Cf,SA8+CO/+B,EAAQ++B,UA7+Cb,WAg/CC/+B,EAAQ++B,UA/+Cb,QAm/CE91B,IAAaizT,GAAqBl8T,EAAQzB,OAASg6T,EACpDv4T,EAAQmmB,SAAW+yS,EACXl5T,EAAQmmB,WAChBnmB,EAAQmmB,SAAWgzS,IAGnBn5T,EAAQghB,SAAWvlB,IACnBuE,EAAQ2gB,QAAU3gB,EAAQghB,QAGvBhhB,CACX,EAEA6gU,gBAAiB,WACb,IAAI//T,EAAOjI,KAEPioU,EADQhgU,EAAKwyO,OACiB,OAAS,QAE3CxyO,EAAK85T,eAAiBp/T,EAAE,gFACxBsF,EAAK4D,QAAQsuC,OAAOlyC,EAAK85T,gBACzB95T,EAAK85T,eAAemG,YAAY,CAC5B5vO,KAAM,gBACN7kE,SAAU,OACVzjB,KAAM/H,EAAKd,QAAQ6I,OAGlB/H,EAAKd,QAAQ86T,eACdh6T,EAAK85T,eAAen+S,KAAKmO,GAAW,GAGxC9pB,EAAKk6T,aAAe,IAAIxhU,EAAM4pB,GAAGsyS,YAAYl6T,EAAE,QAAS,CACpDqN,KAAM/H,EAAKd,QAAQ6I,KACnB20G,OAAQ,YACR3rE,OAAQ,UAAYivR,EACpB36T,SAAU,OAAS26T,EACnBjL,eAAe,EACf31T,OAAQY,EAAK85T,eACbxvO,KAAM,SAAS5tF,GACPsD,EAAKmC,QAAQ+1T,IACbx7T,EAAEwE,gBAEV,EACAu8C,MAAO,SAAS/gD,GACRsD,EAAKmC,QAAQg2T,GACbz7T,EAAEwE,kBAEFlB,EAAK46T,eAAe56T,EAAK85T,gBACzB95T,EAAK85T,eAAe33T,QAAQo8N,GAEpC,IAGJv+N,EAAKk6T,aAAat2T,QAAQ+X,KAAK48S,GAAgBxgU,KAAK0tD,KAEpDx0B,YAAW,KACPjxB,EAAKk6T,aAAa34T,KAAKuzE,EAAQ90E,EAAKu/T,gBAAgBh+T,KAAKvB,GAAM,GAEvE,EAEA88T,WAAY,SAASl5T,EAASm5T,GAC1B,IACImD,EACA5iT,EAFAtd,EAAOjI,KAIX6L,EAAQgB,QAAQ,yBAAyBspB,KAAK,SAAS9pB,SACvD87T,EAAgBt8T,EAAQ8gB,KAAK,6CAA6ChgB,SAE1E4Y,EAAQ5iB,EAAE,iDAAmDqiU,EAAa,OACrEphT,KAAK,eAAe,GACpBja,IAAI,UAAWhF,IACZsD,EAAKmC,QAAQ8yC,EAAQ,CACjB71C,OAAQwE,EACRnD,MAAO/D,EAAE0C,OAAO+gU,MAAM,KAG1BngU,EAAK88T,WAAWl5T,EAASm5T,EAAW,IAEvC94T,SAASi8T,GAEdt8T,EAAQutB,IAAImtM,GAAS18M,GAAG08M,GAAU5hO,IAC1BA,EAAE2iC,UAAY3mC,EAAMkqB,KAAKK,OACzB3F,EAAMnb,QAAQ8pO,EAClB,GAER,EAEA2uF,eAAgB,SAASwF,IACc,IAA/BroU,KAAKmH,QAAQ86T,gBACbjiU,KAAK4M,QAAQupB,KAAK+pS,GAAiBt8S,KAAKmO,GAAW,GACnDs2S,EAAQzkT,KAAKmO,EAAU,GAE/B,EAEA27Q,WAAY,WACR,IAAIzlS,EAAOjI,KACP6L,EAAU5D,EAAK4D,QAEnB5D,EAAK+/T,kBACLn8T,EAAQwZ,SAxmDQ,uBA0mDhBpd,EAAKgtO,eAAiBt0O,EAAMs4B,UAAS,WACjChxB,EAAKkiB,QACT,GACJ,EAEAuI,QAAS,SAAS/tB,GACd,IAAI2jU,EAAiB3jU,EAAEoH,MACnBa,EAAU5M,KAAK6L,QACf08T,EAAmB37T,EAAQupB,KAAK,6BAA6B3oB,IAAIZ,EAAQupB,KAAK,iCAE7En2B,KAAKmH,QAAQw6T,YAIlB3hU,KAAKmiU,aAAaz8Q,QAEd6iR,EAAiB/gU,OAAS,GAC1B+gU,EAAiBvlU,MAAK,CAACuE,EAAGimB,KACtB7sB,EAAM41B,eAAe5zB,EAAE6qB,IAAKk4B,OAAO,IAI3C1lD,KAAK8hU,QAAQwG,GACbtoU,KAAK2rR,SAAS28C,GACdtoU,KAAKgiU,wBACT,EAEAF,QAAS,SAASwG,GACd,IAAIE,EACAC,EACA9uT,EAEJ,GAAI2uT,EAAiBtoU,KAAKwlU,iBAGtB,IAAK,IAAIj+T,GAFTkhU,EAAkBzoU,KAAK6L,QAAQ0pC,SAAS,0CAA4C0pR,EAAkB,MAEzEz3T,OAAS,EAAGD,GAAK,IAC1CihU,EAAiBC,EAAgBzwS,GAAGzwB,KAEhC+gU,EAAiBtoU,KAAKwlU,mBAHmBj+T,KAMzCoS,EAAgB6uT,EAAeryS,KAAK,iBAAmBqyS,EAAev7T,GAAG,gBAAkBu7T,EAAiB7lU,EAAE89T,KAE5Fj5T,OAAS,IACvBmS,EAAciK,KAAKmO,GAAW,GAC9B/xB,KAAK6L,QAAQ0pC,SAAS4+L,GAAM8qF,GAAiBr7S,KAAKmO,EAAU,IAGhE/xB,KAAKomU,UAAUoC,EAI/B,EAEA1wF,UAAW,SAAS3oM,EAAMm5R,GACtB,IAAIrgU,EAAOjI,KACPoR,EAAMoI,SAASxZ,KAAK6L,QAAQI,IAAI,OAAQ,KAAO,EAGnDkjC,EAAKpiB,YAAY4xS,GACjB,IAAI+J,EAAiBv8T,EAAWgjC,GAAM,GAAQ/9B,EAG9C,OAFA+9B,EAAK9pB,SAASs5S,MAEVxvR,EAAK3nC,UAAW2nC,EAAKpiC,SAAS0xT,IAAiB6J,EAAiBtoU,KAAKwlU,iBAAmBkD,MACxFv5R,EAAKpiB,YAAY4xS,IAEkB,IAA/B3+T,KAAKmH,QAAQ86T,cACb9yR,EAAKhZ,KAAK+pS,GAAiBt8S,KAAKmO,GAAW,GAEvCod,EAAKliC,GAAG,kBACRkiC,EAAKld,WAAWF,GAIpB/xB,KAAKmiU,eACDhzR,EAAKpiC,SAASwxT,IAAiBpvR,EAAKpiC,SAASyxT,KACzCrvR,EAAKpiC,SAASwxT,IACdpvR,EAAOA,EAAKoG,WAAWvd,GAAG,IACZ5pB,KAAKyyT,IAEV1xR,EAAK/gC,KAAKwyT,KAGhBtY,KAAK97O,KAAKj3B,WAAWvyC,MAAK,CAACuE,EAAGimB,KACjCvlB,EAAKq+T,cAAc3jU,EAAE6qB,GAAI,IAG7BvlB,EAAKq+T,cAAcn3R,IACZA,EAAKpiC,SAASuxT,GACrBnvR,EAAKoG,WAAWvyC,MAAK,CAACuE,EAAGimB,KACrBvlB,EAAKq+T,cAAc3jU,EAAE6qB,GAAI,IAG7BvlB,EAAKq+T,cAAcn3R,KAIpB,EAIf,EAEAk3R,cAAe,SAASl3R,GACpB,IAAIw3Q,EAAW3mT,KAAKmiU,aAAat2T,QAAQsqB,KAAK,iBAAmBgZ,EAAK/gC,KAAKuyT,IAAO,MAE7Eha,EAAS55S,SAAS6xT,IACnBjY,EAAS55R,YAAY4xS,EAE7B,EAEAhzC,SAAU,SAAS28C,GACf,IACIE,EACAG,EAFA5G,EAAiB/hU,KAAK6L,QAAQ0pC,SAAS4+L,GAAM8qF,GAIjD,GAAIqJ,EAAiBtoU,KAAKwlU,iBAAkB,CACxCmD,EAAiB3oU,KAAK6L,QAAQ0pC,SAAS4+L,GAAMwqF,EAAe,QAAUxqF,GAAMyqF,EAAe,KAE3F,IAAK,IAAIr3T,EAAI,EAAGA,EAAIohU,EAAenhU,SAC/BghU,EAAiBG,EAAe3wS,GAAGzwB,KAE/B+gU,EAAiBtoU,KAAKwlU,mBAAqBxlU,KAAK83O,UAAU0wF,EAAgBF,IAHvC/gU,KAO/C,EAEKvH,KAAKmH,QAAQ86T,eAAiBF,EAAe90T,GAAG,kBACjD80T,EAAen+S,KAAKmO,GAAW,GAC/B/xB,KAAK6iU,eAAe7iU,KAAK8iU,eAAe54T,SAEhD,EAEA23T,UAAW,WACP,IAAIpV,EAAiBzsT,KAAK4M,QAAQupB,KAAK+pS,EAAkB,SAAWV,EAAmB,MACnFoJ,EAAiBnc,EAAeviT,SAED,IAA/BlK,KAAKmH,QAAQ86T,eACbxV,EAAe7oS,KAAKmO,GAAW,GAC/B62S,EAAehlT,KAAKmO,EAAU,IAE9B/xB,KAAK4M,QAAQupB,KAAK,kCAAkClE,WAAWF,EAEvE,EAEAiwS,sBAAuB,WAGEhiU,KAAKmiU,aAAat2T,QAAQ0pC,SAAS,SAAWopR,EAAX,eAA+Cn3T,OAAS,EAG5GxH,KAAK+hU,eAAeh1S,YAAY4xS,GAEhC3+T,KAAK+hU,eAAe18S,SAASs5S,EAErC,IAGJh+T,EAAMqgU,QAAU,CACZ6H,KAAMloU,EAAMiH,MACZkhU,eAAgBnoU,EAAMiH,MACtBmhU,aAAcpoU,EAAMiH,MACpBohU,cAAeroU,EAAMiH,MACrBqhU,kBAAmB,IAAM,MAG7BtoU,EAAMwyB,cAAcoY,eAAe,UAAW,cAE9C5qC,EAAM4pB,GAAG2M,OAAOwqS,GACnB,CAvyDD,CAuyDG5gU,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACf4pB,EAAK5pB,EAAM4pB,GACX6G,EAAS7G,EAAG6G,OACZ8rB,EAAS,SACTsqQ,EAAW,WACXp4O,EAAU,UAEV85P,EAAkB93S,EAAOruB,OAAO,CAChCoF,KAAM,SAAS0D,EAAS1E,GACpB,IAAIc,EAAOjI,KAEXoxB,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GAEnCc,EAAKmxE,WAELnxE,EAAKkhU,gBAELlhU,EAAKo/N,gBAEL1mO,EAAMi0B,OAAO3sB,EAAMtH,EAAM4pB,GAC7B,EAEAlgB,OAAQ,CACJ6yC,GAGJ/1C,QAAS,CACL/E,KAAM,mBAGVyvF,GAAI,wBACJu3O,aAAczmU,EAAEQ,KAEhB6vE,MAAO,SAASR,GACZ,IAAIvqE,EAAOjI,KACP6L,EAAU5D,EAAK4D,QAAQ,GAE3B,GAtCZ,YAsCgB2mE,EACA,OAAO3mE,EAAQ2mE,QAGf3mE,EAAQ2mE,UAAYA,IACpBvqE,EAAKd,QAAQqrE,QAAU3mE,EAAQ2mE,QAAUA,GAGzCA,EACAvqE,EAAK4D,QAAQ+X,KAAKwrD,EAASA,GAE3BnnE,EAAK4D,QAAQgkB,KAAKu/C,GAAS,EAEnC,EAEAptE,QAAS,WACLovB,EAAOrpB,GAAG/F,QAAQuI,KAAKvK,MACvBA,KAAK4M,QAAQwsB,IAAIp5B,KAAK6xF,GAC1B,EAEA1pE,OAAQ,SAASA,GACb,IAAItc,EAAU7L,KAAK6L,aAEE,IAAVsc,IACPA,GAAS,GAGbnoB,KAAKmH,QAAQ2gB,QAAUK,EAEnBA,EACAtc,EAAQgkB,KAAK23R,GAAU,GAEvB37S,EAAQ+X,KAAK4jS,EAAUA,EAE/B,EAEAz+R,OAAQ,WACO/oB,KAENgzE,OAFMhzE,KAEM6L,QAAQ,GAAG2mE,QAChC,EAEA60J,cAAe,WACXrnO,KAAK6L,QAAQge,GAAGqzB,EAASl9C,KAAK6xF,GAAI7xF,KAAKu/D,QAAQ/1D,KAAKxJ,MACxD,EAEAu/D,QAAS,WACL,IAAIiT,EAAUxyE,KAAK6L,QAAQ,GAAG2mE,QAE9BxyE,KAAKoK,QAAQ8yC,EAAQ,CAAEs1B,QAASA,GACpC,EAEA22P,cAAe,WACX,IAAIlhU,EAAOjI,KACP6L,EAAU5D,EAAK4D,QAAQ,GACvB1E,EAAUc,EAAKd,QAEK,OAApBA,EAAQqrE,UACRrrE,EAAQqrE,QAAU3mE,EAAQ2mE,SAG9BvqE,EAAK+qE,MAAM7rE,EAAQqrE,SAEnBrrE,EAAQ2gB,QAAU3gB,EAAQ2gB,UAAY7f,EAAK4D,QAAQ+X,KAAK4jS,GACxDv/S,EAAKkgB,OAAOhhB,EAAQ2gB,QACxB,EAEAsxD,SAAU,WACN,IAAInxE,EAAOjI,KACPmH,EAAUc,EAAKd,SAInBkiU,EAHkBphU,EAAKmhU,cAGXnhU,EAAK4D,QAASlJ,EAAEI,OAAO,CAAC,EAAGoE,IACvCc,EAAK4D,QAAQkhB,YAAY,0BAEzB9kB,EAAK2E,QAAU3E,EAAK4D,QAAQ8gB,KAAK,gBAAgBxlB,EAAQmiU,yBAAyB38T,QACtF,EAEAulB,WAAY,SAAS/qB,GACjBnH,KAAKmyB,iBAAiBhrB,EAASnH,KAAK6L,SACpC7L,KAAKoyB,WAAWjrB,GAChBxE,EAAEI,OAAO/C,KAAKmH,QAASA,GACvBnH,KAAKqyB,iBAAiBryB,KAAK6L,QAC/B,IAGJ0e,EAAG2M,OAAOgyS,EACb,CA9HD,CA8HGpoU,OAAOH,MAAM+G,QACF/G,OAWd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfu2F,EAAWv2F,EAAM0P,KAAK6mF,SAoBtBqyO,EAAYryO,EAASn0F,OAAO,CAC5BoF,KAAM,SAAS0D,EAAS1E,GACpB,IAAIc,EAAOjI,KACXk3F,EAASnvF,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GACrCc,EAAKmxE,WACLnxE,EAAKmvF,aACT,EACAjwF,QAAS,CACLmtB,MAAO,KACPk1S,cAAe,QACf51S,QAAS,KACTyjN,SAAS,GAEbj+J,SAAU,WACN,IAAInxE,EAAOjI,KACP6L,EAAU5D,EAAK4D,QAAQ,GACvB1E,EAAUc,EAAKd,QACfypF,EAAY/kF,EAAQwkB,GAExBpoB,EAAK2E,QAAU3E,EAAK4D,QACfwZ,SAASle,EAAQsiU,YACjB55S,KAAK,OAAQ1oB,EAAQzB,OAErBkrF,GAAezpF,EAAQmtB,QACxBzoB,EAAQwkB,GAAKugE,EAAYjwF,EAAMwvB,QAG7BhpB,EAAQmtB,QACVrsB,EAAKyhU,QAAU/mU,EAAE,eAAiBiuF,EAAY,YAAczpF,EAAQwiU,WAAa,MAE7ExiU,EAAQkwO,QACRpvO,EAAKyhU,QAAQ5oS,KAAK35B,EAAQmtB,OAE1BrsB,EAAKyhU,QAAQr5T,KAAKlJ,EAAQmtB,OAG1BntB,EAAQysB,SACR3rB,EAAKyhU,QAAQ9lT,KAAK,KAAMzc,EAAQysB,SAGhCzsB,EAAQs5C,UACRx4C,EAAKyhU,QAAQvvR,OAAO,gBAAkBhzC,EAAQyiU,cAAgB,KAAOziU,EAAQ0iU,aAAe,WAGhG5hU,EAAK4D,QAAQ1E,EAAQqiU,eAAevhU,EAAKyhU,SAEjD,EACAr5T,KAAM,WACF,IAAIpI,EAAOjI,KACPo6E,EAAuC,UAA/BnyE,EAAKd,QAAQqiU,cACrBM,EAAc5yO,EAASnvF,GAAGsI,KAAK9F,KAAKtC,GAExC,OAAKA,EAAKyhU,QAINtvP,EACO0vP,EAAc7hU,EAAKyhU,QAAQ,GAAGpyO,UAGlCrvF,EAAKyhU,QAAQ,GAAGpyO,UAAYwyO,EAPxBA,CAQf,IAGAC,EAAeR,EAAUxmU,OAAO,CAChCoF,KAAM,SAAS0D,EAAS1E,GAEpBoiU,EAAUxhU,GAAGI,KAAKoC,KADPvK,KACkB6L,EAAS1E,GAD3BnH,KAENo3F,aACT,EACAjwF,QAAS,CACL/E,KAAM,eACNqnU,WAAY,aACZE,WAAY,mBACZC,cAAe,mBACfC,aAAc,aACdnkU,KAAM,WACNwT,QAAS,SACTlJ,KAAM,SACNmnF,eAAgB,CAAE,OAAQ,cAI9B6yO,EAAkBT,EAAUxmU,OAAO,CACnCoF,KAAM,SAAS0D,EAAS1E,GAEpBoiU,EAAUxhU,GAAGI,KAAKoC,KADPvK,KACkB6L,EAAS1E,GAD3BnH,KAENo3F,aACT,EACAjwF,QAAS,CACL/E,KAAM,kBACNqnU,WAAY,UACZE,WAAY,gBACZC,cAAe,mBACfC,aAAc,aACdnkU,KAAM,QACNsK,KAAM,SACNmnF,eAAgB,CAAE,WAI1Bx0F,EAAEI,OAAOpC,EAAM0P,KAAM,CACjB45T,eAxHiB,SAASp+T,EAAS1E,GAMnC,OALIG,UAAU,KAAO1E,GAAeD,EAAEgF,cAAcL,UAAU,OAC1DH,EAAU0E,EACVA,EAAUlJ,EAAE,cAGT,IAAKonU,EAAal+T,EAAS1E,GAAUkJ,MAChD,EAkHI65T,kBAhHoB,SAASr+T,EAAS1E,GAMtC,OALIG,UAAU,KAAO1E,GAAeD,EAAEgF,cAAcL,UAAU,OAC1DH,EAAU0E,EACVA,EAAUlJ,EAAE,cAGT,IAAKqnU,EAAgBn+T,EAAS1E,GAAUkJ,MACnD,EA0GIk5T,UAAWA,EACXQ,aAAcA,EACdC,gBAAiBA,IAGrBrpU,EAAMwyB,cAAcoY,eAAe,eAAgB,eAEnD5qC,EAAMwyB,cAAc2X,eAAe,eAAgB,CAAC,CAChDjb,KAAM,UACNxW,OAAQ1Y,EAAMwyB,cAAcgX,cAAc/rB,OAAO,CAAC,CAAC,OAAQ,aAG/Dzd,EAAMwyB,cAAcoY,eAAe,kBAAmB,WAEzD,CA5ID,CA4IGzqC,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACf4pB,EAAK5pB,EAAM4pB,GAGX4/S,EAFkB5/S,EAAG2+S,gBAEMnmU,OAAO,CAClCoE,QAAS,CACL/E,KAAM,WACNowE,QAAS,KACT1qD,SAAS,EACTuvN,SAAS,EACT/iN,MAAO,KACPpb,QAAS,SACTlJ,KAAM,SACNs5T,aAAc,mBAGlBF,aAAczoU,EAAM0P,KAAK45T,eACzBp4O,GAAI,iBAGJnpF,MAAO,SAASA,GAKZ,MAJqB,iBAAVA,IACPA,EAAmB,SAAVA,GAGN1I,KAAKgzE,MAAM5qE,MAAMpI,KAAM,CAAC0I,GACnC,IAGJ/H,EAAMwyB,cAAcoY,eAAe,WAAY,eAE/C5qC,EAAMwyB,cAAc2X,eAAe,WAAY,CAAC,CAC5Cjb,KAAM,UACNxW,OAAQ1Y,EAAMwyB,cAAcgX,cAAc/rB,OAAO,CAAC,CAAC,OAAQ,aAG/DmM,EAAG2M,OAAOizS,EACb,CAtCD,CAsCGrpU,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfywB,EAASzwB,EAAM4pB,GAAG6G,OAClB7G,EAAK5pB,EAAM4pB,GACXsnE,EAAK,sBAELv+E,EAAQ,UACR82T,EAAU,UACVC,EAAgB,aAChBC,EAAgB,aAMhBC,EAAgBn5S,EAAOruB,OAAO,CAC9BoF,KAAM,SAAS0D,EAAS1E,GACpB,IAAIc,EAAOjI,KAEXoxB,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GACnCA,EAAUxE,EAAEI,QAAO,EAAM,CAAC,EAAGoE,GAE7Bc,EAAKsrB,OAAStrB,EAAKd,QAAQosB,OAC3BtrB,EAAKuiU,cAAgBviU,EAAKsrB,OAAO3mB,QAAQ,GAEzC3E,EAAK0W,UACL1W,EAAK8sO,UAAU,CACXpjK,SAAU1pE,EAAKd,QAAQosB,OAAOpsB,QAAQwqE,WAAa/uE,GAAcqF,EAAKd,QAAQosB,OAAOpsB,QAAQwqE,SAC7F1pD,QAAShgB,EAAKd,QAAQosB,OAAOpsB,QAAQghB,SAAWvlB,IAAgBqF,EAAKd,QAAQosB,OAAOpsB,QAAc,SAGlGc,EAAKuiU,cAAcr9T,MAAMpB,QACzB9D,EAAK4D,QAAQI,IAAI,QAAShE,EAAKuiU,cAAcr9T,MAAMpB,OACnD9D,EAAKuiU,cAAcr9T,MAAMpB,MAAQ,QAGrC9D,EAAK4D,QAAQwZ,SA/BQ,8BAiCrB1kB,EAAMi0B,OAAO3sB,EACjB,EAEAd,QAAS,CACL/E,KAAM,gBACNmxB,OAAQ,KACRk3S,WAAY,EAAG5+T,cAAeA,EAAQ+jB,OAG1C+hD,SAAU,SAASA,GACf3xE,KAAK+0O,UAAU,CACXpjK,SAAUA,IAAa/uE,GAAqB+uE,EAC5C1pD,SAAS,GAEjB,EAEAE,OAAQ,SAASA,GACbnoB,KAAK+0O,UAAU,CACXpjK,UAAU,EACV1pD,UAAWE,EAASA,IAAWvlB,GAAqBulB,IAE5D,EAEAxJ,QAAS,WACL,IAAI1W,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACf6+T,EAAaziU,EAAKd,QAAQosB,OAAO3mB,QAAQupB,KAAK,kBAClD,GAAIu0S,EAAWljU,OAAS,EAAG,CACvB,IAAI0zN,EAAcjzN,EAAK4D,QAAQsqB,KAAK,uBAAuBnqB,SACvDu7E,EAAUmjP,EAAWp9T,WAAWkf,KAAO3Z,OAAO2G,SAASkxT,EAAWz+T,IAAI,iBACtEu7E,EAAUkjP,EAAWp9T,WAAW4X,IAAMrS,OAAO2G,SAASkxT,EAAWz+T,IAAI,gBAAkBivN,EAC3FrvN,EAAQ,GAAGsB,MAAMohJ,YA1DA,kCA0DoChnE,EAAU,MAC/D17E,EAAQ,GAAGsB,MAAMohJ,YA5DA,kCA4DoC/mE,EAAU,KACnE,CAEA37E,EACKkhB,YAAYzZ,GACZyZ,YAAYq9S,GAEbniU,EAAKd,QAAQsjU,WAAW,CAAE5+T,QAAS5D,EAAKd,QAAQosB,OAAO1nB,QAASyrJ,SAAUrvJ,EAAK4D,WAC/EA,EAAQwZ,SAAS/R,IAGjB3D,SAASgK,gBAAkB1R,EAAKd,QAAQosB,OAAO1nB,QAAQ,IACnD5D,EAAKd,QAAQosB,OAAOhO,OAAS5V,SAASgK,gBAAkB1R,EAAKd,QAAQosB,OAAOhO,MAAM,KAEtF1Z,EAAQwZ,SAAS+kT,EAEzB,EAEApoU,QAAS,WACMhC,KAEN6L,QAAQutB,IAAIy4D,GACjBzgE,EAAOrpB,GAAG/F,QAAQuI,KAHPvK,KAIf,EAEA+0O,UAAW,SAAS5tO,GAChB,IAAIc,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACfoc,EAAU9gB,EAAQ8gB,QAClB0pD,EAAWxqE,EAAQwqE,SAEvB9lE,EAAQutB,IAAIy4D,GAEPlgB,GAAa1pD,EAQdpc,EACK+c,YAAYyhT,EAAepiT,GAC3BW,YAAY0hT,EAAe34P,IAThC9lE,EACKkhB,YAAYs9S,GACZt9S,YAAYu9S,GAEjBz+T,EAAQge,GAAG,UAAYgoE,EAAI5pF,EAAK0W,QAAQnV,KAAKvB,IAC7C4D,EAAQge,GAAG,WAAagoE,EAAI5pF,EAAK0W,QAAQnV,KAAKvB,IAMtD,IAEJsiB,EAAG2M,OAAOqzS,EACb,CAtHD,CAsHGzpU,OAAOH,MAAM+G,QACF/G,MAWd,MAAMgqU,EAAU7pU,OAAOH,MACjBiqU,EAAMD,EAAQjjU,OAEd0pB,EADKu5S,EAAQpgT,GACD6G,OACZy5S,EAAeF,EAAQzhU,WAK7B,IAAIm6O,EAAQjyN,EAAOruB,OAAO,CACtBoE,QAAS,CACL/E,KAAM,QACNmxB,OAAQ,MAGZprB,KAAM,SAAS0D,EAAS1E,GACpB,IAAIc,EAAOjI,KAEX6L,EAAUA,GAAW++T,EAAI,mBAEzBx5S,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GACnCA,EAAUyjU,EAAI7nU,QAAO,EAAM,CAAC,EAAGoE,GAE/Bc,EAAKsrB,OAASpsB,EAAQosB,OAElBpsB,EAAQmwJ,UACRrvJ,EAAK6iU,iBAGT7iU,EAAK8iU,QACT,EAEA/oU,QAAS,WACDhC,KAAKkzE,eACLlzE,KAAKkzE,cAAclxE,UAEvBovB,EAAOrpB,GAAG/F,QAAQuI,KAAKvK,KAC3B,EAEAgrU,gBAAiB,WACb,IAAI/iU,EAAOjI,KAEPiI,EAAKirE,gBACLjrE,EAAKirE,cAAclxE,UACnBiG,EAAKsrB,OAAO3mB,QAAQ8vQ,OAAOz0Q,EAAKgjU,yBAExC,EAEA/4S,WAAY,SAAS/qB,GACjB,IAAIc,EAAOjI,KACPkrU,GAAiB,GAEG,iBAAd,GAA2BN,EAAIjjU,cAAcR,KAAiC,IAArBA,EAAQmwJ,YACvE4zK,GAAiB,GAGrB/jU,EAAUyjU,EAAIjjU,cAAcR,GAAWA,EAAU,CAAEw/C,QAASx/C,GAE5DiqB,EAAOrpB,GAAGmqB,WAAW3nB,KAAKtC,EAAMd,GAE5B+jU,GAAkBjjU,EAAKirE,eACvBjrE,EAAK+iU,kBACL/iU,EAAKirE,cAAclxE,iBACZiG,EAAKirE,gBACgB,IAArB/rE,EAAQmwJ,UAAsBrvJ,EAAKirE,gBAC1CjrE,EAAK4D,QAAQQ,SACbpE,EAAK6iU,kBAGT7iU,EAAK8iU,QACT,EAEAA,OAAQ,WACJ,IAAI9iU,EAAOjI,KACP6L,EAAU5D,EAAKsrB,OAAO1nB,QACtB1E,EAAUc,EAAKd,QACfkpB,EAAKxkB,EAAQ+X,KAAK,MAClBg3M,EAAYzzN,EAAQw/C,QACpB2wG,EAAWnwJ,EAAQmwJ,WAAY,EAE/BuzK,EAAajwG,KACbA,EAAYA,EAAUrwN,KAAKtC,IAG1B2yN,IACDA,EAAY,IAGXvqM,IACDA,EAAKlpB,EAAQ/E,KAAO,IAAMuoU,EAAQx6S,OAClCtkB,EAAQ+X,KAAK,KAAMyM,IAGvBpoB,EAAK4D,QAAQwZ,SAASiyI,EAtFH,mBADN,yBAwFR1zI,KAAK,MAAOyM,GACZyQ,KAAK85L,GACLtjE,EAAW,cAAgB,gBAAgBrvJ,EAAKd,QAAQgkU,WAAaljU,EAAKsrB,OAAO3mB,SAElF3E,EAAKirE,eACLjrE,EAAKirE,cAAcv0D,SAE3B,EAEAmsT,eAAgB,WACZ,IAAI7iU,EAAOjI,KACPmH,EAAUyjU,EAAI7nU,OAAO,CAAC,EAAGkF,EAAKd,gBAG3BA,EAAQ/E,MAEJ+E,EAAQmwJ,WAAY,KAG3BrvJ,EAAKgjU,wBAA0BhjU,EAAKsrB,OAAO3mB,QAAQ+f,KAAK,iBAAiBhgB,SACzE1E,EAAKirE,cAAgB,IAAIy3P,EAAQpgT,GAAGggT,cAActiU,EAAKgjU,wBAAyBL,EAAI7nU,OAAO,CAAC,EAAGoE,IAEvG,IAGJwjU,EAAQpgT,GAAG2M,OAAOmsN,IAUlB,SAAU1gP,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfouE,EAASpuE,EAAM4tB,WACf6C,EAASzwB,EAAM4pB,GAAG6G,OAClB7G,EAAK5pB,EAAM4pB,GACX4B,EAAK,oBAEL2lE,EAAQvnE,EAAGunE,MACXjnE,EAAOlqB,EAAMkqB,KACb3hB,EAAavI,EAAMuI,WACnBitF,EAAarE,EAAMqE,WACnBxE,EAAmBhvF,EAAEgN,SAASiK,iBAE9Bi3E,EAAO,OACPC,EAAQ,QACRE,EAAW,WACXD,EAAa,aACbq6O,EAAY,uCAKZC,EAAsB,uBACtBC,EAA0B,2BAC1BC,EAA6B,4BAA4BlB,+DAA2EA,KACpIA,EAAgB,aAChB7kB,EAAgB,gBAEhB9zQ,EAAS,WACT85R,EAAuB7qU,EAAMwvB,OAC7BptB,EAASJ,EAAEI,OACXqN,EAAWzP,EAAMyP,SAGjBq7T,EAAW,qCACXC,EAAmBvkU,GACnB,uDACKA,EAAQg3C,MAED,6DAAYqtR,6DACsBrkU,EAAQg3C,eACrCh3C,EAAQ0uL,SAAW,qDAAqD1uL,EAAQ0uL,UAAY,WAAa,IAC9G,UACC1uL,EAAQwkU,YACT,sCACIhrU,EAAM0P,KAAKg1S,aAAa,WAAW1kT,EAAMijB,KAAK,4CAA6C,CAAE00E,KAAM,IAAK7kE,SAAU,OAAQzjB,KAAM,UACpI,SACE,IACN,SACF,IACN,SACAi2S,EAAgB,EAAG7tR,WAAUkgE,OAAMx3D,OAAMipM,iBAC7B,8DAA8D3xM,EAAWiyS,EAAgB,2CAEhF/xO,EAAO,6BAA6BA,WAAgB,IACrD,yCACI,0CAA0CvpB,EAAOjuC,aAC9CipM,EAAc,gDAAkDh7J,EAAOg7J,GAAe,UAAY,IALjH,wBAUZ6hG,EAAc,CACd9qS,KAAM,GACNipM,YAAa,GACb3xI,UAAW,GACXyzO,SAAU,EACVC,UAAW,GACX5hT,MAAOvnB,EAAEQ,KACToxD,MAAO,MACPn8B,UAAU,GAGV2zS,EAAsB,CACtBjrS,KAAM,GACNw3D,KAAM,GACNF,UAAW,GACXluE,MAAOvnB,EAAEQ,KACTi1B,UAAU,GAqCd,IAAI4zS,EAAc56S,EAAOruB,OAAO,CAC5BoF,KAAM,SAAS0D,EAAS1E,GACpB,IAAIc,EAAOjI,KACXmH,EAAUA,GAAW,CAAC,EAEtBiqB,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GAE/BA,EAAQ+E,UACRjE,EAAK4D,QAAQK,SAAS/E,EAAQ+E,UAGlCjE,EAAKgkU,UAAY9kU,EAAQ+kD,OAAS/kD,EAAQ+kD,MAAM1kD,OAChDS,EAAKikU,kBAAoB/kU,EAAQglU,eAAiBhlU,EAAQglU,cAAc3kU,OACxES,EAAKmkU,YACLnkU,EAAKokU,oBACLpkU,EAAKmxE,WACLnxE,EAAK++S,SACL/+S,EAAKoxE,iBACLpxE,EAAKqxE,gBACLrxE,EAAKsxE,gBACLtxE,EAAKqkU,aAELrkU,EAAKskU,YAAc,IAAIp2O,EAAWluF,EAAK2E,SAEvC3E,EAAKiqF,UAAYvxF,EAAMg7B,cA/Hf,OA+HwCh7B,EAAMwvB,QACtDloB,EAAKukU,WAAa7rU,EAAMg7B,cA5GpB,QA4GyCh7B,EAAMwvB,QACnDloB,EAAKwqF,gBAAkBxqF,EAAKyqF,WAAWlpF,KAAKvB,GAC5CA,EAAKwkU,YAAcxkU,EAAK86E,OAAOv5E,KAAKvB,GACpCA,EAAK2E,QAAQid,GA9GP,UA8GoBsC,EAAIlkB,EAAMA,EAAK28G,SAASp7G,KAAKvB,GAC3D,EAEAoC,OAAQ,CACJwmF,EACAC,EACAE,EACAD,GAGJ5pF,QAAS,CACL/E,KAAM,cACN+7C,MAAO,GACP+N,MAAO,GACPgoC,MAAO,KACPw4O,YAAY,EACZC,eAAgB,KAChBC,eAAgB,KAChB/pD,gBAAiB,KACjBspD,cAAe,GACfR,aAAa,EACbkB,UAAU,EACVC,iBAAiB,GAGrBV,UAAW,WACP,IAAInkU,EAAOjI,KAENiI,EAAKgkU,YAIVhkU,EAAKd,QAAQ+kD,MAAQjkD,EAAKd,QAAQ+kD,MAAMrxC,IAAIkyT,GAChD,EAEAV,kBAAmB,WACf,IAAIpkU,EAAOjI,KAENiI,EAAKikU,oBAIVjkU,EAAKd,QAAQglU,cAAgBlkU,EAAKd,QAAQglU,cAActxT,IAAImyT,GAChE,EAEA5zP,SAAU,WACN,IAEIxsE,EAFA3E,EAAOjI,KACP6L,EAAU5D,EAAK4D,QAGfohU,EAA2C,GAA3BhlU,EAAKd,QAAQulU,WAAqBpB,EAA0BD,EAEhFx/T,EAAQwZ,SAAS6nT,iBAAqBD,GAAiBhlU,EAAKd,QAAQ0lU,SAAW,0BAA8B,sBAC7G5kU,EAAK2E,QAAUA,EAAUf,EAAQ8gB,KAAK,uCAAgD+kB,EAAS,YAAY/kC,SAC3GC,EAAQwhF,QAAQzrF,EAAE,eAAe0iB,SAlL3B,aAmLV,EAEAinT,WAAY,WACR,IAAIrkU,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACfshU,EAAqBllU,EAAK2E,QAAQupB,KAAK,wBAAwBvS,KAAK,MAExE/X,EAAQ+X,KAAK,CACT4M,KAAM,SACN,cAAc,EACd,kBAAmBvoB,EAAKd,QAAQg3C,MAAQgvR,EAAqB,MAErE,EAEAnmB,OAAQ,WACJ,IAAI/+S,EAAOjI,KACPmH,EAAUc,EAAKd,QAEfimU,IAAkBjmU,EAAQ0lU,UAC1B,CACIt6O,KAAM,CACFnrE,QAAS,aACTmrB,YAAY,EACZjrB,SAAU,MAItBngB,EAAQorF,KAAO,KACfprF,EAAQu+C,MAAQ,KAChBv+C,EAAQkgH,SAAW,KACnBlgH,EAAQovT,WAAa,KAErBtuT,EAAKisF,MAAQ,IAAIpC,EAAM7pF,EAAK4D,QAAS9I,EAAOoE,EAAQ+sF,MAChD/sF,EACA,CACI/E,KAAM,QACNid,MAAO1e,EAAM4C,QAAQ8b,MAAMlY,EAAQgrF,QACnCe,mBAAmB,EACnBhnF,SAAUjE,EAAK2E,QACfomF,OAAO,EACPV,UAAW86O,EACX9/T,SAAU,aACV6kF,OAAQhrF,EAAQgrF,QAAUlqF,EAAK2E,WAGnCzF,EAAQ2lU,iBACR7kU,EAAKisF,MAAM1qF,KAAKwnF,EAAU/oF,EAAKolU,aAAa7jU,KAAKvB,IAGrDA,EAAKisF,MAAM1qF,KAAKwnF,GAAW3vF,IACvB4G,EAAKmC,QAAQ4mF,EAAU3vF,EAAG,IAG9B4G,EAAKisF,MAAM1qF,KAAKunF,GAAa1vF,IACzB4G,EAAK2E,QAAQyY,SAASqsB,GACtBigD,EAAiBv4D,IAAInxB,EAAKiqF,UAAWjqF,EAAKwqF,iBAC1Cd,EAAiBv4D,IAAInxB,EAAKukU,WAAYvkU,EAAKwkU,aAC3CxkU,EAAKmC,QAAQ2mF,EAAY1vF,EAAG,IAGhC4G,EAAKisF,MAAM1qF,KAAKqnF,GAAOxvF,IACnB4G,EAAKmC,QAAQymF,EAAMxvF,EAAG,IAG1B4G,EAAKisF,MAAM1qF,KAAKsnF,GAAQzvF,IACpB,IAAIisU,EAAqBrlU,EAAKslU,oBAC9BtlU,EAAKslU,qBAAsB,EAC3BtlU,EAAKmC,QAAQ0mF,EAAO/tF,EAAO,CAAC,EAAG1B,EAAI,CAC/BsqU,YAAa2B,IACd,GAEX,EAEAh0P,cAAe,WACX,IACInyE,EADOnH,KACQmH,SAEdA,EAAQg3C,OAAUh3C,EAAQylU,iBAHpB5sU,KAON6L,QAAQuiF,QAAQh+E,EAASjJ,EAAQylU,gBAAkBlB,EAAnCt7T,CAAoDjJ,GAC7E,EAEA8uI,OAAQ,WACJ,IAAIhuI,EAAOjI,KAEX,GAAKiI,EAAKgkU,UAAV,CAIA,IAAIuB,EAAevlU,EAAKd,QAAQ+kD,MAAMnI,QAAO,CAAC0pR,EAAcC,KACxD,MAAMn5Q,EAAQm5Q,EAAmB,OAAK,MAGtC,OAFAD,EAAal5Q,GAASk5Q,EAAal5Q,IAAU,GAC7Ck5Q,EAAal5Q,GAAO5yD,KAAK+rU,GAClBD,CAAY,GACpB,IAAIjqK,KAEHmqK,EAAWH,EAAkB,IAC7BI,EAAcJ,EAAqB,OAEvCvlU,EAAK4lU,aAAaF,GAEdA,GAAYA,EAASnmU,QAAUomU,GAAeA,EAAYpmU,QAC1DS,EAAKkhT,SAAShvQ,OAjPV,uBAoPRlyC,EAAK4lU,aAAaD,EAlBlB,CAmBJ,EAEAv0P,eAAgB,WACZ,IAAIpxE,EAAOjI,KACPmH,EAAUc,EAAKd,QACnBc,EAAK4D,QAAQwvE,UAAU14E,EAAE,8CACzB,IAAImrU,EAAmB7lU,EAAKkhT,SAAWlhT,EAAK4D,QAAQsqB,KAAK,0BAEzD,GAAIluB,EAAKgkU,UAGL,OAFA6B,EAAiBlhR,aACjB3kD,EAAKguI,UAIL9uI,EAAQ07Q,iBAAmB17Q,EAAQ4mU,sBACnCD,EAAiBzoT,SAAS,sBAE1Ble,EAAQ07Q,iBACRirD,EAAiBz9T,KAAKD,EAASjJ,EAAQ07Q,gBAAjBzyQ,CAAkCjJ,GAEhE,EAEA0mU,aAAc,SAAS3hR,GACnB,IACItiD,EACAulC,EACA+nM,EACAo+E,EAGAh9N,EAxPQlqF,EACZ0I,EACAk3T,EAoPIF,EALO9tU,KAKiBmpT,SACxBz1F,EAAiB/wN,EAAE,8CAGvB,GAAKupD,GAAUA,EAAM1kD,OAOrB,IAHAsmU,EAAiB3zR,OAAOu5K,GACxBwjB,EAAe9mO,EAAS61S,GAEnBr8S,EAAM,EAAGA,EAAMsiD,EAAM1kD,OAAQoC,IAC9BulC,EAAO+c,EAAMtiD,GAjQjBkN,SACAk3T,WAAe,CAAC,EAiQZ11O,GAnQQlqF,EAmQU+gC,GA/PhBipD,WAAchqF,EAAKkqF,MAI7BxhF,EAASnU,EAAEhC,EAAM0P,KAAK0oF,WAAW,CAAET,KAAMlqF,EAAKkqF,KAAMF,UAAWhqF,EAAKgqF,UAAY,8BAE5EhqF,EAAK09T,WAAaL,EAASl+T,KAAKa,EAAK09T,WACrCkC,EAAa/8M,MAAQ7iH,EAAK09T,UACnB19T,EAAK09T,WACZh1T,EAAOuO,SAAS,UAAYjX,EAAK09T,WAGjC19T,EAAKy9T,WACLmC,EAAaz2K,SAAWnpJ,EAAKy9T,UAG7BprU,OAAOoqB,KAAKmjT,GAAcxmU,QAC1BsP,EAAO7K,IAAI+hU,GAGRl3T,GAnBI,GA+PHw+S,EAAc3yT,EAAEu0O,EAAan0O,EAAO,CAAC,EAAGosC,EAAM,CAAEmpD,KAAMA,GAAQA,EAAKzoE,KAAK,iBACxE6jM,EAAev5K,OAAOm7Q,GAElBnmR,EAAKjlB,OACLorS,EAAYlnT,KAAK,SAAU+gC,EAAKjlB,MAG5C,EAEA+jT,qBAAsB,WAOlB,IANA,IAIIC,EAFA/B,EAFOnsU,KACQmH,QACSglU,cACxBgC,EAHOnuU,KAGiBouU,QAGnB7mU,EAAI,EAAGA,EAAI4kU,EAAc3kU,OAAQD,IAAK,CAC3C,IAAI6lC,EAAS++R,EAAc5kU,GACvB4gB,GAA6B,IAApBilB,EAAOhV,SACpB81S,EAAsBvrU,EAAEhC,EAAM0P,KAAKg1S,aAAa,yCAAyCj4Q,EAAOtM,MAAQ,cAAen+B,EAAEI,OAAO,CAAEiN,KAAM,SAAWo9B,KACnJ+gS,EAAiBh0R,OAAO+zR,GACxBA,EAAoBtlT,YAAYyhT,GAAgBliT,GAChD+lT,EAAoBtqT,KAvVjB,YAuViCuE,GAEhCA,EACA+lT,EAAoBj8S,WAAWuzR,GAE/B0oB,EAAoBtqT,KAAK4hS,GAAgBr9R,GAGzCilB,EAAOljB,OACPgkT,EAAoB9/T,KAAK,SAAUg/B,EAAOljB,MAElD,CACJ,EAEAqvD,cAAe,WACX,IAEI40P,EAFAlmU,EAAOjI,KACPmH,EAAUc,EAAKd,QAGnB,GAAKc,EAAKikU,mBAAsB/kU,EAAQwlU,eAAxC,CAOA,IAHAwB,EAAmBlmU,EAAKmmU,QAAUzrU,EAAE,6CACnBuyT,YAAYjtT,EAAKkhT,UAE9BlhT,EAAKikU,kBAGL,OAFAiC,EAAiB9oT,SAAS,2DAC1Bpd,EAAKgmU,uBAIL9mU,EAAQwlU,gBACR1kU,EAAKmmU,QAAQj0R,OAAO/pC,EAASjJ,EAAQwlU,eAAjBv8T,CAAiCjJ,GAZzD,CAcJ,EAEAnF,QAAS,WACL,IAAIiG,EAAOjI,KACXiI,EAAKy9C,QACLt0B,EAAOrpB,GAAG/F,QAAQuI,KAAKtC,GACvBA,EAAKkhT,SAAW,KAChBlhT,EAAKmmU,QAAU,KACfnmU,EAAKomU,QAAU,KACfpmU,EAAK4D,QAAQutB,IAAIjN,GACjBlkB,EAAK2E,QAAQwsB,IAAIjN,GACjBlkB,EAAKisF,MAAMlyF,SACf,EAEAuwF,KAAM,SAASprF,GACX,IAAIc,EAAOjI,KAEXiI,EAAKqmU,UAAYnnU,GAAWA,EAAQmnU,UAEpCrmU,EAAK2E,QAAQmgB,YAAY2kB,GACzBzpC,EAAKsmU,eAAiBtmU,EAAKsmU,gBAAkBtmU,EAAK4D,QAAQO,cAEtDnE,EAAKd,QAAQ0lU,UACb5kU,EAAK2E,QAAQb,MAAM,QAGvB9D,EAAKisF,MAAM3B,KAAK,OAAQ,GACxBtqF,EAAKisF,MAAMtnF,QAAQupB,KAAK,iCAAiClqB,IAAI,CAAEygB,OAAQ,EAAG3gB,MAAO,SAEjF4lF,EAAiBv4D,IAAInxB,EAAKiqF,UAAWjqF,EAAKwqF,iBACrC5oE,GAAG5hB,EAAKiqF,UAAWjqF,EAAKwqF,iBAE7Bd,EAAiBv4D,IAAInxB,EAAKukU,WAAYvkU,EAAKwkU,aACtC5iT,GAAG5hB,EAAKukU,WAAYvkU,EAAKwkU,aAE9BxkU,EAAKskU,YAAYn2O,MACrB,EAEAppF,QAAS,WACL,OAAOhN,KAAKk0F,MAAMlnF,SACtB,EAEA+b,OAAQ,WACH/oB,KAAKgN,UAA0BhN,KAAK0lD,QAAnB1lD,KAAKuyF,MAC3B,EAEAm6O,WAAY,SAAS8B,GACjB,IAAIvmU,EAAOjI,KAEXiI,EAAK4D,QAAQ+c,YAAY0iT,GAA0C,IAAjBkD,GAClDvmU,EAAK4D,QAAQ+c,YAAYyiT,GAAsC,IAAjBmD,GAC9CvmU,EAAK4D,QAAQgB,QAAQ,gCAAgCZ,IAAI,CAAED,OAAQwiU,EAAe,OAAS,QAC/F,EAEA9oR,MAAO,WACQ1lD,KAENk0F,MAAMxuC,OACf,EAEAp4C,SAAU3K,EAAEQ,KAEZsrU,4BAA6B,WACzB,IAEIC,EAFO1uU,KACkB6L,QAAQsqB,KAAKi1S,GACIlhU,QAE1CwkU,EAAsBlnU,QACtBknU,EAAsBtkU,QAAQ,QAEtC,EAEAukU,2BAA4B,WACxB,IAEIC,EAFO5uU,KACkB6L,QAAQsqB,KAAKi1S,GACG9oS,OAEzCssS,EAAqBpnU,QACrBonU,EAAqBxkU,QAAQ,QAErC,EAEAijU,aAAc,WACV,IAAIplU,EAAOjI,KACX,GAAIiI,EAAKgkU,UAAW,CAChB,IAAIxnQ,EAAYx8D,EAAKkhT,SAAShzR,KAAK,uBAAuB,GACtDsuC,GACAA,EAAU1+B,OAElB,MACI99B,EAAKwmU,6BAEb,EAEAI,oBAAqB,SAASxnU,GAC1B,OAAO1E,EAAE0E,GAAQwF,QAAQ0+T,GAA4B/jU,OAAS,CAClE,EAEAsnU,eAAgB,SAASnqU,GACrB,IACIyoC,EAASzqC,EAAEgC,EAAE0C,QAAQwF,QAAQ0+T,GAA4Bn9T,KAAK,UAC9DlF,EAAWkkC,IACXA,EAAOzoC,GAGNA,EAAE0E,sBANIrJ,KAOF0lD,OAEb,EAEAk/D,SAAU,SAASjgH,GACf,IAAIsD,EAAOjI,KACP6qB,EAAOlqB,EAAMkqB,KACbyc,EAAU3iC,EAAE2iC,QACZjgC,EAAS1E,EAAEgC,EAAE0C,QAEjB,GAAIigC,GAAWzc,EAAKM,IAChBxmB,EAAEy1B,kBACFnyB,EAAKy9C,aACF,GAAIz9C,EAAK4mU,oBAAoBxnU,IAAW0nU,EAAmBpqU,GAC9DsD,EAAK6mU,eAAenqU,QACjB,GAAIA,EAAE2iC,UAAY3mC,EAAMkqB,KAAKI,IAAK,CACrC,IAAI+jT,EAAgBhvU,KAAK4M,QAAQupB,KAAKi1S,GAClCxC,EAAiBoG,EAAc9kU,QAC/B+kU,EAAgBD,EAAc1sS,OAC9B39B,EAAE4iC,SACE53B,SAASgK,gBAAkBivT,EAAe,KAC1CqG,EAAc7kU,QAAQ,SACtBzF,EAAEwE,kBAGFwG,SAASgK,gBAAkBs1T,EAAc,KACzCrG,EAAex+T,QAAQ,SACvBzF,EAAEwE,iBAGd,CACJ,EAEA45E,OAAQ,SAASp+E,GACb,IACI0C,EAAS1G,EAAM0oB,YAAY1kB,GADpB3E,KAGF6uU,oBAAoBxnU,IAHlBrH,KAIF8uU,eAAenqU,EAE5B,EAEA+tF,WAAY,SAAS/tF,GACjB,IAAIsD,EAAOjI,KACPy2B,EAAYxuB,EAAK4D,QAAQ,GACzBxE,EAAS1G,EAAM0oB,YAAY1kB,GAE3BsD,EAAKqmU,WAAarmU,EAAKqmU,UAAUrhU,GAAGtK,EAAE0E,OA7dlD,SAAkBovB,EAAWpvB,GACzB,SAAKovB,IAAcpvB,KAGZovB,IAAcpvB,GAAU1E,EAAE4yB,SAASkB,EAAWpvB,GACzD,CA4dakuB,CAASkB,EAAWpvB,IAAW1E,EAAE0E,GAAQwF,QAAQ,IAAIlM,EAAMijB,KAAK,mCAAoCjhB,EAAE8zB,GAAWN,KAAK,2BAA2B3uB,OAAS,KAC3JS,EAAKslU,qBAAsB,EAC3BtlU,EAAKy9C,QAEb,IAGJ,SAASqpR,EAAmBpqU,GACxB,OAAOA,EAAE2iC,SAAWzc,EAAKK,OAASvmB,EAAE2iC,SAAWzc,EAAKa,QACxD,CAEA,SAASqhT,EAAmB59R,GACxB,OAAOpsC,EAAO,CAAC,EAAG6oU,EAAaz8R,EACnC,CAEA,SAAS69R,EAA2BkC,GAChC,OAAOnsU,EAAO,CAAC,EAAGgpU,EAAqBmD,EAC3C,CAEA3kT,EAAG2M,OAAO80S,EAEb,CAvkBD,CAukBGlrU,OAAOH,MAAM+G,QACF/G,OAWd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACf4pB,EAAK5pB,EAAM4pB,GACXne,EAAczL,EAAM+L,aACpByiU,EAAuB,kBACvB/9S,EAAS7G,EAAG6G,OACZvG,EAAOlqB,EAAMkqB,KACbtnB,EAAU5C,EAAM4C,QAChBgrB,EAAa5tB,EAAM4tB,WACnB5U,EAAgBhZ,EAAM+Y,eACtBvN,EAAaxL,EAAM8L,YACnB0B,EAAkBxN,EAAMyN,KAAKD,gBAC7BwrM,EAAK,KACLz8J,EAAS,SACTktR,EAAU,UACVgF,EAAQ,UACRC,EAAY,aACZC,EAAU,mCAKVC,EAAU,YAEVC,EAAqB,8BAErBC,EAAe,eAEf5+O,EAAO,OACPC,EAAQ,QACR4+O,EAAU,UACV3yP,EAAS,SACTm3J,EAAQ,QAERq5E,EAAa,aACbv8N,EAAW,WACXD,EAAa,aACb4+O,EAAe,cACfC,EAAa,YACbC,EAAuB,qBACvBxkB,EAAW,WACXpgQ,EAAe,eACfE,EAAa,aAEbq7K,EAAQ,QAERzjO,EAASJ,EAAEI,OACXE,EAAUC,MAAMD,QAChB6f,EAAUvf,EAAQuf,QAClBgtT,EAAc,WACdt+R,EAAQ,QACRwlJ,EAAO,OAEP+4I,EAAOjtT,EAAQoB,KACf8rT,EAAa,KACbC,EAAmB,CACfC,SAAY,CAAE,eAAgB,uBAC9BC,aAAgB,CAAE,WAAY,uBAC9BC,oBAAuB,CAAE,WAAY,iBAazC3pU,EAAkB,kBAClBC,EAAa,aACb2pU,EAAwB,wBAIxB9oB,EAAgB,gBAChBtzE,EAAc,cACdq8F,EAAY,YAEZC,EAAgB,gBAChBC,EAAgB,qBAGhBC,GAAO9vU,EAAM4pB,GAAGgK,gBAAgBxxB,OAAO,CACvCoF,KAAM,SAAS0D,EAAS1E,GACpB,IACIkpB,EADApoB,EAAOjI,KAGXoxB,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GACnC0E,EAAU5D,EAAK4D,QACf1E,EAAUc,EAAKd,QAEfc,EAAKyoU,UAAY7kU,EAAQoB,GAAG8vE,GAExB90E,EAAKyoU,WAAazoU,EAAK4D,QAAQ,GAAGrE,SAC7BL,EAAQsqB,aACTtqB,EAAQssE,cAAgBtsE,EAAQssE,eAAiBujH,EACjD7vL,EAAQuqE,eAAiBvqE,EAAQuqE,gBA/CrC,UAmDyB,SAAzBvqE,EAAQwpU,eACR1oU,EAAK2oU,SAAWjwU,EAAMJ,WAAW,SACjC0H,EAAK4oU,UAAYlwU,EAAMJ,WAAW,UAClC0H,EAAK6oU,SAAWnwU,EAAMJ,WAAW,UAGrC0H,EAAK8oU,UAAYpwU,EAAMwyB,cAAcG,cAAc,CAC/CC,OAAQ,OACRC,SAAU,OACV9qB,MAAOvB,EAAQ6I,OAGnB/H,EAAK+oU,gBAEL/oU,EAAKipT,GAAKvuT,EAxDN,2BAwDeihB,KAAK,CACpBizE,UAAW,EACX,eAAe,IAGnB5uF,EAAKukE,KAAO7pE,EA5DN,yBA6DD0iB,SAASpd,EAAK8oU,WACd52R,OAAOlyC,EAAKipT,KAEjB7gS,EAAKxkB,EAAQ+X,KAAK+1L,MAGdtpL,EAAK1vB,EAAMwvB,QAGfloB,EAAKukE,KAAK5oD,KAAK+1L,EAAItpL,EA/DT,SAgEVpoB,EAAKipT,GAAGttS,KAAK+1L,EAAItpL,EA/DJ,YAiETlpB,EAAQk5O,SAAWl5O,EAAQk5O,QAAQ74O,SACnCS,EAAKukE,KAAKz/C,YAtHX,UAsH6B1H,SApHvB,gBAqHLpd,EAAKukE,KAAKz/C,YAAY9kB,EAAK8oU,WAAW1rT,SApHnC,cAsHHpd,EAAKipT,GAAGnkS,YAAYwiT,GAASlqT,SAxH7B,WA0HApd,EAAKgpU,kBAGThpU,EAAKomU,UACLpmU,EAAKipU,UACLjpU,EAAKmmU,UACLnmU,EAAKmpT,aACLnpT,EAAKkpU,YACT,EAEAhqU,QAAS,CACLyrE,gBAAgB,EAChB+5P,eAAgB,GAChBC,eAAgB,GAChBwE,gBAAgB,EAChBphU,KAAM,SACN4a,SAAU,CACNymT,OAAU,iBACV76Q,MAAS,SAEbm6Q,aAAc,QAGlBz+S,WAAY,SAAS/qB,GACjBiqB,EAAOrpB,GAAGmqB,WAAW3nB,KAAKvK,KAAMmH,GAE5BA,GAAWA,EAAQghB,SAAWvlB,IAC9BuE,EAAQ2gB,QAAU3gB,EAAQghB,QAG1BhhB,EAAQk5O,SAAWl5O,EAAQk5O,QAAQ74O,QACnCxH,KAAKixU,iBAGTjxU,KAAKquU,UACLruU,KAAKkxU,UACLlxU,KAAKouU,UAELpuU,KAAKsxU,gBACLtxU,KAAKuxU,gBAEDpqU,EAAQmtB,OAASt0B,KAAKwxU,YACtBxxU,KAAKs0B,MAAMpC,WAAW/qB,EAAQmtB,QACL,IAAlBntB,EAAQmtB,OACft0B,KAAKs0B,MAAM02S,kBACXhrU,KAAKwxU,YAAYnlU,gBACVrM,KAAKwxU,aACLrqU,EAAQmtB,OACft0B,KAAK+qU,QAEb,EAEAhlS,MAAO,WACH/lC,KAAKyxU,SAASrnU,QAAQo8N,EAC1B,EAEA70J,SAAU,SAASA,GACf3xE,KAAK+0O,UAAU,CACXpjK,SAAUA,IAAa/uE,GAAqB+uE,EAC5C1pD,SAAS,IAGTjoB,KAAKs0B,OAASt0B,KAAKs0B,MAAM4+C,eACzBlzE,KAAKs0B,MAAM4+C,cAAcvB,SAASA,IAAa/uE,GAAqB+uE,EAE5E,EAEAxpD,OAAQ,SAASA,GACbnoB,KAAK+0O,UAAU,CACXpjK,UAAU,EACV1pD,UAAWE,EAASA,IAAWvlB,GAAqBulB,KAGpDnoB,KAAKs0B,OAASt0B,KAAKs0B,MAAM4+C,eACzBlzE,KAAKs0B,MAAM4+C,cAAc/qD,OAAOA,EAASA,IAAWvlB,GAAqBulB,EAEjF,EAEA4iT,OAAQ,WACJ,IAAI9iU,EAAOjI,KACPmH,EAAUc,EAAKd,QACfgvK,EAAexzK,EAAEgF,cAAcR,EAAQmtB,OAASntB,EAAQmtB,MAAQ,CAChEqyB,QAASx/C,EAAQmtB,OAGrBrsB,EAAKqsB,MAAQ,IAAI3zB,EAAM4pB,GAAG84N,MAAM,KAAM1gP,EAAEI,OAAO,CAAC,EAAGozK,EAAc,CAC7D5iJ,OAAQtrB,EACRwiU,WAAYxiU,EAAKypU,YAAYloU,KAAKvB,MAGtCA,EAAKupU,YAAcvpU,EAAKqsB,MAAMzoB,QAC9B5D,EAAK0pU,uBACT,EAEAD,YAAa,WACT,OAAI1xU,KAAK4zE,YACU5zE,KAAK0I,WAAY1I,KAAK8gC,MAAO9gC,KAAK8gC,UAC5B9gC,KAAKk0F,MAAMlnF,SAIxC,EAEA2kU,sBAAuB,WACnB,IAAI1pU,EAAOjI,KAEPiI,EAAKqsB,OAASrsB,EAAKqsB,MAAM4+C,eACzBjrE,EAAKqsB,MAAM4+C,cAAcv0D,SAEjC,EAEA0vT,QAAS,WACL,IAAI7hQ,EAAOxsE,KACPomD,EAASzjD,EAAE6pE,EAAKpmB,QAChBh2C,EAAWo8D,EAAKrlE,QAAQylU,eAK5B,GAHAjsU,EAAMqB,QAAQokD,GACdA,EAAO/5C,SAEF+D,EAAL,CAKA,IAAIw8T,EAAqC,mBAAbx8T,EAA0BzP,EAAMyP,SAASA,GAAYA,EACjFg2C,EAASzjD,EAAEiqU,EAAe,CAAC,IAE3BpgQ,EAAKpmB,OAASA,EAAO,GAAKA,EAAS,KAE/BomB,EAAKA,KAAK7/D,OAAOnF,OAAS,GAC1BglE,EAAKA,KAAKg6G,OAAOpgI,EARrB,MAFIomB,EAAKpmB,OAAS,IAYtB,EAEA4qR,cAAe,WACXhxU,KAAK4xU,eAAiB,qIAEdjxU,EAAM4pB,GAAG+tE,KAAK,CAAEA,KAAM,SAAUF,UAAW,iBAF7B,gBAMtBp4F,KAAK6xU,0BAA4B,kEAAkE7xU,KAAK4xU,uBAEpG5xU,KAAK8xU,qBACL9xU,KAAK+xU,YAAcpvU,EAAE,+CAChBihB,KAAK,CACF4B,YAAaxlB,KAAK6L,QAAQ+X,KAAK,eAC/Bu6B,MAAOn+C,KAAKmH,QAAQ6qU,aAAehyU,KAAK6L,QAAQ+X,KAAK,SACrD4M,KAAM,YACN,aAAcxwB,KAAKmH,QAAQ6qU,YAC3B,gBAAiB,UACjB,oBAAqB,SAGrC,EAEAf,eAAgB,WACZ,IACIgB,EADAzlQ,EAAOxsE,KAEPkyU,EAAgBvvU,EAAE6pE,EAAK0lQ,eAE3BvxU,EAAMqB,QAAQkwU,GACdA,EAAc7lU,SAMd,IAJA,IAAI+5C,EAAS,2GACT+rR,EAAW,aACX9sK,EAAM,2BAEDz7J,EAAM,EAAGA,EAAM5J,KAAKmH,QAAQk5O,QAAQ74O,OAAQoC,IAAO,CACxD,IAAIwoU,EAAgBpyU,KAAKmH,QAAQk5O,QAAQz2O,GACrCu0C,EAAQi0R,EAAcj0R,OAASi0R,EAAcrsT,OAAS,GAEtD3V,EAAWgiU,EAAcxF,gBADb,KAAMzuR,GAElBk0R,EAA4C,mBAAbjiU,EAA0BzP,EAAMyP,SAASA,GAAYA,EACpFwiS,EAAew/B,EAAcrmU,MAC7BumU,EAAkB94T,SAASo5R,EAAc,IACzC2/B,EAAa,GAEb3/B,IAAiB9pS,MAAMwpU,KACvBC,GAAc,GAAG5xU,EAAMijB,KAAK,mBAAmB0uT,IAAkBnD,EAAqB5hU,KAAKqlS,GAAgB,IAAM,SAGrHu/B,GAAY,QAAUI,EAAa,KAEnCltK,GAAO,0BACPA,GAAOgtK,EAAsBD,GAC7B/sK,GAAO,OACX,CAIAj/G,GAFA+rR,GAAY,cAGZ/rR,GAAU,gCACVA,GAHAi/G,GAAO,QAMP4sK,EAAUtvU,EAFVyjD,GAAU,gCAGVzlD,EAAM+qC,+BAA+BumS,EAAS,CAAC,UAE/CzlQ,EAAK0lQ,cAAgBA,EAAgBD,EACrCzlQ,EAAKA,KAAK4hB,QAAQ8jP,EACtB,EAEAhB,QAAS,WACL,IAAI1kQ,EAAOxsE,KACPqxU,EAAS1uU,EAAE6pE,EAAK6kQ,QAChBjhU,GAA2C,IAAhCo8D,EAAKrlE,QAAQiqU,eAA0B,IAAM7iT,EAAWi+C,EAAKrlE,QAAQyjB,SAASymT,QAAU7kQ,EAAKrlE,QAAQiqU,eAEpHzwU,EAAMqB,QAAQqvU,GACdA,EAAOhlU,SAEF+D,GAKLo8D,EAAK6kQ,OAAS1uU,EAtSL,iCAsSmB+K,OAAOxB,SAASsgE,EAAKA,MACjDA,EAAK4kQ,eAAqC,mBAAbhhU,EAA0BzP,EAAMyP,SAASA,GAAYA,GAL9Eo8D,EAAK6kQ,OAAS,IAMtB,EAEAjD,QAAS,WACL,IAAI5hQ,EAAOxsE,KACP05E,EAAS/2E,EAAE6pE,EAAKkN,QAChBtpE,EAAWo8D,EAAKrlE,QAAQwlU,eACxB6F,EAAWxyU,KAAKmH,QAAQk5O,SAAWrgP,KAAKmH,QAAQk5O,QAAQ74O,OA5S9C,qEADD,oCA+Sb7G,EAAMqB,QAAQ03E,GACdA,EAAOrtE,SAEF+D,GAKLo8D,EAAKkN,OAAS/2E,EAAE6vU,GAAUtmU,SAASsgE,EAAKA,MACxCA,EAAKmgQ,eAAqC,mBAAbv8T,EAA0BzP,EAAMyP,SAASA,GAAYA,GAL9Eo8D,EAAKkN,OAAS,IAMtB,EAEA+4P,aAAc,SAAStrU,GACnB,IAAIc,EAAOjI,KACPo0B,EAAiBnsB,EAAKd,QACtB8uD,EAAU7hC,EAAe6hC,QACzBy8Q,EAAoB,CAAEn0R,OAAQt2C,EAAK0qU,YAAYnpU,KAAKvB,IACpD2qU,EAAmB3qU,EAAK4qU,WAAWrpU,KAAKvB,GACxC6qU,EAAa7qU,EAAKwpU,SAClB39S,EAAU7rB,EAAK4D,QAAQ+X,KAAK,MAC5BmQ,EAAWpxB,EAAE,cAAiBsF,EAAK4D,QAAQ+X,KAAK,MAAQ,MACxDmvT,EAAaD,EAAWlvT,KAAKnd,GAmCjC,OAjCKssU,GAAch/S,EAASvsB,SACxBurU,EAAah/S,EAASnQ,KAAK,OAAS3b,EAAKisB,iBAAiBH,EAAUD,GAAWnzB,EAAMwvB,SAGzF8lC,EAA6B,iBAAZA,EAAuBA,EAAU,CAAC,GAEnD9uD,EAAUxE,EAAEI,OAAO,CACfivE,UAAU,EACVulH,YAAY,EACZ9lK,WAAYxpB,EAAKwpB,WACjBvH,MAAOjiB,EAAK86E,OAAOv5E,KAAKvB,GACxBo/G,SAAUp/G,EAAK+qU,cAAcxpU,KAAKvB,GAClCo4O,QAASjsN,EAAeisN,QACxBk2E,WAAYtuT,EAAKgrU,gBAAgBzpU,KAAKvB,GACtCsoE,YAAa,WACTtoE,EAAKmC,QAAQulU,EACjB,EACAl/P,UAAWmiQ,EACX5mU,OAAQooB,EAAepoB,OACvB0lE,eAAgBt9C,EAAes9C,eAC/B+B,cAAer/C,EAAeq/C,cAC9By/P,cAAe9+S,EAAe8+S,cAC9BC,mBAAoB/+S,EAAe++S,mBACnC/iU,SAAUgkB,EAAehkB,SACzB4jB,UAAW8+S,EAAWlvT,KAAKld,GAC3ButB,eAAgB8+S,EAChBK,SAAUnrU,EAAK8oU,WAChB5pU,EAAS8uD,EAASy8Q,IAERtiU,WACTjJ,EAAQiJ,SAAYhC,GAASmgB,EAAW5tB,EAAM6uB,OAAOroB,EAAQssE,cAArB9yE,CAAoCyN,KAGzEjH,CACX,EAEAksU,UAAW,SAASC,GAChB,IAAIrrU,EAAOjI,KACPuzU,EAAkBD,GAAQA,EAAKC,gBAC/BC,EAAcvrU,EAAKwqU,aAAa,CAChCgB,mBAAoBxrU,EAAK0qU,YAAYnpU,KAAKvB,KAGzCA,EAAKd,QAAQ8uD,SAGdhuD,EAAK2rE,SAAW,IAAIjzE,EAAM4pB,GAAGmpT,YAAYzrU,EAAKipT,GAAIzwT,OAAOC,OAAO8yU,EAAa,CACzExnU,OAAQ/D,EAAK0rU,kBAAoB,IAAM1rU,EAAKd,QAAQ6E,UAExD/D,EAAKukE,KAAKnnD,SAAS,mBALnBpd,EAAK2rE,SAAW,IAAIjzE,EAAM4pB,GAAGqpT,WAAW3rU,EAAKipT,GAAIsiB,GAQrDvrU,EAAK2rE,SAASpqE,KAAK,YAAavB,EAAK4qU,WAAWrpU,KAAKvB,IAEhDsrU,GACDtrU,EAAK4rU,eAEb,EAEAA,cAAe,SAASnrU,IACpBA,EAAQA,GAAS1I,KAAKmH,QAAQuB,SAEhB9F,GACV5C,KAAK4zE,SAASlrE,MAAMA,GACfkkC,KAAK5sC,KAAK8zU,sBAAsBtqU,KAAKxJ,MAElD,EAEA8zU,sBAAuBnxU,EAAEQ,KAEzB4wU,eAAgB,SAASpvU,GAChB3E,KAAK+xU,aAAe/xU,KAAK+xU,YAAY,KAAOptU,EAAE0C,QAC/C1C,EAAEwE,gBAEV,EAEA2oU,iBAAkB,WACd,IAAIviT,EAASvvB,KAAKmH,QAAQooB,OAC1B,OAAOA,GAAqB,SAAXA,CACrB,EAEAykT,WAAY,WACGh0U,KAEFq7H,QAFEr7H,KAGFq7H,OAAOh2G,SAASyqT,EAE7B,EAEAmE,WAAY,WACJj0U,KAAKq7H,QACLr7H,KAAKq7H,OAAOtuG,YAAY+iT,EAEhC,EAEAoE,YAAa,WACTl0U,KAAKm0U,aACLn0U,KAAKo0U,UAAU,IACfp0U,KAAK4zE,SAASlrE,MAAM,IAEhB1I,KAAK0wU,YACL1wU,KAAKq0U,cAAgBzxU,GAGrB5C,KAAK8xU,qBAAuB9xU,KAAKmH,QAAQmtU,mBACzCt0U,KAAKs6D,QAAQ,CAAE9iB,KAAM,GAAI+6C,MAAM,IAE3BvyF,KAAKmH,QAAQotU,gBACbv0U,KAAK4zE,SAAS7tC,MAAM,IAG5B/lC,KAAKu/D,SACT,EAEA40Q,WAAY,WACRn0U,KAAK8gC,KAAK,GACd,EAEA0zS,aAAc,WACLx0U,KAAKmH,QAAQ8uD,SACdj2D,KAAK4zE,SAASC,OAAM,GAGxB7zE,KAAKy0U,eACT,EAEAA,cAAe,SAASllT,EAAQ+C,GAC5B,IAAIrqB,EAAOjI,KACPmH,EAAUc,EAAKd,QACfutU,EAAyBvtU,EAAQwtU,cAAgBplT,GAAUA,EAAOuyB,OAASvyB,EAAOs0B,SAAWt0B,EAAOs0B,QAAQr8C,OAC5GiqB,EAAaxpB,EAAKwpB,WAClBvC,EAAansB,EAAO,CAAC,EAAG0uB,EAAWlC,UAAY,CAAC,GAChDqlT,EAAoBrlT,GAAWL,EAAW20B,SAAW30B,EAAW20B,QAAQr8C,SAAW+nB,EAEnFslT,EAAUC,GAAsB5lT,EAAY/nB,EAAQssE,eAIxD,GAFAzzE,KAAK+0U,wBAAwB7lT,IAExBK,GAAUslT,IAAY5sU,EAAKmC,QAAQ,YAAa,CAAEmlB,OAAQA,IAC3D,OAAO5sB,EAAEypC,WAAWi0B,SAASx4C,UAGjC,IAAImtT,EAAgB,CAChBnxR,QAAS,GACT/B,MAAO,OAGP4yR,EACAM,EAAcnxR,QAAQliD,KAAK4tB,GAE3BvvB,KAAKi1U,sBAAsBD,EAAezlT,GAG1C2lT,GAAkBhmT,KACd8lT,EAAclzR,QAAU5yB,EAAW4yB,MACnCkzR,EAAcnxR,QAAUmxR,EAAcnxR,QAAQzlC,OAAO8Q,EAAW20B,SAEhEmxR,EAAcnxR,QAAQliD,KAAKutB,IAI/BjnB,EAAKktU,YACLn1U,KAAK4zE,SAASwhQ,YAAYJ,GAG9B,IAAIK,EAAkBtyU,EAAO,CAAC,EAAG,CAC7BuhD,KAAMswR,EAAoB,EAAInjT,EAAW6yB,OACzCD,SAAUuwR,EAAoBnjT,EAAWtqB,QAAQk9C,SAAW5yB,EAAW4yB,WACvEroC,KAAMyV,EAAWzV,OACjBuT,OAAQkC,EAAWlC,SACnBglC,MAAO9iC,EAAW8iC,QAClBd,UAAWhiC,EAAWgiC,aACvB,CAAElkC,OAAQylT,IAEb,OAAOvjT,EAAWa,EAAQ,OAAS,SAASb,EAAW4xC,YAAYgyQ,GACvE,EAEAJ,sBAAuB,SAASD,EAAezlT,GACvC2lT,GAAkB3lT,IAA4B,KAAjBA,EAAO7mB,OACpCssU,EAAcnxR,QAAQliD,KAAK4tB,EAEnC,EAEAwlT,wBAAyB,SAAS7lT,GAC9B,GAAKA,EAAW20B,QAAhB,CAMA,IAFA,IAAIyxR,EAEK/tU,EAAI,EAAGA,EAAI2nB,EAAW20B,QAAQr8C,OAAQD,IACvC,eAAgB2nB,EAAW20B,QAAQt8C,KACnC+tU,EAAkB/tU,GAIrBuB,MAAMwsU,IACPpmT,EAAW20B,QAAQr5C,OAAO8qU,EAAiB,EAX/C,CAaJ,EAEA/D,cAAe,WACX,IAAI/kQ,EAAOxsE,KACPqxU,EAAS7kQ,EAAK6kQ,OAEbA,GAILA,EAAOhhU,KAAKm8D,EAAK4kQ,eAAe,CAAEzpT,SAAU6kD,IAChD,EAEA+oQ,cAAe,SAAS9nU,GACpB9K,EAAE3C,KAAKqxU,QAAQtoT,OAAOtb,EAC1B,EAEA+nU,cAAe,SAAS/nU,GACFzN,KAAK4zE,SAASjtB,QAAQ5G,KAAKyvR,GACjCzmT,OAAOtb,EACvB,EAEA6jU,cAAe,WACX,IAAI9kQ,EAAOxsE,KACP05E,EAASlN,EAAKkN,OAAS15E,KAAKmH,QAAQk5O,SAAWrgP,KAAKmH,QAAQk5O,QAAQ74O,OAASglE,EAAKkN,OAAOnkC,WAAWrrC,QAAUsiE,EAAKkN,OAAS,KAE3HA,GAILA,EAAOrpE,KAAKm8D,EAAKmgQ,eAAe,CAAEhlT,SAAU6kD,IAChD,EAEAipQ,cAAe,WACX,OAAOz1U,KAAKmH,QAAQiqU,gBAAkBpxU,KAAKyxB,WAAWgD,WAAWjtB,MACrE,EAEA2pU,WAAY,WACR,IAAIlpU,EAAOjI,KACP0I,EAAQT,EAAKd,QAAQuB,MAEX,OAAVA,EACAT,EAAK4D,QAAQ+jB,IAAIlnB,IAEjBA,EAAQT,EAAKmsU,YACbnsU,EAAKd,QAAQuB,MAAQA,GAGzBT,EAAKytU,KAAOhtU,CAChB,EAEAitU,YAAa,WACT,IAEI5vT,EAFA9d,EAAOjI,KACPkpD,EAAQjhD,EAAKwpB,WAAWgqC,OAAOvS,MAG/BA,GAASA,EAAMz5B,SACf1J,EAAQmjC,EAAMz5B,OAAOxnB,EAAKd,QAAQssE,iBAErB1tD,EAAMrgB,MAAuB,WAAfqgB,EAAMrgB,OAC7BuC,EAAKd,QAAQ05C,YAAa,EAGtC,EAEA+1C,OAAQ,SAASyvN,GACb,OAAOrmT,KAAK4zE,SAAS7tC,MAAMsgR,EAC/B,EAEA/rP,QAAS,SAASnzD,GACd,IAKI+nB,EALAjnB,EAAOjI,KACP41U,EAAgB3tU,EAAKd,QACrBqwC,EAAOrwC,EAAQqwC,KACfm9R,EAAeiB,EAAcjB,aAC7B5uT,EAAQ6vT,EAAcniQ,cAG1B,GAAIkhQ,GAAgBA,EAAantU,OAAQ,CACrC0nB,EAAa,CACT4yB,MAAO,KACP+B,QAAS,GACTgyR,YAAY,GAEhB,IAAK,IAAItuU,EAAI,EAAGA,EAAIotU,EAAantU,OAAQD,IACrCvH,KAAKi1U,sBAAsB/lT,EAAYjnB,EAAK6tU,iBAAiBt+R,EAAMm9R,EAAaptU,IAExF,MACI2nB,EAAajnB,EAAK6tU,iBAAiBt+R,EAAMzxB,GAG7C9d,EAAK8tU,MAAQ5uU,EAAQorF,KACrBtqF,EAAKwsU,cAAcvlT,EACvB,EAEA4mT,iBAAkB,SAASptU,EAAOqd,GAC9B,IACI6vT,EADO51U,KACcmH,QACrB05C,EAAa+0R,EAAc/0R,WAC3BwC,EAHOrjD,KAGuByxB,WAAWtqB,QAAQk8C,uBAErD,MAAO,CACH36C,MAAOm4C,EAAcwC,EAAyB36C,EAAM66C,kBAAkBF,GAA0B36C,EAAMmQ,cAAiBnQ,EACvHqd,MAAOA,EACPq9B,SAAUwyR,EAAcrmT,OACxBsxB,WAAYA,EAEpB,EAEAm1R,aAAc,WACV,IAAIxpQ,EAAOxsE,KACPw2K,EAAahqG,EAAKrlE,QAAQyjB,SAAS4rC,MAElCgW,EAAK6uD,SACN7uD,EAAK6uD,OAAS14H,EAAE,wDAAwD6zK,MAAe71K,EAAM4pB,GAAG+tE,KAAK,eAAe10E,KAAK,CACrH4M,KAAQ,SACRqmE,UAAa,KAIhBrqB,EAAKrlE,QAAQ8uU,aACdzpQ,EAAK6uD,OAAOhvH,SAEhBrM,KAAKg0U,YACT,EAEA93S,OAAQ,SAASsb,GACb,IAAIrwC,EAAUnH,KAAKmH,QAEnBqwC,EAAuB,iBAATA,EAAoBA,EAAOx3C,KAAKk2U,cAE9C57S,aAAat6B,KAAKm2U,kBAEZhvU,EAAQmtU,mBAAqB98R,EAAKhwC,QAAWgwC,EAAKhwC,QAAUL,EAAQxB,aACtE3F,KAAKq2N,OAAS,SACVr2N,KAAK4zE,WACL5zE,KAAK4zE,SAASwiQ,cAAgBz1U,EAAMgjC,KAAK6T,GAAMhwC,QAG9CxH,KAAK8xU,mBAGN9xU,KAAKs6D,QAAQ,CAAE9iB,KAAMA,EAAM+6C,MAAM,IAFjCvyF,KAAKq2U,cAAc7+R,GAK/B,EAEAxjC,QAAS,SAASqyS,GACd,OAAOrmT,KAAK42F,OAAOyvN,EACvB,EAEAn6P,MAAO,WACH,OAAOlsD,KAAKkxT,GAAG,GAAG37Q,QACtB,EAEAvzC,QAAS,WACL,IAAIiG,EAAOjI,KACPmsB,EAAKlkB,EAAKkkB,GAEdiF,EAAOrpB,GAAG/F,QAAQuI,KAAKtC,GAEvBA,EAAKwzT,qBAEDxzT,EAAK2oU,UAAY3oU,EAAK4oU,WAAa5oU,EAAK6oU,YACxC7oU,EAAK2oU,SAAS5uU,UACdiG,EAAK4oU,UAAU7uU,UACfiG,EAAK6oU,SAAS9uU,WAGlBiG,EAAK2rE,SAAS5xE,UACdiG,EAAKukE,KAAKpzC,IAAIjN,GAEdlkB,EAAKisF,MAAMlyF,UAEPiG,EAAKquU,OACLruU,EAAKquU,MAAMl9S,IAAI,QAASnxB,EAAKsuU,eAG7BtuU,EAAKqsB,OACLrsB,EAAKqsB,MAAMtyB,SAEnB,EAEAy8D,SAAU,SAASnlD,GACf,IAAIrR,EAAOjI,KAEX,GAAIsZ,IAAU1W,EACV,OAAOqF,EAAK2rE,SAAS4iQ,oBAAoB,GAG7C,GAAqB,iBAAVl9T,EAAoB,CAC3B,GAAIrR,EAAKd,QAAQ8uD,QACb,OAAOhuD,EAAKwpB,WAAWorC,SAASl6D,EAAE2W,GAAOlL,KAAK,QAGlDkL,EAAQ3W,EAAEsF,EAAKikD,SAAS5yC,MAAMA,EAClC,CAEA,OAAOrR,EAAKwpB,WAAWgD,WAAWnb,EACtC,EAEA05T,cAAe,WACX,IAAIh/T,EAAUhU,KAAK4zE,SAAS7tC,QACxB/xB,GAAWhU,KAAKk0F,MAAMlnF,WACtBhN,KAAKyxU,SAASjkU,IAAIxN,KAAK+xU,aAAanuT,KAAKysT,EAAuBr8T,EAAQ4P,KAAK,MAErF,EAEAqvT,gBAAiB,WACbjzU,KAAKyxU,SAASjkU,IAAIxN,KAAK+xU,aAAa9/S,WAAWo+S,EACnD,EAEAjf,WAAY,WACR,IAAInpT,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACf1E,EAAUc,EAAKd,QACfqoB,EAAS7uB,EAAM6uB,OACfk9C,EAAY7gE,EAAQ+X,KAAKjjB,EAAMijB,KAAK,eACpCquD,EAAapmE,EAAQ+X,KAAKjjB,EAAMijB,KAAK,iBAEpCzc,EAAQssE,eAAiB/G,IAC1BvlE,EAAQssE,cAAgB/G,IAGvBvlE,EAAQuqE,gBAAkBO,IAC3B9qE,EAAQuqE,eAAiBO,GAG7BhqE,EAAKyhT,MAAQl6R,EAAOroB,EAAQssE,eAC5BxrE,EAAKsuN,OAAS/mM,EAAOroB,EAAQuqE,eACjC,EAEAo2O,MAAO,SAASz3R,GACZ,IAGIomT,EAHAxuU,EAAOjI,KACPmH,EAAUc,EAAKd,QACf0E,EAAU5D,EAAKwpU,SAGftqU,EAAQuvU,UAAY9zU,IAGZ6zU,EAFe,SAAnBtvU,EAAQooB,QACgB,IAApBpoB,EAAQuvU,QACO,SAEA,QAGK,IAApBvvU,EAAQuvU,QACO,OAEA,OAIvB7qU,EAAQ+X,KA/vBI,oBA+vBoB6yT,IAGpCpmT,EAAKA,EAAKA,EAAK,IAAMpoB,EAAKipT,GAAG,GAAG7gS,GAAKpoB,EAAKipT,GAAG,GAAG7gS,GAEhDxkB,EAAQ+X,KAAK,CACT,gBAAiByM,IAGjBpoB,EAAK8pU,aAAe9pU,EAAK8pU,YAAYvqU,OAAS,GAC9CS,EAAK8pU,YAAYnuT,KAxwBT,gBAwwB6ByM,GAGzCpoB,EAAKipT,GAAGttS,KA1wBA,YA0wBiB3b,EAAK6pU,mBAA6B,SAAR,OAEnD7pU,EAAK0rB,WAAW1rB,EAAKwpU,SACzB,EAEA7qN,MAAO,WACH,IAAI3+G,EAAOjI,KAEXiI,EAAKs3D,UACLt3D,EAAKy9C,QACLz9C,EAAK0uU,gBAAiB,CAC1B,EAEAC,gBAAiB,SAASluU,GACtB,OAAOA,IAAUmuU,GAAU72U,KAAK01U,YAAahtU,EACjD,EAEA62D,QAAS,WACL,IAIIn1D,EAJAnC,EAAOjI,KACPsZ,EAAQrR,EAAKwqE,cACbM,EAAc9qE,EAAKd,QAAQuB,MAC3BA,EAAQT,EAAKS,QAGbT,EAAKyoU,YAAczoU,EAAK2rE,SAASC,SAAWd,IAC5CrqE,EAAQqqE,GAGR9qE,EAAK2uU,gBAAgBluU,IAEdT,EAAK6uU,sBAAwBl0U,GAAeqF,EAAK6uU,sBAAwBD,GAAU5uU,EAAKytU,YAAaztU,EAAK6uU,sBAAwB7uU,EAAK0uU,eAD9IvsU,GAAU,EAGHkP,IAAU1W,GAAe0W,IAAUrR,EAAK8uU,WAAc9uU,EAAK2rE,SAASojQ,eAC3E5sU,GAAU,GAGVA,IAEkB,OAAdnC,EAAKytU,MAA+B,KAAdztU,EAAKytU,MAAyB,KAAVhtU,EAC1CT,EAAK6uU,oBAAsB7uU,EAAKytU,KAAOhtU,EAEnCT,EAAKw2D,WACLx2D,EAAK6uU,oBAAsB7uU,EAAKytU,KAAOztU,EAAKd,QAAQuqE,eAAiBzpE,EAAKw2D,WAAWx2D,EAAKd,QAAQuqE,gBAAkBzpE,EAAKw2D,WAEzHx2D,EAAK6uU,oBAAsB7uU,EAAKytU,KAAO,KAG/CztU,EAAK8uU,UAAYz9T,EAEZrR,EAAKgvU,SAENhvU,EAAK4D,QAAQzB,QAAQ8yC,GAGzBj1C,EAAKmC,QAAQ8yC,IAGjBj1C,EAAKivU,QAAS,CAClB,EAEAt9Q,MAAO,WACH,OAAO55D,KAAKyxB,WAAWmG,MAC3B,EAEAiwR,QAAS,WACL,IAAI5/S,EAAOjI,KACPmH,EAAUc,EAAKd,QACfixB,EAAWnwB,EAAK4D,QAAQoB,GAAG,cAE3B9F,EAAQghB,SAAWvlB,IACnBuE,EAAQ2gB,QAAU3gB,EAAQghB,SAGzBhhB,EAAQ2gB,SAAWsQ,EACpBnwB,EAAKkgB,QAAO,GAEZlgB,EAAK0pE,SAAS1pE,EAAK4D,QAAQoB,GAAG,cAEtC,EAEAkqU,WAAY,SAAS14Q,GACjB,IAAI/1D,EAAQ1I,KAAKu2N,OAAO93J,GAMxB,OAJI/1D,IAAU9F,IACV8F,EAAQ1I,KAAK0pT,MAAMjrP,IAGhB/1D,CACX,EAEA0uU,cAAe,WACX,IAAIziT,EAAe,EASnB,OARe30B,KAAK4zE,SAASjtB,QAAQh6C,SAASgpO,QAAQ,YAE7C3yO,MAAK,WACV,IAAI6I,EAAUlJ,EAAE3C,MAEhB20B,GAAgBvoB,EAAYP,GAAS,EACzC,IAEO8oB,CACX,EAEA0iT,QAAS,SAAS7vU,GACd,IAKe4vT,EALXnvT,EAAOjI,KACPwsE,EAAOvkE,EAAKukE,KACZxgE,EAAS/D,EAAKd,QAAQ6E,OACtBgB,EAAU/E,EAAKisF,MAAMlnF,UACrBsqU,EAASt3U,KAAKmH,QAAQk5O,SAAWrgP,KAAKmH,QAAQk5O,QAAQ74O,OAG1D,GAAIA,GAAUS,EAAKd,QAAQiqU,eAAgB,CAIvC,GAFAha,EAAS5qP,EAAK7/D,SAASa,IAAIg/D,EAAK3/D,QAAQ,0BAA0BW,IAAIg/D,EAAK3/D,QAAQ,kCAAkCY,QAEhH++D,EAAK7/D,SAASM,GAAG,YAElB,YADAmqT,EAAO1pT,OAIX1B,EAAS/D,EAAK2rE,SAASjtB,QAAQ,GAAG5hC,aAAe/Y,EAASA,EAAS,OAEnEorT,EAAOprT,OAAOA,GAEC,SAAXA,IAGAA,GAFY/D,EAAKmvU,gBAIbE,IACAtrU,EAASA,GAAUI,EAAYzJ,EAAEsF,EAAKyxE,UAAY,IAAMttE,EAAYzJ,EAAEsF,EAAKiqU,iBAAmB,KAIlGoF,EACArvU,EAAK2rE,SAASjtB,QAAQv6C,YAAYJ,GAElC/D,EAAK2rE,SAASjtB,QAAQh6C,SAASP,YAAYJ,GAG1CgB,GACDw/D,EAAK7/D,SAASe,MAEtB,CAEA,OAAO1B,CACX,EAEAqhU,aAAc,SAAS1oU,GACnB,IAAIqP,EAEJhU,KAAKu3U,mBAEDv3U,KAAKoK,QAAQymF,GACblsF,EAAEwE,kBAEFnJ,KAAKyxU,SAAS7tT,KAAK2jS,GAAe,GAClCvnT,KAAKkxT,GAAGttS,KAAKqwN,GAAa,IAE1BjgO,EAAUhU,KAAK4zE,SAAS7tC,UAEpB/lC,KAAKyxU,SAASjkU,IAAIxN,KAAK+xU,aAAanuT,KAAKysT,EAAuBr8T,EAAQ4P,KAAK,OAGzF,EAEA2zT,iBAAkB,WACd,IAII9nU,EAAeo5S,EAJf5gT,EAAOjI,KACPwsE,EAAOvkE,EAAKukE,KAAK7/D,SACjBZ,EAAQygE,EAAK,GAAGr/D,MAAMpB,MACtBa,EAAU3E,EAAK2E,QAGnB,MAAM4/D,EAAKp+D,KAAKojC,IAAUzlC,GAAU9D,EAAK0rU,mBAyBzC,OArBAlkU,EAAgB3O,OAAO+O,iBAAmB/O,OAAO+O,iBAAiBjD,EAAQ,GAAI,MAAQ,EACtFi8S,EAAgB9/S,WAAW0G,GAAiBA,EAAc1D,QAAUI,EAAWS,GAE3E6C,GAAiBqT,EAAQoB,OACzB2kS,GAAiB9/S,WAAW0G,EAAckqH,aAAe5wH,WAAW0G,EAAcssJ,cAAgBhzJ,WAAW0G,EAAcgmN,iBAAmB1sN,WAAW0G,EAAcimN,mBAIvK3pN,EAD2B,eAA3BygE,EAAKvgE,IAAI,cACD48S,GAAiB18S,EAAWqgE,GAAQA,EAAKzgE,SAEzC88S,EAGZr8O,EAAKvgE,IAAI,CACLqwR,WAAY1vR,EAAQX,IAAI,eACxBF,MAAO9D,EAAKd,QAAQqwU,UAAY,OAASzrU,EACzCwwN,SAAUxwN,EACV6qJ,WAAY3uJ,EAAKd,QAAQqwU,UAAY,SAAW,WAEnDppU,KAAKojC,EAAOzlC,IAEN,CACX,EAEA8xT,cAAe,SAASl5T,GAChBA,EAAEgnU,aACF3rU,KAAKy3U,wBAILz3U,KAAKoK,QAAQ0mF,GACbnsF,EAAEwE,kBAEFnJ,KAAKyxU,SAAS7tT,KAAK2jS,GAAe,GAClCvnT,KAAKkxT,GAAGttS,KAAKqwN,GAAa,GAC1Bj0O,KAAKyxU,SAASjkU,IAAIxN,KAAK+xU,aAAa9/S,WAAWo+S,GAEvD,EAEAqH,WAAY,WACR,IAAI9jQ,EAAW5zE,KAAK4zE,SAChB+jQ,GAAiB/jQ,EAAS7tC,QAC1BzsB,EAAQgpB,GAAKsxC,EAASrtC,UAEtBjtB,IAAU1W,GAAe5C,KAAKmH,QAAQotU,gBAAkBoD,IACxDr+T,EAAQ,GAGRA,IAAU1W,EACVgxE,EAAS7tC,MAAMzsB,GACRq+T,GACP/jQ,EAASgkQ,cAAc,EAE/B,EAEAC,uBAAwB,SAAS7rU,GAC7B,IAAI8vJ,EAAK97J,KAAKkxT,GAAG37Q,SAAS,YAAYrrC,QAClC4tU,EAAc93U,KAAK4zE,SAASjtB,QAAQ5G,KAAKyvR,GACzCx3L,EAAU,EACV3jG,EAAY,QAEZyjS,EAAY,IAAuC,SAAjCA,EAAY,GAAG3qU,MAAME,UACxB,SAAXrB,IACAgsI,EAAUr3I,EAAM4C,QAAQmb,aAGxB1e,KAAK6L,QAAQ0sB,QAAQ,UAAU/wB,SAC/B6sC,EAAY,QAGhB2jG,GAAWjvI,WAAW+yJ,EAAG7vJ,IAAI,UAAYooC,EAAY,UAAW,IAAMtrC,WAAW+yJ,EAAGvmH,SApjC9E,4BAojCoGtpC,IAAI,WAAaooC,GAAY,IACvIyjS,EAAY7rU,IAAI,WAAaooC,EAAW2jG,GAEhD,EAEA+/L,sBAAuB,SAASzlT,GAC5B,IAAItmB,EAAShM,KAAKq3U,QAAQr3U,KAAKyxB,WAAWgD,WAAWjtB,QAAU8qB,GAC/DtyB,KAAK63U,uBAAuB7rU,GAC5BhM,KAAKg4U,+BAA+BhsU,EACxC,EAEAgsU,+BAAgC,SAAShsU,GACrC,GAAIhM,KAAKmH,QAAQk5O,SAAWrgP,KAAKmH,QAAQk5O,QAAQ74O,OAAQ,CACrD,IACI6X,EAAQ9b,EAAQ8b,MADTrf,KACoB4M,SAC3B8R,EAAY/d,EAAM4C,QAAQmb,YAFnB1e,KAINkyU,cAAcjmU,IAAKoT,EAAQ,eAAiB,gBAA6B,SAAXrT,EAAoB0S,EAAY,EACvG,CACJ,EAEAu5T,eAAgB,WACZ,IAAIrkQ,EAAW5zE,KAAK4zE,SAChBskQ,EAAgBtkQ,EAAS/nE,QAAQG,SAAW4nE,EAASjtB,QAAQ36C,SAE7DhM,KAAKmH,QAAQqwU,WACb5jQ,EAASjtB,QAAQ16C,IAAI,CACjByzM,UAAW,SACXG,UAAWq4H,EAAgB,SAAW,QAGlD,EAEAvE,gBAAiB,WACb,MAAqC,SAA9B3zU,KAAKmH,QAAQwpU,eAA4B3wU,KAAK6wU,UAAUhwU,eAAeW,SACnExB,KAAK8wU,SAASjwU,eAAeW,QAC5C,EAEA22U,aAAc,SAAS7lT,GACftyB,KAAKmH,QAAQ8uD,SACNj2D,KAAK2zU,oBAIX3zU,KAAKk0F,MAAMroF,QAAQoB,GAAG,YAWvBjN,KAAK+3U,sBAAsBzlT,IAV3BtyB,KAAKk0F,MAAMvqF,IAAI,OAAQ,SAAU2oB,GAC7B,OAAO,SAAU3tB,GACRA,EAAE0E,sBACHrJ,KAAK+3U,sBAAsBzlT,EAElC,EAAE9oB,KAAKxJ,KACX,EAAEuK,KAAKvK,KAAMsyB,IAEdtyB,KAAKk0F,MAAMvqF,IAAIqnF,EAAUhxF,KAAKi4U,eAAezuU,KAAKxJ,QAI1D,EAEAgnT,OAAQ,WACJ,IAAIx6O,EAAOxsE,KAEXwsE,EAAKA,KAAK7/C,KAAK,SAEmB,SAA9B6/C,EAAKrlE,QAAQwpU,cACbnkQ,EAAKokQ,SAAShvU,QAAQ4qE,EAAK4rQ,aAAa5uU,KAAKgjE,IAC7CA,EAAKqkQ,UAAUjvU,QAAQ4qE,EAAK6rQ,mBAAmB7uU,KAAKgjE,IACpDA,EAAKskQ,SACAlvU,SAAQ,KACA4qE,EAAK0nB,OAAU1nB,EAAK0nB,MAAMw4O,YAC3BlgQ,EAAK6rQ,qBAGT7rQ,EAAK0nB,MAAMw4O,YAAW,EAAK,KAGnClgQ,EAAK4rQ,cAEb,EAEAE,iBAAkB,WACd,IAAI9rQ,EAAOxsE,KAEPwsE,EAAKslQ,qBACLtlQ,EAAKwkQ,gBAE6B,SAA9BxkQ,EAAKrlE,QAAQwpU,eAA4BnkQ,EAAKqkQ,UAAUhwU,eAAeW,SAAWgrE,EAAKskQ,SAASjwU,eAAeW,UAC/GgrE,EAAK0nB,MAAMroF,QACNsqB,KAllCM,2BAmlCNgkB,OAAOx3C,EAAE6pE,EAAKqlQ,4BACd17S,KAAK,gBACLgkB,OAAOqyB,EAAKulQ,aACjBvlQ,EAAKq7O,WACEr7O,EAAKrlE,QAAQoxU,aACpB/rQ,EAAKA,KACA7/D,SACAyhF,QAAQzrF,EAAE6pE,EAAKolQ,iBACfz7S,KAAK,gBACLgkB,OAAOqyB,EAAKulQ,aAGrBvlQ,EAAKq7O,UAEb,EAEAuwB,aAAc,WACV,IAAI5rQ,EAAOxsE,KAEPwsE,EAAK0nB,QACL1nB,EAAKgsQ,mBAAqBhsQ,EAAKulQ,YAAcvlQ,EAAKulQ,YAAYniT,MAAQ,KACtE48C,EAAK0nB,MAAMlyF,UACXwqE,EAAKisQ,sBACLjsQ,EAAKksQ,uBAGTlsQ,EAAK0nB,MAAQ,IAAI3pE,EAAGunE,MAAMtlB,EAAKA,KAAK7/D,SAAS0Y,SAAS,oBAAqBtiB,EAAO,CAAC,EAAGypE,EAAKrlE,QAAQ+sF,MAAO,CACtG/B,OAAQ3lB,EAAK5/D,QACb2lF,KAAM/lB,EAAK6gQ,aAAa7jU,KAAKgjE,GAC7B9mB,MAAO8mB,EAAKqxP,cAAcr0T,KAAKgjE,GAC/B8lB,UAAW9lB,EAAKrlE,QAAQmrF,UACxBjzE,MAAO9b,EAAQ8b,MAAMmtD,EAAK5/D,SAC1BL,SAAUigE,EAAKrlE,QAAQqwU,UACvB5qT,UAAW4/C,EAAKrlE,QAAQqwU,UACxBnwN,SAAU,KACNrnH,KAAK2xU,uBAAuB,EAEhCpb,WAAY,KACRv2T,KAAK2xU,uBAAuB,KAIpCnlQ,EAAKmsQ,kBACT,EAEAC,qBAAsBj2U,EAAEQ,KACxBs0U,sBAAuB90U,EAAEQ,KAEzBk1U,mBAAoB,WAChB,IAAI7rQ,EAAOxsE,KAEPwsE,EAAK0nB,QACL1nB,EAAKgsQ,mBAAqBhsQ,EAAKulQ,YAAcvlQ,EAAKulQ,YAAYniT,MAAQ,KACtE48C,EAAK0nB,MAAMlyF,UACXwqE,EAAKisQ,sBACLjsQ,EAAKksQ,sBACLlsQ,EAAKA,KAAK7/D,SAASV,IAAI,CACnBF,MAAO,GACPC,OAAQ,GACRuwN,SAAU,MAIlB/vJ,EAAK0nB,MAAQ,IAAI3pE,EAAGyhT,YAAYx/P,EAAKA,KAAK7/D,SAAU,CAChDigU,eAAiBzlU,GACjB,0IAGiBqlE,EAAKrlE,QAAQmtB,MAAQ,8BAA8Bk4C,EAAKrlE,QAAQmtB,cAAgB,KAChFk4C,EAAKrlE,QAAQqe,YAAc,qDAAqDgnD,EAAKrlE,QAAQqe,aAAe,WAAa,IAC9H,UACCre,EAAQwkU,YACT,sCACIhrU,EAAM0P,KAAKg1S,aAAa,yBAAyB1kT,EAAMijB,KAAK,4CAA6C,CAAE00E,KAAM,IAAK7kE,SAAU,OAAQzjB,KAAM,UAClJ,SACE,IAVd,eAaAuiF,KAAM/lB,EAAK6gQ,aAAa7jU,KAAKgjE,GAC7B9mB,MAAO8mB,EAAKqxP,cAAcr0T,KAAKgjE,GAC/BsgQ,iBAAiB,EACjBD,UAAU,EACV3gU,SAAWsgE,EAAKrlE,QAAQ+sF,OAAS1nB,EAAKrlE,QAAQ+sF,MAAMhoF,UAAayD,SAASqP,KAC1E2sT,aAAa,EACbe,WAAYlgQ,EAAKskQ,SAASjwU,eAAeW,QACzC6lH,SAAU,KACNrnH,KAAK2xU,uBAAuB,EAEhCpb,WAAY,KACRv2T,KAAK2xU,uBAAuB,EAEhCz9O,MAAOnxF,EAAO,CAAC,EAAGypE,EAAKrlE,QAAQ+sF,MAAO,CAClC3nF,SAAUigE,EAAKrlE,QAAQqwU,cAI/BhrQ,EAAKmsQ,mBACLnsQ,EAAKosQ,sBACT,EAEAH,oBAAqB,WACbz4U,KAAK+xU,cACL/xU,KAAK+xU,YACA34S,IAAIp5B,KAAKmsB,IACTtf,QAAQ,kBACRR,SAELrM,KAAK+xU,YAAc,KAE3B,EAEA2G,oBAAqB,WACjB14U,KAAK4zE,SAASxtB,OAAO/5C,QACzB,EAEAssU,iBAAkB,WACd,IACIE,EADArsQ,EAAOxsE,KAGXwsE,EAAK8rQ,mBAED9rQ,EAAKulQ,aAAevlQ,EAAKgsQ,oBACzBhsQ,EAAKulQ,YAAYniT,IAAI48C,EAAKgsQ,oBAG9BhsQ,EAAK0nB,MAAMroF,QAAQuiF,QAAQ5hB,EAAKpmB,QAC3Bv8B,GAhuCG,YAguCY7pB,KAAKmsB,GAAInsB,KAAK+zU,eAAevqU,KAAKxJ,OAElDwsE,EAAKoH,WACLilQ,EAAgBrsQ,EAAKoH,SAASlrE,QAE1B8jE,EAAKoH,SAASklQ,QACdtsQ,EAAKoH,SAASklQ,SAIdtsQ,EAAKusQ,SAAWvsQ,EAAKrlE,QAAQ8uD,SAC7BuW,EAAKusQ,QAAQnsR,QAGjB4f,EAAKoH,SAAS5xE,UACdwqE,EAAK6mQ,UAAU,CAAEE,iBAAiB,IAClC/mQ,EAAKoH,SAASlrE,MAAMmwU,GAE5B,EAEAtmB,aAAc,SAAS5tT,GACnBhC,EAAEgC,EAAEg6E,eAAe/1D,YAAYwmT,EAAOzqU,EAAEe,OAAS6nT,EACrD,EAEAyrB,QAAS,SAASzmP,EAAM0mP,GACpB,IAAIhxU,EAAOjI,KACPk5U,EAAe31U,EAAQggB,WAAahgB,EAAQic,OAASjc,EAAQ41U,YAAc51U,EAAQ0jB,UAEvFsrE,EAAOA,IAAS3vF,EAAc2vF,GAAQtqF,EAAKisF,MAAMlnF,UAE5CisU,GAAiBC,GAAgBjxU,EAAKwpU,SAAS,KAAO93T,MACvD1R,EAAKmxU,UAAW,EAChBnxU,EAAKwpU,SAASrnU,QAAQo8N,GACtBv+N,EAAKmxU,UAAW,GAGpBnxU,EAAKsqF,EAAO1B,EAAOC,IACvB,EAEAuoP,gBAAiB,WACb,IAAIpxU,EAAOjI,KAENiI,EAAKqxU,mBAAqBrxU,EAAKS,UAAYmuU,GAAU5uU,EAAKsxU,sBAAuBtxU,EAAKS,WACvFT,EAAKsxU,eAAiBtxU,EAAKS,QAC3BT,EAAKqxU,mBAAoB,EACzBrxU,EAAKmC,QAAQslU,EAAS,CAAE8J,cAAevxU,EAAK0uU,iBAEpD,EAEA8C,eAAgB,WACRz5U,KAAK82U,sBAAwB92U,KAAK0I,SAClC1I,KAAKoK,QAAQ8yC,EAErB,EAEAu+Q,kBAAmB,WACf,IAAIxzT,EAAOjI,KAEXiI,EAAKwpB,WAAWxnB,OAAOghD,EAAchjD,EAAKyxU,sBAC1BzvU,OAAOkhD,EAAYljD,EAAK0xU,oBACxB1vU,OAAO,QAAShC,EAAK0zT,cACzC,EAEAie,mBAAoB,SAASzyU,EAASuB,GAElC,KADgBvB,EAAQuB,iBAAiBxF,MAAQiE,EAAQuB,MAAMlB,OAASL,EAAQuB,SAAWA,aAAiBxF,MAAQwF,EAAMlB,OAASkB,KACnHvB,EAAQ8uD,SAAkD,mBAAhC9uD,EAAQ8uD,QAAQ8xJ,YACtD,MAAM,IAAI/2M,MAAM,mKAExB,IAGJ,SAAS6lU,GAAUnuU,EAAOhD,GActB,OAbIgD,IAAU9F,GAAyB,KAAV8F,GAA0B,OAAVA,IAC5B,YAAThD,GACqB,kBAAVgD,IACPA,EAA2C,SAAnCA,EAAM+I,WAAWoH,eAE7BnQ,EAAQoK,QAAQpK,IACA,WAAThD,EACPgD,EAAQmK,OAAOnK,GACC,WAAThD,IACPgD,EAAQA,EAAM+I,aAIf/I,CACX,CAEA3F,EAAO0tU,GAAM,CACTh7S,QAAS,SAAS4N,EAAM7c,GACpB,IAAI5c,EAAKpC,EAAQ2tF,EAAW3uE,EAAW+uB,SAEvC,IAAKlS,GAAQA,EAAK7c,aAAeA,EAC7B,OAAQ,EAGZ,IAAK5c,EAAM,EAAGpC,EAAS2tF,EAAS3tF,OAAQoC,EAAMpC,EAAQoC,IAClD,GAAIy5B,IAAS8xD,EAASvrF,GAClB,OAAOA,EAIf,OAAQ,CACZ,EACAitU,UAAWA,KAGfl2U,EAAM4pB,GAAGkmT,KAAOA,GAEhBlmT,EAAG8mD,OAASo/P,GAAK1tU,OAAO,CACpBoF,KAAM,SAAS0D,EAAS1E,GACpBspU,GAAK1oU,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAAS1E,GACjCnH,KAAK65U,SAAW75U,KAAK6L,QAAQ+jB,KACjC,EAEA8pN,cAAe,SAASjoN,GACpB,IACI9kB,EADA1E,EAAOjI,KAGXiI,EAAKd,QAAQsqB,WAAaA,EAE1BxpB,EAAK6kE,cAED7kE,EAAK2rE,SAASC,UACd5rE,EAAK6xU,cAAgB,KACrB7xU,EAAK2rE,SAASuxE,SAAW,MAG7Bl9I,EAAK2rE,SAAS8lK,cAAczxO,EAAKwpB,YAE7BxpB,EAAKd,QAAQ6qE,UACb/pE,EAAKwpB,WAAW20C,SAGpBz5D,EAAS1E,EAAK8xU,kBAGV9xU,EAAK+xU,eAAertU,EAE5B,EAEA+4C,MAAO,WACH1lD,KAAKk0F,MAAMxuC,OACf,EAEAnf,OAAQ,SAAS8/Q,GACb,IAAIp+S,EAAOjI,KAEX,OAAIqmT,IAAczjT,EACPqF,EAAKwqE,cAELxqE,EAAKy6E,QAAQ2jO,GAAWz5Q,MAAK,WAChC3kC,EAAKgyU,cAAgBhyU,EAAKytU,KAAOztU,EAAKmsU,YACtCnsU,EAAK8uU,UAAY9uU,EAAKwqE,cAEtBxqE,EAAK0pU,uBACT,GAER,EAEAyC,UAAW,SAAS1rU,EAAOkB,GACvB,OAAO5J,KAAKA,KAAK0wU,UAAY,kBAAoB,kBAAkBhoU,EAAOkB,EAC9E,EAEAswU,eAAgB,SAASxxU,GACrB,IAAImD,EAAU7L,KAAK6L,QAAQ,GAE3B,GAAInD,IAAU9F,EACV,OAAOiJ,EAAQnD,MAED,OAAVA,IACAA,EAAQ,IAEZmD,EAAQnD,MAAQA,CAExB,EAEAyxU,gBAAiB,SAASzxU,EAAOkB,GAC7B,IAAIiC,EAAU7L,KAAK6L,QAAQ,GAG3B,GAAInD,IAAU9F,EACV,OAAOk0J,GAAkBjrJ,GAASnD,OAAS,GAG/CouJ,GAAkBjrJ,GAAS6mE,UAAW,EAElC9oE,IAAQhH,IACRgH,GAAO,GAGW,OAAVlB,GAA4B,KAAVA,IAEN,GAARkB,EACZ5J,KAAKo6U,QAAQ1xU,GAETA,EACAmD,EAAQnD,MAAQA,EAEhBmD,EAAQ4mE,cAAgB7oE,CAGpC,EAEAywU,kBAAmB,WACf,OAAO,CACX,EAEAD,QAAS,SAAS1xU,GACd,IAAIT,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACfyuU,EAASryU,EAAKosU,cAEbiG,IACDA,EAAS33U,EAAE,aACXsF,EAAKosU,cAAgBiG,EAErBzuU,EAAQsuC,OAAOmgS,IAGnBA,EAAOx5S,KAAKp4B,GACZ4xU,EAAO,GAAG5nQ,UAAW,CACzB,EAEA6nQ,UAAW,WACP,IAAItyU,EAAOjI,KACXs6B,aAAaryB,EAAKuyU,OAClBvyU,EAAKwyU,WAAW1tT,YAAYuiT,GAC5BrnU,EAAKwyU,WAAWtkT,KAAK,OAAO1oB,OAC5BxF,EAAKwpU,SAAS7tT,KAAK0sT,GAAW,GAC9BroU,EAAKuyU,MAAQ,KACbvyU,EAAKgsU,YACT,EAEAyG,UAAW,SAAS/1U,GAChB,IAAIsD,EAAOjI,KAEP2E,EAAE0E,uBAINpB,EAAK0yU,UAAW,EAEZ1yU,EAAKuyU,QAITvyU,EAAKuyU,MAAQthT,YAAW,WAChBjxB,EAAKwyU,aACLxyU,EAAKwpU,SAAS7tT,KAAK0sT,GAAW,GAC9BroU,EAAKwyU,WAAWp1T,SAASiqT,GACzBrnU,EAAKwyU,WAAWtkT,KAAK,OAAOzoB,OAC5BzF,EAAK+rU,aAEb,GAAG,MACP,EAEA4G,YAAa,WACT56U,KAAK26U,UAAW,EAChB36U,KAAKu6U,WACT,EAEAztQ,YAAa,WACT,IAIIljE,EAJA3B,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACf1E,EAAUc,EAAKd,QACfsqB,EAAatqB,EAAQsqB,YAAc,CAAC,EAGxCA,EAAavuB,MAAMD,QAAQwuB,GAAc,CAAErjB,KAAMqjB,GAAeA,EAE5DxpB,EAAKyoU,aACL9mU,EAAMiC,EAAQ,GAAG4mE,gBACN,IACPtrE,EAAQmS,MAAQ1P,GAGpB6nB,EAAW8U,OAAS16B,EACpB4lB,EAAWhC,OAAS,CAAC,CAAE1J,MAAO5e,EAAQssE,eACjB,CAAE1tD,MAAO5e,EAAQuqE,kBAGtCzpE,EAAKwpB,WACLxpB,EAAKwzT,qBAELxzT,EAAKyxU,qBAAuBzxU,EAAKyyU,UAAUlxU,KAAKvB,GAChDA,EAAK0xU,mBAAqB1xU,EAAK2yU,YAAYpxU,KAAKvB,GAChDA,EAAK0zT,cAAgB1zT,EAAKsyU,UAAU/wU,KAAKvB,IAG7CA,EAAKwpB,WAAa9wB,EAAMyN,KAAKE,WAAW84C,OAAO31B,GACvBjoB,KAAKyhD,EAAchjD,EAAKyxU,sBACxBlwU,KAAK2hD,EAAYljD,EAAK0xU,oBACtBnwU,KAAK,QAASvB,EAAK0zT,cAC/C,EAEAkf,WAAY,WACR76U,KAAK4zE,SAASknQ,YAClB,EAEAC,UAAW,WACP/6U,KAAK4zE,SAASonQ,WAClB,EAEAC,UAAW,WACP,OAAOj7U,KAAK4zE,SAASsnQ,WACzB,EAEAC,UAAW,WACP,OAAOn7U,KAAK4zE,SAASwnQ,WACzB,EAEAC,uBAAwB,SAASh1B,GAC7B,IAII/sS,EAJArR,EAAOjI,KACP4zE,EAAW3rE,EAAK2rE,SAChB0nQ,EAA+B,iBAAdj1B,EACjBk1B,EAAiBtzU,EAAKuzU,aAAevzU,EAAKuzU,YAAYh0U,OAS1D,OALI8R,EADAgiU,EACQC,IAAmBl1B,EAAYA,EAE/BzyO,EAAS6nQ,gBAAgBp1B,GAG9BzyO,EAAS8nQ,gBAAgBpiU,EACpC,EAEAqiU,8BAA+B,SAASt1B,GACpC,IAGIu1B,EAAsBv1B,EAM1B,OATWrmT,KACew7U,aADfx7U,KACmCw7U,YAAYh0U,QACvB,iBAAd6+S,GAIjBu1B,IAGGA,CACX,EAEAh5P,MAAO,SAASj+E,GACZ,IAKI85D,EACAojB,EACA7tE,EACA6nU,EACAC,EATA7zU,EAAOjI,KACP4zE,EAAW3rE,EAAK2rE,SAChB9hE,EAAMnN,EAAE2iC,QACRnZ,EAAOrc,IAAQ+Y,EAAKU,KACpBujQ,EAAY7mR,EAAKd,QAAQ8uD,QAO7B,GAAInkD,IAAQ+Y,EAAKQ,IAAM8C,EAAM,CACzB,GAAIxpB,EAAE0qN,OACFpnN,EAAK8gB,OAAOoF,OACT,CACH,IAAKylD,EAASC,UAAY5rE,EAAKipT,GAAG,GAAG/mQ,WAajC,OAZKliD,EAAK8zU,SACN9zU,EAAKwpB,WAAW9nB,IAAIuzC,GAAQ,WACxBj1C,EAAK8zU,QAAS,EACd9zU,EAAK26E,MAAMj+E,EACf,IAEAsD,EAAK8zU,QAAS,EACd9zU,EAAKwsU,iBAGT9vU,EAAEwE,kBAEK,EAGX6K,EAAU/L,EAAK2uF,SAEV3uF,EAAK8zU,QAAY/nU,IAAWA,EAAQjH,SAASsiU,KAC1ClhT,GACA0tT,EAAY5zU,EAAKgzU,aAEZnsD,GAAa+sD,GAAa,IAAQ5zU,EAAK2uF,WAAailP,IACrD5zU,EAAK8yU,cAGTc,EAAY5zU,EAAKkzU,aAEZrsD,GAAa+sD,GAAajoQ,EAASniD,WAAWu1B,QAAU,IAAQ/+C,EAAK2uF,WAAailP,IACnF5zU,EAAK4yU,eAKjBiB,EAAkB7zU,EAAK0zU,8BAA8B1zU,EAAK+zU,KAAK/zU,EAAK2uF,WAAailP,GAAa,GAE9F5zU,EAAKy6E,QAAQo5P,GAAiB,GAAMlvS,MAAK,WACrC,IAAIA,EAAO,WACF3kC,EAAKisF,MAAMlnF,WACZ/E,EAAK2+G,QAGmB,OAAxB3+G,EAAKsxU,eACLtxU,EAAKsxU,eAAiBtxU,EAAKS,QAE3BT,EAAKsxU,eAAiBtxU,EAAKw2D,WAAax2D,EAAKw2D,WAAWx2D,EAAKd,QAAQuqE,iBAAmBzpE,EAAKw2D,WAAa,IAElH,EAEIx2D,EAAKmC,QAAQ2yE,EAAQ,CAAEte,SAAUx2D,EAAKozU,uBAAuBS,GAAkB3sS,KAAMlnC,EAAK2uF,WAC1F3uF,EAAKy6E,QAAQ1uE,GAAS44B,KAAKA,GAE3BA,GAER,GACJ,CAEAjoC,EAAEwE,iBACF04E,GAAU,CACd,MAAO,GAAI/vE,IAAQ+Y,EAAKK,OAASpZ,IAAQ+Y,EAAKI,IAAK,CAC3ChjB,EAAKisF,MAAMlnF,WACXrI,EAAEwE,iBAGN6K,EAAU/L,EAAK2uF,SACfn4B,EAAWx2D,EAAKw2D,WAEXx2D,EAAKisF,MAAMlnF,WAAeyxD,GAAYx2D,EAAK64B,SAAW74B,EAAKyhT,MAAMjrP,KAClEzqD,EAAU,MAGd,IACIkyB,EADA+1S,EAAeh0U,EAAK8pU,aAAe9pU,EAAK8pU,YAAY,KAAOp4T,IAG/D,GAAI3F,EAAS,CAET,IAAIkoU,GAAgB,EAMpB,IAPAz9Q,EAAWmV,EAAS8nQ,gBAAgB9nQ,EAAS6nQ,gBAAgBznU,OAIzDkoU,EAAgBj0U,EAAKsuN,OAAO93J,KAAcgyQ,GAAKoG,UAAU5uU,EAAKS,eAAgBT,EAAKsuN,OAAO93J,KAG1Fy9Q,GAAiBj0U,EAAKmC,QAAQ2yE,EAAQ,CAAEte,SAAUA,EAAUtvB,KAAMn7B,IAClE,OAGJkyB,EAAYj+B,EAAKy6E,QAAQ1uE,EAC7B,MAAW/L,EAAKsd,SACRtd,EAAKoyU,qBAAuBpyU,EAAKyoU,YACjCzoU,EAAKmsU,UAAUnsU,EAAKsd,MAAMqK,OAE9B3nB,EAAK2rE,SAASlrE,MAAMT,EAAKsd,MAAMqK,QAG/B3nB,EAAK4hO,eACL5hO,EAAK4hO,cAAc5hO,EAAK2E,SAGxBqvU,GAAgBnqU,IAAQ+Y,EAAKI,IAC7BhjB,EAAK2E,QAAQuvU,WAETj2S,GAAuC,mBAAnBA,EAAU0G,KAC9B1G,EAAU0G,MAAK,WACX3kC,EAAK2+G,OACT,IAEA3+G,EAAK2+G,QAIb3+G,EAAKy9C,QACLm8B,GAAU,CACd,MAAO,GAAI/vE,IAAQ+Y,EAAKM,IAChBljB,EAAKisF,MAAMlnF,WACXrI,EAAEwE,iBAENlB,EAAKy9C,QACLm8B,GAAU,OACP,GAAI55E,EAAKisF,MAAMlnF,YAAc8E,IAAQ+Y,EAAKe,UAAY9Z,IAAQ+Y,EAAKc,QAAS,CAC/EhnB,EAAEwE,iBAEF,IAAIkrC,EAAYviC,IAAQ+Y,EAAKe,SAAW,GAAK,EAC7CgoD,EAASwoQ,WAAW/nS,EAAYu/B,EAASnzD,gBAEzCohE,GAAU,CACd,CAEA,OAAOA,CACX,EAEAw6P,WAAY,WACR,IAAIp0U,EAAOjI,KACP8zN,IAAa7rN,EAAKwpB,WAAWmG,OAAOpwB,OAEpCS,EAAK0yU,UAAY1yU,EAAKd,QAAQwsE,aAI7B1rE,EAAK2rE,SAASC,SAAY5rE,EAAK8zU,QAAWjoH,IAC3C7rN,EAAK8zU,QAAS,EACd9zU,EAAKwpB,WAAW20C,QAAQx5B,MAAK,WACzB3kC,EAAK8zU,QAAS,CAClB,IAER,EAEA7lM,SAAU,SAAS9nI,EAAMotU,EAAa9yU,GAClC,IAKIwsB,EACAupC,EACA69Q,EACAC,EARAt0U,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACf2wU,EAAc3wU,EAAQ,GACtBrE,EAAS4G,EAAK5G,OACdL,EAAU,GAKVyC,EAAM,EAMV,IAJI4xU,IACAr0U,EAAUq0U,GAGP5xU,EAAMpC,EAAQoC,IACjBsrB,EAAS,UACTupC,EAAWrwD,EAAKxE,GAChB0yU,EAAWr0U,EAAKyhT,MAAMjrP,IACtB89Q,EAAYt0U,EAAKsuN,OAAO93J,MAEN77D,KAGkB,KAFhC25U,GAAa,IAEC5mU,QAAQ,OAClB4mU,EAAYA,EAAU95U,QAAQutU,EAAY,WAG9C96S,GAAU,WAAaqnT,EAAY,KAGvCrnT,GAAU,IAENonT,IAAa15U,IACbsyB,GAAU3G,EAAW+tT,IAIzBn1U,GADA+tB,GAAU,YAIdrpB,EAAQwE,KAAKlJ,GAETuB,IAAU9F,IACV45U,EAAY9zU,MAAQA,EAChB8zU,EAAY9zU,QAAUA,IACtB8zU,EAAY/pQ,eAAiB,KAIF,IAA/B+pQ,EAAY/pQ,gBACZv9C,EAAS4hI,GAAkB0lL,KAGvBtnT,EAAOvP,aAAa0lS,EAAUA,EAG1C,EAEAl+O,OAAQ,WACJ,IAAIllE,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACf4wU,EAAS5wU,EAAQ+X,KAAK,QACtBujB,EAAOs1S,EAAS95U,EAAE,IAAM85U,GAAU5wU,EAAQgB,QAAQ,QAElDs6B,EAAK,KACLl/B,EAAKsuU,cAAgB,SAAS5xU,GACtBsD,EAAKd,QAAQu1U,4BACb/3U,EAAEwE,iBAGN+vB,YAAW,WACHjxB,EAAKd,QAAQw1U,mBACb10U,EAAK2rE,SAASgpQ,WAAa,IAG/B30U,EAAKS,MAAMT,EAAK4xU,SACpB,GACJ,EAEA5xU,EAAKquU,MAAQnvS,EAAKtd,GAAG,QAAS5hB,EAAKsuU,eAE3C,EAEAwD,cAAe,WACX,IAAI33U,EAAOpC,KAAKmH,QAAQ/E,KAExB,GAAKpC,KAAKmH,QAAQwsE,YAAlB,CAIA,IAAIonD,EAAgBp4H,EAAE,IAAM3C,KAAKmH,QAAQwsE,aACrChnE,EAASouH,EAAc3sH,KAAK,QAAUhM,GAE1C,IAAKuK,EACD,IAAK,IAAIpF,EAAI,EAAGA,EAAI0oU,EAAiB7tU,GAAMoF,UACvCmF,EAASouH,EAAc3sH,KAAK,QAAU6hU,EAAiB7tU,GAAMmF,KADdA,GAAK,GAS5D,OAAOoF,CAfP,CAgBJ,EAEAkwU,SAAU,WACN,IAGIlwU,EAHA1E,EAAOjI,KACPmH,EAAUc,EAAKd,QAInB,GAHcA,EAAQwsE,YAGT,CAGT,KAFAhnE,EAAS1E,EAAK8xU,iBAGV,OAGJ9xU,EAAK60U,qBAAuB70U,EAAK80U,gBAAgBvzU,KAAKvB,GACtDA,EAAK+0U,uBAAyB,GAE9B71U,EAAQ6qE,UAAW,EAEnBrlE,EAAOnD,KAAK,OAAO,WACfvB,EAAK0B,IAAI,OAAO,SAAShF,GACrBsD,EAAKg1U,eAAiBt4U,EAAE+D,OAAST,EAAKmsU,WAC1C,GACJ,IAEAznU,EAAOzC,MAAMwlU,EAASznU,EAAK60U,sBAGvBnwU,EAAOinE,SAASC,SAChB5rE,EAAKi1U,wBACLj1U,EAAK+xU,eAAertU,KAEpBA,EAAOhD,IAAIimU,GAAY,WACnB3nU,EAAKi1U,wBACDvwU,EAAOunF,MAAMlnF,WACbL,EAAO8kU,SAASrnU,QAAQo8N,EAEhC,IAEK75N,EAAOjE,SACRT,EAAKkgB,QAAO,GAGxB,CACJ,EAEA+0T,sBAAuB,WACnB,IAAIj1U,EAAOjI,KACP2M,EAAS1E,EAAK8xU,gBACdoC,EAAWpM,GAAQpjU,aAAkB4d,EAAG4lT,aA54DzC,OAEI,WA44DPxjU,EAAO8kU,SAASjkU,IAAIb,EAAOolU,aAAaloT,GAAG28M,GAAO,WAC9C75N,EAAO1C,OAAOylU,EAASznU,EAAK60U,sBAC5BnwU,EAAO1C,OAAOizC,EAAQj1C,EAAK60U,sBAC3BnwU,EAAOzC,MAAMgzC,EAAQj1C,EAAK60U,qBAC9B,IAEAnwU,EAAO8kU,SAASjkU,IAAIb,EAAOolU,aAAaloT,GAAGsyT,GAAU,WACjDxvU,EAAO1C,OAAOizC,EAAQj1C,EAAK60U,sBAC3BnwU,EAAO1C,OAAOylU,EAASznU,EAAK60U,sBAC5BnwU,EAAOzC,MAAMwlU,EAASznU,EAAK60U,qBAC/B,GACJ,EAEAC,gBAAiB,SAASp4U,GACtB,IAAIgI,EAAS3M,KAAK+5U,gBACdoD,EAAqBn9U,KAAK0I,QAE9B1I,KAAK22U,eAAiBhyU,EAAE60U,eAAiB7sU,EAAOgqU,eAE5C32U,KAAK4zE,SAASC,SACd7zE,KAAKo9U,gBAAgBzwU,GAAQ,GAGjC3M,KAAKg6U,eAAertU,EAAQwwU,EAChC,EAEAE,eAAgB,SAAS1wU,GACrB,IAAI1E,EAAOjI,KACP0I,EAAQT,EAAKmsU,aAAensU,EAAKg1U,eAEhCh1U,EAAK+0U,uBAAuBx1U,SAC7BS,EAAKg1U,eAAiB,MAGtBh1U,EAAK0uU,eACL1uU,EAAKm1U,gBAAgBzwU,GAAQ,GACtBjE,GACHA,IAAUmuU,GAAU5uU,EAAK2rE,SAASlrE,QAAQ,UAAWA,IACrDT,EAAKS,MAAMA,GAGVT,EAAKwpB,WAAWmG,OAAO,KAA8B,IAAxB3vB,EAAKwqE,eACnCxqE,EAAKm1U,gBAAgBzwU,GAAQ,IAE1B1E,EAAKwpB,WAAWgD,WAAWjtB,QAClCS,EAAKs+B,OAAOt+B,EAAKd,QAAQmS,OAG7BrR,EAAKkgB,SACLlgB,EAAKoxU,kBACLpxU,EAAKwxU,iBACLxxU,EAAK0uU,gBAAiB,CAC1B,EAEAqD,eAAgB,SAASrtU,EAAQwwU,GAC7B,IAAIl1U,EAAOjI,KACPy+D,EAAW9xD,EAAO8xD,WAClB6+Q,EAAc7+Q,EAAWA,EAASx2D,EAAKd,QAAQo2U,yBAA2B5wU,EAAO4pN,OAAO93J,GAAY,KACpGwT,EAAahqE,EAAKd,QAAQq2U,kBAAoB7wU,EAAOxF,QAAQuqE,eAYjE,IARI/kE,EAAOxF,QAAQs2U,sBACC,OAAhBH,GACEr1U,EAAKd,QAAQo2U,wBAA0Bt1U,EAAKd,QAAQo2U,yBAA2B5wU,EAAOxF,QAAQuqE,iBAC5F4rQ,EAAc3wU,EAAOjE,SAG7BT,EAAK6uU,oBAAsBqG,IAAuBv6U,EAAcu6U,EAAqBl1U,EAAKS,QAEtF40U,GAA+B,IAAhBA,EAAmB,CAElCxI,GADc7sU,EAAKwpB,WAAWlC,UAAY,CAAC,EACR0iD,GAEnC,IAAInoE,EAAU,WACV,IAAI4zU,EAAiBz1U,EAAK+0U,uBAAuB5mU,QAC7CsnU,GACAz1U,EAAKgC,OAAO,YAAayzU,IAG7BA,EAAiBz1U,EAAK+0U,uBAAuB,KAEzC/0U,EAAKiC,MAAM,YAAawzU,GAG5Bz1U,EAAKo1U,eAAe1wU,EACxB,EAEA1E,EAAK+0U,uBAAuBr7U,KAAKmI,GAEU,IAAvC7B,EAAK+0U,uBAAuBx1U,QAC5BS,EAAKiC,MAAM,YAAaJ,GAG5B7B,EAAKktU,YAAa,EAClBltU,EAAKwsU,cAAc,CACf1uT,MAAOksD,EACP7uB,SAAU,KACV16C,MAAO40U,IAEXr1U,EAAKktU,YAAa,CACtB,MACIltU,EAAKkgB,QAAO,GACZlgB,EAAKm1U,gBAAgBzwU,GACrB1E,EAAKoxU,kBACLpxU,EAAKwxU,iBACLxxU,EAAK0uU,gBAAiB,EAG1B1uU,EAAK0pU,uBACT,IAGJ,IAAIgM,GAAiB,cAEjB/J,GAAajzU,EAAM4pB,GAAGgK,gBAAgBxxB,OAAO,CAC7CoF,KAAM,SAAS0D,EAAS1E,GAsBpB,GArBAiqB,EAAOrpB,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAAS1E,GAEnCnH,KAAK6L,QAAQ+X,KAAK,OAASzc,EAAQy2U,MAAQz2U,EAAQy2U,KAAKptT,MAAS,WACpD3G,GAAGqqN,EAAQypG,GAAgB,KAAM39U,KAAK+iF,OAAOv5E,KAAKxJ,OAClD6pB,GAAG0jS,EAAaowB,GAAgB,MAAM,WAAah7U,EAAE3C,MAAMqlB,SAAS+pT,EAAQ,IAC5EvlT,GAlhEJ,aAkhEoB8zT,GAAgB,MAAM,WAAah7U,EAAE3C,MAAM+sB,YAAYqiT,EAAQ,IAExFjoU,GAAWA,EAAQ6sB,UACnBh0B,KAAK6L,QAAQ+X,KAAKld,EAAYS,EAAQ6sB,WAC/B7sB,GAAWA,EAAQ8sB,gBAC1Bj0B,KAAK6L,QAAQ+X,KAAKnd,EAAiBU,EAAQ8sB,gBAG3C1wB,EAAQic,OACRxf,KAAK69U,iBAGuB,aAA5B79U,KAAKmH,QAAQowL,YACbv3L,KAAK6L,QAAQ+X,KAh/DE,wBAg/DyB,GAGxC5jB,KAAKmH,QAAQk5O,SAAWrgP,KAAKmH,QAAQk5O,QAAQ74O,OAAQ,CACrD,IAAIw1J,EAAQh9J,KAAK6L,QAAQc,SAASwpB,KAAK,kBACnCkvI,EAAM1iK,EAAE,iEAC6B3C,KAAKmH,QAAQk5O,QAAQ74O,OADlD,gBAIZw1J,EAAM7iH,OAAOkrH,GAEbrlK,KAAKomD,OAASi/G,EAAIlvI,KAAK,eAEvBn2B,KAAK2mD,QAAU3mD,KAAK6L,QAAQ8gB,KAAK,uEAAuEhgB,SAExG3M,KAAK6L,QAAQwZ,SAxjER,eAyjET,MACIrlB,KAAK2mD,QAAU3mD,KAAK6L,QAAQ8gB,KAAK,wEAAwEhgB,SACzG3M,KAAKomD,OAASpmD,KAAK2mD,QAAQ6/H,OAAO7jL,EAAE,kDAAkD+K,QAAQqyC,OAC9F//C,KAAK6L,QAAQwZ,SAASkqT,GAG1BvvU,KAAK6zE,OAAM,GAEX7zE,KAAK89U,UAAYn9U,EAAMwvB,OAEvBnwB,KAAK+9U,iBAAmB,GAExB/9U,KAAK+5D,MAAQ,GACb/5D,KAAK48U,WAAa,GAClB58U,KAAK+kK,QAAU,GAEf,IAAIr8J,EAAQ1I,KAAKmH,QAAQuB,MAErBA,IACA1I,KAAK+kK,QAAU7hK,MAAMD,QAAQyF,GAASA,EAAM7B,MAAM,GAAK,CAAC6B,IAG5D1I,KAAKg+U,UACLh+U,KAAKqxT,aAELrxT,KAAK05O,cAAc15O,KAAKmH,QAAQsqB,YAEhCzxB,KAAKi+U,sBACT,EAEA92U,QAAS,CACL/E,KAAM,aACNsvE,eAAgB,KAChBkB,gBAAgB,EAChB2kH,YAAY,EACZnnL,SAAU,KACV8iU,cAAe,KACfC,mBAAoB,KACpBn/S,UAAW,KACXC,eAAgB,MAGpB5pB,OAAQ,CACL6pO,EACCh3L,EACD8zC,EACAD,EACA4+O,EACAC,EACAC,GAGHn2F,cAAe,SAAS7rO,GACpB,IAEInF,EAFAT,EAAOjI,KACPyxB,EAAa5jB,GAAU,CAAC,EAG5B4jB,EAAavuB,MAAMD,QAAQwuB,GAAc,CAAErjB,KAAMqjB,GAAeA,EAChEA,EAAa9wB,EAAMyN,KAAKE,WAAW84C,OAAO31B,GAEtCxpB,EAAKwpB,YACLxpB,EAAKwpB,WAAWxnB,OAAOizC,EAAQj1C,EAAK6kS,iBAEpCpkS,EAAQT,EAAKS,QAEbT,EAAKS,MAAM,IACXT,EAAK4rE,OAAM,GAEX5rE,EAAKS,MAAMA,IAEXT,EAAK6kS,gBAAkB7kS,EAAK0W,QAAQnV,KAAKvB,GAG7CA,EAAKmtU,YAAY3jT,EAAWlC,UAE5BtnB,EAAKwpB,WAAaA,EAAWjoB,KAAK0zC,EAAQj1C,EAAK6kS,iBAC/C7kS,EAAKi2U,cACT,EAEAL,eAAgB,WACZ,IAEIM,EAAQC,EAFRn2U,EAAOjI,KACPkuT,EAAeluT,KAAKmH,QAAQk5O,SAAWrgP,KAAKmH,QAAQk5O,QAAQ74O,OAtoEhD,eAsoE6EioU,EAEzF4O,EAAc,SAASl+T,GACnB,OAAQA,EAAMoJ,eAAiBpJ,GAAOqJ,eAAe,GAAGy5D,KAC5D,EAEJh7E,EAAK4D,QAAQge,GAAG,aAAe8zT,IAAgB,SAASh5U,GACpDw5U,EAASE,EAAY15U,EACzB,IAEAsD,EAAK4D,QAAQge,GAAG,WAAa8zT,IAAgB,SAASh5U,GAC9CA,EAAE0E,uBAIN+0U,EAAOC,EAAY15U,GAEftB,KAAKoU,IAAI2mU,EAAOD,GAAU,KAC1Bl2U,EAAKq2U,iBAAkB,EACvBr2U,EAAKs2U,cAAc57U,EAAEgC,EAAE0C,QAAQwF,QAAQqhT,GAAcj+R,IAAI,KAEjE,GACJ,EAEA40B,KAAM,WACF,OAAO7kD,KAAKyxB,WAAWozB,MAC3B,EAEA3yB,WAAY,SAAS/qB,GACjBiqB,EAAOrpB,GAAGmqB,WAAW3nB,KAAKvK,KAAMmH,GAEhCnH,KAAKg+U,UACLh+U,KAAKqxT,aACLrxT,KAAK6mP,UAED7mP,KAAKs0B,OAASntB,EAAQmtB,MACtBt0B,KAAKs0B,MAAMpC,WAAW/qB,EAAQmtB,OACvBt0B,KAAKs0B,QAA2B,IAAlBntB,EAAQmtB,QAC7Bt0B,KAAKs0B,MAAM02S,kBACXhrU,KAAKwxU,YAAYnlU,gBACVrM,KAAKwxU,YAEpB,EAEAxvU,QAAS,WACLhC,KAAK6L,QAAQutB,IAAIukT,IAEb39U,KAAK8sS,iBACL9sS,KAAKyxB,WAAWxnB,OAAOizC,EAAQl9C,KAAK8sS,iBAGxCxyQ,aAAat6B,KAAKw+U,WAElBptT,EAAOrpB,GAAG/F,QAAQuI,KAAKvK,KAC3B,EAEA07U,gBAAiB,SAASpiU,GACtB,OAAOtZ,KAAKyxB,WAAWgD,WAAWnb,EACtC,EAEAmH,aAAc,WACV,OAAOzgB,KAAK2mD,QAAQ,GAAG3hC,YAC3B,EAEA4yT,cAAe,SAASt+T,GACpB,IAAI61B,EAAOnvC,KAAK6L,QAAQ,GAAG0pC,SAASj8B,GAEhC61B,GACAnvC,KAAKsuQ,OAAOn/N,EAEpB,EAEAitS,WAAY,SAAS1zU,GACjB1I,KAAK2mD,QAAQ7vB,UAAU92B,KAAK2mD,QAAQ7vB,YAAcpuB,EACtD,EAEA4lQ,OAAQ,SAASn/N,GACb,GAAKA,EAAL,CAIIA,EAAK,KACLA,EAAOA,EAAK,IAGhB,IAAIwX,EAAU3mD,KAAK2mD,QAAQ,GACvB83R,EAAgBtvS,EAAKqmF,UACrBkpN,EAAmBvvS,EAAKxa,aACxBgqT,EAAmBh4R,EAAQ7vB,UAC3B8nT,EAAsBj4R,EAAQ3hC,aAC9B65T,EAAiBJ,EAAgBC,EAE7BC,EAAmBF,EACnBE,EAAmBF,EACZI,EAAkBF,EAAmBC,IAC5CD,EAAoBE,EAAiBD,GAGzCj4R,EAAQ7vB,UAAY6nT,CAnBxB,CAoBJ,EAEAnI,kBAAmB,SAAShiT,GACxB,GAAIA,IAAc5xB,EACd,OAAO5C,KAAK48U,WAAW/1U,QAG3B7G,KAAK48U,WAAapoT,EAClBx0B,KAAK+kK,QAAU/kK,KAAK8+U,WAAWtqT,EACnC,EAEAsqT,WAAY,SAAStqT,GACjB,IAAIhF,EAASxvB,KAAK++U,aAElB,OAAOp8U,EAAEkY,IAAI2Z,GAAW,SAASiqC,GAC7B,OAAOjvC,EAAOivC,EAClB,GACJ,EAEAy8Q,UAAW,WACP,IAAIlnU,EAAUhU,KAAK+lC,QAKf/xB,EAHCA,EAGSA,EAAQsyD,OAFR,EAKdtmE,KAAK+lC,MAAM/xB,EACf,EAEAonU,UAAW,WACP,IAAIpnU,EAAUhU,KAAK+lC,QAKf/xB,EAHCA,EAGSA,EAAQ+rC,OAFR//C,KAAK6L,QAAQ,GAAG0pC,SAAS/tC,OAAS,EAKhDxH,KAAK+lC,MAAM/xB,EACf,EAEA8mU,WAAY,WACR96U,KAAK+lC,MAAM/lC,KAAK6L,QAAQ,GAAG0pC,SAAS,GACxC,EAEAylS,UAAW,WACPh7U,KAAK+lC,MAAMzD,GAAKtiC,KAAK6L,QAAQ,GAAG0pC,UACpC,EAEAxP,MAAO,SAASsgR,GACZ,IAEI24B,EAFA/2U,EAAOjI,KACPqwB,EAAKpoB,EAAK61U,UAGd,GAAIz3B,IAAczjT,EACd,OAAOqF,EAAKk9I,SAGhBkhK,EAAY/jR,GAAKr6B,EAAK+zU,KAAK31B,IAC3BA,EAAY1jT,EAAE3C,KAAK6L,QAAQ,GAAG0pC,SAAS8wQ,IAEnCp+S,EAAKk9I,WACLl9I,EAAKk9I,SACAp4H,YAAYq9S,GACZn4S,WAAW0nL,GAEhB1xM,EAAKmC,QAAQ2mF,KAGjBiuP,IAAiB34B,EAAU,MAGvBA,EAAUhhS,SAAS+kT,GACnBniU,EAAKqmQ,OAAO+3C,GAEZA,EAAUziS,KAAK,KAAMyM,IAGzBpoB,EAAKk9I,SAAW65L,EAAe34B,EAAY,KAC3Cp+S,EAAKmC,QAAQ4mF,EACjB,EAEAiuP,WAAY,WACR,OAAOj/U,KAAK+lC,QAAU/lC,KAAK+lC,QAAQzsB,QAAU1W,CACjD,EAEAs8U,WAAY,SAASA,GACjBl/U,KAAKm/U,YAAcD,CACvB,EAEA34S,OAAQ,SAASs6I,GACb,IAOIg0J,EACA/9T,EARA7O,EAAOjI,KACPu3L,EAAatvL,EAAKd,QAAQowL,WAC1B6nJ,EAAiC,aAAf7nJ,IAA4C,IAAfA,EAC/Cq0H,EAAkB3jT,EAAK81U,iBACvBsB,EAAoB,CAACr/U,KAAK6L,QAAQsqB,KAAK,eAAe7c,SAEtDgmU,EAAQ,GAIZ,GAAIz+J,IAAYj+K,EACZ,OAAOgpT,EAAgB/kT,QAKJ,KAFvBg6K,EAAU54K,EAAK+zU,KAAKn7J,IAERr5K,SAAgC,IAAhBq5K,EAAQ,KAChCA,EAAU,IAGd,IAAI10I,EAAWxpC,EAAEypC,WAAW2J,UACxBwpS,EAAWt3U,EAAK+uU,aAEpB,OAAIuI,IAAaH,GAAmBn3U,EAAKu3U,kBAAkB3+J,GAChD10I,EAGPizS,IAAoBG,IAC2B,IAA/C58U,EAAE8yB,QAAQ6M,GAAKu+I,GAAU+qI,KAA4E,IAAjDjpT,EAAE8yB,QAAQ6M,GAAKu+I,GAAUw+J,IAEzEp3U,EAAK20U,WAAWp1U,QAAUS,EAAK8xD,MAAMvyD,SACrCS,EAAK20U,WAAa,CAAC30U,EAAK8xD,MAAM6xP,EAAgB,IAAIz8Q,OAG/ChD,IAKX0oS,GAFA/9T,EAAS7O,EAAKw3U,UAAU5+J,IAEPg0J,SACjBh0J,EAAU/pK,EAAO+pK,SAELr5K,SACJ43U,IACAv+J,EAAU,CAACv+I,GAAKu+I,KAGpBy+J,EAAQr3U,EAAKy6E,QAAQm+F,KAIrBy+J,EAAM93U,QAAUqtU,EAAQrtU,UACxBS,EAAKy3U,eAAiB,KACtBz3U,EAAKmC,QAAQ8yC,EAAQ,CACjBoiS,MAAOA,EACPzK,QAASA,KAKV1oS,EACX,EAEA0kG,SAAU,SAASvjI,GAKf,OAJAtN,KAAK+9U,iBAAiBvzU,OAAO8C,EAAU,GACvCtN,KAAK+kK,QAAQv6J,OAAO8C,EAAU,GAC9BtN,KAAK0/U,eAAiB,KAEf,CACHpyU,SAAUA,EACVmxD,SAAUz+D,KAAK48U,WAAWpyU,OAAO8C,EAAU,GAAG,GAEtD,EAEAm3M,SAAU,SAAS/7M,GACfA,EAAQxF,MAAMD,QAAQyF,IAAUA,aAAiByF,EAAkBzF,EAAM7B,MAAM,GAAK,CAAC6B,GAErF1I,KAAK+kK,QAAUr8J,EAEf1I,KAAK0/U,eAAiB,IAC1B,EAEAh3U,MAAO,SAASA,GACZ,IAEIm4K,EAFA54K,EAAOjI,KACPmsC,EAAWlkC,EAAK03U,eAGpB,OAAIj3U,IAAU9F,EACHqF,EAAK88J,QAAQl+J,SAGxBoB,EAAKw8M,SAAS/7M,GAETyjC,GAAiC,aAArBA,EAASmnB,UACtBrrD,EAAK03U,eAAiBxzS,EAAWxpC,EAAEypC,YAGnCnkC,EAAK4rE,UACLgtG,EAAU54K,EAAK23U,cAAc33U,EAAK88J,SAEF,aAA5B98J,EAAKd,QAAQowL,YACbtvL,EAAKs+B,QAAQ,GAGjBt+B,EAAKs+B,OAAOs6I,GAEZ10I,EAAS4J,WAGb9tC,EAAKk3U,aAAc,EAEZhzS,EACX,EAEA+f,MAAO,WACH,OAAOlsD,KAAK6L,QAAQ0pC,SAASk6R,EACjC,EAEA1sP,OAAQ,SAASp+E,GACT3E,KAAKs+U,gBAELt+U,KAAKs+U,iBAAkB,EAItB35U,EAAE0E,sBACHrJ,KAAKu+U,cAAc55U,EAAEg6E,cAE7B,EAEAs/P,qBAAsB,WAUlBj+U,KAAK6/U,UATe,WAChB,IAAI53U,EAAOjI,KACXs6B,aAAaryB,EAAKu2U,WAElBv2U,EAAKu2U,UAAYtlT,YAAW,WACxBjxB,EAAK63U,eACT,GAAG,GACP,EAE+Bt2U,KAAKxJ,KACxC,EAEAu+U,cAAe,SAASpvS,GACfnvC,KAAKoK,QAAQ8pO,EAAO,CAAE/kM,KAAMxsC,EAAEwsC,MAC/BnvC,KAAKumC,OAAO4I,EAEpB,EAEA4wS,WAAY,SAASr6U,EAAM2T,GACvB,IAEIg7C,EAFApsD,EAAOjI,KACP4J,EAAM,EAENo2U,EAAa,GAEjB,IAAK/3U,EAAKy3U,gBAAkBz3U,EAAKg4U,aAAev6U,EAAM,CAGlD,IAFAuC,EAAKg4U,WAAav6U,EAEXkE,EAAMyP,EAAO7R,OAAQoC,IACxBo2U,EAAWr+U,KAAKk1U,GAAUx9T,EAAOzP,GAAMlE,IAG3C2uD,EAAW,CAACrgD,EAASqF,KACjB,IAAK,IAAIzP,EAAM,EAAGA,EAAMo2U,EAAWx4U,OAAQoC,IACvC,GAAIoK,IAAYqF,EAAOzP,GACnB,OAAOA,EAGf,OAAQ,CAAC,EAGb3B,EAAKy3U,eAAiB,SAAS1rU,GAC3B,OAAOqgD,EAASrgD,EAASgsU,EAC7B,CACJ,CAEA,OAAO/3U,EAAKy3U,cAChB,EAEAQ,kBAAmB,SAASzhR,EAAUplD,GAClC,IAAI3Q,EAAQ1I,KAAK++U,aAAatgR,GAI9B,OAFgBz+D,KAAK+/U,kBAAkBr3U,EAAO2Q,EAEvC8mU,CAAUz3U,EACrB,EAEAs1U,QAAS,WACLh+U,KAAK++U,aAAep+U,EAAM6uB,OAAOxvB,KAAKmH,QAAQuqE,eAClD,EAEA+tQ,UAAW,SAAS5+J,GAChB,IAQI91I,EAEAzxB,EAAOm5D,EAVPxqE,EAAOjI,KACPu1C,EAAWttC,EAAK4D,QAAQ,GAAG0pC,SAC3BgiJ,EAAatvL,EAAKd,QAAQowL,WAC1Bq0H,EAAkB3jT,EAAK81U,iBACvBvpT,EAAYvsB,EAAK20U,WACjBvjU,EAASpR,EAAK88J,QACd8vK,EAAU,GACVttU,EAAI,EAQR,GAFAs5K,EAAUA,EAAQh6K,SAEC,IAAf0wL,GAAwB1W,EAAQr5K,QAa7B,GAAmB,aAAf+vL,EACP,KAAOhwL,EAAIs5K,EAAQr5K,OAAQD,IAGvB,GAFA+R,EAAQunK,EAAQt5K,GAEX5E,EAAE4yC,EAASj8B,IAAQvM,SAASsiU,GAIjC,IAAKtkS,EAAI,EAAGA,EAAI6gR,EAAgBpkT,OAAQujC,IAGpC,IAFA0nC,EAAgBm5O,EAAgB7gR,MAEVzxB,EAAO,CACzB3W,EAAE4yC,EAASk9B,IAAgB1lD,YAAYsiT,GAAWzrT,KAAK2sT,GAAe,GACtE,IAAI9xQ,EAAWz+D,KAAK+5D,MAAMzgD,GAAO61B,KAC7B7hC,EAAWtN,KAAKkgV,kBAAkBzhR,EAAUz+D,KAAK+kK,SAErD8vK,EAAQlzU,KAAK,CACT2L,SAAUA,EACVmxD,SAAUA,IAGdjqC,EAAUhqB,OAAOugC,EAAG,GACpB6gR,EAAgBphT,OAAOugC,EAAG,GAC1B81I,EAAQr2K,OAAOjD,EAAG,GAClB8R,EAAO7O,OAAOugC,EAAG,GAEC,EAClBxjC,GAAK,EACLwjC,GAAK,EACL,KACJ,MA3CgC,CACxC,KAAOxjC,EAAIqkT,EAAgBpkT,OAAQD,IAC/B5E,EAAE4yC,EAASq2Q,EAAgBrkT,KAAKwlB,YAAYsiT,GAAWzrT,KAAK2sT,GAAe,GAE3EsE,EAAQlzU,KAAK,CACT2L,SAAU/F,EACVk3D,SAAUjqC,EAAUjtB,KAI5BU,EAAK88J,QAAU,GACf98J,EAAK20U,WAAa,GAClB30U,EAAK81U,iBAAmB,EAC5B,CAmCA,MAAO,CACHl9J,QAASA,EACTg0J,QAASA,EAEjB,EAEA2K,kBAAmB,SAAS3+J,GAMxB,IALA,IACIpiH,EAAUnlD,EAAOhM,EADjBioC,EAAWv1C,KAAK6L,QAAQ,GAAG0pC,SAE3Bs/R,EAAU,GACVjrU,EAAM,EAEHA,EAAMi3K,EAAQr5K,OAAQoC,IACzB0P,EAAQunK,EAAQj3K,GAEhB60D,EAAWz+D,KAAK+5D,MAAMzgD,GAAO61B,MAC7B7hC,EAAWtN,KAAKkgV,kBAAkBzhR,EAAUz+D,KAAK+kK,WAEjC,IACZ8vK,EAAQlzU,KAAK3B,KAAK6wI,SAASvjI,IAC3B3K,EAAE4yC,EAASj8B,IAAQyT,YAAYsiT,IAIvC,QAAIwF,EAAQrtU,SACRxH,KAAKoK,QAAQ8yC,EAAQ,CACjBoiS,MAAO,GACPzK,QAASA,KAGN,EAIf,EAEAnyP,QAAS,SAASm+F,GACd,IAGIpiH,EAAUnlD,EAHVrR,EAAOjI,KACPu1C,EAAWttC,EAAK4D,QAAQ,GAAG0pC,SAC3BnnC,EAAOnG,EAAK8xD,MAEZulR,EAAQ,GACR11U,EAAM,EAMV,KAJuB,IAAnB04B,GAAKu+I,IACL54K,EAAK89B,MAAM86I,GAGRj3K,EAAMi3K,EAAQr5K,OAAQoC,IAGzB60D,EAAWrwD,EADXkL,EAAQunK,EAAQj3K,KAGD,IAAX0P,GAAiBmlD,IAIrBA,EAAWA,EAAStvB,KAEpBlnC,EAAK81U,iBAAiBp8U,KAAK2X,GAC3BrR,EAAK20U,WAAWj7U,KAAK88D,GACrBx2D,EAAK88J,QAAQpjK,KAAKsG,EAAK82U,aAAatgR,IAEpC97D,EAAE4yC,EAASj8B,IAAQ+L,SAASgqT,GAAWzrT,KAAK2sT,GAAe,GAE3D+O,EAAM39U,KAAK,CACP88D,SAAUA,KAGlB,OAAO6gR,CACX,EAEA7D,gBAAiB,SAAS5vU,GACtB,OAAOlJ,EAAEkJ,GAASuC,KAAK,eAC3B,EAEA4tU,KAAM,SAAS31B,GAQX,MAPyB,iBAAdA,EACPA,EAAY,CAACA,GACLpjT,EAAQojT,KAEhBA,EAAY,EADZA,EAAYrmT,KAAKy7U,gBAAgBp1B,MACNzjT,EAAcyjT,GAAa,IAGnDA,CACX,EAEAgL,WAAY,WACR,IAAIjhT,EACAjJ,EAAUnH,KAAKmH,QACfgsT,EAAY,CACZ/iT,SAAUjJ,EAAQiJ,SAClB8iU,cAAe/rU,EAAQ+rU,cACvBC,mBAAoBhsU,EAAQgsU,oBAYhC,IAAK,IAAIrhU,KATL3K,EAAQk5O,SACRl5O,EAAQk5O,QAAQ/+O,SAAQ,CAACuyL,EAAQtsL,KAC7B,IAAI64U,EAAevsJ,EAAO9tK,MAAQ8tK,EAAO9tK,MAAMtU,WAAaulL,EAG5Dm8H,EAAU,SAAW5rT,GAAKssL,EAAOzjL,UAFdhC,IAAQmgB,EAAW5tB,EAAM6uB,OAAO4wT,EAAbz/U,CAA2ByN,IAER,IAIjD+kT,GACZ/iT,EAAW+iT,EAAUrhT,KACe,mBAAb1B,IACnB+iT,EAAUrhT,GAAOnR,EAAMyP,SAASA,IAIxCpQ,KAAKmzT,UAAYA,CACrB,EAEAktB,kBAAmB,SAASx/J,GAIxB,IAHA,IAAIy/J,EAAa,GACb12U,EAAM,EAEHA,EAAMi3K,EAAQr5K,OAAQoC,IACrBi3K,EAAQj3K,KAAShH,GACjB09U,EAAW3+U,KAAKk/K,EAAQj3K,IAIhC,OAAO02U,CACX,EAEAV,cAAe,SAASvmU,EAAQwnK,GAC5B,IAEIvnK,EAFAlL,EAAOpO,KAAK+5D,MACZnwD,EAAM,EAKV,GAFAi3K,EAAUA,EAAUA,EAAQh6K,QAAU,IAEjCwS,EAAO7R,OACR,MAAO,GAGX,KAAOoC,EAAMwE,EAAK5G,OAAQoC,KAGP,KAFf0P,EAAQtZ,KAAKkgV,kBAAkB9xU,EAAKxE,GAAKulC,KAAM91B,MAG3CwnK,EAAQvnK,GAAS1P,GAIzB,OAAO5J,KAAKqgV,kBAAkBx/J,EAClC,EAEA0/J,kBAAmB,WACf,IAAI10U,EAAU7L,KAAK6L,QAAQ,GAEvBirB,EADU92B,KAAK2mD,QAAQ,GACH7vB,UACpB0pT,EAAa79U,EAAEkJ,EAAQ0pC,SAAS,IAAIvpC,SACpC0sD,EAAYr1D,KAAKyN,MAAMgmB,EAAY0pT,IAAe,EAEtD,GAAiC,GAA7B30U,EAAQ40U,kBACR,OAAO,KAMX,IAHA,IAAItxS,EAAOtjC,EAAQ0pC,SAASmjB,IAAc7sD,EAAQ60U,UAC9C3iS,EAAU5O,EAAKqmF,UAAY1+F,EAExBqY,GACH,GAAI4O,EAAS,CACT,GAAK5O,EAAKqmF,UAAYgrN,EAAc1pT,IAAcqY,EAAKib,YACnD,MAGJjb,EAAOA,EAAKib,WAChB,KAAO,CACH,GAAIjb,EAAKqmF,WAAa1+F,IAAcqY,EAAKwxS,gBACrC,MAGJxxS,EAAOA,EAAKwxS,eAChB,CAGJ,OAAO3gV,KAAK+5D,MAAMp3D,EAAEwsC,GAAM/gC,KAAK,gBACnC,EAEA8vU,aAAc,WACNl+U,KAAK4gV,aAAe5gV,KAAKmzT,UAAUggB,oBAC/BnzU,KAAKomD,OAAOv5C,QAAQ2jU,GAAehpU,OACnCxH,KAAKomD,OAAOv5C,QAAQ2jU,GAAe/iU,OAEnCzN,KAAKomD,OAAO34C,OAGhBzN,KAAK2mD,QAAQ2nN,OAAOtuQ,KAAK6/U,aAErB7/U,KAAKomD,OAAOv5C,QAAQ2jU,GAAehpU,OACnCxH,KAAKomD,OAAOv5C,QAAQ2jU,GAAe9iU,OAEnC1N,KAAKomD,OAAO14C,OAGhB1N,KAAK2mD,QAAQvtB,IAAI,SAAUp5B,KAAK6/U,WAExC,EAEAC,cAAe,WACX,IAAI1vU,EAAWpQ,KAAKmzT,UAAUggB,mBAC9B,GAAK/iU,EAAL,CAIA,IAAIywU,EAAc7gV,KAAKugV,oBAEnBM,GAAeA,EAAYtsR,MAAM9iD,WAAWjK,QAC5CxH,KAAKomD,OAAO/1C,KAAKD,EAASywU,EAAYtsR,OAL1C,CAOJ,EAEAusR,YAAa,SAAS9kT,GAClB,IAAImT,EAAO,2BAA4BnvC,KAAKmH,QAAQy2U,MAAQ59U,KAAKmH,QAAQy2U,KAAKmD,UAAa,+BAEvFtiR,EAAWziC,EAAQmT,KACnB6xS,EAAiC,IAAlBhlT,EAAQ1iB,MACvBo5D,EAAW12C,EAAQ02C,SACnBkuQ,EAAY5gV,KAAK4gV,YACjBK,EAAajhV,KAAKmH,QAAQk5O,SAAWrgP,KAAKmH,QAAQk5O,QAAQ74O,OAC1D05U,EAASllT,EAAQ1iB,MAAQ,GAAM,EAAI,mBAAqB,GAuC5D,OApCI61B,GADA8xS,EACS,qBAAuBC,EAExB,qBAGRF,GAAgBhlT,EAAQi8B,WACxB9oB,GAAQ,YAGRnT,EAAQmlT,mBAAqBF,IAC7B9xS,GAAQ,WAGRujC,IACAvjC,GAAQ,eAGZA,GAAQ,qBAAuBujC,EAAW,OAAS,SAAW,wBAA0B12C,EAAQ1iB,MAAQ,KACpG2nU,EACA9xS,GAAQnvC,KAAKohV,eAAe3iR,IAE5BtvB,GAAQ,kCACRA,GAAQnvC,KAAKmzT,UAAU/iT,SAASquD,GAChCtvB,GAAQ,WAGR6xS,GAAgBhlT,EAAQi8B,SAEpB9oB,GADA8xS,EACQ,mDAAqDjhV,KAAKmzT,UAAU+f,cAAcl3S,EAAQu4B,OAAS,iBAEnG,wCAA0Cv0D,KAAKmzT,UAAU+f,cAAcl3S,EAAQu4B,OAAS,SAE7FqsR,GAAaK,IACpB9xS,GAAQ,sDAGLA,EAAO,OAClB,EAEAiyS,eAAgB,SAAS3iR,GAGrB,IAFA,IAAItvB,EAAO,GAEF5nC,EAAI,EAAGA,EAAIvH,KAAKmH,QAAQk5O,QAAQ74O,OAAQD,IAAK,CAClD,IAAIqrS,EAAe5yS,KAAKmH,QAAQk5O,QAAQ94O,GAAGwE,MACvCumU,EAAkB94T,SAASo5R,EAAc,IACzC2/B,EAAa,GAEb3/B,IAAiB9pS,MAAMwpU,KACvBC,GAAc,GAAG5xU,EAAMijB,KAAK,mBAAmB0uT,IAAkBnD,EAAqB5hU,KAAKqlS,GAAgB,IAAM,SAGrHzjQ,GAAQ,4BAA8BojS,EAAa,IACnDpjS,GAAQnvC,KAAKmzT,UAAU,SAAW5rT,GAAGk3D,GACrCtvB,GAAQ,SACZ,CAEA,OAAOA,CACX,EAEA03M,QAAS,WACL,IACIw6F,EAGArlT,EAKAu4B,EAAO0D,EAAUltB,EATjB16B,EAAO,GAEP9I,EAAI,EACJqC,EAAM,EAEN03U,EAAc,GACd1pT,EAAO53B,KAAKyxB,WAAWmG,OACvBve,EAASrZ,KAAK0I,QAGdk4U,EAAY5gV,KAAK4gV,YAErB,GAAIA,EACA,IAAKr5U,EAAI,EAAGA,EAAIqwB,EAAKpwB,OAAQD,IAIzB,IAHAgtD,EAAQ38B,EAAKrwB,GACb0wD,GAAW,EAENltB,EAAI,EAAGA,EAAIwpB,EAAMrI,MAAM1kD,OAAQujC,IAChC/O,EAAU,CACN02C,SAAU1yE,KAAKurT,UAAUh3P,EAAMrI,MAAMnhB,GAAI1xB,GACzC81B,KAAMolB,EAAMrI,MAAMnhB,GAClBwpB,MAAOA,EAAM7rD,MACbuvD,SAAUA,EACVkpR,kBAAmBp2S,IAAMwpB,EAAMrI,MAAM1kD,OAAS,EAC9C8R,MAAO1P,GACX03U,EAAY13U,GAAOoyB,EACnBpyB,GAAO,EAEPyG,GAAQrQ,KAAK8gV,YAAY9kT,GACzBi8B,GAAW,OAInB,IAAK1wD,EAAI,EAAGA,EAAIqwB,EAAKpwB,OAAQD,IACzBy0B,EAAU,CAAE02C,SAAU1yE,KAAKurT,UAAU3zR,EAAKrwB,GAAI8R,GAAS81B,KAAMvX,EAAKrwB,GAAI+R,MAAO/R,GAE7E+5U,EAAY/5U,GAAKy0B,EAEjB3rB,GAAQrQ,KAAK8gV,YAAY9kT,GAIjCh8B,KAAK+5D,MAAQunR,EAEbD,EAAmB1+U,EAAE0N,GACrB1P,EAAM+qC,+BAA+B21S,EAAkB,CAAC,QAAS,qBAEjErhV,KAAK6L,QAAQ+gD,QAAQzS,OAAOknS,GAExBT,GAAaU,EAAY95U,QACzBxH,KAAK8/U,eAEb,EAEAv0B,UAAW,SAAS9sP,EAAUplD,GAE1B,QADcrZ,KAAKg3U,cAA4C,aAA5Bh3U,KAAKmH,QAAQowL,cACe,IAA9Cv3L,KAAKkgV,kBAAkBzhR,EAAUplD,EACtD,EAEA+7T,YAAa,SAAS7lT,GAClBvvB,KAAKuhV,cAAgBx+U,EAAO,CAAC,EAAGwsB,EACpC,EAEAynT,WAAY,WAKR,OAJKh3U,KAAKuhV,eACNvhV,KAAKo1U,YAAYp1U,KAAKyxB,WAAWlC,WAG7B5uB,EAAMyN,KAAKiiD,MAAMsD,eAAe3zD,KAAKyxB,WAAWlC,SAAUvvB,KAAKuhV,cAC3E,EAEA5iU,QAAS,SAASha,GACd,IAIImS,EAJA7O,EAAOjI,KACPotC,EAASzoC,GAAKA,EAAEyoC,OAChBo0S,EAAmBv5U,EAAKd,QAAQq6U,iBAChCC,EAA0B,eAAXr0S,EAGnBnlC,EAAKmC,QAAQulU,GAEb1nU,EAAKi2U,eAELj2U,EAAK4+O,UAEL5+O,EAAK4rE,OAAM,GAEP4tQ,GAA2B,WAAXr0S,GAChBt2B,EAoDZ,SAAyB47D,EAAUgvQ,GAC/B,IAEIjjR,EACAN,EACA52D,EAAGwjC,EAJH24B,EAAcg+Q,EAAal6U,OAC3Bm6U,EAAiBjvQ,EAASlrE,OAK1BynS,EAAU,GACV2yC,EAAY,GAEhB,GAAID,EACA,IAAKp6U,EAAI,EAAGA,EAAIo6U,EAAgBp6U,IAAK,CAIjC,IAHAk3D,EAAWiU,EAASnrE,GACpB42D,GAAQ,EAEHpzB,EAAI,EAAGA,EAAI24B,EAAa34B,IACzB,GAAI0zB,IAAaijR,EAAa32S,GAAI,CAC9BozB,GAAQ,EACR8wO,EAAQttS,KAAK,CAAE2X,MAAO/R,EAAG4nC,KAAMsvB,IAC/B,KACJ,CAGCN,GACDyjR,EAAUjgV,KAAK88D,EAEvB,CAGJ,MAAO,CACHwwO,QAASA,EACT2yC,UAAWA,EAEnB,CArFqBC,CAAgB55U,EAAK20U,WAAYj4U,EAAEunD,QAEjC+iP,QAAQznS,SACXi6U,EACAx5U,EAAKmC,QAAQylU,EAAsB,CAC/B3jR,MAAOp1C,EAAOm4R,UAGlBhnS,EAAKS,MAAMT,EAAK62U,WAAWhoU,EAAO8qU,aAGnC35U,EAAK+uU,cAAgB/uU,EAAKk3U,aAAel3U,EAAKmuU,cACrDnuU,EAAK89B,MAAM,GACP99B,EAAKk3U,cACLl3U,EAAKk3U,aAAc,EACnBl3U,EAAK81U,iBAAmB91U,EAAK23U,cAAc33U,EAAK88J,QAAS98J,EAAK81U,oBAE1DyD,GAAsBp0S,GAAqB,QAAXA,GACxCnlC,EAAKS,MAAMT,EAAK88J,SAGhB98J,EAAK03U,gBACL13U,EAAK03U,eAAe5pS,UAGxB9tC,EAAKmC,QAAQwlU,EACjB,EAEA/7P,MAAO,SAASA,GACZ,GAAIA,IAAUjxE,EACV,OAAO5C,KAAK8hV,OAGhB9hV,KAAK8hV,OAASjuQ,CAClB,EAEA+sQ,UAAW,WACP,OAAQ5gV,KAAKyxB,WAAW8iC,SAAW,IAAI/sD,MAC3C,IAKJ,SAAS86B,GAAKkqC,GACV,OAAOA,EAAKA,EAAKhlE,OAAS,EAC9B,CAEA,SAASsvJ,GAAkBvwH,GACvB,IAAIjtB,EAAQitB,EAAOksC,cACnB,OAAOn5D,GAAS,EAAIitB,EAAOp/B,QAAQmS,GAAS,CAAC,CACjD,CAqCA,SAAS47T,GAAkBhmT,GACvB,SAAKA,GAAcvsB,EAAEqzB,cAAc9G,OAI/BA,EAAW20B,UAAY30B,EAAW20B,QAAQr8C,OAKlD,CAEA,SAASstU,GAAsB5lT,EAAYnJ,GACvC,IAAI89B,EACAsa,GAAQ,EAmBZ,OAjBIjvC,EAAW20B,UACXA,EAAUlhD,EAAE07B,KAAKnP,EAAW20B,SAAS,SAASt0B,GAE1C,OADA4uC,EAAQ22Q,GAAsBvlT,EAAQxJ,GAClCwJ,EAAOs0B,QACAt0B,EAAOs0B,QAAQr8C,OAEf+nB,EAAOxJ,OAASA,CAE/B,IAEKo4C,GAASjvC,EAAW20B,QAAQr8C,SAAWq8C,EAAQr8C,SAChD22D,GAAQ,GAGZjvC,EAAW20B,QAAUA,GAGlBsa,CACX,CAhFA5zC,EAAG2M,OAAO08S,IAkFVjzU,EAAMwyB,cAAcoY,eAAe,OAAQ,UAE9C,CAnlGD,CAmlGGzqC,OAAOH,MAAM+G,QACF/G,MAEJA,MAAM+G,QAmBhB,SAAU/E,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACf4pB,EAAK5pB,EAAM4pB,GACXwkD,EAASpuE,EAAM4tB,WACf6C,EAAS7G,EAAG6G,OACZmD,EAAkBhK,EAAGgK,gBACrB46S,EAAuB,kBAIvB4S,EAAY,cACZC,EAAa,cAEbC,EAAY,0BAIZ52B,EAAW,aACX+e,EAAU,UACVgF,EAAQ,UACRlyR,EAAS,SACTg3L,EAAQ,QACRguG,EAAY,YACZC,EAAa,aAEbnxP,EAAW,WACXD,EAAa,aAEby/O,EAAgB,qBAEhB4R,EAAkB,eAEtB,SAASC,EAAStnU,GACd,OAAOA,EAAMA,EAAMvT,OAAS,EAChC,CAEA,SAASwsD,EAAQtrD,GACb,OAAOA,aAAiBxF,MAAQwF,EAAQ,CAACA,EAC7C,CAEA,SAAS45U,EAAY7jR,GACjB,MAA2B,iBAAbA,GAA6C,iBAAbA,GAA6C,kBAAbA,CAClF,CAMA,SAASx/C,EAAYtS,EAAQ0gB,EAAWwD,GACpC,IAAIhlB,EAAU8D,SAASkP,cAAcgS,GAAW,OAMhD,OALIxD,IACAxhB,EAAQwhB,UAAYA,GAExB1gB,EAAOsS,YAAYpT,GAEZA,CACX,CAyFA,SAASsE,EAAOtE,EAASuC,EAAM+kT,GAC3B,IAAIj8E,EAAei8E,EAAU/iT,SACzB6wU,EAAajhV,KAAKmH,QAAQk5O,SAAWrgP,KAAKmH,QAAQk5O,QAAQ74O,OAC1D05U,EAAS9yU,EAAKkL,MAAQ,GAAM,EAAI,kBAAoB,GAgBxD,GAdAzN,EAAUlJ,EAAEkJ,GAEPuC,EAAK+gC,OACN+nM,EAAei8E,EAAUovB,qBAGV,IAAfn0U,EAAKkL,OAAetZ,KAAKomD,QAAUh4C,EAAKmmD,OACxCv0D,KAAKomD,OAAO/1C,KAAK8iT,EAAUggB,mBAAmB/kU,EAAKmmD,QAGvD1oD,EACK+X,KAAK,WAAYxV,EAAK+gC,KAAO/gC,EAAK+gC,KAAKue,IAAM,IAC7C9pC,KAAK,oBAAqBxV,EAAKkL,OAEhC2nU,GAAc7yU,EAAK+gC,KAAM,CACrB+xS,EAAO15U,OAAS,EAChBqE,EAAQwZ,SAAS67T,GAEjBr1U,EAAQkhB,YAAY,mBAGxB,IAAIy1T,EAAkB7/U,EAgC9B,SAAuBwE,EAASs3D,EAAU00P,GAGtC,IAFA,IAAIhkR,EAAO,GAEF5nC,EAAI,EAAGA,EAAIJ,EAAQk5O,QAAQ74O,OAAQD,IAAK,CAC7C,IAAIqrS,EAAezrS,EAAQk5O,QAAQ94O,GAAGwE,MAClCumU,EAAkB94T,SAASo5R,EAAc,IACzC2/B,EAAa,GAEjB,GAAI3/B,EAAc,CACd,IAAI6vC,EAAa,GAAGnQ,IAAkBnD,EAAqB5hU,KAAKqlS,GAAgB,IAAM,OACtF2/B,EAAa,GAAG5xU,EAAMijB,KAAK,mBAAmB6+T,MAAe9hV,EAAMijB,KAAK,uBAAuB6+T,IACnG,CAEAtzS,GAAQ,4BAA8BojS,EAAa,IACnDpjS,GAAQgkR,EAAU,SAAW5rT,GAAGk3D,GAChCtvB,GAAQ,SACZ,CAEA,OAAOA,CACX,CAnDgCuzS,CAAc1iV,KAAKmH,QAASiH,EAAK+gC,KAAMgkR,IAC/DxyT,EAAM+qC,+BAA+B82S,EAAiB,CAAC,QAAS,cAChE32U,EAAQ+gD,QAAQzS,OAAOqoS,EAC3B,MACI32U,EAAQsqB,KAAK,IAAM8rT,GAAW51U,SAC9BR,EAAQsqB,KAAK,qBAAqB9lB,KAAK6mO,EAAa9oO,EAAK+gC,MAAQ,CAAC,IAGtEtjC,EAAQ+c,YAAYwhT,EAASh8T,EAAK4F,SAClCnI,EAAQ+c,YAAYyiS,EAAUj9S,EAAKskE,UACnC7mE,EAAQ+c,YAAY,UAAWxa,EAAK6pD,UACpCpsD,EAAQ+c,YAAY,SAAUxa,EAAK+yU,mBACnCt1U,EAAQ+c,YAAY,kBAAmBxa,EAAK+gC,MAEzB,IAAf/gC,EAAKkL,OAAelL,EAAK6pD,SACrBgpR,EACAt+U,EAAE,mDAAqDwwT,EAAU+f,cAAc9kU,EAAKmmD,OAAS,kBACxFroD,SAASL,GAEdlJ,EAAE,cAAgBs/U,EAAY,WACzB/1U,SAASL,GACTwE,KAAK8iT,EAAU+f,cAAc9kU,EAAKmmD,QAEpCnmD,EAAKmmD,OAAS0sR,GACrBp1U,EAAQsuC,OAAOx3C,EAAE,uDAGjByL,EAAK8W,MAAQtiB,GAnFrB,SAAkBiJ,EAAS1H,GACvB0H,EAAQsB,MAAMw1U,gBAAkB,cAAgBx+U,EAAI,MACpD0H,EAAQsB,MAAMwmC,UAAY,cAAgBxvC,EAAI,KAClD,CAiFQmJ,CAASzB,EAAQ,GAAIuC,EAAK8W,IAElC,CA0DA,SAAS09T,EAAgB/6T,GACrB,OAAOA,GAA+B,aAApBA,EAAQyrC,OAC9B,CAEA,IAAIogR,EAAcn/S,EAAgBxxB,OAAO,CACrCoF,KAAM,SAAS0D,EAAS1E,GACpB,IA/MsBisU,EAUtB57K,EATAqrL,EA8MI56U,EAAOjI,KACP8iV,EAAiB37U,EAAQk5O,SAAWl5O,EAAQk5O,QAAQ74O,OAlQ5C,gCADD,mCAqQXS,EAAK4rE,OAAM,GACX5rE,EAAK86U,WAAY,EAEjB3xT,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GAE9Bc,EAAKd,QAAQq5U,aACdv4U,EAAKd,QAAQq5U,YAxNKpN,EAwN6BjsU,EAAQisU,UAvN3DyP,EAAWlgV,EAAE,sBAAwBywU,EAAxB,kLAWRnnU,IAAI,CACTqB,SAAU,WACVkf,KAAM,YACN0hE,WAAY,WAEhB20P,EAAS32U,SAASyD,SAASqP,MAC3Bw4I,EAAazuJ,WAAWpI,EAAM4O,kBAAkBszU,EAAS1sT,KAAK,gBAAgB,GAAI,CAAC,WAAWnqB,QAC9F62U,EAASx2U,SAEFmrJ,IAsMHrwJ,EAAUc,EAAKd,QAEfc,EAAK4D,QAAQ+X,KAAK,OAAQ,WAE1B,IAAI41D,EAAkB,IAAMspQ,EAAel4U,MAAM,KAAKC,KAAK,KACvD+B,EAAU3E,EAAK4D,QAAQgB,QAAQ2sE,GAInC,GAFAvxE,EAAK0+C,QAAU1+C,EAAK2E,QAAUA,EAAQpF,OAASoF,EAAU3E,EAAK4D,QAAQ8gB,KAAK,iCAAmCm2T,EAAiB,YAAYn2U,SAEvI1E,EAAKd,QAAQk5O,SAAWp4O,EAAKd,QAAQk5O,QAAQ74O,OAAQ,CACrD,IAAIw1J,EAAQ/0J,EAAK4D,QAAQgB,QAAQ,iBAAiBspB,KAAK,kBACnDkvI,EAAM1iK,EAAE,iEAC6BsF,EAAKd,QAAQk5O,QAAQ74O,OADlD,gBAIZw1J,EAAM7iH,OAAOkrH,GAEbp9J,EAAKm+C,OAASi/G,EAAIlvI,KAAK,eACvBluB,EAAK4D,QAAQwZ,SAAS29T,+BAC1B,MACI/6U,EAAKm+C,OAASn+C,EAAK0+C,QAAQ6/H,OAAO,kDAAsCzmI,OACxE93C,EAAK4D,QAAQwZ,SA5RX,aA+RFle,EAAQ6sB,UACRh0B,KAAK6L,QAAQ+X,KAAK,aAAczc,EAAQ6sB,WACjC7sB,EAAQ8sB,gBACfj0B,KAAK6L,QAAQ+X,KAAK,kBAAmBzc,EAAQ8sB,gBAGjDhsB,EAAK4D,QAAQge,GAAG,aAAeu4T,EAAiB,2BAA2B,WAAaz/U,EAAE3C,MAAMqlB,SAAS+pT,EAAQ,IACpGvlT,GAAG,aAAeu4T,EAAiB,MAAM,WAAaz/U,EAAE3C,MAAM+sB,YAAYqiT,EAAQ,IAE/FnnU,EAAK88J,QAAU/wG,EAAQ/rD,EAAKd,QAAQuB,OACpCT,EAAKg7U,mBAAqB,GAC1Bh7U,EAAKi7U,iBAAmB,GACxBj7U,EAAKk7U,YAAc,CAAC,EACpBl7U,EAAKm7U,cAAgB,GACrBn7U,EAAK61U,UAAYn9U,EAAMwvB,OAEvBloB,EAAKopT,aAELppT,EAAKyxO,cAAcvyO,EAAQsqB,YAE3BxpB,EAAK0+C,QAAQ98B,GAAG,SAAWu4T,EAAiBzhV,EAAM0kC,UAAS,WACvDp9B,EAAK6jT,eACL7jT,EAAKo7U,mBACT,GAAGl8U,EAAQm+B,QAEXr9B,EAAKq7U,aACT,EAEAn8U,QAAS,CACL/E,KAAM,cACN4vE,UAAU,EACV1sC,MAAO,IACPt5B,OAAQ,KACRu3U,YAAa,EACb9jQ,UAAW,GACX+gQ,WAAY,KACZgD,eAAgB,EAChB99U,KAAM,OACN6xL,YAAY,EACZ7uL,MAAO,GACPgpE,eAAgB,KAChBthE,SAAWhC,GAAS2gE,EAAO3gE,GAC3Bm0U,oBAAqB,IAAM,aAC3BrP,cAAgB9kU,GAAS2gE,EAAO3gE,GAChC+kU,mBAAqB/kU,GAAS2gE,EAAO3gE,GACrCq1U,WAAY,QACZ17H,YAAa,KACb/zL,UAAW,KACXC,eAAgB,MAGpB5pB,OAAQ,CACJ6yC,EACAg3L,EACAguG,EACAC,EACAnxP,EACAD,GAGJ7+D,WAAY,SAAS/qB,GACjB,IAAI4vO,EAAY/2O,KAAKmH,QAAQk5O,SAAWrgP,KAAKmH,QAAQk5O,QAAQ74O,OAASw6U,EAAaD,EAEnF3wT,EAAOrpB,GAAGmqB,WAAW3nB,KAAKvK,KAAMmH,GAE5BnH,KAAK0jV,eAA4C,IAA5B1jV,KAAKmH,QAAQowL,WAClCv3L,KAAK6L,QAAQutB,IAAI86M,EAAO,IAAM6C,EAAW/2O,KAAK0jV,eACtC1jV,KAAK0jV,cAAgB1jV,KAAKmH,QAAQowL,YAC1Cv3L,KAAKsjV,cAGTtjV,KAAKqxT,aACLrxT,KAAK2e,SACT,EAEAutC,MAAO,WACH,OAAOvpD,EAAE3C,KAAKi2I,OAClB,EAEAj0I,QAAS,WACLhC,KAAK4M,QAAQwsB,IAAIgpT,GACjBpiV,KAAKyxB,WAAWxnB,OAAOizC,EAAQl9C,KAAK8sS,iBACpC17Q,EAAOrpB,GAAG/F,QAAQuI,KAAKvK,KAC3B,EAEA05O,cAAe,SAAS7rO,GACpB,IAEInF,EAFAT,EAAOjI,KACPyxB,EAAa5jB,GAAU,CAAC,EAG5B4jB,EAAavuB,MAAMD,QAAQwuB,GAAc,CAAErjB,KAAMqjB,GAAeA,EAChEA,EAAa9wB,EAAMyN,KAAKE,WAAW84C,OAAO31B,GAEtCxpB,EAAKwpB,YACLxpB,EAAKwpB,WAAWxnB,OAAOizC,EAAQj1C,EAAK6kS,iBAEpC7kS,EAAK6wU,SACL7wU,EAAK4rE,OAAM,GAEX5rE,EAAK07U,gBAAiB,EACtBj7U,EAAQT,EAAKS,QAEbT,EAAKS,MAAM,IACXT,EAAK27U,MAAK,WACN37U,EAAKS,MAAMA,EACf,KAEAT,EAAK6kS,gBAAkB7kS,EAAK0W,QAAQnV,KAAKvB,GAG7CA,EAAKwpB,WAAaA,EAAWjoB,KAAK0zC,EAAQj1C,EAAK6kS,iBAE/C7kS,EAAKmtU,YAAY3jT,EAAWlC,UAEK,IAA7BkC,EAAWmG,OAAOpwB,OAClBS,EAAK0W,UACE1W,EAAKd,QAAQ6qE,UACpBvgD,EAAW20C,OAEnB,EAEAvhB,KAAM,WACF,OAAO7kD,KAAKyxB,WAAWqxC,mBAC3B,EAEAugR,kBAAmB,WACf,IAAIp7U,EAAOjI,KACP6kD,EAAO58C,EAAK48C,OAEZ58C,EAAK4rE,UAAY5rE,EAAK47U,iBAAmB57U,EAAKg5D,QAAUpc,IACxD58C,EAAKg5D,MAAQpc,EACb58C,EAAKmC,QAAQ83U,GAErB,EAEApD,WAAY,SAAStqT,GACjB,IAAIhF,EAASxvB,KAAK++U,aAElB,OAAOp8U,EAAEkY,IAAI2Z,GAAW,SAASiqC,GAC7B,OAAOjvC,EAAOivC,EAClB,GACJ,EAEAqlR,wBAAyB,WACrB,IAAK,IAAIv8U,EAAI,EAAGA,EAAIvH,KAAKijV,mBAAmBz7U,OAAQD,IAAK,CACrD,IAAI4nC,EAAOnvC,KAAK+jV,sBAAsB/jV,KAAKijV,mBAAmB17U,IAC1D4nC,EAAK3nC,QACL2nC,EAAK9pB,SAASgmS,EAEtB,CACJ,EAEA1sS,QAAS,SAASha,GACd,IAIImS,EAJA7O,EAAOjI,KACPotC,EAASzoC,GAAKA,EAAEyoC,OAChBq0S,EAA0B,eAAXr0S,EACfmyS,EAAWv/U,KAAKg3U,aAGhB/uU,EAAK+7U,QAET/7U,EAAK07U,gBAAiB,EAEjB17U,EAAK86U,WAqBF96U,EAAK6jT,cACL7jT,EAAK6jT,cAAa,GAGtB7jT,EAAKo7U,sBAxBD9D,GACAt3U,EAAK89B,MAAM,GAGf99B,EAAKg8U,cACA72S,IAAUnlC,EAAK88J,QAAQv9J,QAAW+3U,GACjCt3U,EAAKd,QAAQq6U,kBAAqBv5U,EAAKmuU,cASzCnuU,EAAK4rE,OAAM,GACX5rE,EAAK67U,0BACL77U,EAAKo7U,sBAVLp7U,EAAK47U,iBAAkB,EAEvB57U,EAAK4rE,OAAM,GACX5rE,EAAKS,MAAMT,EAAK88J,SAAS,GAAMn4H,MAAK,WAChC3kC,EAAK47U,iBAAkB,EACvB57U,EAAKo7U,mBACT,OAcJ5B,GAA2B,WAAXr0S,KAChBt2B,EA7QZ,SAAyB47D,EAAUgvQ,GAC/B,IAEIjjR,EACAN,EACA52D,EAAGwjC,EAJH24B,EAAcg+Q,EAAal6U,OAC3Bm6U,EAAiBjvQ,EAASlrE,OAK1BynS,EAAU,GACV2yC,EAAY,GAEhB,GAAID,EACA,IAAKp6U,EAAI,EAAGA,EAAIo6U,EAAgBp6U,IAAK,CAIjC,IAHAk3D,EAAWiU,EAASnrE,GACpB42D,GAAQ,EAEHpzB,EAAI,EAAGA,EAAI24B,EAAa34B,IACzB,GAAI0zB,IAAaijR,EAAa32S,GAAI,CAC9BozB,GAAQ,EACR8wO,EAAQttS,KAAK,CAAE2X,MAAO/R,EAAG4nC,KAAMsvB,IAC/B,KACJ,CAGCN,GACDyjR,EAAUjgV,KAAK88D,EAEvB,CAGJ,MAAO,CACHwwO,QAASA,EACT2yC,UAAWA,EAEnB,CA4OqBC,CAAgB55U,EAAKg7U,mBAAoBt+U,EAAEunD,QACzC+iP,QAAQznS,SACXi6U,EACAx5U,EAAKmC,QAAQ,qBAAsB,CAC/B8hD,MAAOp1C,EAAOm4R,UAGlBhnS,EAAKS,MAAMT,EAAK62U,WAAWhoU,EAAO8qU,aAK9C35U,EAAK86U,WAAY,EACrB,EAEAlyM,SAAU,SAASvjI,GACf,IAAI5E,EAAQ1I,KAAK+kK,QAAQv6J,OAAO8C,EAAU,GAAG,GAE7C,MAAO,CACHA,SAAUA,EACVmxD,SAAUz+D,KAAKkkV,wBAAwBx7U,GAE/C,EAEAw7U,wBAAyB,SAASx7U,GAC9B,IAAIT,EAAOjI,KACPg8L,EAAc/zL,EAAK82U,aAEvB,IAAK,IAAIn1U,KAAO3B,EAAKg7U,mBACjB,GAAIjnJ,EAAY/zL,EAAKg7U,mBAAmBr5U,MAAUlB,EAE9C,OADAT,EAAKi7U,iBAAiB14U,OAAOZ,EAAK,GAC3B3B,EAAKg7U,mBAAmBz4U,OAAOZ,EAAK,GAAG,EAG1D,EAEA66M,SAAU,SAAS/7M,GACf1I,KAAK+kK,QAAU/wG,EAAQtrD,EAC3B,EAEAA,MAAO,SAASA,EAAOy7U,GACnB,IAAIl8U,EAAOjI,KAEX,OAAI0I,IAAU9F,EACHqF,EAAK88J,QAAQl+J,SAGV,OAAV6B,IACAA,EAAQ,IAGZA,EAAQsrD,EAAQtrD,GAEXT,EAAK03U,gBAAkD,aAAhC13U,EAAK03U,eAAersR,UAC5CrrD,EAAK03U,eAAiBh9U,EAAEypC,cAGkB,aAA5BnkC,EAAKd,QAAQowL,YAA6BtvL,EAAKs+B,SAAS/+B,QAAUkB,EAAMlB,SAEtEkB,EAAMlB,QACtBS,EAAKs+B,QAAQ,GAGjBt+B,EAAK88J,QAAUr8J,GAEVT,EAAK4rE,UAAY5rE,EAAK+7U,QAAU/7U,EAAK07U,gBAAmBQ,IACzDl8U,EAAKm8U,iBAAiB17U,GAGnBT,EAAK03U,eAChB,EAEA0E,kBAAmB,SAAS37U,GACxB,GAAI1I,KAAKskV,sBACLtkV,KAAKskV,qBAAqB98U,SAAWkB,EAAMlB,OAAQ,CAC/C,IAAI8sE,EAAWt0E,KAAKskV,qBAAqBz9U,QAE7C,OADI7G,KAAKskV,qBAAuB,KACzBhwQ,CACX,CAEA,OAAO5rE,CACX,EAEA07U,iBAAkB,SAAS17U,GASvB,IARA,IAIIymC,EAJAlnC,EAAOjI,KACPukV,EAAWt8U,EAAKu8U,UAChBxoJ,EAAc/zL,EAAK82U,aACnB0E,EAAax7U,EAAKd,QAAQs8U,WAE1BgB,EAAe,GAGVl9U,EAAI,EAAGA,EAAImB,EAAMlB,OAAQD,IAC9B,IAAK,IAAIqC,EAAM,EAAGA,EAAM26U,EAAS/8U,OAAQoC,KACrCulC,EAAOo1S,EAAS36U,GAAKulC,QAETmzS,EAAYnzS,GAAQzmC,EAAMnB,KAAO4nC,EAAOzmC,EAAMnB,KAAOy0L,EAAY7sJ,KAGrEs1S,EAAa9iV,KAAK4iV,EAAS36U,GAAK0P,OAMhD,GAAImrU,EAAaj9U,SAAWkB,EAAMlB,OAG9B,OAFAS,EAAK88J,QAAU,QACf98J,EAAKs+B,OAAOk+S,GAKhB,GAAwC,mBAA7Bx8U,EAAKd,QAAQ4gN,YAA4B,CAChD,MAAMn+L,EAA0B,UAAf65T,EAAyBx7U,EAAKy8U,gBAAkBz8U,EAAK08U,mBACtE18U,EAAKd,QAAQ4gN,YAhnB7B,SAA4B5gN,EAASuB,EAAOkhB,GACxC,MAAO,CACHlhB,MAA+B,aAAvBvB,EAAQowL,YAA6BpwL,EAAQy9U,WAAcl8U,EAAQA,EAAM,GACjFy/C,QAAS,SAASC,GACdx+B,EAASw+B,EACb,EAER,CAymByCy8R,CAAmB7kV,KAAKmH,QAASuB,EAAOkhB,EAASpgB,KAAKvB,IACnF,MACUA,EAAKS,QAAQ,IAGfT,EAAK47U,iBAAkB,EACvB57U,EAAKo7U,qBAHJp7U,EAAKs+B,OAAO,EAAE,GAM3B,EAEAm+S,gBAAiB,SAAS9+Q,GAOtB,IALIA,EADAA,IAAYhjE,IAA4B,IAAbgjE,GAA8B,OAAZA,EACnC,GAEA5R,EAAQ4R,IAGTp+D,OAEN,CACH,IAAIqtU,EAAU70U,KAAKy/U,UAAU,IAAI5K,QAC7BA,EAAQrtU,QACRxH,KAAKy5U,eAAe5E,EAAS,GAErC,MANIjvQ,EAAU,EAAE,GAQhB5lE,KAAKumC,OAAOq/B,EAChB,EAEA++Q,mBAAoB,SAASnwT,GACzB,IAAIqgT,EAASyK,EAQb,IALI9qT,EADAA,IAAc5xB,GAA6B,OAAd4xB,EACjB,GAEAw/B,EAAQx/B,IAGThtB,OAER,CACHqtU,EAAUlyU,EAAEkY,IAAI7a,KAAKijV,oBAAoB,SAAS9zS,EAAM71B,GACpD,MAAO,CAAEA,MAAOA,EAAOmlD,SAAUtvB,EACrC,IAEAmwS,EAAQ38U,EAAEkY,IAAI2Z,GAAW,SAAS2a,EAAM71B,GACpC,MAAO,CAAEA,MAAOA,EAAOmlD,SAAUtvB,EACrC,IAEAnvC,KAAKijV,mBAAqBzuT,EAE1Bx0B,KAAKkjV,iBAAmB,GAExB,IAAK,IAAI37U,EAAI,EAAGA,EAAIvH,KAAKijV,mBAAmBz7U,OAAQD,IAAK,CACrD,IAAI4nC,EAAOnvC,KAAK+jV,sBAAsB/jV,KAAKijV,mBAAmB17U,IAC9DvH,KAAKkjV,iBAAiBvhV,KAAK3B,KAAK8kV,aAAa31S,GAAM,IACnDA,EAAK9pB,SAASgmS,EAClB,CAEArrT,KAAKy5U,eAAe5E,EAASyK,GAEzBt/U,KAAK2/U,gBACL3/U,KAAK2/U,eAAe5pS,SAE5B,MAzBI/1C,KAAKumC,OAAO,EAAE,GA0BtB,EAEAw+S,cAAe,SAASzrU,GACpB,IAAImY,EAAazxB,KAAKyxB,WAClBszB,EAAO/kD,KAAK80D,UACZkE,EAASh5D,KAAKmjV,YACdrsU,EAASnU,EAAEypC,WACXuxG,EAAO,GAEP/lB,EAAMv0H,KAAKyN,MAAMwI,EAAQyrC,GAAQA,EACjC4rI,EAAOttL,KAAK6jE,KAAK5tD,EAAQyrC,GAAQA,EAEjC02G,EAAQk1B,IAAS/4D,EAAM,CAAE+4D,GAAS,CAAE/4D,EAAK+4D,GAyB7C,OAvBAhuL,EAAEK,KAAKy4J,GAAO,SAAS9sI,EAAGk2B,GACtB,IAEI1Y,EAFAxgC,EAAMk5C,EAAOE,EACbigS,EAAgBhsR,EAAOnU,GAGtBmgS,GAAkBA,EAAcr5U,MAAQA,EAQzCwgC,EAAW64S,EAAc74S,UAPzBA,EAAWxpC,EAAEypC,WACb4sB,EAAOnU,GAAQ,CAAEl5C,IAAKA,EAAKwgC,SAAUA,GAErC1a,EAAW+3C,kBAAkB3kB,EAAME,GAAM,WACrC5Y,EAAS4J,SACb,KAKJ4nG,EAAKh8I,KAAKwqC,EACd,IAEAxpC,EAAEu8D,KAAK92D,MAAMzF,EAAGg7I,GAAM/wG,MAAK,WACvB91B,EAAOi/B,SACX,IAEOj/B,CACX,EAEAixD,SAAU,SAASnC,GACf,IAAI39D,EAAOjI,KACP+kD,EAAO/kD,KAAK80D,UACZmwR,GAAeh9U,EAAKm7U,cAAc57U,OAkBtC,OAhBKo7U,EAAgB36U,EAAKi9U,mBACtBj9U,EAAKi9U,gBAAkBviV,EAAEypC,WACzBnkC,EAAKm7U,cAAgB,IAGzBzgV,EAAEK,KAAK4iE,GAAS,SAASj3C,EAAGrV,GACxBrR,EAAKm7U,cAAczhV,KAAKsG,EAAK88U,cAAc98U,EAAKk9U,SAAS7rU,EAAOyrC,IACpE,IAEIkgS,GACAtiV,EAAEu8D,KAAK92D,MAAMzF,EAAGsF,EAAKm7U,eAAex2S,MAAK,WACrC3kC,EAAKm7U,cAAgB,GACrBn7U,EAAKi9U,gBAAgBnvS,SACzB,IAGG9tC,EAAKi9U,eAChB,EAEAE,cAAe,SAASxtT,EAAMte,GAC1B,IAAIi7C,EAGJ,GAA0B,UAAtBv0D,KAAKmH,QAAQzB,KACb,IAAK,IAAI6B,EAAI,EAAGA,EAAIqwB,EAAKpwB,OAAQD,IAAK,CAElC,MADAgtD,EAAQ38B,EAAKrwB,GAAG2kD,OACN1kD,QAAU8R,GAGhB,OAAOi7C,EAAMj7C,GAFbA,GAAgBi7C,EAAM/sD,MAI9B,CAIJ,OAAOowB,EAAKte,EAChB,EAEA+rU,UAAW,SAASxgS,EAAME,GACtB,OAAO/kD,KAAKyxB,WAAW21C,WAAWviB,EAAMxhD,KAAKqT,IAAImuC,EAAOE,EAAM/kD,KAAKyxB,WAAWu1B,SAClF,EAEA00R,gBAAiB,SAASpiU,GACtB,IAAIrR,EAAOjI,KACP+kD,EAAO98C,EAAK6sD,UACZjQ,EAAO58C,EAAKk9U,SAAS7rU,EAAOyrC,GAC5BntB,EAAO53B,KAAKqlV,UAAUxgS,EAAME,GAGhC,OAAK98C,EAAKo9U,UAAUxgS,EAAME,GAAMv9C,QAIN,UAAtBS,EAAKd,QAAQzB,OACb/E,EAAM4pB,GAAGiM,SAAS7zB,EAAEsF,EAAK2E,UAAU,GACnC3E,EAAK27U,MAAK,WACN37U,EAAKwpB,WAAWwiC,MAAMpP,EAAME,GAAM,WAC9BpkD,EAAM4pB,GAAGiM,SAAS7zB,EAAEsF,EAAK2E,UAAU,EACvC,IACAgrB,EAAO3vB,EAAKwpB,WAAWmG,MAC3B,KAGG3vB,EAAKm9U,cAAcxtT,EAAM,CAACte,EAAQurC,KAb9B,IAcf,EAEA2xR,kBAAmB,WACf,OAAOx2U,KAAKijV,mBAAmBp8U,OACnC,EAEAu1U,WAAY,SAAS1zU,GACjB1I,KAAK2mD,QAAQ7vB,UAAU92B,KAAK2mD,QAAQ7vB,YAAcpuB,EACtD,EAEAqmF,SAAU,SAAS5qF,GACfnE,KAAK2mD,QAAQ7vB,UAAU3yB,EAC3B,EAEAyzU,cAAe,SAASt+T,GACpBtZ,KAAK+uF,SAASz1E,EAAQtZ,KAAKmH,QAAQq5U,WACvC,EAEAz6S,MAAO,SAASsgR,GACZ,IAAIx6S,EACAyN,EACAlL,EACA4F,EACAwsU,EAAaxgV,KAAKmH,QAAQq5U,WAC1BnwT,EAAKrwB,KAAK89U,UACVwH,GAAe,EAEnB,GAAIj/B,IAAczjT,EAEd,OADAoR,EAAUhU,KAAK6L,QAAQsqB,KAAK,IAAMi0S,IACnB5iU,OAASwM,EAAU,KAGtC,GAAyB,mBAAdqyS,EAA0B,CACjCj4S,EAAOpO,KAAKyxB,WAAWgD,WACvB,IAAK,IAAI7qB,EAAM,EAAGA,EAAMwE,EAAK5G,OAAQoC,IACjC,GAAIy8S,EAAUj4S,EAAKxE,IAAO,CACtBy8S,EAAYz8S,EACZ,KACJ,CAER,CAcA,GAZIy8S,aAAqBnjT,QACrBmjT,EAAYg8B,EAASh8B,IAGrBv9S,MAAMu9S,IACNx6S,EAAUlJ,EAAE0jT,GACZ/sS,EAAQE,SAAS7W,EAAEkJ,GAAS+X,KAAK,qBAAsB,MAEvDtK,EAAQ+sS,EACRx6S,EAAU7L,KAAKulV,mBAAmBjsU,KAGvB,IAAXA,EAGA,OAFAtZ,KAAK6L,QAAQsqB,KAAK,IAAMi0S,GAASr9S,YAAYq9S,QAC7CpqU,KAAKwlV,cAAgB5iV,GAIzB,GAAIiJ,EAAQrE,OAAQ,CACZqE,EAAQkB,SAASq9T,KACjBkb,GAAe,GAEftlV,KAAKwlV,gBAAkB5iV,KACvBoR,EAAUhU,KAAKulV,mBAAmBvlV,KAAKwlV,gBAElCz4T,YAAYq9S,GACZn4S,WAAW,MAEZqzT,GACAtlV,KAAKoK,QAAQ2mF,IAIrB/wF,KAAKwlV,cAAgBlsU,EAErBzN,EACKwZ,SAAS+kT,GACTxmT,KAAK,KAAMyM,GAEhB,IAAI/iB,EAAWtN,KAAKylV,oBAAoBnsU,GAEvB,QAAbhM,EACAtN,KAAK+uF,SAASz1E,EAAQknU,GACF,WAAblzU,EACPtN,KAAK+uF,SAAUz1E,EAAQknU,EAAaA,EAAcxgV,KAAK0lV,eACnC,cAAbp4U,GACPtN,KAAK+uF,SAASz1E,EAAQknU,GAGtB8E,GACAtlV,KAAKoK,QAAQ4mF,EAErB,MACIhxF,KAAKwlV,cAAgBlsU,EACrBtZ,KAAKksD,QAAQn/B,YAAYq9S,GACzBpqU,KAAK43U,cAAct+T,EAE3B,EAEA2lU,WAAY,WACR,OAAOj/U,KAAKwlV,aAChB,EAEA1K,WAAY,WACR96U,KAAK+uF,SAAS,GACd/uF,KAAK+lC,MAAM,EACf,EAEAi1S,UAAW,WACP,IAAIppU,EAAY5R,KAAKyxB,WAAWu1B,QAChChnD,KAAK+uF,SAAS/uF,KAAK2lV,gBAAgBhxT,cACnC30B,KAAK+lC,MAAMn0B,EAAY,EAC3B,EAEAwpU,UAAW,WACP,IACIpnU,EADAsF,EAAQtZ,KAAKwlV,cAGjB,OAAK18U,MAAMwQ,IAAUA,EAAQ,GACzBA,GAAS,EACTtZ,KAAK+lC,MAAMzsB,IAEXtF,EAAUhU,KAAK+lC,UACA/xB,EAAQjH,SAAS,oBAC5BuM,GAAS,EACTtZ,KAAK+lC,MAAMzsB,IAGRA,IAEPA,EAAQtZ,KAAKyxB,WAAWu1B,QAAU,EAClChnD,KAAK+lC,MAAMzsB,GACJA,EAEf,EAEA4hU,UAAW,WACP,IAEIlnU,EAFAsF,EAAQtZ,KAAKwlV,cACb5zU,EAAY5R,KAAKyxB,WAAWu1B,QAAU,EAG1C,OAAKl+C,MAAMwQ,IAAUA,EAAQ1H,GACzB0H,GAAS,EACTtZ,KAAK+lC,MAAMzsB,IAEXtF,EAAUhU,KAAK+lC,UACA/xB,EAAQjH,SAAS,oBAC5BuM,GAAS,EACTtZ,KAAK+lC,MAAMzsB,IAGRA,IAEPA,EAAQ,EACRtZ,KAAK+lC,MAAMzsB,GACJA,EAEf,EAEAmgU,eAAgB,SAAS5E,EAASyK,GAE9BA,EAAQA,GAAS,KADjBzK,EAAUA,GAAW,IAGTrtU,QAAU83U,EAAM93U,SACvBxH,KAAKoK,QAAQ8yC,EAAQ,CAClB23R,QAASA,EACTyK,MAAOA,GAGnB,EAEA/4S,OAAQ,SAAS8/Q,GACb,IACIxlI,EACAyjH,EAIAshD,EACAz5S,EACAr1B,EARA7O,EAAOjI,KAGPo/U,EAA8C,aAA5Bn3U,EAAKd,QAAQowL,WAC/BsuJ,EAAkBjD,EAAgB36U,EAAKi9U,iBACvC3F,EAAWv/U,KAAKg3U,aAIhBnC,EAAU,GAEd,GAAIxuB,IAAczjT,EACd,OAAOqF,EAAKi7U,iBAAiBr8U,QAWjC,GARKoB,EAAK69U,iBAAoD,aAAjC79U,EAAK69U,gBAAgBxyR,UAC9CrrD,EAAK69U,gBAAkBnjV,EAAEypC,YAG7By0I,EAAU54K,EAAK68U,aAAaz+B,GAC5Bu/B,EAAoBxG,IAAoBG,GAAY8C,EAASxhK,KAAawhK,EAASriV,KAAKkjV,mBACxFrO,EAAU5sU,EAAK89U,uBAAuBllK,IAE1Br5K,SAAWq5K,EAAQr5K,QAAUo+U,EAOrC,OANA39U,EAAKwxU,eAAe5E,GAEhB5sU,EAAK03U,gBACL13U,EAAK03U,eAAe5pS,UAAUluB,UAG3B5f,EAAK69U,gBAAgB/vS,UAAUluB,UAGnB,IAAnBg5J,EAAQr5K,SAAgC,IAAhBq5K,EAAQ,KAChCA,EAAU,IAGdyjH,EAAiBzjH,EACjB/pK,EAAS7O,EAAKw3U,UAAU5+J,GACxBg0J,EAAU/9T,EAAO+9T,QACjBh0J,EAAU/pK,EAAO+pK,QAEbu+J,IACAyG,GAAkB,EACdhlK,EAAQr5K,SACRq5K,EAAU,CAACwhK,EAASxhK,MAI5B,IAAIj0I,EAAO,WACP,IAAI0yS,EAAQr3U,EAAKy6E,QAAQm+F,IAErByjH,EAAe98R,SAAWq5K,EAAQr5K,QAAU43U,IAC5Cn3U,EAAK89B,MAAM86I,GAGf54K,EAAKwxU,eAAe5E,EAASyK,GAEzBr3U,EAAK03U,gBACL13U,EAAK03U,eAAe5pS,UAGxB9tC,EAAK69U,gBAAgB/vS,SACzB,EAYA,OAVA5J,EAAWlkC,EAAK8/D,SAAS84G,GAEpBglK,IACG15S,EACAA,EAASS,KAAKA,GAEdA,KAID3kC,EAAK69U,gBAAgBj+T,SAChC,EAEAgsD,MAAO,SAASA,GACZ,GAAIA,IAAUjxE,EACV,OAAO5C,KAAKgmV,aAGhBhmV,KAAKgmV,aAAenyQ,CACxB,EAEA+vQ,KAAM,SAASh6T,GACX5pB,KAAKgkV,OAAQ,EACbp6T,IACA5pB,KAAKgkV,OAAQ,CACjB,EAEA5O,YAAa,SAAS7lT,GAClBvvB,KAAKuhV,cAAgB5+U,EAAEI,OAAO,CAAC,EAAGwsB,EACtC,EAEAynT,WAAY,WAKR,OAJKh3U,KAAKuhV,eACNvhV,KAAKo1U,YAAYp1U,KAAKyxB,WAAWlC,WAG7B5uB,EAAMyN,KAAKiiD,MAAMsD,eAAe3zD,KAAKyxB,WAAWlC,SAAUvvB,KAAKuhV,cAC3E,EAEArC,WAAYv8U,EAAEQ,KAEdoiV,mBAAoB,SAASjsU,GACzB,OAAOtZ,KAAKksD,QAAQ38B,QAAO,SAAS3lB,EAAKiC,GACrC,OAAOyN,IAAUE,SAAS7W,EAAEkJ,GAAS+X,KAAK,qBAAsB,GACpE,GACJ,EAEAmgU,sBAAuB,SAAStlR,GAK5B,IAJA,IAEI5yD,EAFA04U,EAAWvkV,KAAKwkV,UACpBxoJ,EAAch8L,KAAK++U,aAGVx3U,EAAI,EAAGA,EAAIg9U,EAAS/8U,OAAQD,IAEjC,GADQg9U,EAASh9U,GAAG4nC,MAAQmzS,EAAYiC,EAASh9U,GAAG4nC,MAAQo1S,EAASh9U,GAAG4nC,OAASsvB,EAAW8lR,EAASh9U,GAAG4nC,MAAQsvB,GAAYu9H,EAAYuoJ,EAASh9U,GAAG4nC,OAAS6sJ,EAAYv9H,GAC9J,CACP5yD,EAAU04U,EAASh9U,GACnB,KACJ,CAGJ,OAAOsE,EAAU7L,KAAKulV,mBAAmB15U,EAAQyN,OAAS3W,GAC9D,EAEAm2U,OAAQ,WACJ94U,KAAK8W,OAASlU,EACd5C,KAAKimV,eAAiBrjV,EACtB5C,KAAKihE,MAAQr+D,EACbD,EAAE3C,KAAK2lV,iBAAiBt5U,SACxBrM,KAAK2lV,gBAAkB/iV,EACvB5C,KAAK6L,QAAQ+gD,OACjB,EAEAyqR,QAAS,WACL,IAAI6O,IAAYlmV,KAAKyxB,WAAWmG,OAAOpwB,OACnCwE,EAAShM,KAAKmH,QAAQ6E,OACtBw0U,EAAaxgV,KAAKmH,QAAQq5U,WAC1Bx5R,EAAQhnD,KAAKyxB,WAAWu1B,QAQ5B,OANKk/R,EAEMl6U,EAASw0U,EAAax5R,IAC7Bh7C,EAASg7C,EAAQw5R,GAFjBx0U,EAAS,EAKNA,CACX,EAEAm6U,gBAAiB,WACb,IAAIn6U,EAAShM,KAAKq3U,UAElBr3U,KAAK2mD,QAAQ36C,OAAOA,GACpBhM,KAAK0lV,cAAgB15U,CACzB,EAEAyU,aAAc,WACV,OAAOzgB,KAAK0lV,aAChB,EAEAD,oBAAqB,SAASnsU,GAC1B,IAAIwd,EAAY92B,KAAK2mD,QAAQ7vB,YACzBrW,EAAezgB,KAAK0lV,cACpBlF,EAAaxgV,KAAKmH,QAAQq5U,WAC1B4F,EAAY9sU,EAAQknU,EACpB6F,EAAeD,EAAY5F,EAC3B8F,EAAYxvT,EAAYrW,EAa5B,OAVI2lU,IAAetvT,EAAY0pT,GAAgB6F,EAAevvT,GAAasvT,EAAYtvT,EACxE,MACJsvT,IAAcE,GAAcF,EAAYE,GAAaA,EAAYD,EAC7D,SACHD,GAAatvT,GAAesvT,GAAatvT,GAAarW,EAAe+/T,GAClE,WAEA,WAInB,EAEAnvB,WAAY,WACR,IAAIlqT,EAAUnH,KAAKmH,QACfgsT,EAAY,CACZ/iT,SAAUjJ,EAAQiJ,SAClBmyU,oBAAqBp7U,EAAQo7U,oBAC7BrP,cAAe/rU,EAAQ+rU,cACvBC,mBAAoBhsU,EAAQgsU,oBAYhC,IAAK,IAAIrhU,KATL3K,EAAQk5O,SACRl5O,EAAQk5O,QAAQ/+O,SAAQ,CAACuyL,EAAQtsL,KAC7B,IAAI64U,EAAevsJ,EAAO9tK,MAAQ8tK,EAAO9tK,MAAMtU,WAAa,OAG5D0hT,EAAU,SAAW5rT,GAAKssL,EAAOzjL,UAFdhC,IAAQ2gE,EAAOpuE,EAAM6uB,OAAO4wT,EAAbz/U,CAA2ByN,IAEJ,IAIjD+kT,EACkB,mBAAnBA,EAAUrhT,KACjBqhT,EAAUrhT,GAAOnR,EAAMyP,SAAS+iT,EAAUrhT,IAAQ,KAI1D9R,KAAKmzT,UAAYA,CACrB,EAEAozB,eAAgB,SAAS16U,EAASyP,GAM9B,IALA,IACI6zB,EAAMrO,EADNorB,EAAQ,GAERs0R,EAAaxgV,KAAKmH,QAAQq5U,WAAa,KACvCzpG,EAAY/2O,KAAKmH,QAAQk5O,SAAWrgP,KAAKmH,QAAQk5O,QAAQ74O,OAASw6U,EAAaD,EAE5EzmU,KAAU,IACbwlB,EAAOnxB,SAASkP,cAAc,SACzBwO,UAAY,oBAEjB8hB,EAAOx/B,SAASkP,cAAc,OACzBg4E,UAAY,EACjB1nD,EAAK9hB,UAAY0pN,EACjB5nM,EAAKxpB,aAAa,OAAQ,UAC1BwpB,EAAKhiC,MAAMnB,OAASw0U,EACpBrxS,EAAKhiC,MAAMssP,UAAY+mF,EACvBrxS,EAAKlwB,YAAY6hB,GAEjBj1B,EAAQoT,YAAYkwB,GAEpB+c,EAAMvqD,KAAKwtC,GAGf,OAAO+c,CACX,EAEAs6R,mBAAoB,WAChB,IAAIxtR,EAASh5D,KAAKyxB,WAAWqoC,QACzB3tB,EAAWxpC,EAAEypC,WACjBD,EAAS4J,UAET/1C,KAAKmjV,YAAc,CAAC,EACpB,IAAK,IAAI57U,EAAI,EAAGA,EAAIyxD,EAAOxxD,OAAQD,IAC/BvH,KAAKmjV,YAAYnqR,EAAOzxD,GAAGuO,OAAS,CAAEnK,IAAKqtD,EAAOzxD,GAAGoE,IAAKwgC,SAAUA,EAE5E,EAEA83S,YAAa,WACT,IA1oCcxjU,EAAc8iU,EAAa/C,EAgE/BiG,EANM56U,EAAS+d,EAglCrB3hB,EAAOjI,KACP2mD,EAAU1+C,EAAK0+C,QAAQ12B,IAAI,GAC3B9oB,EAAUc,EAAKd,QACfsqB,EAAaxpB,EAAKwpB,WAElBxpB,EAAK4rE,SACL5rE,EAAK6wU,SAGT7wU,EAAKu+U,qBACLv+U,EAAKy+U,oBACLz+U,EAAKk+U,kBACLl+U,EAAK6sD,WAtpCSr0C,EAspCgBxY,EAAKy9U,cAtpCPnC,EAspCsBp8U,EAAQo8U,YAtpCjB/C,EAspC8Br5U,EAAQq5U,WArpC5En9U,KAAK6jE,KAAKzmD,EAAe8iU,EAAc/C,IAupCtCv4U,EAAK6sD,UAAYrjC,EAAWu1B,UAC5B/+C,EAAK6sD,UAAYrjC,EAAWu1B,SAGhC/+C,EAAKguI,OAAShuI,EAAKs+U,eAAet+U,EAAK4D,QAAQ,GAAI5D,EAAK6sD,WAExD7sD,EAAK0+U,WAAWx/U,EAAQq5U,WAAa/uT,EAAWu1B,SAChD/+C,EAAKd,QAAQzB,MAAQ+rB,EAAW8iC,SAAW,IAAI/sD,OAAS,QAAU,OAExC,SAAtBS,EAAKd,QAAQzB,KACTuC,EAAKm+C,OAAOv5C,QAAQ2jU,GAAehpU,OACnCS,EAAKm+C,OAAOv5C,QAAQ2jU,GAAe9iU,OAEnCzF,EAAKm+C,OAAO14C,OAGZzF,EAAKm+C,OAAOv5C,QAAQ2jU,GAAehpU,OACnCS,EAAKm+C,OAAOv5C,QAAQ2jU,GAAe/iU,OAEnCxF,EAAKm+C,OAAO34C,OAIpBxF,EAAKunB,OAASvnB,EAAK+1U,SAAQ,WACvB/1U,EAAK6jT,cAAa,EACtB,IAEA7jT,EAAK43U,UAAY,SAAS/oT,EAAWxE,GACjC,IAAIs0T,EAAU3+U,EAAK4+U,WAAW5+U,EAAKunB,QACnC,OAAOvnB,EAAKi2U,aAAapnT,EAAW8vT,EAAQ9vT,EAAWxE,GAC3D,EAEArqB,EAAK6jT,aAAe7jT,EAAK6+U,cA9nCTj7U,EA+nCG86C,EA/nCM/8B,EA+nCG3hB,EAAK43U,UA9nC9B,SAASvtT,GACZ,OAAO1I,EAAS/d,EAAQirB,UAAWxE,EACvC,IAGcm0T,EA0nCGx+U,EAAK8+U,aAAa9+U,EAAKguI,OAAQ9lI,EAAO3G,KAAKvB,IAznCrD,SAASukE,EAAMl6C,GAElB,OADAm0T,EAAQj6Q,EAAKtgB,MAAOsgB,EAAKlzD,MAAOgZ,GACzBk6C,CACX,IAynCIvkE,EAAK6jT,eACL7jT,EAAK4vU,uBAAuB5vU,EAAKy9U,eACjCz9U,EAAK+vU,gCACT,EAEA2O,WAAY,SAAS36U,GACjB,IAAIi1O,EACA0kG,EAAkB3lV,KAAK2lV,gBAQ3B,GANKA,EAGD1kG,EAAgB0kG,EAAgBhxT,aAFhCgxT,EAAkB3lV,KAAK2lV,gBAAkB1mU,EAAYjf,KAAK2mD,QAAQ,GAvuCxD,sBA4uCV36C,IAAWi1O,EAGX,IAFA0kG,EAAgB5mU,UAAY,GAErB/S,EAAS,GAAG,CACf,IAAIg7U,EAAY3jV,KAAKqT,IAAI1K,EAAQ,MACjCiT,EAAY0mU,GAAiBx4U,MAAMnB,OAASg7U,EAAY,KACxDh7U,GAAUg7U,CACd,CAER,EAEAhJ,QAAS,WACL,IAAIiJ,EAAqB,KACrBx1T,EAAazxB,KAAKyxB,WAClBy1T,EAAiBz1T,EAAWozB,OAC5Bn/C,EAAO1F,KAAKmH,QAAQzB,KACpB2+C,EAAWrkD,KAAK80D,UAChBiB,EAAa,CAAC,EAQlB,OANItkC,EAAW4yB,WAAaA,GACxBrkD,KAAK4jV,MAAK,WACNnyT,EAAW4yB,SAASA,EACxB,IAGG,SAAS/qC,EAAO6tU,GACnB,IAAIl/U,EAAOjI,KACX,GAAKyxB,EAAW01C,QAAQggR,EAAY9iS,GAuB7B,CAQH,IAAIvtC,EACJ,GARIowU,IAAmBC,GACnBnnV,KAAK4jV,MAAK,WACNnyT,EAAWwiC,MAAMkzR,EAAY9iS,GAC7B6iS,EAAiBC,CACrB,IAIS,UAATzhV,EAAkB,CAClB,IAAKqwD,EAAWoxR,GAGZ,IAFA,IAAIC,EAAYrxR,EAAWoxR,GAAc,GACrCx9S,EAASlY,EAAWmG,OACfrwB,EAAI,EAAGwpB,EAAM4Y,EAAOniC,OAAQD,EAAIwpB,EAAKxpB,IAE1C,IADA,IAAIgtD,EAAQ5qB,EAAOpiC,GACVwjC,EAAI,EAAGs8S,EAAc9yR,EAAMrI,MAAM1kD,OAAQujC,EAAIs8S,EAAat8S,IAC/Dq8S,EAAUzlV,KAAK,CAAEwtC,KAAMolB,EAAMrI,MAAMnhB,GAAIwpB,MAAOA,EAAM7rD,QAKhEoO,EAASi/C,EAAWoxR,GAAY7tU,EAAQ6tU,EAC5C,MACIrwU,EAAS2a,EAAWmG,OAAOte,EAAQ6tU,GAGvC,OAAOrwU,CACX,CA5BI,OArBImwU,IAAuBE,IACvBF,EAAqBE,EACrBD,EAAiBC,EAEbl/U,EAAKq/U,iBACLr/U,EAAKq/U,gBAAgBjnR,SAGzBp4D,EAAKq/U,gBAAkBr/U,EAAK88U,cAAcoC,GAC1Cl/U,EAAKq/U,gBAAgBnoR,MAAK,WACtB,IAAIooR,EAAiBt/U,EAAKu/U,iBAAiBv/U,EAAK0+C,QAAQ,GAAG7vB,WAE3D7uB,EAAKq/U,gBAAkB,KAEnBH,GAAcI,GAAkBA,GAAmBJ,EAAa9iS,IAChEp8C,EAAK86U,WAAY,EACjBtxT,EAAWwiC,MAAMkzR,EAAY9iS,GAErC,KAGG,IA6Bf,CACJ,EAEA65R,aAAc,SAASpnT,EAAW01C,GAC9B,IAAIjY,EAAQv0D,KAAKynV,oBACbjH,EAAaxgV,KAAKmH,QAAQq5U,WAC1BkH,EAA4BrkV,KAAKyN,OAAOgmB,EAAY01C,EAAKtnD,KAAOs7T,GAChEmH,EAAuBn7Q,EAAKtgB,MAAMw7R,GAEtC,GAAIC,GAAwBA,EAAqBx4S,KAAM,CACnD,IAAIy4S,EAAoBD,EAAqBpzR,MAE7C,GAAIqzR,IAAsBrzR,EAAO,CAC7B,IAAIszR,EAAiBD,GAAqB,GAC1C5nV,KAAKomD,OAAO/1C,KAAKrQ,KAAKmzT,UAAUggB,mBAAmB0U,IACnD7nV,KAAKynV,oBAAsBG,CAC/B,CACJ,CAEA,OAAOp7Q,CACX,EAEAs7Q,YAAa,SAAS34S,EAAM71B,EAAO5Q,GAC/B,IAAIq/U,EAAW/nV,KAAKmH,QAAQzB,KACxB86U,EAAaxgV,KAAKmH,QAAQq5U,WAC1BrgE,EAAengR,KAAKwlV,cACpB9yQ,GAAW,EACX1+D,GAAU,EACVikD,GAAW,EACX1D,EAAQ,KAERynI,EAAch8L,KAAK++U,aAYvB,GAViB,UAAbgJ,IACI54S,IACA8oB,EAAqB,IAAV3+C,IAAuC,IAAvBtZ,KAAKgoV,eAA2BhoV,KAAKgoV,gBAAkB74S,EAAKolB,MACvFv0D,KAAKgoV,cAAgB74S,EAAKolB,OAG9BA,EAAQplB,EAAOA,EAAKolB,MAAQ,KAC5BplB,EAAOA,EAAOA,EAAKA,KAAO,MAGE,aAA5BnvC,KAAKmH,QAAQs8U,YAA6BzjV,KAAKijV,mBAAmBz7U,QAAU2nC,GAC5E,IAAK,IAAI5nC,EAAI,EAAGA,EAAIvH,KAAKijV,mBAAmBz7U,OAAQD,IAEhD,GADQy0L,EAAYh8L,KAAKijV,mBAAmB17U,MAAQy0L,EAAY7sJ,GACrD,CACPujC,GAAW,EACX,KACJ,OAED,IAAK1yE,KAAKg3U,cAAgBtuU,EAAMlB,QAAU2nC,EAC7C,IAAK,IAAIpE,EAAI,EAAGA,EAAIriC,EAAMlB,OAAQujC,IAE9B,GADQu3S,EAAYnzS,GAAQzmC,EAAMqiC,KAAOoE,EAAOzmC,EAAMqiC,KAAOixJ,EAAY7sJ,GAC9D,CACPzmC,EAAM8B,OAAOugC,EAAI,GACjB2nC,GAAW,EACX,KACJ,CAQR,OAJIytM,IAAiB7mQ,IACjBtF,GAAU,GAGP,CACHm7B,KAAMA,GAAc,KACpBolB,MAAOA,EACP0D,SAAUA,EACVya,SAAUA,EACV1+D,QAASA,EACTsF,MAAOA,EACP4L,IAAK5L,EAAQknU,EAErB,EAEAvtQ,OAAQ,SAAS35D,GACb,IAGI61B,EAHA2lB,EAAY90D,KAAK80D,UACjBpsD,EAAQ1I,KAAK+kK,QAAQl+J,QACrBqlD,EAAQ,GAGZlsD,KAAK+5D,MAAQ,CAAC,EACd/5D,KAAKgoV,eAAgB,EAErB,IAAK,IAAIzgV,EAAI+R,EAAO9R,EAAS8R,EAAQw7C,EAAWvtD,EAAIC,EAAQD,IACxD4nC,EAAOnvC,KAAK8nV,YAAY9nV,KAAKwvB,OAAOjoB,EAAG+R,GAAQ/R,EAAGmB,GAC9CwjD,EAAMA,EAAM1kD,OAAS,KACrB0kD,EAAMA,EAAM1kD,OAAS,GAAG25U,kBAAoBhyS,EAAK8oB,UAErD/L,EAAMvqD,KAAKwtC,GACXnvC,KAAK+5D,MAAM5qB,EAAK71B,OAAS61B,EAI7B,OADAnvC,KAAKwkV,UAAYt4R,EACVA,CACX,EAEA+7R,wBAAyB,SAASnxT,EAAWoxT,GACzC,IAAIh8R,EAAQlsD,KAAKizE,OAAOjzE,KAAKmoV,WAAWrxT,EAAWoxT,IACnD,MAAO,CACH5uU,MAAO4yC,EAAM1kD,OAAS0kD,EAAM,GAAG5yC,MAAQ,EACvC4L,IAAKgnC,EAAM1kD,OAAS0kD,EAAM,GAAGhnC,IAAM,EACnCgnC,MAAOA,EAEf,EAEA26R,WAAY,WACR,IAAIpmU,EAAezgB,KAAK0lV,cAGpB0C,EA71CZ,SAAuBjhV,EAASsZ,GAC5B,IAAI4nU,GAAiBlhV,EAAQo8U,YAAc,EAAIp8U,EAAQs4E,WAAah/D,EAChE6nU,EAAcnhV,EAAQs4E,UAAYh/D,EAEtC,OAAO,SAAS+rD,EAAM11C,EAAWoxT,GAC7B,OAAIpxT,EAAYoxT,EACLpxT,EAAY01C,EAAKtnD,IAAMmjU,EAEV,IAAb77Q,EAAKtnD,KAAa4R,EAAY01C,EAAKtnD,IAAMojU,CAExD,CACJ,CAk1C2BC,CAFLvoV,KAAKmH,QAEuBsZ,GAE1C,OAAO,SAAU/X,EAAO4pB,GACpB,IAAIxb,EAAS9W,KAAK8W,OACdoxU,EAAgBloV,KAAKimV,eASzB,OAPI3zT,GAAUxb,GAAWsxU,EAAatxU,EAAQpO,EAAOw/U,KACjDpxU,EAAS9W,KAAKioV,wBAAwBv/U,EAAOw/U,IAGjDloV,KAAKimV,eAAiBv9U,EACtB1I,KAAK8W,OAASA,EAEPA,CACV,EAAEtN,KAAKxJ,KACZ,EAEA8mV,aAAc,SAASt3T,EAAQ5F,GAC3B,IAAI5V,EAEJ,OAAO,SAASse,GACZ,IAAIk2T,EAASh5T,EAAO8C,GAEhBk2T,IAAWx0U,IACXA,EAAUw0U,EACV5+T,EAAS4+T,EAAQl2T,GAEzB,CACJ,EAEAy0T,aAAc,SAASv6Q,EAAMi6Q,GACzB,IA71CM78T,EAAUupS,EA61CZlrT,EAAOjI,KACPwH,EAASglE,EAAKhlE,OACdihV,GAAiB/vL,IAGrB,OAFA+tL,GAh2CM78T,EAg2CS68T,EAh2CCtzB,EAg2CQnzT,KAAKmzT,UA/1C1B,SAASn7H,EAAMC,GAClB,IAAK,IAAI1wL,EAAI,EAAGwpB,EAAMinK,EAAKxwL,OAAQD,EAAIwpB,EAAKxpB,IACxCqiB,EAASouK,EAAKzwL,GAAI0wL,EAAK1wL,GAAI4rT,GACvBl7H,EAAK1wL,GAAG4nC,MACRnvC,KAAKoK,QAAQ+3U,EAAY,CAAEhzS,KAAMxsC,EAAEq1L,EAAKzwL,IAAK6G,KAAM6pL,EAAK1wL,GAAG4nC,KAAMhjB,GAAIxrB,EAAM4pB,IAGvF,GAw1C4C/gB,KAAKxJ,MAEtC,SAAS0oV,EAAO5qU,EAAQwU,GAC3B,IACI2hC,EAAO00R,EADP5pT,EAAOjhB,EAAS2qU,EAGhBn2T,GAASjvB,KAAKoU,IAAIsnB,IAASv3B,GAC3BysD,EAAQuY,EACRm8Q,EAASD,IAETz0R,EA/1ChB,SAAiB/H,EAAOntB,GACpB,IAAIk1B,EAUJ,OARIl1B,EAAO,GACPk1B,EAAQ/H,EAAM1hD,OAAO,EAAGu0B,GACxBmtB,EAAMvqD,KAAKyG,MAAM8jD,EAAO+H,KAExBA,EAAQ/H,EAAM1hD,OAAOu0B,GAAOA,GAC5BmtB,EAAM/hD,QAAQ/B,MAAM8jD,EAAO+H,IAGxBA,CACX,CAm1CwB20R,CAAQp8Q,EAAMztC,GACtB4pT,EAAS5pT,EAAO,EAAI2pT,EAAM7hV,OAAOk4B,GAAQ2pT,EAAM7hV,MAAM,GAAIk4B,IAG7D0nT,EAAQxyR,EAAO00R,EAAQ1gV,EAAK4rE,SAE5B40Q,EAAgB3qU,CACpB,CACJ,EAEA+qU,aAAc,WACV,IA35CapoU,EAAc8iU,EAAauF,EA25CpC3hV,EAAUnH,KAAKmH,QAEnB,OA75CasZ,EA65CMzgB,KAAK0lV,cA75CGnC,EA65CYp8U,EAAQo8U,YA75CPuF,EA65CoB3hV,EAAQq8U,eA55CjE,CACHr1T,KAAM1N,EAAeqoU,EACrB16T,GAAI3N,GAAgB8iU,EAAc,EAAIuF,GA25C1C,EAEAtB,iBAAkB,SAASl6U,GACvB,IAAIwnD,EAAY90D,KAAK80D,UACjB0rR,EAAaxgV,KAAKmH,QAAQq5U,WAC1Bx5R,EAAQhnD,KAAKyxB,WAAWu1B,QAE5B,OAAO3jD,KAAKqT,IAAIrT,KAAK8V,IAAI6tC,EAAQ8N,EAAW,GAAIzxD,KAAK8V,IAAI,EAAG9V,KAAKyN,MAAMxD,EAAWkzU,IACtF,EAEA2H,WAAY,SAASrxT,EAAWoxT,GAC5B,IACI56U,EADAy7U,EAAU/oV,KAAK6oV,eAKnB,OAFAv7U,EAAWwpB,GAAcA,EAAYoxT,EAAiBa,EAAQ56T,KAAO46T,EAAQ36T,IAEtEpuB,KAAKwnV,iBAAiBl6U,EACjC,EAEAg2U,YAAa,WACT,IAAIvsG,EAAY/2O,KAAKmH,QAAQk5O,SAAWrgP,KAAKmH,QAAQk5O,QAAQ74O,OAASw6U,EAAaD,EAE/E/hV,KAAKmH,QAAQowL,aACbv3L,KAAK0jV,aAAe1jV,KAAKksO,cAAc1iO,KAAKxJ,MAC5CA,KAAK6L,QAAQge,GAAGqqN,EAAQkuG,EAAiB,IAAMrrG,EAAW/2O,KAAK0jV,cAEvE,EAEAjI,gBAAiB,SAAS5vU,GACtB,OAAMA,aAAmBnE,OAIlB8R,SAAS3N,EAAQ+X,KAAK,qBAAsB,IAHxChhB,CAIf,EAEAkiV,aAAc,SAASz+B,GACnB,IAAiBj4S,EAAb0I,EAAS,GAEb,GAAyB,mBAAduvS,EAA0B,CACjCj4S,EAAOpO,KAAKyxB,WAAWgD,WACvB,IAAK,IAAI7qB,EAAM,EAAGA,EAAMwE,EAAK5G,OAAQoC,IACjC,GAAIy8S,EAAUj4S,EAAKxE,IAAO,CACtBkN,EAAOnV,KAAKiI,GACZ,KACJ,CAER,CAEyB,iBAAdy8S,GACPvvS,EAAOnV,KAAK0kT,GAGhB,IAAI7yJ,EAAexzJ,KAAKy7U,gBAAgBp1B,GASxC,OARKv9S,MAAM0qJ,IACP18I,EAAOnV,KAAK6xJ,GAGZ6yJ,aAAqBnjT,QACrB4T,EAASuvS,GAGNvvS,CACX,EAEA2oU,UAAW,SAAS5+J,GAChB,IACIpuG,EACAhU,EAOAtvB,EATA0lS,EAAU,GAGVmU,EAAkBhpV,KAAKkjV,iBACvB1M,EAAoBx2U,KAAKijV,mBACzB31U,EAAW,EACXiqL,EAAav3L,KAAKmH,QAAQowL,WAC1B0xJ,EAAwB,EACxBjtJ,EAAch8L,KAAK++U,aAEnBjoU,EAAS,KAIb,GAFA+pK,EAAUA,EAAQh6K,SAEC,IAAf0wL,GAAwB1W,EAAQr5K,QAkB7B,GAAmB,aAAf+vL,EACP,IAAK,IAAIhwL,EAAI,EAAGA,EAAIs5K,EAAQr5K,OAAQD,IAAK,CAKrC,GAJAuP,EAAS,KACTxJ,EAAW3K,EAAE8yB,QAAQorJ,EAAQt5K,GAAIyhV,GACjCvqR,EAAWz+D,KAAK07U,gBAAgB76J,EAAQt5K,KAEtB,IAAd+F,GAAmBmxD,EACnB,IAAK,IAAI1zB,EAAI,EAAGA,EAAIyrS,EAAkBhvU,OAAQujC,KAClCu3S,EAAY7jR,GAAY+3Q,EAAkBzrS,KAAO0zB,EAAWu9H,EAAYw6I,EAAkBzrS,MAAQixJ,EAAYv9H,MAElHtvB,EAAOnvC,KAAKulV,mBAAmB1kK,EAAQt5K,IACvCuP,EAAS9W,KAAKkpV,oBAAoB/5S,EAAMpE,EAAG81I,EAAQt5K,GAAI0hV,SAI/Dx2Q,EAAgBu2Q,EAAgB17U,MAEV1K,IAClBusC,EAAOnvC,KAAKulV,mBAAmB9yQ,GAC/B37D,EAAS9W,KAAKkpV,oBAAoB/5S,EAAM7hC,EAAUmlE,EAAew2Q,IAIrEnyU,IACA+pK,EAAQr2K,OAAOjD,EAAG,GAClBstU,EAAQlzU,KAAKmV,GAEbmyU,IACA1hV,IAER,MAhDwC,CACxC,IAAK,IAAIqC,EAAM,EAAGA,EAAMo/U,EAAgBxhV,OAAQoC,IACxCo/U,EAAgBp/U,KAAShH,EACzB5C,KAAKulV,mBAAmByD,EAAgBp/U,IAAMmjB,YAAYs+R,GACnDmrB,EAAkB5sU,IACzB5J,KAAK+jV,sBAAsBvN,EAAkB5sU,IAAMmjB,YAAYs+R,GAGnEwpB,EAAQlzU,KAAK,CACT2X,MAAO0vU,EAAgBp/U,GACvB0D,SAAU1D,EACV60D,SAAU+3Q,EAAkB5sU,KAIpC5J,KAAK+kK,QAAU,GACf/kK,KAAKijV,mBAAqB,GAC1BjjV,KAAKkjV,iBAAmB,EAC5B,CAiCA,MAAO,CACHriK,QAASA,EACTg0J,QAASA,EAEjB,EAEAqU,oBAAqB,SAAS/5S,EAAM7hC,EAAUmlE,EAAew2Q,GAGzD,GAAK95S,EAAKpiC,SAASs+S,GASnB,OALAl8Q,EAAKpiB,YAAYs+R,GACjBrrT,KAAK+kK,QAAQv6J,OAAO8C,EAAU,GAC9BtN,KAAKkjV,iBAAiB14U,OAAO8C,EAAU,GAGhC,CACHgM,MAAOm5D,EACPnlE,SAAUA,EAAW27U,EACrBxqR,SALOz+D,KAAKijV,mBAAmBz4U,OAAO8C,EAAU,GAAG,GAO3D,EAEAy4U,uBAAwB,SAASllK,GAC7B,IACIn4K,EAAO4Q,EAAOhM,EAIdy9B,EALAwK,EAAWv1C,KAAK6L,QAAQ,GAAG0pC,SAE3Bl8B,EAASrZ,KAAK+kK,QACd8vK,EAAU,GACVjrU,EAAM,EAGV,GAAgC,aAA5B5J,KAAKmH,QAAQowL,aAA8Bv3L,KAAKg3U,aAChD,MAAO,GAGX,IAAoB,IAAhBn2J,EAAQ,GAWR,OAVAl+K,EAAE4yC,GAAUxoB,YAAYs+R,GACxBwpB,EAAUlyU,EAAEkY,IAAI7a,KAAKijV,mBAAmBp8U,MAAM,IAAI,SAAS43D,EAAU70D,GAClE,MAAO,CACJ60D,SAAUA,EACVnxD,SAAU1D,EAEhB,IACA5J,KAAKkjV,iBAAmB,GACxBljV,KAAKijV,mBAAqB,GAC1BjjV,KAAK+kK,QAAU,GACR8vK,EAGX,KAAOjrU,EAAMi3K,EAAQr5K,OAAQoC,IAAO,CAOhC,IANA0D,GAAY,EACZgM,EAAQunK,EAAQj3K,GACZ5J,KAAK07U,gBAAgBpiU,KACrB5Q,EAAQ1I,KAAK++U,aAAa/+U,KAAK07U,gBAAgBpiU,KAG9CyxB,EAAI,EAAGA,EAAI1xB,EAAO7R,OAAQujC,IAC3B,GAAIriC,GAAS2Q,EAAO0xB,GAAI,CACpBz9B,EAAWy9B,EACX,KACJ,CAGAz9B,GAAY,IACZunU,EAAQlzU,KAAK3B,KAAK6wI,SAASvjI,IAC3B3K,EAAE4yC,EAASj8B,IAAQyT,YAAYs+R,GAEvC,CAEA,OAAOwpB,CACX,EAEAsQ,SAAU,SAAS7rU,EAAOyrC,GAGtB,QAFWzrC,EAAQyrC,EAAO,EAAI1hD,KAAKyN,MAAMwI,EAAQyrC,GAAQ,GAE1C,GAAKA,CACxB,EAEA29B,QAAS,SAAS9c,GACd,IAGInH,EAAU0qR,EAHVlhV,EAAOjI,KACPo/U,EAA8C,aAA5Bp/U,KAAKmH,QAAQowL,WAC/B9lK,EAAazxB,KAAKyxB,WAElBszB,EAAO/kD,KAAK80D,UACZknI,EAAch8L,KAAK++U,aACnBO,EAAQ,GAkCZ,OAhCIF,IACAn3U,EAAKi7U,iBAAmB,GACxBj7U,EAAKg7U,mBAAqB,GAC1Bh7U,EAAK88J,QAAU,IAGnBokL,EAAU13T,EAAWozB,OAErBliD,EAAEK,KAAK4iE,GAAS,SAASj3C,EAAGrV,GACxB,IAAIurC,EAAO58C,EAAKk9U,SAAS7rU,EAAOyrC,GAEhC98C,EAAK27U,MAAK,WACNnyT,EAAWwiC,MAAMpP,EAAME,GAEvB0Z,EAAWx2D,EAAKm9U,cAAc3zT,EAAWmG,OAAQ,CAACte,EAAQurC,IAC1D58C,EAAKi7U,iBAAiBvhV,KAAK2X,GAC3BrR,EAAKg7U,mBAAmBthV,KAAK88D,GAC7Bx2D,EAAK88J,QAAQpjK,KAAK2gV,EAAY7jR,GAAYA,EAAWu9H,EAAYv9H,IAEjE6gR,EAAM39U,KAAK,CACP2X,MAAOA,EACPmlD,SAAUA,IAGdx2D,EAAKs9U,mBAAmBjsU,GAAO+L,SAASgmS,GAExC55R,EAAWwiC,MAAMk1R,EAASpkS,EAC9B,GACJ,IAEA98C,EAAK88J,QAAU98J,EAAKo8U,kBAAkBp8U,EAAK88J,SAEpCu6K,CACX,EAEApzG,cAAe,SAASvnO,GACpB,IAAIwqC,EAAOxsC,EAAEgC,EAAEg6E,gBAEVh6E,EAAE0E,sBAAwB8lC,EAAKvrB,KAAK,aACrC5jB,KAAKoK,QAAQ8pO,EAAO,CAAE/kM,KAAMA,GAEpC,EAEAu3S,kBAAmB,WACf1mV,KAAK++U,aAAep+U,EAAM6uB,OAAOxvB,KAAKmH,QAAQuqE,eAClD,EAEAmmQ,uBAAwB,SAAS7rU,GAC7B,IAAIy4D,EAAYzkE,KAAKksD,QAAQhiD,QACzB4tU,EAAc93U,KAAKomD,OACnB4xF,EAAU,EAEV8/L,EAAY,IAAuC,SAAjCA,EAAY,GAAG3qU,MAAME,UACxB,SAAXrB,IACAgsI,EAAUr3I,EAAM4C,QAAQmb,aAG5Bs5H,GAAWjvI,WAAW07D,EAAUx4D,IAAI,sBAAuB,IAAMlD,WAAW07D,EAAUlvB,SAAS,YAAYtpC,IAAI,SAAU,IAEzH6rU,EAAY7rU,IAAI,gBAAiB+rI,GAEzC,EAEAggM,+BAAgC,WAC5B,GAAIh4U,KAAKmH,QAAQk5O,SAAWrgP,KAAKmH,QAAQk5O,QAAQ74O,OAAQ,CACrD,IAAI6X,EAAQ1e,EAAM4C,QAAQ8b,MAAMrf,KAAK4M,SACjC8R,EAAY/d,EAAM4C,QAAQmb,YAC1BwzT,EAAgBlyU,KAAK2mD,QAAQh6C,SAASA,SAASwpB,KAAK,mBACpD6wB,EAAQhnD,KAAKyxB,WAAWu1B,QAE5BkrR,EAAcjmU,IAAKoT,EAAQ,eAAiB,gBAAkB2nC,EAAQtoC,EAAY,EACtF,CACJ,IAIJ/d,EAAM4pB,GAAGmpT,YAAcA,EACvB/yU,EAAM4pB,GAAG2M,OAAOw8S,EAEnB,CA3xDD,CA2xDG5yU,OAAOH,MAAM+G,QACF/G,OAqBd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfouE,EAASpuE,EAAM4tB,WACfhE,EAAK5pB,EAAM4pB,GACXla,EAAO1P,EAAM0P,KACbogU,EAAOlmT,EAAGkmT,KACVp/P,EAAS9mD,EAAG8mD,OACZ9tE,EAAU5C,EAAM4C,QAChBoW,EAAgBhZ,EAAM+Y,eACtB+xC,EAAmB9qD,EAAMyN,KAAKq9C,iBAC9B5gC,EAAOlqB,EAAMkqB,KACbsB,EAAK,qBACLi9T,EAAej9T,EAAK,aACpBq7R,EAAW,WACX6hC,EAAW,WACXnsS,EAAS,SACTktR,EAAU,UACVC,EAAgB,aAChB7kB,EAAgB,gBAChB8jC,EAAgB,gBAChBC,EAAc,QAAUp9T,EAAK,YAAcA,EAC3Cq9T,EAAc,aAAer9T,EAAK,cAAgBA,EAClD4F,EAAW,WACX03T,EAAe,SACfC,EAAe,SAKfvZ,EAAe9+P,EAAOtuE,OAAQ,CAC9BoF,KAAM,SAAS0D,EAAS1E,GACpB,IAEIq0U,EAAa16S,EAFb74B,EAAOjI,KACPsZ,EAAQnS,GAAWA,EAAQmS,MAG/BrR,EAAKkkB,GAAKA,EACVhlB,EAAUjE,MAAMD,QAAQkE,GAAW,CAAEsqB,WAAYtqB,GAAYA,EAE7DkqE,EAAOtpE,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GAEnCA,EAAUc,EAAKd,QACf0E,EAAU5D,EAAK4D,QAAQge,GAAG,QAAUsC,EAAIlkB,EAAKmkO,cAAc5iO,KAAKvB,IAEhEA,EAAK0hV,mBAAqB1hV,EAAK2hV,YAAYpgV,KAAKvB,GAEhDA,EAAKuzU,YAAc74U,IACnBsF,EAAK4hV,eAEL5hV,EAAK6hV,iBAEL7hV,EAAKklE,SAELllE,EAAK8hV,MAAQ,GACb9hV,EAAK+hV,MAAQ,GAEb/hV,EAAKmxE,WAELnxE,EAAK6pB,YACL7pB,EAAK2E,QAAQwB,KAAK2jB,EAAU9pB,EAAK2E,QAAQgX,KAAKmO,IAE9C9pB,EAAKgiV,QAELhiV,EAAK++S,SAEL/+S,EAAKiiV,UAELjiV,EAAK6kE,cAEL7kE,EAAK0tU,cAEDxuU,EAAQmtB,OACRt0B,KAAK+qU,SAGT9iU,EAAK6/S,QAEL7/S,EAAK4/S,UAEL5/S,EAAK8uU,UAAY9uU,EAAKwqE,eAAiB,EAEnCn5D,IAAU1W,IACVuE,EAAQmS,MAAQA,GAGpBrR,EAAK6xU,cAAgB3yU,EAAQmS,MAE7BrR,EAAK2xU,mBAAmB3xU,EAAKd,SAC7Bc,EAAKorU,YACLprU,EAAK2rE,SAASjqE,IAAI,YAAa1B,EAAKkiV,4BAA4B3gV,KAAKvB,IAErEA,EAAK40U,WAEL50U,EAAK0B,IAAI,OAAO,SAAShF,IAChBA,EAAE2F,OAAOspE,SAASC,SAAW5rE,EAAKszU,kBACnCtzU,EAAKmiV,cAAcniV,EAAKoiV,mBAEhC,IAEIljV,EAAQ6qE,SACR/pE,EAAKwpB,WAAW20C,SACe,IAAxBn+D,EAAKwqE,iBACZ3xC,EAAO35B,EAAQ25B,MAAQ,OAEnB06S,EAAcr0U,EAAQq0U,cAEe,IAAlBr0U,EAAQmS,MACvBwnB,EAAO06S,EACAvzU,EAAKyoU,YACZ5vS,EAAOj1B,EAAQ0pC,SAAS,aAAazU,SAI7C74B,EAAKmiV,cAActpT,IAGZn+B,EAAEsF,EAAK4D,SAAS0sB,QAAQ,YAAYtrB,GAAG,cAG9ChF,EAAKkgB,QAAO,GAGhBlgB,EAAK2rE,SAASpqE,KAAK,SAAS,SAAS7E,GAAKA,EAAEwE,gBAAkB,IAE9DxI,EAAMi0B,OAAO3sB,GACbA,EAAKoqB,kBACT,EAEAlrB,QAAS,CACL/E,KAAM,eACN0lB,SAAS,EACTkqD,UAAU,EACVs4Q,mBAAmB,EACnBhxU,MAAO,EACPwnB,KAAM,KACNp4B,MAAO,KACP48B,MAAO,IACPt5B,OAAQ,IACRynE,cAAe,GACf/B,eAAgB,GAChB8pQ,YAAa,GACb7nQ,YAAa,GACb6pQ,iBAAkB,GAClBD,uBAAwB,GACxB18R,YAAY,EACZyxC,UAAW,CAAC,EACZ/iE,OAAQ,OACR5pB,UAAW,EACX2uU,kBAAkB,EAClBr+Q,SAAS,EACT7lD,SAAU,KACVm6U,cAAe,KACfC,oBAAqB,KACrBtX,cAAgB9kU,GAAS2gE,EAAO3gE,GAChC+kU,mBAAqB/kU,GAAS2gE,EAAO3gE,GACrCopU,WAAW,EACXtjP,MAAO,KACP89O,YAAa,KACbhiU,KAAM,SACNyjB,SAAU,QACVva,QAAS,SACTob,MAAO,KACPikT,aAAa,GAGjBluU,OAAQ,CACJ,OACA,QACA6yC,EACA,SACA,YACA,cACA,YACA,UACA,MACA,gBAGJhrB,WAAY,SAAS/qB,GACjBkqE,EAAOtpE,GAAGmqB,WAAW3nB,KAAKvK,KAAMmH,GAEhCnH,KAAK4zE,SAAS1hD,WAAWlyB,KAAKyyU,aAAatrU,IAE3CnH,KAAK6pV,eACL7pV,KAAK8pV,iBACL9pV,KAAKoxT,aACLpxT,KAAKy4U,sBACLz4U,KAAKs4U,mBACLt4U,KAAK6nT,UACL7nT,KAAK8nT,SAEA9nT,KAAK0I,SAAW1I,KAAKu7U,kBACtBv7U,KAAKumC,OAAO,EAEpB,EAEAvkC,QAAS,WACL,IAAIiG,EAAOjI,KAEXqxE,EAAOtpE,GAAG/F,QAAQuI,KAAKtC,GAEvBA,EAAK2E,QAAQwsB,IAAIjN,GACjBlkB,EAAK2E,QAAQwsB,IAAIgwT,GACjBnhV,EAAK4D,QAAQutB,IAAIjN,GAEjBlkB,EAAKwiV,OAAOrxT,MACZnxB,EAAKwiV,OAAS,KACdxiV,EAAKwyU,WAAa,KAElBxyU,EAAKuzU,YAAYpiT,MAEbnxB,EAAK8pU,aACL9pU,EAAK8pU,YAAY34S,IAAIgwT,EAE7B,EAEA72P,KAAM,WACF,IAAItqF,EAAOjI,KACPg3U,IAAa/uU,EAAKwpB,WAAWlC,UAAWtnB,EAAKwpB,WAAWlC,SAASs0B,QAAQr8C,OAAS,EAClFosE,EAAW5zE,KAAK4zE,SAEhB3rE,EAAKisF,MAAMlnF,YAIV/E,EAAK2rE,SAASC,SAAW5rE,EAAKouN,SAAWqzH,EAkBnCzhV,EAAKwtU,kBACZxtU,EAAKyiV,cAAe,EACpBziV,EAAKisF,MAAMvqF,IAAI,WAAY1B,EAAK0hV,oBAGhC1hV,EAAKisF,MAAM9B,UAAW,EACtBnqF,EAAK2E,QAAQgX,KAAK,wBAAyBgwD,EAASkqQ,WACpD71U,EAAKisF,MAAM3B,OACXtqF,EAAK0iV,qBACL1iV,EAAKyvU,eA1BLzvU,EAAK8tU,OAAQ,EACb9tU,EAAKouN,OAAS,SAEVpuN,EAAK8pU,cACL9pU,EAAK8pU,YAAYniT,IAAI,IACrB3nB,EAAK8hV,MAAQ,IAGb9hV,EAAK8pU,aAA0C,IAA3B9pU,EAAKd,QAAQxB,YAAoBqxU,GACrD/uU,EAAK0W,UACL1W,EAAKisF,MAAMvqF,IAAI,WAAY1B,EAAK0hV,oBAChC1hV,EAAK2E,QAAQgX,KAAK,wBAAyBgwD,EAASkqQ,WACpD71U,EAAKisF,MAAM3B,OACXtqF,EAAK0iV,sBAEL1iV,EAAKwsU,iBAajB,EAEA/uR,MAAO,WACH1lD,KAAKmqV,8BACLnqV,KAAKk0F,MAAMxuC,OACf,EAEAykS,4BAA6B,WACzB,IAAIv9U,EAAU5M,KAAK4M,QACfknB,EAAUlnB,EAAQupB,KAAK,kBAAkBvS,KAAK,MAElDhX,EAAQgX,KAAK,mBAAoBkQ,EACrC,EAEA81T,YAAa,WACJ5pV,KAAK2zU,mBACN3zU,KAAK6pO,cAAc7pO,KAAK+xU,YAEhC,EAEA4Y,mBAAoB,WAChB,IAAI5Y,EAAc/xU,KAAK+xU,YACnB6Y,EAAkB5qV,KAAKo5U,SAE3B,GAAKrH,IAAe/xU,KAAK2zU,kBAAzB,CAIA,IAAIkX,EAAgB7qV,KAAK+xU,YAAY,KAAOp4T,IACxCgsB,EAAQhlC,EAAMglC,MAAM3lC,KAAK+xU,YAAY,IAAI,GAE7C/xU,KAAKo5U,UAAW,EAEhBrH,EAAY1sT,SAAS,YACrB0sT,EAAYllU,QAAQ,kBAAkBZ,IAAI,QAASjM,KAAKk0F,MAAMroF,QAAQE,SACtEgmU,EAAYhlT,YAAY,YAEpB89T,IACA9Y,EAAY3nU,QAAQ,SACpBzJ,EAAMglC,MAAMosS,EAAY,GAAIpsS,IAGhC3lC,KAAKo5U,SAAWwR,CAhBhB,CAiBJ,EAEAnV,cAAe,WACX,OAAOz1U,KAAKu7U,kBAAoBv7U,KAAK+xU,aAAe1gQ,EAAOtpE,GAAG0tU,cAAclrU,KAAKvK,KACrF,EAEA+oB,OAAQ,SAASA,GACb/oB,KAAKg5U,QAAQjwT,GAAQ,EACzB,EAEA/U,QAAS,SAASqyS,GACd,IAAIryS,EAEJ,GAAIqyS,IAAczjT,EAGd,QAFAoR,EAAUhU,KAAK4zE,SAAS7tC,UAEe,IAAvB/lC,KAAKyyE,eAAuBzyE,KAAKu7U,iBACtCv7U,KAAKw7U,YAGTxnU,EAGXhU,KAAK42F,OAAOyvN,EAChB,EAEA5nP,SAAU,SAASnlD,GACf,IAAIrR,EAAOjI,KACPy+D,EAAW,KAEf,GAAc,OAAVnlD,EAAkB,OAAOA,EAE7B,GAAIA,IAAU1W,EACV67D,EAAWx2D,EAAK2rE,SAAS4iQ,oBAAoB,OAC1C,CACH,GAAqB,iBAAVl9T,EAAoB,CAC3B,GAAIrR,EAAKd,QAAQ8uD,QACb,OAAOhuD,EAAKwpB,WAAWorC,SAASl6D,EAAE2W,GAAOlL,KAAK,QAG9CkL,EADAA,EAAMvM,SAAS,uBACN,EAEDpK,EAAEsF,EAAKikD,SAAS5yC,MAAMA,EAEtC,MAAWrR,EAAKszU,mBACZjiU,GAAS,GAGbmlD,EAAWx2D,EAAKwpB,WAAWgD,WAAWnb,EAC1C,CAMA,OAJKmlD,IACDA,EAAWx2D,EAAK6iV,wBAGbrsR,CACX,EAEA9/C,QAAS,WACL3e,KAAK4zE,SAASj1D,SAClB,EAEAmiB,KAAM,SAASA,GACX,IACIiqT,EADA9iV,EAAOjI,KAEP6gD,EAAa54C,EAAKd,QAAQ05C,WAI9B,IAFA/f,EAAgB,OAATA,EAAgB,GAAKA,KAEfl+B,EAsBT,OAAOqF,EAAKmiV,gBArBQ,iBAATtpT,GAKXiqT,EAAclqS,EAAa/f,EAAKjoB,cAAgBioB,EAEhD74B,EAAKy6E,SAAQ,SAASt0E,GAOlB,OANAA,EAAOnG,EAAKyhT,MAAMt7S,GAEdyyC,IACAzyC,GAAQA,EAAO,IAAIyK,eAGhBzK,IAAS28U,CACpB,IAAGn+S,MAAK,WACJ3kC,EAAKmiV,cAAcniV,EAAKw2D,YAAc39B,GACtC74B,EAAK0pU,uBACT,KAjBI1pU,EAAKmiV,cAActpT,EAsB/B,EAEA0zS,aAAc,WACV7xU,EAAE3C,KAAK+xU,aAAaniT,IAAI,IACxByhD,EAAOtpE,GAAGysU,aAAajqU,KAAKvK,KAChC,EAEA0I,MAAO,SAASA,GACZ,IAAIT,EAAOjI,KACP4zE,EAAW3rE,EAAK2rE,SAChBniD,EAAaxpB,EAAKwpB,WAGtB,OAAI/oB,IAAU9F,GACV8F,EAAQT,EAAKmsU,aAAensU,EAAK2rE,SAASlrE,QAAQ,MACjC9F,GAAyB,OAAV8F,EAAiB,GAAKA,GAG1DT,EAAK2xU,mBAAmB3xU,EAAKd,QAASuB,IAElCA,GAAUT,EAAKszU,mBACftzU,EAAK6xU,cAAgB,MAGzB95U,KAAKoK,QAAQ,MAAO,CAAE1B,MAAOA,IAEzBT,EAAK0yU,UAAY1yU,EAAKd,QAAQwsE,aAAe1rE,EAAK2rE,SAASC,SACvD5rE,EAAK+iV,cACLv5T,EAAWxnB,OAAOizC,EAAQj1C,EAAK+iV,cAGnC/iV,EAAK+iV,aApBK,WAAa/iV,EAAKS,MAAMA,EAAQ,EAoBdc,KAAKvB,QAEjCwpB,EAAW9nB,IAAIuzC,EAAQj1C,EAAK+iV,gBAI5B/iV,EAAK6pU,oBAAsBl+P,EAASC,SAAWD,EAASojQ,aACxD/uU,EAAKusU,eAELvsU,EAAKo0U,kBAGTzoQ,EAASlrE,MAAMA,GAAOkkC,MAAK,WACvB3kC,EAAKytU,KAAOztU,EAAK6uU,oBAAsB7uU,EAAKmsU,YAC5CnsU,EAAK8uU,UAAY9uU,EAAKwqE,cACtBxqE,EAAK0pU,uBACT,KACJ,EAEA4J,eAAgB,WACZ,OAAOv7U,KAAKw7U,eAAiBx7U,KAAKw7U,YAAY,EAClD,EAEAqO,aAAc,WACV,IAAI5hV,EAAOjI,KACPmH,EAAUc,EAAKd,QACfq0U,EAAcr0U,EAAQq0U,YACtBprU,EAAWjJ,EAAQqjV,oBAEvB,IAAKhP,EAGD,OAFAvzU,EAAKuzU,YAAYpiT,MAAM/sB,cACvBpE,EAAKuzU,YAAc74U,KAIlByN,IACDA,EAAYhC,GACR2gE,EADyC,iBAAhBysQ,EAClBptU,EACAzN,EAAM6uB,OAAOroB,EAAQssE,cAArB9yE,CAAoCyN,KAG3B,mBAAbgC,IACPA,EAAWzP,EAAMyP,SAASA,IAG9BnI,EAAKuiV,oBAAsBp6U,EAEtBnI,EAAKszU,mBACNtzU,EAAKuzU,YAAc74U,EAAE,wDAAwDs0B,UAAUhvB,EAAKukE,OAGhGvkE,EAAKuzU,YAAYnrU,KAAKD,EAASorU,IACdpiT,MACAvP,GAAG0/T,EAAathV,EAAK86E,OAAOv5E,KAAKvB,IACjC4hB,GAAG2/T,EAAavhV,EAAKsqT,aAE1C,EAEA83B,iBAAkB,WACd,IAAI7O,EAAcx7U,KAAKmH,QAAQq0U,YAC/B,MAA+B,iBAAhBA,EAA4BA,EAAcx7U,KAAK0pT,MAAM8xB,EACxE,EAEAsP,qBAAsB,WAClB,IAAI7iV,EAAOjI,KACPw7U,EAAcvzU,EAAKd,QAAQq0U,YAE/B,OAAIvzU,EAAKszU,iBACE54U,EAAEgF,cAAc6zU,GAAe,IAAI/vR,EAAiB+vR,GAAevzU,EAAKgjV,gBAAgBhjV,EAAKoiV,mBAAoB,IAGrHznV,CACX,EAEAsoV,cAAe,SAAS98U,GACpB,IAAInG,EAAOjI,KACX,GAAKiI,EAAKyoU,UAAV,CAIA,IAAIhoU,EAAQT,EAAK2rE,SAASlrE,QAAQ,GAC9B8yU,EAAcvzU,EAAK6iV,uBACnBK,EAAmB3P,GAAevzU,EAAKsuN,OAAOilH,GAE9C9yU,IAAU9F,GAAyB,OAAV8F,IACzBA,EAAQ,IAGR8yU,IACI2P,IAAqBvoV,GAAoC,OAArBuoV,IACpCA,EAAmB,IAGvB3P,EAAc,kBAAoB2P,EAAmB,KAAOljV,EAAKyhT,MAAM8xB,GAAe,aAG1FvzU,EAAKiuI,SAAS9nI,EAAMotU,EAAa9yU,GAE7BA,IAAU+nU,EAAKoG,UAAU5uU,EAAKmsU,mBAAoB1rU,KAClDT,EAAKosU,cAAgB,KACrBpsU,EAAKmyU,QAAQ1xU,GAtBjB,CAwBJ,EAEAmqU,WAAY,WAER,IAKIp0Q,EALAx2D,EAAOjI,KACPorV,EAAenjV,EAAK6xU,cACpByF,EAAWt3U,EAAKouN,SAAWozH,EAE3Br7U,EAAOnG,EAAKwpB,WAAWgD,WAG3BxsB,EAAKojV,cAAe,EAEpBpjV,EAAKqpU,gBACLrpU,EAAKspU,gBACLtpU,EAAKstU,eAAennU,EAAK5G,QAEzBS,EAAKkwU,cAAa,GAElBlwU,EAAKisF,MAAM5mF,WAEXrF,EAAKijV,cAAc98U,GAEdmxU,IACGt3U,EAAK8tU,OACL9tU,EAAK8gB,OAAO9gB,EAAKwtU,iBAGrBxtU,EAAK8tU,OAAQ,EAER9tU,EAAK8zU,SACF3tU,EAAK5G,SACAS,EAAK2rE,SAASlrE,QAAQlB,QAAU4jV,GAAgB,GAAsB,OAAjBA,GACtDnjV,EAAKs+B,OAAO6kT,GAGhBnjV,EAAK6xU,cAAgB,MACrBr7Q,EAAWx2D,EAAK2rE,SAAS4iQ,oBAAoB,KAC7BvuU,EAAK64B,SAAW74B,EAAKyhT,MAAMjrP,IACvCx2D,EAAKqjV,aAAa7sR,IAEfx2D,EAAKmiV,kBAAoBniV,EAAKoiV,qBACrCpiV,EAAK2rE,SAASlrE,MAAM,IACpBT,EAAKqjV,aAAa,MAClBrjV,EAAK8uU,UAAY9uU,EAAKwqE,iBAKlCxqE,EAAKsyU,YACLtyU,EAAKmC,QAAQ,YACjB,EAEAuoU,YAAa,WACT3yU,KAAKsrV,aAAatrV,KAAK4zE,SAAS4iQ,oBAAoB,KAEhDx2U,KAAKqrV,cAAiBrrV,KAAK01U,OAA4B,IAApB11U,KAAK+2U,aACxC/2U,KAAK+2U,UAAY/2U,KAAKyyE,cAE9B,EAEA84Q,aAAc,WACNvrV,KAAKmH,QAAQmjV,mBACbtqV,KAAKwrV,SAEb,EAEAC,qBAAsB,WAClB,IAAIxjV,EAAOjI,KACGiI,EAAK2E,QAEXid,GAAG,UAAYu/T,EAAcnhV,EAAKyjV,gBAAgBliV,KAAKvB,IACvD4hB,GAAG,WAAau/T,EAAcnhV,EAAK0jV,iBAAiBniV,KAAKvB,IAC7DA,EAAK8pU,aACL9pU,EAAK8pU,YAAYloT,GAAG,UAAYu/T,EAAcnhV,EAAKyjV,gBAAgBliV,KAAKvB,IACpE4hB,GAAG,WAAau/T,EAAcnhV,EAAK0jV,iBAAiBniV,KAAKvB,GAErE,EAEAmkO,cAAe,WACXpsO,KAAK4M,QAAQxC,QAAQ,QACzB,EAEAshV,gBAAiB,WACb1rV,KAAK4M,QAAQyY,SAAS+kT,GACtBpqU,KAAKo5U,UAAW,CACpB,EAEAuS,iBAAkB,WACd,IAAI1jV,EAAOjI,KACP4rV,EAAW9qV,OAAOlB,OAASkB,OAAOokB,IAEjCjd,EAAKmxU,WACN9+S,aAAaryB,EAAKkuU,gBAEd5yU,EAAQggB,SAASvB,KAAO4pU,EACxB3jV,EAAKs3D,UAELt3D,EAAK2+G,QAGT3+G,EAAK2E,QAAQmgB,YAAYq9S,GACzBniU,EAAKmxU,UAAW,EAChBnxU,EAAK8tU,OAAQ,EACb9tU,EAAK4D,QAAQzB,QAAQ,QAE7B,EAEAyhV,kBAAmB,WACf7rV,KAAKo5U,WAAap5U,KAAK+xU,WAC3B,EAEAx7F,cAAe,SAAS5xO,GACpBA,EAAEwE,iBACFnJ,KAAKk0F,MAAMjqF,OAAO,WAAYjK,KAAK2pV,oBACnC3pV,KAAKyxU,SAAWzxU,KAAK4M,QACrB5M,KAAKo5U,UAAW,EAChBp5U,KAAKg5U,SACT,EAEAjkG,UAAW,SAAS5tO,GAChB,IAAIc,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACfoc,EAAU9gB,EAAQ8gB,QAClB0pD,EAAWxqE,EAAQwqE,SACnB/kE,EAAU3E,EAAK2E,QAAQY,IAAIvF,EAAK8pU,aAAa34S,IAAIjN,GACjD2/T,EAAkB7jV,EAAK2E,QAAQwsB,IAAIowT,GAElC73Q,GAAa1pD,EAuBPA,GACPrb,EAAQqlB,WAAWF,GACnB+5T,EAAgBzmU,SAASglT,IAEzByhB,EAAgB/+T,YAAYs9S,IA1B5Bx+T,EAAQgkB,KAAK23R,GAAU,GAAO33R,KAAKw5T,GAAU,GAE7CyC,EACK/+T,YAAYs9S,GACZxgT,GAAG2/T,EAAavhV,EAAKsqT,cAE1B3lT,EACKgX,KAAKmO,EAAUnlB,EAAQwB,KAAK2jB,IAC5BnO,KAAK4hS,GAAe,GACpB5hS,KAAK0lU,GAAe,GACpBz/T,GAAG,UAAYsC,EAAIlkB,EAAMA,EAAK28G,SAASp7G,KAAKvB,IAC5C4hB,GAAGlpB,EAAM4C,QAAQumB,UAAYqC,EAAIlkB,EAAK4jV,kBAAkBriV,KAAKvB,IAC7D4hB,GAAG,QAAUsC,EAAIlkB,EAAKsjV,aAAa/hV,KAAKvB,IAE7CA,EAAK2E,QAAQid,GAAG,QAAUsC,EAAIlkB,EAAKsuO,cAAc/sO,KAAKvB,IAEjDA,EAAK8pU,YAGNnlU,EAAQid,GAAG,QAAUsC,EAAIlkB,EAAKujV,QAAQhiV,KAAKvB,IAF3C2E,EAAQid,GAAG,WAAasC,EAAIlkB,EAAK8jV,UAAUviV,KAAKvB,KAYxD4D,EAAQ+X,KAAK4jS,EAAUv/R,GACfrE,KAAKylU,EAAU13Q,GAEvB/kE,EAAQgX,KAAK4hS,EAAev9R,GACnBrE,KAAK0lU,EAAe33Q,EACjC,EAEAizC,SAAU,SAASjgH,GACf,IAGIkmV,EACAnxB,EAJAzxT,EAAOjI,KACP8R,EAAMnN,EAAE2iC,QACR+nL,EAAS1qN,EAAE0qN,OAIX28H,EAAiB/jV,EAAKisF,MAAMlnF,UAchC,GAZI/E,EAAK8pU,cACL8Y,EAAgB5iV,EAAK8pU,YAAY,KAAOp4T,KAGxC7H,IAAQ+Y,EAAKO,MACbtZ,EAAM+Y,EAAKQ,GACXquS,GAAU,GACH5nT,IAAQ+Y,EAAKS,QACpBxZ,EAAM+Y,EAAKU,KACXmuS,GAAU,IAGVA,IAAWmxB,EAgBf,GAZAlmV,EAAE2iC,QAAUx1B,GAEPu9M,GAAUv9M,IAAQ+Y,EAAKQ,IAAOvZ,IAAQ+Y,EAAKM,MAC5CljB,EAAK4hO,cAAc5hO,EAAK2E,SAGxB3E,EAAKouN,SAAWozH,GAAgB33U,IAAQ+Y,EAAKM,MAC7CljB,EAAKusU,eACLvsU,EAAK8tU,OAAQ,EACb9tU,EAAKouN,OAASqzH,GAGd53U,IAAQ+Y,EAAKK,OAASjjB,EAAKkuU,gBAAkBluU,EAAK8pU,aAAeia,EACjErnV,EAAEwE,sBAWN,GAPI2I,IAAQ+Y,EAAKa,UAAam/T,IAC1B5iV,EAAK8gB,QAAQijU,GACbrnV,EAAEwE,oBAGNuwT,EAAUzxT,EAAK26E,MAAMj+E,IAErB,CAIA,IAAKqnV,IAAmB/jV,EAAK8pU,YAAa,CACtC,IAAI/9T,EAAU/L,EAAK2uF,SAUnB,GARI9kF,IAAQ+Y,EAAKY,MACbiuS,GAAU,EACVzxT,EAAK4yU,cACE/oU,IAAQ+Y,EAAKW,MACpBkuS,GAAU,EACVzxT,EAAK8yU,aAGLrhB,EAAS,CACT,GAAIzxT,EAAKmC,QAAQ,SAAU,CAAEq0D,SAAUx2D,EAAKgkV,oBAAoBhkV,EAAK2uF,UAAWznD,KAAMlnC,EAAK2uF,WAEvF,YADA3uF,EAAK2uF,OAAO5iF,GAIhB/L,EAAKy6E,QAAQz6E,EAAK2uF,UAAU,GAAMhqD,MAAK,WAC9Bo/S,GACD/jV,EAAK2+G,OAEb,IACAjiH,EAAEwE,gBACN,CACJ,CAEKkmN,GAAWqqG,IAAWzxT,EAAK8pU,aAC5B9pU,EAAKujV,SA7BT,CA+BJ,EAEAU,WAAY,SAASprT,EAAM0W,GACvB,IAAIqJ,EAAa7gD,KAAKmH,QAAQ05C,WAE9B,OAAI/f,IAASl+B,GAAwB,OAATk+B,IAI5BA,GAAc,GAEV+f,IACA/f,EAAOA,EAAKjoB,eAGc,IAAvBioB,EAAKnrB,QAAQ6hC,GACxB,EAEA20S,aAAc,SAAS/9U,EAAMg+U,GACzB,IAAIC,EAAiBrsV,KAAK8qV,uBAM1B,OAJIuB,IACAj+U,EAAO,CAACi+U,GAAgBjuU,OAAOhQ,IAG5BA,EAAKvH,MAAMulV,GAAYhuU,OAAOhQ,EAAKvH,MAAM,EAAGulV,GACvD,EAEAE,YAAa,WACT,IAKIC,EACAzrT,EANA74B,EAAOjI,KACPoO,EAAOnG,EAAKwpB,WAAWgD,WACvBkxC,EAAav3D,EAAK5G,QAAUS,EAAKszU,iBAAmB,EAAI,GACxDiR,EAqmBZ,SAAuBh1S,EAAMugN,GACzB,IAAK,IAAInuP,EAAM,EAAGA,EAAM4tC,EAAKhwC,OAAQoC,IACjC,GAAI4tC,EAAK1sC,OAAOlB,KAASmuP,EACrB,OAAO,EAGf,OAAO,CACX,CA5mBuB00F,CAAcxkV,EAAK+hV,MAAO/hV,EAAKykV,OAC1CxkR,EAAajgE,EAAKwqE,cAKlBvK,GADgB,IAAhBA,EACa,EAGAykR,EADbzkR,GAAcskR,EAAW,EAAI,EACW7mR,GAG5Cv3D,EAAOA,EAAK+D,OAAS/D,EAAK+D,SAAW/D,EAAKvH,QAC1CuH,EAAOnG,EAAKkkV,aAAa/9U,EAAM85D,GAE/B,IAAK,IAAIt+D,EAAM,EAAGA,EAAM+7D,IACpB7kC,EAAO74B,EAAKyhT,MAAMt7S,EAAKxE,KAEnB4iV,IAAYvkV,EAAKikV,WAAWprT,EAAM74B,EAAKykV,UAEhCzkV,EAAKikV,WAAWprT,EAAM74B,EAAK+hV,OALNpgV,KAUhCA,IAAQ+7D,IACR4mR,EAAiBtkV,EAAK2uF,SAEtB3uF,EAAKy6E,QAAQiqQ,EAAezkR,EAAat+D,EAAK+7D,IAAa/4B,MAAK,WAC5D,IAAIA,EAAO,WACF3kC,EAAKisF,MAAMlnF,WACZ/E,EAAKs3D,SAEb,EAEIt3D,EAAKmC,QAAQ,SAAU,CAAEq0D,SAAUx2D,EAAKgkV,oBAAoBhkV,EAAK2uF,UAAWznD,KAAMlnC,EAAK2uF,WACvF3uF,EAAKy6E,QAAQ6pQ,GAAgB3/S,KAAKA,GAElCA,GAER,IAER,EAEAm/S,UAAW,SAASpnV,GAChB,IAAIsD,EAAOjI,KAEX,GAAgB,IAAZ2E,EAAEg+E,OAAeh+E,EAAE2iC,UAAY3mC,EAAMkqB,KAAKK,MAA9C,CAIA,IAAI6sO,EAAY1lP,OAAOyc,aAAanqB,EAAEioV,UAAYjoV,EAAE2iC,SAEhDr/B,EAAKd,QAAQ05C,aACbk3M,EAAYA,EAAUl/O,eAGR,MAAdk/O,GACApzP,EAAEwE,iBAGNlB,EAAK+hV,OAASjyF,EACd9vP,EAAKykV,MAAQ30F,EAEb9vP,EAAKujV,SAfL,CAgBJ,EAEAh1B,WAAY,SAAS7xT,GACjB,IAAIuvF,EAAQl0F,KAAKk0F,MAEbvvF,EAAE0E,sBAAwBrJ,KAAK2zU,oBAInCz/O,EAAMtnF,QAAUjM,EAAMgsB,KAAKunE,EAAMroF,SAE7BqoF,EAAMroF,QAAQgB,QAAQ,YAAY,KAClCqnF,EAAMtnF,QAAQyY,SAAS,sBACvBrlB,KAAK4M,QAAQyY,SAAS,cAE9B,EAEA2hS,OAAQ,WACJ31O,EAAOtpE,GAAGi/S,OAAOz8S,KAAKvK,MACtBA,KAAKk0F,MAAMroF,QAAQwZ,SAAS,wBAC5BrlB,KAAKk0F,MAAMvqF,IAAI,OAAQ3J,KAAKw2T,WAAWhtT,KAAKxJ,MAChD,EAEA24U,iBAAkB,WACdtnQ,EAAOtpE,GAAG4wU,iBAAiBpuU,KAAKvK,MAChCA,KAAKyrV,sBACT,EAEAQ,oBAAqB,SAASpgV,GAC1B,OAAKA,GAAYA,EAAQ,GAIrBA,EAAQ,KAAO7L,KAAKw7U,YAAY,GACzBx7U,KAAK8qV,uBAGT9qV,KAAK4zE,SAAS8nQ,gBAAgB17U,KAAK4zE,SAAS6nQ,gBAAgB5vU,IAPxD,IAQf,EAEAk3E,OAAQ,SAASp+E,GACb,IAAIsD,EAAOjI,KACPmvC,EAAOxqC,EAAEwqC,MAAQxsC,EAAEgC,EAAEg6E,eAEzBh6E,EAAEwE,iBAEElB,EAAKmC,QAAQ,SAAU,CAAEq0D,SAAUx2D,EAAKgkV,oBAAoB98S,GAAOA,KAAMA,IACzElnC,EAAKy9C,SAITz9C,EAAK0uU,gBAAiB,EAEtB1uU,EAAKy6E,QAAQvzC,GAAMvC,MAAK,WACpB3kC,EAAK2+G,QACL3+G,EAAK4hO,cAAc5hO,EAAK2E,QAC5B,IACJ,EAEAi9N,cAAe,SAASh+N,GACpB,IAAI4wM,EAAS9iM,IACT/M,EAAU5M,KAAK4M,QACfmlU,EAAc/xU,KAAK+xU,YACnB8a,EAAiBhhV,IAAYkmU,EAAcnlU,EAAUmlU,EACrDmH,EAAe31U,EAAQggB,WAAahgB,EAAQic,OAASjc,EAAQ41U,YAAc51U,EAAQ0jB,UAEnF8qT,GAAeA,EAAY,KAAOlmU,EAAQ,IAAMqtU,GAIhDnH,IAAgB8a,EAAe,KAAOpwI,GAAUz8M,KAAK0qV,gBACrD1qV,KAAK0qV,cAAe,EACpB1qV,KAAKo5U,UAAW,EAChBp5U,KAAKyxU,SAAW5lU,EAAQzB,QAAQ,SAExC,EAEAisU,cAAe,SAAS7+R,GACpB,GAAKA,EAAL,CAIA,IAAIvvC,EAAOjI,KACMiI,EAAKd,QAAQ05C,aAG1BrJ,EAAOA,EAAK3+B,eAGhB5Q,EAAKy6E,SAAQ,SAASjkB,GAClB,OAAOx2D,EAAKikV,WAAWjkV,EAAKyhT,MAAMjrP,GAAWjnB,EACjD,GAXA,CAYJ,EAEA0+R,YAAa,WACT,OAAOl2U,KAAK8gC,MAChB,EAEA0qT,QAAS,WACL,IAAIvjV,EAAOjI,KACPyxB,EAAaxpB,EAAKwpB,WAItB,GAFA6I,aAAaryB,EAAKkuU,gBAEdluU,EAAK6pU,mBACL7pU,EAAKkuU,eAAiBj9S,YAAW,WAC7B,IAAIxwB,EAAQT,EAAK8pU,YAAYniT,MAEzB3nB,EAAK8hV,QAAUrhV,IACfT,EAAK8hV,MAAQrhV,EACbT,EAAKi0B,OAAOxzB,GACZT,EAAK0iV,sBAGT1iV,EAAKkuU,eAAiB,IAC1B,GAAGluU,EAAKd,QAAQm+B,WACb,CAKH,GAJAr9B,EAAKkuU,eAAiBj9S,YAAW,WAC7BjxB,EAAK+hV,MAAQ,EACjB,GAAG/hV,EAAKd,QAAQm+B,QAEXr9B,EAAK2rE,SAASC,QAIf,YAHApiD,EAAW20C,QAAQx5B,MAAK,WACpB3kC,EAAKqkV,aACT,IAIJrkV,EAAKqkV,aACT,CACJ,EAEAtQ,KAAM,SAAS31B,GACX,IAAIj4S,EAAM+vD,EAAOv0D,EACbV,EAAkC,mBAAdm9S,EACpBymC,EAAmB5jV,EAA4BvG,IAAfA,EAAE0jT,GAYtC,GAVIrmT,KAAKu7U,mBACoB,iBAAdl1B,EACHA,GAAa,IACbA,GAAa,GAEVymC,EAAgB//U,SAAS,wBAChCs5S,GAAa,IAIjBn9S,EAAY,CAGZ,IAFAkF,EAAOpO,KAAKyxB,WAAWgD,WAElB7qB,EAAM,EAAGA,EAAMwE,EAAK5G,OAAQoC,IAC7B,GAAIy8S,EAAUj4S,EAAKxE,IAAO,CACtBy8S,EAAYz8S,EACZu0D,GAAQ,EACR,KACJ,CAGCA,IACDkoP,GAAa,EAErB,CAEA,OAAOA,CACX,EAEAw0B,WAAY,WACJ76U,KAAKu7U,iBACLv7U,KAAK42F,OAAO52F,KAAKw7U,aAEjBx7U,KAAK4zE,SAASknQ,YAEtB,EAEAC,UAAW,WACP/6U,KAAK+sV,oBACL/sV,KAAK4zE,SAASonQ,WAClB,EAEAC,UAAW,WACP,IAAIgE,EAUJ,OARIj/U,KAAKw7U,YAAYzuU,SAAS,YAC1B/M,KAAK+sV,oBACL/sV,KAAK4zE,SAASknQ,aACdmE,EAAa,GAEbA,EAAaj/U,KAAK4zE,SAASsnQ,YAGxB+D,CACX,EAEA9D,UAAW,WACP,IAAI8D,EAEJ,IAAIj/U,KAAKw7U,YAAYzuU,SAAS,WAU9B,OANAkyU,EAAaj/U,KAAK4zE,SAASwnQ,YAEtBp7U,KAAK4zE,SAAS7tC,SAAY/lC,KAAKmH,QAAQ8uD,SACxCj2D,KAAK42F,OAAO52F,KAAKw7U,aAGdyD,CACX,EAEAvH,WAAY,WACR,IAAIvwU,EAAUnH,KAAKmH,QACfysE,EAAW5zE,KAAK4zE,SAChBo5Q,EAAcp5Q,EAAS7tC,QACvBzsB,EAAQs6D,EAASrtC,UAErBjtB,EAAQA,EAAMA,EAAM9R,OAAS,MAEf5E,GAAeuE,EAAQotU,iBAAmByY,IACpD1zU,EAAQ,GAGRA,IAAU1W,EACVgxE,EAAS7tC,MAAMzsB,IAEXnS,EAAQq0U,aAAiBr0U,EAAQ8uD,SAA0C,aAA/B9uD,EAAQ8uD,QAAQwtR,WAK5D7vQ,EAASgkQ,cAAc,IAJvB53U,KAAK42F,OAAO52F,KAAKw7U,aACjBx7U,KAAK0iF,QAAQ1iF,KAAKw7U,aAClBx7U,KAAK4zE,SAASjtB,QAAQ7vB,UAAU,GAK5C,EAEAi2T,kBAAmB,SAASE,GACxBjtV,KAAKw7U,YAAYzuT,YAAY,WAAakgU,GAAmB,KAAKh7T,WAAW,KACjF,EAEA2kE,OAAQ,SAASyvN,GACb,IAAIzyO,EAAW5zE,KAAK4zE,SAChB4nQ,EAAcx7U,KAAKw7U,YAEvB,GAAIn1B,IAAczjT,EAOd,QANAyjT,EAAYzyO,EAAS7tC,UAEHy1S,EAAYzuU,SAAS,aACnCs5S,EAAYm1B,GAGTn1B,EAGXrmT,KAAK+sV,oBAEL1mC,EAAYrmT,KAAKg8U,KAAK31B,GAEtBzyO,EAAS7tC,MAAMsgR,IAEI,IAAfA,IACAm1B,EAAYn2T,SAAS,WACTzB,KAAK,KAAMgwD,EAASkqQ,WAE5B99U,KAAK+xU,aACL/xU,KAAK+xU,YACA9/S,WAAW,yBACXrO,KAAK,wBAAyBgwD,EAASkqQ,WAGxD,EAEAp7P,QAAS,SAAS2jO,EAAW6mC,GACzB,IAAIjlV,EAAOjI,KAIX,OAFAqmT,EAAYp+S,EAAK+zU,KAAK31B,GAEfp+S,EAAK2rE,SAASrtC,OAAO8/Q,GAAWz5Q,MAAK,WACnCsgT,GAAajlV,EAAKouN,SAAWozH,IAC9BxhV,EAAKouN,OAASqzH,IAGC,IAAfrjC,GACAp+S,EAAKqjV,aAAa,KAE1B,GACJ,EAEAA,aAAc,SAAS7sR,GACnB,IAAIx2D,EAAOjI,KACPw7U,EAAcvzU,EAAKd,QAAQq0U,YAC3B5xU,EAAM3B,EAAK2rE,SAASrtC,SAEpB79B,EAAQ,GACRo4B,EAAO,IAEXl3B,EAAMA,EAAIA,EAAIpC,OAAS,MACX5E,IACRgH,GAAO,GAGX5J,KAAK+sV,kBAAkB,eAEnBtuR,GAAyB,IAAbA,GACZ39B,EAAO29B,EACP/1D,EAAQT,EAAKkvU,WAAW14Q,GACpB+8Q,IACA5xU,GAAO,IAEJ4xU,IACPvzU,EAAK2uF,OAAO3uF,EAAKuzU,YAAYn2T,SAAS,eAEtCyb,EAAO74B,EAAKoiV,mBAGR3hV,EADuB,iBAAhB8yU,EACC,GAEAvzU,EAAKsuN,OAAOilH,GAGxB5xU,EAAM,GAGV3B,EAAKwqE,cAAgB7oE,EAEP,OAAVlB,IACAA,EAAQ,IAGZT,EAAKmiV,cAActpT,GACnB74B,EAAKmsU,UAAU1rU,EAAOkB,GAEtB3B,EAAKoxU,iBACT,EAEA6Q,QAAS,WACL,IACIh2P,EADOl0F,KACMk0F,MACb3wE,EAAWhgB,EAAQggB,SACZ2wE,EAAMroF,QAAQ0sB,QAAQ,YAAYP,GAAG,GAEvCxwB,QAAU+b,IACf2wE,EAAM/sF,QAAQmrF,UAAUC,KAAKnrE,QAAW7D,EAASnC,SAAWmC,EAAShC,MAAS,SAAYgC,EAASvB,KAAOuB,EAASrC,GAAM,aAAegzE,EAAM/sF,QAAQmrF,UAAUC,KAAKnrE,QAE7K,EAEA6iU,MAAO,WACH,IAKI/kK,EAAMioK,EALNllV,EAAOjI,KACP4M,EAAU3E,EAAK2E,QACfwgV,EAAW,0BACX/8T,EAAK1vB,EAAMwvB,OACXhpB,EAAUc,EAAKd,SAGnB+9K,EAAOt4K,EAAQupB,KAAKi3T,IAEV,KACND,EAAW98U,EAAKg1S,aAAa,yEAA0E,CACnG/sN,KAAM,iBACNtoF,KAAM7I,EAAQ6I,KACdyjB,SAAUtsB,EAAQssB,SAClBqvH,MAAO,OACP5pI,QAAS,SAGbtM,EAAQutC,OAAO,aAAe9pB,EAAf,6FAGV8pB,OAAOgzS,GACPhzS,OAAOlyC,EAAK4D,SAEjBq5K,EAAOt4K,EAAQupB,KAAKi3T,IAGxBnlV,EAAKi9K,KAAOA,EACZj9K,EAAKwiV,OAAS79U,EAAQupB,KAAK,mBAC3BluB,EAAKwyU,WAAaxyU,EAAKwiV,OAAOt0T,KAAK,sBACvC,EAEAijD,SAAU,WACN,IAGIxsE,EAHA3E,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACfwhV,EAAaxhV,EAAQ,IAGzBe,EAAUf,EAAQc,UAELM,GAAG,oBACZL,EAAUf,EAAQ8gB,KAAK,YAAYhgB,UAC3B,GAAGQ,MAAM2R,QAAUuuU,EAAWlgV,MAAM2R,QAC5ClS,EAAQ,GAAGuxC,MAAQkvS,EAAWlvS,OAGlCl2C,EAAKwpU,SAAWxpU,EAAK2E,QAAUA,EAC1ByY,SAAS,2BACTA,SAASgoU,EAAWhgU,WACpBN,YAAY,0BACZ9gB,IAAI,UAAW,IACf2X,KAAK,CACF0pU,UAAWzhV,EAAQ+X,KAAK,aACxB2pU,aAAc,KACd/8T,KAAM,WACN,iBAAiB,IAGzB3kB,EAAQ6B,OAAOukB,WAAW,YAC9B,EAEAmrT,gBAAiB,SAASzwU,GACtB3M,KAAKumC,OAAO55B,EAAOjE,QAAU,GAAK,EACtC,EAEA2kU,aAAc,SAAS1oU,GACnB3E,KAAKu3U,mBAEDv3U,KAAKoK,QAruCN,QAsuCCzF,EAAEwE,kBAEFnJ,KAAK4M,QAAQgX,KAAK,iBAAiB,GACnC5jB,KAAKkxT,GAAGttS,KAAK,eAAe,GAEpC,EAEAi6S,cAAe,SAASl5T,GAChB3E,KAAKoK,QA7uCL,SA8uCAzF,EAAEwE,kBAEFnJ,KAAK4M,QAAQgX,KAAK,iBAAiB,GACnC5jB,KAAKkxT,GAAGttS,KAAK,eAAe,GAEpC,EAEAkmU,eAAgB,WACZ,IAAI7hV,EAAOjI,KACPoQ,EAAWnI,EAAKd,QAAQojV,cAW5B,GALIn6U,EAHCA,EAGUzP,EAAMyP,SAASA,GAFdhC,GAAS2gE,EAAO9mE,EAAKyhT,MAAMt7S,IAK3CnG,EAAKsiV,cAAgBn6U,EAEjBnI,EAAKszU,mBAAqBtzU,EAAKd,QAAQqjV,oBACvC,IACIviV,EAAKsiV,cAActiV,EAAK6iV,uBAC5B,CAAE,MAAOnmV,GACL,MAAM,IAAIqM,MAxwCK,mMAywCnB,CAER,EAEAo5U,cAAe,SAAStpT,GACpB,IAAI29B,EAAW,KACXruD,EAAWpQ,KAAKuqV,cAChBiD,EAAkBxtV,KAAKqqV,mBACvBnlK,EAAOllL,KAAKklL,KAEhB,GAAIpkJ,IAASl+B,EACT,OAAOsiL,EAAKpkJ,OAGZn+B,EAAEgF,cAAcm5B,IAASA,aAAgB2qB,EACzCgT,EAAW39B,EACJ0sT,GAAmBA,IAAoB1sT,IAC9C29B,EAAWz+D,KAAKmH,QAAQq0U,aAGvB/8Q,IACDA,EAAWz+D,KAAKirV,gBAAgBnqT,EAAM9gC,KAAKo0U,cAG3Cp0U,KAAKu7U,mBACD98Q,IAAa+uR,GAAmBxtV,KAAK0pT,MAAMjrP,KAAc+uR,IACzDp9U,EAAWpQ,KAAKwqV,oBAEwB,iBAA7BxqV,KAAKmH,QAAQq0U,aAA6Bx7U,KAAKmH,QAAQqjV,sBAC9D/rR,EAAW+uR,KAKvB,IACItoK,EAAK70K,KAAKD,EAASquD,GACvB,CAAE,MAAO95D,GAELugL,EAAK70K,KAAK,GACd,CACJ,EAEAyjE,WAAY,SAASprE,EAAOo4B,GACnBp4B,GAAUo4B,IACXA,EAAO9gC,KAAKqqV,oBAGhBrqV,KAAKo0U,UAAU1rU,GACf1I,KAAKoqV,cAActpT,GAEnB9gC,KAAK01U,KAAO11U,KAAKo0U,YACjBp0U,KAAK+2U,UAAY/2U,KAAKyyE,cAEtBzyE,KAAK4zE,SAAS6wI,SAAS/7M,GAEvB1I,KAAK85U,cAAgB,KACrB95U,KAAKqrV,cAAe,CACxB,EAEAJ,gBAAiB,SAASnqT,EAAMp4B,GAC5B,IAAI+qE,EAAgBzzE,KAAKmH,QAAQssE,cAC7BhV,EAAW,CAAC,EAUhB,OARIgV,GACA/yE,EAAO+9D,EAAUgV,EAAc7oE,MAAM,KAAMk2B,GAC3CpgC,EAAO+9D,EAAUz+D,KAAKmH,QAAQuqE,eAAe9mE,MAAM,KAAMlC,GACzD+1D,EAAW,IAAIhT,EAAiBgT,IAEhCA,EAAW39B,EAGR29B,CACX,IAGJ,SAAS/9D,EAAOinB,EAAU8H,EAAQ/mB,GAK9B,IAJA,IAEIqd,EAFAnc,EAAM,EACNgI,EAAY6d,EAAOjoB,OAAS,EAGzBoC,EAAMgI,IAAahI,GACtBmc,EAAQ0J,EAAO7lB,MAEA+d,IACXA,EAAS5B,GAAS,CAAC,GAGvB4B,EAAWA,EAAS5B,GAGxB4B,EAAS8H,EAAO7d,IAAclJ,CAClC,CAEA,SAASikV,EAAerzU,EAAO9R,GAI3B,OAHI8R,GAAS9R,IACT8R,GAAS9R,GAEN8R,CACX,CAWAiR,EAAG2M,OAAOi5S,GAEVxvU,EAAMwyB,cAAcoY,eAAe,eAAgB,aAEnD5qC,EAAMwyB,cAAc2X,eAAe,eAAgB,CAAC,CAChDjb,KAAM,UACNxW,OAAQ1Y,EAAMwyB,cAAcgX,cAAc/rB,OAAO,CAAC,CAAC,OAAQ,YAElE,CAv5CD,CAu5CGtd,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfywB,EAASzwB,EAAM4pB,GAAG6G,OAClB7tB,EAAU5C,EAAM4C,QAChBkU,EAAMpU,KAAKoU,IACXg2U,EAAe,gBACfpiC,EAAW,aACX55N,EAAS,cAETv0C,EAAS,SACTwwS,EAAW,WAEXC,EAAW,WACXC,EAAc,gBACdxe,EAAQ,UACRye,EAAM,cACNC,EAAW,oBACXC,EAAa,sBACbC,EAAa,gBACbC,EAAW,cACXjxQ,EAAQ,QACRxxD,EAAM,MAON0iU,EAAmC,gJACnCC,EAAkCD,EAAiClsT,WAAW,MAAO,WACrFosT,EAA0BD,EAAgCvjV,MAAM,KAAKiQ,KAAKwL,GAAaA,EAAW,OAAMxb,KAAK,KAC7GwjV,EAAgB,sDAAsDH,KAAoCC,KAAmCC,oHAC7IlqU,EAAOvjB,EAAM4C,QAAQuf,QAAQoB,KAC7BoqU,GAAyB,EACzBvrV,EAASJ,EAAEI,QAEX,SAAUJ,GAEFA,EAAE,2CACDknB,GAAG,QAAS,MAAM,WACfykU,GAAyB,CAC7B,IACCn4T,KAAK,QACL/rB,QAAQ,SACRuB,MACAytB,KAER,CAXD,CAWGz2B,GAEP,MAAM4rV,EAAan9T,EAAOruB,OAAO,CAC7BoF,KAAM,SAAS0D,EAAS1E,GACpB,IACImvC,EACAk4S,EACAC,EAHAxmV,EAAOjI,KAKXoxB,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GAEnCsnV,EAAkBxmV,EAAKwmV,gBAAkBxmV,EAAKd,QAAQsnV,iBAlD7C,eAoDTxmV,EAAK4nN,SAAWltN,EAAE,oEAClBsF,EAAKymV,YAAc,KACnBzmV,EAAK4D,QAAQwZ,SAASopU,GAEtBxmV,EAAKqzB,cAAgBrzB,EAAKd,QAAQm0B,cAElCgb,EAAWruC,EAAKd,QAAQmvC,SACxBk4S,EAAevmV,EAAKd,QAAQqnV,aAE5BvmV,EAAKq3E,WAAa,IAAI3+E,EAAM+/E,WAAWz4E,EAAK4D,QAAS,CACjDzM,QAAQ,EACRmiF,gBAAgB,EAChBhyD,QAAU++T,EAAuD,GAA9B,IAAMG,EAAkB,KAAYxmV,EAAKd,QAAQooB,OACpFwmM,IAAK9tN,EAAKo4E,KAAK72E,KAAKvB,GACpB85E,YAAazrC,EAAW,OAAS,gBAGjCA,IACIk4S,GACAvmV,EAAKq3E,WACA91E,KAAK,OAAQvB,EAAKi4E,MAAM12E,KAAKvB,IAC7BuB,KAAK,QAASvB,EAAK24E,OAAOp3E,KAAKvB,IAC/BuB,KAAK,OAAQvB,EAAK26E,MAAMp5E,KAAKvB,IAC7BuB,KAAK,MAAOvB,EAAK66E,KAAKt5E,KAAKvB,IAEpCA,EAAKq3E,WACD91E,KAAK,SAAUvB,EAAKy6E,QAAQl5E,KAAKvB,IAE7C,EAEAoC,OAAQ,CAAC6yC,EAAQwwS,EAAUC,GAE3BxmV,QAAS,CACL/E,KAAM,aACNmtB,OAAQ,KACRo/T,eAAgBN,EAChB/3S,UAAU,EACVkzC,YAAY,EACZglQ,cAAc,EACdlzT,cAAe34B,EAAEQ,KACjByrV,kBAAkB,EAClBC,eAAe,EACfC,YAAY,EACZL,gBAAiB,IAGrBM,WAAY,SAAS1nV,GACjB,IACIuC,EADA+uB,EAAW34B,KAAK6L,QACXrE,EAASmxB,EAASnxB,OAAQsP,GAAS,EAI5C,IAFAzP,EAASA,EAAO,GAEXuC,EAAM,EAAGA,EAAMpC,EAAQoC,IACxB,GAAI+uB,EAAS/uB,KAASvC,EAAQ,CAC1ByP,GAAS,EACT,KACJ,CAGJ,OAAOA,CACX,EAEAupE,KAAM,SAAS17E,GACX,IAOI+tE,EAPArrE,EAAS1E,EAAEgC,EAAE0C,QACbY,EAAOjI,KACPmH,EAAUc,EAAKd,QACfsoF,EAAU9qF,EAAEwb,MAAMsvE,SAAW9qF,EAAEwb,MAAMioR,QACrC9xP,EAAWruC,EAAKd,QAAQmvC,SACxB/O,EAAW+O,GAAY3xC,EAAEwb,MAAMonB,SAC/BynT,EAAgB/mV,EAAKd,QAAQ6nV,eAAiB3jC,EAE9C4jC,EAAYtqV,EAAEwb,MAAMwiE,MACpBusQ,EAAavqV,EAAEwb,MAAMs4P,QAGpBxwQ,EAAK8mV,WAAW1nV,EAAOwF,QAAQ,IAAM5E,EAAKwmV,mBAAqBQ,GAA0B,GAAbA,GAAkBC,GAA4B,GAAdA,GAI5GlvV,KAAKmvV,gBAAgBxqV,EAAEwb,MAAM9Y,UAI9BY,EAAKmC,QAAQsjV,EAAU,CAAErmV,OAAQA,EAAQkiB,cAAe5kB,EAAEwb,UAI9DuyD,EAAWrrE,EAAO0F,SAASiiV,GAE3B3nV,EAASA,EAAOmG,IAAIvF,EAAKqzB,cAAcj0B,IAElCivC,EAUG/O,GACKt/B,EAAKmnV,YAAeC,EAAgBpnV,EAAKmnV,WAAY/nV,KACtDY,EAAKqnV,YAAYrnV,EAAKsnV,iBAAkBloV,EAAQ1C,GAChDsD,EAAKunV,QAAQtyS,EAAQv4C,IAEzBsD,EAAKmnV,WAAa/nV,IAElBY,EAAKmnV,WAAa,KACd18Q,IAAa+c,GAAWtoF,EAAQ2nV,aAChC7mV,EAAKwnV,UAAUpoV,GACfY,EAAKunV,QAAQtyS,EAAQv4C,IACd8qF,GAAWtoF,EAAQ2nV,YAC1B7mV,EAAKS,MAAMrB,EAAQ1C,GACnBsD,EAAKunV,QAAQtyS,EAAQv4C,MACb+tE,GAAYzqE,EAAKS,QAAQlB,OAAS,KAC1CS,EAAKuuD,QACLvuD,EAAKS,MAAMrB,EAAQ1C,GACnBsD,EAAKunV,QAAQtyS,EAAQv4C,IAGzBsD,EAAKymV,YAAczmV,EAAKq7E,YAAcj8E,GA7BtCqrE,GAAY+c,GACZxnF,EAAKwnV,UAAUpoV,GACfY,EAAKunV,QAAQtyS,EAAQv4C,IACb+tE,IACRzqE,EAAKuuD,QACLvuD,EAAKS,MAAMrB,EAAQ1C,GACnBsD,EAAKunV,QAAQtyS,EAAQv4C,KA0BjC,EAEAu7E,MAAO,SAASv7E,GACR3E,KAAKmH,QAAQqiF,YAEbxpF,KAAKqgF,KAAK17E,GAGd3E,KAAK+oF,YAAa,CACtB,EAEA2mQ,aAAc,WACV,OAAO1vV,KAAKmH,QAAQqiF,YAAaxpF,KAAK+oF,UAC1C,EAEAnI,OAAQ,SAASj8E,GACb,IAIIknC,EAJA5jC,EAAOjI,KACPqH,EAAS1E,EAAEgC,EAAE0C,QACb2nV,EAAgB/mV,EAAKd,QAAQ6nV,eAAiB3jC,EAC9C34O,EAAWrrE,EAAO0F,SAASiiV,GAE3Bv/P,EAAU9qF,EAAEwb,MAAMsvE,SAAW9qF,EAAEwb,MAAMioR,QAEpCngS,EAAKynV,gBAAmB1vV,KAAKmvV,gBAAgBxqV,EAAEwb,MAAM9Y,UAItDY,EAAKmC,QAAQsjV,EAAU,CAAErmV,OAAQA,EAAQkiB,cAAe5kB,EAAEwb,QAC1DlY,EAAKq3E,WAAW3kD,UAIpB1yB,EAAKq7E,YAAcj8E,EAGdY,EAAK8mV,WAAW1nV,EAAOwF,QAAQ,IAAM5E,EAAKwmV,mBAK3CxmV,EAAKd,QAAQwoV,YACb1nV,EAAKguI,OAAShuI,EAAK4D,QAAQsqB,KAAKluB,EAAKd,QAAQooB,SAE7Csc,EAAiBxkC,EAAOwF,QAAQ5E,EAAK4D,SACrC5D,EAAKguI,OAASpqG,EAAe1V,KAAKluB,EAAKd,QAAQooB,SAGnD5qB,EAAE2F,OAAOg4E,UAETr6E,EAAK4nN,SACA3jN,SAASyD,SAASqP,MAClB/S,IAAI,CACDugB,KAAM7nB,EAAES,EAAEw/B,OAAS,EACnB1f,IAAKvgB,EAAER,EAAEygC,OAAS,EAClB74B,MAAO,EACPC,OAAQ,IAGXyjF,GACDxnF,EAAKuuD,QAGTnvD,EAASA,EAAOmG,IAAIvF,EAAKqzB,cAAcj0B,IACnCqrE,IACAzqE,EAAK2nV,eAAevoV,GAAQ,GACxBooF,GACApoF,EAAOge,SAASuoU,KA9BpB3lV,EAAKq3E,WAAW3kD,UAiCxB,EAEAioD,MAAO,SAASj+E,GACZ,IAAIsD,EAAOjI,KACPsN,EAAW,CACPkf,KAAM7nB,EAAES,EAAE45E,cAAgBr6E,EAAES,EAAEie,SAAW1e,EAAES,EAAEie,SAAW1e,EAAES,EAAE45E,cAC5D95D,IAAKvgB,EAAER,EAAE66E,cAAgBr6E,EAAER,EAAEkf,SAAW1e,EAAER,EAAEkf,SAAW1e,EAAER,EAAE66E,cAC3DjzE,MAAO0L,EAAI9S,EAAES,EAAEg6E,cACfpzE,OAAQyL,EAAI9S,EAAER,EAAEi7E,eAGnBn3E,EAAKynV,iBAIVznV,EAAK4nN,SAAS5jN,IAAIqB,GAElBrF,EAAK4nV,uBAAuBviV,EAAW3I,EAAEwb,MAAMsvE,SAAW9qF,EAAEwb,MAAMioR,SAElEzjS,EAAEwE,iBACN,EAEA25E,KAAM,SAASn+E,GACX,IAAIsD,EAAOjI,KACX8vV,EAAoBnvV,EAAMijB,KAAK,kBAC/B8pC,EAAM/sD,EAAMwvB,OAEZ,GAAKloB,EAAKynV,eAAV,CAIAznV,EAAK8gF,YAAa,EAElB9gF,EAAK4nN,SAASxjN,SAEdpE,EAAKwnV,UAAUxnV,EAAK4D,QACfsqB,KAAKluB,EAAKd,QAAQooB,OAAS,IAAMq+T,IACjC7gU,YAAY6gU,GAGjB,IAAIvmV,EAASY,EAAK4D,QAAQsqB,KAAKluB,EAAKd,QAAQooB,OAAS,IAAMkiE,GAG3D,GAFApqF,EAASA,EAAOmG,IAAIvF,EAAKqzB,cAAcj0B,IAEnCY,EAAKd,QAAQ0nV,cACb,IAAK,IAAItnV,EAAI,EAAGA,EAAIU,EAAK8nV,iBAAiBvoV,OAAQD,IAC9C5E,EAAEsF,EAAK8nV,iBAAiBxoV,IAAIqc,KAAKksU,EAAmBpiS,GAIvDzlD,EAAKmnV,YAAeC,EAAgBpnV,EAAKmnV,WAAY/nV,KACtDY,EAAKS,MAAMrB,EAAQ1C,GACnBsD,EAAKunV,QAAQtyS,EAAQv4C,IAEzBsD,EAAKmnV,WAAa/nV,EAClBY,EAAKymV,YAAczmV,EAAKq7E,YACxBr7E,EAAKguI,OAAS,IA1Bd,CA2BJ,EAEA45M,uBAAwB,SAASviV,EAAUmiF,GACvC,IAAI7lF,EACApC,EAIA6zB,EACA20T,EAJA3oV,EAASrH,KAAKsjF,YAAY,GAC1Bp3B,EAAQlsD,KAAKi2I,OACb+4M,EAAgBhvV,KAAKmH,QAAQ6nV,eAAiB3jC,EAMlD,IAFArrT,KAAK+vV,iBAAmB,GAEnBnmV,EAAM,EAAGpC,EAAS0kD,EAAM1kD,OAAQoC,EAAMpC,EAAQoC,IAE/CyxB,GADA20T,EAAW9jS,EAAMl0B,GAAGpuB,IACD4D,IAAIxN,KAAKs7B,cAAc00T,IAEtC/9P,EAAU+9P,EAAU1iV,IAChB0iV,EAASjjV,SAASiiV,GACdv/P,GAAWpoF,IAAW2oV,EAAS,IAC/B30T,EAAQtO,YAAYiiU,GAAe3pU,SAASuoU,GAExCoC,EAASjjV,SAAS0kF,IAAYu+P,EAASjjV,SAAS6gV,IAAiB5tV,KAAKiwV,2BAA2B50T,EAAS/tB,IAClH+tB,EAAQhW,SAASosE,GAErBzxF,KAAK+vV,iBAAiBpuV,KAAK05B,EAAQ,KAE/B20T,EAASjjV,SAAS0kF,GAClBp2D,EAAQtO,YAAY0kE,GACbhC,GAAWugQ,EAASjjV,SAAS6gV,IACpCvyT,EAAQtO,YAAY6gU,GAAavoU,SAAS2pU,EAI1D,EAEAiB,2BAA4B,SAASpkV,EAASqkV,GAC1C,IAAKlwV,KAAKmH,QAAQynV,iBACd,OAAO,EAGX,IAEIuB,EAFAC,EAAiBpwV,KAAK+vV,iBACtBM,EAAWxkV,EAAQ,GAAGqtH,wBAEtBjnC,GAAY,EAEZv7D,EADQ/1B,EAAM4C,QAAQ8b,MAAMxT,GACR,QAAU,OAC9BykV,EAAW,CAAC,EAEhBJ,EAAYzjU,MAAQyjU,EAAY1jU,KAAO0jU,EAAYnkV,MACnDmkV,EAAYxjU,OAASwjU,EAAYhrU,IAAMgrU,EAAYlkV,OAEnD,IAAK,IAAIzE,EAAI,EAAGA,EAAI6oV,EAAe5oV,OAAQD,IAEvC,GAAIogK,EAAS0oL,EADbF,EAAoBC,EAAe7oV,GAAG2xH,yBACK,CAGvC,GAFAo3N,EAAS55T,GAA2B,SAAdA,EAAuBy5T,EAAkB1jU,MAAQ0jU,EAAkB3jU,MACzF6jU,EAAWttV,EAAO,CAAC,EAAGstV,EAAUC,IACnB9jU,KAAO6jU,EAAS5jU,MACzB,OAAO,EAEXwlE,GAAa01E,EAAS0oL,EAAUH,EACpC,CAEJ,OAAOj+P,CACX,EAEAvpF,MAAO,SAASknB,GACZ,IAAI3nB,EAAOjI,KACPuwV,EAAgBtoV,EAAK2nV,eAAepmV,KAAKvB,GAE7C,IAAI2nB,EAQJ,OAAO3nB,EAAK4D,QAAQsqB,KAAKluB,EAAKd,QAAQooB,OAAS,KAAOtnB,EAAKd,QAAQ6nV,eAAiB3jC,IAPhFz7R,EAAI5sB,MAAK,WACLutV,EAAcvwV,KAClB,GAMR,EAEAwwV,eAAgB,WACZ,IACIV,EAAoBnvV,EAAMijB,KAAK,kBAC/B/I,EAAM,CAAC,EAaX,OAfW7a,KAIN6L,QAAQsqB,KAAK,IAAM25T,EAAoB,KAAK9sV,MAAK,SAAS2rB,EAAGokB,GAC9D,IAAI09S,EAAU9tV,EAAEowC,GAAMnvB,KAAKksU,GACvBY,EAAc71U,EAAI41U,GAEjBC,IACDA,EAAc71U,EAAI41U,GAAW,IAGjCC,EAAY/uV,KAAKgB,EAAEowC,GACvB,IAEOl4B,CACX,EAEA81U,oBAAqB,WACjB,IAAI1oV,EAAOjI,KACP8vV,EAAoBnvV,EAAMijB,KAAK,kBAEnC,OAAO3b,EAAK4D,QAAQsqB,KAAKluB,EAAKd,QAAQooB,OAAS,KAAOtnB,EAAKd,QAAQ6nV,eAAiB3jC,GAAY,SAAWykC,EAAoB,MAAM97R,UAAUn5C,KAAI,SAASk4B,GACxJ,OAAOpwC,EAAEowC,EACb,GACJ,EAEAw8S,eAAgB,WACZ,IACI78Q,EADAzqE,EAAOjI,KAGX,OAAyB,OAArBiI,EAAKymV,YACEzmV,EAAKymV,aAGhBh8Q,EAAWzqE,EAAKS,SACAlB,OAAS,EACjBkrE,EAAS,GACTzqE,EAAK4D,QAAQsqB,KAAKluB,EAAKd,QAAQooB,QAAQ,EACnD,EAEAqgU,eAAgB,SAAS/jV,EAAS+kV,GAC9B,IAAIZ,EAAWrtV,EAAEkJ,GACbmjV,EAAgBhvV,KAAKmH,QAAQ6nV,eAAiB3jC,EAC9C3qP,GAAekwR,GAAiB5wV,KAAKwvV,QAAQ,SAAU,CAAE3jV,QAASA,IAEtEmkV,EAASjjU,YAAY0kE,GAChB/wB,IACAsvR,EAAS3qU,SAAS2pU,GAEfhvV,KAAKmH,QAAQy2U,MACboS,EAASpsU,KAAK6pU,GAAc,GAGxC,EAEA+B,QAAS,SAASptV,EAAMi1B,GAEpB,OADAA,EAAOA,GAAQ,CAAE,EACVr3B,KAAKoK,QAAQhI,EAAMi1B,EAC9B,EAEAo4T,UAAW,SAAS5jV,GAChB,IAAI7L,KAAKoK,QAAQujV,EAAU,CAAE9hV,QAASA,IAAtC,CAIA,IAAIikV,EAAoBnvV,EAAMijB,KAAK,kBAQnC,OANA/X,EAAQkhB,YAAY/sB,KAAKmH,QAAQ6nV,eAAiB3jC,GAAUp5R,WAAW69T,GAEnE9vV,KAAKmH,QAAQy2U,MACb/xU,EAAQ+X,KAAK6pU,GAAc,GAGxB5hV,CAVP,CAWJ,EAEA62E,QAAS,SAAS/9E,GACV3E,KAAKmvV,gBAAgBxqV,EAAEwb,MAAM9Y,WACxB6c,GAASA,IAASvhB,EAAEhC,EAAM+Y,kBAAkBzM,GAAGjN,KAAKmH,QAAQwnV,kBACzD3uV,KAAK6wV,qBAAqBlsV,EAAEwb,MAAM9Y,SAClC1C,EAAEwE,gBAIlB,EAEA0nV,qBAAsB,SAASxpV,GAG3B,OAAQ1E,EAAE0E,GAAQ4F,GAFQ,iBAEoBjN,KAAKmH,QAAQ2pV,UAC/D,EAEA3B,gBAAiB,SAAS9nV,GACtB,OAAI1E,EAAE0E,GAAQ4F,GAAGjN,KAAKmH,QAAQwnV,kBAC1B3uV,KAAKs/E,WAAW3kD,SAChB36B,KAAKsjF,YAAc,MACZ,EAIf,EAEAytQ,iBAAkB,WACd/wV,KAAKs/E,WAAW3kD,QACpB,EAEA67B,MAAO,WACH,IAAItK,EAAQlsD,KAAK6L,QAAQsqB,KAAKn2B,KAAKmH,QAAQooB,OAAS,KAAOvvB,KAAKmH,QAAQ6nV,eAAiB3jC,IACzFrrT,KAAKyvV,UAAUvjS,EACnB,EAEAojS,YAAa,SAASx5U,EAAOnK,GACzB,IACI/B,EACA+uC,EACAuT,EAHAjkD,EAAOjI,KA4BX,IAvBAiI,EAAKuuD,QAEDvuD,EAAK4D,QAAQrE,OAAS,IACtB0kD,EAAQjkD,EAAKd,QAAQ6pV,mBAGpB9kS,GAAUA,EAAM1kD,SACjB0kD,EAAQjkD,EAAK4D,QAAQsqB,KAAKluB,EAAKd,QAAQooB,UAG3CzZ,EAAQnT,EAAE8yB,QAAQ9yB,EAAEmT,GAAO,GAAIo2C,KAC/BvgD,EAAMhJ,EAAE8yB,QAAQ9yB,EAAEgJ,GAAK,GAAIugD,MAGvBvT,EAAM7iC,EACNA,EAAQnK,EACRA,EAAMgtC,GAGL1wC,EAAKd,QAAQwoV,cACdhkV,GAAO1D,EAAK4D,QAAQrE,OAAS,GAG5BoC,EAAMkM,EAAOlM,GAAO+B,EAAK/B,IAC1B3B,EAAK2nV,eAAe1jS,EAAMtiD,IAAM,EAExC,EAEA5H,QAAS,WACL,IAAIiG,EAAOjI,KAEXoxB,EAAOrpB,GAAG/F,QAAQuI,KAAKtC,GAEvBA,EAAK4D,QAAQutB,IAnhBZ,oBAqhBDnxB,EAAKq3E,WAAWt9E,UAEhBiG,EAAK4nN,SAAW5nN,EAAKymV,YAAczmV,EAAK4D,QAAU5D,EAAKq3E,WAAa,IACxE,IAGE2xQ,EAAkB7/T,EAAOruB,OAAO,CAClCoF,KAAM,SAAS0D,EAAS1E,GACpB,IACAglB,EACA+kU,EAFIjpV,EAAOjI,KAIXoxB,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GAEnCc,EAAKsrB,OAASpsB,EAAQosB,OACtBpH,EAAKhlB,EAAQglB,GACb+kU,EAAoB/pV,EAAQooB,OAE5BtnB,EAAKq3E,WAAa,IAAI3+E,EAAM+/E,WAAWz4E,EAAK4D,QAAS,CACjDzM,QAAQ,EACRmiF,gBAAgB,EAChBhyD,OAAQtnB,EAAKd,QAAQooB,OACrBwmM,IAAK9tN,EAAKo4E,KAAK72E,KAAKvB,GACpB85E,YAjiBD,SAoiBCx+E,EAAQic,MACR3T,EAAQge,GAliBH,aAkiBmBsC,EAAI+kU,EAAmBjpV,EAAKkpV,YAAY3nV,KAAKvB,IAChE4hB,GAjiBF,WAiiBgBsC,EAAXilU,aAAkCjlU,EAAI+kU,EAAmBjpV,EAAKopV,YAAY7nV,KAAKvB,IAEvF4D,EAAQge,GAviBH,aAuiBmBsC,EAAI+kU,EAAmBjpV,EAAKkpV,YAAY3nV,KAAKvB,IAChE4hB,GAviBA,aAuiBgBsC,EAAI+kU,EAAmBjpV,EAAKopV,YAAY7nV,KAAKvB,GAE1E,EAEAoC,OAAQ,CAAC6yC,GAET/1C,QAAS,CACL/E,KAAM,kBACNmtB,OAAQ,KACRo/T,eAAgBN,EAChBiD,cAAc,EACdh7S,UAAU,EACVk4S,cAAc,EACd+C,aAAc,IACdplU,GAAI,GACJ9V,SAAS,EACTilB,cAAe34B,EAAEQ,MAGrBnB,QAAS,WACL,IAAIiG,EAAOjI,KAEXoxB,EAAOrpB,GAAG/F,QAAQuI,KAAKtC,GAEvBA,EAAKq3E,WAAWt9E,UAChBiG,EAAKsrB,OAAS,KAEdtrB,EAAKymV,YAAczmV,EAAK4D,QAAU5D,EAAKq3E,WAAar3E,EAAK24E,OAAS34E,EAAK66E,KAAO,IAClF,EAEAqsQ,gBAAiB,SAAS9nV,GACtB,OAAI1E,EAAE0E,GAAQ4F,GAAGjN,KAAKmH,QAAQwnV,kBAC1B3uV,KAAKs/E,WAAW3kD,UACT,EAIf,EAEAw2T,YAAa,SAASxsV,GAClB,IAEIsvD,EAFAhsD,EAAOjI,KACPsqE,EAAO3nE,EAAEgC,EAAEg6E,eAGfrU,EAAKjlD,SAAS+pT,GAEdn7Q,EAAQhsD,EAAKsrB,OAAO+7T,cAEhBrnV,EAAKd,QAAQmqV,cAAgBr9R,EAAMtoD,MAInCsoD,EAAM5sD,SAAW21E,GAAS/0E,EAAK66E,MAC/B76E,EAAKgsD,MAAMqW,EAAMriE,EAAK66E,MAAM,EAAM76E,EAAKd,QAAQkP,SAG/C49C,EAAM5sD,SAAWmkB,GACjBvjB,EAAKgsD,MAAMhsD,EAAK24E,OAAQtW,GAAM,EAAMriE,EAAKd,QAAQkP,SAEzD,EAEAg7U,YAAa,SAAS1sV,GAClBhC,EAAEgC,EAAEg6E,eAAe5xD,YAAYqiT,EACnC,EAEAt5T,MAAO,SAASjK,EAAS2lV,GACrB,GAAI3lV,IAAYjJ,GAA2B,OAAZiJ,EAC3B,OAAO7L,KAAK4gF,OAGhB/0E,EAAQwZ,SAASgmS,EAAW,IAAM2iC,GAAYpqU,KAAK6pU,GAAc,GAE5D+D,IACDxxV,KAAK4gF,OAAS/0E,EAEtB,EAEAF,IAAK,SAASE,EAAS2lV,GACnB,GAAI3lV,IAAYjJ,GAA2B,OAAZiJ,EAC3B,OAAO7L,KAAK4gF,OAGhB/0E,EAAQwZ,SAASgmS,EAAW,IAAM4iC,GAAUrqU,KAAK6pU,GAAc,GAE1D+D,IACDxxV,KAAK8iF,KAAOj3E,EAEpB,EAEAqnM,IAAK,SAASv6K,GACV,IAAI84T,EAASzxV,KAAK6L,QAAQsqB,KAAK,SAC3BhvB,EAAUnH,KAAKmH,QAEnBwxB,EAAStT,SAASwoU,GAAKjqU,KAAK6pU,GAAc,GAC1CgE,EAAOzuV,MAAK,WACR,IAAIiF,EAAOtF,EAAE3C,MACT0xV,EAAWzpV,EAAKkuB,KAAKhvB,EAAQ+pV,mBAAmB5uT,OAChDqvT,EAAY1pV,EAAKkuB,KAAKhvB,EAAQ+pV,mBAAmBhnV,QAEjDwnV,EAAS3kV,SAAS8gV,IAClB6D,EAASrsU,SAASyoU,GAGlB6D,EAAU5kV,SAAS8gV,IACnB8D,EAAUtsU,SAAS0oU,EAE3B,GACJ,EAEAv3R,MAAO,SAASo7R,GACZ,IAAIzqV,EAAUnH,KAAKmH,QACnBnH,KAAK6L,QAAQsqB,KAAKhvB,EAAQoqV,cACrBxkU,YAAY8gU,EAAM,IAAMC,EAAW,IAAMC,GAE9C/tV,KAAK6xV,gBAEDD,IACA5xV,KAAK4gF,OAAS5gF,KAAK8iF,KAAO,KAElC,EAEA+uQ,cAAe,WACX,IAAiB1qV,EAANnH,KAAqBmH,QAArBnH,KACN6L,QAAQsqB,KAAKhvB,EAAQoqV,cAAcxkU,YAAYihU,EAAa,IAAM3iC,EAAW,IAAM4iC,GAAUh8T,WAAWw7T,EACjH,EAEAqE,WAAY,SAASh8U,GACjB,IAEIo2C,EACAikJ,EAHAloM,EAAOjI,KACPmH,EAAUnH,KAAKmH,QAInB+kD,EAAQjkD,EAAK4D,QAAQsqB,KAAKhvB,EAAQoqV,cAElCphJ,EAAWxtM,EAAE8yB,QAAQ9yB,EAAEmT,GAAO,GAAIo2C,GAElCjkD,EAAKuuD,QACLvuD,EAAK6N,MAAMA,GAEXo2C,EAAQA,EAAM38B,QAAO,SAASjW,GAC1B,OAAOA,EAAQ62L,CACnB,IACAloM,EAAKirM,IAAIhnJ,EACb,EAEA6lS,SAAU,SAASpmV,GACf,IAEIugD,EACAkkJ,EAHAnoM,EAAOjI,KACPmH,EAAUnH,KAAKmH,QAInB+kD,EAAQjkD,EAAK4D,QAAQsqB,KAAKhvB,EAAQoqV,cAElCnhJ,EAASztM,EAAE8yB,QAAQ9yB,EAAEgJ,GAAK,GAAIugD,GAE9BjkD,EAAKuuD,QAELtK,EAAQA,EAAM38B,QAAO,SAASjW,GAC1B,OAAOA,EAAQ82L,CACnB,IACAnoM,EAAKirM,IAAIhnJ,GACTjkD,EAAK0D,IAAIhJ,EAAEgJ,GACf,EAEAsoD,MAAO,SAASn+C,EAAOnK,EAAK6lV,EAAmBx3N,GAC3C,IAEI9tE,EACAikJ,EACAC,EAJAnoM,EAAOjI,KACPmH,EAAUnH,KAAKmH,QAKnB,GAAI2O,IAAUlT,EACV,MAAO,CAAEkT,MAAO7N,EAAK24E,OAAQj1E,IAAK1D,EAAK66E,MAG3C52B,EAAQjkD,EAAK4D,QAAQsqB,KAAKhvB,EAAQoqV,cAElCphJ,EAAWxtM,EAAE8yB,QAAQ9yB,EAAEmT,GAAO,GAAIo2C,GAClCkkJ,EAASztM,EAAE8yB,QAAQ9yB,EAAEgJ,GAAK,GAAIugD,KAEzBp2C,GAAUA,IAAUA,EAAMtO,UAC3BS,EAAK+pV,WAAY,GAGrB/pV,EAAKuuD,QAED1gD,GACA7N,EAAK6N,MAAMnT,EAAEmT,GAAQ07U,GAGzBtlS,EAAQA,EAAM38B,QAAO,SAASjW,GAC3B,KAAI82L,EAAS,IAAOt6L,GAASq6L,EAAW,GAIvC,OAAQ72L,EAAQ62L,GAAY72L,EAAQ82L,GAAWjpM,EAAQkP,SAAYiD,EAAQ62L,GAAY72L,EAAQ82L,CACnG,IAEAnoM,EAAKirM,IAAIhnJ,GAELvgD,EACA1D,EAAK0D,IAAIhJ,EAAEgJ,GAAM6lV,GAEjBvpV,EAAKgqV,SAAU,EAGf9hJ,EAAWC,GAAUp2E,IACrB/xH,EAAK4pV,gBACL5pV,EAAK6N,MAAMnT,EAAEgJ,IAAM,GACnB1D,EAAK0D,IAAIhJ,EAAEmT,IAAQ,GAE3B,EAEAyoC,OAAQ,WACJv+C,KAAKoK,QAAQ8yC,EACjB,EAEAg1S,YAAa,WACTlyV,KAAKgyV,UAAYhyV,KAAKiyV,SAAU,CACpC,EAEA5xQ,KAAM,SAAS17E,GACX,IAAI0C,EAAS1E,EAAEgC,EAAE0C,QACbY,EAAOjI,KACPi0D,EAAQhsD,EAAKsrB,OAAO+7T,eAAiB,CAAC,EACtCx5U,EAAQm+C,EAAMn+C,MACdnK,EAAMsoD,EAAMtoD,IACZ80B,EAAc9/B,EAAMiV,SAASu8U,aAAaxvV,EAAE0E,GAAQ8uB,KAAK,SACzDhvB,EAAUc,EAAKd,QACfmqV,EAAenqV,EAAQmqV,aAI3B,GAFArpV,EAAKymV,YAAcrnV,GAEdyO,IAAUnK,EAYX,OAXA1D,EAAKuuD,OAAM,GACPvC,EAAM5sD,SAAW21E,GACjB/0E,EAAK6N,MAAMzO,GAGX4sD,EAAM5sD,SAAWmkB,GACjBvjB,EAAK0D,IAAItE,GAGbY,EAAKiqV,mBACLjqV,EAAKmC,QAAQ8yC,GAIjB,IAAKpnC,GAASnK,EAaV,OAZIsoD,EAAM5sD,SAAWmkB,EACjBvjB,EAAK0D,IAAItE,IAEJo5B,GAAewzB,EAAMtoD,MAAQxE,EAAQkP,SACtCpO,EAAKuuD,OAAM,GACXvuD,EAAK6N,MAAMzO,IAEXY,EAAKgsD,MAAM5sD,EAAQY,EAAK66E,MAAM,GAAO,GAG7C76E,EAAKmC,QAAQ8yC,QACbj1C,EAAKiqV,cAIT,GAAIp8U,IAAUnK,EAgBV,OAfIsoD,EAAM5sD,SAAWmkB,IAAQrkB,EAAQkP,UAAYP,GAAS2qB,GACtDx4B,EAAKuuD,OAAM,GAEP86R,EACArpV,EAAK6N,MAAMzO,GAEXY,EAAK0D,IAAItE,IAEN4sD,EAAM5sD,SAAW21E,EACxB/0E,EAAK6N,MAAMzO,GAEXY,EAAKgsD,MAAMhsD,EAAK24E,OAAQv5E,GAAQ,GAAO,GAE3CY,EAAKmC,QAAQ8yC,QACbj1C,EAAKiqV,cAIT,GAAIp8U,GAASnK,EAAK,CACd,IAAKxE,EAAQkP,QACT,OAAKP,GAAS2qB,GAAewzB,EAAM5sD,SAAWmkB,GAC1CvjB,EAAKuuD,OAAM,GACP86R,GACArpV,EAAK6N,MAAMzO,GACXY,EAAK0D,IAAI,MACTsoD,EAAM5sD,OAAS21E,IAEf/0E,EAAK6N,MAAM,MACX7N,EAAK0D,IAAItE,SAEbY,EAAKmC,QAAQ8yC,KAIZpnC,GAAS2qB,GAAewzB,EAAM5sD,SAAW21E,IACrCv8C,GAAewzB,EAAMtoD,KACtB1D,EAAKuuD,OAAM,GACXvuD,EAAK6N,MAAMzO,GACXY,EAAK0D,IAAI,OAET1D,EAAKgsD,MAAM5sD,EAAQY,EAAK66E,WAE5B76E,EAAKmC,QAAQ8yC,KAIb+W,EAAM5sD,SAAW21E,GACjB/0E,EAAKgsD,MAAM5sD,EAAQY,EAAK66E,MAGxB7uB,EAAM5sD,SAAWmkB,GACjBvjB,EAAKgsD,MAAMhsD,EAAK24E,OAAQv5E,QAG5BY,EAAKmC,QAAQ8yC,IAIbo0S,EACIr9R,EAAM5sD,SAAW21E,EACjB/0E,EAAKgsD,MAAM5sD,EAAQY,EAAK66E,MAAM,GAAO,GAErC76E,EAAKgsD,MAAMhsD,EAAK24E,OAAQv5E,GAAQ,GAAO,GAGvC4sD,EAAM5sD,SAAW21E,EACjB/0E,EAAK6N,MAAMzO,GAEXY,EAAK0D,IAAItE,GAIjBY,EAAKmC,QAAQ8yC,EACjB,CACJ,IAcJ,SAASmyS,EAAgBxjV,EAASumV,GAE9B,GAAIvmV,EAAQrE,SAAW4qV,EAAU5qV,OAC7B,OAAO,EAGX,IAAK,IAAID,EAAI,EAAGA,EAAIsE,EAAQrE,OAAQD,IAChC,GAAIsE,EAAQtE,KAAO6qV,EAAU7qV,GACzB,OAAO,EAIf,OAAO,CACX,CAEA,SAAS0qF,EAAUpmF,EAASyB,GACxB,IAAKzB,EAAQoB,GAAG,YACZ,OAAO,EAGX,IAAIolV,EAAkB1xV,EAAMktB,UAAUhiB,GAClC4gB,EAAQnf,EAASkf,KAAOlf,EAASvB,MACjC2gB,EAASpf,EAAS4X,IAAM5X,EAAStB,OAKrC,OAHAqmV,EAAgB5lU,MAAQ4lU,EAAgB7lU,KAAO7rB,EAAM8L,YAAYZ,GACjEwmV,EAAgB3lU,OAAS2lU,EAAgBntU,IAAMvkB,EAAM+L,aAAab,KAEzDwmV,EAAgB7lU,KAAOC,GAC5B4lU,EAAgB5lU,MAAQnf,EAASkf,MACjC6lU,EAAgBntU,IAAMwH,GACtB2lU,EAAgB3lU,OAASpf,EAAS4X,IAC1C,CAEA,SAASyiJ,EAAS2qL,EAAWC,GACzB,QAASD,EAAU7lU,OAAS8lU,EAAW/lU,MACnC8lU,EAAU9lU,MAAQ+lU,EAAW9lU,OAC7B6lU,EAAU5lU,QAAU6lU,EAAWrtU,KAC/BotU,EAAUptU,KAAOqtU,EAAW7lU,OACpC,CAjDA6hU,EAAWl5T,aAAe,SAASkiK,GAC/B,IAAIi7J,EAAiBj7J,EAAWktE,MAAQltE,EACpCk7J,EAA0C,iBAAnBD,GAA+BA,EAAe35U,cACzE,MAAO,CACHy9B,SAAUm8S,GAAiBA,EAAc98U,QAAQ,aAAe,EAChE20D,KAAMmoR,GAAiBA,EAAc98U,QAAQ,SAAW,EACxDs+C,MAAOw+R,GAAiBA,EAAc98U,QAAQ,UAAY,EAC1D4gC,OAAQk8S,GAAiBA,EAAc98U,QAAQ,WAAa,EAEpE,EA0CAhV,EAAM4pB,GAAG2M,OAAOq3T,GAChB5tV,EAAM4pB,GAAG2M,OAAO+5T,EAEnB,CA38BD,CA28BGnwV,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACf4C,EAAU5C,EAAM4C,QAChBgnB,EAAK5pB,EAAM4pB,GACX6G,EAAS7G,EAAG6G,OACZvG,EAAOlqB,EAAMkqB,KACbuK,EAAQz0B,EAAM2d,UACdywD,EAASpuE,EAAM4tB,WACf9Q,EAAY9c,EAAMiW,KAAK6G,UACvB+kB,EAAa7hC,EAAMiW,KAAK4rB,WACxB+rT,EAAa5tV,EAAM4pB,GAAGgkU,WACtB0C,EAAkBtwV,EAAM4pB,GAAG0mU,gBAC3ByB,EAAgB/xV,EAAM8Y,eACtBrJ,EAAWzP,EAAMyP,SACjB2D,EAAapT,EAAMoT,WACnB2L,EAAc/e,EAAM4C,QAAQmc,YAC5BizU,EAAmBjzU,EAAcA,EAAYzT,IAAM,mBAAqB,GACxE2mV,EAAexiV,GAAUhC,GAAS,cAAcA,EAAK+W,mFAAmF/W,EAAK+d,YAAY/d,EAAKykV,eAAezkV,EAAK1F,sBAClLoqV,EAAoB1iV,GAAS,IAAM,4DACnC2iV,EAAyB3iV,GAAS,IAAM,kEACxC4iV,EAAqB5iV,GAAUhC,GAAS,mCAAmCA,EAAKu0B,oBAChFx2B,EAAaxL,EAAM8L,YACnB0f,EAAK,iBACL+nN,EAAQ,QAAU/nN,EAClB8mU,EAAa,UAAY9mU,EAKzBwtL,EAAK,KAGLu5I,EAAQ,UACRtvV,EAAQ,QACRuvV,EAAU,UACVj2S,EAAS,SACTk2S,EAAW,WACXnkR,EAAQ,QAERu4O,EAAW,aACX4iB,EAAU,UACVipB,EAAa,gBACbC,EAAY,UAEZC,EAAe,kBACfv2Q,EAAQ,QAERw2Q,EAAoB,wBAA0BhsC,EAAW,UAAY8rC,EAAY,IAEjFjoC,EAAW,aACX5kF,EAAO,OAASt6M,EAChBq6M,EAAQ,QACRitH,EAAgBjtH,EAAQr6M,EACxBohS,EAAahqT,EAAQic,MAAQ,aAAe,aAC5Ck0U,EAAqBnwV,EAAQic,MAAQ,aAAe2M,EAAK,aAAeA,EACxEm6M,EAAa/iO,EAAQic,MAAQ,WAAa2M,EAAK,aAAeA,EAAK,aAAeA,EAElFkT,EAAa,MACbs0T,EAAY,aACZC,EAAY,aACZpuC,EAAgB,gBAChB+qB,EAAgB,gBAChB7pU,EAAa,aACb3D,EAASJ,EAAEI,OACX09J,GAAO9xJ,KACP8pB,GAAQ,CACJhzB,MAAO,EACPuX,KAAM,EACN62U,OAAQ,EACRC,QAAS,GAEbC,GAAiB,gCAwBrB,IAAIC,GAAW5iU,EAAOruB,OAAO,CACzBoF,KAAM,SAAS0D,EAAS1E,GACpB,IAAiBuB,EAAbT,EAAOjI,MACXmH,EAAUA,GAAW,CAAC,GACdwqB,cAAgBxqB,EAAQwqB,eAAiB,UACjDP,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GAEnC0E,EAAU5D,EAAK2E,QAAU3E,EAAK4D,SAC9B1E,EAAUc,EAAKd,SAEP6nB,IAAMruB,EAAM6tB,SAASrnB,EAAQ6nB,KAErC/mB,EAAKd,QAAQ8sV,aAAeC,GAAgBjsV,EAAKd,QAAQ8sV,cAEzDhsV,EAAKopT,aAELppT,EAAKq7U,cAELr7U,EAAKomU,UAELpmU,EAAKksV,eAEDlsV,EAAKd,QAAQitV,UACbnsV,EAAKmmU,QAAQnmU,EAAKyxE,SAElBzxE,EAAKosV,OAASpsV,EAAK4D,QAAQsqB,KAAK,yBAChCluB,EAAK+wU,WAGJntU,EACAwZ,SAAS,6BAA+Ble,EAAQw7B,WAAa,iBAAmB,KAChF9Y,GAAG6pU,EAAqB,IAAMptH,EAAYitH,EAAce,IACxDzqU,GAAGopU,EAAY,yBAA0BhrV,EAAK26E,MAAMp5E,KAAKvB,IACzD4hB,GAAGqqN,EAAQ,YAAas/G,GAAmB,SAAS7uV,GACjD,IAAI2vO,EAAO3vO,EAAEg6E,cAAcx0B,WACvBzhD,EAAQypV,GAAa79G,IAEiB,GAAtC3xO,EAAE2xO,GAAMlmO,KAAK,QAAQuH,QAAQ,MAC7BhR,EAAEwE,iBAGiB,SAAnBlB,EAAK8xD,MAAM33D,MAAmB6F,EAAKd,QAAQ8sV,aAAavrV,KAGrC,SAAnBT,EAAK8xD,MAAM33D,MAAmB6F,EAAKssV,uBAC/BtsV,EAAK86E,OAAOpgF,EAAE2xO,GAE1B,IACCzqN,GAAG,UAAYsC,EAAI,8CAA8C,WAC9DlkB,EAAKusV,YAAuC,IAA5BvsV,EAAKd,QAAQstV,WACjC,IACC7wU,KAAK+1L,GAEN1xM,EAAKd,QAAQw7B,YACb92B,EAAQge,GAAGqqN,EArGE,yBAqGyB,SAASvvO,GACvC,IAAIuF,EAAQvH,EAAEgC,EAAEg6E,eAAe9xE,QAAQ,MAAMspB,KAAKq9T,GAAmBtpV,QACjEo4B,EAAO3/B,EAAEgC,EAAEg6E,eAAe9xE,QAAQ,MAAMspB,KAAKq9T,GAAmBlxT,OAEhEr6B,EAAKksE,yBACLlsE,EAAKsvL,WAAWm3J,YAAcpsT,EAC9Br6B,EAAKsvL,WAAW+3J,YAAYplV,EAAOo4B,GACnCr6B,EAAKsvL,WAAWntL,QAAQ8yC,EAAQ,CAAE/8B,MAAOxb,KAGzCsD,EAAKysV,sBACLzsV,EAAK0sV,gBAAgBjG,YAAcpsT,EACnCr6B,EAAK0sV,gBAAgB1gS,MAAM/pD,EAAOo4B,GAClCr6B,EAAK0sV,gBAAgBp2S,UAGzBt2C,EAAKk9I,SAAWl9I,EAAKsuN,OAAS47H,GAAa7vT,EAAKnM,KAAK,SACrDluB,EAAK2sV,YAAY3sV,EAAKk9I,SAC9B,IAGJ9mG,GAAUl3C,GACVuB,EAAQ0sB,EAAMjuB,EAAQuB,MAAOvB,EAAQ8J,OAAQ9J,EAAQ0M,SACrD5L,EAAK4sV,aAAe,GAEpB5sV,EAAK68J,OAASrsI,GAAMtxB,EAAQ2O,OAE5B7N,EAAKk9I,SAAW,IAAIsb,IAAMq0L,GAAcpsV,EAAOvB,EAAQuP,IAAKvP,EAAQgS,MAEpElR,EAAK8sV,eAAiB,WAGlB,GAFA9sV,EAAKunN,SAAU,EAEXvnN,EAAK+sV,MAAMjoV,SAASy6S,GAAW,CAC/B,IAAIytC,EAAchtV,EAAK8xD,MAAMm7R,aAAaC,MAC1CltV,EAAK+sV,MAAQ/sV,EAAKmtV,YAAYH,EAClC,CAEAhtV,EAAK+sV,MAAM3vU,SAAS+kT,EACxB,EAEAniU,EAAKotV,kBAAoB,WACrBptV,EAAKunN,SAAU,EACXvnN,EAAK+sV,OACL/sV,EAAK+sV,MAAMjoU,YAAYq9S,EAE/B,EAEAniU,EAAKS,MAAMA,GAEPT,EAAKksE,wBAA0BhtE,EAAQmuV,YAAY9tV,OAAS,GAC5DS,EAAKqtV,YAAYnuV,EAAQmuV,aAG7BrtV,EAAKgrE,OAAS9rE,EAAQ8sD,MAElBhsD,EAAKysV,qBACLzsV,EAAKqnV,YAAYrnV,EAAKgrE,QAG1BtyE,EAAMi0B,OAAO3sB,EACjB,EAEAd,QAAS,CACL/E,KAAM,WACNsG,MAAO,KACPgO,IAAK,IAAI+pJ,GAAK,KAAM,EAAG,GACvBtnJ,IAAK,IAAIsnJ,GAAK,KAAM,GAAI,IACxBgf,MAAO,GACPw0K,aAAc,KACdsB,cAAc,EACdC,mBAAoB,OACpBxmU,IAAK,GACLnb,QAAS,GACT6lE,OAAQ,GACRzoE,OAAQ,GACRxL,MAAO,CAAC,EACRk9B,YAAY,EACZsxB,MAAO,CAAEn+C,MAAO,KAAMnK,IAAK,KAAMtE,OAAQ21E,GACzCu6G,WAAY,SACZ+9J,YAAa,GACbx/U,MAAOlS,EACPugK,MAAOvgK,EACPoM,KAAM,SACNylV,oBAAoB,EACpBnjQ,UAAW,CACP5/C,WAAY,CACRtrB,QAAS8rU,EACT78U,SAAS,EACTiR,SAAU,IACVoxB,QAAS,GAEblG,SAAU,CACNprB,QAAS,SACTE,SAAU,MAGlBsD,SAAU,CACN8qU,iBAAkB,GAClBp1T,MAAO,QACPq1T,WAAY,eACZC,YAAa,CACTnwV,MAAO,YACPuX,KAAM,cACN62U,OAAQ,iBAGhBliU,cAAe,WAGnBtnB,OAAQ,CACJ6yC,EACAk2S,GAGJ1hU,eAAgB,CACZmkU,QAAW,CACPzvS,OAAQ,CACJh2C,SAlMc,EAAG0lV,aAAY9lV,OAAMqP,WAAY,kFACvBy2U,8DAAuE9lV,kEAAqEtJ,gBAAyB/F,EAAM4pB,GAAG+tE,KAAK,CAAEA,KAAM,cAAaj5E,EAAQ,QAAU,QAAU+4E,UAAW,kFAC/O09P,kBAA6Bn1V,EAAMwvB,OAAS,uDAAuDngB,mHACnG8lV,8DAAuE9lV,mEAAsEtJ,YAAqB/F,EAAM4pB,GAAG+tE,KAAK,CAAEA,KAAM,cAAaj5E,EAAQ,OAAS,SAAW+4E,UAAW,4CAiMxQg8P,WAAW,EACX2B,cAAe,YACfjT,eAAgB,oBAEpBkT,OAAU,CACN5vS,OAAQ,CACJh2C,SArMa,EAAG0lV,aAAY9lV,OAAM4a,WAAUvL,WAAY,wDAC1Dy2U,kBAA6Bn1V,EAAMwvB,OAAS,sCAAsCngB,kQAKhE8lV,KAAcz2U,EAAQ,OAAS,8CAA8CrP,wFAC/FrP,EAAM4pB,GAAG+tE,KAAK,CAAEA,KAAM,YAAWj5E,EAAQ,QAAU,QAAU+4E,UAAW,uFAEtD09P,kDAA2D9lV,qHACjDrP,EAAM4tB,WAAW3D,EAAS0V,mFAEpCw1T,KAAcz2U,EAAQ,OAAS,8CAA8CrP,wFAC/FrP,EAAM4pB,GAAG+tE,KAAK,CAAEA,KAAM,YAAWj5E,EAAQ,OAAS,SAAW+4E,UAAW,qFA0L1Eg8P,WAAW,EACX2B,cAAe,YACfjT,eAAgB,qBAIxB5wT,WAAY,SAAS/qB,GACjB,IAAIc,EAAOjI,KAEXq+C,GAAUl3C,GAEVA,EAAQ8sV,aAAeC,GAAgB/sV,EAAQ8sV,cAC/ChsV,EAAKguV,qBAED9uV,EAAQyjB,WACRzjB,EAAQyjB,SAAWjoB,EAAEI,OAAO,CAAC,GAAG,EAAMkF,EAAKd,QAAQyjB,SAAUzjB,EAAQyjB,WAGzEwG,EAAOrpB,GAAGmqB,WAAW3nB,KAAKtC,EAAMd,GAEhCc,EAAKopT,aAELppT,EAAKq7U,cAELr7U,EAAKksV,eAEDlsV,EAAKd,QAAQitV,UACbnsV,EAAKmmU,QAAQnmU,EAAKyxE,SAElBzxE,EAAK4D,QAAQsqB,KAAK,sBAAsBzoB,OACxCzF,EAAK+wU,WAET/wU,EAAK68J,OAASrsI,GAAMxwB,EAAKd,QAAQ2O,OAEjC7N,EAAKi2C,WAED/2C,EAAQw7B,YACR16B,EAAK4D,QAAQwZ,SAAS,gBAE9B,EAEArjB,QAAS,WACL,IAAIiG,EAAOjI,KACXsgC,EAAQr4B,EAAKosV,OAEbpsV,EAAK4D,QAAQutB,IAAIjN,GACjBlkB,EAAKiuV,OAAO98T,IAAIjN,GAChBlkB,EAAK0rV,GAAWv6T,IAAIjN,GACpBlkB,EAAK2rV,GAAWx6T,IAAIjN,GACpBlkB,EAAKguV,qBACLt1V,EAAMqB,QAAQiG,EAAKkuV,QAEf71T,GACA3/B,EAAMqB,QAAQs+B,EAAMlH,IAAIjN,IAG5BiF,EAAOrpB,GAAG/F,QAAQuI,KAAKtC,EAC3B,EAEA+L,QAAS,WACL,OAAOhU,KAAKmlJ,QAChB,EAEAvtH,KAAM,WACF,OAAO53B,KAAK+5D,KAChB,EAEAh0B,MAAO,SAASzmB,GACZA,EAAQA,GAAStf,KAAKm2V,OACtBn2V,KAAKo2V,WAAW92U,GAChBA,EAAMlV,QAAQ,QAClB,EAEAsM,IAAK,SAAShO,GACV,OAAO1I,KAAKq2V,QAhUV,MAgUuB3tV,EAC7B,EAEAyQ,IAAK,SAASzQ,GACV,OAAO1I,KAAKq2V,QAAQ,MAAO3tV,EAC/B,EAEA4tV,eAAgB,WACZt2V,KAAK0/C,UAAUi0S,GAAY,EAC/B,EAEA4C,iBAAkB,WACdv2V,KAAK0/C,UAAUk0S,EAAW,EAC9B,EAEA4C,WAAY,WACR,IAAIvuV,EAAOjI,KACXsZ,EAAQrR,EAAK68J,OAET78J,EAAKiuV,OAAOnpV,SAASy6S,IAIzBv/S,EAAKi2C,SAASj2C,EAAKk9I,WAAY7rI,EACnC,EAEAm9U,aAAc,SAAS/tV,GACnB,IAAIT,EAAOjI,KACXsZ,EAAQrR,EAAK68J,OACbX,EAAQl8J,EAAKd,QAAQg9J,MAEhBz7J,IAID4Q,IAAUmf,GAAM0rI,GAQpBl8J,EAAKi2C,SAASx1C,IAAS4Q,GAPdo9U,GAAYzuV,EAAKsuN,OAAQtuN,EAAKk9I,WAAcuxM,GAAYzuV,EAAKsuN,OAAQ7tN,KACtET,EAAKS,MAAMA,GACXT,EAAKmC,QAAQ8yC,IAMzB,EAEAgB,SAAU,SAASx1C,EAAOkvB,GACtBA,EAAO9uB,MAAM8uB,GAAQa,GAAMb,GAAQA,EAEnC,IAWI0G,EAAIq4T,EAAavnS,EACjBh3B,EAZAnwB,EAAOjI,KACPmH,EAAUc,EAAKd,QACf0M,EAAU1M,EAAQ0M,QAClB6C,EAAMvP,EAAQuP,IACdyC,EAAMhS,EAAQgS,IACdglC,EAAQl2C,EAAKiuV,OACbn6U,EAAO9T,EAAKkuV,OACZ5hR,EAAMtsE,EAAK2uV,UACX3rT,EAAehjC,EAAKk9I,SACpB0xM,EAASnuV,IAAUA,GAASuiC,EAC5BuH,EAAW5a,IAASh1B,GAAeg1B,IAAS3vB,EAAK68J,OAGjDgyL,EAAc7uV,EAAK4D,QAAQ0pC,SAAS,oBAiCxC,GA/BK7sC,IACDA,EAAQuiC,GAGZhjC,EAAKk9I,SAAWz8I,EAAQ,IAAI+3J,IAAMq0L,GAAcpsV,EAAOgO,EAAKyC,IAExDye,IAASh1B,EACTg1B,EAAO3vB,EAAK68J,OAEZ78J,EAAK68J,OAASltI,EAGlB3vB,EAAK8xD,MAAQ48R,EAAc/gV,GAAS6iB,MAAMb,GAC1Cw3B,EAAUunS,EAAYvnS,QAEtBh3B,EAAWR,IAASa,GAAM06T,GAC1Bh1S,EAAMv1B,YAAY4+R,EAAUpvR,GAAUxU,KAAK4hS,EAAeptR,GAE1DA,EAAWg3B,EAAQ1mD,EAAOgO,GAAO,EACjCzO,EAAK0rV,GAAW/qU,YAAY4+R,EAAUpvR,GAAUxU,KAAK4hS,EAAeptR,GAEpEA,EAAWg3B,EAAQ1mD,EAAOyQ,IAAQ,EAClClR,EAAK2rV,GAAWhrU,YAAY4+R,EAAUpvR,GAAUxU,KAAK4hS,EAAeptR,GAEhErc,GAAQw4D,GAAOA,EAAInmE,KAAK,eACxBmmE,EAAIlsD,WAAU,GAAM,GACpBtM,EAAKsM,WAAU,GAAM,IAGzBpgB,EAAK2uV,UAAY76U,GAEZA,GAAQ9T,EAAK8uV,YAAa,CAC3B54S,EAAM9tC,KAAK,+BAAiCsmV,EAAYx4S,MAAMz1C,EAAOgO,EAAKyC,EAAKtF,GAAW,WAEtF5L,EAAKd,QAAQyjB,SAASgrU,aAAe3tV,EAAK8xD,MAAM33D,OAAS+wV,EACzDh1S,EAAMv6B,KAAK,QAASmrD,EAAO9mE,EAAKd,QAAQyjB,SAAS+qU,WAAa1tV,EAAKd,QAAQyjB,SAASgrU,YAAY3tV,EAAK8xD,MAAM33D,QAE3G+7C,EAAMlsB,WAAW,SAGrBhqB,EAAKkuV,OAAS73T,EAAK37B,EAAEg0V,EAAYhwS,QAAQ5jD,EAAO,CAC5C2T,IAAKA,EACLyC,IAAKA,EACLvC,KAAMlO,EACNsmB,IAAK7nB,EAAQ6nB,IACbywJ,MAAOt4K,EAAQs4K,MACfxuK,OAAQ9J,EAAQ8J,OAChBwkV,mBAAoBtuV,EAAQsuV,mBAC5BD,mBAAoBruV,EAAQquV,mBAC5B3hV,QAASA,EACTogV,aAAc9sV,EAAQ8sV,aACtB+C,oBAAqB7vV,EAAQw7B,WAC7B/X,SAAUzjB,EAAQyjB,SAClBk4T,eAAgB76U,EAAKd,QAAQ27U,gBAC9B76U,EAAK0uV,EAAYv0V,SAEpB6F,EAAK6/S,QAEL,IAAIrlT,EAAUsZ,GAAQA,EAAK3N,KAAK,WAAakwB,EAAGlwB,KAAK,SACrDnG,EAAKgvV,SAAS,CACVl7U,KAAMA,EACNuiB,GAAIA,EACJkU,SAAUA,EACVqkT,OAAQA,EACRp0V,QAASA,IAGbq0V,EAAY/pU,YAAY,yFACxB+pU,EAAYzxU,SAAS,cAAgBsxU,EAAYv0V,KAAO,QAExD6F,EAAKmC,QAAQgpV,GAEbnrV,EAAK2uF,OAAOluF,EAChB,CAEIkvB,IAASa,GAAMtxB,EAAQg9J,QAAUl8J,EAAK4sV,aAAartV,OAAS,GAC5DS,EAAKivV,gCAGLjvV,EAAKssV,sBACD38T,IAASa,GAAMtxB,EAAQg9J,QAAUl8J,EAAKsuN,SAAWtuN,EAAKd,QAAQ8sV,aAAahsV,EAAKsuN,SAChFtuN,EAAKkvV,YAAYlvV,EAAKsuN,QAI9BtuN,EAAK2sV,YAAYlsV,IAEZqT,GAAQ9T,EAAK+sV,OACd/sV,EAAK+sV,MAAMjoU,YAAYq9S,GAG3BniU,EAAK8uV,aAAc,CACvB,EAEAzB,YAAa,SAAS71K,GAClB,IACI23K,EACAC,EAFApvV,EAAOjI,KAIX,GAAIy/K,IAAU78K,EACV,OAAOqF,EAAK4sV,aAGhBwC,EAAc53K,EACT5kK,KAAI,SAASjE,GAAQ,OAAOA,EAAK3N,SAAW,IAC5CsmB,QAAO,SAAS3Y,EAAMtJ,EAAUyN,GAC7B,OAAOA,EAAMpF,QAAQiB,KAAUtJ,CACnC,IACCuN,KAAI,SAASgjB,GAAQ,OAAO,IAAIlvB,KAAKkvB,EAAO,IAEjDu5T,EAAqBz0V,EAAE07B,KAAKg5T,GAAa,SAAS3uV,GAC9C,GAAIA,EACA,OAAQT,EAAKqvV,eAAe,IAAI3oV,KAAKjG,EAAM8U,SAAS,EAAG,EAAG,EAAG,OAAU9U,CAE/E,IACAT,EAAK4sV,aAAeuC,EAAmB5vV,OAAS,EAAI4vV,EAA6C,IAAvBC,EAAY7vV,OAAe6vV,EAAcpvV,EAAK4sV,aACxH5sV,EAAKivV,+BACT,EAEAxuV,MAAO,SAASA,GACZ,IAAIT,EAAOjI,KACPu0E,EAAMtsE,EAAK8xD,MACXniC,EAAO3vB,EAAK8xD,MAEhB,GAAIrxD,IAAU9F,EACV,OAAOqF,EAAKsuN,OAIhB,IADA7tN,EAAQT,EAAKqvV,eAAe5uV,KACfT,EAAKksE,uBAAwB,CACtC,IAAIv9D,EAAO,IAAIjI,MAAMjG,GACrBkO,EAAK4G,SAAS,EAAG,EAAG,EAAG,GACvBvV,EAAK4sV,aAAe,CAACj+U,GACrB3O,EAAKsvL,WAAWm3J,YAAc,IAClC,CAEIn6Q,GAAiB,OAAV7rE,GAAkBT,EAAK+sV,MAC9B/sV,EAAK+sV,MAAMjoU,YAAYs+R,IAEvBpjT,EAAK8uV,aAAeruV,GAASkvB,GAA+C,IAAvCA,EAAKw3B,QAAQ1mD,EAAOT,EAAKk9I,UAC9Dl9I,EAAKi2C,SAASx1C,GAEtB,EAEA2W,MAAO,WACH,OAAO1e,EAAM4C,QAAQ8b,MAAMrf,KAAK4M,QACpC,EAEAk7S,MAAO,WACH,IAAIxoS,EAAQtf,KAAKm2V,OAEjB72U,EAAMsE,KAAK,kBAAmB5jB,KAAKk2V,OAAOtyU,KAAK,OAEvB,UAApB5jB,KAAK+5D,MAAM33D,MAAoBpC,KAAKm0E,wBACpC70D,EAAMsE,KAAK,uBAAwB,OAE3C,EAEA0zU,eAAgB,SAAS5uV,GACrB,IAAIT,EAAOjI,KACPmH,EAAUc,EAAKd,QACfuP,EAAMvP,EAAQuP,IACdyC,EAAMhS,EAAQgS,IAsBlB,OApBc,OAAVzQ,IACAT,EAAKk9I,SAAWoyM,GAAWtvV,EAAKk9I,SAAShuI,cAAelP,EAAKk9I,SAASjuI,WAAYjP,EAAKk9I,SAASnuI,YAKtF,QAFdtO,EAAQ0sB,EAAM1sB,EAAOvB,EAAQ8J,OAAQ9J,EAAQ0M,YAKpC2jV,GAFL9uV,EAAQ,IAAI+3J,IAAM/3J,GAEIgO,EAAKyC,KACvBzQ,EAAQ,OAIF,OAAVA,GAAmBT,EAAKd,QAAQ8sV,aAAa,IAAItlV,MAAMjG,IAEhDT,EAAKsuN,SAAW3zN,IACvBqF,EAAKsuN,OAAS,MAFdtuN,EAAKsuN,OAAS7tN,EAKXT,EAAKsuN,MAChB,EAEA2gI,8BAA+B,WAC3B,IAAIjvV,EAAOjI,KACNy3V,EAAgB,CAAC,EACtB90V,EAAEK,KAAKiF,EAAK4sV,cAAc,SAASv7U,EAAO5Q,GACtC+uV,EAAc92V,EAAMiV,SAAS6iB,MAAM,GAAGy8T,aAAaxsV,IAAUA,CACjE,IACAT,EAAKsvL,WAAW/gI,QACf,IAAI6T,EAAQpiE,EAAKkuV,OACbhgU,KAAKo9T,GACLhkU,QAAO,SAASjW,EAAOzN,GACpB,OAAO4rV,EAAc90V,EAAEkJ,EAAQs+C,YAAYvmC,KAAKjjB,EAAMijB,KAAKqrD,IAC/D,IACA5E,EAAM7iE,OAAS,GACfS,EAAKsvL,WAAWq4J,eAAevlR,GAAO,EAE9C,EAEAkqR,mBAAoB,WAChB,IAAIh9J,EAAav3L,KAAKmH,QAAQowL,WAE9B,OADoBg3J,EAAWl5T,aAAakiK,GACnBhhJ,MAC7B,EAEA49B,qBAAsB,WAClB,IAAIojH,EAAav3L,KAAKmH,QAAQowL,WAE9B,OADoBg3J,EAAWl5T,aAAakiK,GACnBjhJ,QAC7B,EAEAo+S,kBAAmB,WACf,IAAIn9J,EAAav3L,KAAKmH,QAAQowL,WAE9B,OADoBg3J,EAAWl5T,aAAakiK,GACnBtjI,KAC7B,EAEAqvR,YAAa,WACT,IAAIr7U,EAAOjI,KACPu3L,EAAatvL,EAAKd,QAAQowL,WAC1BmgK,EAAoBnJ,EAAWl5T,aAAakiK,IAE3CtvL,EAAKksE,wBAA2BlsE,EAAKysV,uBAItCzsV,EAAK0sV,kBACL1sV,EAAK0sV,gBAAgB3yV,UACrBiG,EAAK0sV,gBAAkB,MAGvB+C,EAAkBzjS,OAClBhsD,EAAK0sV,gBAAkB,IAAI1D,EAAgBhpV,EAAK2E,QAAS,CACrD2mB,OAAQtrB,EACRsnB,OAAQ,+BAAiCikU,EACzCjC,aAAcgC,EACdrC,kBAAmBsC,EACnBj1S,OAAQt2C,EAAKo9T,UAAU77T,KAAKvB,GAC5BoO,QAASpO,EAAKd,QAAQouV,aACtBjE,cAAc,EACdnlU,GAAIA,IAGRlkB,EAAK4D,QAAQwZ,SAAS,qBAEtBpd,EAAKsvL,WAAa,IAAIg3J,EAAWtmV,EAAK2E,QAAS,CAC3CgxU,MAAM,EAEN+Q,eAAgB,wNAChBr4S,SAAUohT,EAAkBphT,SAC5B/mB,OAAQ,gCAAkCikU,EAC1Cj1S,OAAQt2C,EAAKo9T,UAAU77T,KAAKvB,GAC5BqzB,cAAerzB,EAAK0vV,iBAAiBnuV,KAAKvB,KAGtD,EAEA2vV,kBAAmB,WACf,MAAM3vV,EAAOjI,KACb,IAAIi0D,EAIJ,GAFAhsD,EAAK4vV,gBAAiB,EAElB5vV,EAAKysV,oBAAqB,CAG1B,GAFAzgS,EAAQhsD,EAAKqnV,eAERr7R,IAAUA,EAAMn+C,MAEjB,YADA7N,EAAK4vV,gBAAiB,GAI1B5vV,EAAKqnV,YAAYr7R,EACrB,CAEAhsD,EAAK4vV,gBAAiB,CAC1B,EAEAvI,YAAa,SAASr7R,GAClB,MAAMhsD,EAAOjI,KAAM43B,EAAO3vB,EAAK8xD,MAC/B,IAAI+9R,EAAcC,EAAYC,EAE9B,GAAI/jS,IAAUrxD,EACV,OAAOqF,EAAKgrE,OAGhBhrE,EAAKgrE,OAAShf,EAETA,EAAMn+C,QAIXkiV,EAAe/vV,EAAKgwV,gBAEpBH,EAAe7vV,EAAKiwV,aAAajkS,EAAMn+C,OACvCiiV,EAAa9jS,EAAMtoD,KAAO1D,EAAKiwV,aAAajkS,EAAMtoD,MAE7CmsV,GAAgBC,GACjB9vV,EAAK0sV,gBAAgB5C,SAAS9pV,EAAKmtV,YAAYx9T,EAAKs9T,aAAajhS,EAAMtoD,OAGvEmsV,GAAgBC,GAChB9vV,EAAK0sV,gBAAgB1gS,MAAMhsD,EAAKmtV,YAAYx9T,EAAKs9T,aAAajhS,EAAMn+C,QAAS7N,EAAKmtV,YAAYx9T,EAAKs9T,aAAajhS,EAAMtoD,OAAO,EAAO1D,EAAKd,QAAQouV,cAGjJthS,EAAMtoD,KAAOmsV,IAAiBC,GAC9B9vV,EAAK0sV,gBAAgB7C,WAAW7pV,EAAKmtV,YAAYx9T,EAAKs9T,aAAajhS,EAAMn+C,UAGxEm+C,EAAMtoD,KAAOmsV,GACd7vV,EAAK0sV,gBAAgB7+U,MAAM7N,EAAKmtV,YAAYx9T,EAAKs9T,aAAajhS,EAAMn+C,UAGnEkiV,EAAaliV,OAASm+C,EAAMn+C,QAAUkiV,EAAarsV,KAAOsoD,EAAMtoD,KACjE1D,EAAK0sV,gBAAgBzhJ,IAAIjrM,EAAK4D,QAAQsqB,KAAKq9T,IAEnD,EAEAmE,iBAAkB,SAAStwV,GACvB,IAAIY,EAAOjI,KAEPiI,EAAKsvL,WAAWpwL,QAAQmvC,UAAYjvC,EAAO4F,GAAGumV,KAC9CvrV,EAAKk9I,SAAWgtM,GAAa9qV,EAAO8uB,KAAK,SACzCluB,EAAK2sV,YAAY3sV,EAAKk9I,UAG9B,EAEAkgL,UAAW,SAAS1gU,GAChB,IAEIsvD,EAGAkkS,EACAriV,EACAnK,EACAjD,EACArB,EATAY,EAAOjI,KACPwmK,EAAY7hK,EAEZyzV,EAASzzV,EAAE2F,OAAO2nV,QAClBoG,EAAW1zV,EAAE2F,OAAO0nV,UAMpB0F,EAAoBnJ,EAAWl5T,aAAaptB,EAAKd,QAAQowL,YAE7D,GAAItvL,EAAKysV,oBAgCL,OA/BAzgS,EAAQtvD,EAAE2F,OAAO2pD,QACjBkkS,EAAelwV,EAAKqnV,eAAiB,CAAC,EACtCjoV,EAAS8wV,EAAa9wV,OAClB4sD,EAAMn+C,OAASm+C,EAAMn+C,MAAMtO,SAC3BsO,EAAQq8U,GAAal+R,EAAMn+C,MAAMqgB,KAAK,UAGtC89B,EAAMtoD,KAAOsoD,EAAMtoD,IAAInE,SACvBmE,EAAMwmV,GAAal+R,EAAMtoD,IAAIwqB,KAAK,UAIlC9uB,EAttBN,QAqtBMA,EACS21E,EAttBf,MA2tBE/0E,EAAKgrE,OAAS,CAAEn9D,MAAOuiV,EAAWF,EAAariV,MAAQA,EAAOnK,IAAKysV,EAASD,EAAaxsV,IAAMA,EAAKtE,OAAQA,GAEvGY,EAAK4vV,gBACN5vV,EAAKmC,QAAQ8yC,GAGjBx0C,EAAQiD,GAAOmK,EAEXnK,IAAQ1D,EAAKiwV,aAAavsV,KAC1BjD,EAAQoN,GAGZ7N,EAAKqnV,YAAYrnV,EAAKgrE,aACtBhrE,EAAKS,MAAMA,GAIVgvV,EAAkBphT,UAUnBkwH,EAAUrmJ,MAAMsvE,SAAW+2E,EAAUrmJ,MAAMioR,QACvCzlS,EAAE6jK,EAAUrmJ,MAAMw+D,eAAe1xE,GAAGumV,GACpCvrV,EAAKqwV,iBAAiB31V,EAAE6jK,EAAUrmJ,MAAMw+D,iBAGxC12E,EAAKswV,iBAAiB/E,GAAmBxwV,MAAK,SAASsW,EAAOzN,GAC1D,IAAInD,EAAQypV,GAAaxvV,EAAEkJ,GAASsqB,KAAK,SACzCluB,EAAKw3U,UAAU/2U,EACnB,IACAT,EAAKuwV,4BAGJhyL,EAAUrmJ,MAAMonB,SACrBt/B,EAAKwwV,gBAAgBxwV,EAAK+sV,OAErBryV,EAAE6jK,EAAUrmJ,MAAMw+D,eAAe1xE,GAAGsmV,GACzCtrV,EAAKS,MAAMypV,GAAaxvV,EAAE6jK,EAAUrmJ,MAAMw+D,eAAexoD,KAAK,WAG9DluB,EAAK4sV,aAAe,GACpB5sV,EAAKuwV,4BAERvwV,EAAKmC,QAAQ8yC,IA/BNv6C,EAAE6jK,EAAUrmJ,MAAMw+D,eAAe1xE,GAAG,QAAUtK,EAAE6jK,EAAUrmJ,MAAMw+D,eAAe5xE,SAAS,cACxFpK,EAAE6jK,EAAUrmJ,MAAMw+D,eAAet5D,SAAS,cAG1Cpd,EAAK86E,OAAOpgF,EAAE6jK,EAAUrmJ,MAAMw+D,eAAexoD,KAAK,QA4B9D,EAEA8/T,mBAAoB,WAChB,IAAIhuV,EAAOjI,KAEPiI,EAAKsvL,aACLtvL,EAAKsvL,WAAWv1L,UAChBiG,EAAKsvL,WAAa,MAGlBtvL,EAAK0sV,kBACL1sV,EAAK0sV,gBAAgB3yV,UACrBiG,EAAK0sV,gBAAkB,KAE/B,EAGA2D,iBAAkB,SAASI,GACvB,IACI9hV,EAAOu7U,GAAauG,EAAYviU,KAAK,SACjCuiU,EAAY3rV,SAAS,cAFlB/M,KAGE60V,aAAalzV,KAAKiV,GAHpB5W,KAMEy/U,UAAU7oU,EAE3B,EAGA6hV,gBAAiB,SAASE,EAAYp8S,GAClC,IAGIq8S,EAHA3wV,EAAOjI,KACP64V,EAAWt8S,GAAa41S,GAAalqV,EAAKsvL,WAAW7uL,QAAQwB,QAAQisB,KAAK,SAC1EgoJ,EAASg0K,GAAawG,EAAWxiU,KAAK,SAGtCluB,EAAKsvL,WAAWm3J,aAAezmV,EAAKsuN,OACpCsiI,EAAW5wV,EAAKsvL,WAAWm3J,YAAcyD,GAAalqV,EAAKsvL,WAAWm3J,YAAYv4T,KAAK,SAAW,IAAIxnB,MAAM1G,EAAKsuN,QAEjHtuN,EAAKsvL,WAAWm3J,YAAcnyS,EAAYt0C,EAAKmtV,YAAYntV,EAAK8xD,MAAMm7R,aAAa34S,GAAYi3S,GAAqBvrV,EAAKsvL,WAAW7uL,QAAQwB,QAGhJjC,EAAK4sV,aAAe,GACpB+D,EAAiBE,GAAoBD,EAAU16K,GAC/C46K,GAAe9wV,EAAK4sV,aAAc+D,EAAgBC,EAAU5wV,EAAKd,QAAQ8sV,cAEzEhsV,EAAKivV,+BACT,EAEAe,cAAe,WACX,IAAI34U,EAAQtf,KAAK6L,QAAQsqB,KAAKg+M,0BAG9B,MAAO,CAAEr+N,MAFaq8U,GAAa7yU,EAAMpV,QAAQisB,KAAKo9T,GAAcrpV,QAAQisB,KAAK,SAEhDxqB,IADZwmV,GAAa7yU,EAAMgjB,OAAOnM,KAAKo9T,GAAcjxT,OAAOnM,KAAK,SAElF,EAEAoiU,iBAAkB,SAASlyU,GAEvB,OADWrmB,KACCm2V,OAAOhgU,KAAK9P,EAC5B,EAEAmyU,yBAA0B,WACtB,IAAIvwV,EAAOjI,KACXiI,EAAKsvL,WAAW7uL,QAAQ1F,MAAK,SAASsW,EAAO61B,GACzC,IAAIv4B,EAAOu7U,GAAaxvV,EAAEwsC,EAAKgb,aAC1BliD,EAAKd,QAAQ8sV,aAAar9U,IAC3B3O,EAAK4sV,aAAalzV,KAAKiV,EAE/B,GACJ,EAEC6oU,UAAW,SAAS7oU,GACjB,IACKoiV,EADMh5V,KACkB60V,aAAah6U,IAAIhI,QAAQ8C,SAASiB,IACtC,GAArBoiV,GAFOh5V,KAGF60V,aAAarqV,OAAOwuV,EAAkB,EAEnD,EAEAC,YAAa,SAASriV,GAClB,IACIsiV,EAAkB/G,GADXnyV,KAC6Bu4V,iBAAiB/E,GAAmBtpV,QAAQisB,KAAK,SAGzF,OAAQvf,IAFau7U,GAFVnyV,KAE4Bu4V,iBAAiB/E,GAAmBlxT,OAAOnM,KAAK,WAEnDvf,IAASsiV,CACjD,EAEAC,eAAgB,SAASluT,EAAcmuT,GACnC,IAGI9/U,EAHArR,EAAOjI,KACPq5V,EAAapxV,EAAKd,QAAQ8sV,aAI9B,MAAuB,SAAnBhsV,EAAK8xD,MAAM33D,MACHi3V,EAAWpuT,IAEnB3xB,EAAQrR,EAAK2E,QAAQupB,KAAK,IAAMi0S,GAAS9wT,QAClCrR,EAAK2E,QAAQupB,KAAK,wBAAwB6B,GAAG1e,EAAQ8/U,GAChDnsV,GAAGumV,KAAuB6F,EAAWpuT,GAEzD,EAEAitT,aAAc,SAASthV,GACnB,IACI66U,EADOzxV,KACO6L,QAAQsqB,KAAK,0BAC3B+iU,EAAkB/G,GAAaV,EAAOvnV,QAAQisB,KAAKo9T,GAAcrpV,QAAQisB,KAAK,SAC9EmjU,EAAiBnH,GAAaV,EAAOnvT,OAAOnM,KAAKo9T,GAAcjxT,OAAOnM,KAAK,SAI/E,QAFAvf,EAAO,IAAIjI,KAAKiI,EAAKs+U,mBAEJoE,IAAmB1iV,IAASsiV,CACjD,EAEAt2Q,MAAO,SAASj+E,GACZ,IAUI+D,EAAO6wV,EAASjiU,EAAQkjB,EAAM8vB,EAAmBkvR,EAVjDvxV,EAAOjI,KACPmH,EAAUc,EAAKd,QACf2K,EAAMnN,EAAE2iC,QACR1P,EAAO3vB,EAAK8xD,MACZzgD,EAAQrR,EAAK68J,OACbpuJ,EAAMzO,EAAKd,QAAQuP,IACnByC,EAAMlR,EAAKd,QAAQgS,IACnB8xB,EAAe,IAAIw1H,IAAMx4J,EAAKk9I,UAC9B9lI,EAAQpX,EAAKoX,QACbg6U,EAAapxV,EAAKd,QAAQ8sV,aAiC9B,GA9BItvV,EAAE0C,SAAWY,EAAKkuV,OAAO,KACzBluV,EAAKunN,SAAU,GAGf19M,GAAO+Y,EAAKS,QAAUjM,GAASvN,GAAO+Y,EAAKO,MAAQ/L,GACnD3W,EAAQ,EACR6wV,GAAU,GACHznV,GAAO+Y,EAAKO,OAAS/L,GAASvN,GAAO+Y,EAAKS,OAASjM,GAC1D3W,GAAS,EACT6wV,GAAU,GACHznV,GAAO+Y,EAAKQ,IACnB3iB,EAAkB,IAAV4Q,GAAe,GAAK,EAC5BigV,GAAU,GACHznV,GAAO+Y,EAAKU,MACnB7iB,EAAkB,IAAV4Q,EAAc,EAAI,EAC1BigV,GAAU,GACHznV,GAAO+Y,EAAKa,UACnBhjB,EAAQ,EACR6wV,GAAU,GACHznV,GAAO+Y,EAAKY,MAAQ3Z,GAAO+Y,EAAKW,KAEvCgvB,EAAO5iB,EADPN,EAASxlB,GAAO+Y,EAAKY,KAAO,QAAU,QAClBwf,IACpBA,EAAe,IAAIw1H,GAAKjmH,EAAKrjC,cAAeqjC,EAAKtjC,WAAYsjC,EAAKxjC,UAAWi0B,EAAa7zB,WAAY6zB,EAAa5zB,aAAc4zB,EAAa3zB,aAAc2zB,EAAa1zB,oBAC5JmG,YAAY88B,EAAKrjC,eAC9BoiV,GAAU,GACK,KAARznV,IACP7J,EAAKwxV,YAAY90V,GACjB40V,GAAU,GAGV50V,EAAE8qF,SAAW9qF,EAAEyjS,SACf,GAAIt2R,GAAO+Y,EAAKS,QAAUjM,GAASvN,GAAO+Y,EAAKO,MAAQ/L,EACnDpX,EAAKsuV,mBACLgD,GAAU,OACP,GAAIznV,GAAO+Y,EAAKO,OAAS/L,GAASvN,GAAO+Y,EAAKS,OAASjM,EAC1DpX,EAAKquV,iBACLiD,GAAU,OACP,GAAIznV,GAAO+Y,EAAKQ,GACnBpjB,EAAKuuV,aACL+C,GAAU,OACP,GAAIznV,GAAO+Y,EAAKU,KACnBtjB,EAAK86E,OAAOpgF,EAAEsF,EAAK+sV,MAAM,GAAG7qS,aAC5BovS,GAAU,OAEP,IAAKznV,GAAO+Y,EAAKK,OAASpZ,GAAO+Y,EAAKa,WAAazjB,EAAKksE,uBAAwB,CACnFlsE,EAAKyxV,yBAAyB/0V,GAE9B,IAAIg1V,EAAcxH,GAAaxvV,EAAEsF,EAAK+sV,MAAM,IAAI7+T,KAAK,SACrDluB,EAAK2sV,YAAY+E,EAErB,OACOh1V,EAAE4iC,WACL7+B,IAAU9F,GAAe00B,KACpBA,GACDM,EAAK4H,QAAQyL,EAAcviC,GAG1B8uV,GAAUvsT,EAAcv0B,EAAKyC,KAC9B8xB,EAAe6pT,GAAc7pT,EAAc9jC,EAAQuP,IAAKvP,EAAQgS,MAGhEkgV,EAAWpuT,KACXA,EAAehjC,EAAK2xV,iBAAiB3uT,EAAcviC,IAGvDgO,EAAM6gV,GAAW7gV,EAAIS,cAAeT,EAAIQ,WAAYR,EAAIM,WACpD/O,EAAKksE,uBACLlsE,EAAK4xV,wBAAwBl1V,EAAGsmC,GACzBhjC,EAAKysV,oBACPzsV,EAAKiwV,aAAajtT,KACfviC,EAAQ,EACRT,EAAKsuV,mBAELtuV,EAAKquV,kBAIbruV,EAAK2uF,OAAO3rD,IAIhBhjC,EAAK0sV,kBACLrqR,EAAOriE,EAAKmtV,YAAYx9T,EAAKs9T,aAAajqT,IAC1CuuT,EAAarH,IAAclqV,EAAK0sV,gBAAgBjG,aArFhBoL,WAqF4C3jU,KAAK,SAC5EluB,EAAKiwV,aAAasB,IAQfvxV,EAAK0sV,gBAAgB7xQ,MAAQ76E,EAAK0sV,gBAAgB7xQ,KAAK71E,GAAG,IAAMm9T,GAChEniU,EAAK0sV,gBAAgBjG,YAAczmV,EAAK0sV,gBAAgB/zQ,OAExD34E,EAAK0sV,gBAAgBjG,YAAczmV,EAAKmtV,YAAYx9T,EAAKs9T,aAAasE,IAE1EvxV,EAAK0sV,gBAAgB1gS,MAAMhsD,EAAK0sV,gBAAgBjG,YAAapkR,KAZxDkvR,GAAcvuT,GACfhjC,EAAK0sV,gBAAgB7xQ,KAAO76E,EAAK0sV,gBAAgBjG,YACjDzmV,EAAK0sV,gBAAgB7C,WAAWxnR,IAEhCriE,EAAK0sV,gBAAgB5C,SAASznR,GAUtCriE,EAAK0sV,gBAAgBp2S,SACrBt2C,EAAK2sV,YAAY3pT,MAGjBn5B,GAAO+Y,EAAKK,OAASpZ,GAAO+Y,EAAKa,UAChB,SAAbkM,EAAKx1B,MAAmB6F,EAAKksE,wBAC7BlsE,EAAKS,MAAMypV,GAAaxvV,EAAEsF,EAAK+sV,MAAM7+T,KAAK,WAC1CluB,EAAKsvL,WAAWm3J,YAAc/rV,EAAEsF,EAAK+sV,MAAM,IAC3C/sV,EAAKmC,QAAQ8yC,IACNj1C,EAAK0sV,gBACZ1sV,EAAK0sV,gBAAgBp2S,SAErBt2C,EAAK86E,OAAOpgF,EAAEsF,EAAK+sV,MAAM,GAAG7qS,aAEhCovS,GAAU,GACHznV,GAAO+Y,EAAKc,QACnB4tU,GAAU,EACVtxV,EAAKquV,kBACExkV,GAAO+Y,EAAKe,WACnB2tU,GAAU,EACVtxV,EAAKsuV,qBAGL7tV,GAAS4uB,KACJA,GACDM,EAAK4H,QAAQyL,EAAcviC,GAK1B8uV,GAAUvsT,EAFfv0B,EAAM6gV,GAAW7gV,EAAIS,cAAeT,EAAIQ,WAAYR,EAAIM,WAEtBmC,KAC9B8xB,EAAe6pT,GAAc7pT,EAAc9jC,EAAQuP,IAAKvP,EAAQgS,MAG/DlR,EAAKkxV,eAAeluT,EAAcviC,KACnCuiC,EAAehjC,EAAK2xV,iBAAiB3uT,EAAcviC,IAGnDT,EAAKksE,uBACAlsE,EAAKgxV,YAAYhuT,IAIlBhjC,EAAKk9I,SAAWl6G,EAChBhjC,EAAK2sV,YAAY3pT,IAJjBhjC,EAAKi2C,SAASjT,GAQlBhjC,EAAK2uF,OAAO3rD,KASxB,OAJIsuT,GACA50V,EAAEwE,iBAGClB,EAAKk9I,QAChB,EAEA00M,wBAAyB,SAAS15U,EAAO8qB,GACrC,IACI4tT,EACAD,EAFA3wV,EAAOjI,KAIX,IAAKiI,EAAKgxV,YAAYhuT,GAYlB,OAXAhjC,EAAK4sV,aAAe,GAGpB+D,EAAiBE,GADjBD,EAAW5wV,EAAKsvL,WAAWm3J,YAAcyD,GAAalqV,EAAKsvL,WAAWm3J,YAAYv4T,KAAK,SAAW8U,EACnD,IAAIt8B,MAAMs8B,IAEzD8tT,GAAe9wV,EAAK4sV,aAAc+D,EAAgBC,EAAU5wV,EAAKd,QAAQ8sV,cAEzEhsV,EAAKi2C,SAASjT,GACdhjC,EAAKk9I,SAAWl6G,EAChBhjC,EAAKsvL,WAAWm3J,YAAczmV,EAAKsvL,WAAWm3J,aAAezmV,EAAKmtV,YAAYntV,EAAK8xD,MAAMm7R,aAAajqT,GAAeuoT,QACrHvrV,EAAKmC,QAAQ8yC,GAGjBj1C,EAAKsvL,WAAWpwL,QAAQooB,OAAStnB,EAAK2E,QAAQupB,KAAK,SAAS3uB,OAAS,IAAMyjC,GAAgBhjC,EAAKk9I,SAAW,gCAAkCquM,EAAoB,gCAAkCA,EACnMvrV,EAAK2sV,YAAY3pT,GACjBhjC,EAAKk9I,SAAWl6G,EAEhBhjC,EAAKwwV,gBAAgBxwV,EAAKmtV,YAAYntV,EAAK8xD,MAAMm7R,aAAajqT,GAAeuoT,GAAoBvoT,GAEjGhjC,EAAKmC,QAAQ8yC,GAEbj1C,EAAKsvL,WAAWpwL,QAAQooB,OAAS,gCAAkCikU,CACvE,EAEAkG,yBAA0B,SAASv5U,GAC/B,IAAIlY,EAAOjI,KAEXmgB,EAAMw+D,cAAgB12E,EAAK+sV,MAAM,GACjC/sV,EAAKsvL,WAAWm3J,YAAc/rV,EAAEsF,EAAK+sV,MAAM,IAEvCryV,EAAEsF,EAAK+sV,MAAM,IAAIjoV,SAASs+S,GAC1BpjT,EAAKsvL,WAAWk4J,UAAU9sV,EAAEsF,EAAK+sV,MAAM,KAGvC/sV,EAAKsvL,WAAW7uL,MAAM/F,EAAEsF,EAAK+sV,MAAM,KAEvC/sV,EAAKsvL,WAAWntL,QAAQ8yC,EAAQ,CAAE/8B,MAAOA,GAC7C,EAEAy5U,iBAAkB,SAAS3uT,EAAcviC,GACrC,IAAIT,EAAOjI,KACXo4B,GAAW,EACXR,EAAO3vB,EAAK8xD,MACZrjD,EAAMzO,EAAKd,QAAQuP,IACnByC,EAAMlR,EAAKd,QAAQgS,IACnBkgV,EAAapxV,EAAKd,QAAQ8sV,aAC1B8F,EAAkB,IAAIprV,KAAKs8B,EAAahiC,WAIxC,IAFA2uB,EAAK4H,QAAQu6T,GAAkBrxV,GAExB0vB,GAAU,CAGb,GAFAR,EAAK4H,QAAQyL,EAAcviC,IAEtB8uV,GAAUvsT,EAAcv0B,EAAKyC,GAAM,CACpC8xB,EAAe8uT,EACf,KACJ,CACA3hU,EAAWihU,EAAWpuT,EAC1B,CACA,OAAOA,CACX,EAEAgsT,SAAU,SAAS9vV,GACf,IAAIc,EAAOjI,KACP+b,EAAO5U,EAAQ4U,KACfuiB,EAAKn3B,EAAQm3B,GACbm+K,EAASx0M,EAAKunN,QACdsnI,EAAc7uV,EAAK4D,QAAQ0pC,SAAS,oBAEnCx5B,EAGMA,EAAKpP,SAASyB,KAAK,cAC1B2N,EAAKqd,IAAIjN,GACTpQ,EAAKpP,SAAS0b,WAAU,GAAM,GAAMhc,SACpC0P,EAAK1P,SAELyqV,EAAY38S,OAAO7b,GACnBr2B,EAAKusV,WAAW/3I,KACR1gM,EAAK9O,GAAG,cAA0C,IAA3BhF,EAAKd,QAAQmrF,WAAuBnrF,EAAQ1E,SAC3E67B,EAAG42R,YAAYn5S,GACfA,EAAKqd,IAAIjN,GAAI9f,SAEbpE,EAAKusV,WAAW/3I,IAEhBx0M,EAAKd,EAAQqrC,SAAW,YAAc,eAAez2B,EAAMuiB,EAAIn3B,EAAQ0vV,SAfvEC,EAAY38S,OAAO7b,GACnBr2B,EAAKmuV,WAAW93T,GAgBxB,EAEA07T,YAAa,SAASj+U,EAAMuiB,EAAIu4T,GAC5B,IAAI5uV,EAAOjI,KACPy8M,EAASx0M,EAAKunN,QACd98K,EAAazqC,EAAKd,QAAQmrF,UAAU5/C,WACpCtrB,EAAUsrB,EAAWtrB,QACrB6yU,EAAY9tV,EAAW4P,GACvBg9B,EAAU5sC,EAAW4P,GAAM,GAAQk+U,EAEnC7yU,IAAsC,GAA3BA,EAAQzR,QAAQu9U,KAC3Bn3U,EAAKvO,IAAI8wB,GAAIryB,IAAI,CAAEF,MAAOkuV,IAE1Bl+U,EAAK4Q,KAAK,UAEV1kB,EAAKusV,WAAW/3I,EAAQ1gM,GAExBA,EAAKpP,SACJV,IAAI,CACDqB,SAAU,WACVvB,MAAoB,EAAZkuV,EAAkB,EAAIlhT,EAC9B1rC,QAAS,OACT,cAAewpV,EAAS,GAAMoD,EAAYlhT,IAG9Cza,EAAGu4T,EAAS,cAAgB,gBAAgB96U,GAE5ChZ,EAAO2vC,EAAY,CACftrB,QAAS8rU,EAAQ,KAAO2D,EAAS,QAjrCtC,QAkrCKtvU,SAAU,WACNxL,EAAKqd,IAAIjN,GAAI9f,SACbpE,EAAK2uV,UAAY,KAEjBt4T,EAAGo+O,SAEHz0Q,EAAKusV,WAAW/3I,EAEpB,IAGJ1gM,EAAKpP,SAAS0b,WAAU,GAAM,GAAMI,aAAaiqB,GAEzD,EAEAwnT,UAAW,SAASn+U,EAAMuiB,GACtB,IAIIgsC,EAAMh9D,EAJNrF,EAAOjI,KACPwyC,EAAWvqC,EAAKd,QAAQmrF,UAAU9/C,SAClCprB,EAAUorB,EAASprB,QACnBq1L,EAASx0M,EAAKunN,QAGdpoM,IAAuC,GAA5BA,EAAQzR,QAAQ,UAC3B2oB,EAAGg0C,aAAav2D,GAEhBA,EAAK9P,IAAI,CACLqB,SAAU,WACVvB,MAAOuyB,EAAGvyB,UAGV4mV,IAGArlV,GADAA,GADAg9D,EAAOriE,EAAKmtV,YAAYntV,EAAK8xD,MAAMm7R,aAAajtV,EAAKk9I,YACrC73I,YACKkf,KAAOhT,SAAS8wD,EAAKv+D,QAAU,EAAG,IAA5C,OAAiEuB,EAAS4X,IAAM1L,SAAS8wD,EAAKt+D,SAAW,EAAG,KAAM,KAC7HsyB,EAAGryB,IAAI0mV,EAAkBrlV,IAG7ByO,EAAKsM,WAAU,GAAM,GAAMI,aAAa,CACpCrB,QAAS,UACTE,SAAU,IACVC,SAAU,WACNxL,EAAKqd,IAAIjN,GAAI9f,SACbpE,EAAK2uV,UAAY,KAEjB3uV,EAAKusV,WAAW/3I,EACpB,IAGJn+K,EAAGjW,WAAU,GAAM,GAAMI,aAAa+pB,GAE9C,EAEA4iT,YAAa,SAAS1sV,EAAO2d,GACzB,OAAOrmB,KAAKm2V,OAAOhgU,KAAK9P,GAAsB,WAAagtU,EAAa,KACvE9jU,QAAO,WACJ,OAAO5sB,EAAE3C,KAAKmqD,YAAYvmC,KAAKjjB,EAAMijB,KAAKqrD,MAAYvmE,CAC1D,GACJ,EAEAyuV,YAAa,SAASvgV,GAClB,IAAI3O,EAAOjI,KACPsqE,EAAOriE,EAAKkyV,cACZzxV,EAAQT,EAAK8xD,MAAMm7R,aAAat+U,GAE5B0zD,GAAQA,EAAK,KACbA,EAAK,GAAGniC,gBAAgBooS,GACxBjmQ,EAAKv9C,YAAYs+R,IAGrB/gP,EAAOriE,EAAKmtV,YAAY1sV,EAAO6qV,GAE/BtrV,EAAKkyV,cAAgB7vR,EACrBA,EAAKjlD,SAASgmS,GACTznS,KAAK2sT,GAAe,EACjC,EAEAqkB,YAAa,SAASh+U,GAClB,IAAI3O,EAAOjI,KACPqwB,EAAK1vB,EAAMwvB,OACXm6C,EAAOriE,EAAK+sV,MACZtsV,EAAQT,EAAK8xD,MAAMm7R,aAAat+U,GAE5B0zD,GAAQA,EAAK,KACbA,EAAKv9C,YAAYq9S,GACjB9/P,EAAK,GAAGniC,gBAAgBzhC,GACxB4jE,EAAK,GAAGniC,gBAAgBwxK,IAG5BrvI,EAAOriE,EAAKmtV,YAAY1sV,EAAOT,EAAKksE,uBAAyBo/Q,EAAe,WAAaF,EAAa,KAEtGprV,EAAK+sV,MAAQ1qR,EAEbA,EAAK1mD,KAAK+1L,EAAItpL,GACThL,SAAS+kT,GAEVniU,EAAKkuV,OAAO,KACZluV,EAAKkuV,OAAO,GAAGhuT,gBAAgB,yBAC/BlgC,EAAKkuV,OAAOvyU,KAAK,wBAAyByM,GAEtD,EAEA+lU,WAAY,SAAS92U,GACjBA,EACCuK,GAAG4pU,EAAezzV,KAAK+0V,gBACvBlrU,GAAG48M,EAAMzmO,KAAKq1V,kBACnB,EAEAtyQ,OAAQ,SAASuxJ,GACb,IAAIrsO,EAAOjI,KACXmH,EAAUc,EAAKd,QACf8jC,EAAe,IAAIt8B,MAAM1G,EAAKk9I,UAC9Bz8I,EAAQypV,GAAa79G,GAErB72N,EAAU/U,EAAO,GAEM,SAAnBT,EAAK8xD,MAAM33D,MAAmB6F,EAAKd,QAAQ8sV,aAAavrV,KACxDA,EAAQT,EAAKsuN,QAGjBtuN,EAAK8xD,MAAMv6B,QAAQyL,EAAcviC,GAEjCT,EAAKwuV,aAAa3B,GAAc7pT,EAAc9jC,EAAQuP,IAAKvP,EAAQgS,KACvE,EAEAy9E,OAAQ,SAASluF,GACb,IAAIT,EAAOjI,KAGgC,IAFpCiI,EAAK8xD,MAEH3K,QAAQ1mD,EAAOT,EAAKk9I,UACzBl9I,EAAKi2C,SAASx1C,IAEdT,EAAKk9I,SAAWz8I,EAChBT,EAAK2sV,YAAYlsV,GAEzB,EAEA8rV,WAAY,SAAS/3I,EAAQn9L,GACrBm9L,GACAz8M,KAAK+lC,MAAMzmB,EAEnB,EAEA60U,aAAc,WACV,IACItoV,EADO7L,KACQ6L,QACfirV,EAAcjrV,EAAQ0pC,SAAS,oBAE9BuhT,EAAY,KACbA,EAAcn0V,EAAE,yFAAyFuyT,YAAYrpT,EAAQsqB,KAAK49T,KAE1I,EAEA3lB,QAAS,SAASh+T,GACd,IAAInI,EAAOjI,KACXsgC,EAAQ60T,KACRtpV,EAAU5D,EAAK4D,QACf6tE,EAAS7tE,EAAQsqB,KAAK,sBAEtB,IAAK/lB,EAGD,OAFAnI,EAAK+wU,SAAQ,QACbt/P,EAAOhsE,OAINgsE,EAAO,KACRA,EAAS/2E,EAAE,yTAINuJ,SAASL,IAGlB5D,EAAKosV,OAAS36Q,EAAOjsE,OAChB0oB,KAAK,0BACLvS,KAAK,QAASjjB,EAAM8Q,SAAS6uB,EAAO,IAAKr4B,EAAKd,QAAQ0M,UAE3D6lE,EAAOvjD,KAAK,kBACP9lB,KAAKD,EAASkwB,IAEnBr4B,EAAK+wU,SACT,EAEA3K,QAAS,WACL,IAAIpmU,EAAOjI,KACX6L,EAAU5D,EAAK4D,QACfkqV,EAAgB9tV,EAAKd,QAAQ4uV,cAExBlqV,EAAQsqB,KAAK49T,IAAgB,IAC9BloV,EAAQwE,KAAK1P,EAAMyP,SAASnI,EAAKd,QAAQi/C,OAAOh2C,SAAnCzP,CAA6CgC,EAAEI,QAAO,EAAK,CAAC,EAAGkF,EAAKd,QAAS,CACtF2uV,WAAYn1V,EAAMijB,KAAK,UACvB5T,KAAMrP,EAAM8qC,iBAAiB,YAAa,OAAQxjC,EAAKd,QAAQ6I,MAC/DqP,MAAOpX,EAAKoX,YAIpBxT,EAAQsqB,KAAK4/T,GACRlsU,GAAGqqN,EAAQ,YAAc/nN,GAAI,WAAa,OAAO,CAAO,IAE7DlkB,EAAKiuV,OAASrqV,EAAQsqB,KAAK,IAAMx1B,EAAMijB,KAAK,UAAY,cAAciG,GAAGqqN,EAAQ,YAAc/nN,GAAI,WAC/FlkB,EAAKunN,SAAsC,IAA5BvnN,EAAKd,QAAQstV,WAC5BxsV,EAAKuuV,YACT,IACAvuV,EAAK0rV,GAAa9nV,EAAQsqB,KAAK,IAAMx1B,EAAMijB,KAAK,UAAY,YAAYiG,GAAGqqN,EAAQ,YAAc/nN,GAAI,WACjGlkB,EAAKunN,SAAsC,IAA5BvnN,EAAKd,QAAQstV,WAC5BxsV,EAAKquV,gBACT,IACAruV,EAAK2rV,GAAa/nV,EAAQsqB,KAAK,IAAMx1B,EAAMijB,KAAK,UAAY,YAAYiG,GAAGqqN,EAAQ,YAAc/nN,GAAI,WACjGlkB,EAAKunN,SAAsC,IAA5BvnN,EAAKd,QAAQstV,WAC5BxsV,EAAKsuV,kBACT,IACA1qV,EAAQsqB,KAAK,IAAMx1B,EAAMijB,KAAK,UAAY,aAAaiG,GAAGqqN,EAAQ,YAAc/nN,EAAIlkB,EAAKwxV,YAAYjwV,KAAKvB,GAE9G,EAEAy3C,UAAW,SAAS8lE,EAAO/yE,GACvB,IAAIxqC,EAAOjI,KACXsZ,EAAQrR,EAAK68J,OAAS,EACtB75H,EAAe,IAAIw1H,IAAMx4J,EAAKk9I,UAE1Bl9I,EAAKksE,yBAELlpC,EAAeknT,GADYlqV,EAAKkuV,OAAOhgU,KAAK,WAAak9T,EAAa,UAAYC,EAAY,KAAKtuL,IAAI,WAAW96J,QACjEisB,KAAK,SACtDluB,EAAKk9I,SAAW,IAAIx2I,MAAMs8B,KAG9Bu6E,EAAQv9G,EAAKu9G,IAEFz4G,SAASy6S,KACZluS,EAAQ,EACR2xB,EAAavtB,YAAYutB,EAAa9zB,cAAgB,IAAMs7B,GAE5D78B,GAAS6iB,MAAMnf,GAAOkmB,QAAQyL,EAAcwH,GAGhDxqC,EAAKi2C,SAASjT,GACdhjC,EAAK2vV,oBAEb,EAEAvB,QAAS,SAASnhU,EAAQxsB,GACtB,IAGI0xV,EAHAnyV,EAAOjI,KACPmH,EAAUc,EAAKd,QACf8jC,EAAehjC,EAAKsuN,QAAUtuN,EAAKk9I,SAGvC,GAAIz8I,IAAU9F,EACV,OAAOuE,EAAQ+tB,IAGnBxsB,EAAQ0sB,EAAM1sB,EAAOvB,EAAQ8J,OAAQ9J,EAAQ0M,YAM7C1M,EAAQ+tB,GAAU,IAAIurI,IAAM/3J,KAGxB0xV,EAr7CF,QAo7CEllU,EACWxsB,EAAQuiC,EAERA,EAAeviC,IA0vBtC,SAAsB2xV,EAAQC,GAC1B,GAAID,EACA,OAAOA,EAAOljV,gBAAkBmjV,EAAOnjV,eACnCkjV,EAAOnjV,aAAeojV,EAAOpjV,WAGrC,OAAO,CACX,CA9vBwBqjV,CAAatvT,EAAcviC,MACnC0xV,IACAnyV,EAAKsuN,OAAS,MAElBtuN,EAAK8uV,aAAc,GAGlB9uV,EAAK8uV,cACN9uV,EAAK8uV,eAAiB5vV,EAAQ1B,MAAMkhD,UAAWx/C,EAAQ1B,MAAMmnD,QAGjE3kD,EAAKi2C,SAASj2C,EAAKsuN,QAEnBtuN,EAAK+wU,UACT,EAEAA,QAAS,SAASjwT,GACd,IAAI9gB,EAAOjI,KACPmH,EAAUc,EAAKd,QACfqzV,EAAkBvyV,EAAKd,QAAQ8sV,aAAakB,MAC5C7gH,EAAOrsO,EAAKosV,OACZoG,EAAaxyV,EAAKyyV,cAElB3xU,IAAWnmB,IACXmmB,EAASyuU,GAAUrC,KAAYhuV,EAAQuP,IAAKvP,EAAQgS,MAGpDm7N,IACAA,EAAKl7M,IAAI86M,GAELnrN,IAAWyxU,EACXlmH,EAAKjvN,SAASo1U,GACb1tU,YAAYy6R,GACZ39R,GAAGqqN,EAAOjsO,EAAKwxV,YAAYjwV,KAAKvB,IAEjCqsO,EAAKvnN,YAAY0tU,GAChBp1U,SAASmiS,GACT39R,GAAGqqN,EAAOqlH,IAGvB,EAEAmB,YAAa,WACT,MAx9CI,sBAy9CR,EAEAjB,YAAa,SAAS90V,GAClB,IAAIsD,EAAOjI,KACXmkK,EAAQ1rI,GAAMxwB,EAAKd,QAAQg9J,OAC3B/rI,EAAWnwB,EAAKd,QAAQ8sV,aACxB3zT,EAAQ60T,KAERxwV,EAAEwE,iBAEEivB,EAASkI,KAIoC,IAA7Cr4B,EAAK8xD,MAAM3K,QAAQnnD,EAAKk9I,SAAU7kH,IAAgBr4B,EAAK68J,QAAUX,IACjEl8J,EAAK8uV,aAAc,GAGnB9uV,EAAKksE,yBACLlsE,EAAK4sV,aAAe,CAACv0T,GACrBr4B,EAAKsvL,WAAWm3J,YAAc,MAGlCzmV,EAAKsuN,OAASj2L,EACdr4B,EAAKi2C,SAAS5d,EAAO6jI,GAErBl8J,EAAKmC,QAAQ8yC,GACjB,EAEAm0Q,WAAY,WACR,IAAIppT,EAAOjI,KACPmH,EAAUc,EAAKd,QACfuyE,EAASvyE,EAAQuyE,OACjBj0E,EAAQ0B,EAAQ1B,MAChBkhD,EAAUlhD,EAAMkhD,QAChBhkB,EAAal9B,EAAMk9B,WACnBiqB,EAAQnnD,EAAMmnD,MACd+/Q,EAAkBv+T,GAAS,GAAGzN,EAAM8Q,SAASrD,EAAK,IAAIjH,EAAQ0M,WAElE5L,EAAKxC,MAAQ,CACTkhD,QAAUv4C,GAAS,cAAcA,EAAK+W,+DAA+D/W,EAAK4oO,yBAAyB5oO,EAAK4gB,QAAQruB,EAAMijB,KAAKqrD,OAAW7gE,EAAKykV,sBAAsBzkV,EAAK+vC,UAAUw8S,GAAgBh0S,EAASv4C,IAASA,EAAK1F,oBACvPkkD,MAAQx+C,GAAS,uBAAuBusV,GAAgB/tS,EAAOx+C,IAAS,gBACxEu0B,WAAav0B,GAAS,mCAAmCusV,GAAgBh4T,EAAYv0B,IAASA,EAAKu0B,mBAGvG16B,EAAK+U,KAAO,CACR2pC,QAASv2C,GAAUhC,GAAS,cAAcA,EAAK+W,mFAAmF/W,EAAK+d,YAAY/d,EAAKykV,2BAA2BzkV,EAAKkmB,UAAUlmB,EAAK1F,uBAGvMgxE,IAAqB,IAAXA,IACVizP,EAAiBjzP,GAGrBzxE,EAAKyxE,QAAoB,IAAXA,EAAmBtpE,EAASu8T,EAAgB,CAAEz8T,cAAc,IAAW,IACzF,EAEA0qV,YAAa,SAAS9qK,EAAcl5K,GAChC,IAIIkqB,EAJA74B,EAAOjI,KACPsqE,EAAOriE,EAAK+sV,MACZ6F,EAAY5yV,EAAK2vB,OAAOijU,YACxB7mV,EAAU4C,GAAQ3O,EAAK+L,UAa3B,OATI8sB,EADc,UAAd+5T,EACOl6V,EAAM8Q,SAASuC,EAAS,QACV,SAAd6mV,EACAl6V,EAAM8Q,SAASuC,EAAS,KAExBs2D,EAAKxpC,OAGhBwpC,EAAK1mD,KAAK,aAAcksK,EAAa,CAAE97K,QAASA,EAAS6mV,UAAWA,EAAW/5T,KAAMA,KAE9EwpC,EAAK1mD,KAAK,KACrB,IAGJ2G,EAAG2M,OAAO88T,IAEV,IAAIp+U,GAAW,CACX8pB,gBAAiB,SAAS9oB,GACtB,OAAO2gV,GACH3gV,EAAKO,cACLP,EAAKM,WACL,EAER,EAEA4jV,gBAAiB,SAASlkV,EAAMmkV,GAG5B,IAAIvlV,GAFJulV,EAAeA,GAAgBp6V,EAAMkT,UAAU+B,UAEnBJ,SAC5BslV,EAAkB,IAAIr6L,GAAK7pJ,EAAKO,cAAeP,EAAKM,WAAY,EAAGN,EAAKQ,WAAYR,EAAKS,aAAcT,EAAKU,aAAcV,EAAKW,mBAG/H,IAFAujV,EAAgBp9U,YAAY9G,EAAKO,eAE1B2jV,EAAgB7jV,UAAYzB,GAC/BI,GAASuqB,QAAQ26T,GAAiB,OAGtC,OAAOA,CACX,EAEA36T,QAAS,SAASvpB,EAAMinB,GACpB,IAAIm9T,EAAiBpkV,EAAKY,oBAC1ByjV,EAAa,IAAIx6L,GAAK7pJ,EAAK3N,UAAY40B,GACvCq9T,EAAeD,EAAWzjV,oBAAsBwjV,EAEhDpkV,EAAKupB,QAAQ86T,EAAWhyV,UAvjDZ,IAujDwBiyV,EACxC,EACAziU,MAAO,CAAC,CACJr2B,KAAMwB,EACNu6C,MAAO,SAASvnC,EAAMF,EAAKyC,EAAKtF,GAC5B,OAAOsnV,GAAgBtnV,GAASiB,OAAOH,MAAMiC,EAAKM,YAAc,IAAMN,EAAKO,aAC/E,EACAwvC,QAAS,SAASx/C,GACd,IAAIc,EAAOjI,KACP4J,EAAM,EACN8M,EAAMvP,EAAQuP,IACdyC,EAAMhS,EAAQgS,IACdvC,EAAOzP,EAAQyP,KACf6oK,EAAQt4K,EAAQs4K,MAChBxuK,EAAS9J,EAAQ8J,OACjB4C,EAAU1M,EAAQ0M,QAClBunV,EAAcj0V,EAAQ6nB,IACtBqsU,EAAal0V,EAAQk0V,WACrB5F,EAAqBtuV,EAAQsuV,mBAC7BuB,EAAsB7vV,EAAQ6vV,oBAC9BsE,EAASF,GAAe37K,EAAM,GAC9B87K,EAAkBJ,GAAgBtnV,GAClC2nV,EAAcD,EAAgB/lV,SAC9Bd,EAAO6mV,EAAgB7mV,KACvBC,EAAQ8mV,GAAW/mV,EAAKC,MAAO6mV,GAC/BE,EAAaD,GAAW/mV,EAAKG,WAAY2mV,GACzC1lV,EAAQF,GAASklV,gBAAgBlkV,EAAM2kV,GACvC77T,EAAkBz3B,EAAKiC,MAAM0M,GAC7ByrB,EAAiBp6B,EAAKq6B,KAAK1rB,GAC3Bs+U,EAAejtV,EAAKitV,aACpB50T,EAAQ60T,KAER9kV,EAAO,0CADUlJ,EAAQ27U,eAC2C,iCAAmCoS,EAAap/U,GAAS,KAYjI,IAVIulV,IACAhrV,GAAQ,sDAAwDrQ,KAAKm+C,MAAMvnC,EAAMF,EAAKyC,EAAKtF,GAAW,cAG1GxD,GAAQ,wEAEJ2mV,IACA3mV,GAAQ,+CAAiD0+D,EAAO5nE,EAAQyjB,SAAS8qU,kBAAoB,SAGlG9rV,EAAM,EAAGA,IACZyG,GAAQ,qDAAuDsE,EAAM/K,GAAO,KAAO8xV,EAAW9xV,GAAO,QAMzG,OAHA6T,EAAU6iB,EAAO,GACjBA,GAASA,EAEF1I,GAAK,CACRyyC,MAAO,GACPsxR,OAAQ,EACRtrV,KAAMA,GAAQ,qFACdyF,MAAOyhV,GAAWzhV,EAAMqB,cAAerB,EAAMoB,WAAYpB,EAAMkB,WAC/DggV,oBAAqBA,EACrBr0T,WAAYx7B,EAAQw7B,WACpBjsB,IAAK6gV,GAAW7gV,EAAIS,cAAeT,EAAIQ,WAAYR,EAAIM,WACvDmC,IAAKo+U,GAAWp+U,EAAIhC,cAAegC,EAAIjC,WAAYiC,EAAInC,WACvDy+U,mBAAoBA,EACpB9uS,QAASx/C,EAAQw/C,QACjBtkB,eAAgBA,EAChBuqB,MAAOzlD,EAAQylD,MACfl9B,OAAQznB,EAAKu3B,QACby0T,aAAc9sV,EAAQ8sV,aACtB2H,MAAO,SAAShlV,EAAMhN,EAAKqqV,GACvB,IAAI9uU,EAAW,CAAE,iBACblI,EAAMrG,EAAKK,SACX+/N,EAAY,GACZhoN,EAAM,IAuBV,OArBIpY,EAAO8oB,GAAmB9oB,EAAOyrB,IACjCld,EAASxjB,KAAK0xV,GAGdY,EAAar9U,IACbuO,EAASxjB,KAAK6lT,IAGb5wS,IAAS0pB,GACVnb,EAASxjB,KAAK,WAGN,IAARsb,GAAqB,IAARA,GACbkI,EAASxjB,KAAK,aAGd25V,GAqfxB,SAAiB1kV,EAAM6oK,GACnB,IAAK,IAAIl4K,EAAI,EAAGC,EAASi4K,EAAMj4K,OAAQD,EAAIC,EAAQD,IAC/C,GAAIqP,KAAU6oK,EAAMl4K,GAChB,OAAO,EAGf,OAAO,CACX,CA5fkCkuB,EAAS7e,EAAM6oK,KACzBzwJ,EAAMosU,EAAY34V,QAAQ,MAAO9B,EAAM8Q,SAASmF,EAAM3F,EAAQ4C,IAC9DmjO,EAAY,kBAGT,CACHpgO,KAAMA,EACN6oK,MAAOA,EACPtzJ,GAAIxrB,EAAMwrB,GACVgyB,MAAOx9C,EAAM8Q,SAASmF,EAAM,IAAK/C,GACjCnL,MAAOkO,EAAKI,UACZ67U,WAAYqC,EAAat+U,GACzBuO,SAAUA,EAASta,KAAK,KACxBmsO,UAAWA,EACXhoN,IAAKA,EAEb,EACA6sU,gBAAiB,SAASjlV,GACtB,MAAO,CACH+rB,WAAYH,EAAW5rB,EAAMjW,EAAMkT,UAAU+B,SAASJ,UACtDirB,YAAa7pB,EAErB,GAER,EACA1M,MAAO,SAAS0M,GACZ,OAAOhB,GAAS8pB,gBAAgB9oB,EACpC,EACA0rB,KAAM,SAAS1rB,GACX,IAAI0rB,EAAOi1T,GAAW3gV,EAAKO,cAAeP,EAAKM,WAAa,EAAG,GAC/DhN,EAAQ0L,GAAS8pB,gBAAgB9oB,GACjC2rB,EAAal/B,KAAKoU,IAAI6qB,EAAK9qB,oBAAsBtN,EAAMsN,qBAMvD,OAJI+qB,GACAD,EAAK9kB,SAAStT,EAAMkN,WAAcmrB,EAAa,IAG5CD,CACX,EACA8sB,QAAS,SAAS0sS,EAAOC,GACrB,IACAC,EAASF,EAAM5kV,WACf+kV,EAAQH,EAAM3kV,cACd+kV,EAASH,EAAM7kV,WACfilV,EAAQJ,EAAM5kV,cAUd,OARI8kV,EAAQE,EACC,EACFF,EAAQE,GACL,EAEDH,GAAUE,EAAS,EAAIF,EAASE,EAAS,GAAK,CAI/D,EACA18T,QAAS,SAAS5oB,EAAMlO,GACpB,IAAIwU,EAAQtG,EAAKQ,WACb1O,aAAiB+3J,GACjB7pJ,EAAK8G,YAAYhV,EAAMyO,cAAezO,EAAMwO,WAAYxO,EAAMsO,WAE9DpB,GAASuqB,QAAQvpB,EAAMlO,EAAQ22B,GAEnC5hB,EAAU7G,EAAMsG,EACpB,EACAg4U,aAAc,SAASt+U,GACnB,OAAOA,EAAKO,cAAgB,IAAMP,EAAKM,WAAa,IAAMN,EAAKI,SACnE,EACA6jV,UAAW,WACP,MAAO,MACX,GAEJ,CACIz4V,KAAM,OACN+7C,MAAO,SAASvnC,GACZ,OAAOA,EAAKO,aAChB,EACAwvC,QAAS,SAASx/C,GACd,IAAIi1V,EAAiBjB,GAAgBh0V,EAAQ0M,SAASiB,OAClDF,EAAYwnV,EAAexnV,UAC3BynV,EAAYD,EAAeznV,MAC3BugV,EAAel1V,KAAKk1V,aACpBx+U,EAAMvP,EAAQuP,IACdyC,EAAMhS,EAAQgS,IACd9I,EAAO,GAWX,OATIlJ,EAAQk0V,aACRhrV,GAAQ,4EACJA,GAAQ,qDACJA,GAAQrQ,KAAKm+C,MAAMh3C,EAAQyP,MAC/BvG,GAAQ,aACRA,GAAQ,mCACJA,GAAQ,yCAGbunB,GAAK,CACRlhB,IAAK6gV,GAAW7gV,EAAIS,cAAeT,EAAIQ,WAAY,GACnDiC,IAAKo+U,GAAWp+U,EAAIhC,cAAegC,EAAIjC,WAAY,GACnDpB,MAAOyhV,GAAWpwV,EAAQyP,KAAKO,cAAe,EAAG,GACjD9G,KAAMA,EACNqf,OAAQ1vB,KAAKw/B,QACbmnB,QAASx/C,EAAQw/C,QACjBi1S,MAAO,SAAShlV,GAGZ,MAAO,CACHlO,MAAOkM,EAAUgC,EAAKM,YACtBod,MAAO+nU,EAAUzlV,EAAKM,YACtBiV,GAAIxrB,EAAMwrB,GACV0mU,WAAYqC,EAAat+U,GACzBuO,SAPW,CAAE,iBAOMta,KAAK,KAEhC,GAER,EACAX,MAAO,SAAS0M,GACZ,OAAO2gV,GAAW3gV,EAAKO,cAAe,EAAGP,EAAKI,UAClD,EACAsrB,KAAM,SAAS1rB,GACX,OAAO2gV,GAAW3gV,EAAKO,cAAe,GAAIP,EAAKI,UACnD,EACAo4C,QAAS,SAAS0sS,EAAOC,GACrB,OAAO3sS,GAAQ0sS,EAAOC,EAC1B,EACAv8T,QAAS,SAAS5oB,EAAMlO,GACpB,IAAIjD,EACJyX,EAAQtG,EAAKQ,WAET1O,aAAiB+3J,IACjBh7J,EAAQiD,EAAMwO,WAEdN,EAAK8G,YAAYhV,EAAMyO,cAAe1R,EAAOmR,EAAKI,WAE9CvR,IAAUmR,EAAKM,YACfN,EAAK4oB,QAAQ,KAGjB/5B,EAAQmR,EAAKM,WAAaxO,EAE1BkO,EAAK0lV,SAAS72V,GAEVA,EAAQ,KACRA,GAAS,IAGTA,EAAQ,GAAKmR,EAAKM,YAAczR,GAChCmR,EAAK4oB,QAAQ,IAIrB/hB,EAAU7G,EAAMsG,EACpB,EACAg4U,aAAc,SAASt+U,GACnB,OAAOA,EAAKO,cAAgB,IAAMP,EAAKM,WAAa,IACxD,EACA2jV,UAAW,WACP,MAAO,OACX,GAEJ,CACIz4V,KAAM,SACN+7C,MAAO,SAASvnC,EAAMF,EAAKyC,GACvB,OAAOglC,GAAMvnC,EAAMF,EAAKyC,EAAK,GACjC,EACAwtC,QAAS,SAASx/C,GACd,IAAI6V,EAAO7V,EAAQyP,KAAKO,cACxB+9U,EAAel1V,KAAKk1V,aACpB7kV,EAAO,GAWP,OATIlJ,EAAQk0V,aACRhrV,GAAQ,4EACJA,GAAQ,kCACJA,GAAQrQ,KAAKm+C,MAAMh3C,EAAQyP,KAAMzP,EAAQuP,IAAKvP,EAAQgS,KAC1D9I,GAAQ,aACRA,GAAQ,mCACJA,GAAQ,yCAGbunB,GAAK,CACR9hB,MAAOyhV,GAAWv6U,EAAOA,EAAO,GAAI,EAAG,GACvCtG,IAAK6gV,GAAWpwV,EAAQuP,IAAIS,cAAe,EAAG,GAC9CgC,IAAKo+U,GAAWpwV,EAAQgS,IAAIhC,cAAe,EAAG,GAC9Cs+U,mBAAoBtuV,EAAQsuV,mBAC5BplV,KAAMA,EACNqf,OAAQ1vB,KAAKw/B,QACbo8T,MAAO,SAAShlV,EAAMhN,GAClB,IAAIub,EAAW,CAAE,iBAMjB,OAJY,KAARvb,GAAsB,KAARA,GACdub,EAASxjB,KAAK2xV,GAGX,CACH5qV,MAAOkO,EAAKO,cACZgV,GAAIxrB,EAAMwrB,GACV0mU,WAAYqC,EAAat+U,GACzBuO,SAAUA,EAASta,KAAK,KAEhC,GAER,EACAX,MAAO,SAAS0M,GACZ,IAAIoG,EAAOpG,EAAKO,cAChB,OAAOogV,GAAWv6U,EAAOA,EAAO,GAAIpG,EAAKM,WAAYN,EAAKI,UAC9D,EACAsrB,KAAM,SAAS1rB,GACX,IAAIoG,EAAOpG,EAAKO,cAChB,OAAOogV,GAAWv6U,EAAOA,EAAO,GAAK,EAAGpG,EAAKM,WAAYN,EAAKI,UAClE,EACAo4C,QAAS,SAAS0sS,EAAOC,GACrB,OAAO3sS,GAAQ0sS,EAAOC,EAAO,GACjC,EACAv8T,QAAS,SAAS5oB,EAAMlO,GACpB82B,GAAQ5oB,EAAMlO,EAAO,EACzB,EACAwsV,aAAc,SAASt+U,GACnB,OAAOA,EAAKO,cAAgB,MAChC,EACA0jV,UAAW,WACP,MAAO,MACX,GAEJ,CACIz4V,KAAM+wV,EACNh1S,MAAO,SAASvnC,EAAMF,EAAKyC,GACvB,OAAOglC,GAAMvnC,EAAMF,EAAKyC,EAAK,IACjC,EACAwtC,QAAS,SAASx/C,GACd,IAAI6V,EAAO7V,EAAQyP,KAAKO,cACxBT,EAAMvP,EAAQuP,IAAIS,cAClBgC,EAAMhS,EAAQgS,IAAIhC,cAClB+9U,EAAel1V,KAAKk1V,aACpBqH,EAAU7lV,EACV8lV,EAAUrjV,EACV9I,EAAO,GAkBP,OAfAmsV,GAAoBA,EAAU,KAD9BD,GAAoBA,EAAU,IAGN,KACpBC,EAAUD,EAAU,GAGpBp1V,EAAQk0V,aACRhrV,GAAQ,4EACJA,GAAQ,qDACJA,GAAQrQ,KAAKm+C,MAAMh3C,EAAQyP,KAAMzP,EAAQuP,IAAKvP,EAAQgS,KAC1D9I,GAAQ,aACRA,GAAQ,mCACJA,GAAQ,yCAGbunB,GAAK,CACR9hB,MAAOyhV,GAAWv6U,EAAOA,EAAO,IAAK,EAAG,GACxCtG,IAAK6gV,GAAWgF,EAAS,EAAG,GAC5BpjV,IAAKo+U,GAAWiF,EAAS,EAAG,GAC5B/G,mBAAoBtuV,EAAQsuV,mBAC5BplV,KAAMA,EACNqf,OAAQ1vB,KAAKw/B,QACbo8T,MAAO,SAAShlV,EAAMhN,GAClB,IAAIub,EAAW,CAAE,iBACbrP,EAAQc,EAAKO,cACbxL,EAAMmK,EAAQ,EAclB,OAZY,KAARlM,GAAsB,KAARA,GACdub,EAASxjB,KAAK2xV,GAGdx9U,EAAQY,IACRZ,EAAQY,GAGR/K,EAAMwN,IACNxN,EAAMwN,GAGH,CACHgT,GAAIxrB,EAAMwrB,GACVzjB,MAAsC,SAA/BvB,EAAQquV,mBAAgC,GAAG1/U,OAAWnK,IAAQmK,EACrE+8U,WAAYqC,EAAat+U,GACzBuO,SAAUA,EAASta,KAAK,KAEhC,GAER,EACAX,MAAO,SAAS0M,GACZ,IAAIoG,EAAOpG,EAAKO,cAChB,OAAOogV,GAAWv6U,EAAOA,EAAO,IAAKpG,EAAKM,WAAYN,EAAKI,UAC/D,EACAsrB,KAAM,SAAS1rB,GACX,IAAIoG,EAAOpG,EAAKO,cAChB,OAAOogV,GAAWv6U,EAAOA,EAAO,IAAM,GAAIpG,EAAKM,WAAYN,EAAKI,UACpE,EACAo4C,QAAS,SAAS0sS,EAAOC,GACrB,OAAO3sS,GAAQ0sS,EAAOC,EAAO,IACjC,EACAv8T,QAAS,SAAS5oB,EAAMlO,GACpB82B,GAAQ5oB,EAAMlO,EAAO,GACzB,EACAwsV,aAAc,SAASt+U,GACnB,IAAIoG,EAAOpG,EAAKO,cAChB,OAAQ6F,EAAOA,EAAO,GAAM,MAChC,EACA69U,UAAW,WACP,MAAO,QACX,KAIR,SAAS18S,GAAMvnC,EAAMF,EAAKyC,EAAKsjV,GAC3B,IAGI9wV,EAHAmK,EAAQc,EAAKO,cACbolV,EAAU7lV,EAAIS,cACdqlV,EAAUrjV,EAAIhC,cAalB,OATAxL,GADAmK,GAAgBA,EAAQ2mV,IACTA,EAAU,GAErB3mV,EAAQymV,IACRzmV,EAAQymV,GAER5wV,EAAM6wV,IACN7wV,EAAM6wV,GAGH1mV,EAAQ,IAAMnK,CACzB,CAEA,SAASisB,GAAKzwB,GACV,IACIiH,EADAxE,EAAM,EAEN8M,EAAMvP,EAAQuP,IACdyC,EAAMhS,EAAQgS,IACdrD,EAAQ3O,EAAQ2O,MAChB4Z,EAASvoB,EAAQuoB,OACjBksU,EAAQz0V,EAAQy0V,MAChBC,EAAkB10V,EAAQ00V,gBAC1Br0V,EAASL,EAAQkjE,OAAS,GAC1B2sR,EAAsB7vV,EAAQ6vV,oBAC9B0F,EAAcv1V,EAAQw0V,QAAU,EAChClG,EAAqBtuV,EAAQsuV,mBAC7BpzT,EAAiBl7B,EAAQk7B,eACzBM,EAAax7B,EAAQw7B,YAAcqwT,EACnCrsS,EAAUx/C,EAAQw/C,SAAWisS,EAC7BhmS,EAAQzlD,EAAQylD,OAASkmS,EACzB6J,EAAqBx1V,EAAQ4rV,wBAA0BA,EACvD1iV,EAAOlJ,EAAQkJ,MAAQ,iJAO3B,IALI2mV,IACA3mV,GAAQsyB,EAAWk5T,EAAgB/lV,KAIhClM,EAAMpC,EAAQoC,IACbA,EAAM,GAAKA,EAAM8yV,GAAgB,IACjCrsV,GAAQ,6CACJ2mV,IACA3mV,GAA4DsyB,EAApD8yT,IAAwB3/U,IAAUusB,EAA6Bw5T,EAAgB/lV,GAAqB,CAAE6sB,WAAY,aAIlI7sB,EAAQyhV,GAAWzhV,EAAMqB,cAAerB,EAAMoB,WAAYpB,EAAMkB,WAChEyG,EAAU3H,EAAO,IAI0B,KAF3C1H,EAAOwtV,EAAM9lV,EAAOlM,EAAKzC,EAAQ8sV,eAExB9uU,SAASxP,QAAQ09U,IAAuBoC,EAGzC+B,GAAU1hV,EAAOY,EAAKyC,KAA8C,IAAtC/K,EAAK+W,SAASxP,QAAQ29U,GACpDjjV,GAAQs2C,EAAQv4C,GAEhBiC,GAAQu8C,EAAMx+C,GALlBiC,GAAQssV,EAAmBvuV,GAS/BshB,EAAO5Z,EAAO,GAGlB,OAAOzF,EAAO,uBAClB,CAEA,SAAS++C,GAAQ0sS,EAAOC,EAAOtpT,GAC3B,IAAIwpT,EAAQH,EAAM3kV,cACdrB,EAAQimV,EAAM5kV,cACdxL,EAAMmK,EACNgB,EAAS,EAab,OAXI27B,IAEA9mC,GADAmK,GAAgBA,EAAQ28B,GACV38B,EAAQ28B,EAAWA,EAAW,GAG5CwpT,EAAQtwV,EACRmL,EAAS,EACFmlV,EAAQnmV,IACfgB,GAAU,GAGPA,CACX,CAEA,SAASq+U,KACL,IAAI70T,EAAQ,IAAImgI,GAChB,OAAO,IAAIA,GAAKngI,EAAMnpB,cAAempB,EAAMppB,WAAYopB,EAAMtpB,UACjE,CAEA,SAAS89U,GAAcpsV,EAAOgO,EAAKyC,GAC/B,IAAImnB,EAAQ60T,KAWZ,OATIzsV,IACA43B,EAAQ,IAAImgI,IAAM/3J,IAGlBgO,EAAM4pB,EACNA,EAAQ,IAAImgI,IAAM/pJ,GACXyC,EAAMmnB,IACbA,EAAQ,IAAImgI,IAAMtnJ,IAEfmnB,CACX,CAEA,SAASk3T,GAAU5gV,EAAMF,EAAKyC,GAC1B,OAAQvC,IAASF,IAAQE,IAASuC,CACtC,CAEA,SAASsiV,GAAW1gV,EAAOnR,GACvB,OAAOmR,EAAMlU,MAAM+C,GAAKwU,OAAOrD,EAAMlU,MAAM,EAAG+C,GAClD,CAEA,SAAS41B,GAAQ5oB,EAAMlO,EAAOk0V,GAC1Bl0V,EAAQA,aAAiB+3J,GAAO/3J,EAAMyO,cAAgBP,EAAKO,cAAgBylV,EAAal0V,EACxFkO,EAAK8G,YAAYhV,EACrB,CAEA,SAASowV,GAAoBv8S,EAAWsgT,GACpC,IAAKA,GAAWtgT,EAAW,CACvB,IAAI/B,GAAQ+B,EACZ3mC,GAAS6iB,MAAM,GAAG+G,QAAQ+c,EAAWsgT,GACrCjnV,GAAS6iB,MAAM,GAAG+G,QAAQq9T,EAAS,IAAIluV,KAAK6rC,GAChD,CACA,IAAIsiT,EAAcnuV,KAAK6M,IAAI+gC,EAAUplC,cAAeolC,EAAUrlC,WAAYqlC,EAAUvlC,WAChF+lV,EAAapuV,KAAK6M,IAAIqhV,EAAQ1lV,cAAe0lV,EAAQ3lV,WAAY2lV,EAAQ7lV,WAE7E,OAAO3T,KAAK6jE,OAAO61R,GAAcD,GAAen8V,EAAMiW,KAAKyoB,WAC/D,CAEA,SAAS05T,GAAeh+U,EAAOiiV,EAAcnE,EAAU5E,GACnD,IAAK,IAAI1sV,EAAI,EAAGA,GAAKy1V,EAAcz1V,IAAK,CACpC,IAAI+5B,EAAU,IAAI3yB,KAAKkqV,EAAS5vV,WAE3BgrV,EADL3yT,EAAU,IAAI3yB,KAAK2yB,EAAQ9B,QAAQ8B,EAAQtqB,UAAYzP,MAEnDwT,EAAMpZ,KAAK2/B,EAEnB,CACJ,CAEA,SAASgzT,GAAY3vV,GACFhC,EAAE3C,MAAM+M,SAAS,eAG5BpK,EAAE3C,MAAM4oB,YA9mEJ,UA8mEuB2kS,EAAW53S,QAAQhR,EAAEe,OAAS,GAAKf,EAAEe,MAAQ8gO,EAEhF,CAEA,SAAS+yH,GAAQ50V,GACbA,EAAEwE,gBACN,CAGA,SAASouV,GAAWv6U,EAAMvX,EAAOmR,GAC7B,IAAIqmV,EAAa,IAAIx8L,GAAKzjJ,EAAMvX,EAAOmR,GAEvC,OADAqmV,EAAWv/U,YAAYV,EAAMvX,EAAOmR,GAC7BqmV,CACX,CAEA,SAAS9B,GAAgBtnV,GACrB,OAAOE,EAAWF,GAASW,UAAUC,QACzC,CAEA,SAAS4pC,GAAUl3C,GACf,IAAI2O,EAAQ2iB,GAAMtxB,EAAQ2O,OACtBquJ,EAAQ1rI,GAAMtxB,EAAQg9J,OACtBtwJ,EAAUE,EAAW5M,EAAQ0M,SAEjC1M,EAAQ8J,OAASyhV,EAAcvrV,EAAQ8J,QAAU4C,EAAQW,UAAUC,SAASQ,SAASzQ,GAEjFsE,MAAMgN,KACNA,EAAQ,EACR3O,EAAQ2O,MAAQlS,IAGhBugK,IAAUvhK,GAAeuhK,EAAQruJ,KACjC3O,EAAQg9J,MAAQvgK,GAGE,OAAlBuD,EAAQs4K,QACRt4K,EAAQs4K,MAAQ,GAExB,CA+BA,SAASy0K,GAAgBh/T,GACrB,OAAIv0B,EAAMuI,WAAWgsB,GACVA,EAGPhyB,MAAMD,QAAQiyB,GActB,SAA4BuqJ,GACxB,IAAI71J,EACAszU,EAAgB,GAChBxoV,EAAO,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAE5C+qK,EAAM,aAAchf,IACpBy8L,EAdR,SAA2Bz9K,GAEvB,IADA,IAAI3oK,EAAS,GACJvP,EAAI,EAAGA,EAAIk4K,EAAMj4K,OAAQD,IAC9BuP,EAAOnV,KAAK89K,EAAMl4K,GAAGiW,SAAS,EAAG,EAAG,EAAG,IAE3C,OAAO1G,CACX,CAQwBqmV,CAAkB19K,GAClC71J,EAAYhT,MAAYA,GAAQsmV,EAAcvnV,QAAQ,IAAKhH,KAAKiI,GAAO4G,SAAS,EAAG,EAAG,EAAG,KAAO,KAEhG0/U,EAAgBz9K,EAAM5kK,KAAIoC,IACtBA,EAAMA,EAAIpW,MAAM,EAAE,GAAGgS,cACrB,IAAIS,EAAQ5E,EAAKiB,QAAQsH,GACzB,GAAI3D,GAAS,EACT,OAAOA,CACX,IAGJsQ,EAAYhT,MAAYA,GAAQsmV,EAAcvnV,QAAQ,IAAKhH,KAAKiI,GAAOK,WAAa,IAGxF,OAAO2S,CACX,CAlCewzU,CAAmBloU,GAEvBvyB,EAAEQ,IACb,CAiCA,SAASuzV,GAAY1gH,EAAU1hK,GAM5B,OALI0hK,aAAoBrnO,MAAQ2lE,aAAoB3lE,OAChDqnO,EAAWA,EAAS/sO,UACpBqrE,EAAWA,EAASrrE,WAGjB+sO,IAAa1hK,CACvB,CAEA,SAAS69Q,GAAa79G,GAClB,IAAI5rO,EAAQ/F,EAAE2xO,GAAM1wN,KAAKjjB,EAAMijB,KAAKqrD,IAAQrkE,MAAM,KAIlD,OAFAlC,EAAQ6uV,GAAW7uV,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAGjD,CAGA,SAASiyV,GAAgBz/K,EAAM9sK,GAC3B,OAAI8sK,EACIv6K,EAAMuI,WAAWgyK,GACVA,EAAK9sK,GAETgC,EAAS8qK,EAAT9qK,CAAehC,GAEnBxL,CACX,CAEAgT,GAASynV,gBA1FT,SAAyBhD,EAAQC,GAC7B,QAAID,IACOA,EAAOljV,gBAAkBmjV,EAAOnjV,eACnCkjV,EAAOnjV,aAAeojV,EAAOpjV,YAC7BmjV,EAAOrjV,YAAcsjV,EAAOtjV,UAIxC,EAmFApB,GAAS8gV,YAAcA,GACvB9gV,GAASk/U,cAAgBA,GACzBl/U,GAAS4hV,UAAYA,GACrB5hV,GAASyoC,UAAYA,GACrBzoC,GAAS0nV,UAAY7kU,GACrB7iB,GAASwiB,SAAW87T,GACpBt+U,GAASu8U,aAAeA,GACxBv8U,GAASu/U,SAAWA,GACpBv/U,GAAS2hV,WAAaA,GAEtB52V,EAAMiV,SAAWA,EACpB,CA3yED,CA2yEG9U,OAAOH,MAAM+G,QACF/G,MAAd,IAkBI48V,EAAgB,SAAS/4V,EAAGyX,GAI9B,OAHAshV,EAAgB98V,OAAO+8V,gBAClB,CAAEtqU,UAAW,cAAgBhwB,OAAS,SAAUsB,EAAGyX,GAAKzX,EAAE0uB,UAAYjX,CAAG,GAC1E,SAAUzX,EAAGyX,GAAK,IAAK,IAAI42G,KAAK52G,EAAOxb,OAAO4H,UAAU4G,eAAe1E,KAAK0R,EAAG42G,KAAIruH,EAAEquH,GAAK52G,EAAE42G,GAAI,EAC7F0qO,EAAc/4V,EAAGyX,EAC1B,EAEA,SAASwhV,EAAUj5V,EAAGyX,GACpB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIyhV,UAAU,uBAAyBrrV,OAAO4J,GAAK,iCAE7D,SAAS0hV,IAAO39V,KAAKsI,YAAc9D,CAAG,CADtC+4V,EAAc/4V,EAAGyX,GAEjBzX,EAAE6D,UAAkB,OAAN4T,EAAaxb,OAAO2mD,OAAOnrC,IAAM0hV,EAAGt1V,UAAY4T,EAAE5T,UAAW,IAAIs1V,EACjF,CA2HsBl9V,OAAO2mD,OA0GJ3mD,OAAO2mD,OAoChC,IA4OIw2S,EApMAC,EAAY,SAAUjnV,GAAQ,OAAOA,EAAO,IAAIjI,KAAKiI,EAAK3N,WAAa,IAAM,EAK7EwU,EAAY,SAAU7G,EAAMknV,GAC5B,IAAIh+T,EAAU+9T,EAAUjnV,GAIxB,OAHa,IAATknV,GAAqC,KAAvBh+T,EAAQ1oB,YACtB0oB,EAAQtiB,SAASsiB,EAAQ1oB,WAAa,GAEnC0oB,CACX,EAeIC,EAAU,SAAUnpB,EAAMkH,GAC1B,IAAIgiB,EAAU+9T,EAAUjnV,GAExB,OADAkpB,EAAQN,QAAQM,EAAQ9oB,UAAY8G,GAC7BL,EAAUqiB,EAASlpB,EAAKQ,WACnC,EAoBImgV,EAAa,SAAUv6U,EAAMvX,EAAOwX,EAAKC,EAAOrG,EAASsG,EAASC,QACpD,IAAVF,IAAoBA,EAAQ,QAChB,IAAZrG,IAAsBA,EAAU,QACpB,IAAZsG,IAAsBA,EAAU,QACf,IAAjBC,IAA2BA,EAAe,GAC9C,IAAIxG,EAAO,IAAIjI,KAAKqO,EAAMvX,EAAOwX,EAAKC,EAAOrG,EAASsG,EAASC,GAI/D,OAHIJ,GAAQ,GAAKA,EAAO,KACpBpG,EAAK8G,YAAY9G,EAAKO,cAAgB,MAEnCsG,EAAU7G,EAAMsG,EAC3B,EAaImlB,EAAiB,SAAUzrB,GAC3B,IAAIkpB,EAAUy3T,EAAW3gV,EAAKO,cAAeP,EAAKM,WAAa,EAAG,EAAGN,EAAKQ,WAAYR,EAAKS,aAAcT,EAAKU,aAAcV,EAAKW,mBACjI,OAAOwoB,EAAQD,GAAU,EAC7B,EAkBIi+T,EAAY,SAAUnnV,EAAMkH,GAC5B,IAAIgiB,EAAU+9T,EAAUjnV,GAEpBonV,GAnBY,IAkBJl+T,EAAQ5oB,WAAa4G,GAlBjB,OAqBhB,OADAgiB,EAAQw8T,SAASx8T,EAAQ5oB,WAAa4G,GAnB1B,SAAUlH,EAAMonV,GAAiB,OAAQpnV,EAAKM,aAAe8mV,EAAgB37T,EAAe07T,EAAUnnV,GAAO,IAAMA,CAChI,CAmBQynC,CAAU5gC,EAAUqiB,EAASlpB,EAAKQ,YAAa4mV,EAC1D,GAiGA,SAAWJ,GAIPA,EAAUA,EAAmB,QAAI,GAAK,UAItCA,EAAUA,EAAoB,UAAK,GAAK,UAC3C,CATD,CASGA,IAAcA,EAAY,CAAC,IAmB9B,IAWIK,GACJ,SAAWA,GAIPA,EAAIA,EAAY,OAAI,GAAK,SAIzBA,EAAIA,EAAY,OAAI,GAAK,SAIzBA,EAAIA,EAAa,QAAI,GAAK,UAI1BA,EAAIA,EAAe,UAAI,GAAK,YAI5BA,EAAIA,EAAc,SAAI,GAAK,WAI3BA,EAAIA,EAAY,OAAI,GAAK,SAIzBA,EAAIA,EAAc,SAAI,GAAK,UAC9B,CA7BD,CA6BGA,IAAQA,EAAM,CAAC,IAKlB,IAsKIjnV,EAAU,SAAUJ,GACpB,OAAO2gV,EAAW3gV,EAAKO,cAAeP,EAAKM,WAAYN,EAAKI,UAAW,EAAG,EAAG,EACjF,EAgBIknV,EAAU,SAAU73C,EAAW83C,GAC/B,OAAK93C,IAAc83C,GAGZ93C,GAAa83C,GAAY93C,EAAUp9S,YAAck1V,EAASl1V,SACrE,EAuGIm1V,EAAY,CACZjgU,MAAO,CAAC,EACRg0I,OAAQ,CAAC,EACT3zI,MAAO,CAAC,GAGR4+I,EAAS,CAAE9gJ,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,GAAIC,IAAK,IACzGigJ,EAAO,CAAEhgJ,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,GAkB9DC,EAAa,SAAUzgB,EAAM0gB,EAAM2gU,GACnC,IAGIznV,EAHAnR,EAAQi4B,EAAK,GACb7T,EAAK6T,EAAK,GACVG,EAAOH,EAAK,GAEZ4gU,EAAyB,MAAZzgU,EAAK,GAtBN,KAsBoBwgU,EAA6B,EACjE,GAAKv1V,MAAM+gB,IAGN,GAA2B,IAAvBA,EAAGlU,QAAQ,QAAe,CAC/BiB,EAAO,IAAIjI,KAAKA,KAAK6M,IAAIwB,EAAMogK,EAAO33K,GAAS,EAAG,EAAGo4B,EAAK,GAAK,GAAIA,EAAK,GAAIA,EAAK,IAAMygU,GACvF,IAAI3gU,EAAYu/I,EAAKrzJ,EAAGtN,OAAO,EAAG,IAC9BqhB,EAAShnB,EAAKmnB,YAClBnnB,EAAKonB,WAAWpnB,EAAKnE,aAAekrB,EAAYC,GAAUD,EAAYC,EAAS,EAAI,GACvF,MACK,GAAI/T,EAAGlU,QAAQ,OAAS,EAAG,CAC5BiB,EAAO,IAAIjI,KAAKA,KAAK6M,IAAIwB,EAAMogK,EAAO33K,GAAQokB,EAAGtN,OAAO,GAAIshB,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAI,GAAKygU,GACxF3gU,EAAYu/I,EAAKrzJ,EAAGtN,OAAO,EAAG,IAC9BqhB,EAAShnB,EAAKmnB,YAClBnnB,EAAKonB,WAAWpnB,EAAKnE,aAAekrB,EAAYC,GAAUD,EAAYC,EAAS,EAAI,GACvF,OAbIhnB,EAAO,IAAIjI,KAAKA,KAAK6M,IAAIwB,EAAMogK,EAAO33K,GAAQokB,EAAIgU,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAAMygU,GAcnF,OAAO1nV,CACX,EAEI2nV,GAAmB,IAAK5vV,MAAQ1F,UAgBhCg1B,EAAW,SAAUugU,EAAUtgU,EAASmgU,QACxB,IAAZngU,IAAsBA,EAAUqgU,QACjB,IAAfF,IAAyBA,EAAa,GAC1C,IAAIlgU,EAAQigU,EAAUjgU,MAAMqgU,GAC5B,IAAKrgU,EAAO,CACR,IAAIN,EAAO2gU,EAAS5zV,MAAM,KACtBkT,EAAS,EAIb,OAHI+f,EAAKr2B,OAAS,IACdsW,EAAmB,GAAV+f,EAAK,GAAUhrB,OAAOgrB,EAAK,KAEjC,EAAE,IAAS,MAAO,IAAK,MAAO,EAAG,CAAC,EAAG,EAAG,GAAI/f,EAAQ,IAC/D,CACA,IAAId,EAAO,IAAIrO,KAAKuvB,GAAS3rB,kBAC7B4rB,EAAQA,EAAM5O,QAAO,SAAUkvU,GAC3B,IAAI1iV,EAAO0iV,EAAY,GACnBngU,EAAKmgU,EAAY,GACrB,OAAO1iV,GAAQiB,IAASshB,GAAMthB,GAASjB,IAASiB,GAAe,SAAPshB,GAAyB,QAAPA,EAC9E,KACM38B,KAAKu8B,GACXC,EAAMniB,MAAK,SAAU9W,EAAG+W,GAOpB,MANiB,iBAAN/W,IACPA,EAAI2N,OAAO4qB,EAAWzgB,EAAM9X,EAAGm5V,KAElB,iBAANpiV,IACPA,EAAIpJ,OAAO4qB,EAAWzgB,EAAMf,EAAGoiV,KAE5Bn5V,EAAI+W,CACf,IACA,IAAIyhB,EAAOS,EAAMA,EAAMxoB,QAAQuoB,GAAW,IAAMC,EAAMA,EAAM32B,OAAS,GACrE,OAAOsB,MAAM40B,GAAQA,EAAO,IAChC,EAGIghU,EAAa,yDAGbj7V,EAAe,eAGfk7V,EAAgB,SAAU1tU,GAE1B,IADA,IAAI5X,EAAS,GACJs2B,EAAK,EAAGA,EAAKroC,UAAUE,OAAQmoC,IACpCt2B,EAAOs2B,EAAK,GAAKroC,UAAUqoC,GAE/B,IAAIivT,EAAwBvlV,EAPU0qC,QAAO,SAAU7+C,EAAG+W,GAAK,OAAO/W,EAAEkZ,OAAOnC,EAAI,GAAG,IAQtF,OAAOgV,EAAQxuB,QAAQgB,GAAc,SAAUkrB,EAAGrV,GAAS,OAAOslV,EAAcplV,SAASF,EAAO,IAAM,GAC1G,EAkCIqlB,GAAW,SAAU3gB,EAAUkgB,GAE/B,QADgB,IAAZA,IAAsBA,GAAU,IAAIvvB,MAAO1F,WAC9B,YAAb+U,GAAuC,YAAbA,EAC1B,MAAO,CAAC,EAAG,IAAK,MAAO,MAI3B,IAFA,IAAIygB,EAvBW,SAAUzgB,GACzB,IAAIwgB,EAAQ4/T,EAAU5/T,MACtB,IAAKA,EACD,MAAM,IAAIxtB,MAAM2tV,EAAcD,EAAY1gV,IAE9C,IAAIygB,EAAYD,EAAMxgB,GAClBlH,EAA8B,iBAAd2nB,EAAyBD,EAAMC,GAAaA,EAChE,IAAK3nB,EACD,MAAM,IAAI9F,MAAM2tV,EAAcD,EAAY1gV,IAE9C,OAAOlH,CACX,CAYoB+nV,CAAa7gV,GACzBpU,EAAM60B,EAAUj3B,OAAS,EACtBoC,GAAO,EAAGA,IAAO,CACpB,IAAI80B,EAAQD,EAAU70B,GAAK,GAC3B,GAAI80B,GAASR,EAAUQ,EACnB,KAER,CACA,IAAIN,EAAOK,EAAU70B,EAAM,GAC3B,IAAKw0B,EACD,MAAM,IAAIptB,MAAM2tV,EAAcD,EAAY1gV,IAE9C,OAAOogB,CACX,EAQIG,GAAc,SAAUvgB,EAAUpH,GAClC,IAAIsnB,EAAUtnB,EAAK3N,UACfm1B,EAAOO,GAAS3gB,EAAUkgB,GAC9B,MAAO,CACHR,KAAMO,EAASG,EAAK,GAAIF,EAASE,EAAK,IACtCA,KAAMA,EAEd,EAiFItgB,GAAS,SAAUE,EAAUpH,GAE7B,QADa,IAATA,IAAmBA,EAAO,IAAIjI,MACjB,YAAbqP,GAAuC,YAAbA,EAC1B,OAAO,EAEX,GAAiB,KAAbA,EACA,OAAOpH,EAAKY,oBAEhB,IAAIsnV,EAAKvgU,GAAYvgB,EAAUpH,GAAO8mB,EAAOohU,EAAGphU,KAAMU,EAAO0gU,EAAG1gU,KAChE,OAAOr1B,WAAW20B,EAAOU,EAAK,GAAKV,EAAK,GAAKU,EAAK,GACtD,EAsFA,IAAI2gU,GAAa,SAAUnoV,EAAMC,GAAW,OAAO,IAAIlI,KAAKiI,EAAK3N,UAhuB3C,IAguBuD4N,EAA4B,EACrG8nK,GAAW,SAAU/nK,EAAMsG,GAAS,OAAO,IAAIvO,KAAKiI,EAAK3N,UA7tB3C,KA6tBuDiU,EAAsB,EAC3F8hV,GAAU,CACV,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAE1CC,GAAY,CACZ,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAK7EC,GAAY,SAAUh0M,EAAKn6H,GAG3B,YAFY,IAARA,IAAkBA,EAAM,IACjBm6H,EAAM,EAAI,IAAM,IACb,IAAIhoJ,MAAM6tB,GAAK3S,OAAO,CAAC/a,KAAKoU,IAAIyzI,KAAOrgJ,KAAK,KAAKhE,OAAOkqB,EAC1E,EACA,SAASouU,GAAkBvoV,EAAMoH,GAC7B,IAAIyqU,EAAgB3qU,GAAOE,EAAUpH,GACjCwoV,EAAWzgL,GAAS/nK,GAAO,GAE/B,OAAO6xU,EADU3qU,GAAOE,EAAUohV,EAEtC,CACA,SAASC,GAAqBC,EAASthV,GAEnC,IAAIuhV,EAAYJ,GAAkBG,EAASthV,GAAY,EAAI,EAC3D,OAAO2gK,GAAS2gL,EAASC,EAC7B,CACA,SAASC,GAAmBC,EAAUC,EAAcC,GAChD,GAAID,IAAiBC,EACjB,OAAOF,EAEX,IAAI5gU,EAAa/gB,GAAO4hV,EAAcD,GAClC3gU,EAAWhhB,GAAO6hV,EAAYF,GAC9BG,EAAW/gU,EAAaC,EACxB+gU,EAAUd,GAAWU,EAAUG,GAC/BE,EAAYhiV,GAAO6hV,EAAYE,GAEnC,OAAOd,GAAWU,EAAUG,GADd9gU,EAAWghU,GAE7B,EA6C+B,WAM3B,SAASC,EAAUT,EAASthV,GACxBhe,KAAKggW,SAAWnC,EAAUyB,GAC1Bt/V,KAAKge,SAAWA,EAChB,IAAIiiV,EAAWniV,GAAOE,EAAUshV,GAChCt/V,KAAKkgW,eAAiBD,EACtB,IAAIE,EAAYd,GAAqBC,EAASthV,GAC9Che,KAAKogW,WAAaZ,GAAmBW,EAAWniV,EAAU,UAC9D,CACAvd,OAAOquC,eAAeixT,EAAU13V,UAAW,kBAAmB,CAU1D4nB,IAAK,WACD,OAAOjwB,KAAKogW,UAChB,EACAC,YAAY,EACZC,cAAc,IAElB7/V,OAAOquC,eAAeixT,EAAU13V,UAAW,gBAAiB,CAUxD4nB,IAAK,WACD,OAAOjwB,KAAKggW,QAChB,EACAK,YAAY,EACZC,cAAc,IA8BlBP,EAAUQ,cAAgB,SAAU3pV,EAAMoH,QACrB,IAAbA,IAAuBA,EAAW,IACtC,IAAIshV,EAAUE,GAAmB5oV,EAAM,UAAWoH,GAC9CwiV,EAAYrB,GAAkBG,EAASthV,GACvCqgV,EAAavgV,GAAOE,EAAUshV,GAC9BmB,EAAc,EACdD,IAEAC,EAAcpC,EAAa,GAAK,EAAI,GAExC,IAAIqC,EAAU/hL,GAAS2gL,EAASmB,GAChC,OAAOV,EAAUY,YAAYD,EAAS1iV,EAC1C,EAkCA+hV,EAAUY,YAAc,SAAUrB,EAASthV,GAEvC,YADiB,IAAbA,IAAuBA,EAAW,IAC/B,IAAI+hV,EAAUT,EAASthV,EAClC,EAwBA+hV,EAAU13V,UAAU82B,YAAc,WAC9B,OAAO0+T,EAAU79V,KAAKogW,WAC1B,EAoBAL,EAAU13V,UAAUu4V,UAAY,WAC5B,OAAO/C,EAAU79V,KAAKggW,SAC1B,EAwBAD,EAAU13V,UAAUs3V,WAAa,SAAUA,GACvC,GAAI3/V,KAAKge,WAAa2hV,EAClB,OAAO3/V,KAAKoH,QAEhB,IAAI64V,EAAWniV,GAAO9d,KAAKge,SAAUhe,KAAKggW,UACtCppV,EAAOmoV,GAAW/+V,KAAKggW,SAAUC,GACrC,OAAOF,EAAUQ,cAAc3pV,EAAM+oV,EACzC,EAMAI,EAAU13V,UAAUjB,MAAQ,WACxB,OAAO24V,EAAUY,YAAY3gW,KAAKggW,SAAUhgW,KAAKge,SACrD,EASA+hV,EAAU13V,UAAU03B,QAAU,SAAUrrB,GACpC,IAAIorB,EAAU,IAAInxB,KAAK3O,KAAKggW,SAAS/2V,WAErC,OADA62B,EAAQ9B,WAAW8B,EAAQrtB,aAAeiC,GACnCqrV,EAAUY,YAAY7gU,EAAS9/B,KAAKge,SAC/C,EAWA+hV,EAAU13V,UAAUw4V,QAAU,SAAUzjV,GACpC,IACI0jV,EAASzB,GADC,IAAI1wV,KAAK3O,KAAKggW,SAAS/2V,WACMjJ,KAAKge,UAChD8iV,EAAO3gU,QAAQ2gU,EAAO73V,UAAYmU,GAClC,IAAI2jV,EAAY1B,GAAqByB,EAAQ9gW,KAAKge,UAClD,OAAO+hV,EAAUY,YAAYI,EAAW/gW,KAAKge,SACjD,EAQA+hV,EAAU13V,UAAU24V,UAAY,WAC5B,IAAIpqV,EAAO5W,KAAKggW,SACZ9hL,EAAQvvK,KAAK6M,IAAI5E,EAAKrE,iBAAkBqE,EAAKpE,cAAeoE,EAAKnE,aAAc,EAAG,EAAG,GACzF,OAAOstV,EAAUY,YAAY,IAAIhyV,KAAKuvK,GAAQl+K,KAAKge,SACvD,EAIA+hV,EAAU13V,UAAUY,QAAU,WAC1B,OAAOjJ,KAAKogW,WAAWn3V,SAC3B,EAIA82V,EAAU13V,UAAUmP,kBAAoB,WACpC,OAAOxX,KAAKkgW,cAChB,EAIAH,EAAU13V,UAAU8O,YAAc,WAC9B,OAAOnX,KAAKggW,SAASztV,gBACzB,EAIAwtV,EAAU13V,UAAU6O,SAAW,WAC3B,OAAOlX,KAAKggW,SAASxtV,aACzB,EAIAutV,EAAU13V,UAAU2O,QAAU,WAC1B,OAAOhX,KAAKggW,SAASvtV,YACzB,EAIAstV,EAAU13V,UAAU4O,OAAS,WACzB,OAAOjX,KAAKggW,SAASjiU,WACzB,EAIAgiU,EAAU13V,UAAU+O,SAAW,WAC3B,OAAOpX,KAAKggW,SAASttV,aACzB,EAIAqtV,EAAU13V,UAAUgP,WAAa,WAC7B,OAAOrX,KAAKggW,SAASrtV,eACzB,EAIAotV,EAAU13V,UAAUiP,WAAa,WAC7B,OAAOtX,KAAKggW,SAASptV,eACzB,EAIAmtV,EAAU13V,UAAUkP,gBAAkB,WAClC,OAAOvX,KAAKggW,SAASiB,oBACzB,EAKAlB,EAAU13V,UAAUoK,WAAa,WAC7B,OAAOzS,KAAKogW,WAAW3tV,YAC3B,EAIAstV,EAAU13V,UAAU01B,UAAY,WAC5B,OAAO/9B,KAAKogW,WAAWriU,WAC3B,EAIAgiU,EAAU13V,UAAUkK,eAAiB,WACjC,OAAOvS,KAAKogW,WAAW7tV,gBAC3B,EAIAwtV,EAAU13V,UAAUqK,YAAc,WAC9B,OAAO1S,KAAKogW,WAAW1tV,aAC3B,EAIAqtV,EAAU13V,UAAU44V,mBAAqB,WACrC,OAAOjhW,KAAKogW,WAAWa,oBAC3B,EAIAlB,EAAU13V,UAAUsK,cAAgB,WAChC,OAAO3S,KAAKogW,WAAWztV,eAC3B,EAIAotV,EAAU13V,UAAUmK,YAAc,WAC9B,OAAOxS,KAAKogW,WAAW5tV,aAC3B,EAEAutV,EAAU13V,UAAUuK,cAAgB,WAChC,OAAO5S,KAAKogW,WAAWxtV,eAC3B,EAEAmtV,EAAU13V,UAAU83B,QAAU,SAAUtC,GACpC,MAAM,IAAI7sB,MAAM,0BACpB,EAEA+uV,EAAU13V,UAAUw2K,gBAAkB,SAAUqiL,GAC5C,MAAM,IAAIlwV,MAAM,0BACpB,EAEA+uV,EAAU13V,UAAU84V,mBAAqB,SAAUD,GAC/C,MAAM,IAAIlwV,MAAM,0BACpB,EAEA+uV,EAAU13V,UAAUu2K,WAAa,SAAUwiL,EAAKF,GAC5C,MAAM,IAAIlwV,MAAM,0BACpB,EAEA+uV,EAAU13V,UAAUg5V,cAAgB,SAAUD,EAAKF,GAC/C,MAAM,IAAIlwV,MAAM,0BACpB,EAEA+uV,EAAU13V,UAAUo2K,WAAa,SAAU/nK,EAAK0qV,EAAKF,GACjD,MAAM,IAAIlwV,MAAM,0BACpB,EAEA+uV,EAAU13V,UAAUi5V,cAAgB,SAAU5qV,EAAK0qV,EAAKF,GACpD,MAAM,IAAIlwV,MAAM,0BACpB,EAEA+uV,EAAU13V,UAAUmV,SAAW,SAAUN,EAAOxG,EAAK0qV,EAAKF,GACtD,MAAM,IAAIlwV,MAAM,0BACpB,EAEA+uV,EAAU13V,UAAUk5V,YAAc,SAAUrkV,EAAOxG,EAAK0qV,EAAKF,GACzD,MAAM,IAAIlwV,MAAM,0BACpB,EAEA+uV,EAAU13V,UAAUm3B,QAAU,SAAU5oB,GACpC,MAAM,IAAI5F,MAAM,0BACpB,EAEA+uV,EAAU13V,UAAU21B,WAAa,SAAUpnB,GACvC,MAAM,IAAI5F,MAAM,0BACpB,EAEA+uV,EAAU13V,UAAUi0V,SAAW,SAAU72V,EAAOmR,GAC5C,MAAM,IAAI5F,MAAM,0BACpB,EAEA+uV,EAAU13V,UAAUm5V,YAAc,SAAU/7V,EAAOmR,GAC/C,MAAM,IAAI5F,MAAM,0BACpB,EAEA+uV,EAAU13V,UAAUqV,YAAc,SAAUV,EAAMvX,EAAOmR,GACrD,MAAM,IAAI5F,MAAM,0BACpB,EAEA+uV,EAAU13V,UAAUo5V,eAAiB,SAAUzkV,EAAMvX,EAAOmR,GACxD,MAAM,IAAI5F,MAAM,0BACpB,EAIA+uV,EAAU13V,UAAUq5V,YAAc,WAC9B,OAAO1hW,KAAKogW,WAAWsB,aAC3B,EAIA3B,EAAU13V,UAAU8J,OAAS,WACzB,OAAOnS,KAAKogW,WAAWjuV,QAC3B,EAIA4tV,EAAU13V,UAAUoJ,SAAW,WAC3B,IA/fmB6tV,EA+ffzM,GA/feyM,EA+fSt/V,KAAKggW,SA9f9BhB,GAAQM,EAAQvhU,aAAe,IAAMkhU,GAAUK,EAAQ9sV,gBA+ftDmvV,EAAa3hW,KAAK4hW,eACtB,OAAO/O,EAAa,IAAM7yV,KAAKgX,UAAY,IAAMhX,KAAKmX,cAAgB,IAAMwqV,CAChF,EAEA5B,EAAU13V,UAAU6sV,aAAe,WAC/B,OAjhBat+U,EAihBM5W,KAAKggW,SAhhBrB,IAAIrxV,KAAKiI,EAAKrE,iBAAkBqE,EAAKpE,cAAeoE,EAAKnE,aAAcmE,EAAKlE,cAAekE,EAAKjE,gBAAiBiE,EAAKhE,gBAAiBgE,EAAKqqV,uBAghB7G/L,eAjhB1C,IAAqBt+U,CAkhBjB,EAEAmpV,EAAU13V,UAAUu5V,aAAe,WAC/B,IAGI/jU,EAHQqhU,GAAUl/V,KAAKoX,YAGR,IAFL8nV,GAAUl/V,KAAKqX,cAEM,IADrB6nV,GAAUl/V,KAAKsX,cAEzB2oV,EA9eZ,SAAsBA,GAClB,IAAIlpV,EAAOkpV,GAAY,EAAI,IAAM,IAC7Bv3V,EAAQrF,KAAKoU,IAAIwoV,GAGrB,MAAO,MAAQlpV,EAFHmoV,GAAU77V,KAAKyN,MAAMpI,EAAQ,KAC3Bw2V,GAAUx2V,EAAQ,GAEpC,CAweuBm5V,CAAa7hW,KAAKkgW,gBAC7B4B,EA/qBO,SAAU9jV,EAAUpH,GAEnC,QADa,IAATA,IAAmBA,EAAO,IAAIjI,MACjB,YAAbqP,EACA,MAAO,MAEX,GAAiB,YAAbA,EACA,MAAO,MAEX,GAAiB,KAAbA,EACA,MAAO,GAEX,IAAI8gV,EAAKvgU,GAAYvgB,EAAUpH,GAAOwnB,EAAO0gU,EAAG1gU,KAAMV,EAAOohU,EAAGphU,KAC5D11B,EAAOo2B,EAAK,GAChB,OAAIp2B,EAAK2N,QAAQ,MAAQ,EACd3N,EAAK4C,MAAM,KAAK8yB,IAASA,EAAK,GAAK,EAAI,GAEzC11B,EAAK2N,QAAQ,OAAS,EACpB3N,EAAKvF,QAAQ,KAAQi7B,GAAoB,MAAZA,EAAK,GAAmBA,EAAK,GAAV,IAEpD11B,CACX,CA2pBqB+5V,CAAa/hW,KAAKge,SAAUhe,KAAKggW,UAI9C,OAHI8B,IACAA,EAAS,KAAOA,EAAS,KAEtBjkU,EAAO,IAAMoiU,EAAW6B,CACnC,EACA/B,EAAU13V,UAAUsQ,eAAiB,SAAUqpV,EAAS76V,GACpD,OAAOnH,KAAKogW,WAAWznV,eAAeqpV,EAAS76V,EACnD,EACA44V,EAAU13V,UAAU45V,mBAAqB,SAAUD,EAAS76V,GACxD,OAAOnH,KAAKogW,WAAW6B,mBAAmBD,EAAS76V,EACvD,EACA44V,EAAU13V,UAAU65V,mBAAqB,SAAUF,EAAS76V,GACxD,OAAOnH,KAAKogW,WAAW8B,mBAAmBF,EAAS76V,EACvD,EAEA44V,EAAU13V,UAAU85V,YAAc,WAC9B,OAAOniW,KAAK2/V,WAAW,WAAWluV,UACtC,EACAsuV,EAAU13V,UAAUwkD,OAAOu1S,aAAe,SAAUp4Q,GAChD,MAAa,WAATA,GAA8B,YAATA,EACdhqF,KAAKyR,WAETzR,KAAKogW,WAAWn3V,SAC3B,EAEA82V,EAAU13V,UAAUiK,QAAU,WAC1B,OAAOtS,KAAKiJ,SAChB,EAEA82V,EAAU13V,UAAUg6V,WAAa,WAC7B,MAAM,IAAIrxV,MAAM,mBACpB,EAEA+uV,EAAU13V,UAAU4I,OAAS,SAAU0d,GACnC,MAAM,IAAI3d,MAAM,mBACpB,EAEA+uV,EAAU13V,UAAUi6V,UAAY,SAAU3zU,GACtC,MAAM,IAAI3d,MAAM,mBACpB,CAEJ,CA7e8B,GAA9B,IA0qB2BsmB,GAmnDvBirU,GAOAzD,GApvDA0D,GACA,WACIxiW,KAAK+9Q,QAAU,GACf/9Q,KAAKyiW,QAAU,EACnB,EAIAC,GACiB,IADjBA,GAEiB,GAFjBA,GAGmB,IAHnBA,GAIiB,KAGjBC,GACQ,SADRA,GAEW,YAFXA,GAUO,IAUPC,GAAU,SAAUp7V,GAAU,OAAO,IAAItE,MAAMG,KAAK8V,IAAI3R,EAAQ,IAAIksB,KAAK,KAAK7oB,KAAK,GAAK,EAIxFyR,GAAY,SAAU5T,GAAS,OAAOA,EAAMjG,QAAQ,MAAO,GAAK,EAwEhEogW,GAAgB,SAAUhoV,EAAKnQ,GAE/B,OADAmQ,EAAInQ,EAAKuJ,QAAQ,IAAMvJ,EAAKhF,KACrBmV,CACX,EAMIioJ,GAAW,SAAUp6J,GAAS,OAAOA,GAA4B,iBAAZ,IAAyBxF,MAAMD,QAAQyF,EAAQ,EAUpGD,GAAY,SAAUC,GAAS,OAAOA,OAAuC,EAQ7E2sD,GAAW,SAAU3sD,GAAS,OAAOD,GAAUC,IAA6B,iBAAZ,IAAyBmK,OAAO/J,MAAMJ,EAAQ,EAI9Go6V,GAAa,SAAUp6V,GAAS,OAAO8Q,SAAS9Q,EAAO,GAAK,EAI5D6wQ,GAAQ,SAAU7wQ,EAAOgO,EAAKyC,GAAO,OAAO9V,KAAKqT,IAAIyC,EAAK9V,KAAK8V,IAAIzC,EAAKhO,GAAS,EAMjF3F,GAAS,WAET,IADA,IAAIs0B,EAAO,GACFsY,EAAK,EAAGA,EAAKroC,UAAUE,OAAQmoC,IACpCtY,EAAKsY,GAAMroC,UAAUqoC,GAEzB,OAAOlvC,OAAOC,OAAO0H,MAAM3H,OAAQ42B,EACvC,EAII7uB,GAAa,SAAUnB,GAGvB,IAFA,IAAIy3V,EAAIiE,EACJ7sE,EAAU,GACLvmP,EAAK,EAAGA,EAAKroC,UAAUE,OAAQmoC,IACpCumP,EAAQvmP,EAAK,GAAKroC,UAAUqoC,GAEhC,IAAKumP,EAAQ1uR,OACT,OAAOH,EAEX,IAAIwG,EAASqoR,EAAQ9/Q,QACrB,GAAI0sJ,GAASz7J,IAAWy7J,GAASj1J,GAC7B,IAAK,IAAIiE,KAAOjE,EACMA,EAAOiE,aArD8BpD,YAsDnDrH,EAAOyK,GAAOjE,EAAOiE,IAEhBgxJ,GAASj1J,EAAOiE,KAAWjE,EAAOiE,aAAgBnD,KAOvD5L,GAAOsE,IAAS07V,EAAK,CAAC,GAAMjxV,GAAOjE,EAAOiE,GAAMixV,KAN3C17V,EAAOyK,IAASgxJ,GAASz7J,EAAOyK,KACjC/O,GAAOsE,IAASy3V,EAAK,CAAC,GAAMhtV,GAAO,CAAC,EAAGgtV,IAE3Ct2V,GAAWnB,EAAOyK,GAAMjE,EAAOiE,KAO3C,OAAOtJ,GAAWJ,WAAM,EAAQ,CAACf,GAAQ+W,OAAO83Q,GACpD,EAwBI8sE,IA3FuB1rU,GA2FD,cA3FkB,SAAU1gB,EAAMlO,GACxD,IAAItB,EAAQy2V,EAAUjnV,GAEtB,OADAxP,EAAMkwB,IAAQ5uB,GACPtB,CACX,GAwGI67V,GAAsB,SAAUrsV,EAAMoG,EAAMvX,EAAOwX,EAAK6gV,EAAMjnV,EAASsG,EAASC,GAChF,SAAIxG,GACAA,EAAKO,gBAAkB6F,GACvBpG,EAAKM,aAAezR,GACpBmR,EAAKI,YAAciG,GACnBrG,EAAKQ,aAAe0mV,GACpBlnV,EAAKS,eAAiBR,GACtBD,EAAKU,eAAiB6F,GACtBvG,EAAKW,oBAAsB6F,EAInC,EAII8lV,GAAc,SAAUx6V,GAAS,OAAOD,GAAUC,IAAUA,EAAMO,SAAWosD,GAAS3sD,EAAMO,UAAY,EAIxGk6V,GAA8B,cAK9BC,GAA4B,WAC5B,SAASA,EAAWtE,GAChB,IAAIhrL,EAAcgrL,EAAGhrL,YAAauvL,EAAoBvE,EAAGuE,kBAAmBpyV,EAAS6tV,EAAG7tV,OAAQ8xV,EAAKjE,EAAGwE,UAAWA,OAAmB,IAAPP,GAAwBA,EAAIn8D,EAAKk4D,EAAGrpV,gBAAiBA,OAAyB,IAAPmxR,EAAgB87D,GAA4B97D,EAAI28D,EAAKzE,EAAGp2V,MAAOA,OAAe,IAAP66V,EAAgB,KAAOA,EAAIC,EAAK1E,EAAG2E,iBAAkBA,OAA0B,IAAPD,GAAuBA,EAkD5W,GAjDAxjW,KAAKgd,MAAO,EACZhd,KAAKyF,OAAQ,EACbzF,KAAK4W,MAAO,EACZ5W,KAAKkd,OAAQ,EACbld,KAAK6W,SAAU,EACf7W,KAAKmd,SAAU,EACfnd,KAAKod,cAAe,EACpBpd,KAAK+F,WAAY,EACjB/F,KAAK0jW,YAAc,KACnB1jW,KAAK2jW,eAAiB,GACtB3jW,KAAK4jW,WAAa,aAClB5jW,KAAK+9Q,QAAU,CACXt5Q,EAAK,IACLI,EAAK,IACLP,EAAK,IACLY,EAAK,IACLV,EAAK,IACLI,EAAK,IACLI,EAAK,IACLC,EAAK,IACLd,EAAK,IACLu2P,EAAK,KAET16P,KAAKu2N,OAASv/M,EAAQ,IAAIrI,MAC1B3O,KAAKsjW,WAAY,EACjBtjW,KAAK6jW,sBAAwB,CACzBtnT,UAAW,KACXunT,iBAAkB,CACdr/V,EAAK,CAAEiE,MAAO,KAAMkO,KAAM,KAAMmtV,gBAAiB,GACjDl/V,EAAK,CAAE6D,MAAO,KAAMkO,KAAM,KAAMmtV,gBAAiB,GACjDz/V,EAAK,CAAEoE,MAAO,KAAMkO,KAAM,KAAMmtV,gBAAiB,GACjD7+V,EAAK,CAAEwD,MAAO,KAAMkO,KAAM,KAAMmtV,gBAAiB,GACjDv/V,EAAK,CAAEkE,MAAO,KAAMkO,KAAM,KAAMmtV,gBAAiB,GACjDn/V,EAAK,CAAE8D,MAAO,KAAMkO,KAAM,KAAMmtV,gBAAiB,GACjD/+V,EAAK,CAAE0D,MAAO,KAAMkO,KAAM,KAAMmtV,gBAAiB,GACjD9+V,EAAK,CAAEyD,MAAO,KAAMkO,KAAM,KAAMmtV,gBAAiB,GACjD5/V,EAAK,CAAEuE,MAAO,KAAMkO,KAAM,KAAMmtV,gBAAiB,GACjDrpG,EAAK,CAAEhyP,MAAO,KAAMkO,KAAM,KAAMmtV,gBAAiB,KAGzD/jW,KAAKkyB,WAAW,CACZ4hJ,YAAaA,EACbuvL,kBAAmBA,EACnBpyV,OAAQA,EACRqyV,UAAWA,EACX7tV,gBAAiBA,EACjB/M,MAAOA,EACP+6V,iBAAkBA,IAEjB/6V,EAQD1I,KAAKu2N,OAASsnI,EAAUn1V,OARhB,CACR1I,KAAKu2N,OAASv/M,EAAQ,IAAIrI,MAE1B,IADA,IAAIq1V,EAAehkW,KAAKikW,iBAAiBjkW,KAAK0I,MAAO1I,KAAKiR,QAAQ8sQ,QACzDx2Q,EAAI,EAAGA,EAAIy8V,EAAax8V,OAAQD,IACrCvH,KAAKkkW,YAAYF,EAAaz8V,IAAI,EAE1C,CAIJ,CA63CA,OA53CA9G,OAAOquC,eAAes0T,EAAW/6V,UAAW,QAAS,CACjD4nB,IAAK,WACD,OAAOjwB,KAAKu2N,MAChB,EACArmM,IAAK,SAAUxnB,KACPA,GAAWA,aAAiBiG,QAIhC3O,KAAKu2N,OAAS7tN,EACd1I,KAAKmkW,mBACT,EACA9D,YAAY,EACZC,cAAc,IAElB7/V,OAAOquC,eAAes0T,EAAW/6V,UAAW,WAAY,CACpD4nB,IAAK,WAGD,IAFA,IAAIm0U,EAAW1B,GACX2B,EAAW5jW,OAAOoqB,KAAK7qB,KAAKi0K,KAAKqwL,MAC5B/8V,EAAI,EAAGA,EAAI88V,EAAS78V,OAAQD,IAAK,CACtC,IAAIuK,EAAMuyV,EAAS98V,GACfmB,EAAQ1I,KAAKi0K,KAAKqwL,KAAKxyV,GAC3B,GAAIpJ,EAAMtG,MAAQsG,EAAMkN,UAAYlN,EAAM67V,SACtC77V,EAAMtG,OAASsgW,GAA2B,CAC1C0B,EAAW17V,EAAMtG,KACjB,KACJ,CACJ,CACA,OAAOgiW,CACX,EACA/D,YAAY,EACZC,cAAc,IAKlB8C,EAAW/6V,UAAU6pB,WAAa,SAAU/qB,GACxCnH,KAAKi0K,KAAO9sK,EAAQ2sK,YACpB9zK,KAAKqjW,kBAAoBl8V,EAAQk8V,mBAAqB,OACtDrjW,KAAKiR,OAAS9J,EAAQ8J,OACtBjR,KAAKsjW,UAAYn8V,EAAQm8V,UACzBtjW,KAAKwkW,WAAaxkW,KAAKykW,mBAAmBzkW,KAAKokW,UAC/CpkW,KAAK0kW,WAAa1kW,KAAK2kW,cAAc3kW,KAAKokW,UAC1CpkW,KAAKyV,gBAAkBtO,EAAQsO,gBAC/BzV,KAAKyjW,iBAAmBt8V,EAAQs8V,gBACpC,EACAL,EAAW/6V,UAAUo8M,SAAW,SAAU/7M,GACjCA,EAIKw1V,EAAQx1V,EAAO1I,KAAKu2N,UAC1Bv2N,KAAKu2N,OAASsnI,EAAUn1V,GACxB1I,KAAK4kW,gBAAe,KALpB5kW,KAAKu2N,OAASv/M,EAAQ,IAAIrI,MAC1B3O,KAAK4kW,gBAAe,IAMxB5kW,KAAKmkW,kBACT,EAIAf,EAAW/6V,UAAU+sE,SAAW,WAC5B,IAAI+yM,EAAQnoR,KAEZ,OAAOA,KAAKi0K,KAAKvyI,gBAAgB1hC,KAAKiR,OAAQjR,KAAKokW,UAAUrgT,QADlD,SAAU7+C,EAAG2tH,GAAK,OAAO3tH,GAAgB,YAAX2tH,EAAEntH,MAAiC,cAAXmtH,EAAEntH,MAAwByiR,EAAM08E,YAAYhyO,EAAE5+G,QAAQ,GAAK,IAClD,EAC9E,EAIAmvV,EAAW/6V,UAAU2hL,SAAW,WAC5B,IAAK,IAAIziL,EAAI,EAAGA,EAAIvH,KAAK4jW,WAAWp8V,OAAQD,IACxC,IAAKvH,KAAK6kW,YAAY7kW,KAAK4jW,WAAWr8V,IAClC,OAAO,KAGf,OAAOs2V,EAAU79V,KAAK0I,MAC1B,EAIA06V,EAAW/6V,UAAUy8V,iBAAmB,SAAU7zV,GAC9C,OAAOjR,KAAKi0K,KAAKv8J,WAAW1X,KAAKgqL,WAAY/4K,EAAQjR,KAAKokW,SAC9D,EAIAhB,EAAW/6V,UAAU08V,iBAAmB,SAAUC,QACzB,IAAjBA,IAA2BA,EAAe,IAC9C,IAAI/zV,EAAS+zV,GAAgBhlW,KAAKiR,OAC9B6vB,EAAO9gC,KAAKi0K,KAAKv8J,WAAW1X,KAAK0I,MAAOuI,EAAQjR,KAAKokW,UACrDvtU,EAAO72B,KAAKikW,iBAAiBjkW,KAAK0I,MAAOuI,GAC7C,IAAKjR,KAAKyjW,kBAAoBzjW,KAAK6jW,sBAAsBtnT,UAAW,CAIhE,IAHA,IAAI0oT,EAAuB,GACvBC,EAAgBllW,KAAKi0K,KAAKv8J,WAAW1X,KAAK0I,MAAOuI,EAAQjR,KAAKokW,UAC9De,EAAiBnlW,KAAKolW,yBAAyBn0V,GAC1C1J,EAAI,EAAGA,EAAI29V,EAAc19V,OAAQD,IAAK,CAC3C,IAAI8M,EAASwiB,EAAKknP,QAAQx2Q,GAC1B,GAA6B,YAAzBsvB,EAAK4rU,QAAQl7V,GAAG7B,KAChBu/V,GAAwBnkU,EAAKv5B,QAE5B,GAAIvH,KAAKqlW,wBAAwBhxV,GAAS,CAC3C,IAAIixV,EAAkBtlW,KAAKulW,mBAAmB1uU,EAAMtvB,GACpD,GAAe,MAAX8M,EAAgB,CAChB,IAAImxV,GAAgB1C,GAAW9iW,KAAKqlW,wBAAwBhxV,IAtK9D,GAsK0F5C,WACxF,GAAI6zV,EAAgB99V,OA1KN,EA2KVy9V,GAAwBE,EAAe9wV,GAAQ9M,QAG/C,GAAIvH,KAAKqlW,wBAAwBhxV,GAE7B4wV,GADwBrC,GAAQ0C,EAAgB99V,OAASg+V,EAAah+V,QAAUg+V,EAGhFj+V,GAAK+9V,EAAgB99V,OAAS,OAG9By9V,GAAwBE,EAAe9wV,GAAQ9M,EAG3D,MAEI,GAAIvH,KAAKqlW,wBAAwBhxV,GAAS,CAClCmxV,EAAexlW,KAAKqlW,wBAAwBhxV,GAAQ5C,WAExDwzV,GADwBrC,GAAQ0C,EAAgB99V,OAASg+V,EAAah+V,QAAUg+V,EAGhFj+V,GAAK+9V,EAAgB99V,OAAS,CAClC,MAEIy9V,GAAwBE,EAAe9wV,GAAQ9M,EAG3D,MAEI09V,GAAwBnkU,EAAKv5B,EAErC,CACAu5B,EAAOmkU,CACX,CAEA,OADajlW,KAAK40C,MAAM9T,EAAMjK,EAElC,EAIAusU,EAAW/6V,UAAU+8V,yBAA2B,SAAUJ,GACtD,IAAI78E,EAAQnoR,UACS,IAAjBglW,IAA2BA,EAAe,IAC9C,IAAI/zV,EAAS+zV,GAAgBhlW,KAAKiR,OAC9Bw0V,EAA0B,CAC1BhhW,EAAK,GACLI,EAAK,GACLP,EAAK,GACLY,EAAK,GACLV,EAAK,GACLI,EAAK,GACLI,EAAK,GACLC,EAAK,GACLd,EAAK,GACLu2P,EAAK,IAST,OAPAj6P,OAAOoqB,KAAK7qB,KAAK6jW,sBAAsBC,kBAAkBxiW,SAAQ,SAAUwQ,GACvE,IAAI8E,EAAOuxQ,EAAMu9E,mBAAmB5zV,GAAK8E,KACzC,GAAIA,EAAM,CACN,IAAI+uV,EAAuBx9E,EAAMl0G,KAAKv8J,WAAWd,EAAM3F,EAAQk3Q,EAAMi8E,UACrEqB,EAAwB3zV,GAAO6zV,CACnC,CACJ,IACOF,CACX,EACArC,EAAW/6V,UAAUu8V,eAAiB,SAAUl8V,GAE5C,IADA,IAAIs7V,EAAehkW,KAAKikW,iBAAiBjkW,KAAK0I,MAAO1I,KAAKiR,QAAQ8sQ,QACzDx2Q,EAAI,EAAGA,EAAIy8V,EAAax8V,OAAQD,IACrCvH,KAAKkkW,YAAYF,EAAaz8V,GAAImB,EAE1C,EAIA06V,EAAW/6V,UAAUw8V,YAAc,SAAUxwV,GACzC,OAAQA,GACJ,IAAK,IAAK,OAAOrU,KAAKgd,KACtB,IAAK,IACL,IAAK,IAAK,OAAOhd,KAAKyF,MACtB,IAAK,IAAK,OAAOzF,KAAK4W,KACtB,IAAK,IAAK,OAAO5W,KAAK4W,MAAQ5W,KAAKyF,OAASzF,KAAKgd,KACjD,IAAK,IACL,IAAK,IAAK,OAAOhd,KAAKkd,MACtB,IAAK,IACL,IAAK,IAAK,OAAOld,KAAK+F,UACtB,IAAK,IAAK,OAAO/F,KAAK6W,QACtB,IAAK,IAAK,OAAO7W,KAAKmd,QACtB,IAAK,IAAK,OAAOnd,KAAKod,aACtB,QACI,OAAO,EAEnB,EACAgmV,EAAW/6V,UAAU67V,YAAc,SAAU7vV,EAAQ3L,GACjD,OAAQ2L,GACJ,IAAK,IAEDrU,KAAKgd,KAAOtU,GACE,IAAVA,GACA1I,KAAKu2N,OAAO74M,YAAY,KAE5B,MACJ,IAAK,IAED1d,KAAKyF,MAAQiD,GACC,IAAVA,GACI1I,KAAKyjW,kBACLzjW,KAAKu2N,OAAO+lI,SAAS,GAG7B,MACJ,IAAK,IACDt8V,KAAK4W,KAAOlO,EACZ,MACJ,IAAK,IACL,IAAK,IACD1I,KAAKkd,MAAQxU,EACb,MACJ,IAAK,IACL,IAAK,IACD1I,KAAK+F,UAAY2C,EACjB,MACJ,IAAK,IACD1I,KAAK6W,QAAUnO,EACf,MACJ,IAAK,IACD1I,KAAKmd,QAAUzU,EACf,MACJ,IAAK,IACD1I,KAAKod,aAAe1U,EAKxB1I,KAAKgqL,YACLhqL,KAAKmkW,kBAEb,EACAf,EAAW/6V,UAAUu9V,WAAa,SAAUvxV,EAAQyJ,GAChD,GAAKrV,GAAU4L,IAAY5L,GAAUqV,IAAsB,IAAXA,EAAhD,CAGA,IAEI+nV,EAFAvxR,EAAWupR,EAAU79V,KAAK0I,OAC1Bo9V,GAAe,EAEfC,EAAqB,MAAX1xV,EACV2xV,EAAmB,MAAX3xV,GAA6B,MAAXA,EAC1B4xV,EAAejmW,KAAK6kW,YAAYxwV,GACpC,GAAKrU,KAAKyjW,mBAAqBuC,IAASD,EA8KpC,OAAQ1xV,GACJ,IAAK,IACDigE,EAAS52D,YAAY42D,EAASn9D,cAAgB2G,GAC9C,MACJ,IAAK,IACDw2D,EAAWypR,EAAU/9V,KAAK0I,MAAOoV,GACjC,MACJ,IAAK,IACL,IAAK,IACDw2D,EAAS90C,QAAQ80C,EAASt9D,UAAY8G,GACtC,MACJ,IAAK,IACL,IAAK,IACDw2D,EAAS92D,SAAS82D,EAASl9D,WAAa0G,GACxCgoV,GAAe,EACf,MACJ,IAAK,IACDxxR,EAASmqG,WAAWnqG,EAASj9D,aAAeyG,GAC5CgoV,GAAe,EACf,MACJ,IAAK,IACDxxR,EAASsqG,WAAWtqG,EAASh9D,aAAewG,GAC5CgoV,GAAe,EACf,MACJ,IAAK,IACDxxR,EAASuqG,gBAAgBvqG,EAAS/8D,kBAAoBuG,GACtD,MACJ,IAAK,IACDw2D,EAAS92D,SAAS82D,EAASl9D,WAAc,GAAK0G,GAC9CgoV,GAAe,MA3MuB,CAC9C,IAAIhC,EAAmB9jW,KAAK6jW,sBAAsBC,kBAAoB,CAAC,EACnEoC,EAAuBlmW,KAAKqlW,wBAAwBhxV,GACpD2I,EAAO8mV,EAAiB3/V,EAAEuE,OAAS4rE,EAASn9D,cAC5C1R,EAAQq+V,EAAiBx/V,EAAEoE,OAAS4rE,EAASp9D,WAC7C+F,EAAM6mV,EAAiBt/V,EAAEkE,OAASo7V,EAAiBr/V,EAAEiE,OAAS4rE,EAASt9D,UACvE8mV,EAAOgG,EAAiBl/V,EAAE8D,OAASo7V,EAAiBj/V,EAAE6D,OAAS4rE,EAASl9D,WACxEP,EAAUitV,EAAiB9+V,EAAE0D,OAAS4rE,EAASj9D,aAC/C8F,EAAU2mV,EAAiB7+V,EAAEyD,OAAS4rE,EAASh9D,aAC/C8F,EAAe0mV,EAAiBppG,EAAEhyP,OAAS4rE,EAAS/8D,kBACxD,OAAQlD,GACJ,IAAK,IACD2I,GAAQc,EACR,MACJ,IAAK,IACDrY,GAASqY,EACT,MACJ,IAAK,IACL,IAAK,IACDb,GAAOa,EASf,GAAe,MAAXzJ,EAAgB,CAChB,IAAK5O,EAAQ,GAAKA,EAAQ,KAClBwgW,EAGA,OAFAjmW,KAAKkkW,YAAY7vV,GAAQ,QACzBrU,KAAKmmW,uBAAuB9xV,GAIpC,IAAK4xV,EAAc,CACf,GAAIxgW,EAAQ,EACRA,EAAQ8zQ,GAAa9zQ,EAAQ,GAAM,EAArB,GAAyB,EAAG,QAEzC,CACD,IAAI2gW,EAAa39V,GAAUy9V,GACvBzgW,GACEqY,EArWR,GAqWoC,GAClCrY,EAAQ8zQ,GAAM6sF,EAAY,EAAG,GACjC,CACA3gW,EAAQ8zQ,GAAM9zQ,EAAO,EAAG,GAC5B,CACAA,EAAQ8zQ,GAAM9zQ,EAAO,EAAG,GAC5B,MACK,GAAe,MAAX4O,EACL,GAAI4xV,GACA,GAAIhpV,GAAO,GAAKA,EAAM,GAGlB,OAFAjd,KAAKkkW,YAAY7vV,GAAQ,QACzBrU,KAAKmmW,uBAAuB9xV,QAI/B,IAAK4xV,EAAc,CACpB,GAAIx9V,GAAUy9V,KACNjpV,GAAO,GAAKA,EAAM,IAGlB,OAFAjd,KAAKkkW,YAAY7vV,GAAQ,QACzBrU,KAAKmmW,uBAAuB9xV,GAIpC,GAAIyJ,EAAS,EAAG,CACZ,IAAIuoV,EAAW59V,GAAUy9V,GAAwBjpV,EAAW,GAAK5Z,KAAKoU,IAAIqG,EAAS,IAA5B,EACvDb,EAAMs8P,GAAM8sF,EAAU,EAAG,GAC7B,KACK,CACGA,EAAW59V,GAAUy9V,GAAwBjpV,EAAMa,EAAS,GAChEb,EAAMs8P,GAAM8sF,EAAU,EAAG,GAC7B,CACAppV,EAAMs8P,GAAMt8P,EAAK,EAAG,GACxB,CAEJ,IAAIqpV,EAAgB/O,EAAWv6U,EAAMvX,EAAOwX,EAAK6gV,EAAMjnV,EAASsG,EAASC,GACrEmpV,EAAoBR,GAAWC,EAC/BhmW,KAAKwmW,0BAA0BlyR,EAAUjgE,EAAQ0xV,EAAUtgW,EAAQwX,GACnE,KACAwpV,EAAsBxD,GAAoBqD,EAAetpV,EAAMvX,EAAOwX,EAAK6gV,EAAMjnV,EAASsG,EAASC,GACnGpd,KAAKgqL,YAAci5K,GAAoBqD,EAAetpV,EAAMvX,EAAOwX,EAAK6gV,EAAMjnV,EAASsG,EAASC,IAChGk3D,EAAWupR,EAAUyI,GACrBtmW,KAAK0mW,2BAEAX,GAAWQ,EACZA,EAAkBrvV,aAAezR,EAC7BzF,KAAK6kW,YAAY,KACb4B,GACAnyR,EAAWupR,EAAUyI,GACrBtmW,KAAKmmW,uBAAuB9xV,KAG5BwxV,GAAmB,EACnB7lW,KAAK2mW,mBAAmBtyV,EAAQ,CAC5B3L,MAAOjD,EACPmR,KAAMinV,EAAU0I,GAChBxC,gBAAiBjmV,EACjBy+B,UAAWshT,EAAU79V,KAAK0I,SAE9B1I,KAAKkkW,YAAY7vV,GAAQ,IAGxBoyV,GACLzmW,KAAKmmW,uBAAuB9xV,GAC5BigE,EAAWupR,EAAUyI,GACjBtmW,KAAK6kW,YAAY,MAAQ7kW,KAAK6kW,YAAY,OAE1C7kW,KAAKkkW,YAAY,KAAK,GACtBlkW,KAAKmmW,uBAAuB,QAIhCnmW,KAAKmmW,uBAAuB9xV,GAC5BigE,EAAWupR,EAAU0I,KAIzBV,GAAmB,EACnB7lW,KAAK2mW,mBAAmBtyV,EAAQ,CAC5B3L,MAAOjD,EACPmR,KAAMinV,EAAU0I,GAChBxC,gBAAiBjmV,EACjBy+B,UAAWshT,EAAU79V,KAAK0I,SAE9B1I,KAAKkkW,YAAY7vV,GAAQ,IAGxB2xV,GAASO,IACVA,EAAkBvvV,YAAciG,EAC5Bjd,KAAK6kW,YAAY,KACb4B,GACAnyR,EAAWupR,EAAUyI,GACrBtmW,KAAKmmW,uBAAuB9xV,KAG5BwxV,GAAmB,EACnB7lW,KAAK2mW,mBAAmBtyV,EAAQ,CAC5B3L,MAAOuU,EACPrG,KAAMinV,EAAU0I,GAChBxC,gBAAiBjmV,EACjBy+B,UAAWshT,EAAU79V,KAAK0I,SAE9B1I,KAAKkkW,YAAY7vV,GAAQ,IAGxBoyV,GACLnyR,EAAWupR,EAAUyI,GACrBtmW,KAAKmmW,uBAAuB9xV,GACxBrU,KAAK6kW,YAAY,MAAQ7kW,KAAK6kW,YAAY,OAE1C7kW,KAAKkkW,YAAY,KAAK,GACtBlkW,KAAKmmW,uBAAuB,QAIhCnmW,KAAKmmW,uBAAuB9xV,GAC5BigE,EAAWupR,EAAU0I,KAIzBV,GAAmB,EACnB7lW,KAAK2mW,mBAAmBtyV,EAAQ,CAC5B3L,MAAOuU,EACPrG,KAAMinV,EAAU79V,KAAK0I,OACrBq7V,gBAAiBjmV,EACjBy+B,UAAWshT,EAAU79V,KAAK0I,SAE9B1I,KAAKkkW,YAAY7vV,GAAQ,IAGrC,CAoCIrU,KAAK4mW,2BACLtyR,EAAWt0E,KAAK6mW,iBAAiBvyR,IAEjCwxR,IAAiB9lW,KAAKsjW,YAAahvR,EAASt9D,UAAchX,KAAKu2N,OAAOv/M,WAMrE6uV,IACD7lW,KAAKkkW,YAAY7vV,GAAQ,GACzBrU,KAAKu2N,OAASjiJ,EACVt0E,KAAKgqL,YACLhqL,KAAKmkW,mBApOb,CAuOJ,EAIAf,EAAW/6V,UAAUy+V,UAAY,SAAUhI,GAsBvC,IArBA,IAAIzqV,EAASyqV,EAAGzqV,OAAQ0yV,EAAcjI,EAAGiI,YAAaC,EAAoBlI,EAAGkI,kBAAmBC,EAAoBnI,EAAGmI,kBAAmBC,EAAgBpI,EAAGqI,aAAcC,EAAatI,EAAGsI,WAAYC,EAAiBvI,EAAGuI,eACvNC,GAAiBL,EACjBM,EAAYvnW,KAAKikW,iBAAiBjkW,KAAK0I,MAAO1I,KAAKiR,QACnDu2V,EAAoBD,EAAU9E,QAC7BlzU,QAAO,SAAUnqB,GAAK,MAAkB,YAAXA,EAAEM,IAAoB,IACnDmV,KAAI,SAAUzV,EAAGkU,GAClB,MAAO,CACHmuV,cAAenuV,EACf5T,KAAMN,EAAEM,KACRuO,QAAS7O,EAAE6O,QACX+E,QAAS,GAEjB,IACI0uV,EAAgBH,EAAU9E,QACzB5nV,KAAI,SAAUzV,GACf,MAAO,CACHM,KAAMN,EAAEM,KACRuO,QAAS7O,EAAE6O,QACX6sB,KAAM,GAEd,IACSv5B,EAAI,EAAGA,EAAIigW,EAAkBhgW,OAAQD,IAAK,CAE/C,IADA,IAAIogW,EAAWH,EAAkBjgW,GACxBwjC,EAAI,EAAGA,EAAI48T,EAAS1zV,QAAQzM,OAAQujC,IACrCy8T,EAAkBjgW,EAAIwjC,KACtBy8T,EAAkBjgW,EAAIwjC,GAAG/xB,QAAU2uV,EAAS1zV,QAAQ82B,IAG5DxjC,GAAKogW,EAAS1zV,QAAQzM,OAAS,CACnC,CACA,IAASD,EAAI,EAAGA,EAAImgW,EAAclgW,OAAQD,IAAK,CAE3C,IADIogW,EAAWD,EAAcngW,GACpBwjC,EAAI,EAAGA,EAAI48T,EAAS1zV,QAAQzM,OAAQujC,IACrC28T,EAAcngW,EAAIwjC,KAClB28T,EAAcngW,EAAIwjC,GAAGjK,KAAO6mU,EAAS1zV,QAAQ82B,IAGrDxjC,GAAKogW,EAAS1zV,QAAQzM,OAAS,CACnC,CACA,IAGIogW,EAAc,CACdl/V,MAAO,KACPm/V,cAAc,EACdC,UANkBR,GAA4B,MAAXjzV,GAAkBkzV,EAAU9E,QAC9DlzU,QAAO,SAAUnqB,GAAK,MAAkB,UAAXA,EAAEM,IAAkB,IACjDinD,MAAK,SAAUvnD,GAAK,OAAOA,EAAE6O,QAAQzM,OA3kBZ,CA2kBsD,IAKhFugW,oBAAoB,GAExB,IAAKhB,EAAa,CACd,IAAIO,EAkBA,OAHAtnW,KAAKgoW,mBACLhoW,KAAKkkW,YAAY7vV,GAAQ,GACzBrU,KAAKmmW,uBAAuB9xV,GACrBtR,GAAO6kW,EAAa,CAAEl/V,MAAO,KAAMm/V,cAAc,IAjBxD,IAAStgW,EAAI,EAAGA,EAAIigW,EAAkBhgW,OAAQD,IAAK,CAC/C,IAAIyR,EAAUwuV,EAAkBjgW,GAAGyR,QAC/BivV,EAA4Bf,EAAcrmU,WAAW7nB,GACrDkvV,EAA0BhB,EAAciB,SAASnvV,GACjDovV,EAAiClB,EAAcvxV,QAAQqD,EAAUA,IAAY,EACjF,GAAIivV,GAA6BC,GAA2BE,EAIxD,OAHApoW,KAAKgoW,mBACLhoW,KAAKkkW,YAAY7vV,GAAQ,GACzBrU,KAAKmmW,uBAAuB9xV,GACrBtR,GAAO6kW,EAAa,CAAEl/V,MAAO,KAAMm/V,cAAc,GAEhE,CAQR,CACA,IAAIQ,EAAWroW,KAAKi0K,KAAKv8J,WAAW1X,KAAK0I,MAAO1I,KAAKiR,OAAQjR,KAAKokW,UAC9DkE,EAAaf,EAAUxpF,QACvBwqF,GAAW,EACXvoV,EAAS,GACThM,EAAU,GACVwxV,EAAe,GACfgD,EAAa,GACbC,EAAa,GACbC,EAAS,GACTC,EAAsB,GAC1B,IAASphW,EAAI,EAAGA,EAAImgW,EAAclgW,OAAQD,IACtCohW,GAAuBjB,EAAcngW,GAAGu5B,KAE5C,IAAI8nU,EAAkB5oW,KAAKiR,SAAWq3V,GACjCtoW,KAAKiR,SAAW03V,GAChB3oW,KAAKiR,SAAWo2V,GAChBrnW,KAAKiR,OAAOzJ,SAAW6/V,EAAe7/V,OACvCqhW,GAAsBD,EAAiBD,EAAsBtB,GAAgB1xV,QAAQtB,GAErFy0V,GADoBF,EAAiBD,EAAsBtB,GAAgBpuV,YAAY5E,GACpDw0V,EAAqB,EACxDE,EAAyB1B,EAAe7/V,OAAS0/V,EAAc1/V,OACnE,GAAI8/V,IAAmBA,IAAkBtnW,KAAKyjW,iBAAmB,CAC7D,IAASl8V,EAAI,EAAGA,EAAI8gW,EAAS7gW,OAAQD,IAAK,CACtC,GAAI+gW,EAAW/gW,KAAO8M,EAElBL,GADehU,KAAK6kW,YAAYxwV,GACVg0V,EAAS9gW,GAAK,IAChCwhW,EAAyB,EACrBvD,EAAah+V,OAASuhW,EAAyBD,IAC/CtD,GAAgB0B,EAAc3/V,IAAM,IAIxCi+V,GAAgB0B,EAAc3/V,IAAM,GAExCghW,GAAW,OAELA,GAKNG,GAAUL,EAAS9gW,GACnBkhW,GAAcJ,EAAS9gW,KALvByY,GAAUqoV,EAAS9gW,GACnBihW,GAAcH,EAAS9gW,GAM/B,CACA,GAAIqhW,IACID,EAAoBnhW,OAAS0/V,EAAc1/V,OAC3Cg+V,GAAgBuB,GAEVK,IAAcC,EAAe7/V,OAAS0/V,EAAc1/V,QAG1Dg+V,EAAah+V,OAASshW,GACtB,OAAO/lW,GAAO6kW,EAAa,CAAEl/V,MAAO,KAAMm/V,cAAc,IAGhE,IAAKe,GAAmBA,IAAmB5oW,KAAKyjW,iBAAmB,CAC/DzvV,EAAU,GACVwxV,EAAe,GACfxlV,EAAS,GACT0oV,EAAS,GACTH,GAAW,EACX,IAAShhW,EAAI,EAAGA,EAAI8/V,EAAe7/V,OAAQD,IAAK,CAC5C,GAAI8/V,EAAe9/V,KAAO8M,EAEtBL,GADehU,KAAK6kW,YAAYxwV,GACVg0V,EAAS9gW,IAAM,GAAK,IACtCwhW,EAAyB,EACrBvD,EAAah+V,OAASuhW,EAAyBD,IAC/CtD,GAAgB0B,EAAc3/V,IAAM,IAIxCi+V,GAAgB0B,EAAc3/V,IAAM,GAExCghW,GAAW,OAELA,EAING,GAAUxB,EAAc3/V,EAAIwhW,IAA2B,GAHvD/oV,GAAUknV,EAAc3/V,IAAM,EAKtC,CACI8/V,EAAe7/V,OAAS0/V,EAAc1/V,SACtCg+V,GAAgBuB,EAExB,CACJ,CACA,IAAKO,EACD,GAAItnW,KAAKyjW,iBAAkB,CACvBzvV,EAAU,GACVwxV,EAAe,GACfxlV,EAAS,GACT0oV,EAAS,GACTH,GAAW,EACX,IAAShhW,EAAI,EAAGA,EAAI8gW,EAAS7gW,OAAQD,IAAK,CACtC,GAAI+gW,EAAW/gW,KAAO8M,EAElBL,GADehU,KAAK6kW,YAAYxwV,GACVg0V,EAAS9gW,GAAK,IACpCghW,GAAW,OAELA,EAING,GAAUL,EAAS9gW,GAHnByY,GAAUqoV,EAAS9gW,EAK3B,CACJ,MAEIyM,EAAUgzV,EAAoBxB,EAAexxV,EAGrD,IAAIg1V,EAAa,KACbvjW,EAAQzF,KAAKipW,WAAWlC,GACxBmC,EAAYlpW,KAAKmpW,eAAepC,EAAa1yV,GAC7C+0V,EAAoC,MAAhBrC,EACpBrD,EAAc1jW,KAAK0jW,aAAe,CAAC,EACnC0F,GACqB,MAAjB5D,IACAA,EAAexxV,GAKC,IAHF8uV,GAAWkE,EACzBD,GACCO,EAAgB9B,EAAexxV,GAAW+yV,IACrB/mW,KAAKqpW,YAAY9B,EAAU9E,QAASpuV,IAC1DrU,KAAKspW,qBAAqBj1V,IAI9BrU,KAAKgoW,mBAET,IAAIuB,EAAcvpW,KAAKupW,YAAYhC,EAAU9E,QAASpuV,GAClDm1V,EAAeD,EAAcA,EAAYt1V,QAAU,KACnD2tB,EAAgB5hC,KAAK4hC,cAAc4nU,IAAiBA,EAAahiW,OACrE,GAAI8/V,GACIF,IAAe5B,EAEf,OADAxlW,KAAKkkW,YAAY7vV,GAAQ,GAClBtR,GAAO6kW,EAAa,CAAEl/V,MAAO,KAAMm/V,cAAc,IAGhE,IAAI4B,EAAmBz1V,EAAQxM,OAAS,EACpCkiW,GAAW,EACXphM,EAASg/L,EAAgB9B,EAAexxV,EAC5C,IAASzM,EAAIlE,KAAK8V,IAAI,EAAGswV,GAAmBliW,GAAKyM,EAAQxM,QAChDkiW,EADwDniW,IAAK,CAIlE+gK,EAAS0+L,EACLD,EACAO,EACI9B,EACCxxV,EAAQhJ,UAAUzD,GAAKw/V,GAC5BO,GAAkBtnW,KAAKyjW,mBACvBiG,GAAW,EACXphM,EAAShsJ,GAAUgsJ,GAEnBA,EAASs6L,GAAQhhU,EAAgB0mI,EAAO9gK,QAAU8gK,GAEtD,IAAIqhM,EAAenwV,SAAS8uJ,EAAQ,IAChCshM,EAAsB5pV,EAASsoJ,EAASogM,EAC5CM,EAAahpW,KAAKi0K,KAAK31J,UAAUsrV,EAAqB5pW,KAAKiR,OAAQjR,KAAKokW,UACxE,IAAIyF,GAA+B,EAC/BvC,IAAkBpE,GAAY8F,IAQ1BhpW,KAAKyjW,mBACLuF,EAAahpW,KAAKi0K,KAAK31J,UAAUkqV,EAAalgM,EAASmgM,EAAYzoW,KAAKiR,OAAQjR,KAAKokW,UACrFyF,GAA+B,GAGvC,IAAIC,GAAyBhhW,MAAM0Q,SAASutV,EAAa,MAASO,GAAiBF,GAA8B,KAAhBL,EACjG,IAAKiC,IAAelgW,MAAM6gW,IAAiBG,GAAyB9pW,KAAKyjW,iBAAkB,CACvF,GAzxBG,MAyxBCpvV,IAA4B5O,EAAO,CAEnC,IAAIskW,EAAcJ,EAzxBhB,EA0xBEI,GAAe,GAAKA,EAAc,MAClCf,EAAanL,EAAU79V,KAAK0I,QACjB4zV,SAASyN,GAChBf,EAAW9xV,aAAe6yV,IAC1Bf,EAAa3mU,EAAe07T,EAAUiL,GAAa,KAG/D,CACe,MAAX30V,IACA20V,EAAazR,EAAW/9U,SAAS8uJ,EAAQ,IAAKtoK,KAAKyF,MAAQzF,KAAK0I,MAAMwO,WAAa,EAAGlX,KAAK4W,KAAO5W,KAAK0I,MAAMsO,UAAY,EAAGhX,KAAKkd,MAAQld,KAAK0I,MAAM0O,WAAa,EAAGpX,KAAK6W,QAAU7W,KAAK0I,MAAM2O,aAAe,EAAGrX,KAAKmd,QAAUnd,KAAK0I,MAAM4O,aAAe,EAAGtX,KAAKod,aAAepd,KAAK0I,MAAM6O,kBAAoB,IACzS+vV,GAAiBpE,GAAY8F,KAC7B1B,GAAiB0B,IAAgBhpW,KAAK4W,MAAQoyV,EAAWhyV,YAAchX,KAAK0I,MAAMsO,YACpFgyV,EAAa3mU,EAAe07T,EAAUiL,GAAa,KAG/D,CACA,GAAK1B,GAAiBpE,GAAY8F,KAAkB1B,GAAiB0B,EAAa,CAG9E,IAAIgB,GAAchqW,KAAKiqW,KAAK3hM,EAAQkhM,GAChCU,GAAmBL,EACnB,GAAKrB,EAAawB,GAAcvB,EAChC,GAAKzoV,EAASgqV,GAActB,EAC5ByB,GAAanqW,KAAKi0K,KAAK31J,UAAU4rV,GAAkBlqW,KAAKiR,OAAQjR,KAAKokW,UAErEgG,KADqBpqW,KAAK0jW,aAAe,CAAC,GAAGrvV,IAAW,GAChBiI,GAAUgsJ,GAAQ9gK,QAAWo6B,EACrEimU,GAA8B,OAAfsC,KACdzG,EAAYrvV,GACTm1V,EAAahiW,QAAU8gK,EAAO9gK,OAC9B4iW,IA0BR,OAzBIpqW,KAAK4mW,2BACLoC,EAAahpW,KAAK6mW,iBAAiBmC,IAEvChpW,KAAKu2N,OAASyyI,EACdhpW,KAAKkkW,YAAY7vV,GAAQ,GACzBrU,KAAKmmW,uBAAuB9xV,GACvBrU,KAAKyjW,mBACS,MAAXpvV,EACIrU,KAAK6kW,YAAY,MAAQ7kW,KAAK6kW,YAAY,OAE1C7kW,KAAKkkW,YAAY,KAAK,GACtBlkW,KAAKmmW,uBAAuB,MAGhB,MAAX9xV,GACDrU,KAAK6kW,YAAY,MAAQ7kW,KAAK6kW,YAAY,OAE1C7kW,KAAKkkW,YAAY,KAAK,GACtBlkW,KAAKmmW,uBAAuB,MAG/BnmW,KAAK+nW,sBACN/nW,KAAK0mW,2BAGN3jW,GAAO6kW,EAAa,CAAEl/V,MAAO1I,KAAK0I,MAAOm/V,aAAcA,IAClE,CACJ,CACA,GAAIpiW,IACAujW,EAAahpW,KAAKi0K,KAAK31J,UAAU0B,EAASva,EAAQijW,EAAQ1oW,KAAKiR,OAAQjR,KAAKokW,WAIxE,OAFApkW,KAAKu2N,OAASyyI,EACdhpW,KAAKkkW,YAAY7vV,GAAQ,GAClBtR,GAAO6kW,EAAa,CAAEl/V,MAAO1I,KAAK0I,MAAOm/V,cAAc,IAGtE,GAAIqB,IACAF,EAAahpW,KAAKi0K,KAAK31J,UAAU0B,EAASkpV,EAAYR,EAAQ1oW,KAAKiR,SAG/D,OADAjR,KAAKu2N,OAASyyI,EACPjmW,GAAO6kW,EAAa,CAAEl/V,MAAO1I,KAAK0I,MAAOm/V,cAAc,IAMtE,GAHIuB,GACAppW,KAAKkkW,YAAY7vV,GAAQ,IAExBrU,KAAKyjW,iBAAkB,CACxB,IAAI4G,QAAgB,EAChBC,GAAchD,EAAgB9B,EAAel9L,EAC7Cp4F,GAAc4yR,GAAWwH,IAC7B,GAAIj1S,GAAS6a,IAAc,CACvB,GAAgB,MAAX77D,IAAmB67D,IAAe,GAAKA,GAAc,KAC1C,MAAX77D,IAAmB67D,GAAc,GAAKA,GAAc,IACrD,OAAOntE,GAAO6kW,EAAa,CAAEl/V,MAAO,KAAMm/V,cAAc,IAE5DwC,GAA2B,MAAXh2V,EACZ67D,GAh3BE,EAi3BFA,GACJ,IAAI61R,GAAqB,MAAX1xV,EACV2xV,GAAmB,MAAX3xV,EACRigE,GAAWupR,EAAU79V,KAAKu2N,QAC1ButI,GAAmB9jW,KAAK6jW,sBAAsBC,kBAAoB,CAAC,EACnE9mV,GAAO8mV,GAAiB3/V,EAAEuE,OAAS4rE,GAASn9D,cAE5CozV,GAAUxE,GAAUsE,GAAgBvG,GAAiBx/V,EAAEoE,OAAS4rE,GAASp9D,WAEzE+F,GAAM+oV,GAAQqE,GAAgBvG,GAAiBt/V,EAAEkE,OAASo7V,GAAiBr/V,EAAEiE,OAAS4rE,GAASt9D,UAC/F8mV,GAAOgG,GAAiBl/V,EAAE8D,OAASo7V,GAAiBj/V,EAAE6D,OAAS4rE,GAASl9D,WACxEP,GAAUitV,GAAiB9+V,EAAE0D,OAAS4rE,GAASj9D,aAC/C8F,GAAU2mV,GAAiB7+V,EAAEyD,OAAS4rE,GAASh9D,aAC/C8F,GAAe0mV,GAAiBppG,EAAEhyP,OAAS4rE,GAAS/8D,kBACpD+uV,GAAgB/O,EAAWv6U,GAAMutV,GAASttV,GAAK6gV,GAAMjnV,GAASsG,GAASC,IACvEqpV,GAAsBxD,GAAoBqD,GAAetpV,GAAMutV,GAASttV,GAAK6gV,GAAMjnV,GAASsG,GAASC,IACrGmpV,GAAoBR,IAAWC,GAC/BhmW,KAAKwmW,0BAA0BlyR,GAAUjgE,EAAQ0xV,GAAUwE,GAAUttV,IACrE,KACA4oV,IAAmB,EAmFvB,GAlFIE,IAAWQ,GACPA,GAAkBrvV,aAAeqzV,GAC7BvqW,KAAK6kW,YAAY,KACb4B,IACAnyR,GAAWupR,EAAUyI,IACrBtmW,KAAKmmW,uBAAuB9xV,KAG5BwxV,IAAmB,EACnB7lW,KAAK2mW,mBAAmBtyV,EAAQ,CAC5B3L,MAAO6hW,GACP3zV,KAAMinV,EAAU0I,IAChBhqT,UAAWshT,EAAU79V,KAAK0I,SAE9B1I,KAAKkkW,YAAY7vV,GAAQ,IAGxBoyV,IACLzmW,KAAKmmW,uBAAuB9xV,GAC5BigE,GAAWupR,EAAUyI,IACjBtmW,KAAK6kW,YAAY,MAAQ7kW,KAAK6kW,YAAY,OAE1C7kW,KAAKkkW,YAAY,KAAK,GACtBlkW,KAAKmmW,uBAAuB,QAIhCnmW,KAAKmmW,uBAAuB9xV,GAC5BigE,GAAWupR,EAAU0I,MAIzBV,IAAmB,EACnB7lW,KAAK2mW,mBAAmBtyV,EAAQ,CAC5B3L,MAAO6hW,GACP3zV,KAAMinV,EAAU0I,IAChBhqT,UAAWshT,EAAU79V,KAAK0I,SAE9B1I,KAAKkkW,YAAY7vV,GAAQ,IAGxB2xV,IAASO,KACVA,GAAkBvvV,YAAciG,GAC5Bjd,KAAK6kW,YAAY,KACb4B,IACAnyR,GAAWupR,EAAUyI,IACrBtmW,KAAKmmW,uBAAuB9xV,KAG5BwxV,IAAmB,EACnB7lW,KAAK2mW,mBAAmBtyV,EAAQ,CAC5B3L,MAAOuU,GACPrG,KAAMinV,EAAU0I,IAChBhqT,UAAWshT,EAAU79V,KAAK0I,SAE9B1I,KAAKkkW,YAAY7vV,GAAQ,IAGxBoyV,IACLnyR,GAAWupR,EAAUyI,IACrBtmW,KAAKmmW,uBAAuB9xV,GACxBrU,KAAK6kW,YAAY,MAAQ7kW,KAAK6kW,YAAY,OAE1C7kW,KAAKkkW,YAAY,KAAK,GACtBlkW,KAAKmmW,uBAAuB,QAIhCnmW,KAAKmmW,uBAAuB9xV,GAC5BigE,GAAWupR,EAAU0I,MAIzBV,IAAmB,EACnB7lW,KAAK2mW,mBAAmBtyV,EAAQ,CAC5B3L,MAAOuU,GACPrG,KAAMinV,EAAU79V,KAAK0I,OACrB6zC,UAAWshT,EAAU79V,KAAK0I,SAE9B1I,KAAKkkW,YAAY7vV,GAAQ,MAG5BwxV,GAAkB,CAEnB,GADA7lW,KAAKkkW,YAAY7vV,GAAQ,GACrBizV,IAAkBpE,GAAY8F,GAAa,CAC3C,IAAIwB,GAAiBxqW,KAAKi0K,KAAK31J,UAAUkqV,EAAalgM,EAASmgM,EAAYzoW,KAAKiR,OAAQjR,KAAKokW,UACzFlB,GAAYsH,MACZxqW,KAAKu2N,OAASi0I,GAEtB,MAEIxqW,KAAKu2N,OAASjiJ,GAEdt0E,KAAKgqL,YACLhqL,KAAKmkW,kBAEb,CACI0D,IAAe,EAcnB,OAXQA,GAFO,MAAXxzV,EACI67D,IAAe,GAAKo6R,GAAY9iW,QAAU,EAQ/BohW,EACX0B,GAAY9iW,SAAWshW,EACvBwB,GAAY9iW,OAASshW,EAEtB/lW,GAAO6kW,EAAa,CACvBl/V,MAAO,KACPm/V,aAAcA,GACdE,mBAAoBlC,IAE5B,CACJ,CACA,OAAO9iW,GAAO6kW,EAAa,CAAEl/V,MAAO,KAAMm/V,cAAc,GAC5D,EAIAzE,EAAW/6V,UAAUoiW,UAAY,SAAUp2V,GACvC,OAAOrU,KAAKi0K,KAAKvyI,gBAAgB1hC,KAAKiR,OAAQjR,KAAKokW,UAAUrgT,OAAO8+S,GAAe,CAAC,GAAGxuV,EAC3F,EAIA+uV,EAAW/6V,UAAU2/V,iBAAmB,WACpC,IAAI0C,EAAsC,OAArB1qW,KAAK0jW,YAE1B,OADA1jW,KAAK2qW,eAAe,MACbD,CACX,EACAtH,EAAW/6V,UAAUsiW,eAAiB,SAAUjH,GAC5C1jW,KAAK0jW,YAAcA,CACvB,EAIAN,EAAW/6V,UAAUuiW,eAAiB,WAClC,OAAO5qW,KAAK0jW,aAAe,CAAC,CAChC,EAIAN,EAAW/6V,UAAUw+V,iBAAmB,SAAUjwV,GAC9C,IAAKnO,GAAUmO,GACX,OAAOA,EAEX,IAAIi0V,EAhlCW,SAAUj0V,GAC7B,OAAKnO,GAAUmO,IAAS9N,MAAM8N,EAAK3N,WACxB,EAEJ4J,OAAO+D,EACTO,cACA1F,WACA5K,OAAO,GAChB,CAwkC2BikW,CAAiBl0V,GAChCm0V,EAAc/qW,KAAKgrW,yBAAyBH,GAEhD,OADqB7H,GAASpsV,EAAMm0V,EAAcF,EAEtD,EACAzH,EAAW/6V,UAAUihW,qBAAuB,SAAUj1V,GAClD,IAAIqvV,EAAc1jW,KAAK0jW,aAAe,CAAC,EACvCA,EAAYrvV,IAAWqvV,EAAYrvV,IAAW,GAAK,EACnDrU,KAAK0jW,YAAcA,CACvB,EAIAN,EAAW/6V,UAAUghW,YAAc,SAAU94V,EAAO8D,GAChD,IAAIJ,EAAUjU,KAAKupW,YAAYh5V,EAAO8D,GACtC,MAAwB,UAAjBJ,EAAQvO,MAAoBuO,EAAQU,KAC/C,EAIAyuV,EAAW/6V,UAAUkhW,YAAc,SAAUh5V,EAAO8D,GAChD,OAAO9D,EAAMgf,QAAO,SAAU7kB,GAAQ,OAAyC,IAAlCA,EAAKuJ,QAAQ0B,QAAQtB,EAAgB,IAAG,EACzF,EAIA+uV,EAAW/6V,UAAU4hW,KAAO,SAAUvhW,EAAOuL,GACzC,IAAIg3V,EAAYviW,EAAMjG,QAAQ,MAAO,IAAM,IAC3C,OAAOmgW,GAAQ3uV,EAAQzM,OAASyjW,EAAUzjW,QAAUyjW,CACxD,EAIA7H,EAAW/6V,UAAU4gW,WAAa,SAAUiC,GAExC,GADAlrW,KAAK2jW,gBAAkBuH,EAAUryV,cACF,IAA3B7Y,KAAKwkW,WAAWh9V,OAChB,MAAO,GAEX,KAAOxH,KAAK2jW,eAAen8V,OAAS,GAAG,CACnC,IAAK,IAAID,EAAI,EAAGA,EAAIvH,KAAKwkW,WAAWh9V,OAAQD,IACxC,GAAsE,IAAlEvH,KAAKwkW,WAAWj9V,GAAGsR,cAAclD,QAAQ3V,KAAK2jW,gBAC9C,OAAO3jW,KAAKwkW,WAAWj9V,GAG/B,IAAI4jW,EAAa3xV,SAASxZ,KAAK2jW,eAAgB,IAE/C,GAAIwH,GAAc,GAAKA,GAAc,IAAMA,EAAW15V,aAAezR,KAAK2jW,eACtE,OAAO3jW,KAAKwkW,WAAW2G,EAAa,GAExCnrW,KAAK2jW,eAAiB3jW,KAAK2jW,eAAe34V,UAAU,EAAGhL,KAAK2jW,eAAen8V,OAC/E,CACA,MAAO,EACX,EAIA47V,EAAW/6V,UAAU8gW,eAAiB,SAAU+B,EAAW72V,GACvD,IAAI+2V,EAAaF,EAAUryV,cAC3B,GAAe,MAAXxE,GAAkBrU,KAAK0kW,WAAY,CACnC,GAAI1kW,KAAK0kW,WAAW2G,GAAGxyV,cAAcgoB,WAAWuqU,GAC5C,OAAOprW,KAAK0kW,WAAW2G,GAEtB,GAAIrrW,KAAK0kW,WAAW4G,GAAGzyV,cAAcgoB,WAAWuqU,GACjD,OAAOprW,KAAK0kW,WAAW4G,EAE/B,CACA,MAAO,EACX,EAIAlI,EAAW/6V,UAAUo8V,mBAAqB,SAAUtwL,QACjC,IAAXA,IAAqBA,EAAS,MAElC,IADA,IAAIo3L,EAAkBvrW,KAAKi0K,KAAKvyI,gBAAgB1hC,KAAKiR,OAAQjR,KAAKokW,UACzD78V,EAAI,EAAGA,EAAIgkW,EAAgB/jW,OAAQD,IACxC,GAAgC,UAA5BgkW,EAAgBhkW,GAAG7B,MAAoB6lW,EAAgBhkW,GAAGoN,MAC1D,OAAO3U,KAAKi0K,KAAK7xI,gBAAgB+xI,EAAQo3L,EAAgBhkW,GAAGoN,OAGpE,MAAO,EACX,EAIAyuV,EAAW/6V,UAAUs8V,cAAgB,SAAUxwL,QAC5B,IAAXA,IAAqBA,EAAS,MAElC,IADA,IAAIo3L,EAAkBvrW,KAAKi0K,KAAKvyI,gBAAgB1hC,KAAKiR,QAC5C1J,EAAI,EAAGA,EAAIgkW,EAAgB/jW,OAAQD,IACxC,GAAgC,cAA5BgkW,EAAgBhkW,GAAG7B,MAAwB6lW,EAAgBhkW,GAAGoN,MAC9D,OAAO3U,KAAKi0K,KAAK7xI,gBAAgB+xI,EAAQo3L,EAAgBhkW,GAAGoN,OAGpE,OAAO,IACX,EAIAyuV,EAAW/6V,UAAUu5B,cAAgB,SAAU3tB,GAC3C,MAAmB,MAAfA,EAAQ,GACD,EAEPkvV,GAA4B51V,KAAK0G,GAC1B,EAEJ,CACX,EAIAmvV,EAAW/6V,UAAU47V,iBAAmB,SAAUrtV,EAAM3F,GAIpD,IAHA,IAAIs6V,EAAkBvrW,KAAKi0K,KAAKvyI,gBAAgBzwB,EAAQjR,KAAKokW,UACzD7zV,EAAQ,GACRkyV,EAAU,GACLl7V,EAAI,EAAGA,EAAIgkW,EAAgB/jW,OAAQD,IAExC,IADA,IAAIikW,EAAaxrW,KAAKi0K,KAAKv8J,WAAWd,EAAM,CAAE3C,QAASs3V,EAAgBhkW,GAAG0M,SAAWjU,KAAKokW,UAAU58V,OAC7FgkW,EAAa,GAChBj7V,EAAM5O,KAAK3B,KAAK+9Q,QAAQwtF,EAAgBhkW,GAAG0M,QAAQ,KAAOyuV,IAC1DD,EAAQ9gW,KAAK4pW,EAAgBhkW,IAC7BikW,IAGR,IAAIC,EAAc,IAAIjJ,GAGtB,OAFAiJ,EAAY1tF,QAAUxtQ,EAAM1F,KAAK,IACjC4gW,EAAYhJ,QAAUA,EACfgJ,CACX,EAIArI,EAAW/6V,UAAUusC,MAAQ,SAAU9T,EAAMjK,GAQzC,IANA,IAAI60U,EAAa,GACbC,EAAe,GACf16V,EAAS4lB,EAAKknP,QACd6tF,GAA0B,EAC1BC,EAA2B,EAC3B1G,EAAiBnlW,KAAKolW,yBAAyBn0V,GAC1C66V,EAAoB76V,EAAOzJ,OAAS,EAAGskW,GAAqB,EAAGA,IAAqB,CACzF,IAAIxG,EAAkBtlW,KAAKulW,mBAAmB1uU,EAAMi1U,GACpD,IAA4D,IAAxD9rW,KAAK4jW,WAAWjuV,QAAQ1E,EAAO66V,KAA8B9rW,KAAK6kW,YAAY5zV,EAAO66V,IACjF9rW,KAAKyjW,iBACLiI,EAAa5qU,EAAKgrU,GAAqBJ,EAGnC5qU,EAAKt5B,SAAWyJ,EAAOzJ,OACnBokW,EACAF,EAAa5qU,EAAKgrU,GAAqBJ,EAElCG,EAA2B,GAChCH,EAAa5qU,EAAKgrU,GAAqBJ,IACvCG,GACgC,IAC5BD,GAA0B,IAI9BF,GAAc5qU,EAAKgrU,EAAoBhrU,EAAKt5B,OAASyJ,EAAOzJ,SAAW,IAAMkkW,EAIjFA,EAAa5qU,EAAKgrU,GAAqBJ,EAG/CC,EAAe16V,EAAO66V,GAAqBH,MAE1C,CACD,IAAIt3V,EAASpD,EAAO66V,GAChBC,EAA4B,EAChC,GAAI/rW,KAAKyjW,mBAAsBzjW,KAAKyjW,mBAAqBzjW,KAAKqlW,wBAAwBhxV,GAAU,CAC5F,KAAOy3V,GAAqB,GAAKz3V,IAAWpD,EAAO66V,IAC/CA,IAEJA,GACJ,CACA,GAAI9rW,KAAK0jW,aAAe1jW,KAAK0jW,YAAYrvV,GACrCq3V,EAAa,IAAMA,OAGnB,IAAK1rW,KAAKyjW,kBAAoBzjW,KAAKqlW,wBAAwBhxV,GAAS,CAChE,IAAImxV,EAAexlW,KAAKqlW,wBAAwBhxV,GAAQ5C,WACxD,GAAe,MAAX4C,EAEA,GADAmxV,GAAgB1C,GAAW9iW,KAAKqlW,wBAAwBhxV,IAhtC9D,GAgtC0F5C,WAChF6zV,EAAgB99V,OAptCV,EAqtCNkkW,EAAavG,EAAe9wV,GAAQy3V,GAAqBJ,OAGzDlG,GAAgB1C,GAAW9iW,KAAKqlW,wBAAwBhxV,IArtClE,GAqtC8F5C,WAEpFi6V,EADwB9I,GAAQ0C,EAAgB99V,OAASg+V,EAAah+V,QAAUg+V,EAC/CkG,EACjCK,EAA4BzG,EAAgB99V,OAAS,EACrDqkW,EAA2BrG,EAAah+V,OAAS89V,EAAgB99V,YAKrEkkW,EADwB9I,GAAQ0C,EAAgB99V,OAASg+V,EAAah+V,QAAUg+V,EAC/CkG,EACjCK,EAA4BzG,EAAgB99V,OAAS,EACrDqkW,EAA2BrG,EAAah+V,OAAS89V,EAAgB99V,MAEzE,MAEIkkW,EAAa1rW,KAAKkiC,cAAcrL,EAAK4rU,QAAQqJ,IAAsBJ,EAG3E,KAAOC,EAAankW,OAASkkW,EAAWlkW,QACpCmkW,EAAe16V,EAAO66V,GAAqBH,EAEb,IAA9BI,IACAD,EAAqBA,EAAoBC,GAA8BjrU,EAAKt5B,OAASyJ,EAAOzJ,QAEpG,CACJ,CACA,MAAO,CAAEs5B,KAAM4qU,EAAYz6V,OAAQ06V,EACvC,EAIAvI,EAAW/6V,UAAU65B,cAAgB,SAAUx3B,GAC3C,IAAI24V,EAAoBrjW,KAAKqjW,mBAAqB,OAClD,OAAIA,EAAkB34V,EAAKhF,MAChB29V,EAAkB34V,EAAKhF,MAER,kBAAtB29V,EACO34V,EAAKuJ,QAETjU,KAAKi0K,KAAK/xI,cAAczhC,OAAOC,OAAOgK,EAAM,CAAEo3B,SAAUuhU,IACnE,EAIAD,EAAW/6V,UAAU2iW,yBAA2B,SAAUH,GACtD,OAAOA,EAAe7qW,KAAKyV,gBAxwCP,KACD,GA0wCvB,EAIA2tV,EAAW/6V,UAAUu+V,uBAAyB,WAC1C,OAAO5mW,KAAKi0K,KAAKvyI,gBAAgB1hC,KAAKiR,QAAQ07C,MAAK,SAAUjiD,GAAQ,MAAwB,OAAjBA,EAAKuJ,OAAkB,GACvG,EACAmvV,EAAW/6V,UAAU87V,iBAAmB,WACpC,IAAIh8E,EAAQnoR,KACZA,KAAK6jW,sBAAsBtnT,UAAY,KACvC97C,OAAOoqB,KAAK7qB,KAAK6jW,sBAAsBC,kBAAkBxiW,SAAQ,SAAUwQ,GACvEq2Q,EAAM6jF,qBAAqBl6V,EAC/B,GACJ,EACAsxV,EAAW/6V,UAAU89V,uBAAyB,SAAU9xV,GACpD,IAAI8zQ,EAAQnoR,KACZA,KAAKgsW,qBAAqB33V,GAC1B,IAAI43V,GAAyB,EAC7BxrW,OAAOoqB,KAAK7qB,KAAK6jW,sBAAsBC,kBAAkBxiW,SAAQ,SAAUwQ,GACnEq2Q,EAAM07E,sBAAsBC,iBAAiBhyV,IAC7CrJ,GAAU0/Q,EAAM07E,sBAAsBC,iBAAiBhyV,GAAKpJ,SAC5DujW,GAAyB,EAEjC,IACIA,GACAjsW,KAAKmkW,kBAEb,EACAf,EAAW/6V,UAAU2jW,qBAAuB,SAAU33V,GAC9CrU,KAAK6jW,sBAAsBC,iBAAiBzvV,KAC5CrU,KAAK6jW,sBAAsBC,iBAAiBzvV,GAAU,CAClD3L,MAAO,KACPkO,KAAM,KACNmtV,gBAAiB,GAG7B,EAIAX,EAAW/6V,UAAUq9V,mBAAqB,SAAUrxV,GAEhD,OADsBrU,KAAK6jW,sBAAsBC,iBAAiBzvV,IACxC,CAAC,CAC/B,EAIA+uV,EAAW/6V,UAAUg9V,wBAA0B,SAAUhxV,GAErD,OADsBrU,KAAK6jW,sBAAsBC,iBAAiBzvV,IACvC,CAAC,GAAG3L,KACnC,EACA06V,EAAW/6V,UAAUs+V,mBAAqB,SAAUtyV,EAAQyqV,GACxD,IAAIiE,EAAKjE,EAAGp2V,MAAOA,OAAe,IAAPq6V,EAAgB,KAAOA,EAAIn8D,EAAKk4D,EAAGloV,KAAMA,OAAc,IAAPgwR,EAAgB,KAAOA,EAAI28D,EAAKzE,EAAGiF,gBAAiBA,OAAyB,IAAPR,EAAgB,EAAIA,EAAIC,EAAK1E,EAAGviT,UAAWA,OAAmB,IAAPinT,EAAgB,KAAOA,EAC3NxjW,KAAK6jW,sBAAsBC,iBAAiBzvV,KAC5CrU,KAAK6jW,sBAAsBC,iBAAiBzvV,GAAQ3L,MAAQA,EAC5D1I,KAAK6jW,sBAAsBC,iBAAiBzvV,GAAQuC,KAAOA,EAC3D5W,KAAK6jW,sBAAsBC,iBAAiBzvV,GAAQ0vV,gBAAkBA,EACtE/jW,KAAK6jW,sBAAsBtnT,UAAYA,EAE/C,EAIA6mT,EAAW/6V,UAAU0/V,mBAAqB,WACtC,IAAI5/E,EAAQnoR,KACR+nW,GAAqB,EAOzB,OANAtnW,OAAOoqB,KAAK7qB,KAAK6jW,sBAAsBC,kBAAkBxiW,SAAQ,SAAUwQ,GACnEq2Q,EAAM07E,sBAAsBC,iBAAiBhyV,IAC7CrJ,GAAU0/Q,EAAM07E,sBAAsBC,iBAAiBhyV,GAAKpJ,SAC5Dq/V,GAAqB,EAE7B,IACOA,CACX,EAIA3E,EAAW/6V,UAAU6jW,2BAA6B,SAAUt1V,EAAMvC,EAAQyJ,GACtE,IAAIw2D,EAAWupR,EAAUjnV,GACrBkvV,GAAe,EACnB,OAAQzxV,GACJ,IAAK,IACDigE,EAAS52D,YAAY42D,EAASn9D,cAAgB2G,GAC9C,MACJ,IAAK,IACDw2D,EAAWypR,EAAU/9V,KAAK0I,MAAOoV,GACjC,MACJ,IAAK,IACL,IAAK,IACDw2D,EAAS90C,QAAQ80C,EAASt9D,UAAY8G,GACtC,MACJ,IAAK,IACL,IAAK,IACDw2D,EAAS92D,SAAS82D,EAASl9D,WAAa0G,GACxCgoV,GAAe,EACf,MACJ,IAAK,IACDxxR,EAASmqG,WAAWnqG,EAASj9D,aAAeyG,GAC5CgoV,GAAe,EACf,MACJ,IAAK,IACDxxR,EAASsqG,WAAWtqG,EAASh9D,aAAewG,GAC5CgoV,GAAe,EACf,MACJ,IAAK,IACDxxR,EAASuqG,gBAAgBvqG,EAAS/8D,kBAAoBuG,GACtD,MACJ,IAAK,IACDw2D,EAAS92D,SAAS82D,EAASl9D,WAAc,GAAK0G,GAC9CgoV,GAAe,EAIvB,MAAO,CACHlvV,KAAM09D,EACNwxR,aAAcA,EAEtB,EAIA1C,EAAW/6V,UAAUm+V,0BAA4B,SAAU5vV,EAAMvC,EAAQ3L,GACrE,IAAI4rE,EAAWupR,EAAUjnV,GACzB,OAAQvC,GACJ,IAAK,IACDigE,EAAS52D,YAAYhV,GACrB,MACJ,IAAK,IACD4rE,EAAWypR,EAAUnnV,EAAMlO,EAAQkO,EAAKM,YACxC,MACJ,IAAK,IACL,IAAK,IACDo9D,EAAS90C,QAAQ92B,GACjB,MACJ,IAAK,IACL,IAAK,IAYL,IAAK,IACD4rE,EAAS92D,SAAS9U,GAClB,MAXJ,IAAK,IACD4rE,EAASmqG,WAAW/1K,GACpB,MACJ,IAAK,IACD4rE,EAASsqG,WAAWl2K,GACpB,MACJ,IAAK,IACD4rE,EAASuqG,gBAAgBn2K,GAOjC,OAAO4rE,CACX,EACA8uR,EAAW/6V,UAAUq+V,wBAA0B,WAC3C1mW,KAAK4kW,gBAAe,EACxB,EAIAxB,EAAW/6V,UAAUk9V,mBAAqB,SAAU1uU,EAAMs1U,GAGtD,IAFA,IAAIC,EAAcv1U,EAAK4rU,QAAQ0J,GAC3B7G,EAAkB,GACb+G,EAAgBF,EAAWE,EAAgBx1U,EAAK4rU,QAAQj7V,OAAQ6kW,IAAiB,CACtF,IAAI3hW,EAAOmsB,EAAK4rU,QAAQ4J,GACxB,GAAID,EAAY1mW,OAASgF,EAAKhF,MAAQ0mW,EAAYn4V,UAAYvJ,EAAKuJ,QAI/D,MAHAqxV,EAAgB3jW,KAAK+I,EAK7B,CACA,IAAS2hW,EAAgBF,EAAY,EAAGE,GAAiB,EAAGA,IAAiB,CACrE3hW,EAAOmsB,EAAK4rU,QAAQ4J,GACxB,GAAID,EAAY1mW,OAASgF,EAAKhF,MAAQ0mW,EAAYn4V,UAAYvJ,EAAKuJ,QAI/D,MAHAqxV,EAAgBn7V,QAAQO,EAKhC,CACA,OAAO46V,CACX,EACOlC,CACX,CA57C+B,GA87C3BkJ,GACW,EADXA,GAEQ,GAFRA,GAGK,EAHLA,GAIO,GAJPA,GAMY,GANZA,GAOU,GAPVA,GAQa,GARbA,GASY,GATZA,GAWK,GAXLA,GAYM,GAKNt6L,GAAiB,CACjB3nK,OAAQ,CAAC,GAETf,GAA4B,WAC5B,SAASA,EAAWnC,GAChBnH,KAAKmH,QAAUqB,GAAW,CAAC,EAAGwpK,GAAgB7qK,EAClD,CAsBA,OArBAmC,EAAWjB,UAAUrG,QAAU,WAC/B,EAIAsH,EAAWjB,UAAU+B,QAAU,SAAUX,EAAW4tB,QACnC,IAATA,IAAmBA,EAAO,CAAC,GAC/B,IAAI6xC,EAAY,CACZqjS,kBAAkB,EAClBpjW,eAAgB,WACZ+/D,EAAUqjS,kBAAmB,CACjC,GAEJ,MA7hDgD,mBA6hDjCvsW,KAAKmH,QAAQkD,OAAOZ,KAC/BzJ,KAAKmH,QAAQkD,OAAOZ,GAAW1G,GAAOmmE,EAAW7xC,EAAM,CACnD/sB,OAAQtK,QAELkpE,EAAUqjS,iBAGzB,EACOjjW,CACX,CA1B+B,IA6B/B,SAAWi5V,GACPA,EAA+B,KAAI,OACnCA,EAAgC,MAAI,QACpCA,EAAoC,UAAI,WAC3C,CAJD,CAIGA,KAA6BA,GAA2B,CAAC,IAG5D,IACIthK,GAAa,YACbx8G,GAAO,OACP+nR,GAAc,aACdC,GAAa,YACbC,GAAW,UACXx4H,GAAQ,QACR0rF,GAAQ,QACR+sC,GAAW,UACXnmI,GAAQ,QACRC,GAAO,OACPmmI,GAAQ,QACRC,GAAe,iBACfC,GAAc,aACdC,GAAe,cACfC,GAAY,WACZC,GAAW,UACXC,GAAY,WACZhwT,GAAS,SACTiwT,GAA0B,CAC1Bl8V,OAAQ,IACRm8V,gBAAgB,EAChB5nV,YAAa,KACb89U,WAAW,EACXnvL,OAAQ,KACRsyF,MAAO,CACH4mG,YA1BmB,EA2BnB12O,OA3BmB,EA4BnB22O,OA5BmB,EA6BnBxP,KA7BmB,EA8BnB7gV,IA9BmB,EA+BnBxX,MA/BmB,EAgCnBuX,KAhCmB,GAkCvBqmV,kBAAmB,KACnBh5V,QAASy0V,GAAK,CAAC,EACXA,GAAGiO,IAAgB,KACnBjO,GAAGl/B,IAAS,KACZk/B,GAAGkO,IAAa,KAChBlO,GAAGt4H,IAAS,KACZs4H,GAAGoO,IAAa,KAChBpO,GAAGr4H,IAAQ,KACXq4H,GAAGmO,IAAY,KACfnO,GAAG6N,IAAY,KACf7N,GAAGgO,IAAe,KAClBhO,GAAG5hT,IAAU,KACb4hT,IACJyO,6BAA6B,EAC7BC,kCAAkC,EAClCC,kBAAkB,EAClBC,gBAAgB,EAChBC,iBAAiB,EACjBC,eAAgB,GAChBn4V,gBAAiBitV,GACjBe,kBAAkB,EAClBoK,UAAU,GAEVC,GAA2B,SAAUC,GAErC,SAASD,EAAUjiW,EAAS1E,GACxB,IAAIghR,EAAQ4lF,EAAOxjW,KAAKvK,KAAMmH,IAAYnH,KAS1C,OARAmoR,EAAM80E,WAAa,KAGnB90E,EAAM6lF,YAAc,GACpB7lF,EAAM8lF,cAAgB,GACtB9lF,EAAM+lF,gBAAkB3L,GAAyB4L,KACjDhmF,EAAMimF,yBAA2B,CAAEt4V,MAAO,EAAGnK,IAAK,GAClDw8Q,EAAMhgR,KAAK0D,EAAS1E,GACbghR,CACX,CAolCA,OAhmCAs1E,EAAUqQ,EAAWC,GAarBttW,OAAOquC,eAAeg/T,EAAUzlW,UAAW,QAAS,CAChD4nB,IAAK,WACD,OAAOjwB,KAAKi9V,YAAcj9V,KAAKi9V,WAAWjzK,UAC9C,EACAq2K,YAAY,EACZC,cAAc,IAElBwN,EAAUzlW,UAAUF,KAAO,SAAU0D,EAAS1E,GAC1C,IAAIo3K,EAAY2kL,GAAYljW,KAAKmH,QAAQuB,OAASm1V,EAAU79V,KAAKmH,QAAQuB,OAAS,IAAIiG,KAAKxH,EAAQwxM,gBAC9FuqJ,GAAY3kL,KACbA,EAAY,MAEhBv+K,KAAK6L,QAAUA,EAEf7L,KAAKmH,QAAUqB,GAAW,CAAC,EAAG2kW,GAAyBhmW,GACvDnH,KAAKi0K,KAAOj0K,KAAKmH,QAAQ2sK,YACzB9zK,KAAKi9V,WAAaj9V,KAAKquW,mBACvBruW,KAAKi9V,WAAWx4I,SAASlmC,GACzBv+K,KAAKsuW,mBACLtuW,KAAKi5H,aACLj5H,KAAKgnW,mBAAoB,EACzBhnW,KAAKkuW,gBAAkB3L,GAAyB4L,KAChDnuW,KAAKuuW,aACT,EACAT,EAAUzlW,UAAUrG,QAAU,WAC1BhC,KAAKy5H,eACLz5H,KAAKi9V,WAAa,KAClB8Q,EAAO1lW,UAAUrG,QAAQuI,KAAKvK,KAClC,EACA8tW,EAAUzlW,UAAU4wH,WAAa,WAC7Bj5H,KAAKwuW,mBAAqBxuW,KAAKwuW,mBAAmBhlW,KAAKxJ,MACvDA,KAAK6L,QAAQpK,iBAAiBw/L,GAAYjhM,KAAKwuW,oBAC/CxuW,KAAKyuW,cAAgBzuW,KAAKyuW,cAAcjlW,KAAKxJ,MAC7CA,KAAK6L,QAAQpK,iBAAiBgjF,GAAMzkF,KAAKyuW,eACzCzuW,KAAK0uW,eAAiB1uW,KAAK0uW,eAAellW,KAAKxJ,MAC/CA,KAAK6L,QAAQpK,iBAAiByyO,GAAOl0O,KAAK0uW,gBAC1C1uW,KAAK2uW,mBAAqB3uW,KAAK2uW,mBAAmBnlW,KAAKxJ,MACvDA,KAAK6L,QAAQpK,iBAAiBgrW,GAAYzsW,KAAK2uW,oBAC/C3uW,KAAK6L,QAAQpK,iBAAiB+qW,GAAaxsW,KAAK2uW,oBAChD3uW,KAAK4uW,iBAAmB5uW,KAAK4uW,iBAAiBplW,KAAKxJ,MACnDA,KAAK6L,QAAQpK,iBAAiBirW,GAAU1sW,KAAK4uW,kBAC7C5uW,KAAK6uW,eAAiB7uW,KAAK6uW,eAAerlW,KAAKxJ,MAC/CA,KAAK6L,QAAQpK,iBAAiBm+T,GAAO5/T,KAAK6uW,gBAC1C7uW,KAAK8uW,iBAAmB9uW,KAAK8uW,iBAAiBtlW,KAAKxJ,MACnDA,KAAK6L,QAAQpK,iBAAiBkrW,GAAU3sW,KAAK8uW,kBAC7C9uW,KAAK+uW,eAAiB/uW,KAAK+uW,eAAevlW,KAAKxJ,MAC/CA,KAAK6L,QAAQpK,iBAAiB+kO,GAAOxmO,KAAK+uW,gBAC1C/uW,KAAKgvW,cAAgBhvW,KAAKgvW,cAAcxlW,KAAKxJ,MAC7CA,KAAK6L,QAAQpK,iBAAiBglO,GAAMzmO,KAAKgvW,eACzChvW,KAAKivW,gBAAkBjvW,KAAKivW,gBAAgBzlW,KAAKxJ,MACjDA,KAAK6L,QAAQpK,iBAAiBy7C,GAAQl9C,KAAKivW,iBAC3CjvW,KAAKkvW,eAAiBlvW,KAAKkvW,eAAe1lW,KAAKxJ,MAC/CA,KAAK6L,QAAQpK,iBAAiBmrW,GAAO5sW,KAAKkvW,gBAC1ClvW,KAAKmvW,oBAAsBnvW,KAAKmvW,oBAAoB3lW,KAAKxJ,MACzDA,KAAK6L,QAAQpK,iBAAiBorW,GAAc7sW,KAAKmvW,qBACjDnvW,KAAK6L,QAAQpK,iBAAiBqrW,GAAa9sW,KAAKmvW,oBACpD,EACArB,EAAUzlW,UAAUoxH,aAAe,WAC/Bz5H,KAAK6L,QAAQ5J,oBAAoBg/L,GAAYjhM,KAAKwuW,oBAClDxuW,KAAK6L,QAAQ5J,oBAAoBwiF,GAAMzkF,KAAKyuW,eAC5CzuW,KAAK6L,QAAQ5J,oBAAoBuqW,GAAaxsW,KAAK2uW,oBACnD3uW,KAAK6L,QAAQ5J,oBAAoBwqW,GAAYzsW,KAAK2uW,oBAClD3uW,KAAK6L,QAAQ5J,oBAAoByqW,GAAU1sW,KAAK4uW,kBAChD5uW,KAAK6L,QAAQ5J,oBAAoBiyO,GAAOl0O,KAAK0uW,gBAC7C1uW,KAAK6L,QAAQ5J,oBAAoB29T,GAAO5/T,KAAK6uW,gBAC7C7uW,KAAK6L,QAAQ5J,oBAAoB0qW,GAAU3sW,KAAK8uW,kBAChD9uW,KAAK6L,QAAQ5J,oBAAoBukO,GAAOxmO,KAAK+uW,gBAC7C/uW,KAAK6L,QAAQ5J,oBAAoBwkO,GAAMzmO,KAAKgvW,eAC5ChvW,KAAK6L,QAAQ5J,oBAAoBi7C,GAAQl9C,KAAKivW,iBAC9CjvW,KAAK6L,QAAQ5J,oBAAoB2qW,GAAO5sW,KAAKkvW,gBAC7ClvW,KAAK6L,QAAQ5J,oBAAoB4qW,GAAc7sW,KAAKmvW,qBACpDnvW,KAAK6L,QAAQ5J,oBAAoB6qW,GAAa9sW,KAAKmvW,oBACvD,EACArB,EAAUzlW,UAAU6pB,WAAa,SAAU/qB,EAASwX,QAChC,IAAZA,IAAsBA,GAAU,GACpC3e,KAAKmH,QAAUqB,GAAW,CAAC,EAAGxI,KAAKmH,QAASA,GAC5CnH,KAAKovW,uBACDzwV,IACA3e,KAAKy5H,eACLz5H,KAAKmI,KAAKnI,KAAK6L,QAAS7L,KAAKmH,SAErC,EAIA2mW,EAAUzlW,UAAU+mW,qBAAuB,WACvC,GAAIpvW,KAAKi9V,WAAY,CACjB,IAAI9oU,EAAan0B,KAAKqvW,uBACtBrvW,KAAKi9V,WAAW/qU,WAAWiC,EAC/B,CACJ,EAIA25U,EAAUzlW,UAAUinW,YAAc,WAC9BtvW,KAAKy5H,eACLz5H,KAAKmI,KAAKnI,KAAK6L,QAAS7L,KAAKmH,QACjC,EAIA2mW,EAAUzlW,UAAUi/V,cAAgB,WAChC,OAAOtnW,KAAKkuW,kBAAoB3L,GAAyBgN,KAC7D,EACAzB,EAAUzlW,UAAU09B,MAAQ,WACxB/lC,KAAK6L,QAAQk6B,QACT/lC,KAAKmH,QAAQomW,6BACbvtW,KAAKwvW,qBAAqB,EAElC,EAIA1B,EAAUzlW,UAAUmmW,mBAAqB,SAAU7pW,GAC/CA,EAAEwE,gBACN,EAIA2kW,EAAUzlW,UAAUomW,cAAgB,SAAU9pW,GAC1CA,EAAEwE,gBACN,EAIA2kW,EAAUzlW,UAAUsmW,mBAAqB,WACrC3uW,KAAKyvW,kBAAmB,EACxBzvW,KAAK0vW,wBAA0B1vW,KAAK0nS,QACxC,EAIAomE,EAAUzlW,UAAUumW,iBAAmB,SAAUjqW,GAC7C3E,KAAKyvW,kBAAmB,EACxB9qW,EAAEwE,gBACN,EAIA2kW,EAAUzlW,UAAUqmW,eAAiB,SAAU/pW,GAC3C3E,KAAKyvW,kBAAmB,EACxBzvW,KAAK2vW,iCAAkC,EACvC,IAAIzpU,EAAYlmC,KAAKkmC,UAOrB,GANIlmC,KAAKsnW,iBAILtnW,KAAKuuW,cAEQ,IAAb5pW,EAAEugC,aAKF,GAAIllC,KAAK0nS,UAAY1nS,KAAKmH,QAAQomW,4BAA6B,CAC3D,IAAIqC,EAAmB5vW,KAAK6L,QAAQi6B,iBAAmB9lC,KAAK6L,QAAQo6B,aAChE4pU,EAAqBpnW,GAAUzI,KAAKmH,QAAQqe,eAC3CxlB,KAAKi9V,WAAW7nR,aAChBp1E,KAAK0vW,wBAGNp2V,GADsBs2V,GAAoBC,EACb,EAAI7vW,KAAK2lC,QAAQ,GAClD3lC,KAAKwvW,qBAAqBl2V,EAC9B,MAEItZ,KAAK8vW,aAAa9vW,KAAK+vW,iBAAiB7pU,EAAUpwB,OAG9D,EAIAg4V,EAAUzlW,UAAUwmW,eAAiB,SAAUlqW,GAE3C,GADA3E,KAAKgwW,aAAa,CAAE7vV,MAAOxb,IACtB3E,KAAK6L,SAAY7L,KAAKi9V,WAA3B,CAGA,IAAI0S,EAAkC3vW,KAAK2vW,gCAC3C,GAAI3vW,KAAKiwW,kBAQL,OAPIjwW,KAAKmH,QAAQumW,iBAGb1tW,KAAKgnW,mBAAoB,GAE7BhnW,KAAKkwW,cAAcvrW,QACnB3E,KAAKiwW,mBAAoB,GAG7B,IAAIE,EAAenwW,KAAKmwW,cAAgB,CAAC,EACrCC,EAAiBD,EAAa7oU,UAAYglU,IAAqB6D,EAAar+V,MAAQ6wV,GACpF0N,EAAcF,EAAa7oU,UAAYglU,IAAkB6D,EAAar+V,MAAQ6wV,GAC9E2N,EAA0BtwW,KAAKkuW,iBAC/BluW,KAAKmH,QAAQumW,gBACb4C,IAA4B/N,GAAyBgN,OACpDc,GAAgBD,IACjBpwW,KAAKgnW,mBAAoB,GAEzBhnW,KAAKmH,QAAQumW,eACb1tW,KAAKkuW,gBAAkB3L,GAAyBgN,MAGhDvvW,KAAKkuW,gBAAkB3L,GAAyB1tI,UAEpD,IAAI07I,EAAWvwW,KAAKsnW,gBACpB,GAAIiJ,GAAYvwW,KAAKmwW,aAAar+V,MAAQ6wV,GAEtC3iW,KAAKwwW,qCAFT,CAKA,IAAIC,EAAuBzwW,KAAKi9V,YAAcj9V,KAAKi9V,WAAWjzK,WAC1D0mL,EAAe1wW,KAAKi9V,WAAaj9V,KAAKi9V,WAAWv0V,MAAQ,KACzDo2V,EAAK9+V,KAAKi9V,WAAW8H,mBAAoBiJ,EAAclP,EAAGh+T,KAAMmtU,EAAgBnP,EAAG7tV,OACvFjR,KAAKiuW,cAAgBA,EACrB,IAgBIlvU,EAt/DoB,SAAU+/T,GAKtC,IAAI6R,EAAU7R,EAAG6R,QAASC,EAAU9R,EAAG8R,QAASC,EAAgB/R,EAAG+R,cAAe/qU,EAAiBg5T,EAAGh5T,eAAgBwhU,EAAgBxI,EAAGwI,cAAewJ,EAAWhS,EAAGgS,SAClKC,EAAmBJ,EAAQ7qU,EAAiB6qU,EAAQnpW,OAASopW,EAAQppW,QACrEwpW,EAAiBL,EAAQ3lW,UAAU,EAAG86B,EAAiB6qU,EAAQnpW,OAASopW,EAAQppW,QAChFypW,EAAiBL,EAAQ5lW,UAAU,EAAG86B,GACtC/G,EAAO,GAEX,GAAIiyU,IAAmBC,GAAkBnrU,EAAiB,EAEtD,OADA/G,EAAKp9B,KAAK,CAACkvW,EAAc/qU,EAAiB,GAAImrU,EAAenrU,EAAiB,KACvE/G,EAEX,GAA+C,IAA3CiyU,EAAer7V,QAAQs7V,IAA0B3J,IAChDwJ,EAASh/V,MAAQ6wV,IAAcmO,EAASh/V,MAAQ6wV,KACL,IAA3CqO,EAAer7V,QAAQs7V,KAA0B3J,IACnB,IAA1B2J,EAAezpW,QACZqpW,EAAcI,EAAezpW,OAAS,KAAOqpW,EAAcI,EAAezpW,SAAW,CAE7F,IAAI0pW,EAAgB,GAKf5J,GAA2C,IAA1B2J,EAAezpW,QACjCu3B,EAAKp9B,KAAK,CAACkvW,EAAc,GAAII,EAAe,KAEhD,IAAK,IAAI1pW,EAAI0pW,EAAezpW,OAAQD,EAAIypW,EAAexpW,OAAQD,IACvDspW,EAActpW,KAAO2pW,GAAiBL,EAActpW,KAAOm7V,KAC3DwO,EAAgBL,EAActpW,GAC9Bw3B,EAAKp9B,KAAK,CAACuvW,EAAe,MAGlC,OAAOnyU,CACX,CAKA,GAAKuoU,IAC2C,IAA3C2J,EAAet7V,QAAQq7V,IACpBH,EAAc/qU,EAAiB,KAAO48T,MACxC4E,IAC8C,IAA3C2J,EAAet7V,QAAQq7V,IACpBH,EAAc/qU,EAAiB,KAAO48T,IAA6B,CAC3E,IAAIruV,EAASw8V,EAAc,GAC3B,IAAStpW,EAAIlE,KAAK8V,IAAI,EAAG63V,EAAexpW,OAAS,GAAID,EAAIspW,EAAcrpW,OAAQD,IAC3E,GAAIspW,EAActpW,KAAOm7V,GAA2B,CAChDruV,EAASw8V,EAActpW,GACvB,KACJ,CAEJ,MAAO,CAAC,CAAC8M,EAAQ48V,EAAenrU,EAAiB,IACrD,CAEA,MAAmD,MAA9CmrU,EAAeA,EAAezpW,OAAS,IACvCypW,EAAeA,EAAezpW,OAAS,KAAOupW,EACxC,CAAC,CAACF,EAAc/qU,EAAiB,GAAI48T,KAGnC,CAAC,CAACmO,EAAc/qU,EAAiB,GAAImrU,EAAenrU,EAAiB,IAEtF,CAs7DmBqrU,CAA0B,CACjCR,QAhBAJ,IACIH,GAAkBC,GAGbC,IAA4B/N,GAAyBgN,OAFhDvvW,KAAKoxW,qBAUTpD,EAKV4C,QAHU5wW,KAAKqxW,aAIfR,cAAe7wW,KAAKiuW,cACpBnoU,eAAgB9lC,KAAKkmC,UAAUpwB,MAC/BwxV,cAAeiJ,EACfO,SAAU9wW,KAAKmwW,eAKnB,GAHIpxU,GAAQA,EAAKv3B,QAAUu3B,EAAK,IAAMA,EAAK,GAAG,KAAO2jU,KACjD1iW,KAAK2vW,iCAAkC,IAEvCY,GAAcxxU,GAAwB,IAAhBA,EAAKv3B,OAA/B,CAIK,GAAI+oW,GAA4B,IAAhBxxU,EAAKv3B,OAAc,CACpC,IAAKu3B,EAAK,KAAOA,EAAK,GAAG,GAErB,YADA/+B,KAAKwwW,iCAGJ,GAAID,GAAYxxU,EAAK,KACrBA,EAAK,GAAG,KAAO2jU,IAA6B3jU,EAAK,GAAG,KAAO2jU,IAE5D,YADA1iW,KAAKwwW,gCAGb,CACA,IAAIc,EAAkC,IAAhBvyU,EAAKv3B,QAAgBu3B,EAAK,GAAG,KAAO2jU,GACtD6O,EAAoB,GACpBC,GAAa,EACb9iV,EAAQ,KACZ,IAAK4iV,EACD,IAAK,IAAI/pW,EAAI,EAAGA,EAAIw3B,EAAKv3B,OAAQD,IAAK,CAClC,IAAIkqW,EAAkBzxW,KAAKi9V,WAAW6J,UAAU,CAC5CzyV,OAAQ0qB,EAAKx3B,GAAG,GAChBw/V,YAAahoU,EAAKx3B,GAAG,GACrBy/V,kBAAmBhnW,KAAKgnW,kBACxBC,mBAAoBjnW,KAAKsnW,gBACzBH,aAAcnnW,KAAK6L,QAAQnD,MAC3B0+V,WAAYgJ,GAAkBC,EAC9BhJ,eAAgBrnW,KAAKiuW,gBAEzBsD,EAAkB5vW,KAAK8vW,GAClBA,EAAgB/oW,QACjBgmB,EAAQ,CAAEhpB,KAAM,UAEpB8rW,EAAaC,EAAgB5J,YACjC,CAEC7nW,KAAKmH,QAAQwmW,kBACd6D,GAAa,GAEjBxxW,KAAKgnW,mBAAoB,EACzB,IAUI0K,EAVA9I,EAAiB5oW,KAAKmH,QAAQ8J,SAAWjR,KAAKiuW,eAE7CxlW,GAAUzI,KAAKmH,QAAQ8J,SAAWjR,KAAKmH,QAAQ8J,OAAOzJ,OAAS,EAChEmqW,EAAkBJ,EAAkBA,EAAkB/pW,OAAS,GAC/DoqW,EAA4BD,IAAoBlpW,GAAUkpW,EAAgBjpW,OAC1EmpW,EAAyBtB,IAAaH,GAAkBC,IAAgBuB,EACxE9J,IAAY6J,GAAkBA,EAAgB7J,UAC9CgK,EAAuB9xW,KAAKi9V,WAAWjzK,WACvC+nL,GAA+B7T,EAAQuS,EAAsBqB,GAC7DE,EAAehyW,KAAKi9V,WAAWv0V,MAE/BupW,EAAmBjyW,KAAKkmC,UAC5B,GAAIqqU,EAAU,CACV,IAAI2B,EAAWnzU,GAAQA,EAAKv3B,OAAS,EAAIu3B,EAAK,GAAG,GAAK,KAClD2rU,EAAiB1qW,KAAKi9V,WAAW2N,iBAAiBsH,GAClDnzU,EAAKv3B,QAAUu3B,EAAK,GAAG,KAAO2jU,GAC1B8O,GACAxxW,KAAKmyW,2BACLnyW,KAAKoyW,kBAAkB,IAElBtK,GACL4J,EAAqB1xW,KAAKiuW,cAAcgE,EAAiBn8V,SAErD9V,KAAKuuW,cACLvuW,KAAK8vW,aAAa9vW,KAAKqyW,kBAAkBX,KAGzC1xW,KAAKwwW,iCAGJqB,GACL7xW,KAAKuuW,cACDxvU,EAAKv3B,QAAUu3B,EAAK,GAAG,KAAO2jU,IAC9B1iW,KAAK8vW,aAAa9vW,KAAKqyW,kBAAkBtzU,EAAK,GAAG,MAGhD6yU,EACU,MAAXjtW,EAAEyJ,MAAgBs8V,IAIbjiW,GAAUgoW,KAA0BhoW,GAAUqpW,GACnD9xW,KAAKwwW,kCAEC/nW,GAAUgoW,IAAyBhoW,GAAUqpW,GACnD9xW,KAAKmyW,2BAEA1pW,GAAUgoW,IAAyBhoW,GAAUqpW,GAC9CC,EACA/xW,KAAKmyW,2BAGLnyW,KAAKwwW,iCAGH/nW,GAAUgoW,IAA0BhoW,GAAUqpW,GAG/CpB,IAAiBsB,GAItBhyW,KAAKwwW,iCANLxwW,KAAKmyW,4BASHP,GAGDhJ,GACD5oW,KAAKmyW,4BAKRnyW,KAAKmH,QAAQwmW,iBAAmB5uU,EAAK,GAAG,KAAO2jU,KAKhD1iW,KAAK8vW,aAAa9vW,KAAKqyW,kBAAkBtzU,EAAK,GAAG,IAG7D,MACUwxU,IACNvwW,KAAKuuW,cACDxvU,EAAKv3B,QAAUu3B,EAAK,GAAG,KAAO2jU,IAC9B1iW,KAAK8vW,aAAa9vW,KAAKqyW,kBAAkBtzU,EAAK,GAAG,KAEjD/+B,KAAKmH,QAAQwmW,gBACT2D,GACAtxW,KAAKgnW,mBAAoB,EACpB2I,GACD3vW,KAAKoyW,kBAAkB,GAE3BpyW,KAAK2vW,iCAAkC,GAElC6B,IACLxxW,KAAKoyW,kBAAkB,GACvBpyW,KAAK2vW,iCAAkC,GAIvCgC,GAAmBA,EAAgB9J,aAGnC7nW,KAAKgnW,mBAAoB,EAEpBsK,IACLtxW,KAAKgnW,mBAAoB,EACpB2I,GACD3vW,KAAKoyW,kBAAkB,GAE3BpyW,KAAK2vW,iCAAkC,GAG3CS,GAAkBpwW,KAAKmH,QAAQqmW,kCAE/BxtW,KAAKoyW,mBAAmB,IAGhCpyW,KAAKsyW,sBAAsB,CACvBt8H,SAAUy6H,EACVtwV,MAAOxb,IAEX3E,KAAKuyW,gBAAgB,CAAEpyV,MAAOxb,EAAG+pB,MAAOA,IACpC6hV,GAIAvwW,KAAKsuW,kBA5JT,MAbItuW,KAAKwwW,gCAjCT,CAhCA,CA4OJ,EAIA1C,EAAUzlW,UAAU0mW,eAAiB,SAAUpqW,GACvC3E,KAAKwyW,aAAa,CAAEryV,MAAOxb,MAG/B3E,KAAK0nS,UAAW,EAChB1nS,KAAKkuW,gBAAkB3L,GAAyB4L,KAChDnuW,KAAK2vW,iCAAkC,EACvC3vW,KAAKyyW,sBACAzyW,KAAKyvW,kBACNzvW,KAAK2lC,MAAM,EAAG3lC,KAAKqxW,aAAa7pW,QAEpCxH,KAAKyvW,kBAAmB,EACxBzvW,KAAK0yW,gBAAgB,CAAEvyV,MAAOxb,IAClC,EAIAmpW,EAAUzlW,UAAU2mW,cAAgB,SAAUrqW,GAC1C3E,KAAKgnW,mBAAoB,EACzBhnW,KAAK0nS,UAAW,EACZ1nS,KAAK2yW,YAAY,CAAExyV,MAAOxb,MAG1B3E,KAAKmH,QAAQ0mW,UACb7tW,KAAK6tW,WAET7tW,KAAKkuW,gBAAkB3L,GAAyB4L,KAChDnuW,KAAK2vW,iCAAkC,EACvC3vW,KAAKyyW,sBACLzyW,KAAK4yW,eAAe,CAAEzyV,MAAOxb,IACjC,EAIAmpW,EAAUzlW,UAAU4mW,gBAAkB,SAAUtqW,GAC5C3E,KAAK6yW,cAAc,CAAE1yV,MAAOxb,GAChC,EAIAmpW,EAAUzlW,UAAUymW,iBAAmB,SAAUnqW,GAC7C,IAAI3E,KAAK8yW,eAAe,CAAE3yV,MAAOxb,IAAjC,CAGA,IAAIm6V,EAAK9+V,KAAKkmC,UAAWpwB,EAAQgpV,EAAGhpV,MAAOnK,EAAMmzV,EAAGnzV,IAIpD,GAHA3L,KAAKmwW,aAAexrW,EACpB3E,KAAKoxW,qBAAuBpxW,KAAK6L,QAAQnD,MACzC1I,KAAKouW,yBAA2B,CAAEt4V,MAAOA,EAAOnK,IAAKA,GACjD3L,KAAK+yW,8BAA8BpuW,GAAI,CACvC,IAAIquW,EAAWruW,EAAE2iC,UAAYglU,GAC7B,IAAI0G,EAkBA,OAFAruW,EAAEwE,sBACFnJ,KAAKoyW,kBAAkB,GAhBvB,IAAIrP,EAAK/iW,KAAKkmC,UAAWJ,EAAiBi9T,EAAGjtV,MAAOmwB,EAAe88T,EAAGp3V,IAOtE,GANIhH,EAAE4iC,UAAYyrU,EACdhzW,KAAKoyW,mBAAmB,GAGxBpyW,KAAKoyW,kBAAkB,GAEvBtsU,IAAmB9lC,KAAKkmC,UAAUpwB,OAASmwB,IAAiBjmC,KAAKkmC,UAAUv6B,IAG3E,YADAhH,EAAEwE,gBAUd,CACA,IAAIkL,EAASrU,KAAKiuW,cAAcjuW,KAAKkmC,UAAUpwB,OAC3Cg9B,EAAO9yC,KAAKizW,kBAAkB5+V,GAC9B6+V,GAAuB,EAC3B,KAAIvuW,EAAE0qN,QAAU1qN,EAAE8qF,SAAW9qF,EAAEyjS,SAAWzjS,EAAE2iC,UAAYglU,IAAxD,CAGA,OAAQ3nW,EAAE2iC,SACN,KAAKglU,GACDtsW,KAAKoyW,mBAAmB,GACxBc,GAAuB,EACvBlzW,KAAK2vW,iCAAkC,EACvC,MACJ,KAAKrD,GACDtsW,KAAKmzW,uBAAuBrgU,EAAMz+B,EAAQ8L,OAC1C+yV,GAAuB,EACvBlzW,KAAK2vW,iCAAkC,EACvC,MACJ,KAAKrD,GACDtsW,KAAKoyW,kBAAkB,GACvBc,GAAuB,EACvBlzW,KAAK2vW,iCAAkC,EACvC,MACJ,KAAKrD,GACDtsW,KAAKmzW,wBAAwBrgU,EAAMz+B,EAAQ8L,OAC3C+yV,GAAuB,EACvBlzW,KAAK2vW,iCAAkC,EACvC,MACJ,KAAKrD,GAED,MACJ,KAAKA,GACDtsW,KAAKwvW,qBAAqB,GAC1B0D,GAAuB,EACvBlzW,KAAK2vW,iCAAkC,EACvC3vW,KAAKgnW,mBAAoB,EACzB,MACJ,KAAKsF,GACDtsW,KAAKwvW,qBAAqBxvW,KAAKqxW,aAAa7pW,QAC5C0rW,GAAuB,EACvBlzW,KAAK2vW,iCAAkC,EACvC3vW,KAAKgnW,mBAAoB,EACzB,MACJ,QAEI,OAEJkM,GACAvuW,EAAEwE,gBA1CN,CAjCA,CA6EJ,EAIA2kW,EAAUzlW,UAAU6mW,eAAiB,WACjClvW,KAAKiwW,mBAAoB,CAC7B,EAIAnC,EAAUzlW,UAAU8mW,oBAAsB,SAAUxqW,GAChD,GAAK3E,KAAKmH,QAAQsmW,mBAAoBztW,KAAKozW,kBAAkB,CAAEjzV,MAAOxb,KAGjE3E,KAAK0nS,SAAV,CAGA,IAAIvnR,EAAQxb,EACRwb,EAAMonB,SACNvnC,KAAKoyW,mBAAmBjyV,EAAM8kB,aAAe9kB,EAAM+kB,QAAU,GAAK,EAAI,GAGtEllC,KAAKmzW,wBAAwBhzV,EAAM8kB,aAAe9kB,EAAM+kB,QAAU,EAAI,GAAK,GAE/E/kB,EAAMsrV,aAAc,EAChBtrV,EAAMhX,gBACNgX,EAAMhX,iBAENgX,EAAMia,iBACNja,EAAMia,iBAbV,CAeJ,EACA0zU,EAAUzlW,UAAU6nW,cAAgB,SAAUvrW,GAC1C,IAAI+D,EAAQ1I,KAAKi0K,KAAK31J,UAAUte,KAAKqxW,aAAcrxW,KAAKqzW,cAAgBrzW,KAAK0I,MACzED,GAAUC,IAAU1I,KAAKi9V,WAAW2J,2BACpCl+V,EAAQ1I,KAAKi9V,WAAW4J,iBAAiBn+V,IAE7C,IAAI4qW,EAAqBtzW,KAAKi9V,YAAcj9V,KAAKi9V,WAAWjzK,WAC5DhqL,KAAKuzW,WAAW7qW,GAChB1I,KAAKsyW,sBAAsB,CACvBt8H,SAAUs9H,EACVnzV,MAAOxb,GAEf,EACAlE,OAAOquC,eAAeg/T,EAAUzlW,UAAW,eAAgB,CACvD4nB,IAAK,WACD,OAAQjwB,KAAK6L,SAAW,CAAC,GAAGnD,OAAS,EACzC,EACA23V,YAAY,EACZC,cAAc,IAElB7/V,OAAOquC,eAAeg/T,EAAUzlW,UAAW,cAAe,CACtD4nB,IAAK,WACD,OAAKjwB,KAAKmH,QAAQ8J,OAGiB,iBAAxBjR,KAAKmH,QAAQ8J,OACbjR,KAAKmH,QAAQ8J,OAGbjR,KAAKmH,QAAQ8J,OAAOoiW,YANpB3Q,EAQf,EACArC,YAAY,EACZC,cAAc,IAElB7/V,OAAOquC,eAAeg/T,EAAUzlW,UAAW,gBAAiB,CACxD4nB,IAAK,WACD,OAAKjwB,KAAKmH,QAAQ8J,OAGiB,iBAAxBjR,KAAKmH,QAAQ8J,OACbjR,KAAKmH,QAAQ8J,OAGbjR,KAAKmH,QAAQ8J,OAAOuiW,cANpB9Q,EAQf,EACArC,YAAY,EACZC,cAAc,IAElB7/V,OAAOquC,eAAeg/T,EAAUzlW,UAAW,YAAa,CACpD4nB,IAAK,WACD,IAAIw7U,EAAc,CAAE31V,MAAO,EAAGnK,IAAK,GAOnC,OANqB,OAAjB3L,KAAK6L,cAAoD8yI,IAAhC3+I,KAAK6L,QAAQi6B,iBACtC2lU,EAAc,CACV31V,MAAO9V,KAAK6L,QAAQi6B,eACpBn6B,IAAK3L,KAAK6L,QAAQo6B,eAGnBwlU,CACX,EACApL,YAAY,EACZC,cAAc,IAElBwN,EAAUzlW,UAAUynW,aAAe,SAAU5pU,GACrClmC,KAAK6L,SAAW8D,SAASgK,gBAAkB3Z,KAAK6L,UAChD7L,KAAK6L,QAAQm6B,kBAAkBE,EAAUpwB,MAAOowB,EAAUv6B,KACtDu6B,EAAUpwB,QAAUowB,EAAUv6B,MAC9B3L,KAAKkuW,gBAAkB3L,GAAyB1tI,WAG5D,EAIAi5I,EAAUzlW,UAAUgqW,kBAAoB,SAAUh+V,GAG9C,IAFA,IAAIyB,GAAS,EACTnK,EAAM,EACDpE,EAAI,EAAGA,EAAIvH,KAAKiuW,cAAczmW,OAAQD,IACvCvH,KAAKiuW,cAAc1mW,KAAO8M,IAC1B1I,EAAMpE,EAAI,GACK,IAAXuO,IACAA,EAAQvO,IAepB,OAXIuO,EAAQ,IACRA,EAAQ,GAEP9V,KAAKmH,QAAQs8V,kBAAoBzjW,KAAKiuW,cAAczmW,SAAWxH,KAAKguW,YAAYxmW,SAC7ExH,KAAKiuW,cAAczmW,OAASxH,KAAKguW,YAAYxmW,OAC7CmE,GAAO3L,KAAKguW,YAAYxmW,OAASxH,KAAKiuW,cAAczmW,OAGpDmE,EAAMtI,KAAK8V,IAAI,EAAGxN,GAAO3L,KAAKiuW,cAAczmW,OAASxH,KAAKguW,YAAYxmW,UAGvE,CAAEsO,MAAOA,EAAOnK,IAAKA,EAChC,EAIAmiW,EAAUzlW,UAAU0nW,iBAAmB,SAAUz2V,GAE7C,IADA,IAAI4sB,EAAY,CAAEpwB,MAAOwD,EAAO3N,IAAK2N,GAC5B/R,EAAI+R,EAAOyxB,EAAIzxB,EAAQ,EAAG/R,EAAIvH,KAAKiuW,cAAczmW,QAAUujC,GAAK,EAAGxjC,IAAKwjC,IAAK,CAClF,GAAIxjC,EAAIvH,KAAKiuW,cAAczmW,QAAUxH,KAAKiuW,cAAc1mW,KAAOm7V,GAA2B,CACtFx8T,EAAYlmC,KAAKqyW,kBAAkBryW,KAAKiuW,cAAc1mW,IACtD,KACJ,CACA,GAAIwjC,GAAK,GAAK/qC,KAAKiuW,cAAcljU,KAAO23T,GAA2B,CAC/Dx8T,EAAYlmC,KAAKqyW,kBAAkBryW,KAAKiuW,cAAcljU,IACtD,KACJ,CACJ,CACA,OAAO7E,CACX,EACA4nU,EAAUzlW,UAAU+pW,kBAAoB,SAAUt0V,GAC9C,IAAIooB,EAAYlmC,KAAKkmC,UACrB,GAAIlmC,KAAKsnW,gBAAiB,CACtB,IAAIxxV,EAAQowB,EAAUpwB,MAClB29V,EAAgBzzW,KAAKiuW,cAAcn4V,EAAQ,GAC3CzB,EAAS,GACTq/V,EAAkB,GACtB,GAAI51V,EAAS,GACT,IAAK,IAAIvW,EAAIuO,EAAQgI,EAAQvW,GAAK,EAAGA,IAEjC,IADAmsW,EAAkB1zW,KAAKiuW,cAAc1mW,MACbm7V,IACpBgR,IAAoBD,EAAe,CACnC39V,EAAQvO,EACR8M,EAASq/V,EACT,KACJ,OAIJ,IAASnsW,EAAIuO,EAAQgI,EAAQvW,EAAIvH,KAAKiuW,cAAczmW,OAAQD,IAExD,IADAmsW,EAAkB1zW,KAAKiuW,cAAc1mW,MACbm7V,IACpBgR,IAAoBD,EAAe,CACnC39V,EAAQvO,EACR8M,EAASq/V,EACT,KACJ,CAGR,GAAIr/V,EAIA,OAHArU,KAAKuuW,cACLvuW,KAAK8vW,aAAa9vW,KAAKqyW,kBAAkBh+V,SACzCrU,KAAKkuW,gBAAkB3L,GAAyB1tI,UAGxD,CACA70N,KAAKkuW,gBAAkB3L,GAAyB4L,KAChD,IAAIrP,EAAK9+V,KAAKkmC,UAAWJ,EAAiBg5T,EAAGhpV,MAAOmwB,EAAe64T,EAAGnzV,IACtE,GAAIm6B,EAAiBG,GACjBjmC,KAAKiuW,cAAcnoU,KAAoB9lC,KAAKiuW,cAAchoU,EAAe,GAIzE,OAHAjmC,KAAK8vW,aAAa9vW,KAAK+vW,iBAAiBjyV,EAAS,EAAIgoB,EAAiBG,EAAe,IACrFjmC,KAAKgnW,mBAAoB,OACzBhnW,KAAKkuW,gBAAkB3L,GAAyB4L,MAKpD,IAFA,IAAIwF,EAAuB3zW,KAAKiuW,cAAcnoU,GAC1C5gC,EAAI4gC,EAAiBhoB,EAClB5Y,EAAI,GAAKA,EAAIlF,KAAKiuW,cAAczmW,SAC/BxH,KAAKiuW,cAAc/oW,KAAOyuW,GAC1B3zW,KAAKiuW,cAAc/oW,KAAOw9V,KAG9Bx9V,GAAK4Y,EAET,GAAI9d,KAAKiuW,cAAc/oW,KAAOw9V,GAA9B,CAKA,IADA,IAAIzmV,EAAI/W,EACD+W,GAAK,GAAKA,EAAIjc,KAAKiuW,cAAczmW,QAChCxH,KAAKiuW,cAAchyV,KAAOjc,KAAKiuW,cAAc/oW,IAGjD+W,GAAK6B,EAEL5Y,EAAI+W,IAAMA,EAAI,IAAM6pB,GAAkB5gC,EAAI,IAAM+gC,IAChDjmC,KAAK8vW,aAAa,CAAEh6V,MAAOmG,EAAI,EAAGtQ,IAAKzG,EAAI,IAC3ClF,KAAKgnW,mBAAoB,GAEpB9hW,EAAI+W,IAAM/W,IAAM4gC,GAAkB7pB,IAAMgqB,KAC7CjmC,KAAK8vW,aAAa,CAAEh6V,MAAO5Q,EAAGyG,IAAKsQ,IACnCjc,KAAKgnW,mBAAoB,GAE7BhnW,KAAKkuW,gBAAkB3L,GAAyB4L,IAhBhD,CAiBJ,EACAL,EAAUzlW,UAAU8qW,uBAAyB,SAAUr1V,EAAQzJ,EAAQ8L,GAGnE,QAFe,IAAX9L,IAAqBA,EAAS,SACpB,IAAV8L,IAAoBA,EAAQ,CAAC,GAC5BngB,KAAKi9V,aAAcj9V,KAAKmH,QAAQwqE,SAArC,CAGA,IAx1E2BjmE,EAPOuF,EAClC6F,EA81EIk/N,EAAWh2O,KAAK0I,MAChBoqC,EAp0Be,EAo0Beh1B,EAC9B6nB,EAAQ3lC,KAAK2lC,QAEjB,GAAe,OADftxB,EAASA,GAAUrU,KAAKiuW,cAActoU,EAAM,OACrB3lC,KAAKmH,QAAQs/P,MAAM4mG,YAAa,CACnD,IAAIuG,GAp2E0B3iW,EAo2EWjR,KAAKqzW,aAn2ElDv8V,EAAS7F,GAAUA,EAAOP,MAAM,WACpBoG,EAAO,GAAGtP,OAAS,GAKJkE,EA81EGkoW,EAA1B9gU,EA71EDzvC,KAAKwmC,IAAI,GAAI,EAAIn+B,EA81EpB,CACA1L,KAAKi9V,WAAW2I,WAAWvxV,EAAQy+B,GACnC9yC,KAAKsyW,sBAAsB,CACvBt8H,SAAUA,EACV71N,MAAOA,IAEXngB,KAAKuuW,cACLvuW,KAAK8vW,aAAa9vW,KAAKqyW,kBAAkBh+V,GAfzC,CAgBJ,EAIAy5V,EAAUzlW,UAAUiqW,sBAAwB,SAAUj7U,GAElD,QADa,IAATA,IAAmBA,EAAO,CAAE2+M,SAAU,KAAM71N,MAAO,CAAC,KACnD+9U,EAAQl+V,KAAK0I,MAAO2uB,EAAK2+M,UAC1B,OAAOh2O,KAAK6zW,mBAAmBx8U,EAEvC,EAIAy2U,EAAUzlW,UAAUwrW,mBAAqB,SAAUx8U,GAE/C,YADa,IAATA,IAAmBA,EAAO,CAAE2+M,SAAU,KAAM71N,MAAO,CAAC,IACjDngB,KAAKoK,QAAQ2iW,GAAchqW,GAAOs0B,EAAM,CAC3C3uB,MAAO1I,KAAK0I,QAEpB,EAIAolW,EAAUzlW,UAAU2nW,aAAe,SAAU34U,GAEzC,YADa,IAATA,IAAmBA,EAAO,CAAElX,MAAO,CAAC,IACjCngB,KAAKoK,QAAQw1T,GAAO78T,GAAOs0B,EAAM,CACpC3uB,MAAO1I,KAAK0I,QAEpB,EAIAolW,EAAUzlW,UAAUkqW,gBAAkB,SAAUl7U,GAE5C,YADa,IAATA,IAAmBA,EAAO,CAAElX,MAAO,CAAC,EAAGuO,MAAO,OAC3C1uB,KAAKoK,QAAQ4iW,GAAWjqW,GAAOs0B,EAAM,CACxC3uB,MAAO1I,KAAK0I,QAEpB,EAIAolW,EAAUzlW,UAAUmqW,aAAe,SAAUn7U,GAEzC,YADa,IAATA,IAAmBA,EAAO,CAAElX,MAAO,CAAC,IACjCngB,KAAKoK,QAAQo8N,GAAOzjO,GAAO,CAAC,EAAGs0B,GAC1C,EAIAy2U,EAAUzlW,UAAUqqW,gBAAkB,SAAUr7U,GAE5C,YADa,IAATA,IAAmBA,EAAO,CAAElX,MAAO,CAAC,IACjCngB,KAAKoK,QAAQ8iW,GAAWnqW,GAAO,CAAC,EAAGs0B,GAC9C,EAIAy2U,EAAUzlW,UAAUsqW,YAAc,SAAUt7U,GAExC,YADa,IAATA,IAAmBA,EAAO,CAAElX,MAAO,CAAC,IACjCngB,KAAKoK,QAAQq8N,GAAM1jO,GAAO,CAAC,EAAGs0B,GACzC,EAIAy2U,EAAUzlW,UAAUuqW,eAAiB,SAAUv7U,GAE3C,YADa,IAATA,IAAmBA,EAAO,CAAElX,MAAO,CAAC,IACjCngB,KAAKoK,QAAQ6iW,GAAUlqW,GAAO,CAAC,EAAGs0B,GAC7C,EAIAy2U,EAAUzlW,UAAUwqW,cAAgB,SAAUx7U,GAE1C,YADa,IAATA,IAAmBA,EAAO,CAAElX,MAAO,CAAC,IACjCngB,KAAKoK,QAAQ8yC,GAAQn6C,GAAOs0B,EAAM,CACrC3uB,MAAO1I,KAAK0I,QAEpB,EAIAolW,EAAUzlW,UAAUyqW,eAAiB,SAAUz7U,GAE3C,YADa,IAATA,IAAmBA,EAAO,CAAElX,MAAO,CAAC,IACjCngB,KAAKoK,QAAQuiW,GAAU5pW,GAAO,CAAC,EAAGs0B,GAC7C,EAIAy2U,EAAUzlW,UAAU+qW,kBAAoB,SAAU/7U,GAE9C,YADa,IAATA,IAAmBA,EAAO,CAAElX,MAAO,CAAC,IACjCngB,KAAKoK,QAAQ0iW,GAAa/pW,GAAO,CAAC,EAAGs0B,GAChD,EAIAy2U,EAAUzlW,UAAUkmW,YAAc,WAC9BvuW,KAAKsuW,mBACLtuW,KAAKyyW,qBACT,EAIA3E,EAAUzlW,UAAU8pW,yBAA2B,WAC3C,IAAIrT,EAAK9+V,KAAKkmC,UAAWpwB,EAAQgpV,EAAGhpV,MAAOnK,EAAMmzV,EAAGnzV,IAChDmoW,EAAqB9zW,KAAKqxW,aAAa7pW,OAC3CxH,KAAKuuW,cACL,IAAIwF,EAAkB/zW,KAAKqxW,aAAa7pW,OAASssW,EACjD9zW,KAAK8vW,aAAa,CACdh6V,MAAOA,EAAQi+V,EACfpoW,IAAKA,EAAMooW,GAEnB,EAIAjG,EAAUzlW,UAAUimW,iBAAmB,WACnC,IAAIxP,EAAK9+V,KAAKi9V,WAAW8H,mBAAoBiJ,EAAclP,EAAGh+T,KAAMmtU,EAAgBnP,EAAG7tV,OACvFjR,KAAKiuW,cAAgBA,EACrBjuW,KAAKguW,YAAcA,CACvB,EAIAF,EAAUzlW,UAAU2rW,gBAAkB,SAAUtrW,GAC5C1I,KAAK6L,QAAQnD,MAAQA,CACzB,EAIAolW,EAAUzlW,UAAU4qW,kBAAoB,SAAU5+V,GAE9C,OAAQA,GACJ,IAAK,IACD,OAAOxB,OAAO7S,KAAKmH,QAAQs/P,MAAM4mG,aACrC,IAAK,IACD,OAAOx6V,OAAO7S,KAAKmH,QAAQs/P,MAAM9vI,QACrC,IAAK,IACD,OAAO9jH,OAAO7S,KAAKmH,QAAQs/P,MAAM6mG,QAErC,IAAK,IAEL,IAAK,IACD,OAAOz6V,OAAO7S,KAAKmH,QAAQs/P,MAAMq3F,MACrC,IAAK,IACD,OAAOjrV,OAAO7S,KAAKmH,QAAQs/P,MAAMhhQ,OAErC,IAAK,IAGL,IAAK,IACD,OAAOoN,OAAO7S,KAAKmH,QAAQs/P,MAAMxpP,KAErC,IAAK,IACD,OAAOpK,OAAO7S,KAAKmH,QAAQs/P,MAAMzpP,MACrC,QACI,OAz+BW,EA4+BvB,EAIA8wV,EAAUzlW,UAAUmoW,+BAAiC,WACjDxwW,KAAKi0W,8BACLj0W,KAAKk0W,iCACT,EAIApG,EAAUzlW,UAAU4rW,4BAA8B,WAC9Cj0W,KAAKg0W,gBAAgBh0W,KAAKoxW,sBAAwB,GACtD,EAIAtD,EAAUzlW,UAAU6rW,gCAAkC,WAClD,IAAIpV,EAAK9+V,KAAKouW,yBAA0Bt4V,EAAQgpV,EAAGhpV,MAAOnK,EAAMmzV,EAAGnzV,IACnE3L,KAAK8vW,aAAa,CAAEh6V,MAAOA,GAAS,EAAGnK,IAAKA,GAAO,GACvD,EACAmiW,EAAUzlW,UAAUkrW,WAAa,SAAU7qW,GACvC1I,KAAKm0W,YAAYzrW,GACjB1I,KAAKi9V,WAAaj9V,KAAKo0W,cAAc1rW,GACrC1I,KAAKyyW,qBACT,EACA3E,EAAUzlW,UAAU8rW,YAAc,SAAUzrW,GACxC,GAAIA,IAAUw6V,GAAYx6V,GACtB,MAAM,IAAIsI,MAAM,0DAExB,EACA88V,EAAUzlW,UAAUoqW,oBAAsB,WACtC,IAAI38V,EAAQ9V,KAAK2lC,QAAQ,GACrB95B,EAAU7L,KAAK6L,QACfoF,EAASjR,KAAK0nS,SAAW1nS,KAAKqzW,YAAcrzW,KAAKwzW,cACjD1U,EAAK9+V,KAAKi9V,WAAW8H,iBAAiB9zV,GAAS+8V,EAAclP,EAAGh+T,KAAMmtU,EAAgBnP,EAAG7tV,OAC7FjR,KAAKiuW,cAAgBA,EACrBjuW,KAAKguW,YAAcA,EACnB,IAAIZ,EAAiBptW,KAAKmH,QAAQimW,gBAAkB3kW,GAAUzI,KAAKmH,QAAQqe,aACvE6uV,GAAmBr0W,KAAK0nS,UACxB0lE,IACCptW,KAAKi9V,WAAW7nR,WACjBg4R,GAAkB3kW,GAAUzI,KAAKmH,QAAQqe,eACzC3Z,EAAQ2Z,YAAcxlB,KAAKmH,QAAQqe,aAEvC,IAAI8uV,EAAkBD,EAAkB,GAAKrG,EAC7ChuW,KAAKoxW,qBAAuBpxW,KAAKqxW,aACjCrxW,KAAKg0W,gBAAgBM,GACjBt0W,KAAK0nS,WAAa1nS,KAAKmH,QAAQumW,gBAAkB1tW,KAAKmH,QAAQomW,6BAC9DvtW,KAAKwvW,qBAAqB15V,EAElC,EAIAg4V,EAAUzlW,UAAUs9B,MAAQ,SAAU7vB,EAAOnK,QAC7B,IAARA,IAAkBA,EAAMmK,GAC5B,IAAI+vB,OAAuB84G,IAAV7oI,EACb21V,EAAc,CAAC31V,EAAOA,GACtBjK,EAAU7L,KAAK6L,QACnB,IAAIg6B,IAAe7lC,KAAKmH,QAAQixB,WAAYp4B,KAAKmH,QAAQwqE,SAAzD,CAGA,SACmCgtE,IAA3B9yI,EAAQi6B,iBACJD,IA5pF6Bl2B,UA6pFAA,SAASgK,gBAAkB9N,GACpDA,EAAQk6B,QAEZl6B,EAAQm6B,kBAAkBlwB,EAAOnK,IAErC8/V,EAAc,CAAC5/V,EAAQi6B,eAAgBj6B,EAAQo6B,cAEvD,CACA,MAAOthC,GACH8mW,EAAc,EAClB,CACA,OAAOA,CAfP,CAgBJ,EACAqC,EAAUzlW,UAAUmnW,qBAAuB,SAAUl2V,GAEjD,IAAK,IAAI/R,EAAI+R,EAAOyxB,EAAIzxB,EAAQ,EAAG/R,EAAIvH,KAAKiuW,cAAczmW,QAAUujC,GAAK,EAAGxjC,IAAKwjC,IAAK,CAClF,GAAIxjC,EAAIvH,KAAKiuW,cAAczmW,QAAoC,MAA1BxH,KAAKiuW,cAAc1mW,GAEpD,YADAvH,KAAKu0W,kBAAkBv0W,KAAKiuW,cAAc1mW,IAG9C,GAAIwjC,GAAK,GAA+B,MAA1B/qC,KAAKiuW,cAAcljU,GAE7B,YADA/qC,KAAKu0W,kBAAkBv0W,KAAKiuW,cAAcljU,GAGlD,CACJ,EACA+iU,EAAUzlW,UAAUksW,kBAAoB,SAAUlgW,GAG9C,IAFA,IAAIswR,GAAS,EACTh5R,EAAM,EACDpE,EAAI,EAAGA,EAAIvH,KAAKiuW,cAAczmW,OAAQD,IACvCvH,KAAKiuW,cAAc1mW,KAAO8M,IAC1B1I,EAAMpE,EAAI,GACK,IAAXo9R,IACAA,EAAQp9R,IAIhBo9R,EAAQ,IACRA,EAAQ,GAEZ3kS,KAAK2lC,MAAM,EAAG,GACd3lC,KAAK2lC,MAAMg/P,EAAOh5R,EACtB,EAIAmiW,EAAUzlW,UAAU+rW,cAAgB,SAAU1rW,GAC1C,IAAIg7V,GAAgB1jW,KAAKi9V,YAAc,CAAC,GAAM,MAAMyG,YACpD1jW,KAAKmH,QAAQuB,MAAQA,EACrB,IAAIu0V,EAAaj9V,KAAKquW,mBAEtB,OADApR,EAAW0N,eAAe3qW,KAAK0nS,SAAWg8D,EAAc,MACjDzG,CACX,EAKA6Q,EAAUzlW,UAAUgmW,iBAAmB,WACnC,IAAIr8L,EAAiBhyK,KAAKqvW,uBAE1B,OADiB,IAAIjM,GAAWrgW,GAAO,CAAC,EAAGivK,GAE/C,EAIA87L,EAAUzlW,UAAUgnW,qBAAuB,WAUvC,MATiB,CACbv7L,YAAa9zK,KAAKmH,QAAQ2sK,YAC1BuvL,kBAAmBrjW,KAAKmH,QAAQk8V,kBAAoBrjW,KAAKmH,QAAQk8V,kBAAoB,gBACrFpyV,OAAQjR,KAAKqzW,YACb/P,UAAWtjW,KAAKmH,QAAQm8V,UACxB7tV,gBAAiBzV,KAAKmH,QAAQsO,gBAC9BguV,iBAAkBzjW,KAAKmH,QAAQs8V,iBAC/B/6V,MAAO1I,KAAKmH,QAAQuB,MAG5B,EAKAolW,EAAUzlW,UAAU0qW,8BAAgC,SAAUyB,GAC1D,IAAI5G,GAAkB5tW,KAAKmH,QAAQymW,gBAAkB,IAChD/yV,KAAI,SAAUzV,GAAK,OAAOA,EAAEqM,WAAWoH,cAAc8qB,MAAQ,IAClE,OAAIiqU,EAAej4V,QAAQ6+V,EAAUltU,QAAQ71B,aAAe,GACxDm8V,EAAej4V,QAAQ6+V,EAAUltU,UAAY,GAC7CsmU,EAAej4V,QAAQ6+V,EAAU1iW,IAAI+G,cAAc8qB,SAAW,CAItE,EAIAmqU,EAAUzlW,UAAUwlW,SAAW,WAC3B,IAA4D5wV,EAAKxX,EAAOuX,EAAME,EAAOrG,EAASsG,EAA1F8/U,EAAaj9V,KAAKi9V,WAAYx8T,EAAc,IAAI9xB,MAChDsuV,EAAWrmV,MAAQqmV,EAAWx3V,OAASw3V,EAAWjgV,MAAQigV,EAAW//U,OAAS+/U,EAAWpmV,SAAWomV,EAAW9/U,WAC/GH,EAAOigV,EAAWjgV,KAAOigV,EAAWv0V,MAAMyO,cAAgBspB,EAAYtpB,cAClE1R,EAAQw3V,EAAWx3V,MAAQw3V,EAAWv0V,MAAMwO,WAAaupB,EAAYvpB,WACrE+F,EAAMggV,EAAWrmV,KAAOqmV,EAAWv0V,MAAMsO,UAAYypB,EAAYzpB,UACjEkG,EAAQ+/U,EAAW//U,MAAQ+/U,EAAWv0V,MAAM0O,WAAaqpB,EAAYrpB,WACrEP,EAAUomV,EAAWpmV,QAAUomV,EAAWv0V,MAAM2O,aAAeopB,EAAYppB,aAC3E8F,EAAU8/U,EAAW9/U,QAAU8/U,EAAWv0V,MAAM4O,aAAempB,EAAYnpB,aAC/E2lV,EAAWx4I,SAAS,IAAI91M,KAAKqO,EAAMvX,EAAOwX,EAAKC,EAAOrG,EAASsG,IAC/Dnd,KAAKyyW,sBACLzyW,KAAK6yW,gBAEb,EACO/E,CACX,CAlmC8B,CAkmC5BxkW,IAYCxI,OAAOH,MAAM+G,OADZ/G,MAAM4pB,GAAGkqV,gBAAkB3G,GAEjBntW,OAUd,SAAUgC,EAAGC,GACT,IACIjC,EADSG,OACMH,MACf4pB,EAAK5pB,EAAM4pB,GACX6G,EAAS7G,EAAG6G,OACZqjV,EAAkBlqV,EAAGkqV,gBACrBtoV,EAAK,kBACLxY,EAAiB,CAAC,EAAElC,SACpB9J,EAAgBhF,EAAEgF,cAGlByiU,EAAU,UACVC,EAAgB,aAChBqqC,EAAe,YAEfltD,EAAW,WACX6hC,EAAW,WACXnsS,EAAS,SAETy2H,EAAchzK,EAAMiH,MAAM7E,OAAO,CACjCoF,KAAM,SAAShB,GACX,MAAMy3B,EAAOz3B,EAAQ0M,QAAUlT,EAAMoT,WAAW5M,EAAQ0M,SAAWlT,EAAMkT,UACzE7T,KAAK4qB,SAAWzjB,EAAQyjB,SACxB5qB,KAAKskW,KAAO,CAAE,EACdtkW,KAAKskW,KAAK1lU,EAAKx8B,MAAQ,CACnBA,KAAMw8B,EAAKx8B,KACXwT,SAAUgpB,EAAKhpB,UAAY,CAAC,EAC5B2uV,QAAS3lU,EAAK9qB,aAEtB,EAEAwK,UAAW,SAAS5V,EAAOuI,EAAQ4C,GAC/B,OAAOlT,EAAM2d,UAAU5V,EAAOuI,EAAQ4C,GAAS,EACnD,EAEA6D,WAAY,SAASd,EAAM3F,EAAQ4C,GAC/B,OAAOlT,EAAM8Q,SAASmF,EAAM3F,EAAQ4C,EACxC,EAEA6tB,gBAAiB,SAASzwB,GACtB,OAAOtQ,EAAMiW,KAAK8qB,gBAAgBzwB,EACtC,EAEAmxB,gBAAiB,SAAS+xI,EAAQhtK,GAC9B,OAAOxG,EAAMiW,KAAKwrB,gBAAgBj7B,EACtC,EAEA+6B,cAAe,SAAS/6B,GACpB,OAAOnH,KAAK4qB,SAASzjB,EAAQzB,OAAS,CAAC,CAC3C,IAGJ,SAASivW,IACL,MAAMC,EAAcj0W,EAAMkT,UAC1B,IAAIgX,EAAO,GAKX,OAHAA,EAAKlpB,KAAKizW,EAAYpgW,UAAUC,SAAS,MACzCoW,EAAKlpB,KAAKizW,EAAYpgW,UAAUC,SAAS,MAElCoW,CACX,CAEA,SAASgqV,EAAiBhhW,EAAS5C,GAC/B,IAAK4C,EACD,OAAO5C,EAGX,OADoBtQ,EAAMoT,WAAWF,GAClBW,UAAUC,SAASQ,SAAShE,IAAWA,CAC9D,CAEA,IAAI68V,EAAY18U,EAAOruB,OAAO,CAC1BoF,KAAM,SAAS0D,EAAS1E,GACpB,IAAIc,EAAOjI,KAEXoxB,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GACnC0E,EAAU5D,EAAK4D,SAEf1E,EAAUc,EAAKd,SACP8J,OAAStQ,EAAM8Y,eAAetS,EAAQ8J,QAAUtQ,EAAMoT,WAAW5M,EAAQ0M,SAASW,UAAUC,SAASQ,SAASzQ,GACtH2C,EAAQuP,IAAM/V,EAAM2d,UAAUzS,EAAQ+X,KAAK,SAAWjjB,EAAM2d,UAAUnX,EAAQuP,KAC9EvP,EAAQgS,IAAMxY,EAAM2d,UAAUzS,EAAQ+X,KAAK,SAAWjjB,EAAM2d,UAAUnX,EAAQgS,KAE9E,IAAImwT,EAAgBz9T,EAAQc,SAASiX,KAAK,UAAY,GAClDkxV,EAAcxrC,EAAa3zT,QAAQ,WAAa,GAAK2zT,EAAa3zT,QAAQ,eAAiB,EAC3F2lL,EAAerzL,EAAKd,QAAQuB,OAASmD,EAAQ+jB,MAE7CklV,EACA7sW,EAAK2E,QAAU3E,EAAK4D,QAAQc,UAE5B1E,EAAK2E,QAAUf,EAAQ8gB,KAAK,6CAA6ChgB,SACzE1E,EAAK2E,QAAQyY,SAASxZ,EAAQ,GAAGwhB,WAAWN,YAAY,2BAE5D9kB,EAAK2E,QAAQ,GAAGO,MAAM2R,QAAUjT,EAAQ,GAAGsB,MAAM2R,QACjDjT,EAAQI,IAAI,CACRD,OAAQH,EAAQ,GAAGsB,MAAMnB,SAI7B/D,EAAK8sW,gBAAkBpyW,EAAEhC,EAAM4pB,GAAG+tE,KAAK,CAAEA,KAAM,qBAAsBF,UAAW,sCAAuC88N,YAAYrpT,GAEnI5D,EAAKquU,QAELruU,EAAK+sW,kBAAoB,IAAIP,EAAgB5oW,EAAQ,GAAI,CACrDoF,OAAQ4jW,EAAiB1tW,EAAQ0M,QAAS1M,EAAQ8J,QAClDwyV,iBAAkBt8V,EAAQs8V,iBAC1BmK,eAAgBzmW,EAAQymW,eAAepmW,OAASL,EAAQymW,eAAiB+G,IACzElH,iBAAkBtmW,EAAQsmW,iBAC1Bh4V,gBAAiBtO,EAAQsO,gBACzBgxP,MAAOt/P,EAAQs/P,MACf48F,kBAAmBl8V,EAAQyjB,SAC3BvgB,OAAQ,CACJ4qW,SAAU,SAAStwW,GACXA,EAAE+pB,OACFzmB,EAAKitW,oBAEb,EACAC,QAAS,SAASxwW,GACVA,EAAEwb,MAAMmnB,SAAW3mC,EAAMkqB,KAAKQ,IAAM1mB,EAAEwb,MAAMmnB,SAAW3mC,EAAMkqB,KAAKU,MAClE2N,YAAW,WACPjxB,EAAK4D,QAAQzB,QAAQ8yC,EACzB,GAER,EACA3wB,KAAM,SAAS5nB,GACXsD,EAAKs3D,UACL56D,EAAEwE,gBACN,GAEJ2qK,YAAa,IAAIH,EAAY,CACzB9/J,QAAS1M,EAAQ0M,QACjB+W,SAAU3iB,EAAKd,QAAQyjB,WAE3B+iV,gBAAiBxmW,EAAQwmW,gBACzBE,SAAU1mW,EAAQ0mW,WAGtB5lW,EAAKmtW,WAAap1W,KAAK6L,QAAQ+jB,MAC3BzoB,EAAQuB,OACRT,EAAKS,MAAMvB,EAAQuB,OAGvBT,EAAK4D,QACAwZ,SAAS,iBACTzB,KAAK,eAAgB,OACrBiG,GAAG,QAAUsC,GAAI,WACdlkB,EAAK2E,QAAQyY,SAAS+kT,EAC1B,IACCvgT,GAAG,WAAasC,GAAI,WACjBlkB,EAAK2E,QAAQmgB,YAAYq9S,EAC7B,IAEJ,IACIv+T,EAAQ,GAAG8Z,aAAa,OAAQ,OACpC,CAAE,MAAOhhB,GACLkH,EAAQ,GAAGnG,KAAO,MACtB,CAEemG,EAAQoB,GAAG,eAAiBtK,EAAEsF,EAAK4D,SAAS0sB,QAAQ,YAAYtrB,GAAG,aAG9EhF,EAAKkgB,QAAO,GAEZlgB,EAAK0pE,SAAS9lE,EAAQoB,GAAG,eAE7BhF,EAAKS,MAAM4yL,GACNw5K,GACD7sW,EAAKoqB,mBAGLlrB,EAAQmtB,OACRrsB,EAAK8iU,SAGTpqU,EAAMi0B,OAAO3sB,EACjB,EAEAd,QAAS,CACL/E,KAAM,YACNqhW,kBAAkB,EAClBmK,eAAgB,GAChBD,iBAAiB,EACjBF,kBAAkB,EAClB55V,QAAS,GACTnL,MAAO,GACPuI,OAAQ,GACRyF,IAAK,IAAI/H,KAAK,KAAM,EAAG,GACvBwK,IAAK,IAAIxK,KAAK,KAAM,GAAI,IACxBic,SAAU,CACN5N,KAAQ,OACRvX,MAAS,QACTwX,IAAO,MACPnX,QAAW,kBACXg4V,KAAQ,QACRwP,OAAU,UACV32O,OAAU,UACVv5G,aAAgB,eAChBrX,UAAa,SAEjBiK,KAAM,SACNy2P,MAAO,CACHzpP,KAAM,EACNvX,MAAO,EACPwX,IAAK,EACL6gV,KAAM,EACNwP,OAAQ,EACR32O,OAAQ,EACR02O,YAAa,GAEjB55U,SAAU,QACVva,QAAS,SACTob,MAAO,KACPu5U,UAAU,GAGdxjW,OAAQ,CACJ6yC,GAGJxmC,IAAK,SAAShO,GACV,GAAIA,IAAU9F,EAGV,OAAO5C,KAAKmH,QAAQuP,IAFpB1W,KAAKmH,QAAQuP,IAAMhO,CAI3B,EAEAyQ,IAAK,SAASzQ,GACV,GAAIA,IAAU9F,EAGV,OAAO5C,KAAKmH,QAAQgS,IAFpBnZ,KAAKmH,QAAQgS,IAAMzQ,CAI3B,EAEAwpB,WAAY,SAAS/qB,GACjB,IAAIc,EAAOjI,KACXoxB,EAAOrpB,GAAGmqB,WAAW3nB,KAAKtC,EAAMd,GAChCc,EAAK+sW,kBAAkBhzW,UACvBiG,EAAK+sW,kBAAoB,KAEzB/sW,EAAK+sW,kBAAoB,IAAIP,EAAgBz0W,KAAK6L,QAAQ,GAAI,CAC1DoF,OAAQ4jW,EAAiB5sW,EAAKd,QAAQ0M,QAAS5L,EAAKd,QAAQ8J,QAC5D28V,eAAgB3lW,EAAKd,QAAQymW,eAAepmW,OAASS,EAAKd,QAAQymW,eAAiB+G,IACnFlR,iBAAkBx7V,EAAKd,QAAQs8V,iBAC/BgK,iBAAkBxlW,EAAKd,QAAQsmW,iBAC/BhnG,MAAOx+P,EAAKd,QAAQs/P,MACpBhxP,gBAAiBxN,EAAKd,QAAQsO,gBAC9B4tV,kBAAmBp7V,EAAKd,QAAQyjB,SAChCvgB,OAAQ,CACJ4qW,SAAU,SAAStwW,GACXA,EAAE+pB,OACFzmB,EAAKitW,oBAEb,EACAC,QAAS,SAASxwW,GACVA,EAAEwb,MAAMmnB,SAAW3mC,EAAMkqB,KAAKQ,IAAM1mB,EAAEwb,MAAMmnB,SAAW3mC,EAAMkqB,KAAKU,MAClE2N,YAAW,WACPjxB,EAAK4D,QAAQzB,QAAQ8yC,EACzB,GAER,EACA3wB,KAAM,SAAS5nB,GACXsD,EAAKs3D,UACL56D,EAAEwE,gBACN,GAEJ2qK,YAAa,IAAIH,EAAY,CACzB9/J,QAAS5L,EAAKd,QAAQ0M,QACtB+W,SAAU3iB,EAAKd,QAAQyjB,WAE3B+iV,gBAAiB1lW,EAAKd,QAAQwmW,gBAC9BE,SAAU5lW,EAAKd,QAAQ0mW,UAE/B,EAEA7rW,QAAS,WACL,IAAIiG,EAAOjI,KACXiI,EAAK4D,QAAQutB,IAAIjN,GACjBlkB,EAAK+sW,kBAAkBhzW,UAEnBiG,EAAKotW,cACLptW,EAAKotW,aAAaj8U,IAAI,QAASnxB,EAAKsuU,eAGpCtuU,EAAKqsB,OACLrsB,EAAKqsB,MAAMtyB,UAGXiG,EAAK8sW,iBACL9sW,EAAK8sW,gBAAgB1oW,SAGzB+kB,EAAOrpB,GAAG/F,QAAQuI,KAAKtC,EAC3B,EAEAS,MAAO,SAASA,GACZ,GAAIA,IAAU9F,EACV,OAAO5C,KAAKg1W,kBAAkBtsW,MAGpB,OAAVA,IACAA,EAAQ,IAGuB,kBAA/BiL,EAAepJ,KAAK7B,KACpBA,EAAQ/H,EAAM2d,UAAU5V,EAAO1I,KAAKmH,QAAQ8J,OAAQjR,KAAKmH,QAAQ0M,UAGjEnL,IAAUA,EAAMO,YAChBP,EAAQ,MAGZ1I,KAAKg1W,kBAAkBzB,WAAW7qW,GAE9B1I,KAAKs0B,OAASt0B,KAAKs0B,MAAM4+C,eACzBlzE,KAAKs0B,MAAM4+C,cAAcv0D,SAEjC,EAEA22V,cAAe,WAEX,OAAOt1W,KAAKo1W,aAAep1W,KAAK6L,QAAQ+jB,KAC5C,EAEA+hD,SAAU,SAASA,GACf3xE,KAAK+0O,UAAU,CACXpjK,SAAUA,IAAa/uE,GAAqB+uE,EAC5C1pD,SAAS,IAGTjoB,KAAKs0B,OAASt0B,KAAKs0B,MAAM4+C,eACzBlzE,KAAKs0B,MAAM4+C,cAAcvB,SAASA,IAAa/uE,GAAqB+uE,EAE5E,EAEAxpD,OAAQ,SAASA,GACbnoB,KAAK+0O,UAAU,CACXpjK,UAAU,EACV1pD,UAAWE,EAASA,IAAWvlB,GAAqBulB,KAGpDnoB,KAAKs0B,OAASt0B,KAAKs0B,MAAM4+C,eACzBlzE,KAAKs0B,MAAM4+C,cAAc/qD,OAAOA,EAASA,IAAWvlB,GAAqBulB,EAEjF,EAEA4iT,OAAQ,WACJ,IAAI9iU,EAAOjI,KACPmH,EAAUc,EAAKd,QACfgvK,EAAexuK,EAAcR,EAAQmtB,OAASntB,EAAQmtB,MAAQ,CAC9DqyB,QAASx/C,EAAQmtB,OAGrBrsB,EAAKqsB,MAAQ,IAAI3zB,EAAM4pB,GAAG84N,MAAM,KAAM1gP,EAAEI,OAAO,CAAC,EAAGozK,EAAc,CAC7D5iJ,OAAQtrB,EACRwiU,WAAY,MACHxiU,EAAKS,SAAaT,EAAKqtW,iBAA0C,KAAvBrtW,EAAK4D,QAAQ+jB,OAAiBjgB,SAASgK,gBAAkB1R,EAAK4D,QAAQ,MACjH7L,KAAK6L,QAAQ+jB,IAAI,KACV,MAOnB3nB,EAAKupU,YAAcvpU,EAAKqsB,MAAMzoB,OAClC,EAEA0pW,WAAY,WACR,IAAIttW,EAAOjI,KACXiI,EAAK4D,QACAge,GAAG,QAAUsC,GAAI,WACdlkB,EAAK2E,QAAQyY,SAAS+kT,EAC1B,IACCvgT,GAAG,WAAasC,GAAI,WACjBlkB,EAAK2E,QAAQmgB,YAAYq9S,EAC7B,IAEApqU,KAAKg1W,mBACLh1W,KAAKg1W,kBAAkB/7O,YAE/B,EAEAu8O,aAAc,WACVx1W,KAAK6L,QACAutB,IAAI,QAAUjN,GACdiN,IAAI,WAAajN,GAElBnsB,KAAKg1W,mBACLh1W,KAAKg1W,kBAAkBv7O,cAE/B,EAEAs7G,UAAW,SAAS5tO,GAChB,IAAIc,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACfoc,EAAU9gB,EAAQ8gB,QAClB0pD,EAAWxqE,EAAQwqE,SACnB/kE,EAAU3E,EAAK2E,QAEnB3E,EAAKutW,eAEA7jS,GAAa1pD,GASVA,IACArb,EAAQyY,SAASglT,GACjBx+T,EAAQ+X,KAAK4jS,EAAUv/R,GACnBpc,GAAWA,EAAQrE,QACnBqE,EAAQ,GAAGs8B,gBAAgBkhT,IAG/B13Q,GACA9lE,EAAQ+X,KAAKylU,EAAU13Q,KAhB3B/kE,EAAQmgB,YAAYs9S,GAChBx+T,GAAWA,EAAQrE,SACnBqE,EAAQ,GAAGs8B,gBAAgBq/Q,GAC3B37S,EAAQ,GAAGs8B,gBAAgBkhT,IAG/BphV,EAAKstW,aAab,EAEAh2S,QAAS,WACL,IAAIt3D,EAAOjI,KACPg2O,EAAW/tO,EAAK4lP,UAChBnlP,EAAQT,EAAKS,QAEbA,GAAST,EAAKyO,OAAShO,EAAQT,EAAKyO,QACpCzO,EAAKS,MAAMT,EAAKyO,OAChBhO,EAAQT,EAAKS,SAEbA,GAAST,EAAKkR,OAASzQ,EAAQT,EAAKkR,QACpClR,EAAKS,MAAMT,EAAKkR,OAChBzQ,EAAQT,EAAKS,UAGbstO,GAAYttO,GAASA,EAAMO,YAAc+sO,EAAS/sO,WAClD+sO,IAAattO,IACZstO,GAAYttO,KAEbT,EAAK4lP,UAAYnlP,EACjBT,EAAKmC,QAAQ8yC,EAAQ,CAAE3wB,MAAM,IAC7BtkB,EAAK4D,QAAQzB,QAAQ8yC,GAE7B,EAGAg4T,mBAAoB,WAChB,IAAIjtW,EAAOjI,KAEXiI,EAAKwtW,mBACLn7U,aAAaryB,EAAKytW,sBAClBztW,EAAKytW,qBAAuBx8U,WAAWjxB,EAAK0tW,oBAAoBnsW,KAAKvB,GAAO,IAChF,EAEAwtW,iBAAkB,WACHz1W,KAEN4M,QAAQyY,SAASqvV,GAFX10W,KAGN+0W,gBAAgBhoV,YAAY,WACrC,EAEA4oV,oBAAqB,WACjB,IAAI1tW,EAAOjI,KAEXiI,EAAK2E,QAAQmgB,YAAY2nV,GACzBzsW,EAAK8sW,gBAAgB1vV,SAAS,YAC9Bpd,EAAKytW,qBAAuB,IAChC,EAGAp/B,MAAO,WACH,IAAIruU,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACf4wU,EAAS5wU,EAAQ+X,KAAK,QACtBujB,EAAOs1S,EAAS95U,EAAE,IAAM85U,GAAU5wU,EAAQgB,QAAQ,QAClDyuL,EAAezvL,EAAQ,GAAGnD,OAEzB4yL,GAAgBrzL,EAAKd,QAAQuB,QAC9B4yL,EAAerzL,EAAKd,QAAQuB,OAG5By+B,EAAK,KACLl/B,EAAKsuU,cAAgB,WACjBr9S,YAAW,WACPjxB,EAAKS,MAAM4yL,EACf,GACJ,EAEArzL,EAAKotW,aAAeluU,EAAKtd,GAAG,QAAS5hB,EAAKsuU,eAElD,EAEAq/B,OAAQ,SAASjxW,GACbA,EAAEwE,gBACN,IAKJxI,EAAMwyB,cAAcoY,eAAe,YAAa,YAEhD5qC,EAAMwyB,cAAc2X,eAAe,YAAa,CAAC,CAC7Cjb,KAAM,UACNxW,OAAQ1Y,EAAMwyB,cAAcgX,cAAc/rB,OAAO,CAAC,CAAC,OAAQ,aAG/DmM,EAAG2M,OAAO42U,EAEb,CA/fD,CA+fGhtW,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACnB4pB,EAAK5pB,EAAM4pB,GACXla,EAAO1P,EAAM0P,KACb9P,EAAaI,EAAMJ,WACnB6wB,EAAS7G,EAAG6G,OACZgE,EAAQz0B,EAAM2d,UACduM,EAAOlqB,EAAMkqB,KACbtnB,EAAU5C,EAAM4C,QAChB6M,EAAWzP,EAAMyP,SACjBuJ,EAAgBhZ,EAAM+Y,eACtBm8V,EAAM,UAEN1pV,EAAK,mBACL+nN,EAAQ,QAAU/nN,EAClBd,EAAK9nB,EAAQsgB,qBAAuBljB,EAAMg7B,cAAc,KAAMxP,EAAGtlB,MAAM,IAAMqtO,EAC7ErjJ,EAAO,OACPC,EAAQ,QACR5zC,EAAS,SACTsqQ,EAAW,WACX6hC,EAAW,WACXjf,EAAU,UACV/e,EAAW,aACXgf,EAAgB,aAEhBmf,EAAc,aAAer9T,EAAK,cAAgBA,EAClDo+R,EAAY,YAAcp+R,EAC1BinU,EAAW,WACXz5I,EAAK,KAGL/1M,EAAQ,QACR4hT,EAAgB,gBAChB8jC,EAAgB,gBAChB/hC,EAAgB,gBAChBtzE,EAAc,cACdo8F,EAAwB,wBACxBz6T,EAAWjV,EAAMiV,SACjB4hV,EAAY5hV,EAAS4hV,UACrB1C,EAAgBl/U,EAASk/U,cACzBuI,EAAkBznV,EAASynV,gBAC3Bt6V,EAASJ,EAAEI,OACX09J,EAAO9xJ,KAEP,SAAS0vC,EAAUl3C,GACf,IAAI2uW,EAAe3uW,EAAQ2uW,aACvB7kW,EAAS9J,EAAQ8J,OAErB2E,EAASyoC,UAAUl3C,IAEnB2uW,EAAe5yW,MAAMD,QAAQ6yW,GAAgBA,EAAe,CAACA,IAE3CtuW,QACdsuW,EAAan0W,KAAK,eAGmB,IAArCgB,EAAE8yB,QAAQxkB,EAAQ6kW,IAClBA,EAAatrW,OAAO,EAAG,EAAGrD,EAAQ8J,QAGtC9J,EAAQ2uW,aAAeA,CAC3B,CAEA,SAAS3sW,EAAexE,GACpBA,EAAEwE,gBACN,CAEA,IAAI4sW,EAAW,SAAS5uW,GACpB,IAAiBkpB,EAAbpoB,EAAOjI,KACPgf,EAAOrP,SAASqP,KAChBJ,EAAMjc,EAAEkzW,GAAKjyV,KAAKqwN,EAAa,QAClB5uN,SAAS,wBAE1Bpd,EAAKd,QAAUA,EAAUA,GAAW,CAAC,EACrCkpB,EAAKlpB,EAAQkpB,GAEbpoB,EAAK+tW,aAAez1W,EAAW,SAC/B0H,EAAKguW,eAAiB11W,EAAW,SACL,QAAxB4G,EAAQwpU,cACR1oU,EAAKguW,eAAev0W,UAAS,WACrBuG,EAAKisF,OAASvzF,EAAMuI,WAAWjB,EAAKisF,MAAMw4O,aAC1CzkU,EAAKisF,MAAMw4O,WAAWzkU,EAAKguW,eAAep1W,eAAeW,QAEjE,IAGC2F,EAAQ+uW,UAgBTt3V,EAAMzX,EAAQgvW,SAfdv3V,EAAI1S,SAAS8S,GACe,QAAxB7X,EAAQwpU,cAA2B1oU,EAAK+tW,aAAan1W,eAAeW,QAWpEyG,EAAKisF,MAAQ,IAAI3pE,EAAGunE,MAAMlzE,EAAK7b,EAAOoE,EAAQ+sF,MAAO/sF,EAAS,CAAE/E,KAAM,QAASid,MAAO1e,EAAM4C,QAAQ8b,MAAMlY,EAAQgrF,WAVlHlqF,EAAKisF,MAAQ,IAAI3pE,EAAGyhT,YAAYptT,EAAK,CACjCiuT,UAAU,EACV1uR,MAAO,YACP03I,SAAU,eACV81I,aAAa,EACbmB,iBAAiB,EACjBJ,WAAYzkU,EAAKguW,eAAep1W,eAAeW,QAC/C0yF,MAAOnxF,EAAOoE,EAAQ+sF,MAAO/sF,EAAS,CAAE/E,KAAM,QAASid,MAAO1e,EAAM4C,QAAQ8b,MAAMlY,EAAQgrF,aAQlG9hE,IACAA,GAAM,YAENzR,EAAIgF,KAAK+1L,EAAItpL,GACbpoB,EAAKmuW,YAAc/lV,GAEvBpoB,EAAK2W,IAAMA,EAEX3W,EAAKS,MAAMvB,EAAQuB,MACvB,EAEAqtW,EAAS1tW,UAAY,CACjBguW,UAAW,WACP,IAGIz3V,EAHA3W,EAAOjI,KACP4V,EAAW3N,EAAK2N,SAChBzO,EAAUc,EAAKd,QAGnB,IAAKyO,EAAU,CACX,IAAI5F,EAA+B,QAAxB7I,EAAQwpU,cAA0B3wU,KAAKg2W,aAAan1W,eAAeW,QAAUxB,KAAKmH,QAAQ6I,KAAO,QAC5G4O,EAAMjc,EAAEkzW,GAAKjyV,KAAK+1L,EAAIh5M,EAAMwvB,QACfjkB,SAAS/E,EAAQ+uW,UAAY/uW,EAAQgvW,QAAWluW,EAAKisF,MAAMi1N,UAAYlhT,EAAKisF,MAAMroF,SAClFge,GAAG0gS,EAAWphT,GACd0gB,GAAGqqN,EAAO,kBAAmBjsO,EAAK86E,OAAOv5E,KAAKvB,IAG3DA,EAAK2N,SAAWA,EAAW,IAAI2U,EAAGypU,SAASp1U,EAAK,CAC5C+S,cAAexqB,EAAQwqB,cACvB3hB,KAAMA,EACN4a,SAAUzjB,EAAQyjB,WAEtB3iB,EAAKs8O,YAAYp9O,GAEjByX,EAAIyG,SAAS1kB,EAAM8qC,iBAAiB,cAAe,OAAQz7B,IAE3D4F,EAASsoC,SAASj2C,EAAKsuN,QAAUtuN,EAAKk9I,SAAUh+I,EAAQ2O,OAExD7N,EAAKS,MAAMT,EAAKsuN,OACpB,CACJ,EAEAguB,YAAa,SAASp9O,GAClBnH,KAAK4V,SAASsc,WAAW,CACrBuiU,YAAY,EACZl2S,OAAQp3C,EAAQo3C,OAChB1qC,QAAS1M,EAAQ0M,QACjB4rK,MAAOt4K,EAAQs4K,MACftb,MAAOh9J,EAAQg9J,MACfzqF,OAAQvyE,EAAQuyE,OAChBzoE,OAAQ9J,EAAQ8J,OAChBkI,IAAKhS,EAAQgS,IACbzC,IAAKvP,EAAQuP,IACbjR,MAAO0B,EAAQ1B,MACfk9B,WAAYx7B,EAAQw7B,WACpB7sB,MAAO3O,EAAQ2O,MACf8U,SAAUzjB,EAAQyjB,SAClBqpU,aAAc9sV,EAAQ8sV,cAE9B,EAEA/hU,WAAY,SAAS/qB,GACjB,IAAIc,EAAOjI,KACPu0E,EAAMtsE,EAAKd,QACX8sV,EAAe9sV,EAAQ8sV,aAEvBA,IACA9sV,EAAQ8sV,aAAer+U,EAASwiB,SAAS67T,IAG7ChsV,EAAKd,QAAUpE,EAAOwxE,EAAKptE,EAAS,CAChCo3C,OAAQg2B,EAAIh2B,OACZmH,MAAO6uB,EAAI7uB,MACX6sC,KAAMhe,EAAIge,OAGVtqF,EAAK2N,UACL3N,EAAKs8O,YAAYt8O,EAAKd,QAE9B,EAEAnF,QAAS,WACL,IAAIiG,EAAOjI,KACPA,KAAKk0F,OACLl0F,KAAKk0F,MAAMlyF,UAGXiG,EAAK+tW,eACL/tW,EAAK+tW,aAAah0W,UAClBiG,EAAK+tW,aAAe,MAGpB/tW,EAAKguW,iBACLhuW,EAAKguW,eAAej0W,UACpBiG,EAAKguW,eAAiB,KAE9B,EAEA1jR,KAAM,WACF,IACI+jR,EADAruW,EAAOjI,KAGXiI,EAAKouW,YAKLC,EAAeruW,EAAKisF,MAAM9B,SAC1BnqF,EAAKisF,MAAM9B,UAAW,EAEtBnqF,EAAKisF,MAAM3B,OAEXr5D,YAAW,WACPjxB,EAAKisF,MAAM9B,SAAWkkR,CAC1B,GAAG,EACP,EAEA5wT,MAAO,WACC1lD,KAAKk0F,OACLl0F,KAAKk0F,MAAMxuC,OAEnB,EAEAhvC,IAAK,SAAShO,GACV1I,KAAKq2V,QAtMP,MAsMoB3tV,EACtB,EAEAyQ,IAAK,SAASzQ,GACV1I,KAAKq2V,QAzMP,MAyMoB3tV,EACtB,EAEAqgB,OAAQ,WACO/oB,UAEDk0F,MAAMlnF,UAAY8jF,EAAQD,IACxC,EAEAn2D,KAAM,SAAS/1B,GACX,IAAIsD,EAAOjI,KACP8R,EAAMnN,EAAE2iC,QACR1xB,EAAW3N,EAAK2N,SAChB2gW,EAAkB5xW,EAAE8qF,SAAW39E,GAAO+Y,EAAKU,MAAQzZ,GAAO+Y,EAAKK,MAC/DwuS,GAAU,EAEd,GAAI/0T,EAAE0qN,OACEv9M,GAAO+Y,EAAKU,MACZtjB,EAAKsqF,OACL5tF,EAAEwE,iBACFuwT,GAAU,GACH5nT,GAAO+Y,EAAKQ,KACnBpjB,EAAKy9C,QACL/gD,EAAEwE,iBACFuwT,GAAU,QAGX,GAAIzxT,EAAKisF,OAASjsF,EAAKisF,MAAMlnF,UAAW,CAE3C,GAAI8E,GAAO+Y,EAAKM,KAAQorV,GAAmB3gW,EAASo/U,MAAMjoV,SAASs+S,GAG/D,OAFApjT,EAAKy9C,QACL/gD,EAAEwE,kBACK,EAGP2I,GAAO+Y,EAAKa,WACZzjB,EAAKk9I,SAAWvvI,EAASgtE,MAAMj+E,IAGnC+0T,GAAU,CACd,CAEA,OAAOA,CACX,EAEA1lT,QAAS,SAAS4C,GACd5W,KAAKmlJ,SAAWvuI,EACZ5W,KAAK4V,UACL5V,KAAK4V,SAASghF,OAAOhgF,EAE7B,EAEAlO,MAAO,SAASA,GACZ,IAAIT,EAAOjI,KACP4V,EAAW3N,EAAK2N,SAChBzO,EAAUc,EAAKd,QACfqvW,EAAervW,EAAQ8sV,aAEvBuiB,GAAgBA,EAAa9tW,KAC7BA,EAAQ,MAGZT,EAAKsuN,OAAS7tN,EACdT,EAAKk9I,SAAW,IAAIsb,GAAMq0L,EAAcpsV,EAAOvB,EAAQuP,IAAKvP,EAAQgS,MAEhEvD,GACAA,EAASlN,MAAMA,EAEvB,EAEAq6E,OAAQ,SAASp+E,IAEwC,IAAjDA,EAAEg6E,cAActxD,UAAU1X,QAAQ01S,KAClCrrT,KAAK4V,SAASxL,QAAQ,UACtBpK,KAAK0lD,QAEb,EAEA2wS,QAAS,SAASnhU,EAAQxsB,GACtB,IACIkN,EADO5V,KACS4V,SADT5V,KAGNmH,QAAQ+tB,GAAUxsB,EAEnBkN,GACAA,EAASsf,GAAQxsB,EAEzB,GAGJqtW,EAAS13T,UAAYA,EAErB19C,EAAMo1W,SAAWA,EAEjB,IAAIU,EAAarlV,EAAOruB,OAAO,CAC3BoF,KAAM,SAAS0D,EAAS1E,GACpB,IACIm0L,EADArzL,EAAOjI,KAIXoxB,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GACnC0E,EAAU5D,EAAK4D,SACf1E,EAAUc,EAAKd,SAEP8sV,aAAetzV,EAAMiV,SAASwiB,SAASjxB,EAAQ8sV,cAEvD9sV,EAAQuP,IAAM0e,EAAMvpB,EAAQ+X,KAAK,SAAWwR,EAAMjuB,EAAQuP,KAC1DvP,EAAQgS,IAAMic,EAAMvpB,EAAQ+X,KAAK,SAAWwR,EAAMjuB,EAAQgS,KAE1DlR,EAAKd,QAAQwqE,SAAWxqE,EAAQwqE,WAAa/uE,EAAcuE,EAAQwqE,SAAW7+D,QAAQ7K,EAAK4D,QAAQ+X,KAAK,aACxG3b,EAAKd,QAAQghB,OAAShhB,EAAQghB,SAAWvlB,EAAcuE,EAAQghB,QAAWrV,QAAQjH,EAAQoB,GAAG,eAAiBtK,EAAEkJ,GAAS0sB,QAAQ,YAAYtrB,GAAG,cAEhJoxC,EAAUl3C,GAEVc,EAAKyuW,gBAAkB3zW,EAAO,CAAC,EAAGoE,GAElCc,EAAKmxE,WAELnxE,EAAK0uW,kBACL1uW,EAAK2uW,qBAAuB3uW,EAAK0uW,gBAAgBntW,KAAKvB,GAEtDA,EAAK+tW,aAAez1W,EAAW,SACE,QAA7B0H,EAAKd,QAAQwpU,cACb1oU,EAAK+tW,aAAat0W,UAAS,KACvBuG,EAAK2uW,uBACL3uW,EAAK4uW,SAASnuW,MAAMT,EAAKsuN,OAAO,IAIxCtuN,EAAKo7G,QAEL,IACIx3G,EAAQ,GAAG8Z,aAAa,OAAQ,OACpC,CAAE,MAAOhhB,GACLkH,EAAQ,GAAGnG,KAAO,MACtB,CAEAmG,EACKwZ,SAAS,iBACTzB,KAAK,CACF4M,KAAM,WACN,iBAAiB,EACjB,gBAAiB,OACjB,gBAAiBvoB,EAAK4uW,SAAST,YAC/B3/B,aAAgB,QAExBxuU,EAAKklE,SACLllE,EAAKy4I,aAEOz4I,EAAKd,QAAQghB,OAErBlgB,EAAKkgB,QAAO,GAEZlgB,EAAK0pE,SAAS9lE,EAAQoB,GAAG,eAG7BquL,EAAelmK,EAAMjuB,EAAQuB,OAAST,EAAK4D,QAAQ+jB,MAAOzoB,EAAQ2uW,aAAc3uW,EAAQ0M,SAExF5L,EAAK6uW,iBAAiB3vW,GAEtBc,EAAKytU,KAAOztU,EAAKqtO,QAAQh6C,GAAgBrzL,EAAK4D,QAAQ+jB,OACtD3nB,EAAK8uW,SAAWlrW,EAAQ+jB,MACxB3nB,EAAKoqB,mBAEDlrB,EAAQmtB,OACRrsB,EAAK8iU,SAGTpqU,EAAMi0B,OAAO3sB,EACjB,EACAoC,OAAQ,CACRwmF,EACAC,EACA5zC,GACA/1C,QAAS,CACL/E,KAAM,aACNsG,MAAO,KACPgxE,OAAQ,GACRzoE,OAAQ,GACR4C,QAAS,GACTiiW,aAAc,GACdp/V,IAAK,IAAI/H,KAAK,KAAM,EAAG,GACvBwK,IAAK,IAAIxK,KAAK,KAAM,GAAI,IACxBmH,MAAOlS,EACPugK,MAAOvgK,EACP0uF,UAAW,CAAC,EACZ7sF,MAAO,CAAC,EACRg6K,MAAO,GACPw0K,aAAc,KACd+iB,aAAc,EAAGnc,YAAW/5T,UAAW,mBAAmB+5T,QAAgB/5T,IAC1Em2U,WAAW,EACXt0U,YAAY,EACZ/X,SAAU,CACN8qU,iBAAkB,IAEtB/jU,cAAe,UACfg/S,aAAc,OACd3gU,KAAM,SACNyjB,SAAU,QACVva,QAAS,SACTob,MAAO,KACPu5U,UAAU,EACVpK,kBAAkB,GAGtBkT,gBAAiB,WACb,IAGA/3V,EAHI3W,EAAOjI,KACXmH,EAAUc,EAAKd,QACf0E,EAAU5D,EAAK4D,QAGX5D,EAAK4uW,WACL5uW,EAAK4uW,SAAS70W,UACdiG,EAAK4uW,SAAW,MAGpB5uW,EAAK4uW,SAAW,IAAId,EAAShzW,EAAO,CAAC,EAAGoE,EAAS,CAC7CkpB,GAAIxkB,EAAQ+X,KAAK+1L,GACjBxnH,OAAQlqF,EAAK2E,QACb2xC,OAAQ,WAEJt2C,EAAKs3D,QAAQv/D,KAAK0I,SAClBT,EAAKy9C,OACT,EACAA,MAAO,SAAS/gD,GACRsD,EAAKmC,QAAQ0mF,GACbnsF,EAAEwE,kBAEF0C,EAAQ+X,KAAK2jS,GAAe,GAC5B3oS,EAAIgF,KAAKqwN,GAAa,GAEtB/6M,YAAW,WACPrtB,EAAQomB,WAAW,wBACvB,IAER,EACAsgE,KAAM,SAAS5tF,GACX,IACIiS,EADAzP,EAAUc,EAAKd,QAGfc,EAAKmC,QAAQymF,GACblsF,EAAEwE,kBAEElB,EAAK4D,QAAQ+jB,QAAU3nB,EAAK8uW,WAC5BngW,EAAOwe,EAAMvpB,EAAQ+jB,MAAOzoB,EAAQ2uW,aAAc3uW,EAAQ0M,SAE1D5L,EAAK4uW,SAASjgW,EAAO,UAAY,SAASA,IAG9C/K,EAAQ+X,KAAK2jS,GAAe,GAC5B3oS,EAAIgF,KAAKqwN,GAAa,GAEtBhsO,EAAKivW,YAAYtgW,GAGzB,KAGJgI,EAAM3W,EAAK4uW,SAASj4V,GACxB,EAEAsT,WAAY,SAAS/qB,GACjB,IAAIc,EAAOjI,KACP0I,EAAQT,EAAKsuN,OAEjBnlM,EAAOrpB,GAAGmqB,WAAW3nB,KAAKtC,EAAMd,IAEhCA,EAAUc,EAAKd,SAEPuP,IAAM0e,EAAMjuB,EAAQuP,KAC5BvP,EAAQgS,IAAMic,EAAMjuB,EAAQgS,KAE5BklC,EAAUl3C,GAEVc,EAAKkvW,UAAU/9U,IAAIjN,GACnBlkB,EAAKkvW,UAAU9qW,SAEfpE,EAAK4uW,SAAS3kV,WAAW/qB,GACzBc,EAAKo7G,QACLp7G,EAAK8sO,UAAU,CACXpjK,SAAUxqE,EAAQwqE,WAAa/uE,EAAcqF,EAAKd,QAAQwqE,SAAWxqE,EAAQwqE,SAC7E1pD,UAAW9gB,EAAQghB,SAAWvlB,EAAcqF,EAAKd,QAAQghB,OAAShhB,EAAQghB,UAG9ElgB,EAAK6uW,iBAAiB3vW,GAEjBc,EAAKmvW,YACNnvW,EAAK4D,QAAQ+jB,IAAIjvB,EAAM8Q,SAAS/I,EAAOvB,EAAQ8J,OAAQ9J,EAAQ0M,UAG/DnL,GACAT,EAAKivW,YAAYxuW,GAGjBvB,EAAQmtB,OAASrsB,EAAKupU,YACtBvpU,EAAKqsB,MAAMpC,WAAW/qB,EAAQmtB,QACL,IAAlBntB,EAAQmtB,OACfrsB,EAAKqsB,MAAM02S,kBACX/iU,EAAKupU,YAAYnlU,gBACVpE,EAAKupU,aACLrqU,EAAQmtB,OACfrsB,EAAK8iU,QAEb,EAEAh2F,UAAW,SAAS5tO,GAChB,IAAIc,EAAOjI,KACPs4F,EAAOrwF,EAAKkvW,UAAU/9U,IAAIjN,GAC1BtgB,EAAU5D,EAAK4D,QAAQutB,IAAIjN,GAC3Bvf,EAAU3E,EAAK2E,QAAQwsB,IAAIjN,GAC3BwlD,EAAWxqE,EAAQwqE,SACnB1pD,EAAU9gB,EAAQ8gB,QAEjB0pD,GAAa1pD,GAmBdrb,EACKyY,SAAS4C,EAAUoiT,EAAgB,IACnCt9S,YAAY9E,EAAU,GAAKoiT,GAEhCx+T,EAAQ+X,KAAK4jS,EAAUv/R,GACfrE,KAAKylU,EAAU13Q,GACf/tD,KAAK4hS,EAAev9R,GACpBrE,KAAK0lU,EAAe33Q,KAzB5B/kE,EACKmgB,YAAYs9S,GACZxgT,GAAG2/T,EAAavhV,EAAKsqT,cACtB1mT,GAAWA,EAAQrE,SACnBqE,EAAQ,GAAGs8B,gBAAgBq/Q,GAC3B37S,EAAQ,GAAGs8B,gBAAgBkhT,IAE/Bx9U,EAAQ+X,KAAK4hS,GAAe,GACpB5hS,KAAK0lU,GAAe,GACpBz/T,GAAG,UAAYsC,EAAIlkB,EAAK28G,SAASp7G,KAAKvB,IACtC4hB,GAAG,WAAasC,EAAIlkB,EAAK2+G,MAAMp9G,KAAKvB,IACpC4hB,GAAG,QAAUsC,GAAI,WACdlkB,EAAK2E,QAAQyY,SAAS+kT,EAC1B,IAER9xO,EAAKzuE,GAAGwB,EAAIpjB,EAAK86E,OAAOv5E,KAAKvB,IACxB4hB,GAAG0gS,EAAWphT,GAW1B,EAEAwoE,SAAU,SAASA,GACf3xE,KAAK+0O,UAAU,CACXpjK,SAAUA,IAAa/uE,GAAqB+uE,EAC5C1pD,SAAS,IAETjoB,KAAKo3W,YACLp3W,KAAKo3W,WAAWriI,UAAU,CACtBpjK,SAAUA,IAAa/uE,GAAqB+uE,EAC5C1pD,SAAS,IAIbjoB,KAAKs0B,OAASt0B,KAAKs0B,MAAM4+C,eACzBlzE,KAAKs0B,MAAM4+C,cAAcvB,SAASA,IAAa/uE,GAAqB+uE,EAE5E,EAEAxpD,OAAQ,SAASA,GACbnoB,KAAK+0O,UAAU,CACXpjK,UAAU,EACV1pD,UAAWE,EAASA,IAAWvlB,GAAqBulB,KAEpDnoB,KAAKo3W,YACLp3W,KAAKo3W,WAAWriI,UAAU,CACtBpjK,UAAU,EACV1pD,UAAWE,EAASA,IAAWvlB,GAAqBulB,KAIxDnoB,KAAKs0B,OAASt0B,KAAKs0B,MAAM4+C,eACzBlzE,KAAKs0B,MAAM4+C,cAAc/qD,OAAOA,EAASA,IAAWvlB,GAAqBulB,EAEjF,EAEA4iT,OAAQ,WACJ,IAAI9iU,EAAOjI,KACPmH,EAAUc,EAAKd,QACfgvK,EAAexzK,EAAEgF,cAAcR,EAAQmtB,OAASntB,EAAQmtB,MAAQ,CAChEqyB,QAASx/C,EAAQmtB,OAGjBrsB,EAAKmvW,aACLjhM,EAAas0J,WAAa,MAEjBxiU,EAAKS,SAAaT,EAAKmvW,WAAW9B,iBAA0C,KAAvBrtW,EAAK4D,QAAQ+jB,OAAiBjgB,SAASgK,gBAAkB1R,EAAK4D,QAAQ,MAC5H5D,EAAK4D,QAAQ+jB,IAAI,KACV,IAOnB3nB,EAAKqsB,MAAQ,IAAI3zB,EAAM4pB,GAAG84N,MAAM,KAAM1gP,EAAEI,OAAO,CAAC,EAAGozK,EAAc,CAC7D5iJ,OAAQtrB,KAGZA,EAAKupU,YAAcvpU,EAAKqsB,MAAMzoB,OAClC,EAEA7J,QAAS,WACL,IAAIiG,EAAOjI,KAEPiI,EAAKqsB,OACLrsB,EAAKqsB,MAAMtyB,UAGfovB,EAAOrpB,GAAG/F,QAAQuI,KAAKtC,GAEnBA,EAAK4uW,SAASjhW,UAAY3N,EAAKovW,2BAC/BpvW,EAAK4uW,SAASjhW,SAAS3L,OAAOmpV,EAAUnrV,EAAKovW,0BAC7CpvW,EAAKovW,yBAA2B,MAGpCpvW,EAAK4uW,SAAS70W,UAEdiG,EAAK4D,QAAQutB,IAAIjN,GACjBlkB,EAAKkvW,UAAU/9U,IAAIjN,GAEflkB,EAAKquU,OACLruU,EAAKquU,MAAMl9S,IAAI,QAASnxB,EAAKsuU,eAG7BtuU,EAAK+tW,cACL/tW,EAAK+tW,aAAah0W,UAGtBiG,EAAK2uW,qBAAuB,IAChC,EAEArkR,KAAM,WACFvyF,KAAK62W,SAAStkR,OACdvyF,KAAKs3W,mBACT,EAEA5xT,MAAO,WACH1lD,KAAK62W,SAASnxT,OAClB,EAEAhvC,IAAK,SAAShO,GACV,OAAO1I,KAAKq2V,QAroBd,MAqoB2B3tV,EAC7B,EAEAyQ,IAAK,SAASzQ,GACV,OAAO1I,KAAKq2V,QAxoBd,MAwoB2B3tV,EAC7B,EAEAA,MAAO,SAASA,GACZ,IAAIT,EAAOjI,KAEX,GAAI0I,IAAU9F,EACV,OAAOqF,EAAKsuN,OAGhBtuN,EAAKytU,KAAOztU,EAAKqtO,QAAQ5sO,GAEP,OAAdT,EAAKytU,OACDztU,EAAKmvW,WACLnvW,EAAKmvW,WAAW1uW,MAAMT,EAAKytU,MAE3BztU,EAAK4D,QAAQ+jB,IAAI,KAIzB3nB,EAAK8uW,SAAW9uW,EAAK4D,QAAQ+jB,MAEzB3nB,EAAKqsB,OAASrsB,EAAKqsB,MAAM4+C,eACzBjrE,EAAKqsB,MAAM4+C,cAAcv0D,SAEjC,EAEA4zS,aAAc,SAAS5tT,GACnBhC,EAAEgC,EAAEg6E,eAAe/1D,YA1qBnB,UA0qBiD,eAAXjkB,EAAEe,KAC5C,EAEA6xW,SAAU,SAAS7uW,GACf,IAAIT,EAAOjI,KACX,OAAOiI,EAAKd,QAAQ8vW,WAAahvW,EAAKd,QAAQ0mW,UAAY5lW,EAAKmvW,WAAWhC,YAAc1sW,CAC5F,EAEAk+G,MAAO,WACH,IAAI3+G,EAAOjI,KACP0I,EAAQT,EAAK4D,QAAQ+jB,MAEzB3nB,EAAKy9C,QACDh9C,IAAUT,EAAK8uW,WAEX9uW,EAAKd,QAAQ0mW,WAAa5lW,EAAKsvW,SAAS7uW,KACxCT,EAAKmvW,WAAWpC,kBAAkBnH,WAClCnlW,EAAQT,EAAK4D,QAAQ+jB,OAGzB3nB,EAAKs3D,QAAQ72D,GACRA,GACDT,EAAK4uW,SAAS7iW,QAAQrT,EAAMiV,SAASu/U,aAI7CltV,EAAK2E,QAAQmgB,YAAYq9S,EAC7B,EAEArnP,OAAQ,SAASp+E,GACb,IAAIsD,EAAOjI,KAEXiI,EAAK4uW,SAAS9tV,SACd9gB,EAAKqvW,oBACLrvW,EAAK4hO,cAAcllO,EAAEe,KACzB,EAEAmkO,cAAe,SAAS5b,GACpB,IAAIpiN,EAAU7L,KAAK6L,QAEbtI,EAAQic,SAAUjc,EAAQsgB,uBAA0BoqM,GAAa,IAAIv9M,MAAM,YAAe7E,EAAQ,KAAO8N,KAC3G9N,EAAQzB,QAAQ,QAExB,EAEAm1D,QAAS,SAAS72D,GACd,IAEA8uW,EAFIvvW,EAAOjI,KACXg2O,EAAW/tO,EAAK4D,QAAQ+jB,MAGxBlnB,EAAQT,EAAKqtO,QAAQ5sO,GAGrB,IAAI+uW,GAFJD,GAAe72W,EAAMiV,SAAS8gV,YAAYzuV,EAAKytU,KAAMhtU,MAElBT,EAAKgvU,QACpCygC,EAAgB1hI,IAAa/tO,EAAK4D,QAAQ+jB,OAE1C6nV,GAAgBC,IAChBzvW,EAAK4D,QAAQzB,QAAQ8yC,GAGrBs6T,IACAvvW,EAAKytU,KAAOhtU,EACZT,EAAK8uW,SAAW9uW,EAAK4D,QAAQ+jB,MAE7B3nB,EAAKmC,QAAQ8yC,IAGjBj1C,EAAKgvU,SAAU,CACnB,EAEAryN,SAAU,SAASjgH,GACf,IAAIsD,EAAOjI,KACP62W,EAAW5uW,EAAK4uW,SAChBnuW,EAAQT,EAAK4D,QAAQ+jB,MACrB8pS,GAAU,EAETm9C,EAAS3iR,MAAMlnF,WAAarI,EAAE2iC,SAAWzc,EAAKK,OAASxiB,IAAUT,EAAK8uW,UAGvEr9C,EAAUm9C,EAASn8U,KAAK/1B,GACxBsD,EAAKivW,YAAYL,EAAS1xN,UAErBu0K,EAEMzxT,EAAKmvW,YAAczyW,EAAE+zT,0BAC5B/zT,EAAE+zT,2BAFFzwT,EAAKgvU,SAAU,GANnBhvU,EAAKs3D,QAAQ72D,EAWrB,EAEA26G,MAAO,WACH,IAGI/qB,EAHArwF,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACf1E,EAAUc,EAAKd,SAGnBmxF,EAAOzsF,EAAQy6D,KAAK,0BAEV,KACNgyB,EAAO31F,EAAE0N,EAAKg1S,aAAa,oGAAqG,CAC5H/sN,KAAM,WACNtoF,KAAM7I,EAAQ6I,KACdyjB,SAAUtsB,EAAQssB,SAClBqvH,MAAO,OACP5pI,QAAS,UACTg8S,YAAYrpT,IAGpB5D,EAAKkvW,UAAY7+Q,EAAK10E,KAAK,CACvB4M,KAAQ,UAEhB,EAEAmnV,sBAAuB,WACnB,IAAI1vW,EAAOjI,KACXk5B,YAAW,WACPjxB,EAAK4D,QAAQ+X,KAAKysT,EAAuBpoU,EAAK4uW,SAASjhW,SAASugV,OAAOvyU,KAAKysT,GAChF,GACJ,EAEAinC,kBAAmB,WACf,IAAIrvW,EAAOjI,KAENiI,EAAKovW,2BACNpvW,EAAKovW,yBAA2BpvW,EAAK0vW,sBAAsBnuW,KAAKvB,IAG9DA,EAAK4uW,SAASjhW,UAChB3N,EAAK4uW,SAASjhW,SAAS3L,OAAOmpV,EAAUnrV,EAAKovW,0BAA0B7tW,KAAK4pV,EAAUnrV,EAAKovW,yBAEnG,EAEAhhB,QAAS,SAASnhU,EAAQxsB,GACtB,IACIvB,EADOnH,KACQmH,QAEnB,GAAIuB,IAAU9F,EACV,OAAOuE,EAAQ+tB,IAGnBxsB,EAAQ0sB,EAAM1sB,EAAOvB,EAAQ2uW,aAAc3uW,EAAQ0M,YAMnD1M,EAAQ+tB,GAAU,IAAIurI,GAAM/3J,GAbjB1I,KAcN62W,SAAS3hV,GAAQxsB,GAC1B,EAEA4sO,QAAS,SAAS5sO,GACd,IAOIiwM,EAPA1wM,EAAOjI,KACPmH,EAAUc,EAAKd,QACfuP,EAAMvP,EAAQuP,IACdyC,EAAMhS,EAAQgS,IACdnF,EAAU/L,EAAKsuN,OACf3/M,EAAOwe,EAAM1sB,EAAOvB,EAAQ2uW,aAAc3uW,EAAQ0M,SAClD+jW,EAAuB,OAAThhW,GAA6B,OAAZ5C,GAAsB4C,aAAgBjI,MAAQqF,aAAmBrF,KAUpG,OAPIxH,EAAQ8sV,aAAar9U,KACrBA,EAAO,KACF3O,EAAKytU,MAASztU,EAAK4D,QAAQ+jB,QAC5BlnB,EAAQ,QAIXkO,IAAU5C,GAAW4jW,IACtBj/J,EAAiBh4M,EAAM8Q,SAASmF,EAAMzP,EAAQ8J,OAAQ9J,EAAQ0M,YAEvCnL,GAAWT,EAAKmvW,aAAexgW,GAClD3O,EAAK4D,QAAQ+jB,IAAa,OAAThZ,EAAgBlO,EAAQiwM,GAGtC/hM,IAGE,OAATA,GAAiBymV,EAAgBzmV,EAAMF,GACvCE,EAAOk+U,EAAcl+U,EAAMF,EAAKyC,GACxBq+U,EAAU5gV,EAAMF,EAAKyC,KAC7BvC,EAAO,MAGX3O,EAAKsuN,OAAS3/M,EACd3O,EAAK4uW,SAASnuW,MAAMkO,GAChB3O,EAAKmvW,YAAcxgW,EACnB3O,EAAKmvW,WAAW1uW,MAAMkO,GAAQlO,GAE9BT,EAAK4D,QAAQ+jB,IAAIjvB,EAAM8Q,SAASmF,GAAQlO,EAAOvB,EAAQ8J,OAAQ9J,EAAQ0M,UAE3E5L,EAAKivW,YAAYtgW,GAEVA,EACX,EAEAwiE,SAAU,WACN,IAEIxsE,EADAf,EADO7L,KACQ6L,SAGnBe,EAAUf,EAAQ0sB,QAAQ,kBAEb,KACT3rB,EAAUf,EAAQ8gB,KAj4BvB,YAi4BkChgB,UAGjCC,EAAQ,GAAGO,MAAM2R,QAAUjT,EAAQ,GAAGsB,MAAM2R,QAC5CjT,EAAQI,IAAI,CACRD,OAAQH,EAAQ,GAAGsB,MAAMnB,SAZlBhM,KAeN4M,QAAUA,EAAQyY,SAAS,wBAC3BA,SAASxZ,EAAQ,GAAGwhB,WAAWN,YAAY,yBACpD,EAEAogD,OAAQ,WACJ,IAAIllE,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACf4wU,EAAS5wU,EAAQ+X,KAAK,QACtBzc,EAAUc,EAAKd,QACfqvW,EAAervW,EAAQ8sV,aACvB6hB,EAAe3uW,EAAQ2uW,aAAatuW,OAASL,EAAQ2uW,aAAe,KACpE+B,EAAe5vW,EAAKyuW,gBAAgBhuW,MACpCy+B,EAAOs1S,EAAS95U,EAAE,IAAM85U,GAAU5wU,EAAQgB,QAAQ,QAClDyuL,EAAezvL,EAAQ,GAAGqjD,aAE1B2oT,GAAiBrB,GAAgBA,EAAaqB,KAC9CA,EAAe,MAGbv8K,GAAiB36L,EAAM2d,UAAUg9K,EAAcw6K,EAAc3uW,EAAQ0M,WAAagkW,GACpFhsW,EAAQ+X,KAAK,QAASjjB,EAAM8Q,SAASomW,EAAc1wW,EAAQ8J,OAAQ9J,EAAQ0M,UAG3EszB,EAAK,KACLl/B,EAAKsuU,cAAgB,WACjBtuU,EAAKS,MAAMmvW,GAAgBhsW,EAAQ,GAAGqjD,cACtCjnD,EAAKkR,IAAIlR,EAAKyuW,gBAAgBv9V,KAC9BlR,EAAKyO,IAAIzO,EAAKyuW,gBAAgBhgW,IAClC,EAEAzO,EAAKquU,MAAQnvS,EAAKtd,GAAG,QAAS5hB,EAAKsuU,eAE3C,EAEA71L,UAAW,WACP1gJ,KAAK83W,cAAgB1nW,EAASpQ,KAAKmH,QAAQ6vW,cAAcxtW,KAAKxJ,KAClE,EAEA82W,iBAAkB,SAAS3vW,GACnBnH,KAAKo3W,aACLp3W,KAAKo3W,WAAWp1W,UAChBhC,KAAKo3W,WAAa,MAGlBjwW,EAAQ8vW,YACRj3W,KAAKo3W,WAAa,IAAI7sV,EAAGujV,UAAU9tW,KAAK6L,QAAS,CAC7CgI,QAAS1M,EAAQ0M,QACjB5C,OAAQ9J,EAAQ8J,OAChBjB,KAAM7I,EAAQ6I,KACdyjB,SAAUtsB,EAAQssB,SAClBva,QAAS/R,EAAQ+R,QACjBxC,IAAKvP,EAAQuP,IACbyC,IAAKhS,EAAQgS,IACbyR,SAAUzjB,EAAQyjB,SAASqsV,UAC3BpJ,SAAU1mW,EAAQ0mW,SAClBpK,iBAAkBt8V,EAAQs8V,mBAGtC,EAEAyT,YAAa,SAAStgW,GAClB,IAAI3O,EAAOjI,KACP4V,EAAW3N,EAAK4uW,SAASjhW,SAEzB3N,EAAK4D,SAAW5D,EAAK4D,QAAQrE,QAC7BS,EAAK4D,QAAQ,GAAGs8B,gBAAgBkoS,GAGhCz6T,GACA3N,EAAK4D,QAAQ+X,KAAKysT,EAAuBz6T,EAASglV,YAAY3yV,EAAK6vW,cAAelhW,GAE1F,IAGJjW,EAAMwyB,cAAcoY,eAAe,aAAc,YAEjD5qC,EAAMwyB,cAAc2X,eAAe,aAAc,CAAC,CAC9Cjb,KAAM,UACNxW,OAAQ1Y,EAAMwyB,cAAcgX,cAAc/rB,OAAO,CAAC,CAAC,OAAQ,aAG/DmM,EAAG2M,OAAOu/U,EAEb,CAx+BD,CAw+BG31W,OAAOH,MAAM+G,QACF/G,MAEd,IAAIo3W,GAAMp3W,MAAM+G,OAEhB,SAASswW,IAA+BzkV,OAAEA,EAAM3mB,QAAEA,EAAOzF,QAAEA,EAAO8wW,mBAAEA,EAAkBC,kBAAEA,IACpF,IASIC,EACAC,EAVAp4V,EAAS7Y,EAAQkxW,cACjB3P,EAASvhW,EAAQmxW,cACjBC,EAAmBv4V,EAAO5P,UAAY4P,EAAOs4E,KAC7CkgR,EAAmB9P,EAAOt4V,UAAYs4V,EAAOpwQ,KAE7CmgR,GADAP,EAAoBA,GAAqBD,EAC5B9wW,EAAQsxW,YACrBC,EAAuBD,EAA4B,YAAdA,EAA2B,aAAe,WAAc,aAE7FE,EAAkB,oDADmB,YAAdF,EAA2B,aAAe,sBAKjEz4V,GAAUu4V,KACVJ,EAAkBvrW,EAAQ2oC,SAAS,oBAEd,KACjB4iU,EAAkBJ,GAAI,8CAA8CW,SAChET,EACAE,EAAgB7lS,aAAa2lS,GAE7BE,EAAgBlhV,UAAUrqB,IAI9BoT,EAAOs4E,MACP6/Q,EAAgB9nW,KAAK1P,MAAM0P,KAAK0oF,WAAW,CAAET,KAAMt4E,EAAOs4E,QAG1Dt4E,EAAO5P,UACP+nW,EAAgB9nW,KAAK1P,MAAMyP,SAAS4P,EAAO5P,SAAtBzP,CAAgC,CAAC,IAGtDqf,EAAOk6G,WACP69O,GAAIY,GAAiBzjD,YAAYijD,IAIrCzP,GAAU8P,KACVJ,EAAkBxrW,EAAQ2oC,SAAS,oBAEd,KACjB6iU,EAAkBL,GAAI,8CAA8CW,SAA4BxsW,SAASU,GACrGsrW,EACAE,EAAgBljD,YAAYgjD,GAE5BE,EAAgBlsW,SAASU,IAI7B87V,EAAOpwQ,MACP8/Q,EAAgB/nW,KAAK1P,MAAM0P,KAAK0oF,WAAW,CAAET,KAAMowQ,EAAOpwQ,QAG1DowQ,EAAOt4V,UACPgoW,EAAgB/nW,KAAK1P,MAAMyP,SAASs4V,EAAOt4V,SAAtBzP,CAAgC,CAAC,IAGtD+nW,EAAOxuO,WACP69O,GAAIY,GAAiBrmS,aAAa8lS,IAI1C7kV,EAAOqlV,iBAAmBT,EAC1B5kV,EAAOslV,iBAAmBT,CAC9B,EAUA,SAAUz1W,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfglC,EAAQhlC,EAAMglC,MACd9a,EAAOlqB,EAAMkqB,KACbxa,EAAO1P,EAAM0P,KACbka,EAAK5pB,EAAM4pB,GACX6G,EAAS7G,EAAG6G,OACZzX,EAAgBhZ,EAAM+Y,eACtBg5U,EAAgB/xV,EAAM8Y,eACtB2b,EAAQz0B,EAAMoI,WACd+vW,EAAuBn4W,EAAM4C,QAAQiiB,YACrCzR,EAAapT,EAAMoT,WACnBmpC,EAAS,SACTsqQ,EAAW,WACX6hC,EAAW,WACXzpB,EAAQ,gBACRm5C,EAAO,OACP5sV,EAAK,uBAGLq9T,EAAc,aAAer9T,EAAK,KADrB,aAAeA,GAE5Bi+S,EAAU,UACVgF,EAAQ,UACR5oG,EAAQ,QACRjzN,EAAQ,IAKR83S,EAAW,aACXgf,EAAgB,aAChBqqC,EAAe,YACflvD,EAAgB,gBAChBwzD,EAAiB,cACjB3yW,EAAO,KACPsB,EAAgBhF,EAAEgF,cAClB5E,EAASJ,EAAEI,OAEXk2W,EAAiB7nV,EAAOruB,OAAO,CAC9BoF,KAAM,SAAS0D,EAAS1E,GACpB,IAEAuP,EAAKyC,EAAK25B,EAAMpqC,EACZwwW,EAHAjxW,EAAOjI,KACXm5W,EAAShyW,GAAWA,EAAQ2rC,OAASlwC,EAIrCwuB,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GAEnCA,EAAUc,EAAKd,QACf0E,EAAU5D,EAAK4D,QACAge,GAAG,WAAasC,EAAIlkB,EAAKmxW,UAAU5vW,KAAKvB,IACxC2b,KAAK,OAAQ,cAE5Bzc,EAAQqe,YAAcre,EAAQqe,aAAe3Z,EAAQ+X,KAAK,eAE1DlN,EAAMzO,EAAKyO,IAAI7K,EAAQ+X,KAAK,QAC5BzK,EAAMlR,EAAKkR,IAAItN,EAAQ+X,KAAK,QAC5BkvB,EAAO7qC,EAAK2hD,OAAO/9C,EAAQ+X,KAAK,SAE5Bzc,EAAQuP,MAAQrQ,GAAQqQ,IAAQrQ,IAChCc,EAAQuP,IAAMA,GAGdvP,EAAQgS,MAAQ9S,GAAQ8S,IAAQ9S,IAChCc,EAAQgS,IAAMA,GAGbggW,GAAUrmU,IAASzsC,IACpBc,EAAQ2rC,KAAOA,GAGnB7qC,EAAKyuW,gBAAkB3zW,EAAO,CAAC,EAAGoE,GAElC+xW,EAAYrtW,EAAQ+X,KAAK,QAEzB3b,EAAKklE,SACLllE,EAAKmxE,WACLnxE,EAAKoxW,UACLpxW,EAAKqxW,cACLrxW,EAAKsxW,SAEA54W,EAAM4C,QAAQggB,SAGftb,EAAKyhT,MAAM7/R,GAjET,WAiEuBsC,EAAK,IAAMq6M,EAAQr6M,GAAI,WACxCxrB,EAAM4C,QAAQuf,QAAQiB,KACtB9b,EAAKyhT,MAAM//S,IAAI68N,EAAQr6M,GAAI,WACxBlkB,EAAKuxW,UACR,IAEDvxW,EAAKuxW,WAERvxW,EAAKwxW,aACT,IAXAxxW,EAAKyhT,MAAM7/R,GAAG28M,EAAQr6M,EAAIlkB,EAAK86E,OAAOv5E,KAAKvB,IAc/C4D,EAAQ+X,KAAK,gBAAiBzc,EAAQuP,MAAQrQ,EAAOc,EAAQuP,IAAMvP,EAAQwiR,OAASxiR,EAAQuP,KACpFkN,KAAK,gBAAiBzc,EAAQgS,MAAQ9S,EAAOc,EAAQgS,IAAMhS,EAAQwiR,OAASxiR,EAAQgS,KAE5FhS,EAAQ8J,OAASyhV,EAAcvrV,EAAQ8J,SAEvCvI,EAAQvB,EAAQuB,QAEHrC,IAENqC,EADc,UAAbwwW,EACOnwW,WAAW8C,EAAQ+jB,OAElB/jB,EAAQ+jB,OAIxB3nB,EAAKS,MAAMA,IAECvB,EAAQghB,QAAUtc,EAAQoB,GAAG,eAAiBtK,EAAEsF,EAAK4D,SAAS0sB,QAAQ,YAAYtrB,GAAG,aAG7FhF,EAAKkgB,QAAO,GAEZlgB,EAAK0pE,SAAS9lE,EAAQoB,GAAG,eAG7BhF,EAAK8iU,SACL9iU,EAAK0rB,WAAW1rB,EAAKyhT,OACrBzhT,EAAKoqB,mBAEL2lV,GAA+B,CAAEzkV,OAAQtrB,EAAM2E,QAAS3E,EAAK2E,QAASzF,QAASc,EAAKd,QAAS8wW,mBAAoBhwW,EAAKyhT,MAAOwuD,kBAAmBjwW,EAAK8sW,kBACjJ9sW,EAAKirE,eACLjrE,EAAKirE,cAAcv0D,UAGvBhe,EAAMi0B,OAAO3sB,EACjB,EAEDd,QAAS,CACL/E,KAAM,iBACN8R,SAAU7N,EACV8hB,QAAQ,EACRuxV,kBAAkB,EAClBhjW,IAAKrQ,EACL8S,IAAK9S,EACLqC,MAAOrC,EACPysC,KAAM,EACNx8B,OAAO,EACPzC,QAAS,GACT5C,OAAQ,IACR0oW,UAAU,EACVn0V,YAAa,GACbo0V,eAAe,EACfjwF,OAAQ,EACRkwF,YAAa,iBACbC,cAAe,iBACfxlV,MAAO,KACPtkB,KAAM,SACNyjB,SAAU,QACVva,QAAS,SACTm/V,cAAe,CACXn+O,WAAW,GAEfo+O,cAAe,CACXp+O,WAAW,IAGnB7vH,OAAQ,CACJ6yC,EACA67T,GAGJhkI,UAAW,SAAS5tO,GAChB,IAAIc,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACfoc,EAAU9gB,EAAQ8gB,QAClB0pD,EAAWxqE,EAAQwqE,SACnB7wC,EAAO74B,EAAKyhT,MAAMl8S,IAAI3B,GACtBe,EAAU3E,EAAK2E,QAAQwsB,IAAIowT,GAE/BvhV,EAAK8xW,aAAY,GAEjB9xW,EAAK+xW,qBAAqB/vW,OAAO,SACjChC,EAAKgyW,uBAAuBhwW,OAAO,SACnC4B,EACKutB,IAAI,UAAYjN,GAChBiN,IAAI,QAAUjN,GACdiN,IAAI,QAAUjN,GACdiN,IAAI,QAAUjN,GAEflkB,EAAKupU,aACLvpU,EAAKupU,YAAYp4S,IAAIjN,GAGpBwlD,GAAa1pD,GAgCdrb,EACKyY,SAAS4C,EAAUoiT,EAAgB,IACnCt9S,YAAY9E,EAAU,GAAKoiT,GAEhCvpS,EAAKld,KAAK4jS,EAAUv/R,GACfrE,KAAKylU,EAAU13Q,GACf/tD,KAAK4hS,EAAev9R,KArCzBrb,EACKmgB,YAAYs9S,GACZxgT,GAAG2/T,EAAavhV,EAAKsqT,cAE1BzxR,EAAKjR,KAAK23R,GAAU,GACf33R,KAAKw5T,GAAU,GACfzlU,KAAK4hS,GAAe,GAEzBv9S,EAAK+xW,qBAAqBxwW,KAAK,SAAS,SAAS7E,GAC7CA,EAAEwE,iBACFlB,EAAKiyW,MAAM,GACXjyW,EAAKkyW,SAAS90V,SAASgmS,EAC3B,IAEApjT,EAAKgyW,uBAAuBzwW,KAAK,SAAS,SAAS7E,GAC/CA,EAAEwE,iBACFlB,EAAKiyW,OAAO,GACZjyW,EAAKmyW,WAAW/0V,SAASgmS,EAC7B,IAEApjT,EAAK4D,QACAge,GAAG,UAAYsC,EAAIlkB,EAAK28G,SAASp7G,KAAKvB,IACtC4hB,GAAG,QAAUsC,EAAIlkB,EAAKoyW,OAAO7wW,KAAKvB,IAClC4hB,GAAG,QAAUsC,EAAIlkB,EAAK2tW,OAAOpsW,KAAKvB,IAClC4hB,GAAG,QAAUsC,EAAIlkB,EAAKqyW,cAAc9wW,KAAKvB,IAE1CA,EAAKupU,aACLvpU,EAAKupU,YAAY3nT,GAAG,QAAUsC,EAAIlkB,EAAK89B,MAAMv8B,KAAKvB,IAY9D,EAEA0pE,SAAU,SAASA,GAGf3xE,KAAK+0O,UAAU,CACXpjK,SAAUA,IAAa/uE,GAAqB+uE,EAC5C1pD,SAAS,IAJFjoB,KAOFkzE,eAPElzE,KAQFkzE,cAAcvB,SAASA,IAAa/uE,GAAqB+uE,EAEtE,EAEAxpD,OAAQ,SAASA,GAGbnoB,KAAK+0O,UAAU,CACXpjK,UAAU,EACV1pD,UAAWE,EAASA,IAAWvlB,GAAqBulB,KAJ7CnoB,KAOFkzE,eAPElzE,KAQFkzE,cAAc/qD,OAAOA,EAASA,IAAWvlB,GAAqBulB,EAE3E,EAEA+J,WAAY,SAAS/qB,GACjB,IAAIc,EAAOjI,KACXoxB,EAAOrpB,GAAGmqB,WAAW3nB,KAAKtC,EAAMd,GAEhCc,EAAKyhT,MAAM75R,KAAK,cAAe5nB,EAAKd,QAAQqe,aAC5Cvd,EAAKsyW,aAAatyW,EAAKd,QAAQqe,aAC/Bvd,EAAK4D,QAAQ+X,KAAK,CACd,gBAAiB3b,EAAKd,QAAQuP,MAAQrQ,EAAO4B,EAAKd,QAAQuP,IAAMzO,EAAKd,QAAQwiR,OAAS1hR,EAAKd,QAAQuP,IACnG,gBAAiBzO,EAAKd,QAAQgS,MAAQ9S,EAAO4B,EAAKd,QAAQgS,IAAMlR,EAAKd,QAAQwiR,OAAS1hR,EAAKd,QAAQgS,MAGvGlR,EAAKd,QAAQ8J,OAASyhV,EAAczqV,EAAKd,QAAQ8J,QACjDhJ,EAAK+xW,qBAAqBh4W,UAC1BiG,EAAK+xW,qBAAuB,KAC5B/xW,EAAKgyW,uBAAuBj4W,UAC5BiG,EAAKgyW,uBAAyB,KAC9BhyW,EAAKuyW,YAAYnuW,SACjBpE,EAAKoxW,UAELpxW,EAAKoqB,mBAEDpqB,EAAKupU,cACLvpU,EAAKupU,YAAYp4S,IAAIjN,GACrBlkB,EAAKupU,YAAYnlU,SAEbpE,EAAKirE,gBACLjrE,EAAKirE,cAAclxE,UACfiG,EAAKgjU,yBACLhjU,EAAK2E,QAAQ8vQ,WAKzBz0Q,EAAK8iU,SAED5jU,EAAQghB,SAAWvlB,GAAeuE,EAAQwqE,WAAa/uE,EACvDqF,EAAK8sO,UAAU,CACXpjK,SAAUxqE,EAAQwqE,SAClB1pD,SAAU9gB,EAAQghB,SAGtBlgB,EAAK8sO,UAAU,CACXpjK,SAAU1pE,EAAK4D,QAAQ+X,KAAK,cAAgBhhB,EAAckQ,QAAQ7K,EAAK4D,QAAQ+X,KAAK,aAAe3b,EAAKd,QAAQwqE,SAChH1pD,QAAShgB,EAAK4D,QAAQ+X,KAAK,cAAgBhhB,EAAckQ,QAAQ7K,EAAK4D,QAAQ+X,KAAK,cAAgB3b,EAAKd,QAAQghB,SAIpHhhB,EAAQuB,QAAU9F,EAClBqF,EAAKS,MAAMvB,EAAQuB,OACZT,EAAKsuN,SAAW3zN,GACvBqF,EAAKS,MAAMT,EAAKsuN,OAExB,EAEAv0N,QAAS,WACL,IAAIiG,EAAOjI,KAEPiI,EAAKupU,cACLvpU,EAAKupU,YAAYp4S,IAAIjN,GAEjBlkB,EAAKirE,eACLjrE,EAAKirE,cAAclxE,WAI3BiG,EAAK4D,QACA2B,IAAIvF,EAAKyhT,OACTl8S,IAAIvF,EAAKkyW,UACT3sW,IAAIvF,EAAKmyW,YACThhV,IAAIjN,GAETlkB,EAAK+xW,qBAAqBh4W,UAC1BiG,EAAKgyW,uBAAuBj4W,UAExBiG,EAAKquU,OACLruU,EAAKquU,MAAMl9S,IAAI,QAASnxB,EAAKsuU,eAGjCnlT,EAAOrpB,GAAG/F,QAAQuI,KAAKtC,EAC3B,EAEAyO,IAAK,SAAShO,GACV,OAAO1I,KAAKq2V,QAAQ,MAAO3tV,EAC/B,EAEAyQ,IAAK,SAASzQ,GACV,OAAO1I,KAAKq2V,QAAQ,MAAO3tV,EAC/B,EAEAoqC,KAAM,SAASpqC,GACX,OAAO1I,KAAKq2V,QAAQ,OAAQ3tV,EAChC,EAEAA,MAAO,SAASA,GACZ,IAAIT,EAAOjI,KAEX,GAAI0I,IAAU9F,EACV,OAAOqF,EAAKsuN,QAGhB7tN,EAAQT,EAAK2hD,OAAOlhD,MACTT,EAAKwyW,QAAQ/xW,KAGpBA,EAAQrC,GAGZ4B,EAAKqtO,QAAQ5sO,GACbT,EAAKytU,KAAOztU,EAAKsuN,OAEbtuN,EAAKirE,eACLjrE,EAAKirE,cAAcv0D,SAE3B,EAEAonB,MAAO,WACH/lC,KAAKw5W,UACT,EAEAiB,QAAS,SAAS/xW,GACd,IACAvB,EADWnH,KACImH,QACfuP,EAAMvP,EAAQuP,IACdyC,EAAMhS,EAAQgS,IAEd,OAAIzQ,IAAUrC,IAIVqQ,IAAQrQ,GAAQqC,EAAQgO,EACxBhO,EAAQgO,EACDyC,IAAQ9S,GAAQqC,EAAQyQ,IAC/BzQ,EAAQyQ,IANDzQ,CAUf,EAEA2wW,QAAS,WACL,IACAqB,EADIzyW,EAAOjI,KAEXilF,EAAW,WACP3qD,aAAcryB,EAAK0yW,WACnBD,EAAO3tV,YAAYs+R,EACvB,EACAlkT,EAAUc,EAAKd,QACfwyW,EAAWxyW,EAAQwyW,SACnB9tW,EAAU5D,EAAK4D,SAEf6uW,EAAS7uW,EAAQspF,SAAS,mBAEd,KACRulR,EAAS/3W,EAAEi4W,EAAW,WAAYzzW,EAAQ0yW,YAAa1yW,GAAWyzW,EAAW,WAAYzzW,EAAQ2yW,cAAe3yW,IACvG+E,SAASjE,EAAK2E,SAEvB3E,EAAKuyW,YAAcE,EAAOhvT,QAAQ,iDAAiD/+C,UAGlFgtW,GACDe,EAAO/tW,SAASoc,OAAO4wV,GAG3B1xW,EAAKkyW,SAAWO,EAAO1iV,GAAG,GAC1B/vB,EAAK+xW,qBAAuB,IAAIr5W,EAAM+/E,WAAWz4E,EAAKkyW,SAAU,CAAEU,QAAS51R,IAC3Eh9E,EAAKmyW,WAAaM,EAAO1iV,GAAG,GAC5B/vB,EAAKgyW,uBAAyB,IAAIt5W,EAAM+/E,WAAWz4E,EAAKmyW,WAAY,CAAES,QAAS51R,GACnF,EAEAq0R,YAAa,WACT,IACIztW,EADO7L,KACQ6L,QADR7L,KAGN+0W,gBAAkBpyW,EAAEhC,EAAM4pB,GAAG+tE,KAAK,CAAEA,KAAM,qBAAsBF,UAAW,sCAAuC88N,YAAYrpT,EACvI,EAEA+6G,MAAO,WACH,IAAI3+G,EAAOjI,KAEXiI,EAAK8xW,aAAY,GAEjB9xW,EAAKs3D,QAAQt3D,EAAK4D,QAAQ+jB,MAC9B,EAEAmzD,OAAQ,SAASp+E,GACb,IAAIsD,EAAOjI,KAEXs6B,aAAaryB,EAAK6yW,WAClB7yW,EAAK6yW,UAAY5hV,YAAW,WACxB,IAKIpiB,EAAQikW,EAAaC,EALrBz1V,EAAQ5gB,EAAE0C,OACVuC,EAAM+7B,EAAMpgB,GAAO,GACnB7c,EAAQ6c,EAAM7c,MAAMsC,UAAU,EAAGpB,GACjCqH,EAAShJ,EAAKgzW,QAAQhzW,EAAKd,QAAQ8J,QACnCsjD,EAAQtjD,EAAO,KAEfiqW,EAAgB,EAEhB3mT,IACAwmT,EAAc,IAAIvsW,OAAO,KAAO+lD,EAAO,KACvCymT,EAAgB,IAAIxsW,OAAO,QAAUyC,EAAa,OAAI,YAAcsjD,EAAQ,SAAWtjD,EAAOsC,GAAS,cAGvGynW,IACAlkW,EAASkkW,EAAcpiW,KAAKlQ,IAG5BoO,IACAokW,EAAgBpkW,EAAO,GAAGrU,QAAQs4W,EAAa,IAAIvzW,QAExB,GAAvBkB,EAAMiN,QAAQ,MAAc1N,EAAKsuN,OAAS,GAC1C2kJ,KAIRjzW,EAAKuxW,WAEL7zU,EAAM19B,EAAK4D,QAAQ,GAAIqvW,GACvBjzW,EAAKwxW,aACT,GACJ,EAEAA,YAAa,WACLz5W,KAAKmH,QAAQyyW,eACb55W,KAAK6L,QAAQ,GAAG06B,QAExB,EAEA40U,gBAAiB,SAASzyW,GACtB,IACIihR,EADO3pR,KACOmH,QAAQwiR,OAS1B,OAPIA,GAAqB,IAAXA,GAEI,QADdjhR,EAAQ/H,EAAMoI,WAAWL,MAErBA,GAAgBihR,GAIjBjhR,CACX,EAEA62D,QAAS,SAAS72D,GACd,IAAIT,EAAOjI,KAEX0I,EAAQT,EAAKkzW,gBAAgBzyW,GAC7BT,EAAKqtO,QAAQ5sO,GACbA,EAAQT,EAAKsuN,OAETtuN,EAAKytU,MAAQhtU,IACbT,EAAKytU,KAAOhtU,EAEPT,EAAKgvU,SAENhvU,EAAK4D,QAAQzB,QAAQ8yC,GAGzBj1C,EAAKmC,QAAQ8yC,IAGjBj1C,EAAKgvU,SAAU,CACnB,EAEAmkC,SAAU,SAASvnW,GACf,OAAOA,GAAWE,EAAW/T,KAAKmH,QAAQ0M,QAC9C,EAEA2lW,SAAU,WACN,IAAIvxW,EAAOjI,KACXiI,EAAK2E,QAAQyY,SAAS+kT,GACtBniU,EAAK8xW,aAAY,GACjB9xW,EAAK4D,QAAQ,GAAGk6B,OACpB,EAEAqzU,UAAW,WACP,IAAInxW,EAAOjI,KAEXs6B,aAAaryB,EAAK6yW,WAClB7yW,EAAK2E,QAAQmgB,YAAYq9S,GAASr9S,YAAYqiT,GAC9CnnU,EAAK2+G,QACL3+G,EAAK0tW,qBACT,EAEAsF,QAAS,SAAShqW,EAAQ4C,GACtB,IAAIC,EAAe9T,KAAKo7W,SAASvnW,GAASC,aAU1C,OARA7C,EAASA,EAAO4H,eAELlD,QAAQ,MAAQ,EACvB7B,EAAeA,EAAaQ,SACrBrD,EAAO0E,QAAQ,MAAQ,IAC9B7B,EAAeA,EAAaM,SAGzBN,CACX,EAEAylW,OAAQ,WACJ,IAMIz4U,EANA74B,EAAOjI,KACPmH,EAAUc,EAAKd,QACf0E,EAAU5D,EAAK4D,QAAQwZ,SAASu6S,GAAOnyT,OAAO,GAC9C4tW,EAAYxvW,EAAQwvW,WAKxBv6U,EAJc74B,EAAK2E,QACEupB,KAAK5iB,EAAQqsT,GAGpB11T,SAEL1C,OAAS,IACds5B,EAAOn+B,EAAE,wBACAihB,KAAKjjB,EAAMijB,KAAK,aAAa,GAC7B0uD,aAAazmE,IAG1B,IACIA,EAAQ8Z,aAAa,OAAQ,OACjC,CAAE,MAAOhhB,GACLkH,EAAQnG,KAAO,MACnB,CAEAo7B,EAAK,GAAGqd,MAAQtyC,EAAQsyC,MACxBrd,EAAK,GAAG+1D,SAAWhrF,EAAQgrF,SAC3B/1D,EAAK,GAAG3zB,MAAM2R,QAAUjT,EAAQsB,MAAM2R,QACtCgiB,EAAKjR,KAAK,cAAe1oB,EAAQqe,aAE7B61V,IACAv6U,EAAKld,KAAK,YAAay3V,GACvBxvW,EAAQwvW,UAAY,IAIxBpzW,EAAKyhT,MAAQ5oR,EAAKzb,SAASxZ,EAAQwhB,WACjBzJ,KAAK,CACF4M,KAAQ,aACR,gBAAiBrpB,EAAQuP,MAAQrQ,EAAOc,EAAQuP,IAAMvP,EAAQwiR,OAASxiR,EAAQuP,IAC/E,gBAAiBvP,EAAQgS,MAAQ9S,EAAOc,EAAQgS,IAAMhS,EAAQwiR,OAASxiR,EAAQgS,IAC/Es9T,aAAgB,OAEzC,EAEA7xN,SAAU,SAASjgH,GACf,IAAIsD,EAAOjI,KACP8R,EAAMnN,EAAE2iC,QAERx1B,IAAQ+Y,EAAKqB,aACbjkB,EAAKqzW,YAAa,GAGlBxpW,GAAO+Y,EAAKU,KAGLzZ,GAAO+Y,EAAKQ,GAGZvZ,GAAO+Y,EAAKK,OAKnBpZ,GAAO+Y,EAAKI,MACZhjB,EAAKgvU,SAAU,GAEnBhvU,EAAKszW,aAAe51U,EAAM19B,EAAK4D,UAP3B5D,EAAKs3D,QAAQt3D,EAAK4D,QAAQ+jB,OAH1B3nB,EAAKuzW,MAAM,GAHXvzW,EAAKuzW,OAAO,EAcpB,EAEAnB,OAAQ,WACJr6W,KAAK21W,qBACT,EAEA2E,cAAe,WACX,IAAIzuW,EAAU7L,KAAK6L,QACfnD,EAAQmD,EAAQ+jB,MAChBlZ,EAAM1W,KAAKmH,QAAQuP,IACnB5C,EAAe9T,KAAKi7W,QAAQj7W,KAAKmH,QAAQ8J,QACzCwqW,EAAmB3nW,EAAaP,GAChCmoW,EAAsB,OAARhlW,GAAgBA,GAAO,GAAyB,MAApBhO,EAAMoC,OAAO,GAEvD9K,KAAKs7W,YAAcG,IAAqBloW,IACxC7K,EAAQA,EAAMjG,QAAQ8Q,EAAOkoW,GAC7Bz7W,KAAK6L,QAAQ+jB,IAAIlnB,GACjB1I,KAAKs7W,YAAa,GAGlBt7W,KAAK27W,WAAa37W,KAAK4pD,OAAOlhD,KAC9BA,EAAQ1I,KAAK4pD,OAAOlhD,GACf+I,WACAhP,QAAQ8Q,EAAOO,EAAaP,KAGjCvT,KAAK47W,cAAc9nW,GAAcvG,KAAK7E,KAAWgzW,EACjD17W,KAAK+2W,SAAWruW,GAEhB1I,KAAKk1W,qBACLl1W,KAAK6L,QAAQ+jB,IAAI5vB,KAAK+2W,UAClB/2W,KAAKu7W,eACL51U,EAAM95B,EAAS7L,KAAKu7W,aAAa,IACjCv7W,KAAKu7W,aAAe,OAI5Bv7W,KAAK27W,WAAY,CACrB,EAEAzG,mBAAoB,WAChB,IAAIjtW,EAAOjI,KAEXiI,EAAKwtW,mBACLn7U,aAAaryB,EAAKytW,sBAClBztW,EAAKytW,qBAAuBx8U,WAAWjxB,EAAK0tW,oBAAoBnsW,KAAKvB,GAAO,IAChF,EAEAwtW,iBAAkB,WACHz1W,KAEN4M,QAAQyY,SAASqvV,GAFX10W,KAGN+0W,gBAAgBhoV,YAAY,WACrC,EAEA4oV,oBAAqB,WACjB,IAAI1tW,EAAOjI,KAEXiI,EAAK2E,QAAQmgB,YAAY2nV,GACzBzsW,EAAK8sW,gBAAgB1vV,SAAS,YAC9Bpd,EAAKytW,qBAAuB,IAChC,EAEAkG,cAAe,SAAS9nW,GACpB,IAAI7L,EAAOjI,KACPk6H,EAAYpmH,EAAaP,GACzBgD,EAAYtO,EAAKd,QAAQ+M,SACzB2nW,EAAe,IAUnB,OARI3hP,IAAc3mH,IACd2mH,EAAY,KAAOA,GAGnB3jH,IAAclQ,IACdkQ,EAAYzC,EAAaI,UAGX,IAAdqC,GAAmBtO,EAAKd,QAAQuyW,iBACzBV,GAGP/wW,EAAKd,QAAQuyW,mBACbmC,EAAe,MAAQtlW,EAAY,KAGnCtO,EAAK6zW,aAAe5hP,IACpBjyH,EAAK6zW,WAAa5hP,EAClBjyH,EAAK8zW,aAAe,IAAIvtW,OAAO,gBAAkB0rH,EAAY,MAAQ2hP,EAAe,QAAU3hP,EAAY,MAAQ2hP,EAAe,UAG9H5zW,EAAK8zW,aAChB,EAEAnG,OAAQ,SAASjxW,GACb,IAAIsD,EAAOjI,KACP6L,EAAUlH,EAAE0C,OACZqB,EAAQmD,EAAQnD,MAChBoL,EAAe7L,EAAKgzW,QAAQhzW,EAAKd,QAAQ8J,QAE7ChJ,EAAK0zW,WAAY,EAElBziV,YAAW,WACN,IAAIpiB,EAAS7O,EAAK2hD,OAAO/9C,EAAQnD,OAE7BoO,IAAWzQ,EACX4B,EAAKqtO,QAAQ5sO,IAEbmD,EAAQnD,MAAQoO,EAAOrF,WAAWhP,QAAQ8Q,EAAOO,EAAaP,IAC1DtL,EAAKwyW,QAAQ3jW,KAAYA,GAAW7O,EAAK2zW,cAAc9nW,GAAcvG,KAAK1B,EAAQnD,SAClFA,EAAQT,EAAKkzW,gBAAgBtvW,EAAQnD,OACrCT,EAAKqtO,QAAQ5sO,IAGzB,GACJ,EAEA2tV,QAAS,SAASnhU,EAAQxsB,GACtB,IAAIT,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACf1E,EAAUc,EAAKd,QAEnB,GAAIuB,IAAU9F,EACV,OAAOuE,EAAQ+tB,KAGnBxsB,EAAQT,EAAK2hD,OAAOlhD,KAEK,SAAXwsB,KAId/tB,EAAQ+tB,GAAUxsB,EAClBmD,EACK2B,IAAIvF,EAAKyhT,OACT9lS,KAAK,aAAesR,EAAQxsB,GAEjCmD,EAAQ+X,KAAKsR,EAAQxsB,GACzB,EAEAwxW,MAAO,SAASpnU,EAAMvN,GAClB,IAAIt9B,EAAOjI,KAEXulC,EAAUA,GAAW,IAErBjL,aAAcryB,EAAK0yW,WACnB1yW,EAAK0yW,UAAYzhV,YAAW,WACxBjxB,EAAKiyW,MAAMpnU,EAAM,GACrB,GAAGvN,GAEHt9B,EAAKuzW,MAAM1oU,EACf,EAEA0oU,MAAO,SAAS1oU,GACZ,IAAI7qC,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACfioO,EAAgB7rO,EAAKsuN,OACrB7tN,EAAQT,EAAK2hD,OAAO/9C,EAAQ+jB,QAAU,EACtCrZ,EAAYtO,EAAKd,QAAQ+M,UAAY,EAErCyF,KAAmB9N,EAAQ,IAC3B5D,EAAKuxW,WAGLvxW,EAAKd,QAAQwiR,QAAUjhR,IACvBA,GAAgBT,EAAKd,QAAQwiR,QAGjCjhR,IAAUA,EAAQT,EAAKd,QAAQ2rC,KAAOA,GAAMr8B,QAAQF,GACpD7N,EAAQT,EAAKwyW,QAAQ/xW,GACrBT,EAAKqtO,QAAQ5sO,GACbT,EAAKgvU,SAAU,EAEXnjG,IAAkBprO,GAClBT,EAAKmC,QAAQ2uW,EAErB,EAEAxmD,aAAc,SAAS5tT,GACnBhC,EAAEgC,EAAEg6E,eAAe/1D,YAAYwmT,EAAkB,eAAXzqU,EAAEe,KAC5C,EAEAq0W,YAAa,SAAShxV,GAClB,IAAI9gB,EAAOjI,KAEXiI,EAAKyhT,MAAM3gS,OAAOA,GACdA,EACA9gB,EAAKyhT,MAAMz3R,WAAW,eAEtBhqB,EAAKyhT,MAAM9lS,KAAK,cAAe,QAEnC3b,EAAK4D,QAAQkd,QAAQA,EACzB,EAEA6gC,OAAQ,SAASlhD,EAAOmL,GACpB,OAAOuhB,EAAM1sB,EAAO1I,KAAKo7W,SAASvnW,GAAU7T,KAAKmH,QAAQ8J,OAC7D,EAEA4I,OAAQ,SAASnR,EAAO6N,GAGpB,OAFcvW,KAAKmH,QAAQmP,MAAQ3V,EAAMkZ,OAASmiW,GAEnCtzW,EAAO6N,EAC1B,EAEA++N,QAAS,SAAS5sO,GACd,IAOIorO,EACAmoI,EARAh0W,EAAOjI,KACPmH,EAAUc,EAAKd,QACfwiR,EAASxiR,EAAQwiR,OACjB14Q,EAAS9J,EAAQ8J,OACjBiD,EAAW/M,EAAQ+M,SACnBL,EAAU5L,EAAKmzW,WACftnW,EAAe7L,EAAKgzW,QAAQhqW,EAAQ4C,GAIpCK,IAAa7N,IACb6N,EAAWJ,EAAaI,WAK5B+nW,GAFAvzW,EAAQT,EAAK2hD,OAAOlhD,EAAOmL,MAELxN,KAGlBqC,EAAQK,WAAWd,EAAK4R,OAAOnR,EAAOwL,GAAW,KAGrDjM,EAAKsuN,OAAS7tN,EAAQT,EAAKwyW,QAAQ/xW,GACnCT,EAAKsyW,aAAa55W,EAAM8Q,SAAS/I,EAAOuI,EAAQ4C,IAE5CooW,GACItyF,IACAjhR,EAAQK,WAAWd,EAAK4R,OAAOnR,EAAQihR,EAAQz1Q,GAAW,MAGlC,KAD5BxL,EAAQA,EAAM+I,YACJkE,QAAQ,OACdjN,EAAQT,EAAK4R,QAAQnR,EAAOwL,IAEhC4/N,EAAgBprO,EAChBA,EAAQA,EAAMjG,QAAQ8Q,EAAOO,EAAaP,MAE1C7K,EAAQ,KACRorO,EAAgB,MAGpB7rO,EAAK4D,QAAQ+jB,IAAIlnB,GACjBT,EAAK8uW,SAAWruW,EAChBT,EAAK4D,QAAQ2B,IAAIvF,EAAKyhT,OAAO9lS,KAAK,gBAAiBkwN,EACvD,EAEAymI,aAAc,SAAS7xW,GACnB,IAAI6c,EAAQvlB,KAAK0pT,MAEjBnkS,EAAMqK,IAAIlnB,GACLowW,GAAyBpwW,GAC1B6c,EAAMqK,IAAI5vB,KAAKmH,QAAQqe,aAG3BD,EAAM3B,KAAK,QAAS5jB,KAAK6L,QAAQ+X,KAAK,UAAY2B,EAAMqK,MAC5D,EAEAm7S,OAAQ,WACJ,IAIIzzK,EACAsjE,EALA3yN,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACf1E,EAAUc,EAAKd,QACfkpB,EAAKxkB,EAAQ+X,KAAK,MAIA,OAAlBzc,EAAQmtB,QACRgjI,IAAW3vJ,EAAcR,EAAQmtB,QAASntB,EAAQmtB,MAAMgjI,SACxDsjE,EAAYjzN,EAAcR,EAAQmtB,OAASntB,EAAQmtB,MAAMqyB,QAAUx/C,EAAQmtB,MAEvEgjI,IACArvJ,EAAKgjU,wBAA0BhjU,EAAK2E,QAAQ+f,KAAK,iBAAiBhgB,SAClE1E,EAAKirE,cAAgB,IAAIvyE,EAAM4pB,GAAGggT,cAActiU,EAAKgjU,wBAAyB,CAAE13S,OAAQtrB,KAGxFtH,EAAMuI,WAAW0xN,KACjBA,EAAYA,EAAUrwN,KAAKtC,IAG1B2yN,IACDA,EAAY,IAGXvqM,IACDA,EAAKlpB,EAAQ/E,KAAO,IAAMzB,EAAMwvB,OAChCtkB,EAAQ+X,KAAK,KAAMyM,IAGvBpoB,EAAKupU,YAAc7uU,EAAE,kBAAoB20J,EA/2B5B,mBADN,yBAg3BkF,UAAYjnI,EAAK,KAAOuqM,EAAY,aAAatjE,EAAW,cAAgB,gBAAgBrvJ,EAAK2E,SAErL3E,EAAK4D,QAAQ+X,KAAK,cAAgBhhB,GAAiBqF,EAAK4D,QAAQ+X,KAAK,cAAgBhhB,GACtFqF,EAAKupU,YAAY3nT,GAAG,QAAUsC,EAAIlkB,EAAK89B,MAAMv8B,KAAKvB,IAG9D,EAEAmxE,SAAU,WACN,IAGIxsE,EAFAf,EADO7L,KACQ6L,QACfqwW,EAAarwW,EAAQ,IAGzBe,EAAUf,EAAQ0sB,QAAQ,sBAEbtrB,GAAG,2BACZL,EAAUf,EAAQ6B,OAAOif,KAAK,WAAWhgB,UAG7CC,EAAQ,GAAGO,MAAM2R,QAAUo9V,EAAW/uW,MAAM2R,QAC5Co9V,EAAW/uW,MAAMpB,MAAQ,GAZd/L,KAaN4M,QAAUA,EAAQyY,SAAS,4BACTA,SAAS62V,EAAW7uV,WACpBN,YAAY,0BACZ9gB,IAAI,UAAW,GAC1C,EAEAkhE,OAAQ,WACJ,IAAIllE,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACf4wU,EAAS5wU,EAAQ+X,KAAK,QACtBujB,EAAOs1S,EAAS95U,EAAE,IAAM85U,GAAU5wU,EAAQgB,QAAQ,QAElDs6B,EAAK,KACLl/B,EAAKsuU,cAAgB,WACjBr9S,YAAW,WACPjxB,EAAKS,MAAMmD,EAAQ,GAAGnD,OACtBT,EAAKkR,IAAIlR,EAAKyuW,gBAAgBv9V,KAC9BlR,EAAKyO,IAAIzO,EAAKyuW,gBAAgBhgW,IAClC,GACJ,EAEAzO,EAAKquU,MAAQnvS,EAAKtd,GAAG,QAAS5hB,EAAKsuU,eAE3C,IAUJ,SAASqkC,EAAWvmU,EAAWvT,EAAM35B,GACjC,IAAIkmB,EAA0B,aAAdgnB,EAA2B,eAAiB,iBACxD9U,EAAoB,aAAd8U,EAA2B,WAAa,WAElD,OAAOhkC,EAAKg1S,aAAa,0EAA4E9lR,EAAM,iBAAmBuB,EAAO,YAAcA,EAAO,cAAe/9B,EAAO,CAAC,EAAGoE,EAAS,CACzLmxF,KAAMjrE,EACNy1H,MAAO,KACP5pI,QAAS,OAEjB,CAEA,SAAS8iW,EAAStzW,EAAO6N,GACrB,IAAIhG,EAAQxH,WAAWL,EAAO,IAAI+I,WAAW7G,MAAM2I,GAMnD,OAJIhD,EAAM,KACNA,EAAM,GAAKA,EAAM,GAAGvF,UAAU,EAAGuL,IAG9BhG,EAAM1F,KAAK0I,EAEtB,CA3BA5S,EAAMwyB,cAAcoY,eAAe,iBAAkB,YAErD5qC,EAAMwyB,cAAc2X,eAAe,iBAAkB,CAAC,CAClDjb,KAAM,UACNxW,OAAQ1Y,EAAMwyB,cAAcgX,cAAc/rB,OAAO,CAAC,CAAC,OAAQ,aAyB/DmM,EAAG2M,OAAO+hV,EACb,CAz9BD,CAy9BGn4W,OAAOH,MAAM+G,QACF/G,OAWd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfywB,EAASzwB,EAAM4pB,GAAG6G,OAClBygE,EAAK,kBACLsqR,EAAa,gBACbC,EAAmB,IAAI5tW,OAAO2tW,EAAW,KACzCE,EAAe,YACfC,EAAa,UACbC,EAAoB,uBACpBC,EAAe,eACfC,EAAa,kCAGbC,EAAc,eAEdC,EAAc,yIACdC,EAAwB,CAAC,QAAS,SAAU,OAAQ,SACpDvuB,EAAgB,uEAChBwuB,EAAmB,uCACnBC,EAAsB,6BACtBr2I,EAAO,OACPs2I,EAAO,OACPC,EAAO,OACPC,EAAa,aAEbC,EAAW,WACXhgU,EAAS,SACTigU,EAAiB,gBAEjBC,EAAiB,SAAS10W,EAAOuL,GAI7B,MAHuB,iBAAZA,IACPA,EAAU,IAAIzF,OAAO,OAASyF,EAAU,OAErCA,EAAQ1G,KAAK7E,EACxB,EASA20W,EAAe,SAAS93V,EAAOnjB,GAC3B,QAAImjB,EAAM/d,QAC8B,MAA7B+d,EAAM,GAAG0kC,WAAW7nD,EAGnC,EAiCJ,SAASk7W,EAAUx8U,GACf,OAAIn+B,EAAE46W,UACK56W,EAAEA,EAAE46W,UAAUz8U,IAElBn+B,EAAEm+B,EACb,CAEA,SAAS08U,EAA0B7kV,EAAU+1B,GAKzC,IAJA,IACI7iD,EADA+tE,EAAaj3E,IAIRiH,EAAM,EAAGpC,EAASmxB,EAASnxB,OAAQoC,EAAMpC,EAAQoC,IACtDiC,EAAU8sB,EAAS/uB,GACfwyW,EAAiB7uW,KAAK1B,EAAQwhB,YACvBxhB,EAAQspB,aAAax0B,EAAMijB,KAAK,UAC1B8qC,IACTkrB,EAAaA,EAAWpsE,IAAI3B,IAIxC,OAAO+tE,CACX,CAEA,SAAS6jS,EAAWnpV,EAAOzoB,GACvB,QAAKyoB,IAGyB,iBAAnBA,EAAM6D,UAA4C,UAAnB7D,EAAM6D,WAGP,iBAA9B7D,EAAMa,aAAa,QAA6D,iBAA/BtpB,EAAQspB,aAAa,OAG7Eb,EAAMa,aAAa,SAAWtpB,EAAQspB,aAAa,OAK3D,CAtEKx0B,EAAM4pB,GAAGmzV,YACV/8W,EAAM4pB,GAAGmzV,UAAY,CAAEv/U,MAAO,CAAC,EAAGvT,SAAU,CAAC,EAAG+yV,YAAah7W,EAAEQ,KAAMy6W,eAAgBj7W,EAAEQ,OAuE3F,IAAI06W,EAAkB,EAAG10T,aACrB,IAAIryC,EAAS,OACb,IAAK,IAAIvP,EAAI,EAAGA,EAAI4hD,EAAO3hD,OAAQD,GAAK,EACpCuP,GAAU,sBAAsBqyC,EAAO5hD,GAAGwe,mBAAmBojC,EAAO5hD,GAAG0pB,mBAI3E,OADAna,GAAU,QACHA,CAAM,EAGbgnW,EAAY1sV,EAAOruB,OAAO,CAC1BoF,KAAM,SAAS0D,EAAS1E,GACpB,IAAIc,EAAOjI,KACPu7O,EAjFZ,SAAsB1vO,GAClB,IAEIzJ,EAFA27W,EAAYp9W,EAAM4pB,GAAGmzV,UAAUM,eAAiB,CAAC,EACjD7/U,EAAQ,CAAC,EAGb,IAAK/7B,KAAQ27W,EACTp7W,EAAEI,QAAO,EAAMo7B,EAAO4/U,EAAU37W,GAAM2zC,QAAQlqC,IAElD,OAAOsyB,CACX,CAwEuB8/U,CAAapyW,GACxBqyW,EAA4B,IAAMv9W,EAAMijB,KAAK,YAAc,YAE/Dzc,EAAUA,GAAW,CAAC,GAEdg3B,MAAQx7B,EAAEI,OAAO,CAAC,EAAGpC,EAAM4pB,GAAGmzV,UAAUv/U,MAAOo9M,EAASp9M,MAAOh3B,EAAQg3B,OAC/Eh3B,EAAQyjB,SAAWjoB,EAAEI,OAAO,CAAC,EAAGpC,EAAM4pB,GAAGmzV,UAAU9yV,SAAU2wN,EAAS3wN,SAAUzjB,EAAQyjB,UAExFwG,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GAEnCc,EAAKk2W,eAAiBx9W,EAAMyP,SAASnI,EAAKd,QAAQi3W,eAClDn2W,EAAKo2W,iBAAmB19W,EAAMyP,SAASnI,EAAKd,QAAQm3W,kBAAkBluW,UAAYytW,GAE9E51W,EAAK4D,QAAQoB,GAAG+vW,IAChB/0W,EAAK4D,QAAQ+X,KAAKq5V,EAAYA,GAGlCh1W,EAAKs2W,eAAiBlwB,EAAgB6vB,EACtCj2W,EAAKu2W,kBAAoB3B,EAAmBqB,EAE5Cj2W,EAAKw2W,QAAU,CAAC,EAChBx2W,EAAKo/N,gBACLp/N,EAAKy2W,cAAe,EAEhBz2W,EAAK02W,mBACL12W,EAAKm2P,UAEb,EAEA/zP,OAAQ,CAAE6yW,EAAUhgU,EAAQigU,GAE5Bh2W,QAAS,CACL/E,KAAM,YACNg8W,cAAe,EAAGntV,aAAc,8BAA8BA,WAC9DrG,SAAU,CACNg0V,SAAU,kBACV3qW,QAAS,mBACTyC,IAAK,6CACLyC,IAAK,6CACL25B,KAAM,mBACN+rU,MAAO,yBACP7vV,IAAK,uBACLpY,KAAM,wBACNkoW,YAAa,6DACbC,QAAS,iDAEb5gV,MAAO,CACHygV,SAAU,SAASr5V,GACf,IAAIy5V,GAAkBz5V,EAAM3B,KAAK,UAAY2B,EAAMtY,GAAG,YAClD7K,EAAOmjB,EAAM3B,KAAK,QAClBlS,EAAUtP,GAAQA,EAAKuT,QAAQ,MAAQ,EAAI,IAAO,IAClDspW,EAAgB15V,EAAM3B,KAAK,UAAY5jB,KAAK6L,QAAQsqB,KAAK,cAAgBzkB,EAAQ6T,EAAM3B,KAAK,QAAUlS,EAAQ,aAAalK,OAC3H03W,EAAW35V,EAAMgK,OAAO,mBAAmB/nB,SAAWw3W,GAAkBC,GACxEE,EAAQ55V,EAAMgK,OAAO,gBAAgB/nB,SAAWxH,KAAK6L,QAAQsqB,KAAK,cAAgBzkB,EAAQ6T,EAAM3B,KAAK,QAAUlS,EAAQ,aAAalK,OACpIkB,EAAQ6c,EAAMqK,MAElB,QAASytV,EAAa93V,EAAO,eAAiB7c,GAAmB,KAAVA,GAAiC,IAAjBA,EAAMlB,QAAgB03W,GAAYC,GAC7G,EACAlrW,QAAS,SAASsR,GACd,OAAIA,EAAMgK,OAAO,gFAAgFA,OAAO,aAAa/nB,QAA0B,KAAhB+d,EAAMqK,OAC1HwtV,EAAe73V,EAAMqK,MAAOrK,EAAM3B,KAAK,WAGtD,EACAlN,IAAK,SAAS6O,GACV,OAAIA,EAAMgK,OAAOutV,EAAsB,KAAOn8W,EAAMijB,KAAK,QAAU,YAAY2L,OAAO,SAAS/nB,QAA0B,KAAhB+d,EAAMqK,QACjG7mB,WAAWwc,EAAM3B,KAAK,SAAW,IACjCjjB,EAAMoI,WAAWwc,EAAMqK,MAKzC,EACAzW,IAAK,SAASoM,GACV,OAAIA,EAAMgK,OAAOutV,EAAsB,KAAOn8W,EAAMijB,KAAK,QAAU,YAAY2L,OAAO,SAAS/nB,QAA0B,KAAhB+d,EAAMqK,QACjG7mB,WAAWwc,EAAM3B,KAAK,SAAW,IACjCjjB,EAAMoI,WAAWwc,EAAMqK,MAKzC,EACAkjB,KAAM,SAASvtB,GACX,GAAIA,EAAMgK,OAAOutV,EAAsB,KAAOn8W,EAAMijB,KAAK,QAAU,YAAY2L,OAAO,UAAU/nB,QAA0B,KAAhB+d,EAAMqK,MAAc,CAC1H,IAIIwvV,EAJA1oW,EAAM3N,WAAWwc,EAAM3B,KAAK,SAAW,EACvCkvB,EAAOnyC,EAAMoI,WAAWwc,EAAM3B,KAAK,UAAY,EAC/CgM,EAAM7mB,WAAWwc,EAAMqK,OACvB1b,GApJpBxL,IAD2BA,EAqJ0BoqC,GApJpC,IAAIloC,MAAM,MACjBpD,OAAS,EACRkB,EAAM,GAAGlB,OAEb,EAmJS,OAAI0M,GACAkrW,EAAQ/7W,KAAKwmC,IAAI,GAAI31B,GACZ7Q,KAAKyN,OAAO8e,EAAMlZ,GAAO0oW,IAAWtsU,EAAOssU,GAAU/7W,KAAKwmC,IAAI,IAAK31B,IAAc,IAErF0b,EAAMlZ,GAAOo8B,GAAU,CACpC,CA7JhB,IAA+BpqC,EA8Jf,OAAO,CACX,EACAm2W,MAAO,SAASt5V,GACZ,OAvMF,SAASA,EAAOc,EAAUpS,GAChC,IAAIvL,EAAQ6c,EAAMqK,MAElB,OAAIrK,EAAMgK,OAAOlJ,GAAU7e,QAAoB,KAAVkB,GAC1B00W,EAAe10W,EAAOuL,EAGrC,CAgMmBorW,CAAQ95V,EAAO,iBAAmB5kB,EAAMijB,KAAK,QAAU,UAAW+4V,EAC7E,EACA3tV,IAAK,SAASzJ,GACV,GAAIA,EAAMgK,OAAO,eAAiB5uB,EAAMijB,KAAK,QAAU,SAASpc,QAA0B,KAAhB+d,EAAMqK,MAC5E,IACI,MAAMZ,EAAM,IAAIkf,IAAI3oB,EAAMqK,OAC1B,OAAOgtV,EAAsBpkR,SAASxpE,EAAI1L,SAC9C,CAAE,MACE,OAAO,CACX,CAEJ,OAAO,CACX,EACA1M,KAAM,SAAS2O,GACX,OAAIA,EAAMgK,OAAO,iBAAmB5uB,EAAMijB,KAAK,QAAU,UAAUpc,QAA0B,KAAhB+d,EAAMqK,OACL,OAAnEjvB,EAAM2d,UAAUiH,EAAMqK,MAAOrK,EAAM3B,KAAKjjB,EAAMijB,KAAK,WAGlE,EACAm7V,QAAS,SAASx5V,GACd,GAAIA,EAAMgK,OAAO,IAAM5uB,EAAMijB,KAAK,QAAU,aAAapc,OAAQ,CAC7D,IAAIS,EAAOjI,KACP++W,EAAUp+W,EAAM41B,eAAehR,GAC/B+5V,EAAc,SAASC,GACnB,OAAO,MAAM,CACjB,EAgBJ,GAdKh6V,EAAMnX,KAAK,uBAA0BkxW,EAAYP,EAAQQ,aAAgBR,EAAQS,iBAClFj6V,EAAMnX,KAAK,sBAAsB,GACjCnG,EAAKw3W,aAAc,EACnBV,EAAQ3gH,WAAWxxN,MAAK,WACpB3kC,EAAKw3W,aAAc,EACnBx3W,EAAKy3W,cAAcn6V,EACvB,IAAGsnB,MAAK,SAASz+B,GACbnG,EAAKw3W,aAAc,EACfrxW,EAAKsgB,OAAwB,wBAAftgB,EAAKsgB,OACnB5tB,OAAOoQ,QAAQC,KAAK,oKAE5B,KAGAmuW,EAAYP,EAAQQ,WAEpB,OADAh6V,EAAMsN,WAAW,sBACVksV,EAAQQ,SAEvB,CACA,OAAO,CACX,GAEJI,gBAAgB,EAChBrB,mBAAmB,GAGvBsB,aAAc,WACV,OAAOj/W,EAAM4pB,GAAGmzV,UAAUC,YAAY39W,KAAK6L,QAAS7L,KAAKmpD,SAC7D,EAEAw1T,gBAAiB,WACb,OAAOh+W,EAAM4pB,GAAGmzV,UAAUE,eAAe59W,KAAK6L,QAClD,EAEA7J,QAAS,WACLovB,EAAOrpB,GAAG/F,QAAQuI,KAAKvK,MAEvBA,KAAK6L,QAAQutB,IAAIy4D,GAEb7xF,KAAKs+W,oBACLt+W,KAAKs+W,kBAAkBllV,IAAIy4D,GAC3B7xF,KAAKs+W,kBAAoB,KAEjC,EAEA51W,MAAO,WACH,QAAK1I,KAAK0+W,cAIsB,IAAzB1+W,KAAKmpD,SAAS3hD,MACzB,EAEA44D,QAAS,SAASz7D,GACd,SAAM3E,KAAKo+P,aAAep+P,KAAK4/W,gBAAmB5/W,KAAKy/W,eACnD96W,EAAEy1B,kBACFz1B,EAAE+zT,2BACF/zT,EAAEwE,kBACK,EAGf,EAEAu2W,cAAe,SAAS7zW,GACpB,IAAIynD,EAAQtzD,KAAK0I,QAEjB1I,KAAK6/W,cAAch0W,GAEf7L,KAAK0I,UAAY4qD,GACjBtzD,KAAKoK,QAAQ8yC,EAErB,EAEAmqL,cAAe,WACX,IAAIp/N,EAAOjI,KAEPiI,EAAK4D,QAAQoB,GAAG+vW,IAChB/0W,EAAK4D,QAAQge,GAAG,SAAWgoE,EAAI5pF,EAAKm4D,QAAQ52D,KAAKvB,IAGjDA,EAAKd,QAAQw4W,iBACR13W,EAAK4D,QAAQoB,GAAGohV,IASjBpmV,EAAK4D,QAAQge,GAAG48M,EAAO50I,GAAI,WACvB5pF,EAAKy3W,cAAcz3W,EAAK4D,QAC5B,IAEI5D,EAAK4D,QAAQoB,GAAG4vW,IAChB50W,EAAK4D,QAAQge,GAAG,QAAUgoE,GAAI,WAC1B5pF,EAAKy3W,cAAcz3W,EAAK4D,QAC5B,MAfJ5D,EAAK4D,QAAQge,GAAG48M,EAAO50I,EAAI5pF,EAAKs2W,gBAAgB,WAC5Ct2W,EAAKy3W,cAAc/8W,EAAE3C,MACzB,IAEAiI,EAAK4D,QAAQge,GAAG,QAAUgoE,EAAI5pF,EAAKu2W,mBAAmB,WAClDv2W,EAAKy3W,cAAc/8W,EAAE3C,MACzB,KAaZ,EAEAo+P,SAAU,WACN,IAAI0hH,EACAl2W,EAEApC,EADAsP,GAAS,EAGTyoW,EAAUv/W,KAAK0I,QAInB,GAFA1I,KAAKy+W,QAAU,CAAC,EAEXz+W,KAAK6L,QAAQoB,GAAGohV,GAajBv3U,EAAS9W,KAAK6/W,cAAc7/W,KAAK6L,aAbA,CACjC,IAAIk0W,GAAU,EAId,IAAKn2W,EAAM,EAAGpC,GAFds4W,EAAS9/W,KAAK6L,QAAQsqB,KAAKn2B,KAAKu+W,iBAEF/2W,OAAQoC,EAAMpC,EAAQoC,IAC3C5J,KAAK6/W,cAAcC,EAAO9nV,GAAGpuB,MAC9Bm2W,GAAU,GAIlBjpW,GAAUipW,CACd,CAcA,OAVI//W,KAAKmH,QAAQm3W,oBAAsBiB,GACnCv/W,KAAKggX,wBAGThgX,KAAKoK,QAAQ8yW,EAAU,CAAE+C,MAAOnpW,EAAQqyC,OAAQnpD,KAAKmpD,WAEjDo2T,IAAYzoW,GACZ9W,KAAKoK,QAAQ8yC,GAGVpmC,CACX,EAEA+oW,cAAe,SAASt6V,GACpBA,EAAQ5iB,EAAE4iB,GAGVvlB,KAAK0+W,cAAe,EAEpB,IAIInoV,EA5VI7tB,EAwVJT,EAAOjI,KACPoQ,EAAWnI,EAAKk2W,eAChBrnW,EAAS7O,EAAKi4W,eAAe36V,GAC7B06V,EAAQnpW,EAAOmpW,MAEf5yV,EAAY,IAAM8uV,EAClBztT,EAAanpC,EAAM3B,KAAKm5V,IAAS,GACjCoD,EAAMl4W,EAAKm4W,sBAAsB1xT,GAAWlhD,IAAI+X,EAAM+gD,KAAKj5C,GAAWkC,QAAO,WACzE,IAAI1jB,EAAUlJ,EAAE3C,MAChB,OAAI6L,EAAQ0jB,OAAO,IAAM5uB,EAAMijB,KAAK,OAAS,KAAKpc,QACvCqE,EAAQ+X,KAAKjjB,EAAMijB,KAAK,UAAY8qC,CAKnD,KAAIrpC,SAAS,YACbg7V,EAAeJ,EAAkD,GAA1Ch4W,EAAKq4W,gBAAgB/6V,EAAOzO,EAAOhF,KAC1DyuW,EAAgBN,EAAkF,GAA1E3C,EAAUltW,EAAS,CAAE6gB,SAzWzCvoB,EAyWyD23W,EAxW9D33W,EAAMjG,QAAQ,QAAS,SACzBA,QAAQ,UAAW,KACnBA,QAAQ,SAAU,KAClBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,MAoW6DsjB,MAAO2oC,KAClF8xT,GAAYj7V,EAAM3B,KAAK84V,GACvB+D,EAAel7V,EAAMtY,GAjahB,kBAkaL4nO,EAAetvN,EAAM5Y,OAjad,YAibX,GAdA4Y,EAAM0M,WAAWyqV,GAEbn3V,EAAMxY,SAAS,cACfwpB,EAAiB51B,EAAM41B,eAAehR,EAAM1Y,QAAQ,kBAGpD0Y,EAAMtY,GAAG,kBACTspB,EAAiB51B,EAAM41B,eAAehR,EAAM1Y,QAAQ,mBAGpD0Y,EAAMtY,GAAG,qBACTspB,EAAiB51B,EAAM41B,eAAehR,EAAM1Y,QAAQ,sBAGnDozW,GAAU16V,EAAMnX,KAAK,6BAoDfnG,EAAKw2W,QAAQ/vT,OApDyB,CAC7CzmD,EAAKw2W,QAAQ/vT,GAAa2xT,EAC1B,IAAIK,EAAQP,EAAIv8V,KAAK,MASrB,GAPA3b,EAAK04W,0BAA0BJ,EAAc7xT,GAGzCgyT,GACAH,EAAa38V,KAAK,KAAM88V,GAGT,IAAfP,EAAI34W,OACJ24W,EAAIhnS,YAAYonS,OACb,CACHhqV,EAAiBA,GAAkB51B,EAAM41B,eAAehR,GACxD,IAAIw1G,EAAgBx1G,EAAM5Y,SAASsjB,IAAI,GACnCmsS,EAAc72S,EAAM+gD,OAAOr2C,IAAI,GAC/B2wV,EAAcr7V,EAAMw6B,OAAO9vB,IAAI,IAG9BsG,GAAkBhR,EAAMtY,GAAG,kBAC5BspB,EAAiB51B,EAAM41B,eAAehR,EAAM1Y,QAAQ,oBAInD0pB,GAAkBhR,EAAMtY,GAAG,qBAC5BspB,EAAiB51B,EAAM41B,eAAehR,EAAM1Y,QAAQ,sBAGpD0pB,GAAkBA,EAAe3pB,UAAY2pB,EAAe1qB,UAAY0qB,EAAe3pB,SAAW,CAAC,YAAa,aAAc,iBAAiB+I,QAAQ4gB,EAAepvB,QAAQ/E,OAAS,GACvLm+W,EAAarrD,YAAY3+R,EAAe3pB,SACjCmuH,GAA4C,UAA3BA,EAAc5iG,SAEtCooV,EAAarrD,YAAYn6L,GAClBqhM,GAAeqhD,EAAWrhD,EAAa72S,EAAM,IAEpDg7V,EAAarrD,YAAYkH,GAClBwkD,GAAenD,EAAWmD,EAAar7V,EAAM,IAEpDg7V,EAAarrD,YAAY3vS,GAClBk7V,GAAgB5rI,EAAartO,OAEpC+4W,EAAarrD,YAAYrgF,GAEzB0rI,EAAarrD,YAAY3vS,EAEjC,CAEAg7V,EAAaxzV,YAAY,YAEzBxH,EAAM3B,KAAK84V,GAAa,EAC5B,CAcA,GAVI8D,IAAaP,GACbjgX,KAAKoK,QAAQ+yW,EAAgB,CAAE8C,MAAOA,EAAO16V,MAAOA,EAAOmJ,MAAO2xV,EAAat6V,MAAO2oC,OAG1Fn4B,EAAkBA,GAAiD,aAA/BA,EAAepvB,QAAQ/E,KAAuBm0B,EAAiB51B,EAAM41B,eAAehR,MAC/FgR,EAAesqV,gBAAiBtqV,EAAe3pB,SAAa2Y,EAAMtY,GAAG,oBAAsBsY,EAAMtY,GAAG,mBACzHsY,EAAMqD,YAAYyzV,GAAe4D,GACjC16V,EAAMqD,YAAY0zV,EAAY2D,IAG9B1pV,EAAgB,CAChB,IAAIuqV,EAAYvqV,EAAesqV,eAAiBtqV,EAAe3pB,QAC3Dm0W,EAAaxqV,EAAei7S,aAE5BsvC,GAAev7V,EAAMtY,GAAG,oBAAsBsY,EAAMtY,GAAG,kBACvD6zW,EAAUl4V,YAAYyzV,GAAe4D,GACrCa,EAAUl4V,YAAY0zV,EAAY2D,IAElCc,GACAA,EAAWn4V,YAAY4zV,GAAeyD,EAE9C,CAEA,GAAIO,IAAaP,EAAO,CACpB,IAAIe,EAAUT,EAAeA,EAAa38V,KAAK,MAAQu8V,EAAIv8V,KAAK,MAEhE3b,EAAKg5W,2BAA2B17V,EAAOy7V,GAEnChhX,KAAKmH,QAAQm3W,mBAAqBt+W,KAAKmH,QAAQw4W,gBAC/C3/W,KAAKggX,uBAEb,CAEA,OAAOC,CACX,EAEAiB,aAAc,WACV,IACI7zV,EAAY,IAAM8uV,EAClBtwW,EAFO7L,KAEQ6L,QAFR7L,KAINmhX,iCAEAt1W,EAAQoB,GAAGohV,GAGZxiV,EAAQy6D,KAAKj5C,GAAWhI,SAAS,YAFjCxZ,EAAQsqB,KAAK9I,GAAWhI,SAAS,WAIzC,EAEAwwB,MAAO,WACH,IAAI5tC,EAAOjI,KACP8/W,EAAS73W,EAAK4D,QAAQsqB,KAAK,IAAMkmV,GACjCjnM,EAASntK,EAAK4D,QAAQsqB,KAAK,IAAMqmV,GAErCv0W,EAAKw2W,QAAU,GAEfx2W,EAAKi5W,eAELj5W,EAAKm5W,wBAELtB,EAAO7tV,WAAWyqV,GAClBoD,EAAO/yV,YAAYsvV,GACnBjnM,EAAOroJ,YAAYyvV,EACvB,EAEA4D,sBAAuB,SAAS1xT,GAK5B,IAJA,IACItsD,EADAi/W,EAAW1gX,EAAM4pB,GAAGmzV,UAAU4D,gBAE9B1nS,EAAaj3E,IAERiH,EAAM,EAAGpC,EAASxH,KAAK6L,QAAQrE,OAAQoC,EAAMpC,EAAQoC,IAC1DgwE,EAAaA,EAAWpsE,IAAIgwW,EAA0Bx9W,KAAK6L,QAAQjC,GAAKsyI,qBAAqB,KAAMxtF,IAGvG,IAAKtsD,KAAQi/W,EACTznS,EAAaA,EAAWpsE,IAAI6zW,EAASj/W,GAAMm/W,OAAOvhX,KAAK6L,QAAS6iD,IAGpE,OAAOkrB,CACX,EAEA+mS,0BAA2B,SAASlqV,EAAWi4B,GAC3C,IACItsD,EADAi/W,EAAW1gX,EAAM4pB,GAAGmzV,UAAU4D,gBAUlC,IAAKl/W,KAPLq0B,EAAUpR,SAAS82V,GACdv4V,KAAKjjB,EAAMijB,KAAK,OAAQ8qC,GAAa,IAErCj4B,EAAU7S,KAAK,OAChB6S,EAAU7S,KAAK,KAAM8qC,EAAY,UAGxB2yT,EACTA,EAASj/W,GAAMo/W,SAAS/qV,EAAWi4B,EAE3C,EAEA4xT,gBAAiB,SAAS/6V,EAAOk8V,GAC7B,IAGIC,EAFAC,EADO3hX,KACcmH,QAAQyjB,SAAS62V,GACtC/yT,EAAYnpC,EAAM3B,KAAKm5V,GAS3B,OANKp8W,EAAM4pB,GAAGuzV,UAAUz1W,UAAUlB,QAAQyjB,SAAS62V,KAC9CC,EAAoB/gX,EAAMuI,WAAWy4W,GAAiBA,EAAcp8V,GAASo8V,GAGlFA,EAAgBhhX,EAAMuI,WAAWy4W,GAAiBA,EAAcp8V,GAASo8V,EAElEhhX,EAAMsQ,OAAOsU,EAAM3B,KAAKjjB,EAAMijB,KAAK69V,EAAU,UAAYl8V,EAAM3B,KAAK,sBAAwB89V,GAAqBC,GAAiBp8V,EAAM3B,KAAK,UAAY,GAC5J8qC,EACAnpC,EAAM3B,KAAK69V,IAAYl8V,EAAM3B,KAAKjjB,EAAMijB,KAAK69V,IACrD,EAEAvB,eAAgB,SAAS36V,GACrB,IACImY,EADAS,EAAQn+B,KAAKmH,QAAQg3B,MAGzB,IAAKT,KAAQS,EACT,IAAKA,EAAMT,GAAMnzB,KAAKvK,KAAMulB,GACxB,MAAO,CAAE06V,OAAO,EAAOnuW,IAAK4rB,GAIpC,MAAO,CAAEuiV,OAAO,EACpB,EAEA92T,OAAQ,WACJ,IAEIz6B,EAFAq4B,EAAU,GACVoC,EAASnpD,KAAKy+W,QAGlB,IAAK/vV,KAASy6B,EACVpC,EAAQplD,KAAKwnD,EAAOz6B,IAExB,OAAOq4B,CACX,EAEA70B,WAAY,SAAS/qB,GACbA,EAAQm3W,mBACRt+W,KAAKohX,wBAGTzgX,EAAM6H,WAAWxI,KAAKmH,QAASA,GAE/BnH,KAAKgC,UAELhC,KAAKmI,KAAKnI,KAAK6L,QAAS7L,KAAKmH,SAE7BnH,KAAKoyB,WAAWpyB,KAAKmH,QACzB,EAEAy6W,eAAgB,WAKZ,IAJA,IACI9B,EADO9/W,KACO6L,QAAQsqB,KADfn2B,KACyBu+W,gBAChCz4V,EAAS,GAEJlc,EAAM,EAAGpC,EAASs4W,EAAOt4W,OAAQoC,EAAMpC,EAAQoC,IAAO,CAC3D,IAAI2b,EAAQ5iB,EAAEm9W,EAAOl2W,IAEjByzW,EAAa93V,EAAOw3V,MAIsB,IAAtCj3V,EAAOnQ,QAAQ4P,EAAM3B,KAAKm5V,KACoB,IAA7Cx3V,EAAM1Y,QAAQ,oBAAoBrF,QACO,IAA1C+d,EAAM1Y,QAAQ,iBAAiBrF,SAC3Bse,EAAOnkB,KAAK4jB,EAAM3B,KAAKm5V,GAGvC,CAEA,OAAOj3V,CACX,EAEAm7V,2BAA4B,SAAS17V,EAAOy7V,GACxC,IAAIh5U,EAAgBrnC,EAAMonC,0BAA0BxiB,GAE/CyiB,GAAkBg5U,GAIvBrgX,EAAMynC,gBAAgBJ,EA7pBR,mBA6pBwCg5U,EAC1D,EAEAG,+BAAgC,WAK5B,IAJA,IAEI57V,EAAOy7V,EAFP/4W,EAAOjI,KACP8/W,EAAS73W,EAAK4D,QAAQsqB,KAAK,IAAMkmV,GAAcjmV,UAG1C7uB,EAAI,EAAGA,EAAIu4W,EAAOt4W,OAAQD,GAAK,GACpCge,EAAQ5iB,EAAEm9W,EAAOv4W,KAEP0F,GAAG,WACT+zW,EAAU/4W,EAAKm4W,sBAAsB76V,EAAM3B,KAAKm5V,IAC3CvvW,IAAI+X,EAAM+gD,KAAK,IAAM61S,IACrBv4V,KAAK,MAEV3b,EAAKg5W,2BAA2B17V,EAAOy7V,GAGnD,EAEAa,cAAe,WAKX,IAJA,IAAI55W,EAAOjI,KACP8hX,EAAa75W,EAAK25W,iBAClB97V,EAAS,GAEJve,EAAI,EAAGA,EAAIu6W,EAAWt6W,OAAQD,GAAK,EAAG,CAC3C,IAAInF,EAAO0/W,EAAWv6W,GAElBU,EAAKw2W,QAAQr8W,IACb0jB,EAAOnkB,KAAK,CACRokB,MAAO3jB,EACP6uB,QAAShpB,EAAKw2W,QAAQr8W,IAGlC,CAEA,OAAO0jB,CACX,EAEAi8V,eAAgB,WACZ,IAIItrV,EAJAxuB,EAAOjI,KACPmH,EAAUnH,KAAKmH,QAAQm3W,kBAEvBsC,EADU5gX,KAAK6L,QACOk0C,OAgB1B,OAZItpB,EADAtvB,EAAQsvB,UACI9zB,EAAEwE,EAAQsvB,WACfmqV,GAAeA,EAAY7zW,SAASwvW,GAC/BqE,EAEAj+W,EAAE,WAAW2vE,aAAarqE,EAAK4D,UAGrCwZ,SAAS,CAACk3V,EAAmBE,GAAY5xW,KAAK,MACxD4rB,EAAU7S,KAAK,OAAQ,SAEvB6S,EAAU5M,GAAG,QAAUgoE,EAAI5pF,EAAK+5W,cAAcx4W,KAAKvB,IAE5CwuB,CACX,EAEAurV,cAAe,SAASr9W,GACpBA,EAAEwE,iBAEF,IAGI6+B,EAFAssM,EAAO3xO,EAAEgC,EAAE0C,QACXA,EAFOrH,KAEO6L,QAAQsqB,KAAK,UAAYm+M,EAAKlmO,KAAK,SAAW,MAG3D/G,EAAOG,SAIZwgC,EAAgBrnC,EAAMonC,0BAA0B1gC,KAG5C2gC,EAAc59B,QAAQ,QAE9B,EAEA41W,sBAAuB,WACnB,IAGIiC,EAHAh6W,EAAOjI,KACPmnN,EAAUl/M,EAAKq2W,kBACfn1T,EAASlhD,EAAK45W,gBAGb16J,IACDA,EAAUl/M,EAAKq2W,kBAAoBr2W,EAAK85W,kBAG5CE,EAAa3E,EAAUr1W,EAAKo2W,iBAAiB,CACzCl1T,OAAQA,KAGZg+J,EAAQ92M,KAAK4xW,GAEb96J,EAAQv+L,YAAY,YAAaugC,EAAO3hD,OAC5C,EAEA45W,sBAAuB,WACnB,IACIj6J,EADOnnN,KACQs+W,kBAEdn3J,GAILA,EAAQ9hM,SAAS,WACrB,IAGJ1kB,EAAM4pB,GAAG2M,OAAO4mV,EACnB,CA7xBD,CA6xBGh9W,OAAOH,MAAM+G,QACF/G,OAWd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACf4pB,EAAK5pB,EAAM4pB,GACX6G,EAAS7G,EAAG6G,OACZruB,EAASJ,EAAEI,OACXmG,EAAavI,EAAMuI,WACnBvB,EAAgBhF,EAAEgF,cAClB8tB,EAAU9yB,EAAE8yB,QAGZysV,EAAwB,uFAMxBhlU,EAAS,SACTilU,EAAY,WACZC,EAAe,CAAC,MAAO,QAAS,SAAU,OAAQ,WAEtD,SAASC,EAAUt8V,GAEf,OADAA,EAAiB,MAATA,EAAgBA,EAAQ,IACnBrgB,MAAQ/E,EAAM+E,KAAKqgB,IAAU,QAC9C,CAkBA,SAASu8V,EAAiBn7W,GACtB,IAIIo7W,EAGA7kV,EAPA3X,GAAS5e,EAAQ+hD,MAAMz5B,QAAUtoB,EAAQ+hD,OAAO/hD,EAAQ4e,OACxDrgB,EAAO28W,EAAUt8V,GACjBy8V,EAAaz8V,EAAQA,EAAMy8V,WAAa,CAAC,EACzCv4T,EAAalkC,EAAQA,EAAMkkC,WAAa,CAAC,EAEzCw4T,EAAW9hX,EAAMijB,KAAK,QACtB8+V,EAAU/hX,EAAMijB,KAAK,QAErBA,EAAO,CACHyM,GAAIlpB,EAAQkpB,IAAMlpB,EAAQ4e,MAC1B3jB,KAAM+E,EAAQ4e,MACdo4B,MAAOh3C,EAAQg3C,MAAQh3C,EAAQg3C,MAAQh3C,EAAQ4e,OAGvD,IAAKw8V,KAAYC,EAAY,CAGzB,GAFA9kV,EAAO8kV,EAAWD,GAEd9sV,EAAQ8sV,EAAUH,IAAiB,EACnCx+V,EAAK6+V,GAAYF,OACd,IAAKr5W,EAAWw0B,GAAO,CAC1B,IAAI7pB,EAAUlT,EAAMoT,aAEpB,GAAoB,iBAAT2pB,GAAqB7pB,EAAQzR,KAAKoF,OAAQ,CACjD,IAAIsM,EAAeD,EAAQC,aACvB6uW,EAAajlV,EAAKjsB,WACjBhP,QA3DT,IA2DwBqR,EA3DxB,MA6DI8P,EAAK2+V,GAAYI,CACrB,MACI/+V,EAAK2+V,GAAY56W,EAAc+1B,GAAQA,EAAKh1B,OAAS65W,EAAW7kV,CAExE,CAEA9Z,EAAKjjB,EAAMijB,KAAK2+V,EAAW,SAAW7kV,EAAKzM,QAE3CrN,EAAK6yT,aApEW,KAqEpB,CAEA,IAAK,IAAImsC,KAAiB34T,EACtBrmC,EAAKg/V,GAAiB34T,EAAW24T,GASrC,OANIntV,EAAQ/vB,EAAM08W,IAAiB,IAC/Bx+V,EAAK6+V,GAAY/8W,GAGrBke,EAAK8+V,IAAqB,YAATh9W,EAAqB,WAAa,UAAYyB,EAAQ4e,MAEhEnC,CACX,CAEA,SAASi/V,EAAepsV,EAAW7S,GAC/B,IAAIyM,EAAKoG,EAAU7S,KAAK,MAOxB,OALIyM,IACAzM,EAAKyM,GAAKA,EACVoG,EAAUxE,WAAW,OAGlBrO,CACX,CAyCA,IAAIk/V,EAAe,CACf,eAAgB,WAAY,gBAAiB,gBAAiB,cAAe,eAAgB,WAAY,YACzG,aAAc,iBAAkB,eAChC,SAAU,kBAAmB,gBAAiB,sBAAsB,cACpE,iBAAkB,aAAc,SAAU,SAAU,SAAU,aAAc,eAC5E,UAAW,WAAY,UAAW,YAAa,sBAG/CC,EAAU,CACVnuI,OAAU,SAASn+M,EAAWtvB,GAC1B,IAAIyc,EAAO0+V,EAAiBn7W,GAC5BxE,EAAE,0BAA0BihB,KAAKA,GAAM1X,SAASuqB,EACpD,EACAhrB,OAAU,SAASgrB,EAAWtvB,GAC1B,IAAIyc,EAAO0+V,EAAiBn7W,GAC5BxE,EAAE,wBAAwBihB,KAAKA,GAAM1X,SAASuqB,GAAWusV,oBAAoBjgX,EAAO,CAAC,EAAGoE,EAAQ87W,cAAe,CAAEhyW,OAAQ9J,EAAQ8J,UACjItO,EAAE,SAAWhC,EAAMijB,KAAK,OAAS,KAAOzc,EAAQ4e,MAAQ,sCAAsC7Z,SAASuqB,EAC3G,EACA7f,KAAQ,SAAS6f,EAAWtvB,GACxB,IAAIyc,EAAO0+V,EAAiBn7W,GACxB8J,EAAS9J,EAAQ8J,OAEjBA,IACAA,EAAStQ,EAAM8Y,eAAexI,IAGlC2S,EAAKjjB,EAAMijB,KAAK,WAAa3S,EAE7BtO,EAAE,wBAAwBihB,KAAKA,GAAM1X,SAASuqB,GAAWysV,gBAAgBngX,EAAO,CAAC,EAAGoE,EAAQ87W,cAAe,CAAEhyW,OAAQ9J,EAAQ8J,UAC7HtO,EAAE,SAAWhC,EAAMijB,KAAK,OAAS,KAAOzc,EAAQ4e,MAAQ,sCAAsC7Z,SAASuqB,EAC3G,EACA9kB,OAAU,SAAS8kB,EAAWtvB,GAC1B,IAAIyc,EAAO0+V,EAAiBn7W,GAE5BxE,EAAE,wBAAwBihB,KAAKA,GAAM1X,SAASuqB,GAAW0sV,aAAah8W,EAAQ87W,cAClF,EACA50T,QAAW,SAAS53B,EAAWtvB,GAC3B,IAAIyc,EAAO0+V,EAAiBn7W,GACxB0E,EAAUlJ,EAAE,6BAA6BihB,KAAKA,GAAM1X,SAASuqB,GAAW2sV,cAAcj8W,EAAQ87W,eAElGtgX,EAAE,SAAWhC,EAAMijB,KAAK,OAAS,KAAOzc,EAAQ4e,MAAQ,sCAAsC7Z,SAASuqB,GAEvG4sV,EAA2Bx3W,EAAS4qB,EAAWtvB,EACnD,EACAkS,OAAU,SAASod,EAAWtvB,GAC1B,IAAIyc,EAAO0+V,EAAiBn7W,GACxB+kD,EAAQvrD,EAAMoS,UArF1B,SAAsBm5C,GAClB,IAAItiD,EACApC,EACA2nC,EACAzmC,EACAo4B,EACAhqB,EAEJ,GAAIo1C,GAASA,EAAM1kD,OAEf,IADAsP,EAAS,GACJlN,EAAM,EAAGpC,EAAS0kD,EAAM1kD,OAAQoC,EAAMpC,EAAQoC,IAE/Ck3B,GADAqO,EAAO+c,EAAMtiD,IACDk3B,MAAQqO,EAAKzmC,OAASymC,EAClCzmC,EAAsB,MAAdymC,EAAKzmC,MAAiBymC,EAAKrO,MAAQqO,EAAQA,EAAKzmC,MAExDoO,EAAOlN,GAAO,CAAEk3B,KAAMA,EAAMp4B,MAAOA,GAG3C,OAAOoO,CACX,CAkEoCwsW,CAAan8W,EAAQkS,SACjD1W,EAAE,WACEhC,EAAMijB,KAAK,cAAgB,UAC3BjjB,EAAMijB,KAAK,eAAiB,WAC5BjjB,EAAMijB,KAAK,UAAY,MAASsoC,EAAQA,EAAMzpD,QAAQ,MAAM,UAAYypD,GAAS,IACjFvrD,EAAMijB,KAAK,QAAU,KAAOzc,EAAQ87W,cAAcjzW,KAAO,IACzDrP,EAAMijB,KAAK,QAAU,qBACpBA,KAAKA,GAAM1X,SAASuqB,GACzB9zB,EAAE,SAAWhC,EAAMijB,KAAK,OAAS,KAAOzc,EAAQ4e,MAAQ,uCAAuC7Z,SAASuqB,EAC5G,EACA8sV,YAAe,SAAS9sV,EAAWtvB,GAC/B,IAAIyc,EAAO0+V,EAAiBn7W,GACxBzB,EAAOyB,EAAQq8W,OACfA,EAAS,QAAU99W,EACnBu9W,EAAgB97W,EAAQ87W,cACxBQ,EA/EZ,SAAsB/9W,EAAMyB,GAGxB,GAAKzB,EAAK8B,OAYV,MAVc,iBAAT9B,GAA2ByB,GAAWA,EAAQy9U,YAAwB,gBAATl/U,EACxD,aACU,eAATA,GAAkC,kBAATA,EAC1B,SACU,cAATA,EACD,cAES,WAATA,GAA8B,aAATA,EAAsB,eAAiB,WAI1E,CA+DyBg+W,CAAah+W,EAAMu9W,GAOpCI,EALc1gX,EAAE8gX,GACX7/V,KAAKA,GACL1X,SAASuqB,GACT+sV,GAAQP,GAEuBxsV,EAAWtvB,EACnD,GAGAw8W,EAAgB,CAChBl4W,OAAU,SAASgrB,EAAWtvB,GAC1B,IAAIyc,EAAO0+V,EAAiBn7W,GAC5Byc,EAAOi/V,EAAepsV,EAAW7S,GAEjCjhB,EAAE,0BAA0BihB,KAAKA,GAAM1X,SAASuqB,EACpD,EACA7f,KAAQ,SAAS6f,EAAWtvB,GACxB,IAAIyc,EAAO0+V,EAAiBn7W,GAC5Byc,EAAOi/V,EAAepsV,EAAW7S,GAEjCjhB,EAAE,wBAAwBihB,KAAKA,GAAM1X,SAASuqB,EAClD,EACA9kB,OAAU,SAAS8kB,EAAWtvB,GAC1B,IAAIyc,EAAO0+V,EAAiBn7W,GAC5Byc,EAAOi/V,EAAepsV,EAAW7S,GAEjCjhB,EAAE,yBAAyBihB,KAAKA,GAAM1X,SAASuqB,EACnD,EACA43B,QAAW,SAAS53B,EAAWtvB,GAC3B,IAAIyc,EAAO0+V,EAAiBn7W,GAC5Byc,EAAOi/V,EAAepsV,EAAW7S,GAEjCjhB,EAAE,6BAA6BihB,KAAKA,GAAM1X,SAASuqB,EACvD,EACApd,OAAU,SAASod,EAAWtvB,GAC1B,IAAIyc,EAAO0+V,EAAiBn7W,GACxB+kD,EAAQ/kD,EAAQkS,OAChBktB,EAAS5jC,EAAE,cAIf,IAAK,IAAI2W,KAFTsK,EAAOi/V,EAAepsV,EAAW7S,GAEfsoC,EACdvpD,EAAE,kBAAoBupD,EAAM5yC,GAAO5Q,MAAQ,KAAOwjD,EAAM5yC,GAAOwnB,KAAO,aAAa50B,SAASq6B,GAGhGA,EAAO3iB,KAAKA,GAAM1X,SAASuqB,EAC/B,GAGJ,SAASmtV,EAAmBC,EAAY1lV,GACpC,IACIT,EACA6yB,EAFAiyT,EAAaqB,GAAcA,EAAWrB,YAAoB,CAAC,EAI/D,IAAK9kV,KAAQ8kV,EACTjyT,EAAaiyT,EAAW9kV,GAEpB/1B,EAAc4oD,IAAeA,EAAW7nD,QACxC6nD,EAAaA,EAAW7nD,OAGxBQ,EAAWqnD,KACXpyB,EAAMT,GAAQ6yB,EAG1B,CAEA,SAAS8yT,EAA2B3sN,EAAKjgI,EAAW1Q,IAChCA,GAASA,EAAM+9V,qBAA+B,KAG1DptN,EAAI9mI,KAAI,GACR6G,EAAU0jB,OAAOx3C,EAAE,8BAAgCojB,EAAMA,MAAQ,6DAEzE,CAEA,IAAIg+V,EAAW3yV,EAAOruB,OAAO,CACzBoF,KAAM,SAAS0D,EAAS1E,GACpB,IAAIc,EAAOjI,KAEPmH,EAAQE,QACJF,EAAQE,OAAOunF,OACf3mF,EAAK+7W,WAAY,GAGzB5yV,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GACnCc,EAAKg8W,eAAiBh8W,EAAKi8W,UAAU16W,KAAKvB,GAC1CA,EAAK0W,SACT,EAEAtU,OAAQ,CAAC6yC,GAET/1C,QAAS,CACL/E,KAAM,WACN2gX,QAASA,EACTY,cAAeA,EACfQ,gBAAgB,EAChBxE,gBAAgB,EAChBrB,mBAAmB,EACnBF,cAtSY,EAAGntV,aAAc,8DAC7BtwB,EAAM4pB,GAAG+tE,KAAK,CAAEA,KAAM,qBAAsBF,UAAW,mBACvD,mCAAmCnnE,4DAqSnCmzV,WAAW,EACXp0W,KAAM,UAGVwzW,OAAQ,SAASz9V,EAAO89V,GACpB,IAYIngU,EAZAz7C,EAAOjI,KACP+iX,EAAU96W,EAAK+7W,UAAYL,EAAgB17W,EAAKd,QAAQ47W,QACxDjgN,EAAWn7J,EAAcoe,GACzB2oC,EAAYo0G,EAAW/8I,EAAMA,MAAQA,EACrCmjC,EAAQjhD,EAAKd,QAAQ+hD,OAAS,CAAC,EAE/BxjD,EADiBo9J,GAAY/8I,EAAM1M,OACX,SAAWgpW,EAAUwB,GAC7CQ,EAAWvhN,GAAoC,iBAAjB/8I,EAAMy9V,QAAwC,WAAjBz9V,EAAMy9V,OACjEc,EAAiBxhN,IAAauhN,GAAYt+V,EAAMy9V,OAChDe,EAAgBzhN,IAAuD,IAA3CngK,EAAE8yB,QAAQ1P,EAAMy9V,OAAQV,GACpDU,EAASc,EAAiBv+V,EAAMy9V,OAAST,EAAQsB,EAAW,SAAW3+W,GACvE+wB,EAAYxuB,EAAK4D,QAAQsqB,KAAK,IAAMx1B,EAAMijB,KAAK,iBAAmB,IAAM8qC,EAAUjsD,QAAQy/W,EAAuB,QAAU,KAG/HsB,EAASA,GAAkBT,EAAQpxW,OAE/B4yW,EACAf,EAAST,EAAQQ,YACVe,GAA0C,iBAAjBv+V,EAAMy9V,SACtCA,EAAS,SAAS/sV,GACdA,EAAU0jB,OAAOp0B,EAAMy9V,OAC3B,GAGC1gN,GAQI/8I,EAAMk9V,gBACPl9V,EAAMk9V,cAAgB,CAAC,GAG3Bl9V,EAAMk9V,cAAgBlgX,EAAO,CAAC,EAAG,CAAEiN,KAAM/H,EAAKd,QAAQ6I,MAAQ+V,EAAMk9V,eACpEv/T,EAAK39B,GAZL29B,EAAK,CACD39B,MAAO2oC,EACPu0T,cAAe,CACXjzW,KAAM/H,EAAKd,QAAQ6I,OAa/BwzW,EADA/sV,EAAYA,EAAUjvB,OAASivB,EAAYxuB,EAAK4D,QAC9B9I,GAAO,EAAM,CAAC,EAAG2gD,EAAI,CAAEwF,MAAOA,IACpD,EAEAg7T,UAAW,SAASv/W,GAChB,IACI4gB,EADAtd,EAAOjI,KAEP0I,EAAQ/D,EAAE+D,MACV87W,EAAuBv8W,EAAKw8W,2BAC5BprW,EAAS,CAAC,EACVqrW,EAAgB/jX,EAAMijB,KAAK,QAC3B8qC,EAAY/pD,EAAEohB,MAAMtjB,QAAQy/W,EAAuB,QACnDyC,EAAe,IAAIn2W,OAAO,2BAA6BkgD,EAAY,aAEvEr1C,EAAO1U,EAAEohB,OAASphB,EAAE+D,OAEpB6c,EAAQ5iB,EAAE,UAAY+hX,EAAgB,MAAQh2T,EAAY,KAAMzmD,EAAK4D,SAChE0jB,OAAO,IAAM5uB,EAAMijB,KAAK,YAAc,cAAc2L,QAAO,WACzD,OAAOo1V,EAAap3W,KAAK5K,EAAE3C,MAAM4jB,KAAK8gW,GACzC,KACMl9W,OAAS,IACf+d,EAAQA,EAAMgK,QAAO,WACjB,IAAI1jB,EAAUlJ,EAAE3C,MAChB,OAAQ6L,EAAQoB,GAAG,WAAapB,EAAQ+jB,OAASlnB,CACrD,KAGJ,IACIT,EAAKw8W,4BAA6B,IAE7Bx8W,EAAK28W,YAAY/E,cAAct6V,KAAYi/V,GAAwBv8W,EAAKmC,QAAQ8yC,EAAQ,CAAE7jC,OAAQA,MACnG1U,EAAEwE,gBAGV,CAAE,QACElB,EAAKw8W,4BAA6B,CACtC,CACJ,EAEA94W,IAAK,WACD,OAAO3L,KAAK4kX,YAAYxmH,UAC5B,EAEAp8P,QAAS,WACL,IAAIiG,EAAOjI,KAEXoxB,EAAOrpB,GAAG/F,QAAQuI,KAAKtC,GAEvBA,EAAKd,QAAQ+hD,MAAMj/C,OAAO,MAAOhC,EAAKg8W,gBACtCh8W,EAAKd,QAAQ+hD,MAAMj/C,OAAOk4W,EAAWl6W,EAAKg8W,gBAE1CtjX,EAAMsJ,OAAOhC,EAAK4D,SAEd5D,EAAK28W,aACL38W,EAAK28W,YAAY5iX,UAErBrB,EAAMqB,QAAQiG,EAAK4D,SAEnB5D,EAAK4D,QAAQgnB,WAAW,kBAEpB5qB,EAAK4D,QAAQoB,GAAG,IAAMtM,EAAMijB,KAAK,QAAU,eAC3C3b,EAAK4D,QAAQomB,WAAWtxB,EAAMijB,KAAK,QAE3C,EAEAjF,QAAS,WACL,IACI/U,EACApC,EAKAue,EAEA2oC,EACAm1T,EACAgB,EAXA58W,EAAOjI,KAGPyvB,EAASxnB,EAAKd,QAAQsoB,QAAU,GAChCgH,EAAYxuB,EAAK6xC,WAAa7xC,EAAKd,QAAQg9W,eAAiBl8W,EAAK4D,QAAQ+gD,QAAU3kD,EAAK4D,QACxFq9C,EAAQjhD,EAAKd,QAAQ+hD,OAAS,CAAC,EAC/B/qB,EAAQ,CAAC,EAWb,IAJKj7B,MAAMD,QAAQwsB,KACfA,EAAS,CAACA,IAGT7lB,EAAM,EAAGpC,EAASioB,EAAOjoB,OAAQoC,EAAMpC,EAAQoC,IAC/Cmc,EAAQ0J,EAAO7lB,GAEf8kD,EADW/mD,EAAcoe,GACFA,EAAMA,MAAQA,EAGrC69V,EAFAC,GAAc36T,EAAMz5B,QAAUy5B,GAAOwF,GAENvwB,GAE/Bl2B,EAAKu7W,OAAOz9V,EAAO89V,GAGxB,IAAKr8W,EAED,IAAKknD,KADLm2T,EAAc37T,EAAMz5B,QAAUy5B,EAE1B06T,EAAmBiB,EAAYn2T,GAAYvwB,IAva3D,SAA+B1H,GAC3BA,EAAUN,KAAK,8EAAgFx1B,EAAMijB,KAAK,QAAU,eAAiBjjB,EAAMijB,KAAK,QAAU,cAAgBjjB,EAAMijB,KAAK,QAAU,qBAAuBjjB,EAAMijB,KAAK,QAAU,gBAAgB5gB,MAAK,WAC5P,IAAI8hX,EAAWnkX,EAAMijB,KAAK,QACtBosD,EAAUhwE,KAAKm1B,aAAa2vV,IAAa,GACzCz0S,EAA4B,aAAdrwE,KAAK0F,MAAqC,UAAd1F,KAAK0F,KAAmB,WAAa,SAC/Eq/W,EAAqB/kX,KAAKm1B,aAAa,UAAY4uV,EAASiB,qBAC5Dt2T,EAAY1uD,KAAKiqD,WAAW7nD,MAAQpC,KAAKiqD,WAAW7nD,KAAKsG,OAEvB,IAAlCsnE,EAAQr6D,QAAQ06D,IAAuB3hB,IAAcq2T,IACrD/0S,IAAYA,EAAQxoE,OAAS,IAAM,IAAM6oE,EAAc3hB,EAEvD/rD,EAAE3C,MAAM4jB,KAAKkhW,EAAU90S,GAE/B,GACJ,CA6ZQi1S,CAAsBxuV,GAElBxuB,EAAK28W,aACL38W,EAAK28W,YAAY5iX,UAGrBrB,EAAM6I,KAAKitB,EAAWxuB,EAAKd,QAAQ+hD,OAE/BjhD,EAAKd,QAAQw4W,iBACb13W,EAAKd,QAAQ+hD,MACRj/C,OAAO,MAAOhC,EAAKg8W,gBACnBz6W,KAAK,MAAOvB,EAAKg8W,gBAEtBh8W,EAAKd,QAAQ+hD,MACRj/C,OAAOk4W,EAAWl6W,EAAKg8W,gBACvBz6W,KAAK24W,EAAWl6W,EAAKg8W,iBAG9Bh8W,EAAK28W,YAAc,IAAIjkX,EAAM4pB,GAAGuzV,UAAUrnV,EAAW,CACjDkpV,eAAgB13W,EAAKd,QAAQw4W,eAC7BrB,kBAAmBr2W,EAAKd,QAAQm3W,kBAChCF,cAAen2W,EAAKd,QAAQi3W,eAzd5C,UA0dgBjgV,MAAOA,IAEFl2B,EAAKd,QAAQi9W,WACdc,gBAAe,KACXj9W,EAAKk9W,cAAc,GAGnC,EAEAA,aAAc,WACEnlX,KAEN85C,WAAW3jB,KAAK,mBAAmB6B,GAAG,GAAG5tB,QAAQ,QAC3D,IAGL25W,EAASiB,qBAAuB,6BAEhCz6V,EAAG2M,OAAO6sV,EACZ,CA7eD,CA6eGjjX,OAAOH,MAAM+G,QACF/G,OAgBV,SAAUgC,EAAGC,GACT,IAYIuwT,EAZAxyT,EAAQG,OAAOH,MACfywB,EAASzwB,EAAM4pB,GAAG6G,OAClB+kE,EAAax1F,EAAM4pB,GAAGunE,MAAMqE,WAC5BrN,EAAYnoF,EAAM4pB,GAAGu+D,UACrBnhF,EAAgBhF,EAAEgF,cAClBgS,EAAgBhZ,EAAM+Y,eACtBvN,EAAaxL,EAAM8L,YACnBL,EAAczL,EAAM+L,aACpB3J,EAASJ,EAAEI,OACXC,EAAOL,EAAEK,KACToN,EAAWzP,EAAMyP,SACjBihF,EAAO,OAEPQ,EAAK,eACLuzR,EAAW,oBAEXC,EAAU,YACVC,EAAe,kBACfC,EAAkBD,EAAe,MACjCE,EAAiB,oBAEjBC,EAAuB,mBACvBC,EAAW,aACXC,EAAmB,qBACnBhiQ,EAAgB,kBAChBiiQ,EAAmB,cACnBC,EAAc,UACdC,EAAgB,UAChBC,EAAiB,qBACjBC,EAAc,wBAEdz0R,EAAU,WACV00R,EAAU,WACVv0U,EAAS,SACTw0U,EAAS,SAETr1R,EAAO,OACPG,EAAW,WACXD,EAAa,aACbD,EAAQ,QACRq1R,EAAU,UAGVC,EAAc,cAEdC,EAAY,YACZniS,EAAY,YACZE,EAAU,UACVkiS,EAAU,UAEVt7T,EAAQ,QACRnZ,EAAW,WACX00U,EAAsB,yBACtBp5D,EAAS,SACTq5D,EAAiC,wLACjCC,EAAwB,wBACxBC,EAA0B,4BAC1BC,EAA6BF,EAAwB,IAAMC,EAC3DE,EAA2B,+CAC3BC,EAAsB,sFACtBC,GAAsB,sBACtBC,GAAO,aACPh4V,GAAapuB,EAAMouB,WACnBi4V,GAAO,CACH5mX,MAAO,cACPC,OAAQ,cACRC,MAAO,eAGf,SAASw2H,GAAQ1xH,GACb,YAAoB,IAALA,CACnB,CAEA,SAAS6hX,GAAMp7W,EAASiC,GACpB,OAAO0L,SAAS3N,EAAQI,IAAI6B,GAAW,KAAO,CAClD,CAEA,SAASo5W,GAAUx+W,EAAOkvH,EAAK+4D,GAY3B,OATIjoL,GAASI,MAAMJ,IAAUA,EAAM+I,WAAWkE,QAAQ,MAAQ,EACxCjN,EAEArF,KAAK8V,IACnB9V,KAAKqT,IAAI8C,SAAS9Q,EAAO,IAAKioL,IAASj4B,IAAWi4B,EAAOn3K,SAASm3K,EAAM,KACxE/4D,KAAS8gC,IAAW9gC,EAAMp+G,SAASo+G,EAAK,IAKpD,CAEA,SAASuvP,KACL,OAAQnnX,KAAK0F,MAAQ1F,KAAK0F,KAAKmT,cAAclD,QAAQ,WAAa,CACtE,CAGA,SAASyxW,GAAYr0U,GAIjB,IAHA,IAAIj8B,EAAS,CAAEoO,IAAK6tB,EAAKyiF,UAAWhpG,KAAMumB,EAAKs0U,YAC3C16W,EAASomC,EAAKuiD,aAEX3oF,GAAQ,CACXmK,EAAOoO,KAAOvY,EAAO6oH,UACrB1+G,EAAO0V,MAAQ7f,EAAO06W,WAEtB,IAAIC,EAAkB3kX,EAAEgK,GAAQV,IAAI,aAChCs7W,EAAkB5kX,EAAEgK,GAAQV,IAAI,aAEZ,SAApBs7W,GAAkD,WAApBA,IAC9BzwW,EAAOoO,KAAOvY,EAAOmqB,WAGD,SAApBwwV,GAAkD,WAApBA,IAC9BxwW,EAAO0V,MAAQ7f,EAAO4gB,YAG1B5gB,EAASA,EAAO2oF,YACpB,CAEA,OAAOx+E,CACX,CAEA,IAAI0wW,GAASp2V,EAAOruB,OAAO,CACvBoF,KAAM,SAAS0D,EAAS1E,GACpB,IACIyF,EAEAshF,EAAY7gF,EAASC,EAErBq5C,EACA8gU,EAEAC,EAEAr3V,EAVApoB,EAAOjI,KAEP8d,EAAS,CAAC,EAOV6pW,EAAkBxgX,GAAWA,EAAQygX,UAAYzgX,EAAQygX,QAAQpgX,OAGrE4pB,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GAEnCmG,GADAnG,EAAUc,EAAKd,SACImG,SACnBzB,EAAU5D,EAAK4D,QACf86C,EAAUx/C,EAAQw/C,QAClB+gU,EAAe/kX,EAAE7B,QAEb6mX,IACAxgX,EAAQygX,QAAU,IAGtB3/W,EAAKiE,SAAWvJ,EAAEwE,EAAQ+E,UAE1BjE,EAAK81T,YAAc52T,EAAQkhF,UAAU01O,YAAcp7T,EAAEwE,EAAQkhF,UAAU01O,aAAa7zT,QAAU,KAE1Fy8C,IAAYh/C,EAAcg/C,KAC1BA,EAAUx/C,EAAQw/C,QAAU,CAAE33B,IAAK23B,IAIvC96C,EAAQsqB,KAAK,UAAU5G,OAAO43V,IAAkB96W,SAE3CR,EAAQc,SAASM,GAAGhF,EAAKiE,WAAcjE,EAAK81T,aAAgBzwT,EAAS4X,MAAQtiB,GAAe0K,EAASkf,OAAS5pB,IAC3GiJ,EAAQoB,GAAGskF,IACXzzE,EAASjS,EAAQiS,UACL,IAEZowE,EAAariF,EAAQI,IAAI,cACzBoB,EAAUxB,EAAQI,IAAI,WAEtBJ,EAAQI,IAAI,CAAEiiF,WAAYx8C,EAAQrkC,QAAS,KAGvCyQ,EADAnO,SAASqP,KAAKuW,SAAS1pB,EAAQ,IACtBA,EAAQiS,SAER,CAAEoH,IAAK,EAAGsH,KAAM,GAG7B3gB,EAAQI,IAAI,CAAEiiF,WAAYA,EAAY7gF,QAASA,KAG/CC,EAAS4X,MAAQtiB,IACjB0K,EAAS4X,IAAMpH,EAAOoH,KAEtB5X,EAASkf,OAAS5pB,IAClB0K,EAASkf,KAAO1O,EAAO0O,OAI1BsqG,GAAQ3vH,EAAQ6F,UAAgC,OAApB7F,EAAQ6F,UACrC7F,EAAQ6F,QAAUnB,EAAQoB,GAAGskF,IAGjC3kF,EAAU3E,EAAK2E,QAAUf,EAAQgB,QAAQw4W,GAErCl+W,EAAQktB,YAAqC,SAAvBltB,EAAQktB,YAC9BznB,EAAQyY,SAAS1kB,EAAM8qC,iBAAiB,YAAa,aAActkC,EAAQktB,aAG1ExoB,EAAQoB,GAAG,sBAAyBL,EAAQ,KAC7Cf,EAAQwZ,SAAS,oBACjBxZ,EAAQ+X,KAAK,WAAY,GACzB3b,EAAK4/W,cAAch8W,EAAS1E,GAC5ByF,EAAU3E,EAAK2E,QAAUf,EAAQgB,QAAQw4W,GAEzCp9W,EAAKk2C,MAAMl2C,EAAKd,QAAQg3C,OACxBl2C,EAAK6/W,cAED3gX,EAAQ4gX,iBACR9/W,EAAK2E,QAAQutC,OAAOx5C,EAAMyP,SAASjJ,EAAQ4gX,gBAAvBpnX,CAAwCwG,EAAQ6gX,mBAI5E//W,EAAKggX,OAAShgX,EAAKigX,SAAWxvN,IAC9BzwJ,EAAKkgX,OAASlgX,EAAKmgX,QAAU1vN,IAC7BzwJ,EAAK0rF,YAEDhtC,GACA1+C,EAAK0W,QAAQgoC,GAGbx/C,EAAQ6F,SACR/E,EAAKi3R,QAAQ,MAAO/3R,EAAQ6rF,OAGhCy0R,EAAgB76W,EAAQ2oC,SAASiwU,GAE7Br+W,EAAQ6F,SAAW7F,EAAQ6rF,OAC3B/qF,EAAKogX,SAASz7W,EAAQK,GAAGskF,IAAUtlF,IAAI,CAAE8qB,QAAS,KAGtDnqB,EACKid,GAAG,aAAegoE,EAAI+0R,EAA0B3+W,EAAKqgX,aAAa9+W,KAAKvB,IACvE4hB,GAAG,aAAegoE,EAAI+0R,EAA0B3+W,EAAKsgX,aAAa/+W,KAAKvB,IACvE4hB,GAAG,QAAUgoE,EAAI,KAAO+0R,EAA0B3+W,EAAKugX,qBAAqBh/W,KAAKvB,IACjF4hB,GAAG,UAAYgoE,EAAI5pF,EAAMA,EAAK28G,SAASp7G,KAAKvB,IAC5C4hB,GAAG,QAAUgoE,EAAI5pF,EAAK2uF,OAAOptF,KAAKvB,IAClC4hB,GAAG,OAASgoE,EAAI5pF,EAAK2+G,MAAMp9G,KAAKvB,IAErCw/W,EACK59V,GAAG,UAAYgoE,EAAI5pF,EAAMA,EAAKwgX,gBAAgBj/W,KAAKvB,IAE1Cw/W,EAActxV,KAAK,IAAMwtF,GAAe,KAElC+jQ,EAAat5W,KAAK04W,MAElCY,EAAa79V,GAAG,OAASgoE,GAAI,WACzB,IAAIhmF,EAAUlJ,EAAEgN,SAASgK,eAAehN,OAAO64W,GAC3C35W,EAAQrE,QACa7G,EAAM41B,eAAe1qB,GAC3B+qF,QAEvB,IAEA8wR,EAAa79V,GAAG,QAAUgoE,GAAI,WAC1BlvF,EAAE6iX,GAAgBpnD,IAvOb,qBAuOiCp7T,MAAK,SAASuE,EAAGsE,GACnDlL,EAAM41B,eAAe5zB,EAAEkJ,IAAU+6G,OACrC,GACJ,IAEA8gQ,EAAat5W,KAAK04W,IAAqB,IAG3C9mX,KAAK0tS,aAEL1tS,KAAK0oX,aAEDvhX,EAAQwhX,QAAU3oX,KAAK4M,QAAQK,GAAG,aAClChF,EAAK2gX,OAGTv4V,EAAKxkB,EAAQ+X,KAAK,SAEdyM,GAAU,aACVzjB,EAAQgX,KAAK,CACL4M,KAAQ,SACR,kBAAmBH,IACpBklB,SAASgwU,GACXhwU,SAAS+vU,GACT1hW,KAAK,KAAMyM,IAGpBzjB,EAAQY,IAAIZ,EAAQ2oC,SAAS,oBAAsBgwU,IAC9C17V,GAAGlpB,EAAM4C,QAAQumB,UAAY+nE,EAAI5pF,EAAKi3R,QAAQ11R,KAAKvB,IAExDA,EAAKywB,cAAgB/3B,EAAM+3B,cAAc7sB,GAEzC5D,EAAKgtO,eAAiBhtO,EAAK4gX,kBAAkBr/W,KAAKvB,GAElDA,EAAKkqN,QAAUxxN,EAAMwvB,OAAOnlB,UAAU,EAAG,GAEzCrI,EAAE7B,QAAQ+oB,GAAG,SAAWgoE,EAAK5pF,EAAKkqN,QAASlqN,EAAKgtO,gBAE5C9tO,EAAQ6F,UACR/E,EAAKmC,QAAQymF,GACb5oF,EAAKmC,QAAQ4mF,IAGjBrwF,EAAMi0B,OAAO3sB,GAETjI,KAAKmH,QAAQ6rF,QACbhzF,KAAKusU,YAAc,IAAIp2O,EAAWvpF,GAClC5M,KAAKusU,YAAYn2O,OACjBp2F,KAAKusU,YAAYh2O,WAAa,WAC1B,OAAO3pF,EAAQwB,KAAK,UACxB,GAGAnG,EAAKspB,uBACLtpB,EAAKspB,sBAAsBtpB,EAAK2E,QAAQ,GAEhD,EAEA07W,aAAc,SAAS3jX,GACnBhC,EAAEgC,EAAEg6E,eAAet5D,SAASwgW,EAChC,EAEA0C,aAAc,SAAS5jX,GACnBhC,EAAEgC,EAAEg6E,eAAe5xD,YAAY84V,EACnC,EAEAjvR,OAAQ,WACJ52F,KAAK4M,QAAQyY,SAASygW,EAC1B,EAEAl/P,MAAO,WACH5mH,KAAK4M,QAAQmgB,YAAY+4V,EAC7B,EAEAgC,YAAa,WACT,IAAIl7W,EAAU5M,KAAK4M,QACfzF,EAAUnH,KAAKmH,QACf4E,EAAQ5E,EAAQ4E,MAChBC,EAAS7E,EAAQ6E,OACjBiqT,EAAY9uT,EAAQ8uT,UACpB6yD,EAAY3hX,EAAQ6I,KACpB2iB,EAAa,CAAC,WAAW,YAAY,WAAW,aAChDo2V,EAAgD,eAA7Bn8W,EAAQX,IAAI,cAE/B+8W,EAAgBD,EAAmB9B,GAAMr6W,EAAS,qBAAuBq6W,GAAMr6W,EAAS,sBAAwB,EAChHq8W,EAAgBF,EAAmB9B,GAAMr6W,EAAS,oBAAsBq6W,GAAMr6W,EAAS,uBAAyB,EAChHgtH,EAAamvP,EAAmB9B,GAAMr6W,EAAS,eAAiB,EAEhE5M,KAAK+9T,cAAgB/9T,KAAKkpX,YAC1BlpX,KAAKmpX,oBACLhiX,EAAQ8uT,UAAY5yT,KAAKqT,IAAI1W,KAAK+9T,YAAY/xT,QAAUi9W,EAAgBrvP,GAAaq8L,GACrF9uT,EAAQmrS,SAAWjvS,KAAKqT,IAAI1W,KAAK+9T,YAAYhyT,MAAQi9W,EAAe7hX,EAAQmrS,WAGhF,IAAK,IAAI/qS,EAAI,EAAGA,EAAIorB,EAAWnrB,OAAQD,IAAK,CACxC,IAAImB,EAAQvB,EAAQwrB,EAAWprB,KAAO,GAClCmB,GAASgwJ,KACT9rJ,EAAQX,IAAI0mB,EAAWprB,GAAImB,EAEnC,CAEIutT,GAAav9J,KACb14J,KAAK6L,QAAQI,IAAI,YAAagqT,GAG9BlqT,EACAa,EAAQT,WAAW+6W,GAAUn7W,EAAO5E,EAAQo1N,SAAUp1N,EAAQmrS,WAG9D1lS,EAAQT,WAAW,IAGnBH,EACAY,EAAQR,YAAY86W,GAAUl7W,EAAQ7E,EAAQsyP,UAAWtyP,EAAQ8uT,YAGjErpT,EAAQR,YAAY,IAGnBjF,EAAQ6F,SACTJ,EAAQmgB,YAAYi5V,GAAat4W,OAGjCo7W,GAAa9B,GAAK8B,IAClBl8W,EAAQyY,SAAS2hW,GAAK8B,GAE9B,EAEAn1R,UAAW,WACP,IAEIy1R,EAAgBC,EAFhBz8W,EAAU5M,KAAK4M,QACfU,EAAWtN,KAAKmH,QAAQmG,SAG5BtN,KAAKmpX,oBAEDnpX,KAAK+9T,cACLzwT,EAAS4X,IAAM5X,EAAS4X,KAAO,EAC/B5X,EAASkf,KAAOlf,EAASkf,MAAQ,EAEjC48V,EAAiB97W,EAAS4X,IAAIzT,WAAWkE,QAAQ,KAAO,EACpD6D,SAASxZ,KAAK+9T,YAAY/xT,QAAUjD,WAAWuE,EAAS4X,KAAO,KAAM,IACrE5X,EAAS4X,IAEbmkW,EAAkB/7W,EAASkf,KAAK/a,WAAWkE,QAAQ,KAAO,EACtD6D,SAASxZ,KAAK+9T,YAAYhyT,OAAShD,WAAWuE,EAASkf,MAAQ,KAAM,IACrElf,EAASkf,KAEblf,EAAS4X,IAAMgiW,GAAUkC,EAAgBppX,KAAKioX,OAAQjoX,KAAKmoX,QAC3D76W,EAASkf,KAAO06V,GAAUmC,EAAiBrpX,KAAKkoX,QAASloX,KAAKooX,UAG9D96W,EAAS4X,KAAO5X,EAAS4X,IAAIzT,WAAWkE,QAAQ,MAAQ,IACxDrI,EAAS4X,IAAMrS,OAAOvF,EAAS4X,IAAIziB,QAAQ,KAAM,MAGjD6K,EAASkf,MAAQlf,EAASkf,KAAK/a,WAAWkE,QAAQ,MAAQ,IAC1DrI,EAASkf,KAAO3Z,OAAOvF,EAASkf,KAAK/pB,QAAQ,KAAM,MAGlC,IAAjB6K,EAAS4X,MACT5X,EAAS4X,IAAM5X,EAAS4X,IAAIzT,YAGV,IAAlBnE,EAASkf,OACTlf,EAASkf,KAAOlf,EAASkf,KAAK/a,YAGlC7E,EAAQX,IAAI,CACRiZ,IAAK5X,EAAS4X,KAAO,GACrBsH,KAAMlf,EAASkf,MAAQ,IAE/B,EAEA28V,kBAAmB,WACf,IAAIprD,EAAc/9T,KAAK+9T,YAEvB,IAAKA,EACD,OAAO,KAGXA,EAAYhyT,MAAQgyT,EAAYv9S,aAChCu9S,EAAY/xT,OAAS+xT,EAAYp9S,cAE7BnH,SAASukT,EAAYhyT,MAAO,IAAMgyT,EAAY,GAAG94S,cACjD84S,EAAYhyT,OAASpL,EAAM4C,QAAQmb,aAGnClF,SAASukT,EAAY/xT,OAAQ,IAAM+xT,EAAY,GAAG/4S,eAClD+4S,EAAY/xT,QAAUrL,EAAM4C,QAAQmb,aAGxCq/S,EAAYzwT,SAAW85W,GAAYrpD,EAAY,IAE3C/9T,KAAKkpX,WACLlpX,KAAKioX,OAASjoX,KAAKkoX,SAAWxvN,IAC9B14J,KAAKmoX,OAASnoX,KAAKooX,QAAU1vN,MAE7B14J,KAAKioX,OAASlqD,EAAYjnS,YAC1B92B,KAAKkoX,QAAUnqD,EAAYxwS,aAC3BvtB,KAAKooX,QAAUpoX,KAAKkoX,QAAUnqD,EAAYhyT,MAAQI,EAAWnM,KAAK4M,SAAS,GAC3E5M,KAAKmoX,OAASnoX,KAAKioX,OAASlqD,EAAY/xT,OAASI,EAAYpM,KAAK4M,SAAS,GAEnF,EAEA08W,kBAAmB,SAASj5V,GACxB,IAAIiiE,EAAYtyF,KAAKmH,QAAQmrF,UAM7B,OAAOA,GAAaA,EAAUjiE,IALT,CACjBkiE,KAAM,CAAEnrE,QAAS,CAAC,GAClBs+B,MAAO,CAAEh4C,MAAM,EAAM0Z,QAAS,CAAC,IAGiBiJ,EACxD,EAEAqC,QAAS,WACL/xB,EAAMwpB,OAAOnqB,KAAK6L,QAAQ0pC,WAC9B,EAEAm4P,WAAY,WACR,IAAIi0B,EAAY3hU,KAAKmH,QAAQw6T,UACzB/0T,EAAU5M,KAAK4M,QAEf5M,KAAKupX,WACL38W,EACKwsB,IAAI,WAAay4D,GACjBt8C,SAASkwU,GAAsBp5W,SAEpCrM,KAAKupX,SAASvnX,UACdhC,KAAKupX,SAAW,MAGhB5nD,IACA/0T,EAAQid,GAAG,WAAagoE,EAAI0zR,EAAiB,SAAU5gX,GAC9ChC,EAAEgC,EAAE0C,QAAQwF,QAAQ,6BAA6BrF,QAClDxH,KAAKwpX,oBAEZ,EAAEhgX,KAAKxJ,OAERgD,EAAK,sBAAsB4H,MAAM,MAAM,SAAS0O,EAAOxP,GACnD8C,EAAQutC,OAAOg5Q,EAAUs2D,aAAa3/W,GAC1C,IAEA9J,KAAKupX,SAAW,IAAIG,GAAe1pX,OAGvC4M,EAAU,IACd,EAEA87W,WAAY,WACR,IAAIrgS,EAAYroF,KAAKmH,QAAQkhF,UAEzBroF,KAAK4uS,WACL5uS,KAAK4uS,SAAS5sS,UACdhC,KAAK4uS,SAAW,MAEhBvmN,IACAroF,KAAK4uS,SAAW,IAAI+6E,GAAe3pX,KAAMqoF,EAAUuhS,YAAcrE,EAAiBl9R,EAAU3E,gBAEpG,EAEAmmS,SAAU,WACN,IAWIvxR,EAXAnxF,EAAUnH,KAAKmH,QACfygX,EAAUzgX,EAAQygX,QAClBe,EAASxhX,EAAQwhX,OAEjBlyV,EADWz2B,KAAK4M,QAAQ2oC,SAASgwU,GACZpvV,KAAK,8BAC1B2zV,EAAyB,CAAE,WAAY,YACvCC,EAAQ,CACRC,SAAY,SACZrrW,QAAW,kBACX27T,OAAU,QAIdstC,EAAUjlX,EAAEkY,IAAI+sW,GAAS,SAASx6U,GAG9B,OAFAA,EAASu7U,GAAmC,QAAzBv7U,EAAOv0B,cAA0B,QAAUu0B,EAC9DkrD,EAAOyxR,EAAM38U,EAAOv0B,gBAAkB,GAC/B,CAAEzW,KAAO0nX,EAAuBn0W,QAAQy3B,EAAOv0B,gBAAmB,EAAK,UAAYu0B,EAASA,EAAQkrD,KAA8B,SAAxBlrD,EAAOv0B,cAA2B,IAAMy/E,EAC7J,IAEA7hE,EAAUpmB,KAAK1P,EAAMwP,OAAOgjT,EAAU/lR,OAAQw6U,GAClD,EAEA11V,WAAY,SAAS/qB,GACjB,IAAIc,EAAOjI,KACP8oX,EAAY7gX,EAAKd,QAAQ6I,KACzB87I,EAAM9rJ,KAAK+9T,cAAgB91T,EAAKihX,UAAYlpX,KAAK+9T,YAAcp7T,EAAEgN,UAEjEs6W,EAAgB3mX,KAAK8xB,MAAM9xB,KAAKyP,UAAU5L,IAE9Cc,EAAK2E,QAAQmgB,YAAYpsB,EAAM8qC,iBAAiB,YAAa,aAAcxjC,EAAKd,QAAQktB,aAExFtxB,EAAOoE,EAAQmG,SAAUrF,EAAKd,QAAQmG,UACtCvK,EAAOoE,EAAQmG,SAAU28W,EAAc38W,UAEvCrF,EAAKiiX,oBAAsBp+N,EAAIh1H,YAC/B7uB,EAAKkiX,qBAAuBr+N,EAAIv+H,aAEhC6D,EAAOrpB,GAAGmqB,WAAW3nB,KAAKtC,EAAMd,GAChC,IAAIm+R,GAAyC,IAA5Br9R,EAAKd,QAAQm+R,WAoB9B,GAlBAr9R,EAAKmtC,eAEwB,IAAlBjuC,EAAQg3C,OACfl2C,EAAKk2C,MAAMh3C,EAAQg3C,OAGvBl2C,EAAK2E,QAAQmgB,YAAYi6V,GAAK8B,IAC9B7gX,EAAK6/W,cAEL7/W,EAAK0rF,YACL1rF,EAAKylS,aACLzlS,EAAKygX,aACLzgX,EAAK4hX,WAED5hX,EAAKd,QAAQktB,YAA0C,SAA5BpsB,EAAKd,QAAQktB,YACxCpsB,EAAK2E,QAAQyY,SAAS1kB,EAAM8qC,iBAAiB,YAAa,aAAcxjC,EAAKd,QAAQktB,kBAG5D,IAAlBltB,EAAQ6rF,MAAuB,CACtC,IAAIhmF,GAAmC,IAAzB/E,EAAKd,QAAQ6F,QAC3B/E,EAAKmiX,2BACLniX,EAAKogX,SAASlhX,EAAQ6rF,OAAShmF,EACnC,CAEA/E,EAAK4D,QAAQI,IAAI4lC,EAAUyzP,EAAa,GAAK,SACjD,EAEAj7R,OAAQ,CACJwmF,EACAG,EACAD,EACAD,EA9hBO,WACA,WAgiBPq1R,EACAG,EACAF,EAhiBK,SAkiBLC,EACAniS,EACAE,EA/hBW,eAiiBXp5B,GAGJ7jD,QAAS,CACL/E,KAAM,SACNkwF,UAAW,CACPC,KAAM,CACFnrE,QAAS,CAAEqpB,KAAM,CAAE4D,UAAW,MAAQg2U,KAAM,CAAEh2U,UAAW,OACzD/sB,SAAU,KAEdo+B,MAAO,CACHt+B,QAAS,CAAEqpB,KAAM,CAAE4D,UAAW,MAAO7kC,WAAY,CAAEugC,MAAO,KAASs6U,KAAM,CAAEh2U,UAAW,QACtF/sB,SAAU,IACV5Z,MAAM,IAGdywC,MAAO,GACP9pB,WAAY,GACZuzV,QAAS,CAAC,SACV0C,WAAW,EACXt3R,OAAO,EACPhjF,KAAM,OACN2xT,WAAW,EACXt5O,WAAW,EACXk0I,SAAU,GACVk9B,UAAW,GACX64C,SAAU55I,IACVu9J,UAAWv9J,IACXiwN,QAAQ,EACRrjF,YAAY,EACZh4R,SAAU,CAAC,EACXq5C,QAAS,KACT35C,QAAS,KACThB,OAAQ,KACRD,MAAO,KACPG,SAAU,OACVq+W,aAAa,EACbC,aAAa,GAGjBC,UAAW,WACP,OAAO9nX,EAAE8yB,QAAQ,QAAS9yB,EAAEkY,IAAI7a,KAAKmH,QAAQygX,SAAS,SAASxiX,GAAK,OAAOA,EAAEyT,aAAe,MAAO,CACvG,EAEA4vW,gBAAiB,SAAS9jX,GACtB,IACIkmB,EAAOlqB,EAAMkqB,KACHlmB,EAAE2iC,SAEDzc,EAAKM,KAJTnrB,KAIqByqX,cAC5B9lX,EAAEy1B,kBALKp6B,KAMF0qX,QAAO,GAEpB,EAEA9lQ,SAAU,SAASjgH,GACf,IAKImZ,EAAQ47S,EAIRixD,EAAUC,EAAW5wH,EAAGp1P,EATxBqD,EAAOjI,KACPmH,EAAUc,EAAKd,QACf0jB,EAAOlqB,EAAMkqB,KACbyc,EAAU3iC,EAAE2iC,QACZ16B,EAAU3E,EAAK2E,QAEf4xE,EAAW,GACX+rS,EAAcpjX,EAAQojX,YACtBC,EAAcrjX,EAAQqjX,YAGtBljV,GAAWzc,EAAKM,KAAOljB,EAAKwiX,cAC5B9lX,EAAEy1B,kBACFnyB,EAAKyiX,QAAO,IAGZ/lX,EAAE0C,QAAU1C,EAAEg6E,eAAiB12E,EAAKmrF,WAKpCzuF,EAAE0qN,QAAqB,IAAX/nL,GACZr/B,EAAK0W,UAILha,EAAE0qN,QAAqB,IAAX/nL,IACRr/B,EAAKd,QAAQwhX,OACb1gX,EAAK4iX,QAEL5iX,EAAK2gX,OAKTjkX,EAAE0qN,QAAU/nL,GAAWzc,EAAKQ,GACxBm/V,GACAviX,EAAKmtC,UACLntC,EAAK2E,QAAQxC,QAAQ,UACbmgX,IACRtiX,EAAK+hX,WACL/hX,EAAK2E,QAAQxC,QAAQ,UAElBzF,EAAE0qN,QAAU/nL,GAAWzc,EAAKU,OAC9Bi/V,GAAgBD,EAGVA,IACPtiX,EAAKmtC,UACLntC,EAAK2E,QAAQxC,QAAQ,WAJrBnC,EAAK6iX,WACL7iX,EAAK2E,QAAQxC,QAAQ,WAO7B0T,EAASnd,EAAMktB,UAAUjhB,GAErB3E,EAAK81T,cAAgB91T,EAAKihX,YAC1BprW,EAAS7V,EAAKd,QAAQmG,WAGtBnG,EAAQkhF,WAAc1jF,EAAE8qF,SAAY9qF,EAAE0qN,QAAWk7J,IACjDtiX,EAAKkhX,oBACD7hV,GAAWzc,EAAKQ,IAChBvN,EAAOoH,IAAMgiW,GAAUppW,EAAOoH,IAAMs5D,EAAUv2E,EAAKggX,OAAQhgX,EAAKkgX,QAChEzuD,EAAU9sT,EAAQX,IAAI,MAAO6R,EAAOoH,MAC7BoiB,GAAWzc,EAAKU,MACvBzN,EAAOoH,IAAMgiW,GAAUppW,EAAOoH,IAAMs5D,EAAUv2E,EAAKggX,OAAQhgX,EAAKkgX,QAChEzuD,EAAU9sT,EAAQX,IAAI,MAAO6R,EAAOoH,MAC7BoiB,GAAWzc,EAAKO,MACvBtN,EAAO0O,KAAO06V,GAAUppW,EAAO0O,KAAOgyD,EAAUv2E,EAAKigX,QAASjgX,EAAKmgX,SACnE1uD,EAAU9sT,EAAQX,IAAI,OAAQ6R,EAAO0O,OAC9B8a,GAAWzc,EAAKS,QACvBxN,EAAO0O,KAAO06V,GAAUppW,EAAO0O,KAAOgyD,EAAUv2E,EAAKigX,QAASjgX,EAAKmgX,SACnE1uD,EAAU9sT,EAAQX,IAAI,OAAQ6R,EAAO0O,QAIzCrlB,EAAQw6T,WAAah9T,EAAE8qF,UAAY86R,IAAgBC,IAC/CljV,GAAWzc,EAAKQ,IAChBquS,GAAU,EACVkxD,EAAYh+W,EAAQR,cAAgBoyE,GAC7Bl3C,GAAWzc,EAAKU,OACvBmuS,GAAU,EAENkxD,EADA3iX,EAAK81T,cAAgB91T,EAAKihX,UACd7lX,KAAKqT,IAAI9J,EAAQR,cAAgBoyE,EACzCv2E,EAAK81T,YAAY/xT,OAAS8R,EAAOoH,IAAM+hW,GAAMr6W,EAAS,eACtDq6W,GAAMr6W,EAAS,qBAAuBq6W,GAAMr6W,EAAS,mBAE7CA,EAAQR,cAAgBoyE,GAEtCl3C,GAAWzc,EAAKO,MAClBsuS,GAAU,EACVixD,EAAW/9W,EAAQT,aAAeqyE,GAC3Bl3C,GAAWzc,EAAKS,QACvBouS,GAAU,EAENixD,EADA1iX,EAAK81T,cAAgB91T,EAAKihX,UACf7lX,KAAKqT,IAAI9J,EAAQT,aAAeqyE,EACvBv2E,EAAK81T,YAAYhyT,MAAQ+R,EAAO0O,KAChCy6V,GAAMr6W,EAAS,mBAAqBq6W,GAAMr6W,EAAS,qBAE5DA,EAAQT,aAAeqyE,GAItCk7O,IACA1/D,EAAIktH,GAAUyD,EAAUxjX,EAAQo1N,SAAUp1N,EAAQmrS,UAClD1tS,EAAIsiX,GAAU0D,EAAWzjX,EAAQsyP,UAAWtyP,EAAQ8uT,WAE/CntT,MAAMkxP,KACPptP,EAAQT,WAAW6tP,GACnB/xP,EAAKd,QAAQ4E,MAAQiuP,EAAI,MAExBlxP,MAAMlE,KACPgI,EAAQR,YAAYxH,GACpBqD,EAAKd,QAAQ6E,OAASpH,EAAI,MAG9BqD,EAAKkiB,WAITuvS,GACA/0T,EAAEwE,iBAEV,EAEAk/W,SAAU,SAASr7W,GACf,IAAI8/J,EAAU9sK,KAAK+9T,YAAc/9T,KAAK+9T,YAAYxoR,SAASmwU,GAAY1lX,KAAKkM,SAASqpC,SAASmwU,GAC1F94W,EAAU5M,KAAK4M,QACfS,EAAUL,EAAU,cAAgB,OACpCgtC,EAASxgC,SAAS5M,EAAQX,IAAIkhT,GAAS,IAAM,EAiBjD,OAfKrgJ,EAAQtlK,SACTslK,EAAUnqK,EAAE,8BAGhBmqK,EACKx6F,aAAa1lE,EAAQ,IACrBX,IAAI,CACD+tC,OAAQA,EACR3sC,QAASA,IAGbrN,KAAKmH,QAAQ6rF,MAAM+3R,gBAAkB/qX,KAAK+9T,aAC1C/9T,KAAKgrX,yBAGFl+M,CACX,EAEAm+M,eAAgB,SAAS3yR,GAErB,MAAO,CACHlzF,EAAK,SACLtE,OAAU,WACV,kBAAmB,WACnB,iBAAkB,UAClB,kBAAmB,UACnB8nX,IAAO,MACPiC,MAAS,SARG,wBAAwBjyW,KAAK0/E,EAAK,GAAGjrE,WAAW,GASpD5qB,QAAQ,kBAAmB,IAC3C,EAEA+lX,qBAAsB,SAAS7jX,GAC3B,IAAI3E,KAAKozF,SAAT,CAGA,IAAIkF,EAAO31F,EAAEgC,EAAE0C,QAAQwF,QAAQ,6BAA6BspB,KAAK,uBAC7DiX,EAASptC,KAAKirX,eAAe3yR,GAEjC,OAAIlrD,GACAzoC,EAAEwE,iBACFnJ,KAAKotC,MACE,QAHX,CAJA,CASJ,EAEA89U,QAAS,WAML,IALA,IAEIC,EAFAljX,EAAOjI,KACPorX,EAAiBzoX,EAAE0iX,EAAU9zR,GAE7B85R,EAAS,GAEJ9jX,EAAI,EAAGA,EAAI6jX,EAAe5jX,OAAQD,GAAK,GAC5C4jX,EAAiBljX,EAAKqjX,QAAQ3oX,EAAEyoX,EAAe7jX,OAG3C4jX,EAAehkX,SACfgkX,EAAehkX,QAAQ6rF,OACvBm4R,EAAehkX,QAAQ6F,SACvBm+W,EAAehkX,QAAQ+E,WAAajE,EAAKd,QAAQ+E,YAC/Ci/W,EAAeptD,aAAgB91T,EAAK81T,aAAeotD,EAAeptD,YAAY,KAAO91T,EAAK81T,YAAY,KACpGstD,EAAO1pX,KAAKwpX,EAAev+W,QAAQ,IAU/C,OANAy+W,EAAOrvW,MAAK,SAAS9W,EAAG+W,GACpB,OAAO/W,EAAEiI,MAAM6sC,OAAS/9B,EAAE9O,MAAM6sC,MACpC,IAEA/xC,EAAO,KAEAtF,EAAE0oX,EACb,EAEAC,QAAS,SAASz/W,GACd,IAAI86C,EAAU96C,EAAQ0pC,SAASiwU,GAC3BjyV,EAAS5yB,EAAM41B,eAAeowB,GAElC,OAAIpzB,GAIG3wB,CACX,EAEA27E,OAAQ,WACJ,IAMIgtS,EAAQC,EANRvjX,EAAOjI,KACPsN,EAAWrF,EAAKd,QAAQmG,SACxBV,EAAU3E,EAAK2E,QACf6+W,EAAiB9oX,EAAE7B,QACnBg2B,EAAY,EACZvJ,EAAa,EAGjB,OAAItlB,EAAKd,QAAQojX,cAIbtiX,EAAKd,QAAQwhX,SAAW1gX,EAAKihX,WAC7BjhX,EAAK2gX,MAGJ3gX,EAAKd,QAAQwhX,SACd7xV,EAAY20V,EAAe30V,YAC3BvJ,EAAak+V,EAAel+V,cAG5BvtB,KAAK+9T,cAAgB91T,EAAKd,QAAQwhX,QAClC4C,EAASvrX,KAAKioX,QAAUjoX,KAAKmoX,OAASnoX,KAAKioX,QAAU,EACrDuD,EAAUxrX,KAAKkoX,SAAWloX,KAAKooX,QAAUpoX,KAAKkoX,SAAW,IAEzDjgX,EAAKyjX,mBAAoB,EACzBF,EAAUj+V,EAAalqB,KAAK8V,IAAI,GAAIsyW,EAAe1/W,QAAUa,EAAQT,cAAgB,GACrFo/W,EAASz0V,EAAYzzB,KAAK8V,IAAI,GAAIsyW,EAAez/W,SAAWY,EAAQR,cAAgB66W,GAAMr6W,EAAS,eAAiB,IAGxHA,EAAQX,IAAI,CACRugB,KAAMg/V,EACNtmW,IAAKqmW,IAGTj+W,EAAS4X,IAAMqmW,EACfj+W,EAASkf,KAAOg/V,GA3BLvjX,CA8Bf,EAEAk2C,MAAO,SAASA,GACZ,IACIz1C,EADAT,EAAOjI,KAEPq3O,GAAU,EACVzqO,EAAU3E,EAAK2E,QACf++W,EAAW/+W,EAAQ2oC,SAASgwU,GAC5BqG,EAAeD,EAASp2U,SAAS+vU,GAErC,OAAKh+W,UAAUE,QAIX7E,EAAEgF,cAAcw2C,IAChBz1C,OAA8B,IAAfy1C,EAAMrd,KAAuBqd,EAAMrd,KAAO,GACzDu2M,GAA4B,IAAlBl5L,EAAMk5L,SAEhB3uO,EAAQy1C,GAGE,IAAVz1C,GACAkE,EAAQyY,SAAS,sBACjBzY,EAAQX,IAAI,cAAe,GAC3B0/W,EAASt/W,UAEJs/W,EAASnkX,OAOVokX,EAAav7W,KAAKgnO,EAAU12O,EAAM4tB,WAAW7lB,GAASA,IANtDkE,EAAQwhF,QAAQ+kO,EAAU04D,SAAS,CAC/B1tU,MAAOk5L,EAAU12O,EAAM4tB,WAAW7lB,GAASA,KAE/CT,EAAK4hX,WACL8B,EAAW/+W,EAAQ2oC,SAASgwU,IAMpCt9W,EAAKd,QAAQg3C,MAAQz1C,EAEdT,GA5BI2jX,EAAav7W,MA6B5B,EAEAs2C,QAAS,SAASt2C,EAAMjC,GACpB,IAAIu4C,EAAU3mD,KAAK4M,QAAQ2oC,SAASiwU,GAChCsG,EAAkBnlU,EAAQpR,SAAS,wBAIvC,OAFAoR,EAAUmlU,EAAgB,GAAKA,EAAkBnlU,EAE5CmwE,GAAQzmH,IAIb1P,EAAMqB,QAAQhC,KAAK6L,QAAQ0pC,YAE3BoR,EAAQiG,QAAQv8C,KAAKA,GAEdrQ,MAPI2mD,EAAQt2C,MAQvB,EAEAkiF,KAAM,WACF,IAKIu6E,EAASi/M,EALT9jX,EAAOjI,KACP4M,EAAU3E,EAAK2E,QACfzF,EAAUc,EAAKd,QACf6kX,EAAchsX,KAAKspX,kBAAkB,QACrC7vS,EAAiB7sE,EAAQ2oC,SAASiwU,GAGlC15N,EADqB9rJ,KAAK+9T,cAAgB91T,EAAKihX,UACpBlpX,KAAK+9T,YAAcp7T,EAAEgN,UAEpD,IAAK1H,EAAKmC,QAAQymF,GAAO,CAerB,GAdI5oF,EAAKmrF,UACLxmF,EAAQyb,WAAU,GAAM,GAG5BpgB,EAAKmrF,UAAW,EAEhBnrF,EAAKi3R,UAED/3R,EAAQmjX,WACRriX,EAAK2E,QAAQxC,QAAQ,SAGzBjD,EAAQ6F,SAAU,EAEd7F,EAAQ6rF,MAAO,CAMf,GALA+4R,IAAuB9jX,EAAKijX,UAAU1jX,QACtCslK,EAAU7kK,EAAKogX,SAAS0D,IAEhB1jW,WAAU,GAAM,GAEpB2jW,EAAY1kW,UAAY3mB,EAAMymB,QAAQ6kW,OAASF,EAAoB,CACnE,IAAIG,EAAYvrX,EAAM6pB,GAAGsiJ,GAASq/M,SAClCD,EAAU5kW,SAAS0kW,EAAY1kW,UAAY,GAC3C4kW,EAAU5zU,SAAS,IACnB4zU,EAAUh1U,MACd,MACI41H,EAAQ7gK,IAAI,UAAW,IAG3B6gK,EAAQr/J,OAER9K,EAAE7B,QAAQ+oB,GAAG,QAAUu7V,GAAU,WACzBx4W,EAAQwB,KAAK,aAAezL,EAAEgN,SAASgK,eAAe9M,QAAQD,GAASpF,QACxES,EAAK2E,QAAQxC,QAAQ,QAE5B,GACJ,CAEKwC,EAAQK,GAAGskF,KACZ9X,EAAextE,IAAI4lC,EAAUH,GAE7BzpC,EAAK2E,QAAQupB,KAAKywV,GAA0BvhW,SAAS,iBAErDzY,EAAQX,IAAI,CAAEoB,QAAS,gBACvBT,EAAQyb,YAAYI,aAAa,CAC7BrB,QAAS4kW,EAAY5kW,QACrBE,SAAU0kW,EAAY1kW,SACtBC,SAAUvnB,KAAKi7Q,UAAUzxQ,KAAKxJ,QAG1C,CAYA,OAVImH,EAAQojX,cACRtiX,EAAKiiX,oBAAsBp+N,EAAIh1H,YAC/B7uB,EAAKkiX,qBAAuBr+N,EAAIv+H,aAChCtlB,EAAK+iX,0BAGLhrX,KAAKmH,QAAQwhX,SAAW3oX,KAAKkpX,WAC7BlpX,KAAK4oX,MAGF3gX,CACX,EAEAgzQ,UAAW,WACP,IAAIqqB,GAAyC,IAA5BtlS,KAAKmH,QAAQm+R,WAE1BtlS,KAAKmH,QAAQmjX,WACbtqX,KAAK4M,QAAQxC,QAAQ,SAGzBpK,KAAK6L,QAAQI,IAAI4lC,EAAUyzP,EAAa,GAAK,UAC7C3kS,EAAMwpB,OAAOnqB,KAAK6L,QAAQ0pC,YAE1Bv1C,KAAKoK,QAAQ4mF,EACjB,EAEAo7R,eAAgB,SAASC,GACrB,IAAIhB,EAASrrX,KAAKkrX,UACd/jX,EAAUnH,KAAKmH,QACfmlX,EAAcnlX,EAAQ6rF,QAAUq4R,EAAO7jX,OACvC+kX,EAAcvsX,KAAKspX,kBAAkB,SAEzC,GAAIgD,EAAa,CACb,IAAKD,GAAqBE,EAAYjlW,UAAY3mB,EAAMymB,QAAQ6kW,KAAM,CAClE,IAAIC,EAAYvrX,EAAM6pB,GAAGrjB,EAAQ6rF,MAAQhzF,KAAKqoX,UAAS,GAAQ1lX,EAAEC,IAAcq7O,UAC/EiuI,EAAU5kW,SAASilW,EAAYjlW,UAAY,GAC3C4kW,EAAU9zU,WAAW,IACrB8zU,EAAUh1U,MACd,MACIl3C,KAAKqoX,UAAS,GAAOh8W,SAErBlF,EAAQ6rF,MAAM+3R,eACd/qX,KAAKoqX,0BAEb,MAAWiB,EAAO7jX,SACdxH,KAAKsrX,QAAQD,EAAO/oV,QAAQ+lV,UAAS,GAEjClhX,EAAQ6rF,MAAM+3R,eACd/qX,KAAKgrX,yBAGjB,EAEAN,OAAQ,SAAS8B,GACb,IAOIjgB,EAPAtkW,EAAOjI,KACP4M,EAAU3E,EAAK2E,QACfzF,EAAUc,EAAKd,QACf6kX,EAAchsX,KAAKspX,kBAAkB,QACrCiD,EAAcvsX,KAAKspX,kBAAkB,SAErCx9N,EADqB9rJ,KAAK+9T,cAAgB91T,EAAKihX,UACpBlpX,KAAK+9T,YAAcp7T,EAAEgN,UAGhD1H,EAAKmrF,WAITm5Q,EAAmBtkW,EAAKmC,QAAQ0mF,EAAO,CAAE0oP,eAAgBgzC,IACzDvkX,EAAKmrF,UAAYm5Q,EAEb3/V,EAAQK,GAAGskF,KAAag7Q,IACxBplW,EAAQ6F,SAAU,EAElBrK,EAAE0iX,GAASriX,MAAK,SAASuE,EAAGsE,GACxB,IAAI4tE,EAAiB92E,EAAEkJ,GAAS0pC,SAASiwU,GAGrC35W,GAAWe,GAAW6sE,EAAetjD,KAAK,MAAQwtF,GAAen8G,OAAS,GAC1EiyE,EAAelkC,SAASmwU,GAAUr5W,QAE1C,IAEArM,KAAKosX,iBAGLnkX,EAAK2E,QAAQupB,KAAKywV,GAA0B75V,YAAY,iBAExDngB,EAAQyb,YAAYI,aAAa,CAC7BrB,QAASmlW,EAAYnlW,SAAW4kW,EAAY5kW,QAC5C/Q,SAAiC,IAAxBk2W,EAAYl2W,QACrBiR,SAAUilW,EAAYjlW,SACtBC,SAAUvnB,KAAKm7Q,YAAY3xQ,KAAKxJ,QAEpC2C,EAAE7B,QAAQs4B,IAAIgsV,IAGdn9W,EAAKd,QAAQojX,cACbtiX,EAAKmiX,2BACDniX,EAAKiiX,qBAAuBjiX,EAAKiiX,oBAAsB,GACvDp+N,EAAIh1H,UAAU7uB,EAAKiiX,qBAEnBjiX,EAAKkiX,sBAAwBliX,EAAKkiX,qBAAuB,GACzDr+N,EAAIv+H,WAAWtlB,EAAKkiX,uBAIxBliX,EAAKd,QAAQ2/G,QACb7+G,EAAK2E,QAAQxC,QAAQ,QAE7B,EAEA+wQ,YAAa,WACT,IAAIlzQ,EAAOjI,KASX,GAPAiI,EAAK2E,QACAmgB,YAAYi5V,GACZt4W,OACAzB,IAAI,UAAW,IAEpBhE,EAAKmC,QAAQ2mF,GAET9oF,EAAKd,QAAQ6rF,MAAO,CACpB,IAAIy5R,EAAYxkX,EAAKqjX,QAAQrjX,EAAKijX,UAAU5oV,QACxCmqV,GACAA,EAAUvtF,SAElB,CACJ,EAEAx5O,MAAO,WAEH,OADA1lD,KAAK0qX,QAAO,GACL1qX,IACX,EAEA0sX,YAAa,SAAS7gX,GAClB,OAAOlJ,EAAEkJ,GAASoB,GAAG,GAAG25W,8JAC5B,EAEA+F,aAAc,SAAStlX,GACnB,IAAIo1M,EAAS9iM,IACT9N,EAAU7L,KAAK4M,QAEnB,OAAO5M,KAAKmH,QAAQmjX,YACf3nX,EAAE85M,GAAQxvM,GAAGpB,KACb7L,KAAK0sX,YAAYrlX,MAChBwE,EAAQsqB,KAAKsmL,GAAQj1M,SAAWqE,EAAQsqB,KAAK9uB,GAAQG,OAC/D,EAEA03R,QAAS,SAASv6R,EAAGioX,GACjB,IAAI3kX,EAAOjI,KACP4M,EAAU3E,EAAK2E,QACfigX,EAAgBjgX,EAAQ,GACxBkgX,EAAqB7kX,EAAK81T,cAAgB91T,EAAKihX,UAC/C6D,EAAgB/sX,KAAKspX,kBAAkB,QACvCtvU,GAAUptC,EAAQX,IAAIkhT,GACtB6/D,EAAiBhzU,EACjB3yC,EAAU1C,GAAKA,EAAE0C,QAAW,KA2BhC,GAzBA1E,EAAE0iX,GAASriX,MAAK,SAASuE,EAAGsE,GACxB,IAAIohX,EAAetqX,EAAEkJ,GACjBqhX,EAAYD,EAAahhX,IAAIkhT,GAC7B1zO,EAAiBwzS,EAAa13U,SAASiwU,GAEtC18W,MAAMokX,KACPlzU,EAAS32C,KAAK8V,KAAK+zW,EAAWlzU,IAGlCptC,EAAQwB,KAAK,UAAWvC,GAAWghX,GAI/BhhX,GAAWghX,GACXpzS,EAAetjD,KAAK,IAAMwtF,GAAen8G,SACxCiyE,EAAetjD,KAAKuvV,GAAUl+W,QAC/BiyE,EAAet/B,OAAOg5Q,EAAUrmJ,QAExC,MAEKlgK,EAAQ,GAAGO,MAAM6sC,QAAUgzU,EAAiBhzU,IAC7CptC,EAAQX,IAAIkhT,EAAQnzQ,EAAS,GAEjC/xC,EAAK4D,QAAQsqB,KAAK,gBAAgB9pB,SAE9BpE,EAAK0kX,aAAatlX,GAAS,CACtBulX,GACD1zV,YAAW,WACPjxB,EAAK2E,QAAQm5B,OACjB,GAAGgnV,EAAgBA,EAAczlW,SAAW,GAGhD,IAAIwP,EAAYg2V,EAAqB7kX,EAAK81T,YAAYjnS,YAAcn0B,EAAE7B,QAAQg2B,YAC1Eq2V,EAAY3zW,SAAS5M,EAAQU,WAAW4X,IAAK,KAE5Cjd,EAAKd,QAAQwhX,QAAUwE,EAAY,GAAKA,EAAYr2V,IACjDA,EAAY,EACZn0B,EAAE7B,QAAQg2B,UAAUq2V,GAEpBvgX,EAAQX,IAAI,MAAO6qB,GAG/B,CAIA,OAFAlqB,EAAU,KAEH3E,CACX,EAEAuhX,mBAAoB,WAChB,OAAIxpX,KAAKozF,SACEpzF,KAGJA,KAAKA,KAAKmH,QAAQojX,YAAc,UAAY,aACvD,EAEAn1U,QAAS,WACL,IAAIntC,EAAOjI,KACPmH,EAAUc,EAAKd,QACfsyP,EAAYtyP,EAAQsyP,UACpB2zH,EAAiBnlX,EAAKmlX,eAEtB32V,EAAYxuB,EAAK81T,cAAgB91T,EAAKihX,UAAYjhX,EAAK81T,YAAcp7T,EAAEgN,UAE3E,OAAKxI,EAAQojX,aAAgBpjX,EAAQqjX,aAIjC/wH,GAAaA,GAAa/gG,KAC1BzwJ,EAAK2E,QAAQX,IAAI,aAAcwtP,GAG/B2zH,IAAmBjmX,EAAQojX,cAC3B6C,EAAephX,OAASk7W,GAAUkG,EAAephX,OAAQ/D,EAAKd,QAAQsyP,UAAWxxP,EAAKd,QAAQ8uT,WAE1E9uT,EAAQmG,SAAS4X,IAAM1L,SAAS4zW,EAAephX,OAAQ,IAAM/D,EAAKkgX,SAGlFhhX,EAAQmG,SAAS4X,IAAMgiW,GAAU//W,EAAQmG,SAAS4X,IAAKjd,EAAKggX,OAAQhgX,EAAKkgX,OAAS3uW,SAAS4zW,EAAephX,OAAQ,KAElHjJ,EAAOqqX,EAAgB,CACnB5gW,KAAMrlB,EAAQmG,SAASkf,KACvBtH,IAAK/d,EAAQmG,SAAS4X,QAKlCjd,EAAK2E,QACAX,IAAI,CACDqB,SAAUnG,EAAQwhX,OAAS,QAAU,WACrCn8V,KAAM4gW,EAAe5gW,KACrBtH,IAAKkoW,EAAeloW,IACpBnZ,MAAOqhX,EAAerhX,MACtBC,OAAQohX,EAAephX,SAE1B+gB,YAAYg5V,GACZh5V,YAAY44V,GACZxvV,KAAK,sCAAsC1oB,OAAO9B,MAClDwqB,KAAK,qFAAqFxpB,SAASN,SAASV,MAAMA,MAClHwqB,KAAKqwV,GAAgC75W,SAASc,OAAO9B,MAAMA,MAC3DwqB,KAAKwwV,GAA4Bh6W,SAASc,OAE3CtG,EAAQojX,YACRtiX,EAAK2E,QAAQupB,KAAK,+BAA+BxpB,SAASvC,QAAQ,SAC3DjD,EAAQqjX,aACfviX,EAAK2E,QAAQupB,KAAK,iDAAiDxpB,SAASvC,QAAQ,SAGxFnC,EAAKd,QAAQ4E,MAAQqhX,EAAerhX,MACpC9D,EAAKd,QAAQ6E,OAASohX,EAAephX,OAEhC/D,EAAKd,QAAQ6rF,MAAM+3R,eACpB9iX,EAAKmiX,2BAGLniX,EAAKiiX,qBAAuBjiX,EAAKiiX,oBAAsB,GACvDzzV,EAAUK,UAAU7uB,EAAKiiX,qBAEzBjiX,EAAKkiX,sBAAwBliX,EAAKkiX,qBAAuB,GACzD1zV,EAAUlJ,WAAWtlB,EAAKkiX,sBAG9BhjX,EAAQojX,YAAcpjX,EAAQqjX,aAAc,EAE5CviX,EAAK2E,QAAQqlB,WAAW,oBAExBhqB,EAAKkiB,SAELliB,EAAKmC,QAAQk8W,GAENr+W,GAjEIA,CAkEf,EAEAolX,cAAe,SAASC,EAAU1jW,GAC9B,IAAI3hB,EAAOjI,KACP4M,EAAU3E,EAAK2E,QACfO,EAAQP,EAAQ,GAAGO,MACnBhG,EAAUc,EAAKd,QAEnB,OAAIA,EAAQojX,aAAepjX,EAAQqjX,cAInCviX,EAAKmlX,eAAiB,CAClBrhX,MAAOoB,EAAMpB,MACbC,OAAQmB,EAAMnB,QAGlBY,EACK2oC,SAASkwU,GAAsB/3W,OAAO/B,MACtC4pC,SAASgwU,GAAiBpvV,KAAKqwV,GAAgC75W,SAASe,OACxEsqB,GAAG,GAAGwuJ,OAAO2sI,EAAU/lR,OAAO,CAAEhrC,KAAM,oBAE3CwnB,EAASrf,KAAKtC,GAEdA,EAAK2E,QAAQ2oC,SAASgwU,GAAiBpvV,KAAKwwV,GAA4Bh6W,SAASoc,OAAoB,aAAbukW,GAExFrlX,EAAKmC,QAAQkjX,GAEb1gX,EAAQupB,KAAK,+CAA+CxpB,SAASvC,QAAQ,UAnBlEnC,CAsBf,EAEA+hX,SAAU,WA+BN,OA9BAhqX,KAAKqtX,cAAc,YAAY,WAC3B,IAAIplX,EAAOjI,KACP4M,EAAU3E,EAAK2E,QACfkgX,EAAqB9sX,KAAK+9T,cAAgB91T,EAAKihX,UAC/C57W,EAAWV,EAAQU,WACnBw+I,EAAMnpJ,EAAEgN,UAEZ5M,EAAOkF,EAAKmlX,eAAgB,CACxB5gW,KAAMlf,EAASkf,MAAQsgW,EAAqB9sX,KAAK+9T,YAAYxwS,aAAe,GAC5ErI,IAAK5X,EAAS4X,KAAO4nW,EAAqB9sX,KAAK+9T,YAAYjnS,YAAc,KAG7E92B,KAAKkqX,oBAAsB4C,EAAqB9sX,KAAK+9T,YAAYjnS,YAAcg1H,EAAIh1H,YACnF92B,KAAKmqX,qBAAuB2C,EAAqB9sX,KAAK+9T,YAAYxwS,aAAeu+H,EAAIv+H,aAErFtlB,EAAK+iX,yBAELp+W,EACKX,IAAI,CACDiZ,IAAK4nW,EAAqB9sX,KAAK+9T,YAAYjnS,YAAc,EACzDtK,KAAMsgW,EAAqB9sX,KAAK+9T,YAAYxwS,aAAe,EAC3DjgB,SAAUw/W,EAAqB,WAAa,UAE/CznW,SAAS0gW,GAEd99W,EAAKd,QAAQojX,aAAc,EAE3BtiX,EAAK4gX,mBACT,IAEO7oX,IACX,EAEAgrX,uBAAwB,WACpB,IAAI/iX,EAAOjI,KACP+9T,EAAc91T,EAAK81T,YAEvB,GAAIA,IAAgB91T,EAAKihX,UAOrB,OANAjhX,EAAKslX,mBAAmBxvD,GACxBA,EAAY9xT,IAAI4lC,EAAUH,QAC1BzpC,EAAK2E,QAAQX,IAAI,CACbqmS,SAAUyrB,EAAYv9S,aACtBy1S,UAAW8H,EAAYp9S,gBAK/B,IAAI6sW,EAAQ7qX,EAAE,QACdsF,EAAKslX,mBAAmBC,GACxBA,EAAMvhX,IAAI4lC,EAAUH,GAEpB,IAAI+7U,EAAQ9qX,EAAE,QACdsF,EAAKslX,mBAAmBE,GACxBA,EAAMxhX,IAAI4lC,EAAUH,EACxB,EAEA04U,yBAA0B,WACtB,IAAIniX,EAAOjI,KACP+9T,EAAc91T,EAAK81T,YAEvB,GAAIA,IAAgB91T,EAAKihX,UAMrB,OALAjhX,EAAKylX,qBAAqB3vD,QAC1B91T,EAAK2E,QAAQX,IAAI,CACbqmS,SAAUyrB,EAAYhyT,MACtBkqT,UAAW8H,EAAY/xT,SAK/B/D,EAAKylX,qBAAqB/qX,EAAEgN,SAASqP,OACrC/W,EAAKylX,qBAAqB/qX,EAAE,QAChC,EAEA4qX,mBAAoB,SAASI,GACzB,IAAI3tX,KAAK4tX,kBAAkBD,GAA3B,CAIA,IAAIE,EAAeF,EAAS19V,IAAI,GAAG9iB,MAAMmgB,SAEb,iBAAjBugW,GACPF,EAASv/W,KAAKm4W,EAAqBsH,EALvC,CAOJ,EAEAD,kBAAmB,SAASD,GACxB,MAAqD,iBAAvCA,EAASv/W,KAAKm4W,EAChC,EAEAmH,qBAAsB,SAASC,GAC3B,IAAIE,EAAeF,EAASv/W,KAAKm4W,GAEZ,OAAjBsH,GAAyBA,IAAiBjrX,GAC1C+qX,EAAS1hX,IAAI4lC,EAAUg8U,GACvBF,EAAS96V,WAAW0zV,IAEpBoH,EAAS1hX,IAAI4lC,EAAU,GAE/B,EAEA04U,YAAa,WACT,OAAOvqX,KAAKmH,QAAQojX,WACxB,EAEAO,SAAU,WAmBN,OAlBA9qX,KAAKqtX,cAAc,YAAY,WAC3B,IAAIplX,EAAOjI,KAEXiI,EAAK2E,QAAQX,IAAI,CACbD,OAAQ,GACRytP,UAAW,KAGfxxP,EAAK4D,QAAQ6B,OAEbzF,EAAKd,QAAQqjX,aAAc,CAC/B,IAEAxqX,KAAK4M,QAAQgX,KAAK,mBAAoB5jB,KAAK6L,QAAQ+X,KAAK,qBACxD5jB,KAAK4M,QAAQyY,SAASsgW,GAEtB3lX,KAAKmpX,oBAEEnpX,IACX,EAEAwqX,YAAa,WACT,OAAOxqX,KAAKmH,QAAQqjX,WACxB,EAEA5B,IAAK,WACD,IAAI3gX,EAAOjI,KACP8tX,EAAMnrX,EAAE7B,QACR8L,EAAU3E,EAAK2E,QACfzF,EAAUc,EAAKd,QACfmG,EAAWnG,EAAQmG,SACnB4X,EAAMllB,KAAK+9T,YAAcqpD,GAAYx6W,EAAQ,IAAIsY,IAAM+hW,GAAMjnX,KAAK+9T,YAAa,kBAAoBkpD,GAAMr6W,EAAS,OAClH4f,EAAOxsB,KAAK+9T,YAAcqpD,GAAYx6W,EAAQ,IAAI4f,KAAOy6V,GAAMjnX,KAAK+9T,YAAa,mBAAqBkpD,GAAMr6W,EAAS,QAEzH,IAAK3E,EAAKd,QAAQojX,YAAa,CAC3Bj9W,EAAS4X,IAAMA,EACf5X,EAASkf,KAAOA,GAEZvkB,EAAKyjX,mBAAuB1rX,KAAK+9T,aAAoD,UAArC/9T,KAAK+9T,YAAY9xT,IAAI,cAErEqB,EAAS4X,KAAO4oW,EAAIh3V,YACpBxpB,EAASkf,MAAQshW,EAAIvgW,aACrBtlB,EAAKyjX,mBAAoB,GAG7B9+W,EAAQX,IAAIlJ,EAAOuK,EAAU,CAAEA,SAAU,WACzC,IAAI+pG,EAAUzqG,EAAQ2oC,SAASgwU,GAAiBpvV,KAAKswV,GAAuBzuV,GAAG,GAC3Eq/E,EAAQ7vG,OAAS,GACjB7G,EAAM4pB,GAAG+tE,KAAK+e,EAAS,CAAE/e,KAAM,UAGnCrwF,EAAKihX,WAAY,EACjBjhX,EAAKd,QAAQwhX,QAAS,EAElB3oX,KAAK+9T,cACL52T,EAAQmrS,SAAWnrS,EAAQ8uT,UAAYv9J,IACvC9rJ,EAAQX,IAAI,CACRqmS,SAAU,GACV2jB,UAAW,KAGvB,CACJ,EAEA40D,MAAO,WACH,IAAI5iX,EAAOjI,KACP8tX,EAAMnrX,EAAE7B,QACR8L,EAAU3E,EAAK2E,QACfzF,EAAUc,EAAKd,QACfmG,EAAWrF,EAAKd,QAAQmG,SACxBywT,EAAc91T,EAAK81T,YACnB74S,EAAM1L,SAAS5M,EAAQX,IAAI,OAAQ,IAAM6hX,EAAIh3V,YAC7CtK,EAAOhT,SAAS5M,EAAQX,IAAI,QAAS,IAAM6hX,EAAIvgW,aAEnD,IAAKtlB,EAAKd,QAAQojX,YAAa,CAC3BtiX,EAAKihX,WAAY,EACjBjhX,EAAKyjX,mBAAoB,EACzBzjX,EAAKd,QAAQwhX,QAAS,EAElB5qD,IACA91T,EAAKkhX,oBAELhiX,EAAQmrS,SAAWjvS,KAAKqT,IAAIqnT,EAAYhyT,MAAO5E,EAAQmrS,UACvDnrS,EAAQ8uT,UAAY5yT,KAAKqT,IAAIqnT,EAAY/xT,OAASi7W,GAAMr6W,EAAS,eAAgBzF,EAAQ8uT,WAEzFrpT,EAAQX,IAAI,CACRqmS,SAAUnrS,EAAQmrS,SAClB2jB,UAAW9uT,EAAQ8uT,YAInB/wS,EADAA,EAAM64S,EAAYzwT,SAAS4X,IACrBjd,EAAKggX,OACJ/iW,EAAM64S,EAAYzwT,SAAS4X,IAAM64S,EAAY/xT,OAC9C/D,EAAKkgX,OAELjjW,EAAM64S,EAAYjnS,aAAeinS,EAAYzwT,SAAS4X,IAAM+hW,GAAMlpD,EAAa,qBAIrFvxS,EADAA,EAAOuxS,EAAYzwT,SAASkf,KACrBvkB,EAAKigX,QACL17V,EAAOuxS,EAAYzwT,SAASkf,KAAOuxS,EAAYhyT,MAC/C9D,EAAKmgX,QAEL57V,EAAOuxS,EAAYxwS,cAAgBwwS,EAAYzwT,SAASkf,KAAOy6V,GAAMlpD,EAAa,uBAKjGzwT,EAAS4X,IAAMgiW,GAAUhiW,EAAKjd,EAAKggX,OAAQhgX,EAAKkgX,QAChD76W,EAASkf,KAAO06V,GAAU16V,EAAMvkB,EAAKigX,QAASjgX,EAAKmgX,SAEnDx7W,EAAQX,IAAIlJ,EAAOuK,EAAU,CAAEA,SAAU,MACzC,IAAI+pG,EAAUzqG,EAAQ2oC,SAASgwU,GAAiBpvV,KAAKuwV,GAAyB1uV,GAAG,GAC7Eq/E,EAAQ7vG,OAAS,GACjB7G,EAAM4pB,GAAG+tE,KAAK+e,EAAS,CAAE/e,KAAM,OAEvC,CACJ,EAEAuwR,kBAAmB,WACf,IAKI7uH,EAAGp1P,EALHqD,EAAOjI,KACP4M,EAAU3E,EAAK2E,QACfmhX,EAAMprX,EAAE7B,QACR8jB,EAAYjkB,EAAM4C,QAAQqhB,YAC1BmkW,EAAgD,eAA7Bn8W,EAAQX,IAAI,cAGnC,GAAKhE,EAAKd,QAAQojX,YAAlB,CAIA,IAAIvB,EAAgBD,EAAmB9B,GAAMr6W,EAAS,qBAAuBq6W,GAAMr6W,EAAS,sBAAwB,EAChHq8W,EAAgBF,EAAmB9B,GAAMr6W,EAAS,oBAAsBq6W,GAAMr6W,EAAS,uBAAyB,EAChHgtH,EAAamvP,EAAmB9B,GAAMr6W,EAAS,eAAiB,EAEhE3E,EAAK81T,cAAgB91T,EAAKihX,WAC1BlvH,EAAI/xP,EAAK81T,YAAYv9S,aAAewoW,EACpCpkX,EAAIqD,EAAK81T,YAAYp9S,eAAiBsoW,EAAgBrvP,KAEtDogI,EAAI+zH,EAAIhiX,QAAU6Y,EAAYokW,EAC9BpkX,EAAImpX,EAAI/hX,SAAW4Y,GAAaqkW,EAAgBrvP,IAGpDhtH,EAAQX,IAAI,CACRF,MAAOiuP,EACPhuP,OAAQpH,IAEZqD,EAAKd,QAAQ4E,MAAQiuP,EACrB/xP,EAAKd,QAAQ6E,OAASpH,EAEtBqD,EAAKkiB,QArBL,CAsBJ,EAEAxL,QAAS,SAASxX,GACd,IAGI2/G,EACAE,EACAh4F,EALA/mB,EAAOjI,KACP+0N,EAAc9sN,EAAKd,QACnB0E,EAAUlJ,EAAEsF,EAAK4D,SAiDrB,OA5CKlE,EAAcR,KACfA,EAAU,CAAE6nB,IAAK7nB,IAGrBA,EAAUpE,EAAOgyN,EAAYpuK,QAASx/C,GAEtC6/G,EAAa8P,GAAQi+F,EAAYjuG,QAAUiuG,EAAYjuG,OAAS3/G,EAAQ2/G,QAExE93F,EAAM7nB,EAAQ6nB,MAGL8nG,GAAQ9P,KACTA,GAAcj4F,GAAWC,IAGxBg4F,IAIDF,EAASj7G,EAAQsqB,KAAK,IAAMwtF,GAAe,IAIvCmD,EAAO9/G,IAAMgoB,GAAO83F,EAAO9/G,IAG3B6E,EAAQwE,KAAK8iT,EAAU66D,aAAajrX,EAAO,CAAC,EAAGgyN,EAAa,CAAEpuK,QAASx/C,MAG3E0E,EAAQsqB,KAAK,IAAMwtF,GACdvqF,IAAI,OAASy4D,GACbhoE,GAAG,OAASgoE,EAAI7xF,KAAKiuX,gBAAgBzkX,KAAKxJ,QAd/CiI,EAAKg/G,aAAa9/G,KAiBlBA,EAAQiJ,UAERnI,EAAK0+C,QAAQv2C,EAASjJ,EAAQiJ,SAAjBA,CAA2B,CAAC,IAG7CnI,EAAKmC,QAAQ+7W,IAGjBt6W,EAAQ+c,YAAY,2BAA4Bo+F,GAEzC/+G,CACX,EAEAgmX,gBAAiB,WACbjuX,KAAKoK,QAAQ+7W,EACjB,EAEA+H,cAAe,WACX5zV,aAAat6B,KAAKmuX,qBAClBnuX,KAAK4M,QAAQupB,KAAK0wV,GAAqB95V,YAAY64V,EACvD,EAEAwI,WAAY,SAAStsT,EAAKtZ,GACtBxoD,KAAKoK,QAAQ4gD,EAAO,CAAExC,OAAQA,EAAQsZ,IAAKA,GAC/C,EAEAusT,aAAc,SAASxrG,GACnB,OAAO,SAASz0Q,GACZ,IAAIiC,EAAOjC,EACPy0Q,IACAxyQ,EAAOD,EAASyyQ,EAATzyQ,CAA0BhC,GAAQ,CAAC,IAG9CpO,KAAK2mD,QAAQt2C,EAAMjC,GACnBpO,KAAK6L,QAAQgkB,KAAK,YAAa,GAE/B7vB,KAAKoK,QAAQ+7W,EACjB,CACJ,EAEAmI,aAAc,WACVtuX,KAAK4M,QAAQupB,KAAK0wV,GAAqBxhW,SAASugW,EACpD,EAEA3+P,aAAc,SAAS9/G,GACnBnH,KAAKmuX,oBAAsBj1V,WAAWl5B,KAAKsuX,aAAa9kX,KAAKxJ,MAAO,KAEpE2C,EAAEulD,KAAKnlD,EAAO,CACV2C,KAAM,MACNy/C,SAAU,OACVrnB,OAAO,EACPpP,MAAO1uB,KAAKouX,WAAW5kX,KAAKxJ,MAC5BunB,SAAUvnB,KAAKkuX,cAAc1kX,KAAKxJ,MAClCmoD,QAASnoD,KAAKquX,aAAalnX,EAAQiJ,UAAU5G,KAAKxJ,OACnDmH,GACP,EAEA2rB,SAAU,WACF9yB,KAAKupX,UACLvpX,KAAKupX,SAASvnX,UAGdhC,KAAK4uS,UACL5uS,KAAK4uS,SAAS5sS,UAGlBhC,KAAK4M,QAAQwsB,IAAIy4D,GACZt8C,SAASiwU,GAAgBpsV,IAAIy4D,GAAIlmF,MACjCwqB,KAAK,uCAAuCiD,IAAIy4D,GAErDlvF,EAAE7B,QAAQs4B,IAAI,SAAWy4D,EAAK7xF,KAAKmyN,SACnCxvN,EAAE7B,QAAQs4B,IAAIgsV,GACdziX,EAAE7B,QAAQs4B,IAAIy4D,GAEdv3D,aAAat6B,KAAKmuX,qBAElB/8V,EAAOrpB,GAAG/F,QAAQuI,KAAKvK,MAEvBA,KAAKiK,OAAOrH,GAEZjC,EAAMqB,QAAQhC,KAAK4M,QACvB,EAEA5K,QAAS,WACLhC,KAAK8yB,WAED9yB,KAAKmH,QAAQ6rF,OACbhzF,KAAKosX,gBAAe,GAGxBpsX,KAAK4M,QAAQggD,QAAQvgD,SAErBrM,KAAK4M,QAAU5M,KAAKkM,SAAWlM,KAAK6L,QAAUlJ,GAClD,EAEAklX,cAAe,WACX,IAEI0G,EACA3hX,EAHA4vT,EAAcx8T,KAAK6L,QACnB1E,EAAUnH,KAAKmH,QAGfkY,EAAQ1e,EAAM4C,QAAQ8b,MAAMm9S,IAEL,IAAvBr1T,EAAQm+R,YACRk3B,EAAYvwT,IAAI,WAAY,UAGhCW,EAAUjK,EAAEwwT,EAAUvmT,QAAQzF,IAI9BonX,EAAsB/xD,EAAYrmS,KAAK,gCAAgCtb,KAAI,WACvE,IAAI7T,EAAMhH,KAAKm1B,aAAa,OAE5B,OADAn1B,KAAKgH,IAAM,GACJA,CACX,IAGA4F,EACKgc,YAAY,QAASvJ,GACrBuE,KAAK,WAAY,GACjBu2B,OAAOqiR,GACPrmS,KAAK,gCAAgCnzB,MAAK,SAASsW,GAEpDtZ,KAAKgH,IAAMunX,EAAoBj1W,EACnC,IAEItZ,KAAK+9T,YACL/9T,KAAK+9T,YAAY3vO,QAAQxhF,GAClB5M,KAAKkM,UACZU,EAAQV,SAASlM,KAAKkM,UAG1BU,EAAQupB,KAAK,mBACRlqB,IAAIoT,EAAQ,OAAS,QAASlT,EAAWS,EAAQupB,KAAK,+BAAiC,IAE5FqmS,EAAYvwT,IAAI,aAAc,IAAIwB,OAE9B9K,EAAE65T,GAAazvT,SAASk5W,IAExBtjX,EAAE65T,GAAazvS,YAAYk5V,GAE/BzpD,EAAYrmS,KAAK,sBAAsBnzB,MAAK,WACxC,IAAIwgX,EAAS7gX,EAAE3C,MAAMoO,KAAK,eAEtBo1W,GACAA,EAAO7kW,SAEf,IAEA/R,EAAU4vT,EAAc,IAC5B,IA4BJ,SAASktD,GAAeqE,GACpB,IAAI9lX,EAAOjI,KACXiI,EAAK4gM,MAAQklL,EACb9lX,EAAKumX,kBAAmB,EACxBvmX,EAAKygX,WAAa,IAAI5/R,EAAUilS,EAAInhX,QAAS,CACzC2iB,OAAQ,IAAMk2V,EACdlxT,MAAOw5T,EAAInhX,QAAQyjB,GAAK,YACxBo+V,UAAWxmX,EAAKwmX,UAAUjlX,KAAKvB,GAC/B2iO,KAAM3iO,EAAK2iO,KAAKphO,KAAKvB,GACrBymX,QAASzmX,EAAKymX,QAAQllX,KAAKvB,KAG/BA,EAAKygX,WAAWppS,WAAW91E,KAAK,QAASvB,EAAK0mX,WAAWnlX,KAAKvB,IAC9DA,EAAKygX,WAAWppS,WAAW91E,KAAK,UAAWvB,EAAK2mX,cAAcplX,KAAKvB,GACvE,CAmLA,SAAS0hX,GAAeoE,EAAKnE,EAAYlmS,GACrC,IAAIz7E,EAAOjI,KAOXiI,EAAK4gM,MAAQklL,EACb9lX,EAAKumX,kBAAmB,EACxBvmX,EAAKygX,WAAa,IAAI5/R,EAAUilS,EAAInhX,QAAS,CACzC2iB,OAAQq6V,EACRr1T,MAAOw5T,EAAInhX,QAAQyjB,GAAK,UACxBqzD,eAAgBA,EAChB+qS,UAAWxmX,EAAKwmX,UAAUjlX,KAAKvB,GAC/B2iO,KAAM3iO,EAAK2iO,KAAKphO,KAAKvB,GACrBymX,QAASzmX,EAAKymX,QAAQllX,KAAKvB,GAC3B4mX,WAAY5mX,EAAK4mX,WAAWrlX,KAAKvB,KAGrCA,EAAKygX,WAAWppS,WAAWllD,iBAAkB,CACjD,CA/OA+4R,EAAY,CACRvmT,QAASwD,GAAS,IAAM,iCACxBg9B,OAAQh9B,GAAS,EAAGhO,OAAMk2F,WACtB,IAAIw2R,GAAYx2R,GAAQ,IAAIz/E,eAAiBzW,EAAKyW,cAGlD,MAFgB,WAAZi2W,IAAyBA,EAAW,kBAEjCnuX,EAAM0P,KAAKg1S,aAAa,sEAAsEjjT,eAAmB,CAAEk2F,KAAMw2R,EAAUr7V,SAAU,QAAS,IAEjKo4V,SAAUz7W,GAAS,EAAG+tC,WAEd,+DAAgCA,gEAIxC2uH,QAAS,gCACTkhN,aAAc59W,GAAS,EAAG+tC,QAAOwI,aAC7B,kCAAkCxI,aAAiBwlE,WAC3Ch9D,EAAQ33B,qEAIpBy6V,aAAcr5W,GAAUhC,GAAS,2DAA2DA,eAoBhGs7W,GAAerhX,UAAY,CACvBsmX,WAAY,WACR3uX,KAAK6oM,MAAMj8L,QAAQutC,OAAOg5Q,EAAUrmJ,QACxC,EACA8hN,cAAe,WACX5uX,KAAK6oM,MAAMj8L,QAAQupB,KAAKuvV,GAAUr5W,QACtC,EACAoiX,UAAW,SAAS9pX,GAChB,IAAIsD,EAAOjI,KACP+tX,EAAM9lX,EAAK4gM,MACXj8L,EAAUmhX,EAAInhX,QAGlB,GADA3E,EAAKumX,iBAAmBT,EAAI3jX,QAAQg8W,IAChCn+W,EAAKumX,iBAAT,CAIAvmX,EAAKyxH,eAAiBlgH,SAAS5M,EAAQX,IAAI,eAAgB,IAC3DhE,EAAK07R,gBAAkBhjS,EAAMktB,UAAUjhB,EAAS,YAEhD3E,EAAK8mX,gBAAkBpqX,EAAEg6E,cAAc9uD,KAAK,aAAaptB,QAAQ,4BAA6B,IAE9FwF,EAAK+mX,YAAc,CACfjjX,MAAOa,EAAQT,aACfH,OAAQY,EAAQR,eAGpB2hX,EAAI5E,oBAEJlhX,EAAKgnX,gBAAkBlB,EAAIhwD,YAAcgwD,EAAIhwD,YAAYzwT,SAAW3M,EAAMktB,UAAUkgW,EAAI7hX,UAExF,IAAIopF,EAAe1oF,EAAQ0oF,eAE3B,GAAIA,EAAaroF,GAAG,QAChBhF,EAAKgnX,gBAAgB/pW,IAAMjd,EAAKgnX,gBAAgBziW,KAAO,MACpD,CACH,IAAIqqB,EAAYy+C,EAAarpF,IAAI,cAC7B2qC,EAAa0+C,EAAarpF,IAAI,eAElC,IADiB86W,GAAKx5W,KAAKspC,KAAekwU,GAAKx5W,KAAKqpC,GACrC,CACX,IAAIs4U,EAAkB9H,GAAYx6W,EAAQ,IACtCuiX,EAAuBD,EAAgB1iW,KAAOvkB,EAAKgnX,gBAAgBziW,KAAOvkB,EAAK07R,gBAAgBn3Q,KAC/F4iW,EAAsBF,EAAgBhqW,IAAMjd,EAAKgnX,gBAAgB/pW,IAAMjd,EAAK07R,gBAAgBz+Q,IAEhGjd,EAAKonX,sBAAwBF,EAAuB,EAAIA,EAAuB,EAC/ElnX,EAAKqnX,qBAAuBF,EAAsB,EAAIA,EAAsB,EAE5EnnX,EAAK07R,gBAAgBn3Q,MAAQvkB,EAAKonX,sBAClCpnX,EAAK07R,gBAAgBz+Q,KAAOjd,EAAKqnX,oBACrC,CACJ,CAEA1iX,EACK2oC,SAASkwU,GAAsBrnD,IAAIz5T,EAAEg6E,eAAejxE,OAEzD/K,EAAE0uF,GAAMplF,IAAIi6W,EAAQvhX,EAAEg6E,cAAc1yE,IAAIi6W,GAxCxC,CAyCJ,EACAt7I,KAAM,SAASjmO,GACX,IAAI3E,KAAKwuX,iBAAT,CAGA,IAaI7D,EAAUC,EACV2E,EAAcC,EAddvnX,EAAOjI,KACP+tX,EAAM9lX,EAAK4gM,MACXj8L,EAAUmhX,EAAInhX,QACdzF,EAAU4mX,EAAI5mX,QACdmG,EAAWnG,EAAQmG,SACnB+mC,EAAYpsC,EAAK8mX,gBACjBE,EAAkBhnX,EAAKgnX,gBACvBtrF,EAAkB17R,EAAK07R,gBACvBqrF,EAAc/mX,EAAK+mX,YACnBlC,EAAqBiB,EAAIhwD,cAAgBgwD,EAAI7E,UAC7C9oO,EAAMz/I,EAAM4C,QAAQ8b,MAAM0uW,EAAIhwD,aAC9B0xD,EAAgB3C,GAAsB1sO,GAAO2tO,EAAIhwD,YAAYv9S,aAAeutW,EAAIhwD,YAAYhyT,MAAQpL,EAAM4C,QAAQmb,YAAc,EAChIgxW,EAAe5C,EAAqB,CAAE5nW,IAAK6oW,EAAIhwD,YAAYjnS,YAAatK,KAAMuhW,EAAIhwD,YAAYxwS,cAAiB,CAAErI,IAAK,EAAGsH,KAAM,GAG/HpnB,EAAI/B,KAAK8V,IAAIxU,EAAES,EAAEie,SAAU,GAC3Blf,EAAId,KAAK8V,IAAIxU,EAAER,EAAEkf,SAAU,GAEvBgxB,EAAU1+B,QAAQ,MAAQ,GAGtBg1W,EADAoD,EAAIhwD,aAAe34T,EAAI4pX,EAAYjjX,OAASgiX,EAAI3F,QAAUsH,EAAaljW,KAAOyiW,EAAgBziW,KAAOijW,EAC1F1B,EAAI3F,QAAUqH,EAAgB9rF,EAAgBn3Q,KAAOwiW,EAAYjjX,MAAQ2jX,EAAaljW,KAEtFpnB,EAAIu+R,EAAgBn3Q,KAAOyiW,EAAgBziW,KAG1D5f,EAAQT,WAAW+6W,GAAUyD,EAAUxjX,EAAQo1N,SAAUp1N,EAAQmrS,YAC1Dj+P,EAAU1+B,QAAQ,MAAQ,IAEjCg1W,EAAWzD,IADXsI,EAAc7rF,EAAgBn3Q,KAAOwiW,EAAYjjX,MAAQkjX,EAAgBziW,MACtCpnB,EAAG+B,EAAQo1N,SAAUp1N,EAAQmrS,UAChEhlS,EAASkf,KAAOgjW,EAAc7E,EAAWsE,EAAgBziW,KAAOijW,GAAiBxnX,EAAKonX,uBAAyB,GAAKK,EAAaljW,KAE7HuhW,EAAIhwD,aAAezwT,EAASkf,MAAQuhW,EAAI7F,UACxC56W,EAASkf,KAAOuhW,EAAI7F,QACpByC,EAAWzD,GAAUsI,EAAcC,EAAgBniX,EAASkf,KAAOyiW,EAAgBziW,KAAOkjW,EAAaljW,KAAMrlB,EAAQo1N,SAAUp1N,EAAQmrS,WAG3I1lS,EAAQX,IAAI,CACRugB,KAAMlf,EAASkf,KACfzgB,MAAO4+W,KAIf,IAAIgF,EAAexrX,EACf4pX,EAAI5mX,QAAQwhX,SACZgH,GAAgBhtX,EAAE7B,QAAQg2B,aAE1Bud,EAAU1+B,QAAQ,MAAQ,GAC1Bi1W,EAAY+E,EAAehsF,EAAgBz+Q,IAAMjd,EAAKyxH,eAAiBu1P,EAAgB/pW,IAEnFyqW,EAAeX,EAAYhjX,OAAS/D,EAAKyxH,gBAAkBq0P,EAAI5F,OAAS8G,EAAgB/pW,IAAMwqW,EAAaxqW,MAC3G0lW,EAAYmD,EAAI5F,OAASxkF,EAAgBz+Q,IAAM8pW,EAAYhjX,OAAS0jX,EAAaxqW,KAGrFtY,EAAQR,YAAY86W,GAAU0D,EAAWzjX,EAAQsyP,UAAWtyP,EAAQ8uT,aAC7D5hR,EAAU1+B,QAAQ,MAAQ,IAEjCi1W,EAAY1D,IADZqI,EAAe5rF,EAAgBz+Q,IAAM8pW,EAAYhjX,OAASijX,EAAgB/pW,KACrCyqW,EAAcxoX,EAAQsyP,UAAWtyP,EAAQ8uT,WAC9E3oT,EAAS4X,IAAMqqW,EAAe3E,EAAYqE,EAAgB/pW,KAAOjd,EAAKqnX,sBAAwB,GAAKI,EAAaxqW,IAE5G5X,EAAS4X,KAAO6oW,EAAI9F,QAAU8F,EAAIhwD,cAClCzwT,EAAS4X,IAAM6oW,EAAI9F,OACnB2C,EAAY1D,GAAUqI,EAAejiX,EAAS4X,IAAM+pW,EAAgB/pW,IAAMwqW,EAAaxqW,IAAK/d,EAAQsyP,UAAWtyP,EAAQ8uT,YAG3HrpT,EAAQX,IAAI,CACRiZ,IAAK5X,EAAS4X,IACdlZ,OAAQ4+W,KAIZD,IACAoD,EAAI5mX,QAAQ4E,MAAQ4+W,EAAW,MAE/BC,IACAmD,EAAI5mX,QAAQ6E,OAAS4+W,EAAY,MAGrCmD,EAAI5jW,QA/ER,CAgFJ,EACAukW,QAAS,SAAS/pX,GACd,IAAI3E,KAAKwuX,iBAAT,CAIA,IAAIvmX,EAAOjI,KACP+tX,EAAM9lX,EAAK4gM,MACXj8L,EAAUmhX,EAAInhX,QAkBlB,OAhBAA,EACK2oC,SAASkwU,GAAsBrnD,IAAIz5T,EAAEg6E,eAAelxE,OAEzD9K,EAAE0uF,GAAMplF,IAAIi6W,EAAQ,IAEhB6H,EAAIr1V,eACJq1V,EAAIr1V,cAAcmd,QAGL,IAAblxC,EAAE2iC,SACF16B,EAAQX,IAAIhE,EAAK07R,iBACZ13R,IAAIhE,EAAK+mX,aAGlBjB,EAAI3jX,QAAQi8W,IAEL,CAtBP,CAuBJ,EACArkX,QAAS,WACDhC,KAAK0oX,YACL1oX,KAAK0oX,WAAW1mX,UAGpBhC,KAAK0oX,WAAa1oX,KAAK6oM,MAAQ,IACnC,GA0BJ8gL,GAAethX,UAAY,CACvBomX,UAAW,SAAS9pX,GAChB,IAAIopX,EAAM/tX,KAAK6oM,MACXxgH,EAAY0lS,EAAI5mX,QAAQkhF,UACxBx8E,EAAUkiX,EAAIliX,QACd+7W,EAAU/7W,EAAQsqB,KAAK,8BACvB84V,EAAkBtuX,EAAMktB,UAAUkgW,EAAI7hX,UAE1ClM,KAAKwuX,iBAAmBT,EAAI3jX,QAAQ85E,KAAemE,EAC/CroF,KAAKwuX,kBAAoBT,EAAIxD,gBAIjCwD,EAAI6B,sBAAwBjvX,EAAMktB,UAAUkgW,EAAInhX,QAAS,YAEzDmhX,EAAI8B,uBAAyB,CACzBrjW,KAAMuhW,EAAI5mX,QAAQmG,SAASkf,KAC3BtH,IAAK6oW,EAAI5mX,QAAQmG,SAAS4X,KAG9B6oW,EAAIxyM,cAAgB,CAChB/uJ,KAAM7nB,EAAES,EAAEw/B,OAASmpV,EAAI6B,sBAAsBpjW,KAC7CtH,IAAKvgB,EAAER,EAAEygC,OAASmpV,EAAI6B,sBAAsB1qW,KAGhD6oW,EAAI5E,oBACC4E,EAAIhwD,cACD6pD,EAAQpgX,OAAS,EACjBumX,EAAI7F,QAAU/7W,EAAWy7W,GAAWpuW,SAASouW,EAAQ37W,IAAI,SAAU,IAAME,EAAWN,GAEpFkiX,EAAI7F,QAAU,GAAK/7W,EAAWN,GAGlCkiX,EAAI7F,SAAW+G,EAAgBziW,KAC/BuhW,EAAI9F,QAAUgH,EAAgB/pW,KAGlCviB,EAAEwwT,EAAUrmJ,SAAS5gK,SAAS6hX,EAAInhX,SAASX,IAAI,CAAE8qB,QAAS,IAE1Dg3V,EAAInhX,QAAQ2oC,SAASkwU,GAAsB/3W,OAE3C/K,EAAE0uF,GAAMplF,IAAIi6W,EAAQvhX,EAAEg6E,cAAc1yE,IAAIi6W,IAC5C,EAEAt7I,KAAM,SAASjmO,GACX,IAGI6nB,EACAtH,EAJA6oW,EAAM/tX,KAAK6oM,MACXv7L,EAAWygX,EAAI5mX,QAAQmG,SACvB63B,EAAO4oV,EAAI5mX,QAAQkhF,UAAUljD,KAI7BnlC,KAAKwuX,kBAAoBT,EAAIxD,gBAI5BplV,GAA+B,MAAvBA,EAAKtsB,gBACd2T,EAAO7nB,EAAES,EAAEw/B,OAASmpV,EAAIxyM,cAAc/uJ,KAElCuhW,EAAIhwD,cAAgBgwD,EAAI7E,YACxB18V,GAAQuhW,EAAIhwD,YAAYxwS,cAG5BjgB,EAASkf,KAAO06V,GAAU16V,EAAMuhW,EAAI7F,QAAS6F,EAAI3F,UAGhDjjV,GAA+B,MAAvBA,EAAKtsB,gBACdqM,EAAMvgB,EAAER,EAAEygC,OAASmpV,EAAIxyM,cAAcr2J,IAEjC6oW,EAAIhwD,cAAgBgwD,EAAI7E,YACxBhkW,GAAO6oW,EAAIhwD,YAAYjnS,aAG3BxpB,EAAS4X,IAAMgiW,GAAUhiW,EAAK6oW,EAAI9F,OAAQ8F,EAAI5F,SAG9CxnX,EAAM4C,QAAQoc,WACdhd,EAAEorX,EAAInhX,SAASX,IACX,YAAa,cACZqB,EAASkf,KAAOuhW,EAAI8B,uBAAuBrjW,MAAQ,QACnDlf,EAAS4X,IAAM6oW,EAAI8B,uBAAuB3qW,KAAO,OAGtDviB,EAAEorX,EAAInhX,SAASX,IAAIqB,GAG3B,EAEAwiX,YAAa,WACT,IAAI/B,EAAM/tX,KAAK6oM,MAEfklL,EAAInhX,QACC2oC,SAASkwU,GAAsB18V,QAAQglW,EAAI5mX,QAAQqjX,aAAa7+W,MAChEwqB,KAAKuvV,GAAUr5W,SAEpB1J,EAAE0uF,GAAMplF,IAAIi6W,EAAQ,GACxB,EAEA2I,WAAY,SAASlqX,GACb3E,KAAKwuX,mBAGTxuX,KAAK8vX,cAELnrX,EAAEg6E,cAAc9xE,QAAQw4W,GAASp5W,IAAIjM,KAAK6oM,MAAM+mL,uBACpD,EAEAlB,QAAS,WACL,IAAIX,EAAM/tX,KAAK6oM,MAEf,IAAI7oM,KAAKwuX,mBAAoBT,EAAIxD,cAYjC,OARA5nX,EAAEorX,EAAInhX,SACDX,IAAI8hX,EAAI5mX,QAAQmG,UAChBrB,IAAI,YAAa,IAEtBjM,KAAK8vX,cAEL/B,EAAI3jX,QAAQg6E,IAEL,CACX,EACApiF,QAAS,WACDhC,KAAK0oX,YACL1oX,KAAK0oX,WAAW1mX,UAGpBhC,KAAK0oX,WAAa1oX,KAAK6oM,MAAQ,IACnC,GAGJloM,EAAM4pB,GAAG2M,OAAOswV,GAEnB,CApoED,CAooEG1mX,OAAOH,MAAM+G,QACN/G,OAEd,SAAUgC,EAAGC,GAEL,IAAI6nB,EAAU9pB,MAAM8pB,QAChBgtH,EAAO92I,MAAM+pB,QACboyN,EAAOn8O,MAAMghI,SACbk2D,EAAUptK,EAAQotK,QAClBzmK,EAASzwB,MAAM4pB,GAAG6G,OAClBxpB,EAAQjH,MAAMiH,MACdY,EAAa7H,MAAM6H,WACnB2D,EAAaxL,MAAM8L,YACnBL,EAAczL,MAAM+L,aACpB3J,EAASJ,EAAEI,OACXwL,EAAyB5N,MAAMyN,KAAKG,uBACpCuxR,EAASjoG,EAAQioG,OACjBrvJ,EAAQonD,EAAQpnD,MAChBksJ,EAAY9kG,EAAQ8kG,UACpBx8J,EAAS03D,EAAQ13D,OACjBi6J,EAAqBviG,EAAQuiG,mBAC7Bn9J,EAAO46D,EAAQ56D,KACfsR,EAAOspD,EAAQtpD,KACf00J,EAAkBprG,EAAQorG,gBAC1BF,EAAuBlrG,EAAQkrG,qBAC/B7G,EAAYrkG,EAAQqkG,UACpB7rJ,EAAQwnD,EAAQxnD,MAChBvU,EAAQ+7D,EAAQ/7D,MAChBmvJ,EAAYpzF,EAAQozF,UACpB+gB,EAAwBn0G,EAAQm0G,sBAChCvH,EAAkB5sG,EAAQ4sG,gBAC1BoD,EAAchwG,EAAQgwG,YACtB2I,EAAW34G,EAAQ24G,SACnBpD,EAAkBv1G,EAAQu1G,gBAC1BP,EAAoBh1G,EAAQg1G,kBAC5B1M,EAAUtoG,EAAQsoG,QAClB7Z,EAAQzuF,EAAQyuF,MAChBh9Q,EAAa3I,MAAM2I,WACnBk7R,EAAa3sG,EAAQ2sG,WACrBH,EAAcxsG,EAAQwsG,YACtB2F,EAAiBnyG,EAAQmyG,eACzBC,EAAkBpyG,EAAQoyG,gBAC1BxjB,EAAcH,EAAMG,YACpBD,EAAYF,EAAME,UAClB1vJ,EAAU2gB,EAAKjwB,KAAKsP,QACpB7zH,EAAUC,MAAMD,QAChBiG,EAAavI,MAAMuI,WACnBN,EAAW09Q,EAAM19Q,SACjBjB,EAAgBhF,EAAEgF,cAElBvE,EAAOC,KAGPwuF,EAAK,gBACLk+R,EAAY,YACZlvF,EAAmB,mBACnB3jP,EAAS,SACTg3L,EAAQ,QAMRlpL,EAAQ,QACRzZ,EAAO,OAKPy+U,GAAS,iBACTjzS,GAAS,SACTkzS,GAAa,aACbC,GAAM,MACNhvL,GAAa,YACbE,GAAW,UACX1oD,GAAO,OAUPthB,GAAYvkH,OAAOukH,UACnB0pC,IAAajuJ,OAAOukH,UAEpB+4P,GAAc,cACdrvF,GAAU,UAMVsvF,GAAgB,iBAAmBv+R,EAAK,cAAgBA,EAGxDw+R,GAAkB,EAAGhjW,YAAWirE,OAAMjkE,aAAYyM,UAC9CngC,MAAM0P,KAAKg1S,aAAa,kBAAkBh4R,eAAuByT,aAAiB,CAC9Ew3D,KAAMA,EACNjkE,eAIZwjK,EAAQy4L,kBAAoB,CAAC,CACzBluX,KAzCM,OA0CP,CACCA,KAxCS,UAyCV,CACCA,KA3CO,QA4CR,CACCA,KA9CQ,SA+CT,CACCA,KAAMmvC,EACNjkC,SAAU,SAASw1I,GACf,OAAOA,EAAMskO,YAAY,SAC7B,IAGJ,IAAImJ,GAAiB,CACjB51V,OAAQ,CACJmG,KAAM,SACNw3D,KAAM,iBACNjrE,UAAW,oBAEf85B,OAAQ,CACJrmB,KAAM,OACN0vV,WAAY,OACZnjW,UAAW,mBACXirE,KAAM,OACNjkE,WAAY,YA8CpB,SAASo8V,GAAgB/pF,GACrB,OAAOA,EAAUv/R,QAAQ/E,KAAKyW,gBAAkB04B,EAAK14B,aACzD,CAEA,SAAS63W,GAAiBv0P,EAAOu8D,GAE7B,IADA,IAA8Bi4L,EAAQjqF,EAAlCkqF,EAAkBZ,GACbzoX,EAAI,EAAGA,EAAImxL,EAAWlxL,OAAQD,IAEnC,IAAKkpX,GADL/pF,EAAYhuG,EAAWnxL,IACU,CAC7B,IAAI8hK,EAAOltC,EAAMG,WAAWoqK,EAAUp5R,YAClC+7J,EAAOunN,IACPA,EAAkBvnN,EAClBsnN,EAASjqF,EAEjB,CAEJ,OAAOiqF,CACX,CAEA,SAASE,GAAet8T,EAAOg3G,GAC3B,IAAIhkK,EAAiB05I,EAAd4/B,EAAU,GACbtrI,EAAWgf,EAAM+mO,mBAAmB/lP,SACpC/tC,EAAS+tC,EAAS/tC,OACtB,IAAKD,EAAI,EAAGA,EAAIgkK,EAAQ/jK,OAAQD,IAAK,CACjC05I,EAASsqB,EAAQhkK,GACjB,IAAK,IAAIwjC,EAAI,EAAGA,EAAIvjC,EAAQujC,IACxB,GAAIwK,EAASxK,IAAMk2G,EAAOq6I,mBAAoB,CAC1Cz6G,EAAQl/K,KAAKopC,GACb,KACJ,CAER,CACA,OAAO81I,CACX,CA3EAgX,EAAQT,cAAgB,SAAS05L,GAC7B,IAAIlwX,EAAW,CACX8E,KA3DiB,YA4DjB6pC,KAAM,GACN2rP,UAAU,EACVj6I,OAAQ,KACR77I,EA1DqB,EA2DrBjB,EA3DqB,EA4DrBo4N,SA9DqB,GA+DrBk9B,UA9DsB,GA+DtB1tP,MAlEkB,IAmElBC,OAlEmB,IAmEnBqrL,MAAO,CAAC,EACRzoI,SAAU,CACNqpO,SAAS,EACTxgG,MAAO,IAEXiB,WAAYb,EAAQy4L,kBACpBv2U,SAAU,CACNqgF,MAAO,IAMf,OAFAksJ,EAAMM,aAAahmR,EAAUkwX,GAEtBlwX,CACX,EAmDA,IAAImwX,GAAiBznX,EAAWvG,OAAO,CACnCoF,KAAM,SAAShB,GACX,IAAIc,EAAOjI,KACXiI,EAAKw2D,UAAYt3D,GAAW,CAAC,GAAGs3D,SAChCn1D,EAAWvB,GAAGI,KAAKoC,KAAKtC,GACxBA,EAAKd,QAAUqB,EAAW,CAAE6nB,GAAIwnK,EAAQ60F,YAAczkR,EAAKd,QAASA,GACpEc,EAAKs+R,YAAa,EAClBt+R,EAAKg5I,OAAS,IAAIxQ,EAAM,CACpBpgH,GAAIpoB,EAAKd,QAAQkpB,GACjB6qQ,SAAUjzR,EAAKd,QAAQ+zR,WAE3BjzR,EAAKooB,GAAKpoB,EAAKd,QAAQkpB,GACvBpoB,EAAKy4I,WACT,EAEAv5I,QAAS,CACLkwL,MAAO,CAAC,EACRr8C,OAAQmlJ,EAAQC,KAChBz5O,QAAS,CACLuqF,MAAO,iBAEXqmD,YAAY,EACZy5L,cAAc,EACd7oW,QAAQ,GAGZk9H,WAAY,SAASlpB,GACjB,OAAIn8H,KAAKojS,QACEpjS,KAAKojS,QAAQ/9I,WAAWlpB,GAE5Bn8H,KAAKmH,QAAQ6zI,MACxB,EAEAhuI,QAAS,SAAStE,GACd,GAAI+9Q,EAAY/9Q,GACZ,OAAO1I,KAAKihJ,OAAOj0I,UAEnBhN,KAAKihJ,OAAOj0I,QAAQtE,EAE5B,EAEAu8Q,OAAQ,WACR,EAEAtmQ,QAAS,WACL3e,KAAKihJ,OAAOw8D,QAChB,EAEAnwM,SAAU,SAAS6uH,GACfn8H,KAAKmH,QAAQ/B,EAAI+2H,EAAM/2H,EACvBpF,KAAKmH,QAAQhD,EAAIg4H,EAAMh4H,EACvBnE,KAAKihJ,OAAO3zI,SAAS6uH,EACzB,EAEA1qH,SAAU,WACN,OAAOzR,KAAKmH,QAAQkpB,EACxB,EAEA+4B,UAAW,WAEP,IAAI2C,EAAOvjD,EAAW,CAAC,EAAG,CAAErB,QAASnH,KAAKmH,UAI1C,OAHInH,KAAKy+D,WACL1S,EAAK0S,SAAWz+D,KAAKy+D,SAAShtD,YAE3Bs6C,CACX,EAEAo9P,SAAU,SAASxiQ,GACf,GAAIA,IAAY/jD,EAAa,CACzB,IAAIuE,EAAUnH,KAAKmH,QAEf0wL,EAAQyuF,MAAM19Q,SAAS+9C,GACvBx/C,EAAQw/C,QAAQ7lB,KAAO6lB,EAEvBn+C,EAAWrB,EAAQw/C,QAASA,GAGhC,IAAIogE,EAAiB5/G,EAAQw/C,QACT3mD,KAAKixX,eAKrBjxX,KAAKkxX,qBAAqBnqQ,GAF1B/mH,KAAKmxX,qBAAqBpqQ,EAIlC,CAEA,OAAO/mH,KAAKmH,QAAQw/C,QAAQ7lB,IAChC,EAEAqwV,qBAAsB,SAAShqX,GACvBA,EAAQ25B,OACR9gC,KAAKixX,eAAiB,IAAI/0F,EAAU/0R,GACpCnH,KAAKixX,eAAexxF,gBAAiB,EACrCz/R,KAAKihJ,OAAO9mG,OAAOn6C,KAAKixX,gBAEhC,EAEAC,qBAAsB,SAAS/pX,GAC3BnH,KAAKixX,eAAexzK,OAAOt2M,EAC/B,EAEA8+R,SAAU,SAAS9pK,GACf,IAAI8oJ,EAASjlR,KAAKilR,SAClB,OAAOjlR,KAAKgN,WAAai4Q,EAAO1vP,SAAS4mG,IAAUn8H,KAAKmH,QAAQghB,MACpE,EAEAu4H,UAAW,WACP,IAAIz4I,EAAOjI,KACX,GAAIiI,EAAKd,QAAQw/C,QAAQv2C,SAAU,CAC/B,IAAIhC,EAAOnG,EAAKw2D,UAAY,CAAC,EACzB2yT,EAAkBzwX,MAAMyP,SAASnI,EAAKd,QAAQw/C,QAAQv2C,SAAU,CAC5DH,UAAW,aAGnBhI,EAAKd,QAAQw/C,QAAQ7lB,KAAOswV,EAAgBhjX,EAChD,CACJ,EAEAijX,WAAY,WACR,OAAmC,IAA5BrxX,KAAKmH,QAAQowL,UACxB,EAEAplL,OAAQ,WACJ,MAAO,CACHke,GAAIrwB,KAAKmH,QAAQkpB,GAEzB,IAGAihW,GAAY1pX,EAAM7E,OAAO,CACzBoF,KAAM,SAAS26I,EAAO37I,GAClBnH,KAAKmH,QAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAASA,GAC5CnH,KAAKomS,YAAc,GACnBpmS,KAAK8iJ,MAAQA,CACjB,EACA37I,QAAS,CACL4E,MAAO,EACPC,OAAQ,EACR0nB,KAAM,CACFu9F,MA5QwB,UA8Q5BomE,MAAO,CAAC,GAEZ/pL,SAAU,WACN,OAAItN,KAAKmH,QAAQmG,SACNtN,KAAKmH,QAAQmG,SAAStN,KAAK8iJ,OAE3B9iJ,KAAK8iJ,MAAMskO,YAAYpnX,KAAKmH,QAAQ/E,KAEnD,EACA+P,OAAQ,WACJ,MAAO,CACHo/W,QAASvxX,KAAK8iJ,MAAMrxI,WACpBi1R,UAAW1mS,KAAKmH,QAAQ/E,KAEhC,IAGJkvX,GAAUl8V,MAAQ,SAASyiK,EAAS1oL,GAKhC,IAJA,IAAIqiX,EAAUriX,EAAIvE,MAAM,KACpBylB,EAAKmhW,EAAQ,GACbpvX,EAAOovX,EAAQ,IAAMjgV,EAEhBhqC,EAAI,EAAGA,EAAIswL,EAAQh1C,OAAOr7I,OAAQD,IAAK,CAC5C,IAAIu7I,EAAQ+0C,EAAQh1C,OAAOt7I,GAC3B,GAAIu7I,EAAM37I,QAAQkpB,IAAMA,EACpB,OAAOyyH,EAAMwkJ,aAAallS,EAAKuhC,OAEvC,CACJ,EAEA,IAAI0jQ,GAAQ0pF,GAAehuX,OAAO,CAC9BoF,KAAM,SAAShB,EAAS0wL,GACpB,IAAI5vL,EAAOjI,KACX+wX,GAAehpX,GAAGI,KAAKoC,KAAKtC,EAAMd,GAClCnH,KAAK63L,QAAUA,EACf73L,KAAKyxX,yBACLtqX,EAAUc,EAAKd,QACfc,EAAKywL,WAAa,GAClBzwL,EAAKvC,KAAOyB,EAAQzB,KACpBuC,EAAKypX,oBACLzpX,EAAK0pX,eACL1pX,EAAK0+C,QAAQ1+C,EAAK0+C,WAElB1+C,EAAK2pX,mBACT,EAEAzqX,QAAS0wL,EAAQT,gBAEjBy6L,qBAAsB,SAAS3oU,GAC3B,IAAI4oU,EAAeC,GAAoB7oU,GAASlpD,KAAKy+D,UACrDz+D,KAAKmH,QAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAAS2qX,GAE5C9xX,KAAKgyX,cACT,EAEAP,uBAAwB,SAASvoU,EAAOnjC,GACpC,GAAI/lB,KAAK63L,SAAW73L,KAAK63L,QAAQo6L,YAAa,CAC1C,IAAIH,EAAeC,GAAoB7oU,GAASlpD,KAAKy+D,UAErD,GAAIvV,GAASnjC,EACT,GAAK0E,EAAQgL,QAAQ1P,EAAO,CAAC,IAAK,IAAK,QAAS,WAYzC,CACH,IAAIk/P,EAASjlR,KAAKilR,SAClBA,EAAOl/P,GAASmjC,EAAMnjC,GACtB/lB,KAAKilR,OAAOA,EAChB,MAfQjlR,KAAKmH,QAAQ85I,OACbjhJ,KAAKkyX,gBACEJ,EAAapsX,OACpB1F,KAAKmH,QAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAAS2qX,GAC5C9xX,KAAKkyX,iBAGLlyX,KAAKmH,QAAQw/C,UACb3mD,KAAK0gJ,YACL1gJ,KAAK2mD,QAAQ3mD,KAAKmH,QAAQw/C,eAQlC3mD,KAAKmH,QAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAAS2qX,EAEpD,CACJ,EAEAI,cAAe,WACXlyX,KAAKihJ,OAAOzqF,QACZx2D,KAAKixX,eAAiB,KACtBjxX,KAAKmH,QAAQs3D,SAAWz+D,KAAKy+D,SAC7Bz+D,KAAK0xX,oBACL1xX,KAAK2xX,cACT,EAEAK,aAAc,WACVhyX,KAAKkyX,gBACDlyX,KAAKmH,QAAQw/C,UACb3mD,KAAK0gJ,YACL1gJ,KAAK2mD,QAAQ3mD,KAAKmH,QAAQw/C,SAElC,EAEAg8O,YAAa,SAASwvF,GAClB,IAAIt6L,EAAU73L,KAAK63L,QACnB,GAAIA,GAAWA,EAAQo6L,YAAa,CAChC,IAAIhtG,EAASjlR,KAAK4tS,QACd1kP,EAAQlpD,KAAKy+D,SAEbvV,IACA2uI,EAAQu6L,uBACJt7P,EAAQ5tE,EAAM9jD,IAAM6/Q,EAAO7/Q,IAAM8jD,EAAM9jD,GACvC8jD,EAAMh5B,IAAI,IAAK+0P,EAAO7/Q,GAGtB0xH,EAAQ5tE,EAAM/kD,IAAM8gR,EAAO9gR,IAAM+kD,EAAM/kD,GACvC+kD,EAAMh5B,IAAI,IAAK+0P,EAAO9gR,GAGtB2yH,EAAQ5tE,EAAMn9C,QAAUk5Q,EAAOl5Q,QAAUm9C,EAAMn9C,OAC/Cm9C,EAAMh5B,IAAI,QAAS+0P,EAAOl5Q,OAG1B+qH,EAAQ5tE,EAAMl9C,SAAWi5Q,EAAOj5Q,SAAWk9C,EAAMl9C,QACjDk9C,EAAMh5B,IAAI,SAAU+0P,EAAOj5Q,QAG/BhM,KAAKy+D,SAAWvV,EAChB2uI,EAAQw6L,sBAEJF,GACAt6L,EAAQw4G,oBAGpB,CACJ,EAEAshF,aAAc,WACV,IAAI1sG,EAASjlR,KAAKihJ,OAAOue,UAAS,GAC9Br4J,EAAUnH,KAAKmH,QACnBnH,KAAKilR,OAAO,IAAIhoJ,EAAK91H,EAAQ/B,EAAG+B,EAAQhD,EAAG8gR,EAAOl5Q,MAAOk5Q,EAAOj5Q,SAChEhM,KAAKsyX,UACLtyX,KAAKuyX,eACT,EAEA5rU,QAAS,SAASA,GACd,IAAI7vC,EAAS9W,KAAKmpT,SAASxiQ,GAI3B,OAFA3mD,KAAKuyX,gBAEEz7W,CACX,EAEAy7W,cAAe,WACX,IAAIxrQ,EAAiB/mH,KAAKmH,QAAQw/C,SAAW,CAAC,EAC1C6rU,EAAgBxyX,KAAKixX,eACzB,GAAIuB,GAAiBzrQ,EAAemqB,MAAO,CACvC,IAAIuhP,EAAgBzyX,KAAKihJ,OAAOue,WAC5BkzN,EAAU,IAAI76L,EAAQwzF,UAAUonG,GAChCE,EAAgBH,EAAc/jJ,eAAe9wG,KAAK,MAElDmnH,EAAc,IAAI7nH,EAAK,EAAG,EAAG01P,EAAc5mX,QAAS4mX,EAAc3mX,UAClE4mX,EAAgBF,EAAQxhP,MAAM4zG,EAAa/9H,EAAemqB,OAE9DshP,EAAcllX,SAASslX,EAAcr1P,UACzC,CACJ,EAEAq0P,kBAAmB,WACf,IAGIlrF,EAAWn/R,EAHXJ,EAAUnH,KAAKmH,QACfK,EAASL,EAAQuxL,WAAWlxL,OAC5BgxL,EAAoBrxL,EAAQqxL,kBAGhC,IAAKjxL,EAAI,EAAGA,EAAIC,EAAQD,IACpBm/R,EAAY,IAAI4qF,GACZtxX,KAAMwI,EAAW,CAAC,EACdgwL,EACArxL,EAAQuxL,WAAWnxL,KAG3BvH,KAAK04L,WAAW/2L,KAAK+kS,EAE7B,EAEAzhB,OAAQ,SAASv8Q,GACb,IAAIu8Q,EAEJ,GAAIv8Q,EACA,GAAIE,EAASF,GACT,OAAQA,GACJ,KAAKynX,GACDlrG,EAASjlR,KAAK6yX,qBACd,MACJ,IAzcL,WA0cS5tG,EAASjlR,KAAK6yX,qBACd,IAAIxwM,EAAMriL,KAAK63L,QAAQghF,KACvBoM,EAAO7/Q,GAAKi9K,EAAIj9K,EAChB6/Q,EAAO9gR,GAAKk+K,EAAIl+K,EAChB,MACJ,KAAK28R,GACD7b,EAASjlR,KAAK8yX,iBACd,MACJ,QACI7tG,EAASjlR,KAAK4tS,aAGtB5tS,KAAK+yX,WAAWrqX,GAChB1I,KAAKgzX,uBACChzX,KAAK63L,SAAW73L,KAAK63L,QAAQo7L,YAC/BjzX,KAAKkzX,0BAIbjuG,EAASjlR,KAAK4tS,QAGlB,OAAO3oB,CACX,EAEA8tG,WAAY,SAASzmS,GACjB,IAAInlF,EAAUnH,KAAKmH,QACfo2H,EAAUjxC,EAAKixC,UACfn4H,EAAI+B,EAAQ/B,EAAIm4H,EAAQn4H,EACxBjB,EAAIgD,EAAQhD,EAAIo5H,EAAQp5H,EACxB4H,EAAQ5E,EAAQ4E,MAAQ3I,EAAK+V,IAAImzE,EAAKvgF,MAAO5E,EAAQo1N,UACrDvwN,EAAS7E,EAAQ6E,OAAS5I,EAAK+V,IAAImzE,EAAKtgF,OAAQ7E,EAAQsyP,WAE5Dz5P,KAAK4tS,QAAU,IAAI3wK,EAAK73H,EAAGjB,EAAG4H,EAAOC,GAErChM,KAAKihJ,OAAOw8D,OAAO,CACfr4M,EAAGA,EACHjB,EAAGA,EACH4H,MAAOA,EACPC,OAAQA,GAEhB,EAEAsB,SAAU,SAAS6uH,GACf,IAAIA,EAGA,OAAOn8H,KAAK4tS,QAAQrwK,UAFpBv9H,KAAKilR,OAAO,IAAIhoJ,EAAKd,EAAM/2H,EAAG+2H,EAAMh4H,EAAGnE,KAAK4tS,QAAQ7hS,MAAO/L,KAAK4tS,QAAQ5hS,QAIhF,EAKA5E,MAAO,WACH,IAAI2kD,EAAO/rD,KAAKopD,YAQhB,OANA2C,EAAK5kD,QAAQkpB,GAAKwnK,EAAQ60F,WAEtB1sR,KAAK63L,SAAW73L,KAAK63L,QAAQo6L,aAAen7P,EAAQ92H,KAAKy+D,YACzD1S,EAAK5kD,QAAQs3D,SAAW00T,GAAcnzX,KAAKy+D,WAGxC,IAAI4oO,GAAMt7O,EAAK5kD,QAC1B,EAEAo/B,OAAQ,SAAS79B,GACb,IAA4BgqE,EAAU0gT,EAAlCv7L,EAAU73L,KAAK63L,QAKnB,GAJI4uF,EAAY/9Q,KACZA,GAAQ,GAGR1I,KAAKqxX,cACDrxX,KAAKumS,YAAc79R,EAgBnB,OAfAgqE,EAAW,GACX0gT,EAAa,GACbpzX,KAAKumS,WAAa79R,EACd1I,KAAKumS,YACL1uG,EAAQuxG,eAAeznS,KAAK3B,MAC5B0yE,EAAS/wE,KAAK3B,QAEdsmR,EAAMj6Q,OAAOwrL,EAAQuxG,eAAgBppS,MACrCozX,EAAWzxX,KAAK3B,OAGf63L,EAAQw7L,oBACTx7L,EAAQy7L,kBAAkB5gT,EAAU0gT,IAGjC,CAGnB,EAEAjiV,OAAQ,SAASipF,EAAO77C,EAAQu5M,GAC5B,IAAI3mP,EAASnxC,KAAKihJ,OAAO9vG,SACzB,GAAIipF,IAAUx3H,EAAa,EACN,IAAbk1R,GAAsB93R,KAAK63L,SAAW73L,KAAK63L,QAAQwuG,iBAAmBjsK,IAAUjpF,EAAOipF,OACvFp6H,KAAK63L,QAAQwuG,gBAAgB74R,IACzB,IAAIqqL,EAAQisG,WAAW9jS,KAAK63L,QAAQquG,iBAAkB,CAAClmS,MAAO,CAACmxC,EAAOipF,SAAS,GAGvF,IAEIm5P,EACAC,EAHAv3W,EAAIjc,KAAKilR,SACTwuG,EAAK,IAAI33P,EAAM7/G,EAAElQ,MAAQ,EAAGkQ,EAAEjQ,OAAS,GAIvCuyE,IACAg1S,EAAan5P,EAAQjpF,EAAOipF,MAC5Bo5P,EAAcv3W,EAAEsiE,SAASptC,OAAOotC,EAAQ,IAAMg1S,GAAYlqG,MAAMoqG,GAChEzzX,KAAKguS,gBAAkBhuS,KAAKguS,gBAAgB5kB,KAAKoqG,EAAYnqG,MAAMptQ,EAAEshH,YACrEv9H,KAAKsN,SAASkmX,IAGlBxzX,KAAKihJ,OAAO9vG,OAAOipF,EAAOq5P,GAC1BzzX,KAAKmH,QAAQ4yC,SAASqgF,MAAQA,EAE1Bp6H,KAAK63L,SAAW73L,KAAK63L,QAAQ2vG,oBAC7BxnS,KAAK63L,QAAQ2vG,mBAAmB7oR,UAGpC3e,KAAKkzX,qBAEDlzX,KAAK63L,SACL73L,KAAK63L,QAAQztL,QAAQ6lX,GAAY,CAAE9gV,KAAMnvC,MAEjD,CAEA,OAAOmxC,CACX,EAEAi1P,YAAa,SAAS1gS,GAClB,IAAiB6B,EAAGwjC,EAAG8uO,EAAK65G,EAAxB58W,EAAS,GAEb,IAAKvP,EAAI,EAAGA,EAAIvH,KAAK04L,WAAWlxL,OAAQD,IAGpC,IADAmsX,EADM1zX,KAAK04L,WAAWnxL,GACX6+R,YACNr7P,EAAI,EAASA,EAAI2oV,EAAKlsX,OAAQujC,IAE/B,GADA8uO,EAAM65G,EAAK3oV,GACC,OAARrlC,EAAe,CACf,IAAImI,EAASgsQ,EAAIhsQ,SACbA,EAAOi1I,OAASj1I,EAAOi1I,OAAS9iJ,MAChC8W,EAAOnV,KAAKk4Q,EAEpB,MAAO,GAAY,MAARn0Q,EAAc,CACrB,IAAI2B,EAASwyQ,EAAIxyQ,SACbA,EAAOy7I,OAASz7I,EAAOy7I,OAAS9iJ,MAChC8W,EAAOnV,KAAKk4Q,EAEpB,MACI/iQ,EAAOnV,KAAKk4Q,GAKxB,OAAO/iQ,CACX,EAEAo8W,mBAAoB,WAChBvwX,EAAEK,KAAKhD,KAAKomS,eAAe,WACvBpmS,KAAK2e,SACT,GACJ,EAOA2oR,aAAc,SAASqsF,GACnB,IAAIpsX,EAAGwlS,EACP,IAAInkS,EAAS+qX,GAQN,OAAIA,aAAuB73P,EACvB40P,GAAiBiD,EAAa3zX,KAAK04L,YAEnC14L,KAAK04L,WAAWlxL,OAASxH,KAAK04L,WAAW,GAAK,KATrD,IADAi7L,EAAcA,EAAYpwU,oBACrBh8C,EAAI,EAAGA,EAAIvH,KAAK04L,WAAWlxL,OAAQD,IAEpC,IADAwlS,EAAM/sS,KAAK04L,WAAWnxL,IACdJ,QAAQ/E,KAAKmhD,qBAAuBowU,EACxC,OAAO5mF,CAQvB,EAEAq6E,YAAa,SAAS34N,GAClB,IAAIxyI,EAAIjc,KAAKilR,SACTphH,EAASpV,EAAK3jJ,OAAO,GAAG+N,cAAgB41I,EAAK5nJ,MAAM,GAEvD,OAAIqC,EAAW+S,EAAE4nJ,IACN7jK,KAAK4zX,gBAAgB33W,EAAE4nJ,MAG3B5nJ,EAAEsiE,QACb,EAEAk/H,OAAQ,SAASt2M,GACb,GAAIA,EAAS,CACT,IACI0sX,EADAC,EAAe9zX,KAAKmH,QAGxBnH,KAAK+zX,YAAYt2K,OAAOz9M,KAAKg0X,eAAe7sX,IAExCnH,KAAKo7R,oBAAoBj0R,EAAS,CAlpBtC,QACC,SACL,IACA,QAgpBQnH,KAAKilR,OAAO,IAAIhoJ,EAAK62P,EAAa1uX,EAAG0uX,EAAa3vX,EAAG2vX,EAAa/nX,MAAO+nX,EAAa9nX,SACtF6nX,GAAe,GAGf1sX,EAAQuxL,aACRo7L,EAAap7L,WAAavxL,EAAQuxL,WAClC14L,KAAKi0X,qBAGTH,EAAetrX,EAAWsrX,EAAc3sX,IAEpCA,EAAQ4yC,UAAY85U,IACpB7zX,KAAKsyX,UAGLwB,EAAantU,SACb3mD,KAAK2mD,QAAQmtU,EAAantU,QAElC,CACJ,EAEAstU,kBAAmB,WACf,IAGIpkG,EACAhiR,EACAxG,EALA++R,EAAcpmS,KAAKomS,cACvBpmS,KAAK04L,WAAa,GAClB14L,KAAK4xX,oBAKL,IAAK,IAAIhoX,EAAM,EAAGA,EAAMw8R,EAAY5+R,OAAQoC,IAExCiE,GADAgiR,EAAauW,EAAYx8R,IACLiE,SACpBxG,EAASwoR,EAAWxoR,SAChBwG,EAAOi1I,OAASj1I,EAAOi1I,QAAU9iJ,KACjC6vR,EAAWhiR,OAAO7N,KAAKsnS,aAAaz5R,EAAO1G,QAAQ/E,OAAS,MACrDiF,EAAOy7I,OAASz7I,EAAOy7I,QAAU9iJ,MACxC6vR,EAAWxoR,OAAOrH,KAAKsnS,aAAajgS,EAAOF,QAAQ/E,OAAS,MAEhEytR,EAAW8S,aAEnB,EAEAvH,oBAAqBvjG,EAAQiiG,mBAE7Bk6F,eAAgB,SAAS7sX,GACrB,MAAO,CACHiH,KAAMjH,EAAQooC,KACd1hC,OAAQ1G,EAAQ0G,OAChBwpL,MAAOlwL,EAAQkwL,MACf3jK,KAAMvsB,EAAQusB,KACdksG,OAAQz4H,EAAQy4H,OAExB,EAEAozP,qBAAsB,WACdhzX,KAAK63L,SACL73L,KAAK63L,QAAQztL,QAAQy2R,EAAkB,CAAE1xP,KAAMnvC,KAAMilR,OAAQjlR,KAAK4tS,QAAQxmS,SAElF,EAEAwsX,gBAAiB,SAASz3P,GACtB,IAAIhrF,EAASnxC,KAAKmxC,SAEdysF,EADS59H,KAAKilR,SACF1nJ,UAMhB,OAJIpsF,EAAOipF,OACP+B,EAAMhrF,OAAOA,EAAOotC,SAAS6qM,KAAKxrJ,GAAK,IAAMzsF,EAAOipF,OAGjD+B,CACX,EAEA02P,mBAAoB,WAChB,IAAI5tG,EAASjlR,KAAKilR,SACdrnJ,EAAKqnJ,EAAO1nJ,UACZO,EAAKmnJ,EAAOznJ,cAEhB,OAAOP,EAAKe,WAAWh+H,KAAK63L,QAAQ+4G,YAAYhzK,GAAK59H,KAAK63L,QAAQ+4G,YAAY9yK,GAClF,EAEAg1P,eAAgB,WACZ,IAAI7tG,EAASjlR,KAAKilR,SAASkF,cAAcnqR,KAAKmxC,SAASipF,OACnDwD,EAAKqnJ,EAAO1nJ,UACZO,EAAKmnJ,EAAOznJ,cAEhB,OAAOP,EAAKe,WAAWJ,EAAIE,EAC/B,EAEAw0P,QAAS,WACL,IAAIv4U,EAAW/5C,KAAKmH,QAAQ4yC,SAExBA,GAAYA,EAASqgF,OACrBp6H,KAAKmxC,OAAO4I,EAASqgF,OAGzBp6H,KAAKguS,gBAAkB,IAAIlyK,CAC/B,EAEAy/J,OAAQ,SAAS7yR,GACb,IAAIvB,EAAUnH,KAAKmH,QACfkwL,EAAQlwL,EAAQkwL,MAChBz3D,EAASz4H,EAAQy4H,OACjBlsG,EAAOvsB,EAAQusB,KAEfhrB,GAAS89Q,EAAUnvF,EAAMz3D,UACzBA,EAASp3H,EAAW,CAAC,EAAGo3H,EAAQy3D,EAAMz3D,SAGtCl3H,GAAS89Q,EAAUnvF,EAAM3jK,QACzBA,EAAO2jK,EAAM3jK,MAGjB1zB,KAAK+zX,YAAYt2K,OAAO,CACpB79E,OAAQA,EACRlsG,KAAMA,IAGNvsB,EAAQynD,UAAYznD,EAAQynD,SAASqpO,SACrCj4R,KAAK63L,QAAQq8L,gBAAgBl0X,KAAM0I,EAE3C,EAEAu9R,SAAU,SAASv9R,GACf,GAAI1I,KAAKgN,UAAW,CAChB,IAA4BmnX,EAAxBlvG,EAASjlR,KAAKilR,SACd7qJ,EAAQp6H,KAAKmxC,SAASipF,MAE1B,GAAI1xH,EAAMm+K,UAAYn+K,EAAMm+K,UACxB,OAAOokG,EAAUE,MAAMziR,EAAOu8Q,EAAQ7qJ,GAAgB,GAGtD,GADA+5P,EAAezrX,EAAMtB,QAAQ+pC,OAAO8zO,EAAO1mM,SAAU67C,GACjD6qJ,EAAO1vP,SAAS4+V,GAChB,OAAOn0X,IAGnB,CACJ,EAEAmS,OAAQ,WACJ,MAAO,CACHo/W,QAASvxX,KAAKmH,QAAQkpB,GAE9B,EAEAqhW,kBAAmB,WACf,IAIIqC,EAkvIe9yO,EACnBtjB,EAvvIIx2H,EAAUnH,KAAKmH,QACf2mK,EAAgB9tK,KAAKg0X,eAAe7sX,GACpCitX,EAAiBjtX,EAAQ85I,OACzBv7I,GAAQyB,EAAQzB,KAAO,IAAI69C,oBAG/BuqH,EAAc/hK,MAAQ5E,EAAQ4E,MAC9B+hK,EAAc9hK,OAAS7E,EAAQ6E,OAE3B9C,EAAWkrX,GACXL,EAAcK,EAAe7pX,KAAKvK,KAAMmH,GACjC2mK,EAAc1/J,MACrB2lX,EAAc,IAAIxlP,EAAKu/B,GA4uIT,KADlBnwC,GADmBsjB,EAzuIG8yO,GA0uIRz4F,mBAAmBh8J,YAAY,OACxCtmF,OAAO5zC,GAA6B,IAAlBu4H,EAAK3kF,OAAO70C,GACnC88I,EAAO3zI,UAAUqwH,EAAK3kF,OAAO5zC,GAAIu4H,EAAK3kF,OAAO70C,IA1uIzC4vX,EADe,aAARruX,EACO,IAAIi3R,EAAU7uH,GACb,UAARpoK,EACO,IAAIy6H,EAAO2tC,GACV,QAARpoK,EACO,IAAIw2R,EAAUpuH,GACb,SAARpoK,EACO,IAAI2qI,EAAMy9B,GAEV,IAAIv/B,EAAKu/B,GAG3B9tK,KAAK+zX,YAAcA,EACnB/zX,KAAKihJ,OAAO9mG,OAAOn6C,KAAK+zX,YAC5B,IAMA1qF,GAAa0nF,GAAehuX,OAAO,CACnCoF,KAAM,SAAS4T,EAAMuiB,EAAIn3B,GACrB,IAAIc,EAAOjI,KACX+wX,GAAehpX,GAAGI,KAAKoC,KAAKtC,EAAMd,GAClCnH,KAAKyxX,yBACLzxX,KAAKq0X,cACLpsX,EAAKsnC,KAAO,IAAIsoJ,EAAQ8mG,SAAS12R,EAAKd,SACtCc,EAAKsnC,KAAK7b,KA90BA,eA+0BVzrB,EAAKg5I,OAAO9mG,OAAOlyC,EAAKsnC,MACxBtnC,EAAKqsX,aAAersX,EAAKssX,aAAe,IAAIz4P,EAC5C7zH,EAAKusX,WAAWz4W,GAChB9T,EAAKwsX,WAAWn2V,GAChBr2B,EAAK0+C,QAAQ1+C,EAAKd,QAAQw/C,SAC1B1+C,EAAKysX,SAAW,GACZ59P,EAAQ3vH,IAAYA,EAAQi8H,QAC5Bn7H,EAAKm7H,OAAOj8H,EAAQi8H,OAE5B,EAEAj8H,QAAS,CACLkwL,MAAO,CACHz3D,OAAQ,CAAC,GAEb+9J,SAAUjlJ,GACVklJ,OAAQllJ,GACRtV,OAAQ,GACRm0D,YAAY,EACZo9L,cAAepjV,EACfqjV,YAAarjV,GAGjBsgV,qBAAsB,SAAS3oU,GAC3BlpD,KAAKyxX,uBAAuBvoU,GAASlpD,KAAKy+D,SAC9C,EAEAgzT,uBAAwB,SAASvoU,GAC7B,GAAIlpD,KAAK63L,SAAW73L,KAAK63L,QAAQo6L,YAAa,CAC1C,IAAI4C,EAAU70X,KAAK63L,QAAQi9L,SACvB3tX,EAixGhB,SAAkCs3D,GAC9B,IAAI3nD,EAAS,CAAC,EAIVggH,GAFJr4D,EAAWA,GAAY,CAAC,GAEH39B,OAA2B,OAAlB29B,EAAS39B,OACnChqB,EAAO6vC,QAAU8X,EAAS39B,MAG1Bg2F,EAAQr4D,EAAS/4D,OAA2B,OAAlB+4D,EAAS/4D,OACnCoR,EAAOpR,KAAO+4D,EAAS/4D,MAGvBoxH,EAAQr4D,EAAS1iD,OAA2B,OAAlB0iD,EAAS1iD,OACnCjF,EAAOiF,KAAO0iD,EAAS1iD,MAGvB+6G,EAAQr4D,EAASk2T,gBAA6C,OAA3Bl2T,EAASk2T,gBAC5C79W,EAAO69W,cAAgBl2T,EAASk2T,eAGhC79P,EAAQr4D,EAASs2T,QAA6B,OAAnBt2T,EAASs2T,QACpCj+W,EAAOi+W,MAAQt2T,EAASs2T,OAGxBj+P,EAAQr4D,EAASu2T,QAA6B,OAAnBv2T,EAASu2T,QACpCl+W,EAAOk+W,MAAQv2T,EAASu2T,OAGxBl+P,EAAQr4D,EAASngC,KAAuB,OAAhBmgC,EAASngC,KACjCxnB,EAAOwnB,GAAKmgC,EAASngC,IAGrBw4F,EAAQr4D,EAASm2T,cAAyC,OAAzBn2T,EAASm2T,cAC1C99W,EAAO89W,YAAcn2T,EAASm2T,aAG9B99P,EAAQr4D,EAASw2T,MAAyB,OAAjBx2T,EAASw2T,MAClCn+W,EAAOm+W,IAAMx2T,EAASw2T,KAGtBn+P,EAAQr4D,EAASy2T,MAAyB,OAAjBz2T,EAASy2T,MAClCp+W,EAAOo+W,IAAMz2T,EAASy2T,KAG1B,OAAOp+W,CACX,CA/zG0Bq+W,CAAyBjsU,GAASlpD,KAAKy+D,UAErD,GAAIvV,EAAO,CACP,GAAI4tE,EAAQ3vH,EAAQ4U,MAAO,CACvB,IAAIA,EAAO84W,EAAQ1tX,EAAQ4U,MACvBA,GAAQ+6G,EAAQ3vH,EAAQwtX,iBACzB54W,EAAOA,EAAKurR,aAAangS,EAAQwtX,gBAEpC30X,KAAK6N,OAAOkO,EAChB,MAAW+6G,EAAQ3vH,EAAQ4tX,QAAUj+P,EAAQ3vH,EAAQ6tX,QACjDh1X,KAAK6N,OAAO,IAAIiuH,EAAM30H,EAAQ4tX,MAAO5tX,EAAQ6tX,QAGjD,GAAIl+P,EAAQ3vH,EAAQm3B,IAAK,CACrB,IAAIA,EAAKu2V,EAAQ1tX,EAAQm3B,IACrBA,GAAMw4F,EAAQ3vH,EAAQytX,eACtBt2V,EAAKA,EAAGgpQ,aAAangS,EAAQytX,cAEjC50X,KAAKqH,OAAOi3B,EAChB,MAAWw4F,EAAQ3vH,EAAQ8tX,MAAQn+P,EAAQ3vH,EAAQ+tX,MAC/Cl1X,KAAKqH,OAAO,IAAIy0H,EAAM30H,EAAQ8tX,IAAK9tX,EAAQ+tX,MAG3Cp+P,EAAQ3vH,EAAQzB,OAAS1F,KAAK0F,SAAWyB,EAAQzB,OACjD1F,KAAKojI,OAAO,IACZpjI,KAAK0F,KAAKyB,EAAQzB,OAGtB1F,KAAKy+D,SAAWvV,EAEhBlpD,KAAK0gJ,YACL1gJ,KAAKy9M,OAAOz9M,KAAKmH,QACrB,MACInH,KAAKmH,QAAUqB,EAAW,CAAC,EAAGrB,EAASnH,KAAKmH,QAEpD,CACJ,EAEAw7R,YAAa,SAASwvF,GAClB,GAAInyX,KAAK63L,SAAW73L,KAAK63L,QAAQo6L,aACzBjyX,KAAK63L,QAAQu9L,sBAAuB,CACpC,IAAIlsU,EAAQlpD,KAAK63L,QAAQu9L,sBAAsBv4T,SAAS78D,KAAKy+D,SAAS/Q,KAElExE,IACAlpD,KAAK63L,QAAQu6L,uBACTt7P,EAAQ92H,KAAKmH,QAAQ4tX,QAAiC,OAAvB/0X,KAAKmH,QAAQ4tX,OAC5CM,GAAW,OAAQnsU,GACnBmsU,GAAW,gBAAiBnsU,GAC5BA,EAAMh5B,IAAI,QAASlwB,KAAKmH,QAAQ4tX,OAChC7rU,EAAMh5B,IAAI,QAASlwB,KAAKmH,QAAQ6tX,SAEhC9rU,EAAMh5B,IAAI,OAAQlwB,KAAKmH,QAAQ4U,MAC3B+6G,EAAQ5tE,EAAMyrU,gBACdzrU,EAAMh5B,IAAI,gBAAiBlwB,KAAKonS,gBAAkBpnS,KAAKonS,gBAAgBjgS,QAAQ/E,KAAO,MAE1FizX,GAAW,QAASnsU,GACpBmsU,GAAW,QAASnsU,IAGpB4tE,EAAQ92H,KAAKmH,QAAQ8tX,MAA6B,OAArBj1X,KAAKmH,QAAQ8tX,KAC1CI,GAAW,KAAMnsU,GACjBmsU,GAAW,cAAensU,GAC1BA,EAAMh5B,IAAI,MAAOlwB,KAAKmH,QAAQ8tX,KAC9B/rU,EAAMh5B,IAAI,MAAOlwB,KAAKmH,QAAQ+tX,OAE9BhsU,EAAMh5B,IAAI,KAAMlwB,KAAKmH,QAAQm3B,IACzBw4F,EAAQ5tE,EAAM0rU,cACd1rU,EAAMh5B,IAAI,cAAelwB,KAAKgjS,gBAAkBhjS,KAAKgjS,gBAAgB77R,QAAQ/E,KAAO,MAExFizX,GAAW,MAAOnsU,GAClBmsU,GAAW,MAAOnsU,IAGlB4tE,EAAQ92H,KAAKmH,QAAQzB,OAASoxH,EAAQ5tE,EAAMxjD,OAC5CwjD,EAAMh5B,IAAI,OAAQlwB,KAAKmH,QAAQzB,MAGnC1F,KAAKy+D,SAAWvV,EAChBlpD,KAAK63L,QAAQw6L,sBAETF,GACAnyX,KAAK63L,QAAQ0vG,yBAGzB,CAER,EAOAiD,YAAa,WACT,OAAOxqS,KAAKsqS,yBAA2BtqS,KAAKsqS,yBAAyBh9R,WAAatN,KAAKs0X,YAC3F,EAEAE,WAAY,SAAS3mX,GACjB,IAEI4wD,EAFA62T,EAAcznX,aAAkBw5R,GAChCkuF,EAAmBv1X,KAAKmH,QAAQwtX,eAAiBpjV,EAEjD+jV,IAAgBznX,EAAOy5R,aAAaiuF,KAIpC1nX,IAAWjL,IACX5C,KAAK+b,KAAOlO,GAGhB7N,KAAKw1X,6BAEU,OAAX3nX,EACI7N,KAAKonS,kBACLpnS,KAAKs0X,cAAgBt0X,KAAKsqS,0BAA4BtqS,KAAKonS,iBAAiB95R,WAC5EtN,KAAKy1X,wBACLz1X,KAAK01X,gBAAgB,KAAM11X,KAAKs0X,eAE7BzmX,aAAkByjX,KACzB7yT,EAAW5wD,EAAOi1I,MAAMrkF,WAEpBz+D,KAAK01X,gBAAgBj3T,EAASpuC,IAElCrwB,KAAKonS,gBAAkBv5R,EACvB7N,KAAKonS,gBAAgBhB,YAAYzkS,KAAK3B,OAC/B6N,aAAkBiuH,GACzB97H,KAAK01X,gBAAgB,KAAM7nX,GAC3B7N,KAAKs0X,aAAezmX,EAChB7N,KAAKonS,iBACLpnS,KAAKy1X,yBAGFH,KACP72T,EAAW5wD,EAAO4wD,WAEdz+D,KAAK01X,gBAAgBj3T,EAASpuC,IAGlCrwB,KAAKonS,gBAAkBv5R,EAAOy5R,aAAaiuF,GAC3Cv1X,KAAKonS,gBAAgBhB,YAAYzkS,KAAK3B,OAE9C,EAEA6N,OAAQ,SAASA,EAAQiqR,GAQrB,OAPItR,EAAU34Q,KACNiqR,GAAY93R,KAAK63L,SACjB73L,KAAK63L,QAAQwuG,gBAAgBtB,iBAAiB,IAAIltG,EAAQsqG,mBAAmBniS,KAAM6N,IAEvF7N,KAAKw0X,WAAW3mX,GAChB7N,KAAK2e,WAEF3e,KAAKonS,gBAAkBpnS,KAAKonS,gBAAkBpnS,KAAKs0X,YAC9D,EAEAoB,gBAAiB,SAAS35W,EAAMupM,GAC5BtlN,KAAKmH,QAAQ4U,KAAOA,EAChBupM,GACAtlN,KAAKmH,QAAQ4tX,MAAQzvK,EAAUlgN,EAC/BpF,KAAKmH,QAAQ6tX,MAAQ1vK,EAAUnhN,IAE/BnE,KAAKmH,QAAQ4tX,MAAQ,KACrB/0X,KAAKmH,QAAQ6tX,MAAQ,KAE7B,EAQAW,cAAe,SAASjtX,GACpB,IAAIA,EAYA,OAHK1I,KAAK41X,iBACN51X,KAAK41X,eAAiB,IAAI/9L,EAAQqyF,YAAYlqR,KAAKwqS,cAAe,KAAM,OAErExqS,KAAK41X,eAXZ,KAAIltX,aAAiBmvL,EAAQqyF,aAKzB,KAAM,+CAJNxhR,EAAM8jB,KAAO,KACbxsB,KAAK41X,eAAiBltX,EACtB1I,KAAK6N,OAAOnF,EAAMyzH,MAU9B,EAKAsuK,YAAa,WACT,OAAOzqS,KAAKuqS,yBAA2BvqS,KAAKuqS,yBAAyBj9R,WAAatN,KAAKu0X,YAC3F,EAEAE,WAAY,SAASptX,GACjB,IAEIo3D,EAFAo3T,EAAcxuX,aAAkBggS,GAChCkuF,EAAmBv1X,KAAKmH,QAAQytX,aAAerjV,EAG/CskV,IAAgBxuX,EAAOigS,aAAaiuF,KAIpCluX,IAAWzE,IACX5C,KAAKs+B,GAAKj3B,GAGdrH,KAAK81X,6BAEU,OAAXzuX,EACIrH,KAAKgjS,kBACLhjS,KAAKu0X,cAAgBv0X,KAAKuqS,0BAA4BvqS,KAAKgjS,iBAAiB11R,WAC5EtN,KAAK+1X,wBACL/1X,KAAKg2X,cAAc,KAAMh2X,KAAKu0X,eAE3BltX,aAAkBiqX,KACzB7yT,EAAWp3D,EAAOy7I,MAAMrkF,WAEpBz+D,KAAKg2X,cAAcv3T,EAASpuC,IAEhCrwB,KAAKgjS,gBAAkB37R,EACvBrH,KAAKgjS,gBAAgBoD,YAAYzkS,KAAK3B,OAC/BqH,aAAkBy0H,GACzB97H,KAAKg2X,cAAc,KAAM3uX,GACzBrH,KAAKu0X,aAAeltX,EAChBrH,KAAKgjS,iBACLhjS,KAAK+1X,yBAEFF,KACPp3T,EAAWp3D,EAAOo3D,WAEdz+D,KAAKg2X,cAAcv3T,EAASpuC,IAEhCrwB,KAAKgjS,gBAAkB37R,EAAOigS,aAAaiuF,GAC3Cv1X,KAAKgjS,gBAAgBoD,YAAYzkS,KAAK3B,OAE9C,EAEAqH,OAAQ,SAASA,EAAQywR,GASrB,OARItR,EAAUn/Q,KACNywR,GAAY93R,KAAK63L,SACjB73L,KAAK63L,QAAQwuG,gBAAgBtB,iBAAiB,IAAIltG,EAAQsqG,mBAAmBniS,KAAM4C,EAAayE,IAEpGrH,KAAKy0X,WAAWptX,GAEhBrH,KAAK2e,WAEF3e,KAAKgjS,gBAAkBhjS,KAAKgjS,gBAAkBhjS,KAAKu0X,YAC9D,EAEAyB,cAAe,SAAS13V,EAAIinL,GACxBvlN,KAAKmH,QAAQm3B,GAAKA,EACdinL,GACAvlN,KAAKmH,QAAQ8tX,IAAM1vK,EAAQngN,EAC3BpF,KAAKmH,QAAQ+tX,IAAM3vK,EAAQphN,IAE3BnE,KAAKmH,QAAQ8tX,IAAM,KACnBj1X,KAAKmH,QAAQ+tX,IAAM,KAE3B,EAQAe,cAAe,SAASvtX,GACpB,IAAIA,EAYA,OAHK1I,KAAKk2X,iBACNl2X,KAAKk2X,eAAiB,IAAIr+L,EAAQqyF,YAAYlqR,KAAKyqS,cAAe,KAAM,OAErEzqS,KAAKk2X,eAXZ,KAAIxtX,aAAiBmvL,EAAQqyF,aAKzB,KAAM,+CAJNxhR,EAAM+jB,MAAQ,KACdzsB,KAAKk2X,eAAiBxtX,EACtB1I,KAAKqH,OAAOqB,EAAMyzH,MAU9B,EAEA83P,kBAAmB,WACfj0X,KAAK0iS,iBAAiB1iS,KAAK6N,SAAU,UACrC7N,KAAK0iS,iBAAiB1iS,KAAKqH,SAAU,SACzC,EAEAq7R,iBAAkB,SAAS/6Q,EAAUvlB,GACjC,IAAI6F,EAAOjI,KACP63L,EAAU5vL,EAAK4vL,QACnB,GAAIlwK,aAAoB2pW,KAAcz5L,EAAQypG,aAAa35Q,EAASm7H,MAAMzyH,IAAK,CAC3E,IAAIouC,EAAW92C,EAASm7H,MAAMrkF,SAC1B03T,EAAgBxuW,EAASxgB,QAAQ/E,KACjCg0X,EAAe,WACf,IAAItzO,EAAQ+0C,EAAQi9L,SAASr2T,EAASpuC,IACtC1I,EAAWm7H,EAAMwkJ,aAAa6uF,GAC9BluX,EAAK7F,GAAMulB,GAAU,GACrB1f,EAAK06R,aACT,EACA,GAAI9qG,EAAQi9L,SAASr2T,EAASpuC,IAC3B+lW,QACI,CACH,IAAIC,EAAex+L,EAAQy+L,oBAAoBz5T,SAAS4B,EAAS/Q,KAC7D2oU,GACAx+L,EAAQ0+L,2BAA2B50X,KAAK00X,EAAaG,WAAWJ,GAExE,CACJ,MACInuX,EAAK7F,GAAMulB,GAAU,EAE7B,EAEAg/B,QAAS,SAASA,GACd,IAAI7vC,EAAS9W,KAAKmpT,SAASxiQ,GAI3B,OAHImwE,EAAQnwE,IACR3mD,KAAKuyX,gBAEFz7W,CACX,EAEAq6W,qBAAsB,SAAShqX,GAC3B,IAAI85I,EAaJ,OAZI/3I,EAAW/B,EAAQ85I,QACnBA,EAAS95I,EAAQ85I,OAAO12I,KAAKvK,KAAMmH,GAC5BA,EAAQ25B,OACfmgH,EAAS,IAAIi7I,EAAU/0R,IAGvB85I,IACAjhJ,KAAKixX,eAAiBhwO,EACtBA,EAAOw+I,gBAAiB,EACxBz/R,KAAKihJ,OAAO9mG,OAAO8mG,IAGhBA,CACX,EAEAiwO,qBAAsB,SAAS/pX,GACvB+B,EAAW/B,EAAQ85I,SACnBjhJ,KAAKihJ,OAAO50I,OAAOrM,KAAKixX,gBACxBjxX,KAAKmxX,qBAAqBhqX,IAE1BnH,KAAKixX,eAAexzK,OAAOt2M,EAEnC,EAEAorX,cAAe,WACX,GAAIvyX,KAAKixX,eAAgB,CAMrB,IALA,IAAInzW,EA9rCgB,EA+rChBslH,EAASpjI,KAAK8tM,YACdsC,EAAShtM,EAAK0N,MAAMsyH,EAAO57H,OAAS,GACpC2oM,EAAWC,EAAS,EAEjBD,EAAW,GAAK/sE,EAAO+sE,GAAUh/I,OAAOiyE,EAAOgtE,KAClDD,IACAC,IAGJ,IAeIj0E,EAfAsH,EAAWL,EAAOgtE,GAClBhsE,EAAahB,EAAO+sE,GAEpBhiE,EAAcnuI,KAAKixX,eAAezxN,WAClCzzJ,EAAQoiI,EAAYpiI,MACpBC,EAASmiI,EAAYniI,OACrByqX,EAAcrzP,EAAO57H,OAAS,GAAM,EACpCg3E,EAAW4lD,EAAW9H,WAAWmH,GAUrC,GARIgzP,GAAerzP,EAAO57H,OAAS,GAAKg3E,EAAW,IAC7C4lD,EAAWjgI,IAAMs/H,EAASt/H,GAAKq6E,EAAWzyE,GAAWq4H,EAAWh/H,IAAMq+H,EAASr+H,GAAKo5E,EAAWxyE,KACjGyqX,GAAc,EACd34W,EAAS,GAKT24W,EAAa,CACb,IAAIr8P,EAAQqd,EAAKjwB,KAAK8P,IAAIl0H,EAAKywC,MAAM4vF,EAASt/H,EAAIigI,EAAWjgI,EAAGs/H,EAASr+H,EAAIg/H,EAAWh/H,IACxF+2H,EAAQ,IAAIL,GAAO2H,EAASr+H,EAAIg/H,EAAWh/H,GAAK,EAAIg/H,EAAWh/H,GAAIq+H,EAASt/H,EAAIigI,EAAWjgI,GAAK,EAAIigI,EAAWjgI,GAEvF,KAApBf,EAAKqU,IAAI2iH,IACT+B,EAAM/2H,GAAK0Y,EACXq+G,EAAMh4H,GAAK6H,EAAS,GACbouH,EAAQ,KAAQ,GACvB+B,EAAM/2H,GAAK2G,EAAQ,EACnBowH,EAAMh4H,GAAK6H,EAAS8R,GACbs8G,GAAS,IAAO,EAAIA,GAASA,EAAQ,GAC5C+B,EAAMh4H,GAAK6H,GACJouH,EAAQ,GAAKA,EAAQ,MAC5B+B,EAAM/2H,GAAK2G,EACXowH,EAAMh4H,GAAK6H,EAEnB,KAAO,CACH,IAAI0qX,EAAStzX,EAAK0N,MAAMsyH,EAAO57H,OAAS,GACxC20H,EAAQiH,EAAOszP,GAAQtvX,QACvBg9H,EAAahB,EAAOszP,EAAS,GAC7BjzP,EAAWL,EAAOszP,EAAS,GAE3B,IAAInvS,EAAU68C,EAAWh/H,GAAK+2H,EAAM/2H,GAAKq+H,EAASr+H,GAAK+2H,EAAM/2H,EAAI0Y,GAAUqwH,EAAYpiI,MAAQ+R,EAC3F0pE,EAAU48C,EAAWjgI,GAAKg4H,EAAMh4H,GAAKs/H,EAASt/H,GAAKg4H,EAAMh4H,EAAI2Z,GAAUqwH,EAAYniI,OAAS8R,EAEhGq+G,EAAM/2H,GAAKmiF,EACX40C,EAAMh4H,GAAKqjF,CACf,CAEAxnF,KAAKixX,eAAe3jX,SAAS6uH,EACjC,CACJ,EAMA51F,OAAQ,SAAS79B,GACb,IAA4BgqE,EAAU0gT,EAAlCv7L,EAAU73L,KAAK63L,QACnB,GAAI73L,KAAKqxX,cACDrxX,KAAKumS,aAAe79R,EAyBpB,OAxBA1I,KAAKumS,WAAa79R,EAClBgqE,EAAW,GACX0gT,EAAa,GACTpzX,KAAKumS,YACLvmS,KAAKojS,QAAU,IAAI4I,EAAsBhsS,KAAMA,KAAKmH,QAAQ++B,WAC5D2xJ,EAAQ64G,OAAO1wS,KAAKojS,SAAS,GAC7BvrG,EAAQuxG,eAAeznS,KAAK3B,MAC5B0yE,EAAS/wE,KAAK3B,OAEVA,KAAKojS,UACLvrG,EAAQ64G,OAAO1wS,KAAKojS,SAAS,GAC7B9c,EAAMj6Q,OAAOwrL,EAAQuxG,eAAgBppS,MACrCA,KAAKojS,QAAUxgS,EACfwwX,EAAWzxX,KAAK3B,OAIpBA,KAAKojS,SACLpjS,KAAKojS,QAAQzkR,UAGZk5K,EAAQw7L,oBACTx7L,EAAQy7L,kBAAkB5gT,EAAU0gT,IAEjC,CAGnB,EAOAnuG,OAAQ,SAASv8Q,GACb,IAAIA,GAAUE,EAASF,GAGnB,OAAO1I,KAAK4tS,QAFZ5tS,KAAK4tS,QAAUllS,CAIvB,EAMAhD,KAAM,SAASgD,GACX,IAAIvB,EAAUnH,KAAKmH,QACnB,IAAIuB,EAOA,OAAOvB,EAAQzB,KANXgD,IAAUvB,EAAQzB,OAClByB,EAAQzB,KAAOgD,EACf1I,KAAKq0X,cACLr0X,KAAK2e,UAKjB,EAEA01W,YAAa,WACT,IAAI3uX,GAAQ1F,KAAKmH,QAAQzB,MAAQ,IAAImT,cAEjC7Y,KAAK22X,QADLjxX,GAAQqqX,EACO,IAAI9lF,EAAgBjqS,MAEpB,IAAIgqS,EAAehqS,KAE1C,EAQAojI,OAAQ,SAAS16H,GACb,IAAIA,EAaG,CACH,IAAIkuX,EAAM,GACV,GAAIpwG,EAAUxmR,KAAK00X,UACf,IAAK,IAAI5vX,EAAI,EAAGA,EAAI9E,KAAK00X,SAASltX,OAAQ1C,IACtC8xX,EAAIj1X,KAAK3B,KAAK00X,SAAS5vX,GAAGq3H,OAGlC,OAAOy6P,CACX,CApBI52X,KAAK00X,SAAW,GAChB,IAAK,IAAIntX,EAAI,EAAGA,EAAImB,EAAMlB,OAAQD,IAAK,CACnC,IAAImwC,EAAahvC,EAAMnB,GACvB,GAAImwC,aAAsBmgJ,EAAQ/7D,MAC9B97H,KAAK00X,SAAS/yX,KAAK,IAAIk2L,EAAQqyF,YAAYxyO,QACxC,KAAIA,EAAWzoC,eAAe,OAAQyoC,EAAWzoC,eAAe,KAGnE,KAAM,+EAFNjP,KAAK00X,SAAS/yX,KAAK,IAAIk2L,EAAQqyF,YAAY,IAAIpuJ,EAAMpkF,EAAWtyC,EAAGsyC,EAAWvzC,IAGlF,CACJ,CAWR,EAKA2pM,UAAW,WACP,IAAI8oL,EAAM,CAAC52X,KAAKwqS,eAChB,GAAIxqS,KAAK00X,SACL,IAAK,IAAI5vX,EAAI,EAAGA,EAAI9E,KAAK00X,SAASltX,OAAQ1C,IACtC8xX,EAAIj1X,KAAK3B,KAAK00X,SAAS5vX,GAAGq3H,OAIlC,OADAy6P,EAAIj1X,KAAK3B,KAAKyqS,eACPmsF,CACX,EAEAj4W,QAAS,WACL3e,KAAK62X,qBACL72X,KAAK82X,eACL92X,KAAKuyX,gBAEDvyX,KAAKojS,SACLpjS,KAAKojS,QAAQzkR,SAErB,EAEAk4W,mBAAoB,WAChB,IACIrsF,EAAaC,EACbssF,EAAkBC,EAFlBnnG,EAAa7vR,KAGb6N,EAASgiR,EAAWhiR,SACpBxG,EAASwoR,EAAWxoR,SAEpBwG,aAAkBiuH,EAClB0uK,EAAc38R,EACPA,aAAkByjX,KAErByF,EADAtG,GAAgB5iX,GACGA,EAAOi1I,MAAM41C,WAEb,CAAC7qL,IAIxBxG,aAAkBy0H,EAClB2uK,EAAcpjS,EACPA,aAAkBiqX,KAErB0F,EADAvG,GAAgBppX,GACGA,EAAOy7I,MAAM41C,WAEb,CAACrxL,IAIxBmjS,EACIwsF,IACAnnG,EAAW0a,yBAA2BmmF,GAAiBlmF,EAAawsF,IAEjED,IACHtsF,EACA5a,EAAWya,yBAA2BomF,GAAiBjmF,EAAassF,GAC7DC,GACPh3X,KAAKi3X,uBAAuBF,EAAkBC,GAG1D,EAEAC,uBAAwB,SAASF,EAAkBC,GAC/C,IAEIE,EAAsBC,EACtB3sF,EAAaC,EACb2sF,EAAWC,EACXjwF,EAAiBpE,EACjBs0F,EAAWC,EACXluN,EAPAmuN,EAAiBxH,GACjBt0E,EAAUs0E,GAQd,IAAKsH,EAAY,EAAGA,EAAYP,EAAiBvvX,OAAQ8vX,IAErD,IAAK7G,GADLrpF,EAAkB2vF,EAAiBO,IAI/B,IAFA9sF,EAAcpD,EAAgB95R,WAEzBiqX,EAAY,EAAGA,EAAYP,EAAiBxvX,OAAQ+vX,IAEhD9G,GADLztF,EAAkBg0F,EAAiBO,MAE/B9sF,EAAczH,EAAgB11R,YAC9B+7J,EAAOjmK,EAAKkT,MAAMk0R,EAAYluK,WAAWmuK,KAE9B+sF,GAAkBx3X,KAAK63L,SAAW73L,KAAKy3X,iBAAiBjtF,EAAaC,EAAarD,EAAiBpE,KAC1Gw0F,EAAiBnuN,EACjB6tN,EAAuB9vF,EACvB+vF,EAAuBn0F,GAGvB35H,EAAOqyI,IACP07E,EAAYhwF,EACZiwF,EAAYr0F,EACZ0Y,EAAUryI,IAO1B6tN,IACAE,EAAYF,EACZG,EAAYF,GAGhBn3X,KAAKsqS,yBAA2B8sF,EAChCp3X,KAAKuqS,yBAA2B8sF,CACpC,EAEAI,iBAAkB,SAASjtF,EAAaC,EAAarD,EAAiBpE,GAClE,IAAI00F,EAAS13X,KAAK22X,QACdgB,GAAY,EAChB,GAAID,aAAkBztF,EAAiB,CACnC,IACIn0R,EAAOnK,EACN2gF,EAAMsrS,EAFPx0P,EAASs0P,EAAOvtF,YAAYK,EAAaC,EAAarD,EAAiBpE,GAI3E40F,EAAU53X,KAAK63X,iBAAiBrtF,EAAaC,EAAarD,EAAgBtkJ,MAAOkgJ,EAAgBlgJ,OACjG1f,EAAOj5H,QAAQqgS,GACfpnK,EAAOzhI,KAAK8oS,GAGZ,IAAK,IAAI7gS,EAAM,EAAGA,EAAMw5H,EAAO57H,OAAQoC,IAcnC,GAbAkM,EAAQstH,EAAOx5H,EAAM,GACrB+B,EAAMy3H,EAAOx5H,IACb0iF,EAAO,IAAI2wC,EAAK75H,EAAKsT,IAAIZ,EAAM1Q,EAAGuG,EAAIvG,GAAIhC,EAAKsT,IAAIZ,EAAM3R,EAAGwH,EAAIxH,GAChDf,EAAKqU,IAAI3B,EAAM1Q,EAAIuG,EAAIvG,GAAIhC,EAAKqU,IAAI3B,EAAM3R,EAAIwH,EAAIxH,KACzD4H,MAAQ,IACbugF,EAAKlnF,IACLknF,EAAKvgF,OAAS,GAEdugF,EAAKtgF,OAAS,IACdsgF,EAAKnoF,IACLmoF,EAAKtgF,QAAU,IAGdsgF,EAAKu6F,WAAa7mL,KAAK63L,QAAQigM,gBAAgBC,YAAYzrS,EAAMsrS,GAAU,CAC5ED,GAAY,EACZ,KACJ,CAER,CACA,OAAOA,CACX,EAEAE,iBAAkB,SAASrtF,EAAaC,EAAanS,EAAaC,GAC9D,IAAIq/F,EAAU,GAOd,OANI53X,KAAKg4X,oBAAoBxtF,EAAalS,IACtCs/F,EAAQj2X,KAAK22R,GAEbt4R,KAAKg4X,oBAAoBvtF,EAAalS,IACtCq/F,EAAQj2X,KAAK42R,GAEVq/F,CACX,EAEAI,oBAAqB,SAAS77P,EAAO2mB,GACjC,IAA6BqxO,EAEzBhpF,EAAQC,EAFRnmB,EAASniI,EAAMmiI,SACf7qJ,EAAQ0oB,EAAM3xG,SAASipF,MAEvB69P,EAAUhzG,EAAO7/Q,EACjB8yX,EAAUjzG,EAAO9gR,EAKrB,OAFAgnS,GADAgpF,EAAeh4P,EAAM/0H,QAAQ+pC,OAAO8zO,EAAO1mM,SAAU67C,IAC/Bh1H,EACtBgmS,EAAS+oF,EAAahwX,EACfgnS,EAAS8sF,GAAW9sF,EAAU8sF,EAAUhzG,EAAOl5Q,OAAUq/R,EAAS8sF,GAAW9sF,EAAU8sF,EAAUjzG,EAAOj5Q,MACnH,EAEAyxM,OAAQ,SAASt2M,GACb,GAAIA,EAAS,CACTnH,KAAKmH,QAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAASA,GAE5C,IAAIi8H,EAASpjI,KAAKmH,QAAQi8H,OAEtBtM,EAAQsM,IAAWA,EAAO57H,OAAS,IACnCxH,KAAKojI,OAAOA,GACZpjI,KAAK82X,iBAGJ3vX,GAAWA,EAAQw/C,SAAYx/C,EAAQ25B,OACxC9gC,KAAK2mD,QAAQx/C,EAAQw/C,SAGzB3mD,KAAKuvC,KAAKkuK,OAAO,CACb/pL,KAAMvsB,EAAQusB,KACdksG,OAAQz4H,EAAQy4H,OAChB+9J,SAAUx2R,EAAQw2R,SAClBC,OAAQz2R,EAAQy2R,QAExB,CACJ,EAKAx2R,MAAO,WACH,IAAI2kD,EAAO/rD,KAAKopD,YAMhB,OAJIppD,KAAK63L,SAAW73L,KAAK63L,QAAQo6L,aAAen7P,EAAQ92H,KAAKy+D,YACzD1S,EAAK5kD,QAAQs3D,SAAW00T,GAAcnzX,KAAKy+D,WAGxC,IAAI4qO,GAAWrpS,KAAK+b,KAAM/b,KAAKs+B,GAAIytB,EAAK5kD,QACnD,EAKAiiD,UAAW,WACP,IAAIrtC,EAAO/b,KAAK+b,KAAK5J,OAASnS,KAAK+b,KAAK5J,OAASnS,KAAK+b,KAAKtK,WACvD6sB,EAAKt+B,KAAKs+B,GAAGnsB,OAASnS,KAAKs+B,GAAGnsB,OAASnS,KAAKs+B,GAAG7sB,WAE/Cs6C,EAAOvjD,EAAW,CAAC,EAAG,CACtBrB,QAASnH,KAAKmH,QACd4U,KAAMA,EACNuiB,GAAIA,IAQR,OALIw4F,EAAQ92H,KAAKy+D,YACb1S,EAAK0S,SAAWz+D,KAAKy+D,SAAShtD,YAGlCs6C,EAAK5kD,QAAQi8H,OAASpjI,KAAKojI,SACpBr3E,CACX,EAQAk6O,SAAU,SAASv9R,GACf,GAAI1I,KAAKgN,UAAW,CAChB,IAAI6lH,EAAI,IAAIiJ,EAAMpzH,EAAMtD,EAAGsD,EAAMvE,GAAI4X,EAAO/b,KAAKwqS,cAAelsQ,EAAKt+B,KAAKyqS,cAC1E,GAAI/hS,EAAMm+K,UAAYn+K,EAAMm+K,WAAan+K,EAAM6sB,SAASxZ,IAASrT,EAAM6sB,SAAS+I,GAC5E,OAAOt+B,KAEX,GAAIA,KAAK22X,QAAQ7sF,QAAQj3K,GACrB,OAAO7yH,IAEf,CACJ,EAEAu7R,OAAQ,SAAS7yR,GACb,IAAIuoH,GAASjxH,KAAKmH,QAAQy4H,QAAU,CAAC,GAAG3O,MAEpCvoH,GAAS89Q,EAAUxmR,KAAKmH,QAAQkwL,MAAMz3D,OAAO3O,SAC7CA,EAAQjxH,KAAKmH,QAAQkwL,MAAMz3D,OAAO3O,OAGtCjxH,KAAKuvC,KAAKkuK,OAAO,CACb79E,OAAQ,CACJ3O,MAAOA,IAGnB,EAEA6lQ,aAAc,WACLhgQ,EAAQ92H,KAAKuvC,QAGlBvvC,KAAK88R,YACL98R,KAAKilR,OAAOjlR,KAAK22X,QAAQ5sF,aAC7B,EAEAjN,UAAW,WACH98R,KAAK22X,SACL32X,KAAK22X,QAAQ/1U,QAEjB,IAAI/yC,EAAS7N,KAAKwqS,cACdnjS,EAASrH,KAAKyqS,cACdrnK,EAASpjI,KAAKojI,SAElBpjI,KAAKuvC,KAAKkuK,OAAO,CACbr6E,OAAQ,CAACv1H,GAAQuQ,OAAOglH,EAAQ,CAAC/7H,KAEzC,EAEAouX,sBAAuB,WACnBz1X,KAAKonS,gBAAkBxkS,EACvB5C,KAAKsqS,yBAA2B1nS,CACpC,EAEAmzX,sBAAuB,WACnB/1X,KAAKgjS,gBAAkBpgS,EACvB5C,KAAKuqS,yBAA2B3nS,CACpC,EAEA4yX,2BAA4B,WACpBx1X,KAAKonS,iBACL9gB,EAAMj6Q,OAAOrM,KAAKonS,gBAAgBhB,YAAapmS,KAEvD,EAEA81X,2BAA4B,WACpB91X,KAAKgjS,iBACL1c,EAAMj6Q,OAAOrM,KAAKgjS,gBAAgBoD,YAAapmS,KAEvD,EAEAmS,OAAQ,WACJ,IACcgqH,EADV0zJ,EAAa7vR,KAsBjB,MAAO,CACH+b,KArBA8zQ,EAAW9zQ,MAAQ8zQ,EAAW9zQ,KAAK5J,OAC5B09Q,EAAW9zQ,KAAK5J,SAGhB,CACH/M,GAFJ+2H,EAAQ0zJ,EAAWykG,cAENlvX,EACTjB,EAAGg4H,EAAMh4H,GAgBbm6B,GAZAuxP,EAAWvxP,IAAMuxP,EAAWvxP,GAAGnsB,OAC1B09Q,EAAWvxP,GAAGnsB,SAGd,CACD/M,GAFJ+2H,EAAQ0zJ,EAAW0kG,cAENnvX,EACTjB,EAAGg4H,EAAMh4H,GAQrB,IAGAg0X,GAAU/mW,EAAOruB,OAAO,CACxBoF,KAAM,SAAS0D,EAASw9K,GACpB,IAAIphL,EAAOjI,KAEXW,MAAMqB,QAAQ6J,GACdulB,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAASw9K,GAEnCphL,EAAK8+N,aAEL9+N,EAAKmwX,gBACLnwX,EAAKowX,qBAAqBpwX,EAAKd,SAC/Bc,EAAKqwX,cAAcjvM,GACnBphL,EAAKswX,uBAELtwX,EAAKuwX,cAELvwX,EAAK0hS,UAAY,IAAIl5J,EAAM,CACvBpgH,GAAI,eAERpoB,EAAKm6I,OAAOjoG,OAAOlyC,EAAK0hS,WAExB1hS,EAAK6vX,gBAAkB,IAAIp0O,GAAez7I,GAE1CA,EAAK4wQ,KAAO,IAAI/8I,EAChB7zH,EAAK8jS,UAAY,GACjB9jS,EAAKwwX,aAAe,IAAIhoP,EAAM,CAC1BpgH,GAAI,kBAERpoB,EAAKm6I,OAAOjoG,OAAOlyC,EAAKwwX,cAExBxwX,EAAKywX,kBAELzwX,EAAKm8R,cAELn8R,EAAKi+R,iBAAmB,IAAIkH,EAAgBnlS,EAAM,CAAE2mD,SAAU3mD,EAAKd,QAAQynD,WAC3E3mD,EAAKu/R,mBAAqB,IAAIqF,EAAkB5kS,GAEhDA,EAAKyoS,OAAOzoS,EAAKi+R,kBAAkB,GACnCj+R,EAAKyoS,OAAOzoS,EAAKu/R,oBAAoB,GAErCv/R,EAAKoe,SAAW,IAAImqR,EAASvoS,GAE7BA,EAAK0wX,WAAa,GAElB1wX,EAAK2wX,oBAAqB,EAE1B3wX,EAAK4wX,kBAEL5wX,EAAK6wX,uBAEL7wX,EAAK8wX,wBAEL9wX,EAAKwoC,KAAKxoC,EAAKd,QAAQspC,MAEvBxoC,EAAKm6I,OAAO3K,MAChB,EAEAtwI,QAAS,CACL/E,KAAM,UACN8zL,MAAO,OACPq+B,OAAQ,GACRq0E,SAAU,GACVn4P,KAAM,EACNixO,QAAS,EACTC,QAAS,EACTlwP,WAAY,CAAC,EACb42D,WAAW,EACXj4E,SAAU,GACV4hE,UAAU,EACVpjB,SAAU,CACNzd,OAAQ,CAAC,EACThnB,OAAQ,CAAC,EACT2W,MAAM,EACN22J,MAAO,GACPmzC,KAAM,CACFolE,KAAM,CACFhgS,KAAM,GACNoqH,MAAO,KAGf/tH,QAAQ,GAEZmoK,SAAU,CAAC,EACX+iB,WAAY,CACRzlL,IAAK,QAETmtJ,QAAS,CAAEn3I,SAAS,EAAM7W,OAAQ,OAClC/J,KAAM,CACF4gB,SAAS,EACTy/D,QAAS,GACTC,QAAS,IAEb4vG,cAAeS,EAAQT,cAAc,CAAE0gG,UAAU,IACjDtgG,mBAAoB,CAChB5oI,SAAU,CACN6oI,MAAO,IAEX/xL,KAAMqqX,GAEVltO,OAAQ,GACRujJ,YAAa,IAGjB/7R,OAAQ,CACJ+2L,GACAF,GACAgvL,GAAKnzS,GACLkzS,GACApvF,EACA3jP,EACAg3L,EA10DU,aACA,aA40DV,eACA,OACA,SACA,OACA,SACA,MACA,YAp1DS,YAFN,OACI,WA21DXhoL,MAAO,WACH,OAAOvpD,GACX,EAEAm2X,qBAAsB,WAClB,IAAIlqU,EAAW5uD,KAAKmH,QAAQynD,SAC5B,GAAIA,EAAU,CACV,IAAI6oI,EAAQ7oI,EAAS6oI,OACjBz3L,KAAKiyX,cAAyB,IAAVx6L,GAAqBA,GAA0B,IAAjBA,EAAMjwL,SACxDiwL,EAAQ,CAAC,cAAe,OAAQ,OAAQ,kBAAmB,wBAG3DA,GAASA,EAAMjwL,SACfxH,KAAKg5X,QAAU,IAAIC,GAAej5X,KAAM,CACpCy3L,MAAOA,GAAS,CAAC,EACjBvtK,MAAOlqB,KAAKk5X,cAAc1vX,KAAKxJ,MAC/BgzF,OAAO,IAGXhzF,KAAKg5X,QAAQntX,QAAQI,IAAI,CACrBo7I,UAAW,SAGfrnJ,KAAK6L,QAAQuiF,QAAQpuF,KAAKg5X,QAAQntX,SAClC7L,KAAK0yB,UAEb,CACJ,EAEAymW,YAAa,WACT,GAAKn5X,KAAKwjX,QAAUxjX,KAAKwjX,OAAO73W,QAAW3L,KAAKwjX,OAAQ,CACpD,IAAI/xV,EAAazxB,KAAKyxB,WAElBnY,GADOmY,EAAWmG,QAAU,IACfpwB,OACb0hD,EAAQkwU,GAAY3nW,EAAY,CAAC,GACjCqxH,EAAQ9iJ,KAAKq5X,aAAanwU,EAAO,CAAC,GAEtC,IAAKlpD,KAAKoK,QAAQ,MAAO,CAAE04I,MAAOA,IAC9BrxH,EAAW0rC,OAAO7jD,EAAO4vC,GACNlpD,KAAKs2X,oBAAoBz5T,SAAS3T,EAAMwE,KAC9C7hD,QAAUi3I,EACvB9iJ,KAAKs5X,KAAKx2O,EAElB,CACJ,EAEAu2O,aAAc,SAAS56T,EAAUt3D,GAI7B,OAHAA,EAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAAQiwL,cAAejwL,IAC7Cs3D,SAAWA,EACP,IAAI4oO,GAAMlgS,EAASnH,KAEnC,EAEAu5X,iBAAkB,WACd,GAAMv5X,KAAKwjX,QAAUxjX,KAAKwjX,OAAO73W,QAAW3L,KAAKwjX,OAAS,CACtD,IAAI4R,EAAwBp1X,KAAKo1X,sBAE7B97W,GADO87W,EAAsBx9V,QAAU,IAC1BpwB,OACb0hD,EAAQkwU,GAAYhE,EAAuB,CAAC,GAC5CvlG,EAAa7vR,KAAK2mS,kBAAkBz9O,GACnClpD,KAAKoK,QAAQ,MAAO,CAAEylR,WAAYA,MACnC7vR,KAAKw5X,oBAAoBtwU,EAAMwE,KAAOmiO,EACtCulG,EAAsBj4T,OAAO7jD,EAAO4vC,GACpClpD,KAAKy5X,cAAc5pG,GAAY,GAC/B7vR,KAAKs5X,KAAKzpG,GAElB,CACJ,EAEA8W,kBAAmB,SAASloO,EAAU5wD,EAAQxG,GAC1C,IAAIF,EAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAAQqwL,oBAK1C,OAJArwL,EAAQs3D,SAAWA,EAEF,IAAI4qO,GAAWx7R,GAAU,IAAIiuH,EAASz0H,GAAU,IAAIy0H,EAAS30H,EAGlF,EAEAuyX,UAAW,SAASj7T,EAAUk7T,GAE1B,IAAI5W,EAAS3yW,EADbpQ,KAAK45X,aAEL,IAAIhrU,EAAW5uD,KAAKmH,QAAQynD,SAE5B,GAAkB,SAAd+qU,EACA5W,EAAUn0T,EAASirU,aACnBzpX,EAAWw+C,EAASkrU,kBACjB,IAAkB,cAAdH,EAKP,OAJA,IAAII,EAA4BC,GAAmBxwX,KAAKxJ,MACxD+iX,EAAUv6W,EAAW,CAAC,EAAG,CAAEuT,KAAMg+W,EAA2Bz7V,GAAIy7V,GAA6BnrU,EAASqrU,mBACtG7pX,EAAWw+C,EAASsrU,kBAGxB,CAEAl6X,KAAKwjX,OAAS,IAAI2W,GAAYn6X,KAAK6L,QAAS,CACxCs7C,OAAQnnD,KAAKs1O,QAAQ9rO,KAAKxJ,MAC1B26B,OAAQ36B,KAAK2rF,QAAQniF,KAAKxJ,MAC1BkpD,MAAOuV,EACP/4D,KAAMi0X,EACNtyX,OAAQrH,KACR+iX,QAASA,EACT3yW,SAAUA,IAGdpQ,KAAKoK,QAAQ,OAAQpK,KAAKo6X,YAC9B,EAEAd,KAAM,SAASnqV,GACX,GAAIA,EAAKsvB,SAAU,CACf,IAAIk7T,EAAaxqV,aAAgBk4P,GAAQ,QAAU,aACnDrnS,KAAK05X,UAAUvqV,EAAKsvB,SAAUk7T,EAClC,CACJ,EAEAC,WAAY,WACJ55X,KAAKwjX,SACLxjX,KAAKq6X,qBAAqB76T,cAAcx/D,KAAKwjX,OAAOt6T,OAEpDlpD,KAAKs6X,iBAEb,EAEAC,SAAU,WACFv6X,KAAKwjX,QAAUxjX,KAAKwjX,OAAO73W,QAC1B3L,KAAKoK,QAAQ,OAAQpK,KAAKo6X,cAC3Bp6X,KAAKq6X,qBAAqBl+T,MAElC,EAEAm5K,QAAS,WACDt1O,KAAKwjX,QAAUxjX,KAAKwjX,OAAO73W,QAC1B3L,KAAKoK,QAAQ,OAAQpK,KAAKo6X,eAC3Bp6X,KAAKq6X,qBAAqBl+T,OAC1Bn8D,KAAKs6X,iBAEb,EAEA3uS,QAAS,WACL,GAAI3rF,KAAKwjX,SAAWxjX,KAAKoK,QAAQ,SAAUpK,KAAKo6X,aAAc,CAC1D,IAAIlxU,EAAQlpD,KAAKwjX,OAAOt6T,MACxBlpD,KAAKq6X,qBAAqB76T,cAActW,GACxC,IAAIr9C,EAAU7L,KAAKw5X,oBAAoBtwU,EAAMwE,MAAQ1tD,KAAK80X,SAAS5rU,EAAM74B,IACrExkB,GACAA,EAAQgmX,qBAAqB3oU,GAEjClpD,KAAKs6X,gBACT,CACJ,EAEAD,mBAAoB,WAChB,MAAoC,UAA7Br6X,KAAKwjX,OAAOr8W,QAAQzB,KAAmB1F,KAAKyxB,WAAazxB,KAAKo1X,qBACzE,EAEAgF,UAAW,WACP,IAAItjX,EAAS,CAAE2f,UAAWz2B,KAAKwjX,OAAO52W,SAEtC,OADAkK,EAAO9W,KAAKwjX,OAAOr8W,QAAQzB,MAAQ1F,KAAKwjX,OAAOt6T,MACxCpyC,CACX,EAEAwjX,eAAgB,WACRt6X,KAAKwjX,SACLxjX,KAAKwjX,OAAO99T,QACZ1lD,KAAKwjX,OAAS,KAEtB,EAEA4U,cAAe,WACXp4X,KAAK4M,QAAU5M,KAAK6L,QAAQ+gD,QACvB3gD,IAAI,WAAY,YAChB2X,KAAK,WAAY,GACjByB,SAAS,sBAEdrlB,KAAKslS,WAAa3iS,EAAE,WAAWuJ,SAASlM,KAAK6L,QACjD,EAEAysX,cAAe,SAASjvM,GACpB,IAAIliL,EAAUnH,KAAKmH,QACfynD,EAAWznD,EAAQynD,SACnBwoI,EAAgBjwL,EAAQiwL,cACxBI,EAAqBrwL,EAAQqwL,mBAC7BgjM,GAAqBnxM,GAAe,CAAC,GAAG+N,eAC3B,IAAbxoI,GACAwoI,EAAcxoI,UAAW,EACzB4oI,EAAmB5oI,UAAW,IAE9B6rU,GAAmB7rU,EAAUwoI,EAAcxoI,SAAU,CAAC,OAAQ,SAAU,YACxE6rU,GAAmB7rU,EAAU4oI,EAAmB5oI,SAAU,CAAC,OAAQ,YAGnE4rU,GAAqBA,EAAkB9hM,aACvCvxL,EAAQiwL,cAAcsB,WAAa8hM,EAAkB9hM,WAE7D,EAEA6/L,qBAAsB,WAClB,IAAIpxX,EAAUnH,KAAKmH,QACfowL,EAAapwL,EAAQowL,WACrB/iB,EAAWrtK,EAAQqtK,SACnB10K,EAASa,MAAM4C,QAAQggB,SAEvBg0K,IAAezgE,EAAQygE,EAAWjhJ,YAClCnvC,EAAQowL,WAAa/uL,EAAW,CAC5B8tC,UAAUx2C,GACXqH,EAAQowL,aAGX/iB,IAAa19C,EAAQ09C,EAAS1iK,OAC9B3K,EAAQqtK,SAAWhsK,EAAW,CAC1BsJ,IAAKhS,EAAS,OAAS,QACxBqH,EAAQqtK,UAEnB,EAEAgkN,YAAa,WACT,IAAIkC,EAAkB/3X,EAAE,+BAA+BuJ,SAASlM,KAAKslS,YAAY,GAC7Eq1F,EAAW36X,KAAK8yF,WACpB9yF,KAAKoiJ,OAAS,IAAI09I,EAAO46F,EAAiB,CACtC3uX,MAAO4uX,EAAS5uX,OAniED,IAoiEfC,OAAQ2uX,EAAS3uX,QAniED,KAqiExB,EAEA0sX,gBAAiB,WACb,IAAIzwX,EAAOjI,KACGiI,EAAK4D,QAEXge,GAAGumW,GAAenoX,EAAKonF,OAAO7lF,KAAKvB,IAC1C4hB,GAAG,UAAYgoE,EAAI5pF,EAAK28G,SAASp7G,KAAKvB,IAEvCA,EAAK2yX,YAAc,IAAIj6X,MAAM+/E,WAAW1gF,KAAKslS,WAAY,CACrDhkN,YAAY,EACZG,SAAS,EACTs0I,IAAK9tN,EAAKo4E,KAAK72E,KAAKvB,GACpB6N,MAAO7N,EAAK4yX,WAAWrxX,KAAKvB,GAC5ByyB,KAAMzyB,EAAKghF,MAAMz/E,KAAKvB,GACtB0D,IAAK1D,EAAKyoF,SAASlnF,KAAKvB,GACxB++E,aAAc/+E,EAAK6yX,cAActxX,KAAKvB,GACtCi/E,cAAej/E,EAAK8yX,eAAevxX,KAAKvB,GACxCiuN,WAAYjuN,EAAK+yX,YAAYxxX,KAAKvB,GAClCgzX,UAAWhzX,EAAKs9Q,WAAW/7Q,KAAKvB,GAChC43E,kBAAkB,IAGtB53E,EAAKg9R,YAAc,IAAI4C,EAAY5/R,GAEnCjI,KAAKslS,WACAz7Q,GAAG,YAAcgoE,EAAI5pF,EAAKskO,WAAW/iO,KAAKvB,IAC1C4hB,GAAG,WAAagoE,EAAI5pF,EAAKukO,UAAUhjO,KAAKvB,IACxC4hB,GAAG,YAAcgoE,EAAI5pF,EAAKizX,WAAW1xX,KAAKvB,IAC1C4hB,GAAG,YAAcgoE,EAAI5pF,EAAKkzX,WAAW3xX,KAAKvB,IAC1C4hB,GAAG,UAAYgoE,EAAI5pF,EAAKmzX,SAAS5xX,KAAKvB,IAE3CjI,KAAKq7X,aAAepzX,EAAKsgS,aAAa/+R,KAAKvB,GAE3CA,EAAKgtO,eAAiBhtO,EAAKkiB,OAAO3gB,KAAKvB,GAAM,GAC7CtH,MAAMs4B,SAAShxB,EAAKgtO,gBAEpBj1O,KAAKwJ,KAAK03L,GAAYj5L,EAAKugS,gBAAgBh/R,KAAKvB,IAChDjI,KAAKwJ,KAAK0mX,GAAKjoX,EAAKugS,gBAAgBh/R,KAAKvB,GAC7C,EAEA4yX,WAAY,SAASl2X,GACjB3E,KAAKs7X,qBAAsB,EAC3B,IAAIn/P,EAAQn8H,KAAKu7X,gBAAgB52X,GAAG,GAEhCwb,EAAQxb,EAAEwb,MACVngB,KAAKilS,YAAYnvR,MAAMqmH,EAAOn8H,KAAKw7X,MAAMr7W,MACzCngB,KAAKwoS,kBACLroR,EAAMhX,iBAEd,EAEA8/E,MAAO,SAAStkF,GACZ,IAAIkuH,EAAI7yH,KAAKu7X,gBAAgB52X,GACzBwb,EAAQxb,EAAEwb,MACVngB,KAAKilS,YAAYvqQ,KAAKm4F,EAAG7yH,KAAKw7X,MAAMr7W,KACpCA,EAAMhX,gBAEd,EAEAunF,SAAU,SAAS/rF,GACf3E,KAAKs7X,qBAAsB,EAC3B,IAAIzoQ,EAAI7yH,KAAKu7X,gBAAgB52X,GACzBwb,EAAQxb,EAAEwb,MACVngB,KAAKilS,YAAYt5R,IAAIknH,EAAG7yH,KAAKw7X,MAAMr7W,MACnCngB,KAAKy7X,iBACLt7W,EAAMhX,iBAEd,EAEA+xX,WAAY,SAASv2X,GACjB,IAAK3E,KAAKs7X,oBAAqB,CAC3B,IAAIzoQ,EAAI7yH,KAAKu7X,gBAAgB52X,GAC7B3E,KAAKilS,YAAY8C,mBAAmBl1K,GACpC7yH,KAAKilS,YAAYgD,cAAcp1K,EACnC,CACJ,EAEAsoQ,WAAY,WACRn7X,KAAKs7X,qBAAsB,CAC/B,EAEAF,SAAU,WACNp7X,KAAKs7X,qBAAsB,CAC/B,EAEAj7S,KAAM,SAAS17E,GACX,IAAIsgS,EAAcjlS,KAAKilS,YACnB1tG,EAAav3L,KAAKmH,QAAQowL,WAC1Bp7D,EAAQn8H,KAAKu7X,gBAAgB52X,GAC7BgwO,EAAU30O,KAAK+lC,QAInB,GAFAk/P,EAAY8C,mBAAmB5rK,GAE3B8oK,EAAYS,YAAa,CACzB,IAAIv2P,EAAO81P,EAAYS,YAQvB,GANA1lS,KAAKoK,QAAQ,QAAS,CAClB+kC,KAAMA,EACNgtF,MAAOA,EACP3qH,KAAMxR,KAAKw7X,MAAM72X,EAAEwb,SAGnBo3K,IAA0C,IAA5BpoJ,EAAKhoC,QAAQowL,WAAsB,CACjD,IAAIjhJ,GAAmC,IAAxBihJ,EAAWjhJ,SACtBolV,EAAc/6X,MAAM4C,QAAQggB,UAAYvjB,KAAKw7X,MAAM72X,EAAEwb,OAAOsvE,QAE5DtgD,EAAKo3P,WACDm1F,GACA17X,KAAKwoS,kBACLr5P,EAAK5I,QAAO,IAEZvmC,KAAKy7X,eAAe9mJ,IAGxB30O,KAAKwoS,kBACLxoS,KAAKumC,OAAO4I,EAAM,CACd45P,eAAgBzyP,GAAYolV,IAEhC17X,KAAKy7X,eAAe9mJ,GAE5B,CACJ,MAAWp9C,IACPv3L,KAAKwoS,kBACLxoS,KAAKyjS,WAEb,EAEA7+K,SAAU,SAASjgH,GACX3E,KAAKilS,YAAYkD,QAAQxjS,EAAE2iC,QAAStnC,KAAKw7X,MAAM72X,KAC/CA,EAAEwE,gBAEV,EAEAkmF,OAAQ,SAAS1qF,GACb,IAAIogC,EAtlEZ,SAAiBpgC,GACb,IAAIg3X,EAAYh3X,EAAE4kB,cACdwb,EAAQ,EASZ,OAPI42V,EAAU12V,WAEVF,GADAA,GAAS42V,EAAU12V,WAAa,IAChB,EAAI7hC,EAAK8jE,KAAKniC,GAAS3hC,EAAK0N,MAAMi0B,GAC3C42V,EAAUz2V,SACjBH,EAAQ42V,EAAUz2V,QAGfH,CACX,CA0kEoBosJ,CAAQxsL,GAChBkuH,EAAI7yH,KAAKu7X,gBAAgB52X,GACzB6M,EAAOhJ,EAAWxI,KAAKw7X,MAAM72X,GAAI,CAAEogC,MAAOA,IAE1C/kC,KAAKilS,YAAY0D,MAAM91K,EAAGrhH,IAC1B7M,EAAEwE,gBAEV,EAEAqyX,MAAO,SAAS72X,GACZ,MAAO,CAAE8qF,QAAS9qF,EAAE8qF,QAAS24M,QAASzjS,EAAEyjS,QAAS/4E,OAAQ1qN,EAAE0qN,OAAQ9nL,SAAU5iC,EAAE4iC,SAAU7hC,KAAMf,EAAEe,KACrG,EAEA61X,gBAAiB,SAAS52X,EAAGmR,GACzB,IAAIqmH,EACJ,GAAIx3H,EAAE6a,MAAO,CACT,IAAIuG,EAAQjQ,EAAQ,gBAAkB,WACtCqmH,EAAQ,IAAIL,EAAMn3H,EAAES,EAAE2gB,GAAQphB,EAAER,EAAE4hB,GACtC,KAAO,CACH,IAAI5F,EAAQxb,EAAE4kB,cACd4yG,EAAQ,IAAIL,EAAM37G,EAAM6iE,MAAO7iE,EAAM8iE,MACzC,CAEA,OAAOjjF,KAAK47X,gBAAgBz/P,EAChC,EAEA2+P,cAAe,SAASn2X,GACpB3E,KAAKwoS,kBACLxoS,KAAKwjR,SAASv7P,UACd,IAAI4zW,EAAgB77X,KAAK47X,gBAAgB,IAAI9/P,EAAMn3H,EAAE45E,OAAOn5E,EAAGT,EAAE45E,OAAOp6E,IACpEqiK,EAAY,CACZrqC,MAAO0/P,EACPprV,KAAMzwC,KAAKywC,QAGXzwC,KAAKoK,QAAQ82L,GAAY16B,KAI7BxmK,KAAK87X,SAAWn3X,EAChB3E,KAAK+7X,eAAiBF,EAC1B,EAEAd,eAAgB,SAASp2X,GACrB,IAAIyiF,EAAkBpnF,KAAK87X,SACvBD,EAAgB77X,KAAK+7X,eACrBx9S,EAASv+E,KAAKg8X,eAAe,IAAIlgQ,EAAMn3H,EAAE45E,OAAOn5E,EAAGT,EAAE45E,OAAOp6E,IAC5DmjF,EAAa3iF,EAAE65E,SAAW4I,EAAgB5I,SAC1C/tC,EAAOzwC,KAAKqwQ,MACZ4rH,GAAa,EAEb74X,EAAKqU,IAAI6vE,EAAa,IA5sEX,MA6sEXtnF,KAAKqwQ,MAAQ5/N,EAAOzwC,KAAKk8X,cAAczrV,EAAO62C,GAC9CtnF,KAAKmH,QAAQspC,KAAOA,EACpBzwC,KAAK87X,SAAWn3X,EAChBs3X,GAAa,GAGjB,IAAIE,EAAcN,EAAcvyG,MAAM74O,GAClC4xI,EAAM9jG,EAAO8qM,MAAM8yG,IACnBF,GAAcj8X,KAAK64Q,KAAKv8I,WAAW+lD,IAptErB,KAqtEdriL,KAAKo8X,cAAc/5M,GACnBriL,KAAKq8X,mBAGT13X,EAAEwE,gBACN,EAEAo8Q,WAAY,SAAS5gR,GACjB,IAAIkzL,EAAU73L,KACVs8X,EAAgBt8X,KAAKu7X,gBAAgB52X,GACrCwC,EAAU0wL,EAAQ1wL,QAClByhS,EAAWzhS,EAAQyhS,SACnBn4P,EAAOonJ,EAAQpnJ,OAASm4P,EAExBC,EAAc,CAAE1sK,MAAOmgQ,EAAe9qX,KAD/BxR,KAAKw7X,MAAM72X,GACgC8rC,KAAMA,GAGxDonJ,EAAQztL,QAAQ82L,GAAY2nG,KAIhCp4P,EAAO9vC,MAAM8pB,QAAQnU,MAAMjT,KAAK8V,IAAIhS,EAAQu6Q,QAASr+Q,KAAKqT,IAAIvP,EAAQw6Q,QAASlxO,IAAQ,GACvFo4P,EAAYp4P,KAAOA,EAEnBonJ,EAAQpnJ,KAAKA,EAAMo4P,GACnBhxG,EAAQztL,QAAQg3L,GAAUynG,GAC9B,EAEAmyF,YAAa,YACqB,IAA1Bh7X,KAAKmH,QAAQqtK,UACbx0K,KAAKwjR,SAASr7P,SAElBnoB,KAAKoK,QAAQg3L,GAAU,CACnBjlE,MAAOn8H,KAAK+7X,eACZtrV,KAAMzwC,KAAKywC,QAEnB,EAEA/d,QAAS,WACL,IAAIogE,EAAW9yF,KAAK8yF,WAChB9yF,KAAKoiJ,QACLpiJ,KAAKoiJ,OAAOpyI,KAAK8iF,GAGjB9yF,KAAKslS,YAActlS,KAAKg5X,SACxBh5X,KAAKslS,WAAWt5R,OAAO8mF,EAAS9mF,OAExC,EAEAugO,WAAY,SAAS5nO,GACjB,IAAI0+B,EAAO1+B,EAAE0C,OAAOswI,WAChBt0G,GAAQA,EAAKuzG,WAAW2kJ,QACxBl4P,EAAKuzG,WAAW2kJ,QAAO,EAAMl4P,EAAKuzG,WAE1C,EAEA41F,UAAW,SAAS7nO,GAChB,IAAI0+B,EAAO1+B,EAAE0C,OAAOswI,WAChBt0G,GAAQA,EAAKuzG,WAAW2kJ,QACxBl4P,EAAKuzG,WAAW2kJ,QAAO,EAAOl4P,EAAKuzG,WAE3C,EAEAmwF,WAAY,WACR,IAGIJ,EAHA1+N,EAAOjI,KACP23L,IAAc1vL,EAAKd,SAAW,CAAC,GAAG+uL,OAAS,IAAIr9K,cAC/C2f,EAAS/N,EAAQF,GAAGiO,QAAU,CAAC,EAI/BmuM,GAD2C,GAA3Cl8M,EAAQmmK,YAAYj7K,QAAQgiL,GACbltK,EAAQurK,YAAY6B,SAGnBr/J,EAAOm/J,IAAc,CAAC,GAAGE,QAG7C5vL,EAAKd,QAAUqB,EAAW,CAAC,EAAGm+N,EAAc1+N,EAAKd,UACnB,IAA1Bc,EAAKd,QAAQynD,UACbpmD,EAAWP,EAAKd,QAAS,CACrBynD,UAAW+3K,GAAgB,CAAC,GAAG/3K,UAG3C,EAEAmqU,sBAAuB,WACnB,IAAI5xX,EAAUnH,KAAKmH,QACfo1X,EAAep1X,EAAQ07I,OAAOr7I,OAE9B+0X,GACAv8X,KAAKw8X,gBAGLr1X,EAAQi/R,YAAY5+R,QACpBxH,KAAKy8X,qBAGLF,GAAgBp1X,EAAQotN,QACxBv0N,KAAKu0N,OAAOptN,EAAQotN,OAE5B,EAEAioK,cAAe,WACX,IAGI15O,EAAOv7I,EADPs7I,EAFO7iJ,KACQmH,QACE07I,OAGrB,IAAKt7I,EAAI,EAAGA,EAAIs7I,EAAOr7I,OAAQD,IAC3Bu7I,EAAQD,EAAOt7I,GANRvH,KAOF+3R,SAASj1I,EAEtB,EAEA25O,mBAAoB,WAChB,IAII16F,EAAMl0R,EAAQxG,EAAQE,EAJtBswL,EAAU73L,KACVmH,EAAU0wL,EAAQ1wL,QAClBvG,EAAWuG,EAAQqwL,mBACnB4uG,EAAcj/R,EAAQi/R,YAG1B,IAAK7+R,EAAI,EAAGA,EAAI6+R,EAAY5+R,OAAQD,IAChCw6R,EAAOqE,EAAY7+R,GACnBsG,EAASgqL,EAAQ6kM,sBAAsB36F,EAAKhmR,MAC5C1U,EAASwwL,EAAQ6kM,sBAAsB36F,EAAKzjQ,IAE5Cu5J,EAAQogG,QAAQpqR,EAAQxG,EAAQmB,EAAW,CAAC,EAAG5H,EAAUmhS,GAEjE,EAEA26F,sBAAuB,SAASv1X,GAE5B,IAEIE,EADAkqX,EAAU3oX,EAFdzB,EAAUA,GAAW,CAAC,GAEYA,EAAUA,EAAQoqX,SAAWpqX,EAAQkpB,GAWvE,OATIkhW,GACAlqX,EAJUrH,KAIOshS,aAAaiwF,GAC1BpqX,EAAQu/R,YACRr/R,EAASA,EAAOigS,aAAangS,EAAQu/R,aAGzCr/R,EAAS,IAAIy0H,EAAM30H,EAAQ/B,GAAK,EAAG+B,EAAQhD,GAAK,GAG7CkD,CACX,EAEArF,QAAS,WACL,IAAIiG,EAAOjI,KACXoxB,EAAOrpB,GAAG/F,QAAQuI,KAAKtC,GAEnBjI,KAAK46X,aACL56X,KAAK46X,YAAY54X,UAGrBrB,MAAMw4B,aAAalxB,EAAKgtO,gBAExBhtO,EAAKuuD,QACLvuD,EAAK4D,QAAQutB,IAAIy4D,GACjB5pF,EAAKu7Q,SAAS52Q,QAAQwsB,IAAIy4D,GAC1B5pF,EAAKm6I,OAAOpgJ,SAAQ,GACpBiG,EAAKm6I,OAASx/I,EAEdqF,EAAKqyX,iBACLryX,EAAK00X,kBACL10X,EAAK20X,wBACL30X,EAAKugS,iBACT,EAEAm0F,gBAAiB,WACb,IAAIn5G,EAAWxjR,KAAKwjR,SAEfA,IAILA,EAASxhR,UACTwhR,EAAS33Q,QAAQQ,SACjBrM,KAAKwjR,SAAW,KACpB,EAEA90O,KAAM,WACF,IAIInnC,EAAGsoR,EAAY/sI,EAJf/2F,EAAO,CACP82F,OAAQ,GACRujJ,YAAa,IAIjB,IAAK7+R,EAAI,EAAGA,EAAIvH,KAAK6iJ,OAAOr7I,OAAQD,KAChCu7I,EAAQ9iJ,KAAK6iJ,OAAOt7I,IACVJ,QAAQ6pX,cACdjlU,EAAK82F,OAAOlhJ,KAAKmhJ,EAAM37I,SAI/B,IAAKI,EAAI,EAAGA,EAAIvH,KAAKomS,YAAY5+R,OAAQD,IACrCsoR,EAAa7vR,KAAKomS,YAAY7+R,GAE9BwkD,EAAKq6O,YAAYzkS,KAAK6G,EAAW,CAAC,EAAGqnR,EAAW1oR,QAAS0oR,EAAW19Q,WAGxE,OAAO45C,CACX,EAEAhmB,MAAO,WACH,IAAK/lC,KAAK6L,QAAQoB,GAAGtM,MAAM+Y,kBAAmB,CAC1C,IAKInS,EALAsE,EAAU7L,KAAK6L,QACfigX,EAAkBjgX,EAAQ,GAC1B+tE,EAAa,GACb2b,EAAU,GACV37E,EAAkBjK,SAASiK,gBAG/B,IACIkyW,EAAkBA,EAAgBtlW,YAEdzB,aAAe+mW,EAAgB9mW,eAC/C40D,EAAWj4E,KAAKmqX,GAChBv2R,EAAQ5zF,KAAKmqX,EAAgBh1V,kBAE5Bg1V,GAAmBlyW,GAI5B,IAFA/N,EAAQzB,QAAQ,SAEX7C,EAAI,EAAGA,EAAIqyE,EAAWpyE,OAAQD,IAC/BqyE,EAAWryE,GAAGuvB,UAAYy+D,EAAQhuF,GAEtC,OAAO,CACX,CACJ,EAEAskE,KAAM,SAAS1kE,GACXnH,KAAKw2D,QAELx2D,KAAKkyB,WAAW/qB,GAChBnH,KAAKw8X,gBACLx8X,KAAKy8X,oBACT,EAEAvqW,WAAY,SAAS/qB,GACjBqB,EAAWxI,KAAKmH,QAASA,EAC7B,EAEAqvD,MAAO,WACH,IAAIvuD,EAAOjI,KAEXiI,EAAKs+B,QAAO,GACZt+B,EAAK0hS,UAAUnzO,QACfvuD,EAAK6vX,gBAAgBthU,QACrBvuD,EAAKm8R,aACT,EAQAnM,QAAS,SAASpqR,EAAQxG,EAAQF,GAC9B,IAAI0oR,EACJ,GAAI7vR,KAAKo1X,uBAAyBp1X,KAAKiyX,YAAa,CAChD,IAAIxzT,EAAWz+D,KAAKo1X,sBAAsB5nX,IAAI,CAAC,IAC/CqiR,EAAa7vR,KAAKw5X,oBAAoB/6T,EAAS/Q,MACpC7/C,OAAOA,GAClBgiR,EAAWxoR,OAAOA,GAClBwoR,EAAWpyE,OAAOt2M,GAClB0oR,EAAW8S,aACf,MACI9S,EAAa,IAAIwZ,GAAWx7R,EAAQxG,EAChCmB,EAAW,CAAE,EAAGxI,KAAKmH,QAAQqwL,mBAAoBrwL,IAErDnH,KAAKy5X,cAAc5pG,GAGvB,OAAOA,CACX,EAOAoF,UAAW,SAASpnR,EAAQxG,GACxB,IAAK,IAAIE,EAAI,EAAGA,EAAIvH,KAAKomS,YAAY5+R,OAAQD,IAAK,CAC9C,IAAI7C,EAAI1E,KAAKomS,YAAY7+R,GACzB,GAAI7C,EAAEqX,MAAQlO,GAAUnJ,EAAE45B,IAAMj3B,EAC5B,OAAO,CAEf,CAEA,OAAO,CACX,EAOAoyX,cAAe,SAAS5pG,EAAYiI,GAiBhC,OAhBiB,IAAbA,GACA93R,KAAKqmS,gBAAgB74R,IACjB,IAAIqqL,EAAQ0rG,kBAAkB1T,EAAY7vR,OAAO,GAGzD6vR,EAAWh4F,QAAU73L,KACrB6vR,EAAWgiG,uBACXhiG,EAAWlxQ,UACX3e,KAAK2pS,UAAUxvP,OAAO01O,EAAW5uI,QACjCjhJ,KAAKomS,YAAYzkS,KAAKkuR,GAEtB7vR,KAAKoK,QAAQ8yC,EAAQ,CACjBoiS,MAAO,CAACzvD,GACRglD,QAAS,KAGNhlD,CACX,EAEAmI,eAAgB,SAASnI,EAAYiI,GACjC,IACIr5N,EADA22T,EAAwBp1X,KAAKo1X,sBAEjC,GAAIA,GAAyBp1X,KAAKiyX,aAK9B,GAJAxzT,EAAW26T,GAAYhE,EAAuBjC,GAActjG,EAAWpxN,WACvEoxN,EAAWpxN,SAAWA,EACtBoxN,EAAW8S,eAEN3iS,KAAKoK,QAAQ,MAAO,CAAEylR,WAAYA,IAOnC,OANA7vR,KAAKw5X,oBAAoB/6T,EAAS/Q,KAAOmiO,EAEzCulG,EAAsB5nX,IAAIixD,GAC1Bz+D,KAAKy5X,cAAc5pG,EAAYiI,GAC/BjI,EAAWokG,oBAEJpkG,OAER,IAAK7vR,KAAKoK,QAAQ,MAAO,CAAEylR,WAAYA,IAG1C,OAFA7vR,KAAKy5X,cAAc5pG,EAAYiI,GAC/BjI,EAAWokG,oBACJpkG,CAEf,EAQAkI,SAAU,SAAS5oP,EAAM2oP,GACrB,IAAIh1I,EACAs0C,EAAgBp3L,KAAKmH,QAAQiwL,cAEjC,GAAIjoJ,aAAgBk4P,GAChBvkJ,EAAQ3zG,EACRnvC,KAAK68X,aAAa/5O,EAAMmiI,cACrB,IAAM91O,aAAgBxuC,MAAMiH,MAK/B,OAJAwvL,EAAgB5uL,EAAW,CAAC,EAAG4uL,EAAejoJ,GAAQ,CAAC,GACvD2zG,EAAQ,IAAIukJ,GAAMjwG,EAAep3L,MACjCA,KAAK68X,aAAa/5O,EAAMmiI,SAG5B,CAkBA,OAhBiB,IAAb6S,GACA93R,KAAKqmS,gBAAgB74R,IAAI,IAAIqqL,EAAQ2rG,aAAa1gJ,EAAO9iJ,OAAO,GAGpEA,KAAK6iJ,OAAOlhJ,KAAKmhJ,GACbA,EAAM+0C,UAAY73L,OAClBA,KAAK83X,gBAAgB36T,OAAO2lF,GAC5BA,EAAM+0C,QAAU73L,MAEpBA,KAAK2pS,UAAUxvP,OAAO2oG,EAAM7B,QAE5BjhJ,KAAKoK,QAAQ8yC,EAAQ,CACjBoiS,MAAO,CAACx8L,GACR+xL,QAAS,KAGN/xL,CACX,EAEA80I,UAAW,SAAS90I,EAAOg1I,GACvB,IAEIr5N,EADAhtC,EADOzxB,KACWyxB,WAEtB,GAAIA,GAAczxB,KAAKiyX,aAKnB,GAJAxzT,EAAW26T,GAAY3nW,EAAY0hW,GAAcrwO,EAAMrkF,WACvDqkF,EAAMrkF,SAAWA,EACjBqkF,EAAM6/I,eAED3iS,KAAKoK,QAAQ,MAAO,CAAE04I,MAAOA,IAAU,CACxC9iJ,KAAKyxB,WAAWjkB,IAAIixD,GACpB,IAAI43T,EAAer2X,KAAKs2X,oBAAoBz5T,SAAS4B,EAAS/Q,KAG9D,OAFA2oU,EAAaxqX,QAAUi3I,EACvBuzO,EAAav+F,SAAWA,EACjBh1I,CACX,OACG,IAAK9iJ,KAAKoK,QAAQ,MAAO,CAAE04I,MAAOA,IACrC,OAAO9iJ,KAAK+3R,SAASj1I,EAAOg1I,EAEpC,EAEA+kG,aAAc,SAAS53G,GACnBA,EAAO7/Q,EAAwB,iBAAb6/Q,EAAQ,EAAgBl8Q,WAAWk8Q,EAAO7/Q,GAAK6/Q,EAAO7/Q,EACxE6/Q,EAAO9gR,EAAwB,iBAAb8gR,EAAQ,EAAgBl8Q,WAAWk8Q,EAAO9gR,GAAK8gR,EAAO9gR,CAC5E,EAODkI,OAAQ,SAAS6/C,EAAO4rO,GAEnB,IAGIvwR,EAHAoxB,EAAWmkW,GADf5wU,EAAQjpD,EAAQipD,GAASA,EAAMrlD,MAAM,GAAK,CAACqlD,IAEvC22F,EAASlqH,EAASkqH,OAClBujJ,EAAcztQ,EAASytQ,YAY3B,IATKtvK,EAAQghK,KACTA,GAAW,GAGXA,GACA93R,KAAKqmS,gBAAgB1B,QAGzB3kS,KAAKoyX,uBACA7qX,EAAIs7I,EAAOr7I,OAAS,EAAGD,GAAK,EAAGA,IACjCvH,KAAKk8T,YAAYr5K,EAAOt7I,GAAIuwR,EAAUsO,GAGzC,IAAK7+R,EAAI6+R,EAAY5+R,OAAS,EAAGD,GAAK,EAAGA,IACrCvH,KAAKk8T,YAAY91B,EAAY7+R,GAAIuwR,GAGrC93R,KAAKqyX,sBAEDv6F,GACA93R,KAAKqmS,gBAAgBzB,QAAO,GAGhC5kS,KAAKoK,QAAQ8yC,EAAQ,CACjBoiS,MAAO,GACPzK,QAAS3oR,GAEjB,EAEA6wU,qBAAsB,SAAS5tV,GACvBnvC,KAAKiyX,cACLjyX,KAAKyxB,WAAWplB,OAAO8iC,EAAKsvB,iBACrBz+D,KAAK80X,SAAS3lV,EAAKsvB,SAASpuC,IAE3C,EAEA2sW,0BAA2B,SAAS7tV,GAC5BnvC,KAAKiyX,cACLjyX,KAAKo1X,sBAAsB/oX,OAAO8iC,EAAKsvB,iBAChCz+D,KAAKw5X,oBAAoBrqV,EAAKsvB,SAAS/Q,KAEtD,EAEA46O,eAAgB,SAASp8O,GAIrB,IAHA,IACI/c,EAAM9X,EAAMu3B,EADZy5O,EAAW,GAGNz+R,EAAM,EAAGA,EAAMsiD,EAAM1kD,OAAQoC,IAElCglD,GADAzf,EAAO+c,EAAMtiD,IACGzC,QAAQynD,SAEpBv3B,EADA8X,aAAgBk4P,GACT,CAAEvkJ,MAAO3zG,GAET,CAAE0gP,WAAY1gP,GAErByf,IAAgC,IAApBA,EAASviD,SAAqBrM,KAAKoK,QAAQ,SAAUitB,IACjEgxQ,EAAS1mS,KAAKwtC,GAGtB,OAAOk5P,CACX,EAKAzG,KAAM,WACF5hS,KAAKqmS,gBAAgBzE,MACzB,EAIAE,KAAM,WACF9hS,KAAKqmS,gBAAgBvE,MACzB,EAOAv7P,OAAQ,SAAS4I,EAAMhoC,GACnB,IAAIq/Q,EAAUr3O,GA+BV,OAAOnvC,KAAKopS,eA5BZ,IAGI7hS,EAAGsE,EAFHqgD,EAAQ,GACRwmB,EAAW,GAef,KAnBAvrE,EAAUqB,EAAW,CAAEugS,gBAAgB,GAAS5hS,IAEnB4hS,gBAMzB/oS,KAAKyjS,WAGTzjS,KAAKqzX,oBAAqB,EAEtBlkV,aAAgBjsC,MAChBgpD,EAAQ/c,EACDA,aAAgB4hV,KACvB7kU,EAAQ,CAAE/c,IAGT5nC,EAAI,EAAGA,EAAI2kD,EAAM1kD,OAAQD,KAC1BsE,EAAUqgD,EAAM3kD,IACJg/B,QAAO,IACfmsC,EAAS/wE,KAAKkK,GAItB7L,KAAKszX,kBAAkB5gT,EAAU,IAEjC1yE,KAAKqzX,oBAAqB,CAIlC,EAEA3qF,UAAW,WACP1oS,KAAKumC,OAAOvmC,KAAK6iJ,OAAOzkI,OAAOpe,KAAKomS,aACxC,EAEAI,WAAY,SAASl6M,GACjB,IAAI/kF,EAAG2kD,EAAO/c,EACdnvC,KAAKqzX,oBAAqB,EAC1B,IAAI3gT,EAAW,GACf,GAAI4Z,aAAgB2wC,EAEhB,IADA/wE,EAAQlsD,KAAK6iJ,OAAOzkI,OAAOpe,KAAKomS,aAC3B7+R,EAAI,EAAGA,EAAI2kD,EAAM1kD,OAAQD,IAC1B4nC,EAAO+c,EAAM3kD,GACP+kF,IAAQn9C,EAAK82P,SAAS35M,KAAUn9C,EAAKhoC,QAAQghB,QAC3CgnB,EAAK5I,QAAO,IACZmsC,EAAS/wE,KAAKwtC,GAM9BnvC,KAAKszX,kBAAkB5gT,EAAU,IACjC1yE,KAAKqzX,oBAAqB,CAC9B,EAEA5vF,SAAU,SAASt0P,GACfnvC,KAAKqzX,oBAAqB,EAC1B,IAEIxnX,EAAStE,EAFT6rX,EAAa,GACblnU,EAAQ,GAWZ,IARI/c,aAAgBjsC,MAChBgpD,EAAQ/c,EACDA,aAAgB4hV,GACvB7kU,EAAMvqD,KAAKwtC,GACHq3O,EAAUr3O,KAClB+c,EAAQlsD,KAAKopS,eAAeviS,MAAM,IAGjCU,EAAI,EAAGA,EAAI2kD,EAAM1kD,OAAQD,KAC1BsE,EAAUqgD,EAAM3kD,IACJg/B,QAAO,IACf6sV,EAAWzxX,KAAKkK,GAIxB7L,KAAKszX,kBAAkB,GAAIF,GAC3BpzX,KAAKqzX,oBAAqB,CAC9B,EAMAn0F,QAAS,SAAShzO,EAAO4rO,GAChB5rO,IACDA,EAAQlsD,KAAKopS,eAAeviS,SAGhC,IAA2Cg6K,EAAvC/pK,EAAS9W,KAAKi9X,iBAAiB/wU,GACnC,IAAK4qE,EAAQghK,IAAaA,EAAU,CAChCj3G,EAAUgwM,GAAe7wX,KAAK2pS,UAAW7yR,EAAOy0J,SAChD,IAAIpxC,EAAO,IAAIkqK,EAAYrkS,KAAMksD,EAAO20H,GACxC7gL,KAAKqmS,gBAAgB74R,IAAI2sH,EAC7B,MACIn6H,KAAK2pS,UAAUzK,QAAQpoR,EAAOy0J,SAC9BvrK,KAAKk9X,aAAapmX,GAAQ,EAElC,EAMAqoR,OAAQ,SAASjzO,EAAO4rO,GACf5rO,IACDA,EAAQlsD,KAAKopS,eAAeviS,SAGhC,IAA2Cg6K,EAAvC/pK,EAAS9W,KAAKi9X,iBAAiB/wU,GACnC,IAAK4qE,EAAQghK,IAAaA,EAAU,CAChCj3G,EAAUgwM,GAAe7wX,KAAK2pS,UAAW7yR,EAAOy0J,SAChD,IAAIpxC,EAAO,IAAIqqK,EAAWxkS,KAAMksD,EAAO20H,GACvC7gL,KAAKqmS,gBAAgB74R,IAAI2sH,EAC7B,MACIn6H,KAAK2pS,UAAUxK,OAAOroR,EAAOy0J,SAC7BvrK,KAAKk9X,aAAapmX,GAAQ,EAElC,EAOAqmX,cAAe,SAAShuV,EAAMhoC,GAC1B,IAEI6M,EAASs4E,EAAMziF,EAAUuzX,EAFzBtqS,EAAW9yF,KAAK8yF,WAChB4/R,EAAU,IAAI76L,EAAQwzF,UAAUv4L,GAGb,IAAnBA,EAAS/mF,OAAmC,IAApB+mF,EAAS9mF,SAKhB,SADrB7E,EAAUqB,EAAW,CAAEkf,SAAS,EAAOwpH,MAAO,iBAAmB/pI,IACrD+pI,QACR/pI,EAAQ+pI,MAAQ,iBAGhB/hG,aAAgB4hV,GAChBzkS,EAAOn9C,EAAK81O,OAAOkrG,IACZltX,EAAQksC,GACfm9C,EAAOtsF,KAAKmuI,YAAYh/F,GACjBA,aAAgB8tF,IACvB3wC,EAAOn9C,EAAK/nC,SAGhByC,EAAWyiF,EAAKllF,QAEhBklF,EAAK77C,KAAKzwC,KAAKqwQ,QAEX/jL,EAAKvgF,MAAQ+mF,EAAS/mF,OAASugF,EAAKtgF,OAAS8mF,EAAS9mF,UACtDhM,KAAKqwQ,MAAQrwQ,KAAKk8X,cAAc94X,EAAKsT,IAAIo8E,EAAS/mF,MAAQlC,EAASkC,MAAO+mF,EAAS9mF,OAASnC,EAASmC,SACrGsgF,EAAOziF,EAASzC,QAAQqpC,KAAKzwC,KAAKqwQ,QAGtCrwQ,KAAKq9X,iBAELrpX,EAAUs4E,EAAKllF,QACfsrX,EAAQxhP,MAAM5kD,EAAMnlF,EAAQ+pI,OAE5BksP,EAAS9wS,EAAKixC,UAAU8rJ,MAAMr1Q,EAAQupH,WACtCv9H,KAAKqiL,IAAI+6M,EAAO9zG,OAAO,GAAIniR,EAAQugB,SACvC,EAEA41W,YAAa,SAASjpV,GACdoyO,EAAYpyO,KACZA,EAAY,QAEhB,IACIzkB,EACAuf,EACA5nC,EAHA2kD,EAAQlsD,KAAKumC,SAKjB,GAAqB,IAAjB2lB,EAAM1kD,OAAV,CAIA,OAAQ6sC,EAAUx7B,eACd,IAAK,OACL,IAAK,MACD+W,EAAMwnG,GACN,MACJ,IAAK,QACL,IAAK,SACDxnG,EAAMkxI,GAId,IAAKv5J,EAAI,EAAGA,EAAI2kD,EAAM1kD,OAAQD,IAE1B,IADA4nC,EAAO+c,EAAM3kD,cACO8/R,GAChB,OAAQhzP,EAAUx7B,eACd,IAAK,OACD+W,EAAMxsB,EAAKsT,IAAIkZ,EAAKuf,EAAKhoC,QAAQ/B,GACjC,MACJ,IAAK,MACDwqB,EAAMxsB,EAAKsT,IAAIkZ,EAAKuf,EAAKhoC,QAAQhD,GACjC,MACJ,IAAK,QACDyrB,EAAMxsB,EAAK+V,IAAIyW,EAAKuf,EAAKhoC,QAAQ/B,GACjC,MACJ,IAAK,SACDwqB,EAAMxsB,EAAK+V,IAAIyW,EAAKuf,EAAKhoC,QAAQhD,GAKjD,IAAIg/R,EAAa,GACbtgJ,EAAS,GACb,IAAKt7I,EAAI,EAAGA,EAAI2kD,EAAM1kD,OAAQD,IAE1B,IADA4nC,EAAO+c,EAAM3kD,cACO8/R,GAGhB,OAFAxkJ,EAAOlhJ,KAAKwtC,GACZg0P,EAAWxhS,KAAKwtC,EAAK81O,UACb5wO,EAAUx7B,eACd,IAAK,OACL,IAAK,QACDs2B,EAAK7hC,SAAS,IAAIwuH,EAAMlsG,EAAKuf,EAAKhoC,QAAQhD,IAC1C,MACJ,IAAK,MACL,IAAK,SACDgrC,EAAK7hC,SAAS,IAAIwuH,EAAM3sF,EAAKhoC,QAAQ/B,EAAGwqB,IAKxD,IAAIuqG,EAAO,IAAI09D,EAAQqrG,cAAcrgJ,EAAQsgJ,GAC7CnjS,KAAKqmS,gBAAgB74R,IAAI2sH,GAAM,EApD/B,CAqDJ,EAEA1pF,KAAM,SAASA,EAAMtpC,GACjB,GAAIspC,EAAM,CACN,IAAIq+P,EAAc3nS,EAAUA,EAAQg1H,MAAQ,IAAI07D,EAAQ/7D,MAAM,EAAG,GAIjE,GAFArrF,EAAOzwC,KAAKqwQ,MAAQrwQ,KAAKk8X,cAAczrV,IAElCg2O,EAAYqoB,GAAc,CAE3B,IAAIqtF,GADJrtF,EAAc,IAAIj3G,EAAQ/7D,MAAM14H,EAAKkT,MAAMw4R,EAAY1pS,GAAIhC,EAAKkT,MAAMw4R,EAAY3qS,KACpDmlR,MAAM74O,GAEhC+Z,EADiBxqD,KAAK4wS,YAAY9B,GACbzlB,MAAM8yG,GAC/Bn8X,KAAK8lS,UAAU,IAAIjuG,EAAQ/7D,MAAM14H,EAAKkT,MAAMk0C,EAAIplD,GAAIhC,EAAKkT,MAAMk0C,EAAIrmD,IACvE,CAEIgD,IACAA,EAAQspC,KAAOA,GAGnBzwC,KAAKo8X,gBAELp8X,KAAKoiJ,OAAOzgE,QAAQo+E,cAEpB//J,KAAKq8X,iBACT,CAEA,OAAOr8X,KAAKqwQ,KAChB,EAEAktH,QAAS,SAASl7M,GAKd,OAJariL,KAAKoiJ,OACNhyG,YACRiyI,EAAMA,EAAI+mG,KAAKppR,KAAK64Q,OAEjBx2F,CACX,EAEAA,IAAK,SAASA,EAAK36J,GACf,KAAI26J,aAAevmD,GAef,OAAO97H,KAAK64Q,KAAKyQ,OAAO,GAdxB,IAAIrhR,EAAOjI,KACPwjR,EAAWv7Q,EAAKu7Q,SAEpBnhG,GADAA,EAAMp6K,EAAKs1X,QAAQl7M,IACTinG,OAAO,GAEb5hQ,EACA87P,EAASrzL,iBAAiBkyF,EAAIj9K,EAAGi9K,EAAIl+K,GAAG,WACpC8D,EAAKo0X,iBACT,KAEA74G,EAASz0L,SAASszF,EAAIj9K,EAAGi9K,EAAIl+K,GAC7B8D,EAAKo0X,kBAKjB,EAEAvpS,SAAU,WACN,IAAIjnF,EAAU7L,KAAK6L,QACfE,EAAQF,EAAQE,QAChBC,EAASH,EAAQG,SAMrB,OAJIhM,KAAKg5X,UACLhtX,GAAUI,EAAYpM,KAAKg5X,QAAQntX,UAGhC,IAAIoxH,EAAK,EAAG,EAAGlxH,EAAOC,EACjC,EACA9E,KAAM,WACF,GAAIlH,KAAKmH,QAAQD,KAAK4gB,QAAS,CAC3B9nB,KAAK24X,WAAa,GAClB34X,KAAKw9X,YAAc,EACnB,IAAK,IAAIj2X,EAAI,EAAGA,EAAIvH,KAAKopS,eAAe5hS,OAAQD,IAAK,CACjD,IAAI4nC,EAAOnvC,KAAKopS,eAAe7hS,GAC/BvH,KAAK24X,WAAWh3X,KAAKwtC,EACzB,CACJ,CACJ,EACA1qB,IAAK,WACD,GAAIzkB,KAAKmH,QAAQD,KAAK4gB,QAAS,CAC3B9nB,KAAK24X,WAAa,GAClB34X,KAAKw9X,YAAc,EACnB,IAAK,IAAIj2X,EAAI,EAAGA,EAAIvH,KAAKopS,eAAe5hS,OAAQD,IAAK,CACjD,IAAI4nC,EAAOnvC,KAAKopS,eAAe7hS,GAC/BvH,KAAK24X,WAAWh3X,KAAKwtC,EACzB,CACAnvC,KAAKqM,OAAOrM,KAAK24X,YAAY,EACjC,CACJ,EAEAj0W,MAAO,WACH,GAAI1kB,KAAK24X,WAAWnxX,OAAS,EAAG,CAC5B,IAAI2nC,EAAMsuV,EAAQl2X,EACdm2X,EAAU,CAAC,EACX/kW,EAAWmkW,GAAqB98X,KAAK24X,YACrCvyF,EAAcztQ,EAASytQ,YACvBvjJ,EAASlqH,EAASkqH,OAClB/kI,EAAS,CACT1Y,EAAGpF,KAAKw9X,YAAcx9X,KAAKmH,QAAQD,KAAKqgF,QACxCpjF,EAAGnE,KAAKw9X,YAAcx9X,KAAKmH,QAAQD,KAAKsgF,SAI5C,IAFAxnF,KAAKyjS,WAEAl8R,EAAI,EAAGA,EAAIs7I,EAAOr7I,OAAQD,IAE3Bk2X,GADAtuV,EAAO0zG,EAAOt7I,IACAH,QACds2X,EAAQvuV,EAAK9e,IAAMotW,EACnBA,EAAOnwX,SAAS,IAAIwuH,EAAM3sF,EAAKhoC,QAAQ/B,EAAI0Y,EAAO1Y,EAAG+pC,EAAKhoC,QAAQhD,EAAI2Z,EAAO3Z,IAC7Es5X,EAAO5lM,QAAU73L,MACjBy9X,EAASz9X,KAAK43R,UAAU6lG,KAEpBA,EAAOl3V,SAIf,IAAKh/B,EAAI,EAAGA,EAAI6+R,EAAY5+R,OAAQD,IAChC4nC,EAAOi3P,EAAY7+R,IACnBk2X,EAASz9X,KAAKg4R,eAAe7oP,EAAK/nC,YAE9BpH,KAAK29X,wBAAwBF,EAAQtuV,EAAM,SAAUuuV,EAAS5/W,GAC9D9d,KAAK29X,wBAAwBF,EAAQtuV,EAAM,SAAUuuV,EAAS5/W,GAE9D2/W,EAAOl3V,QAAO,GACdk3V,EAAO96F,eAIf3iS,KAAKuoS,eAELvoS,KAAKw9X,aAAe,CACxB,CACJ,EAEAG,wBAAyB,SAAS9tG,EAAY+tG,EAAkBzH,EAAeuH,EAAS5/W,GACpF,IAAI04W,EAAYH,EAAc99F,EAC1BlxR,EAASu2X,EAAiBzH,KAC1Bt+L,EAAU73L,KACVqH,aAAkBiqX,IAAaoM,EAAQr2X,EAAOy7I,MAAMzyH,KACpDkoQ,EAAcmlG,EAAQr2X,EAAOy7I,MAAMzyH,IAC/BwnK,EAAQypG,aAAa/I,EAAYloQ,IACjCw/P,EAAWsmG,GAAe59F,EAAY+O,aAAajgS,EAAOF,QAAQ/E,QAElEi0X,EAAex+L,EAAQy+L,oBAAoBz5T,SAAS07N,EAAY95N,SAAS/Q,QAErE8oU,EAAa,SAASrnV,GAClBopP,EAAc1gG,EAAQi9L,SAAS3lV,EAAK9e,IACpCw/P,EAAWsmG,GAAe59F,EAAY+O,aAAajgS,EAAOF,QAAQ/E,OAClEytR,EAAW8S,aACf,EACA9qG,EAAQ0+L,2BAA2B50X,KAAK00X,EAAaG,WAAWA,MAIxE3mG,EAAWsmG,GAAe,IAAIr6P,EAAM8hQ,EAAiBzH,EAAgB,WAAW/wX,EAAI0Y,EAAO1Y,EAAGw4X,EAAiBzH,EAAgB,WAAWhyX,EAAI2Z,EAAO3Z,GAE7J,EAOAgqI,YAAa,SAASjiF,EAAOlT,GACzB,IAAyBwB,EAArB8xC,EAAO2wC,EAAKrwE,QACZixU,EAAKr3G,EAAUt6N,GAASlsD,KAAKi9X,iBAAiB/wU,GAAS,CAAE22F,OAAQ7iJ,KAAK6iJ,QAC1E,GAAIg7O,EAAGh7O,OAAOr7I,OAAS,EAAG,CACtB,IAAI2nC,EAAO0uV,EAAGh7O,OAAO,GACrBv2D,EAAOn9C,EAAK81O,OAAO6b,IACnB,IAAK,IAAIv5R,EAAI,EAAGA,EAAIs2X,EAAGh7O,OAAOr7I,OAAQD,IAElCizC,GADArL,EAAO0uV,EAAGh7O,OAAOt7I,IACL09Q,OAAO6b,KACJ,IAAX9nP,IACAwB,EAAKp1C,GAAK+pC,EAAK6+P,gBAAgB5oS,EAC/Bo1C,EAAKr2C,GAAKgrC,EAAK6+P,gBAAgB7pS,GAEnCmoF,EAAOA,EAAKiyC,MAAM/jF,EAE1B,CACA,OAAO8xC,CACX,EAEAwxS,iBAAkB,WACd,IAAI7O,EAAkBjvX,KAAK6L,QAAQiS,SAInC,OAHI9d,KAAKg5X,UACL/J,EAAgB/pW,KAAO9Y,EAAYpM,KAAKg5X,QAAQntX,UAE7CojX,CACX,EAEA+M,eAAgB,SAAS7/P,GACrB,IAAI8yP,EAAkBjvX,KAAK89X,mBAE3B,OAAO,IAAIhiQ,EAAMK,EAAM/2H,EAAI6pX,EAAgBziW,KAAM2vG,EAAMh4H,EAAI8qX,EAAgB/pW,IAC/E,EACA64W,eAAgB,SAAS5hQ,GACrB,IAAI8yP,EAAkBjvX,KAAK89X,mBAE3B,OAAO,IAAIhiQ,EAAMK,EAAM/2H,EAAI6pX,EAAgBziW,KAAM2vG,EAAMh4H,EAAI8qX,EAAgB/pW,IAC/E,EACA84W,YAAa,SAAS7hQ,GAClB,OAAOn8H,KAAKi+X,qBAAqB9hQ,EAAOn8H,KAAKk+X,cACjD,EACAttF,YAAa,SAASz0K,GAClB,OAAOn8H,KAAKi+X,qBAAqB9hQ,EAAOn8H,KAAK4+H,QACjD,EACAguK,aAAc,SAASzwK,GACnB,OAAOn8H,KAAKi+X,qBAAqB9hQ,EAAOn8H,KAAKm+X,aACjD,EACAC,aAAc,SAASjiQ,GACnB,OAAOn8H,KAAKi+X,qBAAqB9hQ,EAAOn8H,KAAKq+X,mBACjD,EACAzC,gBAAiB,SAASz/P,GACtB,IAAImiQ,EAAYt+X,KAAKg8X,eAAe7/P,GAKpC,OAJKn8H,KAAKoiJ,OAAOhyG,YACbkuV,EAAUl5X,EAAIk5X,EAAUl5X,EAAIpF,KAAKwjR,SAASj2P,WAC1C+wW,EAAUn6X,EAAIm6X,EAAUn6X,EAAInE,KAAKwjR,SAAS1sP,WAEvC92B,KAAKg+X,YAAYM,EAC5B,EACAC,gBAAiB,SAASpiQ,GACtB,OAAOn8H,KAAK+9X,eAAe/9X,KAAK4wS,YAAYz0K,GAChD,EACA8hQ,qBAAsB,SAAS9hQ,EAAOpC,GAClC,IAAIjjH,EAASqlH,EACb,GAAIA,aAAiBL,EACb/B,IACAjjH,EAASijH,EAAO3xH,MAAM+zH,QAGzB,CACD,IAAIyB,EAAK59H,KAAKi+X,qBAAqB9hQ,EAAMoB,UAAWxD,GAChD+D,EAAK99H,KAAKi+X,qBAAqB9hQ,EAAMqB,cAAezD,GACxDjjH,EAASmmH,EAAKe,WAAWJ,EAAIE,EACjC,CACA,OAAOhnH,CACX,EAEA4iO,cAAe,SAASjoN,GACpBzxB,KAAKmH,QAAQsqB,WAAaA,EAC1BzxB,KAAK8sE,cACD9sE,KAAKmH,QAAQ6qE,UACbhyE,KAAKyxB,WAAW20C,OAExB,EAEAo4T,yBAA0B,SAAS/sW,GAC/BzxB,KAAKmH,QAAQiuX,sBAAwB3jW,EACrCzxB,KAAKy+X,wBACDz+X,KAAKmH,QAAQ6qE,UACbhyE,KAAKo1X,sBAAsBhvT,OAEnC,EAOAmuJ,OAAQ,SAASptN,GAGb,IAAIzB,EAUA8sH,EACJ,OAbAxyH,KAAKizX,YAAa,EAGdxsG,EAAYt/Q,KACZA,EAAUnH,KAAKmH,QAAQotN,SAGvB7uN,EADA+gR,EAAYt/Q,IAAYs/Q,EAAYt/Q,EAAQzB,MACrC,OAGAyB,EAAQzB,MAGNmT,eACT,IAAK,OACD25G,EAAI,IAAIqlE,EAAQ+hH,WAAW55S,MAC3B,MAEJ,IAAK,UACDwyH,EAAI,IAAIqlE,EAAQmiH,cAAch6S,MAC9B,MAEJ,IAAK,gBACL,IAAK,QACL,IAAK,SACL,IAAK,iBACDwyH,EAAI,IAAIqlE,EAAQ2gG,aAAax4R,MAC7B,MACJ,QACI,KAAM,qBAAuB0F,EAAO,sBAE5C,IAAI87R,EAAe,IAAI3pG,EAAQ69G,YAAY11S,MACvCyhS,EAAajvK,EAAE+hG,OAAOptN,GAC1B,GAAIs6R,EAAY,CACZ,IAAItnK,EAAO,IAAI09D,EAAQ0pG,eAAeC,EAAcC,EAAYt6R,EAAUA,EAAQugB,QAAU,MAC5F1nB,KAAKqmS,gBAAgB74R,IAAI2sH,EAC7B,CACAn6H,KAAKizX,YAAa,EAClBjzX,KAAK0+X,oBACT,EAMAp9F,aAAc,SAASjxQ,GACnB,IAAI8tC,EAIJ,OAHAA,EAAQmoN,EAAMp8Q,MAAMlK,KAAK6iJ,QAAQ,SAAS59I,GACtC,OAAOA,EAAEg8I,OAAO5wH,KAAOA,CAC3B,KAEW8tC,EAEXA,EAAQmoN,EAAMp8Q,MAAMlK,KAAKomS,aAAa,SAAS1hS,GAC3C,OAAOA,EAAEu8I,OAAO5wH,KAAOA,CAC3B,GAEJ,EAEAsuW,kBAAmB,SAAStuW,GASxB,OAPIrwB,KAAKiyX,YACGjyX,KAAK80X,SAASzkW,GAEdi2P,EAAMp8Q,MAAMlK,KAAK6iJ,QAAQ,SAASC,GACtC,OAAQA,EAAMrkF,UAAY,CAAC,GAAGpuC,KAAOA,CACzC,GAGR,EAEAuuW,mBAAoB,SAASlxU,GASzB,OAPI1tD,KAAKiyX,YACG3rG,EAAMp8Q,MAAMlK,KAAK6iJ,QAAQ,SAASC,GACtC,OAAQA,EAAMrkF,UAAY,CAAC,GAAG/Q,MAAQA,CAC1C,IAEQ1tD,KAAK80X,SAASpnU,EAG9B,EAEAmxU,uBAAwB,SAASxuW,GAC7B,IAAIw/P,EAMJ,OALI7vR,KAAKo1X,wBACLvlG,EAAavJ,EAAMp8Q,MAAMlK,KAAKomS,aAAa,SAASvW,GAChD,OAAQA,EAAWpxN,UAAY,CAAC,GAAGpuC,KAAOA,CAC9C,KAEGw/P,CACX,EAEAivG,wBAAyB,SAASpxU,GAC9B,IAAImiO,EAIJ,OAHI7vR,KAAKo1X,wBACLvlG,EAAa7vR,KAAKw5X,oBAAoB9rU,IAEnCmiO,CACX,EAEAwoG,qBAAsB,SAASlxX,GACvBA,EAAQotN,SACRptN,EAAQotN,OAAS/rN,EAAW,CAAC,EAAGqvL,EAAQk5G,WAAWhpS,GAAGiqK,gBAAkB,CAAC,EAAG7qK,EAAQotN,QAE5F,EAEA++J,kBAAmB,SAAS5gT,EAAU0gT,IAC9B1gT,EAASlrE,QAAU4rX,EAAW5rX,SAC9BxH,KAAKoK,QAAQ2yE,GAAQ,CAAErK,SAAUA,EAAU0gT,WAAYA,GAE/D,EACA8I,cAAe,SAASzrV,GACpB,OAAOrtC,EAAKsT,IAAItT,EAAK+V,IAAIs3B,EAAMzwC,KAAKmH,QAAQu6Q,SAAU1hR,KAAKmH,QAAQw6Q,QACvE,EACAy6G,cAAe,SAAS/mS,GACpB,IAAIwiG,EAAU73L,KACVqiL,EAAMhtF,GAAOwiG,EAAQghF,KAErBhhF,EAAQz1C,OAAOhyG,WACfynJ,EAAQ2rF,SAASz0L,SAASszF,EAAIj9K,EAAGi9K,EAAIl+K,GACrC0zL,EAAQwlM,mBAERxlM,EAAQiuG,UAAUzjH,GAClBwV,EAAQknM,sBAEhB,EAEAC,WAAY,WACRh/X,KAAKoK,QAAQ8lX,GAAK,CAAElpU,MAAOhnD,KAAK64Q,KAAM9zO,MAAOlyB,OAAOk/G,KACxD,EACA+zK,UAAW,SAASzjH,GAChBriL,KAAK64Q,KAAOx2F,EACZriL,KAAKi/X,kBACT,EACA5B,eAAgB,WACZ,IAAI5sV,EAAOzwC,KAAKqwQ,MAEZ18N,EAAY,IAAIymP,EAAmB,EAAG,EAAG3pP,EAAMA,GACnDkD,EAAUxjC,OAAOnQ,KAAK2pS,WACtB3pS,KAAKk/X,kBAAkBvrV,GACvB3zC,KAAKi/X,kBACT,EACAF,oBAAqB,WACjB,IAAI18M,EAAMriL,KAAK64Q,KACXpoO,EAAOzwC,KAAKqwQ,MAEZ18N,EAAY,IAAIymP,EAAmB/3G,EAAIj9K,EAAGi9K,EAAIl+K,EAAGssC,EAAMA,GAC3DkD,EAAUxjC,OAAOnQ,KAAK2pS,WACtB3pS,KAAKk/X,kBAAkBvrV,GACvB3zC,KAAKi/X,kBACT,EACAC,kBAAmB,SAASC,GACxBn/X,KAAKm+X,aAAegB,EAAgBtjQ,WACpC77H,KAAKq+X,mBAAqBc,EAAgBnlQ,SAAS6B,UACvD,EACAojQ,iBAAkB,WACd,IAAI58M,EAAMriL,KAAK64Q,KACXpoO,EAAOzwC,KAAKqwQ,MAEZ18N,EAAY,IAAIymP,EAAmB/3G,EAAIj9K,EAAGi9K,EAAIl+K,EAAGssC,EAAMA,GAC3DzwC,KAAK4+H,QAAUjrF,EAAUkoF,WACzB77H,KAAKk+X,cAAgBvqV,EAAUqmF,SAAS6B,UAC5C,EACA0oK,SAAU,SAASr4O,EAAO20H,GACtB,IAAI/pK,EAAS9W,KAAKi9X,iBAAiB/wU,GACnClsD,KAAK2pS,UAAUtK,QAAQvoR,EAAOy0J,QAASsV,GACvC7gL,KAAKk9X,aAAapmX,GAAQ,EAC9B,EACAomX,aAAc,SAASpmX,EAAQooR,GAC3B,IAEI33R,EAAG4nC,EAFHiwV,EAAWlgG,EAAUl/R,KAAK6iJ,OAAOr7I,OAAS,EAAI,EAC9C63X,EAASngG,EAAUl/R,KAAKomS,YAAY5+R,OAAS,EAAI,EAErD,IAAKD,EAAI,EAAGA,EAAIuP,EAAO+rI,OAAOr7I,OAAQD,IAClC4nC,EAAOr4B,EAAO+rI,OAAOt7I,GACrB++Q,EAAMj6Q,OAAOrM,KAAK6iJ,OAAQ1zG,GAC1Bm3O,EAAMnpN,OAAOn9D,KAAK6iJ,OAAQ1zG,EAAMiwV,GAEpC,IAAK73X,EAAI,EAAGA,EAAIuP,EAAO48W,KAAKlsX,OAAQD,IAChC4nC,EAAOr4B,EAAO48W,KAAKnsX,GACnB++Q,EAAMj6Q,OAAOrM,KAAKomS,YAAaj3P,GAC/Bm3O,EAAMnpN,OAAOn9D,KAAKomS,YAAaj3P,EAAMkwV,EAE7C,EACApC,iBAAkB,SAAS/wU,GACvB,IAAI3kD,EAAGuP,EAAS,CAAC,EAAGugB,EAAO60B,EAW3B,IAVAp1C,EAAOy0J,QAAU,GACjBz0J,EAAO+rI,OAAS,GAChB/rI,EAAO48W,KAAO,GAETxnU,EAEOjpD,EAAQipD,KAChB70B,EAAO,CAAC60B,IAFR70B,EAAOr3B,KAAKopS,eAAeviS,QAK1BU,EAAI,EAAGA,EAAI8vB,EAAK7vB,OAAQD,IAAK,CAC9B,IAAI4nC,EAAO9X,EAAK9vB,GACZ4nC,aAAgBk4P,IAChBvwR,EAAO+rI,OAAOlhJ,KAAKwtC,GACnBr4B,EAAOy0J,QAAQ5pK,KAAKwtC,EAAK8xG,SAClB9xG,aAAgBk6P,KACvBvyR,EAAO48W,KAAK/xX,KAAKwtC,GACjBr4B,EAAOy0J,QAAQ5pK,KAAKwtC,EAAK8xG,QAEjC,CAEA,OAAOnqI,CACX,EAEAolT,YAAa,SAAS/sR,EAAM2oP,EAAUwnG,GAClCnwV,EAAK5I,QAAO,GACR4I,aAAgBk4P,IAChBrnS,KAAK+8X,qBAAqB5tV,GAC1BnvC,KAAKu/X,aAAapwV,EAAM2oP,EAAUwnG,IAC3BnwV,aAAgBk6P,KACvBrpS,KAAKg9X,0BAA0B7tV,GAC/BnvC,KAAKw/X,kBAAkBrwV,EAAM2oP,IAGjC93R,KAAK2pS,UAAUt9R,OAAO8iC,EAAK8xG,OAC/B,EAEAs+O,aAAc,SAASz8O,EAAOg1I,EAAUwnG,GACpC,IAAI/3X,EAAGsoR,EAAY6W,EACfxQ,EAAU,GAAIrqM,EAAU,GAS5B,IARA7rF,KAAKilS,YAAY+B,eAEblP,GACA93R,KAAKqmS,gBAAgBtB,iBAAiB,IAAI9B,EAAgBngJ,IAE9DwjI,EAAMj6Q,OAAOrM,KAAK6iJ,OAAQC,GAC1B9iJ,KAAK83X,gBAAgBzrX,OAAOy2I,GAEvBv7I,EAAI,EAAGA,EAAIu7I,EAAM41C,WAAWlxL,OAAQD,IAAK,CAC1Cm/R,EAAY5jJ,EAAM41C,WAAWnxL,GAC7B,IAAK,IAAIwjC,EAAI,EAAGA,EAAI27P,EAAUN,YAAY5+R,OAAQujC,IAC9C8kP,EAAa6W,EAAUN,YAAYr7P,GAC9Bu0V,GAAuB70W,EAAQgL,QAAQo6P,EAAYyvG,KAChDzvG,EAAWuX,iBAAmBV,EAC9BxQ,EAAQv0R,KAAKkuR,GACNA,EAAWmT,iBAAmB0D,GACrC76M,EAAQlqF,KAAKkuR,GAI7B,CAEA,IAAKtoR,EAAI,EAAGA,EAAI2uR,EAAQ1uR,OAAQD,IAC5B2uR,EAAQ3uR,GAAGsG,OAAO,KAAMiqR,GACxB5B,EAAQ3uR,GAAGo7R,cAEf,IAAKp7R,EAAI,EAAGA,EAAIskF,EAAQrkF,OAAQD,IAC5BskF,EAAQtkF,GAAGF,OAAO,KAAMywR,GACxBjsM,EAAQtkF,GAAGo7R,aAEnB,EAEA68F,kBAAmB,SAAS3vG,EAAYiI,GAChCjI,EAAWuX,iBACX9gB,EAAMj6Q,OAAOwjR,EAAWuX,gBAAgBhB,YAAavW,GAErDA,EAAWmT,iBACX1c,EAAMj6Q,OAAOwjR,EAAWmT,gBAAgBoD,YAAavW,GAErDiI,GACA93R,KAAKqmS,gBAAgBtB,iBAAiB,IAAIhC,EAAqBlT,IAGnEvJ,EAAMj6Q,OAAOrM,KAAKomS,YAAavW,EACnC,EAEA8sD,iBAAkB,SAASzwR,EAAOuzU,GAC9B,IAAItwV,EAAMoG,EAAUutG,EAAOl5I,EAG3B,IAFAsiD,EAAQjpD,EAAQipD,GAASA,EAAQ,CAACA,GAE3BA,EAAM1kD,QAGT,GAFA2nC,EAAO+c,EAAM91C,SACb0sI,EAAQ9iJ,KAAK80X,SAAS3lV,EAAKue,QAEvB1tD,KAAK0/X,wBAAwB58O,GAC7B9iJ,KAAKk8T,YAAYp5K,GAAO,UACjB9iJ,KAAK80X,SAAS3lV,EAAKue,KACtB+xU,GAAatwV,EAAK+7B,aAAe/7B,EAAKu8B,UAEtC,IADAn2B,EAAWpG,EAAKoG,SAASnnC,OACpBxE,EAAM,EAAGA,EAAM2rC,EAAS/tC,OAAQoC,IACjCsiD,EAAMvqD,KAAK4zC,EAAS3rC,GAKxC,EAEA81X,wBAAyB,SAAS58O,GAC9B,IACIl5I,EADAw8R,EAActjJ,EAAMsjJ,cAGxB,GAAIA,EACA,IAAKx8R,EAAM,EAAGA,EAAMw8R,EAAY5+R,OAAQoC,IACpC5J,KAAKk8T,YAAY91B,EAAYx8R,IAAM,EAG/C,EAEA+1X,aAAc,SAASlhU,EAAUq5N,GAC7B,GAAKhhK,EAAQr4D,GAAb,CAIA,IAAIqkF,EAAQ9iJ,KAAK80X,SAASr2T,EAASpuC,IACnC,GAAIyyH,EACA,OAAOA,EAGX,IAAI37I,EAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAAQiwL,eAK1C,OAJAjwL,EAAQs3D,SAAWA,EACnBqkF,EAAQ,IAAIukJ,GAAMlgS,EAASnH,MAC3BA,KAAK+3R,SAASj1I,GAAoB,IAAbg1I,GACrB93R,KAAK80X,SAASr2T,EAASpuC,IAAMyyH,EACtBA,CAZP,CAaJ,EAEA88O,kBAAmB,SAASnhU,GACxB,GAAKq4D,EAAQr4D,GAAb,CAIA,IAAIqkF,EAAQ9iJ,KAAK80X,SAASr2T,EAAS/Q,KACnC,GAAIo1F,EACA,OAAOA,EAGX,IAAI37I,EAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAAQiwL,eAK1C,OAJAjwL,EAAQs3D,SAAWA,EACnBqkF,EAAQ,IAAIukJ,GAAMlgS,EAASnH,MAC3BA,KAAK+3R,SAASj1I,GACd9iJ,KAAK80X,SAASr2T,EAAS/Q,KAAOo1F,EACvBA,CAZP,CAaJ,EAEA+8O,cAAe,SAAS3zU,EAAOv/C,GAC3B,IAAIwiC,EAAMvlC,EAAKk5I,EAAOg9O,EACtB,IAAKl2X,EAAM,EAAGA,EAAMsiD,EAAM1kD,OAAQoC,IAC9BulC,EAAO+c,EAAMtiD,GACbk5I,EAAQ9iJ,KAAK4/X,kBAAkBzwV,IAC/B2wV,EAAc9/X,KAAK4/X,kBAAkBjzX,MACjB3M,KAAKi1R,UAAU6qG,EAAah9O,IAC/B9iJ,KAAKi4R,QAAQ6nG,EAAah9O,EAGnD,EAEAi9O,eAAgB,SAASp7X,GACrB,IAKIiF,EACA6mE,EANAxoE,EAAOjI,KACPqjC,EAAO1+B,EAAE0+B,KACT+J,EAASzoC,EAAEyoC,OACX8e,EAAQvnD,EAAEunD,MACV/kD,EAAUc,EAAKd,QAInB,GAAIxC,EAAEohB,MACF,IAAKnc,EAAM,EAAGA,EAAMsiD,EAAM1kD,OAAQoC,IAC1B5J,KAAK80X,SAAS5oU,EAAMtiD,GAAK8jD,MACzB1tD,KAAK80X,SAAS5oU,EAAMtiD,GAAK8jD,KAAKskU,mBAH1C,CASA,GAAc,UAAV5kV,EACAptC,KAAK28U,iBAAiBh4U,EAAEunD,OAAO,QAc/B,IAXM9e,GAAqB,eAAXA,GAA6BptC,KAAKggY,gBAC9ChgY,KAAKggY,eAAgB,EACrBvvT,GAAY,GAGXrjC,GAAW/J,GACZp7B,EAAKuuD,QAGTx2D,KAAK6/X,cAAc3zU,EAAO7oB,GAErBz5B,EAAM,EAAGA,EAAMsiD,EAAM1kD,OAAQoC,IAC9BsiD,EAAMtiD,GAAKiiE,OAIf1kE,EAAQotN,SAAW9jJ,GAAuB,UAAVrjC,GAAgC,OAAVA,IACtDnlC,EAAKssN,OAAOptN,EAAQotN,QAGpB9jJ,IACAzwE,KAAKoK,QAAQ,aACbpK,KAAKggY,eAAgB,EA5BzB,CA8BJ,EAEAC,SAAU,SAAS9wV,GACXA,aAAgBk4P,GAChBrnS,KAAK+3R,SAAS5oP,GACPA,aAAgBk6P,IACvBrpS,KAAKy5X,cAActqV,EAE3B,EAEAssV,eAAgB,SAASyE,GACrB,IAAIroM,EAAU73L,KAAKilS,YAAYptG,QAE/B,IAAK73L,KAAKmgY,eAA6C,IAA5BtoM,EAAQtxJ,SAAS/+B,OAAc,CACtD,IAAIqE,EAAUgsL,EAAQtxJ,SAAS,GAC/B,GAAI16B,IAAwC,IAA7BA,EAAQ1E,QAAQynD,SAAoB,CAC/C,IAAIA,EAAW/iD,EAAQ1E,QAAQynD,SAC3B6oI,EAAQ7oI,EAAS6oI,MAarB,GAZIz3L,KAAKiyX,aAAgC,IAAjBx6L,EAAMjwL,SACtBqE,aAAmBw7R,GACnB5vG,EAAQ,CAAC,OAAQ,kBAAmB,uBAC7B5rL,aAAmBw9R,KAC1B5xG,EAAQ,CAAC,SAGT7oI,IAAgC,IAApBA,EAASviD,QACrBorL,EAAM91L,KAAK,WAIf81L,GAASA,EAAMjwL,OAAQ,CACvB,IACI20H,EACJn8H,KAAKmgY,cAAgB,IAAIlH,GAAephM,EAAS,CAC7CJ,MAAOA,EACPvtK,MAAOlqB,KAAKk5X,cAAc1vX,KAAKxJ,MAC/BgzF,OAAO,EACPotS,YAAa5mX,SAASq+K,EAAQhsL,QAAQgB,QAAQ,aAAaZ,IAAI,UAAW,IAAM,KAEpF,IAAIo0X,EAAal0X,EAAWnM,KAAKmgY,cAAcn5E,OAAOn7S,SAClDy0X,EAAcl0X,EAAYpM,KAAKmgY,cAAcn5E,OAAOn7S,SACxD,GAAIA,aAAmBw7R,GAAO,CAC1B,IAAI2D,EAAchrS,KAAK4wS,YAAY/kS,EAAQo5Q,OAAO6b,KAClD3kK,EAAQ,IAAIL,EAAMkvK,EAAY5lS,EAAG4lS,EAAY7mS,GAAGklR,MAAM,IAAIvtJ,GACrDukQ,EAAar1F,EAAYj/R,OAAS,EACnCu0X,EAdM,IAed,MAAO,GAAIz0X,aAAmBw9R,GAAY,CACtC,IAAIk3F,EAAmBvgY,KAAK4wS,YAAY/kS,EAAQo5Q,UAEhD9oJ,EAAQ,IAAIL,EAAMykQ,EAAiBn7X,EAAGm7X,EAAiBp8X,GAClDklR,MAAM,IAAIvtJ,GACNukQ,EAAaE,EAAiBx0X,MAAQ,IAAM,EAC7Cu0X,EArBE,IAuBd,CAEInkQ,GACKn8H,KAAKoiJ,OAAOhyG,YACb+rF,EAAQA,EAAMktJ,MAAM,IAAIvtJ,EAAM97H,KAAKwjR,SAASj2P,WAAYvtB,KAAKwjR,SAAS1sP,aAE1EqlG,EAAQn8H,KAAK+9X,eAAe5hQ,GAC5BA,EAAQ,IAAIL,EAAM14H,EAAK+V,IAAIgjH,EAAM/2H,EAAG,GAAIhC,EAAK+V,IAAIgjH,EAAMh4H,EAAG,IAC1DnE,KAAKmgY,cAAc1nL,OAAOt8E,GACtB+jQ,GACAlgY,KAAKmgY,cAAcn5E,OAAOr9S,IAAI,QAASR,KAG3CnJ,KAAKwoS,iBAEb,CACJ,CACJ,CACJ,EAEA0wF,cAAe,SAASv0X,GACpB3E,KAAKoK,QAAQ,eAAgBzF,GAC7B3E,KAAKwoS,iBACT,EAEAg4F,oBAAqB,SAASrkQ,GAC1B,OAAOA,EAAMmtJ,MAAM,EAAItpR,KAAKywC,OAChC,EAEA2zP,YAAa,WACTpkS,KAAK6iJ,OAAS,GACd7iJ,KAAKopS,eAAiB,GACtBppS,KAAKomS,YAAc,GACnBpmS,KAAK80X,SAAW,CAAC,EACjB90X,KAAKw5X,oBAAsB,CAAC,EAC5Bx5X,KAAKs2X,oBAAsB,IAAImK,GAC/BzgY,KAAKu2X,2BAA6B,GAClCv2X,KAAKqmS,gBAAkB,IAAI5B,EAAgB,CACvCi8F,OAAQ1gY,KAAKq7X,aACbsF,OAAQ3gY,KAAKq7X,eAEjBr7X,KAAKqwB,GAAKwnK,EAAQ60F,UACtB,EAEAmsG,gBAAiB,WACb,IAAI5wX,EAAOjI,KACXiI,EAAK6kE,cAED7kE,EAAKgqX,aACLhqX,EAAKw2X,wBAGLx2X,EAAKd,QAAQ6qE,WACT/pE,EAAKgqX,aACLjyX,KAAK4gY,gBAAiB,EACtB5gY,KAAK6gY,qBAAsB,EAC3B54X,EAAKwpB,WAAW20C,QAChBn+D,EAAKmtX,sBAAsBhvT,SAE3Bn+D,EAAKwpB,WAAW20C,QAG5B,EAEA0G,YAAa,WACT,GAAIgqD,EAAQ92H,KAAKmH,QAAQiuX,uBAAwB,CAC7Cp1X,KAAKiyX,aAAc,EACnB,IAAIt/G,EAAY3yQ,KAAKmH,QAAQsqB,YAAc,CAAC,EACxCqvW,EAAK79X,EAAQ0vQ,GAAa,CAAEvkQ,KAAMukQ,GAAcA,EAEhD3yQ,KAAKyxB,YAAczxB,KAAK+gY,sBACxB/gY,KAAKyxB,WACAxnB,OAAO,SAAUjK,KAAK+gY,uBACtB92X,OAAO,eAAgBjK,KAAKghY,4BAC5B/2X,OAAO,QAASjK,KAAKihY,sBAE1BjhY,KAAK+gY,sBAAwB/gY,KAAKkhY,eAAe13X,KAAKxJ,MACtDA,KAAKghY,2BAA6BhhY,KAAKmhY,oBAAoB33X,KAAKxJ,MAChEA,KAAKihY,oBAAsBjhY,KAAK47T,OAAOpyT,KAAKxJ,OAGhDA,KAAKyxB,WAAa9wB,MAAMyN,KAAKE,WAAW84C,OAAO05U,GAC1Ct3X,KAAK,SAAUxJ,KAAK+gY,uBACpBv3X,KAAK,eAAgBxJ,KAAKghY,4BAC1Bx3X,KAAK,QAASxJ,KAAKihY,oBAC5B,MACIjhY,KAAKohY,kBACLphY,KAAKiyX,aAAc,CAE3B,EAEAwM,sBAAuB,WACnB,IAAI9rH,EAAY3yQ,KAAKmH,QAAQiuX,sBAC7B,GAAIziH,EAAW,CACX,IAAImuH,EAAK79X,EAAQ0vQ,GAAa,CAAEvkQ,KAAMukQ,GAAcA,EAEhD3yQ,KAAKo1X,uBAAyBp1X,KAAKqhY,2BACnCrhY,KAAKo1X,sBACAnrX,OAAO,SAAUjK,KAAKqhY,4BACtBp3X,OAAO,eAAgBjK,KAAKshY,iCAC5Br3X,OAAO,QAASjK,KAAKuhY,2BAE1BvhY,KAAKqhY,2BAA6BrhY,KAAKwhY,oBAAoBh4X,KAAKxJ,MAChEA,KAAKshY,gCAAkCthY,KAAKyhY,yBAAyBj4X,KAAKxJ,MAC1EA,KAAKuhY,yBAA2BvhY,KAAK0hY,kBAAkBl4X,KAAKxJ,OAGhEA,KAAKo1X,sBAAwBz0X,MAAMyN,KAAKE,WAAW84C,OAAO05U,GACrDt3X,KAAK,SAAUxJ,KAAKqhY,4BACpB73X,KAAK,eAAgBxJ,KAAKshY,iCAC1B93X,KAAK,QAASxJ,KAAKuhY,yBAC5B,CACJ,EAEAJ,oBAAqB,SAASx8X,GACZ,QAAVA,EAAEe,OACF1F,KAAK4gY,gBAAiB,EAE9B,EAEAa,yBAA0B,SAAS98X,GACjB,QAAVA,EAAEe,OACF1F,KAAK6gY,qBAAsB,EAEnC,EAEAjlE,OAAQ,WACJ57T,KAAK4gY,gBAAiB,CAC1B,EAEAc,kBAAmB,WACf1hY,KAAK6gY,qBAAsB,CAC/B,EAEAK,eAAgB,SAASv8X,GACJ,WAAbA,EAAEyoC,OACEptC,KAAK2hY,kBACL3hY,KAAK4hY,cAAcj9X,EAAEunD,OAEL,eAAbvnD,EAAEyoC,OACLptC,KAAK2hY,kBACL3hY,KAAK6hY,cAAcl9X,EAAEunD,MAAOvnD,EAAEohB,OAEd,QAAbphB,EAAEyoC,OACTptC,KAAKs2X,oBAAoB9oX,IAAI7I,EAAEunD,OACX,SAAbvnD,EAAEyoC,OACTptC,KAAK8hY,YAAYn9X,EAAEunD,OAEnBlsD,KAAK2e,SAEb,EAEAgjX,eAAgB,WACZ,OAAQ3hY,KAAKm2H,UACjB,EAEAi8P,qBAAsB,WAClBpyX,KAAKm2H,YAAcn2H,KAAKm2H,YAAc,GAAK,CAC/C,EAEAk8P,oBAAqB,WACjBryX,KAAKm2H,WAAa/yH,EAAK+V,KAAKnZ,KAAKm2H,YAAc,GAAK,EAAG,EAC3D,EAEAx3G,QAAS,WACL3e,KAAK4gY,gBAAiB,EACjB5gY,KAAK6gY,qBACN7gY,KAAK+hY,6BAEb,EAEAA,4BAA6B,WACzB/hY,KAAKw2D,QACLx2D,KAAKgiY,WAAWhiY,KAAKyxB,WAAWmG,QAC5B53B,KAAKo1X,uBACLp1X,KAAKiiY,gBAAgBjiY,KAAKo1X,sBAAsBx9V,QAAQ,GAGxD53B,KAAKmH,QAAQotN,OACbv0N,KAAKu0N,OAAOv0N,KAAKmH,QAAQotN,QAEzBv0N,KAAK0+X,qBAET1+X,KAAKoK,QAAQ,YACjB,EAEA8oX,mBAAoB,WAChBlzX,KAAK6gY,qBAAsB,EACtB7gY,KAAK4gY,gBACN5gY,KAAK+hY,6BAEb,EAEArD,mBAAoB,WAEhB,IADA,IAAIt4F,EAAcpmS,KAAKomS,YACdx8R,EAAM,EAAGA,EAAMw8R,EAAY5+R,OAAQoC,IACxCw8R,EAAYx8R,GAAK+U,SAEzB,EAEAijX,cAAe,SAAS11U,GACpB,IACI/c,EAAM5nC,EADNstX,EAAU70X,KAAK80X,SAEnB,IAAKvtX,EAAI,EAAGA,EAAI2kD,EAAM1kD,OAAQD,IAEtBstX,GADJ1lV,EAAO+c,EAAM3kD,IACI8oB,MACbrwB,KAAKqM,OAAOwoX,EAAQ1lV,EAAK9e,KAAK,GAC9BwkW,EAAQ1lV,EAAK9e,IAAM,KAG/B,EAEAyxW,YAAa,WACT,IAAIjqM,EAAU73L,KACVk4L,EAAgBL,EAAQy+L,oBAC5Bp+L,EAAc52L,SAAQ,SAAS+0X,GAC3B,IAAI53T,EAAW43T,EAAa53T,SACxBqkF,EAAQuzO,EAAaxqX,QACpB4yD,EAAS3P,UACNg0F,GACAA,EAAM+uO,uBACNh6L,EAAQkgG,SAASj1I,EAAOuzO,EAAav+F,UACrCjgG,EAAQi9L,SAASr2T,EAASpuC,IAAMyyH,GAEhC+0C,EAAQ8nM,aAAalhU,GAEzB43T,EAAahvQ,WACb6wE,EAAc7rL,OAAOoyD,GAE7B,GACJ,EAEAojU,cAAe,SAAS31U,EAAOnmC,GAC3B,IAAK,IAAIxe,EAAI,EAAGA,EAAI2kD,EAAM1kD,OAAQD,IAAK,CACnC,IAAIk3D,EAAWvS,EAAM3kD,GAEjBu7I,EAAQ9iJ,KAAK80X,SAASr2T,EAASpuC,IAC/ByyH,GACAA,EAAM2uO,uBAAuBhzT,EAAU14C,EAE/C,CACJ,EAEAi8W,WAAY,SAASxtW,GACjB,IAAK,IAAIjtB,EAAI,EAAGA,EAAIitB,EAAUhtB,OAAQD,IAClCvH,KAAK2/X,aAAanrW,EAAUjtB,IAAI,EAExC,EAEAi6X,oBAAqB,SAAS78X,GACT,WAAbA,EAAEyoC,OACEptC,KAAK2hY,kBACL3hY,KAAKkiY,mBAAmBv9X,EAAEunD,OAEV,QAAbvnD,EAAEyoC,OACTptC,KAAKiiY,gBAAgBt9X,EAAEunD,OACH,SAAbvnD,EAAEyoC,SAEW,eAAbzoC,EAAEyoC,OACLptC,KAAK2hY,kBACL3hY,KAAKmiY,mBAAmBx9X,EAAEunD,OAG9BlsD,KAAKkzX,qBAEb,EAEAgP,mBAAoB,SAASh2U,GACzB,IAAK,IAAI3kD,EAAI,EAAGA,EAAI2kD,EAAM1kD,OAAQD,IAC9BvH,KAAKqM,OAAOrM,KAAKw5X,oBAAoBttU,EAAM3kD,GAAGmmD,MAAM,GACpD1tD,KAAKw5X,oBAAoBttU,EAAM3kD,GAAGmmD,KAAO,IAEjD,EAEAy0U,mBAAoB,SAASj2U,GACzB,IAAK,IAAI3kD,EAAI,EAAGA,EAAI2kD,EAAM1kD,OAAQD,IAAK,CACnC,IAAIk3D,EAAWvS,EAAM3kD,GAEJvH,KAAKw5X,oBAAoB/6T,EAAS/Q,KACxC+jU,uBAAuBhzT,EACtC,CACJ,EAEAwjU,gBAAiB,SAAS77F,EAAatO,GAGnC,IAFA,IAAItwR,EAAS4+R,EAAY5+R,OAEhBD,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAIk3D,EAAW2nO,EAAY7+R,GAC3BvH,KAAKoiY,uBAAuB3jU,EAAUq5N,EAC1C,CACJ,EAEAsqG,uBAAwB,SAAS3jU,EAAUq5N,GACvC,IAAK93R,KAAKw5X,oBAAoB/6T,EAAS/Q,KAAM,CACzC,IAAI3xC,EAAO/b,KAAKqiY,mBAAmB5jU,EAAS1iD,MACvC+6G,EAAQ/6G,IAAkB,OAATA,IAClBA,EAAO,IAAI+/G,EAAMr9D,EAASs2T,MAAOt2T,EAASu2T,QAG9C,IAAI12V,EAAKt+B,KAAKqiY,mBAAmB5jU,EAASngC,IAK1C,GAJKw4F,EAAQx4F,IAAc,OAAPA,IAChBA,EAAK,IAAIw9F,EAAMr9D,EAASw2T,IAAKx2T,EAASy2T,MAGtCp+P,EAAQ/6G,IAAS+6G,EAAQx4F,GAAK,CAC9B,IAAIn3B,EAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAAQqwL,oBAC1CrwL,EAAQs3D,SAAWA,EACnB,IAAIoxN,EAAa,IAAIwZ,GAAWttR,EAAMuiB,EAAIn3B,GAE1CnH,KAAKw5X,oBAAoB/6T,EAAS/Q,KAAOmiO,EACzC7vR,KAAKy5X,cAAc5pG,EAAYiI,EACnC,CACJ,CACJ,EAEAuqG,mBAAoB,SAAS35X,GACzB,IAAIg+R,EAMJ,OAJI5vK,EAAQpuH,IAAoB,OAAVA,IAClBg+R,EAAY1mS,KAAK80X,SAASpsX,IAGvBg+R,CACX,EAEA06F,gBAAiB,WACb,IAAIn5X,EAAOjI,KAEPyxB,EADUxpB,EAAKd,QACMsqB,WAIzB,IAFAA,EAAaxuB,EAAQwuB,GAAc,CAAErjB,KAAMqjB,GAAeA,aAEhC9wB,MAAMyN,KAAKE,cAAgBmjB,aAAsB9wB,MAAMyN,KAAKG,wBAClF,MAAM,IAAIyC,MAAM,qQAGfygB,EAAWhC,SACZgC,EAAWhC,OAAS,CAChB,CAAE1J,MAAO,QACT,CAAEA,MAAO,OACT,CAAEA,MAAO,kBACT,CAAEA,MAAO,cAGb9d,EAAKwpB,YAAcxpB,EAAK6kS,iBACxB7kS,EAAKwzT,oBAGTxzT,EAAK6kS,gBAAkB7kS,EAAK83X,eAAev2X,KAAKvB,GAChDA,EAAK0zT,cAAgB1zT,EAAK2zT,OAAOpyT,KAAKvB,GAEtCA,EAAKwpB,WAAaljB,EAAuB64C,OAAO31B,GAC3CjoB,KAAK0zC,EAAQj1C,EAAK6kS,iBAClBtjS,KAAKwhD,EAAO/iD,EAAK0zT,cAC1B,EAEAF,kBAAmB,WACf,IAAIxzT,EAAOjI,KAEXiI,EAAKwpB,WAAWxnB,OAAOizC,EAAQj1C,EAAK6kS,iBAAiB7iS,OAAO+gD,EAAO/iD,EAAK0zT,cAC5E,EAEAjrB,OAAQ,SAAStN,EAASsE,GAClBA,IAAa9kS,GAAewgS,IACxBsE,GACA1nS,KAAK+rS,UAAUpqS,KAAKyhS,GACpBpjS,KAAKy4X,aAAat+U,OAAOipP,EAAQniJ,UAGjCqlI,EAAMj6Q,OAAOrM,KAAK+rS,UAAW3I,GAC7BpjS,KAAKy4X,aAAapsX,OAAO+2R,EAAQniJ,SAG7C,EAEAizO,gBAAiB,SAASpxO,EAAOp6I,GACzBA,EACA1I,KAAKwnS,mBAAmB/5R,KAAKq1I,GAE7B9iJ,KAAKwnS,mBAAmBxlS,SAEhC,EAEAq6X,gBAAiB,WAGb,IAFA,IAAIiG,EAAWtiY,KAAK+rS,UAEXxkS,EAAI,EAAGA,EAAI+6X,EAAS96X,OAAQD,IAAK,CACtC,IAAI67R,EAAUk/F,EAAS/6X,GAEnB67R,EAAQE,eACRF,EAAQE,gBAEZF,EAAQzkR,SACZ,CACJ,EAEA4jX,SAAU,WACN,IAAK,IAAIh7X,EAAI,EAAGA,EAAIvH,KAAKomS,YAAY5+R,OAAQD,IACzCvH,KAAKomS,YAAY7+R,GAAGoX,SAE5B,EAEA6pR,gBAAiB,WACTxoS,KAAKmgY,gBACLngY,KAAKmgY,cAAczyX,OACnB1N,KAAKmgY,cAAcn+X,UACnBhC,KAAKmgY,cAAgB,KAE7B,EAEAvD,sBAAuB,WACf58X,KAAKg5X,UACLh5X,KAAKg5X,QAAQtrX,OACb1N,KAAKg5X,QAAQh3X,UACbhC,KAAKg5X,QAAU,KAEvB,EAEAplO,gBAAiB,WACb,IAAI/6D,EAAU74F,KAAKoiJ,OAAO49I,SACtB0vF,EAAe5yI,EAAKnpM,YACAvD,WAAWyoD,EAAQzzF,GAAIyzF,EAAQ10F,GAEnDq+X,EAAW,IAAI1lJ,EAAK7/G,KAAK,CAAC,EAAG,GAAI,CAACpkC,EAAQ9sF,MAAO8sF,EAAQ7sF,SACzDqjJ,EAAW5X,EAAKlJ,KAAKc,SAASmzP,GAC9B71W,EAAO,IAAI8qH,EAAKhH,MAAM,CAAE98F,UAAW+7U,IACnC+S,EAAW,IAAIhrP,EAAKhH,MAAM,CAAEv2F,KAAMm1G,IAClCxxG,EAAO79C,KAAKoiJ,OAAOqsF,eAAel5L,SAAS,GAO/C,OALAktV,EAAStoV,OAAOxtB,GAGhBA,EAAK4oB,SAAS5zC,KAAKk8C,GAEZ4kV,CACX,EAEArrP,aAAc,WACV,IAAIrnG,EAAQ+sM,EAAKnpM,YAAY5D,MAAM,EAAI/vC,KAAKqwQ,OACxC1jP,EAAO,IAAI8qH,EAAKhH,MAAM,CACtB98F,UAAW5D,IAGX8N,EAAO79C,KAAK2pS,UAAUl7D,eAG1B,OAFA9hN,EAAK4oB,SAAS5zC,KAAKk8C,GAEZlxB,CACX,EAEA47Q,aAAc,WACVvoS,KAAKqwS,oBACLrwS,KAAKunS,wBACT,EAEA8I,kBAAmB,WACXrwS,KAAKyxB,YAAczxB,KAAKiyX,aACxBjyX,KAAKyxB,WAAW0qC,MAExB,EAEAorO,uBAAwB,WACpB,IAAIt/R,EAAOjI,KACPiI,EAAKmtX,uBAAyBntX,EAAKgqX,cACnCtvX,EAAEu8D,KAAK92D,MAAMzF,EAAGsF,EAAKsuX,4BAA4Bp3T,MAAK,WAClDl3D,EAAKmtX,sBAAsBj5T,MAC/B,IACAl0D,EAAKy6X,0BAA4B,GAEzC,IASJ,SAAS3Q,GAAoBtzT,GACzB,IAAI3nD,EAAS,CAAC,EA4Bd,OAxBIggH,GAFJr4D,EAAWA,GAAY,CAAC,GAEH39B,OAA2B,OAAlB29B,EAAS39B,OACnChqB,EAAOgqB,KAAO29B,EAAS39B,MAGvBg2F,EAAQr4D,EAASr5D,IAAqB,OAAfq5D,EAASr5D,IAChC0R,EAAO1R,EAAIq5D,EAASr5D,GAGpB0xH,EAAQr4D,EAASt6D,IAAqB,OAAfs6D,EAASt6D,IAChC2S,EAAO3S,EAAIs6D,EAASt6D,GAGpB2yH,EAAQr4D,EAAS1yD,QAA6B,OAAnB0yD,EAAS1yD,QACpC+K,EAAO/K,MAAQ0yD,EAAS1yD,OAGxB+qH,EAAQr4D,EAASzyD,SAA+B,OAApByyD,EAASzyD,SACrC8K,EAAO9K,OAASyyD,EAASzyD,QAGzB8qH,EAAQr4D,EAAS/4D,OAA2B,OAAlB+4D,EAAS/4D,OACnCoR,EAAOpR,KAAO+4D,EAAS/4D,MAGpBoR,CACX,CApCA2T,EAAQomK,YAAY9tL,OAAOo1X,GAAQpwX,IAAI,GAEnCpH,MAAMg8O,UACNh8O,MAAMg8O,SAAS55O,OAAOo1X,GAAQpwX,IAoFlC,IAAIkxX,GAAiBt4X,MAAM2I,WAAWvG,OAAO,CACzCoF,KAAM,SAAS0vL,EAAS1wL,GACpBxG,MAAM2I,WAAWvB,GAAGI,KAAKoC,KAAKvK,MAC9BA,KAAK63L,QAAUA,EACf73L,KAAKmH,QAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAASA,GAC5CnH,KAAK2iY,OAAS,GACd3iY,KAAK4iY,gBACL5iY,KAAK6iY,cACL7iY,KAAK8iY,cAED9iY,KAAKmH,QAAQ6rF,OACbhzF,KAAK+iY,cAGT/iY,KAAKwJ,KAAKxJ,KAAKqK,OAAQlD,EAC3B,EAEAkD,OAAQ,CAAC,SAET04X,YAAa,WACT/iY,KAAKy2B,UAAY9zB,EAAE,UAAUw3C,OAAOn6C,KAAK6L,SACzC7L,KAAKgnT,OAAShnT,KAAKy2B,UAAU6/R,WAAW,CAAC,GAAG0sE,eAChD,EAEAF,YAAa,WACT,IAAK,IAAIv7X,EAAI,EAAGA,EAAIvH,KAAK2iY,OAAOn7X,OAAQD,IAAK,CACzC,IAAI89R,EAAOrlS,KAAK2iY,OAAOp7X,IACnB89R,EAAKsnB,SAAWtnB,EAAKsnB,QAAQnlT,SAAWsvH,EAAQuuK,EAAKsnB,WACrD3sT,KAAKijY,SAASz1X,IAAI63R,EAE1B,CACJ,EAEAu9F,cAAe,WACX5iY,KAAK6L,QAAUlJ,EAAE,UACjB3C,KAAKijY,SAAWjjY,KAAK6L,QAChBq3X,aAAa,CACVh5W,MAAOlqB,KAAKkqB,MAAM1gB,KAAKxJ,MACvB2hU,WAAW,IACZwhE,kBAEPnjY,KAAK6L,QAAQI,IAAI,SAAU,OAC/B,EAEA42X,YAAa,WACT,IAAK,IAAIt7X,EAAI,EAAGA,EAAIvH,KAAKmH,QAAQswL,MAAMjwL,OAAQD,IAC3CvH,KAAKojY,WAAWpjY,KAAKmH,QAAQswL,MAAMlwL,GAE3C,EAEA67X,WAAY,SAAS/9F,GACZ19R,EAAc09R,KACfA,EAAO,CACHjjS,KAAMijS,IAGd,IAAIg+F,EAAWh+F,EAAKjjS,KAAO,OACvBpC,KAAKqjY,GACLrjY,KAAKqjY,GAAUh+F,GAEfrlS,KAAK2iY,OAAOhhY,KAAK6G,EAAW,CAAC,EAAG68R,EAAM,CAClCp7O,WAAYjqD,KAAKsjY,eAAe,CAAEl2V,OAAQi4P,EAAKjjS,SAG3D,EAEAq2M,OAAQ,SAASt8E,GACb,IAAIikQ,EAAc5mX,SAASxZ,KAAKmH,QAAQi5X,YAAa,IAEjDpgY,KAAKgnT,SACLhnT,KAAKgnT,OAAOz0N,KAAK4pC,EAAM/2H,EAAG+2H,EAAMh4H,GAE5Bi8X,GACApgY,KAAKgnT,OAAOp6S,QAAQX,IAAI,SAAUm0X,GAG9C,EAEA1yX,KAAM,WACE1N,KAAKgnT,QACLhnT,KAAKgnT,OAAOthQ,OAEpB,EAEAuS,SAAU,WACN,MAAO,CACHvyD,KAAM,cACNinT,QAAS,GAEjB,EAEA42E,SAAU,WACNvjY,KAAK2iY,OAAOhhY,KAAK,CACb22F,KAAM,SACNw+I,SAAU,WACVpxO,KAAM,SACNo7B,KAAM,OACNmpB,WAAYjqD,KAAKsjY,eAAe,CAAEl2V,OAAQ,UAElD,EAEAo2V,WAAY,WACRxjY,KAAK2iY,OAAOhhY,KAAK,CACb22F,KAAM,IACNw+I,SAAU,WACVpxO,KAAM,SACNo7B,KAAM,SACNmpB,WAAYjqD,KAAKsjY,eAAe,CAAEl2V,OAAQ,YAElD,EAEAq2V,wBAAyB,SAASt8X,GAC9BnH,KAAK0jY,aAAa,UAClB1jY,KAAK2jY,aAAah3E,QAAQhrT,KAAK,CAC3B22F,KAAM,cACNw+I,SAAU,WACVh2M,KAAM,sBACNyzB,MAAO,SACPtK,WAAYjqD,KAAKsjY,eAAe,CAAEl2V,OAAQ,sBAAuB0F,KAAM3rC,EAAQ2rC,QAEvF,EAEA8wV,oBAAqB,SAASz8X,GAC1BnH,KAAK0jY,aAAa,UAClB1jY,KAAK2jY,aAAah3E,QAAQhrT,KAAK,CAC3B22F,KAAM,eACNruC,WAAYjqD,KAAKsjY,eAAe,CAAEl2V,OAAQ,kBAAmB0F,KAAM3rC,EAAQ2rC,OAC3EgkM,SAAU,WACVh2M,KAAM,kBACNyzB,MAAO,UAEf,EAEAsvU,gBAAiB,WACb7jY,KAAK0jY,aAAa,UAClB1jY,KAAK8jY,aAAan3E,QAAQhrT,KAAK,CAC3B22F,KAAM,SACNw+I,SAAU,WACVh2M,KAAM,cACNyzB,MAAO,SACPtK,WAAYjqD,KAAKsjY,eAAe,CAAEl2V,OAAQ,iBAElD,EAEA22V,qBAAsB,WAClB/jY,KAAK0jY,aAAa,UAClB1jY,KAAK8jY,aAAan3E,QAAQhrT,KAAK,CAC3B22F,KAAM,YACNw+I,SAAU,WACVh2M,KAAM,mBACNyzB,MAAO,SACPtK,WAAYjqD,KAAKsjY,eAAe,CAAEl2V,OAAQ,sBAElD,EAEA42V,SAAU,WACNhkY,KAAK0jY,aAAa,WAClB1jY,KAAKikY,cAAct3E,QAAQhrT,KAAK,CAC5B22F,KAAM,OACNw+I,SAAU,WACVh2M,KAAM,OACNyzB,MAAO,UACPtK,WAAYjqD,KAAKsjY,eAAe,CAAEl2V,OAAQ,UAElD,EAEA82V,SAAU,WACNlkY,KAAK0jY,aAAa,WAClB1jY,KAAKikY,cAAct3E,QAAQhrT,KAAK,CAC5B22F,KAAM,OACNw+I,SAAU,WACVh2M,KAAM,OACNyzB,MAAO,UACPtK,WAAYjqD,KAAKsjY,eAAe,CAAEl2V,OAAQ,UAElD,EAEAs2V,aAAc,SAASthY,GACnB,IAAIytB,EAAO,IAAMztB,EAAO,QACnBpC,KAAK6vB,KACN7vB,KAAK6vB,GAAQ7vB,KAAKi4D,WAClBj4D,KAAK2iY,OAAOhhY,KAAK3B,KAAK6vB,IAE9B,EAEAyzW,eAAgB,SAASr5U,GACrB,IAAIrmC,EAAO,CAAC,EAUZ,OARIqmC,EAAW7c,SACXxpB,EAAKjjB,MAAMijB,KAAK,WAAaqmC,EAAW7c,QAGxC6c,EAAWnX,OACXlvB,EAAKjjB,MAAMijB,KAAK,SAAWqmC,EAAWnX,MAGnClvB,CACX,EAEAugX,eAAgB,SAASt4X,GACrB,IAAI+X,EAAO,CAAC,EAERwpB,EAASvhC,EAAQ+X,KAAKjjB,MAAMijB,KAAK,WACjCwpB,IACAxpB,EAAKwpB,OAASA,GAGlB,IAAI0F,EAAOjnC,EAAQ+X,KAAKjjB,MAAMijB,KAAK,SAKnC,OAJIkvB,IACAlvB,EAAKkvB,KAAOA,GAGTlvB,CACX,EAEAsG,MAAO,SAASvlB,GACZ,IAAIslD,EAAajqD,KAAKmkY,eAAexhY,EAAEgC,EAAE0C,SACrC+lC,EAAS6c,EAAW7c,OAEpBA,GAAUptC,KAAKotC,IACfptC,KAAKotC,GAAQ6c,GAGjBjqD,KAAKoK,QAAQ,QAASpK,KAAKkpE,UAAU97B,EAAQzoC,EAAE0C,QACnD,EAEA6hE,UAAW,SAAS97B,EAAQ/lC,GAKxB,IAJA,IAEmCwE,EAF/B8sB,EAAW34B,KAAKokY,mBAChB58X,EAASmxB,EAASnxB,OAClBq7I,EAAS,GAAIujJ,EAAc,GAEtBx8R,EAAM,EAAGA,EAAMpC,EAAQoC,KAC5BiC,EAAU8sB,EAAS/uB,cACIy9R,GACnBxkJ,EAAOlhJ,KAAKkK,GAEZu6R,EAAYzkS,KAAKkK,GAIzB,MAAO,CACHg3I,OAAQA,EACRujJ,YAAaA,EACbh5P,OAAQA,EACR/lC,OAAQA,EAEhB,EAEA49J,OAAU,WACN,IACIojI,EADUroS,KAAK63L,QACIywG,eAAetoS,KAAKokY,oBACvC/7F,EAAS7gS,SACTxH,KAAK63L,QAAQxrL,OAAOg8R,GAAU,GAC9BroS,KAAK63L,QAAQ0wG,eAErB,EAEA+wF,KAAM,WACF,IAAI+K,EAAkBrkY,KAAKokY,mBACI,IAA3BC,EAAgB78X,QAChBxH,KAAK63L,QAAQyhM,KAAK+K,EAAgB,GAE1C,EAEAC,gBAAiB,SAASn9X,GACtB,IAAIizH,EAAQrxH,WAAW5B,EAAQ2rC,MAAQ,IACvC9yC,KAAKsyX,QAAQl4P,EACjB,EAEAmqQ,oBAAqB,SAASp9X,GAC1B,IAAIizH,EAAQrxH,WAAW5B,EAAQ2rC,MAAQ,IACvC9yC,KAAKsyX,SAASl4P,EAClB,EAEAk4P,QAAS,SAASl4P,GACd,IAAIgpK,EAAUpjS,KAAK63L,QAAQquG,iBAC3B9C,EAAQhpK,MAAMgpK,EAAQhpK,QAAUA,GAChCgpK,EAAQjyP,QACZ,EAEAizV,iBAAkB,WACd,OAAOpkY,KAAK63L,QAAQtxJ,QACxB,EAEA4yV,YAAa,WACTn5X,KAAK63L,QAAQshM,aACjB,EAEAI,iBAAkB,WACdv5X,KAAK63L,QAAQ0hM,kBACjB,EAEA33F,KAAM,WACF5hS,KAAK63L,QAAQ+pG,MACjB,EAEAE,KAAM,WACF9hS,KAAK63L,QAAQiqG,MACjB,EAEA9/R,QAAS,WACLhC,KAAK63L,QAAU,KACf73L,KAAK6L,QAAU,KACf7L,KAAKmH,QAAU,KAEXnH,KAAKijY,UACLjjY,KAAKijY,SAASjhY,UAGdhC,KAAKgnT,QACLhnT,KAAKgnT,OAAOhlT,SAEpB,IAGAwiY,GAAS7jY,MAAM2I,WAAWvG,OAAO,CACjCoF,KAAM,SAAS0D,EAAS1E,GACpBxG,MAAM2I,WAAWvB,GAAGI,KAAKoC,KAAKvK,MAE9BA,KAAKmH,QAAUpE,GAAO,EAAM,CAAC,EAAG/C,KAAKmH,QAASA,GAC9CnH,KAAK6L,QAAUA,EACf7L,KAAKkpD,MAAQlpD,KAAKmH,QAAQ+hD,MAC1BlpD,KAAKyvB,OAASzvB,KAAKykY,aACnBzkY,KAAK6wK,iBACL7wK,KAAK0kY,gBACT,EAEAv9X,QAAS,CACL47W,QAAS,CAAC,GAGdlyM,eAAgB,WACZ7wK,KAAK4M,QAAU5M,KAAK6L,OACxB,EAEA64X,eAAgB,WACZ,IAAIv9X,EAAUnH,KAAKmH,QAEnBnH,KAAK4uD,SAAW,IAAIjuD,MAAM4pB,GAAGw5V,SAAS/jX,KAAK4M,QAAS,CAChD6iB,OAAQzvB,KAAKyvB,OACbpoB,OAAQF,EAAQE,OAChB88W,gBAAgB,EAChBj7T,MAAOlpD,KAAKkpD,OAEpB,EAEA+oU,YAAa,SAASlsW,GAClB,OAAO/lB,KAAKkpD,MAAM0F,UAAY5uD,KAAKkpD,MAAM0F,SAAS7oC,EACtD,EAEA0+W,WAAY,WACR,IAAIh1W,EAAS,GACTo1V,EAAc7kX,KAAKkpD,MAAMz5B,OAE7B,IAAK,IAAI1J,KAAS8+V,EAAa,CAC3B,IAAI/tW,EAAS,CAAC,EACd,GAAI9W,KAAKiyX,YAAYlsW,GAAQ,CACzB,IAAIy9V,EAASxjX,KAAKmH,QAAQ47W,QAAQh9V,GAC9By9V,IACA1sW,EAAO0sW,OAASA,GAEpB1sW,EAAOiP,MAAQA,EACf0J,EAAO9tB,KAAKmV,EAChB,CACJ,CAEA,OAAO2Y,CACX,EAEA9jB,IAAK,WACD,OAAO3L,KAAK4uD,SAASjjD,KACzB,EAEA3J,QAAS,WACLhC,KAAK4uD,SAAS5sD,UACdhC,KAAK4uD,SAAS/iD,QAAQsqB,KAAK,IAAMx1B,MAAMijB,KAAK,iBAAmB,KAAKgpC,QACpE5sD,KAAKkpD,MAAQlpD,KAAK4M,QAAU5M,KAAK6L,QAAU7L,KAAKqgP,QAAUrgP,KAAK4uD,SAAW,IAC9E,IAGAurU,GAAcqK,GAAOzhY,OAAO,CAC5BoF,KAAM,SAAS0D,EAAS1E,GACpBq9X,GAAOz8X,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAAS1E,GACnCnH,KAAKwJ,KAAKxJ,KAAKqK,OAAQrK,KAAKmH,SAE5BnH,KAAKuyF,MACT,EAEAloF,OAAQ,CAAE,SAAU,UAEpBlD,QAAS,CACLrG,OAAQ,CACJkyF,OAAO,EACP2uO,WAAW,EACXt5O,WAAW,EACXlqC,MAAO,OACPnxC,SAAS,IAIjB6jK,eAAgB,WACZ,IAAI5oK,EAAOjI,KACXA,KAAK4M,QAAUjK,EAAE,oCACZihB,KAAKjjB,MAAMijB,KAAK,OAAQ5jB,KAAKkpD,MAAMwE,KAExC,IAAIi3U,EAAc,GAEd3kY,KAAKmH,QAAQiJ,UACbu0X,GAAe3kY,KAAK4kY,kBACpB5kY,KAAKyvB,OAAS,IAEdk1W,GAAe3kY,KAAK6kY,gBAGxBF,GAAe3kY,KAAK2nT,iBAEpB3nT,KAAK4M,QAAQutC,OACTx3C,EAAE,wCAAwCw3C,OAAOwqV,IAErD3kY,KAAKc,OAAS,IAAIH,MAAM4pB,GAAGi9V,OAAOxnX,KAAK4M,QAAQV,SAASlM,KAAK6L,SAAU7L,KAAKmH,QAAQrG,QACpFd,KAAKc,OAAO0I,KAAK,SAAS,SAAS7E,GAE3BA,EAAE60U,gBACF70U,EAAE2F,OAAOuB,QAAQzB,QAAQ,SACzBnC,EAAK68X,aAAangY,GAE1B,IAEA3E,KAAK+kY,qBACT,EAEAH,gBAAiB,WACb,IAAIx0X,EAAWpQ,KAAKmH,QAAQiJ,SAQ5B,MANwB,iBAAbA,IACPA,EAAWzP,MAAM6tB,SAASpe,IAG9BA,EAAWzP,MAAMyP,SAASA,EAAfzP,CAAyBX,KAAKkpD,MAG7C,EAEA27U,cAAe,WAEX,IADA,IAAI19V,EAAO,GACF5/B,EAAI,EAAGA,EAAIvH,KAAKyvB,OAAOjoB,OAAQD,IAAK,CACzC,IAAIwe,EAAQ/lB,KAAKyvB,OAAOloB,GAExB4/B,GAAQ,yCAA2CphB,EAAMA,MAAQ,MAAQA,EAAMA,OAAS,IAAM,iBAE1F/lB,KAAKiyX,YAAYlsW,EAAMA,SACvBohB,GAAQ,QAAUxmC,MAAMijB,KAAK,iBAAmB,KAAOmC,EAAMA,MAC7D,gCAER,CAEA,OAAOohB,CACX,EAEAwgR,eAAgB,WACZ,IAAIxgR,EAAO,+BAIX,OAHAA,GAAQnnC,KAAKglY,cAAc,UAC3B79V,GAAQnnC,KAAKglY,cAAc,UAC3B79V,GAAQ,QAEZ,EAEA69V,cAAe,SAAS5iY,GACpB,OAAOzB,MAAMyP,SAASigX,GAAf1vX,CAAgC4vX,GAAenuX,GAC1D,EAEA2iY,oBAAqB,WACjB/kY,KAAKilY,oBAAsBjlY,KAAK8kY,aAAat7X,KAAKxJ,MAClDA,KAAKc,OAAO+K,QAAQge,GAAGqqN,EAAQriJ,EAAI,0BAA2B7xF,KAAKilY,qBAEnEjlY,KAAKklY,oBAAsBllY,KAAKmlY,aAAa37X,KAAKxJ,MAClDA,KAAKc,OAAO+K,QAAQge,GAAGqqN,EAAQriJ,EAAI,0BAA2B7xF,KAAKklY,oBACvE,EAEAC,aAAc,SAASxgY,GACnBA,EAAEwE,iBACFnJ,KAAKoK,QAAQ,SACjB,EAEA06X,aAAc,SAASngY,GACnBA,EAAEwE,iBACFnJ,KAAKoK,QAAQ,SACjB,EAEAmoF,KAAM,WACFvyF,KAAKc,OAAOy9E,SAASgU,MACzB,EAEA7sC,MAAO,WACH1lD,KAAKc,OAAO0I,KAAK,aAAcxJ,KAAKgC,QAAQwH,KAAKxJ,OAAO0lD,OAC5D,EAEA1jD,QAAS,WACLhC,KAAKc,OAAO4kD,QAAQ1jD,UACpBhC,KAAKc,OAAO+K,QAAQutB,IAAI86M,EAAQriJ,EAAI,qBAAsB7xF,KAAKilY,qBAC/DjlY,KAAKc,OAAO+K,QAAQutB,IAAI86M,EAAQriJ,EAAI,qBAAsB7xF,KAAKklY,qBAC/DllY,KAAKilY,oBAAsB,KAC3BjlY,KAAKolY,wBAA0B,KAC/BplY,KAAKc,OAAS,KACd0jY,GAAOz8X,GAAG/F,QAAQuI,KAAKvK,KAC3B,IAGJ,SAASg6X,GAAmBvjW,EAAWtvB,GACnC,IAAI+hD,EAAQlpD,KAAKyxB,WAAWgqC,OAAOvS,MACnC,GAAIA,EAAO,CACP,IAAIwjB,EAAYxjB,EAAMnhD,GAAG0nB,OAAOqR,KAAO,OAASooB,EAAMK,QACtD5mD,EAAE,gBAAkBwE,EAAQ4e,MAAQ,QAC/B7Z,SAASuqB,GAAW4uW,kBAAkB,CACnC3zT,eAAgBxoB,EAAMK,QACtBkqB,cAAe/G,EACfj7C,WAAYzxB,KAAKyxB,WAAWrjB,OAAO+D,SACnCqpU,YAAa,IACb5oQ,gBAAgB,GAE5B,CACJ,CAEA,SAAS0yT,GAAa7mU,GAClBz+D,KAAKy+D,SAAWA,EAChBz+D,KAAKs8E,UAAY,EACrB,CAwBA,SAASmkT,KACLzgY,KAAKksD,MAAQ,CAAC,CAClB,CAxBAo5U,GAAav9X,GAAKu9X,GAAaj9X,UAAY,CACvCmuX,WAAY,SAAS5sW,GACjB,IAAI27W,EAAW5iY,EAAEypC,WAKjB,OAJApsC,KAAKs8E,UAAU36E,KAAK,CAChBioB,SAAUA,EACVuiB,SAAUo5V,IAEPA,CACX,EAEAl+Q,SAAU,WAGN,IAFA,IACIl4E,EADAmtC,EAAYt8E,KAAKs8E,UAEZ1yE,EAAM,EAAGA,EAAM0yE,EAAU90E,OAAQoC,KACtCulC,EAAOnvC,KAAKs8E,UAAU1yE,IACjBggB,SAAS5pB,KAAKy+D,UACnBtvB,EAAKhD,SAAS4J,UAElB/1C,KAAKs8E,UAAY,EACrB,GAOJmkT,GAAwB14X,GAAK04X,GAAwBp4X,UAAY,CAC7DmF,IAAK,SAAS0+C,GACV,IAAK,IAAItiD,EAAM,EAAGA,EAAMsiD,EAAM1kD,OAAQoC,IAClC5J,KAAKksD,MAAMA,EAAMtiD,GAAK8jD,KAAO,IAAI43U,GAAap5U,EAAMtiD,GAE5D,EAEAtI,QAAS,SAASsoB,GACd,IAAK,IAAI8jC,KAAO1tD,KAAKksD,MACjBtiC,EAAS5pB,KAAKksD,MAAMwB,GAE5B,EAEAmP,SAAU,SAASnP,GACf,OAAO1tD,KAAKksD,MAAMwB,EACtB,EAEArhD,OAAQ,SAAS8iC,UACNnvC,KAAKksD,MAAM/c,EAAKue,IAC3B,GAGJ,IAAIk1F,GAAWh7I,EAAM7E,OAAO,CACxBoF,KAAM,WACFnI,KAAK6iJ,OAAS,EAClB,EAEAlc,KAAM,SAASmc,EAAOmiI,GAClBjlR,KAAK6iJ,OAAOlhJ,KAAK,CACbsjR,OAAQA,EACRniI,MAAOA,IAEXA,EAAMC,UAAY/iJ,IACtB,EAEAm9D,OAAQ,SAAS2lF,EAAOmiI,GACpBjlR,KAAK2mI,KAAKmc,EAAOmiI,EACrB,EAEA54Q,OAAQ,SAASy2I,GAIb,IAHA,IAAID,EAAS7iJ,KAAK6iJ,OACdr7I,EAASq7I,EAAOr7I,OAEXoC,EAAM,EAAGA,EAAMpC,EAAQoC,IAC5B,GAAIi5I,EAAOj5I,GAAKk5I,QAAUA,EAAO,CAC7BD,EAAOr4I,OAAOZ,EAAK,GACnB,KACJ,CAER,EAEAmuX,YAAa,SAASzrS,EAAMsrS,GAIxB,IAHA,IAAI/0O,EAAS7iJ,KAAK6iJ,OACdr7I,EAASq7I,EAAOr7I,OAEXD,EAAI,EAAGA,EAAIC,EAAQD,IACxB,GAAIvH,KAAKwlY,UAAU3iP,EAAOt7I,GAAGu7I,MAAOx2D,KAAU7hE,EAAQgL,QAAQotH,EAAOt7I,GAAGu7I,MAAO80O,GAC3E,OAAO,CAGnB,EAEA4N,UAAW,SAAS1iP,EAAOx2D,GACvB,IAAI8tC,EAAQ0oB,EAAM3xG,SAASipF,MACvB6qJ,EAASniI,EAAMmiI,SAOnB,OALK7qJ,EAGK6wJ,EAAUE,MAAM7+L,EAAM24L,GAAS7qJ,GAF/B6qJ,EAAOt9G,SAASr7E,EAK9B,IAGA22D,GAAWL,GAAS7/I,OAAO,CAC3BoF,KAAM,SAASmkF,GACXs2D,GAAS76I,GAAGI,KAAKoC,KAAKvK,MACtBA,KAAKu1C,SAAW,GAChBv1C,KAAKssF,KAAOA,CAChB,EAEA62D,SAAU,SAAS72D,GACf,IAAI82D,EAAWpjJ,KAAKssF,KAChB+2D,EAAkBD,EAAS5lB,cAC3BA,EAAclxC,EAAKkxC,cAGvB,OAFe4lB,EAASh+I,GAAKknF,EAAKlnF,GAAKg+I,EAASj/I,GAAKmoF,EAAKnoF,GAAKq5H,EAAYp4H,GAAKi+I,EAAgBj+I,GAC5Fo4H,EAAYr5H,GAAKk/I,EAAgBl/I,CAEzC,EAEAshY,eAAgB,SAASn5S,GACrB,OAAOtsF,KAAKssF,KAAKq7E,SAASr7E,EAC9B,EAEAnvB,OAAQ,SAAS2lF,EAAOmiI,GACpB,IAAI3hI,GAAW,EACX/tG,EAAWv1C,KAAKu1C,SAChB/tC,EAAS+tC,EAAS/tC,OACtB,GAAIxH,KAAKmjJ,SAAS8hI,GAAS,CACvB,IAAKz9Q,GAAUxH,KAAK6iJ,OAAOr7I,OAAS,EAChCxH,KAAK2mI,KAAKmc,EAAOmiI,OACd,CACEz9Q,GACDxH,KAAKurE,gBAGT,IAAK,IAAI3hE,EAAM,EAAGA,EAAM2rC,EAAS/tC,OAAQoC,IACrC,GAAI2rC,EAAS3rC,GAAKuzD,OAAO2lF,EAAOmiI,GAAS,CACrC3hI,GAAW,EACX,KACJ,CAGCA,GACDtjJ,KAAK2mI,KAAKmc,EAAOmiI,EAEzB,CACA3hI,GAAW,CACf,CAEA,OAAOA,CACX,EAEA/3E,cAAe,WACX,IAMIm6T,EAAUC,EANVr5S,EAAOtsF,KAAKssF,KACZ/2C,EAAWv1C,KAAKu1C,SAChBstG,EAAS7iJ,KAAK6iJ,OACdtkE,EAAS+N,EAAK/N,SACdglE,EAAYj3D,EAAKvgF,MAAQ,EACzBy3I,EAAal3D,EAAKtgF,OAAS,EAS/B,IANAupC,EAAS5zC,KACL,IAAIshJ,GAAS,IAAIhmB,EAAK3wC,EAAKlnF,EAAGknF,EAAKnoF,EAAGo/I,EAAWC,IACjD,IAAIP,GAAS,IAAIhmB,EAAK1+C,EAAOn5E,EAAGknF,EAAKnoF,EAAGo/I,EAAWC,IACnD,IAAIP,GAAS,IAAIhmB,EAAK3wC,EAAKlnF,EAAGm5E,EAAOp6E,EAAGo/I,EAAWC,IACnD,IAAIP,GAAS,IAAIhmB,EAAK1+C,EAAOn5E,EAAGm5E,EAAOp6E,EAAGo/I,EAAWC,KAEpDmiP,EAAW9iP,EAAOr7I,OAAS,EAAGm+X,GAAY,EAAGA,IAC9C,IAAKD,EAAW,EAAGA,EAAWnwV,EAAS/tC,OAAQk+X,IAC3C,GAAInwV,EAASmwV,GAAUvoU,OAAO0lF,EAAO8iP,GAAU7iP,MAAOD,EAAO8iP,GAAU1gH,QAAS,CAC5EpiI,EAAOr4I,OAAOm7X,EAAU,GACxB,KACJ,CAGZ,EAEA5N,YAAa,SAASzrS,EAAMsrS,GACxB,IAAIhuX,EACA2rC,EAAWv1C,KAAKu1C,SAChB/tC,EAAS+tC,EAAS/tC,OAClB0hS,GAAM,EAEV,GAAIlpS,KAAKylY,eAAen5S,GACpB,GAAIs2D,GAAS76I,GAAGgwX,YAAYxtX,KAAKvK,KAAMssF,EAAMsrS,GACzC1uF,GAAM,OAEL,IAAKt/R,EAAM,EAAGA,EAAMpC,EAAQoC,IACzB,GAAI2rC,EAAS3rC,GAAKmuX,YAAYzrS,EAAMsrS,GAAU,CAC3C1uF,GAAM,EACN,KACH,CAKZ,OAAOA,CACX,IAGAxlJ,GAAiB97I,EAAM7E,OAAO,CAC9B0gJ,UAAW,IAEXt7I,KAAM,SAAS0vL,GACX,IAAI+tM,EAAsB5lY,KAAK6lY,cAAcr8X,KAAKxJ,MAClD63L,EAAQruL,KAAKq3R,EAAkB+kG,GAC/B/tM,EAAQruL,KAAKymX,GAAY2V,GACzB5lY,KAAK2jJ,WACT,EAEAA,UAAW,WACP3jJ,KAAK4jJ,QAAU,CAAC,EAChB5jJ,KAAK69C,KAAO,IAAI+kG,EACpB,EAEApsF,MAAO,WACHx2D,KAAK2jJ,WACT,EAEAkiP,cAAe,SAASlhY,GAChBA,EAAEwqC,KAAK4zG,WACPp+I,EAAEwqC,KAAK4zG,UAAU12I,OAAO1H,EAAEwqC,MAE9BnvC,KAAKm9D,OAAOx4D,EAAEwqC,KAClB,EAEAguB,OAAQ,SAAS2lF,GACb,IAAImiI,EAASniI,EAAMmiI,OAAO6b,IACtBglG,EAAW9lY,KAAKyjJ,UAChBe,EAAUxkJ,KAAKykJ,WAAWwgI,GAC1B7/Q,EAAIo/I,EAAQ,GAAG,GACfrgJ,EAAIqgJ,EAAQ,GAAG,GAEfxkJ,KAAK0kJ,OAAOF,GACZxkJ,KAAK69C,KAAKsf,OAAO2lF,EAAOmiI,IAEnBjlR,KAAK4jJ,QAAQx+I,KACdpF,KAAK4jJ,QAAQx+I,GAAK,CAAC,GAGlBpF,KAAK4jJ,QAAQx+I,GAAGjB,KACjBnE,KAAK4jJ,QAAQx+I,GAAGjB,GAAK,IAAI8+I,GACrB,IAAIhmB,EAAK73H,EAAI0gY,EAAU3hY,EAAI2hY,EAAUA,EAAUA,KAIvD9lY,KAAK4jJ,QAAQx+I,GAAGjB,GAAGg5D,OAAO2lF,EAAOmiI,GAEzC,EAEA54Q,OAAQ,SAASy2I,GACTA,EAAMC,WACND,EAAMC,UAAU12I,OAAOy2I,EAE/B,EAEA4B,OAAQ,SAASF,GACb,OAAOA,EAAQ,GAAGh9I,OAAS,GAAKg9I,EAAQ,GAAGh9I,OAAS,CACxD,EAEAi9I,WAAY,SAASn4D,GAMjB,IALA,IAAIw5S,EAAW9lY,KAAKyjJ,UAChBjmB,EAAclxC,EAAKkxC,cACnBmnB,EAAUvhJ,EAAK0N,MAAM0sH,EAAYp4H,EAAI0gY,GACrClhP,EAAUxhJ,EAAK0N,MAAM0sH,EAAYr5H,EAAI2hY,GACrCthP,EAAU,CAAC,GAAG,IACTp/I,EAAIhC,EAAK0N,MAAMw7E,EAAKlnF,EAAI0gY,GAAW1gY,GAAKu/I,EAASv/I,IACtDo/I,EAAQ,GAAG7iJ,KAAKyD,GAEpB,IAAK,IAAIjB,EAAIf,EAAK0N,MAAMw7E,EAAKnoF,EAAI2hY,GAAW3hY,GAAKygJ,EAASzgJ,IACtDqgJ,EAAQ,GAAG7iJ,KAAKwC,GAEpB,OAAOqgJ,CACX,EAEAuzO,YAAa,SAASzrS,EAAMsrS,GACxB,IACImO,EAAMC,EAAM5gY,EAAGjB,EACf05C,EAFA2mG,EAAUxkJ,KAAKykJ,WAAWn4D,GAI9B,GAAItsF,KAAK69C,KAAKk6U,YAAYzrS,EAAMsrS,GAC5B,OAAO,EAGX,IAAKmO,EAAO,EAAGA,EAAOvhP,EAAQ,GAAGh9I,OAAQu+X,IAErC,IADA3gY,EAAIo/I,EAAQ,GAAGuhP,GACVC,EAAO,EAAGA,EAAOxhP,EAAQ,GAAGh9I,OAAQw+X,IAGrC,GAFA7hY,EAAIqgJ,EAAQ,GAAGwhP,IACfnoV,GAAQ79C,KAAK4jJ,QAAQx+I,IAAM,CAAC,GAAGjB,KACnB05C,EAAKk6U,YAAYzrS,EAAMsrS,GAC/B,OAAO,EAKnB,OAAO,CACX,IAGJ,SAASzE,GAAc10T,GACnB,IAAI3nD,EAAS2nD,EAKb,OAJIA,aAAoB99D,MAAMyN,KAAKk7C,SAC/BxyC,EAAS2nD,EAAStsD,UACXssD,EAASlV,SAAWkV,EAAShQ,YAEjC33C,CACX,CAEA,SAASgmX,GAAqBnkW,GAC1B,IAEI9sB,EAASjC,EAFTw8R,EAAc,GACdvjJ,EAAS,GAEb,IAAKj5I,EAAM,EAAGA,EAAM+uB,EAASnxB,OAAQoC,KACjCiC,EAAU8sB,EAAS/uB,cACIy9R,GACnBxkJ,EAAOlhJ,KAAKkK,GAEZu6R,EAAYzkS,KAAKkK,GAGzB,MAAO,CACHg3I,OAAQA,EACRujJ,YAAaA,EAErB,CAEA,SAASgzF,GAAY3nW,EAAYy3B,GAC7B,OAAIz3B,EAAWgqC,OAAOvS,MACX,IAAIz3B,EAAWgqC,OAAOvS,MAAMA,GAGhC,IAAIvoD,MAAMyN,KAAKq9C,iBAAiBvC,EAC3C,CAEA,SAASmsU,GAAWtvW,EAAOmjC,GACnB4tE,EAAQ5tE,EAAMnjC,KACdmjC,EAAMh5B,IAAInK,EAAO,KAEzB,CAEA,SAAS00W,GAAmBwL,EAAal3I,EAAgBt/N,GAErD,IADA,IAAI1J,EACKnc,EAAM,EAAGA,EAAM6lB,EAAOjoB,OAAQoC,IACnCmc,EAAQ0J,EAAO7lB,GACXmlP,IAAmBj4H,EAAQi4H,EAAehpO,MAC1CgpO,EAAehpO,GAASkgX,EAAYlgX,GAGhD,CASA,SAAS5c,GAAexE,GACpBA,EAAEwE,gBACN,CAEAshB,EAAQF,GAAG2M,OAAOihW,IAElB3vX,EAAWqvL,EAAS,CAChBwvG,MAAOA,GACPgC,WAAYA,GACZioF,UAAWA,GACX2H,eAAgBA,GAChBh2O,SAAUA,GACVL,SAAUA,GACVc,eAAgBA,GAChBy2O,YAAaA,IAExB,CAzoKD,CAyoKGr5X,OAAOH,MAAM+G,QAoBE/G,OAUlB,SAAUgC,EAAGC,GACT,IAAIQ,EAAOC,KAEPJ,EAAUC,MAAMD,QAEhBtC,EAAQG,OAAOH,MACfyL,EAAczL,EAAM+L,aACpBP,EAAaxL,EAAM8L,YACnB7E,EAAQjH,EAAMiH,MACdwpB,EAASzwB,EAAM4pB,GAAG6G,OAClBhhB,EAAWzP,EAAMyP,SACjB5H,EAAa7H,EAAM6H,WACnB+F,EAAyB5N,EAAMyN,KAAKG,uBACpCihB,EAAS7uB,EAAM6uB,OAEf/E,EAAU9pB,EAAM8pB,QAEhBonE,EAAK,gBACL30C,EAAS,SACT0yR,EAAa,YACbs2D,EAAe,cACf9uQ,EAAYvkH,OAAOukH,UACnB+uQ,EAAe,YAAct0S,EAC7BgnJ,EAAgB,aAAehnJ,EAG/Bu0S,EAAUh1W,EAAOruB,OAAO,CACxBoF,KAAM,SAAS0D,EAAS1E,GACpBxG,EAAMqB,QAAQ6J,GACdlJ,EAAEkJ,GAAS+gD,QAEXx7B,EAAOrpB,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAAS1E,GACnCnH,KAAK4M,QAAU5M,KAAK6L,QAEpB7L,KAAK+mO,WAAW/mO,KAAKmH,SAErBnH,KAAK6L,QAAQwZ,SAAS,sBAEtBrlB,KAAKqmY,aAELrmY,KAAK6mO,iBAAmBr+N,EAAW,CAAC,EAAGxI,KAAKmH,SAE5CnH,KAAKq5O,kBAELr5O,KAAKqnO,gBAEL1mO,EAAMi0B,OAAO50B,KAAMyqB,EAAQF,GAC/B,EAEApjB,QAAS,CACL/E,KAAM,UACN8zL,MAAO,OACPlkH,UAAU,EACVtF,UAAW,OACXuF,WAAY,QACZq0T,WAAY,SAGhBj8X,OAAQ,CAACulU,EAAYs2D,GAErBn/J,WAAY,SAAS5/N,GACjB,IAGIw/N,IAFSl8M,EAAQF,GAAGiO,QAAU,CAAC,KACjBrxB,GAAW,CAAC,GAAG+uL,OAAS,IAAIr9K,gBACL,CAAC,GAAGi/K,QAHlC93L,KAKNmH,QAAUqB,EAAW,CAAC,EAAGm+N,EAAcx/N,EAChD,EAEAkgO,cAAe,WACXrnO,KAAK6L,QACAge,GAAGs8W,EAAcnmY,KAAKusO,WAAW/iO,KAAKxJ,OACtC6pB,GAAGgvN,EAAe74O,KAAK2mH,YAAYn9G,KAAKxJ,OAE7CA,KAAKi1O,eAAiBj1O,KAAKmqB,OAAO3gB,KAAKxJ,MAAM,GAC7CW,EAAMs4B,SAASj5B,KAAKi1O,eACxB,EAEAoxJ,WAAY,WACkB,eAAtBrmY,KAAKmH,QAAQzB,MACb1F,KAAKumY,QAAU,IAAIC,GAAa,GAChCxmY,KAAK+5D,MAAQ,IAAI0sU,EAAiBzmY,KAAMA,KAAKmH,UAChB,aAAtBnH,KAAKmH,QAAQzB,MACpB1F,KAAKumY,QAAU,IAAIC,GAAa,GAChCxmY,KAAK+5D,MAAQ,IAAI0sU,EAAiBzmY,KAAMA,KAAKmH,WAE7CnH,KAAKumY,QAAU,IAAIG,EACnB1mY,KAAK+5D,MAAQ,IAAI4sU,EAAe3mY,KAAMA,KAAKmH,SAEnD,EAEAkyO,gBAAiB,WACb,IAAIpxO,EAAOjI,KAEPyxB,EADUxpB,EAAKd,QACMsqB,WAEzBxpB,EAAK4xO,mBAAqB5xO,EAAK2+X,cAAcp9X,KAAKvB,GAElDA,EAAKwpB,WAAaljB,EACb64C,OAAO31B,GACPjoB,KAAK0zC,EAAQj1C,EAAK4xO,oBAEnBpoN,GACIxpB,EAAKd,QAAQ6qE,UACb/pE,EAAKwpB,WAAW20C,OAG5B,EAEAszK,cAAe,SAASjoN,GACpB,IAAIxpB,EAAOjI,KACXiI,EAAKwpB,WAAWxnB,OAAOizC,EAAQj1C,EAAK4xO,oBACpC5xO,EAAKwpB,WAAaA,EACTjoB,KAAK0zC,EAAQj1C,EAAK4xO,oBAEvBpoN,GACIxpB,EAAKd,QAAQ6qE,UACb/pE,EAAKwpB,WAAW20C,OAG5B,EAEAwgU,cAAe,SAASjiY,GACpB,IAGIwqC,EAAM5nC,EAHN87B,EAAO1+B,EAAE0+B,KACT6oB,EAAQvnD,EAAEunD,MACV/kD,EAAUnH,KAAKmH,QAGnB,GAAKk8B,GAcD,GAAI6oB,EAAM1kD,OAAQ,CACd,IAAIq2C,EAAO79C,KAAK88D,UAAUz5B,EAAKqqB,KAI/B,IAHA7P,EAAKtI,SAAW,GAChB2W,EAAQ,IAAIvrD,EAAMyN,KAAKiiD,MAAMnE,GAAO+I,iBAAiB9tD,EAAQ8qE,WAAY,QAEpE1qE,EAAI,EAAGA,EAAI2kD,EAAM1kD,OAAQD,IAC1B4nC,EAAO+c,EAAM3kD,GACbs2C,EAAKtI,SAAS5zC,KAAK3B,KAAK6mY,UAAU13V,IAGtC,IAAI23V,EAAW9mY,KAAK+5D,MAAM+sU,SAASjpV,GACnC79C,KAAKumY,QAAQQ,QAAQlpV,EAAKtI,SAAUsI,EAAKq6F,MAAO4uP,GAEhD9mY,KAAKgnY,WAAWnpV,EAAKtI,UACrBv1C,KAAK+5D,MAAM5pD,OAAO0tC,EACtB,OA5BA79C,KAAK6L,QAAQ+gD,QACbzd,EAAOnvC,KAAK6mY,UAAU36U,EAAM,IAC5BlsD,KAAKumY,QAAQU,WACT93V,EACAhjC,EAAWnM,KAAK6L,SAChBO,EAAYpM,KAAK6L,SACK,aAAtB7L,KAAKmH,QAAQzB,MAEjB1F,KAAK+5D,MAAMktU,WAAW93V,GAEtBnvC,KAAKygJ,MAAQtxG,EACbnvC,KAAKknY,UAAY,EAoBrB,IAAK3/X,EAAI,EAAGA,EAAI2kD,EAAM1kD,OAAQD,IAC1B2kD,EAAM3kD,GAAGskE,OAGTxoC,GACArjC,KAAKoK,QAAQwlU,EAAY,CACrBvsS,KAAMA,GAGlB,EAEA2jW,WAAY,SAAS96U,GACjB,IAGIi7U,EAAYh4V,EAHZD,EAASlvC,KAAKmH,QAAQ+nC,OAEtB+hF,EAAQ/hF,EADGlvC,KAAKknY,UACUh4V,EAAO1nC,QAEjCvE,EAAQguH,KACRk2Q,EAkuBZ,SAAwBzwX,EAAKyC,EAAK3R,GAC9B,IAAI4/X,EAAkBC,EAAa3wX,GAC/B4wX,EAAkBD,EAAaluX,GAC/BouX,EAAWC,EAAgB9wX,GAAO8wX,EAAgBruX,GAAO,EACzD+1B,EAAS,GAEbA,EAAOvtC,KAAK+U,GAEZ,IAAK,IAAInP,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAIkgY,EAAW,CACXv1Q,EAAGw1Q,EAAaN,EAAgBl1Q,EAAGo1Q,EAAgBp1Q,EAAG3qH,EAAGC,EAAQ+/X,GACjEnyX,EAAGsyX,EAAaN,EAAgBhyX,EAAGkyX,EAAgBlyX,EAAG7N,EAAGC,EAAQ+/X,GACjEtrX,EAAGyrX,EAAaN,EAAgBnrX,EAAGqrX,EAAgBrrX,EAAG1U,EAAGC,EAAQ+/X,IAErEr4V,EAAOvtC,KAAKgmY,EAAkBF,GAClC,CAIA,OAFAv4V,EAAOvtC,KAAKwX,GAEL+1B,CACX,CAtvByB04V,CAAe32Q,EAAM,GAAIA,EAAM,GAAI/kE,EAAM1kD,SAI1D,IADA,IAAIqgY,GAAY,EACPtgY,EAAI,EAAGA,EAAI2kD,EAAM1kD,OAAQD,IAGzBuvH,GAFL3nF,EAAO+c,EAAM3kD,IAEK0pH,SAEV9hF,EAAK8hF,MADLk2Q,EACaA,EAAW5/X,GAEX0pH,GAGhB9hF,EAAKsvB,SAASyM,cACf28T,GAAY,GAIhBA,GACA7nY,KAAKknY,WAEb,EAEAY,aAAc,SAASjqV,GACnB79C,KAAK43B,KAAKmwW,aAAalqV,EAC3B,EAEAgpV,UAAW,SAAS13V,GAChB,IAAIxiB,EAAO,CAAC,EAkBZ,OAhBImqG,EAAQ92H,KAAKmH,QAAQ8qE,cACrBtlD,EAAKjkB,MAAQ0xL,EAASp6L,KAAKmH,QAAQ8qE,WAAY9iC,IAG/C2nF,EAAQ92H,KAAKmH,QAAQm/X,cACrB35W,EAAKskG,MAAQmpE,EAASp6L,KAAKmH,QAAQm/X,WAAYn3V,IAG/C2nF,EAAQ92H,KAAKmH,QAAQulE,aACrB//C,EAAKmU,KAAOs5J,EAASp6L,KAAKmH,QAAQulE,UAAWv9B,IAGjDxiB,EAAKg/C,MAAQx8B,EAAKw8B,QAElBh/C,EAAK8xC,SAAWtvB,EAETxiB,CACX,EAEAmwC,UAAW,SAASpP,GAIhB,IAHA,IACIve,EADA+c,EAAQ,CAAClsD,KAAKygJ,OAGXv0F,EAAM1kD,QAAQ,CAEjB,IADA2nC,EAAO+c,EAAMn8B,OACJ0uC,SAAS/Q,MAAQA,EACtB,OAAOve,EAGPA,EAAKoG,WACL2W,EAAQA,EAAM9tC,OAAO+wB,EAAKoG,UAElC,CACJ,EAEAkpB,SAAU,SAASp7B,GACf,IAAIqqB,EAAM/qD,EAAE0gC,GAAMzf,KAAKjjB,EAAMijB,KAAK,QAC9B6N,EAAazxB,KAAKyxB,WAEtB,OAAOA,GAAcA,EAAWorC,SAASnP,EAC7C,EAEAmuQ,UAAW,SAASnuQ,GAChB,OAAO1tD,KAAK6L,QAAQsqB,KAAK,mBAAqBx1B,EAAMijB,KAAK,OAAS,KAAO8pC,EAAM,KACnF,EAEA6+K,WAAY,SAAS5nO,GACjB,IAAI0C,EAAS1E,EAAEgC,EAAE0C,QACbA,EAAO0F,SAAS,YAChB/M,KAAKgoY,qBACL3gY,EACK0lB,YAAY,WACZ1H,SAAS,WAEtB,EAEA2iX,mBAAoB,WAChBhoY,KAAK6L,QACAsqB,KAAK,YACLpJ,YAAY,UACrB,EAEA45F,YAAa,WACT3mH,KAAKgoY,oBACT,EAEAhmY,QAAS,WACLovB,EAAOrpB,GAAG/F,QAAQuI,KAAKvK,MACvBA,KAAK6L,QAAQutB,IAAIy4D,GAEb7xF,KAAKyxB,YACLzxB,KAAKyxB,WAAWxnB,OAAOizC,EAAQl9C,KAAK65O,oBAGxC75O,KAAKygJ,MAAQ,KACb9/I,EAAMw4B,aAAan5B,KAAKi1O,gBAExBt0O,EAAMqB,QAAQhC,KAAK6L,QACvB,EAEAqgD,MAAO,WACH,OAAOvpD,GACX,EAEA4vB,QAAS,WACL,OAAO5xB,EAAMgyB,WAAW3yB,KAAK6L,QACjC,EAEA6mB,QAAS,WACL,IAAImrB,EAAO79C,KAAKygJ,MAChB,GAAI5iG,EAAM,CACN,IAAIhyC,EAAU7L,KAAK6L,QACfk8I,EAAcl8I,EAAQ0pC,WAC1BsI,EAAKq6F,MAAMnsI,MAAQI,EAAWN,GAC9BgyC,EAAKq6F,MAAMlsI,OAASI,EAAYP,GAEhCk8I,EAAY97I,IAAI,CACZF,MAAO8xC,EAAKq6F,MAAMnsI,MAClBC,OAAQ6xC,EAAKq6F,MAAMlsI,SAGvBhM,KAAKioY,aAAapqV,EAAMkqG,EAC5B,CACJ,EAEAkgP,aAAc,SAASpqV,EAAMhyC,GACzB,GAAIgyC,EAAKtI,UAAYsI,EAAKtI,SAAS/tC,OAAQ,CACvC,IACIq8B,EAAOu2G,EADPzhH,EAAW9sB,EAAQ0pC,SAAS,mBAAmBA,WAGnDv1C,KAAKumY,QAAQQ,QAAQlpV,EAAKtI,SAAUsI,EAAKq6F,MAAO,CAAEp3G,KAAM9gC,KAAK+5D,MAAMs/G,UAAUx7H,EAAMhyC,KACnF,IAAK,IAAIjC,EAAM,EAAGA,EAAMi0C,EAAKtI,SAAS/tC,OAAQoC,IAC1Ci6B,EAAQga,EAAKtI,SAAS3rC,GACtBwwI,EAAezhH,EAASpJ,OAAO,IAAM5uB,EAAMijB,KAAK,OAAS,KAAOigB,EAAM46B,SAAS/Q,IAAM,MACrF1tD,KAAK+5D,MAAMmuU,YAAYrkW,EAAOu2G,GAC9Bp6I,KAAKioY,aAAapkW,EAAOu2G,EAEjC,CACJ,EAEAloH,WAAY,SAAS/qB,GACjB,IAAIsqB,EAAatqB,EAAQsqB,WAEzBtqB,EAAQsqB,WA3UpB,UA4UYzxB,KAAK6mO,iBAAmBr+N,EAAWxI,KAAK6mO,iBAAkB1/N,GAC1DnH,KAAKmH,QAAUqB,EAAW,CAAC,EAAGxI,KAAK6mO,kBACnC7mO,KAAKqmY,aACLrmY,KAAK+mO,WAAW/mO,KAAKmH,SAErBiqB,EAAOrpB,GAAGqqB,WAAW7nB,KAAKvK,KAAMmH,GAE5BsqB,GACAzxB,KAAK05O,cAAcnrO,EAAuB64C,OAAO31B,IAGjDzxB,KAAKmH,QAAQ6qE,UACbhyE,KAAKyxB,WAAW20C,OAExB,IAGAsgU,EAAa9+X,EAAM7E,OAAO,CAC1BkkY,WAAY,SAASppV,EAAM9xC,EAAOC,GAC9B6xC,EAAKq6F,MAAQ,CACTnsI,MAAOA,EACPC,OAAQA,EACRkZ,IAAK,EACLsH,KAAM,EAEd,EAEA27W,KAAM,SAAS79U,GACX,OAAQA,EAAK/U,QACjB,EAEA6yV,eAAgB,SAASl8U,EAAOgsF,GAC5B,IAGI3wI,EAHA8gY,EAAanwP,EAAMnsI,MAAQmsI,EAAMlsI,OACjCs8X,EAAY,EACZC,EAAY,GAGhB,IAAKhhY,EAAI,EAAGA,EAAI2kD,EAAM1kD,OAAQD,IAC1BghY,EAAUhhY,GAAKwB,WAAWmjD,EAAM3kD,GAAGmB,OACnC4/X,GAAaC,EAAUhhY,GAG3B,IAAKA,EAAI,EAAGA,EAAIghY,EAAU/gY,OAAQD,IAC9B2kD,EAAM3kD,GAAG+rL,KAAO+0M,EAAaE,EAAUhhY,GAAK+gY,EAGhD,IAAIE,EAAmBxoY,KAAKyoY,mBAAqBvwP,EAAMlsI,OAASksI,EAAMnsI,MAElEq7B,EAAe,CAAC8kB,EAAM,IACtBy+H,EAAOz+H,EAAMrlD,MAAM,GACvB7G,KAAK0oY,SAAS/9M,EAAMvjJ,EAAcohW,EAAkBtwP,EACxD,EAEAwwP,SAAU,SAAS/9M,EAAMg+M,EAAa58X,EAAOmsI,GACzCl4I,KAAK4oY,WAAWj+M,EAAMg+M,EAAa58X,EAAOmsI,EAC9C,EAEA0wP,WAAY,SAASj+M,EAAMg+M,EAAa58X,EAAOmsI,GAC3C,GAAIyyC,EAAKnjL,OAASmhY,EAAYnhY,QAAU,EAWxC,GALImjL,EAAKnjL,QAAU,GAA4B,IAAvBmhY,EAAYnhY,SAChCmhY,EAAc,CAACh+M,EAAK,IACpBA,EAAOA,EAAK9jL,MAAM,IAGF,IAAhB8jL,EAAKnjL,OAAT,CAOA,IAAI4/B,EAAeujJ,EAAK,GAExB,GAAI3qL,KAAK6oY,iBAAiBF,EAAa58X,IAAU/L,KAAK6oY,iBAAiB,CAACzhW,GAAchpB,OAAOuqX,GAAc58X,GACvG/L,KAAK4oY,WAAWj+M,EAAK9jL,MAAM,GAAI8hY,EAAYvqX,OAAO,CAACgpB,IAAgBr7B,EAAOmsI,OACvE,CACH,IAAI4wP,EAAY9oY,KAAK+oY,UAAUJ,EAAa58X,EAAOmsI,GACnDl4I,KAAK4oY,WAAWj+M,EAAM,GAAIm+M,EAAU7vL,IAAK6vL,EAC7C,CATA,MAJQH,EAAYnhY,OAAS,GACrBxH,KAAK+oY,UAAUJ,EAAa58X,EAAOmsI,OAb3C,CACI,IAAIrsI,EAAyB,GAAf8+K,EAAKnjL,OAAcmjL,EAAOg+M,EACxC3oY,KAAKgpY,WAAWn9X,EAASE,EAAOmsI,EAEpC,CAsBJ,EAEA8wP,WAAY,SAAS98U,EAAO8tM,EAAG9hH,GAC3BhsF,EAAM,GAAGgsF,MAAQA,CACrB,EAEA6wP,UAAW,SAAS78U,EAAOngD,EAAOmsI,GAC9B,OAAIl4I,KAAKyoY,mBACEzoY,KAAKipY,QAAQ/8U,EAAOngD,EAAOmsI,GAE3Bl4I,KAAKkpY,QAAQh9U,EAAOngD,EAAOmsI,EAE1C,EAEAzG,YAAa,IAEb03P,eAAgB,WACZ,MAA4B,MAArBnpY,KAAKyxI,WAChB,EAEAg3P,iBAAkB,WACd,MAA4B,MAArBzoY,KAAKyxI,WAChB,EAEA23P,aAAc,WACVppY,KAAKyxI,YAAczxI,KAAKmpY,iBAAmB,IAAM,GACrD,EAEAN,iBAAkB,SAAS38U,EAAOngD,GAC9B,IAAKmgD,GAA0B,IAAjBA,EAAM1kD,OAChB,OAAO4vH,EAOX,IAJA,IAAIiyQ,EAAU,EACVC,EAAU,EACVlyL,EAAUhgF,EAEL7vH,EAAI,EAAGA,EAAI2kD,EAAM1kD,OAAQD,IAAK,CACnC,IAAI+rL,EAAOpnI,EAAM3kD,GAAG+rL,KACpB+1M,GAAW/1M,EACX8jB,EAAWA,EAAU9jB,EAAQ8jB,EAAU9jB,EACvCg2M,EAAWA,EAAUh2M,EAAQg2M,EAAUh2M,CAC3C,CAEA,OAAOlwL,EAAK+V,IACPpN,EAAQA,EAAQu9X,GAAYD,EAAUA,GACtCA,EAAUA,GAAYt9X,EAAQA,EAAQqrM,GAE/C,EAEA2vL,QAAS,SAASxxV,EAAUg0V,EAAWzC,GAKnC,GAJMyC,EAAUx9X,OAASw9X,EAAUv9X,QAAUhM,KAAKyoY,oBAC9CzoY,KAAKopY,eAGL7zV,GAAYA,EAAS/tC,OAAS,EAAG,CACjC,IAAIgiY,EAAe,CACfz9X,MAAOw9X,EAAUx9X,MACjBC,OAAQu9X,EAAUv9X,OAAS86X,EAAShmW,KACpC5b,IAAK,EACLsH,KAAM,GAGVxsB,KAAKooY,eAAe7yV,EAAUi0V,EAClC,CACJ,EAEAP,QAAS,SAAS/8U,EAAOngD,EAAOmsI,GAC5B,IACIhzH,EAAM,EAEVnZ,EAAQuK,EAHQtW,KAAKypY,WAAWv9U,GAGNngD,GAE1B,IAAK,IAAIxE,EAAI,EAAGA,EAAI2kD,EAAM1kD,OAAQD,IAAK,CACnC,IAAIyE,EAASsK,EAAM41C,EAAM3kD,GAAG+rL,KAAOvnL,GACnCmgD,EAAM3kD,GAAG2wI,MAAQ,CACblsI,OAAQA,EACRD,MAAOA,EACPmZ,IAAKgzH,EAAMhzH,IAAMA,EACjBsH,KAAM0rH,EAAM1rH,MAGhBtH,GAAOlZ,CACX,CAEA,IAAI09X,EAAM,CACN19X,OAAQksI,EAAMlsI,OACdD,MAAOmsI,EAAMnsI,MAAQA,EACrBmZ,IAAKgzH,EAAMhzH,IACXsH,KAAM0rH,EAAM1rH,KAAOzgB,GASvB,OANA29X,EAAIzwL,IAAM71M,EAAKsT,IAAIgzX,EAAI39X,MAAO29X,EAAI19X,QAE9B09X,EAAIzwL,KAAOywL,EAAI19X,QACfhM,KAAKopY,eAGFM,CACX,EAEAR,QAAS,SAASh9U,EAAOngD,EAAOmsI,GAO5B,IANA,IAEIlsI,EAASsK,EAFGtW,KAAKypY,WAAWv9U,GAEDngD,GAC3BmZ,EAAMgzH,EAAMhzH,IACZsH,EAAO,EAEFjlB,EAAI,EAAGA,EAAI2kD,EAAM1kD,OAAQD,IAC9B2kD,EAAM3kD,GAAG2wI,MAAQ,CACblsI,OAAQA,EACRD,MAAOuK,EAAM41C,EAAM3kD,GAAG+rL,KAAOtnL,GAC7BkZ,IAAKA,EACLsH,KAAM0rH,EAAM1rH,KAAOA,GAEvBA,GAAQ0/B,EAAM3kD,GAAG2wI,MAAMnsI,MAG3B,IAAI29X,EAAM,CACN19X,OAAQksI,EAAMlsI,OAASA,EACvBD,MAAOmsI,EAAMnsI,MACbmZ,IAAKgzH,EAAMhzH,IAAMlZ,EACjBwgB,KAAM0rH,EAAM1rH,MAShB,OANAk9W,EAAIzwL,IAAM71M,EAAKsT,IAAIgzX,EAAI39X,MAAO29X,EAAI19X,QAE9B09X,EAAIzwL,KAAOywL,EAAI39X,OACf/L,KAAKopY,eAGFM,CACX,EAEAD,WAAY,SAASv9U,GAGjB,IAFA,IAAIlF,EAAQ,EAEHz/C,EAAI,EAAGA,EAAI2kD,EAAM1kD,OAAQD,IAC9By/C,GAASkF,EAAM3kD,GAAG+rL,KAGtB,OAAOtsI,CACX,IAGA2/U,EAAiB/+X,EAAM7E,OAAO,CAC9BoF,KAAM,SAAS2vL,EAAS3wL,GACpBnH,KAAKmH,QAAUqB,EAAW,CAAC,EAAGxI,KAAKmH,QAASA,GAC5CnH,KAAK83L,QAAUA,EACf93L,KAAK6L,QAAUlJ,EAAEm1L,EAAQjsL,SAEzB7L,KAAK8d,OAAS,CAClB,EAEAu7J,UAAW,SAASlqI,EAAMtjC,GAEtB,OADWA,EAAQ0pC,SAAS,oBAChBvpC,UAAY,CAC5B,EAEA86X,SAAU,SAASjpV,GACf,IAAIkqG,EAAc/nJ,KAAK88D,UAAUjf,EAAK4gB,SAAS/Q,KAC3Co5U,EAAW,CACXhmW,KAAM,GAGV,GAAI+c,EAAKtI,SAAU,CAIf,GAHAv1C,KAAK84U,OAAO/wL,GAED/nJ,KAAKiiQ,SAASpkN,GACf,CACN,IAAIM,EAAQn+C,KAAK2pY,aAAa9rV,GAC9BkqG,EAAY5tG,OAAOgE,GAEnBn+C,KAAK4pY,SAASzrV,EAAON,EAAK4gB,UAE1BqoU,EAAShmW,KAAOqd,EAAMnyC,QAC1B,CAEA+7I,EAAY5tG,OAAOn6C,KAAK6pY,eAExB7pY,KAAK8d,QAAU3R,EAAW47I,GAAeA,EAAYvnI,cAAgB,CACzE,CAEA,OAAOsmX,CACX,EAEA8C,SAAU,SAAS/9X,EAAS4yD,GAC5B,EAEA3B,UAAW,SAASpP,GAChB,OAAO1tD,KAAK6L,QAAQsqB,KAAK,mBAAqBx1B,EAAMijB,KAAK,OAAS,KAAO8pC,EAAM,KACnF,EAEAv9C,OAAQ,SAAS0tC,GACb,IAAIkqG,EAAc/nJ,KAAK88D,UAAUjf,EAAK4gB,SAAS/Q,KAC3CnY,EAAWsI,EAAKtI,SACpB,GAAIA,EAGA,IAFA,IAAIu0V,EAAW/hP,EAAY5xH,KAAK,mBAEvB5uB,EAAI,EAAGA,EAAIguC,EAAS/tC,OAAQD,IAAK,CACtC,IAAI4gY,EAAO5yV,EAAShuC,GAChBi1U,EAAcx8U,KAAK+pY,YAAY5B,GACnC2B,EAAS3vV,OAAOqiS,GAEhBx8U,KAAK4pY,SAASptD,EAAYjnS,WAAY4yV,EAAK1pU,UAE3Cz+D,KAAK83L,QAAQ1tL,QAAQ87X,EAAc,CAC/Br6X,QAAS2wU,GAEjB,CAER,EAEAyqD,WAAY,SAASppV,GACjB,IAAI2+R,EAAcx8U,KAAK+pY,YAAYlsV,GACnC79C,KAAK6L,QAAQsuC,OAAOqiS,GACpBx8U,KAAK4pY,SAASptD,EAAYjnS,WAAYsI,EAAK4gB,UAE3Cz+D,KAAK83L,QAAQ1tL,QAAQ87X,EAAc,CAC/Br6X,QAAS2wU,GAEjB,EAEA1D,OAAQ,SAASj7R,GACbA,EAAK5xC,IAAI,mBAAoB,IAC7B4xC,EAAK9wB,YAAY,UACjB8wB,EAAK9wB,YAAY,aACjB8wB,EAAK+O,OACT,EAEAm9U,YAAa,SAAS56V,GAClB,OAAOnvC,KAAKgqY,YAAY76V,GACfljC,IAAI,mBAAoBkjC,EAAK8hF,OAC7B5rG,SAAS,UACTuD,YACG,YACA5oB,KAAKiqY,qBAAqB96V,GAAQ,KAErCpmB,OAAsB,IAAfomB,EAAKzmC,OACZyxC,OAAOx3C,EAAE,eACT0N,KAAKrQ,KAAKiiQ,SAAS9yN,IAChC,EAEA66V,YAAa,SAAS76V,GAClB,IAAI8wO,EAAOt9Q,EAAE,sCAOb,OANA3C,KAAKkoY,YAAY/4V,EAAM8wO,GAEnBnpJ,EAAQ3nF,EAAKsvB,WAAaq4D,EAAQ3nF,EAAKsvB,SAAS/Q,MAChDuyN,EAAKr8P,KAAKjjB,EAAMijB,KAAK,OAAQurB,EAAKsvB,SAAS/Q,KAGxCuyN,CACX,EAEAiqH,iBAAkB,SAAS/6V,GACvB,IAAIg4C,EAAc,CACdp7E,MAAOojC,EAAK+oG,MAAMnsI,MAClBC,OAAQmjC,EAAK+oG,MAAMlsI,OACnBwgB,KAAM2iB,EAAK+oG,MAAM1rH,KACjBtH,IAAKiqB,EAAK+oG,MAAMhzH,KAepB,OAZIiiE,EAAY36D,MAAQxsB,KAAK8d,OACzBqpE,EAAYp7E,OAAuB,EAAd/L,KAAK8d,OAE1BqpE,EAAYp7E,OAAS/L,KAAK8d,OAG1BqpE,EAAYjiE,IACZiiE,EAAYn7E,QAAwB,EAAdhM,KAAK8d,OAE3BqpE,EAAYn7E,QAAUhM,KAAK8d,OAGxBqpE,CACX,EAEA+gT,YAAa,SAAS/4V,EAAMtjC,GACxB,IAAIs7E,EAAcnnF,KAAKkqY,iBAAiB/6V,GACxCtjC,EAAQI,IAAI,CACRF,MAAOo7E,EAAYp7E,MACnBC,OAAQm7E,EAAYn7E,OACpBwgB,KAAM26D,EAAY36D,KAClBtH,IAAKiiE,EAAYjiE,KAEzB,EAEA+8O,SAAU,SAAS9yN,GACf,IAAIrO,EAAOqO,EAAKrO,KAMhB,OAJI9gC,KAAKmH,QAAQiJ,WACb0wB,EAAO9gC,KAAK4kY,gBAAgBz1V,IAGzBrO,CACX,EAEA8jW,gBAAiB,SAASz1V,GAEtB,OADoB/+B,EAASpQ,KAAKmH,QAAQiJ,SACnC+5X,CAAc,CACjB1rU,SAAUtvB,EAAKsvB,SACf39B,KAAMqO,EAAKrO,MAEnB,EAEA6oW,aAAc,SAASx6V,GACnB,OAAOxsC,EAAE,uCACAw3C,OAAOx3C,EAAE,eAAe0N,KAAKrQ,KAAKiiQ,SAAS9yN,IACxD,EAEA06V,YAAa,WACT,OAAOlnY,EAAE,qCACb,EAEAsnY,qBAAsB,SAAS96V,GAC3B,OAAOq4V,EAAgBr4V,EAAK8hF,MAChC,IAGAu1Q,EAAe5+X,EAAM7E,OAAO,CAC5BkkY,WAAY,SAASppV,EAAM9xC,EAAOC,EAAQwmC,GACtCqL,EAAKq6F,MAAQ,CACTnsI,MAAOA,EACPC,OAAQA,EACRkZ,IAAK,EACLsH,KAAM,GAEVqxB,EAAKrL,SAAWA,CACpB,EAEArqC,KAAM,SAASqqC,GACXxyC,KAAKwyC,SAAWA,EAChBxyC,KAAK4pQ,SAAWp3N,EAAW,EAAI,CACnC,EAEAu0V,QAAS,SAASxxV,EAAUg0V,EAAWzC,GAEnC,GAAIvxV,EAAS/tC,OAAS,EAAG,CACrB,IAAIuE,EAAQw9X,EAAUx9X,MAClBC,EAASu9X,EAAUv9X,OAEnBhM,KAAKwyC,SACLxmC,GAAU86X,EAAShmW,KAEnB/0B,GAAS+6X,EAAShmW,KAGtB,IAAI0oW,EAAe,CACfz9X,MAAOA,EACPC,OAAQA,EACRkZ,IAAK,EACLsH,KAAM,GAGVxsB,KAAKooY,eAAe7yV,EAAUi0V,EAClC,CACJ,EAEApB,eAAgB,SAASl8U,EAAOgsF,GAC5B,IAGI3wI,EAHA8gY,EAAanwP,EAAMnsI,MAAQmsI,EAAMlsI,OACjCs8X,EAAY,EACZC,EAAY,GAGhB,IAAKhhY,EAAI,EAAGA,EAAI2kD,EAAM1kD,OAAQD,IAAK,CAC/B,IAAI4nC,EAAO+c,EAAM3kD,GACjBghY,EAAUhhY,GAAKwB,WAAWmjD,EAAM3kD,GAAGmB,OACnC4/X,GAAaC,EAAUhhY,GACvB4nC,EAAKqD,SAAWxyC,KAAKwyC,QACzB,CAEA,IAAKjrC,EAAI,EAAGA,EAAIghY,EAAU/gY,OAAQD,IAC9B2kD,EAAM3kD,GAAG+rL,KAAO+0M,EAAaE,EAAUhhY,GAAK+gY,EAGhDtoY,KAAKoqY,aAAal+U,EAAOgsF,EAC7B,EAEAkyP,aAAc,SAASl+U,EAAOgsF,GAC1B,IAAIowP,EAAYtoY,KAAKypY,WAAWv9U,GAC5BA,EAAM,GAAGyf,MAAQ,IAAM3rE,KAAK4pQ,SAC5B5pQ,KAAKyoY,iBAAiBv8U,EAAOgsF,EAAOowP,GAEpCtoY,KAAKmpY,eAAej9U,EAAOgsF,EAAOowP,EAE1C,EAEAG,iBAAkB,SAASv8U,EAAOgsF,EAAOowP,GAGrC,IAFA,IAAI97W,EAAO,EAEFjlB,EAAI,EAAGA,EAAI2kD,EAAM1kD,OAAQD,IAAK,CACnC,IAAI4nC,EAAO+c,EAAM3kD,GACbwE,EAAQojC,EAAKmkJ,MAAQg1M,EAAYpwP,EAAMnsI,OAC3CojC,EAAK+oG,MAAQ,CACTlsI,OAAQksI,EAAMlsI,OACdD,MAAOA,EACPmZ,IAAKgzH,EAAMhzH,IACXsH,KAAM0rH,EAAM1rH,KAAOA,GAGvBA,GAAQzgB,CACZ,CACJ,EAEAo9X,eAAgB,SAASj9U,EAAOgsF,EAAOowP,GAGnC,IAFA,IAAIpjX,EAAM,EAED3d,EAAI,EAAGA,EAAI2kD,EAAM1kD,OAAQD,IAAK,CACnC,IAAI4nC,EAAO+c,EAAM3kD,GACbyE,EAASmjC,EAAKmkJ,MAAQg1M,EAAYpwP,EAAMlsI,QAC5CmjC,EAAK+oG,MAAQ,CACTlsI,OAAQA,EACRD,MAAOmsI,EAAMnsI,MACbmZ,IAAKgzH,EAAMhzH,IAAMA,EACjBsH,KAAM0rH,EAAM1rH,MAGhBtH,GAAOlZ,CACX,CACJ,EAEAy9X,WAAY,SAASv9U,GAGjB,IAFA,IAAIlF,EAAQ,EAEHz/C,EAAI,EAAGA,EAAI2kD,EAAM1kD,OAAQD,IAC9By/C,GAASkF,EAAM3kD,GAAG+rL,KAGtB,OAAOtsI,CACX,IAGAy/U,EAAmBE,EAAe5jY,OAAO,CACzC+jY,SAAU,SAASjpV,GACf,IAAIkqG,EAAc/nJ,KAAK88D,UAAUjf,EAAK4gB,SAAS/Q,KAC3Co5U,EAAW,CACXhmW,KAAM,EACNhjB,OAAQ,GAGZ,GAAI+/B,EAAKtI,SAAU,CAIf,GAHAv1C,KAAK84U,OAAO/wL,GAED/nJ,KAAKiiQ,SAASpkN,GACf,CACN,IAAIM,EAAQn+C,KAAK2pY,aAAa9rV,GAC9BkqG,EAAY5tG,OAAOgE,GACnBn+C,KAAK4pY,SAASzrV,EAAON,EAAK4gB,UAEtB5gB,EAAKrL,SACLs0V,EAAShmW,KAAOqd,EAAMnyC,SAEtB86X,EAAShmW,KAAOqd,EAAMpyC,OAE9B,CAEAg8I,EAAY5tG,OAAOn6C,KAAK6pY,eAExB7pY,KAAK8d,QAAU3R,EAAW47I,GAAeA,EAAYvnI,cAAgB,CACzE,CAEA,OAAOsmX,CACX,EAEAztN,UAAW,SAASlqI,EAAMtjC,GAOtB,OALIsjC,EAAKqD,SACC3mC,EAAQ0pC,SAAS,oBAAoBvpC,SAErCH,EAAQ0pC,SAAS,6BAA6BxpC,UAEzC,CACnB,EAEA49X,aAAc,SAASx6V,GAQnB,OANIA,EAAKqD,SACG7vC,EAAE,uCAEFA,EAAE,iDAGDw3C,OAAOx3C,EAAE,eAAe0N,KAAKrQ,KAAKiiQ,SAAS9yN,IAC5D,IAGJ,SAASirJ,EAASr0K,EAAOs/I,GACrB,OAAY,OAARA,EACOA,EAGD71I,EAAOzJ,GAAO,EACjBkK,CAAIo1I,EACf,CAEA,SAASvuC,EAAQpuH,GACb,YAx3BY,IAw3BEA,CAClB,CAwBA,SAASg/X,EAAahxX,EAAKyC,EAAKG,EAAO9R,EAAQ+/X,GAC3C,IAAI8C,EAAWjnY,EAAKsT,IAAItT,EAAKqU,IAAIf,GAAMtT,EAAKqU,IAAI0B,IAC5CmxX,EAAWlnY,EAAK+V,IAAI/V,EAAKqU,IAAIf,GAAMtT,EAAKqU,IAAI0B,IAE5CoxX,GADQD,EAAWD,IAAa7iY,EAAS,IACnB8R,EAAQ,GASlC,OANIiuX,EACQ8C,EAAWE,EAEXD,EAAWC,CAI3B,CAEA,SAAS5C,EAAkB12Q,GACvB,MAAO,IAAMu5Q,EAAav5Q,EAAMiB,GAAKs4Q,EAAav5Q,EAAM77G,GAAKo1X,EAAav5Q,EAAMh1G,EACpF,CAEA,SAASorX,EAAap2Q,GAElB,IAAIw2Q,EAmBR,SAAoBx2Q,GAChB,IAAIw5Q,EAAcx5Q,EAAMzpH,OACpBigY,EAAW,CAAC,EACI,IAAhBgD,GACAhD,EAASv1Q,EAAIjB,EAAM,GACnBw2Q,EAASryX,EAAI67G,EAAM,GACnBw2Q,EAASxrX,EAAIg1G,EAAM,KAEnBw2Q,EAASv1Q,EAAIjB,EAAMjmH,UAAU,EAAG,GAChCy8X,EAASryX,EAAI67G,EAAMjmH,UAAU,EAAG,GAChCy8X,EAASxrX,EAAIg1G,EAAMjmH,UAAU,EAAG,IAGpC,OAAOy8X,CACX,CAjCmBiD,CADfz5Q,EAAQA,EAAMxuH,QAAQ,IAAK,KAG3B,MAAO,CACHyvH,EAAGy4Q,EAASlD,EAASv1Q,GACrB98G,EAAGu1X,EAASlD,EAASryX,GACrB6G,EAAG0uX,EAASlD,EAASxrX,GAE7B,CAEA,SAASuuX,EAAa/+X,GAClB,IAAIqL,EAAS1T,EAAKkT,MAAM7K,GAAQgG,SAAS,IAAInC,cAM7C,OAJsB,IAAlBwH,EAAOtP,SACPsP,EAAS,IAAMA,GAGZA,CACX,CAkBA,SAAS6zX,EAASh5Q,GACd,OAAOn4G,SAASm4G,EAAIlgH,SAAS,IAAK,GACtC,CAEA,SAAS+1X,EAAgBv2Q,GACrB,IAAIyC,EAAa,EAMjB,OALIzC,IACAA,EAAQo2Q,EAAap2Q,GACrByC,EAAatwH,EAAKq7E,KAAK,KAAQwyC,EAAMiB,EAAIjB,EAAMiB,EAAI,KAAQjB,EAAM77G,EAAI67G,EAAM77G,EAAI,KAAQ67G,EAAMh1G,EAAIg1G,EAAMh1G,IAGpGy3G,CACX,CAEA,SAASp9G,EAAM5N,GACX,IAAIqwH,EAAQ31H,EAAKymC,IAAI,GAAI,GACzB,OAAOzmC,EAAKkT,MAAM5N,EAAQqwH,GAASA,CACvC,CAEAtuG,EAAQF,GAAG2M,OAAOkvW,EAErB,CAv/BD,CAu/BGtlY,OAAOH,MAAM+G,QACF/G,MAGAA,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfywB,EAASzwB,EAAM4pB,GAAG6G,OAClB3Z,EAAMpU,KAAKoU,IAGX4nE,EAAQjuD,EAAOruB,OAAO,CACtBoF,KAAM,SAAS0D,EAAS1E,GACpB,IAAIc,EAAOjI,KAQX,SAAS4qY,EAAWxoY,GAChB,OAAO,SAASuC,GACZsD,EAAK4iY,cAAczoY,EAAMuC,EAC7B,CACJ,CAEA,SAASmmY,EAAkB1oY,GACvB,OAAO,SAASuC,GACZsD,EAAKmC,QAAQhI,EAAM,CAAEknB,QAAS3kB,EAAE2kB,QAASk1D,SAAU75E,EAAE65E,SAAUD,OAAQ55E,EAAE45E,OAAQp+D,MAAOxb,EAAEwb,OAC9F,CACJ,CAhBAiR,EAAOrpB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS1E,GACnCA,EAAUc,EAAKd,QAEf0E,EAAU5D,EAAK4D,QACf5D,EAAK2E,QAAUf,EAcf5D,EAAKoC,OAAS,IAAI1J,EAAM+/E,WAAW70E,EAAS,CACxC0jB,OAAQpoB,EAAQooB,OAChBoyD,QAASx6E,EAAQw6E,QACjBxB,QAASh5E,EAAQg5E,QACjBmB,WAAYn6E,EAAQm6E,WACpBC,gBAAgB,EAChBE,QAASt6E,EAAQs6E,QACjBzB,MAAO4qT,EAAW,cAClBzhT,KAAMyhT,EAAW,QACjB70K,IAAK9tN,EAAKo4E,KAAK72E,KAAKvB,GACpB++E,aAAc8jT,EAAkB,gBAChC5jT,cAAe4jT,EAAkB,iBACjC50K,WAAY40K,EAAkB,gBAG9B3jY,EAAQ4jY,aACR9iY,EAAKoC,OAAOb,KAAK,QAASvB,EAAK+iY,YAAYxhY,KAAKvB,IAChDA,EAAKoC,OAAOb,KAAK,OAAQvB,EAAKgjY,WAAWzhY,KAAKvB,MAE9CA,EAAKoC,OAAOb,KAAK,QAASvB,EAAKijY,WAAW1hY,KAAKvB,IAC/CA,EAAKoC,OAAOb,KAAK,OAAQohY,EAAW,SACpC3iY,EAAKoC,OAAOb,KAAK,MAAOohY,EAAW,aAGvCjqY,EAAMi0B,OAAO3sB,EACjB,EAEAoC,OAAQ,CACJ,aACA,YACA,OACA,UACA,MACA,YACA,OACA,QACA,eACA,gBACA,cAGJlD,QAAS,CACL/E,KAAM,QACNu/E,QAAS,KACTviF,QAAQ,EACRqiF,SAAS,EACTlyD,OAAQ,KACR+xD,YAAY,EACZypT,aAAa,EACbI,UAAW,GACXC,UAAW,GACXC,YAAa,IACblrT,QAAS,IACTmrT,iBAAkB,KAGtB3wW,OAAQ,WACJ36B,KAAKqK,OAAOswB,QAChB,EAEA34B,QAAS,WACLovB,EAAOrpB,GAAG/F,QAAQuI,KAAKvK,MAEvBA,KAAKqK,OAAOrI,SAChB,EAEA6oY,cAAe,SAASnlY,EAAMf,GACtB3E,KAAKoK,QAAQ1E,EAAM,CAAE8Z,MAAO7a,EAAE6a,MAAOW,MAAOxb,EAAEwb,SAC9Cxb,EAAEwE,gBAEV,EAEAk3E,KAAM,SAAS17E,GACX,IAAIsD,EAAOjI,KACPurY,EAAUtjY,EAAKsjY,QACf/rX,EAAQ7a,EAAE6a,MAEV+rX,GACC/rX,EAAMqhE,QAAU0qT,EAAQ1qT,QAAU54E,EAAKd,QAAQmkY,kBAChD3qY,EAAMm9E,WAAWt+D,EAAO+rX,GAAS/sT,SAvGf,IA0GnBv2E,EAAK4iY,cAAc,YAAalmY,GAChCsD,EAAKsjY,QAAU,OAEdtjY,EAAK4iY,cAAc,MAAOlmY,GAC1BsD,EAAKsjY,QAAU/rX,EAEvB,EAEA0rX,WAAY,SAASvmY,GACjB3E,KAAK6qY,cAAc,YAAalmY,EACpC,EAEAqmY,YAAa,SAASrmY,GACM,EAApB8S,EAAI9S,EAAES,EAAE65E,WAAiBxnE,EAAI9S,EAAER,EAAE86E,WACjCt6E,EAAE2F,OAAOg4E,SAEjB,EAEA2oT,WAAY,SAAStmY,GACjB,IACIwC,EADOnH,KACQmH,QACfqY,EAAQ7a,EAAE6a,MACV8H,EAAW3iB,EAAEwb,MAAM++D,UAAY1/D,EAAMwhE,UACrC3sC,EAAY70B,EAAMpa,EAAEg6E,aAAe,EAAI,QAAU,OAGjD3nE,EAAI+H,EAAMpa,EAAEg6E,eAAiBj4E,EAAQgkY,WACrC1zX,EAAI+H,EAAMrb,EAAEi7E,cAAgBj4E,EAAQikY,WACpC9jX,EAAWngB,EAAQkkY,cATZrrY,KAYFoK,QAAQ,QAAS,CAClBiqC,UAAWA,EACX70B,MAAO7a,EAAE6a,QAGbA,EAAMmb,SAEd,IAGJh6B,EAAM4pB,GAAG2M,OAAOmoD,EACnB,CAxJD,CAwJGv+E,OAAOH,MAAM+G,QACF/G,MAGAA,MAKd,OAFcA,KAIjB","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery')) :\n typeof define === 'function' && define.amd ? define(['jquery'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendodataviz = global.kendodataviz || {}, global.kendodataviz.mobile = global.kendodataviz.mobile || {}, global.kendodataviz.mobile.js = factory()));\n})(this, (function () {\n let breakpoints;\n const EVENT = \"change\";\n\n const defaultBreakpoints = {\n small: \"(max-width: 500px)\",\n medium: \"(min-width: 500.1px) and (max-width: 768px)\",\n large: \"(min-width: 768.1px)\",\n };\n\n function createMediaQuery(query) {\n let mediaQueryList = window.matchMedia(query);\n let onEnterCallbacks = [];\n let onLeaveCallbacks = [];\n let onChangeHandlers = [];\n let kendoMediaQuery = { mediaQueryList };\n\n const onChangeHandler = (ev) => {\n onChangeHandlers.forEach((cb) => cb(ev));\n\n if (ev.matches) {\n onEnterCallbacks.forEach((cb) => cb(ev));\n } else {\n onLeaveCallbacks.forEach((cb) => cb(ev));\n }\n };\n\n mediaQueryList.addEventListener(EVENT, onChangeHandler);\n\n const onChange = (cb) => {\n onChangeHandlers.push(cb);\n return kendoMediaQuery;\n };\n\n const onEnter = (cb) => {\n onEnterCallbacks.push(cb);\n\n if (mediaQueryList.matches) {\n const media = mediaQueryList.media;\n const matches = true;\n\n const ev = new MediaQueryListEvent(EVENT, {\n media,\n matches,\n });\n\n cb(ev);\n }\n\n return kendoMediaQuery;\n };\n\n const onLeave = (cb) => {\n onLeaveCallbacks.push(cb);\n return kendoMediaQuery;\n };\n\n const destroy = () => {\n if (mediaQueryList) {\n mediaQueryList.removeEventListener(EVENT, onChangeHandler);\n }\n onEnterCallbacks = null;\n onLeaveCallbacks = null;\n onChangeHandlers = null;\n mediaQueryList = null;\n kendoMediaQuery = null;\n };\n\n kendoMediaQuery.onChange = onChange;\n kendoMediaQuery.onEnter = onEnter;\n kendoMediaQuery.onLeave = onLeave;\n kendoMediaQuery.destroy = destroy;\n\n return kendoMediaQuery;\n }\n\n function mediaQuery(query) {\n if (!query) {\n return;\n }\n\n breakpoints =\n breakpoints ||\n Object.assign({}, defaultBreakpoints, kendo.defaults.breakpoints);\n\n if (query in breakpoints) {\n query = breakpoints[query];\n }\n\n return createMediaQuery(query);\n }\n\n var __meta__$Y = {\n id: \"core\",\n name: \"Core\",\n category: \"framework\",\n description: \"The core of the Kendo framework.\"\n };\n\n var packageMetadata = {\n name: '@progress/kendo-ui',\n productName: 'Kendo UI',\n productCodes: ['KENDOUICOMPLETE', 'KENDOUI', 'UIASPCORE', 'KENDOMVC', 'KENDOUIMVC'],\n publishDate: 0,\n version: '2024.2.514'.replace(/^\\s+|\\s+$/g, ''),\n licensingDocsUrl: 'https://docs.telerik.com/kendo-ui/intro/installation/using-license-code?utm_medium=product&utm_source=kendojquery&utm_campaign=kendo-ui-jquery-purchase-license-keys-warning'\n };\n\n\n (function($, window, undefined$1) {\n var kendo = window.kendo = window.kendo || { cultures: {} },\n extend = $.extend,\n each = $.each,\n isArray = Array.isArray,\n noop = $.noop,\n math = Math,\n Template,\n JSON = window.JSON || {},\n support = {},\n percentRegExp = /%/,\n formatRegExp = /\\{(\\d+)(:[^\\}]+)?\\}/g,\n boxShadowRegExp = /(\\d+(?:\\.?)\\d*)px\\s*(\\d+(?:\\.?)\\d*)px\\s*(\\d+(?:\\.?)\\d*)px\\s*(\\d+)?/i,\n numberRegExp = /^(\\+|-?)\\d+(\\.?)\\d*$/,\n MONTH = \"month\",\n HOUR = \"hour\",\n ZONE = \"zone\",\n WEEKDAY = \"weekday\",\n QUARTER = \"quarter\",\n DATE_FIELD_MAP = {\n \"G\": \"era\",\n \"y\": \"year\",\n \"q\": QUARTER,\n \"Q\": QUARTER,\n \"M\": MONTH,\n \"L\": MONTH,\n \"d\": \"day\",\n \"E\": WEEKDAY,\n \"c\": WEEKDAY,\n \"e\": WEEKDAY,\n \"h\": HOUR,\n \"H\": HOUR,\n \"k\": HOUR,\n \"K\": HOUR,\n \"m\": \"minute\",\n \"s\": \"second\",\n \"a\": \"dayperiod\",\n \"t\": \"dayperiod\",\n \"x\": ZONE,\n \"X\": ZONE,\n \"z\": ZONE,\n \"Z\": ZONE\n },\n NAME_TYPES = {\n month: {\n type: \"months\",\n minLength: 3,\n standAlone: \"L\"\n },\n\n quarter: {\n type: \"quarters\",\n minLength: 3,\n standAlone: \"q\"\n },\n\n weekday: {\n type: \"days\",\n minLength: {\n E: 0,\n c: 3,\n e: 3\n },\n standAlone: \"c\"\n },\n\n dayperiod: {\n type: \"dayPeriods\",\n minLength: 0\n },\n\n era: {\n type: \"eras\",\n minLength: 0\n }\n },\n FUNCTION = \"function\",\n STRING = \"string\",\n NUMBER = \"number\",\n OBJECT = \"object\",\n NULL = \"null\",\n BOOLEAN = \"boolean\",\n UNDEFINED = \"undefined\",\n PREFIX = \"prefix\",\n ARIA_LABELLEDBY = \"aria-labelledby\",\n ARIA_LABEL = \"aria-label\",\n LABELIDPART = \"_label\",\n getterCache = {},\n setterCache = {},\n slice = [].slice,\n cssPropertiesNames = [ \"themeColor\", \"fillMode\", \"shape\", \"size\", \"rounded\", \"positionMode\" ],\n // avoid extending the depricated properties in latest verions of jQuery\n noDepricateExtend = function() {\n var src, copyIsArray, copy, name, options, clone,\n target = arguments[ 0 ] || {},\n i = 1,\n length = arguments.length,\n deep = false;\n\n // Handle a deep copy situation\n if ( typeof target === \"boolean\" ) {\n deep = target;\n\n // skip the boolean and the target\n target = arguments[ i ] || {};\n i++;\n }\n\n // Handle case when target is a string or something (possible in deep copy)\n if ( typeof target !== \"object\" && typeof target !== \"function\") {\n target = {};\n }\n\n // extend jQuery itself if only one argument is passed\n if ( i === length ) {\n target = this;\n i--;\n }\n\n for ( ; i < length; i++ ) {\n\n // Only deal with non-null/undefined values\n if ( ( options = arguments[ i ] ) != null ) {\n\n // Extend the base object\n for ( name in options ) {\n // filters, concat and : properties are depricated in the jQuery 3.3.0\n // accessing these properties throw a warning when jQuery migrate is included\n if (name == \"filters\" || name == \"concat\" || name == \":\") {\n continue;\n }\n src = target[ name ];\n copy = options[ name ];\n\n // Prevent never-ending loop\n if ( target === copy ) {\n continue;\n }\n\n // Recurse if we're merging plain objects or arrays\n if ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n ( copyIsArray = Array.isArray( copy ) ) ) ) {\n\n if ( copyIsArray ) {\n copyIsArray = false;\n clone = src && Array.isArray( src ) ? src : [];\n\n } else {\n clone = src && jQuery.isPlainObject( src ) ? src : {};\n }\n\n // Never move original objects, clone them\n target[ name ] = noDepricateExtend( deep, clone, copy );\n\n // Don't bring in undefined values\n } else if ( copy !== undefined$1 ) {\n target[ name ] = copy;\n }\n }\n }\n }\n\n // Return the modified object\n return target;\n };\n\n kendo.version = \"2024.2.514\".replace(/^\\s+|\\s+$/g, '');\n\n function Class() {}\n\n Class.extend = function(proto) {\n var base = function() {},\n member,\n that = this,\n subclass = proto && proto.init ? proto.init : function() {\n that.apply(this, arguments);\n },\n fn;\n\n base.prototype = that.prototype;\n fn = subclass.fn = subclass.prototype = new base();\n\n for (member in proto) {\n if (proto[member] != null && proto[member].constructor === Object) {\n // Merge object members\n fn[member] = extend(true, {}, base.prototype[member], proto[member]);\n } else {\n fn[member] = proto[member];\n }\n }\n\n fn.constructor = subclass;\n subclass.extend = that.extend;\n\n return subclass;\n };\n\n Class.prototype._initOptions = function(options) {\n this.options = deepExtend({}, this.options, options);\n };\n\n const isPresent = kendo.isPresent = (value) => value !== null && value !== undefined$1;\n const isBlank = kendo.isBlank = (value) => value === null || value === undefined$1;\n const isString = kendo.isString = (value) => typeof value === 'string';\n const isNumeric = kendo.isNumeric = (value) => !isNaN(value - parseFloat(value));\n const isDate = kendo.isDate = (value) => value && value.getTime;\n const isFunction = kendo.isFunction = (value) => typeof value === 'function';\n\n var preventDefault = function() {\n this._defaultPrevented = true;\n };\n\n var isDefaultPrevented = function() {\n return this._defaultPrevented === true;\n };\n\n var Observable = Class.extend({\n init: function() {\n this._events = {};\n },\n\n bind: function(eventName, handlers, one) {\n var that = this,\n idx,\n eventNames = typeof eventName === STRING ? [eventName] : eventName,\n length,\n original,\n handler,\n handlersIsFunction = typeof handlers === FUNCTION,\n events;\n\n if (handlers === undefined$1) {\n for (idx in eventName) {\n that.bind(idx, eventName[idx]);\n }\n return that;\n }\n\n for (idx = 0, length = eventNames.length; idx < length; idx++) {\n eventName = eventNames[idx];\n\n handler = handlersIsFunction ? handlers : handlers[eventName];\n\n if (handler) {\n if (one) {\n original = handler;\n handler = function() {\n that.unbind(eventName, handler);\n original.apply(that, arguments);\n };\n handler.original = original;\n }\n events = that._events[eventName] = that._events[eventName] || [];\n events.push(handler);\n }\n }\n\n return that;\n },\n\n one: function(eventNames, handlers) {\n return this.bind(eventNames, handlers, true);\n },\n\n first: function(eventName, handlers) {\n var that = this,\n idx,\n eventNames = typeof eventName === STRING ? [eventName] : eventName,\n length,\n handler,\n handlersIsFunction = typeof handlers === FUNCTION,\n events;\n\n for (idx = 0, length = eventNames.length; idx < length; idx++) {\n eventName = eventNames[idx];\n\n handler = handlersIsFunction ? handlers : handlers[eventName];\n\n if (handler) {\n events = that._events[eventName] = that._events[eventName] || [];\n events.unshift(handler);\n }\n }\n\n return that;\n },\n\n trigger: function(eventName, e) {\n var that = this,\n events = that._events[eventName],\n idx,\n length;\n\n if (events) {\n e = e || {};\n\n e.sender = that;\n\n e._defaultPrevented = false;\n\n e.preventDefault = preventDefault;\n\n e.isDefaultPrevented = isDefaultPrevented;\n\n events = events.slice();\n\n for (idx = 0, length = events.length; idx < length; idx++) {\n events[idx].call(that, e);\n }\n\n return e._defaultPrevented === true;\n }\n\n return false;\n },\n\n unbind: function(eventName, handler) {\n var that = this,\n events = that._events[eventName],\n idx;\n\n if (eventName === undefined$1) {\n that._events = {};\n } else if (events) {\n if (handler) {\n for (idx = events.length - 1; idx >= 0; idx--) {\n if (events[idx] === handler || events[idx].original === handler) {\n events.splice(idx, 1);\n }\n }\n } else {\n that._events[eventName] = [];\n }\n }\n\n return that;\n }\n });\n\n\n function compilePart(part, stringPart) {\n if (stringPart) {\n return \"'\" +\n part.split(\"'\").join(\"\\\\'\")\n .split('\\\\\"').join('\\\\\\\\\\\\\"')\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/\\t/g, \"\\\\t\") + \"'\";\n } else {\n var first = part.charAt(0),\n rest = part.substring(1);\n\n if (first === \"=\") {\n return \"+(\" + rest + \")+\";\n } else if (first === \":\") {\n return \"+$kendoHtmlEncode(\" + rest + \")+\";\n } else {\n return \";\" + part + \";$kendoOutput+=\";\n }\n }\n }\n\n var argumentNameRegExp = /^\\w+/,\n encodeRegExp = /\\$\\{([^}]*)\\}/g,\n escapedCurlyRegExp = /\\\\\\}/g,\n curlyRegExp = /__CURLY__/g,\n escapedSharpRegExp = /\\\\#/g,\n sharpRegExp = /__SHARP__/g,\n zeros = [\"\", \"0\", \"00\", \"000\", \"0000\"];\n\n Template = {\n paramName: \"data\", // name of the parameter of the generated template\n useWithBlock: true, // whether to wrap the template in a with() block\n render: function(template, data) {\n var idx,\n length,\n html = \"\";\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n html += template(data[idx]);\n }\n\n return html;\n },\n compile: function(template, options) {\n var settings = extend({}, this, options),\n paramName = settings.paramName,\n argumentName = paramName.match(argumentNameRegExp)[0],\n useWithBlock = settings.useWithBlock,\n functionBody = \"var $kendoOutput, $kendoHtmlEncode = kendo.htmlEncode;\",\n fn,\n parts,\n idx;\n\n if (isFunction(template)) {\n return template;\n }\n\n functionBody += useWithBlock ? \"with(\" + paramName + \"){\" : \"\";\n\n functionBody += \"$kendoOutput=\";\n\n parts = template\n .replace(escapedCurlyRegExp, \"__CURLY__\")\n .replace(encodeRegExp, \"#=$kendoHtmlEncode($1)#\")\n .replace(curlyRegExp, \"}\")\n .replace(escapedSharpRegExp, \"__SHARP__\")\n .split(\"#\");\n\n for (idx = 0; idx < parts.length; idx ++) {\n functionBody += compilePart(parts[idx], idx % 2 === 0);\n }\n\n functionBody += useWithBlock ? \";}\" : \";\";\n\n functionBody += \"return $kendoOutput;\";\n\n functionBody = functionBody.replace(sharpRegExp, \"#\");\n\n try {\n // This function evaluation is required for legacy support of the Kendo Template syntax - non CSP compliant.\n fn = new Function(argumentName, functionBody);\n fn._slotCount = Math.floor(parts.length / 2);\n return fn;\n } catch (e) {\n if (kendo.debugTemplates) {\n window.console.warn(`Invalid template:'${template}' Generated code:'${functionBody}'`);\n } else {\n throw new Error(kendo.format(\"Invalid template:'{0}' Generated code:'{1}'\", template, functionBody));\n }\n }\n }\n };\n\n function pad(number, digits, end) {\n number = number + \"\";\n digits = digits || 2;\n end = digits - number.length;\n\n if (end) {\n return zeros[digits].substring(0, end) + number;\n }\n\n return number;\n }\n\n //JSON stringify\n (function() {\n var escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n gap,\n indent,\n meta = {\n \"\\b\": \"\\\\b\",\n \"\\t\": \"\\\\t\",\n \"\\n\": \"\\\\n\",\n \"\\f\": \"\\\\f\",\n \"\\r\": \"\\\\r\",\n \"\\\"\": '\\\\\"',\n \"\\\\\": \"\\\\\\\\\"\n },\n rep,\n toString = {}.toString;\n\n\n if (typeof Date.prototype.toJSON !== FUNCTION) {\n\n Date.prototype.toJSON = function() {\n var that = this;\n\n return isFinite(that.valueOf()) ?\n pad(that.getUTCFullYear(), 4) + \"-\" +\n pad(that.getUTCMonth() + 1) + \"-\" +\n pad(that.getUTCDate()) + \"T\" +\n pad(that.getUTCHours()) + \":\" +\n pad(that.getUTCMinutes()) + \":\" +\n pad(that.getUTCSeconds()) + \"Z\" : null;\n };\n\n String.prototype.toJSON = Number.prototype.toJSON = Boolean.prototype.toJSON = function() {\n return this.valueOf();\n };\n }\n\n function quote(string) {\n escapable.lastIndex = 0;\n return escapable.test(string) ? \"\\\"\" + string.replace(escapable, function(a) {\n var c = meta[a];\n return typeof c === STRING ? c :\n \"\\\\u\" + (\"0000\" + a.charCodeAt(0).toString(16)).slice(-4);\n }) + \"\\\"\" : \"\\\"\" + string + \"\\\"\";\n }\n\n function str(key, holder) {\n var i,\n k,\n v,\n length,\n mind = gap,\n partial,\n value = holder[key],\n type;\n\n if (value && typeof value === OBJECT && typeof value.toJSON === FUNCTION) {\n value = value.toJSON(key);\n }\n\n if (typeof rep === FUNCTION) {\n value = rep.call(holder, key, value);\n }\n\n type = typeof value;\n if (type === STRING) {\n return quote(value);\n } else if (type === NUMBER) {\n return isFinite(value) ? String(value) : NULL;\n } else if (type === BOOLEAN || type === NULL) {\n return String(value);\n } else if (type === OBJECT) {\n if (!value) {\n return NULL;\n }\n gap += indent;\n partial = [];\n if (toString.apply(value) === \"[object Array]\") {\n length = value.length;\n for (i = 0; i < length; i++) {\n partial[i] = str(i, value) || NULL;\n }\n v = partial.length === 0 ? \"[]\" : gap ?\n \"[\\n\" + gap + partial.join(\",\\n\" + gap) + \"\\n\" + mind + \"]\" :\n \"[\" + partial.join(\",\") + \"]\";\n gap = mind;\n return v;\n }\n if (rep && typeof rep === OBJECT) {\n length = rep.length;\n for (i = 0; i < length; i++) {\n if (typeof rep[i] === STRING) {\n k = rep[i];\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? \": \" : \":\") + v);\n }\n }\n }\n } else {\n for (k in value) {\n if (Object.hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? \": \" : \":\") + v);\n }\n }\n }\n }\n\n v = partial.length === 0 ? \"{}\" : gap ?\n \"{\\n\" + gap + partial.join(\",\\n\" + gap) + \"\\n\" + mind + \"}\" :\n \"{\" + partial.join(\",\") + \"}\";\n gap = mind;\n return v;\n }\n }\n\n if (typeof JSON.stringify !== FUNCTION) {\n JSON.stringify = function(value, replacer, space) {\n var i;\n gap = \"\";\n indent = \"\";\n\n if (typeof space === NUMBER) {\n for (i = 0; i < space; i += 1) {\n indent += \" \";\n }\n\n } else if (typeof space === STRING) {\n indent = space;\n }\n\n rep = replacer;\n if (replacer && typeof replacer !== FUNCTION && (typeof replacer !== OBJECT || typeof replacer.length !== NUMBER)) {\n throw new Error(\"JSON.stringify\");\n }\n\n return str(\"\", { \"\": value });\n };\n }\n })();\n\n // Date and Number formatting\n (function() {\n var dateFormatRegExp = /EEEE|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|HH|H|hh|h|mm|m|fff|ff|f|tt|ss|s|zzz|zz|z|\"[^\"]*\"|'[^']*'/g,\n standardFormatRegExp = /^(n|c|p|e)(\\d*)$/i,\n literalRegExp = /(\\\\.)|(['][^']*[']?)|([\"][^\"]*[\"]?)/g,\n commaRegExp = /\\,/g,\n EMPTY = \"\",\n POINT = \".\",\n COMMA = \",\",\n SHARP = \"#\",\n ZERO = \"0\",\n PLACEHOLDER = \"??\",\n EN = \"en-US\",\n objectToString = {}.toString;\n\n //cultures\n kendo.cultures = kendo.cultures || {}; // Ensure cultures object exists\n kendo.cultures[\"en-US\"] = {\n name: EN,\n numberFormat: {\n pattern: [\"-n\"],\n decimals: 2,\n \",\": \",\",\n \".\": \".\",\n groupSize: [3],\n percent: {\n pattern: [\"-n %\", \"n %\"],\n decimals: 2,\n \",\": \",\",\n \".\": \".\",\n groupSize: [3],\n symbol: \"%\"\n },\n currency: {\n name: \"US Dollar\",\n abbr: \"USD\",\n pattern: [\"($n)\", \"$n\"],\n decimals: 2,\n \",\": \",\",\n \".\": \".\",\n groupSize: [3],\n symbol: \"$\"\n }\n },\n calendars: {\n standard: {\n days: {\n names: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n namesAbbr: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n namesShort: [ \"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\" ]\n },\n months: {\n names: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n namesAbbr: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n },\n AM: [ \"AM\", \"am\", \"AM\" ],\n PM: [ \"PM\", \"pm\", \"PM\" ],\n patterns: {\n d: \"M/d/yyyy\",\n D: \"dddd, MMMM dd, yyyy\",\n F: \"dddd, MMMM dd, yyyy h:mm:ss tt\",\n g: \"M/d/yyyy h:mm tt\",\n G: \"M/d/yyyy h:mm:ss tt\",\n m: \"MMMM dd\",\n M: \"MMMM dd\",\n s: \"yyyy'-'MM'-'ddTHH':'mm':'ss\",\n t: \"h:mm tt\",\n T: \"h:mm:ss tt\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\",\n y: \"MMMM, yyyy\",\n Y: \"MMMM, yyyy\"\n },\n \"/\": \"/\",\n \":\": \":\",\n firstDay: 0,\n twoDigitYearMax: 2029\n }\n }\n };\n\n\n function findCulture(culture) {\n if (culture) {\n if (culture.numberFormat) {\n return culture;\n }\n\n if (typeof culture === STRING) {\n var cultures = kendo.cultures;\n return cultures[culture] || cultures[culture.split(\"-\")[0]] || null;\n }\n\n return null;\n }\n\n return null;\n }\n\n function getCulture(culture) {\n if (culture) {\n culture = findCulture(culture);\n }\n\n return culture || kendo.cultures.current;\n }\n\n function appendDesignatorsToCultures(calendars) {\n // Don't ask. It's temporary.\n if ((calendars.standard.AM && calendars.standard.AM.length)\n && (calendars.standard.PM && calendars.standard.PM.length)\n && (calendars.standard.AM.indexOf(\"PMA0\") < 0)\n && (calendars.standard.AM.indexOf(\"AM\") > -1 || calendars.standard.PM.indexOf(\"PM\") > -1)) {\n calendars.standard.AM.push(\"a\", \"A\", \"PMa\", \"PMA\", \"PMa0\", \"PMA0\");\n calendars.standard.PM.push(\"p\", \"P\", \"AMp\", \"AMP\", \"AMp0\", \"AMP0\");\n }\n }\n\n kendo.culture = function(cultureName) {\n var cultures = kendo.cultures, culture;\n\n if (cultureName !== undefined$1) {\n culture = findCulture(cultureName) || cultures[EN];\n culture.calendar = culture.calendars.standard;\n cultures.current = culture;\n } else {\n appendDesignatorsToCultures(cultures.current.calendars);\n return cultures.current;\n }\n };\n\n kendo.findCulture = findCulture;\n kendo.getCulture = getCulture;\n\n //set current culture to en-US.\n kendo.culture(EN);\n\n function formatDate(date, format, culture) {\n culture = getCulture(culture);\n\n var calendar = culture.calendars.standard,\n days = calendar.days,\n months = calendar.months;\n\n format = format.pattern || calendar.patterns[format] || format;\n\n return format.replace(dateFormatRegExp, function(match) {\n var minutes;\n var result;\n var sign;\n\n if (match === \"d\") {\n result = date.getDate();\n } else if (match === \"dd\") {\n result = pad(date.getDate());\n } else if (match === \"ddd\") {\n result = days.namesAbbr[date.getDay()];\n } else if (match === \"dddd\" || match === \"EEEE\") {\n result = days.names[date.getDay()];\n } else if (match === \"M\") {\n result = date.getMonth() + 1;\n } else if (match === \"MM\") {\n result = pad(date.getMonth() + 1);\n } else if (match === \"MMM\") {\n result = months.namesAbbr[date.getMonth()];\n } else if (match === \"MMMM\") {\n result = months.names[date.getMonth()];\n } else if (match === \"yy\") {\n result = pad(date.getFullYear() % 100);\n } else if (match === \"yyyy\") {\n result = pad(date.getFullYear(), 4);\n } else if (match === \"h\" ) {\n result = date.getHours() % 12 || 12;\n } else if (match === \"hh\") {\n result = pad(date.getHours() % 12 || 12);\n } else if (match === \"H\") {\n result = date.getHours();\n } else if (match === \"HH\") {\n result = pad(date.getHours());\n } else if (match === \"m\") {\n result = date.getMinutes();\n } else if (match === \"mm\") {\n result = pad(date.getMinutes());\n } else if (match === \"s\") {\n result = date.getSeconds();\n } else if (match === \"ss\") {\n result = pad(date.getSeconds());\n } else if (match === \"f\") {\n result = math.floor(date.getMilliseconds() / 100);\n } else if (match === \"ff\") {\n result = date.getMilliseconds();\n if (result > 99) {\n result = math.floor(result / 10);\n }\n result = pad(result);\n } else if (match === \"fff\") {\n result = pad(date.getMilliseconds(), 3);\n } else if (match === \"tt\" || match === \"aa\") {\n result = date.getHours() < 12 ? calendar.AM[0] : calendar.PM[0];\n } else if (match === \"zzz\") {\n minutes = date.getTimezoneOffset();\n sign = minutes < 0;\n\n result = math.abs(minutes / 60).toString().split(\".\")[0];\n minutes = math.abs(minutes) - (result * 60);\n\n result = (sign ? \"+\" : \"-\") + pad(result);\n result += \":\" + pad(minutes);\n } else if (match === \"zz\" || match === \"z\") {\n result = date.getTimezoneOffset() / 60;\n sign = result < 0;\n\n result = math.abs(result).toString().split(\".\")[0];\n result = (sign ? \"+\" : \"-\") + (match === \"zz\" ? pad(result) : result);\n }\n\n return result !== undefined$1 ? result : match.slice(1, match.length - 1);\n });\n }\n\n //number formatting\n function formatNumber(number, format, culture) {\n culture = getCulture(culture);\n\n var numberFormat = culture.numberFormat,\n decimal = numberFormat[POINT],\n precision = numberFormat.decimals,\n pattern = numberFormat.pattern[0],\n literals = [],\n symbol,\n isCurrency, isPercent,\n customPrecision,\n formatAndPrecision,\n negative = number < 0,\n integer,\n fraction,\n integerLength,\n fractionLength,\n replacement = EMPTY,\n value = EMPTY,\n idx,\n length,\n ch,\n hasGroup,\n hasNegativeFormat,\n decimalIndex,\n sharpIndex,\n zeroIndex,\n hasZero, hasSharp,\n percentIndex,\n currencyIndex,\n startZeroIndex,\n start = -1,\n end;\n\n //return empty string if no number\n if (number === undefined$1) {\n return EMPTY;\n }\n\n if (!isFinite(number)) {\n return number;\n }\n\n //if no format then return number.toString() or number.toLocaleString() if culture.name is not defined\n if (!format) {\n return culture.name.length ? number.toLocaleString() : number.toString();\n }\n\n formatAndPrecision = standardFormatRegExp.exec(format);\n\n // standard formatting\n if (formatAndPrecision) {\n format = formatAndPrecision[1].toLowerCase();\n\n isCurrency = format === \"c\";\n isPercent = format === \"p\";\n\n if (isCurrency || isPercent) {\n //get specific number format information if format is currency or percent\n numberFormat = isCurrency ? numberFormat.currency : numberFormat.percent;\n decimal = numberFormat[POINT];\n precision = numberFormat.decimals;\n symbol = numberFormat.symbol;\n pattern = numberFormat.pattern[negative ? 0 : 1];\n }\n\n customPrecision = formatAndPrecision[2];\n\n if (customPrecision) {\n precision = +customPrecision;\n }\n\n //return number in exponential format\n if (format === \"e\") {\n var exp = customPrecision ? number.toExponential(precision) : number.toExponential(); // toExponential() and toExponential(undefined) differ in FF #653438.\n\n return exp.replace(POINT, numberFormat[POINT]);\n }\n\n // multiply if format is percent\n if (isPercent) {\n number *= 100;\n }\n\n number = round(number, precision);\n negative = number < 0;\n number = number.split(POINT);\n\n integer = number[0];\n fraction = number[1];\n\n //exclude \"-\" if number is negative.\n if (negative) {\n integer = integer.substring(1);\n }\n\n value = groupInteger(integer, 0, integer.length, numberFormat);\n\n if (fraction) {\n value += decimal + fraction;\n }\n\n if (format === \"n\" && !negative) {\n return value;\n }\n\n number = EMPTY;\n\n for (idx = 0, length = pattern.length; idx < length; idx++) {\n ch = pattern.charAt(idx);\n\n if (ch === \"n\") {\n number += value;\n } else if (ch === \"$\" || ch === \"%\") {\n number += symbol;\n } else {\n number += ch;\n }\n }\n\n return number;\n }\n\n //custom formatting\n //\n //separate format by sections.\n\n if (format.indexOf(\"'\") > -1 || format.indexOf(\"\\\"\") > -1 || format.indexOf(\"\\\\\") > -1) {\n format = format.replace(literalRegExp, function(match) {\n var quoteChar = match.charAt(0).replace(\"\\\\\", \"\"),\n literal = match.slice(1).replace(quoteChar, \"\");\n\n literals.push(literal);\n\n return PLACEHOLDER;\n });\n }\n\n format = format.split(\";\");\n if (negative && format[1]) {\n //get negative format\n format = format[1];\n hasNegativeFormat = true;\n } else if (number === 0 && format[2]) {\n //format for zeros\n format = format[2];\n if (format.indexOf(SHARP) == -1 && format.indexOf(ZERO) == -1) {\n //return format if it is string constant.\n return format;\n }\n } else {\n format = format[0];\n }\n\n percentIndex = format.indexOf(\"%\");\n currencyIndex = format.indexOf(\"$\");\n\n isPercent = percentIndex != -1;\n isCurrency = currencyIndex != -1;\n\n //multiply number if the format has percent\n if (isPercent) {\n number *= 100;\n }\n\n if (isCurrency && format[currencyIndex - 1] === \"\\\\\") {\n format = format.split(\"\\\\\").join(\"\");\n isCurrency = false;\n }\n\n if (isCurrency || isPercent) {\n //get specific number format information if format is currency or percent\n numberFormat = isCurrency ? numberFormat.currency : numberFormat.percent;\n decimal = numberFormat[POINT];\n precision = numberFormat.decimals;\n symbol = numberFormat.symbol;\n }\n\n hasGroup = format.indexOf(COMMA) > -1;\n if (hasGroup) {\n format = format.replace(commaRegExp, EMPTY);\n }\n\n decimalIndex = format.indexOf(POINT);\n length = format.length;\n\n if (decimalIndex != -1) {\n fraction = number.toString().split(\"e\");\n if (fraction[1]) {\n fraction = round(number, Math.abs(fraction[1]));\n } else {\n fraction = fraction[0];\n }\n fraction = fraction.split(POINT)[1] || EMPTY;\n zeroIndex = format.lastIndexOf(ZERO) - decimalIndex;\n sharpIndex = format.lastIndexOf(SHARP) - decimalIndex;\n hasZero = zeroIndex > -1;\n hasSharp = sharpIndex > -1;\n idx = fraction.length;\n\n if (!hasZero && !hasSharp) {\n format = format.substring(0, decimalIndex) + format.substring(decimalIndex + 1);\n length = format.length;\n decimalIndex = -1;\n idx = 0;\n }\n\n if (hasZero && zeroIndex > sharpIndex) {\n idx = zeroIndex;\n } else if (sharpIndex > zeroIndex) {\n if (hasSharp && idx > sharpIndex) {\n var rounded = round(number, sharpIndex, negative);\n\n while (rounded.charAt(rounded.length - 1) === ZERO && sharpIndex > 0 && sharpIndex > zeroIndex) {\n sharpIndex--;\n\n rounded = round(number, sharpIndex, negative);\n }\n\n idx = sharpIndex;\n } else if (hasZero && idx < zeroIndex) {\n idx = zeroIndex;\n }\n }\n }\n\n number = round(number, idx, negative);\n\n sharpIndex = format.indexOf(SHARP);\n startZeroIndex = zeroIndex = format.indexOf(ZERO);\n\n //define the index of the first digit placeholder\n if (sharpIndex == -1 && zeroIndex != -1) {\n start = zeroIndex;\n } else if (sharpIndex != -1 && zeroIndex == -1) {\n start = sharpIndex;\n } else {\n start = sharpIndex > zeroIndex ? zeroIndex : sharpIndex;\n }\n\n sharpIndex = format.lastIndexOf(SHARP);\n zeroIndex = format.lastIndexOf(ZERO);\n\n //define the index of the last digit placeholder\n if (sharpIndex == -1 && zeroIndex != -1) {\n end = zeroIndex;\n } else if (sharpIndex != -1 && zeroIndex == -1) {\n end = sharpIndex;\n } else {\n end = sharpIndex > zeroIndex ? sharpIndex : zeroIndex;\n }\n\n if (start == length) {\n end = start;\n }\n\n if (start != -1) {\n value = number.toString().split(POINT);\n integer = value[0];\n fraction = value[1] || EMPTY;\n\n integerLength = integer.length;\n fractionLength = fraction.length;\n\n if (negative && (number * -1) >= 0) {\n negative = false;\n }\n\n number = format.substring(0, start);\n\n if (negative && !hasNegativeFormat) {\n number += \"-\";\n }\n\n for (idx = start; idx < length; idx++) {\n ch = format.charAt(idx);\n\n if (decimalIndex == -1) {\n if (end - idx < integerLength) {\n number += integer;\n break;\n }\n } else {\n if (zeroIndex != -1 && zeroIndex < idx) {\n replacement = EMPTY;\n }\n\n if ((decimalIndex - idx) <= integerLength && decimalIndex - idx > -1) {\n number += integer;\n idx = decimalIndex;\n }\n\n if (decimalIndex === idx) {\n number += (fraction ? decimal : EMPTY) + fraction;\n idx += end - decimalIndex + 1;\n continue;\n }\n }\n\n if (ch === ZERO) {\n number += ch;\n replacement = ch;\n } else if (ch === SHARP) {\n number += replacement;\n }\n }\n\n if (hasGroup) {\n number = groupInteger(number, start + (negative && !hasNegativeFormat ? 1 : 0), Math.max(end, (integerLength + start)), numberFormat);\n }\n\n if (end >= start) {\n number += format.substring(end + 1);\n }\n\n //replace symbol placeholders\n if (isCurrency || isPercent) {\n value = EMPTY;\n for (idx = 0, length = number.length; idx < length; idx++) {\n ch = number.charAt(idx);\n value += (ch === \"$\" || ch === \"%\") ? symbol : ch;\n }\n number = value;\n }\n\n length = literals.length;\n\n if (length) {\n for (idx = 0; idx < length; idx++) {\n number = number.replace(PLACEHOLDER, literals[idx]);\n }\n }\n }\n\n return number;\n }\n\n var groupInteger = function(number, start, end, numberFormat) {\n var decimalIndex = number.indexOf(numberFormat[POINT]);\n var groupSizes = numberFormat.groupSize.slice();\n var groupSize = groupSizes.shift();\n var integer, integerLength;\n var idx, parts, value;\n var newGroupSize;\n\n end = decimalIndex !== -1 ? decimalIndex : end + 1;\n\n integer = number.substring(start, end);\n integerLength = integer.length;\n\n if (integerLength >= groupSize) {\n idx = integerLength;\n parts = [];\n\n while (idx > -1) {\n value = integer.substring(idx - groupSize, idx);\n if (value) {\n parts.push(value);\n }\n idx -= groupSize;\n newGroupSize = groupSizes.shift();\n groupSize = newGroupSize !== undefined$1 ? newGroupSize : groupSize;\n\n if (groupSize === 0) {\n if (idx > 0) {\n parts.push(integer.substring(0, idx));\n }\n break;\n }\n }\n\n integer = parts.reverse().join(numberFormat[COMMA]);\n number = number.substring(0, start) + integer + number.substring(end);\n }\n\n return number;\n };\n\n var round = function(value, precision, negative) {\n precision = precision || 0;\n\n value = value.toString().split('e');\n value = Math.round(+(value[0] + 'e' + (value[1] ? (+value[1] + precision) : precision)));\n\n if (negative) {\n value = -value;\n }\n\n value = value.toString().split('e');\n value = +(value[0] + 'e' + (value[1] ? (+value[1] - precision) : -precision));\n\n return value.toFixed(Math.min(precision, 20));\n };\n\n var toString = function(value, fmt, culture) {\n if (fmt) {\n if (objectToString.call(value) === \"[object Date]\") {\n return formatDate(value, fmt, culture);\n } else if (typeof value === NUMBER) {\n return formatNumber(value, fmt, culture);\n }\n }\n\n return value !== undefined$1 ? value : \"\";\n };\n\n kendo.format = function(fmt) {\n var values = arguments;\n\n return fmt.replace(formatRegExp, function(match, index, placeholderFormat) {\n var value = values[parseInt(index, 10) + 1];\n\n return toString(value, placeholderFormat ? placeholderFormat.substring(1) : \"\");\n });\n };\n\n kendo._extractFormat = function(format) {\n if (format.slice(0,3) === \"{0:\") {\n format = format.slice(3, format.length - 1);\n }\n\n return format;\n };\n\n kendo._activeElement = function() {\n try {\n return document.activeElement;\n } catch (e) {\n return document.documentElement.activeElement;\n }\n };\n\n kendo._round = round;\n kendo._outerWidth = function(element, includeMargin, calculateFromHidden) {\n element = $(element);\n if (calculateFromHidden) {\n return getHiddenDimensions(element, includeMargin).width;\n }\n\n return $(element).outerWidth(includeMargin || false) || 0;\n };\n kendo._outerHeight = function(element, includeMargin, calculateFromHidden) {\n element = $(element);\n if (calculateFromHidden) {\n return getHiddenDimensions(element, includeMargin).height;\n }\n\n return $(element).outerHeight(includeMargin || false) || 0;\n };\n kendo.toString = toString;\n })();\n\n\n (function() {\n var nonBreakingSpaceRegExp = /\\u00A0/g,\n spaceRegExp = /\\s/g,\n exponentRegExp = /[eE][\\-+]?[0-9]+/,\n shortTimeZoneRegExp = /[+|\\-]\\d{1,2}/,\n longTimeZoneRegExp = /[+|\\-]\\d{1,2}:?\\d{2}/,\n dateRegExp = /^\\/Date\\((.*?)\\)\\/$/,\n offsetRegExp = /[+-]\\d*/,\n FORMATS_SEQUENCE = [ [], [ \"G\", \"g\", \"F\" ], [ \"D\", \"d\", \"y\", \"m\", \"T\", \"t\" ] ],\n STANDARD_FORMATS = [\n [\n \"yyyy-MM-ddTHH:mm:ss.fffffffzzz\",\n \"yyyy-MM-ddTHH:mm:ss.fffffff\",\n \"yyyy-MM-ddTHH:mm:ss.fffzzz\",\n \"yyyy-MM-ddTHH:mm:ss.fff\",\n \"ddd MMM dd yyyy HH:mm:ss\",\n \"yyyy-MM-ddTHH:mm:sszzz\",\n \"yyyy-MM-ddTHH:mmzzz\",\n \"yyyy-MM-ddTHH:mmzz\",\n \"yyyy-MM-ddTHH:mm:ss\",\n \"yyyy-MM-dd HH:mm:ss\",\n \"yyyy/MM/dd HH:mm:ss\"\n ], [\n \"yyyy-MM-ddTHH:mm\",\n \"yyyy-MM-dd HH:mm\",\n \"yyyy/MM/dd HH:mm\"\n ], [\n \"yyyy/MM/dd\",\n \"yyyy-MM-dd\",\n \"HH:mm:ss\",\n \"HH:mm\"\n ]\n ],\n numberRegExp = {\n 2: /^\\d{1,2}/,\n 3: /^\\d{1,3}/,\n 4: /^\\d{4}/,\n exact3: /^\\d{3}/\n },\n objectToString = {}.toString;\n\n function outOfRange(value, start, end) {\n return !(value >= start && value <= end);\n }\n\n function designatorPredicate(designator) {\n return designator.charAt(0);\n }\n\n function mapDesignators(designators) {\n return $.map(designators, designatorPredicate);\n }\n\n //if date's day is different than the typed one - adjust\n function adjustDST(date, hours) {\n if (!hours && date.getHours() === 23) {\n date.setHours(date.getHours() + 2);\n }\n }\n\n function lowerArray(data) {\n var idx = 0,\n length = data.length,\n array = [];\n\n for (; idx < length; idx++) {\n array[idx] = (data[idx] + \"\").toLowerCase();\n }\n\n return array;\n }\n\n function lowerLocalInfo(localInfo) {\n var newLocalInfo = {}, property;\n\n for (property in localInfo) {\n newLocalInfo[property] = lowerArray(localInfo[property]);\n }\n\n return newLocalInfo;\n }\n\n function unpadZero(value) {\n return value.replace(/^0*/, '');\n }\n\n function parseExact(value, format, culture, strict, shouldUnpadZeros) {\n if (!value) {\n return null;\n }\n\n var lookAhead = function(match) {\n var i = 0;\n while (format[idx] === match) {\n i++;\n idx++;\n }\n if (i > 0) {\n idx -= 1;\n }\n return i;\n },\n longestDesignatorLength = (designators) => Array.from(designators).sort((a, b) => b.length - a.length)[0].length,\n getNumber = function(size) {\n var rg, match, part = \"\";\n if (size === 2) {\n for (let i = 0; i <= size; i++) {\n part += value[valueIdx + i] || \"\";\n }\n }\n\n // If the value comes in the form of 021, 022, 023 we must trim the leading zero otherwise the result will be 02 in all three cases instead of 21/22/23.\n if (shouldUnpadZeros && part.match(numberRegExp.exact3) && Number.isInteger(Number(part)) && Number(part) > 0) {\n part = unpadZero(part);\n } else {\n part = value.substr(valueIdx, size);\n }\n\n rg = numberRegExp[size] || new RegExp('^\\\\d{1,' + size + '}');\n match = part.match(rg);\n\n if (match) {\n match = match[0];\n valueIdx += match.length;\n return parseInt(match, 10);\n }\n return null;\n },\n getIndexByName = function(names, lower, subLength) {\n var i = 0,\n length = names.length,\n name, nameLength,\n matchLength = 0,\n matchIdx = 0,\n subValue;\n\n for (; i < length; i++) {\n name = names[i];\n nameLength = name.length;\n subValue = value.substr(valueIdx, subLength || nameLength); // The `subLength` is part of the appendDesignatorsToCultures logic.\n\n if (lower) {\n subValue = subValue.toLowerCase();\n }\n\n if (subValue == name && nameLength > matchLength) {\n matchLength = nameLength;\n matchIdx = i;\n }\n }\n\n if (matchLength) {\n valueIdx += matchLength;\n return matchIdx + 1;\n }\n\n return null;\n },\n checkLiteral = function() {\n var result = false;\n if (value.charAt(valueIdx) === format[idx]) {\n valueIdx++;\n result = true;\n }\n return result;\n },\n calendar = culture.calendars.standard,\n year = null,\n month = null,\n day = null,\n hours = null,\n minutes = null,\n seconds = null,\n milliseconds = null,\n idx = 0,\n valueIdx = 0,\n literal = false,\n date = new Date(),\n twoDigitYearMax = calendar.twoDigitYearMax || 2029,\n defaultYear = date.getFullYear(),\n ch, count, length, pattern,\n pmHour, UTC, matches,\n amDesignators, pmDesignators,\n hoursOffset, minutesOffset,\n hasTime, match;\n\n if (!format) {\n format = \"d\"; //shord date format\n }\n\n //if format is part of the patterns get real format\n pattern = calendar.patterns[format];\n if (pattern) {\n format = pattern;\n }\n\n format = format.split(\"\");\n length = format.length;\n\n for (; idx < length; idx++) {\n ch = format[idx];\n\n if (literal) {\n if (ch === \"'\") {\n literal = false;\n } else {\n checkLiteral();\n }\n } else {\n if (ch === \"d\") {\n count = lookAhead(\"d\");\n if (!calendar._lowerDays) {\n calendar._lowerDays = lowerLocalInfo(calendar.days);\n }\n\n if (day !== null && count > 2) {\n continue;\n }\n\n day = count < 3 ? getNumber(2) : getIndexByName(calendar._lowerDays[count == 3 ? \"namesAbbr\" : \"names\"], true);\n\n if (day === null || outOfRange(day, 1, 31)) {\n return null;\n }\n } else if (ch === \"M\") {\n count = lookAhead(\"M\");\n if (!calendar._lowerMonths) {\n calendar._lowerMonths = lowerLocalInfo(calendar.months);\n }\n month = count < 3 ? getNumber(2) : getIndexByName(calendar._lowerMonths[count == 3 ? 'namesAbbr' : 'names'], true);\n\n if (month === null || outOfRange(month, 1, 12)) {\n return null;\n }\n month -= 1; //because month is zero based\n } else if (ch === \"y\") {\n count = lookAhead(\"y\");\n year = getNumber(count);\n\n if (year === null) {\n return null;\n }\n\n if (count == 2) {\n if (typeof twoDigitYearMax === \"string\") {\n twoDigitYearMax = defaultYear + parseInt(twoDigitYearMax, 10);\n }\n\n year = (defaultYear - defaultYear % 100) + year;\n if (year > twoDigitYearMax) {\n year -= 100;\n }\n }\n } else if (ch === \"h\" ) {\n lookAhead(\"h\");\n hours = getNumber(2);\n if (hours == 12) {\n hours = 0;\n }\n if (hours === null || outOfRange(hours, 0, 11)) {\n return null;\n }\n } else if (ch === \"H\") {\n lookAhead(\"H\");\n hours = getNumber(2);\n if (hours === null || outOfRange(hours, 0, 23)) {\n return null;\n }\n } else if (ch === \"m\") {\n lookAhead(\"m\");\n minutes = getNumber(2);\n if (minutes === null || outOfRange(minutes, 0, 59)) {\n return null;\n }\n } else if (ch === \"s\") {\n lookAhead(\"s\");\n seconds = getNumber(2);\n if (seconds === null || outOfRange(seconds, 0, 59)) {\n return null;\n }\n } else if (ch === \"f\") {\n count = lookAhead(\"f\");\n\n match = value.substr(valueIdx, count).match(numberRegExp[3]);\n milliseconds = getNumber(count); //move value index position\n\n if (milliseconds !== null) {\n milliseconds = parseFloat(\"0.\" + match[0], 10);\n milliseconds = kendo._round(milliseconds, 3);\n milliseconds *= 1000;\n }\n\n if (milliseconds === null || outOfRange(milliseconds, 0, 999)) {\n return null;\n }\n\n } else if (ch === \"t\") {\n count = lookAhead(\"t\");\n amDesignators = calendar.AM;\n pmDesignators = calendar.PM;\n\n if (count === 1) {\n amDesignators = mapDesignators(amDesignators);\n pmDesignators = mapDesignators(pmDesignators);\n }\n\n pmHour = getIndexByName(pmDesignators, false, longestDesignatorLength(pmDesignators));\n if (!pmHour && !getIndexByName(amDesignators, false, longestDesignatorLength(amDesignators))) {\n return null;\n }\n }\n else if (ch === \"z\") {\n UTC = true;\n count = lookAhead(\"z\");\n\n if (value.substr(valueIdx, 1) === \"Z\") {\n checkLiteral();\n continue;\n }\n\n matches = value.substr(valueIdx, 6)\n .match(count > 2 ? longTimeZoneRegExp : shortTimeZoneRegExp);\n\n if (!matches) {\n return null;\n }\n\n matches = matches[0].split(\":\");\n\n hoursOffset = matches[0];\n minutesOffset = matches[1];\n\n if (!minutesOffset && hoursOffset.length > 3) { //(+|-)[hh][mm] format is used\n valueIdx = hoursOffset.length - 2;\n minutesOffset = hoursOffset.substring(valueIdx);\n hoursOffset = hoursOffset.substring(0, valueIdx);\n }\n\n hoursOffset = parseInt(hoursOffset, 10);\n if (outOfRange(hoursOffset, -12, 13)) {\n return null;\n }\n\n if (count > 2) {\n minutesOffset = matches[0][0] + minutesOffset;\n minutesOffset = parseInt(minutesOffset, 10);\n if (isNaN(minutesOffset) || outOfRange(minutesOffset, -59, 59)) {\n return null;\n }\n }\n } else if (ch === \"'\") {\n literal = true;\n checkLiteral();\n } else if (!checkLiteral()) {\n return null;\n }\n }\n }\n\n // if more characters follow, assume wrong format\n // https://github.com/telerik/kendo-ui-core/issues/3476\n if (strict && !/^\\s*$/.test(value.substr(valueIdx))) {\n return null;\n }\n\n hasTime = hours !== null || minutes !== null || seconds || null;\n\n if (year === null && month === null && day === null && hasTime) {\n year = defaultYear;\n month = date.getMonth();\n day = date.getDate();\n } else {\n if (year === null) {\n year = defaultYear;\n }\n\n if (day === null) {\n day = 1;\n }\n }\n\n if (pmHour && hours < 12) {\n hours += 12;\n }\n\n if (UTC) {\n if (hoursOffset) {\n hours += -hoursOffset;\n }\n\n if (minutesOffset) {\n minutes += -minutesOffset;\n }\n\n value = new Date(Date.UTC(year, month, day, hours, minutes, seconds, milliseconds));\n } else {\n value = new Date(year, month, day, hours, minutes, seconds, milliseconds);\n adjustDST(value, hours);\n }\n\n if (year < 100) {\n value.setFullYear(year);\n }\n\n if (value.getDate() !== day && UTC === undefined$1) {\n return null;\n }\n\n return value;\n }\n\n function parseMicrosoftFormatOffset(offset) {\n var sign = offset.substr(0, 1) === \"-\" ? -1 : 1;\n\n offset = offset.substring(1);\n offset = (parseInt(offset.substr(0, 2), 10) * 60) + parseInt(offset.substring(2), 10);\n\n return sign * offset;\n }\n\n function getDefaultFormats(culture) {\n var length = math.max(FORMATS_SEQUENCE.length, STANDARD_FORMATS.length);\n var calendar = culture.calendar || culture.calendars.standard;\n var patterns = calendar.patterns;\n var cultureFormats, formatIdx, idx;\n var formats = [];\n\n for (idx = 0; idx < length; idx++) {\n cultureFormats = FORMATS_SEQUENCE[idx];\n for (formatIdx = 0; formatIdx < cultureFormats.length; formatIdx++) {\n formats.push(patterns[cultureFormats[formatIdx]]);\n }\n formats = formats.concat(STANDARD_FORMATS[idx]);\n }\n\n return formats;\n }\n\n function internalParseDate(value, formats, culture, strict, shouldUnpadZeros) {\n if (objectToString.call(value) === \"[object Date]\") {\n return value;\n }\n\n var idx = 0;\n var date = null;\n var length;\n var tzoffset;\n\n if (value && value.indexOf(\"/D\") === 0) {\n date = dateRegExp.exec(value);\n if (date) {\n date = date[1];\n tzoffset = offsetRegExp.exec(date.substring(1));\n\n date = new Date(parseInt(date, 10));\n\n if (tzoffset) {\n tzoffset = parseMicrosoftFormatOffset(tzoffset[0]);\n date = kendo.timezone.apply(date, 0);\n date = kendo.timezone.convert(date, 0, -1 * tzoffset);\n }\n\n return date;\n }\n }\n\n culture = kendo.getCulture(culture);\n\n if (!formats) {\n formats = getDefaultFormats(culture);\n }\n\n formats = isArray(formats) ? formats : [formats];\n length = formats.length;\n\n for (; idx < length; idx++) {\n date = parseExact(value, formats[idx], culture, strict, shouldUnpadZeros);\n if (date) {\n return date;\n }\n }\n\n return date;\n }\n\n kendo.parseDate = function(value, formats, culture, shouldUnpadZeros) {\n return internalParseDate(value, formats, culture, false, shouldUnpadZeros);\n };\n\n kendo.parseExactDate = function(value, formats, culture) {\n return internalParseDate(value, formats, culture, true);\n };\n\n kendo.parseInt = function(value, culture) {\n var result = kendo.parseFloat(value, culture);\n if (result) {\n result = result | 0;\n }\n return result;\n };\n\n kendo.parseFloat = function(value, culture, format) {\n if (!value && value !== 0) {\n return null;\n }\n\n if (typeof value === NUMBER) {\n return value;\n }\n\n value = value.toString();\n culture = kendo.getCulture(culture);\n\n var number = culture.numberFormat,\n percent = number.percent,\n currency = number.currency,\n symbol = currency.symbol,\n percentSymbol = percent.symbol,\n negative = value.indexOf(\"-\"),\n parts, isPercent;\n\n //handle exponential number\n if (exponentRegExp.test(value)) {\n value = parseFloat(value.replace(number[\".\"], \".\"));\n if (isNaN(value)) {\n value = null;\n }\n return value;\n }\n\n if (negative > 0) {\n return null;\n } else {\n negative = negative > -1;\n }\n\n if (value.indexOf(symbol) > -1 || (format && format.toLowerCase().indexOf(\"c\") > -1)) {\n number = currency;\n parts = number.pattern[0].replace(\"$\", symbol).split(\"n\");\n if (value.indexOf(parts[0]) > -1 && value.indexOf(parts[1]) > -1) {\n value = value.replace(parts[0], \"\").replace(parts[1], \"\");\n negative = true;\n }\n } else if (value.indexOf(percentSymbol) > -1) {\n isPercent = true;\n number = percent;\n symbol = percentSymbol;\n }\n\n value = value.replace(\"-\", \"\")\n .replace(symbol, \"\")\n .replace(nonBreakingSpaceRegExp, \" \")\n .split(number[\",\"].replace(nonBreakingSpaceRegExp, \" \")).join(\"\")\n .replace(spaceRegExp, \"\")\n .replace(number[\".\"], \".\");\n\n value = parseFloat(value);\n\n if (isNaN(value)) {\n value = null;\n } else if (negative) {\n value *= -1;\n }\n\n if (value && isPercent) {\n value /= 100;\n }\n\n return value;\n };\n })();\n\n function getShadows(element) {\n var shadow = element.css(kendo.support.transitions.css + \"box-shadow\") || element.css(\"box-shadow\"),\n radius = shadow ? shadow.match(boxShadowRegExp) || [ 0, 0, 0, 0, 0 ] : [ 0, 0, 0, 0, 0 ],\n blur = math.max((+radius[3]), +(radius[4] || 0));\n\n return {\n left: (-radius[1]) + blur,\n right: (+radius[1]) + blur,\n bottom: (+radius[2]) + blur\n };\n }\n\n function getHiddenDimensions(element, includeMargin) {\n var clone, width, height;\n\n clone = element.clone();\n clone.css(\"display\", \"\");\n clone.css(\"visibility\", \"hidden\");\n clone.appendTo($(\"body\"));\n\n width = clone.outerWidth(includeMargin || false);\n height = clone.outerHeight(includeMargin || false);\n\n clone.remove();\n\n return {\n width: width || 0,\n height: height || 0\n };\n }\n\n function wrap(element, autosize, resize, shouldCorrectWidth = true, autowidth) {\n var percentage,\n outerWidth = kendo._outerWidth,\n outerHeight = kendo._outerHeight,\n parent = element.parent(),\n windowOuterWidth = outerWidth(window);\n\n parent.parent().removeClass(\"k-animation-container-sm\");\n\n if (!parent.hasClass(\"k-child-animation-container\")) {\n var width = element[0].style.width,\n height = element[0].style.height,\n percentWidth = percentRegExp.test(width),\n percentHeight = percentRegExp.test(height),\n forceDimensions = element.hasClass(\"k-tooltip\") || element.is(\".k-menu-horizontal.k-context-menu\"),\n calculateFromHidden = element.hasClass(\"k-tooltip\");\n\n percentage = percentWidth || percentHeight;\n\n if (!percentWidth && (!autosize || (autosize && width) || forceDimensions)) { width = autosize ? outerWidth(element, false, calculateFromHidden) + 1 : outerWidth(element, false, calculateFromHidden); }\n if (!percentHeight && (!autosize || (autosize && height)) || forceDimensions) { height = outerHeight(element, false, calculateFromHidden); }\n\n element.wrap(\n $(\"
\")\n .addClass(\"k-child-animation-container\")\n .css({\n width: autowidth ? \"auto\" : width,\n height: height\n }));\n parent = element.parent();\n\n parent.wrap(\n $(\"
\")\n .addClass(\"k-animation-container\")\n .attr(\"role\", \"region\")\n );\n\n if (percentage) {\n element.css({\n width: \"100%\",\n height: \"100%\"\n });\n }\n } else {\n wrapResize(element, autosize, shouldCorrectWidth);\n }\n\n parent = parent.parent();\n\n if (windowOuterWidth < outerWidth(parent)) {\n parent.addClass(\"k-animation-container-sm\");\n resize = true;\n }\n\n if (resize) {\n wrapResize(element, autosize, shouldCorrectWidth);\n }\n\n return parent;\n }\n\n function wrapResize(element, autosize, shouldCorrectWidth) {\n var percentage,\n outerWidth = kendo._outerWidth,\n outerHeight = kendo._outerHeight,\n parent = element.parent(),\n wrapper = element.closest(\".k-animation-container\"),\n calculateFromHidden = element.hasClass(\"k-tooltip\"),\n visible = element.is(\":visible\"),\n wrapperStyle = parent[0].style,\n elementHeight = element[0].style.height;\n\n if (wrapper.is(\":hidden\")) {\n wrapper.css({\n display: \"\",\n position: \"\"\n });\n }\n\n percentage = percentRegExp.test(wrapperStyle.width) || percentRegExp.test(wrapperStyle.height);\n\n if (!percentage) {\n if (!visible) {\n element.add(parent).show();\n }\n if (shouldCorrectWidth) {\n parent.css(\"width\", \"\"); // Needed to get correct width dimensions\n }\n parent.css({\n width: autosize ? outerWidth(element, false, calculateFromHidden) + 1 : outerWidth(element, false, calculateFromHidden),\n });\n\n if (elementHeight === \"auto\") {\n element.css({ height: outerHeight(parent) });\n } else {\n parent.css({\n height: outerHeight(element)\n });\n }\n\n if (!visible) {\n element.hide();\n }\n }\n }\n\n function deepExtend(destination) {\n var i = 1,\n length = arguments.length;\n\n for (i = 1; i < length; i++) {\n deepExtendOne(destination, arguments[i]);\n }\n\n return destination;\n }\n\n function deepExtendOne(destination, source) {\n var ObservableArray = kendo.data.ObservableArray,\n LazyObservableArray = kendo.data.LazyObservableArray,\n DataSource = kendo.data.DataSource,\n HierarchicalDataSource = kendo.data.HierarchicalDataSource,\n property,\n propValue,\n propType,\n propInit,\n destProp;\n\n for (property in source) {\n propValue = source[property];\n propType = typeof propValue;\n\n if (propType === OBJECT && propValue !== null) {\n propInit = propValue.constructor;\n } else {\n propInit = null;\n }\n\n if (propInit &&\n propInit !== Array && propInit !== ObservableArray && propInit !== LazyObservableArray &&\n propInit !== DataSource && propInit !== HierarchicalDataSource && propInit !== RegExp &&\n (!kendo.isFunction(window.ArrayBuffer) || propInit !== ArrayBuffer) && !(propValue instanceof HTMLElement)) {\n\n if (propValue instanceof Date) {\n destination[property] = new Date(propValue.getTime());\n } else if (isFunction(propValue.clone)) {\n destination[property] = propValue.clone();\n } else {\n destProp = destination[property];\n if (typeof (destProp) === OBJECT) {\n destination[property] = destProp || {};\n } else {\n destination[property] = {};\n }\n deepExtendOne(destination[property], propValue);\n }\n } else if (propType !== UNDEFINED) {\n destination[property] = propValue;\n }\n }\n\n return destination;\n }\n\n function testRx(agent, rxs, dflt) {\n for (var rx in rxs) {\n if (rxs.hasOwnProperty(rx) && rxs[rx].test(agent)) {\n return rx;\n }\n }\n return dflt !== undefined$1 ? dflt : agent;\n }\n\n function toHyphens(str) {\n return str.replace(/([a-z][A-Z])/g, function(g) {\n return g.charAt(0) + '-' + g.charAt(1).toLowerCase();\n });\n }\n\n function toCamelCase(str) {\n return str.replace(/\\-(\\w)/g, function(strMatch, g1) {\n return g1.toUpperCase();\n });\n }\n\n function getComputedStyles(element, properties) {\n var styles = {}, computedStyle;\n\n if (document.defaultView && document.defaultView.getComputedStyle) {\n computedStyle = document.defaultView.getComputedStyle(element, \"\");\n\n if (properties) {\n $.each(properties, function(idx, value) {\n styles[value] = computedStyle.getPropertyValue(value);\n });\n }\n } else {\n computedStyle = element.currentStyle;\n\n if (properties) {\n $.each(properties, function(idx, value) {\n styles[value] = computedStyle[toCamelCase(value)];\n });\n }\n }\n\n if (!kendo.size(styles)) {\n styles = computedStyle;\n }\n\n return styles;\n }\n\n function isScrollable(element) {\n if (element.dataset[kendo.ns + \"scrollable\"] === \"false\") {\n return false;\n }\n\n if (element && element.className && typeof(element.className) === \"string\" && element.className.indexOf(\"k-auto-scrollable\") > -1) {\n return true;\n }\n\n var overflow = getComputedStyles(element, [\"overflow\"]).overflow;\n return overflow.indexOf(\"auto\") > -1 || overflow.indexOf(\"scroll\") > -1;\n }\n\n function scrollLeft(element, value) {\n var webkit = support.browser.webkit;\n var mozila = support.browser.mozilla;\n var browserVersion = support.browser.version;\n var el, isRtl;\n\n if (element instanceof $ && value !== undefined$1) {\n element.each(function(i, e) {\n scrollLeft(e, value);\n });\n\n return;\n } else {\n el = element instanceof $ ? element[0] : element;\n }\n\n if (!el) {\n return;\n }\n\n isRtl = support.isRtl(element);\n\n // After updating browser detection,\n // Test in which if should the Safari browsers go\n if (value !== undefined$1) {\n if (isRtl && webkit && (browserVersion < 85 || support.browser.safari)) {\n el.scrollLeft = el.scrollWidth - el.clientWidth - value;\n } else if (isRtl && (mozila || webkit) && value > 0) {\n el.scrollLeft = -value;\n } else {\n el.scrollLeft = value;\n }\n } else {\n if (isRtl && webkit && (browserVersion < 85 || support.browser.safari)) {\n return el.scrollWidth - el.clientWidth - el.scrollLeft;\n } else {\n return Math.abs(el.scrollLeft);\n }\n }\n }\n\n (function() {\n support._scrollbar = undefined$1;\n\n support.scrollbar = function(refresh) {\n if (!isNaN(support._scrollbar) && !refresh) {\n return support._scrollbar;\n } else {\n var div = document.createElement(\"div\"),\n result;\n\n div.style.cssText = \"overflow:scroll;overflow-x:hidden;zoom:1;clear:both;display:block\";\n div.innerHTML = \" \";\n document.body.appendChild(div);\n\n support._scrollbar = result = div.offsetWidth - div.scrollWidth;\n\n document.body.removeChild(div);\n\n return result;\n }\n };\n\n support.isRtl = function(element) {\n return $(element).closest(\".k-rtl\").length > 0;\n };\n\n var table = document.createElement(\"table\");\n\n // Internet Explorer does not support setting the innerHTML of TBODY and TABLE elements\n try {\n table.innerHTML = \"\";\n\n support.tbodyInnerHtml = true;\n } catch (e) {\n support.tbodyInnerHtml = false;\n }\n\n support.touch = \"ontouchstart\" in window;\n\n var docStyle = document.documentElement.style;\n var transitions = support.transitions = false,\n transforms = support.transforms = false,\n elementProto = \"HTMLElement\" in window ? HTMLElement.prototype : [];\n\n support.hasHW3D = (\"WebKitCSSMatrix\" in window && \"m11\" in new window.WebKitCSSMatrix()) || \"MozPerspective\" in docStyle || \"msPerspective\" in docStyle;\n support.cssFlexbox = (\"flexWrap\" in docStyle) || (\"WebkitFlexWrap\" in docStyle) || (\"msFlexWrap\" in docStyle);\n\n each([ \"Moz\", \"webkit\", \"O\", \"ms\" ], function() {\n var prefix = this.toString(),\n hasTransitions = typeof table.style[prefix + \"Transition\"] === STRING;\n\n if (hasTransitions || typeof table.style[prefix + \"Transform\"] === STRING) {\n var lowPrefix = prefix.toLowerCase();\n\n transforms = {\n css: (lowPrefix != \"ms\") ? \"-\" + lowPrefix + \"-\" : \"\",\n prefix: prefix,\n event: (lowPrefix === \"o\" || lowPrefix === \"webkit\") ? lowPrefix : \"\"\n };\n\n if (hasTransitions) {\n transitions = transforms;\n transitions.event = transitions.event ? transitions.event + \"TransitionEnd\" : \"transitionend\";\n }\n\n return false;\n }\n });\n\n table = null;\n\n support.transforms = transforms;\n support.transitions = transitions;\n\n support.devicePixelRatio = window.devicePixelRatio === undefined$1 ? 1 : window.devicePixelRatio;\n\n try {\n support.screenWidth = window.outerWidth || window.screen ? window.screen.availWidth : window.innerWidth;\n support.screenHeight = window.outerHeight || window.screen ? window.screen.availHeight : window.innerHeight;\n } catch (e) {\n //window.outerWidth throws error when in IE showModalDialog.\n support.screenWidth = window.screen.availWidth;\n support.screenHeight = window.screen.availHeight;\n }\n\n support.detectOS = function(ua) {\n var os = false, minorVersion, match = [],\n notAndroidPhone = !/mobile safari/i.test(ua),\n agentRxs = {\n wp: /(Windows Phone(?: OS)?)\\s(\\d+)\\.(\\d+(\\.\\d+)?)/,\n fire: /(Silk)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n android: /(Android|Android.*(?:Opera|Firefox).*?\\/)\\s*(\\d+)\\.?(\\d+(\\.\\d+)?)?/,\n iphone: /(iPhone|iPod).*OS\\s+(\\d+)[\\._]([\\d\\._]+)/,\n ipad: /(iPad).*OS\\s+(\\d+)[\\._]([\\d_]+)/,\n meego: /(MeeGo).+NokiaBrowser\\/(\\d+)\\.([\\d\\._]+)/,\n webos: /(webOS)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n blackberry: /(BlackBerry|BB10).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n playbook: /(PlayBook).*?Tablet\\s*OS\\s*(\\d+)\\.(\\d+(\\.\\d+)?)/,\n windows: /(MSIE)\\s+(\\d+)\\.(\\d+(\\.\\d+)?)/,\n tizen: /(tizen).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/i,\n sailfish: /(sailfish).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*firefox/i,\n ffos: /(Mobile).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*Firefox/\n },\n osRxs = {\n ios: /^i(phone|pad|pod)$/i,\n android: /^android|fire$/i,\n blackberry: /^blackberry|playbook/i,\n windows: /windows/,\n wp: /wp/,\n flat: /sailfish|ffos|tizen/i,\n meego: /meego/\n },\n formFactorRxs = {\n tablet: /playbook|ipad|fire/i\n },\n browserRxs = {\n omini: /Opera\\sMini/i,\n omobile: /Opera\\sMobi/i,\n firefox: /Firefox|Fennec/i,\n mobilesafari: /version\\/.*safari/i,\n ie: /MSIE|Windows\\sPhone/i,\n chrome: /chrome|crios/i,\n webkit: /webkit/i\n };\n\n for (var agent in agentRxs) {\n if (agentRxs.hasOwnProperty(agent)) {\n match = ua.match(agentRxs[agent]);\n if (match) {\n if (agent == \"windows\" && \"plugins\" in navigator) { return false; } // Break if not Metro/Mobile Windows\n\n os = {};\n os.device = agent;\n os.tablet = testRx(agent, formFactorRxs, false);\n os.browser = testRx(ua, browserRxs, \"default\");\n os.name = testRx(agent, osRxs);\n os[os.name] = true;\n os.majorVersion = match[2];\n os.minorVersion = (match[3] || \"0\").replace(\"_\", \".\");\n minorVersion = os.minorVersion.replace(\".\", \"\").substr(0, 2);\n os.flatVersion = os.majorVersion + minorVersion + (new Array(3 - (minorVersion.length < 3 ? minorVersion.length : 2)).join(\"0\"));\n os.cordova = typeof window.PhoneGap !== UNDEFINED || typeof window.cordova !== UNDEFINED; // Use file protocol to detect appModes.\n os.appMode = window.navigator.standalone || (/file|local|wmapp/).test(window.location.protocol) || os.cordova; // Use file protocol to detect appModes.\n\n if (os.android && (support.devicePixelRatio < 1.5 && os.flatVersion < 400 || notAndroidPhone) && (support.screenWidth > 800 || support.screenHeight > 800)) {\n os.tablet = agent;\n }\n\n break;\n }\n }\n }\n return os;\n };\n\n var mobileOS = support.mobileOS = support.detectOS(navigator.userAgent);\n\n support.wpDevicePixelRatio = mobileOS.wp ? screen.width / 320 : 0;\n\n support.hasNativeScrolling = false;\n\n if (mobileOS.ios || (mobileOS.android && mobileOS.majorVersion > 2) || mobileOS.wp) {\n support.hasNativeScrolling = mobileOS;\n }\n\n support.delayedClick = function() {\n\n // only the mobile devices with touch events do this.\n if (support.touch) {\n // All iOS devices so far (by the time I am writing this, iOS 9.0.2 is the latest),\n // delay their click events.\n if (mobileOS.ios) {\n return true;\n }\n\n if (mobileOS.android) {\n\n if (!support.browser.chrome) { // older webkits and webviews delay the click\n return true;\n }\n\n // from here on, we deal with Chrome on Android.\n if (support.browser.version < 32) {\n return false;\n }\n\n // Chrome 32+ does conditional fast clicks if the view port is not user scalable.\n return !($(\"meta[name=viewport]\").attr(\"content\") || \"\").match(/user-scalable=no/i);\n }\n }\n\n return false;\n };\n\n support.mouseAndTouchPresent = support.touch && !(support.mobileOS.ios || support.mobileOS.android);\n\n support.detectBrowser = function(ua) {\n var browser = false,\n match = [],\n chromiumEdgeMatch = [],\n browserRxs = {\n edge: /(edge)[ \\/]([\\w.]+)/i,\n webkit: /(chrome|crios)[ \\/]([\\w.]+)/i,\n safari: /(webkit)[ \\/]([\\w.]+)/i,\n opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n mozilla: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n };\n\n for (var agent in browserRxs) {\n if (browserRxs.hasOwnProperty(agent)) {\n match = ua.match(browserRxs[agent]);\n if (match) {\n browser = {};\n browser[agent] = true;\n browser[match[1].toLowerCase().split(\" \")[0].split(\"/\")[0]] = true;\n browser.version = parseInt(document.documentMode || match[2], 10);\n\n if (browser.chrome) {\n chromiumEdgeMatch = ua.match(/(edg)[ \\/]([\\w.]+)/i);\n\n if (chromiumEdgeMatch) {\n browser.chromiumEdge = true;\n }\n }\n\n break;\n }\n }\n }\n\n return browser;\n };\n\n support.browser = support.detectBrowser(navigator.userAgent);\n\n if (!mobileOS && support.touch && support.browser.safari) {\n mobileOS = support.mobileOS = {\n ios: true,\n tablet: \"tablet\",\n device: \"ipad\",\n majorVersion: 13\n };\n }\n\n support.detectClipboardAccess = function() {\n var commands = {\n copy: document.queryCommandSupported ? document.queryCommandSupported(\"copy\") : false,\n cut: document.queryCommandSupported ? document.queryCommandSupported(\"cut\") : false,\n paste: document.queryCommandSupported ? document.queryCommandSupported(\"paste\") : false\n };\n\n if (support.browser.chrome) {\n //not using queryCommandSupported due to chromium issues 476508 and 542948\n commands.paste = false;\n if (support.browser.version >= 43) {\n commands.copy = true;\n commands.cut = true;\n }\n }\n\n return commands;\n };\n\n support.clipboard = support.detectClipboardAccess();\n\n support.zoomLevel = function() {\n try {\n var browser = support.browser;\n var ie11WidthCorrection = 0;\n var docEl = document.documentElement;\n\n if (browser.msie && browser.version == 11 && docEl.scrollHeight > docEl.clientHeight && !support.touch) {\n ie11WidthCorrection = support.scrollbar();\n }\n\n return support.touch ? (docEl.clientWidth / window.innerWidth) :\n browser.msie && browser.version >= 10 ? (((top || window).document.documentElement.offsetWidth + ie11WidthCorrection) / (top || window).innerWidth) : 1;\n } catch (e) {\n return 1;\n }\n };\n\n (function(browser) {\n // add browser-specific CSS class\n var cssClass = \"\",\n docElement = $(document.documentElement),\n majorVersion = parseInt(browser.version, 10);\n\n if (browser.msie) {\n cssClass = \"ie\";\n } else if (browser.mozilla) {\n cssClass = \"ff\";\n } else if (browser.safari) {\n cssClass = \"safari\";\n } else if (browser.webkit) {\n cssClass = \"webkit\";\n } else if (browser.opera) {\n cssClass = \"opera\";\n } else if (browser.edge) {\n cssClass = \"edge\";\n }\n\n if (cssClass) {\n cssClass = \"k-\" + cssClass + \" k-\" + cssClass + majorVersion;\n }\n if (support.mobileOS) {\n cssClass += \" k-mobile\";\n }\n\n if (!support.cssFlexbox) {\n cssClass += \" k-no-flexbox\";\n }\n\n docElement.addClass(cssClass);\n })(support.browser);\n\n support.eventCapture = document.documentElement.addEventListener;\n\n var input = document.createElement(\"input\");\n\n support.placeholder = \"placeholder\" in input;\n support.propertyChangeEvent = \"onpropertychange\" in input;\n\n support.input = (function() {\n var types = [\"number\", \"date\", \"time\", \"month\", \"week\", \"datetime\", \"datetime-local\"];\n var length = types.length;\n var value = \"test\";\n var result = {};\n var idx = 0;\n var type;\n\n for (;idx < length; idx++) {\n type = types[idx];\n input.setAttribute(\"type\", type);\n input.value = value;\n\n result[type.replace(\"-\", \"\")] = input.type !== \"text\" && input.value !== value;\n }\n\n return result;\n })();\n\n input.style.cssText = \"float:left;\";\n\n support.cssFloat = !!input.style.cssFloat;\n\n input = null;\n\n support.stableSort = (function() {\n // Chrome sort is not stable for more than *10* items\n // IE9+ sort is not stable for than *512* items\n var threshold = 513;\n\n var sorted = [{\n index: 0,\n field: \"b\"\n }];\n\n for (var i = 1; i < threshold; i++) {\n sorted.push({\n index: i,\n field: \"a\"\n });\n }\n\n sorted.sort(function(a, b) {\n return a.field > b.field ? 1 : (a.field < b.field ? -1 : 0);\n });\n\n return sorted[0].index === 1;\n })();\n\n support.matchesSelector = elementProto.webkitMatchesSelector || elementProto.mozMatchesSelector ||\n elementProto.msMatchesSelector || elementProto.oMatchesSelector ||\n elementProto.matchesSelector || elementProto.matches ||\n function( selector ) {\n var nodeList = document.querySelectorAll ? ( this.parentNode || document ).querySelectorAll( selector ) || [] : $(selector),\n i = nodeList.length;\n\n while (i--) {\n if (nodeList[i] == this) {\n return true;\n }\n }\n\n return false;\n };\n\n support.matchMedia = \"matchMedia\" in window;\n\n support.pushState = window.history && window.history.pushState;\n\n support.hashChange = \"onhashchange\" in window;\n\n support.customElements = \"registerElement\" in window.document;\n\n var chrome = support.browser.chrome,\n mobileChrome = support.browser.crios,\n mozilla = support.browser.mozilla,\n safari = support.browser.safari;\n support.msPointers = !chrome && window.MSPointerEvent;\n support.pointers = !chrome && !mobileChrome && !mozilla && !safari && window.PointerEvent;\n support.kineticScrollNeeded = mobileOS && (mobileOS.device !== \"ipad\" || mobileOS.majorVersion < 13) && (support.touch || support.msPointers || support.pointers);\n })();\n\n\n function size(obj) {\n var result = 0, key;\n for (key in obj) {\n if (obj.hasOwnProperty(key) && key != \"toJSON\") { // Ignore fake IE7 toJSON.\n result++;\n }\n }\n\n return result;\n }\n\n function getOffset(element, type, positioned) {\n if (!type) {\n type = \"offset\";\n }\n\n var offset = element[type]();\n // clone ClientRect object to JS object (jQuery3)\n var result = {\n top: offset.top,\n right: offset.right,\n bottom: offset.bottom,\n left: offset.left\n };\n\n // IE10 touch zoom is living in a separate viewport\n if (support.browser.msie && (support.pointers || support.msPointers) && !positioned) {\n var sign = support.isRtl(element) ? 1 : -1;\n\n result.top -= (window.pageYOffset - (document.documentElement.scrollTop));\n result.left -= (window.pageXOffset + (sign * document.documentElement.scrollLeft));\n }\n\n return result;\n }\n\n var directions = {\n left: { reverse: \"right\" },\n right: { reverse: \"left\" },\n down: { reverse: \"up\" },\n up: { reverse: \"down\" },\n top: { reverse: \"bottom\" },\n bottom: { reverse: \"top\" },\n \"in\": { reverse: \"out\" },\n out: { reverse: \"in\" }\n };\n\n function parseEffects(input) {\n var effects = {};\n\n each((typeof input === \"string\" ? input.split(\" \") : input), function(idx) {\n effects[idx] = this;\n });\n\n return effects;\n }\n\n function fx(element) {\n return new kendo.effects.Element(element);\n }\n\n var effects = {};\n\n $.extend(effects, {\n enabled: true,\n Element: function(element) {\n this.element = $(element);\n },\n\n promise: function(element, options) {\n if (!element.is(\":visible\")) {\n element.css({ display: element.data(\"olddisplay\") || \"block\" }).css(\"display\");\n }\n\n if (options.hide) {\n element.data(\"olddisplay\", element.css(\"display\")).hide();\n }\n\n if (options.init) {\n options.init();\n }\n\n if (options.completeCallback) {\n options.completeCallback(element); // call the external complete callback with the element\n }\n\n element.dequeue();\n },\n\n disable: function() {\n this.enabled = false;\n this.promise = this.promiseShim;\n },\n\n enable: function() {\n this.enabled = true;\n this.promise = this.animatedPromise;\n }\n });\n\n effects.promiseShim = effects.promise;\n\n function prepareAnimationOptions(options, duration, reverse, complete) {\n if (typeof options === STRING) {\n // options is the list of effect names separated by space e.g. animate(element, \"fadeIn slideDown\")\n\n // only callback is provided e.g. animate(element, options, function() {});\n if (isFunction(duration)) {\n complete = duration;\n duration = 400;\n reverse = false;\n }\n\n if (isFunction(reverse)) {\n complete = reverse;\n reverse = false;\n }\n\n if (typeof duration === BOOLEAN) {\n reverse = duration;\n duration = 400;\n }\n\n options = {\n effects: options,\n duration: duration,\n reverse: reverse,\n complete: complete\n };\n }\n\n return extend({\n //default options\n effects: {},\n duration: 400, //jQuery default duration\n reverse: false,\n init: noop,\n teardown: noop,\n hide: false\n }, options, { completeCallback: options.complete, complete: noop }); // Move external complete callback, so deferred.resolve can be always executed.\n\n }\n\n function animate(element, options, duration, reverse, complete) {\n var idx = 0,\n length = element.length,\n instance;\n\n for (; idx < length; idx ++) {\n instance = $(element[idx]);\n instance.queue(function() {\n effects.promise(instance, prepareAnimationOptions(options, duration, reverse, complete));\n });\n }\n\n return element;\n }\n\n function toggleClass(element, classes, options, add) {\n if (classes) {\n classes = classes.split(\" \");\n\n each(classes, function(idx, value) {\n element.toggleClass(value, add);\n });\n }\n\n return element;\n }\n\n if (!(\"kendoAnimate\" in $.fn)) {\n extend($.fn, {\n kendoStop: function(clearQueue, gotoEnd) {\n return this.stop(clearQueue, gotoEnd);\n },\n\n kendoAnimate: function(options, duration, reverse, complete) {\n return animate(this, options, duration, reverse, complete);\n },\n\n kendoAddClass: function(classes, options) {\n return kendo.toggleClass(this, classes, options, true);\n },\n\n kendoRemoveClass: function(classes, options) {\n return kendo.toggleClass(this, classes, options, false);\n },\n kendoToggleClass: function(classes, options, toggle) {\n return kendo.toggleClass(this, classes, options, toggle);\n }\n });\n }\n\n var ampRegExp = /&/g,\n ltRegExp = //g;\n function htmlEncode(value) {\n return (\"\" + value).replace(ampRegExp, \"&\").replace(ltRegExp, \"<\").replace(gtRegExp, \">\").replace(quoteRegExp, \""\").replace(aposRegExp, \"'\");\n }\n\n function unescape(value) {\n var template;\n\n try {\n template = window.decodeURIComponent(value);\n } catch (error) {\n // If the string contains Unicode characters\n // the decodeURIComponent() will throw an error.\n // Therefore: convert to UTF-8 character\n template = value.replace(/%u([\\dA-F]{4})|%([\\dA-F]{2})/gi, function(_, m1, m2) {\n return String.fromCharCode(parseInt(\"0x\" + (m1 || m2), 16));\n });\n }\n\n return template;\n }\n\n var eventTarget = function(e) {\n return e.target;\n };\n\n if (support.touch) {\n\n eventTarget = function(e) {\n var touches = \"originalEvent\" in e ? e.originalEvent.changedTouches : \"changedTouches\" in e ? e.changedTouches : null;\n\n return touches ? document.elementFromPoint(touches[0].clientX, touches[0].clientY) : e.target;\n };\n\n each([\"swipe\", \"swipeLeft\", \"swipeRight\", \"swipeUp\", \"swipeDown\", \"doubleTap\", \"tap\"], function(m, value) {\n $.fn[value] = function(callback) {\n return this.on(value, callback);\n };\n });\n }\n\n if (support.touch) {\n if (!support.mobileOS) {\n support.mousedown = \"mousedown touchstart\";\n support.mouseup = \"mouseup touchend\";\n support.mousemove = \"mousemove touchmove\";\n support.mousecancel = \"mouseleave touchcancel\";\n support.click = \"click\";\n support.resize = \"resize\";\n } else {\n support.mousedown = \"touchstart\";\n support.mouseup = \"touchend\";\n support.mousemove = \"touchmove\";\n support.mousecancel = \"touchcancel\";\n support.click = \"touchend\";\n support.resize = \"orientationchange\";\n }\n } else if (support.pointers) {\n support.mousemove = \"pointermove\";\n support.mousedown = \"pointerdown\";\n support.mouseup = \"pointerup\";\n support.mousecancel = \"pointercancel\";\n support.click = \"pointerup\";\n support.resize = \"orientationchange resize\";\n } else if (support.msPointers) {\n support.mousemove = \"MSPointerMove\";\n support.mousedown = \"MSPointerDown\";\n support.mouseup = \"MSPointerUp\";\n support.mousecancel = \"MSPointerCancel\";\n support.click = \"MSPointerUp\";\n support.resize = \"orientationchange resize\";\n } else {\n support.mousemove = \"mousemove\";\n support.mousedown = \"mousedown\";\n support.mouseup = \"mouseup\";\n support.mousecancel = \"mouseleave\";\n support.click = \"click\";\n support.resize = \"resize\";\n }\n\n var wrapExpression = function(members, paramName) {\n var result = paramName || \"d\",\n index,\n idx,\n length,\n member,\n count = 1;\n\n for (idx = 0, length = members.length; idx < length; idx++) {\n member = members[idx];\n if (member !== \"\") {\n index = member.indexOf(\"[\");\n\n if (index !== 0) {\n if (index == -1) {\n member = \".\" + member;\n } else {\n count++;\n member = \".\" + member.substring(0, index) + \" || {})\" + member.substring(index);\n }\n }\n\n count++;\n result += member + ((idx < length - 1) ? \" || {})\" : \")\");\n }\n }\n return new Array(count).join(\"(\") + result;\n },\n localUrlRe = /^([a-z]+:)?\\/\\//i;\n\n extend(kendo, {\n widgets: [],\n _widgetRegisteredCallbacks: [],\n ui: kendo.ui || {},\n fx: kendo.fx || fx,\n effects: kendo.effects || effects,\n mobile: kendo.mobile || { },\n data: kendo.data || {},\n dataviz: kendo.dataviz || {},\n drawing: kendo.drawing || {},\n spreadsheet: { messages: {} },\n keys: {\n INSERT: 45,\n DELETE: 46,\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n ESC: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n END: 35,\n HOME: 36,\n SPACEBAR: 32,\n PAGEUP: 33,\n PAGEDOWN: 34,\n F2: 113,\n F10: 121,\n F12: 123,\n NUMPAD_PLUS: 107,\n NUMPAD_MINUS: 109,\n NUMPAD_DOT: 110\n },\n support: kendo.support || support,\n animate: kendo.animate || animate,\n ns: \"\",\n attr: function(value) {\n return \"data-\" + kendo.ns + value;\n },\n getShadows: getShadows,\n wrap: wrap,\n deepExtend: deepExtend,\n getComputedStyles: getComputedStyles,\n isScrollable: isScrollable,\n scrollLeft: scrollLeft,\n size: size,\n toCamelCase: toCamelCase,\n toHyphens: toHyphens,\n getOffset: kendo.getOffset || getOffset,\n parseEffects: kendo.parseEffects || parseEffects,\n toggleClass: kendo.toggleClass || toggleClass,\n directions: kendo.directions || directions,\n Observable: Observable,\n Class: Class,\n Template: Template,\n template: Template.compile.bind(Template),\n render: Template.render.bind(Template),\n stringify: JSON.stringify.bind(JSON),\n eventTarget: eventTarget,\n htmlEncode: htmlEncode,\n unescape: unescape,\n isLocalUrl: function(url) {\n return url && !localUrlRe.test(url);\n },\n mediaQuery: mediaQuery,\n\n expr: function(expression, safe, paramName) {\n expression = expression || \"\";\n\n if (typeof safe == STRING) {\n paramName = safe;\n safe = false;\n }\n\n paramName = paramName || \"d\";\n\n if (expression && expression.charAt(0) !== \"[\") {\n expression = \".\" + expression;\n }\n\n if (safe) {\n expression = expression.replace(/\"([^.]*)\\.([^\"]*)\"/g,'\"$1_$DOT$_$2\"');\n expression = expression.replace(/'([^.]*)\\.([^']*)'/g,\"'$1_$DOT$_$2'\");\n expression = wrapExpression(expression.split(\".\"), paramName);\n expression = expression.replace(/_\\$DOT\\$_/g, \".\");\n } else {\n expression = paramName + expression;\n }\n\n return expression;\n },\n\n exprToArray: (expression, safe) => {\n expression = expression || \"\";\n\n return expression.indexOf(\".\") >= 0 || expression.indexOf(\"[\") >= 0 ?\n expression.split(/[[\\].]/).map(v => v.replace(/[\"']/g, '')).filter(v => v) :\n expression === \"\" ? [] : [expression];\n },\n\n getter: function(expression, safe) {\n var key = expression + safe;\n\n return getterCache[key] = getterCache[key] || ((obj) => {\n const fields = kendo.exprToArray(expression, safe);\n\n let result = obj;\n for (let idx = 0; idx < fields.length; idx++) {\n result = result[fields[idx]];\n if (!kendo.isPresent(result) && safe) {\n return result;\n }\n }\n\n return result;\n });\n },\n\n setter: function(expression) {\n return setterCache[expression] = setterCache[expression] || ((obj, value) => {\n const fields = kendo.exprToArray(expression);\n\n const innerSetter = ({ parent, val, prop, props }) => {\n if (props.length) {\n parent = parent[props.shift()];\n innerSetter({ parent, val, prop, props });\n } else {\n parent[prop] = val;\n }\n };\n\n innerSetter({\n parent: obj,\n val: value,\n prop: fields.pop(),\n props: fields\n });\n });\n },\n\n accessor: function(expression) {\n return {\n get: kendo.getter(expression),\n set: kendo.setter(expression)\n };\n },\n\n guid: function() {\n var id = \"\", i, random, chars = \"abcdef\";\n\n id += chars[Math.floor(Math.random() * Math.floor(chars.length))];\n\n for (i = 1; i < 32; i++) {\n random = math.random() * 16 | 0;\n\n if (i == 8 || i == 12 || i == 16 || i == 20) {\n id += \"-\";\n }\n id += (i == 12 ? 4 : (i == 16 ? (random & 3 | 8) : random)).toString(16);\n }\n\n return id;\n },\n\n roleSelector: function(role) {\n return role.replace(/(\\S+)/g, \"[\" + kendo.attr(\"role\") + \"=$1],\").slice(0, -1);\n },\n\n directiveSelector: function(directives) {\n var selectors = directives.split(\" \");\n\n if (selectors) {\n for (var i = 0; i < selectors.length; i++) {\n if (selectors[i] != \"view\") {\n selectors[i] = selectors[i].replace(/(\\w*)(view|bar|strip|over)$/, \"$1-$2\");\n }\n }\n }\n\n return selectors.join(\" \").replace(/(\\S+)/g, \"kendo-mobile-$1,\").slice(0, -1);\n },\n\n triggeredByInput: function(e) {\n return (/^(label|input|textarea|select)$/i).test(e.target.tagName);\n },\n\n onWidgetRegistered: function(callback) {\n for (var i = 0, len = kendo.widgets.length; i < len; i++) {\n callback(kendo.widgets[i]);\n }\n\n kendo._widgetRegisteredCallbacks.push(callback);\n },\n\n logToConsole: function(message, type) {\n var console = window.console;\n\n if (!kendo.suppressLog && typeof(console) != \"undefined\" && console.log) {\n console[type || \"log\"](message);\n }\n }\n });\n\n var Widget = Observable.extend( {\n init: function(element, options) {\n var that = this;\n\n if (!validatePackage()) {\n that._showWatermarkOverlay = addWatermarkOverlay;\n }\n\n that.element = kendo.jQuery(element).handler(that);\n\n Observable.fn.init.call(that);\n\n var dataSource = options ? options.dataSource : null;\n var props;\n\n if (options) {\n props = (that.componentTypes || {})[(options || {}).componentType];\n }\n\n if (dataSource) {\n // avoid deep cloning the data source\n options = extend({}, options, { dataSource: {} });\n }\n\n options = that.options = extend(true, {}, that.options, that.defaults, props || {}, options);\n\n if (dataSource) {\n options.dataSource = dataSource;\n }\n\n if (!that.element.attr(kendo.attr(\"role\"))) {\n that.element.attr(kendo.attr(\"role\"), (options.name || \"\").toLowerCase());\n }\n\n that.element.data(\"kendo\" + options.prefix + options.name, that);\n\n that.bind(that.events, options);\n },\n\n events: [],\n\n options: {\n prefix: \"\"\n },\n\n _hasBindingTarget: function() {\n return !!this.element[0].kendoBindingTarget;\n },\n\n _tabindex: function(target) {\n target = target || this.wrapper;\n\n var element = this.element,\n TABINDEX = \"tabindex\",\n tabindex = target.attr(TABINDEX) || element.attr(TABINDEX);\n\n element.removeAttr(TABINDEX);\n\n target.attr(TABINDEX, !isNaN(tabindex) ? tabindex : 0);\n },\n\n setOptions: function(options) {\n this._clearCssClasses(options);\n this._setEvents(options);\n $.extend(this.options, options);\n this._applyCssClasses();\n },\n\n _setEvents: function(options) {\n var that = this,\n idx = 0,\n length = that.events.length,\n e;\n\n for (; idx < length; idx ++) {\n e = that.events[idx];\n if (that.options[e] && options[e]) {\n that.unbind(e, that.options[e]);\n if (that._events && that._events[e]) {\n delete that._events[e];\n }\n }\n }\n\n that.bind(that.events, options);\n },\n\n resize: function(force) {\n var size = this.getSize(),\n currentSize = this._size;\n\n if (force || (size.width > 0 || size.height > 0) && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n this._size = size;\n this._resize(size, force);\n this.trigger(\"resize\", size);\n }\n },\n\n getSize: function() {\n return kendo.dimensions(this.element);\n },\n\n size: function(size) {\n if (!size) {\n return this.getSize();\n } else {\n this.setSize(size);\n }\n },\n\n setSize: $.noop,\n _resize: $.noop,\n\n destroy: function() {\n var that = this;\n\n that.element.removeData(\"kendo\" + that.options.prefix + that.options.name);\n that.element.removeData(\"handler\");\n that.unbind();\n },\n _destroy: function() {\n this.destroy();\n },\n\n _applyCssClasses: function(element) {\n var protoOptions = this.__proto__.options,\n options = this.options,\n el = element || this.wrapper || this.element,\n classes = [],\n i, prop, validFill, widgetName;\n\n if (!kendo.cssProperties.propertyDictionary[protoOptions.name]) {\n return;\n }\n\n for (i = 0; i < cssPropertiesNames.length; i++) {\n prop = cssPropertiesNames[i];\n widgetName = this.options._altname || protoOptions.name;\n\n if (protoOptions.hasOwnProperty(prop)) {\n if (prop === \"themeColor\") {\n validFill = kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: \"fillMode\",\n value: options.fillMode\n });\n\n if (validFill && validFill.length) {\n classes.push(kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: prop,\n value: options[prop],\n fill: options.fillMode\n }));\n }\n } else {\n classes.push(kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: prop,\n value: options[prop]\n }));\n }\n }\n }\n\n el.addClass(classes.join(\" \"));\n },\n\n _ariaLabel: function(target) {\n var that = this,\n inputElm = that.element,\n inputId = inputElm.attr(\"id\"),\n labelElm = $(\"label[for=\\\"\" + inputId + \"\\\"]\"),\n ariaLabel = inputElm.attr(ARIA_LABEL),\n ariaLabelledBy = inputElm.attr(ARIA_LABELLEDBY),\n labelId;\n\n if (target[0] === inputElm[0]) {\n return;\n }\n\n if (ariaLabel) {\n target.attr(ARIA_LABEL, ariaLabel);\n } else if (ariaLabelledBy) {\n target.attr(ARIA_LABELLEDBY, ariaLabelledBy);\n } else if (labelElm.length) {\n labelId = labelElm.attr(\"id\") || that._generateLabelId(labelElm, inputId || kendo.guid());\n target.attr(ARIA_LABELLEDBY, labelId);\n }\n },\n\n _clearCssClasses: function(newOptions, element) {\n var protoOptions = this.__proto__.options,\n currentOptions = this.options,\n el = element || this.wrapper || this.element,\n i, prop, widgetName;\n\n if (!kendo.cssProperties.propertyDictionary[protoOptions.name]) {\n return;\n }\n\n for (i = 0; i < cssPropertiesNames.length; i++) {\n prop = cssPropertiesNames[i];\n widgetName = this.options._altname || protoOptions.name;\n\n if (protoOptions.hasOwnProperty(prop) && newOptions.hasOwnProperty(prop)) {\n if (prop === \"themeColor\") {\n el.removeClass(kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: prop,\n value: currentOptions[prop],\n fill: currentOptions.fillMode\n }));\n } else {\n if (prop === \"fillMode\") {\n el.removeClass(kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: \"themeColor\",\n value: currentOptions.themeColor,\n fill: currentOptions.fillMode\n }));\n }\n\n el.removeClass(kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: prop,\n value: currentOptions[prop]\n }));\n }\n }\n }\n },\n\n _generateLabelId: function(label, inputId) {\n var labelId = inputId + LABELIDPART;\n\n label.attr(\"id\", labelId);\n\n return labelId;\n },\n });\n\n var DataBoundWidget = Widget.extend({\n dataItems: function() {\n return this.dataSource.flatView();\n }\n });\n\n kendo.dimensions = function(element, dimensions) {\n var domElement = element[0];\n\n if (dimensions) {\n element.css(dimensions);\n }\n\n return { width: domElement.offsetWidth, height: domElement.offsetHeight };\n };\n\n kendo.notify = noop;\n\n var templateRegExp = /template$/i,\n jsonRegExp = /^\\s*(?:\\{(?:.|\\r\\n|\\n)*\\}|\\[(?:.|\\r\\n|\\n)*\\])\\s*$/,\n jsonFormatRegExp = /^\\{(\\d+)(:[^\\}]+)?\\}|^\\[[A-Za-z_]+\\]$/,\n dashRegExp = /([A-Z])/g;\n\n function parseOption(element, option) {\n var value;\n\n if (option.indexOf(\"data\") === 0) {\n option = option.substring(4);\n option = option.charAt(0).toLowerCase() + option.substring(1);\n }\n\n option = option.replace(dashRegExp, \"-$1\");\n value = element.getAttribute(\"data-\" + kendo.ns + option);\n\n if (value === null) {\n value = undefined$1;\n } else if (value === \"null\") {\n value = null;\n } else if (value === \"true\") {\n value = true;\n } else if (value === \"false\") {\n value = false;\n } else if (numberRegExp.test(value) && option != \"mask\" && option != \"format\") {\n value = parseFloat(value);\n } else if (jsonRegExp.test(value) && !jsonFormatRegExp.test(value)) {\n try {\n value = JSON.parse(value);\n } catch (error) {\n // Fallback to function eval for legacy reason - non CSP compliant\n value = new Function(\"return (\" + value + \")\")();\n }\n }\n\n return value;\n }\n\n function parseOptions(element, options, source) {\n var result = {},\n option,\n value,\n role = element.getAttribute(\"data-\" + kendo.ns + \"role\");\n\n for (option in options) {\n value = parseOption(element, option);\n\n if (value !== undefined$1) {\n\n if (templateRegExp.test(option) && role != \"drawer\") {\n if (typeof value === \"string\") {\n if ($(\"#\" + value).length) {\n value = kendo.template($(\"#\" + value).html());\n } else if (source) {\n value = kendo.template(source[value]);\n }\n } else {\n value = element.getAttribute(option);\n }\n }\n\n result[option] = value;\n }\n }\n\n return result;\n }\n\n kendo.initWidget = function(element, options, roles) {\n var result,\n option,\n widget,\n idx,\n length,\n role,\n value,\n dataSource,\n fullPath,\n widgetKeyRegExp;\n\n // Preserve backwards compatibility with (element, options, namespace) signature, where namespace was kendo.ui\n if (!roles) {\n roles = kendo.ui.roles;\n } else if (roles.roles) {\n roles = roles.roles;\n }\n\n element = element.nodeType ? element : element[0];\n\n role = element.getAttribute(\"data-\" + kendo.ns + \"role\");\n\n if (!role) {\n return;\n }\n\n fullPath = role.indexOf(\".\") === -1;\n\n // look for any widget that may be already instantiated based on this role.\n // The prefix used is unknown, hence the regexp\n //\n\n if (fullPath) {\n widget = roles[role];\n } else { // full namespace path - like kendo.ui.Widget\n widget = kendo.getter(role)(window);\n }\n\n var data = $(element).data(),\n widgetKey = widget ? \"kendo\" + widget.fn.options.prefix + widget.fn.options.name : \"\";\n\n if (fullPath) {\n widgetKeyRegExp = new RegExp(\"^kendo.*\" + role + \"$\", \"i\");\n } else { // full namespace path - like kendo.ui.Widget\n widgetKeyRegExp = new RegExp(\"^\" + widgetKey + \"$\", \"i\");\n }\n\n for (var key in data) {\n if (key.match(widgetKeyRegExp)) {\n // we have detected a widget of the same kind - save its reference, we will set its options\n if (key === widgetKey) {\n result = data[key];\n } else {\n return data[key];\n }\n }\n }\n\n if (!widget) {\n return;\n }\n\n dataSource = parseOption(element, \"dataSource\");\n\n options = $.extend({}, parseOptions(element, $.extend({}, widget.fn.options, widget.fn.defaults) ), options);\n\n if (dataSource) {\n if (typeof dataSource === STRING) {\n options.dataSource = kendo.getter(dataSource)(window);\n } else {\n options.dataSource = dataSource;\n }\n }\n\n for (idx = 0, length = widget.fn.events.length; idx < length; idx++) {\n option = widget.fn.events[idx];\n\n value = parseOption(element, option);\n\n if (value !== undefined$1) {\n options[option] = kendo.getter(value)(window);\n }\n }\n\n if (!result) {\n result = new widget(element, options);\n } else if (!$.isEmptyObject(options)) {\n result.setOptions(options);\n }\n\n return result;\n };\n\n kendo.rolesFromNamespaces = function(namespaces) {\n var roles = [],\n idx,\n length;\n\n if (!namespaces[0]) {\n namespaces = [kendo.ui, kendo.dataviz.ui];\n }\n\n for (idx = 0, length = namespaces.length; idx < length; idx ++) {\n roles[idx] = namespaces[idx].roles;\n }\n\n return extend.apply(null, [{}].concat(roles.reverse()));\n };\n\n kendo.init = function(element) {\n var roles = kendo.rolesFromNamespaces(slice.call(arguments, 1));\n\n $(element).find(\"[data-\" + kendo.ns + \"role]\").addBack().each(function() {\n kendo.initWidget(this, {}, roles);\n });\n };\n\n kendo.destroy = function(element) {\n $(element).find(\"[data-\" + kendo.ns + \"role]\").addBack().each(function() {\n var data = $(this).data();\n\n for (var key in data) {\n if (key.indexOf(\"kendo\") === 0 && typeof data[key].destroy === FUNCTION) {\n data[key].destroy();\n }\n }\n });\n };\n\n function containmentComparer(a, b) {\n return $.contains(a, b) ? -1 : 1;\n }\n\n function resizableWidget() {\n var widget = $(this);\n return ($.inArray(widget.attr(\"data-\" + kendo.ns + \"role\"), [\"slider\", \"rangeslider\", \"breadcrumb\"]) > -1) || widget.is(\":visible\");\n }\n\n kendo.resize = function(element, force) {\n var widgets = $(element).find(\"[data-\" + kendo.ns + \"role]\").addBack().filter(resizableWidget);\n\n if (!widgets.length) {\n return;\n }\n\n // sort widgets based on their parent-child relation\n var widgetsArray = $.makeArray(widgets);\n widgetsArray.sort(containmentComparer);\n\n // resize widgets\n $.each(widgetsArray, function() {\n var widget = kendo.widgetInstance($(this));\n if (widget) {\n widget.resize(force);\n }\n });\n };\n\n kendo.parseOptions = parseOptions;\n\n extend(kendo.ui, {\n Widget: Widget,\n DataBoundWidget: DataBoundWidget,\n roles: {},\n progress: function(container, toggle, options) {\n var mask = container.find(\".k-loading-mask\"),\n support = kendo.support,\n browser = support.browser,\n isRtl, leftRight, webkitCorrection, containerScrollLeft, cssClass;\n\n options = $.extend({}, {\n width: \"100%\",\n height: \"100%\",\n top: container.scrollTop(),\n opacity: false\n }, options);\n\n cssClass = options.opacity ? 'k-loading-mask k-opaque' : 'k-loading-mask';\n\n if (toggle) {\n if (!mask.length) {\n isRtl = support.isRtl(container);\n leftRight = isRtl ? \"right\" : \"left\";\n containerScrollLeft = kendo.scrollLeft(container);\n webkitCorrection = browser.webkit ? (!isRtl ? 0 : container[0].scrollWidth - container.width() - 2 * containerScrollLeft) : 0;\n\n mask = $(kendo.format(\"
{1}
\", cssClass, kendo.ui.progress.messages.loading))\n .width(options.width).height(options.height)\n .css(\"top\", options.top)\n .css(leftRight, Math.abs(containerScrollLeft) + webkitCorrection)\n .prependTo(container);\n }\n } else if (mask) {\n mask.remove();\n }\n },\n plugin: function(widget, register, prefix) {\n var name = widget.fn.options.name,\n getter;\n\n register = register || kendo.ui;\n prefix = prefix || \"\";\n\n register[name] = widget;\n\n register.roles[name.toLowerCase()] = widget;\n\n getter = \"getKendo\" + prefix + name;\n name = \"kendo\" + prefix + name;\n\n var widgetEntry = { name: name, widget: widget, prefix: prefix || \"\" };\n kendo.widgets.push(widgetEntry);\n\n for (var i = 0, len = kendo._widgetRegisteredCallbacks.length; i < len; i++) {\n kendo._widgetRegisteredCallbacks[i](widgetEntry);\n }\n\n $.fn[name] = function(options) {\n var value = this,\n args;\n\n if (typeof options === STRING) {\n args = slice.call(arguments, 1);\n\n this.each(function() {\n var widget = $.data(this, name),\n method,\n result;\n\n if (!widget) {\n throw new Error(kendo.format(\"Cannot call method '{0}' of {1} before it is initialized\", options, name));\n }\n\n method = widget[options];\n\n if (typeof method !== FUNCTION) {\n throw new Error(kendo.format(\"Cannot find method '{0}' of {1}\", options, name));\n }\n\n result = method.apply(widget, args);\n\n if (result !== undefined$1) {\n value = result;\n return false;\n }\n });\n } else {\n this.each(function() {\n return new widget(this, options);\n });\n }\n\n return value;\n };\n\n $.fn[name].widget = widget;\n\n $.fn[getter] = function() {\n return this.data(name);\n };\n }\n });\n\n kendo.ui.progress.messages = {\n loading: \"Loading...\"\n };\n\n var ContainerNullObject = { bind: function() { return this; }, nullObject: true, options: {} };\n\n var MobileWidget = Widget.extend({\n init: function(element, options) {\n Widget.fn.init.call(this, element, options);\n this.element.autoApplyNS();\n this.wrapper = this.element;\n this.element.addClass(\"km-widget\");\n },\n\n destroy: function() {\n Widget.fn.destroy.call(this);\n this.element.kendoDestroy();\n },\n\n options: {\n prefix: \"Mobile\"\n },\n\n events: [],\n\n view: function() {\n var viewElement = this.element.closest(kendo.roleSelector(\"view splitview modalview drawer\"));\n return kendo.widgetInstance(viewElement, kendo.mobile.ui) || ContainerNullObject;\n },\n\n viewHasNativeScrolling: function() {\n var view = this.view();\n return view && view.options.useNativeScrolling;\n },\n\n container: function() {\n var element = this.element.closest(kendo.roleSelector(\"view layout modalview drawer splitview\"));\n return kendo.widgetInstance(element.eq(0), kendo.mobile.ui) || ContainerNullObject;\n }\n });\n\n extend(kendo.mobile, {\n init: function(element) {\n kendo.init(element, kendo.mobile.ui, kendo.ui, kendo.dataviz.ui);\n },\n\n roles: {},\n\n ui: {\n Widget: MobileWidget,\n DataBoundWidget: DataBoundWidget.extend(MobileWidget.prototype),\n roles: {},\n plugin: function(widget) {\n kendo.ui.plugin(widget, kendo.mobile.ui, \"Mobile\");\n }\n }\n });\n\n deepExtend(kendo.dataviz, {\n init: function(element) {\n kendo.init(element, kendo.dataviz.ui);\n },\n ui: {\n roles: {},\n themes: {},\n views: [],\n plugin: function(widget) {\n kendo.ui.plugin(widget, kendo.dataviz.ui);\n }\n },\n roles: {}\n });\n\n kendo.touchScroller = function(elements, options) {\n // return the first touch scroller\n if (!options) { options = {}; }\n\n options.useNative = true;\n\n return $(elements).map(function(idx, element) {\n element = $(element);\n if (support.kineticScrollNeeded && kendo.mobile.ui.Scroller && !element.data(\"kendoMobileScroller\")) {\n element.kendoMobileScroller(options);\n return element.data(\"kendoMobileScroller\");\n } else {\n return false;\n }\n })[0];\n };\n\n kendo.preventDefault = function(e) {\n e.preventDefault();\n };\n\n kendo.widgetInstance = function(element, suites) {\n var role = element.data(kendo.ns + \"role\"),\n widgets = [], i, length,\n elementData = element.data(\"kendoView\");\n\n if (role) {\n // HACK!!! mobile view scroller widgets are instantiated on data-role=\"content\" elements. We need to discover them when resizing.\n if (role === \"content\") {\n role = \"scroller\";\n }\n\n // kendo.View is not a ui plugin\n\n if (role === \"view\" && elementData) {\n return elementData;\n }\n\n if (suites) {\n if (suites[0]) {\n for (i = 0, length = suites.length; i < length; i ++) {\n widgets.push(suites[i].roles[role]);\n }\n } else {\n widgets.push(suites.roles[role]);\n }\n }\n else {\n widgets = [ kendo.ui.roles[role], kendo.dataviz.ui.roles[role], kendo.mobile.ui.roles[role] ];\n }\n\n if (role.indexOf(\".\") >= 0) {\n widgets = [ kendo.getter(role)(window) ];\n }\n\n for (i = 0, length = widgets.length; i < length; i ++) {\n var widget = widgets[i];\n if (widget) {\n var instance = element.data(\"kendo\" + widget.fn.options.prefix + widget.fn.options.name);\n if (instance) {\n return instance;\n }\n }\n }\n }\n };\n\n kendo.onResize = function(callback) {\n var handler = callback;\n if (support.mobileOS.android) {\n handler = function() { setTimeout(callback, 600); };\n }\n\n $(window).on(support.resize, handler);\n return handler;\n };\n\n kendo.unbindResize = function(callback) {\n $(window).off(support.resize, callback);\n };\n\n kendo.attrValue = function(element, key) {\n return element.data(kendo.ns + key);\n };\n\n kendo.days = {\n Sunday: 0,\n Monday: 1,\n Tuesday: 2,\n Wednesday: 3,\n Thursday: 4,\n Friday: 5,\n Saturday: 6\n };\n\n function focusable(element, isTabIndexNotNaN) {\n var nodeName = element.nodeName.toLowerCase();\n\n return (/input|select|textarea|button|object/.test(nodeName) ?\n !element.disabled :\n nodeName === \"a\" ?\n element.href || isTabIndexNotNaN :\n isTabIndexNotNaN\n ) &&\n visible(element);\n }\n\n function visible(element) {\n return $.expr.pseudos.visible(element) &&\n !$(element).parents().addBack().filter(function() {\n return $.css(this,\"visibility\") === \"hidden\";\n }).length;\n }\n\n $.extend($.expr.pseudos, {\n kendoFocusable: function(element) {\n var idx = $.attr(element, \"tabindex\");\n return focusable(element, !isNaN(idx) && idx > -1);\n }\n });\n\n var MOUSE_EVENTS = [\"mousedown\", \"mousemove\", \"mouseenter\", \"mouseleave\", \"mouseover\", \"mouseout\", \"mouseup\", \"click\"];\n var EXCLUDE_BUST_CLICK_SELECTOR = \"label, input, [data-rel=external]\";\n\n var MouseEventNormalizer = {\n setupMouseMute: function() {\n var idx = 0,\n length = MOUSE_EVENTS.length,\n element = document.documentElement;\n\n if (MouseEventNormalizer.mouseTrap || !support.eventCapture) {\n return;\n }\n\n MouseEventNormalizer.mouseTrap = true;\n\n MouseEventNormalizer.bustClick = false;\n MouseEventNormalizer.captureMouse = false;\n\n var handler = function(e) {\n if (MouseEventNormalizer.captureMouse) {\n if (e.type === \"click\") {\n if (MouseEventNormalizer.bustClick && !$(e.target).is(EXCLUDE_BUST_CLICK_SELECTOR)) {\n e.preventDefault();\n e.stopPropagation();\n }\n } else {\n e.stopPropagation();\n }\n }\n };\n\n for (; idx < length; idx++) {\n element.addEventListener(MOUSE_EVENTS[idx], handler, true);\n }\n },\n\n muteMouse: function(e) {\n MouseEventNormalizer.captureMouse = true;\n if (e.data.bustClick) {\n MouseEventNormalizer.bustClick = true;\n }\n clearTimeout(MouseEventNormalizer.mouseTrapTimeoutID);\n },\n\n unMuteMouse: function() {\n clearTimeout(MouseEventNormalizer.mouseTrapTimeoutID);\n MouseEventNormalizer.mouseTrapTimeoutID = setTimeout(function() {\n MouseEventNormalizer.captureMouse = false;\n MouseEventNormalizer.bustClick = false;\n }, 400);\n }\n };\n\n var eventMap = {\n down: \"touchstart mousedown\",\n move: \"mousemove touchmove\",\n up: \"mouseup touchend touchcancel\",\n cancel: \"mouseleave touchcancel\"\n };\n\n if (support.touch && (support.mobileOS.ios || support.mobileOS.android)) {\n eventMap = {\n down: \"touchstart\",\n move: \"touchmove\",\n up: \"touchend touchcancel\",\n cancel: \"touchcancel\"\n };\n } else if (support.pointers) {\n eventMap = {\n down: \"pointerdown\",\n move: \"pointermove\",\n up: \"pointerup\",\n cancel: \"pointercancel pointerleave\"\n };\n } else if (support.msPointers) {\n eventMap = {\n down: \"MSPointerDown\",\n move: \"MSPointerMove\",\n up: \"MSPointerUp\",\n cancel: \"MSPointerCancel MSPointerLeave\"\n };\n }\n\n if (support.msPointers && !(\"onmspointerenter\" in window)) { // IE10\n // Create MSPointerEnter/MSPointerLeave events using mouseover/out and event-time checks\n $.each({\n MSPointerEnter: \"MSPointerOver\",\n MSPointerLeave: \"MSPointerOut\"\n }, function( orig, fix ) {\n $.event.special[ orig ] = {\n delegateType: fix,\n bindType: fix,\n\n handle: function( event ) {\n var ret,\n target = this,\n related = event.relatedTarget,\n handleObj = event.handleObj;\n\n // For mousenter/leave call the handler if related is outside the target.\n // NB: No relatedTarget if the mouse left/entered the browser window\n if ( !related || (related !== target && !$.contains( target, related )) ) {\n event.type = handleObj.origType;\n ret = handleObj.handler.apply( this, arguments );\n event.type = fix;\n }\n return ret;\n }\n };\n });\n }\n\n\n var getEventMap = function(e) { return (eventMap[e] || e); },\n eventRegEx = /([^ ]+)/g;\n\n kendo.applyEventMap = function(events, ns) {\n events = events.replace(eventRegEx, getEventMap);\n\n if (ns) {\n events = events.replace(eventRegEx, \"$1.\" + ns);\n }\n\n return events;\n };\n\n kendo.keyDownHandler = function(e, widget) {\n var events = widget._events.kendoKeydown;\n\n if (!events) {\n return true;\n }\n\n events = events.slice();\n e.sender = widget;\n e.preventKendoKeydown = false;\n for (var idx = 0, length = events.length; idx < length; idx++) {\n events[idx].call(widget, e);\n }\n\n return !e.preventKendoKeydown;\n };\n\n var on = $.fn.on;\n\n function kendoJQuery(selector, context) {\n return new kendoJQuery.fn.init(selector, context);\n }\n\n noDepricateExtend(true, kendoJQuery, $);\n\n kendoJQuery.fn = kendoJQuery.prototype = new $();\n\n kendoJQuery.fn.constructor = kendoJQuery;\n\n kendoJQuery.fn.init = function(selector, context) {\n if (context && context instanceof $ && !(context instanceof kendoJQuery)) {\n context = kendoJQuery(context);\n }\n\n return $.fn.init.call(this, selector, context, rootjQuery);\n };\n\n kendoJQuery.fn.init.prototype = kendoJQuery.fn;\n\n var rootjQuery = kendoJQuery(document);\n\n extend(kendoJQuery.fn, {\n handler: function(handler) {\n this.data(\"handler\", handler);\n return this;\n },\n\n autoApplyNS: function(ns) {\n this.data(\"kendoNS\", ns || kendo.guid());\n return this;\n },\n\n on: function() {\n var that = this,\n ns = that.data(\"kendoNS\");\n\n // support for event map signature\n if (arguments.length === 1) {\n return on.call(that, arguments[0]);\n }\n\n var context = that,\n args = slice.call(arguments);\n\n if (typeof args[args.length - 1] === UNDEFINED) {\n args.pop();\n }\n\n var callback = args[args.length - 1],\n events = kendo.applyEventMap(args[0], ns);\n\n // setup mouse trap\n if (support.mouseAndTouchPresent && events.search(/mouse|click/) > -1 && this[0] !== document.documentElement) {\n MouseEventNormalizer.setupMouseMute();\n\n var selector = args.length === 2 ? null : args[1],\n bustClick = events.indexOf(\"click\") > -1 && events.indexOf(\"touchend\") > -1;\n\n on.call(this,\n {\n touchstart: MouseEventNormalizer.muteMouse,\n touchend: MouseEventNormalizer.unMuteMouse\n },\n selector,\n {\n bustClick: bustClick\n });\n }\n\n if (arguments[0].indexOf(\"keydown\") !== -1 && args[1] && args[1].options) {\n args[0] = events;\n var widget = args[1];\n var keyDownCallBack = args[args.length - 1];\n args[args.length - 1] = function(e) {\n if (kendo.keyDownHandler(e, widget)) {\n return keyDownCallBack.apply(this, [e]);\n }\n };\n on.apply(that, args);\n return that;\n }\n\n if (typeof callback === STRING) {\n context = that.data(\"handler\");\n callback = context[callback];\n\n args[args.length - 1] = function(e) {\n callback.call(context, e);\n };\n }\n\n args[0] = events;\n\n on.apply(that, args);\n\n return that;\n },\n\n kendoDestroy: function(ns) {\n ns = ns || this.data(\"kendoNS\");\n\n if (ns) {\n this.off(\".\" + ns);\n }\n\n return this;\n }\n });\n\n kendo.jQuery = kendoJQuery;\n kendo.eventMap = eventMap;\n\n kendo.timezone = (function() {\n var months = { Jan: 0, Feb: 1, Mar: 2, Apr: 3, May: 4, Jun: 5, Jul: 6, Aug: 7, Sep: 8, Oct: 9, Nov: 10, Dec: 11 };\n var days = { Sun: 0, Mon: 1, Tue: 2, Wed: 3, Thu: 4, Fri: 5, Sat: 6 };\n\n function ruleToDate(year, rule) {\n var date;\n var targetDay;\n var ourDay;\n var month = rule[3];\n var on = rule[4];\n var time = rule[5];\n var cache = rule[8];\n\n if (!cache) {\n rule[8] = cache = {};\n }\n\n if (cache[year]) {\n return cache[year];\n }\n\n if (!isNaN(on)) {\n date = new Date(Date.UTC(year, months[month], on, time[0], time[1], time[2], 0));\n } else if (on.indexOf(\"last\") === 0) {\n date = new Date(Date.UTC(year, months[month] + 1, 1, time[0] - 24, time[1], time[2], 0));\n\n targetDay = days[on.substr(4, 3)];\n ourDay = date.getUTCDay();\n\n date.setUTCDate(date.getUTCDate() + targetDay - ourDay - (targetDay > ourDay ? 7 : 0));\n } else if (on.indexOf(\">=\") >= 0) {\n date = new Date(Date.UTC(year, months[month], on.substr(5), time[0], time[1], time[2], 0));\n\n targetDay = days[on.substr(0, 3)];\n ourDay = date.getUTCDay();\n\n date.setUTCDate(date.getUTCDate() + targetDay - ourDay + (targetDay < ourDay ? 7 : 0));\n } else if (on.indexOf(\"<=\") >= 0) {\n date = new Date(Date.UTC(year, months[month], on.substr(5), time[0], time[1], time[2], 0));\n\n targetDay = days[on.substr(0, 3)];\n ourDay = date.getUTCDay();\n\n date.setUTCDate(date.getUTCDate() + targetDay - ourDay - (targetDay > ourDay ? 7 : 0));\n }\n\n return cache[year] = date;\n }\n\n function findRule(utcTime, rules, zone) {\n rules = rules[zone];\n\n if (!rules) {\n var time = zone.split(\":\");\n var offset = 0;\n\n if (time.length > 1) {\n offset = time[0] * 60 + Number(time[1]);\n }\n\n return [-1000000, 'max', '-', 'Jan', 1, [0, 0, 0], offset, '-'];\n }\n\n var year = new Date(utcTime).getUTCFullYear();\n\n rules = jQuery.grep(rules, function(rule) {\n var from = rule[0];\n var to = rule[1];\n\n return from <= year && (to >= year || (from == year && to == \"only\") || to == \"max\");\n });\n\n rules.push(utcTime);\n\n rules.sort(function(a, b) {\n if (typeof a != \"number\") {\n a = Number(ruleToDate(year, a));\n }\n\n if (typeof b != \"number\") {\n b = Number(ruleToDate(year, b));\n }\n\n return a - b;\n });\n\n var rule = rules[jQuery.inArray(utcTime, rules) - 1] || rules[rules.length - 1];\n\n return isNaN(rule) ? rule : null;\n }\n\n function findZone(utcTime, zones, timezone) {\n var zoneRules = zones[timezone];\n\n if (typeof zoneRules === \"string\") {\n zoneRules = zones[zoneRules];\n }\n\n if (!zoneRules) {\n throw new Error('Timezone \"' + timezone + '\" is either incorrect, or kendo.timezones.min.js is not included.');\n }\n\n for (var idx = zoneRules.length - 1; idx >= 0; idx--) {\n var until = zoneRules[idx][3];\n\n if (until && utcTime > until) {\n break;\n }\n }\n\n var zone = zoneRules[idx + 1];\n\n if (!zone) {\n throw new Error('Timezone \"' + timezone + '\" not found on ' + utcTime + \".\");\n }\n\n return zone;\n }\n\n function zoneAndRule(utcTime, zones, rules, timezone) {\n if (typeof utcTime != NUMBER) {\n utcTime = Date.UTC(utcTime.getFullYear(), utcTime.getMonth(),\n utcTime.getDate(), utcTime.getHours(), utcTime.getMinutes(),\n utcTime.getSeconds(), utcTime.getMilliseconds());\n }\n\n var zone = findZone(utcTime, zones, timezone);\n\n return {\n zone: zone,\n rule: findRule(utcTime, rules, zone[1])\n };\n }\n\n function offset(utcTime, timezone) {\n if (timezone == \"Etc/UTC\" || timezone == \"Etc/GMT\") {\n return 0;\n }\n\n var info = zoneAndRule(utcTime, this.zones, this.rules, timezone);\n var zone = info.zone;\n var rule = info.rule;\n\n return kendo.parseFloat(rule ? zone[0] - rule[6] : zone[0]);\n }\n\n function abbr(utcTime, timezone) {\n var info = zoneAndRule(utcTime, this.zones, this.rules, timezone);\n var zone = info.zone;\n var rule = info.rule;\n\n var base = zone[2];\n\n if (base.indexOf(\"/\") >= 0) {\n return base.split(\"/\")[rule && +rule[6] ? 1 : 0];\n } else if (base.indexOf(\"%s\") >= 0) {\n return base.replace(\"%s\", (!rule || rule[7] == \"-\") ? '' : rule[7]);\n }\n\n return base;\n }\n\n function convert(date, fromOffset, toOffset) {\n var tempToOffset = toOffset;\n var diff;\n\n if (typeof fromOffset == STRING) {\n fromOffset = this.offset(date, fromOffset);\n }\n\n if (typeof toOffset == STRING) {\n toOffset = this.offset(date, toOffset);\n }\n\n var fromLocalOffset = date.getTimezoneOffset();\n\n date = new Date(date.getTime() + (fromOffset - toOffset) * 60000);\n\n var toLocalOffset = date.getTimezoneOffset();\n\n if (typeof tempToOffset == STRING) {\n tempToOffset = this.offset(date, tempToOffset);\n }\n\n diff = (toLocalOffset - fromLocalOffset) + (toOffset - tempToOffset);\n\n return new Date(date.getTime() + diff * 60000);\n }\n\n function apply(date, timezone) {\n return this.convert(date, date.getTimezoneOffset(), timezone);\n }\n\n function remove(date, timezone) {\n return this.convert(date, timezone, date.getTimezoneOffset());\n }\n\n function toLocalDate(time) {\n return this.apply(new Date(time), \"Etc/UTC\");\n }\n\n return {\n zones: {},\n rules: {},\n offset: offset,\n convert: convert,\n apply: apply,\n remove: remove,\n abbr: abbr,\n toLocalDate: toLocalDate\n };\n })();\n\n kendo.date = (function() {\n var MS_PER_MINUTE = 60000,\n MS_PER_DAY = 86400000;\n\n function adjustDST(date, hours) {\n if (hours === 0 && date.getHours() === 23) {\n date.setHours(date.getHours() + 2);\n return true;\n }\n\n return false;\n }\n\n function setDayOfWeek(date, day, dir) {\n var hours = date.getHours();\n\n dir = dir || 1;\n day = ((day - date.getDay()) + (7 * dir)) % 7;\n\n date.setDate(date.getDate() + day);\n adjustDST(date, hours);\n }\n\n function dayOfWeek(date, day, dir) {\n date = new Date(date);\n setDayOfWeek(date, day, dir);\n return date;\n }\n\n function firstDayOfMonth(date) {\n return new Date(\n date.getFullYear(),\n date.getMonth(),\n 1\n );\n }\n\n function lastDayOfMonth(date) {\n var last = new Date(date.getFullYear(), date.getMonth() + 1, 0),\n first = firstDayOfMonth(date),\n timeOffset = Math.abs(last.getTimezoneOffset() - first.getTimezoneOffset());\n\n if (timeOffset) {\n last.setHours(first.getHours() + (timeOffset / 60));\n }\n\n return last;\n }\n\n function firstDayOfYear(date) {\n return new Date(date.getFullYear(), 0, 1);\n }\n\n function lastDayOfYear(date) {\n return new Date(date.getFullYear(), 11, 31);\n }\n\n function moveDateToWeekStart(date, weekStartDay) {\n if (weekStartDay !== 1) {\n return addDays(dayOfWeek(date, weekStartDay, -1), 4);\n }\n\n return addDays(date, (4 - (date.getDay() || 7)));\n }\n\n function calcWeekInYear(date, weekStartDay) {\n var firstWeekInYear = new Date(date.getFullYear(), 0, 1, -6);\n\n var newDate = moveDateToWeekStart(date, weekStartDay);\n\n var diffInMS = newDate.getTime() - firstWeekInYear.getTime();\n\n var days = Math.floor(diffInMS / MS_PER_DAY);\n\n return 1 + Math.floor(days / 7);\n }\n\n function weekInYear(date, weekStartDay) {\n if (weekStartDay === undefined$1) {\n weekStartDay = kendo.culture().calendar.firstDay;\n }\n\n var prevWeekDate = addDays(date, -7);\n var nextWeekDate = addDays(date, 7);\n\n var weekNumber = calcWeekInYear(date, weekStartDay);\n\n if (weekNumber === 0) {\n return calcWeekInYear(prevWeekDate, weekStartDay) + 1;\n }\n\n if (weekNumber === 53 && calcWeekInYear(nextWeekDate, weekStartDay) > 1) {\n return 1;\n }\n\n return weekNumber;\n }\n\n function getDate(date) {\n date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\n adjustDST(date, 0);\n return date;\n }\n\n function toUtcTime(date) {\n return Date.UTC(date.getFullYear(), date.getMonth(),\n date.getDate(), date.getHours(), date.getMinutes(),\n date.getSeconds(), date.getMilliseconds());\n }\n\n function getMilliseconds(date) {\n return toInvariantTime(date).getTime() - getDate(toInvariantTime(date));\n }\n\n function isInTimeRange(value, min, max) {\n var msMin = getMilliseconds(min),\n msMax = getMilliseconds(max),\n msValue;\n\n if (!value || msMin == msMax) {\n return true;\n }\n\n if (min >= max) {\n max += MS_PER_DAY;\n }\n\n msValue = getMilliseconds(value);\n\n if (msMin > msValue) {\n msValue += MS_PER_DAY;\n }\n\n if (msMax < msMin) {\n msMax += MS_PER_DAY;\n }\n\n return msValue >= msMin && msValue <= msMax;\n }\n\n function isInDateRange(value, min, max) {\n var msMin = min.getTime(),\n msMax = max.getTime(),\n msValue;\n\n if (msMin >= msMax) {\n msMax += MS_PER_DAY;\n }\n\n msValue = value.getTime();\n\n return msValue >= msMin && msValue <= msMax;\n }\n\n function addDays(date, offset) {\n var hours = date.getHours();\n date = new Date(date);\n\n setTime(date, offset * MS_PER_DAY);\n adjustDST(date, hours);\n return date;\n }\n\n function setTime(date, milliseconds, ignoreDST) {\n var offset = date.getTimezoneOffset();\n var difference;\n\n date.setTime(date.getTime() + milliseconds);\n\n if (!ignoreDST) {\n difference = date.getTimezoneOffset() - offset;\n date.setTime(date.getTime() + difference * MS_PER_MINUTE);\n }\n }\n\n function setHours(date, time) {\n date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds());\n adjustDST(date, time.getHours());\n return date;\n }\n\n function today() {\n return getDate(new Date());\n }\n\n function isToday(date) {\n return getDate(date).getTime() == today().getTime();\n }\n\n function toInvariantTime(date) {\n var staticDate = new Date(1980, 1, 1, 0, 0, 0);\n\n if (date) {\n staticDate.setHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n }\n\n return staticDate;\n }\n\n function addYear(date, offset) {\n var currentDate = new Date(date);\n\n return new Date(currentDate.setFullYear(currentDate.getFullYear() + offset));\n }\n\n function addLiteral(parts, value) {\n var lastPart = parts[parts.length - 1];\n if (lastPart && lastPart.type === \"LITERAL\") {\n lastPart.pattern += value;\n } else {\n parts.push({\n type: \"literal\",\n pattern: value\n });\n }\n }\n\n function isHour12(pattern) {\n return pattern === \"h\" || pattern === \"K\";\n }\n\n function dateNameType(formatLength) {\n var nameType;\n if (formatLength <= 3) {\n nameType = \"abbreviated\";\n } else if (formatLength === 4) {\n nameType = \"wide\";\n } else if (formatLength === 5) {\n nameType = \"narrow\";\n }\n\n return nameType;\n }\n\n function startsWith(text, searchString, position) {\n position = position || 0;\n return text.indexOf(searchString, position) === position;\n }\n\n function datePattern(format, info) {\n var calendar = info.calendar;\n var result;\n if (typeof format === \"string\") {\n if (calendar.patterns[format]) {\n result = calendar.patterns[format];\n } else {\n result = format;\n }\n }\n\n if (!result) {\n result = calendar.patterns.d;\n }\n\n return result;\n }\n\n function splitDateFormat(format) {\n var info = kendo.culture();\n var pattern = datePattern(format, info).replaceAll(\"dddd\", \"EEEE\").replaceAll(\"ddd\", \"EEE\").replace(\"tt\", \"aa\");\n var parts = [];\n var dateFormatRegExp = /d{1,2}|E{1,6}|e{1,6}|c{3,6}|c{1}|M{1,5}|L{1,5}|y{1,4}|H{1,2}|h{1,2}|k{1,2}|K{1,2}|m{1,2}|a{1,5}|s{1,2}|S{1,3}|t{1,2}|z{1,4}|Z{1,5}|x{1,5}|X{1,5}|G{1,5}|q{1,5}|Q{1,5}|\"[^\"]*\"|'[^']*'/g;\n\n var lastIndex = dateFormatRegExp.lastIndex = 0;\n var match = dateFormatRegExp.exec(pattern);\n var specifier;\n var type;\n var part;\n var names;\n var minLength;\n var patternLength;\n\n while (match) {\n var value = match[0];\n\n if (lastIndex < match.index) {\n addLiteral(parts, pattern.substring(lastIndex, match.index));\n }\n\n if (startsWith(value, '\"') || startsWith(value, \"'\")) {\n addLiteral(parts, value);\n } else {\n specifier = value[0];\n type = DATE_FIELD_MAP[specifier];\n part = {\n type: type,\n pattern: value\n };\n\n if (type === \"hour\") {\n part.hour12 = isHour12(value);\n }\n\n names = NAME_TYPES[type];\n\n if (names) {\n minLength = typeof names.minLength === \"number\" ? names.minLength : names.minLength[specifier];\n patternLength = value.length;\n\n if (patternLength >= minLength && value !== \"aa\") {\n part.names = {\n type: names.type,\n nameType: dateNameType(patternLength),\n standAlone: names.standAlone === specifier\n };\n }\n }\n\n parts.push(part);\n }\n\n lastIndex = dateFormatRegExp.lastIndex;\n match = dateFormatRegExp.exec(pattern);\n }\n\n if (lastIndex < pattern.length) {\n addLiteral(parts, pattern.substring(lastIndex));\n }\n\n return parts;\n }\n\n function dateFormatNames(options) {\n let { type, nameType } = options;\n const info = kendo.culture();\n if (nameType === \"wide\") {\n nameType = \"names\";\n }\n if (nameType === \"abbreviated\") {\n nameType = \"namesAbbr\";\n }\n if (nameType === \"narrow\") {\n nameType = \"namesShort\";\n }\n let result = info.calendar[type][nameType];\n if (!result) {\n result = info.calendar[type][\"name\"];\n }\n return result;\n }\n\n function dateFieldName(options) {\n const info = kendo.culture();\n const dateFields = info.calendar.dateFields;\n const fieldNameInfo = dateFields[options.type] || {};\n\n return fieldNameInfo[options.nameType];\n }\n\n return {\n adjustDST: adjustDST,\n dayOfWeek: dayOfWeek,\n setDayOfWeek: setDayOfWeek,\n getDate: getDate,\n isInDateRange: isInDateRange,\n isInTimeRange: isInTimeRange,\n isToday: isToday,\n nextDay: function(date) {\n return addDays(date, 1);\n },\n previousDay: function(date) {\n return addDays(date, -1);\n },\n toUtcTime: toUtcTime,\n MS_PER_DAY: MS_PER_DAY,\n MS_PER_HOUR: 60 * MS_PER_MINUTE,\n MS_PER_MINUTE: MS_PER_MINUTE,\n setTime: setTime,\n setHours: setHours,\n addDays: addDays,\n today: today,\n toInvariantTime: toInvariantTime,\n firstDayOfMonth: firstDayOfMonth,\n splitDateFormat: splitDateFormat,\n dateFieldName: dateFieldName,\n dateFormatNames: dateFormatNames,\n lastDayOfMonth: lastDayOfMonth,\n weekInYear: weekInYear,\n getMilliseconds: getMilliseconds,\n firstDayOfYear: firstDayOfYear,\n lastDayOfYear: lastDayOfYear,\n nextYear: function(date) {\n return addYear(date, 1);\n },\n previousYear: function(date) {\n return addYear(date, -1);\n }\n };\n })();\n\n\n kendo.stripWhitespace = function(element) {\n if (document.createNodeIterator) {\n var iterator = document.createNodeIterator(element, NodeFilter.SHOW_TEXT, function(node) {\n return node.parentNode == element ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n }, false);\n\n while (iterator.nextNode()) {\n if (iterator.referenceNode && !iterator.referenceNode.textContent.trim()) {\n iterator.referenceNode.parentNode.removeChild(iterator.referenceNode);\n }\n }\n } else { // IE7/8 support\n for (var i = 0; i < element.childNodes.length; i++) {\n var child = element.childNodes[i];\n\n if (child.nodeType == 3 && !/\\S/.test(child.nodeValue)) {\n element.removeChild(child);\n i--;\n }\n\n if (child.nodeType == 1) {\n kendo.stripWhitespace(child);\n }\n }\n }\n };\n\n var animationFrame = window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.oRequestAnimationFrame ||\n window.msRequestAnimationFrame ||\n function(callback) { setTimeout(callback, 1000 / 60); };\n\n kendo.animationFrame = function(callback) {\n animationFrame.call(window, callback);\n };\n\n var animationQueue = [];\n\n kendo.queueAnimation = function(callback) {\n animationQueue[animationQueue.length] = callback;\n if (animationQueue.length === 1) {\n kendo.runNextAnimation();\n }\n };\n\n kendo.runNextAnimation = function() {\n kendo.animationFrame(function() {\n if (animationQueue[0]) {\n animationQueue.shift()();\n if (animationQueue[0]) {\n kendo.runNextAnimation();\n }\n }\n });\n };\n\n kendo.parseQueryStringParams = function(url) {\n var queryString = url.split('?')[1] || \"\",\n params = {},\n paramParts = queryString.split(/&|=/),\n length = paramParts.length,\n idx = 0;\n\n for (; idx < length; idx += 2) {\n if (paramParts[idx] !== \"\") {\n params[decodeURIComponent(paramParts[idx])] = decodeURIComponent(paramParts[idx + 1]);\n }\n }\n\n return params;\n };\n\n kendo.elementUnderCursor = function(e) {\n if (typeof e.x.client != \"undefined\") {\n return document.elementFromPoint(e.x.client, e.y.client);\n }\n };\n\n kendo.wheelDeltaY = function(jQueryEvent) {\n var e = jQueryEvent.originalEvent,\n deltaY = e.wheelDeltaY,\n delta;\n\n if (e.wheelDelta) { // Webkit and IE\n if (deltaY === undefined$1 || deltaY) { // IE does not have deltaY, thus always scroll (horizontal scrolling is treated as vertical)\n delta = e.wheelDelta;\n }\n } else if (e.detail && e.axis === e.VERTICAL_AXIS) { // Firefox and Opera\n delta = (-e.detail) * 10;\n }\n\n return delta;\n };\n\n kendo.throttle = function(fn, delay) {\n var timeout;\n var lastExecTime = 0;\n\n if (!delay || delay <= 0) {\n return fn;\n }\n\n var throttled = function() {\n var that = this;\n var elapsed = +new Date() - lastExecTime;\n var args = arguments;\n\n function exec() {\n fn.apply(that, args);\n lastExecTime = +new Date();\n }\n\n // first execution\n if (!lastExecTime) {\n return exec();\n }\n\n if (timeout) {\n clearTimeout(timeout);\n }\n\n if (elapsed > delay) {\n exec();\n } else {\n timeout = setTimeout(exec, delay - elapsed);\n }\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n };\n\n return throttled;\n };\n\n\n kendo.caret = function(element, start, end) {\n var rangeElement;\n var isPosition = start !== undefined$1;\n\n if (end === undefined$1) {\n end = start;\n }\n\n if (element[0]) {\n element = element[0];\n }\n\n if (isPosition && element.disabled) {\n return;\n }\n\n try {\n if (element.selectionStart !== undefined$1) {\n if (isPosition) {\n element.focus();\n var mobile = support.mobileOS;\n if (mobile.wp || mobile.android) {// without the timeout the caret is at the end of the input\n setTimeout(function() { element.setSelectionRange(start, end); }, 0);\n }\n else {\n element.setSelectionRange(start, end);\n }\n } else {\n start = [element.selectionStart, element.selectionEnd];\n }\n } else if (document.selection) {\n if ($(element).is(\":visible\")) {\n element.focus();\n }\n\n rangeElement = element.createTextRange();\n\n if (isPosition) {\n rangeElement.collapse(true);\n rangeElement.moveStart(\"character\", start);\n rangeElement.moveEnd(\"character\", end - start);\n rangeElement.select();\n } else {\n var rangeDuplicated = rangeElement.duplicate(),\n selectionStart, selectionEnd;\n\n rangeElement.moveToBookmark(document.selection.createRange().getBookmark());\n rangeDuplicated.setEndPoint('EndToStart', rangeElement);\n selectionStart = rangeDuplicated.text.length;\n selectionEnd = selectionStart + rangeElement.text.length;\n\n start = [selectionStart, selectionEnd];\n }\n }\n } catch (e) {\n /* element is not focused or it is not in the DOM */\n start = [];\n }\n\n return start;\n };\n\n kendo.antiForgeryTokens = function() {\n var tokens = { },\n csrf_token = $(\"meta[name=csrf-token],meta[name=_csrf]\").attr(\"content\"),\n csrf_param = $(\"meta[name=csrf-param],meta[name=_csrf_header]\").attr(\"content\");\n\n $(\"input[name^='__RequestVerificationToken']\").each(function() {\n tokens[this.name] = this.value;\n });\n\n if (csrf_param !== undefined$1 && csrf_token !== undefined$1) {\n tokens[csrf_param] = csrf_token;\n }\n\n return tokens;\n };\n\n kendo.cycleForm = function(form) {\n var firstElement = form.find(\"input, .k-widget, .k-dropdownlist, .k-combobox\").first();\n var lastElement = form.find(\"button, .k-button\").last();\n\n function focus(el) {\n var widget = kendo.widgetInstance(el);\n\n if (widget && widget.focus) {\n widget.focus();\n } else {\n el.trigger(\"focus\");\n }\n }\n\n lastElement.on(\"keydown\", function(e) {\n if (e.keyCode == kendo.keys.TAB && !e.shiftKey) {\n e.preventDefault();\n focus(firstElement);\n }\n });\n\n firstElement.on(\"keydown\", function(e) {\n if (e.keyCode == kendo.keys.TAB && e.shiftKey) {\n e.preventDefault();\n focus(lastElement);\n }\n });\n };\n\n kendo.focusElement = function(element) {\n var scrollTopPositions = [];\n var scrollableParents = element.parentsUntil(\"body\")\n .filter(function(index, element) {\n var computedStyle = kendo.getComputedStyles(element, [\"overflow\"]);\n return computedStyle.overflow !== \"visible\";\n })\n .add(window);\n\n scrollableParents.each(function(index, parent) {\n scrollTopPositions[index] = $(parent).scrollTop();\n });\n\n try {\n //The setActive method does not cause the document to scroll to the active object in the current page\n element[0].setActive();\n } catch (e) {\n element[0].focus();\n }\n\n scrollableParents.each(function(index, parent) {\n $(parent).scrollTop(scrollTopPositions[index]);\n });\n };\n\n kendo.focusNextElement = function() {\n if (document.activeElement) {\n var focussable = $(\":kendoFocusable\");\n var index = focussable.index(document.activeElement);\n\n if (index > -1) {\n var nextElement = focussable[index + 1] || focussable[0];\n nextElement.focus();\n }\n }\n };\n\n kendo.trim = function(value) {\n if (!!value) {\n return value.toString().trim();\n } else {\n return \"\";\n }\n };\n\n kendo.getWidgetFocusableElement = function(element) {\n var nextFocusable = element.closest(\":kendoFocusable\"),\n widgetInstance = kendo.widgetInstance(element),\n target;\n\n if (nextFocusable.length) {\n target = nextFocusable;\n } else if (widgetInstance) {\n target = widgetInstance.options.name === 'Editor' ?\n $(widgetInstance.body) :\n widgetInstance.wrapper.find(\":kendoFocusable\").first();\n } else {\n target = element;\n }\n\n return target;\n };\n\n kendo.addAttribute = function(element, attribute, value) {\n var current = element.attr(attribute) || \"\";\n\n if (current.indexOf(value) < 0) {\n element.attr(attribute, (current + \" \" + value).trim());\n }\n };\n\n kendo.removeAttribute = function(element, attribute, value) {\n var current = element.attr(attribute) || \"\";\n\n element.attr(attribute, current.replace(value, \"\").trim());\n };\n\n kendo.toggleAttribute = function(element, attribute, value) {\n var current = element.attr(attribute) || \"\";\n\n if (current.indexOf(value) < 0) {\n kendo.addAttribute(element, attribute, value);\n } else {\n kendo.removeAttribute(element, attribute, value);\n }\n };\n\n kendo.matchesMedia = function(mediaQuery) {\n var media = kendo._bootstrapToMedia(mediaQuery) || mediaQuery;\n return support.matchMedia && window.matchMedia(media).matches;\n };\n\n kendo._bootstrapToMedia = function(bootstrapMedia) {\n return {\n \"xs\": \"(max-width: 576px)\",\n \"sm\": \"(min-width: 576px)\",\n \"md\": \"(min-width: 768px)\",\n \"lg\": \"(min-width: 992px)\",\n \"xl\": \"(min-width: 1200px)\"\n }[bootstrapMedia];\n };\n\n kendo.fileGroupMap = {\n audio: [\".aif\", \".iff\", \".m3u\", \".m4a\", \".mid\", \".mp3\", \".mpa\", \".wav\", \".wma\", \".ogg\", \".wav\", \".wma\", \".wpl\"],\n video: [\".3g2\", \".3gp\", \".avi\", \".asf\", \".flv\", \".m4u\", \".rm\", \".h264\", \".m4v\", \".mkv\", \".mov\", \".mp4\", \".mpg\",\n \".rm\", \".swf\", \".vob\", \".wmv\"],\n image: [\".ai\", \".dds\", \".heic\", \".jpe\", \"jfif\", \".jif\", \".jp2\", \".jps\", \".eps\", \".bmp\", \".gif\", \".jpeg\",\n \".jpg\", \".png\", \".ps\", \".psd\", \".svg\", \".svgz\", \".tif\", \".tiff\"],\n txt: [\".doc\", \".docx\", \".log\", \".pages\", \".tex\", \".wpd\", \".wps\", \".odt\", \".rtf\", \".text\", \".txt\", \".wks\"],\n presentation: [\".key\", \".odp\", \".pps\", \".ppt\", \".pptx\"],\n data: [\".xlr\", \".xls\", \".xlsx\"],\n programming: [\".tmp\", \".bak\", \".msi\", \".cab\", \".cpl\", \".cur\", \".dll\", \".dmp\", \".drv\", \".icns\", \".ico\", \".link\",\n \".sys\", \".cfg\", \".ini\", \".asp\", \".aspx\", \".cer\", \".csr\", \".css\", \".dcr\", \".htm\", \".html\", \".js\",\n \".php\", \".rss\", \".xhtml\"],\n pdf: [\".pdf\"],\n config: [\".apk\", \".app\", \".bat\", \".cgi\", \".com\", \".exe\", \".gadget\", \".jar\", \".wsf\"],\n zip: [\".7z\", \".cbr\", \".gz\", \".sitx\", \".arj\", \".deb\", \".pkg\", \".rar\", \".rpm\", \".tar.gz\", \".z\", \".zip\", \".zipx\"],\n \"disc-image\": [\".dmg\", \".iso\", \".toast\", \".vcd\", \".bin\", \".cue\", \".mdf\"]\n };\n\n kendo.getFileGroup = function(extension, withPrefix) {\n var fileTypeMap = kendo.fileGroupMap;\n var groups = Object.keys(fileTypeMap);\n var type = \"file\";\n\n if (extension === undefined$1 || !extension.length) {\n return type;\n }\n\n for (var i = 0; i < groups.length; i += 1) {\n var extensions = fileTypeMap[groups[i]];\n\n if (extensions.indexOf(extension.toLowerCase()) > -1) {\n return withPrefix ? \"file-\" + groups[i] : groups[i];\n }\n }\n\n return type;\n };\n\n kendo.getFileSizeMessage = function(size) {\n var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\n\n if (size === 0) {\n return '0 Byte';\n }\n\n var i = parseInt(Math.floor(Math.log(size) / Math.log(1024)), 10);\n return Math.round(size / Math.pow(1024, i), 2) + ' ' + sizes[i];\n };\n\n kendo.selectorFromClasses = function(classes) {\n return \".\" + classes.split(\" \").join(\".\");\n };\n\n // Standardized Properties and CSS classes\n\n var themeColorValues = ['base', 'primary', 'secondary', 'tertiary', 'inherit', 'info', 'success', 'warning', 'error', 'dark', 'light', 'inverse'];\n var fillValues = ['solid', 'outline', 'flat'];\n //var postitionValues = ['edge', 'outside', 'inside'];\n var shapeValues = ['rectangle', 'square'];\n var sizeValues = [ ['small', 'sm'], ['medium', 'md'], ['large', 'lg'] ];\n var roundedValues = [ ['small', 'sm'], ['medium', 'md'], ['large', 'lg'] ];\n //var alignValues = [ ['top start', 'top-start'], ['top end', 'top-end'], ['bottom start', 'bottom-start'], ['bottom end', 'bottom-end'] ];\n var positionModeValues = [ 'fixed', 'static', 'sticky', 'absolute' ];\n var resizeValues = [ ['both', 'resize'], ['horizontal', 'resize-x'], ['vertical', 'resize-y'] ];\n var overflowValues = [ 'auto', 'hidden', 'visible', 'scroll', 'clip' ];\n var layoutFlowValues = [ ['vertical', '!k-flex-col'], ['horizontal', '!k-flex-row'] ];\n\n kendo.cssProperties = (function() {\n var defaultValues = {},\n propertyDictionary = {};\n\n function registerPrefix(widget, prefix) {\n var dict = kendo.cssProperties.propertyDictionary;\n\n if (!dict[widget]) {\n dict[widget] = {};\n }\n\n dict[widget][PREFIX] = prefix;\n }\n\n function registerValues(widget, args) {\n var dict = kendo.cssProperties.propertyDictionary,\n i, j, prop, values, newValues, currentValue;\n\n for (i = 0; i < args.length; i++) {\n prop = args[i].prop;\n newValues = args[i].values;\n\n if (!dict[widget][prop]) {\n dict[widget][prop] = {};\n }\n\n values = dict[widget][prop];\n\n for (j = 0; j < newValues.length; j++) {\n currentValue = newValues[j];\n\n if (isArray(newValues[j])) {\n values[currentValue[0]] = currentValue[1];\n } else {\n values[currentValue] = currentValue;\n }\n }\n }\n }\n\n function registerCssClass(propName, value, shorthand) {\n if (!defaultValues[propName]) {\n defaultValues[propName] = {};\n }\n\n defaultValues[propName][value] = shorthand || value;\n }\n\n function registerCssClasses(propName, arr) {\n for (var i = 0; i < arr.length; i++) {\n if (isArray(arr[i])) {\n registerCssClass(propName, arr[i][0], arr[i][1]);\n } else {\n registerCssClass(propName, arr[i]);\n }\n }\n }\n\n function getValidClass(args) {\n var widget = args.widget,\n propName = args.propName,\n value = args.value,\n fill = args.fill,\n cssProperties = kendo.cssProperties,\n defaultValues = cssProperties.defaultValues[propName],\n widgetProperties = cssProperties.propertyDictionary[widget],\n overridePrefix = args.prefix,\n widgetValues, validValue, prefix;\n\n if (!widgetProperties) {\n return \"\";\n }\n\n widgetValues = widgetProperties[propName];\n validValue = widgetValues ? widgetValues[value] || defaultValues[value] : defaultValues[value];\n\n if (validValue) {\n if (propName === \"themeColor\") {\n prefix = widgetProperties[PREFIX] + fill + \"-\";\n } else if (propName === \"positionMode\") {\n prefix = \"k-pos-\";\n } else if (propName === \"rounded\") {\n prefix = \"k-rounded-\";\n } else if (propName === \"resize\") {\n prefix = \"k-\";\n } else if (propName === \"overflow\") {\n prefix = \"k-overflow-\";\n } else if (propName === \"layoutFlow\") {\n prefix = \"\";\n } else {\n prefix = widgetProperties[PREFIX];\n }\n\n prefix = overridePrefix || prefix;\n\n return prefix + validValue;\n } else {\n return \"\";\n }\n }\n\n registerCssClasses(\"themeColor\", themeColorValues);\n registerCssClasses(\"fillMode\", fillValues);\n registerCssClasses(\"shape\", shapeValues);\n registerCssClasses(\"size\", sizeValues);\n registerCssClasses(\"positionMode\", positionModeValues);\n registerCssClasses(\"rounded\", roundedValues);\n registerCssClasses(\"resize\", resizeValues);\n registerCssClasses(\"overflow\", overflowValues);\n registerCssClasses(\"layoutFlow\", layoutFlowValues);\n\n return {\n positionModeValues: positionModeValues,\n roundedValues: roundedValues,\n sizeValues: sizeValues,\n shapeValues: shapeValues,\n fillModeValues: fillValues,\n themeColorValues: themeColorValues,\n\n defaultValues: defaultValues,\n propertyDictionary: propertyDictionary,\n\n registerValues: registerValues,\n getValidClass: getValidClass,\n registerPrefix: registerPrefix\n };\n }());\n\n //To do: delete below after implementing new styles and classes for BottomNavigation\n kendo.registerCssClass = function(propName, value, shorthand) {\n if (!kendo.propertyToCssClassMap[propName]) {\n kendo.propertyToCssClassMap[propName] = {};\n }\n\n kendo.propertyToCssClassMap[propName][value] = shorthand || value;\n };\n\n kendo.registerCssClasses = function(propName, arr) {\n for (var i = 0; i < arr.length; i++) {\n if (isArray(arr[i])) {\n kendo.registerCssClass(propName, arr[i][0], arr[i][1]);\n } else {\n kendo.registerCssClass(propName, arr[i]);\n }\n }\n };\n\n kendo.getValidCssClass = function(prefix, propName, value) {\n var validValue = kendo.propertyToCssClassMap[propName][value];\n\n if (validValue) {\n return prefix + validValue;\n }\n };\n\n kendo.propertyToCssClassMap = {};\n\n kendo.registerCssClasses(\"themeColor\", themeColorValues);\n kendo.registerCssClasses(\"fill\", fillValues);\n //kendo.registerCssClasses(\"postition\", postitionValues);\n kendo.registerCssClasses(\"shape\", shapeValues);\n kendo.registerCssClasses(\"size\", sizeValues);\n //kendo.registerCssClasses(\"align\", alignValues);\n kendo.registerCssClasses(\"positionMode\", positionModeValues);\n\n kendo.applyStylesFromKendoAttributes = function(element, styleProps) {\n let selector = styleProps.map(styleProp=> `[${kendo.attr(`style-${styleProp}`)}]`).join(',');\n element.find(selector).addBack(selector).each((_, currentElement) => {\n let $currentElement = $(currentElement);\n styleProps.forEach(function(styleProp) {\n let kendoAttr = kendo.attr(`style-${styleProp}`);\n if ($currentElement.attr(kendoAttr)) {\n $currentElement.css(styleProp, $currentElement.attr(kendoAttr));\n $currentElement.removeAttr(kendoAttr);\n }\n });\n });\n };\n\n // jQuery deferred helpers\n\n // influenced from: https://gist.github.com/fearphage/4341799\n kendo.whenAll = function(array) {\n var resolveValues = arguments.length == 1 && Array.isArray(array) ? array : Array.prototype.slice.call(arguments),\n length = resolveValues.length,\n remaining = length,\n deferred = $.Deferred(),\n i = 0,\n failed = 0,\n rejectContexts = Array(length),\n rejectValues = Array(length),\n resolveContexts = Array(length),\n value;\n\n function updateFunc(index, contexts, values) {\n return function() {\n if (values != resolveValues) {\n failed++;\n }\n\n deferred.notifyWith(\n contexts[index] = this,\n values[index] = Array.prototype.slice.call(arguments)\n );\n\n if (!(--remaining)) {\n deferred[(!failed ? 'resolve' : 'reject') + 'With'](contexts, values);\n }\n };\n }\n\n for (; i < length; i++) {\n if ((value = resolveValues[i]) && kendo.isFunction(value.promise)) {\n value.promise()\n .done(updateFunc(i, resolveContexts, resolveValues))\n .fail(updateFunc(i, rejectContexts, rejectValues));\n }\n\n else {\n deferred.notifyWith(this, value);\n --remaining;\n }\n }\n\n if (!remaining) {\n deferred.resolveWith(resolveContexts, resolveValues);\n }\n\n return deferred.promise();\n };\n\n // kendo.saveAs -----------------------------------------------\n (function() {\n function postToProxy(dataURI, fileName, proxyURL, proxyTarget) {\n var form = $(\"
\").attr({\n action: proxyURL,\n method: \"POST\",\n target: proxyTarget\n });\n\n var data = kendo.antiForgeryTokens();\n data.fileName = fileName;\n\n var parts = dataURI.split(\";base64,\");\n data.contentType = parts[0].replace(\"data:\", \"\");\n data.base64 = parts[1];\n\n for (var name in data) {\n if (data.hasOwnProperty(name)) {\n $('').attr({\n value: data[name],\n name: name,\n type: \"hidden\"\n }).appendTo(form);\n }\n }\n\n form.appendTo(\"body\").submit().remove();\n }\n\n var fileSaver = document.createElement(\"a\");\n var downloadAttribute = \"download\" in fileSaver && !kendo.support.browser.edge;\n\n function saveAsBlob(dataURI, fileName) {\n var blob = dataURI; // could be a Blob object\n\n if (typeof dataURI == \"string\") {\n var parts = dataURI.split(\";base64,\");\n var contentType = parts[0];\n var base64 = atob(parts[1]);\n var array = new Uint8Array(base64.length);\n\n for (var idx = 0; idx < base64.length; idx++) {\n array[idx] = base64.charCodeAt(idx);\n }\n blob = new Blob([array.buffer], { type: contentType });\n }\n\n navigator.msSaveBlob(blob, fileName);\n }\n\n function saveAsDataURI(dataURI, fileName) {\n if (window.Blob && dataURI instanceof Blob) {\n dataURI = URL.createObjectURL(dataURI);\n }\n\n fileSaver.download = fileName;\n fileSaver.href = dataURI;\n\n var e = document.createEvent(\"MouseEvents\");\n e.initMouseEvent(\"click\", true, false, window,\n 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n\n fileSaver.dispatchEvent(e);\n setTimeout(function() {\n URL.revokeObjectURL(dataURI);\n });\n }\n\n kendo.saveAs = function(options) {\n var save = postToProxy;\n\n if (!options.forceProxy) {\n if (downloadAttribute) {\n save = saveAsDataURI;\n } else if (navigator.msSaveBlob) {\n save = saveAsBlob;\n }\n }\n\n save(options.dataURI, options.fileName, options.proxyURL, options.proxyTarget);\n };\n })();\n\n // kendo proxySetters\n kendo.proxyModelSetters = function proxyModelSetters(data) {\n var observable = {};\n\n Object.keys(data || {}).forEach(function(property) {\n Object.defineProperty(observable, property, {\n get: function() {\n return data[property];\n },\n set: function(value) {\n data[property] = value;\n data.dirty = true;\n }\n });\n });\n\n return observable;\n };\n\n kendo.getSeriesColors = function() {\n var seriesColorsTemplate = '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
',\n series = $(seriesColorsTemplate),\n colors = [];\n\n series.appendTo($('body'));\n\n series.each(function(i, item) {\n colors.push($(item).css(\"background-color\"));\n });\n\n series.remove();\n\n return colors;\n };\n\n kendo.isElement = function(element) {\n return element instanceof Element || element instanceof HTMLDocument;\n };\n\n // Kendo defaults\n (function() {\n\n kendo.defaults = kendo.defaults || {};\n kendo.setDefaults = function(key, value) {\n var path = key.split(\".\");\n var curr = kendo.defaults;\n\n key = path.pop();\n\n path.forEach(function(part) {\n if (curr[part] === undefined$1) {\n curr[part] = {};\n }\n\n curr = curr[part];\n });\n\n if (value.constructor === Object) {\n curr[key] = deepExtend({}, curr[key], value);\n } else {\n curr[key] = value;\n }\n };\n\n // Use external global flags for templates.\n kendo.debugTemplates = window.DEBUG_KENDO_TEMPLATES;\n\n // Setup default mediaQuery breakpoints\n kendo.setDefaults('breakpoints', defaultBreakpoints);\n })();\n\n // Implement type() as it has been depricated in jQuery\n (function() {\n kendo.class2type = {};\n\n jQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n function( _i, name ) {\n kendo.class2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n } );\n\n kendo.type = function(obj) {\n if ( obj == null ) {\n return obj + \"\";\n }\n\n // Support: Android <=2.3 only (functionish RegExp)\n return typeof obj === \"object\" || typeof obj === \"function\" ?\n kendo.class2type[Object.prototype.toString.call(obj)] || \"object\" :\n typeof obj;\n };\n }());\n\n var KendoLicensing = { validatePackage: function() { return true; },setScriptKey: function() {} };\n\n window.KendoLicensing = {\n setScriptKey: KendoLicensing.setScriptKey\n };\n\n function validatePackage() {\n return KendoLicensing.validatePackage(packageMetadata);\n }\n\n function addWatermarkOverlay(el) {\n KendoLicensing.addWatermarkOverlay && KendoLicensing.addWatermarkOverlay(el, packageMetadata);\n KendoLicensing.showBanner && KendoLicensing.showBanner(packageMetadata);\n }\n\n })(jQuery, window);\n var kendo$_ = kendo;\n\n var __meta__$X = {\n id: \"fx\",\n name: \"Effects\",\n category: \"framework\",\n description: \"Required for animation effects in all Kendo UI widgets.\",\n depends: [ \"core\" ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n fx = kendo.effects,\n each = $.each,\n extend = $.extend,\n support = kendo.support,\n browser = support.browser,\n transforms = support.transforms,\n transitions = support.transitions,\n scaleProperties = { scale: 0, scalex: 0, scaley: 0, scale3d: 0 },\n translateProperties = { translate: 0, translatex: 0, translatey: 0, translate3d: 0 },\n hasZoom = (typeof document.documentElement.style.zoom !== \"undefined\") && !transforms,\n matrix3dRegExp = /matrix3?d?\\s*\\(.*,\\s*([\\d\\.\\-]+)\\w*?,\\s*([\\d\\.\\-]+)\\w*?,\\s*([\\d\\.\\-]+)\\w*?,\\s*([\\d\\.\\-]+)\\w*?/i,\n cssParamsRegExp = /^(-?[\\d\\.\\-]+)?[\\w\\s]*,?\\s*(-?[\\d\\.\\-]+)?[\\w\\s]*/i,\n translateXRegExp = /translatex?$/i,\n oldEffectsRegExp = /(zoom|fade|expand)(\\w+)/,\n singleEffectRegExp = /(zoom|fade|expand)/,\n unitRegExp = /[xy]$/i,\n transformProps = [\"perspective\", \"rotate\", \"rotatex\", \"rotatey\", \"rotatez\", \"rotate3d\", \"scale\", \"scalex\", \"scaley\", \"scalez\", \"scale3d\", \"skew\", \"skewx\", \"skewy\", \"translate\", \"translatex\", \"translatey\", \"translatez\", \"translate3d\", \"matrix\", \"matrix3d\"],\n transform2d = [\"rotate\", \"scale\", \"scalex\", \"scaley\", \"skew\", \"skewx\", \"skewy\", \"translate\", \"translatex\", \"translatey\", \"matrix\"],\n transform2units = { \"rotate\": \"deg\", scale: \"\", skew: \"px\", translate: \"px\" },\n cssPrefix = transforms.css,\n round = Math.round,\n BLANK = \"\",\n PX = \"px\",\n NONE = \"none\",\n AUTO = \"auto\",\n WIDTH = \"width\",\n HEIGHT = \"height\",\n HIDDEN = \"hidden\",\n ORIGIN = \"origin\",\n ABORT_ID = \"abortId\",\n OVERFLOW = \"overflow\",\n TRANSLATE = \"translate\",\n POSITION = \"position\",\n COMPLETE_CALLBACK = \"completeCallback\",\n TRANSITION = cssPrefix + \"transition\",\n TRANSFORM = cssPrefix + \"transform\",\n BACKFACE = cssPrefix + \"backface-visibility\",\n PERSPECTIVE = cssPrefix + \"perspective\",\n DEFAULT_PERSPECTIVE = \"1500px\",\n TRANSFORM_PERSPECTIVE = \"perspective(\" + DEFAULT_PERSPECTIVE + \")\",\n directions = {\n left: {\n reverse: \"right\",\n property: \"left\",\n transition: \"translatex\",\n vertical: false,\n modifier: -1\n },\n right: {\n reverse: \"left\",\n property: \"left\",\n transition: \"translatex\",\n vertical: false,\n modifier: 1\n },\n down: {\n reverse: \"up\",\n property: \"top\",\n transition: \"translatey\",\n vertical: true,\n modifier: 1\n },\n up: {\n reverse: \"down\",\n property: \"top\",\n transition: \"translatey\",\n vertical: true,\n modifier: -1\n },\n top: {\n reverse: \"bottom\"\n },\n bottom: {\n reverse: \"top\"\n },\n \"in\": {\n reverse: \"out\",\n modifier: -1\n },\n out: {\n reverse: \"in\",\n modifier: 1\n },\n\n vertical: {\n reverse: \"vertical\"\n },\n\n horizontal: {\n reverse: \"horizontal\"\n }\n };\n\n kendo.directions = directions;\n\n extend($.fn, {\n kendoStop: function(clearQueue, gotoEnd) {\n if (transitions) {\n return fx.stopQueue(this, clearQueue || false, gotoEnd || false);\n } else {\n return this.stop(clearQueue, gotoEnd);\n }\n }\n });\n\n /* jQuery support for all transform animations (FF 3.5/3.6, Opera 10.x, IE9 */\n\n if (transforms && !transitions) {\n each(transform2d, function(idx, value) {\n $.fn[value] = function(val) {\n if (typeof val == \"undefined\") {\n return animationProperty(this, value);\n } else {\n var that = $(this)[0],\n transformValue = value + \"(\" + val + transform2units[value.replace(unitRegExp, \"\")] + \")\";\n\n if (that.style.cssText.indexOf(TRANSFORM) == -1) {\n $(this).css(TRANSFORM, transformValue);\n } else {\n that.style.cssText = that.style.cssText.replace(new RegExp(value + \"\\\\(.*?\\\\)\", \"i\"), transformValue);\n }\n }\n return this;\n };\n\n $.fx.step[value] = function(fx) {\n $(fx.elem)[value](fx.now);\n };\n });\n\n var curProxy = $.fx.prototype.cur;\n $.fx.prototype.cur = function() {\n if (transform2d.indexOf(this.prop) != -1) {\n return parseFloat($(this.elem)[this.prop]());\n }\n\n return curProxy.apply(this, arguments);\n };\n }\n\n kendo.toggleClass = function(element, classes, options, add) {\n if (classes) {\n classes = classes.split(\" \");\n\n if (transitions) {\n options = extend({\n exclusive: \"all\",\n duration: 400,\n ease: \"ease-out\"\n }, options);\n\n element.css(TRANSITION, options.exclusive + \" \" + options.duration + \"ms \" + options.ease);\n setTimeout(function() {\n element.css(TRANSITION, \"\").css(HEIGHT);\n }, options.duration); // TODO: this should fire a kendoAnimate session instead.\n }\n\n each(classes, function(idx, value) {\n element.toggleClass(value, add);\n });\n }\n\n return element;\n };\n\n kendo.parseEffects = function(input, mirror) {\n var effects = {};\n\n if (typeof input === \"string\") {\n each(input.split(\" \"), function(idx, value) {\n var redirectedEffect = !singleEffectRegExp.test(value),\n resolved = value.replace(oldEffectsRegExp, function(match, $1, $2) {\n return $1 + \":\" + $2.toLowerCase();\n }), // Support for old zoomIn/fadeOut style, now deprecated.\n effect = resolved.split(\":\"),\n direction = effect[1],\n effectBody = {};\n\n if (effect.length > 1) {\n effectBody.direction = (mirror && redirectedEffect ? directions[direction].reverse : direction);\n }\n\n effects[effect[0]] = effectBody;\n });\n } else {\n each(input, function(idx) {\n var direction = this.direction;\n\n if (direction && mirror && !singleEffectRegExp.test(idx)) {\n this.direction = directions[direction].reverse;\n }\n\n effects[idx] = this;\n });\n }\n\n return effects;\n };\n\n function parseInteger(value) {\n return parseInt(value, 10);\n }\n\n function parseCSS(element, property) {\n return parseInteger(element.css(property));\n }\n\n function keys(obj) {\n var acc = [];\n for (var propertyName in obj) {\n acc.push(propertyName);\n }\n return acc;\n }\n\n function strip3DTransforms(properties) {\n for (var key in properties) {\n if (transformProps.indexOf(key) != -1 && transform2d.indexOf(key) == -1) {\n delete properties[key];\n }\n }\n\n return properties;\n }\n\n function normalizeCSS(element, properties) {\n var transformation = [], cssValues = {}, lowerKey, key, value, isTransformed;\n\n for (key in properties) {\n lowerKey = key.toLowerCase();\n isTransformed = transforms && transformProps.indexOf(lowerKey) != -1;\n\n if (!support.hasHW3D && isTransformed && transform2d.indexOf(lowerKey) == -1) {\n delete properties[key];\n } else {\n value = properties[key];\n\n if (isTransformed) {\n transformation.push(key + \"(\" + value + \")\");\n } else {\n cssValues[key] = value;\n }\n }\n }\n\n if (transformation.length) {\n cssValues[TRANSFORM] = transformation.join(\" \");\n }\n\n return cssValues;\n }\n\n if (transitions) {\n extend(fx, {\n transition: function(element, properties, options) {\n var css,\n delay = 0,\n oldKeys = element.data(\"keys\") || [],\n timeoutID;\n\n options = extend({\n duration: 200,\n ease: \"ease-out\",\n complete: null,\n exclusive: \"all\"\n },\n options\n );\n\n var stopTransitionCalled = false;\n\n var stopTransition = function() {\n if (!stopTransitionCalled) {\n stopTransitionCalled = true;\n\n if (timeoutID) {\n clearTimeout(timeoutID);\n timeoutID = null;\n }\n\n element\n .removeData(ABORT_ID)\n .dequeue()\n .css(TRANSITION, \"\")\n .css(TRANSITION);\n\n options.complete.call(element);\n }\n };\n\n options.duration = $.fx ? $.fx.speeds[options.duration] || options.duration : options.duration;\n\n css = normalizeCSS(element, properties);\n\n $.merge(oldKeys, keys(css));\n\n if ($.hasOwnProperty(\"uniqueSort\")) {\n element\n .data(\"keys\", $.uniqueSort(oldKeys))\n .height();\n } else {\n element\n .data(\"keys\", $.unique(oldKeys))\n .height();\n }\n\n element.css(TRANSITION, options.exclusive + \" \" + options.duration + \"ms \" + options.ease).css(TRANSITION);\n element.css(css).css(TRANSFORM);\n\n /**\n * Use transitionEnd event for browsers who support it - but duplicate it with setTimeout, as the transitionEnd event will not be triggered if no CSS properties change.\n * This should be cleaned up at some point (widget by widget), and refactored to widgets not relying on the complete callback if no transition occurs.\n *\n * For IE9 and below, resort to setTimeout.\n */\n if (transitions.event) {\n element.one(transitions.event, stopTransition);\n if (options.duration !== 0) {\n delay = 500;\n }\n }\n\n timeoutID = setTimeout(stopTransition, options.duration + delay);\n element.data(ABORT_ID, timeoutID);\n element.data(COMPLETE_CALLBACK, stopTransition);\n },\n\n stopQueue: function(element, clearQueue, gotoEnd) {\n var cssValues,\n taskKeys = element.data(\"keys\"),\n retainPosition = (!gotoEnd && taskKeys),\n completeCallback = element.data(COMPLETE_CALLBACK);\n\n if (retainPosition) {\n cssValues = kendo.getComputedStyles(element[0], taskKeys);\n }\n\n if (completeCallback) {\n completeCallback();\n }\n\n if (retainPosition) {\n element.css(cssValues);\n }\n\n return element\n .removeData(\"keys\")\n .stop(clearQueue);\n }\n });\n }\n\n function animationProperty(element, property) {\n if (transforms) {\n var transform = element.css(TRANSFORM);\n if (transform == NONE) {\n return property == \"scale\" ? 1 : 0;\n }\n\n var match = transform.match(new RegExp(property + \"\\\\s*\\\\(([\\\\d\\\\w\\\\.]+)\")),\n computed = 0;\n\n if (match) {\n computed = parseInteger(match[1]);\n } else {\n match = transform.match(matrix3dRegExp) || [0, 0, 0, 0, 0];\n property = property.toLowerCase();\n\n if (translateXRegExp.test(property)) {\n computed = parseFloat(match[3] / match[2]);\n } else if (property == \"translatey\") {\n computed = parseFloat(match[4] / match[2]);\n } else if (property == \"scale\") {\n computed = parseFloat(match[2]);\n } else if (property == \"rotate\") {\n computed = parseFloat(Math.atan2(match[2], match[1]));\n }\n }\n\n return computed;\n } else {\n return parseFloat(element.css(property));\n }\n }\n\n var EffectSet = kendo.Class.extend({\n init: function(element, options) {\n var that = this;\n\n that.element = element;\n that.effects = [];\n that.options = options;\n that.restore = [];\n },\n\n run: function(effects) {\n var that = this,\n effect,\n idx, jdx,\n length = effects.length,\n element = that.element,\n options = that.options,\n deferred = $.Deferred(),\n start = {},\n end = {},\n target,\n children,\n childrenLength;\n\n that.effects = effects;\n\n deferred.done(that.complete.bind(that));\n\n element.data(\"animating\", true);\n\n for (idx = 0; idx < length; idx ++) {\n effect = effects[idx];\n\n effect.setReverse(options.reverse);\n effect.setOptions(options);\n\n that.addRestoreProperties(effect.restore);\n\n effect.prepare(start, end);\n\n children = effect.children();\n\n for (jdx = 0, childrenLength = children.length; jdx < childrenLength; jdx ++) {\n children[jdx].duration(options.duration).run();\n }\n }\n\n // legacy support for options.properties\n for (var effectName in options.effects) {\n extend(end, options.effects[effectName].properties);\n }\n\n // Show the element initially\n if (!element.is(\":visible\")) {\n extend(start, { display: element.data(\"olddisplay\") || \"block\" });\n }\n\n if (transforms && !options.reset) {\n target = element.data(\"targetTransform\");\n\n if (target) {\n start = extend(target, start);\n }\n }\n\n start = normalizeCSS(element, start);\n\n if (transforms && !transitions) {\n start = strip3DTransforms(start);\n }\n\n element.css(start)\n .css(TRANSFORM); // Nudge\n\n for (idx = 0; idx < length; idx ++) {\n effects[idx].setup();\n }\n\n if (options.init) {\n options.init();\n }\n\n element.data(\"targetTransform\", end);\n fx.animate(element, end, extend({}, options, { complete: deferred.resolve }));\n\n return deferred.promise();\n },\n\n stop: function() {\n $(this.element).kendoStop(true, true);\n },\n\n addRestoreProperties: function(restore) {\n var element = this.element,\n value,\n i = 0,\n length = restore.length;\n\n for (; i < length; i ++) {\n value = restore[i];\n\n this.restore.push(value);\n\n if (!element.data(value)) {\n element.data(value, element.css(value));\n }\n }\n },\n\n restoreCallback: function() {\n var element = this.element;\n\n for (var i = 0, length = this.restore.length; i < length; i ++) {\n var value = this.restore[i];\n element.css(value, element.data(value));\n }\n },\n\n complete: function() {\n var that = this,\n idx = 0,\n element = that.element,\n options = that.options,\n effects = that.effects,\n length = effects.length;\n\n element\n .removeData(\"animating\")\n .dequeue(); // call next animation from the queue\n\n if (options.hide) {\n element.data(\"olddisplay\", element.css(\"display\")).hide();\n }\n\n this.restoreCallback();\n\n if (hasZoom && !transforms) {\n setTimeout(this.restoreCallback.bind(this), 0); // Again jQuery callback in IE8-\n }\n\n for (; idx < length; idx ++) {\n effects[idx].teardown();\n }\n\n if (options.completeCallback) {\n options.completeCallback(element);\n }\n }\n });\n\n fx.promise = function(element, options) {\n var effects = [],\n effectClass,\n effectSet = new EffectSet(element, options),\n parsedEffects = kendo.parseEffects(options.effects),\n effect;\n\n options.effects = parsedEffects;\n\n for (var effectName in parsedEffects) {\n effectClass = fx[capitalize(effectName)];\n\n if (effectClass) {\n effect = new effectClass(element, parsedEffects[effectName].direction);\n effects.push(effect);\n }\n }\n\n if (effects[0]) {\n effectSet.run(effects);\n } else { // Not sure how would an fx promise reach this state - means that you call kendoAnimate with no valid effects? Why?\n if (!element.is(\":visible\")) {\n element.css({ display: element.data(\"olddisplay\") || \"block\" }).css(\"display\");\n }\n\n if (options.init) {\n options.init();\n }\n\n element.dequeue();\n effectSet.complete();\n }\n };\n\n extend(fx, {\n animate: function(elements, properties, options) {\n var useTransition = options.transition !== false;\n delete options.transition;\n\n if (transitions && \"transition\" in fx && useTransition) {\n fx.transition(elements, properties, options);\n } else {\n if (transforms) {\n elements.animate(strip3DTransforms(properties), { queue: false, show: false, hide: false, duration: options.duration, complete: options.complete }); // Stop animate from showing/hiding the element to be able to hide it later on.\n } else {\n elements.each(function() {\n var element = $(this),\n multiple = {};\n\n each(transformProps, function(idx, value) { // remove transforms to avoid IE and older browsers confusion\n var params,\n currentValue = properties ? properties[value] + \" \" : null; // We need to match\n\n if (currentValue) {\n var single = properties;\n\n if (value in scaleProperties && properties[value] !== undefined$1) {\n params = currentValue.match(cssParamsRegExp);\n if (transforms) {\n extend(single, { scale: +params[0] });\n }\n } else {\n if (value in translateProperties && properties[value] !== undefined$1) {\n var position = element.css(POSITION),\n isFixed = (position == \"absolute\" || position == \"fixed\");\n\n if (!element.data(TRANSLATE)) {\n if (isFixed) {\n element.data(TRANSLATE, {\n top: parseCSS(element, \"top\") || 0,\n left: parseCSS(element, \"left\") || 0,\n bottom: parseCSS(element, \"bottom\"),\n right: parseCSS(element, \"right\")\n });\n } else {\n element.data(TRANSLATE, {\n top: parseCSS(element, \"marginTop\") || 0,\n left: parseCSS(element, \"marginLeft\") || 0\n });\n }\n }\n\n var originalPosition = element.data(TRANSLATE);\n\n params = currentValue.match(cssParamsRegExp);\n if (params) {\n\n var dX = value == TRANSLATE + \"y\" ? +null : +params[1],\n dY = value == TRANSLATE + \"y\" ? +params[1] : +params[2];\n\n if (isFixed) {\n if (!isNaN(originalPosition.right)) {\n if (!isNaN(dX)) { extend(single, { right: originalPosition.right - dX }); }\n } else {\n if (!isNaN(dX)) { extend(single, { left: originalPosition.left + dX }); }\n }\n\n if (!isNaN(originalPosition.bottom)) {\n if (!isNaN(dY)) { extend(single, { bottom: originalPosition.bottom - dY }); }\n } else {\n if (!isNaN(dY)) { extend(single, { top: originalPosition.top + dY }); }\n }\n } else {\n if (!isNaN(dX)) { extend(single, { marginLeft: originalPosition.left + dX }); }\n if (!isNaN(dY)) { extend(single, { marginTop: originalPosition.top + dY }); }\n }\n }\n }\n }\n\n if (!transforms && value != \"scale\" && value in single) {\n delete single[value];\n }\n\n if (single) {\n extend(multiple, single);\n }\n }\n });\n\n if (browser.msie) {\n delete multiple.scale;\n }\n\n element.animate(multiple, { queue: false, show: false, hide: false, duration: options.duration, complete: options.complete }); // Stop animate from showing/hiding the element to be able to hide it later on.\n });\n }\n }\n }\n });\n\n fx.animatedPromise = fx.promise;\n\n var Effect = kendo.Class.extend({\n init: function(element, direction) {\n var that = this;\n that.element = element;\n that._direction = direction;\n that.options = {};\n that._additionalEffects = [];\n\n if (!that.restore) {\n that.restore = [];\n }\n },\n\n // Public API\n reverse: function() {\n this._reverse = true;\n return this.run();\n },\n\n play: function() {\n this._reverse = false;\n return this.run();\n },\n\n add: function(additional) {\n this._additionalEffects.push(additional);\n return this;\n },\n\n direction: function(value) {\n this._direction = value;\n return this;\n },\n\n duration: function(duration) {\n this._duration = duration;\n return this;\n },\n\n compositeRun: function() {\n var that = this,\n effectSet = new EffectSet(that.element, { reverse: that._reverse, duration: that._duration }),\n effects = that._additionalEffects.concat([ that ]);\n\n return effectSet.run(effects);\n },\n\n run: function() {\n if (this._additionalEffects && this._additionalEffects[0]) {\n return this.compositeRun();\n }\n\n var that = this,\n element = that.element,\n idx = 0,\n restore = that.restore,\n length = restore.length,\n value,\n deferred = $.Deferred(),\n start = {},\n end = {},\n target,\n children = that.children(),\n childrenLength = children.length;\n\n deferred.done(that._complete.bind(that));\n\n element.data(\"animating\", true);\n\n for (idx = 0; idx < length; idx ++) {\n value = restore[idx];\n\n if (!element.data(value)) {\n element.data(value, element.css(value));\n }\n }\n\n for (idx = 0; idx < childrenLength; idx ++) {\n children[idx].duration(that._duration).run();\n }\n\n that.prepare(start, end);\n\n if (!element.is(\":visible\")) {\n extend(start, { display: element.data(\"olddisplay\") || \"block\" });\n }\n\n if (transforms) {\n target = element.data(\"targetTransform\");\n\n if (target) {\n start = extend(target, start);\n }\n }\n\n start = normalizeCSS(element, start);\n\n if (transforms && !transitions) {\n start = strip3DTransforms(start);\n }\n\n element.css(start).css(TRANSFORM); // Trick webkit into re-rendering\n\n that.setup();\n\n element.data(\"targetTransform\", end);\n fx.animate(element, end, { duration: that._duration, complete: deferred.resolve });\n\n return deferred.promise();\n },\n\n stop: function() {\n var idx = 0,\n children = this.children(),\n childrenLength = children.length;\n\n for (idx = 0; idx < childrenLength; idx ++) {\n children[idx].stop();\n }\n\n $(this.element).kendoStop(true, true);\n return this;\n },\n\n restoreCallback: function() {\n var element = this.element;\n\n for (var i = 0, length = this.restore.length; i < length; i ++) {\n var value = this.restore[i];\n element.css(value, element.data(value));\n }\n },\n\n _complete: function() {\n var that = this,\n element = that.element;\n\n element\n .removeData(\"animating\")\n .dequeue(); // call next animation from the queue\n\n that.restoreCallback();\n\n if (that.shouldHide()) {\n element.data(\"olddisplay\", element.css(\"display\")).hide();\n }\n\n if (hasZoom && !transforms) {\n setTimeout(that.restoreCallback.bind(that), 0); // Again jQuery callback in IE8-\n }\n\n that.teardown();\n },\n\n /////////////////////////// Support for kendo.animate;\n setOptions: function(options) {\n extend(true, this.options, options);\n },\n\n children: function() {\n return [];\n },\n\n shouldHide: $.noop,\n\n setup: $.noop,\n prepare: $.noop,\n teardown: $.noop,\n directions: [],\n\n setReverse: function(reverse) {\n this._reverse = reverse;\n return this;\n }\n });\n\n function capitalize(word) {\n return word.charAt(0).toUpperCase() + word.substring(1);\n }\n\n function createEffect(name, definition) {\n var effectClass = Effect.extend(definition),\n directions = effectClass.prototype.directions;\n\n fx[capitalize(name)] = effectClass;\n\n fx.Element.prototype[name] = function(direction, opt1, opt2, opt3) {\n return new effectClass(this.element, direction, opt1, opt2, opt3);\n };\n\n each(directions, function(idx, theDirection) {\n fx.Element.prototype[name + capitalize(theDirection)] = function(opt1, opt2, opt3) {\n return new effectClass(this.element, theDirection, opt1, opt2, opt3);\n };\n });\n }\n\n var FOUR_DIRECTIONS = [\"left\", \"right\", \"up\", \"down\"],\n IN_OUT = [\"in\", \"out\"];\n\n createEffect(\"slideIn\", {\n directions: FOUR_DIRECTIONS,\n\n divisor: function(value) {\n this.options.divisor = value;\n return this;\n },\n\n prepare: function(start, end) {\n var that = this,\n tmp,\n element = that.element,\n outerWidth = kendo._outerWidth,\n outerHeight = kendo._outerHeight,\n direction = directions[that._direction],\n offset = -direction.modifier * (direction.vertical ? outerHeight(element) : outerWidth(element)),\n startValue = offset / (that.options && that.options.divisor || 1) + PX,\n endValue = \"0px\";\n\n if (that._reverse) {\n tmp = start;\n start = end;\n end = tmp;\n }\n\n if (transforms) {\n start[direction.transition] = startValue;\n end[direction.transition] = endValue;\n } else {\n start[direction.property] = startValue;\n end[direction.property] = endValue;\n }\n }\n });\n\n createEffect(\"tile\", {\n directions: FOUR_DIRECTIONS,\n\n init: function(element, direction, previous) {\n Effect.prototype.init.call(this, element, direction);\n this.options = { previous: previous };\n },\n\n previousDivisor: function(value) {\n this.options.previousDivisor = value;\n return this;\n },\n\n children: function() {\n var that = this,\n reverse = that._reverse,\n previous = that.options.previous,\n divisor = that.options.previousDivisor || 1,\n dir = that._direction;\n\n var children = [ kendo.fx(that.element).slideIn(dir).setReverse(reverse) ];\n\n if (previous) {\n children.push( kendo.fx(previous).slideIn(directions[dir].reverse).divisor(divisor).setReverse(!reverse) );\n }\n\n return children;\n }\n });\n\n function createToggleEffect(name, property, defaultStart, defaultEnd) {\n createEffect(name, {\n directions: IN_OUT,\n\n startValue: function(value) {\n this._startValue = value;\n return this;\n },\n\n endValue: function(value) {\n this._endValue = value;\n return this;\n },\n\n shouldHide: function() {\n return this._shouldHide;\n },\n\n prepare: function(start, end) {\n var that = this,\n startValue,\n endValue,\n out = this._direction === \"out\",\n startDataValue = that.element.data(property),\n startDataValueIsSet = !(isNaN(startDataValue) || startDataValue == defaultStart);\n\n if (startDataValueIsSet) {\n startValue = startDataValue;\n } else if (typeof this._startValue !== \"undefined\") {\n startValue = this._startValue;\n } else {\n startValue = out ? defaultStart : defaultEnd;\n }\n\n if (typeof this._endValue !== \"undefined\") {\n endValue = this._endValue;\n } else {\n endValue = out ? defaultEnd : defaultStart;\n }\n\n if (this._reverse) {\n start[property] = endValue;\n end[property] = startValue;\n } else {\n start[property] = startValue;\n end[property] = endValue;\n }\n\n that._shouldHide = end[property] === defaultEnd;\n }\n });\n }\n\n createToggleEffect(\"fade\", \"opacity\", 1, 0);\n createToggleEffect(\"zoom\", \"scale\", 1, 0.01);\n\n createEffect(\"slideMargin\", {\n prepare: function(start, end) {\n var that = this,\n element = that.element,\n options = that.options,\n origin = element.data(ORIGIN),\n offset = options.offset,\n margin,\n reverse = that._reverse;\n\n if (!reverse && origin === null) {\n element.data(ORIGIN, parseFloat(element.css(\"margin-\" + options.axis)));\n }\n\n margin = (element.data(ORIGIN) || 0);\n end[\"margin-\" + options.axis] = !reverse ? margin + offset : margin;\n }\n });\n\n createEffect(\"slideTo\", {\n prepare: function(start, end) {\n var that = this,\n element = that.element,\n options = that.options,\n offset = options.offset.split(\",\"),\n reverse = that._reverse;\n\n if (transforms) {\n end.translatex = !reverse ? offset[0] : 0;\n end.translatey = !reverse ? offset[1] : 0;\n } else {\n end.left = !reverse ? offset[0] : 0;\n end.top = !reverse ? offset[1] : 0;\n }\n element.css(\"left\");\n }\n });\n\n createEffect(\"expand\", {\n directions: [\"horizontal\", \"vertical\"],\n\n restore: [ OVERFLOW ],\n\n prepare: function(start, end) {\n var that = this,\n element = that.element,\n options = that.options,\n reverse = that._reverse,\n property = that._direction === \"vertical\" ? HEIGHT : WIDTH,\n setLength = element[0].style[property],\n oldLength = element.data(property),\n length = parseFloat(oldLength || setLength),\n realLength = round(element.css(property, AUTO)[property]());\n\n start.overflow = HIDDEN;\n\n length = (options && options.reset) ? realLength || length : length || realLength;\n\n end[property] = (reverse ? 0 : length) + PX;\n start[property] = (reverse ? length : 0) + PX;\n\n if (oldLength === undefined$1) {\n element.data(property, setLength);\n }\n },\n\n shouldHide: function() {\n return this._reverse;\n },\n\n teardown: function() {\n var that = this,\n element = that.element,\n property = that._direction === \"vertical\" ? HEIGHT : WIDTH,\n length = element.data(property);\n\n if (length == AUTO || length === BLANK) {\n setTimeout(function() { element.css(property, AUTO).css(property); }, 0); // jQuery animate complete callback in IE is called before the last animation step!\n }\n }\n });\n\n var TRANSFER_START_STATE = { position: \"absolute\", marginLeft: 0, marginTop: 0, scale: 1 };\n /**\n * Intersection point formulas are taken from here - http://zonalandeducation.com/mmts/intersections/intersectionOfTwoLines1/intersectionOfTwoLines1.html\n * Formula for a linear function from two points from here - http://demo.activemath.org/ActiveMath2/search/show.cmd?id=mbase://AC_UK_calculus/functions/ex_linear_equation_two_points\n * The transform origin point is the intersection point of the two lines from the top left corners/top right corners of the element and target.\n * The math and variables below MAY BE SIMPLIFIED (zeroes removed), but this would make the formula too cryptic.\n */\n createEffect(\"transfer\", {\n init: function(element, target) {\n this.element = element;\n this.options = { target: target };\n this.restore = [];\n },\n\n setup: function() {\n this.element.appendTo(document.body);\n },\n\n prepare: function(start, end) {\n var that = this,\n element = that.element,\n outerBox = fx.box(element),\n innerBox = fx.box(that.options.target),\n currentScale = animationProperty(element, \"scale\"),\n scale = fx.fillScale(innerBox, outerBox),\n transformOrigin = fx.transformOrigin(innerBox, outerBox);\n\n extend(start, TRANSFER_START_STATE);\n end.scale = 1;\n\n element.css(TRANSFORM, \"scale(1)\").css(TRANSFORM);\n element.css(TRANSFORM, \"scale(\" + currentScale + \")\");\n\n start.top = outerBox.top;\n start.left = outerBox.left;\n start.transformOrigin = transformOrigin.x + PX + \" \" + transformOrigin.y + PX;\n\n if (that._reverse) {\n start.scale = scale;\n } else {\n end.scale = scale;\n }\n }\n });\n\n\n var CLIPS = {\n top: \"rect(auto auto $size auto)\",\n bottom: \"rect($size auto auto auto)\",\n left: \"rect(auto $size auto auto)\",\n right: \"rect(auto auto auto $size)\"\n };\n\n var ROTATIONS = {\n top: { start: \"rotatex(0deg)\", end: \"rotatex(180deg)\" },\n bottom: { start: \"rotatex(-180deg)\", end: \"rotatex(0deg)\" },\n left: { start: \"rotatey(0deg)\", end: \"rotatey(-180deg)\" },\n right: { start: \"rotatey(180deg)\", end: \"rotatey(0deg)\" }\n };\n\n function clipInHalf(container, direction) {\n var vertical = kendo.directions[direction].vertical,\n size = (container[vertical ? HEIGHT : WIDTH]() / 2) + \"px\";\n\n return CLIPS[direction].replace(\"$size\", size);\n }\n\n createEffect(\"turningPage\", {\n directions: FOUR_DIRECTIONS,\n\n init: function(element, direction, container) {\n Effect.prototype.init.call(this, element, direction);\n this._container = container;\n },\n\n prepare: function(start, end) {\n var that = this,\n reverse = that._reverse,\n direction = reverse ? directions[that._direction].reverse : that._direction,\n rotation = ROTATIONS[direction];\n\n start.zIndex = 1;\n\n if (that._clipInHalf) {\n start.clip = clipInHalf(that._container, kendo.directions[direction].reverse);\n }\n\n start[BACKFACE] = HIDDEN;\n\n end[TRANSFORM] = TRANSFORM_PERSPECTIVE + (reverse ? rotation.start : rotation.end);\n start[TRANSFORM] = TRANSFORM_PERSPECTIVE + (reverse ? rotation.end : rotation.start);\n },\n\n setup: function() {\n this._container.append(this.element);\n },\n\n face: function(value) {\n this._face = value;\n return this;\n },\n\n shouldHide: function() {\n var that = this,\n reverse = that._reverse,\n face = that._face;\n\n return (reverse && !face) || (!reverse && face);\n },\n\n clipInHalf: function(value) {\n this._clipInHalf = value;\n return this;\n },\n\n temporary: function() {\n this.element.addClass('temp-page');\n return this;\n }\n });\n\n createEffect(\"staticPage\", {\n directions: FOUR_DIRECTIONS,\n\n init: function(element, direction, container) {\n Effect.prototype.init.call(this, element, direction);\n this._container = container;\n },\n\n restore: [\"clip\"],\n\n prepare: function(start, end) {\n var that = this,\n direction = that._reverse ? directions[that._direction].reverse : that._direction;\n\n start.clip = clipInHalf(that._container, direction);\n start.opacity = 0.999;\n end.opacity = 1;\n },\n\n shouldHide: function() {\n var that = this,\n reverse = that._reverse,\n face = that._face;\n\n return (reverse && !face) || (!reverse && face);\n },\n\n face: function(value) {\n this._face = value;\n return this;\n }\n });\n\n createEffect(\"pageturn\", {\n directions: [\"horizontal\", \"vertical\"],\n\n init: function(element, direction, face, back) {\n Effect.prototype.init.call(this, element, direction);\n this.options = {};\n this.options.face = face;\n this.options.back = back;\n },\n\n children: function() {\n var that = this,\n options = that.options,\n direction = that._direction === \"horizontal\" ? \"left\" : \"top\",\n reverseDirection = kendo.directions[direction].reverse,\n reverse = that._reverse,\n temp,\n faceClone = options.face.clone(true).removeAttr(\"id\"),\n backClone = options.back.clone(true).removeAttr(\"id\"),\n element = that.element;\n\n if (reverse) {\n temp = direction;\n direction = reverseDirection;\n reverseDirection = temp;\n }\n\n return [\n kendo.fx(options.face).staticPage(direction, element).face(true).setReverse(reverse),\n kendo.fx(options.back).staticPage(reverseDirection, element).setReverse(reverse),\n kendo.fx(faceClone).turningPage(direction, element).face(true).clipInHalf(true).temporary().setReverse(reverse),\n kendo.fx(backClone).turningPage(reverseDirection, element).clipInHalf(true).temporary().setReverse(reverse)\n ];\n },\n\n prepare: function(start, end) {\n start[PERSPECTIVE] = DEFAULT_PERSPECTIVE;\n start.transformStyle = \"preserve-3d\";\n // hack to trigger transition end.\n start.opacity = 0.999;\n end.opacity = 1;\n },\n\n teardown: function() {\n this.element.find(\".temp-page\").remove();\n }\n });\n\n createEffect(\"flip\", {\n directions: [\"horizontal\", \"vertical\"],\n\n init: function(element, direction, face, back) {\n Effect.prototype.init.call(this, element, direction);\n this.options = {};\n this.options.face = face;\n this.options.back = back;\n },\n\n children: function() {\n var that = this,\n options = that.options,\n direction = that._direction === \"horizontal\" ? \"left\" : \"top\",\n reverseDirection = kendo.directions[direction].reverse,\n reverse = that._reverse,\n temp,\n element = that.element;\n\n if (reverse) {\n temp = direction;\n direction = reverseDirection;\n reverseDirection = temp;\n }\n\n return [\n kendo.fx(options.face).turningPage(direction, element).face(true).setReverse(reverse),\n kendo.fx(options.back).turningPage(reverseDirection, element).setReverse(reverse)\n ];\n },\n\n prepare: function(start) {\n start[PERSPECTIVE] = DEFAULT_PERSPECTIVE;\n start.transformStyle = \"preserve-3d\";\n }\n });\n\n var RESTORE_OVERFLOW = !support.mobileOS.android;\n var IGNORE_TRANSITION_EVENT_SELECTOR = \".km-touch-scrollbar, .km-actionsheet-wrapper\";\n\n createEffect(\"replace\", {\n _before: $.noop,\n _after: $.noop,\n init: function(element, previous, transitionClass) {\n Effect.prototype.init.call(this, element);\n this._previous = $(previous);\n this._transitionClass = transitionClass;\n },\n\n duration: function() {\n throw new Error(\"The replace effect does not support duration setting; the effect duration may be customized through the transition class rule\");\n },\n\n beforeTransition: function(callback) {\n this._before = callback;\n return this;\n },\n\n afterTransition: function(callback) {\n this._after = callback;\n return this;\n },\n\n _both: function() {\n return $().add(this._element).add(this._previous);\n },\n\n _containerClass: function() {\n var direction = this._direction,\n containerClass = \"k-fx k-fx-start k-fx-\" + this._transitionClass;\n\n if (direction) {\n containerClass += \" k-fx-\" + direction;\n }\n\n if (this._reverse) {\n containerClass += \" k-fx-reverse\";\n }\n\n return containerClass;\n },\n\n complete: function(e) {\n if (!this.deferred || (e && $(e.target).is(IGNORE_TRANSITION_EVENT_SELECTOR))) {\n return;\n }\n\n var container = this.container;\n\n container\n .removeClass(\"k-fx-end\")\n .removeClass(this._containerClass())\n .off(transitions.event, this.completeProxy);\n\n this._previous.hide().removeClass(\"k-fx-current\");\n this.element.removeClass(\"k-fx-next\");\n\n if (RESTORE_OVERFLOW) {\n container.css(OVERFLOW, \"\");\n }\n\n if (!this.isAbsolute) {\n this._both().css(POSITION, \"\");\n }\n\n this.deferred.resolve();\n delete this.deferred;\n },\n\n run: function() {\n if (this._additionalEffects && this._additionalEffects[0]) {\n return this.compositeRun();\n }\n\n var that = this,\n element = that.element,\n previous = that._previous,\n container = element.parents().filter(previous.parents()).first(),\n both = that._both(),\n deferred = $.Deferred(),\n originalPosition = element.css(POSITION),\n originalOverflow;\n\n // edge case for grid/scheduler, where the previous is already destroyed.\n if (!container.length) {\n container = element.parent();\n }\n\n this.container = container;\n this.deferred = deferred;\n this.isAbsolute = originalPosition == \"absolute\";\n\n if (!this.isAbsolute) {\n both.css(POSITION, \"absolute\");\n }\n\n if (RESTORE_OVERFLOW) {\n originalOverflow = container.css(OVERFLOW);\n container.css(OVERFLOW, \"hidden\");\n }\n\n if (!transitions) {\n this.complete();\n } else {\n element.addClass(\"k-fx-hidden\");\n\n container.addClass(this._containerClass());\n\n this.completeProxy = this.complete.bind(this);\n container.on(transitions.event, this.completeProxy);\n\n kendo.animationFrame(function() {\n element.removeClass(\"k-fx-hidden\").addClass(\"k-fx-next\");\n previous.css(\"display\", \"\").addClass(\"k-fx-current\");\n that._before(previous, element);\n kendo.animationFrame(function() {\n container.removeClass(\"k-fx-start\").addClass(\"k-fx-end\");\n that._after(previous, element);\n });\n });\n }\n\n return deferred.promise();\n },\n\n stop: function() {\n this.complete();\n }\n });\n\n var Animation = kendo.Class.extend({\n init: function() {\n var that = this;\n that._tickProxy = that._tick.bind(that);\n that._started = false;\n },\n\n tick: $.noop,\n done: $.noop,\n onEnd: $.noop,\n onCancel: $.noop,\n\n start: function() {\n if (!this.enabled()) {\n return;\n }\n\n if (!this.done()) {\n this._started = true;\n kendo.animationFrame(this._tickProxy);\n } else {\n this.onEnd();\n }\n },\n\n enabled: function() {\n return true;\n },\n\n cancel: function() {\n this._started = false;\n this.onCancel();\n },\n\n _tick: function() {\n var that = this;\n if (!that._started) { return; }\n\n that.tick();\n\n if (!that.done()) {\n kendo.animationFrame(that._tickProxy);\n } else {\n that._started = false;\n that.onEnd();\n }\n }\n });\n\n var Transition = Animation.extend({\n init: function(options) {\n var that = this;\n extend(that, options);\n Animation.fn.init.call(that);\n },\n\n done: function() {\n return this.timePassed() >= this.duration;\n },\n\n timePassed: function() {\n return Math.min(this.duration, (new Date()) - this.startDate);\n },\n\n moveTo: function(options) {\n var that = this,\n movable = that.movable;\n\n that.initial = movable[that.axis];\n that.delta = options.location - that.initial;\n\n that.duration = typeof options.duration == \"number\" ? options.duration : 300;\n\n that.tick = that._easeProxy(options.ease);\n\n that.startDate = new Date();\n that.start();\n },\n\n _easeProxy: function(ease) {\n var that = this;\n\n return function() {\n that.movable.moveAxis(that.axis, ease(that.timePassed(), that.initial, that.delta, that.duration));\n };\n }\n });\n\n extend(Transition, {\n easeOutExpo: function(t, b, c, d) {\n return (t == d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;\n },\n\n easeOutBack: function(t, b, c, d, s) {\n s = 1.70158;\n return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\n }\n });\n\n fx.Animation = Animation;\n fx.Transition = Transition;\n fx.createEffect = createEffect;\n\n fx.box = function(element) {\n element = $(element);\n var result = element.offset();\n result.width = kendo._outerWidth(element);\n result.height = kendo._outerHeight(element);\n return result;\n };\n\n fx.transformOrigin = function(inner, outer) {\n var x = (inner.left - outer.left) * outer.width / (outer.width - inner.width),\n y = (inner.top - outer.top) * outer.height / (outer.height - inner.height);\n\n return {\n x: isNaN(x) ? 0 : x,\n y: isNaN(y) ? 0 : y\n };\n };\n\n fx.fillScale = function(inner, outer) {\n return Math.min(inner.width / outer.width, inner.height / outer.height);\n };\n\n fx.fitScale = function(inner, outer) {\n return Math.max(inner.width / outer.width, inner.height / outer.height);\n };\n })(window.kendo.jQuery);\n var kendo$Z = kendo;\n\n var __meta__$W = {\n id: \"router\",\n name: \"Router\",\n category: \"framework\",\n description: \"The Router class is responsible for tracking the application state and navigating between the application states.\",\n depends: [ \"core\" ],\n hidden: false\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n CHANGE = \"change\",\n BACK = \"back\",\n SAME = \"same\",\n support = kendo.support,\n location = window.location,\n history = window.history,\n CHECK_URL_INTERVAL = 50,\n BROKEN_BACK_NAV = kendo.support.browser.msie,\n hashStrip = /^#*/,\n document = window.document;\n\n function absoluteURL(path, pathPrefix) {\n if (!pathPrefix) {\n return path;\n }\n\n if (path + \"/\" === pathPrefix) {\n path = pathPrefix;\n }\n\n var regEx = new RegExp(\"^\" + pathPrefix, \"i\");\n\n if (!regEx.test(path)) {\n path = pathPrefix + \"/\" + path;\n }\n\n return location.protocol + '//' + (location.host + \"/\" + path).replace(/\\/\\/+/g, '/');\n }\n\n function hashDelimiter(bang) {\n return bang ? \"#!\" : \"#\";\n }\n\n function locationHash(hashDelimiter) {\n var href = location.href;\n\n // ignore normal anchors if in hashbang mode - however, still return \"\" if no hash present\n if (hashDelimiter === \"#!\" && href.indexOf(\"#\") > -1 && href.indexOf(\"#!\") < 0) {\n return null;\n }\n\n return href.split(hashDelimiter)[1] || \"\";\n }\n\n function stripRoot(root, url) {\n if (url.indexOf(root) === 0) {\n return (url.substr(root.length)).replace(/\\/\\//g, '/');\n } else {\n return url;\n }\n }\n\n var HistoryAdapter = kendo.Class.extend({\n back: function() {\n if (BROKEN_BACK_NAV) {\n setTimeout(function() { history.back(); });\n } else {\n history.back();\n }\n },\n\n forward: function() {\n if (BROKEN_BACK_NAV) {\n setTimeout(function() { history.forward(); });\n } else {\n history.forward();\n }\n },\n\n length: function() {\n return history.length;\n },\n\n replaceLocation: function(url) {\n location.replace(url);\n }\n });\n\n var PushStateAdapter = HistoryAdapter.extend({\n init: function(root) {\n this.root = root;\n },\n\n navigate: function(to) {\n history.pushState({}, document.title, absoluteURL(to, this.root));\n },\n\n replace: function(to) {\n history.replaceState({}, document.title, absoluteURL(to, this.root));\n },\n\n normalize: function(url) {\n return stripRoot(this.root, url);\n },\n\n current: function() {\n var current = location.pathname;\n\n if (location.search) {\n current += location.search;\n }\n\n return stripRoot(this.root, current);\n },\n\n change: function(callback) {\n $(window).bind(\"popstate.kendo\", callback);\n },\n\n stop: function() {\n $(window).unbind(\"popstate.kendo\");\n },\n\n normalizeCurrent: function(options) {\n var fixedUrl,\n root = options.root,\n pathname = location.pathname,\n hash = locationHash(hashDelimiter(options.hashBang));\n\n if (root === pathname + \"/\") {\n fixedUrl = root;\n }\n\n if (root === pathname && hash) {\n fixedUrl = absoluteURL(hash.replace(hashStrip, ''), root);\n }\n\n if (fixedUrl) {\n history.pushState({}, document.title, fixedUrl);\n }\n }\n });\n\n function fixHash(url) {\n return url.replace(/^(#)?/, \"#\");\n }\n\n function fixBang(url) {\n return url.replace(/^(#(!)?)?/, \"#!\");\n }\n\n var HashAdapter = HistoryAdapter.extend({\n init: function(bang) {\n this._id = kendo.guid();\n this.prefix = hashDelimiter(bang);\n this.fix = bang ? fixBang : fixHash;\n },\n\n navigate: function(to) {\n location.hash = this.fix(to);\n },\n\n replace: function(to) {\n this.replaceLocation(this.fix(to));\n },\n\n normalize: function(url) {\n if (url.indexOf(this.prefix) < 0) {\n return url;\n } else {\n return url.split(this.prefix)[1];\n }\n },\n\n change: function(callback) {\n if (support.hashChange) {\n $(window).on(\"hashchange.\" + this._id, callback);\n } else {\n this._interval = setInterval(callback, CHECK_URL_INTERVAL);\n }\n },\n\n stop: function() {\n $(window).off(\"hashchange.\" + this._id);\n clearInterval(this._interval);\n },\n\n current: function() {\n return locationHash(this.prefix);\n },\n\n normalizeCurrent: function(options) {\n var pathname = location.pathname,\n root = options.root;\n\n if (options.pushState && root !== pathname) {\n this.replaceLocation(root + this.prefix + stripRoot(root, pathname));\n return true; // browser will reload at this point.\n }\n\n return false;\n }\n });\n\n var History = kendo.Observable.extend({\n start: function(options) {\n options = options || {};\n\n this.bind([CHANGE, BACK, SAME], options);\n\n if (this._started) {\n return;\n }\n\n this._started = true;\n\n options.root = options.root || \"/\";\n\n var adapter = this.createAdapter(options),\n current;\n\n // adapter may reload the document\n if (adapter.normalizeCurrent(options)) {\n return;\n }\n\n current = adapter.current();\n\n $.extend(this, {\n adapter: adapter,\n root: options.root,\n historyLength: adapter.length(),\n current: current,\n locations: [current]\n });\n\n adapter.change(this._checkUrl.bind(this));\n },\n\n createAdapter: function(options) {\n return support.pushState && options.pushState ? new PushStateAdapter(options.root) : new HashAdapter(options.hashBang);\n },\n\n stop: function() {\n if (!this._started) {\n return;\n }\n this.adapter.stop();\n this.unbind(CHANGE);\n this._started = false;\n },\n\n change: function(callback) {\n this.bind(CHANGE, callback);\n },\n\n replace: function(to, silent) {\n\n this._navigate(to, silent, function(adapter) {\n adapter.replace(to);\n this.locations[this.locations.length - 1] = this.current;\n });\n },\n\n navigate: function(to, silent) {\n if (to === \"#:back\") {\n this.backCalled = true;\n this.adapter.back();\n return;\n }\n\n this._navigate(to, silent, function(adapter) {\n adapter.navigate(to);\n this.locations.push(this.current);\n });\n },\n\n _navigate: function(to, silent, callback) {\n var adapter = this.adapter;\n\n to = adapter.normalize(to);\n\n if (this.current === to || this.current === decodeURIComponent(to)) {\n this.trigger(SAME);\n return;\n }\n\n if (!silent) {\n if (this.trigger(CHANGE, { url: to, decode: false })) {\n return;\n }\n }\n\n this.current = to;\n\n callback.call(this, adapter);\n\n this.historyLength = adapter.length();\n },\n\n _checkUrl: function() {\n var adapter = this.adapter,\n current = adapter.current(),\n newLength = adapter.length(),\n navigatingInExisting = this.historyLength === newLength,\n back = current === this.locations[this.locations.length - 2] && navigatingInExisting,\n backCalled = this.backCalled,\n prev = this.current;\n\n if (current === null || this.current === current || this.current === decodeURIComponent(current)) {\n return true;\n }\n\n this.historyLength = newLength;\n this.backCalled = false;\n\n this.current = current;\n\n if (back && this.trigger(\"back\", { url: prev, to: current })) {\n adapter.forward();\n this.current = prev;\n return;\n }\n\n if (this.trigger(CHANGE, { url: current, backButtonPressed: !backCalled })) {\n if (back) {\n adapter.forward();\n } else {\n adapter.back();\n this.historyLength --;\n }\n this.current = prev;\n return;\n }\n\n if (back) {\n this.locations.pop();\n } else {\n this.locations.push(current);\n }\n }\n });\n\n kendo.History = History;\n kendo.History.HistoryAdapter = HistoryAdapter;\n kendo.History.HashAdapter = HashAdapter;\n kendo.History.PushStateAdapter = PushStateAdapter;\n kendo.absoluteURL = absoluteURL;\n kendo.history = new History();\n })(window.kendo.jQuery);\n var kendo$Y = kendo;\n\n (function() {\n var kendo = window.kendo,\n history = kendo.history,\n Observable = kendo.Observable,\n INIT = \"init\",\n ROUTE_MISSING = \"routeMissing\",\n CHANGE = \"change\",\n BACK = \"back\",\n SAME = \"same\",\n optionalParam = /\\((.*?)\\)/g,\n namedParam = /(\\(\\?)?:\\w+/g,\n splatParam = /\\*\\w+/g,\n escapeRegExp = /[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;\n\n function namedParamReplace(match, optional) {\n return optional ? match : '([^\\/]+)';\n }\n\n function routeToRegExp(route, ignoreCase) {\n return new RegExp('^' + route\n .replace(escapeRegExp, '\\\\$&')\n .replace(optionalParam, '(?:$1)?')\n .replace(namedParam, namedParamReplace)\n .replace(splatParam, '(.*?)') + '$', ignoreCase ? \"i\" : \"\");\n }\n\n function stripUrl(url) {\n return url.replace(/(\\?.*)|(#.*)/g, \"\");\n }\n\n var Route = kendo.Class.extend({\n init: function(route, callback, ignoreCase) {\n if (!(route instanceof RegExp)) {\n route = routeToRegExp(route, ignoreCase);\n }\n\n this.route = route;\n this._callback = callback;\n },\n\n callback: function(url, back, decode) {\n var params,\n idx = 0,\n length,\n queryStringParams = kendo.parseQueryStringParams(url);\n queryStringParams._back = back;\n\n url = stripUrl(url);\n params = this.route.exec(url).slice(1);\n length = params.length;\n\n if (decode) {\n for (; idx < length; idx ++) {\n if (typeof params[idx] !== 'undefined') {\n params[idx] = decodeURIComponent(params[idx]);\n }\n }\n }\n\n params.push(queryStringParams);\n\n this._callback.apply(null, params);\n },\n\n worksWith: function(url, back, decode) {\n if (this.route.test(stripUrl(url))) {\n this.callback(url, back, decode);\n return true;\n } else {\n return false;\n }\n }\n });\n\n var Router = Observable.extend({\n init: function(options) {\n if (!options) {\n options = {};\n }\n\n Observable.fn.init.call(this);\n\n this.routes = [];\n this.pushState = options.pushState;\n this.hashBang = options.hashBang;\n this.root = options.root;\n this.ignoreCase = options.ignoreCase !== false;\n\n this.bind([INIT, ROUTE_MISSING, CHANGE, SAME, BACK], options);\n },\n\n destroy: function() {\n history.unbind(CHANGE, this._urlChangedProxy);\n history.unbind(SAME, this._sameProxy);\n history.unbind(BACK, this._backProxy);\n this.unbind();\n },\n\n start: function() {\n var that = this,\n sameProxy = function() { that._same(); },\n backProxy = function(e) { that._back(e); },\n urlChangedProxy = function(e) { that._urlChanged(e); };\n\n history.start({\n same: sameProxy,\n change: urlChangedProxy,\n back: backProxy,\n pushState: that.pushState,\n hashBang: that.hashBang,\n root: that.root\n });\n\n // eslint-disable-next-line no-undef\n var initEventObject = { url: history.current || \"/\", preventDefault: $.noop };\n\n if (!that.trigger(INIT, initEventObject)) {\n that._urlChanged(initEventObject);\n }\n\n this._urlChangedProxy = urlChangedProxy;\n this._backProxy = backProxy;\n },\n\n route: function(route, callback) {\n this.routes.push(new Route(route, callback, this.ignoreCase));\n },\n\n navigate: function(url, silent) {\n kendo.history.navigate(url, silent);\n },\n\n replace: function(url, silent) {\n kendo.history.replace(url, silent);\n },\n\n _back: function(e) {\n if (this.trigger(BACK, { url: e.url, to: e.to })) {\n e.preventDefault();\n }\n },\n\n _same: function() {\n this.trigger(SAME);\n },\n\n _urlChanged: function(e) {\n var url = e.url;\n var decode = !!e.decode;\n var back = e.backButtonPressed;\n\n if (!url) {\n url = \"/\";\n }\n\n if (this.trigger(CHANGE, { url: e.url, params: kendo.parseQueryStringParams(e.url), backButtonPressed: back })) {\n e.preventDefault();\n return;\n }\n\n var idx = 0,\n routes = this.routes,\n route,\n length = routes.length;\n\n for (; idx < length; idx ++) {\n route = routes[idx];\n\n if (route.worksWith(url, back, decode)) {\n return;\n }\n }\n\n if (this.trigger(ROUTE_MISSING, { url: url, params: kendo.parseQueryStringParams(url), backButtonPressed: back })) {\n e.preventDefault();\n }\n }\n });\n\n kendo.Router = Router;\n })();\n\n /*\n This code is copied/inspired by the internal @progress/kendo-data-query repo:\n https://github.com/telerik/kendo-data-query/tree/develop/src/filtering\n\n !!!\n 1. If updates are to be synced consider the accentFoldingFiltering,\n which at the moment is not present as a feature in the data-query-package.\n\n 2. Double-check available operators as well.\n\n 3. Make sure objs are strings -> i.e., replace (a || \"\") to (a + '')\n !!!\n\n In future, if we consider reusing the code directly we should revise the above omissions.\n */\n\n const logic = {\n \"or\": {\n concat: (acc, fn) => a => acc(a) || fn(a),\n identity: () => false\n },\n \"and\": {\n concat: (acc, fn) => a => acc(a) && fn(a),\n identity: () => true\n }\n };\n\n const operatorsMap = {\n isnullorempty: (a) => kendo.isBlank(a) || a === '',\n isnotnullorempty: (a) => kendo.isPresent(a) && a !== '',\n contains: (a, b) => (a + '').indexOf(b) >= 0,\n doesnotcontain: (a, b) => (a + '').indexOf(b) === -1,\n doesnotendwith: (a, b) => (a + '').indexOf(b, (a || \"\").length - (b || \"\").length) < 0,\n doesnotstartwith: (a, b) => (a + '').lastIndexOf(b, 0) === -1,\n endswith: (a, b) => (a + '').indexOf(b, (a || \"\").length - (b || \"\").length) >= 0,\n eq: (a, b) => a === b,\n gt: (a, b) => a > b,\n gte: (a, b) => a >= b,\n isempty: (a) => a === '',\n isnotempty: (a) => a !== '',\n isnotnull: (a) => kendo.isPresent(a),\n isnull: (a) => kendo.isBlank(a),\n lt: (a, b) => a < b,\n lte: (a, b) => a <= b,\n neq: (a, b) => a != b,\n startswith: (a, b) => (a + '').lastIndexOf(b, 0) === 0\n };\n\n const dateRegExp = /^\\/Date\\((.*?)\\)\\/$/;\n\n const convertValue = (value, ignoreCase, accentFoldingFiltering) => {\n if (value != null && kendo.isString(value)) {\n const date = dateRegExp.exec(value);\n if (date) {\n return new Date(+date[1]).getTime();\n } else if (ignoreCase) {\n return accentFoldingFiltering ? value.toLocaleLowerCase(accentFoldingFiltering) : value.toLowerCase();\n }\n } else if (value != null && kendo.isDate(value)) {\n return value.getTime();\n }\n return value;\n };\n\n const typedGetter = (prop, value, ignoreCase, accentFoldingFiltering) => {\n if (!kendo.isPresent(value)) {\n return prop;\n }\n\n let acc = prop;\n\n if (kendo.isString(value)) {\n const date = dateRegExp.exec(value);\n if (date) {\n value = new Date(+date[1]);\n } else {\n acc = a => {\n const x = prop(a);\n if (typeof x === 'string' && ignoreCase) {\n return accentFoldingFiltering ? x.toLocaleLowerCase(accentFoldingFiltering) : x.toLowerCase();\n } else {\n return kendo.isNumeric(x) ? x + \"\" : x;\n }\n };\n }\n }\n\n if (kendo.isDate(value)) {\n return a => {\n const x = acc(a);\n return kendo.isDate(x) ? x.getTime() : x;\n };\n }\n return acc;\n };\n\n const transformFilter = ({ field, ignoreCase, value, operator = 'eq', accentFoldingFiltering }) => {\n field = !kendo.isPresent(field) ? a => a : field;\n\n ignoreCase = kendo.isPresent(ignoreCase) ? ignoreCase : true;\n\n const itemProp = typedGetter(\n kendo.isFunction(field) ? field : kendo.getter(field, true),\n value,\n ignoreCase,\n accentFoldingFiltering\n );\n\n value = convertValue(value, ignoreCase, accentFoldingFiltering);\n\n const op = kendo.isFunction(operator) ? operator : operatorsMap[operator];\n\n return a => op(itemProp(a), value, ignoreCase);\n };\n\n const isCompositeFilterDescriptor = (source) => kendo.isPresent(source.filters);\n\n const transformCompositeFilter = (filter) => {\n const accentFoldingFiltering = filter.accentFoldingFiltering;\n const combiner = logic[filter.logic || 'and'];\n return filter.filters\n .filter(kendo.isPresent)\n .map(x => (isCompositeFilterDescriptor(x) ? transformCompositeFilter(extendAccentFolding(x, accentFoldingFiltering)) : transformFilter(extendAccentFolding(x, accentFoldingFiltering))))\n .reduce(combiner.concat, combiner.identity);\n };\n\n const extendAccentFolding = (filter, accentFoldingFiltering) => (kendo.isPresent(accentFoldingFiltering) ? Object.assign(filter, { accentFoldingFiltering }) : filter);\n\n const filterExprNoEval = function(expr) {\n return transformCompositeFilter(expr);\n };\n\n var __meta__$V = {\n id: \"data.odata\",\n name: \"OData\",\n category: \"framework\",\n depends: [ \"core\" ],\n hidden: true\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n extend = $.extend,\n NEWLINE = \"\\r\\n\",\n DOUBLELINE = \"\\r\\n\\r\\n\",\n isFunction = kendo.isFunction,\n odataFilters = {\n eq: \"eq\",\n neq: \"ne\",\n gt: \"gt\",\n gte: \"ge\",\n lt: \"lt\",\n lte: \"le\",\n contains: \"substringof\",\n doesnotcontain: \"substringof\",\n endswith: \"endswith\",\n startswith: \"startswith\",\n isnull: \"eq\",\n isnotnull: \"ne\",\n isnullorempty: \"eq\",\n isnotnullorempty: \"ne\",\n isempty: \"eq\",\n isnotempty: \"ne\"\n },\n odataFiltersVersionFour = extend({}, odataFilters, {\n contains: \"contains\"\n }),\n mappers = {\n pageSize: $.noop,\n page: $.noop,\n filter: function(params, filter, useVersionFour) {\n if (filter) {\n filter = toOdataFilter(filter, useVersionFour);\n if (filter) {\n params.$filter = filter;\n }\n }\n },\n sort: function(params, orderby) {\n var expr = $.map(orderby, function(value) {\n var order = value.field.replace(/\\./g, \"/\");\n\n if (value.dir === \"desc\") {\n order += \" desc\";\n }\n\n return order;\n }).join(\",\");\n\n if (expr) {\n params.$orderby = expr;\n }\n },\n skip: function(params, skip) {\n if (skip) {\n params.$skip = skip;\n }\n },\n take: function(params, take) {\n if (take) {\n params.$top = take;\n }\n }\n },\n defaultDataType = {\n read: {\n dataType: \"jsonp\"\n }\n };\n\n function toOdataFilter(filter, useOdataFour) {\n var result = [],\n logic = filter.logic || \"and\",\n idx,\n length,\n field,\n type,\n format,\n operator,\n value,\n ignoreCase,\n filters = filter.filters;\n\n for (idx = 0, length = filters.length; idx < length; idx++) {\n filter = filters[idx];\n field = filter.field;\n value = filter.value;\n operator = filter.operator;\n\n if (filter.filters) {\n filter = toOdataFilter(filter, useOdataFour);\n } else {\n ignoreCase = filter.ignoreCase;\n field = field.replace(/\\./g, \"/\");\n filter = odataFilters[operator];\n if (useOdataFour) {\n filter = odataFiltersVersionFour[operator];\n }\n\n if (operator === \"isnullorempty\") {\n filter = kendo.format(\"{0} {1} null or {0} {1} ''\", field, filter);\n } else if (operator === \"isnotnullorempty\") {\n filter = kendo.format(\"{0} {1} null and {0} {1} ''\", field, filter);\n } else if (operator === \"isnull\" || operator === \"isnotnull\") {\n filter = kendo.format(\"{0} {1} null\", field, filter);\n } else if (operator === \"isempty\" || operator === \"isnotempty\") {\n filter = kendo.format(\"{0} {1} ''\", field, filter);\n } else if (filter && value !== undefined$1) {\n type = kendo.type(value);\n if (type === \"string\") {\n format = \"'{1}'\";\n value = value.replace(/'/g, \"''\");\n\n if (ignoreCase === true) {\n field = \"tolower(\" + field + \")\";\n }\n\n } else if (type === \"date\") {\n if (useOdataFour) {\n format = \"{1:yyyy-MM-ddTHH:mm:ss+00:00}\";\n value = kendo.timezone.apply(value, 'Etc/UTC');\n } else {\n format = \"datetime'{1:yyyy-MM-ddTHH:mm:ss}'\";\n }\n } else {\n format = \"{1}\";\n }\n\n if (filter.length > 3) {\n if (filter !== \"substringof\") {\n format = \"{0}({2},\" + format + \")\";\n } else {\n format = \"{0}(\" + format + \",{2})\";\n if (operator === \"doesnotcontain\") {\n if (useOdataFour) {\n format = \"{0}({2},'{1}') eq -1\";\n filter = \"indexof\";\n } else {\n format += \" eq false\";\n }\n }\n }\n } else {\n format = \"{2} {0} \" + format;\n }\n\n filter = kendo.format(format, filter, value, field);\n }\n }\n\n result.push(filter);\n }\n\n filter = result.join(\" \" + logic + \" \");\n\n if (result.length > 1) {\n filter = \"(\" + filter + \")\";\n }\n\n return filter;\n }\n\n function stripMetadata(obj) {\n for (var name in obj) {\n if (name.indexOf(\"@odata\") === 0) {\n delete obj[name];\n }\n }\n }\n\n function hex16() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substr(1);\n }\n\n function createBoundary(prefix) {\n return prefix + hex16() + '-' + hex16() + '-' + hex16();\n }\n\n function createDelimeter(boundary, close) {\n var result = NEWLINE + \"--\" + boundary;\n\n if (close) {\n result += \"--\";\n }\n\n return result;\n }\n\n function createCommand(transport, item, httpVerb, command) {\n var transportUrl = transport.options[command].url;\n var commandPrefix = kendo.format(\"{0} \", httpVerb);\n\n if (isFunction(transportUrl)) {\n return commandPrefix + transportUrl(item);\n } else {\n return commandPrefix + transportUrl;\n }\n }\n\n function getOperationHeader(changeset, changeId) {\n var header = \"\";\n\n header += createDelimeter(changeset, false);\n header += NEWLINE + 'Content-Type: application/http';\n header += NEWLINE + 'Content-Transfer-Encoding: binary';\n header += NEWLINE + 'Content-ID: ' + changeId;\n\n return header;\n }\n\n function getOperationContent(item) {\n var content = \"\";\n\n content += NEWLINE + \"Content-Type: application/json;odata=minimalmetadata\";\n content += NEWLINE + \"Prefer: return=representation\";\n content += DOUBLELINE + kendo.stringify(item);\n\n return content;\n }\n\n function getOperations(collection, changeset, changeId, command, transport, skipContent) {\n var requestBody = \"\";\n\n for (var i = 0; i < collection.length; i++) {\n requestBody += getOperationHeader(changeset, changeId);\n requestBody += DOUBLELINE + createCommand(transport, collection[i], transport.options[command].type, command) + ' HTTP/1.1';\n if (!skipContent) {\n requestBody += getOperationContent(collection[i]);\n }\n requestBody += NEWLINE;\n changeId++;\n }\n\n return requestBody;\n }\n\n function processCollection(colection, boundary, changeset, changeId, transport, command, skipContent) {\n var requestBody = \"\";\n\n requestBody += getBoundary(boundary, changeset);\n requestBody += getOperations(colection, changeset, changeId, command, transport, skipContent);\n requestBody += createDelimeter(changeset, true);\n requestBody += NEWLINE;\n\n return requestBody;\n }\n\n function getBoundary(boundary,changeset) {\n var requestBody = \"\";\n\n requestBody += \"--\" + boundary + NEWLINE;\n requestBody += \"Content-Type: multipart/mixed; boundary=\" + changeset + NEWLINE;\n\n return requestBody;\n }\n\n function createBatchRequest(transport, colections) {\n \t\tvar options = extend({}, transport.options.batch);\n var boundary = createBoundary(\"sf_batch_\");\n var requestBody = \"\";\n var changeId = 0;\n var batchURL = transport.options.batch.url;\n var changeset = createBoundary(\"sf_changeset_\");\n\n options.type = transport.options.batch.type;\n options.url = isFunction(batchURL) ? batchURL() : batchURL;\n \t\toptions.headers = extend(options.headers || {}, {\n \t\t\t\"Content-Type\": \"multipart/mixed; boundary=\" + boundary\n \t\t});\n\n if (colections.updated.length) {\n requestBody += processCollection(colections.updated, boundary, changeset, changeId, transport, \"update\", false);\n changeId += colections.updated.length;\n changeset = createBoundary(\"sf_changeset_\");\n }\n\n if (colections.destroyed.length) {\n requestBody += processCollection(colections.destroyed, boundary, changeset, changeId, transport, \"destroy\", true);\n changeId += colections.destroyed.length;\n changeset = createBoundary(\"sf_changeset_\");\n }\n\n if (colections.created.length) {\n requestBody += processCollection(colections.created, boundary, changeset, changeId, transport, \"create\", false);\n }\n\n requestBody += createDelimeter(boundary, true);\n\n options.data = requestBody;\n\n return options;\n }\n\n function parseBatchResponse(responseText) {\n var responseMarkers = responseText.match(/--changesetresponse_[a-z0-9-]+$/gm);\n var markerIndex = 0;\n var collections = [];\n var changeBody;\n var status;\n var code;\n var marker;\n var jsonModel;\n\n collections.push({ models: [], passed: true });\n\n for (var i = 0; i < responseMarkers.length; i++) {\n marker = responseMarkers[i];\n if (marker.lastIndexOf('--', marker.length - 1)) {\n if (i < responseMarkers.length - 1) {\n collections.push({ models: [], passed: true });\n }\n continue;\n }\n\n if (!markerIndex) {\n markerIndex = responseText.indexOf(marker);\n } else {\n markerIndex = responseText.indexOf(marker, markerIndex + marker.length);\n }\n\n changeBody = responseText.substring(markerIndex, responseText.indexOf(\"--\", markerIndex + 1));\n status = changeBody.match(/^HTTP\\/1\\.\\d (\\d{3}) (.*)$/gm).pop();\n code = kendo.parseFloat(status.match(/\\d{3}/g).pop());\n\n if (code >= 200 && code <= 299) {\n jsonModel = changeBody.match(/\\{.*\\}/gm);\n if (jsonModel) {\n collections[collections.length - 1].models.push(JSON.parse(jsonModel[0]));\n }\n } else {\n collections[collections.length - 1].passed = false;\n }\n\n }\n\n return collections;\n }\n\n extend(true, kendo.data, {\n schemas: {\n odata: {\n type: \"json\",\n data: function(data) {\n return data.d.results || [data.d];\n },\n total: \"d.__count\"\n }\n },\n transports: {\n odata: {\n read: {\n cache: true, // to prevent jQuery from adding cache buster\n dataType: \"jsonp\",\n jsonp: \"$callback\"\n },\n update: {\n cache: true,\n dataType: \"json\",\n contentType: \"application/json\", // to inform the server the the request body is JSON encoded\n type: \"PUT\" // can be PUT or MERGE\n },\n create: {\n cache: true,\n dataType: \"json\",\n contentType: \"application/json\",\n type: \"POST\" // must be POST to create new entity\n },\n destroy: {\n cache: true,\n dataType: \"json\",\n type: \"DELETE\"\n },\n parameterMap: function(options, type, useVersionFour) {\n var params,\n value,\n option,\n dataType;\n\n options = options || {};\n type = type || \"read\";\n dataType = (this.options || defaultDataType)[type];\n dataType = dataType ? dataType.dataType : \"json\";\n\n if (type === \"read\") {\n params = {\n $inlinecount: \"allpages\"\n };\n\n if (dataType != \"json\") {\n params.$format = \"json\";\n }\n\n for (option in options) {\n if (mappers[option]) {\n mappers[option](params, options[option], useVersionFour);\n } else {\n params[option] = options[option];\n }\n }\n } else {\n if (dataType !== \"json\") {\n throw new Error(\"Only json dataType can be used for \" + type + \" operation.\");\n }\n\n if (type !== \"destroy\") {\n for (option in options) {\n value = options[option];\n if (typeof value === \"number\") {\n options[option] = value + \"\";\n }\n }\n\n params = kendo.stringify(options);\n }\n }\n\n return params;\n }\n }\n }\n });\n\n extend(true, kendo.data, {\n schemas: {\n \"odata-v4\": {\n type: \"json\",\n data: function(data) {\n if (Array.isArray(data)) {\n for (var i = 0; i < data.length; i++) {\n stripMetadata(data[i]);\n }\n return data;\n } else {\n data = $.extend({}, data);\n stripMetadata(data);\n\n if (data.value) {\n return data.value;\n }\n return [data];\n }\n },\n total: function(data) {\n return data[\"@odata.count\"];\n }\n }\n },\n transports: {\n \"odata-v4\": {\n batch: {\n type: \"POST\"\n },\n read: {\n cache: true, // to prevent jQuery from adding cache buster\n dataType: \"json\"\n },\n update: {\n cache: true,\n dataType: \"json\",\n contentType: \"application/json;IEEE754Compatible=true\", // to inform the server the the request body is JSON encoded\n type: \"PUT\" // can be PUT or MERGE\n },\n create: {\n cache: true,\n dataType: \"json\",\n contentType: \"application/json;IEEE754Compatible=true\",\n type: \"POST\" // must be POST to create new entity\n },\n destroy: {\n cache: true,\n dataType: \"json\",\n type: \"DELETE\"\n },\n parameterMap: function(options, type) {\n var result = kendo.data.transports.odata.parameterMap(options, type, true);\n if (type == \"read\") {\n result.$count = true;\n delete result.$inlinecount;\n }\n\n \t\t\t\t\tif (result && result.$filter) {\n \t\t\t\t\t\t// Remove the single quotation marks around the GUID (OData v4).\n \t\t\t\t\t\tresult.$filter = result.$filter.replace(/('[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}')/ig, function(x) {\n \t\t\t\t\t\t\treturn x.substring(1, x.length - 1);\n \t\t\t\t\t\t});\n \t\t\t\t\t}\n\n return result;\n },\n submit: function(e) {\n var that = this;\n var options = createBatchRequest(that, e.data);\n var collections = e.data;\n\n if (!collections.updated.length && !collections.destroyed.length && !collections.created.length) {\n return;\n }\n\n $.ajax(extend(true, {}, {\n success: function(response) {\n var responses = parseBatchResponse(response);\n var index = 0;\n var current;\n\n if (collections.updated.length) {\n current = responses[index];\n if (current.passed) {\n // Pass either the obtained models or an empty array if only status codes are returned.\n e.success(current.models.length ? current.models : [], \"update\");\n }\n index++;\n }\n if (collections.destroyed.length) {\n current = responses[index];\n if (current.passed) {\n // For delete operations OData returns only status codes.\n // Passing empty array to datasource will force it to correctly remove the deleted items from the pristine collection.\n e.success([], \"destroy\");\n }\n index++;\n }\n if (collections.created.length) {\n current = responses[index];\n if (current.passed) {\n e.success(current.models, \"create\");\n }\n }\n },\n error: function(response, status, error) {\n e.error(response, status, error);\n }\n }, options));\n }\n }\n }\n });\n\n })(window.kendo.jQuery);\n var kendo$X = kendo;\n\n var __meta__$U = {\n id: \"data.xml\",\n name: \"XML\",\n category: \"framework\",\n depends: [ \"core\" ],\n hidden: true\n };\n\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n isArray = Array.isArray,\n isPlainObject = $.isPlainObject,\n map = $.map,\n each = $.each,\n extend = $.extend,\n getter = kendo.getter,\n Class = kendo.Class;\n\n var XmlDataReader = Class.extend({\n init: function(options) {\n var that = this,\n total = options.total,\n model = options.model,\n parse = options.parse,\n errors = options.errors,\n serialize = options.serialize,\n data = options.data;\n\n if (model) {\n if (isPlainObject(model)) {\n var base = options.modelBase || kendo.data.Model;\n\n if (model.fields) {\n each(model.fields, function(field, value) {\n if (isPlainObject(value) && value.field) {\n if (!kendo.isFunction(value.field)) {\n value = extend(value, { field: that.getter(value.field) });\n }\n } else {\n value = { field: that.getter(value) };\n }\n model.fields[field] = value;\n });\n }\n\n var id = model.id;\n if (id) {\n var idField = {};\n\n idField[that.xpathToMember(id, true)] = { field: that.getter(id) };\n model.fields = extend(idField, model.fields);\n model.id = that.xpathToMember(id);\n }\n model = base.define(model);\n }\n\n that.model = model;\n }\n\n if (total) {\n if (typeof total == \"string\") {\n total = that.getter(total);\n that.total = function(data) {\n return parseInt(total(data), 10);\n };\n } else if (typeof total == \"function\") {\n that.total = total;\n }\n }\n\n if (errors) {\n if (typeof errors == \"string\") {\n errors = that.getter(errors);\n that.errors = function(data) {\n return errors(data) || null;\n };\n } else if (typeof errors == \"function\") {\n that.errors = errors;\n }\n }\n\n if (data) {\n if (typeof data == \"string\") {\n data = that.xpathToMember(data);\n that.data = function(value) {\n var result = that.evaluate(value, data),\n modelInstance;\n\n result = isArray(result) ? result : [result];\n\n if (that.model && model.fields) {\n modelInstance = new that.model();\n\n return map(result, function(value) {\n if (value) {\n var record = {}, field;\n\n for (field in model.fields) {\n record[field] = modelInstance._parse(field, model.fields[field].field(value));\n }\n\n return record;\n }\n });\n }\n\n return result;\n };\n } else if (typeof data == \"function\") {\n that.data = data;\n }\n }\n\n if (typeof parse == \"function\") {\n var xmlParse = that.parse;\n\n that.parse = function(data) {\n var xml = parse.call(that, data);\n return xmlParse.call(that, xml);\n };\n }\n\n if (typeof serialize == \"function\") {\n that.serialize = serialize;\n }\n },\n total: function(result) {\n return this.data(result).length;\n },\n errors: function(data) {\n return data ? data.errors : null;\n },\n serialize: function(data) {\n return data;\n },\n parseDOM: function(element) {\n var result = {},\n parsedNode,\n node,\n nodeType,\n nodeName,\n member,\n attribute,\n attributes = element.attributes,\n attributeCount = attributes.length,\n idx;\n\n for (idx = 0; idx < attributeCount; idx++) {\n attribute = attributes[idx];\n result[\"@\" + attribute.nodeName] = attribute.nodeValue;\n }\n\n for (node = element.firstChild; node; node = node.nextSibling) {\n nodeType = node.nodeType;\n\n if (nodeType === 3 || nodeType === 4) {\n // text nodes or CDATA are stored as #text field\n result[\"#text\"] = node.nodeValue;\n } else if (nodeType === 1) {\n // elements are stored as fields\n parsedNode = this.parseDOM(node);\n\n nodeName = node.nodeName;\n\n member = result[nodeName];\n\n if (isArray(member)) {\n // elements of same nodeName are stored as array\n member.push(parsedNode);\n } else if (member !== undefined$1) {\n member = [member, parsedNode];\n } else {\n member = parsedNode;\n }\n\n result[nodeName] = member;\n }\n }\n return result;\n },\n\n evaluate: function(value, expression) {\n var members = expression.split(\".\"),\n member,\n result,\n length,\n intermediateResult,\n idx;\n\n while (member = members.shift()) {\n value = value[member];\n\n if (isArray(value)) {\n result = [];\n expression = members.join(\".\");\n\n for (idx = 0, length = value.length; idx < length; idx++) {\n intermediateResult = this.evaluate(value[idx], expression);\n\n intermediateResult = isArray(intermediateResult) ? intermediateResult : [intermediateResult];\n\n result.push.apply(result, intermediateResult);\n }\n\n return result;\n }\n }\n\n return value;\n },\n\n parse: function(xml) {\n var documentElement,\n tree,\n result = {};\n\n documentElement = xml.documentElement || $.parseXML(xml).documentElement;\n\n tree = this.parseDOM(documentElement);\n\n result[documentElement.nodeName] = tree;\n\n return result;\n },\n\n xpathToMember: function(member, raw) {\n if (!member) {\n return \"\";\n }\n\n member = member.replace(/^\\//, \"\") // remove the first \"/\"\n .replace(/\\//g, \".\"); // replace all \"/\" with \".\"\n\n if (member.indexOf(\"@\") >= 0) {\n // replace @attribute with '[\"@attribute\"]'\n return member.replace(/\\.?(@.*)/, raw ? '$1' : '[\"$1\"]');\n }\n\n if (member.indexOf(\"text()\") >= 0) {\n // replace \".text()\" with '[\"#text\"]'\n return member.replace(/(\\.?text\\(\\))/, raw ? '#text' : '[\"#text\"]');\n }\n\n return member;\n },\n getter: function(member) {\n return getter(this.xpathToMember(member), true);\n }\n });\n\n $.extend(true, kendo.data, {\n XmlDataReader: XmlDataReader,\n readers: {\n xml: XmlDataReader\n }\n });\n })(window.kendo.jQuery);\n var kendo$W = kendo;\n\n var __meta__$T = {\n id: \"data\",\n name: \"Data source\",\n category: \"framework\",\n description: \"Powerful component for using local and remote data.Fully supports CRUD, Sorting, Paging, Filtering, Grouping, and Aggregates.\",\n depends: [ \"core\" ],\n features: [ {\n id: \"data-odata\",\n name: \"OData\",\n description: \"Support for accessing Open Data Protocol (OData) services.\",\n depends: [ \"data.odata\" ]\n }, {\n id: \"data-signalr\",\n name: \"SignalR\",\n description: \"Support for binding to SignalR hubs.\",\n depends: [ \"data.signalr\" ]\n }, {\n id: \"data-XML\",\n name: \"XML\",\n description: \"Support for binding to XML.\",\n depends: [ \"data.xml\" ]\n }]\n };\n\n\n (function($, undefined$1) {\n var extend = $.extend,\n isPlainObject = $.isPlainObject,\n isEmptyObject = $.isEmptyObject,\n isArray = Array.isArray,\n grep = $.grep,\n ajax = $.ajax,\n map,\n each = $.each,\n noop = $.noop,\n kendo = window.kendo,\n isFunction = kendo.isFunction,\n Observable = kendo.Observable,\n Class = kendo.Class,\n STRING = \"string\",\n FUNCTION = \"function\",\n ASCENDING = \"asc\",\n CREATE = \"create\",\n READ = \"read\",\n UPDATE = \"update\",\n DESTROY = \"destroy\",\n CHANGE = \"change\",\n SYNC = \"sync\",\n GET = \"get\",\n ERROR = \"error\",\n REQUESTSTART = \"requestStart\",\n PROGRESS = \"progress\",\n REQUESTEND = \"requestEnd\",\n ITEMSLOADED = \"itemsLoaded\",\n ITEMLOAD = \"itemLoad\",\n crud = [CREATE, READ, UPDATE, DESTROY],\n identity = function(o) { return o; },\n getter = kendo.getter,\n stringify = kendo.stringify,\n math = Math,\n push = [].push,\n join = [].join,\n pop = [].pop,\n splice = [].splice,\n shift = [].shift,\n slice = [].slice,\n unshift = [].unshift,\n toString = {}.toString,\n stableSort = kendo.support.stableSort,\n dateRegExp = /^\\/Date\\((.*?)\\)\\/$/,\n objectKeys = [];\n\n var ObservableArray = Observable.extend({\n init: function(array, type) {\n var that = this;\n\n that.type = type || ObservableObject;\n\n Observable.fn.init.call(that);\n\n that.length = array.length;\n\n that.wrapAll(array, that);\n that._loadPromises = [];\n that._loadedNodes = [];\n },\n\n at: function(index) {\n return this[index];\n },\n\n toJSON: function(serializeFunctions) {\n var idx, length = this.length, value, json = new Array(length);\n\n for (idx = 0; idx < length; idx++) {\n value = this[idx];\n\n if (value instanceof ObservableObject) {\n value = value.toJSON(serializeFunctions);\n }\n\n json[idx] = value;\n }\n\n return json;\n },\n\n parent: noop,\n\n wrapAll: function(source, target) {\n var that = this,\n idx,\n length,\n parent = function() {\n return that;\n };\n\n target = target || [];\n\n for (idx = 0, length = source.length; idx < length; idx++) {\n target[idx] = that.wrap(source[idx], parent);\n }\n\n return target;\n },\n\n wrap: function(object, parent) {\n var that = this,\n observable;\n\n if (object !== null && toString.call(object) === \"[object Object]\") {\n observable = object instanceof that.type || object instanceof Model;\n\n if (!observable) {\n object = object instanceof ObservableObject ? object.toJSON() : object;\n object = new that.type(object);\n }\n\n object.parent = parent;\n\n object.bind(CHANGE, function(e) {\n var isGroup = object.hasOwnProperty(\"hasSubgroups\");\n that.trigger(CHANGE, {\n field: e.field,\n node: e.node,\n index: e.index,\n items: e.items || [this],\n action: e.node || isGroup ? (e.action || \"itemloaded\") : \"itemchange\"\n });\n });\n\n object.bind(ITEMLOAD, function(e) {\n that._loadPromises.push(e.promise);\n that._loading = true;\n\n e.promise.done(function() {\n that._loadedNodes.push(e.node);\n var index = that._loadPromises.indexOf(e.promise);\n that._loadPromises.splice(index, 1);\n\n if (!that._loadPromises.length) {\n that._loading = false;\n that.trigger(ITEMSLOADED, { collection: that, nodes: that._loadedNodes });\n that._loadedNodes = [];\n }\n });\n });\n }\n\n return object;\n },\n\n loading: function() {\n return this._loading;\n },\n\n push: function() {\n var index = this.length,\n items = this.wrapAll(arguments),\n result;\n\n result = push.apply(this, items);\n\n if (!this.omitChangeEvent) {\n this.trigger(CHANGE, {\n action: \"add\",\n index: index,\n items: items\n });\n }\n\n return result;\n },\n\n slice: slice,\n\n sort: [].sort,\n\n join: join,\n\n pop: function() {\n var length = this.length, result = pop.apply(this);\n\n if (length) {\n this.trigger(CHANGE, {\n action: \"remove\",\n index: length - 1,\n items: [result]\n });\n }\n\n return result;\n },\n\n splice: function(index, howMany, item) {\n var items = this.wrapAll(slice.call(arguments, 2)),\n result, i, len;\n\n result = splice.apply(this, [index, howMany].concat(items));\n\n if (result.length) {\n if (!this.omitChangeEvent) {\n this.trigger(CHANGE, {\n action: \"remove\",\n index: index,\n items: this.omitCache && this.omitCache.length ? result.concat(this.omitCache) : result\n });\n this.omitCache = [];\n }\n\n for (i = 0, len = result.length; i < len; i++) {\n if (result[i] && result[i].children) {\n result[i].unbind(CHANGE);\n }\n }\n }\n\n if (item) {\n if (!this.omitChangeEvent) {\n this.trigger(CHANGE, {\n action: \"add\",\n index: index,\n items: items\n });\n }\n }\n return result;\n },\n\n shift: function() {\n var length = this.length, result = shift.apply(this);\n\n if (length) {\n this.trigger(CHANGE, {\n action: \"remove\",\n index: 0,\n items: [result]\n });\n }\n\n return result;\n },\n\n unshift: function() {\n var items = this.wrapAll(arguments),\n result;\n\n result = unshift.apply(this, items);\n\n this.trigger(CHANGE, {\n action: \"add\",\n index: 0,\n items: items\n });\n\n return result;\n },\n\n indexOf: function(item) {\n var that = this,\n idx,\n length;\n\n for (idx = 0, length = that.length; idx < length; idx++) {\n if (that[idx] === item) {\n return idx;\n }\n }\n return -1;\n },\n\n forEach: function(callback, thisArg) {\n var idx = 0;\n var length = this.length;\n var context = thisArg || window;\n\n for (; idx < length; idx++) {\n callback.call(context, this[idx], idx, this);\n }\n },\n\n map: function(callback, thisArg) {\n var idx = 0;\n var result = [];\n var length = this.length;\n var context = thisArg || window;\n\n for (; idx < length; idx++) {\n result[idx] = callback.call(context, this[idx], idx, this);\n }\n\n return result;\n },\n\n reduce: function(callback) {\n var idx = 0,\n result,\n length = this.length;\n\n if (arguments.length == 2) {\n result = arguments[1];\n } else if (idx < length) {\n result = this[idx++];\n }\n\n for (; idx < length; idx++) {\n result = callback(result, this[idx], idx, this);\n }\n\n return result;\n },\n\n reduceRight: function(callback) {\n var idx = this.length - 1,\n result;\n\n if (arguments.length == 2) {\n result = arguments[1];\n } else if (idx > 0) {\n result = this[idx--];\n }\n\n for (; idx >= 0; idx--) {\n result = callback(result, this[idx], idx, this);\n }\n\n return result;\n },\n\n filter: function(callback, thisArg) {\n var idx = 0;\n var result = [];\n var item;\n var length = this.length;\n var context = thisArg || window;\n\n for (; idx < length; idx++) {\n item = this[idx];\n if (callback.call(context, item, idx, this)) {\n result[result.length] = item;\n }\n }\n\n return result;\n },\n\n find: function(callback, thisArg) {\n var idx = 0;\n var item;\n var length = this.length;\n var context = thisArg || window;\n\n for (; idx < length; idx++) {\n item = this[idx];\n if (callback.call(context, item, idx, this)) {\n return item;\n }\n }\n },\n\n every: function(callback, thisArg) {\n var idx = 0;\n var item;\n var length = this.length;\n var context = thisArg || window;\n\n for (; idx < length; idx++) {\n item = this[idx];\n if (!callback.call(context, item, idx, this)) {\n return false;\n }\n }\n\n return true;\n },\n\n some: function(callback, thisArg) {\n var idx = 0;\n var item;\n var length = this.length;\n var context = thisArg || window;\n\n for (; idx < length; idx++) {\n item = this[idx];\n if (callback.call(context, item, idx, this)) {\n return true;\n }\n }\n\n return false;\n },\n\n // non-standard collection methods\n remove: function(item) {\n var idx = this.indexOf(item);\n\n if (idx !== -1) {\n this.splice(idx, 1);\n }\n },\n\n empty: function() {\n this.splice(0, this.length);\n }\n });\n\n // Polyfill for Symbol.iterator\n if (typeof Symbol !== \"undefined\" && Symbol.iterator && !ObservableArray.prototype[Symbol.iterator]) {\n ObservableArray.prototype[Symbol.iterator] = [][Symbol.iterator];\n }\n\n var LazyObservableArray = ObservableArray.extend({\n init: function(data, type, events) {\n var parentFn = function() { return this; };\n\n Observable.fn.init.call(this);\n\n this.type = type || ObservableObject;\n\n if (events) {\n this._events = events;\n }\n\n for (var idx = 0; idx < data.length; idx++) {\n this[idx] = data[idx];\n }\n\n this.length = idx;\n this._parent = parentFn.bind(this);\n this._loadPromises = [];\n this._loadedNodes = [];\n },\n at: function(index) {\n var item = this[index];\n\n if (!(item instanceof this.type)) {\n item = this[index] = this.wrap(item, this._parent);\n } else {\n item.parent = this._parent;\n }\n\n return item;\n }\n });\n\n function eventHandler(context, type, field, prefix) {\n return function(e) {\n var event = {}, key;\n\n for (key in e) {\n event[key] = e[key];\n }\n\n if (prefix) {\n event.field = field + \".\" + e.field;\n } else {\n event.field = field;\n }\n\n if (type == CHANGE && context._notifyChange) {\n context._notifyChange(event);\n }\n\n context.trigger(type, event);\n };\n }\n\n function isPrimitiveType(value) {\n return (typeof value === \"object\" && Object.getPrototypeOf(value) === Object.getPrototypeOf({}))\n || Object.getPrototypeOf(value) === Object.getPrototypeOf(new Date())\n || typeof value !== \"object\";\n }\n\n function ownKeys(value, ignoreObjectKeys) {\n var props = [];\n var protoKeys = [];\n var keys, filteredObjectKeys;\n\n value = value || {};\n\n if (!isPrimitiveType(value)) {\n protoKeys = Object.getOwnPropertyNames(Object.getPrototypeOf(value)).filter(f => f.indexOf(\"__\") !== 0);\n }\n\n keys = Object.getOwnPropertyNames(value).concat(protoKeys);\n\n filteredObjectKeys = objectKeys.filter(function(key) {\n return keys.indexOf(key) < 0;\n });\n\n while (value) {\n Object.getOwnPropertyNames(value).forEach(function(prop) {\n if (props.indexOf(prop) === -1 && (!ignoreObjectKeys || filteredObjectKeys.indexOf(prop) < 0)) {\n props.push(prop);\n }\n });\n value = Object.getPrototypeOf(value);\n }\n\n return props;\n }\n\n objectKeys = ownKeys({}, false);\n\n var ObservableObject = Observable.extend({\n init: function(value) {\n var that = this,\n member,\n keys = ownKeys(value, true),\n parent = function() {\n return that;\n };\n\n Observable.fn.init.call(this);\n\n this._handlers = {};\n\n keys.forEach(function(field) {\n member = value[field];\n\n if (typeof member === \"object\" && member && !member.getTime && field.charAt(0) != \"_\") {\n member = that.wrap(member, field, parent);\n }\n\n that[field] = member;\n });\n\n that.uid = kendo.guid();\n },\n\n shouldSerialize: function(field, serializeFunctions) {\n return this.hasOwnProperty(field) && field !== \"_handlers\" && field !== \"_events\" && ((serializeFunctions && serializeFunctions[field]) || typeof this[field] !== FUNCTION) && field !== \"uid\";\n },\n\n forEach: function(f) {\n for (var i in this) {\n if (this.shouldSerialize(i)) {\n f(this[i], i);\n }\n }\n },\n\n toJSON: function(serializeFunctions) {\n var result = {}, value, field;\n\n for (field in this) {\n if (this.shouldSerialize(field, serializeFunctions)) {\n value = this[field];\n\n if (value instanceof ObservableObject || value instanceof ObservableArray) {\n value = value.toJSON(serializeFunctions);\n }\n\n result[field] = value;\n }\n }\n\n return result;\n },\n\n get: function(field) {\n var that = this, result;\n\n that.trigger(GET, { field: field });\n\n if (field === \"this\") {\n result = that;\n } else {\n result = kendo.getter(field, true)(that);\n }\n\n return result;\n },\n\n _set: function(field, value) {\n var that = this;\n var composite = field.indexOf(\".\") >= 0;\n\n if (composite) {\n var paths = field.split(\".\"),\n path = \"\";\n\n while (paths.length > 1) {\n path += paths.shift();\n var obj = kendo.getter(path, true)(that);\n if (obj instanceof ObservableObject) {\n obj.set(paths.join(\".\"), value);\n return composite;\n }\n path += \".\";\n }\n }\n\n kendo.setter(field)(that, value);\n\n return composite;\n },\n\n set: function(field, value) {\n var that = this,\n isSetPrevented = false,\n composite = field.indexOf(\".\") >= 0,\n current = kendo.getter(field, true)(that);\n\n if (current !== value) {\n if (current instanceof Observable && this._handlers[field]) {\n if (this._handlers[field].get) {\n current.unbind(GET, this._handlers[field].get);\n }\n current.unbind(CHANGE, this._handlers[field].change);\n }\n\n isSetPrevented = that.trigger(\"set\", { field: field, value: value });\n\n if (!isSetPrevented) {\n if (!composite) {\n value = that.wrap(value, field, function() { return that; });\n }\n if ((!that._set(field, value) || field.indexOf(\"(\") >= 0 || field.indexOf(\"[\") >= 0)) {\n that.trigger(CHANGE, { field: field });\n }\n }\n }\n\n return isSetPrevented;\n },\n\n parent: noop,\n\n wrap: function(object, field, parent) {\n var that = this;\n var get;\n var change;\n var type = toString.call(object);\n\n if (object != null && (type === \"[object Object]\" || type === \"[object Array]\")) {\n var isObservableArray = object instanceof ObservableArray;\n var isDataSource = object instanceof DataSource;\n\n if (type === \"[object Object]\" && !isDataSource && !isObservableArray) {\n if (!(object instanceof ObservableObject)) {\n object = new ObservableObject(object);\n }\n\n get = eventHandler(that, GET, field, true);\n object.bind(GET, get);\n change = eventHandler(that, CHANGE, field, true);\n object.bind(CHANGE, change);\n\n that._handlers[field] = { get: get, change: change };\n } else if (type === \"[object Array]\" || isObservableArray || isDataSource) {\n if (!isObservableArray && !isDataSource) {\n object = new ObservableArray(object);\n }\n\n change = eventHandler(that, CHANGE, field, false);\n\n object.bind(CHANGE, change);\n\n that._handlers[field] = { change: change };\n }\n\n object.parent = parent;\n }\n\n return object;\n }\n });\n\n function equal(x, y) {\n if (x === y) {\n return true;\n }\n\n var xtype = kendo.type(x), ytype = kendo.type(y), field;\n\n if (xtype !== ytype) {\n return false;\n }\n\n if (xtype === \"date\") {\n return x.getTime() === y.getTime();\n }\n\n if (xtype !== \"object\" && xtype !== \"array\") {\n return false;\n }\n\n for (field in x) {\n if (!equal(x[field], y[field])) {\n return false;\n }\n }\n\n return true;\n }\n\n var parsers = {\n \"number\": function(value) {\n if (typeof value === STRING && value.toLowerCase() === \"null\") {\n return null;\n }\n return kendo.parseFloat(value);\n },\n\n \"date\": function(value) {\n if (typeof value === STRING && value.toLowerCase() === \"null\") {\n return null;\n }\n return kendo.parseDate(value);\n },\n\n \"boolean\": function(value) {\n if (typeof value === STRING) {\n if (value.toLowerCase() === \"null\") {\n return null;\n } else {\n return value.toLowerCase() === \"true\";\n }\n }\n return value != null ? !!value : value;\n },\n\n \"string\": function(value) {\n if (typeof value === STRING && value.toLowerCase() === \"null\") {\n return null;\n }\n return value != null ? (value + \"\") : value;\n },\n\n \"default\": function(value) {\n return value;\n }\n };\n\n var defaultValues = {\n \"string\": \"\",\n \"number\": 0,\n \"date\": new Date(),\n \"boolean\": false,\n \"default\": \"\"\n };\n\n function getFieldByName(obj, name) {\n var field,\n fieldName;\n\n for (fieldName in obj) {\n field = obj[fieldName];\n if (isPlainObject(field) && field.field && field.field === name) {\n return field;\n } else if (field === name) {\n return field;\n }\n }\n return null;\n }\n\n var Model = ObservableObject.extend({\n init: function(data) {\n var that = this;\n\n if (!data || $.isEmptyObject(data)) {\n data = $.extend({}, that.defaults, data);\n\n if (that._initializers) {\n for (var idx = 0; idx < that._initializers.length; idx++) {\n var name = that._initializers[idx];\n data[name] = that.defaults[name]();\n }\n }\n }\n\n ObservableObject.fn.init.call(that, data);\n\n that.dirty = false;\n that.dirtyFields = {};\n\n if (that.idField) {\n that.id = that.get(that.idField);\n\n if (that.id === undefined$1) {\n that.id = that._defaultId;\n }\n }\n },\n\n shouldSerialize: function(field) {\n return ObservableObject.fn.shouldSerialize.call(this, field) &&\n field !== \"uid\" && !(this.idField !== \"id\" && field === \"id\") &&\n field !== \"dirty\" && field !== \"dirtyFields\" && field !== \"_accessors\";\n },\n\n _parse: function(field, value) {\n var that = this,\n fieldName = field,\n fields = (that.fields || {}),\n parse;\n\n field = fields[field];\n if (!field) {\n field = getFieldByName(fields, fieldName);\n }\n if (field) {\n parse = field.parse;\n if (!parse && field.type) {\n parse = parsers[field.type.toLowerCase()];\n }\n }\n\n return parse ? parse(value) : value;\n },\n\n _notifyChange: function(e) {\n var action = e.action;\n\n if (action == \"add\" || action == \"remove\") {\n this.dirty = true;\n this.dirtyFields[e.field] = true;\n }\n },\n\n editable: function(field) {\n field = (this.fields || {})[field];\n return field ? field.editable !== false : true;\n },\n\n set: function(field, value) {\n var that = this;\n var dirty = that.dirty;\n\n if (that.editable(field)) {\n value = that._parse(field, value);\n\n if (!equal(value, that.get(field))) {\n that.dirty = true;\n that.dirtyFields[field] = true;\n\n if (ObservableObject.fn.set.call(that, field, value) && !dirty) {\n that.dirty = dirty;\n\n if (!that.dirty) {\n that.dirtyFields[field] = false;\n }\n }\n } else {\n that.trigger(\"equalSet\", { field: field, value: value });\n }\n }\n },\n\n accept: function(data) {\n var that = this,\n parent = function() { return that; },\n field;\n\n for (field in data) {\n var value = data[field];\n\n if (field.charAt(0) != \"_\") {\n value = that.wrap(data[field], field, parent);\n }\n\n that._set(field, value);\n }\n\n if (that.idField) {\n that.id = that.get(that.idField);\n }\n\n that.dirty = false;\n that.dirtyFields = {};\n },\n\n isNew: function() {\n return this.id === this._defaultId;\n }\n });\n\n Model.define = function(base, options) {\n if (options === undefined$1) {\n options = base;\n base = Model;\n }\n\n var model,\n proto = extend({ defaults: {} }, options),\n name,\n field,\n type,\n value,\n idx,\n length,\n fields = {},\n originalName,\n id = proto.id,\n functionFields = [];\n\n if (id) {\n proto.idField = id;\n }\n\n if (proto.id) {\n delete proto.id;\n }\n\n if (id) {\n proto.defaults[id] = proto._defaultId = \"\";\n }\n\n if (toString.call(proto.fields) === \"[object Array]\") {\n for (idx = 0, length = proto.fields.length; idx < length; idx++) {\n field = proto.fields[idx];\n if (typeof field === STRING) {\n fields[field] = {};\n } else if (field.field) {\n fields[field.field] = field;\n }\n }\n proto.fields = fields;\n }\n\n for (name in proto.fields) {\n field = proto.fields[name];\n type = field.type || \"default\";\n value = null;\n originalName = name;\n\n name = typeof (field.field) === STRING ? field.field : name;\n\n if (!field.nullable || field.defaultValue) {\n value = proto.defaults[originalName !== name ? originalName : name] = field.defaultValue !== undefined$1 ? field.defaultValue : defaultValues[type.toLowerCase()];\n\n if (typeof value === \"function\") {\n functionFields.push(name);\n }\n }\n\n if (options.id === name) {\n proto._defaultId = value;\n }\n\n proto.defaults[originalName !== name ? originalName : name] = value;\n\n if ($.isPlainObject(field)) {\n field.parse = field.parse || parsers[type];\n } else {\n field = {\n parse: parsers[type]\n };\n }\n }\n\n if (functionFields.length > 0) {\n proto._initializers = functionFields;\n }\n\n model = base.extend(proto);\n model.define = function(options) {\n return Model.define(model, options);\n };\n\n if (proto.fields) {\n model.fields = proto.fields;\n model.idField = proto.idField;\n }\n\n return model;\n };\n\n var Comparer = {\n selector: function(field) {\n return isFunction(field) ? field : getter(field);\n },\n\n compare: function(field) {\n var selector = this.selector(field);\n return function(a, b) {\n a = selector(a);\n b = selector(b);\n\n if (a == null && b == null) {\n return 0;\n }\n\n if (a == null) {\n return -1;\n }\n\n if (b == null) {\n return 1;\n }\n\n if (a.localeCompare) {\n return a.localeCompare(b);\n }\n\n return a > b ? 1 : (a < b ? -1 : 0);\n };\n },\n\n create: function(sort) {\n var compare = sort.compare || this.compare(sort.field);\n\n if (sort.dir == \"desc\") {\n return function(a, b) {\n return compare(b, a, true);\n };\n }\n\n return compare;\n },\n\n combine: function(comparers) {\n return function(a, b) {\n var result = comparers[0](a, b),\n idx,\n length;\n\n for (idx = 1, length = comparers.length; idx < length; idx ++) {\n result = result || comparers[idx](a, b);\n }\n\n return result;\n };\n }\n };\n\n var StableComparer = extend({}, Comparer, {\n asc: function(field) {\n var selector = this.selector(field);\n return function(a, b) {\n var valueA = selector(a);\n var valueB = selector(b);\n\n if (valueA && valueA.getTime && valueB && valueB.getTime) {\n valueA = valueA.getTime();\n valueB = valueB.getTime();\n }\n\n if (valueA === valueB) {\n return a.__position - b.__position;\n }\n\n if (valueA == null) {\n return -1;\n }\n\n if (valueB == null) {\n return 1;\n }\n\n if (valueA.localeCompare) {\n return valueA.localeCompare(valueB);\n }\n\n return valueA > valueB ? 1 : -1;\n };\n },\n\n desc: function(field) {\n var selector = this.selector(field);\n return function(a, b) {\n var valueA = selector(a);\n var valueB = selector(b);\n\n if (valueA && valueA.getTime && valueB && valueB.getTime) {\n valueA = valueA.getTime();\n valueB = valueB.getTime();\n }\n\n if (valueA === valueB) {\n return a.__position - b.__position;\n }\n\n if (valueA == null) {\n return 1;\n }\n\n if (valueB == null) {\n return -1;\n }\n\n if (valueB.localeCompare) {\n return valueB.localeCompare(valueA);\n }\n\n return valueA < valueB ? 1 : -1;\n };\n },\n create: function(sort) {\n return this[sort.dir](sort.field);\n }\n });\n\n map = function(array, callback) {\n var idx, length = array.length, result = new Array(length);\n\n for (idx = 0; idx < length; idx++) {\n result[idx] = callback(array[idx], idx, array);\n }\n\n return result;\n };\n\n var operators = (function() {\n\n function quote(str) {\n if (typeof str == \"string\") {\n str = str.replace(/[\\r\\n]+/g, \"\");\n }\n return JSON.stringify(str);\n }\n\n function textOp(impl) {\n return function(a, b, ignore, accentFoldingFiltering) {\n b += \"\";\n if (ignore) {\n a = \"(\" + a + \" + '').toString()\" + ((accentFoldingFiltering) ? \".toLocaleLowerCase('\" + accentFoldingFiltering + \"')\" : \".toLowerCase()\");\n b = ((accentFoldingFiltering) ? b.toLocaleLowerCase(accentFoldingFiltering) : b.toLowerCase());\n }\n return impl(a, quote(b), ignore);\n };\n }\n\n function operator(op, a, b, ignore, accentFoldingFiltering) {\n if (b != null) {\n if (typeof b === STRING) {\n var date = dateRegExp.exec(b);\n if (date) {\n b = new Date(+date[1]);\n } else if (ignore) {\n b = quote(((accentFoldingFiltering) ? b.toLocaleLowerCase(accentFoldingFiltering) : b.toLowerCase()));\n a = \"((\" + a + \" || '')+'')\" + ((accentFoldingFiltering) ? \".toLocaleLowerCase('\" + accentFoldingFiltering + \"')\" : \".toLowerCase()\");\n } else {\n b = quote(b);\n }\n }\n\n if (b.getTime) {\n //b looks like a Date\n a = \"(\" + a + \"&&\" + a + \".getTime?\" + a + \".getTime():\" + a + \")\";\n b = b.getTime();\n }\n }\n\n return a + \" \" + op + \" \" + b;\n }\n\n function getMatchRegexp(pattern) {\n // take a pattern, as supported by Excel match filter, and\n // convert it to the equivalent JS regular expression.\n // Excel patterns support:\n //\n // * - match any sequence of characters\n // ? - match a single character\n //\n // to match a literal * or ?, they must be prefixed by a tilde (~)\n for (var rx = \"/^\", esc = false, i = 0; i < pattern.length; ++i) {\n var ch = pattern.charAt(i);\n if (esc) {\n rx += \"\\\\\" + ch;\n } else if (ch == \"~\") {\n esc = true;\n continue;\n } else if (ch == \"*\") {\n rx += \".*\";\n } else if (ch == \"?\") {\n rx += \".\";\n } else if (\".+^$()[]{}|\\\\/\\n\\r\\u2028\\u2029\\xA0\".indexOf(ch) >= 0) {\n rx += \"\\\\\" + ch;\n } else {\n rx += ch;\n }\n esc = false;\n }\n return rx + \"$/\";\n }\n\n return {\n quote: function(value) {\n if (value && value.getTime) {\n return \"new Date(\" + value.getTime() + \")\";\n }\n return quote(value);\n },\n eq: function(a, b, ignore, accentFoldingFiltering) {\n return operator(\"==\", a, b, ignore, accentFoldingFiltering);\n },\n neq: function(a, b, ignore, accentFoldingFiltering) {\n return operator(\"!=\", a, b, ignore, accentFoldingFiltering);\n },\n gt: function(a, b, ignore) {\n return operator(\">\", a, b, ignore);\n },\n gte: function(a, b, ignore) {\n return operator(\">=\", a, b, ignore);\n },\n lt: function(a, b, ignore) {\n return operator(\"<\", a, b, ignore);\n },\n lte: function(a, b, ignore) {\n return operator(\"<=\", a, b, ignore);\n },\n startswith: textOp(function(a, b) {\n return a + \".lastIndexOf(\" + b + \", 0) == 0\";\n }),\n doesnotstartwith: textOp(function(a, b) {\n return a + \".lastIndexOf(\" + b + \", 0) == -1\";\n }),\n endswith: textOp(function(a, b) {\n var n = b ? b.length - 2 : 0;\n return a + \".indexOf(\" + b + \", \" + a + \".length - \" + n + \") >= 0\";\n }),\n doesnotendwith: textOp(function(a, b) {\n var n = b ? b.length - 2 : 0;\n return a + \".indexOf(\" + b + \", \" + a + \".length - \" + n + \") < 0\";\n }),\n contains: textOp(function(a, b) {\n return a + \".indexOf(\" + b + \") >= 0\";\n }),\n doesnotcontain: textOp(function(a, b) {\n return a + \".indexOf(\" + b + \") == -1\";\n }),\n matches: textOp(function(a, b) {\n b = b.substring(1, b.length - 1);\n return getMatchRegexp(b) + \".test(\" + a + \")\";\n }),\n doesnotmatch: textOp(function(a, b) {\n b = b.substring(1, b.length - 1);\n return \"!\" + getMatchRegexp(b) + \".test(\" + a + \")\";\n }),\n isempty: function(a) {\n return a + \" === ''\";\n },\n isnotempty: function(a) {\n return a + \" !== ''\";\n },\n isnull: function(a) {\n return \"(\" + a + \" == null)\";\n },\n isnotnull: function(a) {\n return \"(\" + a + \" != null)\";\n },\n isnullorempty: function(a) {\n return \"(\" + a + \" === null) || (\" + a + \" === '')\";\n },\n isnotnullorempty: function(a) {\n return \"(\" + a + \" !== null) && (\" + a + \" !== '')\";\n }\n };\n })();\n\n function Query(data) {\n this.data = data || [];\n }\n\n // Continue to support legacy unsafe-eval for the spreadsheet\n Query.filterExpr = function(expression, options = { noEval: false }) {\n if (options.noEval) {\n // using no-eval for most cases\n return filterExprNoEval(expression);\n }\n\n var expressions = [],\n logic = { and: \" && \", or: \" || \" },\n idx,\n length,\n filter,\n expr,\n fieldFunctions = [],\n operatorFunctions = [],\n field,\n operator,\n filters = expression.filters;\n\n for (idx = 0, length = filters.length; idx < length; idx++) {\n filter = filters[idx];\n field = filter.field;\n operator = filter.operator;\n\n if (filter.filters) {\n expr = Query.filterExpr(filter);\n //Nested function fields or operators - update their index e.g. __o[0] -> __o[1]\n filter = expr.expression\n .replace(/__o\\[(\\d+)\\]/g, function(match, index) {\n index = +index;\n return \"__o[\" + (operatorFunctions.length + index) + \"]\";\n })\n .replace(/__f\\[(\\d+)\\]/g, function(match, index) {\n index = +index;\n return \"__f[\" + (fieldFunctions.length + index) + \"]\";\n });\n\n operatorFunctions.push.apply(operatorFunctions, expr.operators);\n fieldFunctions.push.apply(fieldFunctions, expr.fields);\n } else {\n if (typeof field === FUNCTION) {\n expr = \"__f[\" + fieldFunctions.length + \"](d)\";\n fieldFunctions.push(field);\n } else {\n expr = kendo.expr(field);\n }\n\n if (typeof operator === FUNCTION) {\n filter = \"__o[\" + operatorFunctions.length + \"](\" + expr + \", \" + operators.quote(filter.value) + \")\";\n operatorFunctions.push(operator);\n } else {\n filter = operators[(operator || \"eq\").toLowerCase()](expr, filter.value, filter.ignoreCase !== undefined$1 ? filter.ignoreCase : true, expression.accentFoldingFiltering);\n }\n }\n\n expressions.push(filter);\n }\n\n return { expression: \"(\" + expressions.join(logic[expression.logic]) + \")\", fields: fieldFunctions, operators: operatorFunctions };\n };\n\n function normalizeSort(field, dir) {\n if (field) {\n var descriptor = typeof field === STRING ? { field: field, dir: dir } : field,\n descriptors = isArray(descriptor) ? descriptor : (descriptor !== undefined$1 ? [descriptor] : []);\n\n return grep(descriptors, function(d) { return !!d.dir; });\n }\n }\n\n function sortFields(sorts, dir) {\n var sortObject = {};\n\n if (sorts) {\n var descriptor = typeof sorts === STRING ? { field: sorts, dir: dir } : sorts,\n descriptors = isArray(descriptor) ? descriptor : (descriptor !== undefined$1 ? [descriptor] : []);\n\n for (var i = 0; i < descriptors.length; i++) {\n sortObject[descriptors[i].field] = { dir: descriptors[i].dir, index: i + 1 };\n }\n }\n\n return sortObject;\n }\n\n var operatorMap = {\n \"==\": \"eq\",\n equals: \"eq\",\n isequalto: \"eq\",\n equalto: \"eq\",\n equal: \"eq\",\n \"!=\": \"neq\",\n ne: \"neq\",\n notequals: \"neq\",\n isnotequalto: \"neq\",\n notequalto: \"neq\",\n notequal: \"neq\",\n \"<\": \"lt\",\n islessthan: \"lt\",\n lessthan: \"lt\",\n less: \"lt\",\n \"<=\": \"lte\",\n le: \"lte\",\n islessthanorequalto: \"lte\",\n lessthanequal: \"lte\",\n \">\": \"gt\",\n isgreaterthan: \"gt\",\n greaterthan: \"gt\",\n greater: \"gt\",\n \">=\": \"gte\",\n isgreaterthanorequalto: \"gte\",\n greaterthanequal: \"gte\",\n ge: \"gte\",\n notsubstringof: \"doesnotcontain\",\n isnull: \"isnull\",\n isempty: \"isempty\",\n isnotempty: \"isnotempty\"\n };\n\n function normalizeOperator(expression) {\n var idx,\n length,\n filter,\n operator,\n filters = expression.filters;\n\n if (filters) {\n for (idx = 0, length = filters.length; idx < length; idx++) {\n filter = filters[idx];\n operator = filter.operator;\n\n if (operator && typeof operator === STRING) {\n filter.operator = operatorMap[operator.toLowerCase()] || operator;\n }\n\n normalizeOperator(filter);\n }\n }\n }\n\n function normalizeFilter(expression) {\n if (expression && !isEmptyObject(expression)) {\n if (isArray(expression) || !expression.filters) {\n expression = {\n logic: \"and\",\n filters: isArray(expression) ? expression : [expression]\n };\n }\n\n normalizeOperator(expression);\n\n return expression;\n }\n }\n\n Query.normalizeFilter = normalizeFilter;\n\n function compareDescriptor(f1, f2) {\n if (f1.logic || f2.logic) {\n return false;\n }\n\n return f1.field === f2.field && f1.value === f2.value && f1.operator === f2.operator;\n }\n\n function normalizeDescriptor(filter) {\n filter = filter || {};\n\n if (isEmptyObject(filter)) {\n return { logic: \"and\", filters: [] };\n }\n\n return normalizeFilter(filter);\n }\n\n function fieldComparer(a, b) {\n if (b.logic || (a.field > b.field)) {\n return 1;\n } else if (a.field < b.field) {\n return -1;\n } else {\n return 0;\n }\n }\n\n function compareFilters(expr1, expr2) {\n expr1 = normalizeDescriptor(expr1);\n expr2 = normalizeDescriptor(expr2);\n\n if (expr1.logic !== expr2.logic) {\n return false;\n }\n\n var f1, f2;\n var filters1 = (expr1.filters || []).slice();\n var filters2 = (expr2.filters || []).slice();\n\n if (filters1.length !== filters2.length) {\n return false;\n }\n\n filters1 = filters1.sort(fieldComparer);\n filters2 = filters2.sort(fieldComparer);\n\n for (var idx = 0; idx < filters1.length; idx++) {\n f1 = filters1[idx];\n f2 = filters2[idx];\n\n if (f1.logic && f2.logic) {\n if (!compareFilters(f1, f2)) {\n return false;\n }\n } else if (!compareDescriptor(f1, f2)) {\n return false;\n }\n }\n\n return true;\n }\n\n Query.compareFilters = compareFilters;\n\n function normalizeAggregate(expressions) {\n return isArray(expressions) ? expressions : [expressions];\n }\n\n function normalizeGroup(field, dir, compare, skipItemSorting) {\n var descriptor = typeof field === STRING ? { field: field, dir: dir, compare: compare, skipItemSorting: skipItemSorting } : field,\n descriptors = isArray(descriptor) ? descriptor : (descriptor !== undefined$1 ? [descriptor] : []);\n\n return map(descriptors, function(d) {\n return {\n field: d.field,\n dir: d.dir || \"asc\",\n aggregates: d.aggregates,\n compare: d.compare,\n skipItemSorting: d.skipItemSorting\n };\n });\n }\n\n function normalizeGroupWithoutCompare(field, dir, compare) {\n var descriptors = normalizeGroup(field, dir, compare);\n\n for (var i = 0; i < descriptors.length; i++) {\n delete descriptors[i].compare;\n }\n\n return descriptors;\n }\n\n function anyGroupDescriptorHasCompare(groupDescriptors) {\n var descriptors = isArray(groupDescriptors) ? groupDescriptors : [groupDescriptors];\n\n for (var i = 0; i < descriptors.length; i++) {\n if (descriptors[i] && isFunction(descriptors[i].compare)) {\n return true;\n }\n }\n\n return false;\n }\n\n Query.prototype = {\n toArray: function() {\n return this.data;\n },\n range: function(index, count) {\n return new Query(this.data.slice(index, index + count));\n },\n skip: function(count) {\n return new Query(this.data.slice(count));\n },\n take: function(count) {\n return new Query(this.data.slice(0, count));\n },\n select: function(selector) {\n return new Query(map(this.data, selector));\n },\n order: function(selector, dir, inPlace) {\n var sort = { dir: dir };\n\n if (selector) {\n if (selector.compare) {\n sort.compare = selector.compare;\n } else {\n sort.field = selector;\n }\n }\n\n if (inPlace) {\n return new Query(this.data.sort(Comparer.create(sort)));\n }\n\n return new Query(this.data.slice(0).sort(Comparer.create(sort)));\n },\n orderBy: function(selector, inPlace) {\n return this.order(selector, \"asc\", inPlace);\n },\n orderByDescending: function(selector, inPlace) {\n return this.order(selector, \"desc\", inPlace);\n },\n sort: function(field, dir, comparer, inPlace) {\n var idx,\n length,\n descriptors = normalizeSort(field, dir),\n comparers = [];\n\n comparer = comparer || Comparer;\n\n if (descriptors.length) {\n for (idx = 0, length = descriptors.length; idx < length; idx++) {\n comparers.push(comparer.create(descriptors[idx]));\n }\n\n return this.orderBy({ compare: comparer.combine(comparers) }, inPlace);\n }\n\n return this;\n },\n\n filter: function(expressions) {\n var compiled,\n data = this.data,\n result = [];\n\n expressions = normalizeFilter(expressions);\n\n if (!expressions || expressions.filters.length === 0) {\n return this;\n }\n\n compiled = Query.filterExpr(expressions, { noEval: true });\n\n result = data.filter(compiled);\n return new Query(result);\n },\n\n group: function(descriptors, allData, options) {\n descriptors = normalizeGroup(descriptors || []);\n allData = allData || this.data;\n\n var that = this,\n result = new Query(that.data),\n descriptor;\n\n var getFilteredData = (g, data) => {\n data = data || new Query(allData).filter([{\n field: g.field,\n operator: \"eq\",\n value: g.value,\n ignoreCase: false\n }]);\n\n return data;\n };\n\n if (descriptors.length > 0) {\n descriptor = descriptors[0];\n\n if (options && options.groupPaging) {\n result = new Query(allData).groupAllData(descriptor, allData).select(function(group) {\n var cachedFilteredData;\n\n var items = descriptors.length > 1 ? new Query(group.items).group(descriptors.slice(1), getFilteredData(group, cachedFilteredData).toArray(), options).toArray() : group.items;\n\n return {\n field: group.field,\n value: group.value,\n hasSubgroups: descriptors.length > 1,\n items: items,\n aggregates: descriptor.aggregates && descriptor.aggregates.length ? getFilteredData(group, cachedFilteredData).aggregate(descriptor.aggregates) : {},\n uid: kendo.guid(),\n itemCount: items.length,\n subgroupCount: items.length\n };\n });\n\n } else {\n result = result.groupBy(descriptor).select(function(group) {\n var cachedFilteredData;\n return {\n field: group.field,\n value: group.value,\n items: descriptors.length > 1 ? new Query(group.items).group(descriptors.slice(1), getFilteredData(group, cachedFilteredData).toArray()).toArray() : group.items,\n hasSubgroups: descriptors.length > 1,\n aggregates: descriptor.aggregates && descriptor.aggregates.length ? getFilteredData(group, cachedFilteredData).aggregate(descriptor.aggregates) : {},\n };\n });\n }\n }\n return result;\n },\n\n groupBy: function(descriptor) {\n var that = this;\n\n if (isEmptyObject(descriptor) || !this.data.length) {\n return new Query([]);\n }\n\n var field = descriptor.field,\n sorted = descriptor.skipItemSorting ? this.data : this._sortForGrouping(field, descriptor.dir || \"asc\"),\n accessor = kendo.accessor(field),\n item,\n groupValue = accessor.get(sorted[0], field),\n group = {\n field: field,\n value: groupValue,\n items: []\n },\n currentValue,\n idx,\n len,\n result = [group];\n\n for (idx = 0, len = sorted.length; idx < len; idx++) {\n item = sorted[idx];\n currentValue = accessor.get(item, field);\n if (!groupValueComparer(groupValue, currentValue)) {\n groupValue = currentValue;\n group = {\n field: field,\n value: groupValue,\n items: []\n };\n result.push(group);\n }\n group.items.push(item);\n }\n\n result = that._sortGroups(result, descriptor);\n\n return new Query(result);\n },\n\n groupAllData: function(descriptor, allData) {\n if (isEmptyObject(descriptor) || this.data && !this.data.length) {\n return new Query([]);\n }\n\n var field = descriptor.field,\n sorted = descriptor.skipItemSorting ? allData : new Query(allData).sort(field, descriptor.dir || \"asc\", StableComparer).toArray(),\n accessor = kendo.accessor(field),\n item,\n groupValue = accessor.get(sorted[0], field),\n group = {\n field: field,\n value: groupValue,\n items: []\n },\n currentValue,\n idx,\n len,\n result = [group];\n\n for (idx = 0, len = sorted.length; idx < len; idx++) {\n item = sorted[idx];\n currentValue = accessor.get(item, field);\n if (!groupValueComparer(groupValue, currentValue)) {\n groupValue = currentValue;\n group = {\n field: field,\n value: groupValue,\n items: []\n };\n result.push(group);\n }\n group.items.push(item);\n }\n\n result = this._sortGroups(result, descriptor);\n\n return new Query(result);\n },\n\n _sortForGrouping: function(field, dir) {\n var idx, length,\n data = this.data;\n\n if (!stableSort) {\n for (idx = 0, length = data.length; idx < length; idx++) {\n data[idx].__position = idx;\n }\n\n data = new Query(data).sort(field, dir, StableComparer).toArray();\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n delete data[idx].__position;\n }\n return data;\n }\n\n return this.sort(field, dir).toArray();\n },\n\n _sortGroups: function(groups, descriptor) {\n var result = groups;\n\n if (descriptor && isFunction(descriptor.compare)) {\n result = new Query(result).order({ compare: descriptor.compare }, descriptor.dir || ASCENDING).toArray();\n }\n\n return result;\n },\n\n aggregate: function(aggregates) {\n var idx,\n len,\n result = {},\n state = {};\n\n if (aggregates && aggregates.length) {\n for (idx = 0, len = this.data.length; idx < len; idx++) {\n calculateAggregate(result, aggregates, this.data[idx], idx, len, state);\n }\n }\n return result;\n }\n };\n\n function groupValueComparer(a, b) {\n if (a && a.getTime && b && b.getTime) {\n return a.getTime() === b.getTime();\n }\n return a === b;\n }\n\n function calculateAggregate(accumulator, aggregates, item, index, length, state) {\n aggregates = aggregates || [];\n var idx,\n aggr,\n functionName,\n len = aggregates.length;\n\n for (idx = 0; idx < len; idx++) {\n aggr = aggregates[idx];\n functionName = aggr.aggregate;\n var field = aggr.field;\n accumulator[field] = accumulator[field] || {};\n state[field] = state[field] || {};\n state[field][functionName] = state[field][functionName] || {};\n accumulator[field][functionName] = functions[functionName.toLowerCase()](accumulator[field][functionName], item, kendo.accessor(field), index, length, state[field][functionName]);\n }\n }\n\n var functions = {\n sum: function(accumulator, item, accessor) {\n var value = accessor.get(item);\n\n if (!isNumber(accumulator)) {\n accumulator = value;\n } else if (isNumber(value)) {\n accumulator += value;\n }\n\n return accumulator;\n },\n count: function(accumulator) {\n return (accumulator || 0) + 1;\n },\n average: function(accumulator, item, accessor, index, length, state) {\n var value = accessor.get(item);\n\n if (state.count === undefined$1) {\n state.count = 0;\n }\n\n if (!isNumber(accumulator)) {\n accumulator = value;\n } else if (isNumber(value)) {\n accumulator += value;\n }\n\n if (isNumber(value)) {\n state.count++;\n }\n\n if (index == length - 1 && isNumber(accumulator)) {\n accumulator = accumulator / state.count;\n }\n return accumulator;\n },\n max: function(accumulator, item, accessor) {\n var value = accessor.get(item);\n\n if (!isNumber(accumulator) && !isDate(accumulator)) {\n accumulator = value;\n }\n\n if (accumulator < value && (isNumber(value) || isDate(value))) {\n accumulator = value;\n }\n return accumulator;\n },\n min: function(accumulator, item, accessor) {\n var value = accessor.get(item);\n\n if (!isNumber(accumulator) && !isDate(accumulator)) {\n accumulator = value;\n }\n\n if (accumulator > value && (isNumber(value) || isDate(value))) {\n accumulator = value;\n }\n return accumulator;\n }\n };\n\n function isNumber(val) {\n return typeof val === \"number\" && !isNaN(val);\n }\n\n function isDate(val) {\n return val && val.getTime;\n }\n\n function toJSON(array) {\n var idx, length = array.length, result = new Array(length);\n\n for (idx = 0; idx < length; idx++) {\n result[idx] = array[idx].toJSON();\n }\n\n return result;\n }\n\n Query.normalizeGroup = normalizeGroup;\n Query.normalizeSort = normalizeSort;\n\n Query.process = function(data, options, inPlace) {\n options = options || {};\n\n var group = options.group;\n var customGroupSort = anyGroupDescriptorHasCompare(normalizeGroup(group || []));\n var query = new Query(data),\n groupDescriptorsWithoutCompare = normalizeGroupWithoutCompare(group || []),\n normalizedSort = normalizeSort(options.sort || []),\n sort = customGroupSort ? normalizedSort : groupDescriptorsWithoutCompare.concat(normalizedSort),\n groupDescriptorsWithoutSort,\n total,\n filterCallback = options.filterCallback,\n filter = options.filter,\n skip = options.skip,\n take = options.take;\n\n if (sort && inPlace) {\n query = query.sort(sort, undefined$1, undefined$1, inPlace);\n }\n\n if (filter) {\n query = query.filter(filter);\n\n if (filterCallback) {\n query = filterCallback(query);\n }\n\n total = query.toArray().length;\n }\n\n if (sort) {\n if (!inPlace) {\n query = query.sort(sort);\n }\n\n if (group) {\n data = query.toArray();\n }\n }\n\n if (customGroupSort) {\n query = query.group(group, data, options);\n\n if (skip !== undefined$1 && take !== undefined$1 && !options.groupPaging) {\n query = new Query(flatGroups(query.toArray())).range(skip, take);\n\n groupDescriptorsWithoutSort = map(groupDescriptorsWithoutCompare, function(groupDescriptor) {\n return extend({}, groupDescriptor, {\n skipItemSorting: true\n });\n });\n\n query = query.group(groupDescriptorsWithoutSort, data, options);\n }\n } else {\n if (skip !== undefined$1 && take !== undefined$1) {\n total = query.data.length;\n\n if (skip + take > total && options.virtual) {\n skip -= skip + take - total;\n skip = skip < 0 ? 0 : skip;\n }\n query = query.range(skip, take);\n }\n\n if (group && (!isEmptyObject(group) || group.length !== 0)) {\n query = query.group(group, data, options);\n }\n }\n\n return {\n total: total,\n data: query.toArray()\n };\n };\n\n var LocalTransport = Class.extend({\n init: function(options) {\n this.data = options.data;\n },\n\n read: function(options) {\n options.success(this.data);\n },\n update: function(options) {\n options.success(options.data);\n },\n create: function(options) {\n options.success(options.data);\n },\n destroy: function(options) {\n options.success(options.data);\n }\n });\n\n var RemoteTransport = Class.extend( {\n init: function(options) {\n var that = this, parameterMap;\n\n options = that.options = extend({}, that.options, options);\n\n each(crud, function(index, type) {\n if (typeof options[type] === STRING) {\n options[type] = {\n url: options[type]\n };\n }\n });\n\n that.cache = options.cache ? Cache.create(options.cache) : {\n find: noop,\n add: noop\n };\n\n parameterMap = options.parameterMap;\n\n if (options.submit) {\n that.submit = options.submit;\n }\n\n if (isFunction(options.push)) {\n that.push = options.push;\n }\n\n if (!that.push) {\n that.push = identity;\n }\n\n that.parameterMap = isFunction(parameterMap) ? parameterMap : function(options) {\n var result = {};\n\n each(options, function(option, value) {\n if (option in parameterMap) {\n option = parameterMap[option];\n if (isPlainObject(option)) {\n value = option.value(value);\n option = option.key;\n }\n }\n\n result[option] = value;\n });\n\n return result;\n };\n },\n\n options: {\n parameterMap: identity\n },\n\n create: function(options) {\n return ajax(this.setup(options, CREATE));\n },\n\n read: function(options) {\n var that = this,\n success,\n error,\n result,\n cache = that.cache;\n\n options = that.setup(options, READ);\n\n success = options.success || noop;\n error = options.error || noop;\n\n result = cache.find(options.data);\n\n if (result !== undefined$1) {\n success(result);\n } else {\n options.success = function(result) {\n cache.add(options.data, result);\n\n success(result);\n };\n\n $.ajax(options);\n }\n },\n\n update: function(options) {\n return ajax(this.setup(options, UPDATE));\n },\n\n destroy: function(options) {\n return ajax(this.setup(options, DESTROY));\n },\n\n setup: function(options, type) {\n options = options || {};\n\n var that = this,\n parameters,\n operation = that.options[type],\n data = isFunction(operation.data) ? operation.data(options.data) : operation.data;\n\n options = extend(true, {}, operation, options);\n parameters = extend(true, {}, data, options.data);\n\n options.data = that.parameterMap(parameters, type);\n\n if (isFunction(options.url)) {\n options.url = options.url(parameters);\n }\n\n return options;\n }\n });\n\n var Cache = Class.extend({\n init: function() {\n this._store = {};\n },\n add: function(key, data) {\n if (key !== undefined$1) {\n this._store[stringify(key)] = data;\n }\n },\n find: function(key) {\n return this._store[stringify(key)];\n },\n clear: function() {\n this._store = {};\n },\n remove: function(key) {\n delete this._store[stringify(key)];\n }\n });\n\n Cache.create = function(options) {\n var store = {\n \"inmemory\": function() { return new Cache(); }\n };\n\n if (isPlainObject(options) && isFunction(options.find)) {\n return options;\n }\n\n if (options === true) {\n return new Cache();\n }\n\n return store[options]();\n };\n\n function serializeRecords(data, getters, modelInstance, originalFieldNames, fieldNames) {\n var record,\n getter,\n originalName,\n idx,\n setters = {},\n length;\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n record = data[idx];\n for (getter in getters) {\n originalName = fieldNames[getter];\n\n if (originalName && originalName !== getter) {\n if (!setters[originalName]) {\n setters[originalName] = kendo.setter(originalName);\n }\n setters[originalName](record, getters[getter](record));\n delete record[getter];\n }\n }\n }\n }\n\n function convertRecords(data, getters, modelInstance, originalFieldNames, fieldNames) {\n var record,\n getter,\n originalName,\n idx,\n length;\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n record = data[idx];\n for (getter in getters) {\n record[getter] = modelInstance._parse(getter, getters[getter](record));\n\n originalName = fieldNames[getter];\n if (originalName && originalName !== getter) {\n delete record[originalName];\n }\n }\n }\n }\n\n function convertGroup(data, getters, modelInstance, originalFieldNames, fieldNames) {\n var record,\n idx,\n fieldName,\n length;\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n record = data[idx];\n\n fieldName = originalFieldNames[record.field];\n if (fieldName && fieldName != record.field) {\n record.field = fieldName;\n }\n\n record.value = modelInstance._parse(record.field, record.value);\n\n if (record.items) {\n if (record.hasSubgroups) {\n convertGroup(record.items, getters, modelInstance, originalFieldNames, fieldNames);\n } else {\n convertRecords(record.items, getters, modelInstance, originalFieldNames, fieldNames);\n }\n }\n }\n }\n\n function wrapDataAccess(originalFunction, model, converter, getters, originalFieldNames, fieldNames) {\n return function(data) {\n data = originalFunction(data);\n\n return wrapDataAccessBase(model, converter, getters, originalFieldNames, fieldNames)(data);\n };\n }\n\n function wrapDataAccessBase(model, converter, getters, originalFieldNames, fieldNames) {\n return function(data) {\n\n if (data && !isEmptyObject(getters)) {\n if (toString.call(data) !== \"[object Array]\" && !(data instanceof ObservableArray)) {\n data = [data];\n }\n\n converter(data, getters, new model(), originalFieldNames, fieldNames);\n }\n\n return data || [];\n };\n }\n\n var DataReader = Class.extend({\n init: function(schema) {\n var that = this, member, get, model, base;\n\n schema = schema || {};\n\n for (member in schema) {\n get = schema[member];\n\n that[member] = typeof get === STRING ? getter(get) : get;\n }\n\n base = schema.modelBase || Model;\n\n if (isPlainObject(that.model)) {\n that.model = model = base.define(that.model);\n }\n\n var dataFunction = that.data.bind(that);\n\n that._dataAccessFunction = dataFunction;\n\n if (that.model) {\n var groupsFunction = that.groups.bind(that),\n serializeFunction = that.serialize.bind(that),\n originalFieldNames = {},\n getters = {},\n serializeGetters = {},\n fieldNames = {},\n shouldSerialize = false,\n fieldName,\n name;\n\n model = that.model;\n\n if (model.fields) {\n each(model.fields, function(field, value) {\n var fromName;\n\n fieldName = field;\n\n if (isPlainObject(value) && value.field) {\n fieldName = value.field;\n } else if (typeof value === STRING) {\n fieldName = value;\n }\n\n if (isPlainObject(value) && value.from) {\n fromName = value.from;\n }\n\n shouldSerialize = shouldSerialize || (fromName && fromName !== field) || fieldName !== field;\n name = fromName || fieldName;\n getters[field] = name.indexOf(\".\") !== -1 ? getter(name, true) : getter(name);\n serializeGetters[field] = getter(field);\n originalFieldNames[fromName || fieldName] = field;\n fieldNames[field] = fromName || fieldName;\n });\n\n if (!schema.serialize && shouldSerialize) {\n that.serialize = wrapDataAccess(serializeFunction, model, serializeRecords, serializeGetters, originalFieldNames, fieldNames);\n }\n }\n\n that._dataAccessFunction = dataFunction;\n that._wrapDataAccessBase = wrapDataAccessBase(model, convertRecords, getters, originalFieldNames, fieldNames);\n that.data = wrapDataAccess(dataFunction, model, convertRecords, getters, originalFieldNames, fieldNames);\n that.groups = wrapDataAccess(groupsFunction, model, convertGroup, getters, originalFieldNames, fieldNames);\n }\n },\n errors: function(data) {\n return data ? data.errors : null;\n },\n parse: identity,\n data: identity,\n total: function(data) {\n return data.length;\n },\n groups: identity,\n aggregates: function() {\n return {};\n },\n serialize: function(data) {\n return data;\n }\n });\n\n function fillLastGroup(originalGroup, newGroup) {\n var currOriginal;\n var currentNew;\n\n if (newGroup.items && newGroup.items.length) {\n for (var i = 0; i < newGroup.items.length; i++) {\n currOriginal = originalGroup.items[originalGroup.items.length - 1];\n currentNew = newGroup.items[i];\n if (currOriginal && currentNew) {\n if (currOriginal.hasSubgroups && currOriginal.value == currentNew.value) {\n fillLastGroup(currOriginal, currentNew);\n } else if (currOriginal.field && currOriginal.value == currentNew.value) {\n currOriginal.items.omitChangeEvent = true;\n currOriginal.items.push.apply(currOriginal.items, currentNew.items);\n currOriginal.items.omitChangeEvent = false;\n } else {\n originalGroup.items.omitChangeEvent = true;\n originalGroup.items.push.apply(originalGroup.items, [currentNew]);\n originalGroup.items.omitChangeEvent = false;\n }\n } else if (currentNew) {\n originalGroup.items.omitChangeEvent = true;\n originalGroup.items.push.apply(originalGroup.items, [currentNew]);\n originalGroup.items.omitChangeEvent = false;\n }\n }\n }\n }\n function mergeGroups(target, dest, skip, take) {\n var group,\n idx = 0,\n items;\n\n while (dest.length && take) {\n group = dest[idx];\n items = group.items;\n\n var length = items.length;\n\n if (target && target.field === group.field && target.value === group.value) {\n if (target.hasSubgroups && target.items.length) {\n mergeGroups(target.items[target.items.length - 1], group.items, skip, take);\n } else {\n items = items.slice(skip, skip + take);\n target.items = target.items.concat(items);\n }\n dest.splice(idx--, 1);\n } else if (group.hasSubgroups && items.length) {\n mergeGroups(group, items, skip, take);\n if (!group.items.length) {\n dest.splice(idx--, 1);\n }\n } else {\n items = items.slice(skip, skip + take);\n group.items = items;\n\n if (!group.items.length) {\n dest.splice(idx--, 1);\n }\n }\n\n if (items.length === 0) {\n skip -= length;\n } else {\n skip = 0;\n take -= items.length;\n }\n\n if (++idx >= dest.length) {\n break;\n }\n }\n\n if (idx < dest.length) {\n dest.splice(idx, dest.length - idx);\n }\n }\n\n function flatGroups(groups, indexFunction) {\n var result = [];\n var groupsLength = (groups || []).length;\n var group;\n var items;\n var indexFn = isFunction(indexFunction) ? indexFunction : function(array, index) {\n return array[index];\n };\n\n for (var groupIndex = 0; groupIndex < groupsLength; groupIndex++) {\n group = indexFn(groups, groupIndex);\n\n if (group.hasSubgroups) {\n result = result.concat(flatGroups(group.items));\n } else {\n items = group.items;\n\n for (var itemIndex = 0; itemIndex < items.length; itemIndex++) {\n result.push(indexFn(items, itemIndex));\n }\n }\n }\n return result;\n }\n\n function flattenGroups(data) {\n var idx,\n result = [],\n length,\n items,\n itemIndex;\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n var group = data.at(idx);\n if (group.items) {\n if (group.hasSubgroups) {\n result = result.concat(flattenGroups(group.items));\n } else {\n items = group.items;\n for (itemIndex = 0; itemIndex < items.length; itemIndex++) {\n result.push(items.at(itemIndex));\n }\n }\n }\n }\n return result;\n }\n\n function wrapGroupItems(data, model) {\n var idx, length, group;\n if (model) {\n for (idx = 0, length = data.length; idx < length; idx++) {\n group = data.at(idx);\n if (group.items) {\n if (group.hasSubgroups) {\n wrapGroupItems(group.items, model);\n } else {\n group.items = new LazyObservableArray(group.items, model, group.items._events);\n }\n }\n }\n }\n }\n\n function eachGroupItems(data, func) {\n for (var idx = 0; idx < data.length; idx++) {\n if (data[idx].hasSubgroups) {\n if (eachGroupItems(data[idx].items, func)) {\n return true;\n }\n } else if (func(data[idx].items, data[idx])) {\n return true;\n }\n }\n }\n\n function replaceInRanges(ranges, data, item, observable) {\n for (var idx = 0; idx < ranges.length; idx++) {\n if (ranges[idx].data === data) {\n break;\n }\n if (replaceInRange(ranges[idx].data, item, observable)) {\n break;\n }\n }\n }\n\n function replaceInRange(items, item, observable) {\n for (var idx = 0, length = items.length; idx < length; idx++) {\n if (items[idx] && items[idx].hasSubgroups) {\n return replaceInRange(items[idx].items, item, observable);\n } else if (items[idx] === item || items[idx] === observable) {\n items[idx] = observable;\n return true;\n }\n }\n }\n\n function replaceWithObservable(view, data, ranges, type, serverGrouping) {\n for (var viewIndex = 0, length = view.length; viewIndex < length; viewIndex++) {\n var item = view[viewIndex];\n\n if (!item || item instanceof type) {\n continue;\n }\n\n if (item.hasSubgroups !== undefined$1 && !serverGrouping) {\n replaceWithObservable(item.items, data, ranges, type, serverGrouping);\n } else {\n for (var idx = 0; idx < data.length; idx++) {\n if (data[idx] === item) {\n view[viewIndex] = data.at(idx);\n replaceInRanges(ranges, data, item, view[viewIndex]);\n break;\n }\n }\n }\n }\n }\n\n function removeModel(data, model) {\n if (!data) {\n return;\n }\n var length = data.length;\n var dataItem;\n var idx;\n\n for (idx = 0; idx < length; idx++) {\n dataItem = data[idx];\n\n if (dataItem.uid && dataItem.uid == model.uid) {\n data.splice(idx, 1);\n return dataItem;\n }\n }\n }\n\n function indexOfPristineModel(data, model) {\n if (model) {\n return indexOf(data, function(item) {\n return (item.uid && item.uid == model.uid) || (item[model.idField] === model.id && model.id !== model._defaultId);\n });\n }\n return -1;\n }\n\n function indexOfModel(data, model) {\n if (model) {\n return indexOf(data, function(item) {\n return item.uid == model.uid;\n });\n }\n return -1;\n }\n\n function indexOf(data, comparer) {\n var idx, length;\n if (!data) {\n return;\n }\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (comparer(data[idx])) {\n return idx;\n }\n }\n\n return -1;\n }\n\n function fieldNameFromModel(fields, name) {\n if (fields && !isEmptyObject(fields)) {\n var descriptor = fields[name];\n var fieldName;\n if (isPlainObject(descriptor)) {\n fieldName = descriptor.from || descriptor.field || name;\n } else {\n fieldName = fields[name] || name;\n }\n\n if (isFunction(fieldName)) {\n return name;\n }\n\n return fieldName;\n }\n return name;\n }\n\n function convertFilterDescriptorsField(descriptor, model) {\n var idx,\n length,\n target = {};\n\n for (var field in descriptor) {\n if (field !== \"filters\") {\n target[field] = descriptor[field];\n }\n }\n\n if (descriptor.filters) {\n target.filters = [];\n for (idx = 0, length = descriptor.filters.length; idx < length; idx++) {\n target.filters[idx] = convertFilterDescriptorsField(descriptor.filters[idx], model);\n }\n } else {\n target.field = fieldNameFromModel(model.fields, target.field);\n }\n return target;\n }\n\n function convertDescriptorsField(descriptors, model) {\n var idx,\n length,\n result = [],\n target,\n descriptor;\n\n for (idx = 0, length = descriptors.length; idx < length; idx ++) {\n target = {};\n\n descriptor = descriptors[idx];\n\n for (var field in descriptor) {\n target[field] = descriptor[field];\n }\n\n target.field = fieldNameFromModel(model.fields, target.field);\n\n if (target.aggregates && isArray(target.aggregates)) {\n target.aggregates = convertDescriptorsField(target.aggregates, model);\n }\n result.push(target);\n }\n return result;\n }\n\n var DataSource = Observable.extend({\n init: function(options) {\n var that = this, model, data;\n\n if (options) {\n data = options.data;\n }\n\n options = that.options = extend({}, that.options, options);\n\n that._map = {};\n that._prefetch = {};\n that._data = [];\n that._pristineData = [];\n that._ranges = [];\n that._view = [];\n that._pristineTotal = 0;\n that._destroyed = [];\n that._pageSize = options.pageSize;\n that._page = options.page || (options.pageSize ? 1 : undefined$1);\n that._sort = normalizeSort(options.sort);\n that._sortFields = sortFields(options.sort);\n that._filter = normalizeFilter(options.filter);\n that._group = normalizeGroup(options.group);\n that._aggregate = options.aggregate;\n that._total = options.total;\n that._groupPaging = options.groupPaging;\n\n if (that._groupPaging) {\n that._groupsState = {};\n }\n that._shouldDetachObservableParents = true;\n\n Observable.fn.init.call(that);\n\n that.transport = Transport.create(options, data, that);\n\n if (isFunction(that.transport.push)) {\n that.transport.push({\n pushCreate: that._pushCreate.bind(that),\n pushUpdate: that._pushUpdate.bind(that),\n pushDestroy: that._pushDestroy.bind(that)\n });\n }\n\n if (options.offlineStorage != null) {\n if (typeof options.offlineStorage == \"string\") {\n var key = options.offlineStorage;\n\n that._storage = {\n getItem: function() {\n return JSON.parse(localStorage.getItem(key));\n },\n setItem: function(item) {\n localStorage.setItem(key, stringify(that.reader.serialize(item)));\n }\n };\n } else {\n that._storage = options.offlineStorage;\n }\n }\n\n that.reader = new kendo.data.readers[options.schema.type || \"json\" ](options.schema);\n\n model = that.reader.model || {};\n\n that._detachObservableParents();\n\n that._data = that._observe(that._data);\n that._online = true;\n\n that.bind([\"push\", ERROR, CHANGE, REQUESTSTART, SYNC, REQUESTEND, PROGRESS], options);\n },\n\n options: {\n data: null,\n schema: {\n modelBase: Model\n },\n offlineStorage: null,\n serverSorting: false,\n serverPaging: false,\n serverFiltering: false,\n serverGrouping: false,\n serverAggregates: false,\n batch: false,\n inPlaceSort: false\n },\n\n clone: function() {\n return this;\n },\n\n online: function(value) {\n if (value !== undefined$1) {\n if (this._online != value) {\n this._online = value;\n\n if (value) {\n return this.sync();\n }\n }\n\n return $.Deferred().resolve().promise();\n } else {\n return this._online;\n }\n },\n\n offlineData: function(state) {\n if (this.options.offlineStorage == null) {\n return null;\n }\n\n if (state !== undefined$1) {\n return this._storage.setItem(state);\n }\n\n return this._storage.getItem() || [];\n },\n\n _isGrouped: function() {\n var group = this.group() || [];\n\n return group.length;\n },\n\n _isServerGrouped: function() {\n var group = this.group() || [];\n\n return this.options.serverGrouping && group.length;\n },\n\n _isServerGroupPaged: function() {\n return this._isServerGrouped() && this._groupPaging;\n },\n\n _isGroupPaged: function() {\n var group = this._group || [];\n\n return this._groupPaging && group.length;\n },\n\n _pushCreate: function(result) {\n this._push(result, \"pushCreate\");\n },\n\n _pushUpdate: function(result) {\n this._push(result, \"pushUpdate\");\n },\n\n _pushDestroy: function(result) {\n this._push(result, \"pushDestroy\");\n },\n\n _push: function(result, operation) {\n var data = this._readData(result);\n\n if (!data) {\n data = result;\n }\n\n this[operation](data);\n },\n\n _flatData: function(data, skip) {\n if (data) {\n if (this._isServerGrouped()) {\n return flattenGroups(data);\n }\n\n if (!skip) {\n for (var idx = 0; idx < data.length; idx++) {\n data.at(idx);\n }\n }\n }\n\n return data;\n },\n\n parent: noop,\n\n get: function(id) {\n var idx, length, data = this._flatData(this._data, this.options.useRanges);\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (data[idx].id == id) {\n return data[idx];\n }\n }\n },\n\n getByUid: function(id) {\n return this._getByUid(id, this._data);\n },\n\n _getByUid: function(id, dataItems) {\n var idx, length, data = this._flatData(dataItems, this.options.useRanges);\n\n if (!data) {\n return;\n }\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (data[idx].uid == id) {\n return data[idx];\n }\n }\n },\n\n indexOf: function(model) {\n return indexOfModel(this._data, model);\n },\n\n at: function(index) {\n return this._data.at(index);\n },\n\n data: function(value) {\n var that = this;\n if (value !== undefined$1) {\n that._detachObservableParents();\n that._data = this._observe(value);\n\n that._pristineData = value.slice(0);\n\n that._storeData();\n\n that._ranges = [];\n that.trigger(\"reset\");\n that._addRange(that._data);\n\n that._total = that._data.length;\n that._pristineTotal = that._total;\n\n that._process(that._data);\n } else {\n if (that._data) {\n for (var idx = 0; idx < that._data.length; idx++) {\n that._data.at(idx);\n }\n }\n\n return that._data;\n }\n },\n\n view: function(value) {\n if (value === undefined$1) {\n return this._view;\n } else {\n this._view = this._observeView(value);\n }\n },\n\n _observeView: function(data) {\n var that = this;\n replaceWithObservable(data, that._data, that._ranges, that.reader.model || ObservableObject, that._isServerGrouped());\n\n var view = new LazyObservableArray(data, that.reader.model);\n view.parent = function() { return that.parent(); };\n return view;\n },\n\n flatView: function() {\n var groups = this.group() || [];\n\n if (groups.length) {\n return flattenGroups(this._view);\n } else {\n return this._view;\n }\n },\n\n add: function(model) {\n return this.insert(this._data.length, model);\n },\n\n _createNewModel: function(model) {\n if (this.reader.model) {\n return new this.reader.model(model);\n }\n\n if (model instanceof ObservableObject) {\n return model;\n }\n\n return new ObservableObject(model);\n },\n\n insert: function(index, model) {\n if (!model) {\n model = index;\n index = 0;\n }\n\n if (!(model instanceof Model)) {\n model = this._createNewModel(model);\n }\n\n if (this._isServerGrouped()) {\n this._data.splice(index, 0, this._wrapInEmptyGroup(model));\n } else {\n this._data.splice(index, 0, model);\n }\n\n this._insertModelInRange(index, model);\n\n return model;\n },\n\n pushInsert: function(index, items) {\n var that = this;\n var rangeSpan = that._getCurrentRangeSpan();\n\n if (!items) {\n items = index;\n index = 0;\n }\n\n if (!isArray(items)) {\n items = [items];\n }\n\n var pushed = [];\n var autoSync = this.options.autoSync;\n this.options.autoSync = false;\n\n try {\n for (var idx = 0; idx < items.length; idx ++) {\n var item = items[idx];\n\n var result = this.insert(index, item);\n\n pushed.push(result);\n\n var pristine = result.toJSON();\n\n if (this._isServerGrouped()) {\n pristine = this._wrapInEmptyGroup(pristine);\n }\n\n this._pristineData.push(pristine);\n\n if (rangeSpan && rangeSpan.length) {\n $(rangeSpan).last()[0].pristineData.push(pristine);\n }\n\n index++;\n }\n } finally {\n this.options.autoSync = autoSync;\n }\n\n if (pushed.length) {\n this.trigger(\"push\", {\n type: \"create\",\n items: pushed\n });\n }\n },\n\n pushCreate: function(items) {\n this.pushInsert(this._data.length, items);\n },\n\n pushUpdate: function(items) {\n if (!isArray(items)) {\n items = [items];\n }\n\n var pushed = [];\n\n for (var idx = 0; idx < items.length; idx ++) {\n var item = items[idx];\n var model = this._createNewModel(item);\n\n var target = this.get(model.id);\n\n if (target) {\n pushed.push(target);\n\n target.accept(item);\n\n target.trigger(CHANGE);\n\n this._updatePristineForModel(target, item);\n } else {\n this.pushCreate(item);\n }\n }\n\n if (pushed.length) {\n this.trigger(\"push\", {\n type: \"update\",\n items: pushed\n });\n }\n },\n\n pushDestroy: function(items) {\n var pushed = this._removeItems(items);\n\n if (pushed.length) {\n this.trigger(\"push\", {\n type: \"destroy\",\n items: pushed\n });\n }\n },\n\n _removeItems: function(itemsToRemove, removePristine) {\n if (!isArray(itemsToRemove)) {\n itemsToRemove = [itemsToRemove];\n }\n\n var shouldRemovePristine = typeof removePristine !== \"undefined\" ? removePristine : true;\n\n var destroyed = [];\n var autoSync = this.options.autoSync;\n this.options.autoSync = false;\n try {\n for (var idx = 0; idx < itemsToRemove.length; idx ++) {\n var item = itemsToRemove[idx];\n var model = this._createNewModel(item);\n var found = false;\n var index = idx;\n\n this._eachItem(this._data, function(items) {\n // Ensure all children of a parent are removed before the change event is triggered.\n if (index !== itemsToRemove.length - 1) {\n items.omitChangeEvent = true;\n items.omitCache = [];\n } else {\n items.omitChangeEvent = false;\n }\n\n for (var idx = 0; idx < items.length; idx++) {\n var item = items.at(idx);\n if (item.id === model.id) {\n /* When the change event is omitted, certain calculations such as 'total' are broken because only the last item reaches the change handler.\n Keep track of all child items that had their change event omitted and when the change is finally triggered, concat them to the result.*/\n if (items.omitChangeEvent) {\n items.omitCache.push(item);\n }\n destroyed.push(item);\n items.splice(idx, 1);\n found = true;\n break;\n }\n }\n });\n\n if (found && shouldRemovePristine) {\n this._removePristineForModel(model);\n this._destroyed.pop();\n }\n }\n } finally {\n this.options.autoSync = autoSync;\n }\n\n return destroyed;\n },\n\n pushMove: function(index, items) {\n var pushed = this._moveItems(index, items);\n\n if (pushed.length) {\n this.trigger(\"push\", {\n type: \"update\",\n items: pushed\n });\n }\n },\n\n _moveItems: function(index, items) {\n if (!isArray(items)) {\n items = [items];\n }\n\n var moved = [];\n var autoSync = this.options.autoSync;\n this.options.autoSync = false;\n\n try {\n for (var i = 0; i < items.length; i ++) {\n var item = items[i];\n\n this._eachItem(this._data, function(dataItems) {\n for (var idx = 0; idx < dataItems.length; idx++) {\n var dataItem = dataItems.at(idx);\n if (dataItem.uid === item.uid) {\n moved.push(dataItem);\n dataItems.splice(index >= idx ? --index : index, 0, dataItems.splice(idx, 1)[0]);\n index++;\n break;\n }\n }\n });\n }\n } finally {\n this.options.autoSync = autoSync;\n }\n\n return moved;\n },\n\n remove: function(model) {\n var result,\n that = this,\n hasGroups = that._isServerGrouped();\n\n if (hasGroups && model.uid && (!model.isNew || !model.isNew())) {\n that._pushInDestroyed(model);\n }\n\n this._eachItem(that._data, function(items) {\n result = removeModel(items, model);\n\n if (result && hasGroups) {\n return true;\n }\n });\n\n this._removeModelFromRanges(model);\n\n return model;\n },\n\n destroyed: function() {\n return this._destroyed;\n },\n\n created: function() {\n var idx,\n length,\n result = [],\n data = this._flatData(this._data, this.options.useRanges);\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (data[idx].isNew && data[idx].isNew() && !data[idx].notFetched) {\n result.push(data[idx]);\n }\n }\n return result;\n },\n\n updated: function() {\n var idx,\n length,\n result = [],\n data = this._flatData(this._data, this.options.useRanges);\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n if ((data[idx].isNew && !data[idx].isNew()) && data[idx].dirty) {\n result.push(data[idx]);\n }\n }\n return result;\n },\n\n sync: function() {\n var that = this,\n created = [],\n updated = [],\n destroyed = that._destroyed;\n\n var promise = $.Deferred().resolve().promise();\n\n if (that.online()) {\n\n if (!that.reader.model) {\n return promise;\n }\n\n created = that.created();\n updated = that.updated();\n\n var promises = [];\n\n if (that.options.batch && that.transport.submit) {\n promises = that._sendSubmit(created, updated, destroyed);\n } else {\n promises.push.apply(promises, that._send(\"create\", created));\n promises.push.apply(promises, that._send(\"update\", updated));\n promises.push.apply(promises, that._send(\"destroy\", destroyed));\n }\n\n promise = $.when\n .apply(null, promises)\n .then(function() {\n var idx, length, changedItems = [];\n\n for (idx = 0, length = arguments.length; idx < length; idx++) {\n if (arguments[idx]) {\n that._accept(arguments[idx]);\n changedItems = arguments[idx].models;\n }\n }\n\n that._storeData(true);\n\n that._syncEnd();\n\n that._change({ action: \"sync\", changedItems: changedItems });\n\n that.trigger(SYNC);\n\n if (that._isServerGroupPaged()) {\n that.read();\n }\n });\n } else {\n that._storeData(true);\n\n that._syncEnd();\n\n that._change({ action: \"sync\" });\n }\n\n return promise;\n },\n\n _syncEnd: noop,\n\n cancelChanges: function(model) {\n var that = this;\n\n if (model instanceof kendo.data.Model) {\n that._cancelModel(model);\n } else {\n that._destroyed = [];\n that._detachObservableParents();\n that._data = that._observe(that._pristineData);\n if (that.options.serverPaging) {\n that._total = that._pristineTotal;\n }\n\n that._ranges = [];\n that._addRange(that._data, 0);\n\n that._changesCanceled();\n\n that._change();\n\n that._markOfflineUpdatesAsDirty();\n\n if (that._isServerGrouped()) {\n that.read();\n }\n }\n },\n\n _changesCanceled: noop,\n\n _markOfflineUpdatesAsDirty: function() {\n var that = this;\n\n if (that.options.offlineStorage != null) {\n that._eachItem(that._data, function(items) {\n for (var idx = 0; idx < items.length; idx++) {\n var item = items.at(idx);\n if (item.__state__ == \"update\" || item.__state__ == \"create\") {\n item.dirty = true;\n }\n }\n });\n }\n },\n\n hasChanges: function() {\n var idx,\n length,\n data = this._flatData(this._data, this.options.useRanges);\n\n if (this._destroyed.length) {\n return true;\n }\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n if ((data[idx].isNew && data[idx].isNew()) || data[idx].dirty) {\n return true;\n }\n }\n\n return false;\n },\n\n _accept: function(result) {\n var that = this,\n models = result.models,\n response = result.response,\n idx = 0,\n serverGroup = that._isServerGrouped(),\n pristine = that._pristineData,\n type = result.type,\n length;\n\n that.trigger(REQUESTEND, { response: response, type: type });\n\n if (response && !isEmptyObject(response)) {\n response = that.reader.parse(response);\n\n if (that._handleCustomErrors(response)) {\n return;\n }\n\n response = that.reader.data(response);\n\n if (!isArray(response)) {\n response = [response];\n }\n } else {\n response = $.map(models, function(model) { return model.toJSON(); } );\n }\n\n if (type === \"destroy\") {\n that._destroyed = [];\n }\n\n for (idx = 0, length = models.length; idx < length; idx++) {\n if (type !== \"destroy\") {\n models[idx].accept(response[idx]);\n\n if (type === \"create\") {\n pristine.push(serverGroup ? that._wrapInEmptyGroup(models[idx].toJSON()) : response[idx]);\n } else if (type === \"update\") {\n that._updatePristineForModel(models[idx], response[idx]);\n }\n } else {\n that._removePristineForModel(models[idx]);\n }\n }\n },\n\n _updatePristineForModel: function(model, values) {\n this._executeOnPristineForModel(model, function(index, items) {\n kendo.deepExtend(items[index], values);\n });\n },\n\n _executeOnPristineForModel: function(model, callback) {\n this._eachPristineItem(\n function(items) {\n var index = indexOfPristineModel(items, model);\n if (index > -1) {\n callback(index, items);\n return true;\n }\n });\n },\n\n _removePristineForModel: function(model) {\n this._executeOnPristineForModel(model, function(index, items) {\n items.splice(index, 1);\n });\n },\n\n _readData: function(data) {\n var read = !this._isServerGrouped() ? this.reader.data : this.reader.groups;\n return read.call(this.reader, data);\n },\n\n _eachPristineItem: function(callback) {\n var that = this;\n var options = that.options;\n var rangeSpan = that._getCurrentRangeSpan();\n\n that._eachItem(that._pristineData, callback);\n\n if (options.serverPaging && options.useRanges) {\n each(rangeSpan, function(i, range) {\n that._eachItem(range.pristineData, callback);\n });\n }\n },\n\n _eachItem: function(data, callback) {\n if (data && data.length) {\n if (this._isServerGrouped()) {\n eachGroupItems(data, callback);\n } else {\n callback(data);\n }\n }\n },\n\n _pristineForModel: function(model) {\n var pristine,\n idx,\n callback = function(items) {\n idx = indexOfPristineModel(items, model);\n if (idx > -1) {\n pristine = items[idx];\n return true;\n }\n };\n\n this._eachPristineItem(callback);\n\n return pristine;\n },\n\n _cancelModel: function(model) {\n var that = this;\n var pristine = this._pristineForModel(model);\n\n this._eachItem(this._data, function(items) {\n var idx = indexOfModel(items, model);\n if (idx >= 0) {\n if (pristine && (!model.isNew() || pristine.__state__)) {\n items[idx].accept(pristine);\n\n if (pristine.__state__ == \"update\") {\n items[idx].dirty = true;\n }\n\n } else {\n that._modelCanceled(model);\n\n items.splice(idx, 1);\n\n that._removeModelFromRanges(model);\n }\n }\n });\n },\n\n _modelCanceled: noop,\n\n _submit: function(promises, data) {\n var that = this;\n\n that.trigger(REQUESTSTART, { type: \"submit\" });\n\n that.trigger(PROGRESS);\n\n that.transport.submit(extend({\n success: function(response, type) {\n var promise = $.grep(promises, function(x) {\n return x.type == type;\n })[0];\n\n if (promise) {\n promise.resolve({\n response: response,\n models: promise.models,\n type: type\n });\n }\n },\n error: function(response, status, error) {\n for (var idx = 0; idx < promises.length; idx++) {\n promises[idx].reject(response);\n }\n\n that.error(response, status, error);\n }\n }, data));\n },\n\n _sendSubmit: function(created, updated, destroyed) {\n var that = this,\n promises = [];\n\n if (that.options.batch) {\n if (created.length) {\n promises.push($.Deferred(function(deferred) {\n deferred.type = \"create\";\n deferred.models = created;\n }));\n }\n\n if (updated.length) {\n promises.push($.Deferred(function(deferred) {\n deferred.type = \"update\";\n deferred.models = updated;\n }));\n }\n\n if (destroyed.length) {\n promises.push($.Deferred(function(deferred) {\n deferred.type = \"destroy\";\n deferred.models = destroyed;\n }));\n }\n\n that._submit(promises, {\n data: {\n created: that.reader.serialize(toJSON(created)),\n updated: that.reader.serialize(toJSON(updated)),\n destroyed: that.reader.serialize(toJSON(destroyed))\n }\n });\n }\n\n return promises;\n },\n\n _promise: function(data, models, type) {\n var that = this;\n\n return $.Deferred(function(deferred) {\n that.trigger(REQUESTSTART, { type: type });\n\n that.trigger(PROGRESS);\n\n that.transport[type].call(that.transport, extend({\n success: function(response) {\n deferred.resolve({\n response: response,\n models: models,\n type: type\n });\n },\n error: function(response, status, error) {\n deferred.reject(response);\n that.error(response, status, error);\n }\n }, data));\n }).promise();\n },\n\n _send: function(method, data) {\n var that = this,\n idx,\n length,\n promises = [],\n converted = that.reader.serialize(toJSON(data));\n\n if (that.options.batch) {\n if (data.length) {\n promises.push(that._promise( { data: { models: converted } }, data , method));\n }\n } else {\n for (idx = 0, length = data.length; idx < length; idx++) {\n promises.push(that._promise( { data: converted[idx] }, [ data[idx] ], method));\n }\n }\n\n return promises;\n },\n\n read: function(data) {\n var that = this, params = that._params(data);\n var deferred = $.Deferred();\n\n that._queueRequest(params, function() {\n var isPrevented = that.trigger(REQUESTSTART, { type: \"read\" });\n if (!isPrevented) {\n that.trigger(PROGRESS);\n\n that._ranges = [];\n that.trigger(\"reset\");\n if (that.online()) {\n that.transport.read({\n data: params,\n success: function(data) {\n that._ranges = [];\n that.success(data, params);\n\n deferred.resolve();\n },\n error: function() {\n var args = slice.call(arguments);\n\n that.error.apply(that, args);\n\n deferred.reject.apply(deferred, args);\n }\n });\n } else if (that.options.offlineStorage != null) {\n that.success(that.offlineData(), params);\n\n deferred.resolve();\n }\n } else {\n that._dequeueRequest();\n\n deferred.resolve(isPrevented);\n }\n });\n\n return deferred.promise();\n },\n\n _readAggregates: function(data) {\n return this.reader.aggregates(data);\n },\n\n success: function(data) {\n var that = this,\n options = that.options,\n items,\n replaceSubset;\n\n that.trigger(REQUESTEND, { response: data, type: \"read\" });\n\n if (that.online()) {\n data = that.reader.parse(data);\n\n if (that._handleCustomErrors(data)) {\n that._dequeueRequest();\n return;\n }\n\n that._total = that.reader.total(data);\n\n if (that._isServerGroupPaged()) {\n that._serverGroupsTotal = that._total;\n }\n\n if (that._pageSize > that._total) {\n that._pageSize = that._total;\n if (that.options.pageSize && that.options.pageSize > that._pageSize) {\n that._pageSize = that.options.pageSize;\n }\n }\n\n if (that._aggregate && options.serverAggregates) {\n that._aggregateResult = that._readAggregates(data);\n }\n\n data = that._readData(data);\n\n that._destroyed = [];\n } else {\n data = that._readData(data);\n\n items = [];\n var itemIds = {};\n var model = that.reader.model;\n var idField = model ? model.idField : \"id\";\n var idx;\n\n for (idx = 0; idx < this._destroyed.length; idx++) {\n var id = this._destroyed[idx][idField];\n itemIds[id] = id;\n }\n\n for (idx = 0; idx < data.length; idx++) {\n var item = data[idx];\n var state = item.__state__;\n if (state == \"destroy\") {\n if (!itemIds[item[idField]]) {\n this._pushInDestroyed(this._createNewModel(item));\n }\n } else {\n items.push(item);\n }\n }\n\n data = items;\n\n that._total = data.length;\n }\n\n that._pristineTotal = that._total;\n replaceSubset = that._skip && that._data.length && that._skip < that._data.length;\n\n if (that.options.endless) {\n if (replaceSubset) {\n that._pristineData.splice(that._skip, that._pristineData.length);\n }\n items = data.slice(0);\n for (var j = 0; j < items.length; j++) {\n that._pristineData.push(items[j]);\n }\n } else {\n that._pristineData = data.slice(0);\n }\n\n that._detachObservableParents();\n\n if (that.options.endless) {\n that._data.unbind(CHANGE, that._changeHandler);\n\n if (that._isServerGrouped() && that._data[that._data.length - 1].value === data[0].value) {\n fillLastGroup(that._data[that._data.length - 1], data[0]);\n data.shift();\n }\n\n data = that._observe(data);\n if (replaceSubset) {\n that._data.splice(that._skip, that._data.length);\n }\n for (var i = 0; i < data.length; i++) {\n that._data.push(data[i]);\n }\n that._data.bind(CHANGE, that._changeHandler);\n } else {\n that._data = that._observe(data);\n }\n\n that._markOfflineUpdatesAsDirty();\n\n that._storeData();\n\n that._addRange(that._data);\n\n that._process(that._data);\n\n that._dequeueRequest();\n },\n\n _detachObservableParents: function() {\n if (this._data && this._shouldDetachObservableParents) {\n for (var idx = 0; idx < this._data.length; idx++) {\n if (this._data[idx].parent) {\n this._data[idx].parent = noop;\n }\n }\n }\n },\n\n _storeData: function(updatePristine) {\n var serverGrouping = this._isServerGrouped();\n var model = this.reader.model;\n\n function items(data) {\n var state = [];\n\n for (var idx = 0; idx < data.length; idx++) {\n var dataItem = data.at(idx);\n var item = dataItem.toJSON();\n\n if (serverGrouping && dataItem.items) {\n item.items = items(dataItem.items);\n } else {\n item.uid = dataItem.uid;\n\n if (model) {\n if (dataItem.isNew()) {\n item.__state__ = \"create\";\n } else if (dataItem.dirty) {\n item.__state__ = \"update\";\n }\n }\n }\n state.push(item);\n }\n\n return state;\n }\n\n if (this.options.offlineStorage != null) {\n var state = items(this._data);\n\n var destroyed = [];\n\n for (var idx = 0; idx < this._destroyed.length; idx++) {\n var item = this._destroyed[idx].toJSON();\n item.__state__ = \"destroy\";\n destroyed.push(item);\n }\n\n this.offlineData(state.concat(destroyed));\n\n if (updatePristine) {\n this._pristineData = this.reader.reader ? this.reader.reader._wrapDataAccessBase(state) : this.reader._wrapDataAccessBase(state);\n }\n }\n },\n\n _addRange: function(data, skip) {\n var that = this,\n start = typeof (skip) !== \"undefined\" ? skip : (that._skip || 0),\n end,\n range = {\n data: data,\n pristineData: data.toJSON(),\n timestamp: that._timeStamp()\n };\n\n if (this._isGroupPaged()) {\n end = start + data.length;\n range.outerStart = start;\n range.outerEnd = end;\n } else {\n end = start + that._flatData(data, true).length;\n }\n\n range.start = start;\n range.end = end;\n that._ranges.push(range);\n that._sortRanges();\n\n if (that._isGroupPaged()) {\n if (!that._groupsFlat) {\n that._groupsFlat = [];\n }\n that._appendToGroupsFlat(range.data);\n that._updateOuterRangesLength();\n }\n },\n\n _appendToGroupsFlat: function(data) {\n var length = data.length;\n\n for (var i = 0; i < length; i++) {\n this._groupsFlat.push(data[i]);\n }\n },\n\n _getGroupByUid: function(uid) {\n var length = this._groupsFlat.length;\n var group;\n\n for (var i = 0; i < length; i++) {\n group = this._groupsFlat[i];\n if (group.uid === uid) {\n return group;\n }\n }\n },\n\n _sortRanges: function() {\n this._ranges.sort(function(x, y) {\n return x.start - y.start;\n });\n },\n\n error: function(xhr, status, errorThrown) {\n this._dequeueRequest();\n this.trigger(REQUESTEND, { });\n this.trigger(ERROR, { xhr: xhr, status: status, errorThrown: errorThrown });\n },\n\n _params: function(data) {\n var that = this,\n options = extend({\n take: that.take(),\n skip: that.skip(),\n page: that.page(),\n pageSize: that.pageSize(),\n sort: that._sort,\n filter: that._filter,\n group: that._group,\n aggregate: that._aggregate,\n groupPaging: !!that._groupPaging,\n isExcelExportRequest: that.options.isExcelExportRequest\n }, data);\n\n if (!that.options.serverPaging) {\n delete options.take;\n delete options.skip;\n delete options.page;\n delete options.pageSize;\n }\n\n if (!that.options.serverGrouping) {\n delete options.group;\n } else if (that.reader.model && options.group) {\n options.group = convertDescriptorsField(options.group, that.reader.model);\n }\n\n if (!that.options.serverFiltering) {\n delete options.filter;\n } else if (that.reader.model && options.filter) {\n options.filter = convertFilterDescriptorsField(options.filter, that.reader.model);\n }\n\n if (!that.options.serverSorting) {\n delete options.sort;\n } else if (that.reader.model && options.sort) {\n options.sort = convertDescriptorsField(options.sort, that.reader.model);\n }\n\n if (!that.options.serverAggregates) {\n delete options.aggregate;\n } else if (that.reader.model && options.aggregate) {\n options.aggregate = convertDescriptorsField(options.aggregate, that.reader.model);\n }\n\n if (!that.options.groupPaging || !(that.options.serverPaging && that.options.serverGrouping)) {\n delete options.groupPaging;\n }\n\n if (!that.options.isExcelExportRequest) {\n delete options.isExcelExportRequest;\n }\n\n return options;\n },\n\n _queueRequest: function(options, callback) {\n var that = this;\n if (!that._requestInProgress) {\n that._requestInProgress = true;\n that._pending = undefined$1;\n callback();\n } else {\n that._pending = { callback: callback.bind(that), options: options };\n }\n },\n\n _dequeueRequest: function() {\n var that = this;\n that._requestInProgress = false;\n if (that._pending) {\n that._queueRequest(that._pending.options, that._pending.callback);\n }\n },\n\n _handleCustomErrors: function(response) {\n if (this.reader.errors) {\n var errors = this.reader.errors(response);\n if (errors) {\n this.trigger(ERROR, { xhr: null, status: \"customerror\", errorThrown: \"custom error\", errors: errors });\n return true;\n }\n }\n return false;\n },\n\n _shouldWrap: function(data) {\n var model = this.reader.model;\n\n if (model && data.length) {\n return !(data[0] instanceof model);\n }\n\n return false;\n },\n\n _observe: function(data) {\n var that = this,\n model = that.reader.model;\n\n that._shouldDetachObservableParents = true;\n\n if (data instanceof ObservableArray) {\n that._shouldDetachObservableParents = false;\n if (that._shouldWrap(data)) {\n data.type = that.reader.model;\n data.wrapAll(data, data);\n }\n } else {\n var arrayType = that.pageSize() && !that.options.serverPaging ? LazyObservableArray : ObservableArray;\n data = new arrayType(data, that.reader.model);\n data.parent = function() { return that.parent(); };\n }\n\n if (that._isServerGrouped()) {\n wrapGroupItems(data, model);\n }\n\n if (that._changeHandler && that._data && that._data instanceof ObservableArray &&\n !(that.options.useRanges && that.options.serverPaging)) {\n that._data.unbind(CHANGE, that._changeHandler);\n } else {\n that._changeHandler = that._change.bind(that);\n }\n\n return data.bind(CHANGE, that._changeHandler);\n },\n\n _updateTotalForAction: function(action, items) {\n var that = this;\n\n var total = parseInt(that._total, 10);\n\n if (!isNumber(that._total)) {\n total = parseInt(that._pristineTotal, 10);\n }\n if (action === \"add\") {\n total += items.length;\n } else if (action === \"remove\") {\n total -= items.length;\n } else if (action !== \"itemchange\" && action !== \"sync\" && !that.options.serverPaging) {\n total = that._pristineTotal;\n } else if (action === \"sync\") {\n total = that._pristineTotal = parseInt(that._total, 10);\n }\n\n that._total = total;\n },\n\n _operationsForUpdatedFields: function() {\n const that = this,\n updatedFields = that._updatedFields || [],\n operations = {};\n\n let found = false,\n stringified;\n\n operations.sort = that._sort;\n operations.filter = that._filter;\n operations.group = that._group;\n operations.aggregate = that._aggregate;\n\n stringified = stringify(operations);\n found = updatedFields.some(u => stringified.indexOf((`\"field\":\"${u}\"`)) > -1);\n\n return !found;\n },\n\n _pushInDestroyed: function(model) {\n var isPushed = this._destroyed.find(function(item) {\n return item.uid === model.uid;\n });\n if (!isPushed) {\n this._destroyed.push(model);\n }\n },\n\n _change: function(e) {\n let that = this, idx, items, length, action = e ? e.action : \"\";\n\n if (action === \"remove\") {\n for (idx = 0, length = e.items.length; idx < length; idx++) {\n if (!e.items[idx].isNew || !e.items[idx].isNew()) {\n that._pushInDestroyed(e.items[idx]);\n }\n }\n }\n\n if (e) {\n items = e.items || [];\n e.partialUpdate = that._operationsForUpdatedFields() && !that._preventPartialUpdate;\n\n if (e.action === \"itemchange\" && items.some(i => i.dirtyFields)) {\n that._updatedFields = Object.keys(e.items[0].dirtyFields);\n }\n }\n\n if (that.options.autoSync && (action === \"add\" || action === \"remove\" || action === \"itemchange\")) {\n if (action === \"add\") {\n that._preventPartialUpdate = true;\n }\n\n var handler = function(args) {\n if (args.action === \"sync\") {\n that._preventPartialUpdate = false;\n that.unbind(\"change\", handler);\n that._updateTotalForAction(action, e.items);\n }\n };\n\n that.first(\"change\", handler);\n\n that.sync();\n\n } else {\n that._updateTotalForAction(action, e ? e.items : []);\n\n that._process(that._data, e);\n }\n },\n\n _calculateAggregates: function(data, options) {\n options = options || {};\n\n var query = new Query(data),\n aggregates = options.aggregate,\n filter = options.filter;\n\n if (filter) {\n query = query.filter(filter);\n }\n\n return query.aggregate(aggregates);\n },\n\n _process: function(data, e) {\n var that = this,\n options = {},\n result;\n\n if (that.options.serverPaging !== true) {\n options.skip = that._skip;\n options.take = that._take || that._pageSize;\n\n if (options.skip === undefined$1 && that._page !== undefined$1 && that._pageSize !== undefined$1) {\n options.skip = (that._page - 1) * that._pageSize;\n }\n\n if (that.options.useRanges) {\n options.skip = that.currentRangeStart();\n }\n }\n\n if (that.options.serverSorting !== true) {\n options.sort = that._sort;\n }\n\n if (that.options.serverFiltering !== true) {\n options.filter = that._filter;\n }\n\n if (that.options.serverGrouping !== true) {\n options.group = that._group;\n }\n\n if (that.options.serverAggregates !== true) {\n options.aggregate = that._aggregate;\n }\n\n if (that.options.serverGrouping) {\n that._clearEmptyGroups(data);\n }\n\n options.groupPaging = that._groupPaging;\n\n if (that._isGroupPaged() && e && (e.action === \"page\" || e.action === \"expandGroup\" || e.action === \"collapseGroup\")) {\n result = that._queryProcess(data, {\n aggregate: that._aggregate\n });\n } else {\n result = that._queryProcess(data, options);\n }\n\n if (that._filter && e && e.action === \"add\") {\n var model = e.items[0],\n resultData = result.data;\n\n if (that._isGrouped() && !this._isServerGrouped()) {\n resultData = flattenGroups(resultData);\n }\n\n var modelIsInView = resultData.find(function(item) {\n return item.uid === model.uid;\n });\n\n if (!modelIsInView) {\n result.data.splice(model.index, 0, that._isGrouped() ? that._wrapInEmptyGroup(model) : model);\n result.total++;\n }\n }\n\n if (that.options.serverAggregates !== true) {\n // for performance reasons, calculate aggregates for part of the data only after query process\n // this is necessary in the TreeList when paging\n that._aggregateResult = that._calculateAggregates(result.dataToAggregate || data, options);\n }\n\n that._setView(result, options, e);\n\n that._setFilterTotal(result.total, false);\n\n e = e || {};\n\n e.items = e.items || that._view;\n\n that.trigger(CHANGE, e);\n },\n\n _setView: function(result, options, e) {\n var that = this;\n\n if (that._isGroupPaged() && !that._isServerGrouped()) {\n if (e && (e.action === \"page\" || e.action === \"expandGroup\" || e.action === \"collapseGroup\")) {\n that.view(result.data);\n that._updateOuterRangesLength();\n } else {\n that._ranges = [];\n var query = new Query(result.data);\n that._addRange(that._observe(result.data));\n\n if (options.skip + options.take > result.data.length) {\n options.skip = Math.max(0, result.data.length - options.take);\n }\n\n that.view(query.range(options.skip, options.take).toArray());\n }\n\n } else {\n that.view(result.data);\n }\n },\n\n _clearEmptyGroups: function(data) {\n for (var idx = data.length - 1; idx >= 0; idx--) {\n var group = data[idx];\n if (group.hasSubgroups) {\n this._clearEmptyGroups(group.items);\n }\n\n if (group.items && !group.items.length && !group.itemCount) {\n splice.apply(group.parent(), [idx, 1]);\n }\n }\n },\n\n _queryProcess: function(data, options) {\n if (this.options.inPlaceSort) {\n return Query.process(data, options, this.options.inPlaceSort);\n }\n else {\n return Query.process(data, options);\n }\n },\n\n _mergeState: function(options) {\n var that = this;\n\n if (options !== undefined$1) {\n that._pageSize = options.pageSize;\n that._page = options.page;\n that._sort = options.sort;\n that._filter = options.filter;\n that._group = options.group;\n that._aggregate = options.aggregate;\n that._skip = that._currentRangeStart = options.skip;\n that._take = options.take;\n\n if (that._skip === undefined$1) {\n that._skip = that._currentRangeStart = that.skip();\n options.skip = that.skip();\n }\n\n if (that._take === undefined$1 && that._pageSize !== undefined$1) {\n that._take = that._pageSize;\n options.take = that._take;\n }\n\n if (that.options.virtual) {\n options.virtual = that.options.virtual;\n }\n\n if (options.sort) {\n that._sort = options.sort = normalizeSort(options.sort);\n that._sortFields = sortFields(options.sort);\n }\n\n if (options.filter) {\n that._filter = options.filter = (that.options.accentFoldingFiltering && !$.isEmptyObject(options.filter)) ? $.extend({}, normalizeFilter(options.filter), { accentFoldingFiltering: that.options.accentFoldingFiltering }) : normalizeFilter(options.filter);\n }\n\n if (options.group) {\n that._group = options.group = normalizeGroup(options.group);\n }\n if (options.aggregate) {\n that._aggregate = options.aggregate = normalizeAggregate(options.aggregate);\n }\n }\n return options;\n },\n\n query: function(options) {\n var result;\n var remote = this.options.serverSorting || this.options.serverPaging || this.options.serverFiltering || this.options.serverGrouping || this.options.serverAggregates;\n\n if (remote || ((this._data === undefined$1 || this._data.length === 0) && !this._destroyed.length)) {\n if (this.options.endless) {\n var moreItemsCount = options.pageSize - this.pageSize();\n if (moreItemsCount > 0) {\n moreItemsCount = this.pageSize();\n options.page = options.pageSize / moreItemsCount;\n options.pageSize = moreItemsCount;\n } else {\n options.page = 1;\n this.options.endless = false;\n }\n }\n return this.read(this._mergeState(options));\n }\n\n var isPrevented = this.trigger(REQUESTSTART, { type: \"read\" });\n if (!isPrevented) {\n this.trigger(PROGRESS);\n if (options) {\n options.groupPaging = this._groupPaging;\n }\n result = this._queryProcess(this._data, this._mergeState(options));\n\n this._setFilterTotal(result.total, true);\n\n this._aggregateResult = this._calculateAggregates(result.dataToAggregate || this._data, options);\n this._setView(result, options);\n this.trigger(REQUESTEND, { type: \"read\" });\n this.trigger(CHANGE, { items: result.data, action: options ? options.action : \"\" });\n }\n\n return $.Deferred().resolve(isPrevented).promise();\n },\n\n _hasExpandedSubGroups: function(group) {\n var result = false;\n var length = group.items ? group.items.length : 0;\n\n if (!group.hasSubgroups) {\n return false;\n }\n\n for (var i = 0; i < length; i++) {\n if (this._groupsState[group.items[i].uid]) {\n result = true;\n break;\n }\n }\n return result;\n },\n\n _findGroupedRange: function(data, result, options, parents, callback) {\n var that = this;\n var length = data.length;\n var group;\n var current;\n var itemsLength;\n var groupCount;\n var itemsToSkip;\n\n for (var i = 0; i < length; i++) {\n group = data[i];\n\n if (options.taken >= options.take) {\n break;\n }\n\n if (!that._getGroupByUid(group.uid)) {\n that._groupsFlat.push(group);\n }\n\n if (that._groupsState[group.uid]) {\n if (that._isServerGroupPaged()) {\n if (that._fetchGroupItems(group, options, parents, callback)) {\n that._fetchingGroupItems = true;\n return;\n }\n groupCount = (group.subgroupCount || group.itemCount) + 1;\n itemsToSkip = options.skip - options.skipped;\n if (!that._hasExpandedSubGroups(group) && itemsToSkip > groupCount) {\n options.skipped += groupCount;\n continue;\n }\n }\n\n if (options.includeParents && options.skipped < options.skip) {\n options.skipped++;\n group.excludeHeader = true;\n } else if (options.includeParents) {\n options.taken++;\n group.excludeHeader = false;\n }\n\n if (group.hasSubgroups && group.items && group.items.length) {\n group.currentItems = [];\n\n if (!parents) {\n parents = [];\n }\n parents.push(group);\n\n that._findGroupedRange(group.items, group.currentItems, options, parents, callback);\n parents.pop();\n\n if (group.currentItems.length || options.taken > 0) {\n result.push(group);\n } else {\n group.excludeHeader = false;\n }\n } else {\n current = [];\n itemsLength = group.items.length;\n\n for (var j = 0; j < itemsLength; j++) {\n if (options.skipped < options.skip) {\n options.skipped++;\n continue;\n }\n\n if (options.taken >= options.take) {\n break;\n }\n current.push(group.items[j]);\n options.taken++;\n }\n\n if (current.length || options.taken > 0) {\n group.currentItems = current;\n result.push(group);\n } else {\n group.excludeHeader = false;\n }\n }\n } else {\n if (options.skipped < options.skip) {\n options.skipped++;\n continue;\n }\n result.push(group);\n options.taken++;\n }\n }\n },\n\n _expandedSubGroupItemsCount: function(group, end, includeCurrentItems) {\n var that = this;\n var result = 0;\n var subGroup;\n var endSpecified = typeof end === \"number\";\n var length = endSpecified ? end : group.subgroupCount;\n var temp;\n\n if (!group.hasSubgroups) {\n return result;\n }\n\n for (var i = 0; i < length; i++) {\n subGroup = group.items[i];\n\n if (!subGroup) {\n break;\n }\n\n if (subGroup.hasSubgroups && that._groupsState[group.uid]) {\n temp = that._expandedSubGroupItemsCount(subGroup, length, true);\n result += temp;\n\n if (endSpecified) {\n length -= temp;\n }\n } else if (!subGroup.hasSubgroups && that._groupsState[subGroup.uid]) {\n temp = subGroup.items ? subGroup.items.length : 0;\n result += temp;\n if (endSpecified) {\n length -= temp;\n }\n }\n\n if (includeCurrentItems) {\n result += 1;\n if (endSpecified) {\n length -= 1;\n }\n }\n\n if (endSpecified && result > length) {\n return result;\n }\n }\n\n return result;\n },\n\n _fetchGroupItems: function(group, options, parents, callback) {\n var that = this;\n var groupItemsSkip;\n var firstItem;\n var lastItem;\n var groupItemCount = group.hasSubgroups ? group.subgroupCount : group.itemCount;\n var take = options.take;\n var skipped = options.skipped;\n var pageSize = that.take();\n var expandedSubGroupItemsCount;\n\n if (options.includeParents) {\n if (skipped < options.skip) {\n skipped += 1;\n } else {\n take -= 1;\n }\n }\n\n if (!group.items || (group.items && !group.items.length)) {\n that.getGroupItems(group, options, parents, callback, 0);\n return true;\n } else {\n expandedSubGroupItemsCount = this._expandedSubGroupItemsCount(group, options.skip - skipped);\n groupItemsSkip = Math.max(options.skip - (skipped + expandedSubGroupItemsCount), 0);\n\n if (groupItemsSkip >= groupItemCount) {\n return false;\n }\n\n firstItem = group.items[groupItemsSkip];\n lastItem = group.items[Math.min(groupItemsSkip + take, groupItemCount - 1)];\n\n if (firstItem.notFetched) {\n that.getGroupItems(group, options, parents, callback, groupItemsSkip, math.round((groupItemsSkip + pageSize) / pageSize));\n return true;\n }\n\n if (lastItem.notFetched) {\n that.getGroupItems(group, options, parents, callback, math.max(math.floor((groupItemsSkip + pageSize) / pageSize), 0) * pageSize, math.round((groupItemsSkip + pageSize) / pageSize));\n return true;\n }\n }\n },\n\n getGroupItems: function(group, options, parents, callback, groupItemsSkip, page) {\n var that = this;\n var take;\n var filter;\n var data;\n var subgroups;\n\n if (!group.items) {\n group.items = [];\n }\n\n take = that.take();\n filter = this._composeItemsFilter(group, parents);\n data = {\n page: page || 1,\n pageSize: take,\n skip: groupItemsSkip,\n take: take,\n filter: filter,\n aggregate: that._aggregate,\n sort: that._sort\n };\n subgroups = that.findSubgroups(group);\n\n if (subgroups && subgroups.length) {\n data.group = subgroups;\n }\n\n data.groupPaging = true;\n\n clearTimeout(that._timeout);\n that._timeout = setTimeout(function() {\n that._queueRequest(data, function() {\n if (!that.trigger(REQUESTSTART, {\n type: \"read\"\n })) {\n that.transport.read({\n data: data,\n success: that._groupItemsSuccessHandler(group, options.skip, that.take(), callback, groupItemsSkip),\n error: function() {\n var args = slice.call(arguments);\n that.error.apply(that, args);\n }\n });\n } else {\n that._dequeueRequest();\n }\n });\n }, 100);\n },\n\n _groupItemsSuccessHandler: function(group, skip, take, callback, groupItemsSkip) {\n var that = this;\n var timestamp = that._timeStamp();\n callback = isFunction(callback) ? callback : noop;\n var totalField = that.options.schema && that.options.schema.total ? that.options.schema.total : \"Total\";\n\n return function(data) {\n var temp;\n var model = Model.define(that.options.schema.model);\n var totalCount;\n\n that._dequeueRequest();\n\n that.trigger(REQUESTEND, {\n response: data,\n type: \"read\"\n });\n\n if (isFunction(totalField)) {\n totalCount = totalField(data);\n } else {\n totalCount = data[totalField];\n }\n\n data = that.reader.parse(data);\n\n if (group.hasSubgroups) {\n temp = that.reader.groups(data);\n group.subgroupCount = totalCount;\n } else {\n temp = that.reader.data(data);\n temp = temp.map(function(item) {\n return new model(item);\n });\n }\n\n group.items.omitChangeEvent = true;\n for (var i = 0; i < totalCount; i++) {\n if (i >= groupItemsSkip && i < (groupItemsSkip + take) ) {\n group.items.splice(i, 1, temp[i - groupItemsSkip]);\n } else {\n if (!group.items[i]) {\n group.items.splice(i, 0, { notFetched: true });\n }\n }\n }\n group.items.omitChangeEvent = false;\n\n that._updateRangePristineData(group);\n that._fetchingGroupItems = false;\n\n if (!group.countAdded) {\n that._serverGroupsTotal += totalCount;\n group.countAdded = true;\n }\n\n that.range(skip, take, callback, \"expandGroup\");\n\n if (timestamp >= that._currentRequestTimeStamp || !that._skipRequestsInProgress) {\n that.trigger(CHANGE, {});\n }\n };\n },\n\n findSubgroups: function(group) {\n var indexOfCurrentGroup = this._group.map(function(g) {\n return g.field;\n }).indexOf(group.field);\n\n return this._group.slice(indexOfCurrentGroup + 1, this._group.length);\n },\n\n _composeItemsFilter: function(group, parents) {\n var filter = {\n logic: \"and\",\n filters: []\n };\n\n if (this.filter()) {\n filter.filters.push(this.filter());\n }\n\n filter = extend(true, {}, filter);\n filter.filters.push({\n field: group.field,\n operator: \"eq\",\n value: group.value\n });\n\n if (parents) {\n for (var i = 0; i < parents.length; i++) {\n filter.filters.push({\n field: parents[i].field,\n operator: \"eq\",\n value: parents[i].value\n });\n }\n }\n\n return filter;\n },\n\n _updateRangePristineData: function(group) {\n var that = this;\n var ranges = that._ranges;\n var rangesLength = ranges.length;\n var temp;\n var currentGroup;\n var range;\n var dataLength;\n var indexes;\n var currIdx;\n\n for (var i = 0; i < rangesLength; i++) {\n range = ranges[i];\n dataLength = range.data.length;\n indexes = [];\n temp = null;\n\n for (var j = 0; j < dataLength; j++) {\n currentGroup = range.data[j];\n indexes.push(j);\n\n if ((currentGroup.uid === group.uid) || (currentGroup.hasSubgroups && currentGroup.items.length && that._containsSubGroup(currentGroup, group, indexes))) {\n break;\n }\n indexes.pop();\n }\n\n if (indexes.length) {\n temp = ranges[i].pristineData;\n\n while (indexes.length > 1) {\n currIdx = indexes.splice(0, 1)[0];\n temp = temp[currIdx].items;\n }\n temp[indexes[0]] = that._cloneGroup(group);\n break;\n }\n }\n },\n\n _containsSubGroup: function(group, subgroup, indexes) {\n var that = this;\n var length = group.items.length;\n var currentSubGroup;\n\n if (group.hasSubgroups && length) {\n for (var i = 0; i < length; i++) {\n currentSubGroup = group.items[i];\n indexes.push(i);\n if (currentSubGroup.uid === subgroup.uid ||\n (currentSubGroup.hasSubgroups &&\n currentSubGroup.items.length &&\n that._containsSubGroup(currentSubGroup, subgroup, indexes))) {\n return true;\n }\n indexes.pop();\n }\n }\n\n },\n\n _cloneGroup: function(group) {\n var that = this;\n group = typeof group.toJSON == \"function\" ? group.toJSON() : group;\n\n if (group.items && group.items.length) {\n group.items = group.items.map(function(item) {\n return that._cloneGroup(item);\n });\n }\n\n return group;\n },\n\n _setFilterTotal: function(filterTotal, setDefaultValue) {\n var that = this;\n\n if (!that.options.serverFiltering) {\n if (filterTotal !== undefined$1) {\n that._total = filterTotal;\n } else if (setDefaultValue) {\n that._total = that._data.length;\n }\n }\n },\n\n fetch: function(callback) {\n var that = this;\n var fn = function(isPrevented) {\n if (isPrevented !== true && isFunction(callback)) {\n callback.call(that);\n }\n };\n\n return this._query().done(fn);\n },\n\n _query: function(options) {\n var that = this;\n\n return that.query(extend({}, {\n page: that.page(),\n pageSize: that.pageSize(),\n sort: that.sort(),\n filter: that.filter(),\n group: that.group(),\n aggregate: that.aggregate()\n }, options));\n },\n\n next: function(options) {\n var that = this,\n page = that.page(),\n total = that.total();\n\n options = options || {};\n\n if (!page || (total && page + 1 > that.totalPages())) {\n return;\n }\n\n that._skip = that._currentRangeStart = page * that.take();\n\n page += 1;\n options.page = page;\n\n that._query(options);\n\n return page;\n },\n\n prev: function(options) {\n var that = this,\n page = that.page();\n\n options = options || {};\n\n if (!page || page === 1) {\n return;\n }\n\n that._skip = that._currentRangeStart = that._skip - that.take();\n\n page -= 1;\n options.page = page;\n\n that._query(options);\n\n return page;\n },\n\n page: function(val) {\n var that = this,\n skip;\n\n if (val !== undefined$1) {\n val = math.max(math.min(math.max(val, 1), that.totalPages()), 1);\n var take = that.take();\n\n if (that._isGroupPaged()) {\n val -= 1;\n that.range(val * take, take, null, \"page\");\n return;\n }\n that._query(that._pageableQueryOptions({ page: val }));\n return;\n }\n skip = that.skip();\n\n return skip !== undefined$1 ? math.round((skip || 0) / (that.take() || 1)) + 1 : undefined$1;\n },\n\n pageSize: function(val) {\n var that = this;\n\n if (val !== undefined$1) {\n that._query(that._pageableQueryOptions({ pageSize: val, page: 1 }));\n return;\n }\n\n return that.take();\n },\n\n sort: function(val) {\n var that = this;\n\n if (val !== undefined$1) {\n that.trigger(\"sort\");\n that._query({ sort: val });\n return;\n }\n\n return that._sort;\n },\n\n filter: function(val) {\n var that = this;\n\n if (val === undefined$1) {\n return that._filter;\n }\n\n that.trigger(\"reset\");\n that._query({ filter: val, page: 1 });\n },\n\n group: function(val) {\n var that = this;\n var options = { group: val };\n\n if (that._groupPaging) {\n // clear ranges if ungrouping is performed\n if (val !== undefined$1 && (!val || !val.length) ) {\n that._ranges = [];\n }\n options.page = 1;\n }\n\n if (val !== undefined$1) {\n that._query(options);\n return;\n }\n\n return that._group;\n },\n\n getGroupsFlat: function(data) {\n var idx,\n result = [],\n length;\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n var group = data[idx];\n if (group.hasSubgroups) {\n result = result.concat(this.getGroupsFlat(group.items));\n }\n\n result.push(group);\n }\n\n return result;\n },\n\n total: function() {\n return parseInt(this._total || 0, 10);\n },\n\n groupsTotal: function(includeExpanded) {\n var that = this;\n\n if (!that._group.length) {\n return that.total();\n }\n\n if (that._isServerGrouped()) {\n if (that._serverGroupsTotal) {\n return that._serverGroupsTotal;\n }\n that._serverGroupsTotal = that.total();\n\n return that._serverGroupsTotal;\n }\n\n return that._calculateGroupsTotal(that._ranges.length ? that._ranges[0].data : [], includeExpanded);\n },\n\n _calculateGroupsTotal: function(groups, includeExpanded, itemsField, ignoreState) {\n var that = this;\n itemsField = itemsField || \"items\";\n var total;\n var length;\n\n if (that._group.length && groups) {\n total = 0;\n length = groups.length;\n\n for (var i = 0; i < length; i++) {\n total += that.groupCount(groups[i], includeExpanded, itemsField, ignoreState);\n }\n that._groupsTotal = total;\n return total;\n }\n\n that._groupsTotal = that._data.length;\n return that._groupsTotal;\n },\n\n groupCount: function(group, includeExpanded, itemsField, ignoreState) {\n var that = this;\n var total = 0;\n\n if (group.hasSubgroups && that._groupsState[group.uid]) {\n if (includeExpanded && !group.excludeHeader || ignoreState) {\n total += 1;\n }\n\n group[itemsField].forEach(function(subgroup) {\n total += that.groupCount(subgroup, includeExpanded, itemsField, ignoreState);\n });\n } else {\n if (that._groupsState[group.uid]) {\n if (includeExpanded && !group.excludeHeader || ignoreState) {\n total++;\n }\n total += group[itemsField] ? group[itemsField].length : 0;\n } else {\n total++;\n }\n }\n return total;\n },\n\n countGroupRange: function(range) {\n var total = 0;\n var length = range.length;\n\n for (var i = 0; i < length; i++) {\n total += this.groupCount(range[i], true);\n }\n\n return total;\n },\n\n aggregate: function(val) {\n var that = this;\n\n if (val !== undefined$1) {\n that._query({ aggregate: val });\n return;\n }\n\n return that._aggregate;\n },\n\n aggregates: function() {\n var result = this._aggregateResult;\n\n if (isEmptyObject(result)) {\n result = this._emptyAggregates(this.aggregate());\n }\n\n return result;\n },\n\n _emptyAggregates: function(aggregates) {\n var result = {};\n\n if (!isEmptyObject(aggregates)) {\n var aggregate = {};\n\n if (!isArray(aggregates)) {\n aggregates = [aggregates];\n }\n\n for (var idx = 0; idx < aggregates.length; idx++) {\n aggregate[aggregates[idx].aggregate] = 0;\n result[aggregates[idx].field] = aggregate;\n }\n }\n\n return result;\n },\n\n _pageableQueryOptions: function(options) {\n return options;\n },\n\n _wrapInEmptyGroup: function(model) {\n var groups = this.group(),\n parent,\n group,\n idx,\n length;\n\n for (idx = groups.length - 1, length = 0; idx >= length; idx--) {\n group = groups[idx];\n parent = {\n value: model.get ? model.get(group.field) : model[group.field],\n field: group.field,\n items: parent ? [parent] : [model],\n hasSubgroups: !!parent,\n aggregates: this._emptyAggregates(group.aggregates)\n };\n }\n\n return parent;\n },\n\n totalPages: function() {\n var that = this,\n pageSize = that.pageSize() || that.total(),\n total = that._isGroupPaged() ? that.groupsTotal(true) : that.total();\n\n return math.ceil((total || 0) / pageSize);\n },\n\n inRange: function(skip, take) {\n var that = this,\n end = math.min(skip + take, that.total());\n\n if (!that.options.serverPaging && that._data.length > 0) {\n return true;\n }\n\n return that._findRange(skip, end).length > 0;\n },\n\n lastRange: function() {\n var ranges = this._ranges;\n return ranges[ranges.length - 1] || { start: 0, end: 0, data: [] };\n },\n\n firstItemUid: function() {\n var ranges = this._ranges;\n return ranges.length && ranges[0].data.length && ranges[0].data[0].uid;\n },\n\n enableRequestsInProgress: function() {\n this._skipRequestsInProgress = false;\n },\n\n _timeStamp: function() {\n return new Date().getTime();\n },\n\n range: function(skip, take, callback, action) {\n this._currentRequestTimeStamp = this._timeStamp();\n this._skipRequestsInProgress = true;\n var total = this._isGroupPaged() ? this.groupsTotal(true) : this.total();\n\n if (action === \"expandGroup\" || action === \"collapseGroup\") {\n this._updateOuterRangesLength();\n }\n\n skip = math.min(skip || 0, total);\n callback = isFunction(callback) ? callback : noop;\n\n var that = this,\n pageSkip = math.max(math.floor(skip / take), 0) * take,\n size = math.min(pageSkip + take, total),\n data;\n\n data = that._findRange(skip, math.min(skip + take, total), callback);\n\n if ((data.length || total === 0) && !that._fetchingGroupItems) {\n that._processRangeData(data, skip, take, that._originalPageSkip || pageSkip, that._originalSize || size, {\n action: action\n });\n that._originalPageSkip = null;\n that._originalSize = null;\n callback();\n return;\n }\n\n if (that._isGroupPaged()) {\n that._originalPageSkip = pageSkip;\n that._originalSize = size;\n\n pageSkip = math.max(math.floor(that._adjustPageSkip(skip, take) / take), 0) * take;\n size = math.min(pageSkip + take, total);\n }\n\n if (take !== undefined$1 && !that._fetchingGroupItems) {\n if ((that._isGroupPaged() && !that._groupRangeExists(pageSkip, take)) || !that._rangeExists(pageSkip, size)) {\n that.prefetch(pageSkip, take, function() {\n if (skip > pageSkip && size < that.total() && !that._rangeExists(size, math.min(size + take, that.total()))) {\n that.prefetch(size, take, function() {\n that.range(skip, take, callback );\n });\n } else {\n that.range(skip, take, callback);\n }\n });\n } else if (pageSkip < skip) {\n that.prefetch(size, take, function() {\n that.range(skip, take, callback );\n });\n }\n }\n },\n\n _findRange: function(start, end, callback) {\n var that = this,\n ranges = that._ranges,\n range,\n data = [],\n skipIdx,\n takeIdx,\n startIndex,\n endIndex,\n rangeData,\n rangeEnd,\n processed,\n options = that.options,\n remote = options.serverSorting || options.serverPaging || options.serverFiltering || options.serverGrouping || options.serverAggregates,\n flatData,\n count,\n length,\n groupMapOptions = {\n take: end - start,\n skip: start,\n skipped: 0,\n taken: 0,\n includeParents: true\n },\n prevRangeEnd,\n isGroupPaged = that._isGroupPaged(),\n startField = isGroupPaged ? \"outerStart\" : \"start\",\n endField = isGroupPaged ? \"outerEnd\" : \"end\",\n currentDataLength;\n\n for (skipIdx = 0, length = ranges.length; skipIdx < length; skipIdx++) {\n range = ranges[skipIdx];\n\n if (isGroupPaged) {\n if (range.outerStart >= end) {\n return [];\n }\n\n if (start > range.outerEnd) {\n groupMapOptions.skipped += range.outerEnd - (prevRangeEnd || 0);\n prevRangeEnd = range.outerEnd;\n continue;\n }\n\n if (typeof prevRangeEnd !== \"undefined\" && prevRangeEnd != range.outerStart) {\n groupMapOptions.skipped += range.outerStart - prevRangeEnd;\n }\n\n if (groupMapOptions.skipped > groupMapOptions.skip) {\n return [];\n }\n\n if (typeof prevRangeEnd === \"undefined\" && start > 0 && range.start > 0) {\n groupMapOptions.skipped = range.outerStart;\n }\n\n takeIdx = skipIdx;\n while (true) {\n this._findGroupedRange(range.data, data, groupMapOptions, null, callback);\n currentDataLength = that._calculateGroupsTotal(data, true, \"currentItems\");\n\n if (currentDataLength >= groupMapOptions.take) {\n return data;\n }\n\n if (that._fetchingGroupItems) {\n return [];\n }\n takeIdx++;\n\n if (ranges[takeIdx] && ranges[takeIdx].outerStart === range.outerEnd) {\n range = ranges[takeIdx];\n } else {\n break;\n }\n }\n } else if (start >= range[startField] && start <= range[endField]) {\n count = 0;\n\n for (takeIdx = skipIdx; takeIdx < length; takeIdx++) {\n range = ranges[takeIdx];\n flatData = that._flatData(range.data, true);\n\n if (flatData.length && start + count >= range.start) {\n rangeData = range.data;\n rangeEnd = range.end;\n\n if (!remote) {\n if (options.inPlaceSort) {\n processed = that._queryProcess(range.data, { filter: that.filter() });\n } else {\n var sort = normalizeGroupWithoutCompare(that.group() || []).concat(normalizeSort(that.sort() || []));\n processed = that._queryProcess(range.data, { sort: sort, filter: that.filter() });\n }\n flatData = rangeData = processed.data;\n\n if (processed.total !== undefined$1) {\n rangeEnd = processed.total;\n }\n }\n\n startIndex = 0;\n if (start + count > range.start) {\n startIndex = (start + count) - range.start;\n }\n endIndex = flatData.length;\n if (rangeEnd > end) {\n endIndex = endIndex - (rangeEnd - end);\n }\n count += endIndex - startIndex;\n data = that._mergeGroups(data, rangeData, startIndex, endIndex);\n\n if (end <= range.end && count == end - start) {\n return data;\n }\n }\n }\n break;\n }\n prevRangeEnd = range.outerEnd;\n }\n return [];\n },\n\n _getRangesMismatch: function(pageSkip) {\n var that = this;\n var ranges = that._ranges;\n var mismatch = 0;\n var i = 0;\n\n while (true) {\n var range = ranges[i];\n if (!range || range.outerStart > pageSkip) {\n break;\n }\n\n if (range.outerEnd != range.end) {\n mismatch = range.outerEnd - range.end;\n }\n i++;\n }\n\n return mismatch;\n },\n\n _mergeGroups: function(data, range, skip, take) {\n if (this._isServerGrouped()) {\n var temp = range.toJSON(),\n prevGroup;\n\n if (data.length) {\n prevGroup = data[data.length - 1];\n }\n\n mergeGroups(prevGroup, temp, skip, take);\n\n return data.concat(temp);\n }\n return data.concat(range.slice(skip, take));\n },\n\n _processRangeData: function(data, skip, take, pageSkip, size, eventData) {\n var that = this;\n\n that._pending = undefined$1;\n\n that._skip = skip > that.skip() && !that._omitPrefetch ? math.min(size, (that.totalPages() - 1) * that.take()) : pageSkip;\n\n that._currentRangeStart = skip;\n\n that._take = take;\n\n var paging = that.options.serverPaging;\n var sorting = that.options.serverSorting;\n var filtering = that.options.serverFiltering;\n var aggregates = that.options.serverAggregates;\n try {\n that.options.serverPaging = true;\n if (!that._isServerGrouped() && !(that.group() && that.group().length)) {\n that.options.serverSorting = true;\n }\n that.options.serverFiltering = true;\n that.options.serverPaging = true;\n that.options.serverAggregates = true;\n\n if (paging) {\n that._detachObservableParents();\n that._data = data = that._observe(data);\n }\n that._process(data, eventData);\n } finally {\n that.options.serverPaging = paging;\n that.options.serverSorting = sorting;\n that.options.serverFiltering = filtering;\n that.options.serverAggregates = aggregates;\n }\n },\n\n skip: function() {\n var that = this;\n\n if (that._skip === undefined$1) {\n return (that._page !== undefined$1 ? (that._page - 1) * (that.take() || 1) : undefined$1);\n }\n return that._skip;\n },\n\n currentRangeStart: function() {\n return this._currentRangeStart || 0;\n },\n\n take: function() {\n return this._take || this._pageSize;\n },\n\n _prefetchSuccessHandler: function(skip, size, callback, force) {\n var that = this;\n var timestamp = that._timeStamp();\n\n return function(data) {\n var found = false,\n range = { start: skip, end: size, data: [], timestamp: that._timeStamp() },\n idx,\n length,\n temp;\n\n that._dequeueRequest();\n\n that.trigger(REQUESTEND, { response: data, type: \"read\" });\n\n data = that.reader.parse(data);\n\n temp = that._readData(data);\n\n if (temp.length) {\n for (idx = 0, length = that._ranges.length; idx < length; idx++) {\n if (that._ranges[idx].start === skip) {\n found = true;\n range = that._ranges[idx];\n\n if (!that._isGroupPaged()) {\n range.pristineData = temp;\n range.data = that._observe(temp);\n range.end = range.start + that._flatData(range.data, true).length;\n that._sortRanges();\n }\n\n break;\n }\n }\n\n if (!found) {\n that._addRange(that._observe(temp), skip);\n }\n }\n\n that._total = that.reader.total(data);\n\n if (force || (timestamp >= that._currentRequestTimeStamp || !that._skipRequestsInProgress)) {\n if (callback && temp.length) {\n callback();\n } else {\n that.trigger(CHANGE, {});\n }\n }\n };\n },\n\n prefetch: function(skip, take, callback) {\n var that = this,\n size = math.min(skip + take, that.total()),\n options = {\n take: take,\n skip: skip,\n page: skip / take + 1,\n pageSize: take,\n sort: that._sort,\n filter: that._filter,\n group: that._group,\n aggregate: that._aggregate\n };\n\n\n if ((that._isGroupPaged() && !that._isServerGrouped() && that._groupRangeExists(skip, size))) {\n if (callback) {\n callback();\n }\n return;\n }\n\n if ((that._isServerGroupPaged() && !that._groupRangeExists(skip, size)) || !that._rangeExists(skip, size)) {\n clearTimeout(that._timeout);\n\n that._timeout = setTimeout(function() {\n that._queueRequest(options, function() {\n if (!that.trigger(REQUESTSTART, { type: \"read\" })) {\n if (that._omitPrefetch) {\n that.trigger(PROGRESS);\n }\n that.transport.read({\n data: that._params(options),\n success: that._prefetchSuccessHandler(skip, size, callback),\n error: function() {\n var args = slice.call(arguments);\n that.error.apply(that, args);\n }\n });\n } else {\n that._dequeueRequest();\n }\n });\n }, 100);\n } else if (callback) {\n callback();\n }\n },\n\n _multiplePrefetch: function(skip, take, callback) {\n var that = this,\n size = math.min(skip + take, that.total()),\n options = {\n take: take,\n skip: skip,\n page: skip / take + 1,\n pageSize: take,\n sort: that._sort,\n filter: that._filter,\n group: that._group,\n aggregate: that._aggregate\n };\n\n if (!that._rangeExists(skip, size)) {\n if (!that.trigger(REQUESTSTART, { type: \"read\" })) {\n that.transport.read({\n data: that._params(options),\n success: that._prefetchSuccessHandler(skip, size, callback, true)\n });\n }\n } else if (callback) {\n callback();\n }\n },\n\n _adjustPageSkip: function(start, take) {\n var that = this;\n var prevRange = that._getPrevRange(start);\n var result;\n var total = that.total();\n var mismatch;\n\n if (prevRange) {\n mismatch = that._getRangesMismatch(start);\n\n if (!mismatch) {\n return start;\n }\n start -= mismatch;\n }\n result = math.max(math.floor(start / take), 0) * take;\n\n if (result > total) {\n while (true) {\n result -= take;\n if (result < total) {\n break;\n }\n }\n }\n return result;\n },\n\n _getNextRange: function(end) {\n var that = this,\n ranges = that._ranges,\n idx,\n length;\n\n for (idx = 0, length = ranges.length; idx < length; idx++) {\n if (ranges[idx].start <= end && ranges[idx].end >= end) {\n return ranges[idx];\n }\n }\n },\n\n _getPrevRange: function(start) {\n var that = this,\n ranges = that._ranges,\n idx,\n range,\n length = ranges.length;\n\n for (idx = length - 1; idx >= 0; idx--) {\n if (ranges[idx].outerStart <= start) {\n range = ranges[idx];\n break;\n }\n\n }\n\n return range;\n },\n\n _rangeExists: function(start, end) {\n var that = this,\n ranges = that._ranges,\n idx,\n length;\n\n for (idx = 0, length = ranges.length; idx < length; idx++) {\n if (ranges[idx].start <= start && ranges[idx].end >= end) {\n return true;\n }\n }\n\n return false;\n },\n\n _groupRangeExists: function(start, end) {\n var that = this,\n ranges = that._ranges,\n idx,\n length,\n availableItemsCount = 0,\n total = that.groupsTotal(true);\n\n if (end > total && !that._isServerGrouped()) {\n end = total;\n }\n\n for (idx = 0, length = ranges.length; idx < length; idx++) {\n var range = ranges[idx];\n if (range.outerStart <= start && range.outerEnd >= start) {\n availableItemsCount += range.outerEnd - start;\n } else if (range.outerStart <= end && range.outerEnd >= end) {\n availableItemsCount += end - range.outerStart;\n }\n }\n\n return availableItemsCount >= end - start;\n },\n\n _getCurrentRangeSpan: function() {\n var that = this;\n var ranges = that._ranges;\n var start = that.currentRangeStart();\n var end = start + (that.take() || 0);\n var rangeSpan = [];\n var range;\n var idx;\n var length = ranges.length;\n\n for (idx = 0; idx < length; idx++) {\n range = ranges[idx];\n\n if ((range.start <= start && range.end >= start) || (range.start >= start && range.start <= end)) {\n rangeSpan.push(range);\n }\n }\n\n return rangeSpan;\n },\n\n _removeModelFromRanges: function(model) {\n var that = this;\n var range;\n\n for (var idx = 0, length = this._ranges.length; idx < length; idx++) {\n range = this._ranges[idx];\n\n that._removeModelFromRange(range, model);\n }\n\n that._updateRangesLength();\n },\n\n _removeModelFromRange: function(range, model) {\n this._eachItem(range.data, function(data) {\n if (!data) {\n return;\n }\n for (var idx = 0; idx < data.length; idx++) {\n var dataItem = data[idx];\n\n if (dataItem.uid && dataItem.uid == model.uid) {\n [].splice.call(data, idx, 1);\n break;\n }\n }\n });\n },\n\n _insertModelInRange: function(index, model) {\n var that = this;\n var ranges = that._ranges || [];\n var rangesLength = ranges.length;\n var range;\n var i;\n\n for (i = 0; i < rangesLength; i++) {\n range = ranges[i];\n\n if (range.start <= index && range.end >= index) {\n if (!that._getByUid(model.uid, range.data)) {\n if (that._isServerGrouped()) {\n range.data.splice(index, 0, that._wrapInEmptyGroup(model));\n } else {\n range.data.splice(index, 0, model);\n }\n }\n\n break;\n }\n }\n\n that._updateRangesLength();\n },\n\n _updateRangesLength: function() {\n var that = this;\n var ranges = that._ranges || [];\n var rangesLength = ranges.length;\n var mismatchFound = false;\n var mismatchLength = 0;\n var lengthDifference = 0;\n var rangeLength;\n var range;\n var i;\n\n for (i = 0; i < rangesLength; i++) {\n range = ranges[i];\n rangeLength = that._isGroupPaged() ? range.data.length : that._flatData(range.data, true).length;\n lengthDifference = rangeLength - math.abs(range.end - range.start);\n\n if (!mismatchFound && lengthDifference !== 0) {\n mismatchFound = true;\n mismatchLength = lengthDifference;\n range.end += mismatchLength;\n continue;\n }\n\n if (mismatchFound) {\n range.start += mismatchLength;\n range.end += mismatchLength;\n }\n }\n },\n\n _updateOuterRangesLength: function() {\n var that = this;\n var ranges = that._ranges || [];\n var rangesLength = ranges.length;\n var mismatchLength = 0;\n var range;\n var i;\n var prevRange;\n var rangeLength;\n\n for (i = 0; i < rangesLength; i++) {\n range = ranges[i];\n rangeLength = that._isGroupPaged() ? that._calculateGroupsTotal(range.data, true, \"items\", true) : that._flatData(range.data, true).length;\n\n if (prevRange) {\n if (prevRange.end != range.start) {\n mismatchLength = range.start - prevRange.end;\n }\n range.outerStart = prevRange.outerEnd + mismatchLength;\n mismatchLength = 0;\n } else {\n range.outerStart = range.start;\n }\n\n range.outerEnd = range.outerStart + rangeLength;\n prevRange = range;\n }\n }\n });\n\n var Transport = {};\n\n Transport.create = function(options, data, dataSource) {\n var transport,\n transportOptions = options.transport ? $.extend({}, options.transport) : null;\n\n if (transportOptions) {\n transportOptions.read = typeof transportOptions.read === STRING ? { url: transportOptions.read } : transportOptions.read;\n\n if (options.type === \"jsdo\") {\n transportOptions.dataSource = dataSource;\n }\n\n if (options.type) {\n kendo.data.transports = kendo.data.transports || {};\n kendo.data.schemas = kendo.data.schemas || {};\n\n if (!kendo.data.transports[options.type]) {\n kendo.logToConsole(\"Unknown DataSource transport type '\" + options.type + \"'.\\nVerify that registration scripts for this type are included after Kendo UI on the page.\", \"warn\");\n } else if (!isPlainObject(kendo.data.transports[options.type])) {\n transport = new kendo.data.transports[options.type](extend(transportOptions, { data: data }));\n } else {\n transportOptions = extend(true, {}, kendo.data.transports[options.type], transportOptions);\n }\n\n options.schema = extend(true, {}, kendo.data.schemas[options.type], options.schema);\n }\n\n if (!transport) {\n transport = isFunction(transportOptions.read) ? transportOptions : new RemoteTransport(transportOptions);\n }\n } else {\n transport = new LocalTransport({ data: options.data || [] });\n }\n return transport;\n };\n\n DataSource.create = function(options) {\n if (isArray(options) || options instanceof ObservableArray) {\n options = { data: options };\n }\n\n var dataSource = options || {},\n data = dataSource.data,\n fields = dataSource.fields,\n table = dataSource.table,\n select = dataSource.select,\n idx,\n length,\n model = {},\n field;\n\n if (!data && fields && !dataSource.transport) {\n if (table) {\n data = inferTable(table, fields);\n } else if (select) {\n data = inferSelect(select, fields);\n\n if (dataSource.group === undefined$1 && data[0] && data[0].optgroup !== undefined$1) {\n dataSource.group = \"optgroup\";\n }\n }\n }\n\n if (kendo.data.Model && fields && (!dataSource.schema || !dataSource.schema.model)) {\n for (idx = 0, length = fields.length; idx < length; idx++) {\n field = fields[idx];\n if (field.type) {\n model[field.field] = field;\n }\n }\n\n if (!isEmptyObject(model)) {\n dataSource.schema = extend(true, dataSource.schema, { model: { fields: model } });\n }\n }\n\n dataSource.data = data;\n\n select = null;\n dataSource.select = null;\n table = null;\n dataSource.table = null;\n\n return dataSource instanceof DataSource ? dataSource : new DataSource(dataSource);\n };\n\n function inferSelect(select, fields) {\n select = $(select)[0];\n var options = select.options;\n var firstField = fields[0];\n var secondField = fields[1];\n\n var data = [];\n var idx, length;\n var optgroup;\n var option;\n var record;\n var value;\n\n for (idx = 0, length = options.length; idx < length; idx++) {\n record = {};\n option = options[idx];\n optgroup = option.parentNode;\n\n if (optgroup === select) {\n optgroup = null;\n }\n\n if (option.disabled || (optgroup && optgroup.disabled)) {\n continue;\n }\n\n if (optgroup) {\n record.optgroup = optgroup.label;\n }\n\n record[firstField.field] = option.text;\n\n value = option.attributes.value;\n\n if (value && value.specified) {\n value = option.value;\n } else {\n value = option.text;\n }\n\n record[secondField.field] = value;\n\n data.push(record);\n }\n\n return data;\n }\n\n function inferTable(table, fields) {\n var tbody = $(table)[0].tBodies[0],\n rows = tbody ? tbody.rows : [],\n idx,\n length,\n fieldIndex,\n fieldCount = fields.length,\n data = [],\n cells,\n record,\n cell,\n empty;\n\n for (idx = 0, length = rows.length; idx < length; idx++) {\n record = {};\n empty = true;\n cells = rows[idx].cells;\n\n for (fieldIndex = 0; fieldIndex < fieldCount; fieldIndex++) {\n cell = cells[fieldIndex];\n if (cell.nodeName.toLowerCase() !== \"th\") {\n empty = false;\n record[fields[fieldIndex].field] = cell.innerHTML;\n }\n }\n if (!empty) {\n data.push(record);\n }\n }\n\n return data;\n }\n\n var Node = Model.define({\n idField: \"id\",\n\n init: function(value) {\n var that = this,\n hasChildren = that.hasChildren || value && value.hasChildren,\n childrenField = \"items\",\n childrenOptions = {};\n\n kendo.data.Model.fn.init.call(that, value);\n\n if (typeof that.children === STRING) {\n childrenField = that.children;\n }\n\n childrenOptions = {\n schema: {\n data: childrenField,\n model: {\n hasChildren: hasChildren,\n id: that.idField,\n fields: that.fields\n }\n }\n };\n\n if (typeof that.children !== STRING) {\n extend(childrenOptions, that.children);\n }\n\n childrenOptions.data = value;\n\n if (!hasChildren) {\n hasChildren = childrenOptions.schema.data;\n }\n\n if (typeof hasChildren === STRING) {\n hasChildren = kendo.getter(hasChildren);\n }\n\n if (isFunction(hasChildren)) {\n var hasChildrenObject = hasChildren.call(that, that);\n\n if (hasChildrenObject && hasChildrenObject.length === 0) {\n that.hasChildren = false;\n } else {\n that.hasChildren = !!hasChildrenObject;\n }\n }\n\n that._childrenOptions = childrenOptions;\n\n if (that.hasChildren) {\n that._initChildren();\n }\n\n that._loaded = !!(value && value._loaded);\n },\n\n _initChildren: function() {\n var that = this;\n var children, transport, parameterMap;\n\n if (!(that.children instanceof HierarchicalDataSource)) {\n children = that.children = new HierarchicalDataSource(that._childrenOptions);\n\n transport = children.transport;\n parameterMap = transport.parameterMap;\n\n transport.parameterMap = function(data, type) {\n data[that.idField || \"id\"] = that.id;\n\n if (parameterMap) {\n data = parameterMap.call(that, data, type);\n }\n\n return data;\n };\n\n children.parent = function() {\n return that;\n };\n\n children.bind(CHANGE, function(e) {\n e.node = e.node || that;\n that.trigger(CHANGE, e);\n });\n\n children.bind(ERROR, function(e) {\n var collection = that.parent();\n\n if (collection) {\n e.node = e.node || that;\n collection.trigger(ERROR, e);\n }\n });\n\n children.bind(ITEMSLOADED, function(e) {\n var collection = that.parent();\n\n if (collection) {\n collection.trigger(ITEMSLOADED, e);\n }\n });\n\n that._updateChildrenField();\n }\n },\n\n append: function(model) {\n this._initChildren();\n this.loaded(true);\n this.children.add(model);\n },\n\n hasChildren: false,\n\n level: function() {\n var parentNode = this.parentNode(),\n level = 0;\n\n while (parentNode && parentNode.parentNode) {\n level++;\n parentNode = parentNode.parentNode ? parentNode.parentNode() : null;\n }\n\n return level;\n },\n\n _updateChildrenField: function() {\n var fieldName = this._childrenOptions.schema.data;\n\n this[fieldName || \"items\"] = this.children.data();\n },\n\n _childrenLoaded: function() {\n this._loaded = true;\n\n this._updateChildrenField();\n },\n\n load: function() {\n var options = {};\n var method = \"_query\";\n var children, promise;\n\n if (this.hasChildren) {\n this._initChildren();\n\n children = this.children;\n\n options[this.idField || \"id\"] = this.id;\n\n if (!this._loaded) {\n children._data = undefined$1;\n method = \"read\";\n }\n\n children.one(CHANGE, this._childrenLoaded.bind(this));\n\n if (this._matchFilter) {\n options.filter = { field: '_matchFilter', operator: 'eq', value: true };\n }\n\n promise = children[method](options);\n if (!this._loaded) {\n this.trigger(ITEMLOAD, { promise: promise, node: this });\n }\n } else {\n this.loaded(true);\n }\n\n return promise || $.Deferred().resolve().promise();\n },\n\n parentNode: function() {\n var array = this.parent();\n\n return array.parent();\n },\n\n loaded: function(value) {\n if (value !== undefined$1) {\n this._loaded = value;\n } else {\n return this._loaded;\n }\n },\n\n shouldSerialize: function(field) {\n return Model.fn.shouldSerialize.call(this, field) &&\n field !== \"children\" &&\n field !== \"_loaded\" &&\n field !== \"hasChildren\" &&\n field !== \"_childrenOptions\";\n }\n });\n\n function dataMethod(name) {\n return function() {\n var data = this._data,\n result = DataSource.fn[name].apply(this, slice.call(arguments));\n\n if (this._data != data) {\n this._attachBubbleHandlers();\n }\n\n return result;\n };\n }\n\n var HierarchicalDataSource = DataSource.extend({\n init: function(options) {\n var node = Node.define({\n children: options\n });\n\n if (options.filter && !options.serverFiltering) {\n this._hierarchicalFilter = options.filter;\n options.filter = null;\n }\n\n DataSource.fn.init.call(this, extend(true, {}, { schema: { modelBase: node, model: node } }, options));\n\n this._attachBubbleHandlers();\n },\n\n _attachBubbleHandlers: function() {\n var that = this;\n\n that._data.bind(ERROR, function(e) {\n that.trigger(ERROR, e);\n });\n\n that._data.bind(ITEMSLOADED, function(e) {\n that.trigger(ITEMSLOADED, e);\n });\n },\n\n loading: function() {\n if (this._data) {\n return this._data.loading() || this._childrenLoading();\n }\n return false;\n },\n\n _childrenLoading: function() {\n var isLoading = false;\n this._data.forEach(function(node) {\n if (node.hasChildren && node.children.loading()) {\n isLoading = true;\n }\n });\n return isLoading;\n },\n\n read: function(data) {\n var result = DataSource.fn.read.call(this, data);\n\n if (this._hierarchicalFilter) {\n if (this._data && this._data.length > 0) {\n this.filter(this._hierarchicalFilter);\n } else {\n this.options.filter = this._hierarchicalFilter;\n this._filter = normalizeFilter(this.options.filter);\n this._hierarchicalFilter = null;\n }\n }\n\n return result;\n },\n\n remove: function(node) {\n var parentNode = node.parentNode(),\n dataSource = this,\n result;\n\n if (parentNode && parentNode._initChildren) {\n dataSource = parentNode.children;\n }\n\n result = DataSource.fn.remove.call(dataSource, node);\n\n if (parentNode && !dataSource.data().length) {\n parentNode.hasChildren = false;\n }\n\n return result;\n },\n\n success: dataMethod(\"success\"),\n\n data: dataMethod(\"data\"),\n\n insert: function(index, model) {\n var parentNode = this.parent();\n\n if (parentNode && parentNode._initChildren) {\n parentNode.hasChildren = true;\n parentNode._initChildren();\n }\n\n return DataSource.fn.insert.call(this, index, model);\n },\n\n filter: function(val) {\n if (val === undefined$1) {\n return this._filter;\n }\n\n if (!this.options.serverFiltering && this._markHierarchicalQuery(val)) {\n val = { logic: \"or\", filters: [val, { field: '_matchFilter', operator: 'equals', value: true }] };\n }\n\n this.trigger(\"reset\");\n this._query({ filter: val, page: 1 });\n },\n\n _markHierarchicalQuery: function(expressions) {\n var compiled;\n var accentFoldingFiltering = this.options.accentFoldingFiltering;\n\n expressions = accentFoldingFiltering ? $.extend({}, normalizeFilter(expressions), { accentFoldingFiltering: accentFoldingFiltering }) : normalizeFilter(expressions);\n\n if (!expressions || expressions.filters.length === 0) {\n this._updateHierarchicalFilter(function() {return true;});\n return false;\n }\n\n compiled = Query.filterExpr(expressions, { noEval: true });\n\n this._updateHierarchicalFilter(compiled);\n return true;\n },\n\n _updateHierarchicalFilter: function(filter) {\n var current;\n var data = this._data;\n var result = false;\n\n for (var idx = 0; idx < data.length; idx++) {\n current = data[idx];\n\n if (current.hasChildren) {\n current._matchFilter = current.children._updateHierarchicalFilter(filter);\n if (!current._matchFilter) {\n current._matchFilter = filter(current);\n }\n } else {\n current._matchFilter = filter(current);\n }\n\n if (current._matchFilter) {\n result = true;\n }\n }\n return result;\n },\n\n _find: function(method, value) {\n var idx, length, node, children;\n var data = this._data;\n\n if (!data) {\n return;\n }\n\n node = DataSource.fn[method].call(this, value);\n\n if (node) {\n return node;\n }\n\n data = this._flatData(this._data);\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n children = data[idx].children;\n\n if (!(children instanceof HierarchicalDataSource)) {\n continue;\n }\n\n node = children[method](value);\n\n if (node) {\n return node;\n }\n }\n },\n\n get: function(id) {\n return this._find(\"get\", id);\n },\n\n getByUid: function(uid) {\n return this._find(\"getByUid\", uid);\n }\n });\n\n function inferList(list, fields) {\n var items = $(list).children(),\n idx,\n length,\n data = [],\n record,\n textField = fields[0].field,\n urlField = fields[1] && fields[1].field,\n spriteCssClassField = fields[2] && fields[2].field,\n imageUrlField = fields[3] && fields[3].field,\n item,\n id,\n textChild,\n className,\n children;\n\n function elements(collection, tagName) {\n return collection.filter(tagName).add(collection.find(tagName));\n }\n\n for (idx = 0, length = items.length; idx < length; idx++) {\n record = { _loaded: true };\n item = items.eq(idx);\n\n textChild = item[0].firstChild;\n children = item.children();\n list = children.filter(\"ul\");\n children = children.filter(\":not(ul)\");\n\n id = item.attr(\"data-id\");\n\n if (id) {\n record.id = id;\n }\n\n if (textChild) {\n record[textField] = textChild.nodeType == 3 ? textChild.nodeValue : children.text();\n }\n\n if (urlField) {\n record[urlField] = elements(children, \"a\").attr(\"href\");\n }\n\n if (imageUrlField) {\n record[imageUrlField] = elements(children, \"img\").attr(\"src\");\n }\n\n if (spriteCssClassField) {\n className = elements(children, \".k-sprite\").prop(\"className\");\n record[spriteCssClassField] = className && kendo.trim(className.replace(\"k-sprite\", \"\"));\n }\n\n if (list.length) {\n record.items = inferList(list.eq(0), fields);\n }\n\n if (item.attr(\"data-hasChildren\") == \"true\") {\n record.hasChildren = true;\n }\n\n data.push(record);\n }\n\n return data;\n }\n\n HierarchicalDataSource.create = function(options) {\n options = options && options.push ? { data: options } : options;\n\n var dataSource = options || {},\n data = dataSource.data,\n fields = dataSource.fields,\n list = dataSource.list;\n\n if (data && data._dataSource) {\n return data._dataSource;\n }\n\n if (!data && fields && !dataSource.transport) {\n if (list) {\n data = inferList(list, fields);\n }\n }\n\n dataSource.data = data;\n\n return dataSource instanceof HierarchicalDataSource ? dataSource : new HierarchicalDataSource(dataSource);\n };\n\n var Buffer = kendo.Observable.extend({\n init: function(dataSource, viewSize, disablePrefetch) {\n kendo.Observable.fn.init.call(this);\n\n this._prefetching = false;\n this.dataSource = dataSource;\n this.prefetch = !disablePrefetch;\n\n var buffer = this;\n\n dataSource.bind(\"change\", function() {\n buffer._change();\n });\n\n dataSource.bind(\"reset\", function() {\n buffer._reset();\n });\n\n this._syncWithDataSource();\n\n this.setViewSize(viewSize);\n },\n\n setViewSize: function(viewSize) {\n this.viewSize = viewSize;\n this._recalculate();\n },\n\n at: function(index) {\n var pageSize = this.pageSize,\n itemPresent = true;\n\n if (index >= this.total()) {\n this.trigger(\"endreached\", { index: index });\n return null;\n }\n\n if (!this.useRanges) {\n return this.dataSource.view()[index];\n }\n if (this.useRanges) {\n // out of range request\n if (index < this.dataOffset || index >= this.skip + pageSize) {\n itemPresent = this.range(Math.floor(index / pageSize) * pageSize);\n }\n\n // prefetch\n if (index === this.prefetchThreshold) {\n this._prefetch();\n }\n\n // mid-range jump - prefetchThreshold and nextPageThreshold may be equal, do not change to else if\n if (index === this.midPageThreshold) {\n this.range(this.nextMidRange, true);\n }\n // next range jump\n else if (index === this.nextPageThreshold) {\n this.range(this.nextFullRange);\n }\n // pull-back\n else if (index === this.pullBackThreshold) {\n if (this.offset === this.skip) { // from full range to mid range\n this.range(this.previousMidRange);\n } else { // from mid range to full range\n this.range(this.previousFullRange);\n }\n }\n\n if (itemPresent) {\n return this.dataSource.at(index - this.dataOffset);\n } else {\n this.trigger(\"endreached\", { index: index });\n return null;\n }\n }\n },\n\n indexOf: function(item) {\n return this.dataSource.data().indexOf(item) + this.dataOffset;\n },\n\n total: function() {\n return parseInt(this.dataSource.total(), 10);\n },\n\n next: function() {\n var buffer = this,\n pageSize = buffer.pageSize,\n offset = buffer.skip - buffer.viewSize + pageSize,\n pageSkip = math.max(math.floor(offset / pageSize), 0) * pageSize;\n\n this.offset = offset;\n this.dataSource.prefetch(pageSkip, pageSize, function() {\n buffer._goToRange(offset, true);\n });\n },\n\n range: function(offset, nextRange) {\n if (this.offset === offset) {\n return true;\n }\n\n var buffer = this,\n pageSize = this.pageSize,\n pageSkip = math.max(math.floor(offset / pageSize), 0) * pageSize,\n dataSource = this.dataSource;\n\n if (nextRange) {\n pageSkip += pageSize;\n }\n\n if (dataSource.inRange(offset, pageSize)) {\n this.offset = offset;\n this._recalculate();\n this._goToRange(offset);\n return true;\n } else if (this.prefetch) {\n dataSource.prefetch(pageSkip, pageSize, function() {\n buffer.offset = offset;\n buffer._recalculate();\n buffer._goToRange(offset, true);\n });\n return false;\n }\n\n return true;\n },\n\n syncDataSource: function() {\n var offset = this.offset;\n this.offset = null;\n this.range(offset);\n },\n\n destroy: function() {\n this.unbind();\n },\n\n _prefetch: function() {\n var buffer = this,\n pageSize = this.pageSize,\n prefetchOffset = this.skip + pageSize,\n dataSource = this.dataSource;\n\n if (!dataSource.inRange(prefetchOffset, pageSize) && !this._prefetching && this.prefetch) {\n this._prefetching = true;\n this.trigger(\"prefetching\", { skip: prefetchOffset, take: pageSize });\n\n dataSource.prefetch(prefetchOffset, pageSize, function() {\n buffer._prefetching = false;\n buffer.trigger(\"prefetched\", { skip: prefetchOffset, take: pageSize });\n });\n }\n },\n\n _goToRange: function(offset, expanding) {\n if (this.offset !== offset) {\n return;\n }\n\n this.dataOffset = offset;\n this._expanding = expanding;\n this.dataSource.range(offset, this.pageSize);\n this.dataSource.enableRequestsInProgress();\n },\n\n _reset: function() {\n this._syncPending = true;\n },\n\n _change: function() {\n var dataSource = this.dataSource;\n\n this.length = this.useRanges ? dataSource.lastRange().end : dataSource.view().length;\n\n if (this._syncPending) {\n this._syncWithDataSource();\n this._recalculate();\n this._syncPending = false;\n this.trigger(\"reset\", { offset: this.offset });\n }\n\n this.trigger(\"resize\");\n\n if (this._expanding) {\n this.trigger(\"expand\");\n }\n\n delete this._expanding;\n },\n\n _syncWithDataSource: function() {\n var dataSource = this.dataSource;\n\n this._firstItemUid = dataSource.firstItemUid();\n this.dataOffset = this.offset = dataSource.skip() || 0;\n this.pageSize = dataSource.pageSize();\n this.useRanges = dataSource.options.serverPaging;\n },\n\n _recalculate: function() {\n var pageSize = this.pageSize,\n offset = this.offset,\n viewSize = this.viewSize,\n skip = Math.ceil(offset / pageSize) * pageSize;\n\n this.skip = skip;\n this.midPageThreshold = skip + pageSize - 1;\n this.nextPageThreshold = skip + viewSize - 1;\n this.prefetchThreshold = skip + Math.floor(pageSize / 3 * 2);\n this.pullBackThreshold = this.offset - 1;\n\n this.nextMidRange = skip + pageSize - viewSize;\n this.nextFullRange = skip;\n this.previousMidRange = offset - viewSize;\n this.previousFullRange = skip - pageSize;\n }\n });\n\n var BatchBuffer = kendo.Observable.extend({\n init: function(dataSource, batchSize) {\n var batchBuffer = this;\n\n kendo.Observable.fn.init.call(batchBuffer);\n\n this.dataSource = dataSource;\n this.batchSize = batchSize;\n this._total = 0;\n\n this.buffer = new Buffer(dataSource, batchSize * 3);\n\n this.buffer.bind({\n \"endreached\": function(e) {\n batchBuffer.trigger(\"endreached\", { index: e.index });\n },\n \"prefetching\": function(e) {\n batchBuffer.trigger(\"prefetching\", { skip: e.skip, take: e.take });\n },\n \"prefetched\": function(e) {\n batchBuffer.trigger(\"prefetched\", { skip: e.skip, take: e.take });\n },\n \"reset\": function() {\n batchBuffer._total = 0;\n batchBuffer.trigger(\"reset\");\n },\n \"resize\": function() {\n batchBuffer._total = Math.ceil(this.length / batchBuffer.batchSize);\n batchBuffer.trigger(\"resize\", { total: batchBuffer.total(), offset: this.offset });\n }\n });\n },\n\n syncDataSource: function() {\n this.buffer.syncDataSource();\n },\n\n at: function(index) {\n var buffer = this.buffer,\n skip = index * this.batchSize,\n take = this.batchSize,\n view = [],\n item;\n\n if (buffer.offset > skip) {\n buffer.at(buffer.offset - 1);\n }\n\n for (var i = 0; i < take; i++) {\n item = buffer.at(skip + i);\n\n if (item === null) {\n break;\n }\n\n view.push(item);\n }\n\n return view;\n },\n\n total: function() {\n return this._total;\n },\n\n destroy: function() {\n this.buffer.destroy();\n this.unbind();\n }\n });\n\n extend(true, kendo.data, {\n readers: {\n json: DataReader\n },\n Query: Query,\n DataSource: DataSource,\n HierarchicalDataSource: HierarchicalDataSource,\n Node: Node,\n Comparer: Comparer,\n ObservableObject: ObservableObject,\n ObservableArray: ObservableArray,\n LazyObservableArray: LazyObservableArray,\n LocalTransport: LocalTransport,\n RemoteTransport: RemoteTransport,\n Cache: Cache,\n DataReader: DataReader,\n Model: Model,\n Buffer: Buffer,\n BatchBuffer: BatchBuffer\n });\n })(window.kendo.jQuery);\n var kendo$V = kendo;\n\n var __meta__$S = {\n id: \"binder\",\n name: \"MVVM\",\n category: \"framework\",\n description: \"Model View ViewModel (MVVM) is a design pattern which helps developers separate the Model (the data) from the View (the UI).\",\n depends: [ \"core\", \"data\" ]\n };\n\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n encode = kendo.htmlEncode,\n Observable = kendo.Observable,\n ObservableObject = kendo.data.ObservableObject,\n ObservableArray = kendo.data.ObservableArray,\n toString = {}.toString,\n binders = {},\n Class = kendo.Class,\n VALUE = \"value\",\n SOURCE = \"source\",\n EVENTS = \"events\",\n CHECKED = \"checked\",\n CSS = \"css\",\n deleteExpando = true,\n FUNCTION = \"function\",\n CHANGE = \"change\";\n\n (function() {\n var a = document.createElement(\"a\");\n\n try {\n delete a.test;\n } catch (e) {\n deleteExpando = false;\n }\n })();\n\n var Binding = Observable.extend( {\n init: function(parents, path) {\n var that = this;\n\n Observable.fn.init.call(that);\n\n that.source = parents[0];\n that.parents = parents;\n that.path = path;\n that.dependencies = {};\n that.dependencies[path] = true;\n that.observable = that.source instanceof Observable;\n\n that._access = function(e) {\n that.dependencies[e.field] = true;\n };\n\n if (that.observable) {\n that._change = function(e) {\n that.change(e);\n };\n\n that.source.bind(CHANGE, that._change);\n }\n },\n\n _parents: function() {\n var parents = this.parents;\n var value = this.get();\n\n if (value && typeof value.parent == \"function\") {\n var parent = value.parent();\n\n if ($.inArray(parent, parents) < 0) {\n parents = [parent].concat(parents);\n }\n }\n\n return parents;\n },\n\n change: function(e) {\n var dependency,\n ch,\n field = e.field,\n that = this;\n\n if (that.path === \"this\") {\n that.trigger(CHANGE, e);\n } else {\n for (dependency in that.dependencies) {\n if (dependency.indexOf(field) === 0) {\n ch = dependency.charAt(field.length);\n\n if (!ch || ch === \".\" || ch === \"[\") {\n that.trigger(CHANGE, e);\n break;\n }\n }\n }\n }\n },\n\n start: function(source) {\n source.bind(\"get\", this._access);\n },\n\n stop: function(source) {\n source.unbind(\"get\", this._access);\n },\n\n get: function() {\n\n var that = this,\n source = that.source,\n index = 0,\n path = that.path,\n result = source;\n\n if (!that.observable) {\n return result;\n }\n\n that.start(that.source);\n\n result = source.get(path);\n\n // Traverse the observable hierarchy if the binding is not resolved at the current level.\n while (result === undefined$1 && source) {\n\n source = that.parents[++index];\n\n if (source instanceof ObservableObject) {\n result = source.get(path);\n }\n }\n\n // second pass try to get the parent from the object hierarchy\n if (result === undefined$1) {\n source = that.source; //get the initial source\n\n while (result === undefined$1 && source) {\n source = source.parent();\n\n if (source instanceof ObservableObject) {\n result = source.get(path);\n }\n }\n }\n\n // If the result is a function - invoke it\n if (typeof result === \"function\") {\n index = path.lastIndexOf(\".\");\n\n // If the function is a member of a nested observable object make that nested observable the context (this) of the function\n if (index > 0) {\n source = source.get(path.substring(0, index));\n }\n\n // Invoke the function\n that.start(source);\n\n if (source !== that.source) {\n result = result.call(source, that.source);\n } else {\n result = result.call(source);\n }\n\n that.stop(source);\n }\n\n // If the binding is resolved by a parent object\n if (source && source !== that.source) {\n\n that.currentSource = source; // save parent object\n\n // Listen for changes in the parent object\n source.unbind(CHANGE, that._change)\n .bind(CHANGE, that._change);\n }\n\n that.stop(that.source);\n\n return result;\n },\n\n set: function(value) {\n var source = this.currentSource || this.source;\n\n var field = kendo.getter(this.path)(source);\n\n if (typeof field === \"function\") {\n if (source !== this.source) {\n field.call(source, this.source, value);\n } else {\n field.call(source, value);\n }\n } else {\n source.set(this.path, value);\n }\n },\n\n destroy: function() {\n if (this.observable) {\n this.source.unbind(CHANGE, this._change);\n if (this.currentSource) {\n this.currentSource.unbind(CHANGE, this._change);\n }\n }\n\n this.unbind();\n }\n });\n\n var EventBinding = Binding.extend( {\n get: function() {\n var source = this.source,\n path = this.path,\n index = 0,\n handler;\n\n handler = source.get(path);\n\n while (!handler && source) {\n source = this.parents[++index];\n\n if (source instanceof ObservableObject) {\n handler = source.get(path);\n }\n }\n\n if (!handler) {\n return;\n }\n\n return handler.bind(source);\n }\n });\n\n var TemplateBinding = Binding.extend( {\n init: function(source, path, template) {\n var that = this;\n\n Binding.fn.init.call(that, source, path);\n\n that.template = template;\n },\n\n render: function(value) {\n var html;\n\n this.start(this.source);\n\n html = kendo.render(this.template, value);\n\n this.stop(this.source);\n\n return html;\n }\n });\n\n var Binder = Class.extend({\n init: function(element, bindings, options) {\n this.element = element;\n this.bindings = bindings;\n this.options = options;\n },\n\n bind: function(binding, attribute) {\n var that = this;\n\n binding = attribute ? binding[attribute] : binding;\n\n binding.bind(CHANGE, function(e) {\n that.refresh(attribute || e);\n });\n\n that.refresh(attribute);\n },\n\n destroy: function() {\n }\n });\n\n var TypedBinder = Binder.extend({\n dataType: function() {\n var dataType = this.element.getAttribute(\"data-\" + kendo.ns + \"type\") || this.element.type || \"text\";\n return dataType.toLowerCase();\n },\n\n parsedValue: function() {\n return this._parseValue(this.element.value, this.dataType());\n },\n\n _parseValue: function(value, dataType) {\n if (dataType == \"date\") {\n value = kendo.parseDate(value, \"yyyy-MM-dd\");\n } else if (dataType == \"datetime-local\") {\n value = kendo.parseDate(value, [\"yyyy-MM-ddTHH:mm:ss\", \"yyyy-MM-ddTHH:mm\"] );\n } else if (dataType == \"number\") {\n value = kendo.parseFloat(value);\n } else if (dataType == \"boolean\") {\n value = value.toLowerCase();\n if (kendo.parseFloat(value) !== null) {\n value = Boolean(kendo.parseFloat(value));\n } else {\n value = (value.toLowerCase() === \"true\");\n }\n }\n return value;\n }\n });\n\n binders.attr = Binder.extend({\n refresh: function(key) {\n this.element.setAttribute(key, this.bindings.attr[key].get());\n }\n });\n\n binders.css = Binder.extend({\n init: function(element, bindings, options) {\n Binder.fn.init.call(this, element, bindings, options);\n this.classes = {};\n },\n refresh: function(className) {\n var element = $(this.element),\n binding = this.bindings.css[className],\n hasClass = this.classes[className] = binding.get();\n if (hasClass) {\n element.addClass(className);\n } else {\n element.removeClass(className);\n }\n }\n });\n\n binders.style = Binder.extend({\n refresh: function(key) {\n this.element.style[key] = this.bindings.style[key].get() || \"\";\n }\n });\n\n binders.enabled = Binder.extend({\n refresh: function() {\n if (this.bindings.enabled.get()) {\n this.element.removeAttribute(\"disabled\");\n } else {\n this.element.setAttribute(\"disabled\", \"disabled\");\n }\n }\n });\n\n binders.readonly = Binder.extend({\n refresh: function() {\n if (this.bindings.readonly.get()) {\n this.element.setAttribute(\"readonly\", \"readonly\");\n } else {\n this.element.removeAttribute(\"readonly\");\n }\n }\n });\n\n binders.disabled = Binder.extend({\n refresh: function() {\n if (this.bindings.disabled.get()) {\n this.element.setAttribute(\"disabled\", \"disabled\");\n } else {\n this.element.removeAttribute(\"disabled\");\n }\n }\n });\n\n binders.events = Binder.extend({\n init: function(element, bindings, options) {\n Binder.fn.init.call(this, element, bindings, options);\n this.handlers = {};\n },\n\n refresh: function(key) {\n var element = $(this.element),\n binding = this.bindings.events[key],\n handler = this.handlers[key];\n\n if (handler) {\n element.off(key, handler);\n }\n\n handler = this.handlers[key] = binding.get();\n\n element.on(key, binding.source, handler);\n },\n\n destroy: function() {\n var element = $(this.element),\n handler;\n\n for (handler in this.handlers) {\n element.off(handler, this.handlers[handler]);\n }\n }\n });\n\n binders.text = Binder.extend({\n refresh: function() {\n var text = this.bindings.text.get();\n var dataFormat = this.element.getAttribute(\"data-\" + kendo.ns + \"format\") || \"\";\n if (text == null) {\n text = \"\";\n }\n\n $(this.element).text(kendo.toString(text, dataFormat));\n }\n });\n\n binders.visible = Binder.extend({\n refresh: function() {\n if (this.bindings.visible.get()) {\n this.element.style.display = \"\";\n } else {\n this.element.style.display = \"none\";\n }\n }\n });\n\n binders.invisible = Binder.extend({\n refresh: function() {\n if (!this.bindings.invisible.get()) {\n this.element.style.display = \"\";\n } else {\n this.element.style.display = \"none\";\n }\n }\n });\n\n binders.html = Binder.extend({\n refresh: function() {\n this.element.innerHTML = this.bindings.html.get();\n }\n });\n\n binders.value = TypedBinder.extend({\n init: function(element, bindings, options) {\n TypedBinder.fn.init.call(this, element, bindings, options);\n\n this._change = this.change.bind(this);\n this.eventName = options.valueUpdate || CHANGE;\n\n $(this.element).on(this.eventName, this._change);\n\n this._initChange = false;\n },\n\n change: function() {\n this._initChange = this.eventName != CHANGE;\n\n this.bindings[VALUE].set(this.parsedValue());\n\n this._initChange = false;\n },\n\n refresh: function() {\n if (!this._initChange) {\n var value = this.bindings[VALUE].get();\n\n if (value == null) {\n value = \"\";\n }\n\n var type = this.dataType();\n\n if (type == \"date\") {\n value = kendo.toString(value, \"yyyy-MM-dd\");\n } else if (type == \"datetime-local\") {\n value = kendo.toString(value, \"yyyy-MM-ddTHH:mm:ss\");\n }\n\n this.element.value = value;\n }\n\n this._initChange = false;\n },\n\n destroy: function() {\n $(this.element).off(this.eventName, this._change);\n }\n });\n\n binders.source = Binder.extend({\n init: function(element, bindings, options) {\n Binder.fn.init.call(this, element, bindings, options);\n\n var source = this.bindings.source.get();\n\n if (source instanceof kendo.data.DataSource && options.autoBind !== false) {\n source.fetch();\n }\n },\n\n refresh: function(e) {\n var that = this,\n source = that.bindings.source.get();\n\n if (source instanceof ObservableArray || source instanceof kendo.data.DataSource) {\n e = e || {};\n\n if (e.action == \"add\") {\n that.add(e.index, e.items);\n } else if (e.action == \"remove\") {\n that.remove(e.index, e.items);\n } else if (e.action != \"itemchange\") {\n that.render();\n }\n } else {\n that.render();\n }\n },\n\n container: function() {\n var element = this.element;\n\n if (element.nodeName.toLowerCase() == \"table\") {\n if (!element.tBodies[0]) {\n element.appendChild(document.createElement(\"tbody\"));\n }\n element = element.tBodies[0];\n }\n\n return element;\n },\n\n template: function() {\n var options = this.options,\n template = options.template,\n nodeName = this.container().nodeName.toLowerCase();\n\n if (!template) {\n if (nodeName == \"select\") {\n if (options.valueField || options.textField) {\n template = (data) => {\n const valueAttr = kendo.getter(options.valueField || options.textField)(data);\n const innerText = kendo.getter(options.textField || options.valueField)(data);\n return ``;\n };\n } else {\n template = (data) => ``;\n }\n } else if (nodeName == \"tbody\") {\n template = (data) => `${encode(data)}`;\n } else if (nodeName == \"ul\" || nodeName == \"ol\") {\n template = (data) => `
  • ${encode(data)}
  • `;\n } else {\n template = (data) => `${encode(data)}`;\n }\n template = kendo.template(template);\n }\n\n return template;\n },\n\n add: function(index, items) {\n var element = this.container(),\n parents,\n idx,\n length,\n child,\n clone = element.cloneNode(false),\n reference = element.children[index];\n\n $(clone).html(kendo.render(this.template(), items));\n\n if (clone.children.length) {\n parents = this.bindings.source._parents();\n\n for (idx = 0, length = items.length; idx < length; idx++) {\n child = clone.children[0];\n element.insertBefore(child, reference || null);\n bindElement(child, items[idx], this.options.roles, [items[idx]].concat(parents));\n }\n }\n },\n\n remove: function(index, items) {\n var idx, element = this.container();\n\n for (idx = 0; idx < items.length; idx++) {\n var child = element.children[index];\n unbindElementTree(child, true);\n if (child.parentNode == element) {\n element.removeChild(child);\n }\n }\n },\n\n render: function() {\n var source = this.bindings.source.get(),\n parents,\n idx,\n length,\n element = this.container(),\n template = this.template();\n\n if (source == null) {\n return;\n }\n\n if (source instanceof kendo.data.DataSource) {\n source = source.view();\n }\n\n if (!(source instanceof ObservableArray) && toString.call(source) !== \"[object Array]\") {\n source = [source];\n }\n\n if (this.bindings.template) {\n unbindElementChildren(element, true);\n\n $(element).html(this.bindings.template.render(source));\n\n if (element.children.length) {\n parents = this.bindings.source._parents();\n\n for (idx = 0, length = source.length; idx < length; idx++) {\n bindElement(element.children[idx], source[idx], this.options.roles, [source[idx]].concat(parents));\n }\n }\n } else {\n $(element).html(kendo.render(template, source));\n }\n }\n });\n\n binders.input = {\n checked: TypedBinder.extend({\n init: function(element, bindings, options) {\n TypedBinder.fn.init.call(this, element, bindings, options);\n this._change = this.change.bind(this);\n\n $(this.element).change(this._change);\n },\n\n change: function() {\n var element = this.element;\n var value = this.value();\n\n if (element.type == \"radio\") {\n value = this.parsedValue();\n this.bindings[CHECKED].set(value);\n } else if (element.type == \"checkbox\") {\n var source = this.bindings[CHECKED].get();\n var index;\n\n if (source instanceof ObservableArray) {\n value = this.parsedValue();\n if (value instanceof Date) {\n for (var i = 0; i < source.length; i++) {\n if (source[i] instanceof Date && +source[i] === +value) {\n index = i;\n break;\n }\n }\n } else {\n index = source.indexOf(value);\n }\n if (index > -1) {\n source.splice(index, 1);\n } else {\n source.push(value);\n }\n } else {\n this.bindings[CHECKED].set(value);\n }\n }\n },\n\n refresh: function() {\n var value = this.bindings[CHECKED].get(),\n source = value,\n type = this.dataType(),\n element = this.element;\n\n if (element.type == \"checkbox\") {\n if (source instanceof ObservableArray) {\n var index = -1;\n value = this.parsedValue();\n if (value instanceof Date) {\n for (var i = 0; i < source.length; i++) {\n if (source[i] instanceof Date && +source[i] === +value) {\n index = i;\n break;\n }\n }\n } else {\n index = source.indexOf(value);\n }\n element.checked = (index >= 0);\n } else {\n element.checked = source;\n }\n } else if (element.type == \"radio\") {\n if (type == \"date\") {\n value = kendo.toString(value, \"yyyy-MM-dd\");\n } else if (type == \"datetime-local\") {\n value = kendo.toString(value, \"yyyy-MM-ddTHH:mm:ss\");\n }\n\n if (value !== null && typeof(value) !== \"undefined\" && element.value === value.toString()) {\n element.checked = true;\n } else {\n element.checked = false;\n }\n }\n },\n\n value: function() {\n var element = this.element,\n value = element.value;\n\n if (element.type == \"checkbox\") {\n value = element.checked;\n }\n\n return value;\n },\n destroy: function() {\n $(this.element).off(CHANGE, this._change);\n }\n })\n };\n\n binders.select = {\n source: binders.source.extend({\n refresh: function(e) {\n var that = this,\n source = that.bindings.source.get();\n\n if (source instanceof ObservableArray || source instanceof kendo.data.DataSource) {\n e = e || {};\n if (e.action == \"add\") {\n that.add(e.index, e.items);\n } else if (e.action == \"remove\") {\n that.remove(e.index, e.items);\n } else if (e.action == \"itemchange\" || e.action === undefined$1) {\n that.render();\n if (that.bindings.value) {\n if (that.bindings.value) {\n var val = retrievePrimitiveValues(that.bindings.value.get(), $(that.element).data(\"valueField\"));\n if (val === null) {\n that.element.selectedIndex = -1;\n } else {\n that.element.value = val;\n }\n }\n }\n }\n } else {\n that.render();\n }\n }\n }),\n value: TypedBinder.extend({\n init: function(target, bindings, options) {\n TypedBinder.fn.init.call(this, target, bindings, options);\n\n this._change = this.change.bind(this);\n $(this.element).change(this._change);\n },\n\n parsedValue: function() {\n var dataType = this.dataType();\n var values = [];\n var value, option, idx, length;\n for (idx = 0, length = this.element.options.length; idx < length; idx++) {\n option = this.element.options[idx];\n\n if (option.selected) {\n value = option.attributes.value;\n\n if (value && value.specified) {\n value = option.value;\n } else {\n value = option.text;\n }\n\n values.push(this._parseValue(value, dataType));\n }\n }\n return values;\n },\n\n change: function() {\n var values = [],\n element = this.element,\n source,\n field = this.options.valueField || this.options.textField,\n valuePrimitive = this.options.valuePrimitive,\n option,\n valueIndex,\n value,\n idx,\n length;\n\n for (idx = 0, length = element.options.length; idx < length; idx++) {\n option = element.options[idx];\n\n if (option.selected) {\n value = option.attributes.value;\n\n if (value && value.specified) {\n value = option.value;\n } else {\n value = option.text;\n }\n\n if (field) {\n values.push(value);\n } else {\n values.push(this._parseValue(value, this.dataType()));\n }\n\n }\n }\n\n if (field) {\n source = this.bindings.source.get();\n if (source instanceof kendo.data.DataSource) {\n source = source.view();\n }\n\n for (valueIndex = 0; valueIndex < values.length; valueIndex++) {\n for (idx = 0, length = source.length; idx < length; idx++) {\n var sourceValue = source[idx].get(field);\n var match = (String(sourceValue) === values[valueIndex]);\n if (match) {\n values[valueIndex] = source[idx];\n break;\n }\n }\n }\n }\n\n value = this.bindings[VALUE].get();\n if (value instanceof ObservableArray) {\n value.splice.apply(value, [0, value.length].concat(values));\n } else if (!valuePrimitive && (value instanceof ObservableObject || value === null || value === undefined$1 || !field)) {\n this.bindings[VALUE].set(values[0]);\n } else {\n this.bindings[VALUE].set(values[0].get(field));\n }\n },\n refresh: function() {\n var optionIndex,\n element = this.element,\n options = element.options,\n value = this.bindings[VALUE].get(),\n values = value,\n field = this.options.valueField || this.options.textField,\n found = false,\n type = this.dataType(),\n optionValue;\n\n if (!(values instanceof ObservableArray)) {\n values = new ObservableArray([value]);\n }\n\n element.selectedIndex = -1;\n\n for (var valueIndex = 0; valueIndex < values.length; valueIndex++) {\n value = values[valueIndex];\n\n\n if (field && value instanceof ObservableObject) {\n value = value.get(field);\n }\n\n if (type == \"date\") {\n value = kendo.toString(values[valueIndex], \"yyyy-MM-dd\");\n } else if (type == \"datetime-local\") {\n value = kendo.toString(values[valueIndex], \"yyyy-MM-ddTHH:mm:ss\");\n }\n\n for (optionIndex = 0; optionIndex < options.length; optionIndex++) {\n optionValue = options[optionIndex].value;\n\n if (optionValue === \"\" && value !== \"\") {\n optionValue = options[optionIndex].text;\n }\n\n if (value != null && optionValue == value.toString()) {\n options[optionIndex].selected = true;\n found = true;\n }\n }\n }\n },\n destroy: function() {\n $(this.element).off(CHANGE, this._change);\n }\n })\n };\n\n function dataSourceBinding(bindingName, fieldName, setter) {\n return Binder.extend({\n init: function(widget, bindings, options) {\n var that = this;\n\n Binder.fn.init.call(that, widget.element[0], bindings, options);\n\n that.widget = widget;\n that._dataBinding = that.dataBinding.bind(that);\n that._dataBound = that.dataBound.bind(that);\n that._itemChange = that.itemChange.bind(that);\n },\n\n itemChange: function(e) {\n bindElement(e.item[0], e.data, this._ns(e.ns), [e.data].concat(this.bindings[bindingName]._parents()));\n },\n\n dataBinding: function(e) {\n var idx,\n length,\n widget = this.widget,\n items = e.removedItems || widget.items();\n\n for (idx = 0, length = items.length; idx < length; idx++) {\n unbindElementTree(items[idx], false);\n }\n },\n\n _ns: function(ns) {\n ns = ns || kendo.ui;\n var all = [ kendo.ui, kendo.dataviz.ui, kendo.mobile.ui ];\n all.splice($.inArray(ns, all), 1);\n all.unshift(ns);\n\n return kendo.rolesFromNamespaces(all);\n },\n\n dataBound: function(e) {\n var idx,\n length,\n widget = this.widget,\n items = e.addedItems || widget.items(),\n dataSource = widget[fieldName],\n view,\n parents,\n hds = kendo.data.HierarchicalDataSource;\n\n if (hds && dataSource instanceof hds) {\n // suppress binding of HDS items, because calling view() on root\n // will return only root items, and widget.items() returns all items\n return;\n }\n\n if (items.length) {\n view = e.addedDataItems || dataSource.flatView();\n parents = this.bindings[bindingName]._parents();\n\n for (idx = 0, length = view.length; idx < length; idx++) {\n if (items[idx]) {\n bindElement(items[idx], view[idx], this._ns(e.ns), [view[idx]].concat(parents));\n }\n }\n }\n },\n\n refresh: function(e) {\n var that = this,\n source,\n widget = that.widget,\n select, multiselect, dropdowntree;\n\n e = e || {};\n\n if (!e.action) {\n that.destroy();\n\n widget.bind(\"dataBinding\", that._dataBinding);\n widget.bind(\"dataBound\", that._dataBound);\n widget.bind(\"itemChange\", that._itemChange);\n\n source = that.bindings[bindingName].get();\n\n if (widget[fieldName] instanceof kendo.data.DataSource && widget[fieldName] != source) {\n if (source instanceof kendo.data.DataSource) {\n widget[setter](source);\n } else if (source && source._dataSource) {\n widget[setter](source._dataSource);\n } else {\n select = kendo.ui.Select && widget instanceof kendo.ui.Select;\n multiselect = kendo.ui.MultiSelect && widget instanceof kendo.ui.MultiSelect;\n dropdowntree = kendo.ui.DropDownTree && widget instanceof kendo.ui.DropDownTree;\n\n if (!dropdowntree) {\n widget[fieldName].data(source);\n } else {\n widget.treeview[fieldName].data(source);\n }\n\n if (that.bindings.value && (select || multiselect)) {\n widget.value(retrievePrimitiveValues(that.bindings.value.get(), widget.options.dataValueField));\n }\n }\n }\n }\n },\n\n destroy: function() {\n var widget = this.widget;\n\n widget.unbind(\"dataBinding\", this._dataBinding);\n widget.unbind(\"dataBound\", this._dataBound);\n widget.unbind(\"itemChange\", this._itemChange);\n }\n });\n }\n\n binders.widget = {\n events: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n this.widget = widget;\n this.handlers = {};\n },\n\n refresh: function(key) {\n var binding = this.bindings.events[key],\n handler = this.handlers[key];\n\n if (handler) {\n this.widget.unbind(key, handler);\n }\n\n handler = binding.get();\n\n this.handlers[key] = function(e) {\n e.data = binding.source;\n\n handler(e);\n\n if (e.data === binding.source) {\n delete e.data;\n }\n };\n\n this.widget.bind(key, this.handlers[key]);\n },\n\n destroy: function() {\n var handler;\n\n for (handler in this.handlers) {\n this.widget.unbind(handler, this.handlers[handler]);\n }\n }\n }),\n\n checked: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n this._change = this.change.bind(this);\n this.widget.bind(CHANGE, this._change);\n },\n change: function() {\n this.bindings[CHECKED].set(this.value());\n },\n\n refresh: function() {\n var val = this.bindings[CHECKED].get();\n\n if (this.element.type === \"radio\") {\n if (val !== undefined$1) {\n this.widget.check(val.toString() === this.value());\n } else {\n this.widget.check(false);\n }\n } else {\n this.widget.check(val === true);\n }\n },\n\n value: function() {\n var element = this.element,\n value = element.value;\n\n if (value == \"on\" || value == \"off\" || this.element.type == \"checkbox\") {\n value = element.checked;\n }\n\n return value;\n },\n\n destroy: function() {\n this.widget.unbind(CHANGE, this._change);\n }\n }),\n\n start: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n this._change = this.change.bind(this);\n this.widget = widget;\n this.widget.bind(CHANGE, this._change);\n },\n\n change: function() {\n this.bindings.start.set(this.widget.range().start);\n },\n\n refresh: function() {\n var that = this;\n var start = this.bindings.start.get();\n var end = that.widget._range ? that.widget._range.end : null;\n this.widget.range({ start: start, end: end });\n },\n\n destroy: function() {\n this.widget.unbind(CHANGE, this._change);\n }\n }),\n\n end: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n this._change = this.change.bind(this);\n this.widget = widget;\n this.widget.bind(CHANGE, this._change);\n },\n\n change: function() {\n this.bindings.end.set(this.widget.range().end);\n },\n\n refresh: function() {\n var that = this;\n var end = this.bindings.end.get();\n var start = that.widget._range ? that.widget._range.start : null;\n this.widget.range({ start: start, end: end });\n },\n\n destroy: function() {\n this.widget.unbind(CHANGE, this._change);\n }\n }),\n\n visible: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n },\n\n refresh: function() {\n var visible = this.bindings.visible.get();\n this.widget.wrapper[0].style.display = visible ? \"\" : \"none\";\n }\n }),\n\n invisible: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n },\n\n refresh: function() {\n var invisible = this.bindings.invisible.get();\n this.widget.wrapper[0].style.display = invisible ? \"none\" : \"\";\n }\n }),\n\n floatingLabel: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n if (!widget.floatingLabel) {\n return;\n }\n\n widget.floatingLabel.refresh();\n }\n }),\n\n enabled: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n this.readonly = this.element.readOnly;\n },\n\n refresh: function() {\n if (this.widget.enable) {\n this.widget.enable(this.bindings.enabled.get());\n }\n if (this.readonly && this.widget.readonly) {\n this.widget.readonly(this.readonly);\n }\n }\n }),\n\n disabled: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n },\n\n refresh: function() {\n if (this.widget.enable) {\n this.widget.enable(!this.bindings.disabled.get());\n }\n }\n }),\n\n source: dataSourceBinding(\"source\", \"dataSource\", \"setDataSource\"),\n\n value: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n this._change = this.change.bind(this);\n this.widget.first(CHANGE, this._change);\n\n var value = this.bindings.value.get();\n\n this._valueIsObservableObject = !options.valuePrimitive && (value == null || value instanceof ObservableObject);\n this._valueIsObservableArray = value instanceof ObservableArray;\n this._initChange = false;\n },\n\n _source: function() {\n var source;\n\n if (this.widget.dataItem) {\n source = this.widget.dataItem();\n if (source && source instanceof ObservableObject) {\n return [source];\n }\n }\n\n if (this.bindings.source) {\n source = this.bindings.source.get();\n }\n\n if (!source || source instanceof kendo.data.DataSource) {\n source = this.widget.dataSource.flatView();\n }\n\n return source;\n },\n\n change: function() {\n var value = this.widget.value(),\n field = this.options.dataValueField || this.options.dataTextField,\n isArray = toString.call(value) === \"[object Array]\",\n isObservableObject = this._valueIsObservableObject,\n valueIndex, valueLength, values = [],\n sourceItem, sourceValue,\n idx, length, source;\n\n this._initChange = true;\n\n if (field) {\n\n if (value === \"\" && (isObservableObject || this.options.valuePrimitive)) {\n value = null;\n } else {\n source = this._source();\n\n if (isArray) {\n valueLength = value.length;\n values = value.slice(0);\n }\n\n for (idx = 0, length = source.length; idx < length; idx++) {\n sourceItem = source[idx];\n sourceValue = sourceItem.get(field);\n\n if (isArray) {\n for (valueIndex = 0; valueIndex < valueLength; valueIndex++) {\n if (sourceValue == values[valueIndex]) {\n values[valueIndex] = sourceItem;\n break;\n }\n }\n } else if (sourceValue == value) {\n value = isObservableObject ? sourceItem : sourceValue;\n break;\n }\n }\n\n if (values[0]) {\n if (this._valueIsObservableArray) {\n value = values;\n } else if (isObservableObject || !field) {\n value = values[0];\n } else {\n value = values[0].get(field);\n }\n }\n }\n }\n\n this.bindings.value.set(value);\n this._initChange = false;\n },\n\n refresh: function() {\n if (!this._initChange) {\n var widget = this.widget;\n var options = widget.options;\n var textField = options.dataTextField;\n var valueField = options.dataValueField || textField;\n var value = this.bindings.value.get();\n var text = options.text || \"\";\n var idx = 0, length;\n var values = [];\n\n if (value === undefined$1) {\n value = null;\n }\n\n if (valueField) {\n if (value instanceof ObservableArray) {\n for (length = value.length; idx < length; idx++) {\n values[idx] = value[idx].get(valueField);\n }\n value = values;\n } else if (value instanceof ObservableObject) {\n text = value.get(textField);\n value = value.get(valueField);\n }\n }\n\n if (options.autoBind === false && !options.cascadeFrom && widget.listView && !widget.listView.bound()) {\n if (textField === valueField && !text) {\n text = value;\n }\n\n if (!text && (value || value === 0) && options.valuePrimitive) {\n widget.value(value);\n } else {\n widget._preselect(value, text);\n }\n } else {\n widget.value(value);\n }\n }\n\n this._initChange = false;\n },\n\n destroy: function() {\n this.widget.unbind(CHANGE, this._change);\n }\n }),\n dropdowntree: {\n value: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n this._change = this.change.bind(this);\n this.widget.first(CHANGE, this._change);\n this._initChange = false;\n },\n\n change: function() {\n var that = this,\n oldValues = that.bindings[VALUE].get(),\n valuePrimitive = that.options.valuePrimitive,\n selectedNode = that.widget.treeview.select(),\n nonPrimitiveValues = that.widget._isMultipleSelection() ? that.widget._getAllChecked() : (that.widget.treeview.dataItem(selectedNode) || that.widget.value()),\n newValues = (valuePrimitive || that.widget.options.autoBind === false) ? that.widget.value() : nonPrimitiveValues;\n\n var field = this.options.dataValueField || this.options.dataTextField;\n\n newValues = newValues.slice ? newValues.slice(0) : newValues;\n\n that._initChange = true;\n\n if (oldValues instanceof ObservableArray) {\n var remove = [];\n var newLength = newValues.length;\n var i = 0, j = 0;\n var old = oldValues[i];\n var same = false;\n var removeIndex;\n var newValue;\n var found;\n\n while (old !== undefined$1) {\n found = false;\n for (j = 0; j < newLength; j++) {\n if (valuePrimitive) {\n same = newValues[j] == old;\n } else {\n newValue = newValues[j];\n\n newValue = newValue.get ? newValue.get(field) : newValue;\n same = newValue == (old.get ? old.get(field) : old);\n }\n\n if (same) {\n newValues.splice(j, 1);\n newLength -= 1;\n found = true;\n break;\n }\n }\n\n if (!found) {\n remove.push(old);\n arraySplice(oldValues, i, 1);\n removeIndex = i;\n } else {\n i += 1;\n }\n\n old = oldValues[i];\n }\n\n arraySplice(oldValues, oldValues.length, 0, newValues);\n\n if (remove.length) {\n oldValues.trigger(\"change\", {\n action: \"remove\",\n items: remove,\n index: removeIndex\n });\n }\n\n if (newValues.length) {\n oldValues.trigger(\"change\", {\n action: \"add\",\n items: newValues,\n index: oldValues.length - 1\n });\n }\n } else {\n that.bindings[VALUE].set(newValues);\n }\n\n that._initChange = false;\n },\n\n refresh: function() {\n if (!this._initChange) {\n var options = this.options,\n widget = this.widget,\n field = options.dataValueField || options.dataTextField,\n value = this.bindings.value.get(),\n data = value,\n idx = 0, length,\n values = [],\n selectedValue;\n\n if (field) {\n if (value instanceof ObservableArray) {\n for (length = value.length; idx < length; idx++) {\n selectedValue = value[idx];\n values[idx] = selectedValue.get ? selectedValue.get(field) : selectedValue;\n }\n value = values;\n } else if (value instanceof ObservableObject) {\n value = value.get(field);\n }\n }\n if (options.autoBind === false && options.valuePrimitive !== true) {\n widget._preselect(data, value);\n } else {\n widget.value(value);\n }\n }\n },\n\n destroy: function() {\n this.widget.unbind(CHANGE, this._change);\n }\n })\n },\n gantt: {\n dependencies: dataSourceBinding(\"dependencies\", \"dependencies\", \"setDependenciesDataSource\")\n },\n\n multiselect: {\n value: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n this._change = this.change.bind(this);\n this.widget.first(CHANGE, this._change);\n this._initChange = false;\n },\n\n change: function() {\n var that = this,\n oldValues = that.bindings[VALUE].get(),\n valuePrimitive = that.options.valuePrimitive,\n newValues = valuePrimitive ? that.widget.value() : that.widget.dataItems();\n\n var field = this.options.dataValueField || this.options.dataTextField;\n\n newValues = newValues.slice(0);\n\n that._initChange = true;\n\n if (oldValues instanceof ObservableArray) {\n var remove = [];\n\n var newLength = newValues.length;\n\n var i = 0, j = 0;\n var old = oldValues[i];\n var same = false;\n var removeIndex;\n var newValue;\n var found;\n\n while (old !== undefined$1) {\n found = false;\n for (j = 0; j < newLength; j++) {\n if (valuePrimitive) {\n same = newValues[j] == old;\n } else {\n newValue = newValues[j];\n\n newValue = newValue.get ? newValue.get(field) : newValue;\n same = newValue == (old.get ? old.get(field) : old);\n }\n\n if (same) {\n newValues.splice(j, 1);\n newLength -= 1;\n found = true;\n break;\n }\n }\n\n if (!found) {\n remove.push(old);\n arraySplice(oldValues, i, 1);\n removeIndex = i;\n } else {\n i += 1;\n }\n\n old = oldValues[i];\n }\n\n arraySplice(oldValues, oldValues.length, 0, newValues);\n\n if (remove.length) {\n oldValues.trigger(\"change\", {\n action: \"remove\",\n items: remove,\n index: removeIndex\n });\n }\n\n if (newValues.length) {\n oldValues.trigger(\"change\", {\n action: \"add\",\n items: newValues,\n index: oldValues.length - 1\n });\n }\n } else {\n that.bindings[VALUE].set(newValues);\n }\n\n that._initChange = false;\n },\n\n refresh: function() {\n if (!this._initChange) {\n var options = this.options,\n widget = this.widget,\n field = options.dataValueField || options.dataTextField,\n value = this.bindings.value.get(),\n data = value,\n idx = 0, length,\n values = [],\n selectedValue;\n\n if (value === undefined$1) {\n value = null;\n }\n\n if (field) {\n if (value instanceof ObservableArray) {\n for (length = value.length; idx < length; idx++) {\n selectedValue = value[idx];\n values[idx] = selectedValue.get ? selectedValue.get(field) : selectedValue;\n }\n value = values;\n } else if (value instanceof ObservableObject) {\n value = value.get(field);\n }\n }\n\n if (options.autoBind === false && options.valuePrimitive !== true && !widget._isBound()) {\n widget._preselect(data, value);\n } else {\n widget.value(value);\n }\n }\n },\n\n destroy: function() {\n this.widget.unbind(CHANGE, this._change);\n }\n\n })\n },\n scheduler: {\n source: dataSourceBinding(\"source\", \"dataSource\", \"setDataSource\").extend({\n dataBound: function(e) {\n var idx;\n var length;\n var widget = this.widget;\n var elements = e.addedItems || widget.items();\n var data, parents;\n\n if (elements.length) {\n data = e.addedDataItems || widget.dataItems();\n parents = this.bindings.source._parents();\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n bindElement(elements[idx], data[idx], this._ns(e.ns), [data[idx]].concat(parents));\n }\n }\n }\n })\n },\n\n grid: {\n source: dataSourceBinding(\"source\", \"dataSource\", \"setDataSource\").extend({\n dataBound: function(e) {\n var idx,\n length,\n widget = this.widget,\n elements = e.addedItems || widget.items(),\n parents,\n data;\n\n if (elements.length) {\n data = e.addedDataItems || widget.dataItems();\n parents = this.bindings.source._parents();\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n bindElement(elements[idx], data[idx], this._ns(e.ns), [data[idx]].concat(parents));\n }\n }\n }\n })\n },\n\n badge: {\n text: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n },\n refresh: function() {\n var text = this.bindings.text.get();\n\n if (text == null) {\n text = \"\";\n }\n this.widget.text(text);\n }\n })\n }\n };\n\n var arraySplice = function(arr, idx, remove, add) {\n add = add || [];\n remove = remove || 0;\n\n var addLength = add.length;\n var oldLength = arr.length;\n\n var shifted = [].slice.call(arr, idx + remove);\n var shiftedLength = shifted.length;\n var index;\n\n if (addLength) {\n addLength = idx + addLength;\n index = 0;\n\n for (; idx < addLength; idx++) {\n arr[idx] = add[index];\n index++;\n }\n\n arr.length = addLength;\n } else if (remove) {\n arr.length = idx;\n\n remove += idx;\n while (idx < remove) {\n delete arr[--remove];\n }\n }\n\n if (shiftedLength) {\n shiftedLength = idx + shiftedLength;\n index = 0;\n\n for (; idx < shiftedLength; idx++) {\n arr[idx] = shifted[index];\n index++;\n }\n\n arr.length = shiftedLength;\n }\n\n idx = arr.length;\n\n while (idx < oldLength) {\n delete arr[idx];\n idx++;\n }\n };\n\n var BindingTarget = Class.extend( {\n init: function(target, options) {\n this.target = target;\n this.options = options;\n this.toDestroy = [];\n },\n\n bind: function(bindings) {\n var key,\n hasValue,\n hasSource,\n hasEvents,\n hasChecked,\n hasCss,\n widgetBinding = this instanceof WidgetBindingTarget,\n specificBinders = this.binders();\n\n for (key in bindings) {\n if (key == VALUE) {\n hasValue = true;\n } else if (key == SOURCE) {\n hasSource = true;\n } else if (key == EVENTS && !widgetBinding) {\n hasEvents = true;\n } else if (key == CHECKED) {\n hasChecked = true;\n } else if (key == CSS) {\n hasCss = true;\n } else {\n this.applyBinding(key, bindings, specificBinders);\n }\n }\n if (hasSource) {\n this.applyBinding(SOURCE, bindings, specificBinders);\n }\n\n if (hasValue) {\n this.applyBinding(VALUE, bindings, specificBinders);\n }\n\n if (hasChecked) {\n this.applyBinding(CHECKED, bindings, specificBinders);\n }\n\n if (hasEvents && !widgetBinding) {\n this.applyBinding(EVENTS, bindings, specificBinders);\n }\n\n if (hasCss && !widgetBinding) {\n this.applyBinding(CSS, bindings, specificBinders);\n }\n\n if (widgetBinding && this.target && this.target.floatingLabel) {\n this.applyBinding(\"floatingLabel\", bindings, specificBinders);\n }\n },\n\n binders: function() {\n return binders[this.target.nodeName.toLowerCase()] || {};\n },\n\n applyBinding: function(name, bindings, specificBinders) {\n var binder = specificBinders[name] || binders[name],\n toDestroy = this.toDestroy,\n attribute,\n binding = bindings[name];\n\n if (binder) {\n binder = new binder(this.target, bindings, this.options);\n\n toDestroy.push(binder);\n\n if (binding instanceof Binding) {\n binder.bind(binding);\n toDestroy.push(binding);\n } else {\n for (attribute in binding) {\n binder.bind(binding, attribute);\n toDestroy.push(binding[attribute]);\n }\n }\n } else if (name !== \"template\") {\n throw new Error(\"The \" + name + \" binding is not supported by the \" + this.target.nodeName.toLowerCase() + \" element\");\n }\n },\n\n destroy: function() {\n var idx,\n length,\n toDestroy = this.toDestroy;\n\n for (idx = 0, length = toDestroy.length; idx < length; idx++) {\n toDestroy[idx].destroy();\n }\n }\n });\n\n var WidgetBindingTarget = BindingTarget.extend( {\n binders: function() {\n return binders.widget[this.target.options.name.toLowerCase()] || {};\n },\n\n applyBinding: function(name, bindings, specificBinders) {\n var binder = specificBinders[name] || binders.widget[name],\n toDestroy = this.toDestroy,\n attribute,\n binding = bindings[name];\n\n if (binder) {\n binder = new binder(this.target, bindings, this.target.options);\n\n toDestroy.push(binder);\n\n\n if (binding instanceof Binding) {\n binder.bind(binding);\n toDestroy.push(binding);\n } else {\n for (attribute in binding) {\n binder.bind(binding, attribute);\n toDestroy.push(binding[attribute]);\n }\n }\n } else {\n throw new Error(\"The \" + name + \" binding is not supported by the \" + this.target.options.name + \" widget\");\n }\n }\n });\n\n function bindingTargetForRole(element, roles) {\n var widget = kendo.initWidget(element, {}, roles);\n\n if (widget) {\n return new WidgetBindingTarget(widget);\n }\n }\n\n var keyValueRegExp = /[A-Za-z0-9_\\-]+:(\\{([^}]*)\\}|[^,}]+)/g,\n whiteSpaceRegExp = /\\s/g;\n\n function parseBindings(bind) {\n var result = {},\n idx,\n length,\n token,\n colonIndex,\n key,\n value,\n tokens;\n\n tokens = bind.match(keyValueRegExp);\n\n for (idx = 0, length = tokens.length; idx < length; idx++) {\n token = tokens[idx];\n colonIndex = token.indexOf(\":\");\n\n key = token.substring(0, colonIndex);\n value = token.substring(colonIndex + 1);\n\n if (value.charAt(0) == \"{\") {\n value = parseBindings(value);\n }\n\n result[key] = value;\n }\n\n return result;\n }\n\n function createBindings(bindings, source, type) {\n var binding,\n result = {};\n\n for (binding in bindings) {\n result[binding] = new type(source, bindings[binding]);\n }\n\n return result;\n }\n\n function bindElement(element, source, roles, parents) {\n\n if (!element || element.getAttribute(\"data-\" + kendo.ns + \"stop\")) {\n return;\n }\n\n var role = element.getAttribute(\"data-\" + kendo.ns + \"role\"),\n idx,\n bind = element.getAttribute(\"data-\" + kendo.ns + \"bind\"),\n childrenCopy = [],\n deep = true,\n bindings,\n options = {},\n target;\n\n parents = parents || [source];\n\n if (role || bind) {\n unbindElement(element, false);\n }\n\n if (role) {\n target = bindingTargetForRole(element, roles);\n }\n\n if (bind) {\n bind = parseBindings(bind.replace(whiteSpaceRegExp, \"\"));\n\n if (!target) {\n options = kendo.parseOptions(element, { textField: \"\", valueField: \"\", template: \"\", valueUpdate: CHANGE, valuePrimitive: false, autoBind: true }, source);\n options.roles = roles;\n target = new BindingTarget(element, options);\n }\n\n target.source = source;\n\n bindings = createBindings(bind, parents, Binding);\n\n if (options.template) {\n bindings.template = new TemplateBinding(parents, \"\", options.template);\n }\n\n if (bindings.click) {\n bind.events = bind.events || {};\n bind.events.click = bind.click;\n bindings.click.destroy();\n delete bindings.click;\n }\n\n if (bindings.source) {\n deep = false;\n }\n\n if (bind.attr) {\n bindings.attr = createBindings(bind.attr, parents, Binding);\n }\n\n if (bind.style) {\n bindings.style = createBindings(bind.style, parents, Binding);\n }\n\n if (bind.events) {\n bindings.events = createBindings(bind.events, parents, EventBinding);\n }\n\n if (bind.css) {\n bindings.css = createBindings(bind.css, parents, Binding);\n }\n\n target.bind(bindings);\n }\n\n if (target) {\n element.kendoBindingTarget = target;\n }\n\n var children = element.children;\n if (deep && children && !element.getAttribute(\"data-\" + kendo.ns + \"stop\")) {\n // https://github.com/telerik/kendo/issues/1240 for the weirdness.\n for (idx = 0; idx < children.length; idx++) {\n childrenCopy[idx] = children[idx];\n }\n\n for (idx = 0; idx < childrenCopy.length; idx++) {\n bindElement(childrenCopy[idx], source, roles, parents);\n }\n }\n }\n\n function bind(dom, object) {\n var idx,\n length,\n node,\n roles = kendo.rolesFromNamespaces([].slice.call(arguments, 2));\n\n object = kendo.observable(object);\n dom = $(dom);\n\n for (idx = 0, length = dom.length; idx < length; idx++) {\n node = dom[idx];\n if (node.nodeType === 1) {\n bindElement(node, object, roles);\n }\n }\n }\n\n function unbindElement(element, destroyWidget) {\n var bindingTarget = element.kendoBindingTarget;\n\n if (bindingTarget) {\n bindingTarget.destroy();\n\n if (deleteExpando) {\n delete element.kendoBindingTarget;\n } else if (element.removeAttribute) {\n element.removeAttribute(\"kendoBindingTarget\");\n } else {\n element.kendoBindingTarget = null;\n }\n }\n\n if (destroyWidget) {\n var widget = kendo.widgetInstance($(element));\n if (widget && typeof widget.destroy === FUNCTION) {\n widget.destroy();\n }\n }\n }\n\n function unbindElementTree(element, destroyWidgets) {\n\n if (!element) {\n return;\n }\n\n unbindElement(element, destroyWidgets);\n\n unbindElementChildren(element, destroyWidgets);\n }\n\n function unbindElementChildren(element, destroyWidgets) {\n var children = element.children;\n\n if (children) {\n for (var idx = 0, length = children.length; idx < length; idx++) {\n unbindElementTree(children[idx], destroyWidgets);\n }\n }\n }\n\n function unbind(dom) {\n var idx, length;\n\n dom = $(dom);\n\n for (idx = 0, length = dom.length; idx < length; idx++ ) {\n unbindElementTree(dom[idx], false);\n }\n }\n\n function notify(widget, namespace) {\n var element = widget.element,\n bindingTarget = element[0].kendoBindingTarget;\n\n if (bindingTarget) {\n bind(element, bindingTarget.source, namespace);\n }\n }\n\n function retrievePrimitiveValues(value, valueField) {\n var values = [];\n var idx = 0;\n var length;\n var item;\n\n if (!valueField) {\n return value;\n }\n\n if (value instanceof ObservableArray) {\n for (length = value.length; idx < length; idx++) {\n item = value[idx];\n values[idx] = item.get ? item.get(valueField) : item[valueField];\n }\n value = values;\n } else if (value instanceof ObservableObject) {\n value = value.get(valueField);\n }\n\n return value;\n }\n\n kendo.unbind = unbind;\n kendo.bind = bind;\n kendo.data.binders = binders;\n kendo.data.Binder = Binder;\n kendo.notify = notify;\n\n kendo.observable = function(object) {\n if (!(object instanceof ObservableObject)) {\n object = new ObservableObject(object);\n }\n\n return object;\n };\n\n kendo.observableHierarchy = function(array) {\n var dataSource = kendo.data.HierarchicalDataSource.create(array);\n\n function recursiveRead(data) {\n var i, children;\n\n for (i = 0; i < data.length; i++) {\n data[i]._initChildren();\n\n children = data[i].children;\n\n children.fetch();\n\n data[i].items = children.data();\n\n recursiveRead(data[i].items);\n }\n }\n\n dataSource.fetch();\n\n recursiveRead(dataSource.data());\n\n dataSource._data._dataSource = dataSource;\n\n return dataSource._data;\n };\n\n })(window.kendo.jQuery);\n var kendo$U = kendo;\n\n var __meta__$R = {\n id: \"view\",\n name: \"View\",\n category: \"framework\",\n description: \"The View class instantiates and handles the events of a certain screen from the application.\",\n depends: [ \"core\", \"binder\", \"fx\" ],\n hidden: false\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n attr = kendo.attr,\n ui = kendo.ui,\n attrValue = kendo.attrValue,\n directiveSelector = kendo.directiveSelector,\n Observable = kendo.Observable,\n Widget = kendo.ui.Widget,\n roleSelector = kendo.roleSelector,\n\n SCRIPT = \"SCRIPT\",\n INIT = \"init\",\n TRANSITION_START = \"transitionStart\",\n TRANSITION_END = \"transitionEnd\",\n SHOW = \"show\",\n HIDE = \"hide\",\n ATTACH = \"attach\",\n DETACH = \"detach\",\n sizzleErrorRegExp = /unrecognized expression/;\n\n var LOAD_START = \"loadStart\";\n var LOAD_COMPLETE = \"loadComplete\";\n var SHOW_START = \"showStart\";\n var SAME_VIEW_REQUESTED = \"sameViewRequested\";\n var VIEW_SHOW = \"viewShow\";\n var VIEW_TYPE_DETERMINED = \"viewTypeDetermined\";\n var AFTER = \"after\";\n var classNames = {\n content: \"k-content\",\n view: \"k-view\",\n stretchedView: \"k-stretched-view\",\n widget: \"k-widget\",\n header: \"k-header\",\n footer: \"k-footer\"\n };\n\n var View = kendo.ui.Widget.extend({\n init: function(content, options) {\n var that = this;\n options = options || {};\n that.id = kendo.guid();\n\n Observable.fn.init.call(that);\n this.options = $.extend({}, this.options, options);\n\n that.content = content;\n\n if (that.options.renderOnInit) {\n Widget.fn.init.call(that, that._createElement(), options);\n }\n\n if (that.options.wrapInSections) {\n that._renderSections();\n }\n\n that.tagName = options.tagName || \"div\";\n that.model = options.model;\n that._wrap = options.wrap !== false;\n this._evalTemplate = options.evalTemplate || false;\n this._useWithBlock = options.useWithBlock;\n that._fragments = {};\n\n that.bind([ INIT, SHOW, HIDE, TRANSITION_START, TRANSITION_END ], options);\n },\n\n options: {\n name: \"View\",\n renderOnInit: false,\n wrapInSections: false,\n detachOnHide: true,\n detachOnDestroy: true\n },\n\n render: function(container) {\n var that = this,\n notInitialized = !that.element;\n\n // The order below matters - kendo.bind should happen when the element is in the DOM, and show should be triggered after init.\n\n if (notInitialized) {\n that.element = that._createElement();\n }\n\n if (container) {\n $(container).append(that.element);\n }\n\n if (notInitialized) {\n kendo.bind(that.element, that.model);\n that.trigger(INIT);\n }\n\n if (container) {\n that._eachFragment(ATTACH);\n that.trigger(SHOW);\n }\n\n return that.element;\n },\n\n clone: function() {\n return new ViewClone(this);\n },\n\n triggerBeforeShow: function() {\n return true;\n },\n\n triggerBeforeHide: function() {\n return true;\n },\n\n showStart: function() {\n var that = this;\n var element = that.render();\n\n if (element) {\n element.css(\"display\", \"\");\n }\n\n this.trigger(SHOW_START, { view: this });\n },\n\n showEnd: function() {\n },\n\n hideEnd: function() {\n this.hide();\n },\n\n beforeTransition: function(type) {\n this.trigger(TRANSITION_START, { type: type });\n },\n\n afterTransition: function(type) {\n this.trigger(TRANSITION_END, { type: type });\n },\n\n hide: function() {\n if (this.options.detachOnHide) {\n this._eachFragment(DETACH);\n $(this.element).detach();\n }\n\n this.trigger(HIDE);\n },\n\n destroy: function() {\n var that = this;\n var element = that.element;\n\n if (element) {\n Widget.fn.destroy.call(that);\n\n kendo.unbind(element);\n kendo.destroy(element);\n\n if (that.options.detachOnDestroy) {\n element.remove();\n }\n }\n },\n\n // ported from mobile view\n purge: function() {\n var that = this;\n\n that.destroy();\n $(that.element).add(that.content).add(that.wrapper).off().remove();\n },\n\n fragments: function(fragments) {\n $.extend(this._fragments, fragments);\n },\n\n _eachFragment: function(methodName) {\n for (var placeholder in this._fragments) {\n this._fragments[placeholder][methodName](this, placeholder);\n }\n },\n\n _createElement: function() {\n var that = this,\n wrapper = \"<\" + that.tagName + \">\",\n element,\n content;\n\n try {\n content = $(document.getElementById(that.content) || that.content); // support passing id without #\n\n if (content[0].tagName === SCRIPT) {\n content = content.html();\n }\n } catch (e) {\n if (sizzleErrorRegExp.test(e.message)) {\n content = that.content;\n }\n }\n\n if (typeof content === \"string\") {\n content = content.replace(/^\\s+|\\s+$/g, '');\n if (that._evalTemplate) {\n content = kendo.template(content, { useWithBlock: that._useWithBlock })(that.model || {});\n }\n\n element = $(wrapper).append(content);\n // drop the wrapper if asked - this seems like the easiest (although not very intuitive) way to avoid messing up templates with questionable content, like this one for instance:\n // \n if (!that._wrap) {\n element = element.contents();\n }\n } else {\n element = content;\n if (that._evalTemplate) {\n var result = $(kendo.template($(\"
    \").append(element.clone(true)).html(), { useWithBlock: that._useWithBlock })(that.model || {}));\n\n // template uses DOM\n if ($.contains(document, element[0])) {\n element.replaceWith(result);\n }\n\n element = result;\n }\n if (that._wrap) {\n element = element.wrapAll(wrapper).parent();\n }\n }\n\n return element;\n },\n\n _renderSections: function() {\n var that = this;\n\n if (that.options.wrapInSections) {\n that._wrapper();\n that._createContent();\n that._createHeader();\n that._createFooter();\n }\n },\n\n _wrapper: function() {\n var that = this;\n var content = that.content;\n\n if (content.is(roleSelector(\"view\"))) {\n that.wrapper = that.content;\n } else {\n that.wrapper = content\n .wrap('
    ')\n .parent();\n }\n\n var wrapper = that.wrapper;\n\n wrapper.attr(\"id\", that.id);\n\n wrapper.addClass(classNames.view);\n wrapper.addClass(classNames.widget);\n wrapper.attr(\"role\", \"view\");\n },\n\n _createContent: function() {\n var that = this;\n var wrapper = $(that.wrapper);\n var contentSelector = roleSelector(\"content\");\n\n if (!wrapper.children(contentSelector)[0]) {\n var ccontentElements = wrapper.children().filter(function() {\n var child = $(this);\n if (!child.is(roleSelector(\"header\")) && !child.is(roleSelector(\"footer\"))) {\n return child;\n }\n });\n\n ccontentElements.wrap(\"
    ');\n }\n\n // use contentElement instead of content as view.content can be a string\n this.contentElement = wrapper.children(roleSelector(\"content\"));\n\n this.contentElement\n .addClass(classNames.stretchedView)\n .addClass(classNames.content);\n },\n\n _createHeader: function() {\n var that = this;\n var wrapper = that.wrapper;\n\n this.header = wrapper.children(roleSelector(\"header\")).addClass(classNames.header);\n },\n\n _createFooter: function() {\n var that = this;\n var wrapper = that.wrapper;\n\n this.footer = wrapper.children(roleSelector(\"footer\")).addClass(classNames.footer);\n }\n });\n\n var ViewClone = kendo.Class.extend({\n init: function(view) {\n $.extend(this, {\n element: view.element.clone(true),\n transition: view.transition,\n id: view.id\n });\n\n view.element.parent().append(this.element);\n },\n\n hideEnd: function() {\n this.element.remove();\n },\n\n beforeTransition: $.noop,\n afterTransition: $.noop\n });\n\n var Layout = View.extend({\n init: function(content, options) {\n View.fn.init.call(this, content, options);\n this.containers = {};\n },\n\n container: function(selector) {\n var container = this.containers[selector];\n\n if (!container) {\n container = this._createContainer(selector);\n this.containers[selector] = container;\n }\n\n return container;\n },\n\n showIn: function(selector, view, transition) {\n this.container(selector).show(view, transition);\n },\n\n _createContainer: function(selector) {\n var root = this.render(),\n element = root.find(selector),\n container;\n\n if (!element.length && root.is(selector)) {\n if (root.is(selector)) {\n element = root;\n } else {\n\n throw new Error(\"can't find a container with the specified \" + selector + \" selector\");\n }\n }\n\n container = new ViewContainer(element);\n\n container.bind(\"accepted\", function(e) {\n e.view.render(element);\n });\n\n return container;\n }\n });\n\n var Fragment = View.extend({\n attach: function(view, placeholder) {\n view.element.find(placeholder).replaceWith(this.render());\n },\n\n detach: function() {\n }\n });\n\n var transitionRegExp = /^(\\w+)(:(\\w+))?( (\\w+))?$/;\n\n function parseTransition(transition) {\n if (!transition) {\n return {};\n }\n\n var matches = transition.match(transitionRegExp) || [];\n\n return {\n type: matches[1],\n direction: matches[3],\n reverse: matches[5] === \"reverse\"\n };\n }\n\n var ViewContainer = Observable.extend({\n init: function(container) {\n Observable.fn.init.call(this);\n this.container = container;\n this.history = [];\n this.view = null;\n this.running = false;\n },\n\n after: function() {\n this.running = false;\n this.trigger(\"complete\", { view: this.view });\n this.trigger(\"after\");\n },\n\n end: function() {\n this.view.showEnd();\n this.previous.hideEnd();\n this.after();\n },\n\n show: function(view, transition, locationID) {\n if (!view.triggerBeforeShow() || (this.view && !this.view.triggerBeforeHide())) {\n this.trigger(\"after\");\n return false;\n }\n\n locationID = locationID || view.id;\n\n var that = this,\n current = (view === that.view) ? view.clone() : that.view,\n history = that.history,\n previousEntry = history[history.length - 2] || {},\n back = previousEntry.id === locationID,\n // If explicit transition is set, it will be with highest priority\n // Next we will try using the history record transition or the view transition configuration\n theTransition = transition || ( back ? history[history.length - 1].transition : view.transition ),\n transitionData = parseTransition(theTransition);\n\n if (that.running) {\n that.effect.stop();\n }\n\n if (theTransition === \"none\") {\n theTransition = null;\n }\n\n that.trigger(\"accepted\", { view: view });\n that.view = view;\n that.previous = current;\n that.running = true;\n\n if (!back) {\n history.push({ id: locationID, transition: theTransition });\n } else {\n history.pop();\n }\n\n if (!current) {\n view.showStart();\n view.showEnd();\n that.after();\n return true;\n }\n\n if (!theTransition || !kendo.effects.enabled) {\n view.showStart();\n that.end();\n } else {\n // hide the view element before init/show - prevents blinks on iPad\n // the replace effect will remove this class\n view.element.addClass(\"k-fx-hidden\");\n view.showStart();\n // do not reverse the explicit transition\n if (back && !transition) {\n transitionData.reverse = !transitionData.reverse;\n }\n\n that.effect = kendo.fx(view.element).replace(current.element, transitionData.type)\n .beforeTransition(function() {\n view.beforeTransition(\"show\");\n current.beforeTransition(\"hide\");\n })\n .afterTransition(function() {\n view.afterTransition(\"show\");\n current.afterTransition(\"hide\");\n })\n .direction(transitionData.direction)\n .setReverse(transitionData.reverse);\n\n that.effect.run().then(function() { that.end(); });\n }\n\n return true;\n },\n\n destroy: function() {\n var that = this;\n var view = that.view;\n\n if (view && view.destroy) {\n view.destroy();\n }\n }\n });\n\n var ViewEngine = Observable.extend({\n init: function(options) {\n var that = this,\n views,\n container;\n\n Observable.fn.init.call(that);\n that.options = options;\n\n $.extend(that, options);\n that.sandbox = $(\"
    \");\n container = that.container;\n\n views = that._hideViews(container);\n that.rootView = views.first();\n that.layouts = {};\n\n that.viewContainer = new kendo.ViewContainer(that.container);\n\n that.viewContainer.bind(\"accepted\", function(e) {\n e.view.params = that.params;\n });\n\n that.viewContainer.bind(\"complete\", function(e) {\n that.trigger(VIEW_SHOW, { view: e.view });\n });\n\n that.viewContainer.bind(AFTER, function() {\n that.trigger(AFTER);\n });\n\n this.bind(this.events, options);\n },\n\n events: [\n SHOW_START,\n AFTER,\n VIEW_SHOW,\n LOAD_START,\n LOAD_COMPLETE,\n SAME_VIEW_REQUESTED,\n VIEW_TYPE_DETERMINED\n ],\n\n destroy: function() {\n var that = this;\n var viewContainer = that.viewContainer;\n\n kendo.destroy(that.container);\n\n for (var id in that.layouts) {\n this.layouts[id].destroy();\n }\n\n if (viewContainer) {\n viewContainer.destroy();\n }\n },\n\n view: function() {\n return this.viewContainer.view;\n },\n\n showView: function(url, transition, params) {\n url = url.replace(new RegExp(\"^\" + this.remoteViewURLPrefix), \"\");\n if (url === \"\" && this.remoteViewURLPrefix) {\n url = \"/\";\n }\n\n if (url.replace(/^#/, \"\") === this.url) {\n this.trigger(SAME_VIEW_REQUESTED);\n return false;\n }\n\n this.trigger(SHOW_START);\n\n var that = this,\n element = that._findViewElement(url),\n view = kendo.widgetInstance(element);\n\n that.url = url.replace(/^#/, \"\");\n\n that.params = params;\n\n if (view && view.reload) {\n view.purge();\n element = [];\n }\n\n this.trigger(VIEW_TYPE_DETERMINED, { remote: element.length === 0, url: url });\n\n if (element[0]) {\n if (!view) {\n view = that._createView(element);\n }\n\n return that.viewContainer.show(view, transition, url);\n } else {\n return true;\n }\n },\n\n append: function(html, url) {\n var sandbox = this.sandbox,\n urlPath = (url || \"\").split(\"?\")[0],\n container = this.container,\n views,\n view;\n\n if (html.indexOf(\" -1) {\n html = $(\"
    \").append(html).html();\n }\n\n sandbox[0].innerHTML = html;\n\n container.append(sandbox.children(\"script, style\"));\n\n views = this._hideViews(sandbox);\n view = views.first();\n\n // Generic HTML content found as remote view - no remote view markers\n if (!view.length) {\n views = view = sandbox.wrapInner(\"
    \").children(); // one element\n }\n\n if (urlPath) {\n view.hide().attr(attr(\"url\"), urlPath);\n }\n\n container.append(views);\n\n html = null; // Garbage collection.\n return this._createView(view);\n },\n\n _locate: function(selectors) {\n return roleSelector(selectors);\n },\n\n _findViewElement: function(url) {\n var element,\n urlPath = url.split(\"?\")[0];\n\n if (!urlPath) {\n return this.rootView;\n }\n\n element = this.container.children(\"[\" + attr(\"url\") + \"='\" + urlPath + \"']\");\n\n // do not try to search for \"#/foo/bar\" id, jQuery throws error\n if (!element[0] && urlPath.indexOf(\"/\") === -1) {\n element = this.container.children(urlPath.charAt(0) === \"#\" ? urlPath : \"#\" + urlPath);\n }\n\n if (!element[0]) {\n element = this._findViewElementById(url);\n }\n\n return element;\n },\n\n _findViewElementById: function(id) {\n var element = this.container.children(\"[id='\" + id + \"']\");\n return element;\n },\n\n _createView: function(element) {\n //return this._createMobileView(element);\n return this._createSpaView(element);\n },\n\n _createMobileView: function(element) {\n return kendo.initWidget(element, {\n defaultTransition: this.transition,\n loader: this.loader,\n container: this.container,\n getLayout: this.getLayoutProxy,\n modelScope: this.modelScope,\n reload: attrValue(element, \"reload\")\n }, ui.roles);\n },\n\n _createSpaView: function(element) {\n var viewOptions = (this.options || {}).viewOptions || {};\n return new kendo.View(element, {\n renderOnInit: viewOptions.renderOnInit,\n wrap: viewOptions.wrap || false,\n wrapInSections: viewOptions.wrapInSections,\n detachOnHide: viewOptions.detachOnHide,\n detachOnDestroy: viewOptions.detachOnDestroy\n });\n },\n\n _hideViews: function(container) {\n return container.children(this._locate(\"view\")).hide();\n }\n });\n\n kendo.ViewEngine = ViewEngine;\n\n kendo.ViewContainer = ViewContainer;\n kendo.Fragment = Fragment;\n kendo.Layout = Layout;\n kendo.View = View;\n kendo.ViewClone = ViewClone;\n\n })(window.kendo.jQuery);\n var kendo$T = kendo;\n\n var __meta__$Q = {\n id: \"data.signalr\",\n name: \"SignalR\",\n category: \"framework\",\n depends: [ \"data\" ],\n hidden: true\n };\n\n (function($) {\n var kendo = window.kendo;\n var isFunction = kendo.isFunction;\n\n function isJQueryPromise(promise) {\n return promise && isFunction(promise.done) && isFunction(promise.fail);\n }\n\n function isNativePromise(promise) {\n return promise && isFunction(promise.then) && isFunction(promise.catch);\n }\n\n var transport = kendo.data.RemoteTransport.extend({\n init: function(options) {\n var signalr = options && options.signalr ? options.signalr : {};\n\n var promise = signalr.promise;\n\n if (!promise) {\n throw new Error('The \"promise\" option must be set.');\n }\n\n if (!isJQueryPromise(promise) && !isNativePromise(promise)) {\n throw new Error('The \"promise\" option must be a Promise.');\n }\n\n this.promise = promise;\n\n var hub = signalr.hub;\n\n if (!hub) {\n throw new Error('The \"hub\" option must be set.');\n }\n\n if (typeof hub.on != \"function\" || typeof hub.invoke != \"function\") {\n throw new Error('The \"hub\" option is not a valid SignalR hub proxy.');\n }\n\n this.hub = hub;\n\n kendo.data.RemoteTransport.fn.init.call(this, options);\n },\n\n push: function(callbacks) {\n var client = this.options.signalr.client || {};\n\n if (client.create) {\n this.hub.on(client.create, callbacks.pushCreate);\n }\n\n if (client.update) {\n this.hub.on(client.update, callbacks.pushUpdate);\n }\n\n if (client.destroy) {\n this.hub.on(client.destroy, callbacks.pushDestroy);\n }\n },\n\n _crud: function(options, type) {\n var hub = this.hub;\n var promise = this.promise;\n var server = this.options.signalr.server;\n\n if (!server || !server[type]) {\n throw new Error(kendo.format('The \"server.{0}\" option must be set.', type));\n }\n\n var args = [server[type]];\n\n var data = this.parameterMap(options.data, type);\n\n if (!$.isEmptyObject(data)) {\n args.push(data);\n }\n\n if (isJQueryPromise(promise)) {\n promise.done(function() {\n hub.invoke.apply(hub, args)\n .done(options.success)\n .fail(options.error);\n });\n } else if (isNativePromise(promise)) {\n promise.then(function() {\n hub.invoke.apply(hub, args)\n .then(options.success)\n .catch(options.error);\n });\n }\n },\n\n read: function(options) {\n this._crud(options, \"read\");\n },\n\n create: function(options) {\n this._crud(options, \"create\");\n },\n\n update: function(options) {\n this._crud(options, \"update\");\n },\n\n destroy: function(options) {\n this._crud(options, \"destroy\");\n }\n });\n\n $.extend(true, kendo.data, {\n transports: {\n signalr: transport\n }\n });\n\n })(window.kendo.jQuery);\n var kendo$S = kendo;\n\n var __meta__$P = {\n id: \"userevents\",\n name: \"User Events\",\n category: \"framework\",\n depends: [ \"core\" ],\n hidden: true\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n support = kendo.support,\n Class = kendo.Class,\n Observable = kendo.Observable,\n now = Date.now,\n extend = $.extend,\n OS = support.mobileOS,\n invalidZeroEvents = OS && OS.android,\n DEFAULT_MIN_HOLD = 800,\n CLICK_DELAY = 300,\n DEFAULT_THRESHOLD = support.browser.msie ? 5 : 0, // WP8 and W8 are very sensitive and always report move.\n\n // UserEvents events\n PRESS = \"press\",\n HOLD = \"hold\",\n SELECT = \"select\",\n START = \"start\",\n MOVE = \"move\",\n END = \"end\",\n CANCEL = \"cancel\",\n TAP = \"tap\",\n DOUBLETAP = \"doubleTap\",\n RELEASE = \"release\",\n GESTURESTART = \"gesturestart\",\n GESTURECHANGE = \"gesturechange\",\n GESTUREEND = \"gestureend\",\n GESTURETAP = \"gesturetap\";\n\n var THRESHOLD = {\n \"api\": 0,\n \"touch\": 0,\n \"mouse\": 9,\n \"pointer\": 9\n };\n\n var ENABLE_GLOBAL_SURFACE = (!support.touch || support.mouseAndTouchPresent);\n\n function touchDelta(touch1, touch2) {\n var x1 = touch1.x.location,\n y1 = touch1.y.location,\n x2 = touch2.x.location,\n y2 = touch2.y.location,\n dx = x1 - x2,\n dy = y1 - y2;\n\n return {\n center: {\n x: (x1 + x2) / 2,\n y: (y1 + y2) / 2\n },\n\n distance: Math.sqrt(dx * dx + dy * dy)\n };\n }\n\n function getTouches(e) {\n var touches = [],\n originalEvent = e.originalEvent,\n currentTarget = e.currentTarget,\n idx = 0, length,\n changedTouches,\n touch;\n\n if (e.api) {\n touches.push({\n id: 2, // hardcoded ID for API call;\n event: e,\n target: e.target,\n currentTarget: e.target,\n location: e,\n type: \"api\"\n });\n }\n else if (e.type.match(/touch/)) {\n changedTouches = originalEvent ? originalEvent.changedTouches : [];\n for (length = changedTouches.length; idx < length; idx ++) {\n touch = changedTouches[idx];\n touches.push({\n location: touch,\n event: e,\n target: touch.target,\n currentTarget: currentTarget,\n id: touch.identifier,\n type: \"touch\"\n });\n }\n }\n else if (support.pointers || support.msPointers) {\n touches.push({\n location: originalEvent,\n event: e,\n target: e.target,\n currentTarget: currentTarget,\n id: originalEvent.pointerId,\n type: \"pointer\"\n });\n } else {\n touches.push({\n id: 1, // hardcoded ID for mouse event;\n event: e,\n target: e.target,\n currentTarget: currentTarget,\n location: e,\n type: \"mouse\"\n });\n }\n\n return touches;\n }\n\n var TouchAxis = Class.extend({\n init: function(axis, location) {\n var that = this;\n\n that.axis = axis;\n\n that._updateLocationData(location);\n\n that.startLocation = that.location;\n that.velocity = that.delta = 0;\n that.timeStamp = now();\n },\n\n move: function(location) {\n var that = this,\n offset = location[\"page\" + that.axis],\n timeStamp = now(),\n timeDelta = (timeStamp - that.timeStamp) || 1; // Firing manually events in tests can make this 0;\n\n if (!offset && invalidZeroEvents) {\n return;\n }\n\n that.delta = offset - that.location;\n\n that._updateLocationData(location);\n\n that.initialDelta = offset - that.startLocation;\n that.velocity = that.delta / timeDelta;\n that.timeStamp = timeStamp;\n },\n\n _updateLocationData: function(location) {\n var that = this, axis = that.axis;\n\n that.location = location[\"page\" + axis];\n that.client = location[\"client\" + axis];\n that.screen = location[\"screen\" + axis];\n }\n });\n\n var Touch = Class.extend({\n init: function(userEvents, target, touchInfo) {\n extend(this, {\n x: new TouchAxis(\"X\", touchInfo.location),\n y: new TouchAxis(\"Y\", touchInfo.location),\n type: touchInfo.type,\n useClickAsTap: userEvents.useClickAsTap,\n threshold: userEvents.threshold || THRESHOLD[touchInfo.type],\n userEvents: userEvents,\n target: target,\n currentTarget: touchInfo.currentTarget,\n initialTouch: touchInfo.target,\n id: touchInfo.id,\n pressEvent: touchInfo,\n _clicks: userEvents._clicks,\n supportDoubleTap: userEvents.supportDoubleTap,\n _moved: false,\n _finished: false\n });\n },\n\n press: function() {\n this._holdTimeout = setTimeout(this._hold.bind(this), this.userEvents.minHold);\n this._trigger(PRESS, this.pressEvent);\n },\n\n _tap: function(touchInfo) {\n var that = this;\n that.userEvents._clicks++;\n if (that.userEvents._clicks == 1) {\n that._clickTimeout = setTimeout(function() {\n if (that.userEvents._clicks == 1) {\n that._trigger(TAP, touchInfo);\n }\n else {\n that._trigger(DOUBLETAP, touchInfo);\n }\n that.userEvents._clicks = 0;\n }, CLICK_DELAY);\n }\n },\n\n _hold: function() {\n this._trigger(HOLD, this.pressEvent);\n },\n\n move: function(touchInfo) {\n var that = this;\n var preventMove = touchInfo.type !== \"api\" && that.userEvents._shouldNotMove;\n\n if (that._finished || preventMove) { return; }\n\n that.x.move(touchInfo.location);\n that.y.move(touchInfo.location);\n\n if (!that._moved) {\n if (that._withinIgnoreThreshold()) {\n return;\n }\n\n if (!UserEvents.current || UserEvents.current === that.userEvents) {\n that._start(touchInfo);\n } else {\n return that.dispose();\n }\n }\n\n // Event handlers may cancel the drag in the START event handler, hence the double check for pressed.\n if (!that._finished) {\n that._trigger(MOVE, touchInfo);\n }\n },\n\n end: function(touchInfo) {\n this.endTime = now();\n\n if (this._finished) { return; }\n\n // Mark the object as finished if there are blocking operations in the event handlers (alert/confirm)\n this._finished = true;\n\n this._trigger(RELEASE, touchInfo); // Release should be fired before TAP (as click is after mouseup/touchend)\n\n if (this._moved) {\n this._trigger(END, touchInfo);\n } else {\n if (!this.useClickAsTap) {\n if (this.supportDoubleTap) {\n this._tap(touchInfo);\n }\n else {\n this._trigger(TAP, touchInfo);\n }\n }\n }\n\n clearTimeout(this._holdTimeout);\n\n this.dispose();\n },\n\n dispose: function() {\n var userEvents = this.userEvents,\n activeTouches = userEvents.touches;\n\n this._finished = true;\n this.pressEvent = null;\n clearTimeout(this._holdTimeout);\n\n activeTouches.splice($.inArray(this, activeTouches), 1);\n },\n\n skip: function() {\n this.dispose();\n },\n\n cancel: function() {\n this.dispose();\n },\n\n isMoved: function() {\n return this._moved;\n },\n\n _start: function(touchInfo) {\n clearTimeout(this._holdTimeout);\n\n this.startTime = now();\n this._moved = true;\n this._trigger(START, touchInfo);\n },\n\n _trigger: function(name, touchInfo) {\n var that = this,\n jQueryEvent = touchInfo.event,\n data = {\n touch: that,\n x: that.x,\n y: that.y,\n target: that.target,\n event: jQueryEvent\n };\n\n if (that.userEvents.notify(name, data)) {\n jQueryEvent.preventDefault();\n }\n },\n\n _withinIgnoreThreshold: function() {\n var xDelta = this.x.initialDelta,\n yDelta = this.y.initialDelta;\n\n return Math.sqrt(xDelta * xDelta + yDelta * yDelta) <= this.threshold;\n }\n });\n\n function withEachUpEvent(callback) {\n var downEvents = kendo.eventMap.up.split(\" \"),\n idx = 0,\n length = downEvents.length;\n\n for (; idx < length; idx ++) {\n callback(downEvents[idx]);\n }\n }\n\n var UserEvents = Observable.extend({\n init: function(element, options) {\n var that = this,\n filter,\n ns = kendo.guid();\n\n options = options || {};\n filter = that.filter = options.filter;\n that.threshold = options.threshold || DEFAULT_THRESHOLD;\n that.minHold = options.minHold || DEFAULT_MIN_HOLD;\n that.touches = [];\n that._maxTouches = options.multiTouch ? 2 : 1;\n that.allowSelection = options.allowSelection;\n that.captureUpIfMoved = options.captureUpIfMoved;\n that.useClickAsTap = !options.fastTap && !support.delayedClick();\n that.eventNS = ns;\n that._clicks = 0;\n that.supportDoubleTap = options.supportDoubleTap;\n\n element = $(element).handler(that);\n Observable.fn.init.call(that);\n\n extend(that, {\n element: element,\n // the touch events lock to the element anyway, so no need for the global setting\n surface: options.global && ENABLE_GLOBAL_SURFACE ? $(element[0].ownerDocument.documentElement) : $(options.surface || element),\n stopPropagation: options.stopPropagation,\n pressed: false\n });\n\n that.surface.handler(that)\n .on(kendo.applyEventMap(\"move\", ns), \"_move\")\n .on(kendo.applyEventMap(\"up cancel\", ns), \"_end\");\n\n element.on(kendo.applyEventMap(\"down\", ns), filter, \"_start\");\n\n if (that.useClickAsTap) {\n element.on(kendo.applyEventMap(\"click\", ns), filter, \"_click\");\n }\n\n if (support.pointers || support.msPointers) {\n //touch-action:none will not work for IE10\n if (support.browser.version < 11) {\n var defaultAction = \"pinch-zoom double-tap-zoom\";\n element.css(\"-ms-touch-action\", options.touchAction && options.touchAction != \"none\" ? defaultAction + \" \" + options.touchAction : defaultAction);\n } else {\n element.css(\"touch-action\", options.touchAction || \"none\");\n }\n }\n\n if (options.preventDragEvent) {\n element.on(kendo.applyEventMap(\"dragstart\", ns), kendo.preventDefault);\n }\n\n element.on(kendo.applyEventMap(\"mousedown\", ns), filter, { root: element }, \"_select\");\n\n if (that.captureUpIfMoved && support.eventCapture) {\n var surfaceElement = that.surface[0],\n preventIfMovingProxy = that.preventIfMoving.bind(that);\n\n withEachUpEvent(function(eventName) {\n surfaceElement.addEventListener(eventName, preventIfMovingProxy, true);\n });\n }\n\n that.bind([\n PRESS,\n HOLD,\n TAP,\n DOUBLETAP,\n START,\n MOVE,\n END,\n RELEASE,\n CANCEL,\n GESTURESTART,\n GESTURECHANGE,\n GESTUREEND,\n GESTURETAP,\n SELECT\n ], options);\n },\n\n preventIfMoving: function(e) {\n if (this._isMoved()) {\n e.preventDefault();\n }\n },\n\n destroy: function() {\n var that = this;\n\n if (that._destroyed) {\n return;\n }\n\n that._destroyed = true;\n\n if (that.captureUpIfMoved && support.eventCapture) {\n var surfaceElement = that.surface[0];\n withEachUpEvent(function(eventName) {\n surfaceElement.removeEventListener(eventName, that.preventIfMoving);\n });\n }\n\n that.element.kendoDestroy(that.eventNS);\n that.surface.kendoDestroy(that.eventNS);\n that.element.removeData(\"handler\");\n that.surface.removeData(\"handler\");\n that._disposeAll();\n\n that.unbind();\n delete that.surface;\n delete that.element;\n delete that.currentTarget;\n },\n\n capture: function() {\n UserEvents.current = this;\n },\n\n cancel: function() {\n this._disposeAll();\n this.trigger(CANCEL);\n },\n\n notify: function(eventName, data) {\n var that = this,\n touches = that.touches;\n\n if (this._isMultiTouch()) {\n switch (eventName) {\n case MOVE:\n eventName = GESTURECHANGE;\n break;\n case END:\n eventName = GESTUREEND;\n break;\n case TAP:\n eventName = GESTURETAP;\n break;\n }\n\n extend(data, { touches: touches }, touchDelta(touches[0], touches[1]));\n }\n\n return this.trigger(eventName, extend(data, { type: eventName }));\n },\n\n // API\n press: function(x, y, target) {\n this._apiCall(\"_start\", x, y, target);\n },\n\n move: function(x, y) {\n this._apiCall(\"_move\", x, y);\n },\n\n end: function(x, y) {\n this._apiCall(\"_end\", x, y);\n },\n\n _isMultiTouch: function() {\n return this.touches.length > 1;\n },\n\n _maxTouchesReached: function() {\n return this.touches.length >= this._maxTouches;\n },\n\n _disposeAll: function() {\n var touches = this.touches;\n while (touches.length > 0) {\n touches.pop().dispose();\n }\n },\n\n _isMoved: function() {\n return $.grep(this.touches, function(touch) {\n return touch.isMoved();\n }).length;\n },\n\n _select: function(e) {\n if (!this.allowSelection || this.trigger(SELECT, { event: e })) {\n e.preventDefault();\n }\n },\n\n _start: function(e) {\n var that = this,\n idx = 0,\n filter = that.filter,\n target,\n touches = getTouches(e),\n length = touches.length,\n touch,\n which = e.which;\n\n if ((which && which > 1) || (that._maxTouchesReached())) {\n return;\n }\n\n UserEvents.current = null;\n\n that.currentTarget = e.currentTarget;\n\n if (that.stopPropagation) {\n e.stopPropagation();\n }\n\n for (; idx < length; idx ++) {\n if (that._maxTouchesReached()) {\n break;\n }\n\n touch = touches[idx];\n\n if (filter) {\n target = $(touch.currentTarget); // target.is(filter) ? target : target.closest(filter, that.element);\n } else {\n target = that.element;\n }\n\n if (!target.length) {\n continue;\n }\n\n touch = new Touch(that, target, touch);\n that.touches.push(touch);\n touch.press();\n\n if (that._isMultiTouch()) {\n that.notify(\"gesturestart\", {});\n }\n }\n },\n\n _move: function(e) {\n this._eachTouch(\"move\", e);\n },\n\n _end: function(e) {\n this._eachTouch(\"end\", e);\n },\n\n _click: function(e) {\n var data = {\n touch: {\n initialTouch: e.target,\n target: $(e.currentTarget),\n endTime: now(),\n x: {\n location: e.pageX,\n client: e.clientX\n },\n y: {\n location: e.pageY,\n client: e.clientY\n }\n },\n x: e.pageX,\n y: e.pageY,\n target: $(e.currentTarget),\n event: e,\n type: \"tap\"\n };\n\n if (this.trigger(\"tap\", data)) {\n e.preventDefault();\n }\n },\n\n _eachTouch: function(methodName, e) {\n var that = this,\n dict = {},\n touches = getTouches(e),\n activeTouches = that.touches,\n idx,\n touch,\n touchInfo,\n matchingTouch;\n\n for (idx = 0; idx < activeTouches.length; idx ++) {\n touch = activeTouches[idx];\n dict[touch.id] = touch;\n }\n\n for (idx = 0; idx < touches.length; idx ++) {\n touchInfo = touches[idx];\n matchingTouch = dict[touchInfo.id];\n\n if (matchingTouch) {\n matchingTouch[methodName](touchInfo);\n }\n }\n },\n\n _apiCall: function(type, x, y, target) {\n this[type]({\n api: true,\n pageX: x,\n pageY: y,\n clientX: x,\n clientY: y,\n target: $(target || this.element)[0],\n stopPropagation: $.noop,\n preventDefault: $.noop\n });\n }\n });\n\n var ClickMoveClick = Observable.extend({\n init: function(element, options) {\n var that = this,\n filter,\n ns = kendo.guid();\n\n options = options || {};\n filter = that.filter = options.filter;\n that.touches = [];\n that._maxTouches = 1;\n that.eventNS = ns;\n that._downStarted = 0;\n\n element = $(element).handler(that);\n Observable.fn.init.call(that);\n\n extend(that, {\n element: element,\n // the touch events lock to the element anyway, so no need for the global setting\n surface: options.global && ENABLE_GLOBAL_SURFACE ? $(element[0].ownerDocument.documentElement) : $(options.surface || element),\n stopPropagation: options.stopPropagation,\n pressed: false\n });\n\n that.surface.handler(that)\n .on(kendo.applyEventMap(\"move\", ns), \"_move\")\n .on(kendo.applyEventMap(\"cancel up\", ns), \"cancel\");\n\n element.on(kendo.applyEventMap(\"down\", ns), filter, \"_down\")\n .on(kendo.applyEventMap(\"up\", ns), filter, \"_up\");\n\n that.bind([\n START,\n MOVE,\n END,\n HOLD,\n CANCEL,\n SELECT\n ], options);\n },\n\n _down: function(e) {\n if (e.which && e.which > 1) {\n this.cancel();\n } else {\n this._downStarted = new Date().getTime();\n this._downTarget = e.target;\n }\n },\n\n _up: function(e) {\n var currentMilestone = new Date().getTime(),\n currentTarget = e.target;\n\n if ((!e.which || e.which === 1) &&\n currentMilestone < this._downStarted + CLICK_DELAY &&\n currentTarget === this._downTarget) {\n if (this.touches && this.touches.length > 0) {\n this._end(e);\n } else {\n this._start(e);\n }\n\n this._preventCancel = true;\n } else {\n this.cancel();\n }\n\n this._downStarted = 0;\n this._downTarget = null;\n },\n\n destroy: function() {\n var that = this;\n\n if (that._destroyed) {\n return;\n }\n\n that._destroyed = true;\n\n that.element.kendoDestroy(that.eventNS);\n that.surface.kendoDestroy(that.eventNS);\n that.element.removeData(\"handler\");\n that.surface.removeData(\"handler\");\n that._disposeAll();\n\n that.unbind();\n delete that.surface;\n delete that.element;\n delete that.currentTarget;\n },\n\n capture: function() {\n ClickMoveClick.current = this;\n },\n\n cancel: function() {\n if (this._preventCancel) {\n this._preventCancel = false;\n return;\n } else if (this.touches && this.touches.length > 0) {\n this._disposeAll();\n this.trigger(CANCEL);\n }\n },\n\n notify: function(eventName, data) {\n data.clickMoveClick = true;\n return this.trigger(eventName, extend(data, { type: eventName }));\n },\n\n _maxTouchesReached: function() {\n return this.touches.length >= this._maxTouches;\n },\n\n _disposeAll: function() {\n var touches = this.touches;\n\n while (touches.length > 0) {\n touches.pop().dispose();\n }\n },\n\n _start: function(e) {\n var that = this,\n idx = 0,\n filter = that.filter,\n target,\n touches = getTouches(e),\n length = touches.length,\n touch,\n which = e.which;\n\n if ((which && which > 1) || (that._maxTouchesReached())) {\n return;\n }\n\n ClickMoveClick.current = null;\n\n that.currentTarget = e.currentTarget;\n\n if (that.stopPropagation) {\n e.stopPropagation();\n }\n\n for (; idx < length; idx ++) {\n if (that._maxTouchesReached()) {\n break;\n }\n\n touch = touches[idx];\n\n if (filter) {\n target = $(touch.currentTarget);\n } else {\n target = that.element;\n }\n\n if (!target.length) {\n continue;\n }\n\n touch = new Touch(that, target, touch);\n that.touches.push(touch);\n touch.press();\n touch._start(touch);\n }\n },\n\n _move: function(e) {\n this._eachTouch(\"move\", e);\n },\n\n _end: function(e) {\n this._eachTouch(\"move\", e);\n this._eachTouch(\"end\", e);\n },\n\n _eachTouch: function(methodName, e) {\n var that = this,\n dict = {},\n touches = getTouches(e),\n activeTouches = that.touches,\n idx,\n touch,\n touchInfo,\n matchingTouch;\n\n for (idx = 0; idx < activeTouches.length; idx ++) {\n touch = activeTouches[idx];\n dict[touch.id] = touch;\n }\n\n for (idx = 0; idx < touches.length; idx ++) {\n touchInfo = touches[idx];\n matchingTouch = dict[touchInfo.id];\n\n if (matchingTouch) {\n matchingTouch.x.move(touchInfo.location);\n matchingTouch.y.move(touchInfo.location);\n matchingTouch[methodName](touchInfo);\n }\n }\n }\n });\n\n UserEvents.defaultThreshold = function(value) {\n DEFAULT_THRESHOLD = value;\n };\n\n UserEvents.minHold = function(value) {\n DEFAULT_MIN_HOLD = value;\n };\n\n kendo.getTouches = getTouches;\n kendo.touchDelta = touchDelta;\n kendo.UserEvents = UserEvents;\n kendo.ClickMoveClick = ClickMoveClick;\n })(window.kendo.jQuery);\n var kendo$R = kendo;\n\n var __meta__$O = {\n id: \"draganddrop\",\n name: \"Drag & drop\",\n category: \"framework\",\n description: \"Drag & drop functionality for any DOM element.\",\n depends: [ \"core\", \"userevents\" ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n support = kendo.support,\n document = window.document,\n $window = $(window),\n Class = kendo.Class,\n Widget = kendo.ui.Widget,\n Observable = kendo.Observable,\n UserEvents = kendo.UserEvents,\n ClickMoveClick = kendo.ClickMoveClick,\n extend = $.extend,\n getOffset = kendo.getOffset,\n draggables = {},\n dropTargets = {},\n dropAreas = {},\n lastDropTarget,\n elementUnderCursor = kendo.elementUnderCursor,\n KEYUP = \"keyup\",\n CHANGE = \"change\",\n\n // Draggable events\n DRAGSTART = \"dragstart\",\n HOLD = \"hold\",\n DRAG = \"drag\",\n DRAGEND = \"dragend\",\n DRAGCANCEL = \"dragcancel\",\n HINTDESTROYED = \"hintDestroyed\",\n\n // DropTarget events\n DRAGENTER = \"dragenter\",\n DRAGLEAVE = \"dragleave\",\n DROP = \"drop\";\n\n function contains(parent, child) {\n try {\n return $.contains(parent, child) || parent == child;\n } catch (e) {\n return false;\n }\n }\n\n function numericCssPropery(element, property) {\n return parseInt(element.css(property), 10) || 0;\n }\n\n function within(value, range) {\n return Math.min(Math.max(value, range.min), range.max);\n }\n\n function containerBoundaries(container, element) {\n var offset = getOffset(container),\n outerWidth = kendo._outerWidth,\n outerHeight = kendo._outerHeight,\n minX = offset.left + numericCssPropery(container, \"borderLeftWidth\") + numericCssPropery(container, \"paddingLeft\"),\n minY = offset.top + numericCssPropery(container, \"borderTopWidth\") + numericCssPropery(container, \"paddingTop\"),\n maxX = minX + container.width() - outerWidth(element, true),\n maxY = minY + container.height() - outerHeight(element, true);\n\n return {\n x: { min: minX, max: maxX },\n y: { min: minY, max: maxY }\n };\n }\n\n function checkTarget(target, targets, areas) {\n var theTarget, theFilter, i = 0,\n targetLen = targets && targets.length,\n areaLen = areas && areas.length;\n\n while (target && target.parentNode) {\n for (i = 0; i < targetLen; i ++) {\n theTarget = targets[i];\n if (theTarget.element[0] === target) {\n return { target: theTarget, targetElement: target };\n }\n }\n\n for (i = 0; i < areaLen; i ++) {\n theFilter = areas[i];\n if ($.contains(theFilter.element[0], target) && support.matchesSelector.call(target, theFilter.options.filter)) {\n return { target: theFilter, targetElement: target };\n }\n }\n\n target = target.parentNode;\n }\n\n return undefined$1;\n }\n\n var TapCapture = Observable.extend({\n init: function(element, options) {\n var that = this,\n domElement = element[0];\n\n that.capture = false;\n\n if (domElement.addEventListener) {\n $.each(kendo.eventMap.down.split(\" \"), function() {\n domElement.addEventListener(this, that._press.bind(that), true);\n });\n $.each(kendo.eventMap.up.split(\" \"), function() {\n domElement.addEventListener(this, that._release.bind(that), true);\n });\n } else {\n $.each(kendo.eventMap.down.split(\" \"), function() {\n domElement.attachEvent(this, that._press.bind(that));\n });\n $.each(kendo.eventMap.up.split(\" \"), function() {\n domElement.attachEvent(this, that._release.bind(that));\n });\n }\n\n Observable.fn.init.call(that);\n\n that.bind([\"press\", \"release\"], options || {});\n },\n\n captureNext: function() {\n this.capture = true;\n },\n\n cancelCapture: function() {\n this.capture = false;\n },\n\n _press: function(e) {\n var that = this;\n that.trigger(\"press\");\n if (that.capture) {\n e.preventDefault();\n }\n },\n\n _release: function(e) {\n var that = this;\n that.trigger(\"release\");\n\n if (that.capture) {\n e.preventDefault();\n that.cancelCapture();\n }\n }\n });\n\n var PaneDimension = Observable.extend({\n init: function(options) {\n var that = this;\n Observable.fn.init.call(that);\n\n that.forcedEnabled = false;\n\n $.extend(that, options);\n\n that.scale = 1;\n\n if (that.horizontal) {\n that.measure = \"offsetWidth\";\n that.scrollSize = \"scrollWidth\";\n that.axis = \"x\";\n } else {\n that.measure = \"offsetHeight\";\n that.scrollSize = \"scrollHeight\";\n that.axis = \"y\";\n }\n },\n\n makeVirtual: function() {\n $.extend(this, {\n virtual: true,\n forcedEnabled: true,\n _virtualMin: 0,\n _virtualMax: 0\n });\n },\n\n virtualSize: function(min, max) {\n if (this._virtualMin !== min || this._virtualMax !== max) {\n this._virtualMin = min;\n this._virtualMax = max;\n this.update();\n }\n },\n\n outOfBounds: function(offset) {\n return offset > this.max || offset < this.min;\n },\n\n forceEnabled: function() {\n this.forcedEnabled = true;\n },\n\n getSize: function() {\n return this.container[0][this.measure];\n },\n\n getTotal: function() {\n return this.element[0][this.scrollSize];\n },\n\n rescale: function(scale) {\n this.scale = scale;\n },\n\n update: function(silent) {\n var that = this,\n total = that.virtual ? that._virtualMax : that.getTotal(),\n scaledTotal = total * that.scale,\n size = that.getSize();\n\n if (total === 0 && !that.forcedEnabled) {\n return; // we are not visible.\n }\n\n that.max = that.virtual ? -that._virtualMin : 0;\n that.size = size;\n that.total = scaledTotal;\n that.min = Math.min(that.max, size - scaledTotal);\n that.minScale = size / total;\n that.centerOffset = (scaledTotal - size) / 2;\n\n that.enabled = that.forcedEnabled || (scaledTotal > size);\n\n if (!silent) {\n that.trigger(CHANGE, that);\n }\n }\n });\n\n var PaneDimensions = Observable.extend({\n init: function(options) {\n var that = this;\n\n Observable.fn.init.call(that);\n\n that.x = new PaneDimension(extend({ horizontal: true }, options));\n that.y = new PaneDimension(extend({ horizontal: false }, options));\n that.container = options.container;\n that.forcedMinScale = options.minScale;\n that.maxScale = options.maxScale || 100;\n\n that.bind(CHANGE, options);\n },\n\n rescale: function(newScale) {\n this.x.rescale(newScale);\n this.y.rescale(newScale);\n this.refresh();\n },\n\n centerCoordinates: function() {\n return { x: Math.min(0, -this.x.centerOffset), y: Math.min(0, -this.y.centerOffset) };\n },\n\n refresh: function() {\n var that = this;\n that.x.update();\n that.y.update();\n that.enabled = that.x.enabled || that.y.enabled;\n that.minScale = that.forcedMinScale || Math.min(that.x.minScale, that.y.minScale);\n that.fitScale = Math.max(that.x.minScale, that.y.minScale);\n that.trigger(CHANGE);\n }\n });\n\n var PaneAxis = Observable.extend({\n init: function(options) {\n var that = this;\n extend(that, options);\n Observable.fn.init.call(that);\n },\n\n outOfBounds: function() {\n return this.dimension.outOfBounds(this.movable[this.axis]);\n },\n\n dragMove: function(delta) {\n var that = this,\n dimension = that.dimension,\n axis = that.axis,\n movable = that.movable,\n position = movable[axis] + delta;\n\n if (!dimension.enabled) {\n return;\n }\n\n if ((position < dimension.min && delta < 0) || (position > dimension.max && delta > 0)) {\n delta *= that.resistance;\n }\n\n movable.translateAxis(axis, delta);\n that.trigger(CHANGE, that);\n }\n });\n\n var Pane = Class.extend({\n\n init: function(options) {\n var that = this,\n x,\n y,\n resistance,\n movable;\n\n extend(that, { elastic: true }, options);\n\n resistance = that.elastic ? 0.5 : 0;\n movable = that.movable;\n\n that.x = x = new PaneAxis({\n axis: \"x\",\n dimension: that.dimensions.x,\n resistance: resistance,\n movable: movable\n });\n\n that.y = y = new PaneAxis({\n axis: \"y\",\n dimension: that.dimensions.y,\n resistance: resistance,\n movable: movable\n });\n\n that.userEvents.bind([\"press\", \"move\", \"end\", \"gesturestart\", \"gesturechange\"], {\n gesturestart: function(e) {\n that.gesture = e;\n that.offset = that.dimensions.container.offset();\n },\n\n press: function(e) {\n if ($(e.event.target).closest(\"a\").is(\"[data-navigate-on-press=true]\")) {\n e.sender.cancel();\n }\n },\n\n gesturechange: function(e) {\n var previousGesture = that.gesture,\n previousCenter = previousGesture.center,\n\n center = e.center,\n\n scaleDelta = e.distance / previousGesture.distance,\n\n minScale = that.dimensions.minScale,\n maxScale = that.dimensions.maxScale,\n coordinates;\n\n if (movable.scale <= minScale && scaleDelta < 1) {\n // Resist shrinking. Instead of shrinking from 1 to 0.5, it will shrink to 0.5 + (1 /* minScale */ - 0.5) * 0.8 = 0.9;\n scaleDelta += (1 - scaleDelta) * 0.8;\n }\n\n if (movable.scale * scaleDelta >= maxScale) {\n scaleDelta = maxScale / movable.scale;\n }\n\n var offsetX = movable.x + that.offset.left,\n offsetY = movable.y + that.offset.top;\n\n coordinates = {\n x: (offsetX - previousCenter.x) * scaleDelta + center.x - offsetX,\n y: (offsetY - previousCenter.y) * scaleDelta + center.y - offsetY\n };\n\n movable.scaleWith(scaleDelta);\n\n x.dragMove(coordinates.x);\n y.dragMove(coordinates.y);\n\n that.dimensions.rescale(movable.scale);\n that.gesture = e;\n e.preventDefault();\n },\n\n move: function(e) {\n if (e.event.target.tagName.match(/textarea|input/i)) {\n return;\n }\n\n if (x.dimension.enabled || y.dimension.enabled) {\n x.dragMove(e.x.delta);\n y.dragMove(e.y.delta);\n e.preventDefault();\n } else {\n e.touch.skip();\n }\n },\n\n end: function(e) {\n e.preventDefault();\n }\n });\n }\n });\n\n var TRANSFORM_STYLE = support.transitions.prefix + \"Transform\",\n translate;\n\n\n if (support.hasHW3D) {\n translate = function(x, y, scale) {\n return \"translate3d(\" + x + \"px,\" + y + \"px,0) scale(\" + scale + \")\";\n };\n } else {\n translate = function(x, y, scale) {\n return \"translate(\" + x + \"px,\" + y + \"px) scale(\" + scale + \")\";\n };\n }\n\n var Movable = Observable.extend({\n init: function(element) {\n var that = this;\n\n Observable.fn.init.call(that);\n\n that.element = $(element);\n that.element[0].style.webkitTransformOrigin = \"left top\";\n that.x = 0;\n that.y = 0;\n that.scale = 1;\n that._saveCoordinates(translate(that.x, that.y, that.scale));\n },\n\n translateAxis: function(axis, by) {\n this[axis] += by;\n this.refresh();\n },\n\n scaleTo: function(scale) {\n this.scale = scale;\n this.refresh();\n },\n\n scaleWith: function(scaleDelta) {\n this.scale *= scaleDelta;\n this.refresh();\n },\n\n translate: function(coordinates) {\n this.x += coordinates.x;\n this.y += coordinates.y;\n this.refresh();\n },\n\n moveAxis: function(axis, value) {\n this[axis] = value;\n this.refresh();\n },\n\n moveTo: function(coordinates) {\n extend(this, coordinates);\n this.refresh();\n },\n\n refresh: function() {\n var that = this,\n x = that.x,\n y = that.y,\n newCoordinates;\n\n if (that.round) {\n x = Math.round(x);\n y = Math.round(y);\n }\n\n newCoordinates = translate(x, y, that.scale);\n\n if (newCoordinates != that.coordinates) {\n if (kendo.support.browser.msie && kendo.support.browser.version < 10) {\n that.element[0].style.position = \"absolute\";\n that.element[0].style.left = that.x + \"px\";\n that.element[0].style.top = that.y + \"px\";\n\n } else {\n that.element[0].style[TRANSFORM_STYLE] = newCoordinates;\n }\n that._saveCoordinates(newCoordinates);\n that.trigger(CHANGE);\n }\n },\n\n _saveCoordinates: function(coordinates) {\n this.coordinates = coordinates;\n }\n });\n\n function destroyDroppable(collection, widget) {\n var groupName = widget.options.group,\n droppables = collection[groupName],\n i;\n\n Widget.fn.destroy.call(widget);\n\n if (droppables.length > 1) {\n for (i = 0; i < droppables.length; i++) {\n if (droppables[i] == widget) {\n droppables.splice(i, 1);\n break;\n }\n }\n } else {\n droppables.length = 0; // WTF, porting this from the previous destroyGroup\n delete collection[groupName];\n }\n }\n\n var DropTarget = Widget.extend({\n init: function(element, options) {\n var that = this;\n\n Widget.fn.init.call(that, element, options);\n\n var group = that.options.group;\n\n if (!(group in dropTargets)) {\n dropTargets[group] = [ that ];\n } else {\n dropTargets[group].push( that );\n }\n },\n\n events: [\n DRAGENTER,\n DRAGLEAVE,\n DROP\n ],\n\n options: {\n name: \"DropTarget\",\n group: \"default\"\n },\n\n destroy: function() {\n destroyDroppable(dropTargets, this);\n },\n\n _trigger: function(eventName, e) {\n var that = this,\n draggable = draggables[that.options.group];\n\n if (draggable) {\n return that.trigger(eventName, extend({}, e.event, {\n draggable: draggable,\n dropTarget: e.dropTarget\n }));\n }\n },\n\n _over: function(e) {\n this._trigger(DRAGENTER, e);\n },\n\n _out: function(e) {\n this._trigger(DRAGLEAVE, e);\n },\n\n _drop: function(e) {\n var that = this,\n draggable = draggables[that.options.group];\n\n if (draggable) {\n draggable.dropped = !that._trigger(DROP, e);\n }\n }\n });\n\n DropTarget.destroyGroup = function(groupName) {\n var group = dropTargets[groupName] || dropAreas[groupName],\n i;\n\n if (group) {\n for (i = 0; i < group.length; i++) {\n Widget.fn.destroy.call(group[i]);\n }\n\n group.length = 0;\n delete dropTargets[groupName];\n delete dropAreas[groupName];\n }\n };\n\n DropTarget._cache = dropTargets;\n\n var DropTargetArea = DropTarget.extend({\n init: function(element, options) {\n var that = this;\n\n Widget.fn.init.call(that, element, options);\n\n var group = that.options.group;\n\n if (!(group in dropAreas)) {\n dropAreas[group] = [ that ];\n } else {\n dropAreas[group].push( that );\n }\n },\n\n destroy: function() {\n destroyDroppable(dropAreas, this);\n },\n\n options: {\n name: \"DropTargetArea\",\n group: \"default\",\n filter: null\n }\n });\n\n var Draggable = Widget.extend({\n init: function(element, options) {\n var that = this;\n\n Widget.fn.init.call(that, element, options);\n\n that._activated = false;\n\n if (this.options.clickMoveClick) {\n that.clickMoveClick = new ClickMoveClick(that.element, {\n global: true,\n filter: that.options.filter,\n start: that._startClickMoveClick.bind(that),\n move: that._drag.bind(that),\n end: that._end.bind(that),\n cancel: that._onCancel.bind(that)\n });\n }\n\n that.userEvents = new UserEvents(that.element, {\n global: true,\n allowSelection: true,\n filter: that.options.filter,\n threshold: that.options.distance,\n start: that._start.bind(that),\n hold: that._hold.bind(that),\n move: that._drag.bind(that),\n end: that._end.bind(that),\n cancel: that._onCancel.bind(that),\n select: that._select.bind(that),\n press: that._press.bind(that),\n });\n\n if (kendo.support.touch) {\n that.element.find(that.options.filter).css('touch-action', 'none');\n }\n\n that._afterEndHandler = that._afterEnd.bind(that);\n that._captureEscape = that._captureEscape.bind(that);\n },\n\n events: [\n HOLD,\n DRAGSTART,\n DRAG,\n DRAGEND,\n DRAGCANCEL,\n HINTDESTROYED\n ],\n\n options: {\n name: \"Draggable\",\n distance: ( kendo.support.touch ? 0 : 5),\n group: \"default\",\n cursorOffset: null,\n axis: null,\n container: null,\n filter: null,\n ignore: null,\n holdToDrag: false,\n showHintOnHold: false,\n autoScroll: false,\n dropped: false,\n clickMoveClick: false,\n preventOsHoldFeatures: false\n },\n\n cancelHold: function() {\n this._activated = false;\n },\n\n _captureEscape: function(e) {\n var that = this;\n\n if (e.keyCode === kendo.keys.ESC) {\n that.userEvents.cancel();\n\n if (that.clickMoveClick) {\n that.clickMoveClick.cancel();\n }\n\n this._trigger(DRAGCANCEL, { event: e });\n }\n },\n\n _updateHint: function(e) {\n var that = this,\n coordinates,\n options = that.options,\n boundaries = that.boundaries,\n axis = options.axis,\n cursorOffset = that.options.cursorOffset;\n\n if (cursorOffset) {\n coordinates = { left: e.x.location + cursorOffset.left, top: e.y.location + cursorOffset.top };\n } else {\n if (e.x.delta !== 0 || e.y.delta !== 0) {\n that.hintOffset.left += e.x.delta;\n that.hintOffset.top += e.y.delta;\n coordinates = $.extend({}, that.hintOffset);\n } else {\n that.hintOffset.left = e.x.startLocation + e.x.initialDelta;\n that.hintOffset.top = e.y.startLocation + e.y.initialDelta;\n coordinates = $.extend({}, that.hintOffset);\n }\n }\n\n if (boundaries) {\n coordinates.top = within(coordinates.top, boundaries.y);\n coordinates.left = within(coordinates.left, boundaries.x);\n }\n\n if (axis === \"x\") {\n delete coordinates.top;\n } else if (axis === \"y\") {\n delete coordinates.left;\n }\n\n that.hint.css(coordinates);\n },\n\n _shouldIgnoreTarget: function(target) {\n var ignoreSelector = this.options.ignore;\n return ignoreSelector && $(target).is(ignoreSelector);\n },\n\n _select: function(e) {\n if (!this._shouldIgnoreTarget(e.event.target)) {\n e.preventDefault();\n }\n },\n\n _startClickMoveClick: function(e) {\n this._activated = true;\n\n this._start(e);\n },\n\n _hint: function() {\n var that = this,\n hint = that.options.hint;\n\n if (hint) {\n if (that.hint) {\n that.hint.stop(true, true).remove();\n }\n\n that.hint = kendo.isFunction(hint) ? $(hint.call(that, that.currentTarget)) : hint;\n\n var offset = getOffset(that.currentTarget);\n that.hintOffset = offset;\n\n that.hint.css( {\n position: \"absolute\",\n zIndex: 20000, // the Window's z-index is 10000 and can be raised because of z-stacking\n left: offset.left,\n top: offset.top\n })\n .appendTo(document.body);\n }\n },\n\n _start: function(e) {\n var that = this,\n options = that.options,\n container = options.container ? $(options.container) : null,\n hint = options.hint;\n\n if (this._shouldIgnoreTarget(e.touch.initialTouch) || (options.holdToDrag && !that._activated)) {\n that.userEvents.cancel();\n return;\n }\n\n that.currentTarget = e.target;\n that.currentTargetOffset = getOffset(that.currentTarget);\n\n if (hint) {\n that._hint();\n }\n\n draggables[options.group] = that;\n\n that.dropped = false;\n\n if (container) {\n that.boundaries = containerBoundaries(container, that.hint);\n }\n\n $(document).on(KEYUP, that._captureEscape);\n\n if (that._trigger(DRAGSTART, e)) {\n that.userEvents.cancel();\n\n if (that.clickMoveClick) {\n that.clickMoveClick.cancel();\n }\n\n that._afterEnd();\n }\n\n that.userEvents.capture();\n },\n\n _hold: function(e) {\n this.currentTarget = e.target;\n\n if (this._trigger(HOLD, e)) {\n this.userEvents.cancel();\n } else {\n this._activated = true;\n if (this.options.showHintOnHold) {\n this._hint();\n }\n }\n },\n\n _drag: function(e) {\n e.preventDefault();\n\n var cursorElement = this._elementUnderCursor(e);\n\n if (this.options.autoScroll && this._cursorElement !== cursorElement) {\n this._scrollableParent = findScrollableParent(cursorElement);\n this._cursorElement = cursorElement;\n }\n\n this._lastEvent = e;\n this._processMovement(e, cursorElement);\n\n if (this.options.autoScroll) {\n // chrome seems to trigger mousemove when mouse is moved outside of the window (over the Chrome), too.\n if (this._scrollableParent[0]) {\n var velocity = autoScrollVelocity(e.x.location, e.y.location, scrollableViewPort(this._scrollableParent));\n\n\n this._scrollCompenstation = $.extend({}, this.hintOffset);\n this._scrollVelocity = velocity;\n\n if (velocity.y === 0 && velocity.x === 0) {\n clearInterval(this._scrollInterval);\n this._scrollInterval = null;\n } else if (!this._scrollInterval) {\n this._scrollInterval = setInterval(this._autoScroll.bind(this), 50);\n }\n }\n }\n\n if (this.hint) {\n this._updateHint(e);\n }\n },\n\n _processMovement: function(e, cursorElement) {\n this._withDropTarget(cursorElement, function(target, targetElement) {\n if (!target) {\n if (lastDropTarget) {\n lastDropTarget._trigger(DRAGLEAVE, extend(e, { dropTarget: $(lastDropTarget.targetElement) }));\n lastDropTarget = null;\n }\n return;\n }\n\n if (lastDropTarget) {\n if (targetElement === lastDropTarget.targetElement) {\n return;\n }\n\n lastDropTarget._trigger(DRAGLEAVE, extend(e, { dropTarget: $(lastDropTarget.targetElement) }));\n }\n\n target._trigger(DRAGENTER, extend(e, { dropTarget: $(targetElement) }));\n lastDropTarget = extend(target, { targetElement: targetElement });\n });\n\n this._trigger(DRAG, extend(e, { dropTarget: lastDropTarget, elementUnderCursor: cursorElement }));\n },\n\n _autoScroll: function() {\n var parent = this._scrollableParent[0],\n velocity = this._scrollVelocity,\n compensation = this._scrollCompenstation;\n\n if (!parent) {\n return;\n }\n\n var cursorElement = this._elementUnderCursor(this._lastEvent);\n this._processMovement(this._lastEvent, cursorElement);\n\n var yIsScrollable, xIsScrollable;\n\n var isRootNode = parent === scrollableRoot()[0];\n\n if (isRootNode) {\n yIsScrollable = document.body.scrollHeight > $window.height();\n xIsScrollable = document.body.scrollWidth > $window.width();\n } else {\n yIsScrollable = parent.offsetHeight <= parent.scrollHeight;\n xIsScrollable = parent.offsetWidth <= parent.scrollWidth;\n }\n\n var yDelta = parent.scrollTop + velocity.y;\n var yInBounds = yIsScrollable && yDelta > 0 && yDelta < parent.scrollHeight;\n\n var xDelta = parent.scrollLeft + velocity.x;\n var xInBounds = xIsScrollable && xDelta > 0 && xDelta < parent.scrollWidth;\n\n if (yInBounds) {\n parent.scrollTop += velocity.y;\n } else if (yIsScrollable && yDelta < 0) {\n parent.scrollTop = 0;\n }\n\n if (xInBounds) {\n parent.scrollLeft += velocity.x;\n } else if (xIsScrollable && xDelta < 0) {\n parent.scrollLeft = 0;\n }\n\n if (this.hint && isRootNode && (xInBounds || yInBounds)) {\n if (yInBounds) {\n compensation.top += velocity.y;\n }\n\n if (xInBounds) {\n compensation.left += velocity.x;\n }\n\n this.hint.css(compensation);\n }\n },\n\n _press: function(ev) {\n if (this.options.preventOsHoldFeatures) {\n ev.target.css('-webkit-user-select', 'none');\n ev.target.attr('unselectable', 'on');\n ev.target.one('contextmenu', (ev) => {\n ev.preventDefault();\n });\n }\n },\n\n _end: function(e) {\n this._withDropTarget(this._elementUnderCursor(e), function(target, targetElement) {\n if (target) {\n target._drop(extend({}, e, { dropTarget: $(targetElement) }));\n lastDropTarget = null;\n }\n });\n\n clearInterval(this._scrollInterval);\n this._scrollInterval = null;\n this._cancel(this._trigger(DRAGEND, e));\n },\n\n _onCancel: function(e) {\n this._cancel();\n this._trigger(DRAGCANCEL, { event: e });\n },\n\n _cancel: function(isDefaultPrevented) {\n var that = this;\n\n that._scrollableParent = null;\n this._cursorElement = null;\n clearInterval(this._scrollInterval);\n that._activated = false;\n\n if (that.hint && !that.dropped) {\n setTimeout(function() {\n that.hint.stop(true, true);\n\n if (isDefaultPrevented) {\n that._afterEndHandler();\n } else {\n that.hint.animate(that.currentTargetOffset, \"fast\", that._afterEndHandler);\n }\n }, 0);\n } else {\n that._afterEnd();\n }\n },\n\n _trigger: function(eventName, e) {\n var that = this;\n\n return that.trigger(\n eventName, extend(\n {},\n e.event,\n {\n x: e.x,\n y: e.y,\n currentTarget: that.currentTarget,\n initialTarget: e.touch ? e.touch.initialTouch : null,\n dropTarget: e.dropTarget,\n elementUnderCursor: e.elementUnderCursor,\n clickMoveClick: e.clickMoveClick\n }\n ));\n },\n\n _elementUnderCursor: function(e) {\n var target = elementUnderCursor(e),\n hint = this.hint;\n\n if (hint && contains(hint[0], target)) {\n hint.hide();\n target = elementUnderCursor(e);\n // IE8 does not return the element in iframe from first attempt\n if (!target) {\n target = elementUnderCursor(e);\n }\n hint.show();\n }\n\n return target;\n },\n\n _withDropTarget: function(element, callback) {\n var result,\n group = this.options.group,\n targets = dropTargets[group],\n areas = dropAreas[group];\n\n if (targets && targets.length || areas && areas.length) {\n result = checkTarget(element, targets, areas);\n\n if (result) {\n callback(result.target, result.targetElement);\n } else {\n callback();\n }\n }\n },\n\n destroy: function() {\n var that = this;\n\n Widget.fn.destroy.call(that);\n\n that._afterEnd();\n\n that.userEvents.destroy();\n\n if (that.clickMoveClick) {\n that.clickMoveClick.destroy();\n }\n\n this._scrollableParent = null;\n this._cursorElement = null;\n clearInterval(this._scrollInterval);\n\n that.currentTarget = null;\n },\n\n _afterEnd: function() {\n var that = this;\n\n if (that.hint) {\n that.hint.remove();\n }\n\n delete draggables[that.options.group];\n\n that.trigger(\"destroy\");\n that.trigger(HINTDESTROYED);\n $(document).off(KEYUP, that._captureEscape);\n }\n });\n\n kendo.ui.plugin(DropTarget);\n kendo.ui.plugin(DropTargetArea);\n kendo.ui.plugin(Draggable);\n kendo.TapCapture = TapCapture;\n kendo.containerBoundaries = containerBoundaries;\n\n extend(kendo.ui, {\n Pane: Pane,\n PaneDimensions: PaneDimensions,\n Movable: Movable\n });\n\n function scrollableViewPort(element) {\n var root = scrollableRoot()[0],\n offset,\n top,\n left;\n\n if (element[0] === root) {\n top = root.scrollTop;\n left = root.scrollLeft;\n\n return {\n top: top,\n left: left,\n bottom: top + $window.height(),\n right: left + $window.width()\n };\n } else {\n offset = element.offset();\n offset.bottom = offset.top + element.height();\n offset.right = offset.left + element.width();\n return offset;\n }\n }\n\n function scrollableRoot() {\n return $(kendo.support.browser.edge || kendo.support.browser.safari ? document.body : document.documentElement);\n }\n\n function findScrollableParent(element) {\n var root = scrollableRoot();\n\n if (!element || element === document.body || element === document.documentElement) {\n return root;\n }\n\n var parent = $(element)[0];\n\n while (parent && !kendo.isScrollable(parent) && parent !== document.body) {\n parent = parent.parentNode;\n }\n\n if (parent === document.body) {\n return root;\n }\n\n return $(parent);\n }\n\n function autoScrollVelocity(mouseX, mouseY, rect) {\n var velocity = { x: 0, y: 0 };\n\n var AUTO_SCROLL_AREA = 50;\n\n if (mouseX - rect.left < AUTO_SCROLL_AREA) {\n velocity.x = -(AUTO_SCROLL_AREA - (mouseX - rect.left));\n } else if (rect.right - mouseX < AUTO_SCROLL_AREA) {\n velocity.x = AUTO_SCROLL_AREA - (rect.right - mouseX);\n }\n\n if (mouseY - rect.top < AUTO_SCROLL_AREA) {\n velocity.y = -(AUTO_SCROLL_AREA - (mouseY - rect.top));\n } else if (rect.bottom - mouseY < AUTO_SCROLL_AREA) {\n velocity.y = AUTO_SCROLL_AREA - (rect.bottom - mouseY);\n }\n\n return velocity;\n }\n\n // export for testing\n kendo.ui.Draggable.utils = {\n autoScrollVelocity: autoScrollVelocity,\n scrollableViewPort: scrollableViewPort,\n findScrollableParent: findScrollableParent\n };\n\n })(window.kendo.jQuery);\n var kendo$Q = kendo;\n\n var __meta__$N = {\n id: \"mobile.scroller\",\n name: \"Scroller\",\n category: \"mobile\",\n description: \"The Kendo Mobile Scroller widget enables touch friendly kinetic scrolling for the contents of a given DOM element.\",\n depends: [ \"fx\", \"draganddrop\" ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n mobile = kendo.mobile,\n fx = kendo.effects,\n ui = mobile.ui,\n extend = $.extend,\n Widget = ui.Widget,\n Class = kendo.Class,\n Movable = kendo.ui.Movable,\n Pane = kendo.ui.Pane,\n PaneDimensions = kendo.ui.PaneDimensions,\n Transition = fx.Transition,\n Animation = fx.Animation,\n abs = Math.abs,\n SNAPBACK_DURATION = 500,\n SCROLLBAR_OPACITY = 0.7,\n FRICTION = 0.96,\n VELOCITY_MULTIPLIER = 10,\n MAX_VELOCITY = 55,\n OUT_OF_BOUNDS_FRICTION = 0.5,\n ANIMATED_SCROLLER_PRECISION = 5,\n RELEASECLASS = \"km-scroller-release\",\n REFRESHCLASS = \"km-scroller-refresh\",\n PULL = \"pull\",\n CHANGE = \"change\",\n RESIZE = \"resize\",\n SCROLL = \"scroll\",\n MOUSE_WHEEL_ID = 2;\n\n var ZoomSnapBack = Animation.extend({\n init: function(options) {\n var that = this;\n Animation.fn.init.call(that);\n extend(that, options);\n\n that.userEvents.bind(\"gestureend\", that.start.bind(that));\n that.tapCapture.bind(\"press\", that.cancel.bind(that));\n },\n\n enabled: function() {\n return this.movable.scale < this.dimensions.minScale;\n },\n\n done: function() {\n return this.dimensions.minScale - this.movable.scale < 0.01;\n },\n\n tick: function() {\n var movable = this.movable;\n movable.scaleWith(1.1);\n this.dimensions.rescale(movable.scale);\n },\n\n onEnd: function() {\n var movable = this.movable;\n movable.scaleTo(this.dimensions.minScale);\n this.dimensions.rescale(movable.scale);\n }\n });\n\n var DragInertia = Animation.extend({\n init: function(options) {\n var that = this;\n\n Animation.fn.init.call(that);\n\n extend(that, options, {\n transition: new Transition({\n axis: options.axis,\n movable: options.movable,\n onEnd: function() { that._end(); }\n })\n });\n\n that.tapCapture.bind(\"press\", function() { that.cancel(); });\n that.userEvents.bind(\"end\", that.start.bind(that));\n that.userEvents.bind(\"gestureend\", that.start.bind(that));\n that.userEvents.bind(\"tap\", that.onEnd.bind(that));\n },\n\n onCancel: function() {\n this.transition.cancel();\n },\n\n freeze: function(location) {\n var that = this;\n that.cancel();\n that._moveTo(location);\n },\n\n onEnd: function() {\n var that = this;\n if (that.paneAxis.outOfBounds()) {\n that._snapBack();\n } else {\n that._end();\n }\n },\n\n done: function() {\n return abs(this.velocity) < 1;\n },\n\n start: function(e) {\n var that = this,\n velocity;\n\n if (!that.dimension.enabled) { return; }\n\n if (that.paneAxis.outOfBounds()) {\n if (that.transition._started) {\n that.transition.cancel();\n that.velocity = Math.min(e.touch[that.axis].velocity * that.velocityMultiplier, MAX_VELOCITY);\n\n Animation.fn.start.call(that);\n } else {\n that._snapBack();\n }\n } else {\n velocity = e.touch.id === MOUSE_WHEEL_ID ? 0 : e.touch[that.axis].velocity;\n that.velocity = Math.max(Math.min(velocity * that.velocityMultiplier, MAX_VELOCITY), -MAX_VELOCITY);\n\n that.tapCapture.captureNext();\n Animation.fn.start.call(that);\n }\n },\n\n tick: function() {\n var that = this,\n dimension = that.dimension,\n friction = that.paneAxis.outOfBounds() ? OUT_OF_BOUNDS_FRICTION : that.friction,\n delta = (that.velocity *= friction),\n location = that.movable[that.axis] + delta;\n\n if (!that.elastic && dimension.outOfBounds(location)) {\n location = Math.max(Math.min(location, dimension.max), dimension.min);\n that.velocity = 0;\n }\n\n that.movable.moveAxis(that.axis, location);\n },\n\n _end: function() {\n this.tapCapture.cancelCapture();\n this.end();\n },\n\n _snapBack: function() {\n var that = this,\n dimension = that.dimension,\n snapBack = that.movable[that.axis] > dimension.max ? dimension.max : dimension.min;\n that._moveTo(snapBack);\n },\n\n _moveTo: function(location) {\n this.transition.moveTo({ location: location, duration: SNAPBACK_DURATION, ease: Transition.easeOutExpo });\n }\n });\n\n var AnimatedScroller = Animation.extend({\n init: function(options) {\n var that = this;\n\n kendo.effects.Animation.fn.init.call(this);\n\n extend(that, options, {\n origin: {},\n destination: {},\n offset: {}\n });\n },\n\n tick: function() {\n this._updateCoordinates();\n this.moveTo(this.origin);\n },\n\n done: function() {\n return abs(this.offset.y) < ANIMATED_SCROLLER_PRECISION && abs(this.offset.x) < ANIMATED_SCROLLER_PRECISION;\n },\n\n onEnd: function() {\n this.moveTo(this.destination);\n if (this.callback) {\n this.callback.call();\n }\n },\n\n setCoordinates: function(from, to) {\n this.offset = {};\n this.origin = from;\n this.destination = to;\n },\n\n setCallback: function(callback) {\n if (callback && kendo.isFunction(callback)) {\n this.callback = callback;\n } else {\n callback = undefined$1;\n }\n },\n\n _updateCoordinates: function() {\n this.offset = {\n x: (this.destination.x - this.origin.x) / 4,\n y: (this.destination.y - this.origin.y) / 4\n };\n\n this.origin = {\n y: this.origin.y + this.offset.y,\n x: this.origin.x + this.offset.x\n };\n }\n });\n\n var ScrollBar = Class.extend({\n init: function(options) {\n var that = this,\n horizontal = options.axis === \"x\",\n element = $('
    ');\n\n if (horizontal) {\n element.attr(\"aria-orientation\", \"horizontal\");\n }\n\n extend(that, options, {\n element: element,\n elementSize: 0,\n movable: new Movable(element),\n scrollMovable: options.movable,\n alwaysVisible: options.alwaysVisible,\n size: horizontal ? \"width\" : \"height\"\n });\n\n that.scrollMovable.bind(CHANGE, that.refresh.bind(that));\n that.container.append(element);\n if (options.alwaysVisible) {\n that.show();\n }\n },\n\n refresh: function() {\n var that = this,\n axis = that.axis,\n dimension = that.dimension,\n paneSize = dimension.size,\n scrollMovable = that.scrollMovable,\n sizeRatio = paneSize / dimension.total,\n position = Math.round(-scrollMovable[axis] * sizeRatio),\n size = Math.round(paneSize * sizeRatio);\n\n if (sizeRatio >= 1) {\n this.element.css(\"display\", \"none\");\n } else {\n this.element.css(\"display\", \"\");\n }\n\n if (position + size > paneSize) {\n size = paneSize - position;\n } else if (position < 0) {\n size += position;\n position = 0;\n }\n\n if (that.elementSize != size) {\n that.element.css(that.size, size + \"px\");\n that.elementSize = size;\n }\n\n that._ariaValue(position, dimension.size - that.elementSize);\n\n that.movable.moveAxis(axis, position);\n },\n\n show: function() {\n this.element.css({ opacity: SCROLLBAR_OPACITY, visibility: \"visible\" });\n },\n\n hide: function() {\n if (!this.alwaysVisible) {\n this.element.css({ opacity: 0 });\n }\n },\n\n _ariaValue: function(current, total) {\n var element = this.element;\n\n if (current > total) {\n current = total;\n }\n\n element.attr(\"aria-valuemax\", total);\n element.attr(\"aria-valuenow\", current);\n }\n });\n\n var Scroller = Widget.extend({\n init: function(element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n\n element = that.element;\n\n that._native = that.options.useNative && kendo.support.hasNativeScrolling;\n if (that._native) {\n element.addClass(\"km-native-scroller\")\n .prepend('
    ');\n\n extend(that, {\n scrollElement: element,\n fixedContainer: element.children().first()\n });\n\n return;\n }\n\n element\n .css(\"overflow\", \"hidden\")\n .addClass(\"km-scroll-wrapper\")\n .wrapInner('
    ')\n .prepend('
    ');\n\n var inner = element.children().eq(1),\n\n tapCapture = new kendo.TapCapture(element),\n\n movable = new Movable(inner),\n\n dimensions = new PaneDimensions({\n element: inner,\n container: element,\n forcedEnabled: that.options.zoom\n }),\n\n avoidScrolling = this.options.avoidScrolling,\n\n userEvents = new kendo.UserEvents(element, {\n touchAction: \"pan-y\",\n fastTap: true,\n allowSelection: true,\n preventDragEvent: true,\n captureUpIfMoved: true,\n multiTouch: that.options.zoom,\n supportDoubleTap: that.options.supportDoubleTap,\n start: function(e) {\n dimensions.refresh();\n\n var velocityX = abs(e.x.velocity),\n velocityY = abs(e.y.velocity),\n horizontalSwipe = velocityX * 2 >= velocityY,\n originatedFromFixedContainer = $.contains(that.fixedContainer[0], e.event.target),\n verticalSwipe = velocityY * 2 >= velocityX;\n\n\n if (!originatedFromFixedContainer && !avoidScrolling(e) && that.enabled && (dimensions.x.enabled && horizontalSwipe || dimensions.y.enabled && verticalSwipe)) {\n userEvents.capture();\n } else {\n userEvents.cancel();\n }\n }\n }),\n\n pane = new Pane({\n movable: movable,\n dimensions: dimensions,\n userEvents: userEvents,\n elastic: that.options.elastic\n }),\n\n zoomSnapBack = new ZoomSnapBack({\n movable: movable,\n dimensions: dimensions,\n userEvents: userEvents,\n tapCapture: tapCapture\n }),\n\n animatedScroller = new AnimatedScroller({\n moveTo: function(coordinates) {\n that.scrollTo(coordinates.x, coordinates.y);\n }\n });\n\n movable.bind(CHANGE, function() {\n that.scrollTop = - movable.y;\n that.scrollLeft = - movable.x;\n\n that.trigger(SCROLL, {\n scrollTop: that.scrollTop,\n scrollLeft: that.scrollLeft\n });\n });\n\n if (that.options.mousewheelScrolling) {\n element.on(\"DOMMouseScroll mousewheel\", this._wheelScroll.bind(this));\n }\n\n extend(that, {\n movable: movable,\n dimensions: dimensions,\n zoomSnapBack: zoomSnapBack,\n animatedScroller: animatedScroller,\n userEvents: userEvents,\n pane: pane,\n tapCapture: tapCapture,\n pulled: false,\n enabled: true,\n scrollElement: inner,\n scrollTop: 0,\n scrollLeft: 0,\n fixedContainer: element.children().first()\n });\n\n that._initAxis(\"x\");\n that._initAxis(\"y\");\n\n // build closure\n that._wheelEnd = function() {\n that._wheel = false;\n that.userEvents.end(0, that._wheelY);\n };\n\n dimensions.refresh();\n\n if (that.options.pullToRefresh) {\n that._initPullToRefresh();\n }\n },\n\n _wheelScroll: function(e) {\n if (e.ctrlKey) {\n return;\n }\n\n if (!this._wheel) {\n this._wheel = true;\n this._wheelY = 0;\n this.userEvents.press(0, this._wheelY);\n }\n\n clearTimeout(this._wheelTimeout);\n this._wheelTimeout = setTimeout(this._wheelEnd, 50);\n\n var delta = kendo.wheelDeltaY(e);\n\n if (delta) {\n this._wheelY += delta;\n this.userEvents.move(0, this._wheelY);\n }\n\n e.preventDefault();\n },\n\n makeVirtual: function() {\n this.dimensions.y.makeVirtual();\n },\n\n virtualSize: function(min, max) {\n this.dimensions.y.virtualSize(min, max);\n },\n\n height: function() {\n return this.dimensions.y.size;\n },\n\n scrollHeight: function() {\n return this.scrollElement[0].scrollHeight;\n },\n\n scrollWidth: function() {\n return this.scrollElement[0].scrollWidth;\n },\n\n options: {\n name: \"Scroller\",\n zoom: false,\n pullOffset: 140,\n visibleScrollHints: false,\n elastic: true,\n useNative: false,\n mousewheelScrolling: true,\n avoidScrolling: function() { return false; },\n pullToRefresh: false,\n messages: {\n pullTemplate: \"Pull to refresh\",\n releaseTemplate: \"Release to refresh\",\n refreshTemplate: \"Refreshing\"\n }\n },\n\n events: [\n PULL,\n SCROLL,\n RESIZE\n ],\n\n _resize: function() {\n if (!this._native) {\n this.contentResized();\n }\n },\n\n setOptions: function(options) {\n var that = this;\n Widget.fn.setOptions.call(that, options);\n if (options.pullToRefresh) {\n that._initPullToRefresh();\n }\n },\n\n reset: function() {\n if (this._native) {\n this.scrollElement.scrollTop(0);\n } else {\n this.movable.moveTo({ x: 0, y: 0 });\n this._scale(1);\n }\n },\n\n contentResized: function() {\n this.dimensions.refresh();\n if (this.pane.x.outOfBounds()) {\n this.movable.moveAxis(\"x\", this.dimensions.x.min);\n }\n\n if (this.pane.y.outOfBounds()) {\n this.movable.moveAxis(\"y\", this.dimensions.y.min);\n }\n },\n\n zoomOut: function() {\n var dimensions = this.dimensions;\n dimensions.refresh();\n this._scale(dimensions.fitScale);\n this.movable.moveTo(dimensions.centerCoordinates());\n },\n\n enable: function() {\n this.enabled = true;\n },\n\n disable: function() {\n this.enabled = false;\n },\n\n scrollTo: function(x, y) {\n if (this._native) {\n kendo.scrollLeft(this.scrollElement, abs(x));\n this.scrollElement.scrollTop(abs(y));\n } else {\n this.dimensions.refresh();\n this.movable.moveTo({ x: x, y: y });\n }\n },\n\n animatedScrollTo: function(x, y, callback) {\n var from,\n to;\n\n if (this._native) {\n this.scrollTo(x, y);\n } else {\n from = { x: this.movable.x, y: this.movable.y };\n to = { x: x, y: y };\n\n this.animatedScroller.setCoordinates(from, to);\n this.animatedScroller.setCallback(callback);\n this.animatedScroller.start();\n }\n },\n\n pullHandled: function() {\n var that = this;\n that.refreshHint.removeClass(REFRESHCLASS);\n that.hintContainer.html(that.pullTemplate({}));\n that.yinertia.onEnd();\n that.xinertia.onEnd();\n that.userEvents.cancel();\n },\n\n destroy: function() {\n Widget.fn.destroy.call(this);\n if (this.userEvents) {\n this.userEvents.destroy();\n }\n },\n\n _scale: function(scale) {\n this.dimensions.rescale(scale);\n this.movable.scaleTo(scale);\n },\n\n _initPullToRefresh: function() {\n var that = this;\n\n that.dimensions.y.forceEnabled();\n that.pullTemplate = kendo.template(that.options.messages.pullTemplate);\n that.releaseTemplate = kendo.template(that.options.messages.releaseTemplate);\n that.refreshTemplate = kendo.template(that.options.messages.refreshTemplate);\n\n that.scrollElement.prepend('' + that.pullTemplate({}) + '');\n that.refreshHint = that.scrollElement.children().first();\n that.hintContainer = that.refreshHint.children(\".km-template\");\n\n that.pane.y.bind(\"change\", that._paneChange.bind(that));\n that.userEvents.bind(\"end\", that._dragEnd.bind(that));\n },\n\n _dragEnd: function() {\n var that = this;\n\n if (!that.pulled) {\n return;\n }\n\n that.pulled = false;\n that.refreshHint.removeClass(RELEASECLASS).addClass(REFRESHCLASS);\n that.hintContainer.html(that.refreshTemplate({}));\n that.yinertia.freeze(that.options.pullOffset / 2);\n that.trigger(\"pull\");\n },\n\n _paneChange: function() {\n var that = this;\n\n if (that.movable.y / OUT_OF_BOUNDS_FRICTION > that.options.pullOffset) {\n if (!that.pulled) {\n that.pulled = true;\n that.refreshHint.removeClass(REFRESHCLASS).addClass(RELEASECLASS);\n that.hintContainer.html(that.releaseTemplate({}));\n }\n } else if (that.pulled) {\n that.pulled = false;\n that.refreshHint.removeClass(RELEASECLASS);\n that.hintContainer.html(that.pullTemplate({}));\n }\n },\n\n _initAxis: function(axis) {\n var that = this,\n elementId = that.element.attr(\"id\"),\n movable = that.movable,\n dimension = that.dimensions[axis],\n tapCapture = that.tapCapture,\n paneAxis = that.pane[axis],\n scrollBar;\n\n if (!elementId) {\n elementId = kendo.guid();\n that.element.attr(\"id\", elementId);\n }\n\n scrollBar = new ScrollBar({\n axis: axis,\n movable: movable,\n dimension: dimension,\n container: that.element,\n alwaysVisible: that.options.visibleScrollHints,\n controlsId: elementId\n });\n\n dimension.bind(CHANGE, function() {\n scrollBar.refresh();\n });\n\n paneAxis.bind(CHANGE, function() {\n scrollBar.show();\n });\n\n that[axis + \"inertia\"] = new DragInertia({\n axis: axis,\n paneAxis: paneAxis,\n movable: movable,\n tapCapture: tapCapture,\n userEvents: that.userEvents,\n dimension: dimension,\n elastic: that.options.elastic,\n friction: that.options.friction || FRICTION,\n velocityMultiplier: that.options.velocityMultiplier || VELOCITY_MULTIPLIER,\n end: function() {\n scrollBar.hide();\n that.trigger(\"scrollEnd\", {\n axis: axis,\n scrollTop: that.scrollTop,\n scrollLeft: that.scrollLeft\n });\n }\n });\n }\n });\n\n ui.plugin(Scroller);\n })(window.kendo.jQuery);\n var kendo$P = kendo;\n\n var __meta__$M = {\n id: \"popup\",\n name: \"Pop-up\",\n category: \"framework\",\n depends: [ \"core\" ],\n advanced: true\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n ui = kendo.ui,\n Widget = ui.Widget,\n Class = kendo.Class,\n support = kendo.support,\n getOffset = kendo.getOffset,\n outerWidth = kendo._outerWidth,\n outerHeight = kendo._outerHeight,\n OPEN = \"open\",\n CLOSE = \"close\",\n DEACTIVATE = \"deactivate\",\n ACTIVATE = \"activate\",\n CENTER = \"center\",\n LEFT = \"left\",\n RIGHT = \"right\",\n TOP = \"top\",\n BOTTOM = \"bottom\",\n ABSOLUTE = \"absolute\",\n HIDDEN = \"hidden\",\n BODY = \"body\",\n LOCATION = \"location\",\n POSITION = \"position\",\n VISIBLE = \"visible\",\n EFFECTS = \"effects\",\n ACTIVE = \"k-active\",\n ACTIVECHILDREN = \".k-picker-wrap, .k-dropdown-wrap, .k-link\",\n MOUSEDOWN = \"down\",\n DOCUMENT_ELEMENT = $(document.documentElement),\n WINDOW = $(window),\n SCROLL = \"scroll\",\n cssPrefix = support.transitions.css,\n TRANSFORM = cssPrefix + \"transform\",\n extend = $.extend,\n NS = \".kendoPopup\",\n styles = [\"font-size\",\n \"font-family\",\n \"font-stretch\",\n \"font-style\",\n \"font-weight\",\n \"line-height\"];\n\n function contains(container, target) {\n if (!container || !target) {\n return false;\n }\n return container === target || $.contains(container, target);\n }\n\n var Popup = Widget.extend({\n init: function(element, options) {\n var that = this, parentPopup;\n\n options = options || {};\n\n if (options.isRtl) {\n options.origin = options.origin || BOTTOM + \" \" + RIGHT;\n options.position = options.position || TOP + \" \" + RIGHT;\n }\n\n Widget.fn.init.call(that, element, options);\n\n element = that.element;\n options = that.options;\n\n that.collisions = options.collision ? options.collision.split(\" \") : [];\n that.downEvent = kendo.applyEventMap(MOUSEDOWN, kendo.guid());\n\n if (that.collisions.length === 1) {\n that.collisions.push(that.collisions[0]);\n }\n\n parentPopup = $(that.options.anchor).closest(\".k-popup,.k-group\").filter(\":not([class^=km-])\"); // When popup is in another popup, make it relative.\n\n options.appendTo = $($(options.appendTo)[0] || parentPopup[0] || document.body);\n\n that.element.hide()\n .addClass(\"k-popup\")\n .toggleClass(\"k-rtl\", !!options.isRtl)\n .appendTo(options.appendTo)\n .attr(\"aria-hidden\", true)\n .on(\"mouseenter\" + NS, function() {\n that._hovered = true;\n })\n .on(\"wheel\" + NS, function(e) {\n var list = $(e.target).find(\".k-list\");\n var scrollArea = list.parent();\n if (list.length && list.is(\":visible\") && ((scrollArea.scrollTop() === 0 && e.originalEvent.deltaY < 0) ||\n (scrollArea.scrollTop() === scrollArea.prop('scrollHeight') - scrollArea.prop('offsetHeight') && e.originalEvent.deltaY > 0))) {\n e.preventDefault();\n }\n })\n .on(\"mouseleave\" + NS, function() {\n that._hovered = false;\n });\n\n that.wrapper = $();\n\n if (options.animation === false) {\n options.animation = { open: { effects: {} }, close: { hide: true, effects: {} } };\n }\n\n extend(options.animation.open, {\n complete: function() {\n that.wrapper.addClass(\"k-animation-container-shown\"); // Forcing refresh causes flickering in mobile.\n that.wrapper.css(\"overflow\",\"\");\n that._activated = true;\n that._trigger(ACTIVATE);\n }\n });\n\n extend(options.animation.close, {\n complete: function() {\n that._animationClose();\n }\n });\n\n that._mousedownProxy = function(e) {\n that._mousedown(e);\n };\n\n if (support.mobileOS.android) {\n that._resizeProxy = function(e) {\n setTimeout(function() {\n that._resize(e);\n }, 600); //Logic from kendo.onResize\n };\n } else {\n that._resizeProxy = function(e) {\n that._resize(e);\n };\n }\n\n if (options.toggleTarget) {\n $(options.toggleTarget).on(options.toggleEvent + NS, that.toggle.bind(that));\n }\n },\n\n events: [\n OPEN,\n ACTIVATE,\n CLOSE,\n DEACTIVATE\n ],\n\n options: {\n name: \"Popup\",\n toggleEvent: \"click\",\n origin: BOTTOM + \" \" + LEFT,\n position: TOP + \" \" + LEFT,\n anchor: BODY,\n appendTo: null,\n collision: \"flip fit\",\n viewport: window,\n copyAnchorStyles: true,\n autosize: false,\n autowidth: false,\n modal: false,\n adjustSize: {\n width: 0,\n height: 0\n },\n animation: {\n open: {\n effects: \"slideIn:down\",\n transition: true,\n duration: 200\n },\n close: { // if close animation effects are defined, they will be used instead of open.reverse\n duration: 100,\n hide: true\n }\n },\n omitOriginOffsets: false\n },\n\n _animationClose: function() {\n var that = this;\n var location = that.wrapper.data(LOCATION);\n\n that.wrapper.hide();\n\n if (location) {\n that.wrapper.css(location);\n }\n\n if (that.options.anchor != BODY) {\n that._hideActiveClass();\n }\n\n that._closing = false;\n that._trigger(DEACTIVATE);\n },\n\n destroy: function() {\n var that = this,\n options = that.options,\n element = that.element.off(NS),\n parent;\n\n Widget.fn.destroy.call(that);\n\n if (options.toggleTarget) {\n $(options.toggleTarget).off(NS);\n }\n\n if (!options.modal) {\n DOCUMENT_ELEMENT.off(that.downEvent, that._mousedownProxy);\n that._toggleResize(false);\n }\n\n kendo.destroy(that.element.children());\n element.removeData();\n\n if (options.appendTo[0] === document.body) {\n parent = element.closest(\".k-animation-container\");\n\n if (parent[0]) {\n parent.remove();\n } else {\n element.remove();\n }\n }\n },\n\n open: function(x, y) {\n var that = this,\n fixed = { isFixed: !isNaN(parseInt(y,10)), x: x, y: y },\n shouldCorrectWidth = that._shouldCorrectWidth,\n element = that.element,\n options = that.options,\n animation, wrapper,\n anchor = $(options.anchor),\n mobile = element[0] && element.hasClass(\"km-widget\"),\n listbox = element.find(\"[role='listbox']\"),\n parent;\n\n if (!that.visible()) {\n if (options.copyAnchorStyles) {\n if (mobile && styles[0] == \"font-size\") {\n styles.shift();\n }\n element.css(kendo.getComputedStyles(anchor[0], styles));\n }\n\n if (that.element.parent().data(\"animating\") || that._trigger(OPEN)) {\n return;\n }\n\n that._activated = false;\n\n if (!options.modal) {\n DOCUMENT_ELEMENT.off(that.downEvent, that._mousedownProxy)\n .on(that.downEvent, that._mousedownProxy);\n\n // this binding hangs iOS in editor\n // all elements in IE7/8 fire resize event, causing mayhem\n that._toggleResize(false);\n that._toggleResize(true);\n }\n\n that.wrapper = wrapper = kendo.wrap(element, options.autosize, options._resizeOnWrap, shouldCorrectWidth, options.autowidth)\n .css({\n overflow: HIDDEN,\n display: \"block\",\n position: ABSOLUTE\n })\n .attr(\"aria-hidden\", false);\n\n parent = element.parent();\n\n if (listbox.attr(\"aria-label\")) {\n wrapper.attr(\"aria-label\", listbox.attr(\"aria-label\"));\n } else if (listbox.attr(\"aria-labelledby\")) {\n wrapper.attr(\"aria-labelledby\", listbox.attr(\"aria-labelledby\"));\n }\n\n if (support.mobileOS.android) {\n parent.css(TRANSFORM, \"translatez(0)\"); // Android is VERY slow otherwise. Should be tested in other droids as well since it may cause blur.\n }\n\n wrapper.css(POSITION);\n\n if ($(options.appendTo)[0] == document.body) {\n wrapper.css(TOP, \"-10000px\");\n }\n\n that.flipped = that._position(fixed);\n animation = that._openAnimation();\n\n if (options.anchor != BODY && !that.element.hasClass(\"k-tooltip\")) {\n that._addActiveClass();\n }\n\n parent.hide();\n element.show();\n that.wrapper.show();\n\n parent.data(EFFECTS, animation.effects)\n .kendoStop(true)\n .kendoAnimate(animation);\n\n\n element.attr(\"aria-hidden\", false);\n }\n },\n\n _location: function(isFixed) {\n var that = this,\n element = that.element,\n options = that.options,\n wrapper,\n anchor = $(options.anchor),\n mobile = element[0] && element.hasClass(\"km-widget\");\n\n if (options.copyAnchorStyles) {\n if (mobile && styles[0] == \"font-size\") {\n styles.shift();\n }\n element.css(kendo.getComputedStyles(anchor[0], styles));\n }\n\n that.wrapper = wrapper = kendo.wrap(element, options.autosize)\n .css({\n overflow: HIDDEN,\n display: \"block\",\n position: ABSOLUTE\n });\n\n if (support.mobileOS.android) {\n wrapper.css(TRANSFORM, \"translatez(0)\"); // Android is VERY slow otherwise. Should be tested in other droids as well since it may cause blur.\n }\n\n wrapper.css(POSITION);\n\n if ($(options.appendTo)[0] == document.body) {\n wrapper.css(TOP, \"-10000px\");\n }\n\n that._position(isFixed || {});\n\n var offset = wrapper.offset();\n return {\n width: kendo._outerWidth(wrapper),\n height: kendo._outerHeight(wrapper),\n left: offset.left,\n top: offset.top\n };\n },\n\n _openAnimation: function() {\n var animation = extend(true, {}, this.options.animation.open);\n animation.effects = kendo.parseEffects(animation.effects, this.flipped);\n\n return animation;\n },\n\n _hideActiveClass: function() {\n var anchor = $(this.options.anchor);\n anchor\n .children(ACTIVECHILDREN)\n .removeClass(ACTIVE);\n\n },\n\n _addActiveClass: function() {\n $(this.options.anchor)\n .children(ACTIVECHILDREN)\n .addClass(ACTIVE);\n },\n\n position: function() {\n if (this.visible()) {\n this.flipped = this._position();\n }\n },\n\n toggle: function() {\n var that = this;\n\n that[that.visible() ? CLOSE : OPEN]();\n },\n\n visible: function() {\n return this.wrapper.is(\":\" + VISIBLE) && this.element.is(\":\" + VISIBLE);\n },\n\n close: function(skipEffects) {\n var that = this,\n parent = that.element.parent(),\n options = that.options, wrap,\n animation, openEffects, closeEffects;\n\n if (that.visible()) {\n wrap = (that.wrapper[0] ? that.wrapper : kendo.wrap(that.element).hide());\n\n that._toggleResize(false);\n\n if (that._closing || that._trigger(CLOSE)) {\n that._toggleResize(true);\n return;\n }\n\n that.wrapper.removeClass(\"k-animation-container-shown\");\n\n // Close all inclusive popups.\n that.element.find(\".k-popup\").each(function() {\n var that = $(this),\n popup = that.data(\"kendoPopup\");\n\n if (popup) {\n popup.close(skipEffects);\n }\n });\n\n DOCUMENT_ELEMENT.off(that.downEvent, that._mousedownProxy);\n\n if (skipEffects) {\n animation = { hide: true, effects: {} };\n } else {\n animation = extend(true, {}, options.animation.close);\n openEffects = parent.data(EFFECTS);\n closeEffects = animation.effects;\n\n if (!closeEffects && !kendo.size(closeEffects) && openEffects && kendo.size(openEffects)) {\n animation.effects = openEffects;\n animation.reverse = true;\n }\n\n that._closing = true;\n }\n\n parent.kendoStop(true);\n that.element.attr(\"aria-hidden\", true);\n wrap\n .css({ overflow: HIDDEN }) // stop callback will remove hidden overflow\n .attr(\"aria-hidden\", true);\n parent.kendoAnimate(animation);\n\n if (skipEffects) {\n that._animationClose();\n }\n }\n },\n\n _trigger: function(ev) {\n return this.trigger(ev, { type: ev });\n },\n\n _resize: function(e) {\n var that = this;\n\n if (support.resize.indexOf(e.type) !== -1) {\n clearTimeout(that._resizeTimeout);\n that._resizeTimeout = setTimeout(function() {\n that._position();\n that._resizeTimeout = null;\n }, 50);\n } else {\n if (!that._hovered || (that._activated && that.element.find(\".k-list\").length > 0)) {\n that.close();\n }\n }\n },\n\n _toggleResize: function(toggle) {\n var method = toggle ? \"on\" : \"off\";\n var eventNames = support.resize;\n\n if (!(support.mobileOS.ios || support.mobileOS.android || support.browser.safari)) {\n eventNames += \" \" + SCROLL;\n }\n\n if (toggle && !this.scrollableParents) {\n this.scrollableParents = this._scrollableParents();\n }\n\n if (this.scrollableParents && this.scrollableParents.length) {\n this.scrollableParents[method](SCROLL, this._resizeProxy);\n }\n\n WINDOW[method](eventNames, this._resizeProxy);\n },\n\n _mousedown: function(e) {\n var that = this,\n container = that.element[0],\n options = that.options,\n anchor = $(options.anchor)[0],\n toggleTarget = options.toggleTarget,\n target = kendo.eventTarget(e),\n popup = $(target).closest(\".k-popup\"),\n mobile = popup.parent().parent(\".km-shim\").length;\n\n popup = popup[0];\n if (!mobile && popup && popup !== that.element[0]) {\n return;\n }\n\n // This MAY result in popup not closing in certain cases.\n if ($(e.target).closest(\"a\").data(\"rel\") === \"popover\") {\n return;\n }\n\n if (!contains(container, target) && !contains(anchor, target) && !(toggleTarget && contains($(toggleTarget)[0], target))) {\n that.close();\n }\n },\n\n _fit: function(position, size, viewPortSize) {\n var output = 0;\n\n if (position + size > viewPortSize) {\n output = viewPortSize - (position + size);\n }\n\n if (position < 0) {\n output = -position;\n }\n\n return output;\n },\n\n _flip: function(offset, size, anchorSize, viewPortSize, origin, position, boxSize) {\n var output = 0;\n boxSize = boxSize || size;\n\n if (position !== origin && position !== CENTER && origin !== CENTER) {\n if (offset + boxSize > viewPortSize) {\n output += -(anchorSize + size);\n }\n\n if (offset + output < 0) {\n output += anchorSize + size;\n }\n }\n return output;\n },\n\n _scrollableParents: function() {\n return $(this.options.anchor)\n .parentsUntil(\"body\")\n .filter(function(index, element) {\n return kendo.isScrollable(element);\n });\n },\n\n _position: function(fixed) {\n var that = this,\n //element = that.element.css(POSITION, \"\"), /* fixes telerik/kendo-ui-core#790, comes from telerik/kendo#615 */\n element = that.element,\n wrapper = that.wrapper,\n options = that.options,\n viewport = $(options.viewport),\n zoomLevel = support.zoomLevel(),\n isWindow = !!((viewport[0] == window) && window.innerWidth && (zoomLevel <= 1.02)),\n anchor = $(options.anchor),\n origins = options.origin.toLowerCase().split(\" \"),\n positions = options.position.toLowerCase().split(\" \"),\n collisions = that.collisions,\n siblingContainer, parents,\n parentZIndex, zIndex = 10002,\n idx = 0,\n docEl = document.documentElement,\n length, viewportOffset, viewportWidth, viewportHeight;\n\n if (options.viewport === window) {\n viewportOffset = {\n top: (window.pageYOffset || document.documentElement.scrollTop || 0),\n left: (window.pageXOffset || document.documentElement.scrollLeft || 0)\n };\n } else {\n viewportOffset = viewport.offset();\n }\n\n if (isWindow) {\n viewportWidth = window.innerWidth;\n viewportHeight = window.innerHeight;\n } else {\n viewportWidth = viewport.width();\n viewportHeight = viewport.height();\n }\n\n if (isWindow && docEl.scrollHeight - docEl.clientHeight > 0) {\n var sign = options.isRtl ? -1 : 1;\n\n viewportWidth -= sign * kendo.support.scrollbar();\n }\n\n siblingContainer = anchor.parents().filter(wrapper.siblings());\n\n if (siblingContainer[0]) {\n parentZIndex = Math.max(Number(siblingContainer.css(\"zIndex\")), 0);\n\n // set z-index to be more than that of the container/sibling\n // compensate with more units for window z-stack\n if (parentZIndex) {\n zIndex = parentZIndex + 10;\n } else {\n parents = anchor.parentsUntil(siblingContainer);\n for (length = parents.length; idx < length; idx++) {\n parentZIndex = Number($(parents[idx]).css(\"zIndex\"));\n if (parentZIndex && zIndex < parentZIndex) {\n zIndex = parentZIndex + 10;\n }\n }\n }\n }\n\n wrapper.css(\"zIndex\", zIndex);\n\n if (fixed && fixed.isFixed) {\n wrapper.css({ left: fixed.x, top: fixed.y });\n } else {\n wrapper.css(that._align(origins, positions));\n }\n\n var pos = getOffset(wrapper, POSITION, anchor[0] === wrapper.offsetParent()[0]),\n offset = getOffset(wrapper),\n anchorParent = anchor.offsetParent().parent(\".k-animation-container,.k-popup,.k-group\"); // If the parent is positioned, get the current positions\n\n if (anchorParent.length) {\n pos = getOffset(wrapper, POSITION, true);\n offset = getOffset(wrapper);\n }\n\n offset.top -= viewportOffset.top;\n offset.left -= viewportOffset.left;\n\n if (!that.wrapper.data(LOCATION)) { // Needed to reset the popup location after every closure - fixes the resize bugs.\n wrapper.data(LOCATION, extend({}, pos));\n }\n\n var offsets = extend({}, offset),\n location = extend({}, pos),\n adjustSize = options.adjustSize;\n\n if (collisions[0] === \"fit\") {\n location.top += that._fit(offsets.top, outerHeight(wrapper) + adjustSize.height, viewportHeight / zoomLevel);\n }\n\n if (collisions[1] === \"fit\") {\n location.left += that._fit(offsets.left, outerWidth(wrapper) + adjustSize.width, viewportWidth / zoomLevel);\n }\n\n var flipPos = extend({}, location);\n var elementHeight = outerHeight(element);\n var wrapperHeight = outerHeight(wrapper);\n\n if (!wrapper.height() && elementHeight) {\n wrapperHeight = wrapperHeight + elementHeight;\n }\n\n if (collisions[0] === \"flip\") {\n location.top += that._flip(offsets.top, elementHeight, outerHeight(anchor), viewportHeight / zoomLevel, origins[0], positions[0], wrapperHeight);\n }\n\n if (collisions[1] === \"flip\") {\n location.left += that._flip(offsets.left, outerWidth(element), outerWidth(anchor), viewportWidth / zoomLevel, origins[1], positions[1], outerWidth(wrapper));\n }\n\n wrapper.css(location);\n\n return (location.left != flipPos.left || location.top != flipPos.top);\n },\n\n _align: function(origin, position) {\n var that = this,\n element = that.wrapper,\n anchor = $(that.options.anchor),\n verticalOrigin = origin[0],\n horizontalOrigin = origin[1],\n verticalPosition = position[0],\n horizontalPosition = position[1],\n anchorOffset = getOffset(anchor),\n appendTo = $(that.options.appendTo),\n appendToOffset,\n width = outerWidth(element),\n height = outerHeight(element) || outerHeight(element.find(\".k-child-animation-container\").children().first()),\n anchorWidth = outerWidth(anchor),\n anchorHeight = outerHeight(anchor),\n top = that.options.omitOriginOffsets ? 0 : anchorOffset.top,\n left = that.options.omitOriginOffsets ? 0 : anchorOffset.left,\n round = Math.round;\n\n if (appendTo[0] != document.body) {\n appendToOffset = getOffset(appendTo);\n top -= appendToOffset.top;\n left -= appendToOffset.left;\n }\n\n\n if (verticalOrigin === BOTTOM) {\n top += anchorHeight;\n }\n\n if (verticalOrigin === CENTER) {\n top += round(anchorHeight / 2);\n }\n\n if (verticalPosition === BOTTOM) {\n top -= height;\n }\n\n if (verticalPosition === CENTER) {\n top -= round(height / 2);\n }\n\n if (horizontalOrigin === RIGHT) {\n left += anchorWidth;\n }\n\n if (horizontalOrigin === CENTER) {\n left += round(anchorWidth / 2);\n }\n\n if (horizontalPosition === RIGHT) {\n left -= width;\n }\n\n if (horizontalPosition === CENTER) {\n left -= round(width / 2);\n }\n\n return {\n top: top,\n left: left\n };\n }\n });\n\n ui.plugin(Popup);\n\n var stableSort = kendo.support.stableSort;\n var tabKeyTrapNS = \"kendoTabKeyTrap\";\n var focusableNodesSelector = \"a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, [tabindex], *[contenteditable]\";\n var TabKeyTrap = Class.extend({\n init: function(element, options) {\n this.element = $(element);\n this.element.autoApplyNS(tabKeyTrapNS);\n },\n\n trap: function() {\n this.element.on(\"keydown\", this._keepInTrap.bind(this));\n },\n\n removeTrap: function() {\n this.element.kendoDestroy(tabKeyTrapNS);\n },\n\n destroy: function() {\n this.element.kendoDestroy(tabKeyTrapNS);\n this.element = undefined$1;\n },\n\n shouldTrap: function() {\n return true;\n },\n\n _keepInTrap: function(e) {\n if (e.which !== 9 || !this.shouldTrap() || e.isDefaultPrevented()) {\n return;\n }\n\n var elements = this._focusableElements();\n var sortedElements = this._sortFocusableElements(elements);\n var next = this._nextFocusable(e, sortedElements);\n\n if (next) {\n this._focus(next);\n }\n\n e.preventDefault();\n },\n _focusableElements: function() {\n var elements = this.element.find(focusableNodesSelector).filter(function(i, item) {\n return item.tabIndex >= 0 && $(item).is(':visible') && !$(item).is('[disabled]');\n });\n\n if (this.element.is(\"[tabindex]\")) {\n elements.push(this.element[0]);\n }\n\n return elements;\n },\n _sortFocusableElements: function(elements) {\n var sortedElements;\n\n if (stableSort) {\n sortedElements = elements.sort(function(prev, next) {\n return prev.tabIndex - next.tabIndex;\n });\n } else {\n var attrName = \"__k_index\";\n elements.each(function(i, item) {\n item.setAttribute(attrName, i);\n });\n\n sortedElements = elements.sort(function(prev, next) {\n return prev.tabIndex === next.tabIndex ?\n parseInt(prev.getAttribute(attrName), 10) - parseInt(next.getAttribute(attrName), 10) :\n prev.tabIndex - next.tabIndex;\n });\n\n elements.removeAttr(attrName);\n }\n\n return sortedElements;\n },\n _nextFocusable: function(e, elements) {\n var count = elements.length;\n var current = elements.index(e.target);\n\n return elements.get((current + (e.shiftKey ? -1 : 1)) % count);\n },\n _focus: function(element) {\n if (element.nodeName == \"IFRAME\") {\n element.contentWindow.document.body.focus();\n return;\n }\n\n element.focus();\n\n if (element.nodeName == \"INPUT\" && element.setSelectionRange && this._haveSelectionRange(element)) {\n element.setSelectionRange(0, element.value.length);\n }\n },\n _haveSelectionRange: function(element) {\n var elementType = element.type.toLowerCase();\n\n return elementType === \"text\" || elementType === \"search\" ||\n elementType === \"url\" || elementType === \"tel\" ||\n elementType === \"password\";\n }\n });\n ui.Popup.TabKeyTrap = TabKeyTrap;\n })(window.kendo.jQuery);\n var kendo$O = kendo;\n\n var __meta__$L = {\n id: \"html.base\",\n name: \"Html.Base\",\n category: \"web\",\n description: \"\",\n depends: [\"core\"],\n features: []\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n Class = kendo.Class;\n\n kendo.html = kendo.html || {};\n\n var HTMLBase = Class.extend({\n init: function(element, options) {\n var that = this;\n that.element = $(element);\n options = options || {};\n delete options.name;\n that._initOptions(options);\n },\n options: {\n stylingOptions: []\n },\n _addClasses: function() {\n var that = this,\n options = that.options,\n stylingOptions = options.stylingOptions,\n previouslyAddedClasses = that.wrapper.data(\"added-classes\");\n\n stylingOptions = stylingOptions.map(function(option) {\n var validFill;\n\n if (option === \"themeColor\") {\n validFill = kendo.cssProperties.getValidClass({\n widget: options.name,\n propName: \"fillMode\",\n value: options.fillMode\n });\n\n if (!validFill || validFill.length === 0) {\n return \"\";\n }\n }\n\n return kendo.cssProperties.getValidClass({\n widget: options.name,\n propName: option,\n value: options[option],\n fill: options.fillMode\n });\n });\n\n if (previouslyAddedClasses) {\n that.wrapper.removeClass(previouslyAddedClasses.join(\" \"));\n }\n\n that.wrapper.data(\"added-classes\", stylingOptions);\n that.wrapper.addClass(stylingOptions.join(\" \"));\n },\n html: function() {\n var that = this;\n\n return that.wrapper[0].outerHTML;\n }\n });\n\n $.extend(kendo.html, {\n HTMLBase: HTMLBase\n });\n\n })(window.kendo.jQuery);\n var kendo$N = kendo;\n\n var __meta__$K = {\n id: \"html.icon\",\n name: \"Html.Icon\",\n category: \"web\",\n description: \"HTML font icon rendering utility for Kendo UI for jQuery.\",\n depends: [\"html.base\"]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n extend = $.extend,\n HTMLBase = kendo.html.HTMLBase;\n\n var KFONTICON = 'k-icon k-font-icon';\n var KI_PREFFIX = 'k-i-';\n var KSVGICON = 'k-icon k-svg-icon';\n var KSVG_PREFFIX = 'k-svg-i-';\n\n var FLIP_PREFIX = 'k-flip-';\n var FLIP_HORIZONTAL = `${FLIP_PREFIX}h`;\n var FLIP_VERTICAL = `${FLIP_PREFIX}v`;\n\n var THEME_COLOR_PREFIX = 'k-color-';\n\n var ICON_TYPES = {\n 'svg': (element, options) => new HTMLSvgIcon(element, options),\n 'font': (element, options) => new HTMLFontIcon(element, options)\n };\n\n var FLIP_CLASSES = {\n default: '',\n horizontal: FLIP_HORIZONTAL,\n vertical: FLIP_VERTICAL,\n both: `${FLIP_HORIZONTAL} ${FLIP_VERTICAL}`\n };\n\n var renderIcon = function(element, options) {\n if (!element || $.isPlainObject(element) || kendo.isString(element)) {\n options = element;\n element = $(\"\");\n }\n\n if (kendo.isString(options)) {\n options = {\n icon: options\n };\n }\n\n if (!kendo.isPresent(options.type)) {\n options.type = kendo.defaults.iconType ? kendo.defaults.iconType : 'svg';\n }\n\n if (kendo.isFunction(options.type)) {\n return options.type(element, options);\n }\n\n if (!kendo.isFunction(ICON_TYPES[options.type])) {\n return null;\n }\n\n return (ICON_TYPES[options.type](element, options)).html();\n };\n\n var HTMLBaseIcon = HTMLBase.extend({\n init: function(element, options) {\n var that = this;\n HTMLBase.fn.init.call(that, element, options);\n that._wrapper();\n },\n options: {\n name: 'HTMLIcon',\n size: 'none',\n themeColor: 'none',\n flip: 'default',\n iconClass: '',\n stylingOptions: [ 'size', 'themeColor', 'fill' ]\n },\n _wrapper: function() {\n var that = this;\n\n that._addClasses();\n },\n _addClasses: function() {\n var that = this,\n options = that.options,\n stylingOptions = options.stylingOptions,\n previouslyAddedClasses = that.wrapper.data(\"added-classes\");\n\n stylingOptions = stylingOptions.map(function(option) {\n if (option === 'themeColor') {\n return kendo.cssProperties.getValidClass({\n widget: options.name,\n propName: option,\n value: options[option],\n prefix: THEME_COLOR_PREFIX\n });\n }\n\n if (option === 'fill') {\n return FLIP_CLASSES[options.flip];\n }\n\n return kendo.cssProperties.getValidClass({\n widget: options.name,\n propName: option,\n value: options[option],\n fill: options.fillMode\n });\n });\n\n if (previouslyAddedClasses) {\n that.wrapper.removeClass(previouslyAddedClasses.filter(x => x !== that._className).join(\" \"));\n }\n\n that.wrapper.data(\"added-classes\", stylingOptions.concat([that._className]));\n that.wrapper.addClass(stylingOptions.join(\" \"));\n }\n });\n\n var HTMLFontIcon = HTMLBaseIcon.extend({\n init: function(element, options) {\n HTMLBaseIcon.fn.init.call(this, element, options);\n },\n options: extend({}, HTMLBaseIcon.fn.options, {\n name: 'HTMLFontIcon',\n icon: null\n }),\n _wrapper: function() {\n var that = this,\n // Find if there is an existing k-i- class appended to the element.\n currentIconClass = that.element[0].className.split(\" \").find(x => x.includes(KI_PREFFIX)),\n className = that.options.icon ? `${that.options.icon.startsWith(KI_PREFFIX) ? \"\" : KI_PREFFIX}${that.options.icon}` : \"\";\n\n that._className = className;\n that.wrapper = that.element\n .addClass(KFONTICON)\n .removeClass(currentIconClass) // Remove any existing icons.\n .addClass(className)\n .addClass(that.options.iconClass || '');\n\n HTMLBaseIcon.fn._wrapper.call(this);\n }\n });\n\n var HTMLSvgIcon = HTMLBaseIcon.extend({\n init: function(element, options) {\n // Ensure that the inner contents of the wrapping span element are always removed for re-rendering purposes.\n element.empty();\n HTMLBaseIcon.fn.init.call(this, element, options);\n },\n options: extend({}, HTMLBaseIcon.fn.options, {\n name: 'HTMLSVGIcon',\n icon: null\n }),\n _wrapper: function() {\n var that = this,\n icon = that.options.icon,\n iconClass = that.options.iconClass,\n // Find if there is an existing k-svg-i- class appended to the element.\n currentIconClass = that.element[0].className.split(\" \").find(x => x.includes(KSVG_PREFFIX)),\n svgElm = $(''),\n className;\n\n if (!icon && iconClass) {\n // match k-i-(some-icon-name)\n const regex = /k-i-(\\w+(?:-\\w+)*)/;\n let iconNameMatch = iconClass.match(regex);\n if (iconNameMatch) {\n icon = iconNameMatch[1];\n iconClass = iconClass.replace(iconNameMatch[0], \"\");\n }\n }\n\n if (kendo.isString(icon)) {\n // remove k-i- and convert kebab-case-icon to camelCaseIcon\n icon = icon.replace('k-i-', '').replace(/-./g, x=>x[1].toUpperCase());\n icon = kendo.ui.svgIcons[icon] || kendo.ui.svgIcons[`${icon}Icon`];\n }\n\n className = icon && icon.name ? `${KSVG_PREFFIX}${icon.name}` : '';\n that._className = className;\n\n that.wrapper = that.element\n .addClass(KSVGICON)\n .removeClass(currentIconClass) // Remove any existing icons.\n .addClass(className)\n .addClass(iconClass || '')\n .attr(\"aria-hidden\", true);\n\n if ($.isPlainObject(icon)) {\n svgElm.attr('viewBox', icon.viewBox || '')\n .attr({\n 'viewBox': icon.viewBox || '',\n 'focusable': 'false',\n 'xmlns': 'http://www.w3.org/2000/svg'\n })\n .html(icon.content || '');\n\n that.wrapper.append(svgElm[0].outerHTML);\n }\n\n HTMLBaseIcon.fn._wrapper.call(this);\n }\n });\n\n $.extend(kendo.html, {\n renderIcon: renderIcon,\n HTMLFontIcon: HTMLFontIcon,\n HTMLSvgIcon: HTMLSvgIcon,\n getIconRenderer: (type) => ICON_TYPES[type]\n });\n\n kendo.cssProperties.registerPrefix(\"HTMLFontIcon\", \"k-icon-\");\n\n kendo.cssProperties.registerValues(\"HTMLFontIcon\", [{\n prop: \"size\",\n values: kendo.cssProperties.sizeValues.concat([['xsmall', 'xs'], ['xlarge', 'xl'], ['xxlarge', 'xxl'], ['xxxlarge', 'xxxl']])\n }, {\n prop: \"themeColor\",\n values: ['primary', 'secondary', 'tertiary', 'inherit', 'info', 'success', 'warning', 'error', 'dark', 'light', 'inverse']\n }]);\n\n kendo.cssProperties.registerPrefix(\"HTMLSVGIcon\", \"k-icon-\");\n\n kendo.cssProperties.registerValues(\"HTMLSVGIcon\", [{\n prop: \"size\",\n values: kendo.cssProperties.sizeValues.concat([['xsmall', 'xs'], ['xlarge', 'xl'], ['xxlarge', 'xxl'], ['xxxlarge', 'xxxl']])\n }, {\n prop: \"themeColor\",\n values: ['primary', 'secondary', 'tertiary', 'inherit', 'info', 'success', 'warning', 'error', 'dark', 'light', 'inverse']\n }]);\n })(window.kendo.jQuery);\n var kendo$M = kendo;\n\n const caretTrIcon = {\n name: 'caret-tr',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const caretBrIcon = {\n name: 'caret-br',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const caretBlIcon = {\n name: 'caret-bl',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const caretTlIcon = {\n name: 'caret-tl',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const caretAltUpIcon = {\n name: 'caret-alt-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const caretAltRightIcon = {\n name: 'caret-alt-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const caretAltDownIcon = {\n name: 'caret-alt-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const caretAltLeftIcon = {\n name: 'caret-alt-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const caretAltToTopIcon = {\n name: 'caret-alt-to-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const caretAltToRightIcon = {\n name: 'caret-alt-to-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const caretAltToBottomIcon = {\n name: 'caret-alt-to-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const caretAltToLeftIcon = {\n name: 'caret-alt-to-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const caretDoubleAltUpIcon = {\n name: 'caret-double-alt-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const caretDoubleAltRightIcon = {\n name: 'caret-double-alt-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const caretDoubleAltDownIcon = {\n name: 'caret-double-alt-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const caretDoubleAltLeftIcon = {\n name: 'caret-double-alt-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const caretAltExpandIcon = {\n name: 'caret-alt-expand',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const arrowsNoChangeIcon = {\n name: 'arrows-no-change',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const arrowOverflowDownIcon = {\n name: 'arrow-overflow-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chevronUpIcon = {\n name: 'chevron-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chevronRightIcon = {\n name: 'chevron-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chevronDownIcon = {\n name: 'chevron-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chevronLeftIcon = {\n name: 'chevron-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const arrowUpIcon = {\n name: 'arrow-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const arrowRightIcon = {\n name: 'arrow-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const arrowDownIcon = {\n name: 'arrow-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const arrowLeftIcon = {\n name: 'arrow-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const levelDownIcon = {\n name: 'level-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const levelUpIcon = {\n name: 'level-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const levelToTopIcon = {\n name: 'level-to-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const colResizeIcon = {\n name: 'col-resize',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const arrowsAxesIcon = {\n name: 'arrows-axes',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const arrowsSwapIcon = {\n name: 'arrows-swap',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const dragAndDropIcon = {\n name: 'drag-and-drop',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const categorizeIcon = {\n name: 'categorize',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const gridIcon = {\n name: 'grid',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const gridLayoutIcon = {\n name: 'grid-layout',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const groupIcon = {\n name: 'group',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const ungroupIcon = {\n name: 'ungroup',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const handleDragIcon = {\n name: 'handle-drag',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const layoutIcon = {\n name: 'layout',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const layout1By4Icon = {\n name: 'layout-1-by-4',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const layout2By2Icon = {\n name: 'layout-2-by-2',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const layoutSideBySideIcon = {\n name: 'layout-side-by-side',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const layoutStackedIcon = {\n name: 'layout-stacked',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const columnsIcon = {\n name: 'columns',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const rowsIcon = {\n name: 'rows',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const reorderIcon = {\n name: 'reorder',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const menuIcon = {\n name: 'menu',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const moreVerticalIcon = {\n name: 'more-vertical',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const moreHorizontalIcon = {\n name: 'more-horizontal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const overlapIcon = {\n name: 'overlap',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const homeIcon = {\n name: 'home',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const arrowsLeftRightIcon = {\n name: 'arrows-left-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const arrowsTopBottomIcon = {\n name: 'arrows-top-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const borderRadiusBottomLeftIcon = {\n name: 'border-radius-bottom-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const borderRadiusBottomRightIcon = {\n name: 'border-radius-bottom-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const borderRadiusTopLeftIcon = {\n name: 'border-radius-top-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const borderRadiusTopRightIcon = {\n name: 'border-radius-top-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const borderRadiusIcon = {\n name: 'border-radius',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const borderStyleBottomIcon = {\n name: 'border-style-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const borderStyleLeftIcon = {\n name: 'border-style-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const borderStyleRightIcon = {\n name: 'border-style-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const borderStyleTopIcon = {\n name: 'border-style-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const borderStyleIcon = {\n name: 'border-style',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const boxSizingIcon = {\n name: 'box-sizing',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chevronDoubleDownIcon = {\n name: 'chevron-double-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chevronDoubleLeftIcon = {\n name: 'chevron-double-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chevronDoubleRightIcon = {\n name: 'chevron-double-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chevronDoubleUpIcon = {\n name: 'chevron-double-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const dataOdsIcon = {\n name: 'data-ods',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const nonRecurrenceIcon = {\n name: 'non-recurrence',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const displayBlockIcon = {\n name: 'display-block',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const displayFlexIcon = {\n name: 'display-flex',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const displayInlineFlexIcon = {\n name: 'display-inline-flex',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const dropletSliderIcon = {\n name: 'droplet-slider',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileReportIcon = {\n name: 'file-report',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const gapColumnIcon = {\n name: 'gap-column',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const gapRowIcon = {\n name: 'gap-row',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const handleResizeAltIcon = {\n name: 'handle-resize-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const handleResizeIcon = {\n name: 'handle-resize',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const imagesIcon = {\n name: 'images',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const letterSpaceIcon = {\n name: 'letter-space',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const lineHeightIcon = {\n name: 'line-height',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const listLatinBigIcon = {\n name: 'list-latin-big',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const listLatinSmallIcon = {\n name: 'list-latin-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const listRomanBigIcon = {\n name: 'list-roman-big',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const listRomanSmallIcon = {\n name: 'list-roman-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const listUnorderedOutlineIcon = {\n name: 'list-unordered-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const listUnorderedSquareIcon = {\n name: 'list-unordered-square',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const maxHeightIcon = {\n name: 'max-height',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const maxWidthIcon = {\n name: 'max-width',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const minHeightIcon = {\n name: 'min-height',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const minWidthIcon = {\n name: 'min-width',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const outlineOffsetIcon = {\n name: 'outline-offset',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const outlineWidthIcon = {\n name: 'outline-width',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const paddingBottomIcon = {\n name: 'padding-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const paddingLeftIcon = {\n name: 'padding-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const paddingRightIcon = {\n name: 'padding-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const paddingTopIcon = {\n name: 'padding-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const paddingIcon = {\n name: 'padding',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const positionBottomIcon = {\n name: 'position-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const positionLeftIcon = {\n name: 'position-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const positionRightIcon = {\n name: 'position-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const positionTopIcon = {\n name: 'position-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const regularExpressionIcon = {\n name: 'regular-expression',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const replaceAllIcon = {\n name: 'replace-all',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const replaceSingleIcon = {\n name: 'replace-single',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const reportElementIcon = {\n name: 'report-element',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const rightDoubleQuotesIcon = {\n name: 'right-double-quotes',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const wholeWordIcon = {\n name: 'whole-word',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const dataSdsIcon = {\n name: 'data-sds',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const downloadLightIcon = {\n name: 'download-light',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const eyeSlashIcon = {\n name: 'eye-slash',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const displayInlineBlockIcon = {\n name: 'display-inline-block',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const paperPlaneIcon = {\n name: 'paper-plane',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const gaugeLinearIcon = {\n name: 'gauge-linear',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const gaugeRadialIcon = {\n name: 'gauge-radial',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const envelopeBoxIcon = {\n name: 'envelope-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const envelopeLinkIcon = {\n name: 'envelope-link',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const envelopeIcon = {\n name: 'envelope',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const warningCircleIcon = {\n name: 'warning-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const warningTriangleIcon = {\n name: 'warning-triangle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const infoSolidIcon = {\n name: 'info-solid',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fontGrowIcon = {\n name: 'font-grow',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fontShrinkIcon = {\n name: 'font-shrink',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const textOverflowIcon = {\n name: 'text-overflow',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const textWrapArrowIcon = {\n name: 'text-wrap-arrow',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const textTruncateIcon = {\n name: 'text-truncate',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const textClipIcon = {\n name: 'text-clip',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const borderColorIcon = {\n name: 'border-color',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const borderTypeIcon = {\n name: 'border-type',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const thumbDownOutlineIcon = {\n name: 'thumb-down-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const thumbDownIcon = {\n name: 'thumb-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const thumbUpOutlineIcon = {\n name: 'thumb-up-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const thumbUpIcon = {\n name: 'thumb-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const sparklesIcon = {\n name: 'sparkles',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const paragraphMarkIcon = {\n name: 'paragraph-mark',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const paragraphHeightIcon = {\n name: 'paragraph-height',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const userOutlineIcon = {\n name: 'user-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const undoIcon = {\n name: 'undo',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const redoIcon = {\n name: 'redo',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const arrowRotateCcwIcon = {\n name: 'arrow-rotate-ccw',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const arrowRotateCwIcon = {\n name: 'arrow-rotate-cw',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const arrowsNoRepeatIcon = {\n name: 'arrows-no-repeat',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const arrowRotateCcwSmallIcon = {\n name: 'arrow-rotate-ccw-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const arrowRotateCwSmallIcon = {\n name: 'arrow-rotate-cw-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const clockIcon = {\n name: 'clock',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const calendarIcon = {\n name: 'calendar',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const saveIcon = {\n name: 'save',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const printIcon = {\n name: 'print',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const pencilIcon = {\n name: 'pencil',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const trashIcon = {\n name: 'trash',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const paperclipIcon = {\n name: 'paperclip',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const paperclipAltIcon = {\n name: 'paperclip-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const linkIcon = {\n name: 'link',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const unlinkIcon = {\n name: 'unlink',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const linkVerticalIcon = {\n name: 'link-vertical',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const unlinkVerticalIcon = {\n name: 'unlink-vertical',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const lockIcon = {\n name: 'lock',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const unlockIcon = {\n name: 'unlock',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const cancelIcon = {\n name: 'cancel',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const cancelOutlineIcon = {\n name: 'cancel-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const cancelCircleIcon = {\n name: 'cancel-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const checkIcon = {\n name: 'check',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const checkOutlineIcon = {\n name: 'check-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const checkCircleIcon = {\n name: 'check-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const xIcon = {\n name: 'x',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const xOutlineIcon = {\n name: 'x-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const xCircleIcon = {\n name: 'x-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const plusIcon = {\n name: 'plus',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const plusOutlineIcon = {\n name: 'plus-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const plusCircleIcon = {\n name: 'plus-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const minusIcon = {\n name: 'minus',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const minusOutlineIcon = {\n name: 'minus-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const minusCircleIcon = {\n name: 'minus-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const sortAscIcon = {\n name: 'sort-asc',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const sortDescIcon = {\n name: 'sort-desc',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const sortClearIcon = {\n name: 'sort-clear',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const sortAscSmallIcon = {\n name: 'sort-asc-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const sortDescSmallIcon = {\n name: 'sort-desc-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const filterIcon = {\n name: 'filter',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const filterClearIcon = {\n name: 'filter-clear',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const filterSmallIcon = {\n name: 'filter-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const filterSortAscSmallIcon = {\n name: 'filter-sort-asc-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const filterSortDescSmallIcon = {\n name: 'filter-sort-desc-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const filterAddExpressionIcon = {\n name: 'filter-add-expression',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const filterAddGroupIcon = {\n name: 'filter-add-group',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const loginIcon = {\n name: 'login',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const logoutIcon = {\n name: 'logout',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const downloadIcon = {\n name: 'download',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const uploadIcon = {\n name: 'upload',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const hyperlinkOpenIcon = {\n name: 'hyperlink-open',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const hyperlinkOpenSmIcon = {\n name: 'hyperlink-open-sm',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const launchIcon = {\n name: 'launch',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const windowIcon = {\n name: 'window',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const windowRestoreIcon = {\n name: 'window-restore',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const windowMinimizeIcon = {\n name: 'window-minimize',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const gearIcon = {\n name: 'gear',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const gearsIcon = {\n name: 'gears',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const wrenchIcon = {\n name: 'wrench',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const eyeIcon = {\n name: 'eye',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const searchIcon = {\n name: 'search',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const zoomInIcon = {\n name: 'zoom-in',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const zoomOutIcon = {\n name: 'zoom-out',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const arrowsMoveIcon = {\n name: 'arrows-move',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const calculatorIcon = {\n name: 'calculator',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const cartIcon = {\n name: 'cart',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const connectorIcon = {\n name: 'connector',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const plusSmIcon = {\n name: 'plus-sm',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const minusSmIcon = {\n name: 'minus-sm',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const kpiStatusDenyIcon = {\n name: 'kpi-status-deny',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const kpiStatusHoldIcon = {\n name: 'kpi-status-hold',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const kpiStatusOpenIcon = {\n name: 'kpi-status-open',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const equalIcon = {\n name: 'equal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const notEqualIcon = {\n name: 'not-equal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const lessOrEqualIcon = {\n name: 'less-or-equal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const greaterOrEqualIcon = {\n name: 'greater-or-equal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const divideIcon = {\n name: 'divide',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const accessibilityIcon = {\n name: 'accessibility',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const barcodeOutlineIcon = {\n name: 'barcode-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const barcodeIcon = {\n name: 'barcode',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const barcodeScannerIcon = {\n name: 'barcode-scanner',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const qrCodeOutlineIcon = {\n name: 'qr-code-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const qrCodeIcon = {\n name: 'qr-code',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const qrCodeScannerIcon = {\n name: 'qr-code-scanner',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const barcodeQrCodeScannerIcon = {\n name: 'barcode-qr-code-scanner',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const signatureIcon = {\n name: 'signature',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const handIcon = {\n name: 'hand',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const pointerIcon = {\n name: 'pointer',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const stickIcon = {\n name: 'stick',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const unstickIcon = {\n name: 'unstick',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const setColumnPositionIcon = {\n name: 'set-column-position',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const clockArrowRotateIcon = {\n name: 'clock-arrow-rotate',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const playIcon = {\n name: 'play',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const pauseIcon = {\n name: 'pause',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const stopIcon = {\n name: 'stop',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const rewindIcon = {\n name: 'rewind',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const forwardIcon = {\n name: 'forward',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const volumeDownIcon = {\n name: 'volume-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const volumeUpIcon = {\n name: 'volume-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const volumeMuteIcon = {\n name: 'volume-mute',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const hdIcon = {\n name: 'hd',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const closedCaptionsIcon = {\n name: 'closed-captions',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const playlistIcon = {\n name: 'playlist',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const musicNotesIcon = {\n name: 'music-notes',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const playSmIcon = {\n name: 'play-sm',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const pauseSmIcon = {\n name: 'pause-sm',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const stopSmIcon = {\n name: 'stop-sm',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const heartOutlineIcon = {\n name: 'heart-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const heartIcon = {\n name: 'heart',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const starOutlineIcon = {\n name: 'star-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const starIcon = {\n name: 'star',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const checkboxIcon = {\n name: 'checkbox',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const checkboxCheckedIcon = {\n name: 'checkbox-checked',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const checkboxIndeterminateIcon = {\n name: 'checkbox-indeterminate',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const checkboxNullIcon = {\n name: 'checkbox-null',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const circleIcon = {\n name: 'circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const radiobuttonIcon = {\n name: 'radiobutton',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const radiobuttonCheckedIcon = {\n name: 'radiobutton-checked',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const bellIcon = {\n name: 'bell',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const infoCircleIcon = {\n name: 'info-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const questionCircleIcon = {\n name: 'question-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const exclamationCircleIcon = {\n name: 'exclamation-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const cameraIcon = {\n name: 'camera',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const imageIcon = {\n name: 'image',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const imageExportIcon = {\n name: 'image-export',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const zoomActualSizeIcon = {\n name: 'zoom-actual-size',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const zoomBestFitIcon = {\n name: 'zoom-best-fit',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const imageResizeIcon = {\n name: 'image-resize',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const cropIcon = {\n name: 'crop',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const mirrorIcon = {\n name: 'mirror',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const flipHorizontalIcon = {\n name: 'flip-horizontal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const flipVerticalIcon = {\n name: 'flip-vertical',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const rotateIcon = {\n name: 'rotate',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const rotateRightIcon = {\n name: 'rotate-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const rotateLeftIcon = {\n name: 'rotate-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const brushIcon = {\n name: 'brush',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const paletteIcon = {\n name: 'palette',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const dropletIcon = {\n name: 'droplet',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const shapeLineIcon = {\n name: 'shape-line',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const brightnessContrastIcon = {\n name: 'brightness-contrast',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const slidersIcon = {\n name: 'sliders',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const invertColorsIcon = {\n name: 'invert-colors',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const transparencyIcon = {\n name: 'transparency',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const grayscaleIcon = {\n name: 'grayscale',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const blurIcon = {\n name: 'blur',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const sharpenIcon = {\n name: 'sharpen',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const shapesIcon = {\n name: 'shapes',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const roundCornersIcon = {\n name: 'round-corners',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const bringToFrontIcon = {\n name: 'bring-to-front',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const bringToBackIcon = {\n name: 'bring-to-back',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const bringForwardIcon = {\n name: 'bring-forward',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const bringBackwardIcon = {\n name: 'bring-backward',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignSelfStartIcon = {\n name: 'align-self-start',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignSelfCenterIcon = {\n name: 'align-self-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignSelfEndIcon = {\n name: 'align-self-end',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignSelfStartAltIcon = {\n name: 'align-self-start-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignSelfCenterAltIcon = {\n name: 'align-self-center-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignSelfEndAltIcon = {\n name: 'align-self-end-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const thumbnailsUpIcon = {\n name: 'thumbnails-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const thumbnailsRightIcon = {\n name: 'thumbnails-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const thumbnailsDownIcon = {\n name: 'thumbnails-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const thumbnailsLeftIcon = {\n name: 'thumbnails-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fullscreenIcon = {\n name: 'fullscreen',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fullscreenExitIcon = {\n name: 'fullscreen-exit',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const dropletSlashIcon = {\n name: 'droplet-slash',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const photosIcon = {\n name: 'photos',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignToGridIcon = {\n name: 'align-to-grid',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const sizeToGridIcon = {\n name: 'size-to-grid',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const makeSameSizeIcon = {\n name: 'make-same-size',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const makeSameWidthIcon = {\n name: 'make-same-width',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const makeSameHeightIcon = {\n name: 'make-same-height',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const makeHorizontalSpacingEqualIcon = {\n name: 'make-horizontal-spacing-equal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const increaseHorizontalSpacingIcon = {\n name: 'increase-horizontal-spacing',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const decreaseHorizontalSpacingIcon = {\n name: 'decrease-horizontal-spacing',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const removeHorizontalSpacingIcon = {\n name: 'remove-horizontal-spacing',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const makeVerticalSpacingEqualIcon = {\n name: 'make-vertical-spacing-equal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const increaseVerticalSpacingIcon = {\n name: 'increase-vertical-spacing',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const decreaseVerticalSpacingIcon = {\n name: 'decrease-vertical-spacing',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const removeVerticalSpacingIcon = {\n name: 'remove-vertical-spacing',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const eyedropperIcon = {\n name: 'eyedropper',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const snapGridIcon = {\n name: 'snap-grid',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const snapToGridlinesIcon = {\n name: 'snap-to-gridlines',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const snapToSnaplinesIcon = {\n name: 'snap-to-snaplines',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const dimensionsIcon = {\n name: 'dimensions',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignSelfStretchIcon = {\n name: 'align-self-stretch',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignSelfStretchAltIcon = {\n name: 'align-self-stretch-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignItemsStartIcon = {\n name: 'align-items-start',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignItemsCenterIcon = {\n name: 'align-items-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignItemsEndIcon = {\n name: 'align-items-end',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignItemsStretchIcon = {\n name: 'align-items-stretch',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignItemsBaselineIcon = {\n name: 'align-items-baseline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignItemsStartAltIcon = {\n name: 'align-items-start-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignItemsCenterAltIcon = {\n name: 'align-items-center-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignItemsEndAltIcon = {\n name: 'align-items-end-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignItemsStretchAltIcon = {\n name: 'align-items-stretch-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignItemsBaselineAltIcon = {\n name: 'align-items-baseline-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const justifyContentStartIcon = {\n name: 'justify-content-start',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const justifyContentCenterIcon = {\n name: 'justify-content-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const justifyContentEndIcon = {\n name: 'justify-content-end',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const justifyContentBetweenIcon = {\n name: 'justify-content-between',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const justifyContentAroundIcon = {\n name: 'justify-content-around',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const justifyContentStartAltIcon = {\n name: 'justify-content-start-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const justifyContentCenterAltIcon = {\n name: 'justify-content-center-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const justifyContentEndAltIcon = {\n name: 'justify-content-end-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const justifyContentBetweenAltIcon = {\n name: 'justify-content-between-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const justifyContentAroundAltIcon = {\n name: 'justify-content-around-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileWrenchIcon = {\n name: 'file-wrench',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const boldIcon = {\n name: 'bold',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const italicIcon = {\n name: 'italic',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const underlineIcon = {\n name: 'underline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fontFamilyIcon = {\n name: 'font-family',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const foregroundColorIcon = {\n name: 'foreground-color',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const convertLowercaseIcon = {\n name: 'convert-lowercase',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const convertUppercaseIcon = {\n name: 'convert-uppercase',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const strikethroughIcon = {\n name: 'strikethrough',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const subscriptIcon = {\n name: 'subscript',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const supscriptIcon = {\n name: 'supscript',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const divIcon = {\n name: 'div',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const allIcon = {\n name: 'all',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const h1Icon = {\n name: 'h1',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const h2Icon = {\n name: 'h2',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const h3Icon = {\n name: 'h3',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const h4Icon = {\n name: 'h4',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const h5Icon = {\n name: 'h5',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const h6Icon = {\n name: 'h6',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const listOrderedIcon = {\n name: 'list-ordered',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const listUnorderedIcon = {\n name: 'list-unordered',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const indentIcon = {\n name: 'indent',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const outdentIcon = {\n name: 'outdent',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const insertTopIcon = {\n name: 'insert-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const insertMiddleIcon = {\n name: 'insert-middle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const insertBottomIcon = {\n name: 'insert-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignTopIcon = {\n name: 'align-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignMiddleIcon = {\n name: 'align-middle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignBottomIcon = {\n name: 'align-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignLeftIcon = {\n name: 'align-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignCenterIcon = {\n name: 'align-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignRightIcon = {\n name: 'align-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignJustifyIcon = {\n name: 'align-justify',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const alignRemoveIcon = {\n name: 'align-remove',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const textWrapIcon = {\n name: 'text-wrap',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const horizontalRuleIcon = {\n name: 'horizontal-rule',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableAlignTopLeftIcon = {\n name: 'table-align-top-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableAlignTopCenterIcon = {\n name: 'table-align-top-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableAlignTopRightIcon = {\n name: 'table-align-top-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableAlignMiddleLeftIcon = {\n name: 'table-align-middle-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableAlignMiddleCenterIcon = {\n name: 'table-align-middle-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableAlignMiddleRightIcon = {\n name: 'table-align-middle-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableAlignBottomLeftIcon = {\n name: 'table-align-bottom-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableAlignBottomCenterIcon = {\n name: 'table-align-bottom-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableAlignBottomRightIcon = {\n name: 'table-align-bottom-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableAlignRemoveIcon = {\n name: 'table-align-remove',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const bordersAllIcon = {\n name: 'borders-all',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const bordersOutsideIcon = {\n name: 'borders-outside',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const bordersInsideIcon = {\n name: 'borders-inside',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const bordersInsideHorizontalIcon = {\n name: 'borders-inside-horizontal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const bordersInsideVerticalIcon = {\n name: 'borders-inside-vertical',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const borderTopIcon = {\n name: 'border-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const borderBottomIcon = {\n name: 'border-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const borderLeftIcon = {\n name: 'border-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const borderRightIcon = {\n name: 'border-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const bordersNoneIcon = {\n name: 'borders-none',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const bordersShowHideIcon = {\n name: 'borders-show-hide',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const formIcon = {\n name: 'form',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const formElementIcon = {\n name: 'form-element',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const codeSnippetIcon = {\n name: 'code-snippet',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const selectAllIcon = {\n name: 'select-all',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const buttonIcon = {\n name: 'button',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const selectBoxIcon = {\n name: 'select-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const calendarDateIcon = {\n name: 'calendar-date',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const groupBoxIcon = {\n name: 'group-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const textareaIcon = {\n name: 'textarea',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const textboxIcon = {\n name: 'textbox',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const textboxHiddenIcon = {\n name: 'textbox-hidden',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const passwordIcon = {\n name: 'password',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const paragraphAddIcon = {\n name: 'paragraph-add',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const editToolsIcon = {\n name: 'edit-tools',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const templateManagerIcon = {\n name: 'template-manager',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const changeManuallyIcon = {\n name: 'change-manually',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const trackChangesIcon = {\n name: 'track-changes',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const trackChangesEnableIcon = {\n name: 'track-changes-enable',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const trackChangesAcceptIcon = {\n name: 'track-changes-accept',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const trackChangesAcceptAllIcon = {\n name: 'track-changes-accept-all',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const trackChangesRejectIcon = {\n name: 'track-changes-reject',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const trackChangesRejectAllIcon = {\n name: 'track-changes-reject-all',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const documentManagerIcon = {\n name: 'document-manager',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const customIconIcon = {\n name: 'custom-icon',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const bookIcon = {\n name: 'book',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const imageAddIcon = {\n name: 'image-add',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const imageEditIcon = {\n name: 'image-edit',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const imageMapEditorIcon = {\n name: 'image-map-editor',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const commentIcon = {\n name: 'comment',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const commentRemoveIcon = {\n name: 'comment-remove',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const commentsRemoveIcon = {\n name: 'comments-remove',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const silverlightIcon = {\n name: 'silverlight',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const mediaManagerIcon = {\n name: 'media-manager',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const videoExternalIcon = {\n name: 'video-external',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const flashManagerIcon = {\n name: 'flash-manager',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const binocularsIcon = {\n name: 'binoculars',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const copyIcon = {\n name: 'copy',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const cutIcon = {\n name: 'cut',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const clipboardIcon = {\n name: 'clipboard',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const clipboardCodeIcon = {\n name: 'clipboard-code',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const clipboardWordIcon = {\n name: 'clipboard-word',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const clipboardWordAltIcon = {\n name: 'clipboard-word-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const clipboardHtmlIcon = {\n name: 'clipboard-html',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const clipboardMarkdownIcon = {\n name: 'clipboard-markdown',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const clipboardTextIcon = {\n name: 'clipboard-text',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const applyFormatIcon = {\n name: 'apply-format',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const clearCssIcon = {\n name: 'clear-css',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const copyFormatIcon = {\n name: 'copy-format',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const stripAllFormattingIcon = {\n name: 'strip-all-formatting',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const stripCssFormatIcon = {\n name: 'strip-css-format',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const stripFontElementsIcon = {\n name: 'strip-font-elements',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const stripSpanElementsIcon = {\n name: 'strip-span-elements',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const stripWordFormattingIcon = {\n name: 'strip-word-formatting',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const formatCodeBlockIcon = {\n name: 'format-code-block',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const buildingBlocksIcon = {\n name: 'building-blocks',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const puzzlePieceIcon = {\n name: 'puzzle-piece',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const linkAddIcon = {\n name: 'link-add',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const globeLinkIcon = {\n name: 'globe-link',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const globeUnlinkIcon = {\n name: 'globe-unlink',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const envelopLinkIcon = {\n name: 'envelop-link',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const anchorIcon = {\n name: 'anchor',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableAddIcon = {\n name: 'table-add',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableIcon = {\n name: 'table',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tablePropertiesIcon = {\n name: 'table-properties',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableCellIcon = {\n name: 'table-cell',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableCellPropertiesIcon = {\n name: 'table-cell-properties',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableColumnInsertLeftIcon = {\n name: 'table-column-insert-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableColumnInsertRightIcon = {\n name: 'table-column-insert-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableRowInsertAboveIcon = {\n name: 'table-row-insert-above',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableRowInsertBelowIcon = {\n name: 'table-row-insert-below',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableColumnDeleteIcon = {\n name: 'table-column-delete',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableRowDeleteIcon = {\n name: 'table-row-delete',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableCellDeleteIcon = {\n name: 'table-cell-delete',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableDeleteIcon = {\n name: 'table-delete',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const cellsMergeIcon = {\n name: 'cells-merge',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const cellsMergeHorizontallyIcon = {\n name: 'cells-merge-horizontally',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const cellsMergeVerticallyIcon = {\n name: 'cells-merge-vertically',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const cellSplitHorizontallyIcon = {\n name: 'cell-split-horizontally',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const cellSplitVerticallyIcon = {\n name: 'cell-split-vertically',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableUnmergeIcon = {\n name: 'table-unmerge',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const paneFreezeIcon = {\n name: 'pane-freeze',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const rowFreezeIcon = {\n name: 'row-freeze',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const columnFreezeIcon = {\n name: 'column-freeze',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const toolbarFloatIcon = {\n name: 'toolbar-float',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const spellCheckerIcon = {\n name: 'spell-checker',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const validationXhtmlIcon = {\n name: 'validation-xhtml',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const validationDataIcon = {\n name: 'validation-data',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const toggleFullScreenModeIcon = {\n name: 'toggle-full-screen-mode',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const formulaFxIcon = {\n name: 'formula-fx',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const sumIcon = {\n name: 'sum',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const symbolIcon = {\n name: 'symbol',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const dollarIcon = {\n name: 'dollar',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const percentIcon = {\n name: 'percent',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const customFormatIcon = {\n name: 'custom-format',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const decimalIncreaseIcon = {\n name: 'decimal-increase',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const decimalDecreaseIcon = {\n name: 'decimal-decrease',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fontSizeIcon = {\n name: 'font-size',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const imageAbsolutePositionIcon = {\n name: 'image-absolute-position',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableWizardIcon = {\n name: 'table-wizard',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const crosstabIcon = {\n name: 'crosstab',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const crosstabWizardIcon = {\n name: 'crosstab-wizard',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableBodyIcon = {\n name: 'table-body',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableColumnGroupsIcon = {\n name: 'table-column-groups',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableCornerIcon = {\n name: 'table-corner',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tableRowGroupsIcon = {\n name: 'table-row-groups',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const globeOutlineIcon = {\n name: 'globe-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const globeIcon = {\n name: 'globe',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const mapMarkerIcon = {\n name: 'map-marker',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const mapMarkerTargetIcon = {\n name: 'map-marker-target',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const pinIcon = {\n name: 'pin',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const unpinIcon = {\n name: 'unpin',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const shareIcon = {\n name: 'share',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const userIcon = {\n name: 'user',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const inboxIcon = {\n name: 'inbox',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const bloggerIcon = {\n name: 'blogger',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const bloggerBoxIcon = {\n name: 'blogger-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const deliciousIcon = {\n name: 'delicious',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const deliciousBoxIcon = {\n name: 'delicious-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const diggIcon = {\n name: 'digg',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const diggBoxIcon = {\n name: 'digg-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const envelopIcon = {\n name: 'envelop',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const envelopBoxIcon = {\n name: 'envelop-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const facebookIcon = {\n name: 'facebook',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const facebookBoxIcon = {\n name: 'facebook-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const googleIcon = {\n name: 'google',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const googleBoxIcon = {\n name: 'google-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const googlePlusIcon = {\n name: 'google-plus',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const googlePlusBoxIcon = {\n name: 'google-plus-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const linkedinIcon = {\n name: 'linkedin',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const linkedinBoxIcon = {\n name: 'linkedin-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const myspaceIcon = {\n name: 'myspace',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const myspaceBoxIcon = {\n name: 'myspace-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const pinterestIcon = {\n name: 'pinterest',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const pinterestBoxIcon = {\n name: 'pinterest-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const redditIcon = {\n name: 'reddit',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const redditBoxIcon = {\n name: 'reddit-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const stumbleUponIcon = {\n name: 'stumble-upon',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const stumbleUponBoxIcon = {\n name: 'stumble-upon-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tellAFriendIcon = {\n name: 'tell-a-friend',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tellAFriendBoxIcon = {\n name: 'tell-a-friend-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tumblrIcon = {\n name: 'tumblr',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tumblrBoxIcon = {\n name: 'tumblr-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const twitterIcon = {\n name: 'twitter',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const twitterBoxIcon = {\n name: 'twitter-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const yammerIcon = {\n name: 'yammer',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const yammerBoxIcon = {\n name: 'yammer-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const behanceIcon = {\n name: 'behance',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const behanceBoxIcon = {\n name: 'behance-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const dribbbleIcon = {\n name: 'dribbble',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const dribbbleBoxIcon = {\n name: 'dribbble-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const rssIcon = {\n name: 'rss',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const rssBoxIcon = {\n name: 'rss-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const vimeoIcon = {\n name: 'vimeo',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const vimeoBoxIcon = {\n name: 'vimeo-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const youtubeIcon = {\n name: 'youtube',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const youtubeBoxIcon = {\n name: 'youtube-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const folderIcon = {\n name: 'folder',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const folderOpenIcon = {\n name: 'folder-open',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const folderAddIcon = {\n name: 'folder-add',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const folderUpIcon = {\n name: 'folder-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const folderMoreIcon = {\n name: 'folder-more',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const aggregateFieldsIcon = {\n name: 'aggregate-fields',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileIcon = {\n name: 'file',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileAddIcon = {\n name: 'file-add',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileTxtIcon = {\n name: 'file-txt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileCsvIcon = {\n name: 'file-csv',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileExcelIcon = {\n name: 'file-excel',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileWordIcon = {\n name: 'file-word',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileMdbIcon = {\n name: 'file-mdb',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const filePptIcon = {\n name: 'file-ppt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const filePdfIcon = {\n name: 'file-pdf',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const filePsdIcon = {\n name: 'file-psd',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileFlashIcon = {\n name: 'file-flash',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileConfigIcon = {\n name: 'file-config',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileAscxIcon = {\n name: 'file-ascx',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileBacIcon = {\n name: 'file-bac',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileZipIcon = {\n name: 'file-zip',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const filmIcon = {\n name: 'film',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const css3Icon = {\n name: 'css3',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const html5Icon = {\n name: 'html5',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const codeIcon = {\n name: 'code',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const cssIcon = {\n name: 'css',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const jsIcon = {\n name: 'js',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const exeIcon = {\n name: 'exe',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const csprojIcon = {\n name: 'csproj',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const vbprojIcon = {\n name: 'vbproj',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const csIcon = {\n name: 'cs',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const vbIcon = {\n name: 'vb',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const slnIcon = {\n name: 'sln',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const cloudIcon = {\n name: 'cloud',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileHorizontalIcon = {\n name: 'file-horizontal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const subreportIcon = {\n name: 'subreport',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const dataIcon = {\n name: 'data',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileHeaderIcon = {\n name: 'file-header',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileFooterIcon = {\n name: 'file-footer',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const groupHeaderSectionIcon = {\n name: 'group-header-section',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const groupFooterSectionIcon = {\n name: 'group-footer-section',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const pageHeaderSectionIcon = {\n name: 'page-header-section',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const pageFooterSectionIcon = {\n name: 'page-footer-section',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const detailSectionIcon = {\n name: 'detail-section',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tocSectionIcon = {\n name: 'toc-section',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const groupSectionIcon = {\n name: 'group-section',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const parametersIcon = {\n name: 'parameters',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const dataCsvIcon = {\n name: 'data-csv',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const dataJsonIcon = {\n name: 'data-json',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const dataSqlIcon = {\n name: 'data-sql',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const dataWebIcon = {\n name: 'data-web',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const groupCollectionIcon = {\n name: 'group-collection',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const parameterBooleanIcon = {\n name: 'parameter-boolean',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const parameterDateTimeIcon = {\n name: 'parameter-date-time',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const parameterFloatIcon = {\n name: 'parameter-float',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const parameterIntegerIcon = {\n name: 'parameter-integer',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const parameterStringIcon = {\n name: 'parameter-string',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tocSectionLevelIcon = {\n name: 'toc-section-level',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const inheritedIcon = {\n name: 'inherited',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileVideoIcon = {\n name: 'file-video',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileAudioIcon = {\n name: 'file-audio',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileImageIcon = {\n name: 'file-image',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const filePresentationIcon = {\n name: 'file-presentation',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileDataIcon = {\n name: 'file-data',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileDiscImageIcon = {\n name: 'file-disc-image',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileProgrammingIcon = {\n name: 'file-programming',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const parametersByteArrayIcon = {\n name: 'parameters-byte-array',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const parametersUnknownIcon = {\n name: 'parameters-unknown',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileErrorIcon = {\n name: 'file-error',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const filesErrorIcon = {\n name: 'files-error',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const dataRestIcon = {\n name: 'data-rest',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const fileTypescriptIcon = {\n name: 'file-typescript',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tablePositionStartIcon = {\n name: 'table-position-start',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tablePositionCenterIcon = {\n name: 'table-position-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const tablePositionEndIcon = {\n name: 'table-position-end',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const listRomanUpperIcon = {\n name: 'list-roman-upper',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const listRomanLowerIcon = {\n name: 'list-roman-lower',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const importIcon = {\n name: 'import',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const exportIcon = {\n name: 'export',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const graphIcon = {\n name: 'graph',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartColumnClusteredIcon = {\n name: 'chart-column-clustered',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartColumnStackedIcon = {\n name: 'chart-column-stacked',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartColumnStacked100Icon = {\n name: 'chart-column-stacked100',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartColumnRangeIcon = {\n name: 'chart-column-range',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartBarClusteredIcon = {\n name: 'chart-bar-clustered',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartBarStackedIcon = {\n name: 'chart-bar-stacked',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartBarStacked100Icon = {\n name: 'chart-bar-stacked100',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartBarRangeIcon = {\n name: 'chart-bar-range',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartAreaClusteredIcon = {\n name: 'chart-area-clustered',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartAreaStackedIcon = {\n name: 'chart-area-stacked',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartAreaStacked100Icon = {\n name: 'chart-area-stacked100',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartAreaRangeIcon = {\n name: 'chart-area-range',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartLineIcon = {\n name: 'chart-line',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartLineStackedIcon = {\n name: 'chart-line-stacked',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartLineStacked100Icon = {\n name: 'chart-line-stacked100',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartLineMarkersIcon = {\n name: 'chart-line-markers',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartLineStackedMarkersIcon = {\n name: 'chart-line-stacked-markers',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartLineStacked100MarkersIcon = {\n name: 'chart-line-stacked100-markers',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartPieIcon = {\n name: 'chart-pie',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartDoughnutIcon = {\n name: 'chart-doughnut',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartScatterIcon = {\n name: 'chart-scatter',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartScatterSmoothLinesMarkersIcon = {\n name: 'chart-scatter-smooth-lines-markers',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartScatterSmoothLinesIcon = {\n name: 'chart-scatter-smooth-lines',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartScatterStraightLinesMarkersIcon = {\n name: 'chart-scatter-straight-lines-markers',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartScatterStraightLinesIcon = {\n name: 'chart-scatter-straight-lines',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartBubbleIcon = {\n name: 'chart-bubble',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartCandlestickIcon = {\n name: 'chart-candlestick',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartOhlcIcon = {\n name: 'chart-ohlc',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartRadarIcon = {\n name: 'chart-radar',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartRadarMarkersIcon = {\n name: 'chart-radar-markers',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartRadarFilledIcon = {\n name: 'chart-radar-filled',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartRoseIcon = {\n name: 'chart-rose',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n const chartChoroplethIcon = {\n name: 'chart-choropleth',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var svgIcons = /*#__PURE__*/Object.freeze({\n __proto__: null,\n accessibilityIcon: accessibilityIcon,\n aggregateFieldsIcon: aggregateFieldsIcon,\n alignBottomIcon: alignBottomIcon,\n alignCenterIcon: alignCenterIcon,\n alignItemsBaselineAltIcon: alignItemsBaselineAltIcon,\n alignItemsBaselineIcon: alignItemsBaselineIcon,\n alignItemsCenterAltIcon: alignItemsCenterAltIcon,\n alignItemsCenterIcon: alignItemsCenterIcon,\n alignItemsEndAltIcon: alignItemsEndAltIcon,\n alignItemsEndIcon: alignItemsEndIcon,\n alignItemsStartAltIcon: alignItemsStartAltIcon,\n alignItemsStartIcon: alignItemsStartIcon,\n alignItemsStretchAltIcon: alignItemsStretchAltIcon,\n alignItemsStretchIcon: alignItemsStretchIcon,\n alignJustifyIcon: alignJustifyIcon,\n alignLeftIcon: alignLeftIcon,\n alignMiddleIcon: alignMiddleIcon,\n alignRemoveIcon: alignRemoveIcon,\n alignRightIcon: alignRightIcon,\n alignSelfCenterAltIcon: alignSelfCenterAltIcon,\n alignSelfCenterIcon: alignSelfCenterIcon,\n alignSelfEndAltIcon: alignSelfEndAltIcon,\n alignSelfEndIcon: alignSelfEndIcon,\n alignSelfStartAltIcon: alignSelfStartAltIcon,\n alignSelfStartIcon: alignSelfStartIcon,\n alignSelfStretchAltIcon: alignSelfStretchAltIcon,\n alignSelfStretchIcon: alignSelfStretchIcon,\n alignToGridIcon: alignToGridIcon,\n alignTopIcon: alignTopIcon,\n allIcon: allIcon,\n anchorIcon: anchorIcon,\n applyFormatIcon: applyFormatIcon,\n arrowDownIcon: arrowDownIcon,\n arrowLeftIcon: arrowLeftIcon,\n arrowOverflowDownIcon: arrowOverflowDownIcon,\n arrowRightIcon: arrowRightIcon,\n arrowRotateCcwIcon: arrowRotateCcwIcon,\n arrowRotateCcwSmallIcon: arrowRotateCcwSmallIcon,\n arrowRotateCwIcon: arrowRotateCwIcon,\n arrowRotateCwSmallIcon: arrowRotateCwSmallIcon,\n arrowUpIcon: arrowUpIcon,\n arrowsAxesIcon: arrowsAxesIcon,\n arrowsLeftRightIcon: arrowsLeftRightIcon,\n arrowsMoveIcon: arrowsMoveIcon,\n arrowsNoChangeIcon: arrowsNoChangeIcon,\n arrowsNoRepeatIcon: arrowsNoRepeatIcon,\n arrowsSwapIcon: arrowsSwapIcon,\n arrowsTopBottomIcon: arrowsTopBottomIcon,\n barcodeIcon: barcodeIcon,\n barcodeOutlineIcon: barcodeOutlineIcon,\n barcodeQrCodeScannerIcon: barcodeQrCodeScannerIcon,\n barcodeScannerIcon: barcodeScannerIcon,\n behanceBoxIcon: behanceBoxIcon,\n behanceIcon: behanceIcon,\n bellIcon: bellIcon,\n binocularsIcon: binocularsIcon,\n bloggerBoxIcon: bloggerBoxIcon,\n bloggerIcon: bloggerIcon,\n blurIcon: blurIcon,\n boldIcon: boldIcon,\n bookIcon: bookIcon,\n borderBottomIcon: borderBottomIcon,\n borderColorIcon: borderColorIcon,\n borderLeftIcon: borderLeftIcon,\n borderRadiusBottomLeftIcon: borderRadiusBottomLeftIcon,\n borderRadiusBottomRightIcon: borderRadiusBottomRightIcon,\n borderRadiusIcon: borderRadiusIcon,\n borderRadiusTopLeftIcon: borderRadiusTopLeftIcon,\n borderRadiusTopRightIcon: borderRadiusTopRightIcon,\n borderRightIcon: borderRightIcon,\n borderStyleBottomIcon: borderStyleBottomIcon,\n borderStyleIcon: borderStyleIcon,\n borderStyleLeftIcon: borderStyleLeftIcon,\n borderStyleRightIcon: borderStyleRightIcon,\n borderStyleTopIcon: borderStyleTopIcon,\n borderTopIcon: borderTopIcon,\n borderTypeIcon: borderTypeIcon,\n bordersAllIcon: bordersAllIcon,\n bordersInsideHorizontalIcon: bordersInsideHorizontalIcon,\n bordersInsideIcon: bordersInsideIcon,\n bordersInsideVerticalIcon: bordersInsideVerticalIcon,\n bordersNoneIcon: bordersNoneIcon,\n bordersOutsideIcon: bordersOutsideIcon,\n bordersShowHideIcon: bordersShowHideIcon,\n boxSizingIcon: boxSizingIcon,\n brightnessContrastIcon: brightnessContrastIcon,\n bringBackwardIcon: bringBackwardIcon,\n bringForwardIcon: bringForwardIcon,\n bringToBackIcon: bringToBackIcon,\n bringToFrontIcon: bringToFrontIcon,\n brushIcon: brushIcon,\n buildingBlocksIcon: buildingBlocksIcon,\n buttonIcon: buttonIcon,\n calculatorIcon: calculatorIcon,\n calendarDateIcon: calendarDateIcon,\n calendarIcon: calendarIcon,\n cameraIcon: cameraIcon,\n cancelCircleIcon: cancelCircleIcon,\n cancelIcon: cancelIcon,\n cancelOutlineIcon: cancelOutlineIcon,\n caretAltDownIcon: caretAltDownIcon,\n caretAltExpandIcon: caretAltExpandIcon,\n caretAltLeftIcon: caretAltLeftIcon,\n caretAltRightIcon: caretAltRightIcon,\n caretAltToBottomIcon: caretAltToBottomIcon,\n caretAltToLeftIcon: caretAltToLeftIcon,\n caretAltToRightIcon: caretAltToRightIcon,\n caretAltToTopIcon: caretAltToTopIcon,\n caretAltUpIcon: caretAltUpIcon,\n caretBlIcon: caretBlIcon,\n caretBrIcon: caretBrIcon,\n caretDoubleAltDownIcon: caretDoubleAltDownIcon,\n caretDoubleAltLeftIcon: caretDoubleAltLeftIcon,\n caretDoubleAltRightIcon: caretDoubleAltRightIcon,\n caretDoubleAltUpIcon: caretDoubleAltUpIcon,\n caretTlIcon: caretTlIcon,\n caretTrIcon: caretTrIcon,\n cartIcon: cartIcon,\n categorizeIcon: categorizeIcon,\n cellSplitHorizontallyIcon: cellSplitHorizontallyIcon,\n cellSplitVerticallyIcon: cellSplitVerticallyIcon,\n cellsMergeHorizontallyIcon: cellsMergeHorizontallyIcon,\n cellsMergeIcon: cellsMergeIcon,\n cellsMergeVerticallyIcon: cellsMergeVerticallyIcon,\n changeManuallyIcon: changeManuallyIcon,\n chartAreaClusteredIcon: chartAreaClusteredIcon,\n chartAreaRangeIcon: chartAreaRangeIcon,\n chartAreaStacked100Icon: chartAreaStacked100Icon,\n chartAreaStackedIcon: chartAreaStackedIcon,\n chartBarClusteredIcon: chartBarClusteredIcon,\n chartBarRangeIcon: chartBarRangeIcon,\n chartBarStacked100Icon: chartBarStacked100Icon,\n chartBarStackedIcon: chartBarStackedIcon,\n chartBubbleIcon: chartBubbleIcon,\n chartCandlestickIcon: chartCandlestickIcon,\n chartChoroplethIcon: chartChoroplethIcon,\n chartColumnClusteredIcon: chartColumnClusteredIcon,\n chartColumnRangeIcon: chartColumnRangeIcon,\n chartColumnStacked100Icon: chartColumnStacked100Icon,\n chartColumnStackedIcon: chartColumnStackedIcon,\n chartDoughnutIcon: chartDoughnutIcon,\n chartLineIcon: chartLineIcon,\n chartLineMarkersIcon: chartLineMarkersIcon,\n chartLineStacked100Icon: chartLineStacked100Icon,\n chartLineStacked100MarkersIcon: chartLineStacked100MarkersIcon,\n chartLineStackedIcon: chartLineStackedIcon,\n chartLineStackedMarkersIcon: chartLineStackedMarkersIcon,\n chartOhlcIcon: chartOhlcIcon,\n chartPieIcon: chartPieIcon,\n chartRadarFilledIcon: chartRadarFilledIcon,\n chartRadarIcon: chartRadarIcon,\n chartRadarMarkersIcon: chartRadarMarkersIcon,\n chartRoseIcon: chartRoseIcon,\n chartScatterIcon: chartScatterIcon,\n chartScatterSmoothLinesIcon: chartScatterSmoothLinesIcon,\n chartScatterSmoothLinesMarkersIcon: chartScatterSmoothLinesMarkersIcon,\n chartScatterStraightLinesIcon: chartScatterStraightLinesIcon,\n chartScatterStraightLinesMarkersIcon: chartScatterStraightLinesMarkersIcon,\n checkCircleIcon: checkCircleIcon,\n checkIcon: checkIcon,\n checkOutlineIcon: checkOutlineIcon,\n checkboxCheckedIcon: checkboxCheckedIcon,\n checkboxIcon: checkboxIcon,\n checkboxIndeterminateIcon: checkboxIndeterminateIcon,\n checkboxNullIcon: checkboxNullIcon,\n chevronDoubleDownIcon: chevronDoubleDownIcon,\n chevronDoubleLeftIcon: chevronDoubleLeftIcon,\n chevronDoubleRightIcon: chevronDoubleRightIcon,\n chevronDoubleUpIcon: chevronDoubleUpIcon,\n chevronDownIcon: chevronDownIcon,\n chevronLeftIcon: chevronLeftIcon,\n chevronRightIcon: chevronRightIcon,\n chevronUpIcon: chevronUpIcon,\n circleIcon: circleIcon,\n clearCssIcon: clearCssIcon,\n clipboardCodeIcon: clipboardCodeIcon,\n clipboardHtmlIcon: clipboardHtmlIcon,\n clipboardIcon: clipboardIcon,\n clipboardMarkdownIcon: clipboardMarkdownIcon,\n clipboardTextIcon: clipboardTextIcon,\n clipboardWordAltIcon: clipboardWordAltIcon,\n clipboardWordIcon: clipboardWordIcon,\n clockArrowRotateIcon: clockArrowRotateIcon,\n clockIcon: clockIcon,\n closedCaptionsIcon: closedCaptionsIcon,\n cloudIcon: cloudIcon,\n codeIcon: codeIcon,\n codeSnippetIcon: codeSnippetIcon,\n colResizeIcon: colResizeIcon,\n columnFreezeIcon: columnFreezeIcon,\n columnsIcon: columnsIcon,\n commentIcon: commentIcon,\n commentRemoveIcon: commentRemoveIcon,\n commentsRemoveIcon: commentsRemoveIcon,\n connectorIcon: connectorIcon,\n convertLowercaseIcon: convertLowercaseIcon,\n convertUppercaseIcon: convertUppercaseIcon,\n copyFormatIcon: copyFormatIcon,\n copyIcon: copyIcon,\n cropIcon: cropIcon,\n crosstabIcon: crosstabIcon,\n crosstabWizardIcon: crosstabWizardIcon,\n csIcon: csIcon,\n csprojIcon: csprojIcon,\n css3Icon: css3Icon,\n cssIcon: cssIcon,\n customFormatIcon: customFormatIcon,\n customIconIcon: customIconIcon,\n cutIcon: cutIcon,\n dataCsvIcon: dataCsvIcon,\n dataIcon: dataIcon,\n dataJsonIcon: dataJsonIcon,\n dataOdsIcon: dataOdsIcon,\n dataRestIcon: dataRestIcon,\n dataSdsIcon: dataSdsIcon,\n dataSqlIcon: dataSqlIcon,\n dataWebIcon: dataWebIcon,\n decimalDecreaseIcon: decimalDecreaseIcon,\n decimalIncreaseIcon: decimalIncreaseIcon,\n decreaseHorizontalSpacingIcon: decreaseHorizontalSpacingIcon,\n decreaseVerticalSpacingIcon: decreaseVerticalSpacingIcon,\n deliciousBoxIcon: deliciousBoxIcon,\n deliciousIcon: deliciousIcon,\n detailSectionIcon: detailSectionIcon,\n diggBoxIcon: diggBoxIcon,\n diggIcon: diggIcon,\n dimensionsIcon: dimensionsIcon,\n displayBlockIcon: displayBlockIcon,\n displayFlexIcon: displayFlexIcon,\n displayInlineBlockIcon: displayInlineBlockIcon,\n displayInlineFlexIcon: displayInlineFlexIcon,\n divIcon: divIcon,\n divideIcon: divideIcon,\n documentManagerIcon: documentManagerIcon,\n dollarIcon: dollarIcon,\n downloadIcon: downloadIcon,\n downloadLightIcon: downloadLightIcon,\n dragAndDropIcon: dragAndDropIcon,\n dribbbleBoxIcon: dribbbleBoxIcon,\n dribbbleIcon: dribbbleIcon,\n dropletIcon: dropletIcon,\n dropletSlashIcon: dropletSlashIcon,\n dropletSliderIcon: dropletSliderIcon,\n editToolsIcon: editToolsIcon,\n envelopBoxIcon: envelopBoxIcon,\n envelopIcon: envelopIcon,\n envelopLinkIcon: envelopLinkIcon,\n envelopeBoxIcon: envelopeBoxIcon,\n envelopeIcon: envelopeIcon,\n envelopeLinkIcon: envelopeLinkIcon,\n equalIcon: equalIcon,\n exclamationCircleIcon: exclamationCircleIcon,\n exeIcon: exeIcon,\n exportIcon: exportIcon,\n eyeIcon: eyeIcon,\n eyeSlashIcon: eyeSlashIcon,\n eyedropperIcon: eyedropperIcon,\n facebookBoxIcon: facebookBoxIcon,\n facebookIcon: facebookIcon,\n fileAddIcon: fileAddIcon,\n fileAscxIcon: fileAscxIcon,\n fileAudioIcon: fileAudioIcon,\n fileBacIcon: fileBacIcon,\n fileConfigIcon: fileConfigIcon,\n fileCsvIcon: fileCsvIcon,\n fileDataIcon: fileDataIcon,\n fileDiscImageIcon: fileDiscImageIcon,\n fileErrorIcon: fileErrorIcon,\n fileExcelIcon: fileExcelIcon,\n fileFlashIcon: fileFlashIcon,\n fileFooterIcon: fileFooterIcon,\n fileHeaderIcon: fileHeaderIcon,\n fileHorizontalIcon: fileHorizontalIcon,\n fileIcon: fileIcon,\n fileImageIcon: fileImageIcon,\n fileMdbIcon: fileMdbIcon,\n filePdfIcon: filePdfIcon,\n filePptIcon: filePptIcon,\n filePresentationIcon: filePresentationIcon,\n fileProgrammingIcon: fileProgrammingIcon,\n filePsdIcon: filePsdIcon,\n fileReportIcon: fileReportIcon,\n fileTxtIcon: fileTxtIcon,\n fileTypescriptIcon: fileTypescriptIcon,\n fileVideoIcon: fileVideoIcon,\n fileWordIcon: fileWordIcon,\n fileWrenchIcon: fileWrenchIcon,\n fileZipIcon: fileZipIcon,\n filesErrorIcon: filesErrorIcon,\n filmIcon: filmIcon,\n filterAddExpressionIcon: filterAddExpressionIcon,\n filterAddGroupIcon: filterAddGroupIcon,\n filterClearIcon: filterClearIcon,\n filterIcon: filterIcon,\n filterSmallIcon: filterSmallIcon,\n filterSortAscSmallIcon: filterSortAscSmallIcon,\n filterSortDescSmallIcon: filterSortDescSmallIcon,\n flashManagerIcon: flashManagerIcon,\n flipHorizontalIcon: flipHorizontalIcon,\n flipVerticalIcon: flipVerticalIcon,\n folderAddIcon: folderAddIcon,\n folderIcon: folderIcon,\n folderMoreIcon: folderMoreIcon,\n folderOpenIcon: folderOpenIcon,\n folderUpIcon: folderUpIcon,\n fontFamilyIcon: fontFamilyIcon,\n fontGrowIcon: fontGrowIcon,\n fontShrinkIcon: fontShrinkIcon,\n fontSizeIcon: fontSizeIcon,\n foregroundColorIcon: foregroundColorIcon,\n formElementIcon: formElementIcon,\n formIcon: formIcon,\n formatCodeBlockIcon: formatCodeBlockIcon,\n formulaFxIcon: formulaFxIcon,\n forwardIcon: forwardIcon,\n fullscreenExitIcon: fullscreenExitIcon,\n fullscreenIcon: fullscreenIcon,\n gapColumnIcon: gapColumnIcon,\n gapRowIcon: gapRowIcon,\n gaugeLinearIcon: gaugeLinearIcon,\n gaugeRadialIcon: gaugeRadialIcon,\n gearIcon: gearIcon,\n gearsIcon: gearsIcon,\n globeIcon: globeIcon,\n globeLinkIcon: globeLinkIcon,\n globeOutlineIcon: globeOutlineIcon,\n globeUnlinkIcon: globeUnlinkIcon,\n googleBoxIcon: googleBoxIcon,\n googleIcon: googleIcon,\n googlePlusBoxIcon: googlePlusBoxIcon,\n googlePlusIcon: googlePlusIcon,\n graphIcon: graphIcon,\n grayscaleIcon: grayscaleIcon,\n greaterOrEqualIcon: greaterOrEqualIcon,\n gridIcon: gridIcon,\n gridLayoutIcon: gridLayoutIcon,\n groupBoxIcon: groupBoxIcon,\n groupCollectionIcon: groupCollectionIcon,\n groupFooterSectionIcon: groupFooterSectionIcon,\n groupHeaderSectionIcon: groupHeaderSectionIcon,\n groupIcon: groupIcon,\n groupSectionIcon: groupSectionIcon,\n h1Icon: h1Icon,\n h2Icon: h2Icon,\n h3Icon: h3Icon,\n h4Icon: h4Icon,\n h5Icon: h5Icon,\n h6Icon: h6Icon,\n handIcon: handIcon,\n handleDragIcon: handleDragIcon,\n handleResizeAltIcon: handleResizeAltIcon,\n handleResizeIcon: handleResizeIcon,\n hdIcon: hdIcon,\n heartIcon: heartIcon,\n heartOutlineIcon: heartOutlineIcon,\n homeIcon: homeIcon,\n horizontalRuleIcon: horizontalRuleIcon,\n html5Icon: html5Icon,\n hyperlinkOpenIcon: hyperlinkOpenIcon,\n hyperlinkOpenSmIcon: hyperlinkOpenSmIcon,\n imageAbsolutePositionIcon: imageAbsolutePositionIcon,\n imageAddIcon: imageAddIcon,\n imageEditIcon: imageEditIcon,\n imageExportIcon: imageExportIcon,\n imageIcon: imageIcon,\n imageMapEditorIcon: imageMapEditorIcon,\n imageResizeIcon: imageResizeIcon,\n imagesIcon: imagesIcon,\n importIcon: importIcon,\n inboxIcon: inboxIcon,\n increaseHorizontalSpacingIcon: increaseHorizontalSpacingIcon,\n increaseVerticalSpacingIcon: increaseVerticalSpacingIcon,\n indentIcon: indentIcon,\n infoCircleIcon: infoCircleIcon,\n infoSolidIcon: infoSolidIcon,\n inheritedIcon: inheritedIcon,\n insertBottomIcon: insertBottomIcon,\n insertMiddleIcon: insertMiddleIcon,\n insertTopIcon: insertTopIcon,\n invertColorsIcon: invertColorsIcon,\n italicIcon: italicIcon,\n jsIcon: jsIcon,\n justifyContentAroundAltIcon: justifyContentAroundAltIcon,\n justifyContentAroundIcon: justifyContentAroundIcon,\n justifyContentBetweenAltIcon: justifyContentBetweenAltIcon,\n justifyContentBetweenIcon: justifyContentBetweenIcon,\n justifyContentCenterAltIcon: justifyContentCenterAltIcon,\n justifyContentCenterIcon: justifyContentCenterIcon,\n justifyContentEndAltIcon: justifyContentEndAltIcon,\n justifyContentEndIcon: justifyContentEndIcon,\n justifyContentStartAltIcon: justifyContentStartAltIcon,\n justifyContentStartIcon: justifyContentStartIcon,\n kpiStatusDenyIcon: kpiStatusDenyIcon,\n kpiStatusHoldIcon: kpiStatusHoldIcon,\n kpiStatusOpenIcon: kpiStatusOpenIcon,\n launchIcon: launchIcon,\n layout1By4Icon: layout1By4Icon,\n layout2By2Icon: layout2By2Icon,\n layoutIcon: layoutIcon,\n layoutSideBySideIcon: layoutSideBySideIcon,\n layoutStackedIcon: layoutStackedIcon,\n lessOrEqualIcon: lessOrEqualIcon,\n letterSpaceIcon: letterSpaceIcon,\n levelDownIcon: levelDownIcon,\n levelToTopIcon: levelToTopIcon,\n levelUpIcon: levelUpIcon,\n lineHeightIcon: lineHeightIcon,\n linkAddIcon: linkAddIcon,\n linkIcon: linkIcon,\n linkVerticalIcon: linkVerticalIcon,\n linkedinBoxIcon: linkedinBoxIcon,\n linkedinIcon: linkedinIcon,\n listLatinBigIcon: listLatinBigIcon,\n listLatinSmallIcon: listLatinSmallIcon,\n listOrderedIcon: listOrderedIcon,\n listRomanBigIcon: listRomanBigIcon,\n listRomanLowerIcon: listRomanLowerIcon,\n listRomanSmallIcon: listRomanSmallIcon,\n listRomanUpperIcon: listRomanUpperIcon,\n listUnorderedIcon: listUnorderedIcon,\n listUnorderedOutlineIcon: listUnorderedOutlineIcon,\n listUnorderedSquareIcon: listUnorderedSquareIcon,\n lockIcon: lockIcon,\n loginIcon: loginIcon,\n logoutIcon: logoutIcon,\n makeHorizontalSpacingEqualIcon: makeHorizontalSpacingEqualIcon,\n makeSameHeightIcon: makeSameHeightIcon,\n makeSameSizeIcon: makeSameSizeIcon,\n makeSameWidthIcon: makeSameWidthIcon,\n makeVerticalSpacingEqualIcon: makeVerticalSpacingEqualIcon,\n mapMarkerIcon: mapMarkerIcon,\n mapMarkerTargetIcon: mapMarkerTargetIcon,\n maxHeightIcon: maxHeightIcon,\n maxWidthIcon: maxWidthIcon,\n mediaManagerIcon: mediaManagerIcon,\n menuIcon: menuIcon,\n minHeightIcon: minHeightIcon,\n minWidthIcon: minWidthIcon,\n minusCircleIcon: minusCircleIcon,\n minusIcon: minusIcon,\n minusOutlineIcon: minusOutlineIcon,\n minusSmIcon: minusSmIcon,\n mirrorIcon: mirrorIcon,\n moreHorizontalIcon: moreHorizontalIcon,\n moreVerticalIcon: moreVerticalIcon,\n musicNotesIcon: musicNotesIcon,\n myspaceBoxIcon: myspaceBoxIcon,\n myspaceIcon: myspaceIcon,\n nonRecurrenceIcon: nonRecurrenceIcon,\n notEqualIcon: notEqualIcon,\n outdentIcon: outdentIcon,\n outlineOffsetIcon: outlineOffsetIcon,\n outlineWidthIcon: outlineWidthIcon,\n overlapIcon: overlapIcon,\n paddingBottomIcon: paddingBottomIcon,\n paddingIcon: paddingIcon,\n paddingLeftIcon: paddingLeftIcon,\n paddingRightIcon: paddingRightIcon,\n paddingTopIcon: paddingTopIcon,\n pageFooterSectionIcon: pageFooterSectionIcon,\n pageHeaderSectionIcon: pageHeaderSectionIcon,\n paletteIcon: paletteIcon,\n paneFreezeIcon: paneFreezeIcon,\n paperPlaneIcon: paperPlaneIcon,\n paperclipAltIcon: paperclipAltIcon,\n paperclipIcon: paperclipIcon,\n paragraphAddIcon: paragraphAddIcon,\n paragraphHeightIcon: paragraphHeightIcon,\n paragraphMarkIcon: paragraphMarkIcon,\n parameterBooleanIcon: parameterBooleanIcon,\n parameterDateTimeIcon: parameterDateTimeIcon,\n parameterFloatIcon: parameterFloatIcon,\n parameterIntegerIcon: parameterIntegerIcon,\n parameterStringIcon: parameterStringIcon,\n parametersByteArrayIcon: parametersByteArrayIcon,\n parametersIcon: parametersIcon,\n parametersUnknownIcon: parametersUnknownIcon,\n passwordIcon: passwordIcon,\n pauseIcon: pauseIcon,\n pauseSmIcon: pauseSmIcon,\n pencilIcon: pencilIcon,\n percentIcon: percentIcon,\n photosIcon: photosIcon,\n pinIcon: pinIcon,\n pinterestBoxIcon: pinterestBoxIcon,\n pinterestIcon: pinterestIcon,\n playIcon: playIcon,\n playSmIcon: playSmIcon,\n playlistIcon: playlistIcon,\n plusCircleIcon: plusCircleIcon,\n plusIcon: plusIcon,\n plusOutlineIcon: plusOutlineIcon,\n plusSmIcon: plusSmIcon,\n pointerIcon: pointerIcon,\n positionBottomIcon: positionBottomIcon,\n positionLeftIcon: positionLeftIcon,\n positionRightIcon: positionRightIcon,\n positionTopIcon: positionTopIcon,\n printIcon: printIcon,\n puzzlePieceIcon: puzzlePieceIcon,\n qrCodeIcon: qrCodeIcon,\n qrCodeOutlineIcon: qrCodeOutlineIcon,\n qrCodeScannerIcon: qrCodeScannerIcon,\n questionCircleIcon: questionCircleIcon,\n radiobuttonCheckedIcon: radiobuttonCheckedIcon,\n radiobuttonIcon: radiobuttonIcon,\n redditBoxIcon: redditBoxIcon,\n redditIcon: redditIcon,\n redoIcon: redoIcon,\n regularExpressionIcon: regularExpressionIcon,\n removeHorizontalSpacingIcon: removeHorizontalSpacingIcon,\n removeVerticalSpacingIcon: removeVerticalSpacingIcon,\n reorderIcon: reorderIcon,\n replaceAllIcon: replaceAllIcon,\n replaceSingleIcon: replaceSingleIcon,\n reportElementIcon: reportElementIcon,\n rewindIcon: rewindIcon,\n rightDoubleQuotesIcon: rightDoubleQuotesIcon,\n rotateIcon: rotateIcon,\n rotateLeftIcon: rotateLeftIcon,\n rotateRightIcon: rotateRightIcon,\n roundCornersIcon: roundCornersIcon,\n rowFreezeIcon: rowFreezeIcon,\n rowsIcon: rowsIcon,\n rssBoxIcon: rssBoxIcon,\n rssIcon: rssIcon,\n saveIcon: saveIcon,\n searchIcon: searchIcon,\n selectAllIcon: selectAllIcon,\n selectBoxIcon: selectBoxIcon,\n setColumnPositionIcon: setColumnPositionIcon,\n shapeLineIcon: shapeLineIcon,\n shapesIcon: shapesIcon,\n shareIcon: shareIcon,\n sharpenIcon: sharpenIcon,\n signatureIcon: signatureIcon,\n silverlightIcon: silverlightIcon,\n sizeToGridIcon: sizeToGridIcon,\n slidersIcon: slidersIcon,\n slnIcon: slnIcon,\n snapGridIcon: snapGridIcon,\n snapToGridlinesIcon: snapToGridlinesIcon,\n snapToSnaplinesIcon: snapToSnaplinesIcon,\n sortAscIcon: sortAscIcon,\n sortAscSmallIcon: sortAscSmallIcon,\n sortClearIcon: sortClearIcon,\n sortDescIcon: sortDescIcon,\n sortDescSmallIcon: sortDescSmallIcon,\n sparklesIcon: sparklesIcon,\n spellCheckerIcon: spellCheckerIcon,\n starIcon: starIcon,\n starOutlineIcon: starOutlineIcon,\n stickIcon: stickIcon,\n stopIcon: stopIcon,\n stopSmIcon: stopSmIcon,\n strikethroughIcon: strikethroughIcon,\n stripAllFormattingIcon: stripAllFormattingIcon,\n stripCssFormatIcon: stripCssFormatIcon,\n stripFontElementsIcon: stripFontElementsIcon,\n stripSpanElementsIcon: stripSpanElementsIcon,\n stripWordFormattingIcon: stripWordFormattingIcon,\n stumbleUponBoxIcon: stumbleUponBoxIcon,\n stumbleUponIcon: stumbleUponIcon,\n subreportIcon: subreportIcon,\n subscriptIcon: subscriptIcon,\n sumIcon: sumIcon,\n supscriptIcon: supscriptIcon,\n symbolIcon: symbolIcon,\n tableAddIcon: tableAddIcon,\n tableAlignBottomCenterIcon: tableAlignBottomCenterIcon,\n tableAlignBottomLeftIcon: tableAlignBottomLeftIcon,\n tableAlignBottomRightIcon: tableAlignBottomRightIcon,\n tableAlignMiddleCenterIcon: tableAlignMiddleCenterIcon,\n tableAlignMiddleLeftIcon: tableAlignMiddleLeftIcon,\n tableAlignMiddleRightIcon: tableAlignMiddleRightIcon,\n tableAlignRemoveIcon: tableAlignRemoveIcon,\n tableAlignTopCenterIcon: tableAlignTopCenterIcon,\n tableAlignTopLeftIcon: tableAlignTopLeftIcon,\n tableAlignTopRightIcon: tableAlignTopRightIcon,\n tableBodyIcon: tableBodyIcon,\n tableCellDeleteIcon: tableCellDeleteIcon,\n tableCellIcon: tableCellIcon,\n tableCellPropertiesIcon: tableCellPropertiesIcon,\n tableColumnDeleteIcon: tableColumnDeleteIcon,\n tableColumnGroupsIcon: tableColumnGroupsIcon,\n tableColumnInsertLeftIcon: tableColumnInsertLeftIcon,\n tableColumnInsertRightIcon: tableColumnInsertRightIcon,\n tableCornerIcon: tableCornerIcon,\n tableDeleteIcon: tableDeleteIcon,\n tableIcon: tableIcon,\n tablePositionCenterIcon: tablePositionCenterIcon,\n tablePositionEndIcon: tablePositionEndIcon,\n tablePositionStartIcon: tablePositionStartIcon,\n tablePropertiesIcon: tablePropertiesIcon,\n tableRowDeleteIcon: tableRowDeleteIcon,\n tableRowGroupsIcon: tableRowGroupsIcon,\n tableRowInsertAboveIcon: tableRowInsertAboveIcon,\n tableRowInsertBelowIcon: tableRowInsertBelowIcon,\n tableUnmergeIcon: tableUnmergeIcon,\n tableWizardIcon: tableWizardIcon,\n tellAFriendBoxIcon: tellAFriendBoxIcon,\n tellAFriendIcon: tellAFriendIcon,\n templateManagerIcon: templateManagerIcon,\n textClipIcon: textClipIcon,\n textOverflowIcon: textOverflowIcon,\n textTruncateIcon: textTruncateIcon,\n textWrapArrowIcon: textWrapArrowIcon,\n textWrapIcon: textWrapIcon,\n textareaIcon: textareaIcon,\n textboxHiddenIcon: textboxHiddenIcon,\n textboxIcon: textboxIcon,\n thumbDownIcon: thumbDownIcon,\n thumbDownOutlineIcon: thumbDownOutlineIcon,\n thumbUpIcon: thumbUpIcon,\n thumbUpOutlineIcon: thumbUpOutlineIcon,\n thumbnailsDownIcon: thumbnailsDownIcon,\n thumbnailsLeftIcon: thumbnailsLeftIcon,\n thumbnailsRightIcon: thumbnailsRightIcon,\n thumbnailsUpIcon: thumbnailsUpIcon,\n tocSectionIcon: tocSectionIcon,\n tocSectionLevelIcon: tocSectionLevelIcon,\n toggleFullScreenModeIcon: toggleFullScreenModeIcon,\n toolbarFloatIcon: toolbarFloatIcon,\n trackChangesAcceptAllIcon: trackChangesAcceptAllIcon,\n trackChangesAcceptIcon: trackChangesAcceptIcon,\n trackChangesEnableIcon: trackChangesEnableIcon,\n trackChangesIcon: trackChangesIcon,\n trackChangesRejectAllIcon: trackChangesRejectAllIcon,\n trackChangesRejectIcon: trackChangesRejectIcon,\n transparencyIcon: transparencyIcon,\n trashIcon: trashIcon,\n tumblrBoxIcon: tumblrBoxIcon,\n tumblrIcon: tumblrIcon,\n twitterBoxIcon: twitterBoxIcon,\n twitterIcon: twitterIcon,\n underlineIcon: underlineIcon,\n undoIcon: undoIcon,\n ungroupIcon: ungroupIcon,\n unlinkIcon: unlinkIcon,\n unlinkVerticalIcon: unlinkVerticalIcon,\n unlockIcon: unlockIcon,\n unpinIcon: unpinIcon,\n unstickIcon: unstickIcon,\n uploadIcon: uploadIcon,\n userIcon: userIcon,\n userOutlineIcon: userOutlineIcon,\n validationDataIcon: validationDataIcon,\n validationXhtmlIcon: validationXhtmlIcon,\n vbIcon: vbIcon,\n vbprojIcon: vbprojIcon,\n videoExternalIcon: videoExternalIcon,\n vimeoBoxIcon: vimeoBoxIcon,\n vimeoIcon: vimeoIcon,\n volumeDownIcon: volumeDownIcon,\n volumeMuteIcon: volumeMuteIcon,\n volumeUpIcon: volumeUpIcon,\n warningCircleIcon: warningCircleIcon,\n warningTriangleIcon: warningTriangleIcon,\n wholeWordIcon: wholeWordIcon,\n windowIcon: windowIcon,\n windowMinimizeIcon: windowMinimizeIcon,\n windowRestoreIcon: windowRestoreIcon,\n wrenchIcon: wrenchIcon,\n xCircleIcon: xCircleIcon,\n xIcon: xIcon,\n xOutlineIcon: xOutlineIcon,\n yammerBoxIcon: yammerBoxIcon,\n yammerIcon: yammerIcon,\n youtubeBoxIcon: youtubeBoxIcon,\n youtubeIcon: youtubeIcon,\n zoomActualSizeIcon: zoomActualSizeIcon,\n zoomBestFitIcon: zoomBestFitIcon,\n zoomInIcon: zoomInIcon,\n zoomOutIcon: zoomOutIcon\n });\n\n var __meta__$J = {\n id: \"icons\",\n name: \"Icons\",\n category: \"web\",\n description: \"The Icons set provides both FontIcon and SvgIcon components along with the SVG icons collection from @progress/kendo-svg-icons\",\n depends: [\"core\", \"html.icon\"]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n html = kendo.html,\n ui = kendo.ui,\n Widget = ui.Widget,\n extend = $.extend;\n\n var FontIcon = Widget.extend({\n init: function(element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n\n delete options.name;\n that._icon = new html.HTMLFontIcon(element, $.extend({}, options));\n that.element = that.wrapper = that._icon.element;\n\n kendo.notify(that);\n },\n options: extend({}, html.HTMLFontIcon.fn.options, {\n name: 'FontIcon'\n }),\n setOptions: function(options) {\n var that = this;\n\n Widget.fn.setOptions.call(that, options);\n\n that._icon = new html.HTMLFontIcon(that.element, $.extend({}, that.options));\n }\n });\n\n var SvgIcon = Widget.extend({\n init: function(element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n\n delete options.name;\n that._icon = new html.HTMLSvgIcon(element, $.extend({}, options));\n that.element = that.wrapper = that._icon.element;\n\n kendo.notify(that);\n },\n options: extend({}, html.HTMLSvgIcon.fn.options, {\n name: 'SvgIcon'\n }),\n setOptions: function(options) {\n var that = this;\n\n Widget.fn.setOptions.call(that, options);\n\n if (options.icon) {\n this.element.html('');\n }\n\n that._icon = new html.HTMLSvgIcon(that.element, $.extend({}, that.options));\n }\n });\n\n kendo.ui.plugin(FontIcon);\n kendo.ui.plugin(SvgIcon);\n\n kendo.setDefaults('iconType', 'svg');\n kendo.ui.svgIcons = svgIcons;\n kendo.ui.icon = html.renderIcon;\n })(window.kendo.jQuery);\n var kendo$L = kendo;\n\n var __meta__$I = {\n id: \"tooltip\",\n name: \"Tooltip\",\n category: \"web\",\n description: \"The Tooltip widget displays a popup hint for a given html element.\",\n depends: [ \"core\", \"popup\", \"icons\" ],\n features: [ {\n id: \"tooltip-fx\",\n name: \"Animation\",\n description: \"Support for animation\",\n depends: [ \"fx\" ]\n } ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n Widget = kendo.ui.Widget,\n Popup = kendo.ui.Popup,\n isFunction = kendo.isFunction,\n isPlainObject = $.isPlainObject,\n extend = $.extend,\n DOCUMENT = $(document),\n isLocalUrl = kendo.isLocalUrl,\n ARIAIDSUFFIX = \"_tb_active\",\n DESCRIBEDBY = \"aria-describedby\",\n SHOW = \"show\",\n HIDE = \"hide\",\n ERROR = \"error\",\n CONTENTLOAD = \"contentLoad\",\n REQUESTSTART = \"requestStart\",\n KCONTENTFRAME = \"k-content-frame\",\n TEMPLATE = ({ autoHide, callout, dir }) =>\n `
    ` +\n '
    ' +\n (!autoHide ? `
    ${kendo.ui.icon($(''), { icon: \"x\" })}
    ` : '') +\n (callout ? `
    ` : '') +\n '
    ',\n IFRAMETEMPLATE = kendo.template(({ content }) =>\n `\"\n ),\n NS = \".kendoTooltip\",\n POSITIONS = {\n bottom: {\n origin: \"bottom center\",\n position: \"top center\"\n },\n top: {\n origin: \"top center\",\n position: \"bottom center\"\n },\n left: {\n origin: \"center left\",\n position: \"center right\",\n collision: \"fit flip\"\n },\n right: {\n origin: \"center right\",\n position: \"center left\",\n collision: \"fit flip\"\n },\n center: {\n position: \"center center\",\n origin: \"center center\"\n }\n },\n REVERSE = {\n \"top\": \"bottom\",\n \"bottom\": \"top\",\n \"left\": \"right\",\n \"right\": \"left\",\n \"center\": \"center\"\n },\n DIRCLASSES = {\n bottom: \"n\",\n top: \"s\",\n left: \"e\",\n right: \"w\",\n center: \"n\"\n },\n DIMENSIONS = {\n \"horizontal\": { offset: \"top\", size: \"outerHeight\" },\n \"vertical\": { offset: \"left\", size: \"outerWidth\" }\n },\n DEFAULTCONTENT = function(e) {\n return e.target.data(kendo.ns + \"title\");\n };\n\n function restoreTitle(element) {\n while (element.length) {\n if (restoreTitleAttributeForElement(element)) {\n break;\n }\n element = element.parent();\n }\n }\n\n function restoreTitleAttributeForElement(element) {\n var title = element.data(kendo.ns + \"title\");\n if (title) {\n element.attr(\"title\", title);\n element.removeData(kendo.ns + \"title\");\n return true;\n }\n }\n\n function saveTitleAttributeForElement(element) {\n var title = element.attr(\"title\");\n if (title) {\n element.data(kendo.ns + \"title\", title);\n element.attr(\"title\", \"\");\n return true;\n }\n }\n\n function saveTitleAttributes(element) {\n while (element.length && !element.is(\"body\")) {\n if (saveTitleAttributeForElement(element)) {\n break;\n }\n element = element.parent();\n }\n }\n\n var TooltipBase = Widget.extend({\n init: function(element, options) {\n var that = this,\n axis;\n\n Widget.fn.init.call(that, element, options);\n\n axis = that.options.position.match(/left|right/) ? \"horizontal\" : \"vertical\";\n\n that.dimensions = DIMENSIONS[axis];\n\n if (kendo.support.touch && this._isShownOnMouseEnter()) {\n that.element.on(kendo.support.mousedown + NS, that.options.filter, that._showOn.bind(that));\n }\n\n that.element.on(that.options.showOn + NS, that.options.filter, that._showOn.bind(that));\n\n if (that.options.showOn === \"click\") {\n that.element.on(\"keydown\" + NS, that.options.filter, that._keydown.bind(that));\n }\n },\n\n options: {\n name: \"TooltipBase\",\n filter: \"\",\n offset: 0,\n showAfter: 100,\n hideAfter: 100,\n callout: true,\n position: \"bottom\",\n showOn: \"mouseenter\",\n animation: {\n open: {\n effects: \"fade:in\",\n duration: 0\n },\n close: {\n duration: 40,\n hide: true\n }\n }\n },\n\n destroy: function() {\n var popup = this.popup;\n\n if (popup) {\n popup.element.off(NS);\n popup.destroy();\n }\n\n clearTimeout(this.timeout);\n\n Widget.fn.destroy.call(this);\n },\n\n hide: function() {\n if (this.popup) {\n this.popup.close();\n }\n },\n\n show: function(target) {\n target = target || this.element;\n\n this._saveTitle(target);\n this._show(target);\n },\n\n target: function() {\n if (this.popup) {\n return this.popup.options.anchor;\n }\n return null;\n },\n\n _keydown: function(e) {\n var currentTarget = $(e.currentTarget);\n\n if (e.keyCode == kendo.keys.ENTER) {\n this._show(currentTarget);\n }\n },\n\n _showOn: function(e) {\n var that = this;\n\n var currentTarget = $(e.currentTarget);\n if (that._isShownOnClick() && !that._isShownOnMouseEnter()) {\n that._show(currentTarget);\n } else if (that._isShownOnFocus()) {\n that._saveTitle(currentTarget);\n that._show(currentTarget);\n } else {\n clearTimeout(that.timeout);\n\n that.timeout = setTimeout(function() {\n that._show(currentTarget);\n }, that.options.showAfter);\n }\n },\n\n _isShownOnFocus: function() {\n return this.options.showOn && this.options.showOn.match(/focus/);\n },\n\n _isShownOnMouseEnter: function() {\n return this.options.showOn && this.options.showOn.match(/mouseenter/);\n },\n\n _isShownOnClick: function() {\n return this.options.showOn && this.options.showOn.match(/click/);\n },\n\n _recalculatePopupDimensions: function() {\n var that = this;\n that.popup.wrapper.css(\"height\", kendo._outerHeight(that.popup.element) + \"px\");\n that.popup.wrapper.css(\"width\", kendo._outerWidth(that.popup.element) + \"px\");\n that.popup.position();\n that._positionCallout();\n },\n\n _positionCallout: function() {\n var that = this,\n position = that.options.position,\n dimensions = that.dimensions,\n offset = dimensions.offset,\n popup = that.popup,\n anchor = popup.options.anchor,\n anchorOffset = $(anchor).offset(),\n elementOffset = $(popup.element).offset(),\n cssClass = DIRCLASSES[popup.flipped ? REVERSE[position] : position],\n offsetAmount = anchorOffset[offset] - elementOffset[offset] + ($(anchor)[dimensions.size]() / 2);\n\n that._offset(position, that.options.offset);\n\n that.arrow\n .removeClass(\"k-callout-n k-callout-s k-callout-w k-callout-e\")\n .addClass(\"k-callout-\" + cssClass)\n .css(offset, offsetAmount);\n },\n\n _offset: function(position, offsetAmount, arrowWidth) {\n var that = this,\n isTopLeft = position == \"top\" || position == \"left\",\n isFlipped = that.popup.flipped,\n direction = (isTopLeft && isFlipped) || (!isTopLeft && !isFlipped) ? 1 : -1,\n marginRule = isTopLeft ? \"margin-\" + position : \"margin-\" + REVERSE[position],\n offset = ((arrowWidth || kendo._outerWidth(that.arrow)) / 2) + offsetAmount;\n\n that.popup.wrapper.css(marginRule, offset * direction + \"px\");\n },\n\n _addDescribedBy: function() {\n var that = this,\n anchor = that.popup.options.anchor,\n ariaId = anchor[0].id || that.element[0].id || kendo.guid(),\n describedBy = [];\n\n if (anchor.attr(DESCRIBEDBY)) {\n describedBy.push(anchor.attr(DESCRIBEDBY));\n }\n\n if (ariaId) {\n describedBy.push(ariaId + ARIAIDSUFFIX);\n anchor.attr(DESCRIBEDBY, describedBy.join(\" \"));\n that.popup.element.attr(\"id\", ariaId + ARIAIDSUFFIX);\n }\n\n },\n\n _removeDescribedBy: function(target) {\n var tooltipId = this.popup.element.attr(\"id\"),\n currentDescribedBy = target.attr(DESCRIBEDBY),\n arrayAttr, finalArray, finalDescribedbyAttr;\n\n if (!currentDescribedBy) {\n return;\n }\n\n arrayAttr = currentDescribedBy.split(\" \");\n\n if (arrayAttr && arrayAttr.length > 0) {\n finalArray = arrayAttr.filter(function(val) {\n return val !== tooltipId;\n });\n }\n\n if (finalArray && finalArray.length > 0) {\n finalDescribedbyAttr = finalArray.join(\" \");\n target.attr(DESCRIBEDBY, finalDescribedbyAttr);\n } else {\n target.removeAttr(DESCRIBEDBY);\n }\n },\n\n _openPopup: function() {\n if (!this.popup) {\n return;\n }\n\n this.popup._hovered = true;\n this.popup._shouldCorrectWidth = false;\n this.popup.open();\n }\n });\n kendo.ui.plugin(TooltipBase);\n\n var Tooltip = TooltipBase.extend({\n init: function(element, options) {\n var that = this,\n axis;\n\n TooltipBase.fn.init.call(that, element, options);\n\n axis = that.options.position.match(/left|right/) ? \"horizontal\" : \"vertical\";\n\n that.dimensions = DIMENSIONS[axis];\n\n that._documentKeyDownHandler = that._documentKeyDown.bind(that);\n\n if (this._isShownOnMouseEnter() || this._isShownOnClick()) {\n that.element.on(\"mouseenter\" + NS, that.options.filter, that._mouseenter.bind(that));\n }\n\n if (this.options.autoHide && this._isShownOnMouseEnter() && this.options.position !== \"center\") {\n that.element.on(\"mouseleave\" + NS, that.options.filter, that._mouseleave.bind(that));\n }\n\n if (this.options.autoHide && this._isShownOnFocus()) {\n that.element.on(\"blur\" + NS, that.options.filter, that._blur.bind(that));\n }\n\n if (kendo.support.touch) {\n that.element.on(kendo.support.mousedown + NS, that.options.filter, that._mouseenter.bind(that));\n }\n },\n\n options: {\n name: \"Tooltip\",\n filter: \"\",\n content: DEFAULTCONTENT,\n showAfter: 100,\n callout: true,\n offset: 0,\n position: \"bottom\",\n showOn: \"mouseenter\",\n autoHide: true,\n width: null,\n height: null,\n animation: {\n open: {\n effects: \"fade:in\",\n duration: 0\n },\n close: {\n duration: 40,\n hide: true\n }\n }\n },\n\n events: [ SHOW, HIDE, CONTENTLOAD, ERROR, REQUESTSTART ],\n\n _mouseenter: function(e) {\n saveTitleAttributes($(e.currentTarget));\n },\n\n _saveTitle: function(target) {\n saveTitleAttributes(target);\n },\n\n _appendContent: function(target) {\n var that = this,\n contentOptions = that.options.content,\n element = that.content,\n showIframe = that.options.iframe,\n iframe;\n\n if (isPlainObject(contentOptions) && contentOptions.url) {\n if (!(\"iframe\" in that.options)) {\n showIframe = !isLocalUrl(contentOptions.url);\n }\n\n that.trigger(REQUESTSTART, { options: contentOptions, target: target });\n\n if (!showIframe) {\n element.empty();\n kendo.ui.progress(element, true);\n\n // perform AJAX request\n that._ajaxRequest(contentOptions);\n } else {\n element.hide();\n\n iframe = element.find(\".\" + KCONTENTFRAME)[0];\n\n if (iframe) {\n // refresh existing iframe\n iframe.src = contentOptions.url || iframe.src;\n } else {\n element.html(IFRAMETEMPLATE({ content: contentOptions }));\n }\n\n element.find(\".\" + KCONTENTFRAME)\n .off(\"load\" + NS)\n .on(\"load\" + NS, function() {\n that.trigger(CONTENTLOAD);\n element.show();\n });\n }\n } else if (contentOptions && isFunction(contentOptions)) {\n contentOptions = contentOptions({ sender: this, target: target });\n element.html(contentOptions || \"\");\n } else {\n element.html(contentOptions);\n }\n },\n\n _verifyContentLoaded() {\n var that = this,\n content = that.content,\n resources = content.find('[src]'),\n length = resources.length,\n loaded = 0;\n\n if (length === 0) {\n that._recalculatePopupDimensions();\n return;\n }\n\n resources.on('load', function() {\n loaded++;\n\n if (length === loaded) {\n that._recalculatePopupDimensions();\n }\n });\n },\n\n _ajaxRequest: function(options) {\n var that = this,\n successFn = function(data) {\n kendo.ui.progress(that.content, false);\n\n that.content.html(data);\n\n that._verifyContentLoaded();\n\n that.trigger(CONTENTLOAD);\n };\n\n jQuery.ajax(extend({\n type: \"GET\",\n dataType: \"html\",\n cache: false,\n error: function(xhr, status) {\n kendo.ui.progress(that.content, false);\n\n that._recalculatePopupDimensions();\n\n that.trigger(ERROR, { status: status, xhr: xhr });\n },\n success: successFn.bind(that)\n }, options));\n },\n\n _documentKeyDown: function(e) {\n if (e.keyCode === kendo.keys.ESC) {\n this.hide();\n }\n },\n\n refresh: function() {\n var that = this,\n popup = that.popup;\n\n if (popup && popup.options.anchor) {\n that._appendContent(popup.options.anchor);\n }\n },\n\n _show: function(target) {\n var that = this,\n current = that.target();\n\n if (!that.popup) {\n that._initPopup();\n }\n\n if (current && current[0] != target[0]) {\n that.popup.close(true);\n that.popup.element.kendoStop(true, true);// animation can be too long to hide the element before it is shown again\n }\n\n if (!current || current[0] != target[0]) {\n that._appendContent(target);\n that.popup.options.anchor = target;\n }\n\n that.popup.one(\"deactivate\", function() {\n restoreTitle(target);\n\n that._removeDescribedBy(target);\n\n this.element\n .removeAttr(\"id\")\n .attr(\"aria-hidden\", true);\n\n DOCUMENT.off(\"keydown\" + NS, that._documentKeyDownHandler);\n });\n\n that._openPopup();\n },\n\n _initPopup: function() {\n var that = this,\n options = that.options,\n wrapper = $(kendo.template(TEMPLATE)({\n callout: options.callout && options.position !== \"center\",\n dir: DIRCLASSES[options.position],\n autoHide: options.autoHide\n }));\n\n that.popup = new Popup(wrapper, extend({\n autosize: true,\n activate: function() {\n that._addDescribedBy();\n\n if (options.callout) {\n that._positionCallout();\n } else {\n that._offset(that.options.position, that.options.offset);\n }\n\n this.element.removeAttr(\"aria-hidden\");\n\n DOCUMENT.on(\"keydown\" + NS, that._documentKeyDownHandler);\n\n that.trigger(SHOW);\n that.popup._hovered = undefined$1;\n },\n close: function() {\n that.trigger(HIDE);\n },\n copyAnchorStyles: false,\n animation: options.animation\n }, POSITIONS[options.position]));\n\n wrapper.css({\n width: options.width,\n height: options.height\n });\n\n that.content = wrapper.find(\".k-tooltip-content\");\n that.arrow = wrapper.find(\".k-callout\");\n\n if (options.autoHide && this._isShownOnMouseEnter()) {\n wrapper.on(\"mouseleave\" + NS, that._mouseleave.bind(that));\n } else {\n wrapper.on(\"click\" + NS, \".k-tooltip-button\", that._closeButtonClick.bind(that));\n }\n },\n\n _closeButtonClick: function(e) {\n e.preventDefault();\n this.hide();\n },\n\n _mouseleave: function(e) {\n var that = this;\n\n clearTimeout(that.timeout);\n\n that.timeout = setTimeout(function() {\n that._closePopup(e.currentTarget);\n }, that.options.hideAfter);\n },\n\n _blur: function(e) {\n this._closePopup(e.currentTarget);\n },\n\n _closePopup: function(target) {\n if (this.popup && !this.popup._hovered) {\n this.popup.close();\n } else {\n restoreTitle($(target));\n }\n },\n\n destroy: function() {\n this.element.off(NS);\n\n DOCUMENT.off(\"keydown\" + NS, this._documentKeyDownHandler);\n\n TooltipBase.fn.destroy.call(this);\n }\n });\n\n kendo.ui.plugin(Tooltip);\n })(window.kendo.jQuery);\n var kendo$K = kendo;\n\n (function($) {\n\n function createPromise() {\n return $.Deferred();\n }\n\n function promiseAll(promises) {\n return $.when.apply($, promises);\n }\n\n function extendStatic(dest, src) {\n if (!src) {\n return;\n }\n\n if (typeof src.__proto__ === 'function') {\n dest.__proto__ = src;\n } else {\n for (var member in src) {\n if (src.hasOwnProperty(member)) {\n dest[member] = src[member];\n }\n }\n }\n }\n\n kendo.drawing.util = kendo.drawing.util || {};\n kendo.deepExtend(kendo.drawing.util, {\n createPromise: createPromise,\n promiseAll: promiseAll,\n extendStatic: extendStatic\n });\n\n })(window.kendo.jQuery);\n\n /***********************************************************************\n * WARNING: this file is auto-generated. If you change it directly,\n * your modifications will eventually be lost. The source code is in\n * `kendo-drawing` repository, you should make your changes there and\n * run `src-modules/sync.sh` in this repository.\n */\n /* eslint-disable space-before-blocks, space-before-function-paren, no-multi-spaces */\n\n var __meta__$H = {\n id: \"color\",\n name: \"Color utils\",\n category: \"framework\",\n advanced: true,\n description: \"Color utilities used across components\",\n depends: [ \"core\" ]\n };\n\n window.kendo = window.kendo || {};\n\n var Class = kendo.Class;\n var support = kendo.support;\n\n var namedColors = {\n aliceblue: \"f0f8ff\", antiquewhite: \"faebd7\", aqua: \"00ffff\",\n aquamarine: \"7fffd4\", azure: \"f0ffff\", beige: \"f5f5dc\",\n bisque: \"ffe4c4\", black: \"000000\", blanchedalmond: \"ffebcd\",\n blue: \"0000ff\", blueviolet: \"8a2be2\", brown: \"a52a2a\",\n burlywood: \"deb887\", cadetblue: \"5f9ea0\", chartreuse: \"7fff00\",\n chocolate: \"d2691e\", coral: \"ff7f50\", cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\", crimson: \"dc143c\", cyan: \"00ffff\",\n darkblue: \"00008b\", darkcyan: \"008b8b\", darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\", darkgrey: \"a9a9a9\", darkgreen: \"006400\",\n darkkhaki: \"bdb76b\", darkmagenta: \"8b008b\", darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\", darkorchid: \"9932cc\", darkred: \"8b0000\",\n darksalmon: \"e9967a\", darkseagreen: \"8fbc8f\", darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\", darkslategrey: \"2f4f4f\", darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\", deeppink: \"ff1493\", deepskyblue: \"00bfff\",\n dimgray: \"696969\", dimgrey: \"696969\", dodgerblue: \"1e90ff\",\n firebrick: \"b22222\", floralwhite: \"fffaf0\", forestgreen: \"228b22\",\n fuchsia: \"ff00ff\", gainsboro: \"dcdcdc\", ghostwhite: \"f8f8ff\",\n gold: \"ffd700\", goldenrod: \"daa520\", gray: \"808080\",\n grey: \"808080\", green: \"008000\", greenyellow: \"adff2f\",\n honeydew: \"f0fff0\", hotpink: \"ff69b4\", indianred: \"cd5c5c\",\n indigo: \"4b0082\", ivory: \"fffff0\", khaki: \"f0e68c\",\n lavender: \"e6e6fa\", lavenderblush: \"fff0f5\", lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\", lightblue: \"add8e6\", lightcoral: \"f08080\",\n lightcyan: \"e0ffff\", lightgoldenrodyellow: \"fafad2\", lightgray: \"d3d3d3\",\n lightgrey: \"d3d3d3\", lightgreen: \"90ee90\", lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\", lightseagreen: \"20b2aa\", lightskyblue: \"87cefa\",\n lightslategray: \"778899\", lightslategrey: \"778899\", lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\", lime: \"00ff00\", limegreen: \"32cd32\",\n linen: \"faf0e6\", magenta: \"ff00ff\", maroon: \"800000\",\n mediumaquamarine: \"66cdaa\", mediumblue: \"0000cd\", mediumorchid: \"ba55d3\",\n mediumpurple: \"9370d8\", mediumseagreen: \"3cb371\", mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\", mediumturquoise: \"48d1cc\", mediumvioletred: \"c71585\",\n midnightblue: \"191970\", mintcream: \"f5fffa\", mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\", navajowhite: \"ffdead\", navy: \"000080\",\n oldlace: \"fdf5e6\", olive: \"808000\", olivedrab: \"6b8e23\",\n orange: \"ffa500\", orangered: \"ff4500\", orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\", palegreen: \"98fb98\", paleturquoise: \"afeeee\",\n palevioletred: \"d87093\", papayawhip: \"ffefd5\", peachpuff: \"ffdab9\",\n peru: \"cd853f\", pink: \"ffc0cb\", plum: \"dda0dd\",\n powderblue: \"b0e0e6\", purple: \"800080\", red: \"ff0000\",\n rosybrown: \"bc8f8f\", royalblue: \"4169e1\", saddlebrown: \"8b4513\",\n salmon: \"fa8072\", sandybrown: \"f4a460\", seagreen: \"2e8b57\",\n seashell: \"fff5ee\", sienna: \"a0522d\", silver: \"c0c0c0\",\n skyblue: \"87ceeb\", slateblue: \"6a5acd\", slategray: \"708090\",\n slategrey: \"708090\", snow: \"fffafa\", springgreen: \"00ff7f\",\n steelblue: \"4682b4\", tan: \"d2b48c\", teal: \"008080\",\n thistle: \"d8bfd8\", tomato: \"ff6347\", turquoise: \"40e0d0\",\n violet: \"ee82ee\", wheat: \"f5deb3\", white: \"ffffff\",\n whitesmoke: \"f5f5f5\", yellow: \"ffff00\", yellowgreen: \"9acd32\"\n };\n\n var browser = support.browser;\n\n var matchNamedColor = function (color) {\n var colorNames = Object.keys(namedColors);\n colorNames.push(\"transparent\");\n\n var regexp = new RegExp(\"^(\" + colorNames.join(\"|\") + \")(\\\\W|$)\", \"i\");\n matchNamedColor = function (color) { return regexp.exec(color); };\n\n return regexp.exec(color);\n };\n\n var BaseColor = Class.extend({\n init: function() { },\n\n toHSV: function() { return this; },\n\n toRGB: function() { return this; },\n\n toHex: function(options) { return this.toBytes().toHex(options); },\n\n toBytes: function() { return this; },\n\n toCss: function(options) { return \"#\" + this.toHex(options); },\n\n toCssRgba: function() {\n var rgb = this.toBytes();\n return (\"rgba(\" + (rgb.r) + \", \" + (rgb.g) + \", \" + (rgb.b) + \", \" + (parseFloat((Number(this.a)).toFixed(3))) + \")\");\n },\n\n toDisplay: function() {\n if (browser.msie && browser.version < 9) {\n return this.toCss(); // no RGBA support; does it support any opacity in colors?\n }\n return this.toCssRgba();\n },\n\n equals: function(c) {\n return c === this || ((c !== null && c !== undefined) && this.toCssRgba() === parseColor(c).toCssRgba());\n },\n\n diff: function(other) {\n if (other === null) {\n return NaN;\n }\n\n var c1 = this.toBytes();\n var c2 = other.toBytes();\n\n return Math.sqrt(Math.pow((c1.r - c2.r) * 0.30, 2) +\n Math.pow((c1.g - c2.g) * 0.59, 2) +\n Math.pow((c1.b - c2.b) * 0.11, 2));\n },\n\n clone: function() {\n var c = this.toBytes();\n if (c === this) {\n c = new Bytes(c.r, c.g, c.b, c.a);\n }\n\n return c;\n }\n });\n\n var RGB = BaseColor.extend({\n init: function(r, g, b, a) {\n BaseColor.fn.init.call(this);\n\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n },\n\n toHSV: function() {\n var ref = this;\n var r = ref.r;\n var g = ref.g;\n var b = ref.b;\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var delta = max - min;\n var v = max;\n var h, s;\n\n if (delta === 0) {\n return new HSV(0, 0, v, this.a);\n }\n\n if (max !== 0) {\n s = delta / max;\n if (r === max) {\n h = (g - b) / delta;\n } else if (g === max) {\n h = 2 + (b - r) / delta;\n } else {\n h = 4 + (r - g) / delta;\n }\n\n h *= 60;\n if (h < 0) {\n h += 360;\n }\n } else {\n s = 0;\n h = -1;\n }\n\n return new HSV(h, s, v, this.a);\n },\n\n toHSL: function() {\n var ref = this;\n var r = ref.r;\n var g = ref.g;\n var b = ref.b;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h, s, l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0;\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n default: break;\n }\n }\n\n return new HSL(h * 60, s * 100, l * 100, this.a);\n },\n\n toBytes: function() {\n return new Bytes(this.r * 255, this.g * 255, this.b * 255, this.a);\n }\n });\n\n var Bytes = RGB.extend({\n init: function(r, g, b, a) {\n RGB.fn.init.call(this, Math.round(r), Math.round(g), Math.round(b), a);\n },\n\n toRGB: function() {\n return new RGB(this.r / 255, this.g / 255, this.b / 255, this.a);\n },\n\n toHSV: function() {\n return this.toRGB().toHSV();\n },\n\n toHSL: function() {\n return this.toRGB().toHSL();\n },\n\n toHex: function(options) {\n var value = hex(this.r, 2) + hex(this.g, 2) + hex(this.b, 2);\n\n if (options && options.alpha) {\n value += hex(Math.round(this.a * 255), 2);\n }\n\n return value;\n },\n\n toBytes: function() {\n return this;\n }\n });\n\n function hex(n, width, pad) {\n if (pad === void 0) { pad = \"0\"; }\n\n var result = n.toString(16);\n while (width > result.length) {\n result = pad + result;\n }\n\n return result;\n }\n\n var HSV = BaseColor.extend({\n init: function(h, s, v, a) {\n BaseColor.fn.init.call(this);\n\n this.h = h;\n this.s = s;\n this.v = v;\n this.a = a;\n },\n\n toRGB: function() {\n var ref = this;\n var h = ref.h;\n var s = ref.s;\n var v = ref.v;\n var r, g, b;\n\n if (s === 0) {\n r = g = b = v;\n } else {\n h /= 60;\n\n var i = Math.floor(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - s * f);\n var t = v * (1 - s * (1 - f));\n\n switch (i) {\n case 0: r = v; g = t; b = p; break;\n case 1: r = q; g = v; b = p; break;\n case 2: r = p; g = v; b = t; break;\n case 3: r = p; g = q; b = v; break;\n case 4: r = t; g = p; b = v; break;\n default: r = v; g = p; b = q; break;\n }\n }\n\n return new RGB(r, g, b, this.a);\n },\n\n toHSL: function() {\n return this.toRGB().toHSL();\n },\n\n toBytes: function() {\n return this.toRGB().toBytes();\n }\n });\n\n var HSL = BaseColor.extend({\n init: function(h, s, l, a) {\n BaseColor.fn.init.call(this);\n\n this.h = h;\n this.s = s;\n this.l = l;\n this.a = a;\n },\n\n toRGB: function() {\n var h = this.h / 360;\n var s = this.s / 100;\n var l = this.l / 100;\n var r, g, b;\n\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return new RGB(r, g, b, this.a);\n },\n\n toHSV: function() {\n return this.toRGB().toHSV();\n },\n\n toBytes: function() {\n return this.toRGB().toBytes();\n }\n });\n\n function hue2rgb(p, q, s) {\n var t = s;\n\n if (t < 0) {\n t += 1;\n }\n\n if (t > 1) {\n t -= 1;\n }\n\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n\n if (t < 1 / 2) {\n return q;\n }\n\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n\n return p;\n }\n\n function alphaFromHex(a) {\n return parseFloat(parseFloat(parseInt(a, 16) / 255 ).toFixed(3));\n }\n\n function parseColor(value, safe) {\n var m, ret;\n\n if (value == null || value === \"none\") {\n return null;\n }\n\n if (value instanceof BaseColor) {\n return value;\n }\n\n var color = value.toLowerCase();\n if ((m = matchNamedColor(color))) {\n if (m[1] === \"transparent\") {\n color = new RGB(1, 1, 1, 0);\n } else {\n color = parseColor(namedColors[m[1]], safe);\n }\n color.match = [ m[1] ];\n return color;\n }\n if ((m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\\b/i.exec(color))) {\n ret = new Bytes(parseInt(m[1], 16),\n parseInt(m[2], 16),\n parseInt(m[3], 16), 1);\n } else if ((m = /^#?([0-9a-f])([0-9a-f])([0-9a-f])\\b/i.exec(color))) {\n ret = new Bytes(parseInt(m[1] + m[1], 16),\n parseInt(m[2] + m[2], 16),\n parseInt(m[3] + m[3], 16), 1);\n } else if ((m = /^#?([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])\\b/i.exec(color))) { // Parse 4 digit hex color\n ret = new Bytes(parseInt(m[1] + m[1], 16),\n parseInt(m[2] + m[2], 16),\n parseInt(m[3] + m[3], 16),\n alphaFromHex(m[4] + m[4]));\n } else if ((m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\\b/i.exec(color))) { // Parse 8 digit hex color\n ret = new Bytes(parseInt(m[1], 16),\n parseInt(m[2], 16),\n parseInt(m[3], 16),\n alphaFromHex(m[4]));\n } else if ((m = /^rgb\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*\\)/.exec(color))) {\n ret = new Bytes(parseInt(m[1], 10),\n parseInt(m[2], 10),\n parseInt(m[3], 10), 1);\n } else if ((m = /^rgba\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color))) {\n ret = new Bytes(parseInt(m[1], 10),\n parseInt(m[2], 10),\n parseInt(m[3], 10), parseFloat(m[4]));\n } else if ((m = /^rgb\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*\\)/.exec(color))) {\n ret = new RGB(parseFloat(m[1]) / 100,\n parseFloat(m[2]) / 100,\n parseFloat(m[3]) / 100, 1);\n } else if ((m = /^rgba\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color))) {\n ret = new RGB(parseFloat(m[1]) / 100,\n parseFloat(m[2]) / 100,\n parseFloat(m[3]) / 100, parseFloat(m[4]));\n }\n\n if (ret) {\n ret.match = m;\n } else if (!safe) {\n throw new Error(\"Cannot parse color: \" + color);\n }\n\n return ret;\n }\n\n var DARK_TRESHOLD = 180;\n\n var Color = Class.extend({\n init: function(value) {\n var this$1$1 = this;\n\n if (arguments.length === 1) {\n var formats = Color.formats;\n var resolvedColor = this.resolveColor(value);\n\n for (var idx = 0; idx < formats.length; idx++) {\n var formatRegex = formats[idx].re;\n var processor = formats[idx].process;\n var parts = formatRegex.exec(resolvedColor);\n\n if (parts) {\n var channels = processor(parts);\n this$1$1.r = channels[0];\n this$1$1.g = channels[1];\n this$1$1.b = channels[2];\n }\n }\n } else {\n this.r = arguments[0];\n this.g = arguments[1];\n this.b = arguments[2];\n }\n\n this.r = this.normalizeByte(this.r);\n this.g = this.normalizeByte(this.g);\n this.b = this.normalizeByte(this.b);\n },\n\n toHex: function() {\n var pad = this.padDigit;\n var r = this.r.toString(16);\n var g = this.g.toString(16);\n var b = this.b.toString(16);\n\n return \"#\" + pad(r) + pad(g) + pad(b);\n },\n\n resolveColor: function(value) {\n var color = value || \"black\";\n\n if (color.charAt(0) === \"#\") {\n color = color.substr(1, 6);\n }\n\n color = color.replace(/ /g, \"\");\n color = color.toLowerCase();\n color = Color.namedColors[color] || color;\n\n return color;\n },\n\n normalizeByte: function(value) {\n if (value < 0 || isNaN(value)) {\n return 0;\n }\n\n return value > 255 ? 255 : value;\n },\n\n padDigit: function(value) {\n return (value.length === 1) ? \"0\" + value : value;\n },\n\n brightness: function(value) {\n var round = Math.round;\n\n this.r = round(this.normalizeByte(this.r * value));\n this.g = round(this.normalizeByte(this.g * value));\n this.b = round(this.normalizeByte(this.b * value));\n\n return this;\n },\n\n percBrightness: function() {\n return Math.sqrt(0.241 * this.r * this.r + 0.691 * this.g * this.g + 0.068 * this.b * this.b);\n },\n\n isDark: function() {\n return this.percBrightness() < DARK_TRESHOLD;\n }\n });\n\n Color.fromBytes = function(r, g, b, a) {\n return new Bytes(r, g, b, a != null ? a : 1);\n };\n\n Color.fromRGB = function(r, g, b, a) {\n return new RGB(r, g, b, a != null ? a : 1);\n };\n\n Color.fromHSV = function(h, s, v, a) {\n return new HSV(h, s, v, a != null ? a : 1);\n };\n\n Color.fromHSL = function(h, s, l, a) {\n return new HSL(h, s, l, a != null ? a : 1);\n };\n\n Color.formats = [ {\n re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n process: function(parts) {\n return [\n parseInt(parts[1], 10), parseInt(parts[2], 10), parseInt(parts[3], 10)\n ];\n }\n }, {\n re: /^(\\w{2})(\\w{2})(\\w{2})$/,\n process: function(parts) {\n return [\n parseInt(parts[1], 16), parseInt(parts[2], 16), parseInt(parts[3], 16)\n ];\n }\n }, {\n re: /^(\\w{1})(\\w{1})(\\w{1})$/,\n process: function(parts) {\n return [\n parseInt(parts[1] + parts[1], 16),\n parseInt(parts[2] + parts[2], 16),\n parseInt(parts[3] + parts[3], 16)\n ];\n }\n } ];\n\n Color.namedColors = namedColors;\n\n kendo.deepExtend(kendo, {\n parseColor: parseColor,\n namedColors: namedColors,\n Color: Color\n });\n\n /***********************************************************************\n * WARNING: this file is auto-generated. If you change it directly,\n * your modifications will eventually be lost. The source code is in\n * `kendo-drawing` repository, you should make your changes there and\n * run `src-modules/sync.sh` in this repository.\n */\n\n (function($) {\n /* eslint-disable space-before-blocks, space-before-function-paren */\n\n window.kendo.util = window.kendo.util || {};\n\n var LRUCache = kendo.Class.extend({\n init: function(size) {\n\n this._size = size;\n this._length = 0;\n this._map = {};\n },\n\n put: function(key, value) {\n var map = this._map;\n var entry = { key: key, value: value };\n\n map[key] = entry;\n\n if (!this._head) {\n this._head = this._tail = entry;\n } else {\n this._tail.newer = entry;\n entry.older = this._tail;\n this._tail = entry;\n }\n\n if (this._length >= this._size) {\n map[this._head.key] = null;\n this._head = this._head.newer;\n this._head.older = null;\n } else {\n this._length++;\n }\n },\n\n get: function(key) {\n var entry = this._map[key];\n\n if (entry) {\n if (entry === this._head && entry !== this._tail) {\n this._head = entry.newer;\n this._head.older = null;\n }\n\n if (entry !== this._tail) {\n if (entry.older) {\n entry.older.newer = entry.newer;\n entry.newer.older = entry.older;\n }\n\n entry.older = this._tail;\n entry.newer = null;\n\n this._tail.newer = entry;\n this._tail = entry;\n }\n\n return entry.value;\n }\n }\n });\n\n var REPLACE_REGEX = /\\r?\\n|\\r|\\t/g;\n var SPACE = ' ';\n\n function normalizeText(text) {\n return String(text).replace(REPLACE_REGEX, SPACE);\n }\n\n function objectKey(object) {\n var parts = [];\n for (var key in object) {\n parts.push(key + object[key]);\n }\n\n return parts.sort().join(\"\");\n }\n\n // Computes FNV-1 hash\n // See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function\n function hashKey(str) {\n // 32-bit FNV-1 offset basis\n // See http://isthe.com/chongo/tech/comp/fnv/#FNV-param\n var hash = 0x811C9DC5;\n\n for (var i = 0; i < str.length; ++i) {\n hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);\n hash ^= str.charCodeAt(i);\n }\n\n return hash >>> 0;\n }\n\n function zeroSize() {\n return { width: 0, height: 0, baseline: 0 };\n }\n\n var DEFAULT_OPTIONS = {\n baselineMarkerSize: 1\n };\n\n var defaultMeasureBox;\n\n if (typeof document !== \"undefined\") {\n defaultMeasureBox = document.createElement(\"div\");\n defaultMeasureBox.style.cssText = \"position: absolute !important; top: -4000px !important; width: auto !important; height: auto !important;\" +\n \"padding: 0 !important; margin: 0 !important; border: 0 !important;\" +\n \"line-height: normal !important; visibility: hidden !important; white-space: pre!important;\";\n }\n\n var TextMetrics = kendo.Class.extend({\n init: function(options) {\n\n this._cache = new LRUCache(1000);\n this.options = $.extend({}, DEFAULT_OPTIONS, options);\n },\n\n measure: function(text, style, options) {\n if (options === void 0) { options = {}; }\n\n if (typeof text === 'undefined' || text === null) {\n return zeroSize();\n }\n\n var styleKey = objectKey(style);\n var cacheKey = hashKey(text + styleKey);\n var cachedResult = this._cache.get(cacheKey);\n\n if (cachedResult) {\n return cachedResult;\n }\n\n var size = zeroSize();\n var measureBox = options.box || defaultMeasureBox;\n var baselineMarker = this._baselineMarker().cloneNode(false);\n\n for (var key in style) {\n var value = style[key];\n if (typeof value !== \"undefined\") {\n measureBox.style[key] = value;\n }\n }\n\n var textStr = options.normalizeText !== false ? normalizeText(text) : String(text);\n\n measureBox.textContent = textStr;\n measureBox.appendChild(baselineMarker);\n document.body.appendChild(measureBox);\n\n if (textStr.length) {\n size.width = measureBox.offsetWidth - this.options.baselineMarkerSize;\n size.height = measureBox.offsetHeight;\n size.baseline = baselineMarker.offsetTop + this.options.baselineMarkerSize;\n }\n\n if (size.width > 0 && size.height > 0) {\n this._cache.put(cacheKey, size);\n }\n\n measureBox.parentNode.removeChild(measureBox);\n\n return size;\n },\n\n _baselineMarker: function() {\n var marker = document.createElement(\"div\");\n marker.style.cssText = \"display: inline-block; vertical-align: baseline;width: \" +\n this.options.baselineMarkerSize + \"px; height: \" + this.options.baselineMarkerSize + \"px;overflow: hidden;\";\n\n return marker;\n }\n });\n\n TextMetrics.current = new TextMetrics();\n\n function measureText(text, style, measureBox) {\n return TextMetrics.current.measure(text, style, measureBox);\n }\n\n kendo.deepExtend(kendo.util, {\n LRUCache: LRUCache,\n TextMetrics: TextMetrics,\n measureText: measureText,\n objectKey: objectKey,\n hashKey: hashKey,\n normalizeText: normalizeText\n });\n\n })(window.kendo.jQuery);\n\n /***********************************************************************\n * WARNING: this file is auto-generated. If you change it directly,\n * your modifications will eventually be lost. The source code is in\n * `kendo-drawing` repository, you should make your changes there and\n * run `src-modules/sync.sh` in this repository.\n */\n\n (function($) {\n /* eslint-disable space-before-blocks, space-before-function-paren */\n\n window.kendo = window.kendo || {};\n var kendoDrawing = kendo.drawing;\n var kendoDrawingUtil = kendoDrawing.util;\n var extendStatic = kendoDrawingUtil.extendStatic;\n var Class = kendo.Class;\n var kendoUtil = kendo.util;\n var support = kendo.support;\n var supportBrowser = support.browser;\n var htmlEncode = kendo.htmlEncode;\n\n var createPromise = kendoDrawingUtil.createPromise;\n var promiseAll = kendoDrawingUtil.promiseAll;\n\n var HasObservers = (function (Class$$1) {\n function HasObservers () {\n Class$$1.apply(this, arguments);\n }\n\n extendStatic(HasObservers, Class$$1);\n HasObservers.prototype = Object.create( Class$$1 && Class$$1.prototype );\n HasObservers.prototype.constructor = HasObservers;\n HasObservers.fn = HasObservers.prototype;\n HasObservers.fn.init = HasObservers.fn.constructor;\n\n HasObservers.prototype.observers = function observers () {\n this._observers = this._observers || [];\n return this._observers;\n };\n\n HasObservers.prototype.addObserver = function addObserver (element) {\n if (!this._observers) {\n this._observers = [ element ];\n } else {\n this._observers.push(element);\n }\n return this;\n };\n\n HasObservers.prototype.removeObserver = function removeObserver (element) {\n var observers = this.observers();\n var index = observers.indexOf(element);\n if (index !== -1) {\n observers.splice(index, 1);\n }\n return this;\n };\n\n HasObservers.prototype.trigger = function trigger (methodName, event) {\n var observers = this._observers;\n\n if (observers && !this._suspended) {\n for (var idx = 0; idx < observers.length; idx++) {\n var observer = observers[idx];\n if (observer[methodName]) {\n observer[methodName](event);\n }\n }\n }\n return this;\n };\n\n HasObservers.prototype.optionsChange = function optionsChange (e) {\n if (e === void 0) { e = {}; }\n\n e.element = this;\n this.trigger(\"optionsChange\", e);\n };\n\n HasObservers.prototype.geometryChange = function geometryChange () {\n this.trigger(\"geometryChange\", {\n element: this\n });\n };\n\n HasObservers.prototype.suspend = function suspend () {\n this._suspended = (this._suspended || 0) + 1;\n return this;\n };\n\n HasObservers.prototype.resume = function resume () {\n this._suspended = Math.max((this._suspended || 0) - 1, 0);\n return this;\n };\n\n HasObservers.prototype._observerField = function _observerField (field, value) {\n if (this[field]) {\n this[field].removeObserver(this);\n }\n this[field] = value;\n value.addObserver(this);\n };\n\n return HasObservers;\n }(Class));\n\n function append$1$1(first, second) {\n first.push.apply(first, second);\n return first;\n }\n\n /* eslint-disable key-spacing,no-multi-spaces,no-param-reassign */\n\n var literals = {\n 1 : \"i\", 10 : \"x\", 100 : \"c\",\n 2 : \"ii\", 20 : \"xx\", 200 : \"cc\",\n 3 : \"iii\", 30 : \"xxx\", 300 : \"ccc\",\n 4 : \"iv\", 40 : \"xl\", 400 : \"cd\",\n 5 : \"v\", 50 : \"l\", 500 : \"d\",\n 6 : \"vi\", 60 : \"lx\", 600 : \"dc\",\n 7 : \"vii\", 70 : \"lxx\", 700 : \"dcc\",\n 8 : \"viii\", 80 : \"lxxx\", 800 : \"dccc\",\n 9 : \"ix\", 90 : \"xc\", 900 : \"cm\",\n 1000 : \"m\"\n };\n\n function arabicToRoman(n) {\n var values = [ 1000,\n 900 , 800, 700, 600, 500, 400, 300, 200, 100,\n 90 , 80 , 70 , 60 , 50 , 40 , 30 , 20 , 10 ,\n 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 ];\n\n var roman = \"\";\n while (n > 0) {\n if (n < values[0]) {\n values.shift();\n } else {\n roman += literals[values[0]];\n n -= values[0];\n }\n }\n return roman;\n }\n\n var UNDEFINED = \"undefined\";\n\n function defined(value) {\n return typeof value !== UNDEFINED;\n }\n\n var defId = 1;\n\n function definitionId() {\n return \"kdef\" + defId++;\n }\n\n var DEG_TO_RAD = Math.PI / 180;\n var MAX_NUM = Number.MAX_VALUE;\n var MIN_NUM = -Number.MAX_VALUE;\n\n function deg(radians) {\n return radians / DEG_TO_RAD;\n }\n\n var fromCharCode = String.fromCharCode;\n\n // Encodes a string as UTF-8\n function encodeUTF8(input) {\n var output = \"\";\n\n for (var i = 0; i < input.length; i++) {\n var code = input.charCodeAt(i);\n\n if (0xD800 <= code && code <= 0xDBFF) {\n var hi = code;\n var low = input.charCodeAt(++i);\n\n if (!isNaN(low)) {\n // Combine high and low surrogate\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt\n code = (hi - 0xD800) * 0x400 +\n (low - 0xDC00) + 0x10000;\n }\n }\n\n if (code < 0x80) {\n // One byte\n output += fromCharCode(code);\n } else if (code < 0x800) {\n // Two bytes\n output += fromCharCode(0xC0 | (code >>> 6));\n output += fromCharCode(0x80 | (code & 0x3f));\n } else if (code < 0x10000) {\n // Three bytes\n output += fromCharCode(0xE0 | (code >>> 12));\n output += fromCharCode(0x80 | (code >>> 6 & 0x3f));\n output += fromCharCode(0x80 | (code & 0x3f));\n } else if (code < 0x10FFFF) {\n // Four bytes\n output += fromCharCode(0xF0 | (code >>> 18));\n output += fromCharCode(0x80 | (code >>> 12 & 0x3f));\n output += fromCharCode(0x80 | (code >>> 6 & 0x3f));\n output += fromCharCode(0x80 | (code & 0x3f));\n }\n }\n\n return output;\n }\n\n // Encodes a string as UTF-16 big-endian\n\n var KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n function encodeBase64(input) {\n var output = \"\";\n var i = 0;\n\n var utfInput = encodeUTF8(input);\n\n while (i < utfInput.length) {\n var chr1 = utfInput.charCodeAt(i++);\n var chr2 = utfInput.charCodeAt(i++);\n var chr3 = utfInput.charCodeAt(i++);\n\n var enc1 = chr1 >> 2;\n var enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n var enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n var enc4 = chr3 & 63;\n\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n\n output = output +\n KEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) +\n KEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);\n }\n\n return output;\n }\n\n function eventCoordinates(e) {\n if (defined((e.x || {}).location)) {\n return {\n x: e.x.location,\n y: e.y.location\n };\n }\n\n return {\n x: e.pageX || e.clientX || 0,\n y: e.pageY || e.clientY || 0\n };\n }\n\n function eventElement(e) {\n if (e === void 0) { e = {}; }\n\n return e.touch ? e.touch.initialTouch : e.target;\n }\n\n function isTransparent(color) {\n return color === \"\" || color === null || color === \"none\" || color === \"transparent\" || !defined(color);\n }\n\n function last(array) {\n if (array) {\n return array[array.length - 1];\n }\n }\n\n function limitValue(value, min, max) {\n return Math.max(Math.min(value, max), min);\n }\n\n /* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n /* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n /* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n /* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n // mergeSort is stable.\n function mergeSort(a, cmp) {\n if (a.length < 2) {\n return a.slice();\n }\n function merge(a, b) {\n var r = [], ai = 0, bi = 0, i = 0;\n while (ai < a.length && bi < b.length) {\n if (cmp(a[ai], b[bi]) <= 0) {\n r[i++] = a[ai++];\n } else {\n r[i++] = b[bi++];\n }\n }\n if (ai < a.length) {\n r.push.apply(r, a.slice(ai));\n }\n if (bi < b.length) {\n r.push.apply(r, b.slice(bi));\n }\n return r;\n }\n return (function sort(a) {\n if (a.length <= 1) {\n return a;\n }\n var m = Math.floor(a.length / 2);\n var left = a.slice(0, m);\n var right = a.slice(m);\n left = sort(left);\n right = sort(right);\n return merge(left, right);\n })(a);\n }\n\n var now = Date.now || function() {\n return new Date().getTime();\n };\n\n function rad(degrees) {\n return degrees * DEG_TO_RAD;\n }\n\n function pow(p) {\n if (p) {\n return Math.pow(10, p);\n }\n\n return 1;\n }\n\n function round(value, precision) {\n var power = pow(precision);\n return Math.round(value * power) / power;\n }\n\n function valueOrDefault(value, defaultValue) {\n return defined(value) ? value : defaultValue;\n }\n\n function bindEvents(element, events) {\n for (var eventName in events) {\n var eventNames = eventName.trim().split(\" \");\n for (var idx = 0; idx < eventNames.length; idx++) {\n element.addEventListener(eventNames[idx], events[eventName], false);\n }\n }\n }\n\n function elementOffset(element) {\n var box = element.getBoundingClientRect();\n\n var documentElement = document.documentElement;\n\n return {\n top: box.top + (window.pageYOffset || documentElement.scrollTop) - (documentElement.clientTop || 0),\n left: box.left + (window.pageXOffset || documentElement.scrollLeft) - (documentElement.clientLeft || 0)\n };\n }\n\n function elementStyles(element, styles) {\n var result = {};\n var style = window.getComputedStyle(element) || {};\n var stylesArray = Array.isArray(styles) ? styles : [ styles ];\n\n for (var idx = 0; idx < stylesArray.length; idx++) {\n var field = stylesArray[idx];\n result[field] = style[field];\n }\n\n return result;\n }\n\n function getPixels(value) {\n if (isNaN(value)) {\n return value;\n }\n return value + \"px\";\n }\n\n function elementSize(element, size) {\n if (size) {\n var width = size.width;\n var height = size.height;\n\n if (defined(width)) {\n element.style.width = getPixels(width);\n }\n\n if (defined(height)) {\n element.style.height = getPixels(height);\n }\n\n } else {\n var size$1 = elementStyles(element, [ 'width', 'height' ]);\n\n return {\n width: parseInt(size$1.width, 10),\n height: parseInt(size$1.height, 10)\n };\n }\n }\n\n function unbindEvents(element, events) {\n if (events === void 0) { events = {}; }\n\n for (var name in events) {\n var eventNames = name.trim().split(\" \");\n for (var idx = 0; idx < eventNames.length; idx++) {\n element.removeEventListener(eventNames[idx], events[name], false);\n }\n }\n }\n\n function elementPadding(element) {\n var ref = elementStyles(element, [ \"paddingLeft\", \"paddingTop\" ]);\n var paddingLeft = ref.paddingLeft;\n var paddingTop = ref.paddingTop;\n return {\n top: parseFloat(paddingTop),\n left: parseFloat(paddingLeft)\n };\n }\n\n var Matrix = (function (Class$$1) {\n function Matrix(a, b, c, d, e, f) {\n if (a === void 0) { a = 0; }\n if (b === void 0) { b = 0; }\n if (c === void 0) { c = 0; }\n if (d === void 0) { d = 0; }\n if (e === void 0) { e = 0; }\n if (f === void 0) { f = 0; }\n\n Class$$1.call(this);\n\n this.a = a;\n this.b = b;\n this.c = c;\n this.d = d;\n this.e = e;\n this.f = f;\n }\n\n extendStatic(Matrix, Class$$1);\n Matrix.prototype = Object.create( Class$$1 && Class$$1.prototype );\n Matrix.prototype.constructor = Matrix;\n Matrix.fn = Matrix.prototype;\n Matrix.fn.init = Matrix.fn.constructor;\n\n Matrix.prototype.multiplyCopy = function multiplyCopy (matrix) {\n return new Matrix(\n this.a * matrix.a + this.c * matrix.b,\n this.b * matrix.a + this.d * matrix.b,\n this.a * matrix.c + this.c * matrix.d,\n this.b * matrix.c + this.d * matrix.d,\n this.a * matrix.e + this.c * matrix.f + this.e,\n this.b * matrix.e + this.d * matrix.f + this.f\n );\n };\n\n Matrix.prototype.invert = function invert () {\n var ref = this;\n var a = ref.a;\n var b = ref.b;\n var d = ref.c;\n var e = ref.d;\n var g = ref.e;\n var h = ref.f;\n var det = a * e - b * d;\n\n if (det === 0) {\n return null;\n }\n\n return new Matrix(e / det, -b / det, -d / det, a / det,\n (d * h - e * g) / det, (b * g - a * h) / det);\n };\n\n Matrix.prototype.clone = function clone () {\n return new Matrix(this.a, this.b, this.c, this.d, this.e, this.f);\n };\n\n Matrix.prototype.equals = function equals (other) {\n if (!other) {\n return false;\n }\n\n return this.a === other.a && this.b === other.b &&\n this.c === other.c && this.d === other.d &&\n this.e === other.e && this.f === other.f;\n };\n\n Matrix.prototype.round = function round$1 (precision) {\n this.a = round(this.a, precision);\n this.b = round(this.b, precision);\n this.c = round(this.c, precision);\n this.d = round(this.d, precision);\n this.e = round(this.e, precision);\n this.f = round(this.f, precision);\n\n return this;\n };\n\n Matrix.prototype.toArray = function toArray (precision) {\n var result = [ this.a, this.b, this.c, this.d, this.e, this.f ];\n\n if (defined(precision)) {\n for (var i = 0; i < result.length; i++) {\n result[i] = round(result[i], precision);\n }\n }\n\n return result;\n };\n\n Matrix.prototype.toString = function toString (precision, separator) {\n if (separator === void 0) { separator = \",\"; }\n\n return this.toArray(precision).join(separator);\n };\n\n Matrix.translate = function translate (x, y) {\n return new Matrix(1, 0, 0, 1, x, y);\n };\n\n Matrix.unit = function unit () {\n return new Matrix(1, 0, 0, 1, 0, 0);\n };\n\n Matrix.rotate = function rotate (angle, x, y) {\n var matrix = new Matrix();\n matrix.a = Math.cos(rad(angle));\n matrix.b = Math.sin(rad(angle));\n matrix.c = -matrix.b;\n matrix.d = matrix.a;\n matrix.e = (x - x * matrix.a + y * matrix.b) || 0;\n matrix.f = (y - y * matrix.a - x * matrix.b) || 0;\n\n return matrix;\n };\n\n Matrix.scale = function scale (scaleX, scaleY) {\n return new Matrix(scaleX, 0, 0, scaleY, 0, 0);\n };\n\n return Matrix;\n }(Class));\n\n Matrix.IDENTITY = Matrix.unit();\n\n var matrixRegexp = /matrix\\((.*)\\)/;\n\n function parseMatrix(matrixString) {\n var match = matrixString.match(matrixRegexp);\n if (match === null || match.length !== 2) {\n return Matrix.unit();\n }\n\n var members = match[1].split(',').map(function (x) { return parseFloat(x); });\n return new (Function.prototype.bind.apply( Matrix, [ null ].concat( members) ));\n }\n\n function transformMatrix(element) {\n var transform = getComputedStyle(element).transform;\n\n if (transform === 'none') {\n return Matrix.unit();\n }\n\n return parseMatrix(transform);\n }\n\n function elementScale(element) {\n if (!element) {\n return Matrix.unit();\n }\n\n var matrix = transformMatrix(element);\n var parent = element.parentElement;\n while (parent) {\n var parentMatrix = transformMatrix(parent);\n matrix = matrix.multiplyCopy(parentMatrix);\n parent = parent.parentElement;\n }\n\n matrix.b = matrix.c = matrix.e = matrix.f = 0;\n return matrix;\n }\n\n var util = {\n \tappend: append$1$1,\n \tarabicToRoman: arabicToRoman,\n \tcreatePromise: createPromise,\n \tdefined: defined,\n \tdefinitionId: definitionId,\n \tdeg: deg,\n \tencodeBase64: encodeBase64,\n \teventCoordinates: eventCoordinates,\n \teventElement: eventElement,\n \tisTransparent: isTransparent,\n \tlast: last,\n \tlimitValue: limitValue,\n \tmergeSort: mergeSort,\n \tnow: now,\n \tpromiseAll: promiseAll,\n \trad: rad,\n \tround: round,\n \tvalueOrDefault: valueOrDefault,\n \tbindEvents: bindEvents,\n \telementOffset: elementOffset,\n \telementSize: elementSize,\n \telementStyles: elementStyles,\n \tunbindEvents: unbindEvents,\n \telementPadding: elementPadding,\n \telementScale: elementScale,\n \tDEG_TO_RAD: DEG_TO_RAD,\n \tMAX_NUM: MAX_NUM,\n \tMIN_NUM: MIN_NUM\n };\n\n var toString$1 = {}.toString;\n\n var OptionsStore = (function (HasObservers$$1) {\n function OptionsStore(options, prefix) {\n var this$1$1 = this;\n if (prefix === void 0) { prefix = \"\"; }\n\n HasObservers$$1.call(this);\n\n this.prefix = prefix;\n\n for (var field in options) {\n var member = options[field];\n member = this$1$1._wrap(member, field);\n this$1$1[field] = member;\n }\n }\n\n extendStatic(OptionsStore, HasObservers$$1);\n OptionsStore.prototype = Object.create( HasObservers$$1 && HasObservers$$1.prototype );\n OptionsStore.prototype.constructor = OptionsStore;\n OptionsStore.fn = OptionsStore.prototype;\n OptionsStore.fn.init = OptionsStore.fn.constructor;\n\n OptionsStore.prototype.get = function get (field) {\n var parts = field.split(\".\");\n var result = this;\n\n while (parts.length && result) {\n var part = parts.shift();\n result = result[part];\n }\n\n return result;\n };\n\n OptionsStore.prototype.set = function set (field, value) {\n var current = this.get(field);\n\n if (current !== value) {\n this._set(field, this._wrap(value, field));\n this.optionsChange({\n field: this.prefix + field,\n value: value\n });\n }\n };\n\n OptionsStore.prototype._set = function _set (field, value) {\n var this$1$1 = this;\n\n var composite = field.indexOf(\".\") >= 0;\n var parentObj = this;\n var fieldName = field;\n\n if (composite) {\n var parts = fieldName.split(\".\");\n var prefix = this.prefix;\n\n while (parts.length > 1) {\n fieldName = parts.shift();\n prefix += fieldName + \".\";\n\n var obj = parentObj[fieldName];\n\n if (!obj) {\n obj = new OptionsStore({}, prefix);\n obj.addObserver(this$1$1);\n parentObj[fieldName] = obj;\n }\n parentObj = obj;\n }\n fieldName = parts[0];\n }\n\n parentObj._clear(fieldName);\n parentObj[fieldName] = value;\n };\n\n OptionsStore.prototype._clear = function _clear (field) {\n var current = this[field];\n if (current && current.removeObserver) {\n current.removeObserver(this);\n }\n };\n\n OptionsStore.prototype._wrap = function _wrap (object, field) {\n var type = toString$1.call(object);\n var wrapped = object;\n\n if (wrapped !== null && defined(wrapped) && type === \"[object Object]\") {\n if (!(object instanceof OptionsStore) && !(object instanceof Class)) {\n wrapped = new OptionsStore(wrapped, this.prefix + field + \".\");\n }\n\n wrapped.addObserver(this);\n }\n\n return wrapped;\n };\n\n return OptionsStore;\n }(HasObservers));\n\n function setAccessor(field) {\n return function(value) {\n if (this[field] !== value) {\n this[field] = value;\n this.geometryChange();\n }\n\n return this;\n };\n }\n\n function getAccessor(field) {\n return function() {\n return this[field];\n };\n }\n\n function defineAccessors(fn, fields) {\n for (var i = 0; i < fields.length; i++) {\n var name = fields[i];\n var capitalized = name.charAt(0).toUpperCase() +\n name.substring(1, name.length);\n\n fn[\"set\" + capitalized] = setAccessor(name);\n fn[\"get\" + capitalized] = getAccessor(name);\n }\n }\n\n var withAccessors = function (TBase, names) {\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }extendStatic(result, TBase);\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n result.fn = result.prototype;\n result.fn.init = result.fn.constructor;\n\n return result;\n }(TBase));\n defineAccessors(result.prototype, names);\n\n return result;\n };\n\n function toMatrix(transformation) {\n if (transformation && typeof transformation.matrix === \"function\") {\n return transformation.matrix();\n }\n\n return transformation;\n }\n\n var Point = (function (superclass) {\n function Point(x, y) {\n superclass.call(this);\n\n this.x = x || 0;\n this.y = y || 0;\n }\n\n extendStatic(Point, superclass);\n Point.prototype = Object.create( superclass && superclass.prototype );\n Point.prototype.constructor = Point;\n Point.fn = Point.prototype;\n Point.fn.init = Point.fn.constructor;\n\n var staticAccessors = { ZERO: {} };\n\n Point.prototype.equals = function equals (other) {\n return other && other.x === this.x && other.y === this.y;\n };\n\n Point.prototype.clone = function clone () {\n return new Point(this.x, this.y);\n };\n\n Point.prototype.rotate = function rotate (angle, origin) {\n var originPoint = Point.create(origin) || Point.ZERO;\n\n return this.transform(Matrix.rotate(angle, originPoint.x, originPoint.y));\n };\n\n Point.prototype.translate = function translate (x, y) {\n this.x += x;\n this.y += y;\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.translateWith = function translateWith (point) {\n return this.translate(point.x, point.y);\n };\n\n Point.prototype.move = function move (x, y) {\n this.x = this.y = 0;\n return this.translate(x, y);\n };\n\n Point.prototype.scale = function scale (scaleX, scaleY) {\n if (scaleY === void 0) { scaleY = scaleX; }\n\n this.x *= scaleX;\n this.y *= scaleY;\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.scaleCopy = function scaleCopy (scaleX, scaleY) {\n return this.clone().scale(scaleX, scaleY);\n };\n\n Point.prototype.transform = function transform (transformation) {\n var matrix = toMatrix(transformation);\n var ref = this;\n var x = ref.x;\n var y = ref.y;\n\n this.x = matrix.a * x + matrix.c * y + matrix.e;\n this.y = matrix.b * x + matrix.d * y + matrix.f;\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.transformCopy = function transformCopy (transformation) {\n var point = this.clone();\n\n if (transformation) {\n point.transform(transformation);\n }\n\n return point;\n };\n\n Point.prototype.distanceTo = function distanceTo (point) {\n var dx = this.x - point.x;\n var dy = this.y - point.y;\n\n return Math.sqrt(dx * dx + dy * dy);\n };\n\n Point.prototype.round = function round$1 (digits) {\n this.x = round(this.x, digits);\n this.y = round(this.y, digits);\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.toArray = function toArray (digits) {\n var doRound = defined(digits);\n var x = doRound ? round(this.x, digits) : this.x;\n var y = doRound ? round(this.y, digits) : this.y;\n\n return [ x, y ];\n };\n\n Point.prototype.toString = function toString (digits, separator) {\n if (separator === void 0) { separator = \" \"; }\n\n var ref = this;\n var x = ref.x;\n var y = ref.y;\n\n if (defined(digits)) {\n x = round(x, digits);\n y = round(y, digits);\n }\n\n return x + separator + y;\n };\n\n Point.create = function create (arg0, arg1) {\n if (defined(arg0)) {\n if (arg0 instanceof Point) {\n return arg0;\n } else if (arguments.length === 1 && arg0.length === 2) {\n return new Point(arg0[0], arg0[1]);\n }\n\n return new Point(arg0, arg1);\n }\n };\n\n Point.min = function min () {\n var arguments$1 = arguments;\n\n var minX = MAX_NUM;\n var minY = MAX_NUM;\n\n for (var i = 0; i < arguments.length; i++) {\n var point = arguments$1[i];\n minX = Math.min(point.x, minX);\n minY = Math.min(point.y, minY);\n }\n\n return new Point(minX, minY);\n };\n\n Point.max = function max () {\n var arguments$1 = arguments;\n\n var maxX = MIN_NUM;\n var maxY = MIN_NUM;\n\n for (var i = 0; i < arguments.length; i++) {\n var point = arguments$1[i];\n maxX = Math.max(point.x, maxX);\n maxY = Math.max(point.y, maxY);\n }\n\n return new Point(maxX, maxY);\n };\n\n Point.minPoint = function minPoint () {\n return new Point(MIN_NUM, MIN_NUM);\n };\n\n Point.maxPoint = function maxPoint () {\n return new Point(MAX_NUM, MAX_NUM);\n };\n\n staticAccessors.ZERO.get = function () {\n return new Point(0, 0);\n };\n\n Object.defineProperties( Point, staticAccessors );\n\n return Point;\n }(withAccessors(HasObservers, [ \"x\", \"y\" ])));\n\n var Size = (function (superclass) {\n function Size(width, height) {\n superclass.call(this);\n\n this.width = width || 0;\n this.height = height || 0;\n }\n\n extendStatic(Size, superclass);\n Size.prototype = Object.create( superclass && superclass.prototype );\n Size.prototype.constructor = Size;\n Size.fn = Size.prototype;\n Size.fn.init = Size.fn.constructor;\n\n var staticAccessors = { ZERO: {} };\n\n Size.prototype.equals = function equals (other) {\n return other && other.width === this.width && other.height === this.height;\n };\n\n Size.prototype.clone = function clone () {\n return new Size(this.width, this.height);\n };\n\n Size.prototype.toArray = function toArray (digits) {\n var doRound = defined(digits);\n var width = doRound ? round(this.width, digits) : this.width;\n var height = doRound ? round(this.height, digits) : this.height;\n\n return [ width, height ];\n };\n\n Size.create = function create (arg0, arg1) {\n if (defined(arg0)) {\n if (arg0 instanceof Size) {\n return arg0;\n } else if (arguments.length === 1 && arg0.length === 2) {\n return new Size(arg0[0], arg0[1]);\n }\n\n return new Size(arg0, arg1);\n }\n };\n\n staticAccessors.ZERO.get = function () {\n return new Size(0, 0);\n };\n\n Object.defineProperties( Size, staticAccessors );\n\n return Size;\n }(withAccessors(HasObservers, [ \"width\", \"height\" ])));\n\n var Rect = (function (HasObservers$$1) {\n function Rect(origin, size, cornerRadius) {\n if (origin === void 0) { origin = new Point(); }\n if (size === void 0) { size = new Size(); }\n if (cornerRadius === void 0) { cornerRadius = 0; }\n\n HasObservers$$1.call(this);\n\n this.setOrigin(origin);\n this.setSize(size);\n this.setCornerRadius(cornerRadius);\n }\n\n extendStatic(Rect, HasObservers$$1);\n Rect.prototype = Object.create( HasObservers$$1 && HasObservers$$1.prototype );\n Rect.prototype.constructor = Rect;\n Rect.fn = Rect.prototype;\n Rect.fn.init = Rect.fn.constructor;\n\n Rect.prototype.clone = function clone () {\n return new Rect(\n this.origin.clone(),\n this.size.clone()\n );\n };\n\n Rect.prototype.equals = function equals (other) {\n return other &&\n other.origin.equals(this.origin) &&\n other.size.equals(this.size);\n };\n\n Rect.prototype.setOrigin = function setOrigin (value) {\n this._observerField(\"origin\", Point.create(value));\n this.geometryChange();\n return this;\n };\n\n Rect.prototype.getOrigin = function getOrigin () {\n return this.origin;\n };\n\n Rect.prototype.setCornerRadius = function setCornerRadius (radius) {\n this.cornerRadius = Array.isArray(radius) ? radius : [ radius, radius ];\n\n this.geometryChange();\n return this;\n };\n\n Rect.prototype.getCornerRadius = function getCornerRadius () {\n return this.cornerRadius;\n };\n\n Rect.prototype.setSize = function setSize (value) {\n this._observerField(\"size\", Size.create(value));\n this.geometryChange();\n return this;\n };\n\n Rect.prototype.getSize = function getSize () {\n return this.size;\n };\n\n Rect.prototype.width = function width () {\n return this.size.width;\n };\n\n Rect.prototype.height = function height () {\n return this.size.height;\n };\n\n Rect.prototype.topLeft = function topLeft () {\n return this.origin.clone();\n };\n\n Rect.prototype.bottomRight = function bottomRight () {\n return this.origin.clone().translate(this.width(), this.height());\n };\n\n Rect.prototype.topRight = function topRight () {\n return this.origin.clone().translate(this.width(), 0);\n };\n\n Rect.prototype.bottomLeft = function bottomLeft () {\n return this.origin.clone().translate(0, this.height());\n };\n\n Rect.prototype.center = function center () {\n return this.origin.clone().translate(this.width() / 2, this.height() / 2);\n };\n\n Rect.prototype.bbox = function bbox (matrix) {\n var tl = this.topLeft().transformCopy(matrix);\n var tr = this.topRight().transformCopy(matrix);\n var br = this.bottomRight().transformCopy(matrix);\n var bl = this.bottomLeft().transformCopy(matrix);\n\n return Rect.fromPoints(tl, tr, br, bl);\n };\n\n Rect.prototype.transformCopy = function transformCopy (m) {\n return Rect.fromPoints(\n this.topLeft().transform(m),\n this.bottomRight().transform(m)\n );\n };\n\n Rect.prototype.expand = function expand (x, y) {\n if (y === void 0) { y = x; }\n\n this.size.width += 2 * x;\n this.size.height += 2 * y;\n\n this.origin.translate(-x, -y);\n\n return this;\n };\n\n Rect.prototype.expandCopy = function expandCopy (x, y) {\n return this.clone().expand(x, y);\n };\n\n Rect.prototype.containsPoint = function containsPoint (point) {\n var origin = this.origin;\n var bottomRight = this.bottomRight();\n return !(point.x < origin.x || point.y < origin.y || bottomRight.x < point.x || bottomRight.y < point.y);\n };\n\n Rect.prototype._isOnPath = function _isOnPath (point, width) {\n var rectOuter = this.expandCopy(width, width);\n var rectInner = this.expandCopy(-width, -width);\n\n return rectOuter.containsPoint(point) && !rectInner.containsPoint(point);\n };\n\n Rect.fromPoints = function fromPoints () {\n var topLeft = Point.min.apply(null, arguments);\n var bottomRight = Point.max.apply(null, arguments);\n var size = new Size(\n bottomRight.x - topLeft.x,\n bottomRight.y - topLeft.y\n );\n\n return new Rect(topLeft, size);\n };\n\n Rect.union = function union (a, b) {\n return Rect.fromPoints(\n Point.min(a.topLeft(), b.topLeft()),\n Point.max(a.bottomRight(), b.bottomRight())\n );\n };\n\n Rect.intersect = function intersect (a, b) {\n var rect1 = {\n left: a.topLeft().x,\n top: a.topLeft().y,\n right: a.bottomRight().x,\n bottom: a.bottomRight().y\n };\n\n var rect2 = {\n left: b.topLeft().x,\n top: b.topLeft().y,\n right: b.bottomRight().x,\n bottom: b.bottomRight().y\n };\n\n if (rect1.left <= rect2.right &&\n rect2.left <= rect1.right &&\n rect1.top <= rect2.bottom &&\n rect2.top <= rect1.bottom) {\n return Rect.fromPoints(\n new Point(Math.max(rect1.left, rect2.left), Math.max(rect1.top, rect2.top)),\n new Point(Math.min(rect1.right, rect2.right), Math.min(rect1.bottom, rect2.bottom))\n );\n }\n };\n\n return Rect;\n }(HasObservers));\n\n var Transformation = (function (HasObservers$$1) {\n function Transformation(matrix) {\n if (matrix === void 0) { matrix = Matrix.unit(); }\n\n HasObservers$$1.call(this);\n\n this._matrix = matrix;\n }\n\n extendStatic(Transformation, HasObservers$$1);\n Transformation.prototype = Object.create( HasObservers$$1 && HasObservers$$1.prototype );\n Transformation.prototype.constructor = Transformation;\n Transformation.fn = Transformation.prototype;\n Transformation.fn.init = Transformation.fn.constructor;\n\n Transformation.prototype.clone = function clone () {\n return new Transformation(\n this._matrix.clone()\n );\n };\n\n Transformation.prototype.equals = function equals (other) {\n return other &&\n other._matrix.equals(this._matrix);\n };\n\n Transformation.prototype.translate = function translate (x, y) {\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(x, y));\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.scale = function scale (scaleX, scaleY, origin) {\n if (scaleY === void 0) { scaleY = scaleX; }\n if (origin === void 0) { origin = null; }\n\n var originPoint = origin;\n\n if (originPoint) {\n originPoint = Point.create(originPoint);\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(originPoint.x, originPoint.y));\n }\n\n this._matrix = this._matrix.multiplyCopy(Matrix.scale(scaleX, scaleY));\n\n if (originPoint) {\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(-originPoint.x, -originPoint.y));\n }\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.rotate = function rotate (angle, origin) {\n var originPoint = Point.create(origin) || Point.ZERO;\n\n this._matrix = this._matrix.multiplyCopy(Matrix.rotate(angle, originPoint.x, originPoint.y));\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.multiply = function multiply (transformation) {\n var matrix = toMatrix(transformation);\n\n this._matrix = this._matrix.multiplyCopy(matrix);\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.matrix = function matrix (value) {\n if (value) {\n this._matrix = value;\n this._optionsChange();\n return this;\n }\n\n return this._matrix;\n };\n\n Transformation.prototype._optionsChange = function _optionsChange () {\n this.optionsChange({\n field: \"transform\",\n value: this\n });\n };\n\n return Transformation;\n }(HasObservers));\n\n function transform$1(matrix) {\n if (matrix === null) {\n return null;\n }\n\n if (matrix instanceof Transformation) {\n return matrix;\n }\n\n return new Transformation(matrix);\n }\n\n var Element$1 = (function (HasObservers$$1) {\n function Element(options) {\n HasObservers$$1.call(this);\n\n this._initOptions(options);\n }\n\n extendStatic(Element, HasObservers$$1);\n Element.prototype = Object.create( HasObservers$$1 && HasObservers$$1.prototype );\n Element.prototype.constructor = Element;\n Element.fn = Element.prototype;\n Element.fn.init = Element.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Rect\";\n };\n\n Element.prototype._initOptions = function _initOptions (options) {\n if (options === void 0) { options = {}; }\n\n var clip = options.clip;\n var transform = options.transform;\n\n if (transform) {\n options.transform = transform$1(transform);\n }\n\n if (clip && !clip.id) {\n clip.id = definitionId();\n }\n\n this.options = new OptionsStore(options);\n this.options.addObserver(this);\n };\n\n Element.prototype.transform = function transform (value) {\n if (defined(value)) {\n this.options.set(\"transform\", transform$1(value));\n } else {\n return this.options.get(\"transform\");\n }\n };\n\n Element.prototype.parentTransform = function parentTransform () {\n var element = this;\n var parentMatrix;\n\n while (element.parent) {\n element = element.parent;\n var transformation = element.transform();\n if (transformation) {\n parentMatrix = transformation.matrix().multiplyCopy(parentMatrix || Matrix.unit());\n }\n }\n\n if (parentMatrix) {\n return transform$1(parentMatrix);\n }\n };\n\n Element.prototype.currentTransform = function currentTransform (parentTransform) {\n if (parentTransform === void 0) { parentTransform = this.parentTransform(); }\n\n var elementTransform = this.transform();\n var elementMatrix = toMatrix(elementTransform);\n\n var parentMatrix = toMatrix(parentTransform);\n var combinedMatrix;\n\n if (elementMatrix && parentMatrix) {\n combinedMatrix = parentMatrix.multiplyCopy(elementMatrix);\n } else {\n combinedMatrix = elementMatrix || parentMatrix;\n }\n\n if (combinedMatrix) {\n return transform$1(combinedMatrix);\n }\n };\n\n Element.prototype.visible = function visible (value) {\n if (defined(value)) {\n this.options.set(\"visible\", value);\n return this;\n }\n\n return this.options.get(\"visible\") !== false;\n };\n\n Element.prototype.clip = function clip (value) {\n var options = this.options;\n if (defined(value)) {\n if (value && !value.id) {\n value.id = definitionId();\n }\n options.set(\"clip\", value);\n return this;\n }\n\n return options.get(\"clip\");\n };\n\n Element.prototype.opacity = function opacity (value) {\n if (defined(value)) {\n this.options.set(\"opacity\", value);\n return this;\n }\n\n return valueOrDefault(this.options.get(\"opacity\"), 1);\n };\n\n Element.prototype.className = function className (value) {\n if (defined(value)) {\n this.options.set(\"className\", value);\n return this;\n }\n\n return this.options.get(\"className\");\n };\n\n Element.prototype.clippedBBox = function clippedBBox (transformation) {\n var bbox = this._clippedBBox(transformation);\n if (bbox) {\n var clip = this.clip();\n return clip ? Rect.intersect(bbox, clip.bbox(transformation)) : bbox;\n }\n };\n\n Element.prototype.containsPoint = function containsPoint (point, parentTransform) {\n if (this.visible()) {\n var transform = this.currentTransform(parentTransform);\n var transformedPoint = point;\n if (transform) {\n transformedPoint = point.transformCopy(transform.matrix().invert());\n }\n return (this._hasFill() && this._containsPoint(transformedPoint)) || (this._isOnPath && this._hasStroke() && this._isOnPath(transformedPoint));\n }\n return false;\n };\n\n Element.prototype._hasFill = function _hasFill () {\n var fill = this.options.fill;\n return fill && !isTransparent(fill.color);\n };\n\n Element.prototype._hasStroke = function _hasStroke () {\n var stroke = this.options.stroke;\n return stroke && stroke.width > 0 && !isTransparent(stroke.color);\n };\n\n Element.prototype._clippedBBox = function _clippedBBox (transformation) {\n return this.bbox(transformation);\n };\n\n Object.defineProperties( Element.prototype, prototypeAccessors );\n\n return Element;\n }(HasObservers));\n\n function ellipseExtremeAngles(center, rx, ry, matrix) {\n var extremeX = 0;\n var extremeY = 0;\n\n if (matrix) {\n extremeX = Math.atan2(matrix.c * ry, matrix.a * rx);\n if (matrix.b !== 0) {\n extremeY = Math.atan2(matrix.d * ry, matrix.b * rx);\n }\n }\n\n return {\n x: extremeX,\n y: extremeY\n };\n }\n\n var PI_DIV_2 = Math.PI / 2;\n\n var Circle$2 = (function (superclass) {\n function Circle(center, radius) {\n if (center === void 0) { center = new Point(); }\n if (radius === void 0) { radius = 0; }\n\n superclass.call(this);\n\n this.setCenter(center);\n this.setRadius(radius);\n }\n\n extendStatic(Circle, superclass);\n Circle.prototype = Object.create( superclass && superclass.prototype );\n Circle.prototype.constructor = Circle;\n Circle.fn = Circle.prototype;\n Circle.fn.init = Circle.fn.constructor;\n\n Circle.prototype.setCenter = function setCenter (value) {\n this._observerField(\"center\", Point.create(value));\n this.geometryChange();\n return this;\n };\n\n Circle.prototype.getCenter = function getCenter () {\n return this.center;\n };\n\n Circle.prototype.equals = function equals (other) {\n return other &&\n other.center.equals(this.center) &&\n other.radius === this.radius;\n };\n\n Circle.prototype.clone = function clone () {\n return new Circle(this.center.clone(), this.radius);\n };\n\n Circle.prototype.pointAt = function pointAt (angle) {\n return this._pointAt(rad(angle));\n };\n\n Circle.prototype.bbox = function bbox (matrix) {\n var this$1$1 = this;\n\n var extremeAngles = ellipseExtremeAngles(this.center, this.radius, this.radius, matrix);\n var minPoint = Point.maxPoint();\n var maxPoint = Point.minPoint();\n\n for (var i = 0; i < 4; i++) {\n var currentPointX = this$1$1._pointAt(extremeAngles.x + i * PI_DIV_2).transformCopy(matrix);\n var currentPointY = this$1$1._pointAt(extremeAngles.y + i * PI_DIV_2).transformCopy(matrix);\n var currentPoint = new Point(currentPointX.x, currentPointY.y);\n\n minPoint = Point.min(minPoint, currentPoint);\n maxPoint = Point.max(maxPoint, currentPoint);\n }\n\n return Rect.fromPoints(minPoint, maxPoint);\n };\n\n Circle.prototype._pointAt = function _pointAt (angle) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n\n return new Point(\n center.x + radius * Math.cos(angle),\n center.y + radius * Math.sin(angle)\n );\n };\n\n Circle.prototype.containsPoint = function containsPoint (point) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n var inCircle = Math.pow(point.x - center.x, 2) +\n Math.pow(point.y - center.y, 2) <= Math.pow(radius, 2);\n return inCircle;\n };\n\n Circle.prototype._isOnPath = function _isOnPath (point, width) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n var pointDistance = center.distanceTo(point);\n\n return radius - width <= pointDistance && pointDistance <= radius + width;\n };\n\n return Circle;\n }(withAccessors(HasObservers, [ \"radius\" ])));\n\n var GRADIENT = \"Gradient\";\n\n var paintable = function (TBase) { return (\n (function (TBase) {\n function anonymous () {\n TBase.apply(this, arguments);\n }\n\n extendStatic(anonymous, TBase);\n anonymous.prototype = Object.create( TBase && TBase.prototype );\n anonymous.prototype.constructor = anonymous;\n anonymous.fn = anonymous.prototype;\n anonymous.fn.init = anonymous.fn.constructor;\n\n anonymous.prototype.fill = function fill (color, opacity) {\n var options = this.options;\n\n if (defined(color)) {\n if (color && color.nodeType !== GRADIENT) {\n var newFill = {\n color: color\n };\n if (defined(opacity)) {\n newFill.opacity = opacity;\n }\n options.set(\"fill\", newFill);\n } else {\n options.set(\"fill\", color);\n }\n\n return this;\n }\n\n return options.get(\"fill\");\n };\n\n anonymous.prototype.stroke = function stroke (color, width, opacity) {\n if (defined(color)) {\n this.options.set(\"stroke.color\", color);\n\n if (defined(width)) {\n this.options.set(\"stroke.width\", width);\n }\n\n if (defined(opacity)) {\n this.options.set(\"stroke.opacity\", opacity);\n }\n\n return this;\n }\n\n return this.options.get(\"stroke\");\n };\n\n return anonymous;\n }(TBase))\n ); };\n\n var IDENTITY_MATRIX_HASH = Matrix.IDENTITY.toString();\n\n var measurable = function (TBase) { return (\n (function (TBase) {\n function anonymous () {\n TBase.apply(this, arguments);\n }\n\n extendStatic(anonymous, TBase);\n anonymous.prototype = Object.create( TBase && TBase.prototype );\n anonymous.prototype.constructor = anonymous;\n anonymous.fn = anonymous.prototype;\n anonymous.fn.init = anonymous.fn.constructor;\n\n anonymous.prototype.bbox = function bbox (transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n var matrixHash = combinedMatrix ? combinedMatrix.toString() : IDENTITY_MATRIX_HASH;\n var bbox;\n\n if (this._bboxCache && this._matrixHash === matrixHash) {\n bbox = this._bboxCache.clone();\n } else {\n bbox = this._bbox(combinedMatrix);\n this._bboxCache = bbox ? bbox.clone() : null;\n this._matrixHash = matrixHash;\n }\n\n var strokeWidth = this.options.get(\"stroke.width\");\n if (strokeWidth && bbox) {\n bbox.expand(strokeWidth / 2);\n }\n\n return bbox;\n };\n\n anonymous.prototype.geometryChange = function geometryChange () {\n delete this._bboxCache;\n this.trigger(\"geometryChange\", {\n element: this\n });\n };\n\n return anonymous;\n }(TBase))\n ); };\n\n function geometryAccessor(name) {\n var fieldName = \"_\" + name;\n return function(value) {\n if (defined(value)) {\n this._observerField(fieldName, value);\n this.geometryChange();\n return this;\n }\n\n return this[fieldName];\n };\n }\n\n function defineGeometryAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = geometryAccessor(names[i]);\n }\n }\n\n var withGeometry = function (TBase, names) {\n if (names === void 0) { names = [ \"geometry\" ]; }\n\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }extendStatic(result, TBase);\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n result.fn = result.prototype;\n result.fn.init = result.fn.constructor;\n\n return result;\n }(TBase));\n defineGeometryAccessors(result.prototype, names);\n\n return result;\n };\n\n var DEFAULT_STROKE = \"#000\";\n\n var Circle = (function (superclass) {\n function Circle(geometry, options) {\n if (geometry === void 0) { geometry = new Circle$2(); }\n if (options === void 0) { options = {}; }\n\n superclass.call(this, options);\n\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(DEFAULT_STROKE);\n }\n }\n\n extendStatic(Circle, superclass);\n Circle.prototype = Object.create( superclass && superclass.prototype );\n Circle.prototype.constructor = Circle;\n Circle.fn = Circle.prototype;\n Circle.fn.init = Circle.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Circle\";\n };\n\n Circle.prototype.rawBBox = function rawBBox () {\n return this._geometry.bbox();\n };\n\n Circle.prototype._bbox = function _bbox (matrix) {\n return this._geometry.bbox(matrix);\n };\n\n Circle.prototype._containsPoint = function _containsPoint (point) {\n return this.geometry().containsPoint(point);\n };\n\n Circle.prototype._isOnPath = function _isOnPath (point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n };\n\n Object.defineProperties( Circle.prototype, prototypeAccessors );\n\n return Circle;\n }(paintable(measurable(withGeometry(Element$1)))));\n\n var PRECISION = 10;\n\n function close$1(a, b, tolerance) {\n if (tolerance === void 0) { tolerance = PRECISION; }\n\n return round(Math.abs(a - b), tolerance) === 0;\n }\n\n function closeOrLess(a, b, tolerance) {\n return a < b || close$1(a, b, tolerance);\n }\n\n function lineIntersection(p0, p1, p2, p3) {\n var s1x = p1.x - p0.x;\n var s2x = p3.x - p2.x;\n var s1y = p1.y - p0.y;\n var s2y = p3.y - p2.y;\n var nx = p0.x - p2.x;\n var ny = p0.y - p2.y;\n var d = s1x * s2y - s2x * s1y;\n var s = (s1x * ny - s1y * nx) / d;\n var t = (s2x * ny - s2y * nx) / d;\n\n if (s >= 0 && s <= 1 && t >= 0 && t <= 1) {\n return new Point(p0.x + t * s1x, p0.y + t * s1y);\n }\n }\n\n var MAX_INTERVAL = 45;\n var pow$1 = Math.pow;\n var accessors = [ \"radiusX\", \"radiusY\", \"startAngle\", \"endAngle\", \"anticlockwise\" ];\n\n var Arc$2 = (function (superclass) {\n function Arc(center, options) {\n if (center === void 0) { center = new Point(); }\n if (options === void 0) { options = {}; }\n\n superclass.call(this);\n\n this.setCenter(center);\n\n this.radiusX = options.radiusX;\n this.radiusY = options.radiusY || options.radiusX;\n this.startAngle = options.startAngle;\n this.endAngle = options.endAngle;\n this.anticlockwise = options.anticlockwise || false;\n this.xRotation = options.xRotation;\n }\n\n extendStatic(Arc, superclass);\n Arc.prototype = Object.create( superclass && superclass.prototype );\n Arc.prototype.constructor = Arc;\n Arc.fn = Arc.prototype;\n Arc.fn.init = Arc.fn.constructor;\n\n Arc.prototype.clone = function clone () {\n return new Arc(this.center, {\n radiusX: this.radiusX,\n radiusY: this.radiusY,\n startAngle: this.startAngle,\n endAngle: this.endAngle,\n anticlockwise: this.anticlockwise\n });\n };\n\n Arc.prototype.setCenter = function setCenter (value) {\n this._observerField(\"center\", Point.create(value));\n this.geometryChange();\n return this;\n };\n\n Arc.prototype.getCenter = function getCenter () {\n return this.center;\n };\n\n Arc.prototype.pointAt = function pointAt (angle) {\n var center = this.center;\n var radian = rad(angle);\n\n return new Point(\n center.x + this.radiusX * Math.cos(radian),\n center.y + this.radiusY * Math.sin(radian)\n );\n };\n\n Arc.prototype.curvePoints = function curvePoints () {\n var this$1$1 = this;\n\n var startAngle = this.startAngle;\n var dir = this.anticlockwise ? -1 : 1;\n var curvePoints = [ this.pointAt(startAngle) ];\n var interval = this._arcInterval();\n var intervalAngle = interval.endAngle - interval.startAngle;\n var subIntervalsCount = Math.ceil(intervalAngle / MAX_INTERVAL);\n var subIntervalAngle = intervalAngle / subIntervalsCount;\n var currentAngle = startAngle;\n var transformation;\n if (this.xRotation) {\n transformation = transform$1().rotate(this.xRotation, this.center);\n }\n\n for (var i = 1; i <= subIntervalsCount; i++) {\n var nextAngle = currentAngle + dir * subIntervalAngle;\n var points = this$1$1._intervalCurvePoints(currentAngle, nextAngle, transformation);\n\n curvePoints.push(points.cp1, points.cp2, points.p2);\n currentAngle = nextAngle;\n }\n\n return curvePoints;\n };\n\n Arc.prototype.bbox = function bbox (matrix) {\n var this$1$1 = this;\n\n var interval = this._arcInterval();\n var startAngle = interval.startAngle;\n var endAngle = interval.endAngle;\n var extremeAngles = ellipseExtremeAngles(this.center, this.radiusX, this.radiusY, matrix);\n var extremeX = deg(extremeAngles.x);\n var extremeY = deg(extremeAngles.y);\n var endPoint = this.pointAt(endAngle).transformCopy(matrix);\n var currentAngleX = bboxStartAngle(extremeX, startAngle);\n var currentAngleY = bboxStartAngle(extremeY, startAngle);\n var currentPoint = this.pointAt(startAngle).transformCopy(matrix);\n var minPoint = Point.min(currentPoint, endPoint);\n var maxPoint = Point.max(currentPoint, endPoint);\n\n while (currentAngleX < endAngle || currentAngleY < endAngle) {\n var currentPointX = (void 0);\n if (currentAngleX < endAngle) {\n currentPointX = this$1$1.pointAt(currentAngleX).transformCopy(matrix);\n currentAngleX += 90;\n }\n\n var currentPointY = (void 0);\n if (currentAngleY < endAngle) {\n currentPointY = this$1$1.pointAt(currentAngleY).transformCopy(matrix);\n currentAngleY += 90;\n }\n\n currentPoint = new Point(currentPointX.x, currentPointY.y);\n minPoint = Point.min(minPoint, currentPoint);\n maxPoint = Point.max(maxPoint, currentPoint);\n }\n\n return Rect.fromPoints(minPoint, maxPoint);\n };\n\n Arc.prototype._arcInterval = function _arcInterval () {\n var ref = this;\n var startAngle = ref.startAngle;\n var endAngle = ref.endAngle;\n var anticlockwise = ref.anticlockwise;\n\n if (anticlockwise) {\n var oldStart = startAngle;\n startAngle = endAngle;\n endAngle = oldStart;\n }\n\n if (startAngle > endAngle || (anticlockwise && startAngle === endAngle)) {\n endAngle += 360;\n }\n\n return {\n startAngle: startAngle,\n endAngle: endAngle\n };\n };\n\n Arc.prototype._intervalCurvePoints = function _intervalCurvePoints (startAngle, endAngle, transformation) {\n var p1 = this.pointAt(startAngle);\n var p2 = this.pointAt(endAngle);\n var p1Derivative = this._derivativeAt(startAngle);\n var p2Derivative = this._derivativeAt(endAngle);\n var t = (rad(endAngle) - rad(startAngle)) / 3;\n var cp1 = new Point(p1.x + t * p1Derivative.x, p1.y + t * p1Derivative.y);\n var cp2 = new Point(p2.x - t * p2Derivative.x, p2.y - t * p2Derivative.y);\n if (transformation) {\n p1.transform(transformation);\n p2.transform(transformation);\n cp1.transform(transformation);\n cp2.transform(transformation);\n }\n\n return {\n p1: p1,\n cp1: cp1,\n cp2: cp2,\n p2: p2\n };\n };\n\n Arc.prototype._derivativeAt = function _derivativeAt (angle) {\n var radian = rad(angle);\n\n return new Point(-this.radiusX * Math.sin(radian), this.radiusY * Math.cos(radian));\n };\n\n Arc.prototype.containsPoint = function containsPoint (point) {\n var interval = this._arcInterval();\n var intervalAngle = interval.endAngle - interval.startAngle;\n var ref = this;\n var center = ref.center;\n var radiusX = ref.radiusX;\n var radiusY = ref.radiusY;\n var distance = center.distanceTo(point);\n var angleRad = Math.atan2(point.y - center.y, point.x - center.x);\n var pointRadius = (radiusX * radiusY) /\n Math.sqrt(pow$1(radiusX, 2) * pow$1(Math.sin(angleRad), 2) + pow$1(radiusY, 2) * pow$1(Math.cos(angleRad), 2));\n var startPoint = this.pointAt(this.startAngle).round(PRECISION);\n var endPoint = this.pointAt(this.endAngle).round(PRECISION);\n var intersection = lineIntersection(center, point.round(PRECISION), startPoint, endPoint);\n var containsPoint;\n\n if (intervalAngle < 180) {\n containsPoint = intersection && closeOrLess(center.distanceTo(intersection), distance) && closeOrLess(distance, pointRadius);\n } else {\n var angle = calculateAngle(center.x, center.y, radiusX, radiusY, point.x, point.y);\n if (angle !== 360) {\n angle = (360 + angle) % 360;\n }\n\n var inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n containsPoint = (inAngleRange && closeOrLess(distance, pointRadius)) || (!inAngleRange && (!intersection || intersection.equals(point)));\n }\n return containsPoint;\n };\n\n Arc.prototype._isOnPath = function _isOnPath (point, width) {\n var interval = this._arcInterval();\n var center = this.center;\n var angle = calculateAngle(center.x, center.y, this.radiusX, this.radiusY, point.x, point.y);\n if (angle !== 360) {\n angle = (360 + angle) % 360;\n }\n\n var inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n\n return inAngleRange && this.pointAt(angle).distanceTo(point) <= width;\n };\n\n Arc.fromPoints = function fromPoints (start, end, rx, ry, largeArc, swipe, rotation) {// eslint-disable-line max-params\n var arcParameters = normalizeArcParameters({\n x1: start.x,\n y1: start.y,\n x2: end.x,\n y2: end.y,\n rx: rx,\n ry: ry,\n largeArc: largeArc,\n swipe: swipe,\n rotation: rotation\n });\n\n return new Arc(arcParameters.center, {\n startAngle: arcParameters.startAngle,\n endAngle: arcParameters.endAngle,\n radiusX: arcParameters.radiusX,\n radiusY: arcParameters.radiusY,\n xRotation: arcParameters.xRotation,\n anticlockwise: swipe === 0\n });\n };\n\n return Arc;\n }(withAccessors(HasObservers, accessors)));\n\n function calculateAngle(cx, cy, rx, ry, x, y) {\n var cos = round((x - cx) / rx, 3);\n var sin = round((y - cy) / ry, 3);\n\n return round(deg(Math.atan2(sin, cos)));\n }\n\n function normalizeArcParameters(parameters) {\n var x1 = parameters.x1;\n var y1 = parameters.y1;\n var x2 = parameters.x2;\n var y2 = parameters.y2;\n var rx = parameters.rx;\n var ry = parameters.ry;\n var largeArc = parameters.largeArc;\n var swipe = parameters.swipe;\n var rotation = parameters.rotation; if (rotation === void 0) { rotation = 0; }\n\n var radians = rad(rotation);\n var cosine = Math.cos(radians);\n var sine = Math.sin(radians);\n\n var xT = cosine * (x1 - x2) / 2 + sine * (y1 - y2) / 2;\n var yT = -sine * (x1 - x2) / 2 + cosine * (y1 - y2) / 2;\n\n var sign = largeArc !== swipe ? 1 : -1;\n\n var xt2 = Math.pow(xT, 2);\n var yt2 = Math.pow(yT, 2);\n var rx2 = Math.pow(rx, 2);\n var ry2 = Math.pow(ry, 2);\n\n var delta = xt2 / rx2 + yt2 / ry2;\n\n if (delta > 1) {\n delta = Math.sqrt(xt2 / rx2 + yt2 / ry2);\n rx = delta * rx;\n rx2 = Math.pow(rx, 2);\n\n ry = delta * ry;\n ry2 = Math.pow(ry, 2);\n }\n\n var constT = sign * Math.sqrt((rx2 * ry2 - rx2 * yt2 - ry2 * xt2) / (rx2 * yt2 + ry2 * xt2));\n // due to rounding errors the value could become NaN even after radii correction\n if (isNaN(constT)) {\n constT = 0;\n }\n\n var cxT = constT * (rx * yT) / ry;\n var cyT = - constT * (ry * xT) / rx;\n\n var cx = cosine * cxT - sine * cyT + (x1 + x2) / 2;\n var cy = sine * cxT + cosine * cyT + (y1 + y2) / 2;\n\n var uX = (xT - cxT) / rx;\n var uY = (yT - cyT) / ry;\n var vX = -(xT + cxT) / rx;\n var vY = -(yT + cyT) / ry;\n\n var startAngle = (uY >= 0 ? 1 : -1) * deg(Math.acos(uX / Math.sqrt(uX * uX + uY * uY)));\n\n var angleCosine = round((uX * vX + uY * vY) / (Math.sqrt(uX * uX + uY * uY) * Math.sqrt(vX * vX + vY * vY)), 10);\n var angle = (uX * vY - uY * vX >= 0 ? 1 : -1) * deg(Math.acos(angleCosine));\n\n if (!swipe && angle > 0) {\n angle -= 360;\n }\n\n if (swipe && angle < 0) {\n angle += 360;\n }\n var endAngle = startAngle + angle;\n var signEndAngle = endAngle >= 0 ? 1 : -1;\n endAngle = (Math.abs(endAngle) % 360) * signEndAngle;\n\n return {\n center: new Point(cx, cy),\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: rx,\n radiusY: ry,\n xRotation: rotation\n };\n }\n\n function bboxStartAngle(angle, start) {\n var startAngle = angle;\n\n while (startAngle < start) {\n startAngle += 90;\n }\n\n return startAngle;\n }\n\n var push = [].push;\n var pop = [].pop;\n var splice = [].splice;\n var shift = [].shift;\n var slice = [].slice;\n var unshift = [].unshift;\n\n var ElementsArray = (function (HasObservers$$1) {\n function ElementsArray(array) {\n if (array === void 0) { array = []; }\n\n HasObservers$$1.call(this);\n\n this.length = 0;\n this._splice(0, array.length, array);\n }\n\n extendStatic(ElementsArray, HasObservers$$1);\n ElementsArray.prototype = Object.create( HasObservers$$1 && HasObservers$$1.prototype );\n ElementsArray.prototype.constructor = ElementsArray;\n ElementsArray.fn = ElementsArray.prototype;\n ElementsArray.fn.init = ElementsArray.fn.constructor;\n\n ElementsArray.prototype.elements = function elements (value) {\n if (value) {\n this._splice(0, this.length, value);\n\n this._change();\n return this;\n }\n\n return this.slice(0);\n };\n\n ElementsArray.prototype.push = function push$1 () {\n var elements = arguments;\n var result = push.apply(this, elements);\n\n this._add(elements);\n\n return result;\n };\n\n ElementsArray.prototype.slice = function slice$1 () {\n return slice.call(this);\n };\n\n ElementsArray.prototype.pop = function pop$1 () {\n var length = this.length;\n var result = pop.apply(this);\n\n if (length) {\n this._remove([ result ]);\n }\n\n return result;\n };\n\n ElementsArray.prototype.splice = function splice$1 (index, howMany) {\n var elements = slice.call(arguments, 2);\n var result = this._splice(index, howMany, elements);\n\n this._change();\n\n return result;\n };\n\n ElementsArray.prototype.shift = function shift$1 () {\n var length = this.length;\n var result = shift.apply(this);\n\n if (length) {\n this._remove([ result ]);\n }\n\n return result;\n };\n\n ElementsArray.prototype.unshift = function unshift$1 () {\n var elements = arguments;\n var result = unshift.apply(this, elements);\n\n this._add(elements);\n\n return result;\n };\n\n ElementsArray.prototype.indexOf = function indexOf (element) {\n var this$1$1 = this;\n\n var length = this.length;\n\n for (var idx = 0; idx < length; idx++) {\n if (this$1$1[idx] === element) {\n return idx;\n }\n }\n return -1;\n };\n\n ElementsArray.prototype._splice = function _splice (index, howMany, elements) {\n var result = splice.apply(this, [ index, howMany ].concat(elements));\n\n this._clearObserver(result);\n this._setObserver(elements);\n\n return result;\n };\n\n ElementsArray.prototype._add = function _add (elements) {\n this._setObserver(elements);\n this._change();\n };\n\n ElementsArray.prototype._remove = function _remove (elements) {\n this._clearObserver(elements);\n this._change();\n };\n\n ElementsArray.prototype._setObserver = function _setObserver (elements) {\n var this$1$1 = this;\n\n for (var idx = 0; idx < elements.length; idx++) {\n elements[idx].addObserver(this$1$1);\n }\n };\n\n ElementsArray.prototype._clearObserver = function _clearObserver (elements) {\n var this$1$1 = this;\n\n for (var idx = 0; idx < elements.length; idx++) {\n elements[idx].removeObserver(this$1$1);\n }\n };\n\n ElementsArray.prototype._change = function _change () {};\n\n return ElementsArray;\n }(HasObservers));\n\n var GeometryElementsArray = (function (ElementsArray$$1) {\n function GeometryElementsArray () {\n ElementsArray$$1.apply(this, arguments);\n }\n\n extendStatic(GeometryElementsArray, ElementsArray$$1);\n GeometryElementsArray.prototype = Object.create( ElementsArray$$1 && ElementsArray$$1.prototype );\n GeometryElementsArray.prototype.constructor = GeometryElementsArray;\n GeometryElementsArray.fn = GeometryElementsArray.prototype;\n GeometryElementsArray.fn.init = GeometryElementsArray.fn.constructor;\n\n GeometryElementsArray.prototype._change = function _change () {\n this.geometryChange();\n };\n\n return GeometryElementsArray;\n }(ElementsArray));\n\n function isOutOfEndPoint(endPoint, controlPoint, point) {\n var angle = deg(Math.atan2(controlPoint.y - endPoint.y, controlPoint.x - endPoint.x));\n var rotatedPoint = point.transformCopy(transform$1().rotate(-angle, endPoint));\n\n return rotatedPoint.x < endPoint.x;\n }\n\n function calculateCurveAt(t, field, points) {\n var t1 = 1 - t;\n return Math.pow(t1, 3) * points[0][field] +\n 3 * Math.pow(t1, 2) * t * points[1][field] +\n 3 * Math.pow(t, 2) * t1 * points[2][field] +\n Math.pow(t, 3) * points[3][field];\n }\n\n function toCubicPolynomial(points, field) {\n return [ -points[0][field] + 3 * points[1][field] - 3 * points[2][field] + points[3][field],\n 3 * (points[0][field] - 2 * points[1][field] + points[2][field]),\n 3 * (-points[0][field] + points[1][field]),\n points[0][field]\n ];\n }\n\n var ComplexNumber = (function (Class$$1) {\n function ComplexNumber(real, img) {\n if (real === void 0) { real = 0; }\n if (img === void 0) { img = 0; }\n\n Class$$1.call(this);\n\n this.real = real;\n this.img = img;\n }\n\n extendStatic(ComplexNumber, Class$$1);\n ComplexNumber.prototype = Object.create( Class$$1 && Class$$1.prototype );\n ComplexNumber.prototype.constructor = ComplexNumber;\n ComplexNumber.fn = ComplexNumber.prototype;\n ComplexNumber.fn.init = ComplexNumber.fn.constructor;\n\n ComplexNumber.prototype.add = function add (cNumber) {\n return new ComplexNumber(round(this.real + cNumber.real, PRECISION), round(this.img + cNumber.img, PRECISION));\n };\n\n ComplexNumber.prototype.addConstant = function addConstant (value) {\n return new ComplexNumber(this.real + value, this.img);\n };\n\n ComplexNumber.prototype.negate = function negate () {\n return new ComplexNumber(-this.real, -this.img);\n };\n\n ComplexNumber.prototype.multiply = function multiply (cNumber) {\n return new ComplexNumber(this.real * cNumber.real - this.img * cNumber.img,\n this.real * cNumber.img + this.img * cNumber.real);\n };\n\n ComplexNumber.prototype.multiplyConstant = function multiplyConstant (value) {\n return new ComplexNumber(this.real * value, this.img * value);\n };\n\n ComplexNumber.prototype.nthRoot = function nthRoot (n) {\n var rad$$1 = Math.atan2(this.img, this.real);\n var r = Math.sqrt(Math.pow(this.img, 2) + Math.pow(this.real, 2));\n var nthR = Math.pow(r, 1 / n);\n\n return new ComplexNumber(nthR * Math.cos(rad$$1 / n), nthR * Math.sin(rad$$1 / n)); //Moivre's formula\n };\n\n ComplexNumber.prototype.equals = function equals (cNumber) {\n return this.real === cNumber.real && this.img === cNumber.img;\n };\n\n ComplexNumber.prototype.isReal = function isReal () {\n return this.img === 0;\n };\n\n return ComplexNumber;\n }(Class));\n\n function numberSign$1(x) {\n return x < 0 ? -1 : 1;\n }\n\n function solveQuadraticEquation(a, b, c) {\n var squareRoot = Math.sqrt(Math.pow(b, 2) - 4 * a * c);\n return [\n (-b + squareRoot) / (2 * a),\n (-b - squareRoot) / (2 * a)\n ];\n }\n\n //Cardano's formula\n function solveCubicEquation(a, b, c, d) {\n if (a === 0) {\n return solveQuadraticEquation(b, c, d);\n }\n\n var p = (3 * a * c - Math.pow(b, 2)) / (3 * Math.pow(a, 2));\n var q = (2 * Math.pow(b, 3) - 9 * a * b * c + 27 * Math.pow(a, 2) * d) / (27 * Math.pow(a, 3));\n var Q = Math.pow(p / 3, 3) + Math.pow(q / 2, 2);\n var i = new ComplexNumber(0,1);\n var b3a = -b / (3 * a);\n var x1, x2, y1, y2, y3, z1, z2;\n\n if (Q < 0) {\n x1 = new ComplexNumber(-q / 2, Math.sqrt(-Q)).nthRoot(3);\n x2 = new ComplexNumber(-q / 2, - Math.sqrt(-Q)).nthRoot(3);\n } else {\n x1 = -q / 2 + Math.sqrt(Q);\n x1 = new ComplexNumber(numberSign$1(x1) * Math.pow(Math.abs(x1), 1 / 3));\n x2 = -q / 2 - Math.sqrt(Q);\n x2 = new ComplexNumber(numberSign$1(x2) * Math.pow(Math.abs(x2), 1 / 3));\n }\n\n y1 = x1.add(x2);\n\n z1 = x1.add(x2).multiplyConstant(-1 / 2);\n z2 = x1.add(x2.negate()).multiplyConstant(Math.sqrt(3) / 2);\n\n y2 = z1.add(i.multiply(z2));\n y3 = z1.add(i.negate().multiply(z2));\n\n var result = [];\n\n if (y1.isReal()) {\n result.push(round(y1.real + b3a, PRECISION));\n }\n if (y2.isReal()) {\n result.push(round(y2.real + b3a, PRECISION));\n }\n if (y3.isReal()) {\n result.push(round(y3.real + b3a, PRECISION));\n }\n\n return result;\n }\n\n function hasRootsInRange(points, point, field, rootField, range) {\n var polynomial = toCubicPolynomial(points, rootField);\n var roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point[rootField]);\n var intersection;\n\n for (var idx = 0; idx < roots.length; idx++) {\n if (0 <= roots[idx] && roots[idx] <= 1) {\n intersection = calculateCurveAt(roots[idx], field, points);\n if (Math.abs(intersection - point[field]) <= range) {\n return true;\n }\n }\n }\n }\n\n function curveIntersectionsCount(points, point, bbox) {\n var polynomial = toCubicPolynomial(points, \"x\");\n var roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point.x);\n var rayIntersection, intersectsRay;\n var count = 0;\n for (var i = 0; i < roots.length; i++) {\n rayIntersection = calculateCurveAt(roots[i], \"y\", points);\n intersectsRay = close$1(rayIntersection, point.y) || rayIntersection > point.y;\n if (intersectsRay && (((roots[i] === 0 || roots[i] === 1) && bbox.bottomRight().x > point.x) || (0 < roots[i] && roots[i] < 1))) {\n count++;\n }\n }\n\n return count;\n }\n\n function lineIntersectionsCount(a, b, point) {\n var intersects;\n if (a.x !== b.x) {\n var minX = Math.min(a.x, b.x);\n var maxX = Math.max(a.x, b.x);\n var minY = Math.min(a.y, b.y);\n var maxY = Math.max(a.y, b.y);\n var inRange = minX <= point.x && point.x < maxX;\n\n if (minY === maxY) {\n intersects = point.y <= minY && inRange;\n } else {\n intersects = inRange && (((maxY - minY) * ((a.x - b.x) * (a.y - b.y) > 0 ? point.x - minX : maxX - point.x)) / (maxX - minX) + minY - point.y) >= 0;\n }\n }\n\n return intersects ? 1 : 0;\n }\n\n function pointAccessor(name) {\n var fieldName = \"_\" + name;\n return function(value) {\n if (defined(value)) {\n this._observerField(fieldName, Point.create(value));\n this.geometryChange();\n return this;\n }\n\n return this[fieldName];\n };\n }\n\n function definePointAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = pointAccessor(names[i]);\n }\n }\n\n var withPoints = function (TBase, names) {\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }extendStatic(result, TBase);\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n result.fn = result.prototype;\n result.fn.init = result.fn.constructor;\n\n return result;\n }(TBase));\n definePointAccessors(result.prototype, names);\n\n return result;\n };\n\n var points = [ \"anchor\", \"controlIn\", \"controlOut\" ];\n\n var Segment = (function (superclass) {\n function Segment(anchor, controlIn, controlOut) {\n superclass.call(this);\n\n this.anchor(anchor || new Point());\n this.controlIn(controlIn);\n this.controlOut(controlOut);\n }\n\n extendStatic(Segment, superclass);\n Segment.prototype = Object.create( superclass && superclass.prototype );\n Segment.prototype.constructor = Segment;\n Segment.fn = Segment.prototype;\n Segment.fn.init = Segment.fn.constructor;\n\n Segment.prototype.bboxTo = function bboxTo (toSegment, matrix) {\n var segmentAnchor = this.anchor().transformCopy(matrix);\n var toSegmentAnchor = toSegment.anchor().transformCopy(matrix);\n var rect;\n\n if (this.controlOut() && toSegment.controlIn()) {\n rect = this._curveBoundingBox(\n segmentAnchor, this.controlOut().transformCopy(matrix),\n toSegment.controlIn().transformCopy(matrix), toSegmentAnchor\n );\n } else {\n rect = this._lineBoundingBox(segmentAnchor, toSegmentAnchor);\n }\n\n return rect;\n };\n\n Segment.prototype._lineBoundingBox = function _lineBoundingBox (p1, p2) {\n return Rect.fromPoints(p1, p2);\n };\n\n Segment.prototype._curveBoundingBox = function _curveBoundingBox (p1, cp1, cp2, p2) {\n var points = [ p1, cp1, cp2, p2 ];\n var extremesX = this._curveExtremesFor(points, \"x\");\n var extremesY = this._curveExtremesFor(points, \"y\");\n var xLimits = arrayLimits([ extremesX.min, extremesX.max, p1.x, p2.x ]);\n var yLimits = arrayLimits([ extremesY.min, extremesY.max, p1.y, p2.y ]);\n\n return Rect.fromPoints(new Point(xLimits.min, yLimits.min), new Point(xLimits.max, yLimits.max));\n };\n\n Segment.prototype._curveExtremesFor = function _curveExtremesFor (points, field) {\n var extremes = this._curveExtremes(\n points[0][field], points[1][field],\n points[2][field], points[3][field]\n );\n\n return {\n min: calculateCurveAt(extremes.min, field, points),\n max: calculateCurveAt(extremes.max, field, points)\n };\n };\n\n Segment.prototype._curveExtremes = function _curveExtremes (x1, x2, x3, x4) {\n var a = x1 - 3 * x2 + 3 * x3 - x4;\n var b = - 2 * (x1 - 2 * x2 + x3);\n var c = x1 - x2;\n var sqrt = Math.sqrt(b * b - 4 * a * c);\n var t1 = 0;\n var t2 = 1;\n\n if (a === 0) {\n if (b !== 0) {\n t1 = t2 = -c / b;\n }\n } else if (!isNaN(sqrt)) {\n t1 = (- b + sqrt) / (2 * a);\n t2 = (- b - sqrt) / (2 * a);\n }\n\n var min = Math.max(Math.min(t1, t2), 0);\n if (min < 0 || min > 1) {\n min = 0;\n }\n\n var max = Math.min(Math.max(t1, t2), 1);\n if (max > 1 || max < 0) {\n max = 1;\n }\n\n return {\n min: min,\n max: max\n };\n };\n\n Segment.prototype._intersectionsTo = function _intersectionsTo (segment, point) {\n var intersectionsCount;\n if (this.controlOut() && segment.controlIn()) {\n intersectionsCount = curveIntersectionsCount([ this.anchor(), this.controlOut(), segment.controlIn(), segment.anchor() ], point, this.bboxTo(segment));\n } else {\n intersectionsCount = lineIntersectionsCount(this.anchor(), segment.anchor(), point);\n }\n return intersectionsCount;\n };\n\n Segment.prototype._isOnCurveTo = function _isOnCurveTo (segment, point, width, endSegment) {\n var bbox = this.bboxTo(segment).expand(width, width);\n if (bbox.containsPoint(point)) {\n var p1 = this.anchor();\n var p2 = this.controlOut();\n var p3 = segment.controlIn();\n var p4 = segment.anchor();\n\n if (endSegment === \"start\" && p1.distanceTo(point) <= width) {\n return !isOutOfEndPoint(p1, p2, point);\n } else if (endSegment === \"end\" && p4.distanceTo(point) <= width) {\n return !isOutOfEndPoint(p4, p3, point);\n }\n\n //the approach is not entirely correct but is close and the alternatives are solving a 6th degree polynomial or testing the segment points\n var points = [ p1, p2, p3, p4 ];\n if (hasRootsInRange(points, point, \"x\", \"y\", width) || hasRootsInRange(points, point, \"y\", \"x\", width)) {\n return true;\n }\n var rotation = transform$1().rotate(45, point);\n var rotatedPoints = [ p1.transformCopy(rotation), p2.transformCopy(rotation), p3.transformCopy(rotation), p4.transformCopy(rotation) ];\n return hasRootsInRange(rotatedPoints, point, \"x\", \"y\", width) || hasRootsInRange(rotatedPoints, point, \"y\", \"x\", width);\n }\n };\n\n Segment.prototype._isOnLineTo = function _isOnLineTo (segment, point, width) {\n var p1 = this.anchor();\n var p2 = segment.anchor();\n var angle = deg(Math.atan2(p2.y - p1.y, p2.x - p1.x));\n var rect = new Rect([ p1.x, p1.y - width / 2 ], [ p1.distanceTo(p2), width ]);\n return rect.containsPoint(point.transformCopy(transform$1().rotate(-angle, p1)));\n };\n\n Segment.prototype._isOnPathTo = function _isOnPathTo (segment, point, width, endSegment) {\n var isOnPath;\n if (this.controlOut() && segment.controlIn()) {\n isOnPath = this._isOnCurveTo(segment, point, width / 2, endSegment);\n } else {\n isOnPath = this._isOnLineTo(segment, point, width);\n }\n return isOnPath;\n };\n\n return Segment;\n }(withPoints(HasObservers, points)));\n\n function arrayLimits(arr) {\n var length = arr.length;\n var min = MAX_NUM;\n var max = MIN_NUM;\n\n for (var i = 0; i < length; i ++) {\n max = Math.max(max, arr[i]);\n min = Math.min(min, arr[i]);\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n var geometry = {\n \tCircle: Circle$2,\n \tArc: Arc$2,\n \tRect: Rect,\n \tPoint: Point,\n \tSegment: Segment,\n \tMatrix: Matrix,\n \tSize: Size,\n \ttoMatrix: toMatrix,\n \tTransformation: Transformation,\n \ttransform: transform$1\n };\n\n var WEIGHT = 0.333;\n var EXTREMUM_ALLOWED_DEVIATION = 0.01;\n var X = \"x\";\n var Y = \"y\";\n\n function pointsToCurve(pointsIn, closed) {\n var points = pointsIn.slice(0);\n var segments = [];\n var length = points.length;\n\n if (length > 2) {\n removeDuplicates(0, points);\n length = points.length;\n }\n\n if (length < 2 || (length === 2 && points[0].equals(points[1]))) {\n return segments;\n }\n\n var p0 = points[0];\n var p1 = points[1];\n var p2 = points[2];\n\n segments.push(new Segment(p0));\n\n while (p0.equals(points[length - 1])) {\n closed = true;\n points.pop();\n length--;\n }\n\n if (length === 2) {\n var tangent = getTangent(p0,p1, X, Y);\n\n last(segments).controlOut(\n firstControlPoint(tangent, p0, p1, X, Y)\n );\n\n segments.push(new Segment(\n p1,\n secondControlPoint(tangent, p0, p1, X, Y)\n ));\n\n return segments;\n }\n\n var initialControlPoint, lastControlPoint;\n\n if (closed) {\n p0 = points[length - 1]; p1 = points[0]; p2 = points[1];\n var controlPoints = getControlPoints(p0, p1, p2);\n initialControlPoint = controlPoints[1];\n lastControlPoint = controlPoints[0];\n } else {\n var tangent$1 = getTangent(p0, p1, X,Y);\n initialControlPoint = firstControlPoint(tangent$1, p0, p1, X, Y);\n }\n\n var cp0 = initialControlPoint;\n for (var idx = 0; idx <= length - 3; idx++) {\n removeDuplicates(idx, points);\n length = points.length;\n if (idx + 3 <= length) {\n p0 = points[idx]; p1 = points[idx + 1]; p2 = points[idx + 2];\n var controlPoints$1 = getControlPoints(p0,p1,p2);\n\n last(segments).controlOut(cp0);\n cp0 = controlPoints$1[1];\n\n var cp1 = controlPoints$1[0];\n segments.push(new Segment(p1, cp1));\n }\n }\n\n if (closed) {\n p0 = points[length - 2]; p1 = points[length - 1]; p2 = points[0];\n var controlPoints$2 = getControlPoints(p0, p1, p2);\n\n last(segments).controlOut(cp0);\n segments.push(new Segment(\n p1,\n controlPoints$2[0]\n ));\n\n last(segments).controlOut(controlPoints$2[1]);\n segments.push(new Segment(\n p2,\n lastControlPoint\n ));\n } else {\n var tangent$2 = getTangent(p1, p2, X, Y);\n\n last(segments).controlOut(cp0);\n segments.push(new Segment(\n p2,\n secondControlPoint(tangent$2, p1, p2, X, Y)\n ));\n }\n\n return segments;\n }\n\n function removeDuplicates(idx, points) {\n while (points[idx + 1] && (points[idx].equals(points[idx + 1]) || points[idx + 1].equals(points[idx + 2]))) {\n points.splice(idx + 1, 1);\n }\n }\n\n function invertAxis(p0, p1, p2) {\n var invertAxis = false;\n\n if (p0.x === p1.x) {\n invertAxis = true;\n } else if (p1.x === p2.x) {\n if ((p1.y < p2.y && p0.y <= p1.y) || (p2.y < p1.y && p1.y <= p0.y)) {\n invertAxis = true;\n }\n } else {\n var fn = lineFunction(p0,p1);\n var y2 = calculateFunction(fn, p2.x);\n if (!(p0.y <= p1.y && p2.y <= y2) &&\n !(p1.y <= p0.y && p2.y >= y2)) {\n invertAxis = true;\n }\n }\n\n return invertAxis;\n }\n\n function isLine(p0, p1, p2) {\n var fn = lineFunction(p0, p1);\n var y2 = calculateFunction(fn, p2.x);\n\n return (p0.x === p1.x && p1.x === p2.x) || round(y2, 1) === round(p2.y, 1);\n }\n\n function lineFunction(p1, p2) {\n var a = (p2.y - p1.y) / (p2.x - p1.x);\n var b = p1.y - a * p1.x;\n\n return [ b, a ];\n }\n\n function getControlPoints(p0, p1, p2) {\n var xField = X;\n var yField = Y;\n var restrict = false;\n var switchOrientation = false;\n var tangent;\n\n if (isLine(p0, p1, p2)) {\n tangent = getTangent(p0, p1, X, Y);\n } else {\n var monotonic = {\n x: isMonotonicByField(p0, p1, p2, X),\n y: isMonotonicByField(p0, p1, p2, Y)\n };\n\n if (monotonic.x && monotonic.y) {\n tangent = getTangent(p0, p2, X, Y);\n restrict = true;\n } else {\n if (invertAxis(p0, p1, p2)) {\n xField = Y;\n yField = X;\n }\n\n if (monotonic[xField]) {\n tangent = 0;\n } else {\n var sign;\n if ((p2[yField] < p0[yField] && p0[yField] <= p1[yField]) ||\n (p0[yField] < p2[yField] && p1[yField] <= p0[yField])) {\n sign = numberSign((p2[yField] - p0[yField]) * (p1[xField] - p0[xField]));\n } else {\n sign = -numberSign((p2[xField] - p0[xField]) * (p1[yField] - p0[yField]));\n }\n\n tangent = EXTREMUM_ALLOWED_DEVIATION * sign;\n switchOrientation = true;\n }\n }\n }\n\n var secondCP = secondControlPoint(tangent, p0, p1, xField, yField);\n\n if (switchOrientation) {\n var oldXField = xField;\n xField = yField;\n yField = oldXField;\n }\n\n var firstCP = firstControlPoint(tangent, p1, p2, xField, yField);\n\n if (restrict) {\n restrictControlPoint(p0, p1, secondCP, tangent);\n restrictControlPoint(p1, p2, firstCP, tangent);\n }\n\n return [ secondCP, firstCP ];\n }\n\n function restrictControlPoint(p1, p2, cp, tangent) {\n if (p1.y < p2.y) {\n if (p2.y < cp.y) {\n cp.x = p1.x + (p2.y - p1.y) / tangent;\n cp.y = p2.y;\n } else if (cp.y < p1.y) {\n cp.x = p2.x - (p2.y - p1.y) / tangent;\n cp.y = p1.y;\n }\n } else {\n if (cp.y < p2.y) {\n cp.x = p1.x - (p1.y - p2.y) / tangent;\n cp.y = p2.y;\n } else if (p1.y < cp.y) {\n cp.x = p2.x + (p1.y - p2.y) / tangent;\n cp.y = p1.y;\n }\n }\n }\n\n function getTangent(p0, p1, xField, yField) {\n var x = p1[xField] - p0[xField];\n var y = p1[yField] - p0[yField];\n var tangent;\n\n if (x === 0) {\n tangent = 0;\n } else {\n tangent = y / x;\n }\n\n return tangent;\n }\n\n function isMonotonicByField(p0, p1, p2, field) {\n return (p2[field] > p1[field] && p1[field] > p0[field]) ||\n (p2[field] < p1[field] && p1[field] < p0[field]);\n }\n\n function firstControlPoint(tangent, p0, p3, xField, yField) {\n var t1 = p0[xField];\n var t2 = p3[xField];\n var distance = (t2 - t1) * WEIGHT;\n\n return point(t1 + distance, p0[yField] + distance * tangent, xField, yField);\n }\n\n function secondControlPoint(tangent, p0, p3, xField, yField) {\n var t1 = p0[xField];\n var t2 = p3[xField];\n var distance = (t2 - t1) * WEIGHT;\n\n return point(t2 - distance, p3[yField] - distance * tangent, xField, yField);\n }\n\n function point(xValue, yValue, xField, yField) {\n var controlPoint = new Point();\n controlPoint[xField] = xValue;\n controlPoint[yField] = yValue;\n\n return controlPoint;\n }\n\n function calculateFunction(fn, x) {\n var length = fn.length;\n var result = 0;\n\n for (var i = 0; i < length; i++) {\n result += Math.pow(x,i) * fn[i];\n }\n return result;\n }\n\n function numberSign(value) {\n return value <= 0 ? -1 : 1;\n }\n\n var ShapeMap = {\n l: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 2) {\n var point = new Point(parameters[i], parameters[i + 1]);\n\n if (options.isRelative) {\n point.translateWith(position);\n }\n\n path.lineTo(point.x, point.y);\n\n position.x = point.x;\n position.y = point.y;\n }\n },\n\n c: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 6) {\n var controlOut = new Point(parameters[i], parameters[i + 1]);\n var controlIn = new Point(parameters[i + 2], parameters[i + 3]);\n var point = new Point(parameters[i + 4], parameters[i + 5]);\n if (options.isRelative) {\n controlIn.translateWith(position);\n controlOut.translateWith(position);\n point.translateWith(position);\n }\n\n path.curveTo(controlOut, controlIn, point);\n\n position.x = point.x;\n position.y = point.y;\n }\n },\n\n v: function(path, options) {\n var value = options.isRelative ? 0 : options.position.x;\n\n toLineParamaters(options.parameters, true, value);\n this.l(path, options);\n },\n\n h: function(path, options) {\n var value = options.isRelative ? 0 : options.position.y;\n\n toLineParamaters(options.parameters, false, value);\n this.l(path, options);\n },\n\n a: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 7) {\n var radiusX = parameters[i];\n var radiusY = parameters[i + 1];\n var rotation = parameters[i + 2];\n var largeArc = parameters[i + 3];\n var swipe = parameters[i + 4];\n var endPoint = new Point(parameters[i + 5], parameters[i + 6]);\n\n if (options.isRelative) {\n endPoint.translateWith(position);\n }\n if (position.x !== endPoint.x || position.y !== endPoint.y) {\n path.arcTo(endPoint, radiusX, radiusY, largeArc, swipe, rotation);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n }\n },\n\n s: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n var previousCommand = options.previousCommand;\n var lastControlIn;\n\n if (previousCommand === \"s\" || previousCommand === \"c\") {\n lastControlIn = last(last(path.paths).segments).controlIn();\n }\n\n for (var i = 0; i < parameters.length; i += 4) {\n var controlIn = new Point(parameters[i], parameters[i + 1]);\n var endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n var controlOut = (void 0);\n\n if (options.isRelative) {\n controlIn.translateWith(position);\n endPoint.translateWith(position);\n }\n\n if (lastControlIn) {\n controlOut = reflectionPoint(lastControlIn, position);\n } else {\n controlOut = position.clone();\n }\n\n lastControlIn = controlIn;\n\n path.curveTo(controlOut, controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n },\n\n q: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 4) {\n var controlPoint = new Point(parameters[i], parameters[i + 1]);\n var endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n\n if (options.isRelative) {\n controlPoint.translateWith(position);\n endPoint.translateWith(position);\n }\n\n var cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n\n path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n },\n\n t: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n var previousCommand = options.previousCommand;\n var controlPoint;\n\n if (previousCommand === \"q\" || previousCommand === \"t\") {\n var lastSegment = last(last(path.paths).segments);\n controlPoint = lastSegment.controlIn().clone()\n .translateWith(position.scaleCopy(-1 / 3))\n .scale(3 / 2);\n }\n\n for (var i = 0; i < parameters.length; i += 2) {\n var endPoint = new Point(parameters[i], parameters[i + 1]);\n if (options.isRelative) {\n endPoint.translateWith(position);\n }\n\n if (controlPoint) {\n controlPoint = reflectionPoint(controlPoint, position);\n } else {\n controlPoint = position.clone();\n }\n\n var cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n\n path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n }\n };\n\n function toLineParamaters(parameters, isVertical, value) {\n var insertPosition = isVertical ? 0 : 1;\n\n for (var i = 0; i < parameters.length; i += 2) {\n parameters.splice(i + insertPosition, 0, value);\n }\n }\n\n function reflectionPoint(point, center) {\n if (point && center) {\n return center.scaleCopy(2).translate(-point.x, -point.y);\n }\n }\n\n var third = 1 / 3;\n\n function quadraticToCubicControlPoints(position, controlPoint, endPoint) {\n var scaledPoint = controlPoint.clone().scale(2 / 3);\n return {\n controlOut: scaledPoint.clone().translateWith(position.scaleCopy(third)),\n controlIn: scaledPoint.translateWith(endPoint.scaleCopy(third))\n };\n }\n\n var SEGMENT_REGEX = /([a-df-z]{1})([^a-df-z]*)(z)?/gi;\n var SPLIT_REGEX = /[,\\s]?([+\\-]?(?:\\d*\\.\\d+|\\d+)(?:[eE][+\\-]?\\d+)?)/g;\n var MOVE = \"m\";\n var CLOSE = \"z\";\n\n function parseParameters(str) {\n var parameters = [];\n str.replace(SPLIT_REGEX, function(match, number) {\n parameters.push(parseFloat(number));\n });\n return parameters;\n }\n\n function parsePath(pathInstance, str) {\n var position = new Point();\n var previousCommand;\n\n str.replace(SEGMENT_REGEX, function (match, element, params, closePath) {\n var command = element.toLowerCase();\n var isRelative = command === element;\n var parameters = parseParameters(params.trim());\n\n if (command === MOVE) {\n if (isRelative) {\n position.x += parameters[0];\n position.y += parameters[1];\n } else {\n position.x = parameters[0];\n position.y = parameters[1];\n }\n\n pathInstance.moveTo(position.x, position.y);\n\n if (parameters.length > 2) {\n command = \"l\";\n parameters.splice(0, 2);\n }\n }\n\n if (ShapeMap[command]) {\n ShapeMap[command](\n pathInstance, {\n parameters: parameters,\n position: position,\n isRelative: isRelative,\n previousCommand: previousCommand\n }\n );\n\n if (closePath && closePath.toLowerCase() === CLOSE) {\n pathInstance.close();\n }\n } else if (command !== MOVE) {\n throw new Error(\"Error while parsing SVG path. Unsupported command: \" + command);\n }\n\n previousCommand = command;\n });\n\n return pathInstance;\n }\n\n function elementsBoundingBox(elements, applyTransform, transformation) {\n var boundingBox;\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n if (element.visible()) {\n var elementBoundingBox = applyTransform ? element.bbox(transformation) : element.rawBBox();\n if (elementBoundingBox) {\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, elementBoundingBox);\n } else {\n boundingBox = elementBoundingBox;\n }\n }\n }\n }\n\n return boundingBox;\n }\n\n function elementsClippedBoundingBox(elements, transformation) {\n var boundingBox;\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n if (element.visible()) {\n var elementBoundingBox = element.clippedBBox(transformation);\n if (elementBoundingBox) {\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, elementBoundingBox);\n } else {\n boundingBox = elementBoundingBox;\n }\n }\n }\n }\n\n return boundingBox;\n }\n\n var SPACE = ' ';\n var printPoints = function (precision) { return function () {\n var points = [], len = arguments.length;\n while ( len-- ) points[ len ] = arguments[ len ];\n\n return points.map(function (p) { return p.toString(precision); }).join(SPACE);\n } };\n var segmentType = function (segmentStart, segmentEnd) { return segmentStart.controlOut() && segmentEnd.controlIn() ? 'C' : 'L'; };\n\n var Path = (function (superclass) {\n function Path(options) {\n superclass.call(this, options);\n this.segments = new GeometryElementsArray();\n this.segments.addObserver(this);\n\n if (!defined(this.options.stroke)) {\n this.stroke('#000');\n\n if (!defined(this.options.stroke.lineJoin)) {\n this.options.set('stroke.lineJoin', 'miter');\n }\n }\n }\n\n extendStatic(Path, superclass);\n Path.prototype = Object.create( superclass && superclass.prototype );\n Path.prototype.constructor = Path;\n Path.fn = Path.prototype;\n Path.fn.init = Path.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return 'Path';\n };\n\n Path.prototype.moveTo = function moveTo (x, y) {\n this.suspend();\n this.segments.elements([]);\n this.resume();\n\n this.lineTo(x, y);\n\n return this;\n };\n\n Path.prototype.lineTo = function lineTo (x, y) {\n var point$$1 = defined(y) ? new Point(x, y) : x;\n var segment = new Segment(point$$1);\n\n this.segments.push(segment);\n\n return this;\n };\n\n Path.prototype.curveTo = function curveTo (controlOut, controlIn, point$$1) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var segment = new Segment(point$$1, controlIn);\n this.suspend();\n lastSegment.controlOut(controlOut);\n this.resume();\n\n this.segments.push(segment);\n }\n\n return this;\n };\n\n Path.prototype.arc = function arc (startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var anchor = lastSegment.anchor();\n var start = rad(startAngle);\n var center = new Point(anchor.x - radiusX * Math.cos(start),\n anchor.y - radiusY * Math.sin(start));\n var arc = new Arc$2(center, {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: radiusX,\n radiusY: radiusY,\n anticlockwise: anticlockwise\n });\n\n this._addArcSegments(arc);\n }\n\n return this;\n };\n\n Path.prototype.arcTo = function arcTo (end, rx, ry, largeArc, swipe, rotation) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var anchor = lastSegment.anchor();\n var arc = Arc$2.fromPoints(anchor, Point.create(end), rx, ry, largeArc, swipe, rotation);\n\n this._addArcSegments(arc);\n }\n return this;\n };\n\n Path.prototype._addArcSegments = function _addArcSegments (arc) {\n var this$1$1 = this;\n\n this.suspend();\n\n var curvePoints = arc.curvePoints();\n\n for (var i = 1; i < curvePoints.length; i += 3) {\n this$1$1.curveTo(curvePoints[i], curvePoints[i + 1], curvePoints[i + 2]);\n }\n\n this.resume();\n this.geometryChange();\n };\n\n Path.prototype.close = function close () {\n this.options.closed = true;\n this.geometryChange();\n\n return this;\n };\n\n Path.prototype.rawBBox = function rawBBox () {\n return this._bbox();\n };\n\n Path.prototype.toString = function toString (digits) {\n var output = '';\n\n var segments = this.segments;\n var length = segments.length;\n if (length > 0) {\n var parts = [];\n var print = printPoints(digits);\n var currentType;\n\n for (var i = 1; i < length; i++) {\n var type = segmentType(segments[i - 1], segments[i]);\n if (type !== currentType) {\n currentType = type;\n parts.push(type);\n }\n\n if (type === 'L') {\n parts.push(print(segments[i].anchor()));\n } else {\n parts.push(print(\n segments[i - 1].controlOut(), segments[i].controlIn(), segments[i].anchor()\n ));\n }\n }\n\n output = 'M' + print(segments[0].anchor()) + SPACE + parts.join(SPACE);\n if (this.options.closed) {\n output += 'Z';\n }\n }\n\n return output;\n };\n\n Path.prototype._containsPoint = function _containsPoint (point$$1) {\n var segments = this.segments;\n var length = segments.length;\n var intersectionsCount = 0;\n var previous, current;\n\n for (var idx = 1; idx < length; idx++) {\n previous = segments[idx - 1];\n current = segments[idx];\n intersectionsCount += previous._intersectionsTo(current, point$$1);\n }\n\n if (this.options.closed || !segments[0].anchor().equals(segments[length - 1].anchor())) {\n intersectionsCount += lineIntersectionsCount(segments[0].anchor(), segments[length - 1].anchor(), point$$1);\n }\n\n return intersectionsCount % 2 !== 0;\n };\n\n Path.prototype._isOnPath = function _isOnPath (point$$1, width) {\n var segments = this.segments;\n var length = segments.length;\n var pathWidth = width || this.options.stroke.width;\n\n if (length > 1) {\n if (segments[0]._isOnPathTo(segments[1], point$$1, pathWidth, 'start')) {\n return true;\n }\n\n for (var idx = 2; idx <= length - 2; idx++) {\n if (segments[idx - 1]._isOnPathTo(segments[idx], point$$1, pathWidth)) {\n return true;\n }\n }\n\n if (segments[length - 2]._isOnPathTo(segments[length - 1], point$$1, pathWidth, 'end')) {\n return true;\n }\n }\n return false;\n };\n\n Path.prototype._bbox = function _bbox (matrix) {\n var segments = this.segments;\n var length = segments.length;\n var boundingBox;\n\n if (length === 1) {\n var anchor = segments[0].anchor().transformCopy(matrix);\n boundingBox = new Rect(anchor, Size.ZERO);\n } else if (length > 0) {\n for (var i = 1; i < length; i++) {\n var segmentBox = segments[i - 1].bboxTo(segments[i], matrix);\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, segmentBox);\n } else {\n boundingBox = segmentBox;\n }\n }\n }\n\n return boundingBox;\n };\n\n Path.parse = function parse (str, options) {\n return MultiPath.parse(str, options);\n };\n\n Path.fromRect = function fromRect (rect, options) {\n var path = new Path(options);\n var ref = rect.cornerRadius;\n var rx = ref[0];\n var ry = ref[1];\n\n if (rx === 0 && ry === 0) {\n path.moveTo(rect.topLeft())\n .lineTo(rect.topRight())\n .lineTo(rect.bottomRight())\n .lineTo(rect.bottomLeft())\n .close();\n } else {\n var origin = rect.origin;\n var x = origin.x;\n var y = origin.y;\n var width = rect.width();\n var height = rect.height();\n rx = limitValue(rx, 0, width / 2);\n ry = limitValue(ry, 0, height / 2);\n\n path.moveTo(x + rx, y)\n .lineTo(x + width - rx, y)\n .arcTo([ x + width, y + ry ], rx, ry, false)\n .lineTo(x + width, y + height - ry)\n .arcTo([ x + width - rx, y + height ], rx, ry, false)\n .lineTo(x + rx, y + height)\n .arcTo([ x, y + height - ry ], rx, ry, false)\n .lineTo(x, y + ry)\n .arcTo([ x + rx, y ], rx, ry, false);\n }\n\n return path;\n };\n\n Path.fromPoints = function fromPoints (points, options) {\n if (points) {\n var path = new Path(options);\n\n for (var i = 0; i < points.length; i++) {\n var point$$1 = Point.create(points[i]);\n if (point$$1) {\n if (i === 0) {\n path.moveTo(point$$1);\n } else {\n path.lineTo(point$$1);\n }\n }\n }\n\n return path;\n }\n };\n\n Path.curveFromPoints = function curveFromPoints (points, options) {\n if (points) {\n var segments = pointsToCurve(points);\n var path = new Path(options);\n path.segments.push.apply(path.segments, segments);\n\n return path;\n }\n };\n\n Path.fromArc = function fromArc (arc, options) {\n var path = new Path(options);\n var startAngle = arc.startAngle;\n var start = arc.pointAt(startAngle);\n path.moveTo(start.x, start.y);\n path.arc(startAngle, arc.endAngle, arc.radiusX, arc.radiusY, arc.anticlockwise);\n return path;\n };\n\n Object.defineProperties( Path.prototype, prototypeAccessors );\n\n return Path;\n }(paintable(measurable(Element$1))));\n\n var MultiPath = (function (superclass) {\n function MultiPath(options) {\n superclass.call(this, options);\n this.paths = new GeometryElementsArray();\n this.paths.addObserver(this);\n\n if (!defined(this.options.stroke)) {\n this.stroke('#000');\n }\n }\n\n extendStatic(MultiPath, superclass);\n MultiPath.prototype = Object.create( superclass && superclass.prototype );\n MultiPath.prototype.constructor = MultiPath;\n MultiPath.fn = MultiPath.prototype;\n MultiPath.fn.init = MultiPath.fn.constructor;\n\n var prototypeAccessors$1 = { nodeType: {} };\n\n MultiPath.parse = function parse (str, options) {\n var instance = new MultiPath(options);\n return parsePath(instance, str);\n };\n\n MultiPath.prototype.toString = function toString (digits) {\n var paths = this.paths;\n var output = '';\n\n if (paths.length > 0) {\n var result = [];\n\n for (var i = 0; i < paths.length; i++) {\n result.push(paths[i].toString(digits));\n }\n\n output = result.join(SPACE);\n }\n\n return output;\n };\n\n prototypeAccessors$1.nodeType.get = function () {\n return 'MultiPath';\n };\n\n MultiPath.prototype.moveTo = function moveTo (x, y) {\n var path = new Path();\n path.moveTo(x, y);\n\n this.paths.push(path);\n\n return this;\n };\n\n MultiPath.prototype.lineTo = function lineTo (x, y) {\n if (this.paths.length > 0) {\n last(this.paths).lineTo(x, y);\n }\n\n return this;\n };\n\n MultiPath.prototype.curveTo = function curveTo (controlOut, controlIn, point$$1) {\n if (this.paths.length > 0) {\n last(this.paths).curveTo(controlOut, controlIn, point$$1);\n }\n\n return this;\n };\n\n MultiPath.prototype.arc = function arc (startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n if (this.paths.length > 0) {\n last(this.paths).arc(startAngle, endAngle, radiusX, radiusY, anticlockwise);\n }\n\n return this;\n };\n\n MultiPath.prototype.arcTo = function arcTo (end, rx, ry, largeArc, swipe, rotation) {\n if (this.paths.length > 0) {\n last(this.paths).arcTo(end, rx, ry, largeArc, swipe, rotation);\n }\n\n return this;\n };\n\n MultiPath.prototype.close = function close () {\n if (this.paths.length > 0) {\n last(this.paths).close();\n }\n\n return this;\n };\n\n MultiPath.prototype._bbox = function _bbox (matrix) {\n return elementsBoundingBox(this.paths, true, matrix);\n };\n\n MultiPath.prototype.rawBBox = function rawBBox () {\n return elementsBoundingBox(this.paths, false);\n };\n\n MultiPath.prototype._containsPoint = function _containsPoint (point$$1) {\n var paths = this.paths;\n\n for (var idx = 0; idx < paths.length; idx++) {\n if (paths[idx]._containsPoint(point$$1)) {\n return true;\n }\n }\n return false;\n };\n\n MultiPath.prototype._isOnPath = function _isOnPath (point$$1) {\n var paths = this.paths;\n var width = this.options.stroke.width;\n\n for (var idx = 0; idx < paths.length; idx++) {\n if (paths[idx]._isOnPath(point$$1, width)) {\n return true;\n }\n }\n return false;\n };\n\n MultiPath.prototype._clippedBBox = function _clippedBBox (transformation) {\n return elementsClippedBoundingBox(this.paths, this.currentTransform(transformation));\n };\n\n Object.defineProperties( MultiPath.prototype, prototypeAccessors$1 );\n\n return MultiPath;\n }(paintable(measurable(Element$1))));\n\n var DEFAULT_STROKE$1 = \"#000\";\n\n var Arc = (function (superclass) {\n function Arc(geometry, options) {\n if (geometry === void 0) { geometry = new Arc$2(); }\n if (options === void 0) { options = {}; }\n\n superclass.call(this, options);\n\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(DEFAULT_STROKE$1);\n }\n }\n\n extendStatic(Arc, superclass);\n Arc.prototype = Object.create( superclass && superclass.prototype );\n Arc.prototype.constructor = Arc;\n Arc.fn = Arc.prototype;\n Arc.fn.init = Arc.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Arc\";\n };\n\n Arc.prototype._bbox = function _bbox (matrix) {\n return this._geometry.bbox(matrix);\n };\n\n Arc.prototype.rawBBox = function rawBBox () {\n return this.geometry().bbox();\n };\n\n Arc.prototype.toPath = function toPath () {\n var path = new Path();\n var curvePoints = this.geometry().curvePoints();\n\n if (curvePoints.length > 0) {\n path.moveTo(curvePoints[0].x, curvePoints[0].y);\n\n for (var i = 1; i < curvePoints.length; i += 3) {\n path.curveTo(curvePoints[i], curvePoints[i + 1], curvePoints[i + 2]);\n }\n }\n\n return path;\n };\n\n Arc.prototype._containsPoint = function _containsPoint (point) {\n return this.geometry().containsPoint(point);\n };\n\n Arc.prototype._isOnPath = function _isOnPath (point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n };\n\n Object.defineProperties( Arc.prototype, prototypeAccessors );\n\n return Arc;\n }(paintable(measurable(withGeometry(Element$1)))));\n\n var DEFAULT_FONT = \"12px sans-serif\";\n var DEFAULT_FILL = \"#000\";\n\n var Text = (function (superclass) {\n function Text(content, position, options) {\n if (position === void 0) { position = new Point(); }\n if (options === void 0) { options = {}; }\n\n superclass.call(this, options);\n\n this.content(content);\n this.position(position);\n\n if (!this.options.font) {\n this.options.font = DEFAULT_FONT;\n }\n\n if (!defined(this.options.fill)) {\n this.fill(DEFAULT_FILL);\n }\n }\n\n extendStatic(Text, superclass);\n Text.prototype = Object.create( superclass && superclass.prototype );\n Text.prototype.constructor = Text;\n Text.fn = Text.prototype;\n Text.fn.init = Text.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Text\";\n };\n\n Text.prototype.content = function content (value) {\n if (defined(value)) {\n this.options.set(\"content\", value);\n return this;\n }\n\n return this.options.get(\"content\");\n };\n\n Text.prototype.measure = function measure () {\n var metrics = kendoUtil.measureText(this.content(), {\n font: this.options.get(\"font\")\n });\n\n return metrics;\n };\n\n Text.prototype.rect = function rect () {\n var size = this.measure();\n var pos = this.position().clone();\n return new Rect(pos, [ size.width, size.height ]);\n };\n\n Text.prototype.bbox = function bbox (transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n return this.rect().bbox(combinedMatrix);\n };\n\n Text.prototype.rawBBox = function rawBBox () {\n return this.rect().bbox();\n };\n\n Text.prototype._containsPoint = function _containsPoint (point) {\n return this.rect().containsPoint(point);\n };\n\n Object.defineProperties( Text.prototype, prototypeAccessors );\n\n return Text;\n }(paintable(withPoints(Element$1, [ \"position\" ]))));\n\n var Image$1 = (function (superclass) {\n function Image(src, rect, options) {\n if (rect === void 0) { rect = new Rect(); }\n if (options === void 0) { options = {}; }\n\n superclass.call(this, options);\n\n this.src(src);\n this.rect(rect);\n }\n\n extendStatic(Image, superclass);\n Image.prototype = Object.create( superclass && superclass.prototype );\n Image.prototype.constructor = Image;\n Image.fn = Image.prototype;\n Image.fn.init = Image.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Image\";\n };\n\n Image.prototype.src = function src (value) {\n if (defined(value)) {\n this.options.set(\"src\", value);\n return this;\n }\n\n return this.options.get(\"src\");\n };\n\n Image.prototype.bbox = function bbox (transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n return this._rect.bbox(combinedMatrix);\n };\n\n Image.prototype.rawBBox = function rawBBox () {\n return this._rect.bbox();\n };\n\n Image.prototype._containsPoint = function _containsPoint (point) {\n return this._rect.containsPoint(point);\n };\n\n Image.prototype._hasFill = function _hasFill () {\n return this.src();\n };\n\n Object.defineProperties( Image.prototype, prototypeAccessors );\n\n return Image;\n }(withGeometry(Element$1, [ \"rect\" ])));\n\n var traversable = function (TBase, childrenField) { return (\n (function (TBase) {\n function anonymous () {\n TBase.apply(this, arguments);\n }\n\n extendStatic(anonymous, TBase);\n anonymous.prototype = Object.create( TBase && TBase.prototype );\n anonymous.prototype.constructor = anonymous;\n anonymous.fn = anonymous.prototype;\n anonymous.fn.init = anonymous.fn.constructor;\n\n anonymous.prototype.traverse = function traverse (callback) {\n var children = this[childrenField];\n\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n\n if (child.traverse) {\n child.traverse(callback);\n } else {\n callback(child);\n }\n }\n\n return this;\n };\n\n return anonymous;\n }(TBase))\n ); };\n\n var Group = (function (superclass) {\n function Group(options) {\n superclass.call(this, options);\n this.children = [];\n }\n\n extendStatic(Group, superclass);\n Group.prototype = Object.create( superclass && superclass.prototype );\n Group.prototype.constructor = Group;\n Group.fn = Group.prototype;\n Group.fn.init = Group.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Group\";\n };\n\n Group.prototype.childrenChange = function childrenChange (action, items, index) {\n this.trigger(\"childrenChange\",{\n action: action,\n items: items,\n index: index\n });\n };\n\n Group.prototype.append = function append$1 () {\n append$1$1(this.children, arguments);\n this._reparent(arguments, this);\n\n this.childrenChange(\"add\", arguments);\n\n return this;\n };\n\n Group.prototype.insert = function insert (index, element) {\n this.children.splice(index, 0, element);\n element.parent = this;\n\n this.childrenChange(\"add\", [ element ], index);\n\n return this;\n };\n\n Group.prototype.insertAt = function insertAt (element, index) {\n return this.insert(index, element);\n };\n\n Group.prototype.remove = function remove (element) {\n var index = this.children.indexOf(element);\n if (index >= 0) {\n this.children.splice(index, 1);\n element.parent = null;\n this.childrenChange(\"remove\", [ element ], index);\n }\n\n return this;\n };\n\n Group.prototype.removeAt = function removeAt (index) {\n if (0 <= index && index < this.children.length) {\n var element = this.children[index];\n this.children.splice(index, 1);\n element.parent = null;\n this.childrenChange(\"remove\", [ element ], index);\n }\n\n return this;\n };\n\n Group.prototype.clear = function clear () {\n var items = this.children;\n this.children = [];\n this._reparent(items, null);\n\n this.childrenChange(\"remove\", items, 0);\n\n return this;\n };\n\n Group.prototype.bbox = function bbox (transformation) {\n return elementsBoundingBox(this.children, true, this.currentTransform(transformation));\n };\n\n Group.prototype.rawBBox = function rawBBox () {\n return elementsBoundingBox(this.children, false);\n };\n\n Group.prototype._clippedBBox = function _clippedBBox (transformation) {\n return elementsClippedBoundingBox(this.children, this.currentTransform(transformation));\n };\n\n Group.prototype.currentTransform = function currentTransform (transformation) {\n return Element$1.prototype.currentTransform.call(this, transformation) || null;\n };\n\n Group.prototype.containsPoint = function containsPoint (point, parentTransform) {\n if (this.visible()) {\n var children = this.children;\n var transform = this.currentTransform(parentTransform);\n for (var idx = 0; idx < children.length; idx++) {\n if (children[idx].containsPoint(point, transform)) {\n return true;\n }\n }\n }\n return false;\n };\n\n Group.prototype._reparent = function _reparent (elements, newParent) {\n var this$1$1 = this;\n\n for (var i = 0; i < elements.length; i++) {\n var child = elements[i];\n var parent = child.parent;\n if (parent && parent !== this$1$1 && parent.remove) {\n parent.remove(child);\n }\n\n child.parent = newParent;\n }\n };\n\n Object.defineProperties( Group.prototype, prototypeAccessors );\n\n return Group;\n }(traversable(Element$1, \"children\")));\n\n function translateToPoint(point, bbox, element) {\n var transofrm = element.transform() || transform$1();\n var matrix = transofrm.matrix();\n matrix.e += point.x - bbox.origin.x;\n matrix.f += point.y - bbox.origin.y;\n\n transofrm.matrix(matrix);\n element.transform(transofrm);\n }\n\n function alignStart(size, rect, align, axis, sizeField) {\n var start;\n if (align === \"start\") {\n start = rect.origin[axis];\n } else if (align === \"end\") {\n start = rect.origin[axis] + rect.size[sizeField] - size;\n } else {\n start = rect.origin[axis] + (rect.size[sizeField] - size) / 2;\n }\n\n return start;\n }\n\n function alignStartReverse(size, rect, align, axis, sizeField) {\n var start;\n if (align === \"start\") {\n start = rect.origin[axis] + rect.size[sizeField] - size;\n } else if (align === \"end\") {\n start = rect.origin[axis];\n } else {\n start = rect.origin[axis] + (rect.size[sizeField] - size) / 2;\n }\n\n return start;\n }\n\n var DEFAULT_OPTIONS = {\n alignContent: \"start\",\n justifyContent: \"start\",\n alignItems: \"start\",\n spacing: 0,\n orientation: \"horizontal\",\n lineSpacing: 0,\n wrap: true,\n revers: false\n };\n\n var forEach = function (elements, callback) {\n elements.forEach(callback);\n };\n\n var forEachReverse = function (elements, callback) {\n var length = elements.length;\n\n for (var idx = length - 1; idx >= 0; idx--) {\n callback(elements[idx], idx);\n }\n };\n\n var Layout = (function (Group$$1) {\n function Layout(rect, options) {\n Group$$1.call(this, $.extend({}, DEFAULT_OPTIONS, options));\n this._rect = rect;\n this._fieldMap = {};\n }\n\n extendStatic(Layout, Group$$1);\n Layout.prototype = Object.create( Group$$1 && Group$$1.prototype );\n Layout.prototype.constructor = Layout;\n Layout.fn = Layout.prototype;\n Layout.fn.init = Layout.fn.constructor;\n\n Layout.prototype.rect = function rect (value) {\n if (value) {\n this._rect = value;\n return this;\n }\n\n return this._rect;\n };\n\n Layout.prototype._initMap = function _initMap () {\n var options = this.options;\n var fieldMap = this._fieldMap;\n if (options.orientation === \"horizontal\") {\n fieldMap.sizeField = \"width\";\n fieldMap.groupsSizeField = \"height\";\n fieldMap.groupAxis = \"x\";\n fieldMap.groupsAxis = \"y\";\n } else {\n fieldMap.sizeField = \"height\";\n fieldMap.groupsSizeField = \"width\";\n fieldMap.groupAxis = \"y\";\n fieldMap.groupsAxis = \"x\";\n }\n\n if (options.reverse) {\n this.forEach = forEachReverse;\n this.justifyAlign = alignStartReverse;\n } else {\n this.forEach = forEach;\n this.justifyAlign = alignStart;\n }\n };\n\n Layout.prototype.reflow = function reflow () {\n var this$1$1 = this;\n\n if (!this._rect || this.children.length === 0) {\n return;\n }\n this._initMap();\n\n if (this.options.transform) {\n this.transform(null);\n }\n\n var options = this.options;\n var rect = this._rect;\n var ref = this._initGroups();\n var groups = ref.groups;\n var groupsSize = ref.groupsSize;\n var ref$1 = this._fieldMap;\n var sizeField = ref$1.sizeField;\n var groupsSizeField = ref$1.groupsSizeField;\n var groupAxis = ref$1.groupAxis;\n var groupsAxis = ref$1.groupsAxis;\n var groupOrigin = new Point();\n var elementOrigin = new Point();\n var size = new Size();\n var groupStart = alignStart(groupsSize, rect, options.alignContent, groupsAxis, groupsSizeField);\n var elementStart, group, groupBox;\n\n var arrangeElements = function (bbox, idx) {\n var element = group.elements[idx];\n\n elementOrigin[groupAxis] = elementStart;\n elementOrigin[groupsAxis] = alignStart(bbox.size[groupsSizeField], groupBox, options.alignItems, groupsAxis, groupsSizeField);\n translateToPoint(elementOrigin, bbox, element);\n elementStart += bbox.size[sizeField] + options.spacing;\n };\n\n for (var groupIdx = 0; groupIdx < groups.length; groupIdx++) {\n group = groups[groupIdx];\n groupOrigin[groupAxis] = elementStart = this$1$1.justifyAlign(group.size, rect, options.justifyContent, groupAxis, sizeField);\n groupOrigin[groupsAxis] = groupStart;\n size[sizeField] = group.size;\n size[groupsSizeField] = group.lineSize;\n groupBox = new Rect(groupOrigin, size);\n this$1$1.forEach(group.bboxes, arrangeElements);\n\n groupStart += group.lineSize + options.lineSpacing;\n }\n\n if (!options.wrap && group.size > rect.size[sizeField]) {\n var scale = rect.size[sizeField] / groupBox.size[sizeField];\n var scaledStart = groupBox.topLeft().scale(scale, scale);\n var scaledSize = groupBox.size[groupsSizeField] * scale;\n var newStart = alignStart(scaledSize, rect, options.alignContent, groupsAxis, groupsSizeField);\n var transform = transform$1();\n if (groupAxis === \"x\") {\n transform.translate(rect.origin.x - scaledStart.x, newStart - scaledStart.y);\n } else {\n transform.translate(newStart - scaledStart.x, rect.origin.y - scaledStart.y);\n }\n transform.scale(scale, scale);\n\n this.transform(transform);\n }\n };\n\n Layout.prototype._initGroups = function _initGroups () {\n var this$1$1 = this;\n\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var lineSpacing = options.lineSpacing;\n var wrap = options.wrap;\n var spacing = options.spacing;\n var sizeField = this._fieldMap.sizeField;\n var group = this._newGroup();\n var groups = [];\n var addGroup = function() {\n groups.push(group);\n groupsSize += group.lineSize + lineSpacing;\n };\n var groupsSize = -lineSpacing;\n\n for (var idx = 0; idx < children.length; idx++) {\n var element = children[idx];\n var bbox = children[idx].clippedBBox();\n if (element.visible() && bbox) {\n if (wrap && group.size + bbox.size[sizeField] + spacing > this$1$1._rect.size[sizeField]) {\n if (group.bboxes.length === 0) {\n this$1$1._addToGroup(group, bbox, element);\n addGroup();\n group = this$1$1._newGroup();\n } else {\n addGroup();\n group = this$1$1._newGroup();\n this$1$1._addToGroup(group, bbox, element);\n }\n } else {\n this$1$1._addToGroup(group, bbox, element);\n }\n }\n }\n\n if (group.bboxes.length) {\n addGroup();\n }\n\n return {\n groups: groups,\n groupsSize: groupsSize\n };\n };\n\n Layout.prototype._addToGroup = function _addToGroup (group, bbox, element) {\n group.size += bbox.size[this._fieldMap.sizeField] + this.options.spacing;\n group.lineSize = Math.max(bbox.size[this._fieldMap.groupsSizeField], group.lineSize);\n group.bboxes.push(bbox);\n group.elements.push(element);\n };\n\n Layout.prototype._newGroup = function _newGroup () {\n return {\n lineSize: 0,\n size: -this.options.spacing,\n bboxes: [],\n elements: []\n };\n };\n\n return Layout;\n }(Group));\n\n var Rect$2 = (function (superclass) {\n function Rect$$1(geometry, options) {\n if (geometry === void 0) { geometry = new Rect(); }\n if (options === void 0) { options = {}; }\n\n superclass.call(this, options);\n\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(\"#000\");\n }\n }\n\n extendStatic(Rect$$1, superclass);\n Rect$$1.prototype = Object.create( superclass && superclass.prototype );\n Rect$$1.prototype.constructor = Rect$$1;\n Rect$$1.fn = Rect$$1.prototype;\n Rect$$1.fn.init = Rect$$1.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Rect\";\n };\n\n Rect$$1.prototype._bbox = function _bbox (matrix) {\n return this._geometry.bbox(matrix);\n };\n\n Rect$$1.prototype.rawBBox = function rawBBox () {\n return this._geometry.bbox();\n };\n\n Rect$$1.prototype._containsPoint = function _containsPoint (point) {\n return this._geometry.containsPoint(point);\n };\n\n Rect$$1.prototype._isOnPath = function _isOnPath (point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n };\n\n Object.defineProperties( Rect$$1.prototype, prototypeAccessors );\n\n return Rect$$1;\n }(paintable(measurable(withGeometry(Element$1)))));\n\n function alignElements(elements, rect, alignment, axis, sizeField) {\n for (var idx = 0; idx < elements.length; idx++) {\n var bbox = elements[idx].clippedBBox();\n if (bbox) {\n var point = bbox.origin.clone();\n point[axis] = alignStart(bbox.size[sizeField], rect, alignment || \"start\", axis, sizeField);\n translateToPoint(point, bbox, elements[idx]);\n }\n }\n }\n\n function align(elements, rect, alignment) {\n alignElements(elements, rect, alignment, \"x\", \"width\");\n }\n\n function vAlign(elements, rect, alignment) {\n alignElements(elements, rect, alignment, \"y\", \"height\");\n }\n\n function stackElements(elements, stackAxis, otherAxis, sizeField) {\n if (elements.length > 1) {\n var origin = new Point();\n var previousBBox = elements[0].bbox;\n\n for (var idx = 1; idx < elements.length; idx++) {\n var element = elements[idx].element;\n var bbox = elements[idx].bbox;\n origin[stackAxis] = previousBBox.origin[stackAxis] + previousBBox.size[sizeField];\n origin[otherAxis] = bbox.origin[otherAxis];\n translateToPoint(origin, bbox, element);\n bbox.origin[stackAxis] = origin[stackAxis];\n previousBBox = bbox;\n }\n }\n }\n\n function createStackElements(elements) {\n var stackElements = [];\n\n for (var idx = 0; idx < elements.length; idx++) {\n var element = elements[idx];\n var bbox = element.clippedBBox();\n if (bbox) {\n stackElements.push({\n element: element,\n bbox: bbox\n });\n }\n }\n\n return stackElements;\n }\n\n function stack(elements) {\n stackElements(createStackElements(elements), \"x\", \"y\", \"width\");\n }\n\n function vStack(elements) {\n stackElements(createStackElements(elements), \"y\", \"x\", \"height\");\n }\n\n function getStacks(elements, rect, sizeField) {\n var maxSize = rect.size[sizeField];\n var stacks = [];\n var stack = [];\n var stackSize = 0;\n var element, bbox;\n\n var addElementToStack = function() {\n stack.push({\n element: element,\n bbox: bbox\n });\n };\n\n for (var idx = 0; idx < elements.length; idx++) {\n element = elements[idx];\n\n bbox = element.clippedBBox();\n if (bbox) {\n var size = bbox.size[sizeField];\n if (stackSize + size > maxSize) {\n if (stack.length) {\n stacks.push(stack);\n stack = [];\n addElementToStack();\n stackSize = size;\n } else {\n addElementToStack();\n stacks.push(stack);\n stack = [];\n stackSize = 0;\n }\n } else {\n addElementToStack();\n stackSize += size;\n }\n }\n }\n\n if (stack.length) {\n stacks.push(stack);\n }\n\n return stacks;\n }\n\n function wrapElements(elements, rect, axis, otherAxis, sizeField) {\n var stacks = getStacks(elements, rect, sizeField);\n var origin = rect.origin.clone();\n var result = [];\n\n for (var idx = 0; idx < stacks.length; idx++) {\n var stack = stacks[idx];\n var startElement = stack[0];\n origin[otherAxis] = startElement.bbox.origin[otherAxis];\n translateToPoint(origin, startElement.bbox, startElement.element);\n startElement.bbox.origin[axis] = origin[axis];\n stackElements(stack, axis, otherAxis, sizeField);\n result.push([]);\n for (var elementIdx = 0; elementIdx < stack.length; elementIdx++) {\n result[idx].push(stack[elementIdx].element);\n }\n }\n return result;\n }\n\n function wrap(elements, rect) {\n return wrapElements(elements, rect, \"x\", \"y\", \"width\");\n }\n\n function vWrap(elements, rect) {\n return wrapElements(elements, rect, \"y\", \"x\", \"height\");\n }\n\n function fit(element, rect) {\n var bbox = element.clippedBBox();\n if (bbox) {\n var elementSize = bbox.size;\n var rectSize = rect.size;\n if (rectSize.width < elementSize.width || rectSize.height < elementSize.height) {\n var scale = Math.min(rectSize.width / elementSize.width, rectSize.height / elementSize.height);\n var transform = element.transform() || transform$1();\n transform.scale(scale, scale);\n element.transform(transform);\n }\n }\n }\n\n var StopsArray = (function (ElementsArray$$1) {\n function StopsArray () {\n ElementsArray$$1.apply(this, arguments);\n }\n\n extendStatic(StopsArray, ElementsArray$$1);\n StopsArray.prototype = Object.create( ElementsArray$$1 && ElementsArray$$1.prototype );\n StopsArray.prototype.constructor = StopsArray;\n StopsArray.fn = StopsArray.prototype;\n StopsArray.fn.init = StopsArray.fn.constructor;\n\n StopsArray.prototype._change = function _change () {\n this.optionsChange({\n field: \"stops\"\n });\n };\n\n return StopsArray;\n }(ElementsArray));\n\n function optionsAccessor(name) {\n return function(value) {\n if (defined(value)) {\n this.options.set(name, value);\n return this;\n }\n\n return this.options.get(name);\n };\n }\n\n function defineOptionsAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = optionsAccessor(names[i]);\n }\n }\n\n var withOptions = function (TBase, names) {\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }extendStatic(result, TBase);\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n result.fn = result.prototype;\n result.fn.init = result.fn.constructor;\n\n return result;\n }(TBase));\n defineOptionsAccessors(result.prototype, names);\n\n return result;\n };\n\n var options = [ \"offset\", \"color\", \"opacity\" ];\n\n var GradientStop = (function (superclass) {\n function GradientStop(offset, color, opacity) {\n superclass.call(this);\n\n this.options = new OptionsStore({\n offset: offset,\n color: color,\n opacity: defined(opacity) ? opacity : 1\n });\n\n this.options.addObserver(this);\n }\n\n extendStatic(GradientStop, superclass);\n GradientStop.prototype = Object.create( superclass && superclass.prototype );\n GradientStop.prototype.constructor = GradientStop;\n GradientStop.fn = GradientStop.prototype;\n GradientStop.fn.init = GradientStop.fn.constructor;\n\n GradientStop.create = function create (arg) {\n if (defined(arg)) {\n var stop;\n if (arg instanceof GradientStop) {\n stop = arg;\n } else if (arg.length > 1) {\n stop = new GradientStop(arg[0], arg[1], arg[2]);\n } else {\n stop = new GradientStop(arg.offset, arg.color, arg.opacity);\n }\n\n return stop;\n }\n };\n\n return GradientStop;\n }(withOptions(HasObservers, options)));\n\n var Gradient = (function (HasObservers$$1) {\n function Gradient(options) {\n if (options === void 0) { options = {}; }\n\n HasObservers$$1.call(this);\n\n this.stops = new StopsArray(this._createStops(options.stops));\n this.stops.addObserver(this);\n this._userSpace = options.userSpace;\n this.id = definitionId();\n }\n\n extendStatic(Gradient, HasObservers$$1);\n Gradient.prototype = Object.create( HasObservers$$1 && HasObservers$$1.prototype );\n Gradient.prototype.constructor = Gradient;\n Gradient.fn = Gradient.prototype;\n Gradient.fn.init = Gradient.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Gradient\";\n };\n\n Gradient.prototype.userSpace = function userSpace (value) {\n if (defined(value)) {\n this._userSpace = value;\n this.optionsChange();\n return this;\n }\n\n return this._userSpace;\n };\n\n Gradient.prototype._createStops = function _createStops (stops) {\n if (stops === void 0) { stops = []; }\n\n var result = [];\n for (var idx = 0; idx < stops.length; idx++) {\n result.push(GradientStop.create(stops[idx]));\n }\n\n return result;\n };\n\n Gradient.prototype.addStop = function addStop (offset, color, opacity) {\n this.stops.push(new GradientStop(offset, color, opacity));\n };\n\n Gradient.prototype.removeStop = function removeStop (stop) {\n var index = this.stops.indexOf(stop);\n if (index >= 0) {\n this.stops.splice(index, 1);\n }\n };\n\n Gradient.prototype.optionsChange = function optionsChange (e) {\n this.trigger(\"optionsChange\", {\n field: \"gradient\" + (e ? \".\" + e.field : \"\"),\n value: this\n });\n };\n\n Gradient.prototype.geometryChange = function geometryChange () {\n this.optionsChange();\n };\n\n Object.defineProperties( Gradient.prototype, prototypeAccessors );\n\n return Gradient;\n }(HasObservers));\n\n var points$1 = [ \"start\", \"end\" ];\n\n var LinearGradient = (function (superclass) {\n function LinearGradient(options) {\n if (options === void 0) { options = {}; }\n\n superclass.call(this, options);\n\n this.start(options.start || new Point());\n this.end(options.end || new Point(1, 0));\n }\n\n extendStatic(LinearGradient, superclass);\n LinearGradient.prototype = Object.create( superclass && superclass.prototype );\n LinearGradient.prototype.constructor = LinearGradient;\n LinearGradient.fn = LinearGradient.prototype;\n LinearGradient.fn.init = LinearGradient.fn.constructor;\n\n return LinearGradient;\n }(withPoints(Gradient, points$1)));\n\n var RadialGradient = (function (superclass) {\n function RadialGradient(options) {\n if (options === void 0) { options = {}; }\n\n superclass.call(this, options);\n\n this.center(options.center || new Point());\n this._radius = defined(options.radius) ? options.radius : 1;\n this._fallbackFill = options.fallbackFill;\n }\n\n extendStatic(RadialGradient, superclass);\n RadialGradient.prototype = Object.create( superclass && superclass.prototype );\n RadialGradient.prototype.constructor = RadialGradient;\n RadialGradient.fn = RadialGradient.prototype;\n RadialGradient.fn.init = RadialGradient.fn.constructor;\n\n RadialGradient.prototype.radius = function radius (value) {\n if (defined(value)) {\n this._radius = value;\n this.geometryChange();\n return this;\n }\n\n return this._radius;\n };\n\n RadialGradient.prototype.fallbackFill = function fallbackFill (value) {\n if (defined(value)) {\n this._fallbackFill = value;\n this.optionsChange();\n return this;\n }\n\n return this._fallbackFill;\n };\n\n return RadialGradient;\n }(withPoints(Gradient, [ \"center\" ])));\n\n function swing(position) {\n return 0.5 - Math.cos(position * Math.PI) / 2;\n }\n\n function linear(position) {\n return position;\n }\n\n function easeOutElastic(position, time, start, diff) {\n var s = 1.70158,\n p = 0,\n a = diff;\n\n if (position === 0) {\n return start;\n }\n\n if (position === 1) {\n return start + diff;\n }\n\n if (!p) {\n p = 0.5;\n }\n\n if (a < Math.abs(diff)) {\n a = diff;\n s = p / 4;\n } else {\n s = p / (2 * Math.PI) * Math.asin(diff / a);\n }\n\n return a * Math.pow(2, -10 * position) *\n Math.sin((Number(position) - s) * (1.1 * Math.PI) / p) + diff + start;\n }\n\n var easingFunctions = {\n \tswing: swing,\n \tlinear: linear,\n \teaseOutElastic: easeOutElastic\n };\n\n var instance;\n\n var AnimationFactory = (function (Class$$1) {\n function AnimationFactory() {\n Class$$1.call(this);\n\n this._items = [];\n }\n\n extendStatic(AnimationFactory, Class$$1);\n AnimationFactory.prototype = Object.create( Class$$1 && Class$$1.prototype );\n AnimationFactory.prototype.constructor = AnimationFactory;\n AnimationFactory.fn = AnimationFactory.prototype;\n AnimationFactory.fn.init = AnimationFactory.fn.constructor;\n\n var staticAccessors = { current: {} };\n\n staticAccessors.current.get = function () {\n if (!instance) {\n instance = new AnimationFactory();\n }\n\n return instance;\n };\n\n AnimationFactory.prototype.register = function register (name, type) {\n this._items.push({\n name: name,\n type: type\n });\n };\n\n AnimationFactory.prototype.create = function create (element, options) {\n var items = this._items;\n var match;\n\n if (options && options.type) {\n var type = options.type.toLowerCase();\n for (var i = 0; i < items.length; i++) {\n if (items[i].name.toLowerCase() === type) {\n match = items[i];\n break;\n }\n }\n }\n\n if (match) {\n return new match.type(element, options);\n }\n };\n\n Object.defineProperties( AnimationFactory, staticAccessors );\n\n return AnimationFactory;\n }(Class));\n\n var Animation = (function (Class$$1) {\n function Animation(element, options) {\n Class$$1.call(this);\n\n this.options = $.extend({}, this.options, options);\n this.element = element;\n }\n\n extendStatic(Animation, Class$$1);\n Animation.prototype = Object.create( Class$$1 && Class$$1.prototype );\n Animation.prototype.constructor = Animation;\n Animation.fn = Animation.prototype;\n Animation.fn.init = Animation.fn.constructor;\n\n var prototypeAccessors = { options: {} };\n\n Animation.create = function create (type, element, options) {\n return AnimationFactory.current.create(type, element, options);\n };\n\n prototypeAccessors.options.get = function () {\n return this._options || {\n duration: 500,\n easing: \"swing\"\n };\n };\n\n prototypeAccessors.options.set = function (value) {\n this._options = value;\n };\n\n Animation.prototype.setup = function setup () {};\n Animation.prototype.step = function step () {};\n\n Animation.prototype.play = function play () {\n var this$1$1 = this;\n\n var options = this.options;\n var duration = options.duration;\n var delay = options.delay; if (delay === void 0) { delay = 0; }\n var easing = easingFunctions[options.easing];\n var start = now() + delay;\n var finish = start + duration;\n\n if (duration === 0) {\n this.step(1);\n this.abort();\n } else {\n setTimeout(function () {\n var loop = function () {\n if (this$1$1._stopped) {\n return;\n }\n\n var wallTime = now();\n\n var time = limitValue(wallTime - start, 0, duration);\n var position = time / duration;\n var easingPosition = easing(position, time, 0, 1, duration);\n\n this$1$1.step(easingPosition);\n\n if (wallTime < finish) {\n kendo.animationFrame(loop);\n } else {\n this$1$1.abort();\n }\n };\n\n loop();\n }, delay);\n }\n };\n\n Animation.prototype.abort = function abort () {\n this._stopped = true;\n };\n\n Animation.prototype.destroy = function destroy () {\n this.abort();\n };\n\n Object.defineProperties( Animation.prototype, prototypeAccessors );\n\n return Animation;\n }(Class));\n\n var instance$1;\n\n var PathParser = (function (Class$$1) {\n function PathParser () {\n Class$$1.apply(this, arguments);\n }\n\n extendStatic(PathParser, Class$$1);\n PathParser.prototype = Object.create( Class$$1 && Class$$1.prototype );\n PathParser.prototype.constructor = PathParser;\n PathParser.fn = PathParser.prototype;\n PathParser.fn.init = PathParser.fn.constructor;\n\n var staticAccessors = { current: {} };\n\n staticAccessors.current.get = function () {\n if (!instance$1) {\n instance$1 = new PathParser();\n }\n\n return instance$1;\n };\n\n PathParser.prototype.parse = function parse (str, options) {\n var multiPath = new MultiPath(options);\n return parsePath(multiPath, str);\n };\n\n Object.defineProperties( PathParser, staticAccessors );\n\n return PathParser;\n }(Class));\n\n var BaseNode = (function (Class$$1) {\n function BaseNode(srcElement) {\n Class$$1.call(this);\n\n this.childNodes = [];\n this.parent = null;\n\n if (srcElement) {\n this.srcElement = srcElement;\n this.observe();\n }\n }\n\n extendStatic(BaseNode, Class$$1);\n BaseNode.prototype = Object.create( Class$$1 && Class$$1.prototype );\n BaseNode.prototype.constructor = BaseNode;\n BaseNode.fn = BaseNode.prototype;\n BaseNode.fn.init = BaseNode.fn.constructor;\n\n BaseNode.prototype.destroy = function destroy () {\n var this$1$1 = this;\n\n if (this.srcElement) {\n this.srcElement.removeObserver(this);\n }\n\n var children = this.childNodes;\n for (var i = 0; i < children.length; i++) {\n this$1$1.childNodes[i].destroy();\n }\n\n this.parent = null;\n };\n\n BaseNode.prototype.load = function load () {};\n\n BaseNode.prototype.observe = function observe () {\n if (this.srcElement) {\n this.srcElement.addObserver(this);\n }\n };\n\n BaseNode.prototype.append = function append (node) {\n this.childNodes.push(node);\n node.parent = this;\n };\n\n BaseNode.prototype.insertAt = function insertAt (node, pos) {\n this.childNodes.splice(pos, 0, node);\n node.parent = this;\n };\n\n BaseNode.prototype.remove = function remove (index, count) {\n var this$1$1 = this;\n\n var end = index + count;\n for (var i = index; i < end; i++) {\n this$1$1.childNodes[i].removeSelf();\n }\n this.childNodes.splice(index, count);\n };\n\n BaseNode.prototype.removeSelf = function removeSelf () {\n this.clear();\n this.destroy();\n };\n\n BaseNode.prototype.clear = function clear () {\n this.remove(0, this.childNodes.length);\n };\n\n BaseNode.prototype.invalidate = function invalidate () {\n if (this.parent) {\n this.parent.invalidate();\n }\n };\n\n BaseNode.prototype.geometryChange = function geometryChange () {\n this.invalidate();\n };\n\n BaseNode.prototype.optionsChange = function optionsChange () {\n this.invalidate();\n };\n\n BaseNode.prototype.childrenChange = function childrenChange (e) {\n if (e.action === \"add\") {\n this.load(e.items, e.index);\n } else if (e.action === \"remove\") {\n this.remove(e.index, e.items.length);\n }\n\n this.invalidate();\n };\n\n return BaseNode;\n }(Class));\n\n var events = [\n \"click\",\n \"mouseenter\",\n \"mouseleave\",\n \"mousemove\",\n \"resize\"\n ];\n\n var Surface$2 = (function (Observable$$1) {\n function Surface(element, options) {\n Observable$$1.call(this);\n\n this.options = $.extend({}, options);\n this.element = element;\n this.element._kendoExportVisual = this.exportVisual.bind(this);\n\n this._click = this._handler(\"click\");\n this._mouseenter = this._handler(\"mouseenter\");\n this._mouseleave = this._handler(\"mouseleave\");\n this._mousemove = this._handler(\"mousemove\");\n\n this._visual = new Group();\n\n elementSize(element, this.options);\n\n this.bind(events, this.options);\n\n this._enableTracking();\n }\n\n extendStatic(Surface, Observable$$1);\n Surface.prototype = Object.create( Observable$$1 && Observable$$1.prototype );\n Surface.prototype.constructor = Surface;\n Surface.fn = Surface.prototype;\n Surface.fn.init = Surface.fn.constructor;\n\n Surface.prototype.draw = function draw (element) {\n this._visual.children.push(element);\n };\n\n Surface.prototype.clear = function clear () {\n this._visual.children = [];\n };\n\n Surface.prototype.destroy = function destroy () {\n this._visual = null;\n this.element._kendoExportVisual = null;\n this.unbind();\n };\n\n Surface.prototype.eventTarget = function eventTarget (e) {\n var this$1$1 = this;\n\n var domNode = eventElement(e);\n var node;\n\n while (!node && domNode) {\n node = domNode._kendoNode;\n if (domNode === this$1$1.element) {\n break;\n }\n\n domNode = domNode.parentElement;\n }\n\n if (node) {\n return node.srcElement;\n }\n };\n\n Surface.prototype.exportVisual = function exportVisual () {\n return this._visual;\n };\n\n Surface.prototype.getSize = function getSize () {\n return elementSize(this.element);\n };\n\n Surface.prototype.currentSize = function currentSize (size) {\n if (size) {\n this._size = size;\n } else {\n return this._size;\n }\n };\n\n Surface.prototype.setSize = function setSize (size) {\n elementSize(this.element, size);\n\n this.currentSize(size);\n this._resize();\n };\n\n Surface.prototype.resize = function resize (force) {\n var size = this.getSize();\n var currentSize = this.currentSize();\n\n if (force || (size.width > 0 || size.height > 0) && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n this.currentSize(size);\n this._resize(size, force);\n this.trigger(\"resize\", size);\n }\n };\n\n Surface.prototype.size = function size (value) {\n if (!value) {\n return this.getSize();\n }\n\n this.setSize(value);\n };\n\n Surface.prototype.suspendTracking = function suspendTracking () {\n this._suspendedTracking = true;\n };\n\n Surface.prototype.resumeTracking = function resumeTracking () {\n this._suspendedTracking = false;\n };\n\n Surface.prototype._enableTracking = function _enableTracking () {};\n\n Surface.prototype._resize = function _resize () {};\n\n Surface.prototype._handler = function _handler (eventName) {\n var this$1$1 = this;\n\n return function (e) {\n var node = this$1$1.eventTarget(e);\n if (node && !this$1$1._suspendedTracking) {\n this$1$1.trigger(eventName, {\n element: node,\n originalEvent: e,\n type: eventName\n });\n }\n };\n };\n\n Surface.prototype._elementOffset = function _elementOffset () {\n var element = this.element;\n var padding = elementPadding(element);\n var ref = elementOffset(element);\n var left = ref.left;\n var top = ref.top;\n\n return {\n left: left + padding.left,\n top: top + padding.top\n };\n };\n\n Surface.prototype._surfacePoint = function _surfacePoint (e) {\n var offset = this._elementOffset();\n var coord = eventCoordinates(e);\n var x = coord.x - offset.left;\n var y = coord.y - offset.top;\n\n var inverseTransform = elementScale(this.element).invert();\n var point = new Point(\n x,\n y\n ).transform(inverseTransform);\n\n return point;\n };\n\n return Surface;\n }(kendo.Observable));\n\n function renderAttr(name, value) {\n return (defined(value) && value !== null) ? (\" \" + name + \"=\\\"\" + value + \"\\\" \") : \"\";\n }\n\n function renderAllAttr(attrs) {\n var output = \"\";\n for (var i = 0; i < attrs.length; i++) {\n output += renderAttr(attrs[i][0], attrs[i][1]);\n }\n\n return output;\n }\n\n function renderStyle(attrs) {\n var output = \"\";\n for (var i = 0; i < attrs.length; i++) {\n var value = attrs[i][1];\n if (defined(value)) {\n output += attrs[i][0] + \":\" + value + \";\";\n }\n }\n\n if (output !== \"\") {\n return output;\n }\n }\n\n var NODE_MAP = {};\n\n var SVG_NS = \"http://www.w3.org/2000/svg\";\n var NONE = \"none\";\n var POINT_DIGITS = 3;\n\n var applyStyle = function (styleString, element) { return styleString.split(';').filter(function (s) { return s !== ''; }).forEach(function (s) {\n var parts = s.split(':');\n element.style[parts[0].trim()] = parts[1].trim();\n }); };\n\n var styleAttr = 'data-style';\n var replaceStyleAttr = function (html) { return html.replace(/\\sstyle=/g, ' ' + styleAttr + '='); };\n var restoreStyleAttr = function (container) {\n Array.from(container.querySelectorAll('[' + styleAttr +']')).forEach(function (element) {\n var styleString = element.getAttribute(styleAttr);\n element.removeAttribute(styleAttr);\n applyStyle(styleString, element);\n });\n };\n\n var renderSVG = function(container, svg) {\n container.innerHTML = replaceStyleAttr(svg);\n restoreStyleAttr(container);\n };\n\n if (typeof document !== \"undefined\") {\n var testFragment = \"\";\n var testContainer = document.createElement(\"div\");\n var hasParser = typeof DOMParser !== \"undefined\";\n\n testContainer.innerHTML = testFragment;\n\n if (hasParser && testContainer.firstChild.namespaceURI !== SVG_NS) {\n renderSVG = function(container, svg) {\n var parser = new DOMParser();\n var chartDoc = parser.parseFromString(replaceStyleAttr(svg), \"text/xml\");\n restoreStyleAttr(chartDoc);\n var importedDoc = document.adoptNode(chartDoc.documentElement);\n\n container.innerHTML = \"\";\n container.appendChild(importedDoc);\n };\n }\n }\n\n var renderSVG$1 = renderSVG;\n\n var TRANSFORM = \"transform\";\n var DefinitionMap = {\n clip: \"clip-path\",\n fill: \"fill\"\n };\n\n function isDefinition(type, value) {\n return type === \"clip\" || (type === \"fill\" && (!value || value.nodeType === \"Gradient\"));\n }\n\n function baseUrl() {\n var base = document.getElementsByTagName(\"base\")[0];\n var href = document.location.href;\n var url = \"\";\n\n if (base && !(supportBrowser || {}).msie) {\n var hashIndex = href.indexOf(\"#\");\n if (hashIndex !== -1) {\n href = href.substring(0, hashIndex);\n }\n\n url = href;\n }\n\n return url;\n }\n\n var Node = (function (BaseNode$$1) {\n function Node(srcElement, options) {\n BaseNode$$1.call(this, srcElement);\n this.definitions = {};\n\n this.options = options;\n }\n\n extendStatic(Node, BaseNode$$1);\n Node.prototype = Object.create( BaseNode$$1 && BaseNode$$1.prototype );\n Node.prototype.constructor = Node;\n Node.fn = Node.prototype;\n Node.fn.init = Node.fn.constructor;\n\n Node.prototype.destroy = function destroy () {\n if (this.element) {\n this.element._kendoNode = null;\n this.element = null;\n }\n\n this.clearDefinitions();\n BaseNode$$1.prototype.destroy.call(this);\n };\n\n Node.prototype.load = function load (elements, pos) {\n var this$1$1 = this;\n\n for (var i = 0; i < elements.length; i++) {\n var srcElement = elements[i];\n var children = srcElement.children;\n\n var childNode = new NODE_MAP[srcElement.nodeType](srcElement, this$1$1.options);\n\n if (defined(pos)) {\n this$1$1.insertAt(childNode, pos);\n } else {\n this$1$1.append(childNode);\n }\n\n childNode.createDefinitions();\n\n if (children && children.length > 0) {\n childNode.load(children);\n }\n\n var element = this$1$1.element;\n if (element) {\n childNode.attachTo(element, pos);\n }\n }\n };\n\n Node.prototype.root = function root () {\n var root = this;\n\n while (root.parent) {\n root = root.parent;\n }\n\n return root;\n };\n\n Node.prototype.attachTo = function attachTo (domElement, pos) {\n var container = document.createElement(\"div\");\n renderSVG$1(container,\n \"\" +\n this.render() +\n \"\"\n );\n\n var element = container.firstChild.firstChild;\n if (element) {\n if (defined(pos)) {\n domElement.insertBefore(element, domElement.childNodes[pos] || null);\n } else {\n domElement.appendChild(element);\n }\n this.setElement(element);\n }\n };\n\n Node.prototype.setElement = function setElement (element) {\n if (this.element) {\n this.element._kendoNode = null;\n }\n\n this.element = element;\n this.element._kendoNode = this;\n\n var nodes = this.childNodes;\n for (var i = 0; i < nodes.length; i++) {\n var childElement = element.childNodes[i];\n nodes[i].setElement(childElement);\n }\n };\n\n Node.prototype.clear = function clear () {\n this.clearDefinitions();\n\n if (this.element) {\n this.element.innerHTML = \"\";\n }\n\n var children = this.childNodes;\n for (var i = 0; i < children.length; i++) {\n children[i].destroy();\n }\n\n this.childNodes = [];\n };\n\n Node.prototype.removeSelf = function removeSelf () {\n if (this.element) {\n var parentNode = this.element.parentNode;\n if (parentNode) {\n parentNode.removeChild(this.element);\n }\n this.element = null;\n }\n\n BaseNode$$1.prototype.removeSelf.call(this);\n };\n\n Node.prototype.template = function template () {\n return this.renderChildren();\n };\n\n Node.prototype.render = function render () {\n return this.template();\n };\n\n Node.prototype.renderChildren = function renderChildren () {\n var nodes = this.childNodes;\n var output = \"\";\n\n for (var i = 0; i < nodes.length; i++) {\n output += nodes[i].render();\n }\n\n return output;\n };\n\n Node.prototype.optionsChange = function optionsChange (e) {\n var field = e.field;\n var value = e.value;\n\n if (field === \"visible\") {\n this.css(\"display\", value ? \"\" : NONE);\n } else if (DefinitionMap[field] && isDefinition(field, value)) {\n this.updateDefinition(field, value);\n } else if (field === \"opacity\") {\n this.attr(\"opacity\", value);\n } else if (field === \"cursor\") {\n this.css(\"cursor\", value);\n } else if (field === \"id\") {\n if (value) {\n this.attr(\"id\", value);\n } else {\n this.removeAttr(\"id\");\n }\n }\n\n BaseNode$$1.prototype.optionsChange.call(this, e);\n };\n\n Node.prototype.accessibilityOptionsChange = function accessibilityOptionsChange (e) {\n var field = e.field;\n var value = e.value;\n\n if (field === \"role\") {\n if (value) {\n this.attr(\"role\", value);\n } else {\n this.removeAttr(\"role\");\n }\n } else if (field === \"ariaLabel\") {\n if (value) {\n this.attr(\"aria-label\", htmlEncode(value));\n } else {\n this.removeAttr(\"aria-label\");\n }\n } else if (field === \"ariaRoleDescription\") {\n if (value) {\n this.attr(\"aria-roledescription\", htmlEncode(value));\n } else {\n this.removeAttr(\"aria-roledescription\");\n }\n } else if (field === \"ariaChecked\") {\n if (defined(value)) {\n this.attr(\"aria-checked\", value);\n } else {\n this.removeAttr(\"aria-checked\");\n }\n } else if (field === \"className\") {\n this.className(value);\n }\n };\n\n Node.prototype.attr = function attr (name, value) {\n if (this.element) {\n this.element.setAttribute(name, value);\n }\n };\n\n Node.prototype.allAttr = function allAttr (attrs) {\n var this$1$1 = this;\n\n for (var i = 0; i < attrs.length; i++) {\n this$1$1.attr(attrs[i][0], attrs[i][1]);\n }\n };\n\n Node.prototype.toggleAttr = function toggleAttr (name, value) {\n if (value) {\n this.attr(name, value);\n } else {\n this.removeAttr(name);\n }\n };\n\n Node.prototype.css = function css (name, value) {\n if (this.element) {\n this.element.style[name] = value;\n }\n };\n\n Node.prototype.allCss = function allCss (styles) {\n var this$1$1 = this;\n\n for (var i = 0; i < styles.length; i++) {\n this$1$1.css(styles[i][0], styles[i][1]);\n }\n };\n\n Node.prototype.className = function className (value) {\n var this$1$1 = this;\n\n if (this.element) {\n (ref = this.element.classList).remove.apply(ref, this.element.classList);\n value.split(\" \").forEach(function (item) {\n this$1$1.element.classList.add(item);\n });\n }\n var ref;\n };\n\n Node.prototype.removeAttr = function removeAttr (name) {\n if (this.element) {\n this.element.removeAttribute(name);\n }\n };\n\n Node.prototype.mapTransform = function mapTransform (transform) {\n var attrs = [];\n if (transform) {\n attrs.push([\n TRANSFORM,\n \"matrix(\" + transform.matrix().toString(6) + \")\"\n ]);\n }\n\n return attrs;\n };\n\n Node.prototype.renderTransform = function renderTransform () {\n return renderAllAttr(\n this.mapTransform(this.srcElement.transform())\n );\n };\n\n Node.prototype.transformChange = function transformChange (value) {\n if (value) {\n this.allAttr(this.mapTransform(value));\n } else {\n this.removeAttr(TRANSFORM);\n }\n };\n\n Node.prototype.mapStyle = function mapStyle () {\n var options = this.srcElement.options;\n var style = [ [ \"cursor\", options.cursor ] ];\n\n if (options.visible === false) {\n style.push([ \"display\", NONE ]);\n }\n\n return style;\n };\n\n Node.prototype.renderStyle = function renderStyle$1 () {\n return renderAttr(\"style\", renderStyle(this.mapStyle(true)));\n };\n\n Node.prototype.renderOpacity = function renderOpacity () {\n return renderAttr(\"opacity\", this.srcElement.options.opacity);\n };\n\n Node.prototype.renderId = function renderId () {\n return renderAttr(\"id\", this.srcElement.options.id);\n };\n\n Node.prototype.renderClassName = function renderClassName () {\n return renderAttr(\"class\", this.srcElement.options.className);\n };\n\n Node.prototype.renderRole = function renderRole () {\n return renderAttr(\"role\", this.srcElement.options.role);\n };\n\n Node.prototype.renderAriaLabel = function renderAriaLabel () {\n var value = this.srcElement.options.ariaLabel;\n if (value) {\n value = htmlEncode(value);\n }\n return renderAttr(\"aria-label\", value);\n };\n\n Node.prototype.renderAriaRoleDescription = function renderAriaRoleDescription () {\n var value = this.srcElement.options.ariaRoleDescription;\n if (value) {\n value = htmlEncode(value);\n }\n return renderAttr(\"aria-roledescription\", value);\n };\n\n Node.prototype.renderAriaChecked = function renderAriaChecked () {\n return renderAttr(\"aria-checked\", this.srcElement.options.ariaChecked);\n };\n\n Node.prototype.createDefinitions = function createDefinitions () {\n var srcElement = this.srcElement;\n var definitions = this.definitions;\n if (srcElement) {\n var options = srcElement.options;\n var hasDefinitions;\n\n for (var field in DefinitionMap) {\n var definition = options.get(field);\n if (definition && isDefinition(field, definition)) {\n definitions[field] = definition;\n hasDefinitions = true;\n }\n }\n if (hasDefinitions) {\n this.definitionChange({\n action: \"add\",\n definitions: definitions\n });\n }\n }\n };\n\n Node.prototype.definitionChange = function definitionChange (e) {\n if (this.parent) {\n this.parent.definitionChange(e);\n }\n };\n\n Node.prototype.updateDefinition = function updateDefinition (type, value) {\n var definitions = this.definitions;\n var current = definitions[type];\n var attr = DefinitionMap[type];\n var definition = {};\n if (current) {\n definition[type] = current;\n this.definitionChange({\n action: \"remove\",\n definitions: definition\n });\n delete definitions[type];\n }\n\n if (!value) {\n if (current) {\n this.removeAttr(attr);\n }\n } else {\n definition[type] = value;\n this.definitionChange({\n action: \"add\",\n definitions: definition\n });\n definitions[type] = value;\n this.attr(attr, this.refUrl(value.id));\n }\n };\n\n Node.prototype.clearDefinitions = function clearDefinitions () {\n var definitions = this.definitions;\n\n this.definitionChange({\n action: \"remove\",\n definitions: definitions\n });\n this.definitions = {};\n };\n\n Node.prototype.renderDefinitions = function renderDefinitions () {\n return renderAllAttr(this.mapDefinitions());\n };\n\n Node.prototype.mapDefinitions = function mapDefinitions () {\n var this$1$1 = this;\n\n var definitions = this.definitions;\n var attrs = [];\n\n for (var field in definitions) {\n attrs.push([ DefinitionMap[field], this$1$1.refUrl(definitions[field].id) ]);\n }\n\n return attrs;\n };\n\n Node.prototype.refUrl = function refUrl (id) {\n var skipBaseHref = (this.options || {}).skipBaseHref;\n var baseHref = this.baseUrl().replace(/'/g, \"\\\\'\");\n var base = skipBaseHref ? '' : baseHref;\n return (\"url(\" + base + \"#\" + id + \")\");\n };\n\n Node.prototype.baseUrl = function baseUrl$1 () {\n return baseUrl();\n };\n\n return Node;\n }(BaseNode));\n\n var GradientStopNode = (function (Node$$1) {\n function GradientStopNode () {\n Node$$1.apply(this, arguments);\n }\n\n extendStatic(GradientStopNode, Node$$1);\n GradientStopNode.prototype = Object.create( Node$$1 && Node$$1.prototype );\n GradientStopNode.prototype.constructor = GradientStopNode;\n GradientStopNode.fn = GradientStopNode.prototype;\n GradientStopNode.fn.init = GradientStopNode.fn.constructor;\n\n GradientStopNode.prototype.template = function template () {\n return (\"\");\n };\n\n GradientStopNode.prototype.renderOffset = function renderOffset () {\n return renderAttr(\"offset\", this.srcElement.offset());\n };\n\n GradientStopNode.prototype.mapStyle = function mapStyle () {\n var srcElement = this.srcElement;\n return [\n [ \"stop-color\", srcElement.color() ],\n [ \"stop-opacity\", srcElement.opacity() ]\n ];\n };\n\n GradientStopNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"offset\") {\n this.attr(e.field, e.value);\n } else if (e.field === \"color\" || e.field === \"opacity\") {\n this.css(\"stop-\" + e.field, e.value);\n }\n };\n\n return GradientStopNode;\n }(Node));\n\n var GradientNode = (function (Node$$1) {\n function GradientNode(srcElement) {\n Node$$1.call(this, srcElement);\n\n this.id = srcElement.id;\n\n this.loadStops();\n }\n\n extendStatic(GradientNode, Node$$1);\n GradientNode.prototype = Object.create( Node$$1 && Node$$1.prototype );\n GradientNode.prototype.constructor = GradientNode;\n GradientNode.fn = GradientNode.prototype;\n GradientNode.fn.init = GradientNode.fn.constructor;\n\n GradientNode.prototype.loadStops = function loadStops () {\n var this$1$1 = this;\n\n var stops = this.srcElement.stops;\n var element = this.element;\n\n for (var idx = 0; idx < stops.length; idx++) {\n var stopNode = new GradientStopNode(stops[idx]);\n this$1$1.append(stopNode);\n if (element) {\n stopNode.attachTo(element);\n }\n }\n };\n\n GradientNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"gradient.stops\") {\n BaseNode.prototype.clear.call(this);\n this.loadStops();\n } else if (e.field === \"gradient\") {\n this.allAttr(this.mapCoordinates());\n }\n };\n\n GradientNode.prototype.renderCoordinates = function renderCoordinates () {\n return renderAllAttr(this.mapCoordinates());\n };\n\n GradientNode.prototype.mapSpace = function mapSpace () {\n return [ \"gradientUnits\", this.srcElement.userSpace() ? \"userSpaceOnUse\" : \"objectBoundingBox\" ];\n };\n\n return GradientNode;\n }(Node));\n\n var LinearGradientNode = (function (GradientNode$$1) {\n function LinearGradientNode () {\n GradientNode$$1.apply(this, arguments);\n }\n\n extendStatic(LinearGradientNode, GradientNode$$1);\n LinearGradientNode.prototype = Object.create( GradientNode$$1 && GradientNode$$1.prototype );\n LinearGradientNode.prototype.constructor = LinearGradientNode;\n LinearGradientNode.fn = LinearGradientNode.prototype;\n LinearGradientNode.fn.init = LinearGradientNode.fn.constructor;\n\n LinearGradientNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n LinearGradientNode.prototype.mapCoordinates = function mapCoordinates () {\n var srcElement = this.srcElement;\n var start = srcElement.start();\n var end = srcElement.end();\n var attrs = [\n [ \"x1\", start.x ],\n [ \"y1\", start.y ],\n [ \"x2\", end.x ],\n [ \"y2\", end.y ],\n this.mapSpace()\n ];\n\n return attrs;\n };\n\n return LinearGradientNode;\n }(GradientNode));\n\n var RadialGradientNode = (function (GradientNode$$1) {\n function RadialGradientNode () {\n GradientNode$$1.apply(this, arguments);\n }\n\n extendStatic(RadialGradientNode, GradientNode$$1);\n RadialGradientNode.prototype = Object.create( GradientNode$$1 && GradientNode$$1.prototype );\n RadialGradientNode.prototype.constructor = RadialGradientNode;\n RadialGradientNode.fn = RadialGradientNode.prototype;\n RadialGradientNode.fn.init = RadialGradientNode.fn.constructor;\n\n RadialGradientNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n RadialGradientNode.prototype.mapCoordinates = function mapCoordinates () {\n var srcElement = this.srcElement;\n var center = srcElement.center();\n var radius = srcElement.radius();\n var attrs = [\n [ \"cx\", center.x ],\n [ \"cy\", center.y ],\n [ \"r\", radius ],\n this.mapSpace()\n ];\n return attrs;\n };\n\n return RadialGradientNode;\n }(GradientNode));\n\n var ClipNode = (function (Node$$1) {\n function ClipNode(srcElement) {\n Node$$1.call(this);\n\n this.srcElement = srcElement;\n this.id = srcElement.id;\n\n this.load([ srcElement ]);\n }\n\n extendStatic(ClipNode, Node$$1);\n ClipNode.prototype = Object.create( Node$$1 && Node$$1.prototype );\n ClipNode.prototype.constructor = ClipNode;\n ClipNode.fn = ClipNode.prototype;\n ClipNode.fn.init = ClipNode.fn.constructor;\n\n ClipNode.prototype.renderClipRule = function renderClipRule () {\n return renderAttr(\"clip-rule\", \"evenodd\");\n };\n ClipNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n return ClipNode;\n }(Node));\n\n var DefinitionNode = (function (Node$$1) {\n function DefinitionNode() {\n Node$$1.call(this);\n this.definitionMap = {};\n }\n\n extendStatic(DefinitionNode, Node$$1);\n DefinitionNode.prototype = Object.create( Node$$1 && Node$$1.prototype );\n DefinitionNode.prototype.constructor = DefinitionNode;\n DefinitionNode.fn = DefinitionNode.prototype;\n DefinitionNode.fn.init = DefinitionNode.fn.constructor;\n\n DefinitionNode.prototype.attachTo = function attachTo (domElement) {\n this.element = domElement;\n };\n\n DefinitionNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n DefinitionNode.prototype.definitionChange = function definitionChange (e) {\n var definitions = e.definitions;\n var action = e.action;\n\n if (action === \"add\") {\n this.addDefinitions(definitions);\n } else if (action === \"remove\") {\n this.removeDefinitions(definitions);\n }\n };\n\n DefinitionNode.prototype.createDefinition = function createDefinition (type, item) {\n var nodeType;\n if (type === \"clip\") {\n nodeType = ClipNode;\n } else if (type === \"fill\") {\n if (item instanceof LinearGradient) {\n nodeType = LinearGradientNode;\n } else if (item instanceof RadialGradient) {\n nodeType = RadialGradientNode;\n }\n }\n return new nodeType(item);\n };\n\n DefinitionNode.prototype.addDefinitions = function addDefinitions (definitions) {\n var this$1$1 = this;\n\n for (var field in definitions) {\n this$1$1.addDefinition(field, definitions[field]);\n }\n };\n\n DefinitionNode.prototype.addDefinition = function addDefinition (type, srcElement) {\n var ref = this;\n var element = ref.element;\n var definitionMap = ref.definitionMap;\n var id = srcElement.id;\n var mapItem = definitionMap[id];\n if (!mapItem) {\n var node = this.createDefinition(type, srcElement);\n definitionMap[id] = {\n element: node,\n count: 1\n };\n this.append(node);\n if (element) {\n node.attachTo(this.element);\n }\n } else {\n mapItem.count++;\n }\n };\n\n DefinitionNode.prototype.removeDefinitions = function removeDefinitions (definitions) {\n var this$1$1 = this;\n\n for (var field in definitions) {\n this$1$1.removeDefinition(definitions[field]);\n }\n };\n\n DefinitionNode.prototype.removeDefinition = function removeDefinition (srcElement) {\n var definitionMap = this.definitionMap;\n var id = srcElement.id;\n var mapItem = definitionMap[id];\n\n if (mapItem) {\n mapItem.count--;\n if (mapItem.count === 0) {\n this.remove(this.childNodes.indexOf(mapItem.element), 1);\n delete definitionMap[id];\n }\n }\n };\n\n return DefinitionNode;\n }(Node));\n\n var RootNode = (function (Node$$1) {\n function RootNode(options) {\n Node$$1.call(this);\n this.options = options;\n this.defs = new DefinitionNode();\n }\n\n extendStatic(RootNode, Node$$1);\n RootNode.prototype = Object.create( Node$$1 && Node$$1.prototype );\n RootNode.prototype.constructor = RootNode;\n RootNode.fn = RootNode.prototype;\n RootNode.fn.init = RootNode.fn.constructor;\n\n RootNode.prototype.attachTo = function attachTo (domElement) {\n this.element = domElement;\n this.defs.attachTo(domElement.firstElementChild);\n };\n\n RootNode.prototype.clear = function clear () {\n BaseNode.prototype.clear.call(this);\n };\n\n RootNode.prototype.template = function template () {\n return this.defs.render() + this.renderChildren();\n };\n\n RootNode.prototype.definitionChange = function definitionChange (e) {\n this.defs.definitionChange(e);\n };\n\n return RootNode;\n }(Node));\n\n var DASH_ARRAYS = {\n dot: [ 1.5, 3.5 ],\n dash: [ 4, 3.5 ],\n longdash: [ 8, 3.5 ],\n dashdot: [ 3.5, 3.5, 1.5, 3.5 ],\n longdashdot: [ 8, 3.5, 1.5, 3.5 ],\n longdashdotdot: [ 8, 3.5, 1.5, 3.5, 1.5, 3.5 ]\n };\n\n var SOLID = \"solid\";\n var BUTT = \"butt\";\n\n var ATTRIBUTE_MAP = {\n \"fill.opacity\": \"fill-opacity\",\n \"stroke.color\": \"stroke\",\n \"stroke.width\": \"stroke-width\",\n \"stroke.opacity\": \"stroke-opacity\"\n };\n\n var PathNode = (function (Node$$1) {\n function PathNode () {\n Node$$1.apply(this, arguments);\n }\n\n extendStatic(PathNode, Node$$1);\n PathNode.prototype = Object.create( Node$$1 && Node$$1.prototype );\n PathNode.prototype.constructor = PathNode;\n PathNode.fn = PathNode.prototype;\n PathNode.fn.init = PathNode.fn.constructor;\n\n PathNode.prototype.geometryChange = function geometryChange () {\n this.attr(\"d\", this.renderData());\n this.invalidate();\n };\n\n PathNode.prototype.optionsChange = function optionsChange (e) {\n switch (e.field) {\n case \"fill\":\n if (e.value) {\n this.allAttr(this.mapFill(e.value));\n } else {\n this.removeAttr(\"fill\");\n }\n break;\n\n case \"fill.color\":\n this.allAttr(this.mapFill({ color: e.value }));\n break;\n\n case \"stroke\":\n if (e.value) {\n this.allAttr(this.mapStroke(e.value));\n } else {\n this.removeAttr(\"stroke\");\n }\n break;\n\n case \"transform\":\n this.transformChange(e.value);\n break;\n\n default:\n var name = ATTRIBUTE_MAP[e.field];\n if (name) {\n this.attr(name, e.value);\n }\n break;\n }\n\n this.accessibilityOptionsChange(e);\n\n Node$$1.prototype.optionsChange.call(this, e);\n };\n\n PathNode.prototype.content = function content () {\n if (this.element) {\n this.element.textContent = this.srcElement.content();\n }\n };\n\n PathNode.prototype.renderData = function renderData () {\n return this.srcElement.toString(POINT_DIGITS) || undefined;\n };\n\n PathNode.prototype.mapStroke = function mapStroke (stroke) {\n var attrs = [];\n\n if (stroke && !isTransparent(stroke.color)) {\n attrs.push([ \"stroke\", stroke.color ]);\n attrs.push([ \"stroke-width\", stroke.width ]);\n attrs.push([ \"stroke-linecap\", this.renderLinecap(stroke) ]);\n attrs.push([ \"stroke-linejoin\", stroke.lineJoin ]);\n\n if (defined(stroke.opacity)) {\n attrs.push([ \"stroke-opacity\", stroke.opacity ]);\n }\n\n if (defined(stroke.dashType)) {\n attrs.push([ \"stroke-dasharray\", this.renderDashType(stroke) ]);\n }\n } else {\n attrs.push([ \"stroke\", NONE ]);\n }\n\n return attrs;\n };\n\n PathNode.prototype.renderStroke = function renderStroke () {\n return renderAllAttr(\n this.mapStroke(this.srcElement.options.stroke)\n );\n };\n\n PathNode.prototype.renderDashType = function renderDashType (stroke) {\n var dashType = stroke.dashType;\n var width = stroke.width; if (width === void 0) { width = 1; }\n\n if (dashType && dashType !== SOLID) {\n var dashArray = DASH_ARRAYS[dashType.toLowerCase()];\n var result = [];\n\n for (var i = 0; i < dashArray.length; i++) {\n result.push(dashArray[i] * width);\n }\n\n return result.join(\" \");\n }\n };\n\n PathNode.prototype.renderLinecap = function renderLinecap (stroke) {\n var dashType = stroke.dashType;\n var lineCap = stroke.lineCap;\n\n return (dashType && dashType !== \"solid\") ? BUTT : lineCap;\n };\n\n PathNode.prototype.mapFill = function mapFill (fill) {\n var attrs = [];\n if (!(fill && fill.nodeType === \"Gradient\")) {\n if (fill && !isTransparent(fill.color)) {\n attrs.push([ \"fill\", fill.color ]);\n\n if (defined(fill.opacity)) {\n attrs.push([ \"fill-opacity\", fill.opacity ]);\n }\n } else {\n attrs.push([ \"fill\", NONE ]);\n }\n }\n\n return attrs;\n };\n\n PathNode.prototype.renderFill = function renderFill () {\n return renderAllAttr(\n this.mapFill(this.srcElement.options.fill)\n );\n };\n\n PathNode.prototype.template = function template () {\n return \"\";\n };\n\n return PathNode;\n }(Node));\n\n var ArcNode = (function (PathNode$$1) {\n function ArcNode () {\n PathNode$$1.apply(this, arguments);\n }\n\n extendStatic(ArcNode, PathNode$$1);\n ArcNode.prototype = Object.create( PathNode$$1 && PathNode$$1.prototype );\n ArcNode.prototype.constructor = ArcNode;\n ArcNode.fn = ArcNode.prototype;\n ArcNode.fn.init = ArcNode.fn.constructor;\n\n ArcNode.prototype.renderData = function renderData () {\n return this.srcElement.toPath().toString(POINT_DIGITS);\n };\n\n return ArcNode;\n }(PathNode));\n\n var CircleNode = (function (PathNode$$1) {\n function CircleNode () {\n PathNode$$1.apply(this, arguments);\n }\n\n extendStatic(CircleNode, PathNode$$1);\n CircleNode.prototype = Object.create( PathNode$$1 && PathNode$$1.prototype );\n CircleNode.prototype.constructor = CircleNode;\n CircleNode.fn = CircleNode.prototype;\n CircleNode.fn.init = CircleNode.fn.constructor;\n\n CircleNode.prototype.geometryChange = function geometryChange () {\n var center = this.center();\n this.attr(\"cx\", center.x);\n this.attr(\"cy\", center.y);\n this.attr(\"r\", this.radius());\n this.invalidate();\n };\n\n CircleNode.prototype.center = function center () {\n return this.srcElement.geometry().center;\n };\n\n CircleNode.prototype.radius = function radius () {\n return this.srcElement.geometry().radius;\n };\n\n CircleNode.prototype.template = function template () {\n return \"\";\n };\n\n return CircleNode;\n }(PathNode));\n\n var GroupNode = (function (Node$$1) {\n function GroupNode () {\n Node$$1.apply(this, arguments);\n }\n\n extendStatic(GroupNode, Node$$1);\n GroupNode.prototype = Object.create( Node$$1 && Node$$1.prototype );\n GroupNode.prototype.constructor = GroupNode;\n GroupNode.fn = GroupNode.prototype;\n GroupNode.fn.init = GroupNode.fn.constructor;\n\n GroupNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n GroupNode.prototype.optionsChange = function optionsChange (e) {\n var field = e.field;\n var value = e.value;\n\n if (field === \"transform\") {\n this.transformChange(value);\n }\n\n this.accessibilityOptionsChange(e);\n\n Node$$1.prototype.optionsChange.call(this, e);\n };\n\n return GroupNode;\n }(Node));\n\n var ImageNode = (function (PathNode$$1) {\n function ImageNode () {\n PathNode$$1.apply(this, arguments);\n }\n\n extendStatic(ImageNode, PathNode$$1);\n ImageNode.prototype = Object.create( PathNode$$1 && PathNode$$1.prototype );\n ImageNode.prototype.constructor = ImageNode;\n ImageNode.fn = ImageNode.prototype;\n ImageNode.fn.init = ImageNode.fn.constructor;\n\n ImageNode.prototype.geometryChange = function geometryChange () {\n this.allAttr(this.mapPosition());\n this.invalidate();\n };\n\n ImageNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"src\") {\n this.allAttr(this.mapSource());\n }\n\n PathNode$$1.prototype.optionsChange.call(this, e);\n };\n\n ImageNode.prototype.mapPosition = function mapPosition () {\n var rect = this.srcElement.rect();\n var tl = rect.topLeft();\n\n return [\n [ \"x\", tl.x ],\n [ \"y\", tl.y ],\n [ \"width\", rect.width() + \"px\" ],\n [ \"height\", rect.height() + \"px\" ]\n ];\n };\n\n ImageNode.prototype.renderPosition = function renderPosition () {\n return renderAllAttr(this.mapPosition());\n };\n\n ImageNode.prototype.mapSource = function mapSource (encode) {\n var src = this.srcElement.src();\n\n if (encode) {\n src = htmlEncode(src);\n }\n\n return [ [ \"xlink:href\", src ] ];\n };\n\n ImageNode.prototype.renderSource = function renderSource () {\n return renderAllAttr(this.mapSource(true));\n };\n\n ImageNode.prototype.template = function template () {\n return \"\" +\n \"\";\n };\n\n return ImageNode;\n }(PathNode));\n\n var MultiPathNode = (function (PathNode$$1) {\n function MultiPathNode () {\n PathNode$$1.apply(this, arguments);\n }\n\n extendStatic(MultiPathNode, PathNode$$1);\n MultiPathNode.prototype = Object.create( PathNode$$1 && PathNode$$1.prototype );\n MultiPathNode.prototype.constructor = MultiPathNode;\n MultiPathNode.fn = MultiPathNode.prototype;\n MultiPathNode.fn.init = MultiPathNode.fn.constructor;\n\n MultiPathNode.prototype.renderData = function renderData () {\n return this.srcElement.toString(POINT_DIGITS) || 'undefined';\n };\n\n return MultiPathNode;\n }(PathNode));\n\n var RectNode = (function (PathNode$$1) {\n function RectNode () {\n PathNode$$1.apply(this, arguments);\n }\n\n extendStatic(RectNode, PathNode$$1);\n RectNode.prototype = Object.create( PathNode$$1 && PathNode$$1.prototype );\n RectNode.prototype.constructor = RectNode;\n RectNode.fn = RectNode.prototype;\n RectNode.fn.init = RectNode.fn.constructor;\n\n RectNode.prototype.geometryChange = function geometryChange () {\n var geometry = this.srcElement.geometry();\n this.attr(\"x\", geometry.origin.x);\n this.attr(\"y\", geometry.origin.y);\n this.attr(\"width\", geometry.size.width);\n this.attr(\"height\", geometry.size.height);\n this.attr(\"rx\", geometry.cornerRadius[0]);\n this.attr(\"ry\", geometry.cornerRadius[1]);\n this.invalidate();\n };\n\n RectNode.prototype.size = function size () {\n return this.srcElement.geometry().size;\n };\n\n RectNode.prototype.origin = function origin () {\n return this.srcElement.geometry().origin;\n };\n\n RectNode.prototype.rx = function rx () {\n return this.srcElement.geometry().cornerRadius[0];\n };\n\n RectNode.prototype.ry = function ry () {\n return this.srcElement.geometry().cornerRadius[1];\n };\n\n RectNode.prototype.template = function template () {\n return \"\";\n };\n\n return RectNode;\n }(PathNode));\n\n var ENTITY_REGEX = /&(?:[a-zA-Z]+|#\\d+);/g;\n\n function decodeEntities(text) {\n if (!text || typeof text !== \"string\" || !ENTITY_REGEX.test(text)) {\n return text;\n }\n\n var element = decodeEntities._element;\n ENTITY_REGEX.lastIndex = 0;\n\n return text.replace(ENTITY_REGEX, function (match) {\n element.innerHTML = match;\n\n return element.textContent || element.innerText;\n });\n }\n\n if (typeof document !== \"undefined\") {\n decodeEntities._element = document.createElement(\"span\");\n }\n\n var TextNode = (function (PathNode$$1) {\n function TextNode () {\n PathNode$$1.apply(this, arguments);\n }\n\n extendStatic(TextNode, PathNode$$1);\n TextNode.prototype = Object.create( PathNode$$1 && PathNode$$1.prototype );\n TextNode.prototype.constructor = TextNode;\n TextNode.fn = TextNode.prototype;\n TextNode.fn.init = TextNode.fn.constructor;\n\n TextNode.prototype.geometryChange = function geometryChange () {\n var pos = this.pos();\n this.attr(\"x\", pos.x);\n this.attr(\"y\", pos.y);\n this.invalidate();\n };\n\n TextNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"font\") {\n this.attr(\"style\", renderStyle(this.mapStyle()));\n this.geometryChange();\n } else if (e.field === \"content\") {\n PathNode$$1.prototype.content.call(this, this.srcElement.content());\n }\n\n PathNode$$1.prototype.optionsChange.call(this, e);\n };\n\n TextNode.prototype.mapStyle = function mapStyle (encode) {\n var style = PathNode$$1.prototype.mapStyle.call(this, encode);\n var font = this.srcElement.options.font;\n\n if (encode) {\n font = htmlEncode(font);\n }\n\n style.push([ \"font\", font ], [ \"white-space\", \"pre\" ]);\n\n return style;\n };\n\n TextNode.prototype.pos = function pos () {\n var pos = this.srcElement.position();\n var size = this.srcElement.measure();\n return pos.clone().setY(pos.y + size.baseline);\n };\n\n TextNode.prototype.renderContent = function renderContent () {\n var content = this.srcElement.content();\n content = decodeEntities(content);\n content = htmlEncode(content);\n\n return kendoUtil.normalizeText(content);\n };\n\n TextNode.prototype.renderTextAnchor = function renderTextAnchor () {\n var anchor;\n\n if ((this.options || {}).rtl && !(supportBrowser.msie || supportBrowser.edge)) {\n anchor = 'end';\n }\n\n return renderAttr(\"text-anchor\", anchor);\n };\n\n TextNode.prototype.renderPaintOrder = function renderPaintOrder () {\n var paintOrder = this.srcElement.options.paintOrder;\n return paintOrder ? renderAttr(\"paint-order\", paintOrder) : \"\";\n };\n\n TextNode.prototype.template = function template () {\n return \"\" + (this.renderContent()) + \"\";\n };\n\n return TextNode;\n }(PathNode));\n\n NODE_MAP.Arc = ArcNode;\n NODE_MAP.Circle = CircleNode;\n NODE_MAP.Group = GroupNode;\n NODE_MAP.Image = ImageNode;\n NODE_MAP.MultiPath = MultiPathNode;\n NODE_MAP.Path = PathNode;\n NODE_MAP.Rect = RectNode;\n NODE_MAP.Text = TextNode;\n\n var RTL = 'rtl';\n\n function alignToScreen(element) {\n var ctm;\n\n try {\n ctm = element.getScreenCTM ? element.getScreenCTM() : null;\n } catch (e) { } // eslint-disable-line no-empty\n\n if (ctm) {\n var left = - ctm.e % 1;\n var top = - ctm.f % 1;\n var style = element.style;\n\n if (left !== 0 || top !== 0) {\n style.left = left + \"px\";\n style.top = top + \"px\";\n }\n }\n }\n\n var Surface$3 = (function (BaseSurface) {\n function Surface(element, options) {\n BaseSurface.call(this, element, options);\n\n this._root = new RootNode($.extend({\n rtl: elementStyles(element, 'direction').direction === RTL\n }, this.options));\n\n renderSVG$1(this.element, this._template(''));\n\n this._rootElement = this.element.firstElementChild;\n this._rootElement.style.width = '100%';\n this._rootElement.style.height = '100%';\n this._rootElement.style.overflow = 'hidden';\n\n alignToScreen(this._rootElement);\n\n this._root.attachTo(this._rootElement);\n\n bindEvents(this.element, {\n click: this._click,\n mouseover: this._mouseenter,\n mouseout: this._mouseleave,\n mousemove: this._mousemove\n });\n\n this.resize();\n }\n\n extendStatic(Surface, BaseSurface);\n Surface.prototype = Object.create( BaseSurface && BaseSurface.prototype );\n Surface.prototype.constructor = Surface;\n Surface.fn = Surface.prototype;\n Surface.fn.init = Surface.fn.constructor;\n\n var prototypeAccessors = { type: {} };\n\n prototypeAccessors.type.get = function () {\n return \"svg\";\n };\n\n Surface.prototype.destroy = function destroy () {\n if (this._root) {\n this._root.destroy();\n this._root = null;\n this._rootElement = null;\n unbindEvents(this.element, {\n click: this._click,\n mouseover: this._mouseenter,\n mouseout: this._mouseleave,\n mousemove: this._mousemove\n });\n }\n\n BaseSurface.prototype.destroy.call(this);\n };\n\n Surface.prototype.translate = function translate (offset) {\n var viewBox = (Math.round(offset.x)) + \" \" + (Math.round(offset.y)) + \" \" + (this._size.width) + \" \" + (this._size.height);\n\n this._offset = offset;\n this._rootElement.setAttribute(\"viewBox\", viewBox);\n };\n\n Surface.prototype.draw = function draw (element) {\n BaseSurface.prototype.draw.call(this, element);\n this._root.load([ element ]);\n };\n\n Surface.prototype.clear = function clear () {\n BaseSurface.prototype.clear.call(this);\n this._root.clear();\n };\n\n Surface.prototype.svg = function svg () {\n return \"\" + this._template();\n };\n\n Surface.prototype.exportVisual = function exportVisual () {\n var ref = this;\n var visual = ref._visual;\n var offset = ref._offset;\n\n if (offset) {\n var wrap = new Group();\n wrap.children.push(visual);\n\n wrap.transform(\n transform$1().translate(-offset.x, -offset.y)\n );\n\n visual = wrap;\n }\n\n return visual;\n };\n\n Surface.prototype._resize = function _resize () {\n if (this._offset) {\n this.translate(this._offset);\n }\n };\n\n Surface.prototype._template = function _template (svgStyles) {\n var styles = typeof svgStyles === 'string' ? svgStyles :\n \"style='width: 100%; height: 100%; overflow: hidden;' \";\n return (\"\" + (this._root.render()) + \"\");\n };\n\n Object.defineProperties( Surface.prototype, prototypeAccessors );\n\n return Surface;\n }(Surface$2));\n\n var NODE_MAP$2 = {};\n\n var Node$2 = (function (BaseNode$$1) {\n function Node(srcElement) {\n BaseNode$$1.call(this, srcElement);\n if (srcElement) {\n this.initClip();\n }\n }\n\n extendStatic(Node, BaseNode$$1);\n Node.prototype = Object.create( BaseNode$$1 && BaseNode$$1.prototype );\n Node.prototype.constructor = Node;\n Node.fn = Node.prototype;\n Node.fn.init = Node.fn.constructor;\n\n Node.prototype.initClip = function initClip () {\n var clip = this.srcElement.clip();\n if (clip) {\n this.clip = clip;\n clip.addObserver(this);\n }\n };\n\n Node.prototype.clear = function clear () {\n if (this.srcElement) {\n this.srcElement.removeObserver(this);\n }\n\n this.clearClip();\n\n BaseNode$$1.prototype.clear.call(this);\n };\n\n Node.prototype.clearClip = function clearClip () {\n if (this.clip) {\n this.clip.removeObserver(this);\n delete this.clip;\n }\n };\n\n Node.prototype.setClip = function setClip (ctx) {\n if (this.clip) {\n ctx.beginPath();\n\n var clipNode = new NODE_MAP$2[this.clip.nodeType](this.clip);\n clipNode.renderPoints(ctx, this.clip);\n\n ctx.clip(\"evenodd\");\n }\n };\n\n Node.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"clip\") {\n this.clearClip();\n this.initClip();\n }\n\n BaseNode$$1.prototype.optionsChange.call(this, e);\n };\n\n Node.prototype.setTransform = function setTransform (ctx) {\n if (this.srcElement) {\n var transform = this.srcElement.transform();\n if (transform) {\n ctx.transform.apply(ctx, transform.matrix().toArray(6));\n }\n }\n };\n\n Node.prototype.loadElements = function loadElements (elements, pos, cors) {\n var this$1$1 = this;\n\n for (var i = 0; i < elements.length; i++) {\n var srcElement = elements[i];\n var children = srcElement.children;\n\n var childNode = new NODE_MAP$2[srcElement.nodeType](srcElement, cors);\n\n if (children && children.length > 0) {\n childNode.load(children, pos, cors);\n }\n\n if (defined(pos)) {\n this$1$1.insertAt(childNode, pos);\n } else {\n this$1$1.append(childNode);\n }\n }\n };\n\n Node.prototype.load = function load (elements, pos, cors) {\n this.loadElements(elements, pos, cors);\n\n this.invalidate();\n };\n\n Node.prototype.setOpacity = function setOpacity (ctx) {\n if (this.srcElement) {\n var opacity = this.srcElement.opacity();\n if (defined(opacity)) {\n this.globalAlpha(ctx, opacity);\n }\n }\n };\n\n Node.prototype.globalAlpha = function globalAlpha (ctx, value) {\n var opactity = value;\n if (opactity && ctx.globalAlpha) {\n opactity *= ctx.globalAlpha;\n }\n ctx.globalAlpha = opactity;\n };\n\n Node.prototype.visible = function visible () {\n var src = this.srcElement;\n return !src || (src && src.options.visible !== false);\n };\n\n return Node;\n }(BaseNode));\n\n var GroupNode$2 = (function (superclass) {\n function GroupNode () {\n superclass.apply(this, arguments);\n }\n\n extendStatic(GroupNode, superclass);\n GroupNode.prototype = Object.create( superclass && superclass.prototype );\n GroupNode.prototype.constructor = GroupNode;\n GroupNode.fn = GroupNode.prototype;\n GroupNode.fn.init = GroupNode.fn.constructor;\n\n GroupNode.prototype.renderTo = function renderTo (ctx) {\n if (!this.visible()) {\n return;\n }\n\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n var childNodes = this.childNodes;\n for (var i = 0; i < childNodes.length; i++) {\n var child = childNodes[i];\n if (child.visible()) {\n child.renderTo(ctx);\n }\n }\n\n ctx.restore();\n };\n\n return GroupNode;\n }(traversable(Node$2, \"childNodes\")));\n\n var FRAME_DELAY = 1000 / 60;\n\n var RootNode$2 = (function (superclass) {\n function RootNode(canvas, size) {\n superclass.call(this);\n\n this.canvas = canvas;\n this.size = size;\n this.ctx = canvas.getContext(\"2d\");\n\n var invalidateHandler = this._invalidate.bind(this);\n this.invalidate = kendo.throttle(function () {\n kendo.animationFrame(invalidateHandler);\n }, FRAME_DELAY);\n }\n\n extendStatic(RootNode, superclass);\n RootNode.prototype = Object.create( superclass && superclass.prototype );\n RootNode.prototype.constructor = RootNode;\n RootNode.fn = RootNode.prototype;\n RootNode.fn.init = RootNode.fn.constructor;\n\n RootNode.prototype.destroy = function destroy () {\n superclass.prototype.destroy.call(this);\n this.canvas = null;\n this.ctx = null;\n };\n\n RootNode.prototype.load = function load (elements, pos, cors) {\n this.loadElements(elements, pos, cors);\n this._invalidate();\n };\n\n RootNode.prototype._rescale = function _rescale (scale) {\n var ref = this;\n var canvas = ref.canvas;\n var size = ref.size;\n canvas.width = size.width * scale;\n canvas.height = size.height * scale;\n this.ctx.scale(scale, scale);\n };\n\n RootNode.prototype._devicePixelRatio = function _devicePixelRatio () {\n if (typeof window.devicePixelRatio === 'number') {\n return window.devicePixelRatio;\n }\n\n return 1;\n };\n\n RootNode.prototype._invalidate = function _invalidate (options) {\n if (!this.ctx) {\n return;\n }\n\n var fixedScale = options && options.fixedScale;\n var scale = fixedScale ? 1 : this._devicePixelRatio();\n this._rescale(scale);\n\n this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n this.renderTo(this.ctx);\n };\n\n return RootNode;\n }(traversable(GroupNode$2, \"childNodes\")));\n\n var QuadRoot = (function (Class$$1) {\n function QuadRoot() {\n Class$$1.call(this);\n\n this.shapes = [];\n }\n\n extendStatic(QuadRoot, Class$$1);\n QuadRoot.prototype = Object.create( Class$$1 && Class$$1.prototype );\n QuadRoot.prototype.constructor = QuadRoot;\n QuadRoot.fn = QuadRoot.prototype;\n QuadRoot.fn.init = QuadRoot.fn.constructor;\n\n QuadRoot.prototype._add = function _add (shape, bbox) {\n this.shapes.push({\n bbox: bbox,\n shape: shape\n });\n shape._quadNode = this;\n };\n\n QuadRoot.prototype.pointShapes = function pointShapes (point) {\n var shapes = this.shapes;\n var length = shapes.length;\n var result = [];\n for (var idx = 0; idx < length; idx++) {\n if (shapes[idx].bbox.containsPoint(point)) {\n result.push(shapes[idx].shape);\n }\n }\n return result;\n };\n\n QuadRoot.prototype.insert = function insert (shape, bbox) {\n this._add(shape, bbox);\n };\n\n QuadRoot.prototype.remove = function remove (shape) {\n var shapes = this.shapes;\n var length = shapes.length;\n\n for (var idx = 0; idx < length; idx++) {\n if (shapes[idx].shape === shape) {\n shapes.splice(idx, 1);\n break;\n }\n }\n };\n\n return QuadRoot;\n }(Class));\n\n var QuadNode = (function (QuadRoot$$1) {\n function QuadNode(rect) {\n QuadRoot$$1.call(this);\n this.children = [];\n this.rect = rect;\n }\n\n extendStatic(QuadNode, QuadRoot$$1);\n QuadNode.prototype = Object.create( QuadRoot$$1 && QuadRoot$$1.prototype );\n QuadNode.prototype.constructor = QuadNode;\n QuadNode.fn = QuadNode.prototype;\n QuadNode.fn.init = QuadNode.fn.constructor;\n\n QuadNode.prototype.inBounds = function inBounds (rect) {\n var nodeRect = this.rect;\n var nodeBottomRight = nodeRect.bottomRight();\n var bottomRight = rect.bottomRight();\n var inBounds = nodeRect.origin.x <= rect.origin.x && nodeRect.origin.y <= rect.origin.y && bottomRight.x <= nodeBottomRight.x &&\n bottomRight.y <= nodeBottomRight.y;\n return inBounds;\n };\n\n QuadNode.prototype.pointShapes = function pointShapes (point) {\n var children = this.children;\n var length = children.length;\n var result = QuadRoot$$1.prototype.pointShapes.call(this, point);\n for (var idx = 0; idx < length; idx++) {\n append$1$1(result, children[idx].pointShapes(point));\n }\n return result;\n };\n\n QuadNode.prototype.insert = function insert (shape, bbox) {\n var children = this.children;\n var inserted = false;\n\n if (this.inBounds(bbox)) {\n if (this.shapes.length < 4) {\n this._add(shape, bbox);\n } else {\n if (!children.length) {\n this._initChildren();\n }\n\n for (var idx = 0; idx < children.length; idx++) {\n if (children[idx].insert(shape, bbox)) {\n inserted = true;\n break;\n }\n }\n\n if (!inserted) {\n this._add(shape, bbox);\n }\n }\n inserted = true;\n }\n\n return inserted;\n };\n\n QuadNode.prototype._initChildren = function _initChildren () {\n var ref = this;\n var rect = ref.rect;\n var children = ref.children;\n var center = rect.center();\n var halfWidth = rect.width() / 2;\n var halfHeight = rect.height() / 2;\n\n children.push(\n new QuadNode(new Rect([ rect.origin.x, rect.origin.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ center.x, rect.origin.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ rect.origin.x, center.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ center.x, center.y ], [ halfWidth, halfHeight ]))\n );\n };\n\n return QuadNode;\n }(QuadRoot));\n\n var ROOT_SIZE = 3000;\n var LEVEL_STEP = 10000;\n var MAX_LEVEL = 75;\n\n var ShapesQuadTree = (function (Class$$1) {\n function ShapesQuadTree() {\n Class$$1.call(this);\n\n this.initRoots();\n }\n\n extendStatic(ShapesQuadTree, Class$$1);\n ShapesQuadTree.prototype = Object.create( Class$$1 && Class$$1.prototype );\n ShapesQuadTree.prototype.constructor = ShapesQuadTree;\n ShapesQuadTree.fn = ShapesQuadTree.prototype;\n ShapesQuadTree.fn.init = ShapesQuadTree.fn.constructor;\n\n ShapesQuadTree.prototype.initRoots = function initRoots () {\n this.rootMap = {};\n this.root = new QuadRoot();\n this.rootElements = [];\n };\n\n ShapesQuadTree.prototype.clear = function clear () {\n var this$1$1 = this;\n\n var rootElements = this.rootElements;\n for (var idx = 0; idx < rootElements.length; idx++) {\n this$1$1.remove(rootElements[idx]);\n }\n this.initRoots();\n };\n\n ShapesQuadTree.prototype.pointShape = function pointShape (point) {\n var sectorRoot = ( this.rootMap[ Math.floor( point.x / ROOT_SIZE ) ] || {} )[ Math.floor( point.y / ROOT_SIZE ) ];\n var result = this.root.pointShapes(point);\n\n if (sectorRoot) {\n result = result.concat(sectorRoot.pointShapes(point));\n }\n\n this.assignZindex(result);\n\n result.sort(zIndexComparer);\n for (var idx = 0; idx < result.length; idx++) {\n if (result[idx].containsPoint(point)) {\n return result[idx];\n }\n }\n };\n\n ShapesQuadTree.prototype.assignZindex = function assignZindex (elements) {\n var this$1$1 = this;\n\n for (var idx = 0; idx < elements.length; idx++) {\n var element = elements[idx];\n var zIndex = 0;\n var levelWeight = Math.pow(LEVEL_STEP, MAX_LEVEL);\n var parents = [];\n\n while (element) {\n parents.push(element);\n element = element.parent;\n }\n\n while (parents.length) {\n element = parents.pop();\n zIndex += ((element.parent ? element.parent.children : this$1$1.rootElements).indexOf(element) + 1) * levelWeight;\n levelWeight /= LEVEL_STEP;\n }\n\n elements[idx]._zIndex = zIndex;\n }\n };\n\n ShapesQuadTree.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"transform\" || e.field === \"stroke.width\") {\n this.bboxChange(e.element);\n }\n };\n\n ShapesQuadTree.prototype.geometryChange = function geometryChange (e) {\n this.bboxChange(e.element);\n };\n\n ShapesQuadTree.prototype.bboxChange = function bboxChange (element) {\n var this$1$1 = this;\n\n if (element.nodeType === \"Group\") {\n for (var idx = 0; idx < element.children.length; idx++) {\n this$1$1.bboxChange(element.children[idx]);\n }\n } else {\n if (element._quadNode) {\n element._quadNode.remove(element);\n }\n this._insertShape(element);\n }\n };\n\n ShapesQuadTree.prototype.add = function add (elements) {\n var elementsArray = Array.isArray(elements) ? elements.slice(0) : [ elements ];\n\n append$1$1(this.rootElements, elementsArray);\n this._insert(elementsArray);\n };\n\n ShapesQuadTree.prototype.childrenChange = function childrenChange (e) {\n var this$1$1 = this;\n\n if (e.action === \"remove\") {\n for (var idx = 0; idx < e.items.length; idx++) {\n this$1$1.remove(e.items[idx]);\n }\n } else {\n this._insert(Array.prototype.slice.call(e.items, 0));\n }\n };\n\n ShapesQuadTree.prototype._insert = function _insert (elements) {\n var this$1$1 = this;\n\n var element;\n\n while (elements.length > 0) {\n element = elements.pop();\n element.addObserver(this$1$1);\n if (element.nodeType === \"Group\") {\n append$1$1(elements, element.children);\n } else {\n this$1$1._insertShape(element);\n }\n }\n };\n\n ShapesQuadTree.prototype._insertShape = function _insertShape (shape) {\n var bbox = shape.bbox();\n if (bbox) {\n var sectors = this.getSectors(bbox);\n var x = sectors[0][0];\n var y = sectors[1][0];\n\n if (this.inRoot(sectors)) {\n this.root.insert(shape, bbox);\n } else {\n var rootMap = this.rootMap;\n if (!rootMap[x]) {\n rootMap[x] = {};\n }\n\n if (!rootMap[x][y]) {\n rootMap[x][y] = new QuadNode(\n new Rect([ x * ROOT_SIZE, y * ROOT_SIZE ], [ ROOT_SIZE, ROOT_SIZE ])\n );\n }\n\n rootMap[x][y].insert(shape, bbox);\n }\n }\n };\n\n ShapesQuadTree.prototype.remove = function remove (element) {\n var this$1$1 = this;\n\n element.removeObserver(this);\n\n if (element.nodeType === \"Group\") {\n var children = element.children;\n for (var idx = 0; idx < children.length; idx++) {\n this$1$1.remove(children[idx]);\n }\n } else if (element._quadNode) {\n element._quadNode.remove(element);\n delete element._quadNode;\n }\n };\n\n ShapesQuadTree.prototype.inRoot = function inRoot (sectors) {\n return sectors[0].length > 1 || sectors[1].length > 1;\n };\n\n ShapesQuadTree.prototype.getSectors = function getSectors (rect) {\n var bottomRight = rect.bottomRight();\n var bottomX = Math.floor(bottomRight.x / ROOT_SIZE);\n var bottomY = Math.floor(bottomRight.y / ROOT_SIZE);\n var sectors = [ [], [] ];\n for (var x = Math.floor(rect.origin.x / ROOT_SIZE); x <= bottomX; x++) {\n sectors[0].push(x);\n }\n for (var y = Math.floor(rect.origin.y / ROOT_SIZE); y <= bottomY; y++) {\n sectors[1].push(y);\n }\n return sectors;\n };\n\n return ShapesQuadTree;\n }(Class));\n\n function zIndexComparer(x1, x2) {\n if (x1._zIndex < x2._zIndex) {\n return 1;\n }\n if (x1._zIndex > x2._zIndex) {\n return -1;\n }\n\n return 0;\n }\n\n var SurfaceCursor = function SurfaceCursor(surface) {\n surface.bind(\"mouseenter\", this._mouseenter.bind(this));\n surface.bind(\"mouseleave\", this._mouseleave.bind(this));\n\n this.element = surface.element;\n };\n\n SurfaceCursor.prototype.clear = function clear () {\n this._resetCursor();\n };\n\n SurfaceCursor.prototype.destroy = function destroy () {\n this._resetCursor();\n delete this.element;\n };\n\n SurfaceCursor.prototype._mouseenter = function _mouseenter (e) {\n var cursor = this._shapeCursor(e);\n\n if (!cursor) {\n this._resetCursor();\n } else {\n if (!this._current) {\n this._defaultCursor = this._getCursor();\n }\n\n this._setCursor(cursor);\n }\n };\n\n SurfaceCursor.prototype._mouseleave = function _mouseleave () {\n this._resetCursor();\n };\n\n SurfaceCursor.prototype._shapeCursor = function _shapeCursor (e) {\n var shape = e.element;\n\n while (shape && !defined(shape.options.cursor)) {\n shape = shape.parent;\n }\n\n if (shape) {\n return shape.options.cursor;\n }\n };\n\n SurfaceCursor.prototype._getCursor = function _getCursor () {\n if (this.element) {\n return this.element.style.cursor;\n }\n };\n\n SurfaceCursor.prototype._setCursor = function _setCursor (cursor) {\n if (this.element) {\n this.element.style.cursor = cursor;\n this._current = cursor;\n }\n };\n\n SurfaceCursor.prototype._resetCursor = function _resetCursor () {\n if (this._current) {\n this._setCursor(this._defaultCursor || \"\");\n delete this._current;\n }\n };\n\n function renderPath(ctx, path) {\n var segments = path.segments;\n\n if (segments.length === 0) {\n return;\n }\n\n var segment = segments[0];\n var anchor = segment.anchor();\n ctx.moveTo(anchor.x, anchor.y);\n\n for (var i = 1; i < segments.length; i++) {\n segment = segments[i];\n anchor = segment.anchor();\n\n var prevSeg = segments[i - 1];\n var prevOut = prevSeg.controlOut();\n var controlIn = segment.controlIn();\n\n if (prevOut && controlIn) {\n ctx.bezierCurveTo(prevOut.x, prevOut.y,\n controlIn.x, controlIn.y,\n anchor.x, anchor.y);\n } else {\n ctx.lineTo(anchor.x, anchor.y);\n }\n }\n\n if (path.options.closed) {\n ctx.closePath();\n }\n }\n\n function addGradientStops(gradient, stops) {\n for (var idx = 0; idx < stops.length; idx++) {\n var stop = stops[idx];\n var color = kendo.parseColor(stop.color());\n\n color.a *= stop.opacity();\n\n gradient.addColorStop(stop.offset(), color.toCssRgba());\n }\n }\n\n var PathNode$2 = (function (Node) {\n function PathNode () {\n Node.apply(this, arguments);\n }\n\n extendStatic(PathNode, Node);\n PathNode.prototype = Object.create( Node && Node.prototype );\n PathNode.prototype.constructor = PathNode;\n PathNode.fn = PathNode.prototype;\n PathNode.fn.init = PathNode.fn.constructor;\n\n PathNode.prototype.renderTo = function renderTo (ctx) {\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n ctx.beginPath();\n\n this.renderPoints(ctx, this.srcElement);\n\n this.setLineDash(ctx);\n this.setLineCap(ctx);\n this.setLineJoin(ctx);\n\n this.setFill(ctx);\n this.setStroke(ctx);\n\n ctx.restore();\n };\n\n PathNode.prototype.setFill = function setFill (ctx) {\n var fill = this.srcElement.options.fill;\n var hasFill = false;\n\n if (fill) {\n if (fill.nodeType === \"Gradient\") {\n this.setGradientFill(ctx, fill);\n hasFill = true;\n } else if (!isTransparent(fill.color)) {\n ctx.fillStyle = fill.color;\n\n ctx.save();\n this.globalAlpha(ctx, fill.opacity);\n ctx.fill();\n ctx.restore();\n\n hasFill = true;\n }\n }\n\n return hasFill;\n };\n\n PathNode.prototype.setGradientFill = function setGradientFill (ctx, fill) {\n var bbox = this.srcElement.rawBBox();\n var gradient;\n\n if (fill instanceof LinearGradient) {\n var start = fill.start();\n var end = fill.end();\n gradient = ctx.createLinearGradient(start.x, start.y, end.x, end.y);\n } else if (fill instanceof RadialGradient) {\n var center = fill.center();\n gradient = ctx.createRadialGradient(center.x, center.y, 0, center.x, center.y, fill.radius());\n }\n\n addGradientStops(gradient, fill.stops);\n\n ctx.save();\n\n if (!fill.userSpace()) {\n ctx.transform(bbox.width(), 0, 0, bbox.height(), bbox.origin.x, bbox.origin.y);\n }\n ctx.fillStyle = gradient;\n ctx.fill();\n\n ctx.restore();\n };\n\n PathNode.prototype.setStroke = function setStroke (ctx) {\n var stroke = this.srcElement.options.stroke;\n if (stroke && !isTransparent(stroke.color) && stroke.width > 0) {\n ctx.strokeStyle = stroke.color;\n ctx.lineWidth = valueOrDefault(stroke.width, 1);\n ctx.lineJoin = valueOrDefault(stroke.lineJoin, ctx.lineJoin);\n\n ctx.save();\n this.globalAlpha(ctx, stroke.opacity);\n ctx.stroke();\n ctx.restore();\n\n return true;\n }\n };\n\n PathNode.prototype.dashType = function dashType () {\n var stroke = this.srcElement.options.stroke;\n if (stroke && stroke.dashType) {\n return stroke.dashType.toLowerCase();\n }\n };\n\n PathNode.prototype.setLineDash = function setLineDash (ctx) {\n var dashType = this.dashType();\n if (dashType && dashType !== SOLID) {\n var dashArray = DASH_ARRAYS[dashType];\n if (ctx.setLineDash) {\n ctx.setLineDash(dashArray);\n } else {\n ctx.mozDash = dashArray;\n ctx.webkitLineDash = dashArray;\n }\n }\n };\n\n PathNode.prototype.setLineCap = function setLineCap (ctx) {\n var dashType = this.dashType();\n var stroke = this.srcElement.options.stroke;\n if (dashType && dashType !== SOLID) {\n ctx.lineCap = BUTT;\n } else if (stroke && stroke.lineCap) {\n ctx.lineCap = stroke.lineCap;\n }\n };\n\n PathNode.prototype.setLineJoin = function setLineJoin (ctx) {\n var stroke = this.srcElement.options.stroke;\n if (stroke && stroke.lineJoin) {\n ctx.lineJoin = stroke.lineJoin;\n }\n };\n\n PathNode.prototype.renderPoints = function renderPoints (ctx, path) {\n renderPath(ctx, path);\n };\n\n return PathNode;\n }(Node$2));\n\n var ArcNode$2 = (function (PathNode) {\n function ArcNode () {\n PathNode.apply(this, arguments);\n }\n\n extendStatic(ArcNode, PathNode);\n ArcNode.prototype = Object.create( PathNode && PathNode.prototype );\n ArcNode.prototype.constructor = ArcNode;\n ArcNode.fn = ArcNode.prototype;\n ArcNode.fn.init = ArcNode.fn.constructor;\n\n ArcNode.prototype.renderPoints = function renderPoints (ctx) {\n var path = this.srcElement.toPath();\n renderPath(ctx, path);\n };\n\n return ArcNode;\n }(PathNode$2));\n\n var CircleNode$2 = (function (PathNode) {\n function CircleNode () {\n PathNode.apply(this, arguments);\n }\n\n extendStatic(CircleNode, PathNode);\n CircleNode.prototype = Object.create( PathNode && PathNode.prototype );\n CircleNode.prototype.constructor = CircleNode;\n CircleNode.fn = CircleNode.prototype;\n CircleNode.fn.init = CircleNode.fn.constructor;\n\n CircleNode.prototype.renderPoints = function renderPoints (ctx) {\n var ref = this.srcElement.geometry();\n var center = ref.center;\n var radius = ref.radius;\n\n ctx.arc(center.x, center.y, radius, 0, Math.PI * 2);\n };\n\n return CircleNode;\n }(PathNode$2));\n\n var ImageNode$2 = (function (PathNode) {\n function ImageNode(srcElement, cors) {\n PathNode.call(this, srcElement);\n\n this.onLoad = this.onLoad.bind(this);\n this.onError = this.onError.bind(this);\n\n this.loading = createPromise();\n\n var img = this.img = new Image();\n var src = srcElement.src();\n\n if (cors && !(/^data:/i.test(src))) {\n img.crossOrigin = cors;\n }\n\n if (src) {\n img.src = src;\n }\n\n if (img.complete) {\n this.onLoad();\n } else {\n img.onload = this.onLoad;\n img.onerror = this.onError;\n }\n }\n\n extendStatic(ImageNode, PathNode);\n ImageNode.prototype = Object.create( PathNode && PathNode.prototype );\n ImageNode.prototype.constructor = ImageNode;\n ImageNode.fn = ImageNode.prototype;\n ImageNode.fn.init = ImageNode.fn.constructor;\n\n ImageNode.prototype.renderTo = function renderTo (ctx) {\n if (this.loading.state() === \"resolved\") {\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n\n this.drawImage(ctx);\n\n ctx.restore();\n }\n };\n\n ImageNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"src\") {\n this.loading = createPromise();\n this.img.src = this.srcElement.src();\n } else {\n PathNode.prototype.optionsChange.call(this, e);\n }\n };\n\n ImageNode.prototype.onLoad = function onLoad () {\n this.loading.resolve();\n this.invalidate();\n };\n\n ImageNode.prototype.onError = function onError () {\n this.loading.reject(new Error(\n \"Unable to load image '\" + this.img.src +\n \"'. Check for connectivity and verify CORS headers.\"\n ));\n };\n\n ImageNode.prototype.drawImage = function drawImage (ctx) {\n var rect = this.srcElement.rect();\n var topLeft = rect.topLeft();\n\n ctx.drawImage(\n this.img, topLeft.x, topLeft.y, rect.width(), rect.height()\n );\n };\n\n return ImageNode;\n }(PathNode$2));\n\n var MultiPathNode$2 = (function (PathNode) {\n function MultiPathNode () {\n PathNode.apply(this, arguments);\n }\n\n extendStatic(MultiPathNode, PathNode);\n MultiPathNode.prototype = Object.create( PathNode && PathNode.prototype );\n MultiPathNode.prototype.constructor = MultiPathNode;\n MultiPathNode.fn = MultiPathNode.prototype;\n MultiPathNode.fn.init = MultiPathNode.fn.constructor;\n\n MultiPathNode.prototype.renderPoints = function renderPoints (ctx) {\n var paths = this.srcElement.paths;\n for (var i = 0; i < paths.length; i++) {\n renderPath(ctx, paths[i]);\n }\n };\n\n return MultiPathNode;\n }(PathNode$2));\n\n var RectNode$2 = (function (PathNode) {\n function RectNode () {\n PathNode.apply(this, arguments);\n }\n\n extendStatic(RectNode, PathNode);\n RectNode.prototype = Object.create( PathNode && PathNode.prototype );\n RectNode.prototype.constructor = RectNode;\n RectNode.fn = RectNode.prototype;\n RectNode.fn.init = RectNode.fn.constructor;\n\n RectNode.prototype.renderPoints = function renderPoints (ctx) {\n var geometry = this.srcElement.geometry();\n var ref = geometry.cornerRadius;\n var rx = ref[0];\n var ry = ref[1];\n\n if (rx === 0 && ry === 0) {\n var origin = geometry.origin;\n var size = geometry.size;\n ctx.rect(origin.x, origin.y, size.width, size.height);\n } else {\n PathNode.prototype.renderPoints.call(this, ctx, Path.fromRect(geometry));\n }\n };\n\n return RectNode;\n }(PathNode$2));\n\n var TextNode$2 = (function (PathNode) {\n function TextNode () {\n PathNode.apply(this, arguments);\n }\n\n extendStatic(TextNode, PathNode);\n TextNode.prototype = Object.create( PathNode && PathNode.prototype );\n TextNode.prototype.constructor = TextNode;\n TextNode.fn = TextNode.prototype;\n TextNode.fn.init = TextNode.fn.constructor;\n\n TextNode.prototype.renderTo = function renderTo (ctx) {\n var text = this.srcElement;\n var pos = text.position();\n var size = text.measure();\n\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n ctx.beginPath();\n\n ctx.font = text.options.font;\n ctx.textAlign = 'left';\n\n if (text.options.paintOrder === 'stroke') {\n this.stroke(ctx, text, pos, size);\n this.fill(ctx, text, pos, size);\n } else {\n this.fill(ctx, text, pos, size);\n this.stroke(ctx, text, pos, size);\n }\n\n ctx.restore();\n };\n\n TextNode.prototype.stroke = function stroke (ctx, text, pos, size) {\n if (this.setStroke(ctx)) {\n this.setLineDash(ctx);\n ctx.strokeText(text.content(), pos.x, pos.y + size.baseline);\n }\n };\n\n TextNode.prototype.fill = function fill (ctx, text, pos, size) {\n if (this.setFill(ctx)) {\n ctx.fillText(text.content(), pos.x, pos.y + size.baseline);\n }\n };\n\n return TextNode;\n }(PathNode$2));\n\n NODE_MAP$2.Arc = ArcNode$2;\n NODE_MAP$2.Circle = CircleNode$2;\n NODE_MAP$2.Group = GroupNode$2;\n NODE_MAP$2.Image = ImageNode$2;\n NODE_MAP$2.MultiPath = MultiPathNode$2;\n NODE_MAP$2.Path = PathNode$2;\n NODE_MAP$2.Rect = RectNode$2;\n NODE_MAP$2.Text = TextNode$2;\n\n var Surface$4 = (function (BaseSurface) {\n function Surface(element, options) {\n BaseSurface.call(this, element, options);\n\n this.element.innerHTML = this._template(this);\n\n var canvas = this.element.firstElementChild;\n canvas.style.width = '100%';\n canvas.style.height = '100%';\n\n var size = elementSize(element);\n\n canvas.width = size.width;\n canvas.height = size.height;\n\n this._rootElement = canvas;\n\n this._root = new RootNode$2(canvas, size);\n\n this._mouseTrackHandler = this._trackMouse.bind(this);\n\n bindEvents(this.element, {\n click: this._mouseTrackHandler,\n mousemove: this._mouseTrackHandler\n });\n }\n\n extendStatic(Surface, BaseSurface);\n Surface.prototype = Object.create( BaseSurface && BaseSurface.prototype );\n Surface.prototype.constructor = Surface;\n Surface.fn = Surface.prototype;\n Surface.fn.init = Surface.fn.constructor;\n\n var prototypeAccessors = { type: {} };\n\n prototypeAccessors.type.get = function () {\n return \"canvas\";\n };\n\n Surface.prototype.destroy = function destroy () {\n BaseSurface.prototype.destroy.call(this);\n\n if (this._root) {\n this._root.destroy();\n this._root = null;\n }\n\n if (this._searchTree) {\n this._searchTree.clear();\n delete this._searchTree;\n }\n\n if (this._cursor) {\n this._cursor.destroy();\n delete this._cursor;\n }\n\n unbindEvents(this.element, {\n click: this._mouseTrackHandler,\n mousemove: this._mouseTrackHandler\n });\n };\n\n Surface.prototype.draw = function draw (element) {\n BaseSurface.prototype.draw.call(this, element);\n this._root.load([ element ], undefined, this.options.cors);\n\n if (this._searchTree) {\n this._searchTree.add([ element ]);\n }\n };\n\n Surface.prototype.clear = function clear () {\n BaseSurface.prototype.clear.call(this);\n this._root.clear();\n\n if (this._searchTree) {\n this._searchTree.clear();\n }\n\n if (this._cursor) {\n this._cursor.clear();\n }\n };\n\n Surface.prototype.eventTarget = function eventTarget (e) {\n if (this._searchTree) {\n var point = this._surfacePoint(e);\n var shape = this._searchTree.pointShape(point);\n return shape;\n }\n };\n\n Surface.prototype.image = function image () {\n var ref = this;\n var root = ref._root;\n var rootElement = ref._rootElement;\n var loadingStates = [];\n\n root.traverse(function (childNode) {\n if (childNode.loading) {\n loadingStates.push(childNode.loading);\n }\n });\n\n var promise = createPromise();\n var resolveDataURL = function () {\n root._invalidate({ fixedScale: true });\n\n try {\n var data = rootElement.toDataURL();\n promise.resolve(data);\n } catch (e) {\n promise.reject(e);\n }\n };\n\n promiseAll(loadingStates).then(resolveDataURL, resolveDataURL);\n\n return promise;\n };\n\n Surface.prototype.suspendTracking = function suspendTracking () {\n BaseSurface.prototype.suspendTracking.call(this);\n if (this._searchTree) {\n this._searchTree.clear();\n delete this._searchTree;\n }\n };\n\n Surface.prototype.resumeTracking = function resumeTracking () {\n BaseSurface.prototype.resumeTracking.call(this);\n if (!this._searchTree) {\n this._searchTree = new ShapesQuadTree();\n\n var childNodes = this._root.childNodes;\n var rootElements = [];\n for (var idx = 0; idx < childNodes.length; idx++) {\n rootElements.push(childNodes[idx].srcElement);\n }\n this._searchTree.add(rootElements);\n }\n };\n\n Surface.prototype._resize = function _resize () {\n this._rootElement.width = this._size.width;\n this._rootElement.height = this._size.height;\n\n this._root.size = this._size;\n this._root.invalidate();\n };\n\n Surface.prototype._template = function _template () {\n return \"\";\n };\n\n Surface.prototype._enableTracking = function _enableTracking () {\n this._searchTree = new ShapesQuadTree();\n this._cursor = new SurfaceCursor(this);\n\n BaseSurface.prototype._enableTracking.call(this);\n };\n\n Surface.prototype._trackMouse = function _trackMouse (e) {\n if (this._suspendedTracking) {\n return;\n }\n\n var shape = this.eventTarget(e);\n\n if (e.type !== \"click\") {\n var currentShape = this._currentShape;\n if (currentShape && currentShape !== shape) {\n this.trigger(\"mouseleave\", {\n element: currentShape,\n originalEvent: e,\n type: \"mouseleave\"\n });\n }\n\n if (shape && currentShape !== shape) {\n this.trigger(\"mouseenter\", {\n element: shape,\n originalEvent: e,\n type: \"mouseenter\"\n });\n }\n\n this.trigger(\"mousemove\", {\n element: shape,\n originalEvent: e,\n type: \"mousemove\"\n });\n\n this._currentShape = shape;\n } else if (shape) {\n this.trigger(\"click\", {\n element: shape,\n originalEvent: e,\n type: \"click\"\n });\n }\n };\n\n Object.defineProperties( Surface.prototype, prototypeAccessors );\n\n return Surface;\n }(Surface$2));\n\n var instance$2;\n var support$1;\n\n var hasDocument = function () { return typeof document !== \"undefined\"; };\n\n var supportsCanvas = function () { return hasDocument() &&\n document.createElement(\"canvas\").getContext; };\n\n var supportsSVG = function () { return hasDocument() &&\n document.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#BasicStructure\", \"1.1\"); };\n\n var SurfaceFactory = (function (Class$$1) {\n function SurfaceFactory() {\n Class$$1.call(this);\n\n this._items = [ {\n name: \"svg\",\n type: Surface$3\n }, {\n name: \"canvas\",\n type: Surface$4\n } ];\n }\n\n extendStatic(SurfaceFactory, Class$$1);\n SurfaceFactory.prototype = Object.create( Class$$1 && Class$$1.prototype );\n SurfaceFactory.prototype.constructor = SurfaceFactory;\n SurfaceFactory.fn = SurfaceFactory.prototype;\n SurfaceFactory.fn.init = SurfaceFactory.fn.constructor;\n\n var staticAccessors = { support: {},current: {} };\n\n staticAccessors.support.get = function () {\n if (!support$1) {\n support$1 = {\n canvas: supportsCanvas(),\n svg: supportsSVG()\n };\n }\n\n return support$1;\n };\n\n staticAccessors.current.get = function () {\n if (!instance$2) {\n instance$2 = new SurfaceFactory();\n }\n\n return instance$2;\n };\n\n SurfaceFactory.prototype.create = function create (element, options) {\n var items = this._items;\n var match = items[0];\n\n if (options && options.type) {\n var preferred = options.type.toLowerCase();\n for (var i = 0; i < items.length; i++) {\n if (items[i].name === preferred) {\n match = items[i];\n break;\n }\n }\n }\n\n if (match) {\n return new match.type(element, options);\n }\n\n kendo.logToConsole(\n \"Warning: Unable to create Kendo UI Drawing Surface. Possible causes:\\n\" +\n \"- The browser does not support SVG and Canvas. User agent: \" + (navigator.userAgent));\n };\n\n Object.defineProperties( SurfaceFactory, staticAccessors );\n\n return SurfaceFactory;\n }(Class));\n\n var Surface = (function (BaseSurface) {\n function Surface () {\n BaseSurface.apply(this, arguments);\n }\n\n extendStatic(Surface, BaseSurface);\n Surface.prototype = Object.create( BaseSurface && BaseSurface.prototype );\n Surface.prototype.constructor = Surface;\n Surface.fn = Surface.prototype;\n Surface.fn.init = Surface.fn.constructor;\n\n var staticAccessors = { support: {} };\n\n staticAccessors.support.get = function () {\n return SurfaceFactory.support;\n };\n\n Surface.create = function create (element, options) {\n return SurfaceFactory.current.create(element, options);\n };\n\n Object.defineProperties( Surface, staticAccessors );\n\n return Surface;\n }(Surface$2));\n\n function exportGroup(group) {\n var root = new RootNode({\n skipBaseHref: true\n });\n var bbox = group.clippedBBox();\n var rootGroup = group;\n\n if (bbox) {\n var origin = bbox.getOrigin();\n var exportRoot = new Group();\n exportRoot.transform(transform$1().translate(-origin.x, -origin.y));\n exportRoot.children.push(group);\n rootGroup = exportRoot;\n }\n\n root.load([ rootGroup ]);\n\n var svg = \"\" + (root.render()) + \"\";\n\n root.destroy();\n\n return svg;\n }\n\n var svg$1 = {\n \tSurface: Surface$3,\n \tRootNode: RootNode,\n \tNode: Node,\n \tGroupNode: GroupNode,\n \tArcNode: ArcNode,\n \tCircleNode: CircleNode,\n \tRectNode: RectNode,\n \tImageNode: ImageNode,\n \tTextNode: TextNode,\n \tPathNode: PathNode,\n \tMultiPathNode: MultiPathNode,\n \tDefinitionNode: DefinitionNode,\n \tClipNode: ClipNode,\n \tGradientStopNode: GradientStopNode,\n \tLinearGradientNode: LinearGradientNode,\n \tRadialGradientNode: RadialGradientNode,\n \texportGroup: exportGroup\n };\n\n var canvas = {\n \tSurface: Surface$4,\n \tRootNode: RootNode$2,\n \tNode: Node$2,\n \tGroupNode: GroupNode$2,\n \tArcNode: ArcNode$2,\n \tCircleNode: CircleNode$2,\n \tRectNode: RectNode$2,\n \tImageNode: ImageNode$2,\n \tTextNode: TextNode$2,\n \tPathNode: PathNode$2,\n \tMultiPathNode: MultiPathNode$2\n };\n\n function exportImage(group, options) {\n var defaults = {\n width: \"800px\", height: \"600px\",\n cors: \"Anonymous\"\n };\n\n var exportRoot = group;\n var bbox = group.clippedBBox();\n\n if (bbox) {\n var origin = bbox.getOrigin();\n exportRoot = new Group();\n exportRoot.transform(transform$1().translate(-origin.x, -origin.y));\n exportRoot.children.push(group);\n\n var size = bbox.getSize();\n defaults.width = size.width + \"px\";\n defaults.height = size.height + \"px\";\n }\n\n var surfaceOptions = $.extend(defaults, options);\n\n var container = document.createElement(\"div\");\n var style = container.style;\n\n style.display = \"none\";\n style.width = surfaceOptions.width;\n style.height = surfaceOptions.height;\n document.body.appendChild(container);\n\n var surface = new Surface$4(container, surfaceOptions);\n surface.suspendTracking();\n surface.draw(exportRoot);\n\n var promise = surface.image();\n var destroy = function () {\n surface.destroy();\n document.body.removeChild(container);\n };\n promise.then(destroy, destroy);\n\n return promise;\n }\n\n function exportSVG(group, options) {\n var svg = exportGroup(group);\n\n if (!options || !options.raw) {\n svg = \"data:image/svg+xml;base64,\" + encodeBase64(svg);\n }\n\n return createPromise().resolve(svg);\n }\n\n /* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n /* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n /* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty, yoda */\n /* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n var browser = supportBrowser || {};\n /*\n\n XXX: to test:\n\n - cloneNodes function:\n - drawing document containing canvas with page breaking\n - drawing document with named radio -s (should not clear selection)\n - IE9/IE10 don't support el.dataset; do they copy user data?\n\n - repeating table headers/footers on page breaking\n\n - forceBreak, keepTogether\n\n - avoidLinks\n\n */\n\n /* -----[ local vars ]----- */\n\n function slice$1$1(thing) {\n return Array.prototype.slice.call(thing);\n }\n\n var KENDO_PSEUDO_ELEMENT = \"KENDO-PSEUDO-ELEMENT\";\n var KENDO_BULLET_TYPE = 'data-kendo-bullet-type';\n\n var IMAGE_CACHE = {};\n\n var nodeInfo = {};\n nodeInfo._root = nodeInfo;\n\n /* -----[ Custom Text node to speed up rendering in kendo.pdf ]----- */\n\n var inBrowser = typeof window !== 'undefined';\n var microsoft = inBrowser ? browser.msie || browser.edge : false;\n\n var TextRect = (function (Text$$1) {\n function TextRect(str, rect, options) {\n Text$$1.call(this, str, rect.getOrigin(), options);\n this._pdfRect = rect;\n }\n\n extendStatic(TextRect, Text$$1);\n TextRect.prototype = Object.create( Text$$1 && Text$$1.prototype );\n TextRect.prototype.constructor = TextRect;\n TextRect.fn = TextRect.prototype;\n TextRect.fn.init = TextRect.fn.constructor;\n TextRect.prototype.rect = function rect () {\n // this is the crux of it: we can avoid a call to\n // measure(), which is what the base class does, since we\n // already know the rect. measure() is s-l-o-w.\n return this._pdfRect;\n };\n TextRect.prototype.rawBBox = function rawBBox () {\n // also let's avoid creating a new rectangle.\n return this._pdfRect;\n };\n\n return TextRect;\n }(Text));\n\n function addClass(el, cls) {\n if (el.classList) {\n el.classList.add(cls);\n } else {\n el.className += \" \" + cls;\n }\n }\n\n function removeClass(el, cls) {\n if (el.classList) {\n el.classList.remove(cls);\n } else {\n el.className = el.className.split(/\\s+/).reduce(function(a, word){\n if (word != cls) {\n a.push(word);\n }\n return a;\n }, []).join(\" \");\n }\n }\n\n function setCSS(el, styles) {\n Object.keys(styles).forEach(function(key){\n el.style[key] = styles[key];\n });\n }\n\n var matches = typeof Element !== \"undefined\" && Element.prototype && (function(p){\n if (p.matches) {\n return function(el, selector) { return el.matches(selector); };\n }\n if (p.webkitMatchesSelector) {\n return function(el, selector) { return el.webkitMatchesSelector(selector); };\n }\n if (p.mozMatchesSelector) {\n return function(el, selector) { return el.mozMatchesSelector(selector); };\n }\n if (p.msMatchesSelector) {\n return function(el, selector) { return el.msMatchesSelector(selector); };\n }\n return function(s) {\n \treturn [].indexOf.call(document.querySelectorAll(s), this) !== -1;\n };\n })(Element.prototype);\n\n function closest(el, selector) {\n if (el.closest) {\n return el.closest(selector);\n }\n // IE: stringifying rather than simply comparing with `document`,\n // which is not iframe-proof and fails in editor export —\n // https://github.com/telerik/kendo/issues/6721\n while (el && !/^\\[object (?:HTML)?Document\\]$/.test(String(el))) {\n if (el.nodeType == 1 /* Element */ && matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n }\n\n // clone nodes ourselves, so that we redraw (DOM or\n // jQuery clone will not)\n var cloneNodes = (function($){\n if ($) {\n // if we have Kendo and jQuery, use this version as it will\n // maintain proper links between cloned element and Kendo\n // widgets (i.e. it clones jQuery data(), which isn't the same\n // as element's data attributes).\n // https://github.com/telerik/kendo-ui-core/issues/2750\n return function cloneNodes(el) {\n var clone = el.cloneNode(false);\n if (el.nodeType == 1 /* Element */) {\n var $el = $(el), $clone = $(clone), i;\n var data = $el.data();\n for (i in data) {\n $clone.data(i, data[i]);\n }\n if (/^canvas$/i.test(el.tagName)) {\n clone.getContext(\"2d\").drawImage(el, 0, 0);\n } else if (/^(?:input|select|textarea|option)$/i.test(el.tagName)) {\n // drop the name attributes so that we don't affect the selection of the\n // original nodes (i.e. checked status of radio buttons) when we insert our copy\n // into the DOM. https://github.com/telerik/kendo/issues/5409\n clone.removeAttribute(\"id\");\n clone.removeAttribute(\"name\");\n if (!/^textarea$/i.test(el.tagName)) {\n clone.value = el.value;\n }\n clone.checked = el.checked;\n clone.selected = el.selected;\n }\n for (i = el.firstChild; i; i = i.nextSibling) {\n clone.appendChild(cloneNodes(i));\n }\n }\n return clone;\n };\n } else {\n // the no-jQuery version\n return function cloneNodes(el) {\n var clone = (function dive(node){\n var clone = node.cloneNode(false);\n if (node._kendoExportVisual) {\n clone._kendoExportVisual = node._kendoExportVisual;\n }\n for (var i = node.firstChild; i; i = i.nextSibling) {\n clone.appendChild(dive(i));\n }\n return clone;\n })(el);\n\n // re-draw canvases - https://github.com/telerik/kendo/issues/4872\n var canvases = el.querySelectorAll(\"canvas\");\n if (canvases.length) {\n slice$1$1(clone.querySelectorAll(\"canvas\")).forEach(function (canvas$$1, i) {\n canvas$$1.getContext(\"2d\").drawImage(canvases[i], 0, 0);\n });\n }\n\n // remove \"name\" attributes from elements -\n // https://github.com/telerik/kendo/issues/5409\n var orig = el.querySelectorAll(\"input, select, textarea, option\");\n slice$1$1(clone.querySelectorAll(\"input, select, textarea, option\")).forEach(function (el, i) {\n el.removeAttribute(\"id\");\n el.removeAttribute(\"name\");\n if (!/^textarea$/i.test(el.tagName)) {\n el.value = orig[i].value;\n }\n el.checked = orig[i].checked;\n el.selected = orig[i].selected;\n });\n\n return clone;\n };\n }\n })(typeof window !== \"undefined\" && window.kendo && window.kendo.jQuery);\n\n function getXY(thing) {\n if (typeof thing == \"number\") {\n return { x: thing, y: thing };\n }\n if (Array.isArray(thing)) {\n return { x: thing[0], y: thing[1] };\n }\n return { x: thing.x, y: thing.y };\n }\n\n function drawDOM(element, options) {\n if (!options) {\n options = {};\n }\n var promise = createPromise();\n\n if (!element) {\n return promise.reject(\"No element to export\");\n }\n\n if (typeof window.getComputedStyle != \"function\") {\n throw new Error(\"window.getComputedStyle is missing. You are using an unsupported browser, or running in IE8 compatibility mode. Drawing HTML is supported in Chrome, Firefox, Safari and IE9+.\");\n }\n\n kendo.pdf.defineFont(getFontFaces(element.ownerDocument));\n\n var scale = getXY(options.scale || 1);\n\n function doOne(element) {\n var group = new Group();\n\n // translate to start of page\n var pos = element.getBoundingClientRect();\n setTransform$1(group, [\n scale.x,\n 0,\n 0,\n scale.y,\n (-pos.left * scale.x),\n (-pos.top * scale.y)\n ]);\n\n nodeInfo._clipbox = false;\n nodeInfo._matrix = Matrix.unit();\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n\n if (options.avoidLinks === true) {\n nodeInfo._avoidLinks = \"a\";\n } else {\n nodeInfo._avoidLinks = options.avoidLinks;\n }\n\n addClass(element, \"k-pdf-export\");\n renderElement(element, group);\n removeClass(element, \"k-pdf-export\");\n\n return group;\n }\n\n cacheImages([ element ], function(){\n var forceBreak = options && options.forcePageBreak;\n var hasPaperSize = options && options.paperSize && options.paperSize != \"auto\";\n var paperOptions = kendo.pdf.getPaperOptions(function(key, def){\n if (key == \"paperSize\") {\n // PDF.getPaperOptions croaks on \"auto\", just pass dummy A4 as we might\n // still be interested in margins.\n return hasPaperSize ? options[key] : \"A4\";\n }\n return key in options ? options[key] : def;\n });\n var pageWidth = hasPaperSize && paperOptions.paperSize[0];\n var pageHeight = hasPaperSize && paperOptions.paperSize[1];\n var margin = options.margin && paperOptions.margin;\n var hasMargin = Boolean(margin);\n if (forceBreak || pageHeight) {\n if (!margin) {\n margin = { left: 0, top: 0, right: 0, bottom: 0 };\n }\n\n // we want paper size and margin to be unaffected by\n // scaling in the output, so we have to reverse-scale\n // before our calculations begin.\n if (pageWidth) { pageWidth /= scale.x; }\n if (pageHeight) { pageHeight /= scale.y; }\n margin.left /= scale.x;\n margin.right /= scale.x;\n margin.top /= scale.y;\n margin.bottom /= scale.y;\n\n var group = new Group({\n pdf: {\n multiPage : true,\n paperSize : hasPaperSize ? paperOptions.paperSize : \"auto\",\n _ignoreMargin : hasMargin // HACK! see exportPDF in pdf/drawing.js\n }\n });\n handlePageBreaks(\n function(x) {\n if (options.progress) {\n var canceled = false, pageNum = 0;\n (function next(){\n if (pageNum < x.pages.length) {\n var page = doOne(x.pages[pageNum]);\n group.append(page);\n options.progress({\n page: page,\n pageNum: ++pageNum,\n totalPages: x.pages.length,\n cancel: function() {\n canceled = true;\n }\n });\n if (!canceled) {\n setTimeout(next);\n } else {\n // XXX: should we also fail() the deferred object?\n x.container.parentNode.removeChild(x.container);\n }\n } else {\n x.container.parentNode.removeChild(x.container);\n promise.resolve(group);\n }\n })();\n } else {\n x.pages.forEach(function(page){\n group.append(doOne(page));\n });\n x.container.parentNode.removeChild(x.container);\n promise.resolve(group);\n }\n },\n element,\n forceBreak,\n pageWidth ? pageWidth - margin.left - margin.right : null,\n pageHeight ? pageHeight - margin.top - margin.bottom : null,\n margin,\n options\n );\n } else {\n promise.resolve(doOne(element));\n }\n });\n\n function makeTemplate(template) {\n if (template != null) {\n if (typeof template == \"string\") {\n template = kendo.template(template.replace(/^\\s+|\\s+$/g, \"\"));\n }\n if (typeof template == \"function\") {\n return function(data) {\n var el = template(data);\n if (el && typeof el == \"string\") {\n var div = document.createElement(\"div\");\n div.innerHTML = el;\n el = div.firstElementChild;\n }\n return el;\n };\n }\n // assumed DOM element\n return function() {\n return template.cloneNode(true);\n };\n }\n }\n\n function handlePageBreaks(callback, element, forceBreak, pageWidth, pageHeight, margin, options) {\n var template = makeTemplate(options.template);\n var doc = element.ownerDocument;\n var pages = [];\n var copy = options._destructive ? element : cloneNodes(element);\n var container = doc.createElement(\"KENDO-PDF-DOCUMENT\");\n var adjust = 0;\n\n // make sure elements are at the end (Grid widget\n // places TFOOT before TBODY, tricking our algorithm to\n // insert a page break right after the header).\n // https://github.com/telerik/kendo/issues/4699\n slice$1$1(copy.querySelectorAll(\"tfoot\")).forEach(function(tfoot){\n tfoot.parentNode.appendChild(tfoot);\n });\n\n // remember the index of each LI from an ordered list.\n // we'll use it to reconstruct the proper numbering.\n slice$1$1(copy.querySelectorAll(\"ol\")).forEach(function(ol){\n slice$1$1(ol.children).forEach(function(li, index){\n li.setAttribute(\"kendo-split-index\", index);\n });\n });\n\n setCSS(container, {\n display : \"block\",\n position : \"absolute\",\n boxSizing : \"content-box\",\n left : \"-10000px\",\n top : \"-10000px\"\n });\n\n if (pageWidth) {\n // subtle: if we don't set the width *and* margins here, the layout in this\n // container will be different from the one in our final page elements, and we'll\n // split at the wrong places.\n setCSS(container, {\n width : pageWidth + \"px\",\n paddingLeft : margin.left + \"px\",\n paddingRight : margin.right + \"px\"\n });\n\n // when the first element has a margin-top (i.e. a

    ) the page will be\n // inadvertently enlarged by that number (the browser will report the container's\n // bounding box top to start at the element's top, rather than including its\n // margin). Adding overflow: hidden seems to fix it.\n //\n // to understand the difference, try the following snippets in your browser:\n //\n // 1.
    \n //

    Foo

    \n //
    \n //\n // 2.
    \n //

    Foo

    \n //
    \n //\n // this detail is not important when automatic page breaking is not requested, hence\n // doing it only if pageWidth is defined.\n setCSS(copy, { overflow: \"hidden\" });\n }\n\n element.parentNode.insertBefore(container, element);\n container.appendChild(copy);\n\n // With cache disabled, images will still have height zero until their `complete` attribute\n // is true. `whenImagesAreActuallyLoaded` will wait for it.\n if (options.beforePageBreak) {\n whenImagesAreActuallyLoaded([ container ], function() {\n options.beforePageBreak(container, doPageBreak);\n });\n } else {\n whenImagesAreActuallyLoaded([ container ], doPageBreak);\n }\n\n function doPageBreak() {\n if (forceBreak != \"-\" || pageHeight) {\n splitElement(copy);\n }\n\n {\n var page = makePage();\n copy.parentNode.insertBefore(page, copy);\n page.appendChild(copy);\n }\n\n if (template) {\n pages.forEach(function(page, i){\n var el = template({\n element : page,\n pageNum : i + 1,\n totalPages : pages.length\n });\n if (el) {\n page.appendChild(el);\n }\n });\n }\n\n cacheImages(pages, callback.bind(null, { pages: pages, container: container }));\n }\n\n function keepTogether(el) {\n if (options.keepTogether && matches(el, options.keepTogether) && el.offsetHeight <= pageHeight - adjust) {\n return true;\n }\n\n var tag = el.tagName;\n if (/^h[1-6]$/i.test(tag) && el.offsetHeight >= pageHeight - adjust) {\n return false;\n }\n\n return (el.getAttribute(\"data-kendo-chart\") ||\n /^(?:img|tr|thead|th|tfoot|iframe|svg|object|canvas|input|textarea|select|video|h[1-6])/i.test(el.tagName));\n }\n\n function splitElement(element) {\n if (element.tagName == \"TABLE\") {\n setCSS(element, { tableLayout: \"fixed\" });\n }\n if (keepTogether(element)) {\n return;\n }\n var style = getComputedStyle$1(element);\n var bottomPadding = parseFloat(getPropertyValue(style, \"padding-bottom\"));\n var bottomBorder = parseFloat(getPropertyValue(style, \"border-bottom-width\"));\n var saveAdjust = adjust;\n adjust += bottomPadding + bottomBorder;\n var isFirst = true;\n for (var el = element.firstChild; el; el = el.nextSibling) {\n if (el.nodeType == 1 /* Element */) {\n isFirst = false;\n if (matches(el, forceBreak)) {\n breakAtElement(el);\n continue;\n }\n if (!pageHeight) {\n // we're in \"manual breaks mode\"\n splitElement(el);\n continue;\n }\n if (!/^(?:static|relative)$/.test(getPropertyValue(getComputedStyle$1(el), \"position\"))) {\n continue;\n }\n var fall = fallsOnMargin(el);\n if (fall == 1) {\n // element starts on next page, break before anyway.\n breakAtElement(el);\n }\n else if (fall) {\n // elements ends up on next page, or possibly doesn't fit on a page at\n // all. break before it anyway if it's an or , otherwise\n // attempt to split.\n if (keepTogether(el)) {\n breakAtElement(el);\n } else {\n splitElement(el);\n }\n }\n else {\n splitElement(el);\n }\n }\n else if (el.nodeType == 3 /* Text */ && pageHeight) {\n splitText(el, isFirst);\n isFirst = false;\n }\n }\n adjust = saveAdjust;\n }\n\n function firstInParent(el) {\n var p = el.parentNode, first = p.firstChild;\n if (el === first) {\n return true;\n }\n if (el === p.children[0]) {\n if (first.nodeType == 7 /* comment */ ||\n first.nodeType == 8 /* processing instruction */) {\n return true;\n }\n if (first.nodeType == 3 /* text */) {\n // if whitespace only we can probably consider it's first\n return !/\\S/.test(first.data);\n }\n }\n return false;\n }\n\n function breakAtElement(el) {\n if (el.nodeType == 1 && el !== copy && firstInParent(el)) {\n return breakAtElement(el.parentNode);\n }\n var table, colgroup, thead, grid, gridHead;\n table = closest(el, \"table\");\n colgroup = table && table.querySelector(\"colgroup\");\n if (options.repeatHeaders) {\n thead = table && table.querySelector(\"thead\");\n\n // If we break page in a Kendo Grid, repeat its header. This ugly hack is\n // necessary because a scrollable grid will keep the header in a separate\n // element from its content.\n //\n // XXX: This is likely to break as soon as the widget HTML is modified.\n grid = closest(el, \".k-grid\");\n if (grid && grid.querySelector(\".k-auto-scrollable\")) {\n gridHead = grid.querySelector(\".k-grid-header\");\n }\n }\n var page = makePage();\n var range = doc.createRange();\n range.setStartBefore(copy);\n range.setEndBefore(el);\n page.appendChild(range.extractContents());\n copy.parentNode.insertBefore(page, copy);\n preventBulletOnListItem(el.parentNode);\n if (table) {\n table = closest(el, \"table\"); // that's the
    on next page!\n if (options.repeatHeaders && thead) {\n table.insertBefore(thead.cloneNode(true), table.firstChild);\n }\n if (colgroup) {\n table.insertBefore(colgroup.cloneNode(true), table.firstChild);\n }\n }\n if (options.repeatHeaders && gridHead) {\n grid = closest(el, \".k-grid\");\n grid.insertBefore(gridHead.cloneNode(true), grid.firstChild);\n }\n }\n\n function makePage() {\n var page = doc.createElement(\"KENDO-PDF-PAGE\");\n setCSS(page, {\n display : \"block\",\n boxSizing: \"content-box\",\n width : pageWidth ? (pageWidth + \"px\") : \"auto\",\n padding : (margin.top + \"px \" +\n margin.right + \"px \" +\n margin.bottom + \"px \" +\n margin.left + \"px\"),\n\n // allow absolutely positioned elements to be relative to current page\n position : \"relative\",\n\n // without the following we might affect layout of subsequent pages\n height : pageHeight ? (pageHeight + \"px\") : \"auto\",\n overflow : pageHeight || pageWidth ? \"hidden\" : \"visible\",\n clear : \"both\"\n });\n\n // debug\n // $(\"
    \").css({\n // position : \"absolute\",\n // left : margin.left,\n // top : margin.top,\n // width : pageWidth,\n // height : pageHeight,\n // boxSizing : \"border-box\",\n // background: \"rgba(255, 255, 0, 0.5)\"\n // //border : \"1px solid red\"\n // }).appendTo(page);\n\n if (options && options.pageClassName) {\n page.className = options.pageClassName;\n }\n pages.push(page);\n return page;\n }\n\n function fallsOnMargin(thing) {\n var box = thing.getBoundingClientRect();\n if (box.width === 0 || box.height === 0) {\n // I'd say an element with dimensions zero fits on current page.\n return 0;\n }\n var top = copy.getBoundingClientRect().top;\n var available = pageHeight - adjust;\n return (box.height > available) ? 3\n : (box.top - top > available) ? 1\n : (box.bottom - top > available) ? 2\n : 0;\n }\n\n function splitText(node, isFirst) {\n if (!/\\S/.test(node.data)) {\n return;\n }\n\n var len = node.data.length;\n var range = doc.createRange();\n range.selectNodeContents(node);\n var fall = fallsOnMargin(range);\n if (!fall) {\n return; // the whole text fits on current page\n }\n\n var nextnode = node;\n if (fall == 1) {\n // starts on next page, break before anyway.\n if (isFirst) {\n // avoid leaving an empty

    ,

  • , etc. on previous page.\n breakAtElement(node.parentNode);\n } else {\n breakAtElement(node);\n }\n }\n else {\n (function findEOP(min, pos, max) {\n range.setEnd(node, pos);\n if (min == pos || pos == max) {\n return pos;\n }\n if (fallsOnMargin(range)) {\n return findEOP(min, (min + pos) >> 1, pos);\n } else {\n return findEOP(pos, (pos + max) >> 1, max);\n }\n })(0, len >> 1, len);\n\n if (!/\\S/.test(range.toString()) && isFirst) {\n // avoid leaving an empty

    ,

  • , etc. on previous page.\n breakAtElement(node.parentNode);\n } else {\n // This is only needed for IE, but it feels cleaner to do it anyway. Without\n // it, IE will truncate a very long text (playground/pdf-long-text-2.html).\n nextnode = node.splitText(range.endOffset);\n\n var page = makePage();\n range.setStartBefore(copy);\n page.appendChild(range.extractContents());\n copy.parentNode.insertBefore(page, copy);\n preventBulletOnListItem(nextnode.parentNode);\n }\n }\n\n splitText(nextnode);\n }\n\n function preventBulletOnListItem(el) {\n // set a hint on continued LI elements, to tell the\n // renderer not to draw the bullet again.\n // https://github.com/telerik/kendo-ui-core/issues/2732\n var li = closest(el, \"li\");\n if (li) {\n li.setAttribute(\"kendo-no-bullet\", \"1\");\n preventBulletOnListItem(li.parentNode);\n }\n }\n }\n\n return promise;\n }\n\n // This is needed for the Spreadsheet print functionality. Since\n // there we only need to draw text, this cuts through the ceremony\n // of drawDOM/renderElement and renders the text node directly.\n function drawText(element) {\n var group = new Group();\n nodeInfo._clipbox = false;\n nodeInfo._matrix = Matrix.unit();\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n pushNodeInfo(element, getComputedStyle$1(element), group);\n if (element.firstChild.nodeType == 3 /* Text */) {\n // avoid the penalty of renderElement\n renderText(element, element.firstChild, group);\n } else {\n _renderElement(element, group);\n }\n popNodeInfo();\n return group;\n }\n\n var parseBackgroundImage = (function(){\n var tok_linear_gradient = /^((-webkit-|-moz-|-o-|-ms-)?linear-gradient\\s*)\\(/;\n //var tok_radial_gradient = /^((-webkit-|-moz-|-o-|-ms-)?radial-gradient\\s*)\\(/;\n var tok_percent = /^([-0-9.]+%)/;\n var tok_length = /^([-0-9.]+px)/;\n var tok_keyword = /^(left|right|top|bottom|to|center)\\W/;\n var tok_angle = /^([-0-9.]+(deg|grad|rad|turn)|0)/;\n var tok_whitespace = /^(\\s+)/;\n var tok_popen = /^(\\()/;\n var tok_pclose = /^(\\))/;\n var tok_comma = /^(,)/;\n var tok_url = /^(url)\\(/;\n var tok_content = /^(.*?)\\)/;\n\n var cache1 = {}, cache2 = {};\n\n function parse(input) {\n var orig = input;\n if (hasOwnProperty(cache1, orig)) {\n return cache1[orig];\n }\n function skip_ws() {\n var m = tok_whitespace.exec(input);\n if (m) {\n input = input.substr(m[1].length);\n }\n }\n function read(token) {\n skip_ws();\n var m = token.exec(input);\n if (m) {\n input = input.substr(m[1].length);\n return m[1];\n }\n }\n\n function read_stop() {\n var color = kendo.parseColor(input, true);\n var length, percent;\n if (color) {\n var match =\n /^#[0-9a-f]+/i.exec(input) ||\n /^rgba?\\(.*?\\)/i.exec(input) ||\n /^..*?\\b/.exec(input); // maybe named color\n input = input.substr(match[0].length);\n color = color.toRGB();\n if (!(length = read(tok_length))) {\n percent = read(tok_percent);\n }\n return { color: color, length: length, percent: percent };\n }\n }\n\n function read_linear_gradient(propName) {\n var angle;\n var to1, to2;\n var stops = [];\n var reverse = false;\n\n if (read(tok_popen)) {\n // 1. [ || to , ]?\n angle = read(tok_angle);\n if (angle == \"0\") {\n angle = \"0deg\"; // Edge\n }\n if (angle) {\n angle = parseAngle(angle);\n read(tok_comma);\n }\n else {\n to1 = read(tok_keyword);\n if (to1 == \"to\") {\n to1 = read(tok_keyword);\n } else if (to1 && /^-/.test(propName)) {\n reverse = true;\n }\n to2 = read(tok_keyword);\n read(tok_comma);\n }\n\n if (/-moz-/.test(propName) && angle == null && to1 == null) {\n var x = read(tok_percent), y = read(tok_percent);\n reverse = true;\n if (x == \"0%\") {\n to1 = \"left\";\n } else if (x == \"100%\") {\n to1 = \"right\";\n }\n if (y == \"0%\") {\n to2 = \"top\";\n } else if (y == \"100%\") {\n to2 = \"bottom\";\n }\n read(tok_comma);\n }\n\n // 2. color stops\n while (input && !read(tok_pclose)) {\n var stop = read_stop();\n if (!stop) {\n break;\n }\n stops.push(stop);\n read(tok_comma);\n }\n\n return {\n type : \"linear\",\n angle : angle,\n to : to1 && to2 ? to1 + \" \" + to2 : to1 ? to1 : to2 ? to2 : null,\n stops : stops,\n reverse : reverse\n };\n }\n }\n\n function read_url() {\n if (read(tok_popen)) {\n var url = read(tok_content);\n url = url.replace(/^['\"]+|[\"']+$/g, \"\");\n read(tok_pclose);\n return { type: \"url\", url: url };\n }\n }\n\n var tok;\n\n if ((tok = read(tok_linear_gradient))) {\n tok = read_linear_gradient(tok);\n }\n else if ((tok = read(tok_url))) {\n tok = read_url();\n }\n\n return (cache1[orig] = tok || { type: \"none\" });\n }\n\n return function(input) {\n if (hasOwnProperty(cache2, input)) {\n return cache2[input];\n }\n return (cache2[input] = splitProperty(input).map(parse));\n };\n })();\n\n var splitProperty = (function(){\n var cache = {};\n return function(input, separator) {\n if (!separator) {\n separator = /^\\s*,\\s*/;\n }\n\n var cacheKey = input + separator;\n\n if (hasOwnProperty(cache, cacheKey)) {\n return cache[cacheKey];\n }\n\n var ret = [];\n var last$$1 = 0, pos = 0;\n var in_paren = 0;\n var in_string = false;\n var m;\n\n function looking_at(rx) {\n return (m = rx.exec(input.substr(pos)));\n }\n\n function trim(str) {\n return str.replace(/^\\s+|\\s+$/g, \"\");\n }\n\n while (pos < input.length) {\n if (!in_string && looking_at(/^[\\(\\[\\{]/)) {\n in_paren++;\n pos++;\n }\n else if (!in_string && looking_at(/^[\\)\\]\\}]/)) {\n in_paren--;\n pos++;\n }\n else if (!in_string && looking_at(/^[\\\"\\']/)) {\n in_string = m[0];\n pos++;\n }\n else if (in_string == \"'\" && looking_at(/^\\\\\\'/)) {\n pos += 2;\n }\n else if (in_string == '\"' && looking_at(/^\\\\\\\"/)) {\n pos += 2;\n }\n else if (in_string == \"'\" && looking_at(/^\\'/)) {\n in_string = false;\n pos++;\n }\n else if (in_string == '\"' && looking_at(/^\\\"/)) {\n in_string = false;\n pos++;\n }\n else if (looking_at(separator)) {\n if (!in_string && !in_paren && pos > last$$1) {\n ret.push(trim(input.substring(last$$1, pos)));\n last$$1 = pos + m[0].length;\n }\n pos += m[0].length;\n }\n else {\n pos++;\n }\n }\n if (last$$1 < pos) {\n ret.push(trim(input.substring(last$$1, pos)));\n }\n return (cache[cacheKey] = ret);\n };\n })();\n\n var getFontURL = (function(cache){\n return function(el){\n // XXX: for IE we get here the whole cssText of the rule,\n // because the computedStyle.src is empty. Next time we need\n // to fix these regexps we better write a CSS parser. :-\\\n var url = cache[el];\n if (!url) {\n var m;\n if ((m = /url\\((['\"]?)([^'\")]*?)\\1\\)\\s+format\\((['\"]?)truetype\\3\\)/.exec(el))) {\n url = cache[el] = m[2];\n } else if ((m = /url\\((['\"]?)([^'\")]*?\\.ttf)\\1\\)/.exec(el))) {\n url = cache[el] = m[2];\n }\n }\n return url;\n };\n })(Object.create ? Object.create(null) : {});\n\n var getFontHeight = (function(cache){\n return function(font) {\n var height = cache[font];\n if (height == null) {\n height = cache[font] = kendoUtil.measureText(\"Mapq\", { font: font }).height;\n }\n return height;\n };\n })(Object.create ? Object.create(null) : {});\n\n function getFontFaces(doc) {\n if (doc == null) {\n doc = document;\n }\n var result = {};\n for (var i = 0; i < doc.styleSheets.length; ++i) {\n doStylesheet(doc.styleSheets[i]);\n }\n return result;\n function doStylesheet(ss) {\n if (ss) {\n var rules = null;\n try {\n rules = ss.cssRules;\n } catch (ex) {}\n if (rules) {\n addRules(ss, rules);\n }\n }\n }\n function findFonts(rule) {\n var src = getPropertyValue(rule.style, \"src\");\n if (src) {\n return splitProperty(src).reduce(function(a, el){\n var font = getFontURL(el);\n if (font) {\n a.push(font);\n }\n return a;\n }, []);\n } else {\n // Internet Explorer\n // XXX: this is gross. should work though for valid CSS.\n var font = getFontURL(rule.cssText);\n return font ? [ font ] : [];\n }\n }\n function addRules(styleSheet, rules) {\n for (var i = 0; i < rules.length; ++i) {\n var r = rules[i];\n switch (r.type) {\n case 3: // CSSImportRule\n doStylesheet(r.styleSheet);\n break;\n case 5: // CSSFontFaceRule\n var style = r.style;\n var family = splitProperty(getPropertyValue(style, \"font-family\"));\n var bold = /^([56789]00|bold)$/i.test(getPropertyValue(style, \"font-weight\"));\n var italic = \"italic\" == getPropertyValue(style, \"font-style\");\n var src = findFonts(r);\n if (src.length > 0) {\n addRule(styleSheet, family, bold, italic, src[0]);\n }\n }\n }\n }\n function addRule(styleSheet, names, bold, italic, url) {\n // We get full resolved absolute URLs in Chrome, but sadly\n // not in Firefox.\n if (!(/^data:/i.test(url))) {\n if (!(/^[^\\/:]+:\\/\\//.test(url) || /^\\//.test(url))) {\n url = String(styleSheet.href).replace(/[^\\/]*$/, \"\") + url;\n }\n }\n names.forEach(function(name){\n name = name.replace(/^(['\"]?)(.*?)\\1$/, \"$2\"); // it's quoted\n if (bold) {\n name += \"|bold\";\n }\n if (italic) {\n name += \"|italic\";\n }\n result[name] = url;\n });\n }\n }\n\n function hasOwnProperty(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n }\n\n function getCounter(name) {\n name = \"_counter_\" + name;\n return nodeInfo[name];\n }\n\n function getAllCounters(name) {\n var values = [], p = nodeInfo;\n name = \"_counter_\" + name;\n while (p) {\n if (hasOwnProperty(p, name)) {\n values.push(p[name]);\n }\n p = Object.getPrototypeOf(p);\n }\n return values.reverse();\n }\n\n function incCounter(name, inc) {\n var p = nodeInfo;\n name = \"_counter_\" + name;\n while (p && !hasOwnProperty(p, name)) {\n p = Object.getPrototypeOf(p);\n }\n if (!p) {\n p = nodeInfo._root;\n }\n p[name] = (p[name] || 0) + (inc == null ? 1 : inc);\n }\n\n function resetCounter(name, val) {\n name = \"_counter_\" + name;\n nodeInfo[name] = val == null ? 0 : val;\n }\n\n function doCounters(a, f, def) {\n for (var i = 0; i < a.length;) {\n var name = a[i++];\n var val = parseFloat(a[i]);\n if (isNaN(val)) {\n f(name, def);\n } else {\n f(name, val);\n ++i;\n }\n }\n }\n\n function updateCounters(style) {\n var counterReset = getPropertyValue(style, \"counter-reset\");\n if (counterReset) {\n doCounters(splitProperty(counterReset, /^\\s+/), resetCounter, 0);\n }\n var counterIncrement = getPropertyValue(style, \"counter-increment\");\n if (counterIncrement) {\n doCounters(splitProperty(counterIncrement, /^\\s+/), incCounter, 1);\n }\n }\n\n function parseColor$1(str, css) {\n var color = kendo.parseColor(str, true);\n if (color) {\n color = color.toRGB();\n if (css) {\n color = color.toCssRgba();\n } else if (color.a === 0) {\n color = null;\n }\n }\n return color;\n }\n\n function whenImagesAreActuallyLoaded(elements, callback) {\n var pending = 0;\n var done = false;\n elements.forEach(function(el){\n var images = el.querySelectorAll(\"img\");\n for (var i = 0; i < images.length; ++i) {\n var img = images[i];\n if (!img.complete) {\n pending++;\n img.onload = img.onerror = next;\n }\n }\n });\n\n if (!pending) {\n next();\n }\n\n function next() {\n if (!done && --pending <= 0) {\n callback();\n done = true;\n }\n }\n }\n\n function cacheImages(elements, callback) {\n var urls = [];\n function add(url) {\n if (!IMAGE_CACHE[url]) {\n IMAGE_CACHE[url] = true;\n urls.push(url);\n }\n }\n\n elements.forEach(function dive(element){\n if (/^img$/i.test(element.tagName)) {\n add(element.src);\n }\n parseBackgroundImage(\n getPropertyValue(\n getComputedStyle$1(element), \"background-image\"\n )\n ).forEach(function(bg){\n if (bg.type == \"url\") {\n add(bg.url);\n }\n });\n\n if (element.children) {\n slice$1$1(element.children).forEach(dive);\n }\n });\n\n var count = urls.length;\n function next() {\n if (--count <= 0) {\n // Even though we cached them, they simply won't be available immediately in the newly\n // created DOM. Previously we'd allow a 10ms timeout, but that's arbitrary and clearly\n // not working in all cases (https://github.com/telerik/kendo/issues/5399), so this\n // function will wait for their .complete attribute.\n whenImagesAreActuallyLoaded(elements, callback);\n }\n }\n if (count === 0) {\n next();\n }\n urls.forEach(function(url){\n var img = IMAGE_CACHE[url] = new window.Image();\n if (!(/^data:/i.test(url))) {\n img.crossOrigin = \"Anonymous\";\n }\n img.src = url;\n if (img.complete) {\n next();\n } else {\n img.onload = next;\n img.onerror = function() {\n IMAGE_CACHE[url] = null;\n next();\n };\n }\n });\n }\n\n function alphaNumeral(n) {\n var result = \"\";\n do {\n var r = n % 26;\n result = String.fromCharCode(97 + r) + result;\n n = Math.floor(n / 26);\n } while (n > 0);\n return result;\n }\n\n function pushNodeInfo(element, style, group) {\n nodeInfo = Object.create(nodeInfo);\n nodeInfo[element.tagName.toLowerCase()] = {\n element: element,\n style: style\n };\n var decoration = getPropertyValue(style, \"text-decoration\");\n if (decoration && decoration != \"none\") {\n var color = getPropertyValue(style, \"text-decoration-color\");\n decoration.split(/\\s+/g).forEach(function(name){\n if (!nodeInfo[name]) {\n nodeInfo[name] = color;\n if (name == \"underline\") {\n var offset = getPropertyValue(style, \"text-underline-offset\");\n if (offset != \"auto\") {\n nodeInfo[\"underline-offset\"] = parseFloat(offset);\n }\n }\n }\n });\n }\n\n if (createsStackingContext(style)) {\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n }\n }\n\n function popNodeInfo() {\n nodeInfo = Object.getPrototypeOf(nodeInfo);\n }\n\n function updateClipbox(path) {\n if (nodeInfo._clipbox != null) {\n var box = path.bbox(nodeInfo._matrix);\n if (nodeInfo._clipbox) {\n nodeInfo._clipbox = Rect.intersect(nodeInfo._clipbox, box);\n } else {\n nodeInfo._clipbox = box;\n }\n }\n }\n\n function emptyClipbox() {\n var cb = nodeInfo._clipbox;\n if (cb == null) {\n return true;\n }\n if (cb) {\n return cb.width() === 0 || cb.height() === 0;\n }\n }\n\n function createsStackingContext(style) {\n function prop(name) { return getPropertyValue(style, name); }\n if (prop(\"transform\") != \"none\" ||\n prop(\"position\") != \"static\" ||\n prop(\"z-index\") != \"auto\" ||\n prop(\"opacity\") < 1) {\n return true;\n }\n }\n\n function getComputedStyle$1(element, pseudoElt) {\n return window.getComputedStyle(element, pseudoElt || null);\n }\n\n function getPropertyValue(style, prop, defa) {\n var val = style.getPropertyValue(prop);\n if (val == null || val === \"\") {\n if (browser.webkit) {\n val = style.getPropertyValue(\"-webkit-\" + prop );\n } else if (browser.mozilla) {\n val = style.getPropertyValue(\"-moz-\" + prop );\n } else if (browser.opera) {\n val = style.getPropertyValue(\"-o-\" + prop);\n } else if (microsoft) {\n val = style.getPropertyValue(\"-ms-\" + prop);\n }\n }\n if (arguments.length > 2 && (val == null || val === \"\")) {\n return defa;\n } else {\n return val;\n }\n }\n\n function pleaseSetPropertyValue(style, prop, value, important) {\n style.setProperty(prop, value, important);\n if (browser.webkit) {\n style.setProperty(\"-webkit-\" + prop, value, important);\n } else if (browser.mozilla) {\n style.setProperty(\"-moz-\" + prop, value, important);\n } else if (browser.opera) {\n style.setProperty(\"-o-\" + prop, value, important);\n } else if (microsoft) {\n style.setProperty(\"-ms-\" + prop, value, important);\n prop = \"ms\" + prop.replace(/(^|-)([a-z])/g, function(s, p1, p2){\n return p1 + p2.toUpperCase();\n });\n style[prop] = value;\n }\n }\n\n function getBorder(style, side) {\n side = \"border-\" + side;\n return {\n width: parseFloat(getPropertyValue(style, side + \"-width\")),\n style: getPropertyValue(style, side + \"-style\"),\n color: parseColor$1(getPropertyValue(style, side + \"-color\"), true)\n };\n }\n\n function saveStyle(element, func) {\n var prev = element.style.cssText;\n var result = func();\n element.style.cssText = prev;\n return result;\n }\n\n function getBorderRadius(style, side) {\n var r = getPropertyValue(style, \"border-\" + side + \"-radius\").split(/\\s+/g).map(parseFloat);\n if (r.length == 1) {\n r.push(r[0]);\n }\n return sanitizeRadius({ x: r[0], y: r[1] });\n }\n\n function getContentBox(element) {\n var box = element.getBoundingClientRect();\n box = innerBox(box, \"border-*-width\", element);\n box = innerBox(box, \"padding-*\", element);\n return box;\n }\n\n function innerBox(box, prop, element) {\n var style, wt, wr, wb, wl;\n if (typeof prop == \"string\") {\n style = getComputedStyle$1(element);\n wt = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"top\")));\n wr = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"right\")));\n wb = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"bottom\")));\n wl = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"left\")));\n }\n else if (typeof prop == \"number\") {\n wt = wr = wb = wl = prop;\n }\n return {\n top : box.top + wt,\n right : box.right - wr,\n bottom : box.bottom - wb,\n left : box.left + wl,\n width : box.right - box.left - wr - wl,\n height : box.bottom - box.top - wb - wt\n };\n }\n\n function getTransform(style) {\n var transform$$1 = getPropertyValue(style, \"transform\");\n if (transform$$1 == \"none\") {\n return null;\n }\n var matrix = /^\\s*matrix\\(\\s*(.*?)\\s*\\)\\s*$/.exec(transform$$1);\n if (matrix) {\n var origin = getPropertyValue(style, \"transform-origin\");\n matrix = matrix[1].split(/\\s*,\\s*/g).map(parseFloat);\n origin = origin.split(/\\s+/g).map(parseFloat);\n return {\n matrix: matrix,\n origin: origin\n };\n }\n }\n\n function radiansToDegrees(radians) {\n return ((180 * radians) / Math.PI) % 360;\n }\n\n function parseAngle(angle) {\n var num = parseFloat(angle);\n if (/grad$/.test(angle)) {\n return Math.PI * num / 200;\n }\n else if (/rad$/.test(angle)) {\n return num;\n }\n else if (/turn$/.test(angle)) {\n return Math.PI * num * 2;\n }\n else if (/deg$/.test(angle)) {\n return Math.PI * num / 180;\n }\n }\n\n function setTransform$1(shape, m) {\n m = new Matrix(m[0], m[1], m[2], m[3], m[4], m[5]);\n shape.transform(m);\n return m;\n }\n\n function setClipping(shape, clipPath) {\n shape.clip(clipPath);\n }\n\n function addArcToPath(path, x, y, options) {\n var points = new Arc$2([ x, y ], options).curvePoints(), i = 1;\n while (i < points.length) {\n path.curveTo(points[i++], points[i++], points[i++]);\n }\n }\n\n function sanitizeRadius(r) {\n if (r.x <= 0 || r.y <= 0) {\n r.x = r.y = 0;\n }\n return r;\n }\n\n function adjustBorderRadiusForBox(box, rTL, rTR, rBR, rBL) {\n // adjust border radiuses such that the sum of adjacent\n // radiuses is not bigger than the length of the side.\n // seems the correct algorithm is variant (3) from here:\n // http://www.w3.org/Style/CSS/Tracker/issues/29?changelog\n var tl_x = Math.max(0, rTL.x), tl_y = Math.max(0, rTL.y);\n var tr_x = Math.max(0, rTR.x), tr_y = Math.max(0, rTR.y);\n var br_x = Math.max(0, rBR.x), br_y = Math.max(0, rBR.y);\n var bl_x = Math.max(0, rBL.x), bl_y = Math.max(0, rBL.y);\n\n var f = Math.min(\n box.width / (tl_x + tr_x),\n box.height / (tr_y + br_y),\n box.width / (br_x + bl_x),\n box.height / (bl_y + tl_y)\n );\n\n if (f < 1) {\n tl_x *= f; tl_y *= f;\n tr_x *= f; tr_y *= f;\n br_x *= f; br_y *= f;\n bl_x *= f; bl_y *= f;\n }\n\n return {\n tl: { x: tl_x, y: tl_y },\n tr: { x: tr_x, y: tr_y },\n br: { x: br_x, y: br_y },\n bl: { x: bl_x, y: bl_y }\n };\n }\n\n function elementRoundBox(element, box, type) {\n var style = getComputedStyle$1(element);\n\n var rTL = getBorderRadius(style, \"top-left\");\n var rTR = getBorderRadius(style, \"top-right\");\n var rBL = getBorderRadius(style, \"bottom-left\");\n var rBR = getBorderRadius(style, \"bottom-right\");\n\n if (type == \"padding\" || type == \"content\") {\n var bt = getBorder(style, \"top\");\n var br = getBorder(style, \"right\");\n var bb = getBorder(style, \"bottom\");\n var bl = getBorder(style, \"left\");\n rTL.x -= bl.width; rTL.y -= bt.width;\n rTR.x -= br.width; rTR.y -= bt.width;\n rBR.x -= br.width; rBR.y -= bb.width;\n rBL.x -= bl.width; rBL.y -= bb.width;\n if (type == \"content\") {\n var pt = parseFloat(getPropertyValue(style, \"padding-top\"));\n var pr = parseFloat(getPropertyValue(style, \"padding-right\"));\n var pb = parseFloat(getPropertyValue(style, \"padding-bottom\"));\n var pl = parseFloat(getPropertyValue(style, \"padding-left\"));\n rTL.x -= pl; rTL.y -= pt;\n rTR.x -= pr; rTR.y -= pt;\n rBR.x -= pr; rBR.y -= pb;\n rBL.x -= pl; rBL.y -= pb;\n }\n }\n\n if (typeof type == \"number\") {\n rTL.x -= type; rTL.y -= type;\n rTR.x -= type; rTR.y -= type;\n rBR.x -= type; rBR.y -= type;\n rBL.x -= type; rBL.y -= type;\n }\n\n return roundBox(box, rTL, rTR, rBR, rBL);\n }\n\n // Create a drawing.Path for a rounded rectangle. Receives the\n // bounding box and the border-radiuses in CSS order (top-left,\n // top-right, bottom-right, bottom-left). The radiuses must be\n // objects containing x (horiz. radius) and y (vertical radius).\n function roundBox(box, rTL0, rTR0, rBR0, rBL0) {\n var tmp = adjustBorderRadiusForBox(box, rTL0, rTR0, rBR0, rBL0);\n var rTL = tmp.tl;\n var rTR = tmp.tr;\n var rBR = tmp.br;\n var rBL = tmp.bl;\n var path = new Path({ fill: null, stroke: null });\n path.moveTo(box.left, box.top + rTL.y);\n if (rTL.x) {\n addArcToPath(path, box.left + rTL.x, box.top + rTL.y, {\n startAngle: -180,\n endAngle: -90,\n radiusX: rTL.x,\n radiusY: rTL.y\n });\n }\n path.lineTo(box.right - rTR.x, box.top);\n if (rTR.x) {\n addArcToPath(path, box.right - rTR.x, box.top + rTR.y, {\n startAngle: -90,\n endAngle: 0,\n radiusX: rTR.x,\n radiusY: rTR.y\n });\n }\n path.lineTo(box.right, box.bottom - rBR.y);\n if (rBR.x) {\n addArcToPath(path, box.right - rBR.x, box.bottom - rBR.y, {\n startAngle: 0,\n endAngle: 90,\n radiusX: rBR.x,\n radiusY: rBR.y\n });\n }\n path.lineTo(box.left + rBL.x, box.bottom);\n if (rBL.x) {\n addArcToPath(path, box.left + rBL.x, box.bottom - rBL.y, {\n startAngle: 90,\n endAngle: 180,\n radiusX: rBL.x,\n radiusY: rBL.y\n });\n }\n return path.close();\n }\n\n function formatCounter(val, style) {\n var str = String(parseFloat(val));\n switch (style) {\n case \"decimal-leading-zero\":\n if (str.length < 2) {\n str = \"0\" + str;\n }\n return str;\n case \"lower-roman\":\n return arabicToRoman(val).toLowerCase();\n case \"upper-roman\":\n return arabicToRoman(val).toUpperCase();\n case \"lower-latin\":\n case \"lower-alpha\":\n return alphaNumeral(val - 1);\n case \"upper-latin\":\n case \"upper-alpha\":\n return alphaNumeral(val - 1).toUpperCase();\n default:\n return str;\n }\n }\n\n function evalPseudoElementContent(element, content) {\n function displayCounter(name, style, separator) {\n if (!separator) {\n return formatCounter(getCounter(name) || 0, style);\n }\n separator = separator.replace(/^\\s*([\"'])(.*)\\1\\s*$/, \"$2\");\n return getAllCounters(name).map(function(val){\n return formatCounter(val, style);\n }).join(separator);\n }\n var a = splitProperty(content, /^\\s+/);\n var result = [], m;\n a.forEach(function(el){\n var tmp;\n if ((m = /^\\s*([\"'])(.*)\\1\\s*$/.exec(el))) {\n result.push(m[2].replace(/\\\\([0-9a-f]{4})/gi, function(s, p){\n return String.fromCharCode(parseInt(p, 16));\n }));\n }\n else if ((m = /^\\s*counter\\((.*?)\\)\\s*$/.exec(el))) {\n tmp = splitProperty(m[1]);\n result.push(displayCounter(tmp[0], tmp[1]));\n }\n else if ((m = /^\\s*counters\\((.*?)\\)\\s*$/.exec(el))) {\n tmp = splitProperty(m[1]);\n result.push(displayCounter(tmp[0], tmp[2], tmp[1]));\n }\n else if ((m = /^\\s*attr\\((.*?)\\)\\s*$/.exec(el))) {\n result.push(element.getAttribute(m[1]) || \"\");\n }\n else {\n result.push(el);\n }\n });\n return result.join(\"\");\n }\n\n function getCssText(style) {\n if (style.cssText) {\n return style.cssText;\n }\n // Status: NEW. Report year: 2002. Current year: 2014.\n // Nice played, Mozillians.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=137687\n var result = [];\n for (var i = 0; i < style.length; ++i) {\n result.push(style[i] + \": \" + getPropertyValue(style, style[i]));\n }\n return result.join(\";\\n\");\n }\n\n function _renderWithPseudoElements(element, group) {\n if (element.tagName == KENDO_PSEUDO_ELEMENT) {\n _renderElement(element, group);\n return;\n }\n var fake = [];\n function pseudo(kind, place) {\n var style = getComputedStyle$1(element, kind), content = style.content;\n updateCounters(style);\n if (content && content != \"normal\" && content != \"none\" && style.width != \"0px\") {\n var psel = element.ownerDocument.createElement(KENDO_PSEUDO_ELEMENT);\n psel.style.cssText = getCssText(style);\n psel.textContent = evalPseudoElementContent(element, content);\n element.insertBefore(psel, place);\n fake.push(psel);\n }\n }\n pseudo(\":before\", element.firstChild);\n pseudo(\":after\", null);\n if (fake.length > 0) {\n var saveClass = element.className;\n element.className += \" kendo-pdf-hide-pseudo-elements\";\n _renderElement(element, group);\n element.className = saveClass;\n fake.forEach(function(el){ element.removeChild(el); });\n } else {\n _renderElement(element, group);\n }\n }\n\n function _renderElement(element, group) {\n var style = getComputedStyle$1(element);\n\n var top = getBorder(style, \"top\");\n var right = getBorder(style, \"right\");\n var bottom = getBorder(style, \"bottom\");\n var left = getBorder(style, \"left\");\n\n var rTL0 = getBorderRadius(style, \"top-left\");\n var rTR0 = getBorderRadius(style, \"top-right\");\n var rBL0 = getBorderRadius(style, \"bottom-left\");\n var rBR0 = getBorderRadius(style, \"bottom-right\");\n\n var dir = getPropertyValue(style, \"direction\");\n\n var backgroundColor = getPropertyValue(style, \"background-color\");\n backgroundColor = parseColor$1(backgroundColor);\n\n var backgroundImage = parseBackgroundImage( getPropertyValue(style, \"background-image\") );\n var backgroundRepeat = splitProperty( getPropertyValue(style, \"background-repeat\") );\n var backgroundPosition = splitProperty( getPropertyValue(style, \"background-position\") );\n var backgroundOrigin = splitProperty( getPropertyValue(style, \"background-origin\") );\n var backgroundSize = splitProperty( getPropertyValue(style, \"background-size\") );\n\n // IE shrinks the text with text-overflow: ellipsis,\n // apparently because the returned bounding box for the range\n // is limited to the visible area minus space for the dots,\n // instead of being the full width of the text.\n //\n // https://github.com/telerik/kendo/issues/5232\n // https://github.com/telerik/kendo-ui-core/issues/1868\n //\n // We have to test it here rather than in renderText because\n // text-overflow: ellipsis could be set on a parent element (not\n // necessarily the one containing the text); in this case,\n // getComputedStyle(elementWithTheText) will return \"clip\", not\n // \"ellipsis\" (which is probably a bug, but oh well...)\n var textOverflow, saveTextOverflow;\n if (microsoft) {\n textOverflow = style.textOverflow; // computed style\n if (textOverflow == \"ellipsis\") {\n saveTextOverflow = element.style.textOverflow; // own style.\n element.style.textOverflow = \"clip\";\n }\n }\n\n if (browser.msie && browser.version < 10) {\n // IE9 hacks. getPropertyValue won't return the correct\n // value. Sucks that we have to do it here, I'd prefer to\n // move it in getPropertyValue, but we don't have the\n // element.\n backgroundPosition = splitProperty(element.currentStyle.backgroundPosition);\n }\n\n var innerbox = innerBox(element.getBoundingClientRect(), \"border-*-width\", element);\n\n // CSS \"clip\" property - if present, replace the group with a\n // new one which is clipped. This must happen before drawing\n // the borders and background.\n (function(){\n var clip = getPropertyValue(style, \"clip\");\n var m = /^\\s*rect\\((.*)\\)\\s*$/.exec(clip);\n if (m) {\n var a = m[1].split(/[ ,]+/g);\n var top = a[0] == \"auto\" ? innerbox.top : parseFloat(a[0]) + innerbox.top;\n var right = a[1] == \"auto\" ? innerbox.right : parseFloat(a[1]) + innerbox.left;\n var bottom = a[2] == \"auto\" ? innerbox.bottom : parseFloat(a[2]) + innerbox.top;\n var left = a[3] == \"auto\" ? innerbox.left : parseFloat(a[3]) + innerbox.left;\n var tmp = new Group();\n var clipPath = new Path()\n .moveTo(left, top)\n .lineTo(right, top)\n .lineTo(right, bottom)\n .lineTo(left, bottom)\n .close();\n setClipping(tmp, clipPath);\n group.append(tmp);\n group = tmp;\n updateClipbox(clipPath);\n }\n })();\n\n var boxes, i, cells;\n var display = getPropertyValue(style, \"display\");\n\n if (display == \"table-row\") {\n // because of rowspan/colspan, we shouldn't draw background of table row elements on the\n // box given by its getBoundingClientRect, because if we do we risk overwritting a\n // previously rendered cell. https://github.com/telerik/kendo/issues/4881\n boxes = [];\n for (i = 0, cells = element.children; i < cells.length; ++i) {\n boxes.push(cells[i].getBoundingClientRect());\n }\n } else {\n boxes = element.getClientRects();\n if (boxes.length == 1) {\n // Workaround the missing borders in Chrome! getClientRects() boxes contains values\n // rounded to integer. getBoundingClientRect() appears to work fine. We still need\n // getClientRects() to support cases where there are more boxes (continued inline\n // elements that might have border/background).\n boxes = [ element.getBoundingClientRect() ];\n }\n }\n\n // This function workarounds another Chrome bug, where boxes returned for a table with\n // border-collapse: collapse will overlap the table border. Our rendering is not perfect in\n // such case anyway, but with this is better than without it.\n boxes = adjustBoxes(boxes);\n\n for (i = 0; i < boxes.length; ++i) {\n drawOneBox(boxes[i], i === 0, i == boxes.length - 1);\n }\n\n // Render links as separate groups. We can't use boxes returned by element's getClientRects\n // because if display type is \"inline\" (default for ), boxes will not include the height of\n // images inside. https://github.com/telerik/kendo-ui-core/issues/3359\n if (element.tagName == \"A\" && element.href && !/^#?$/.test(element.getAttribute(\"href\"))) {\n if (!nodeInfo._avoidLinks || !matches(element, nodeInfo._avoidLinks)) {\n var r = document.createRange();\n r.selectNodeContents(element);\n slice$1$1(r.getClientRects()).forEach(function(box){\n var g = new Group();\n g._pdfLink = {\n url : element.href,\n top : box.top,\n right : box.right,\n bottom : box.bottom,\n left : box.left\n };\n group.append(g);\n });\n }\n }\n\n if (boxes.length > 0 && display == \"list-item\" && !element.getAttribute(\"kendo-no-bullet\")) {\n drawBullet(boxes[0]);\n }\n\n // overflow: hidden/auto - if present, replace the group with\n // a new one clipped by the inner box.\n (function(){\n function clipit() {\n var clipPath = elementRoundBox(element, innerbox, \"padding\");\n var tmp = new Group();\n setClipping(tmp, clipPath);\n group.append(tmp);\n group = tmp;\n updateClipbox(clipPath);\n }\n if (isFormField(element)) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow\"))) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow-x\"))) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow-y\"))) {\n clipit();\n }\n })();\n\n if (!maybeRenderWidget(element, group) && !maybeRenderBullet(element, group)) {\n renderContents(element, group);\n }\n\n if (microsoft && textOverflow == \"ellipsis\") {\n element.style.textOverflow = saveTextOverflow;\n }\n\n return group; // only utility functions after this line.\n\n function adjustBoxes(boxes) {\n if (/^td$/i.test(element.tagName)) {\n var table = nodeInfo.table;\n if (table && getPropertyValue(table.style, \"border-collapse\") == \"collapse\") {\n var tableBorderLeft = getBorder(table.style, \"left\").width;\n var tableBorderTop = getBorder(table.style, \"top\").width;\n // check if we need to adjust\n if (tableBorderLeft === 0 && tableBorderTop === 0) {\n return boxes; // nope\n }\n var tableBox = table.element.getBoundingClientRect();\n var firstCell = table.element.rows[0].cells[0];\n var firstCellBox = firstCell.getBoundingClientRect();\n if (firstCellBox.top == tableBox.top || firstCellBox.left == tableBox.left) {\n return slice$1$1(boxes).map(function(box){\n return {\n left : box.left + tableBorderLeft,\n top : box.top + tableBorderTop,\n right : box.right + tableBorderLeft,\n bottom : box.bottom + tableBorderTop,\n height : box.height,\n width : box.width\n };\n });\n }\n }\n }\n return boxes;\n }\n\n // this function will be called to draw each border. it\n // draws starting at origin and the resulted path must be\n // translated/rotated to be placed in the proper position.\n //\n // arguments are named as if it draws the top border:\n //\n // - `len` the length of the edge\n // - `Wtop` the width of the edge (i.e. border-top-width)\n // - `Wleft` the width of the left edge (border-left-width)\n // - `Wright` the width of the right edge\n // - `rl` and `rl` -- the border radius on the left and right\n // (objects containing x and y, for horiz/vertical radius)\n // - `transform` -- transformation to apply\n //\n function drawEdge(color, len, Wtop, Wleft, Wright, rl, rr, transform$$1) {\n if (Wtop <= 0) {\n return;\n }\n\n var path, edge = new Group();\n setTransform$1(edge, transform$$1);\n group.append(edge);\n\n sanitizeRadius(rl);\n sanitizeRadius(rr);\n\n // draw main border. this is the area without the rounded corners\n path = new Path({\n fill: { color: color },\n stroke: null\n });\n edge.append(path);\n path.moveTo(rl.x ? Math.max(rl.x, Wleft) : 0, 0)\n .lineTo(len - (rr.x ? Math.max(rr.x, Wright) : 0), 0)\n .lineTo(len - Math.max(rr.x, Wright), Wtop)\n .lineTo(Math.max(rl.x, Wleft), Wtop)\n .close();\n\n if (rl.x) {\n drawRoundCorner(Wleft, rl, [ -1, 0, 0, 1, rl.x, 0 ]);\n }\n\n if (rr.x) {\n drawRoundCorner(Wright, rr, [ 1, 0, 0, 1, len - rr.x, 0 ]);\n }\n\n // draws one round corner, starting at origin (needs to be\n // translated/rotated to be placed properly).\n function drawRoundCorner(Wright, r, transform$$1) {\n var angle = Math.PI/2 * Wright / (Wright + Wtop);\n\n // not sanitizing this one, because negative values\n // are useful to fill the box correctly.\n var ri = {\n x: r.x - Wright,\n y: r.y - Wtop\n };\n\n var path = new Path({\n fill: { color: color },\n stroke: null\n }).moveTo(0, 0);\n\n setTransform$1(path, transform$$1);\n\n addArcToPath(path, 0, r.y, {\n startAngle: -90,\n endAngle: -radiansToDegrees(angle),\n radiusX: r.x,\n radiusY: r.y\n });\n\n if (ri.x > 0 && ri.y > 0) {\n path.lineTo(ri.x * Math.cos(angle), r.y - ri.y * Math.sin(angle));\n addArcToPath(path, 0, r.y, {\n startAngle: -radiansToDegrees(angle),\n endAngle: -90,\n radiusX: ri.x,\n radiusY: ri.y,\n anticlockwise: true\n });\n }\n else if (ri.x > 0) {\n path.lineTo(ri.x, Wtop)\n .lineTo(0, Wtop);\n }\n else {\n path.lineTo(ri.x, Wtop)\n .lineTo(ri.x, 0);\n }\n\n edge.append(path.close());\n }\n }\n\n function drawBackground(box) {\n var background = new Group();\n setClipping(background, roundBox(box, rTL0, rTR0, rBR0, rBL0));\n group.append(background);\n\n if (backgroundColor) {\n var path = new Path({\n fill: { color: backgroundColor.toCssRgba() },\n stroke: null\n });\n path.moveTo(box.left, box.top)\n .lineTo(box.right, box.top)\n .lineTo(box.right, box.bottom)\n .lineTo(box.left, box.bottom)\n .close();\n background.append(path);\n }\n\n for (var i = backgroundImage.length; --i >= 0;) {\n drawOneBackground(\n background, box,\n backgroundImage[i],\n backgroundRepeat[i % backgroundRepeat.length],\n backgroundPosition[i % backgroundPosition.length],\n backgroundOrigin[i % backgroundOrigin.length],\n backgroundSize[i % backgroundSize.length]\n );\n }\n }\n\n function drawOneBackground(group, box, background, backgroundRepeat, backgroundPosition, backgroundOrigin, backgroundSize) {\n if (!background || (background == \"none\")) {\n return;\n }\n\n if (background.type == \"url\") {\n var img = IMAGE_CACHE[background.url];\n if (img && img.width > 0 && img.height > 0) {\n drawBackgroundImage(group, box, img.width, img.height, function(group, rect){\n group.append(new Image$1(background.url, rect));\n });\n }\n } else if (background.type == \"linear\") {\n drawBackgroundImage(group, box, box.width, box.height, gradientRenderer(background));\n } else {\n return;\n }\n\n function drawBackgroundImage(group, box, img_width, img_height, renderBG) {\n var aspect_ratio = img_width / img_height, f;\n\n // for background-origin: border-box the box is already appropriate\n var orgBox = box;\n if (backgroundOrigin == \"content-box\") {\n orgBox = innerBox(orgBox, \"border-*-width\", element);\n orgBox = innerBox(orgBox, \"padding-*\", element);\n } else if (backgroundOrigin == \"padding-box\") {\n orgBox = innerBox(orgBox, \"border-*-width\", element);\n }\n\n if (!/^\\s*auto(\\s+auto)?\\s*$/.test(backgroundSize)) {\n if (backgroundSize == \"contain\") {\n f = Math.min(orgBox.width / img_width,\n orgBox.height / img_height);\n img_width *= f;\n img_height *= f;\n }\n else if (backgroundSize == \"cover\") {\n f = Math.max(orgBox.width / img_width,\n orgBox.height / img_height);\n img_width *= f;\n img_height *= f;\n }\n else {\n var size = backgroundSize.split(/\\s+/g);\n // compute width\n if (/%$/.test(size[0])) {\n img_width = orgBox.width * parseFloat(size[0]) / 100;\n } else {\n img_width = parseFloat(size[0]);\n }\n // compute height\n if (size.length == 1 || size[1] == \"auto\") {\n img_height = img_width / aspect_ratio;\n } else if (/%$/.test(size[1])) {\n img_height = orgBox.height * parseFloat(size[1]) / 100;\n } else {\n img_height = parseFloat(size[1]);\n }\n }\n }\n\n var pos = String(backgroundPosition);\n\n // IE sometimes reports single-word positions\n // https://github.com/telerik/kendo-ui-core/issues/2786\n //\n // it seems to switch to percentages when the horizontal\n // position is not \"center\", therefore we don't handle\n // multi-word cases here. All other browsers return\n // percentages or pixels instead of keywords. At least\n // for now...\n switch (pos) {\n case \"bottom\" : pos = \"50% 100%\"; break;\n case \"top\" : pos = \"50% 0\"; break;\n case \"left\" : pos = \"0 50%\"; break;\n case \"right\" : pos = \"100% 50%\"; break;\n case \"center\" : pos = \"50% 50%\"; break;\n }\n\n pos = pos.split(/\\s+/);\n if (pos.length == 1) {\n pos[1] = \"50%\";\n }\n\n if (/%$/.test(pos[0])) {\n pos[0] = parseFloat(pos[0]) / 100 * (orgBox.width - img_width);\n } else {\n pos[0] = parseFloat(pos[0]);\n }\n if (/%$/.test(pos[1])) {\n pos[1] = parseFloat(pos[1]) / 100 * (orgBox.height - img_height);\n } else {\n pos[1] = parseFloat(pos[1]);\n }\n\n var rect = new Rect([ orgBox.left + pos[0], orgBox.top + pos[1] ], [ img_width, img_height ]);\n\n // XXX: background-repeat could be implemented more\n // efficiently as a fill pattern (at least for PDF\n // output, probably SVG too).\n\n function rewX() {\n while (rect.origin.x > box.left) {\n rect.origin.x -= img_width;\n }\n }\n\n function rewY() {\n while (rect.origin.y > box.top) {\n rect.origin.y -= img_height;\n }\n }\n\n function repeatX() {\n while (rect.origin.x < box.right) {\n renderBG(group, rect.clone());\n rect.origin.x += img_width;\n }\n }\n\n if (backgroundRepeat == \"no-repeat\") {\n renderBG(group, rect);\n }\n else if (backgroundRepeat == \"repeat-x\") {\n rewX();\n repeatX();\n }\n else if (backgroundRepeat == \"repeat-y\") {\n rewY();\n while (rect.origin.y < box.bottom) {\n renderBG(group, rect.clone());\n rect.origin.y += img_height;\n }\n }\n else if (backgroundRepeat == \"repeat\") {\n rewX();\n rewY();\n var origin = rect.origin.clone();\n while (rect.origin.y < box.bottom) {\n rect.origin.x = origin.x;\n repeatX();\n rect.origin.y += img_height;\n }\n }\n }\n }\n\n function drawBullet() {\n var listStyleType = getPropertyValue(style, \"list-style-type\");\n if (listStyleType == \"none\") {\n return;\n }\n var listStylePosition = getPropertyValue(style, \"list-style-position\");\n\n function _drawBullet(f) {\n saveStyle(element, function(){\n element.style.position = \"relative\";\n var bullet = element.ownerDocument.createElement(KENDO_PSEUDO_ELEMENT);\n bullet.style.position = \"absolute\";\n bullet.style.boxSizing = \"border-box\";\n if (listStylePosition == \"outside\") {\n bullet.style.width = \"6em\";\n bullet.style.left = \"-6.8em\";\n bullet.style.textAlign = \"right\";\n } else {\n bullet.style.left = \"0px\";\n }\n f(bullet);\n element.insertBefore(bullet, element.firstChild);\n renderElement(bullet, group);\n element.removeChild(bullet);\n });\n }\n\n function elementIndex(f) {\n var a = element.parentNode.children;\n var k = element.getAttribute(\"kendo-split-index\");\n if (k != null) {\n return f(k|0, a.length);\n }\n for (var i = 0; i < a.length; ++i) {\n if (a[i] === element) {\n return f(i, a.length);\n }\n }\n }\n\n switch (listStyleType) {\n case \"circle\":\n case \"disc\":\n case \"square\":\n _drawBullet(function(bullet){\n bullet.innerHTML = ' ';\n bullet.setAttribute(KENDO_BULLET_TYPE, listStyleType);\n });\n break;\n\n case \"decimal\":\n case \"decimal-leading-zero\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n ++idx;\n if (listStyleType == \"decimal-leading-zero\" && idx < 10) {\n idx = \"0\" + idx;\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n\n case \"lower-roman\":\n case \"upper-roman\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n idx = arabicToRoman(idx + 1);\n if (listStyleType == \"upper-roman\") {\n idx = idx.toUpperCase();\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n\n case \"lower-latin\":\n case \"lower-alpha\":\n case \"upper-latin\":\n case \"upper-alpha\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n idx = alphaNumeral(idx);\n if (/^upper/i.test(listStyleType)) {\n idx = idx.toUpperCase();\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n }\n }\n\n // draws a single border box\n function drawOneBox(box, isFirst, isLast) {\n if (box.width === 0 || box.height === 0) {\n return;\n }\n\n drawBackground(box);\n\n var shouldDrawLeft = (left.width > 0 && ((isFirst && dir == \"ltr\") || (isLast && dir == \"rtl\")));\n var shouldDrawRight = (right.width > 0 && ((isLast && dir == \"ltr\") || (isFirst && dir == \"rtl\")));\n\n // The most general case is that the 4 borders have different widths and border\n // radiuses. The way that is handled is by drawing 3 Paths for each border: the\n // straight line, and two round corners which represent half of the entire rounded\n // corner. To simplify code those shapes are drawed at origin (by the drawEdge\n // function), then translated/rotated into the right position.\n //\n // However, this leads to poor results due to rounding in the simpler cases where\n // borders are straight lines. Therefore we handle a few such cases separately with\n // straight lines. C^wC^wC^w -- nope, scratch that. poor rendering was because of a bug\n // in Chrome (getClientRects() returns rounded integer values rather than exact floats.\n // web dev is still a ghetto.)\n\n // first, just in case there is no border...\n if (top.width === 0 && left.width === 0 && right.width === 0 && bottom.width === 0) {\n return;\n }\n\n // START paint borders\n // if all borders have equal colors...\n if (top.color == right.color && top.color == bottom.color && top.color == left.color) {\n\n // if same widths too, we can draw the whole border by stroking a single path.\n if (top.width == right.width && top.width == bottom.width && top.width == left.width)\n {\n if (shouldDrawLeft && shouldDrawRight) {\n // reduce box by half the border width, so we can draw it by stroking.\n box = innerBox(box, top.width/2);\n\n // adjust the border radiuses, again by top.width/2, and make the path element.\n var path = elementRoundBox(element, box, top.width/2);\n path.options.stroke = {\n color: top.color,\n width: top.width\n };\n group.append(path);\n return;\n }\n }\n }\n\n // if border radiuses are zero and widths are at most one pixel, we can again use simple\n // paths.\n if (rTL0.x === 0 && rTR0.x === 0 && rBR0.x === 0 && rBL0.x === 0) {\n // alright, 1.9px will do as well. the difference in color blending should not be\n // noticeable.\n if (top.width < 2 && left.width < 2 && right.width < 2 && bottom.width < 2) {\n // top border\n if (top.width > 0) {\n group.append(\n new Path({\n stroke: { width: top.width, color: top.color }\n })\n .moveTo(box.left, box.top + top.width/2)\n .lineTo(box.right, box.top + top.width/2)\n );\n }\n\n // bottom border\n if (bottom.width > 0) {\n group.append(\n new Path({\n stroke: { width: bottom.width, color: bottom.color }\n })\n .moveTo(box.left, box.bottom - bottom.width/2)\n .lineTo(box.right, box.bottom - bottom.width/2)\n );\n }\n\n // left border\n if (shouldDrawLeft) {\n group.append(\n new Path({\n stroke: { width: left.width, color: left.color }\n })\n .moveTo(box.left + left.width/2, box.top)\n .lineTo(box.left + left.width/2, box.bottom)\n );\n }\n\n // right border\n if (shouldDrawRight) {\n group.append(\n new Path({\n stroke: { width: right.width, color: right.color }\n })\n .moveTo(box.right - right.width/2, box.top)\n .lineTo(box.right - right.width/2, box.bottom)\n );\n }\n\n return;\n }\n }\n // END paint borders\n\n var tmp = adjustBorderRadiusForBox(box, rTL0, rTR0, rBR0, rBL0);\n var rTL = tmp.tl;\n var rTR = tmp.tr;\n var rBR = tmp.br;\n var rBL = tmp.bl;\n\n // top border\n drawEdge(top.color,\n box.width, top.width, left.width, right.width,\n rTL, rTR,\n [ 1, 0, 0, 1, box.left, box.top ]);\n\n // bottom border\n drawEdge(bottom.color,\n box.width, bottom.width, right.width, left.width,\n rBR, rBL,\n [ -1, 0, 0, -1, box.right, box.bottom ]);\n\n // for left/right borders we need to invert the border-radiuses\n function inv(p) {\n return { x: p.y, y: p.x };\n }\n\n // left border\n drawEdge(left.color,\n box.height, left.width, bottom.width, top.width,\n inv(rBL), inv(rTL),\n [ 0, -1, 1, 0, box.left, box.bottom ]);\n\n // right border\n drawEdge(right.color,\n box.height, right.width, top.width, bottom.width,\n inv(rTR), inv(rBR),\n [ 0, 1, -1, 0, box.right, box.top ]);\n }\n }\n\n function gradientRenderer(gradient) {\n return function(group, rect) {\n var width = rect.width(), height = rect.height();\n\n switch (gradient.type) {\n case \"linear\":\n\n // figure out the angle.\n var angle = gradient.angle != null ? gradient.angle : Math.PI;\n switch (gradient.to) {\n case \"top\":\n angle = 0;\n break;\n case \"left\":\n angle = -Math.PI / 2;\n break;\n case \"bottom\":\n angle = Math.PI;\n break;\n case \"right\":\n angle = Math.PI / 2;\n break;\n case \"top left\": case \"left top\":\n angle = -Math.atan2(height, width);\n break;\n case \"top right\": case \"right top\":\n angle = Math.atan2(height, width);\n break;\n case \"bottom left\": case \"left bottom\":\n angle = Math.PI + Math.atan2(height, width);\n break;\n case \"bottom right\": case \"right bottom\":\n angle = Math.PI - Math.atan2(height, width);\n break;\n }\n\n if (gradient.reverse) {\n angle -= Math.PI;\n }\n\n // limit the angle between 0..2PI\n angle %= 2 * Math.PI;\n if (angle < 0) {\n angle += 2 * Math.PI;\n }\n\n // compute gradient's start/end points. here len is the length of the gradient line\n // and x,y is the end point relative to the center of the rectangle in conventional\n // (math) axis direction.\n\n // this is the original (unscaled) length of the gradient line. needed to deal with\n // absolutely positioned color stops. formula from the CSS spec:\n // http://dev.w3.org/csswg/css-images-3/#linear-gradient-syntax\n var pxlen = Math.abs(width * Math.sin(angle)) + Math.abs(height * Math.cos(angle));\n\n // The math below is pretty simple, but it took a while to figure out. We compute x\n // and y, the *end* of the gradient line. However, we want to transform them into\n // element-based coordinates (SVG's gradientUnits=\"objectBoundingBox\"). That means,\n // x=0 is the left edge, x=1 is the right edge, y=0 is the top edge and y=1 is the\n // bottom edge.\n //\n // A naive approach would use the original angle for these calculations. Say we'd\n // like to draw a gradient angled at 45deg in a 100x400 box. When we use\n // objectBoundingBox, the renderer will draw it in a 1x1 *square* box, and then\n // scale that to the desired dimensions. The 45deg angle will look more like 70deg\n // after scaling. SVG (http://www.w3.org/TR/SVG/pservers.html#LinearGradients) says\n // the following:\n //\n // When gradientUnits=\"objectBoundingBox\" and 'gradientTransform' is the\n // identity matrix, the normal of the linear gradient is perpendicular to the\n // gradient vector in object bounding box space (i.e., the abstract coordinate\n // system where (0,0) is at the top/left of the object bounding box and (1,1) is\n // at the bottom/right of the object bounding box). When the object's bounding\n // box is not square, the gradient normal which is initially perpendicular to\n // the gradient vector within object bounding box space may render\n // non-perpendicular relative to the gradient vector in user space. If the\n // gradient vector is parallel to one of the axes of the bounding box, the\n // gradient normal will remain perpendicular. This transformation is due to\n // application of the non-uniform scaling transformation from bounding box space\n // to user space.\n //\n // which is an extremely long and confusing way to tell what I just said above.\n //\n // For this reason we need to apply the reverse scaling to the original angle, so\n // that when it'll finally be rendered it'll actually be at the desired slope. Now\n // I'll let you figure out the math yourself.\n\n var scaledAngle = Math.atan(width * Math.tan(angle) / height);\n var sin = Math.sin(scaledAngle), cos = Math.cos(scaledAngle);\n var len = Math.abs(sin) + Math.abs(cos);\n var x = len/2 * sin;\n var y = len/2 * cos;\n\n // Because of the arctangent, our scaledAngle ends up between -PI/2..PI/2, possibly\n // losing the intended direction of the gradient. The following fixes it.\n if (angle > Math.PI/2 && angle <= 3*Math.PI/2) {\n x = -x;\n y = -y;\n }\n\n // compute the color stops.\n var implicit = [], right = 0;\n var stops = gradient.stops.map(function(s, i){\n var offset = s.percent;\n if (offset) {\n offset = parseFloat(offset) / 100;\n } else if (s.length) {\n offset = parseFloat(s.length) / pxlen;\n } else if (i === 0) {\n offset = 0;\n } else if (i == gradient.stops.length - 1) {\n offset = 1;\n }\n var stop = {\n color: s.color.toCssRgba(),\n offset: offset\n };\n if (offset != null) {\n right = offset;\n // fix implicit offsets\n implicit.forEach(function(s, i){\n var stop = s.stop;\n stop.offset = s.left + (right - s.left) * (i + 1) / (implicit.length + 1);\n });\n implicit = [];\n } else {\n implicit.push({ left: right, stop: stop });\n }\n return stop;\n });\n\n var start = [ 0.5 - x, 0.5 + y ];\n var end = [ 0.5 + x, 0.5 - y ];\n\n // finally, draw it.\n group.append(\n Path.fromRect(rect)\n .stroke(null)\n .fill(new LinearGradient({\n start : start,\n end : end,\n stops : stops,\n userSpace : false\n }))\n );\n break;\n case \"radial\":\n // XXX:\n if (window.console && window.console.log) {\n window.console.log(\"Radial gradients are not yet supported in HTML renderer\");\n }\n break;\n }\n };\n }\n\n function maybeRenderWidget(element, group) {\n var visual;\n\n if (element._kendoExportVisual) {\n visual = element._kendoExportVisual();\n } else if (window.kendo && window.kendo.jQuery && element.getAttribute(window.kendo.attr(\"role\"))) {\n var widget = window.kendo.widgetInstance(window.kendo.jQuery(element));\n if (widget && (widget.exportDOMVisual || widget.exportVisual)) {\n if (widget.exportDOMVisual) {\n visual = widget.exportDOMVisual();\n } else {\n visual = widget.exportVisual();\n }\n }\n }\n\n if (!visual) {\n return false;\n }\n\n var wrap$$1 = new Group();\n wrap$$1.children.push(visual);\n\n var bbox = element.getBoundingClientRect();\n wrap$$1.transform(transform$1().translate(bbox.left, bbox.top));\n\n group.append(wrap$$1);\n\n return true;\n }\n\n function maybeRenderBullet(element, group) {\n var bulletType = element.getAttribute(KENDO_BULLET_TYPE);\n\n if (!bulletType) {\n return false;\n }\n\n var box = element.getBoundingClientRect();\n var color = getComputedStyle$1(element).color;\n\n if (bulletType === 'square') {\n var rectSize = box.height / 5;\n group.append(new Rect$2(new Rect([\n box.right - rectSize,\n box.top + box.height / 2.1\n ], [rectSize, rectSize])).fill(color).stroke(color));\n } else {\n var radius = box.height / 7;\n var center = [\n box.right - radius,\n box.top + (box.height + radius) / 2\n ];\n var circle = new Circle(new Circle$2(center, radius));\n if (bulletType === 'circle') {\n circle.stroke(color, 0.5);\n } else {\n circle.fill(color).stroke(null);\n }\n group.append(circle);\n }\n\n return true;\n }\n\n function renderImage(element, url, group) {\n var box = getContentBox(element);\n var rect = new Rect([ box.left, box.top ], [ box.width, box.height ]);\n var image = new Image$1(url, rect);\n setClipping(image, elementRoundBox(element, box, \"content\"));\n group.append(image);\n }\n\n function zIndexSort(a, b) {\n var sa = getComputedStyle$1(a);\n var sb = getComputedStyle$1(b);\n var za = parseFloat(getPropertyValue(sa, \"z-index\"));\n var zb = parseFloat(getPropertyValue(sb, \"z-index\"));\n var pa = getPropertyValue(sa, \"position\");\n var pb = getPropertyValue(sb, \"position\");\n if (isNaN(za) && isNaN(zb)) {\n if ((/static|absolute/.test(pa)) && (/static|absolute/.test(pb))) {\n return 0;\n }\n if (pa == \"static\") {\n return -1;\n }\n if (pb == \"static\") {\n return 1;\n }\n return 0;\n }\n if (isNaN(za)) {\n return zb === 0 ? 0 : zb > 0 ? -1 : 1;\n }\n if (isNaN(zb)) {\n return za === 0 ? 0 : za > 0 ? 1 : -1;\n }\n return parseFloat(za) - parseFloat(zb);\n }\n\n function isFormField(element) {\n return /^(?:textarea|select|input)$/i.test(element.tagName);\n }\n\n function getSelectedOption(element) {\n if (element.selectedOptions && element.selectedOptions.length > 0) {\n return element.selectedOptions[0];\n }\n return element.options[element.selectedIndex];\n }\n\n function renderCheckbox(element, group) {\n var style = getComputedStyle$1(element);\n var color = getPropertyValue(style, \"color\");\n var box = element.getBoundingClientRect();\n if (element.type == \"checkbox\") {\n group.append(\n Path.fromRect(\n new Rect([ box.left+1, box.top+1 ],\n [ box.width-2, box.height-2 ])\n ).stroke(color, 1)\n );\n if (element.checked) {\n // fill a rectangle inside? looks kinda ugly.\n // group.append(\n // Path.fromRect(\n // new geo.Rect([ box.left+4, box.top+4 ],\n // [ box.width-8, box.height-8])\n // ).fill(color).stroke(null)\n // );\n\n // let's draw a checkmark instead. artistic, eh?\n group.append(\n new Path()\n .stroke(color, 1.2)\n .moveTo(box.left + 0.22 * box.width,\n box.top + 0.55 * box.height)\n .lineTo(box.left + 0.45 * box.width,\n box.top + 0.75 * box.height)\n .lineTo(box.left + 0.78 * box.width,\n box.top + 0.22 * box.width)\n );\n }\n } else {\n group.append(\n new Circle(\n new Circle$2([\n (box.left + box.right) / 2,\n (box.top + box.bottom) / 2\n ], Math.min(box.width-2, box.height-2) / 2)\n ).stroke(color, 1)\n );\n if (element.checked) {\n group.append(\n new Circle(\n new Circle$2([\n (box.left + box.right) / 2,\n (box.top + box.bottom) / 2\n ], Math.min(box.width-8, box.height-8) / 2)\n ).fill(color).stroke(null)\n );\n }\n }\n }\n\n function renderFormField(element, group) {\n var tag = element.tagName.toLowerCase();\n if (tag == \"input\" && (element.type == \"checkbox\" || element.type == \"radio\")) {\n return renderCheckbox(element, group);\n }\n var p = element.parentNode;\n var doc = element.ownerDocument;\n var el = doc.createElement(KENDO_PSEUDO_ELEMENT);\n var option;\n el.style.cssText = getCssText(getComputedStyle$1(element));\n if (tag == \"input\") {\n el.style.whiteSpace = \"pre\";\n }\n if (tag == \"select\" || tag == \"textarea\") {\n el.style.overflow = \"auto\";\n }\n if (tag == \"select\") {\n if (element.multiple) {\n for (var i = 0; i < element.options.length; ++i) {\n option = doc.createElement(KENDO_PSEUDO_ELEMENT);\n option.style.cssText = getCssText(getComputedStyle$1(element.options[i]));\n option.style.display = \"block\"; // IE9 messes up without this\n option.textContent = element.options[i].textContent;\n el.appendChild(option);\n }\n } else {\n option = getSelectedOption(element);\n if (option) {\n el.textContent = option.textContent;\n }\n }\n } else {\n el.textContent = element.value;\n }\n p.insertBefore(el, element);\n el.scrollLeft = element.scrollLeft;\n el.scrollTop = element.scrollTop;\n\n // must temporarily hide the original element, otherwise it\n // may affect layout of the fake element we want to render.\n element.style.display = \"none\";\n\n renderContents(el, group);\n element.style.display = \"\";\n p.removeChild(el);\n }\n\n function serializeSVG(element) {\n var serializer = new window.XMLSerializer();\n var xml = serializer.serializeToString(element);\n\n if (browser.mozilla && !(element.getAttribute(\"width\") && element.getAttribute(\"height\"))) {\n var doc = new window.DOMParser().parseFromString(xml, \"image/svg+xml\");\n var svg$$1 = doc.documentElement;\n var box = getContentBox(element);\n svg$$1.setAttribute(\"width\", box.width);\n svg$$1.setAttribute(\"height\", box.height);\n xml = serializer.serializeToString(svg$$1);\n }\n\n return xml;\n }\n\n function renderContents(element, group) {\n if (nodeInfo._stackingContext.element === element) {\n // the group that was set in pushNodeInfo might have\n // changed due to clipping/transforms, update it here.\n nodeInfo._stackingContext.group = group;\n }\n switch (element.tagName.toLowerCase()) {\n case \"img\":\n renderImage(element, element.src, group);\n break;\n\n case \"svg\":\n var xml = serializeSVG(element);\n var dataURL = \"data:image/svg+xml;base64,\" + (encodeBase64(xml));\n renderImage(element, dataURL, group);\n break;\n\n case \"canvas\":\n try {\n renderImage(element, element.toDataURL(\"image/png\"), group);\n } catch (ex) {\n // tainted; can't draw it, ignore.\n }\n break;\n\n case \"textarea\":\n case \"input\":\n case \"select\":\n renderFormField(element, group);\n break;\n\n default:\n var children = [], floats = [], positioned = [];\n for (var i = element.firstChild; i; i = i.nextSibling) {\n switch (i.nodeType) {\n case 3: // Text\n if (/\\S/.test(i.data)) {\n renderText(element, i, group);\n }\n break;\n case 1: // Element\n var style = getComputedStyle$1(i);\n var floating = getPropertyValue(style, \"float\");\n var position = getPropertyValue(style, \"position\");\n if (position != \"static\") {\n positioned.push(i);\n }\n else if (floating != \"none\") {\n floats.push(i);\n } else {\n children.push(i);\n }\n break;\n }\n }\n\n mergeSort(children, zIndexSort).forEach(function(el){ renderElement(el, group); });\n mergeSort(floats, zIndexSort).forEach(function(el){ renderElement(el, group); });\n mergeSort(positioned, zIndexSort).forEach(function(el){ renderElement(el, group); });\n }\n }\n\n function renderText(element, node, group) {\n if (emptyClipbox()) {\n return;\n }\n var style = getComputedStyle$1(element);\n\n if (parseFloat(getPropertyValue(style, \"text-indent\")) < -500) {\n // assume it should not be displayed. the slider's\n // draggable handle displays a Drag text for some reason,\n // having text-indent: -3333px.\n return;\n }\n\n var text = node.data;\n var start = 0;\n var end = text.search(/\\S\\s*$/) + 1;\n\n if (!end) {\n return; // whitespace-only node\n }\n\n var fontSize = getPropertyValue(style, \"font-size\");\n var lineHeight = getPropertyValue(style, \"line-height\");\n\n // simply getPropertyValue(\"font\") doesn't work in Firefox :-\\\n var font = [\n getPropertyValue(style, \"font-style\"),\n getPropertyValue(style, \"font-variant\"),\n getPropertyValue(style, \"font-weight\"),\n fontSize, // no need for line height here; it breaks layout in FF\n getPropertyValue(style, \"font-family\")\n ].join(\" \");\n\n fontSize = parseFloat(fontSize);\n lineHeight = parseFloat(lineHeight);\n\n if (fontSize === 0 || isNaN(fontSize)) {\n return;\n }\n\n var color = getPropertyValue(style, \"color\");\n var range = element.ownerDocument.createRange();\n var align$$1 = getPropertyValue(style, \"text-align\");\n var isJustified = align$$1 == \"justify\";\n var columnCount = getPropertyValue(style, \"column-count\", 1);\n var whiteSpace = getPropertyValue(style, \"white-space\");\n var textTransform = getPropertyValue(style, \"text-transform\");\n\n // A line of 500px, with a font of 12px, contains an average of 80 characters, but since we\n // err, we'd like to guess a bigger number rather than a smaller one. Multiplying by 5\n // seems to be a good option.\n var estimateLineLength = element.getBoundingClientRect().width / fontSize * 5;\n if (estimateLineLength === 0) {\n estimateLineLength = 500;\n }\n\n // we'll maintain this so we can workaround bugs in Chrome's Range.getClientRects\n // https://github.com/telerik/kendo/issues/5740\n var prevLineBottom = null;\n\n var underline = nodeInfo[\"underline\"];\n var lineThrough = nodeInfo[\"line-through\"];\n var overline = nodeInfo[\"overline\"];\n var underlineOffset = nodeInfo[\"underline-offset\"];\n\n if (underline) {\n forEachRect(decorateUnder);\n }\n\n // doChunk returns true when all text has been rendered\n while (!doChunk()) {}\n\n if (lineThrough || overline) {\n forEachRect(decorateOver);\n }\n\n return; // only function declarations after this line\n\n function forEachRect(callback) {\n range.selectNode(node);\n var clientRects = slice$1$1(range.getClientRects());\n\n forEachRect = function (cb) { return clientRects.forEach(cb); };\n forEachRect(callback);\n }\n\n function actuallyGetRangeBoundingRect(range) {\n // XXX: to be revised when this Chrome bug is fixed:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=612459\n if (microsoft || browser.chrome || browser.safari) {\n // Workaround browser bugs: IE and Chrome would sometimes\n // return 0 or 1-width rectangles before or after the main\n // one. https://github.com/telerik/kendo/issues/4674\n\n // Actually Chrome 50 got worse, since the rectangles can now have the width of a\n // full character, making it hard to tell whether it's a bogus rectangle or valid\n // selection location. The workaround is to ignore rectangles that fall on the\n // previous line. https://github.com/telerik/kendo/issues/5740\n var rectangles = range.getClientRects(), box = {\n top : Infinity,\n right : -Infinity,\n bottom : -Infinity,\n left : Infinity\n }, done = false;\n for (var i = 0; i < rectangles.length; ++i) {\n var b = rectangles[i];\n if (b.width <= 1 || b.bottom === prevLineBottom) {\n continue; // bogus rectangle\n }\n box.left = Math.min(b.left , box.left);\n box.top = Math.min(b.top , box.top);\n box.right = Math.max(b.right , box.right);\n box.bottom = Math.max(b.bottom , box.bottom);\n done = true;\n }\n if (!done) {\n return range.getBoundingClientRect();\n }\n box.width = box.right - box.left;\n box.height = box.bottom - box.top;\n return box;\n }\n return range.getBoundingClientRect();\n }\n\n // Render a chunk of text, typically one line (but for justified text we render each word as\n // a separate Text object, because spacing is variable). Returns true when it finished the\n // current node. After each chunk it updates `start` to just after the last rendered\n // character.\n function doChunk() {\n var origStart = start;\n var box, pos = text.substr(start).search(/\\S/);\n start += pos;\n if (pos < 0 || start >= end) {\n return true;\n }\n\n // Select a single character to determine the height of a line of text. The box.bottom\n // will be essential for us to figure out where the next line begins.\n range.setStart(node, start);\n range.setEnd(node, start + 1);\n box = actuallyGetRangeBoundingRect(range);\n\n // for justified text we must split at each space, because space has variable width.\n var found = false;\n if (isJustified || columnCount > 1) {\n pos = text.substr(start).search(/\\s/);\n if (pos >= 0) {\n // we can only split there if it's on the same line, otherwise we'll fall back\n // to the default mechanism (see findEOL below).\n range.setEnd(node, start + pos);\n var r = actuallyGetRangeBoundingRect(range);\n if (r.bottom == box.bottom) {\n box = r;\n found = true;\n start += pos;\n }\n }\n }\n\n if (!found) {\n // This code does three things: (1) it selects one line of text in `range`, (2) it\n // leaves the bounding rect of that line in `box` and (3) it returns the position\n // just after the EOL. We know where the line starts (`start`) but we don't know\n // where it ends. To figure this out, we select a piece of text and look at the\n // bottom of the bounding box. If it changes, we have more than one line selected\n // and should retry with a smaller selection.\n //\n // To speed things up, we first try to select all text in the node (`start` ->\n // `end`). If there's more than one line there, then select only half of it. And\n // so on. When we find a value for `end` that fits in one line, we try increasing\n // it (also in halves) until we get to the next line. The algorithm stops when the\n // right side of the bounding box does not change.\n //\n // One more thing to note is that everything happens in a single Text DOM node.\n // There's no other tags inside it, therefore the left/top coordinates of the\n // bounding box will not change.\n pos = (function findEOL(min, eol, max){\n range.setEnd(node, eol);\n var r = actuallyGetRangeBoundingRect(range);\n if (r.bottom != box.bottom && min < eol) {\n return findEOL(min, (min + eol) >> 1, eol);\n } else if (r.right != box.right) {\n box = r;\n if (eol < max) {\n return findEOL(eol, (eol + max) >> 1, max);\n } else {\n return eol;\n }\n } else {\n return eol;\n }\n })(start, Math.min(end, start + estimateLineLength), end);\n\n if (pos == start) {\n // if EOL is at the start, then no more text fits on this line. Skip the\n // remainder of this node entirely to avoid a stack overflow.\n return true;\n }\n start = pos;\n\n pos = range.toString().search(/\\s+$/);\n if (pos === 0) {\n return false; // whitespace only; we should not get here.\n }\n if (pos > 0) {\n // eliminate trailing whitespace\n range.setEnd(node, range.startOffset + pos);\n box = actuallyGetRangeBoundingRect(range);\n }\n }\n\n // another workaround for IE: if we rely on getBoundingClientRect() we'll overlap with the bullet for LI\n // elements. Calling getClientRects() and using the *first* rect appears to give us the correct location.\n // Note: not to be used in Chrome as it randomly returns a zero-width rectangle from the previous line.\n if (microsoft) {\n box = range.getClientRects()[0];\n }\n\n var str = range.toString();\n if (!/^(?:pre|pre-wrap)$/i.test(whiteSpace)) {\n // node with non-significant space -- collapse whitespace.\n str = str.replace(/\\s+/g, \" \");\n }\n else if (/\\t/.test(str)) {\n // with significant whitespace we need to do something about literal TAB characters.\n // There's no TAB glyph in a font so they would be rendered in PDF as an empty box,\n // and the whole text will stretch to fill the original width. The core PDF lib\n // does not have sufficient context to deal with it.\n\n // calculate the starting column here, since we initially discarded any whitespace.\n var cc = 0;\n for (pos = origStart; pos < range.startOffset; ++pos) {\n var code = text.charCodeAt(pos);\n if (code == 9) {\n // when we meet a TAB we must round up to the next tab stop.\n // in all browsers TABs seem to be 8 characters.\n cc += 8 - cc % 8;\n } else if (code == 10 || code == 13) {\n // just in case we meet a newline we must restart.\n cc = 0;\n } else {\n // ordinary character --> advance one column\n cc++;\n }\n }\n\n // based on starting column, replace any TAB characters in the string we actually\n // have to display with spaces so that they align to columns multiple of 8.\n while ((pos = str.search(\"\\t\")) >= 0) {\n var indent = \" \".substr(0, 8 - (cc + pos) % 8);\n str = str.substr(0, pos) + indent + str.substr(pos + 1);\n }\n }\n\n if (!found) {\n prevLineBottom = box.bottom;\n }\n drawText(str, box);\n }\n\n function drawText(str, box) {\n // In IE the box height will be approximately lineHeight, while in\n // other browsers it'll (correctly) be the height of the bounding\n // box for the current text/font. Which is to say, IE sucks again.\n // The only good solution I can think of is to measure the text\n // ourselves and center the bounding box.\n if (microsoft && !isNaN(lineHeight)) {\n var height = getFontHeight(font);\n var top = (box.top + box.bottom - height) / 2;\n box = {\n top : top,\n right : box.right,\n bottom : top + height,\n left : box.left,\n height : height,\n width : box.right - box.left\n };\n }\n\n // var path = new Path({ stroke: { color: \"red\" }});\n // path.moveTo(box.left, box.top)\n // .lineTo(box.right, box.top)\n // .lineTo(box.right, box.bottom)\n // .lineTo(box.left, box.bottom)\n // .close();\n // group.append(path);\n\n switch (textTransform) {\n case \"uppercase\":\n str = str.toUpperCase();\n break;\n case \"lowercase\":\n str = str.toLowerCase();\n break;\n case \"capitalize\":\n str = str.replace(/(?:^|\\s)\\S/g, function (l) { return l.toUpperCase(); });\n break;\n }\n\n var text = new TextRect(\n str, new Rect([ box.left, box.top ],\n [ box.width, box.height ]),\n {\n font: font,\n fill: { color: color }\n }\n );\n group.append(text);\n }\n\n function drawTextLine(lineWidth, textBox, color, ypos) {\n if (color) {\n var path = new Path({ stroke: {\n width: lineWidth,\n color: color\n }});\n\n ypos -= lineWidth;\n path.moveTo(textBox.left, ypos)\n .lineTo(textBox.right, ypos);\n group.append(path);\n }\n }\n\n function decorateOver(box) {\n var width = fontSize / 12;\n drawTextLine(width, box, lineThrough, box.bottom - box.height / 2.7);\n drawTextLine(width, box, overline, box.top);\n }\n\n function decorateUnder(box) {\n var width = fontSize / 12;\n var underlinePos = box.bottom;\n if (underlineOffset != null) {\n underlinePos += underlineOffset;\n } else {\n underlinePos += width; // for \"auto\" it seems better to add line width\n }\n drawTextLine(width, box, underline, underlinePos);\n }\n }\n\n function groupInStackingContext(element, group, zIndex) {\n var main;\n if (zIndex != \"auto\") {\n // use the current stacking context\n main = nodeInfo._stackingContext.group;\n zIndex = parseFloat(zIndex);\n } else {\n // normal flow — use given container. we still have to\n // figure out where should we insert this element with the\n // assumption that its z-index is zero, as the group might\n // already contain elements with higher z-index.\n main = group;\n zIndex = 0;\n }\n var a = main.children;\n for (var i = 0; i < a.length; ++i) {\n if (a[i]._dom_zIndex != null && a[i]._dom_zIndex > zIndex) {\n break;\n }\n }\n\n var tmp = new Group();\n main.insert(i, tmp);\n tmp._dom_zIndex = zIndex;\n\n if (main !== group) {\n // console.log(\"Placing\", element, \"in\", nodeInfo._stackingContext.element, \"at position\", i, \" / \", a.length);\n // console.log(a.slice(i+1));\n\n // if (nodeInfo._matrix) {\n // tmp.transform(nodeInfo._matrix);\n // }\n if (nodeInfo._clipbox) {\n var m = nodeInfo._matrix.invert();\n var r = nodeInfo._clipbox.transformCopy(m);\n setClipping(tmp, Path.fromRect(r));\n // console.log(r);\n // tmp.append(Path.fromRect(r));\n // tmp.append(new Text(element.className || element.id, r.topLeft()));\n }\n }\n\n return tmp;\n }\n\n function renderElement(element, container) {\n var style = getComputedStyle$1(element);\n\n updateCounters(style);\n\n if (/^(style|script|link|meta|iframe|col|colgroup)$/i.test(element.tagName)) {\n return;\n }\n\n if (nodeInfo._clipbox == null) {\n return;\n }\n\n var opacity = parseFloat(getPropertyValue(style, \"opacity\"));\n var visibility = getPropertyValue(style, \"visibility\");\n var display = getPropertyValue(style, \"display\");\n\n if (opacity === 0 || visibility == \"hidden\" || display == \"none\") {\n return;\n }\n\n var tr = getTransform(style);\n var group;\n\n var zIndex = getPropertyValue(style, \"z-index\");\n if ((tr || opacity < 1) && zIndex == \"auto\") {\n zIndex = 0;\n }\n group = groupInStackingContext(element, container, zIndex);\n\n // XXX: remove at some point\n // group._pdfElement = element;\n // group.options._pdfDebug = \"\";\n // if (element.id) {\n // group.options._pdfDebug = \"#\" + element.id;\n // }\n // if (element.className) {\n // group.options._pdfDebug += \".\" + element.className.split(\" \").join(\".\");\n // }\n\n if (opacity < 1) {\n group.opacity(opacity * group.opacity());\n }\n\n pushNodeInfo(element, style, group);\n\n if (!tr) {\n _renderWithPseudoElements(element, group);\n }\n else {\n saveStyle(element, function(){\n // must clear transform, so getBoundingClientRect returns correct values.\n pleaseSetPropertyValue(element.style, \"transform\", \"none\", \"important\");\n\n // must also clear transitions, so correct values are returned *immediately*\n pleaseSetPropertyValue(element.style, \"transition\", \"none\", \"important\");\n\n // the presence of any transform makes it behave like it had position: relative,\n // because why not.\n // http://meyerweb.com/eric/thoughts/2011/09/12/un-fixing-fixed-elements-with-css-transforms/\n if (getPropertyValue(style, \"position\") == \"static\") {\n // but only if it's not already positioned. :-/\n pleaseSetPropertyValue(element.style, \"position\", \"relative\", \"important\");\n }\n\n // must translate to origin before applying the CSS\n // transformation, then translate back.\n var bbox = element.getBoundingClientRect();\n var x = bbox.left + tr.origin[0];\n var y = bbox.top + tr.origin[1];\n var m = [ 1, 0, 0, 1, -x, -y ];\n m = mmul(m, tr.matrix);\n m = mmul(m, [ 1, 0, 0, 1, x, y ]);\n m = setTransform$1(group, m);\n\n nodeInfo._matrix = nodeInfo._matrix.multiplyCopy(m);\n\n _renderWithPseudoElements(element, group);\n });\n }\n\n popNodeInfo();\n\n //drawDebugBox(element.getBoundingClientRect(), container);\n }\n\n // function drawDebugBox(box, group, color) {\n // var path = Path.fromRect(new geo.Rect([ box.left, box.top ], [ box.width, box.height ]));\n // if (color) {\n // path.stroke(color);\n // }\n // group.append(path);\n // }\n\n // function dumpTextNode(node) {\n // var txt = node.data.replace(/^\\s+/, \"\");\n // if (txt.length < 100) {\n // console.log(node.data.length + \": |\" + txt);\n // } else {\n // console.log(node.data.length + \": |\" + txt.substr(0, 50) + \"|...|\" + txt.substr(-50));\n // }\n // }\n\n function mmul(a, b) {\n var a1 = a[0], b1 = a[1], c1 = a[2], d1 = a[3], e1 = a[4], f1 = a[5];\n var a2 = b[0], b2 = b[1], c2 = b[2], d2 = b[3], e2 = b[4], f2 = b[5];\n return [\n a1*a2 + b1*c2, a1*b2 + b1*d2,\n c1*a2 + d1*c2, c1*b2 + d1*d2,\n e1*a2 + f1*c2 + e2, e1*b2 + f1*d2 + f2\n ];\n }\n\n var drawing = {\n \tsvg: svg$1,\n \tcanvas: canvas,\n \tutil: util,\n \tHasObservers: HasObservers,\n \tPathParser: PathParser,\n \tparsePath: parsePath,\n \tBaseNode: BaseNode,\n \tOptionsStore: OptionsStore,\n \tSurface: Surface,\n \tSurfaceFactory: SurfaceFactory,\n \texportImage: exportImage,\n \texportSVG: exportSVG,\n \tQuadNode: QuadNode,\n \tShapesQuadTree: ShapesQuadTree,\n \tElement: Element$1,\n \tCircle: Circle,\n \tArc: Arc,\n \tPath: Path,\n \tMultiPath: MultiPath,\n \tText: Text,\n \tImage: Image$1,\n \tGroup: Group,\n \tLayout: Layout,\n \tRect: Rect$2,\n \talign: align,\n \tvAlign: vAlign,\n \tstack: stack,\n \tvStack: vStack,\n \twrap: wrap,\n \tvWrap: vWrap,\n \tfit: fit,\n \tLinearGradient: LinearGradient,\n \tRadialGradient: RadialGradient,\n \tGradientStop: GradientStop,\n \tGradient: Gradient,\n \tAnimation: Animation,\n \tAnimationFactory: AnimationFactory,\n \tdrawDOM: drawDOM,\n \tdrawText: drawText,\n \tgetFontFaces: getFontFaces\n };\n\n kendo.deepExtend(kendo, {\n drawing: drawing,\n geometry: geometry\n });\n\n // Use unique SVG Definition IDs for Kendo UI\n defId = 1000;\n\n kendo.drawing.Segment = kendo.geometry.Segment;\n kendo.dataviz.drawing = kendo.drawing;\n kendo.dataviz.geometry = kendo.geometry;\n kendo.drawing.util.measureText = kendo.util.measureText;\n kendo.drawing.util.objectKey = kendo.util.objectKey;\n kendo.drawing.Color = kendo.Color;\n kendo.util.encodeBase64 = kendo.drawing.util.encodeBase64;\n\n })(window.kendo.jQuery);\n\n (function($) {\n\n var NS = \".kendo\";\n var kendo = window.kendo;\n var deepExtend = kendo.deepExtend;\n var utils = kendo.drawing.util;\n var defined = utils.defined;\n var limitValue = utils.limitValue;\n var eventCoordinates = utils.eventCoordinates;\n var outerWidth = kendo._outerWidth;\n var outerHeight = kendo._outerHeight;\n\n var TOOLTIP_TEMPLATE = '
    ' +\n '
    ' +\n '
    ';\n var TOOLTIP_CLOSE_TEMPLATE = `
    ${kendo.ui.icon($(''), { icon: \"x\" })}
    `;\n\n var SurfaceTooltip = kendo.Class.extend({\n init: function(surface, options) {\n this.element = $(TOOLTIP_TEMPLATE);\n this.content = this.element.children(\".k-tooltip-content\");\n\n options = options || {};\n\n this.options = deepExtend({}, this.options, this._tooltipOptions(options));\n this.popupOptions = {\n appendTo: options.appendTo,\n animation: options.animation,\n copyAnchorStyles: false,\n collision: \"fit fit\"\n };\n\n this._openPopupHandler = this._openPopup.bind(this);\n\n this.surface = surface;\n this._bindEvents();\n },\n\n options: {\n position: \"top\",\n showOn: \"mouseenter\",\n offset: 7,\n autoHide: true,\n hideDelay: 0,\n showAfter: 100\n },\n\n _bindEvents: function() {\n this._showHandler = this._showEvent.bind(this);\n this._surfaceLeaveHandler = this._surfaceLeave.bind(this);\n this._mouseleaveHandler = this._mouseleave.bind(this);\n this._mousemoveHandler = this._mousemove.bind(this);\n\n this.surface.bind(\"click\", this._showHandler);\n this.surface.bind(\"mouseenter\", this._showHandler);\n this.surface.bind(\"mouseleave\", this._mouseleaveHandler);\n this.surface.bind(\"mousemove\", this._mousemoveHandler);\n\n this.surface.element.on(\"mouseleave\" + NS, this._surfaceLeaveHandler);\n\n this.element.on(\"click\" + NS, \".k-tooltip-button\", this._hideClick.bind(this));\n this.element.on(\"mouseleave\" + NS, this._tooltipLeave.bind(this));\n },\n\n getPopup: function() {\n if (!this.popup) {\n this.popup = new kendo.ui.Popup(this.element, this.popupOptions);\n }\n\n return this.popup;\n },\n\n destroy: function() {\n var popup = this.popup;\n\n this.surface.unbind(\"click\", this._showHandler);\n this.surface.unbind(\"mouseenter\", this._showHandler);\n this.surface.unbind(\"mouseleave\", this._mouseleaveHandler);\n this.surface.unbind(\"mousemove\", this._mousemoveHandler);\n\n this.surface.element.off(\"mouseleave\" + NS, this._surfaceLeaveHandler);\n this.element.off(\"click\" + NS);\n this.element.off(\"mouseleave\" + NS);\n\n if (popup) {\n popup.destroy();\n delete this.popup;\n }\n delete this.popupOptions;\n\n clearTimeout(this._timeout);\n\n delete this.element;\n delete this.content;\n delete this.surface;\n },\n\n _tooltipOptions: function(options) {\n options = options || {};\n return {\n position: options.position,\n showOn: options.showOn,\n offset: options.offset,\n autoHide: options.autoHide,\n width: options.width,\n height: options.height,\n content: options.content,\n shared: options.shared,\n hideDelay: options.hideDelay,\n showAfter: options.showAfter\n };\n },\n\n _tooltipShape: function(shape) {\n while (shape && !shape.options.tooltip) {\n shape = shape.parent;\n }\n return shape;\n },\n\n _updateContent: function(target, shape, options) {\n var content = options.content;\n if (kendo.isFunction(content)) {\n content = content({\n element: shape,\n target: target\n });\n }\n\n if (content) {\n this.content.html(content);\n return true;\n }\n },\n\n _position: function(shape, options, elementSize, event) {\n var position = options.position;\n var tooltipOffset = options.offset || 0;\n var surface = this.surface;\n var offset = surface._instance._elementOffset();\n var size = surface.getSize();\n var surfaceOffset = surface._instance._offset;\n var bbox = shape.bbox();\n var width = elementSize.width;\n var height = elementSize.height;\n var left = 0, top = 0;\n\n bbox.origin.translate(offset.left, offset.top);\n if (surfaceOffset) {\n bbox.origin.translate(-surfaceOffset.x, -surfaceOffset.y);\n }\n\n if (position == \"cursor\" && event) {\n var coord = eventCoordinates(event);\n left = coord.x - width / 2;\n top = coord.y - height - tooltipOffset;\n } else if (position == \"left\") {\n left = bbox.origin.x - width - tooltipOffset;\n top = bbox.center().y - height / 2;\n } else if (position == \"right\") {\n left = bbox.bottomRight().x + tooltipOffset;\n top = bbox.center().y - height / 2;\n } else if (position == \"bottom\") {\n left = bbox.center().x - width / 2;\n top = bbox.bottomRight().y + tooltipOffset;\n } else {\n left = bbox.center().x - width / 2;\n top = bbox.origin.y - height - tooltipOffset;\n }\n\n return {\n left: limitValue(left, offset.left, offset.left + size.width),\n top: limitValue(top, offset.top, offset.top + size.height)\n };\n },\n\n show: function(shape, options) {\n this._show(shape, shape, deepExtend({}, this.options, this._tooltipOptions(shape.options.tooltip), options));\n },\n\n hide: function() {\n var popup = this.popup;\n var current = this._current;\n\n delete this._current;\n clearTimeout(this._showTimeout);\n if (popup && popup.visible() && current &&\n !this.surface.trigger(\"tooltipClose\", { element: current.shape, target: current.target, popup: popup })) {\n popup.close();\n }\n },\n\n _hideClick: function(e) {\n e.preventDefault();\n this.hide();\n },\n\n _show: function(target, shape, options, event, delay) {\n var current = this._current;\n\n clearTimeout(this._timeout);\n\n if (current && ((current.shape === shape && options.shared) || current.target === target)) {\n return;\n }\n\n clearTimeout(this._showTimeout);\n\n var popup = this.getPopup();\n\n if (!this.surface.trigger(\"tooltipOpen\", { element: shape, target: target, popup: popup }) &&\n this._updateContent(target, shape, options)) {\n\n this._autoHide(options);\n var elementSize = this._measure(options);\n\n if (popup.visible()) {\n popup.close(true);\n }\n\n this._current = {\n options: options,\n elementSize: elementSize,\n shape: shape,\n target: target,\n position: this._position(options.shared ? shape : target, options, elementSize, event)\n };\n\n if (delay) {\n this._showTimeout = setTimeout(this._openPopupHandler, options.showAfter || 0);\n } else {\n this._openPopup();\n }\n }\n },\n\n _openPopup: function() {\n var current = this._current;\n var position = current.position;\n\n this.getPopup().open(position.left, position.top);\n },\n\n _autoHide: function(options) {\n if (options.autoHide && this._closeButton) {\n this.element.removeClass(\"k-tooltip-closable\");\n this._closeButton.remove();\n delete this._closeButton;\n }\n\n if (!options.autoHide && !this._closeButton) {\n this.element.addClass(\"k-tooltip-closable\");\n this._closeButton = $(TOOLTIP_CLOSE_TEMPLATE).appendTo(this.element);\n }\n },\n\n _showEvent: function(e) {\n var shape = this._tooltipShape(e.element);\n\n if (shape) {\n var options = deepExtend({}, this.options, this._tooltipOptions(shape.options.tooltip));\n\n if (options && options.showOn == e.type) {\n this._show(e.element, shape, options, e.originalEvent, true);\n }\n }\n },\n\n _measure: function(options) {\n this.element.css({\n width: defined(options.width) ? options.width : 'auto',\n height: defined(options.height) ? options.height : 'auto'\n });\n\n const clone = this.element.clone().appendTo(document.body).css({ visibility: 'hidden' });\n const width = outerWidth(clone);\n const height = outerHeight(clone);\n clone.remove();\n\n this.element.css({\n width: width,\n height: height\n });\n\n return {\n width: width,\n height: height\n };\n },\n\n _mouseleave: function(e) {\n if (this.popup && !this._popupRelatedTarget(e.originalEvent)) {\n var tooltip = this;\n var current = tooltip._current;\n\n if (current && current.options.autoHide) {\n tooltip._timeout = setTimeout(function() {\n clearTimeout(tooltip._showTimeout);\n tooltip.hide();\n }, current.options.hideDelay || 0);\n }\n }\n },\n\n _mousemove: function(e) {\n var current = this._current;\n if (current && e.element) {\n var options = current.options;\n if (options.position == \"cursor\") {\n var position = this._position(e.element, options, current.elementSize, e.originalEvent);\n current.position = position;\n this.getPopup().wrapper.css({ left: position.left, top: position.top });\n }\n }\n },\n\n _surfaceLeave: function(e) {\n if (this.popup && !this._popupRelatedTarget(e)) {\n clearTimeout(this._showTimeout);\n this.hide();\n }\n },\n\n _popupRelatedTarget: function(e) {\n return e.relatedTarget && $(e.relatedTarget).closest(this.popup.wrapper).length;\n },\n\n _tooltipLeave: function() {\n var tooltip = this;\n var current = tooltip._current;\n if (current && current.options.autoHide) {\n tooltip._timeout = setTimeout(function() {\n tooltip.hide();\n }, current.options.hideDelay || 0);\n }\n }\n });\n\n kendo.drawing.SurfaceTooltip = SurfaceTooltip;\n\n })(window.kendo.jQuery);\n\n (function($) {\n\n var kendo = window.kendo;\n var draw = kendo.drawing;\n var DrawingSurface = draw.Surface;\n var Widget = kendo.ui.Widget;\n var deepExtend = kendo.deepExtend;\n\n kendo.support.svg = DrawingSurface.support.svg;\n kendo.support.canvas = DrawingSurface.support.canvas;\n\n var Surface = Widget.extend({\n init: function(element, options) {\n Widget.fn.init.call(this, element, {});\n\n this.options = deepExtend({}, this.options, options);\n\n this._instance = DrawingSurface.create(this.element[0], options);\n if (this._instance.translate) {\n this.translate = translate;\n }\n\n this._triggerInstanceHandler = this._triggerInstanceEvent.bind(this);\n this._bindHandler(\"click\");\n this._bindHandler(\"mouseenter\");\n this._bindHandler(\"mouseleave\");\n this._bindHandler(\"mousemove\");\n\n this._enableTracking();\n },\n\n options: {\n name: \"Surface\",\n tooltip: {}\n },\n\n events: [\n \"click\",\n \"mouseenter\",\n \"mouseleave\",\n \"mousemove\",\n \"resize\",\n \"tooltipOpen\",\n \"tooltipClose\"\n ],\n\n _triggerInstanceEvent: function(e) {\n this.trigger(e.type, e);\n },\n\n _bindHandler: function(event) {\n this._instance.bind(event, this._triggerInstanceHandler);\n },\n\n draw: function(element) {\n this._instance.draw(element);\n },\n\n clear: function() {\n if (this._instance) {\n this._instance.clear();\n }\n this.hideTooltip();\n },\n\n destroy: function() {\n if (this._instance) {\n this._instance.destroy();\n delete this._instance;\n }\n\n if (this._tooltip) {\n this._tooltip.destroy();\n delete this._tooltip;\n }\n\n Widget.fn.destroy.call(this);\n },\n\n exportVisual: function() {\n return this._instance.exportVisual();\n },\n\n eventTarget: function(e) {\n return this._instance.eventTarget(e);\n },\n\n showTooltip: function(shape, options) {\n if (this._tooltip) {\n this._tooltip.show(shape, options);\n }\n },\n\n hideTooltip: function() {\n if (this._tooltip) {\n this._tooltip.hide();\n }\n },\n\n suspendTracking: function() {\n this._instance.suspendTracking();\n this.hideTooltip();\n },\n\n resumeTracking: function() {\n this._instance.resumeTracking();\n },\n\n getSize: function() {\n return {\n width: this.element.width(),\n height: this.element.height()\n };\n },\n\n setSize: function(size) {\n this.element.css({\n width: size.width,\n height: size.height\n });\n\n this._size = size;\n this._instance.currentSize(size);\n this._resize();\n },\n\n _resize: function() {\n this._instance.currentSize(this._size);\n this._instance._resize();\n },\n\n _enableTracking: function() {\n if (kendo.ui.Popup) {\n this._tooltip = new draw.SurfaceTooltip(this, this.options.tooltip || {});\n }\n }\n });\n\n kendo.ui.plugin(Surface);\n\n Surface.create = function(element, options) {\n return new Surface(element, options);\n };\n\n kendo.drawing.Surface = Surface;\n\n function translate(offset) {\n this._instance.translate(offset);\n }\n\n })(window.kendo.jQuery);\n\n (function($) {\n\n var kendo = window.kendo;\n var drawing = kendo.drawing;\n var drawDOM = drawing.drawDOM;\n\n drawing.drawDOM = function(element, options) {\n return drawDOM($(element)[0], options);\n };\n\n // Aliases used by spreadsheet/print.js\n drawing.drawDOM.drawText = drawing.drawText;\n drawing.drawDOM.getFontFaces = drawing.getFontFaces;\n\n })(window.kendo.jQuery);\n\n var __meta__$G = {\n id: \"drawing\",\n name: \"Drawing API\",\n category: \"framework\",\n description: \"The Kendo UI low-level drawing API\",\n depends: [ \"core\", \"color\", \"popup\", \"icons\" ]\n };\n\n /***********************************************************************\n * WARNING: this file is auto-generated. If you change it directly,\n * your modifications will eventually be lost. The source code is in\n * `kendo-charts` repository, you should make your changes there and\n * run `src-modules/sync.sh` in this repository.\n */\n\n (function($) {\n /* eslint-disable space-before-blocks, space-before-function-paren, curly, object-curly-spacing */\n\n window.kendo.dataviz = window.kendo.dataviz || {};\n var drawing = kendo.drawing;\n var util = drawing.util;\n var Path = drawing.Path;\n var Group = drawing.Group;\n var Class = kendo.Class;\n var support = kendo.support;\n var geometry = kendo.geometry;\n var Rect = geometry.Rect;\n var Circle = geometry.Circle;\n var geometryTransform = geometry.transform;\n var Segment = geometry.Segment;\n var dataviz = kendo.dataviz;\n\n var deepExtend = kendo.deepExtend;\n var isFunction = kendo.isFunction;\n var __common_getter_js = kendo.getter;\n\n var ARC = \"arc\";\n var ARROW_UP = \"ArrowUp\";\n var ARROW_DOWN = \"ArrowDown\";\n var ARROW_LEFT = \"ArrowLeft\";\n var ARROW_RIGHT = \"ArrowRight\";\n var TAB = \"Tab\";\n var ARIA_ACTIVE_DESCENDANT = \"aria-activedescendant\";\n var AXIS_LABEL_CLICK = \"axisLabelClick\";\n var BLACK = \"#000\";\n var BOTTOM = \"bottom\";\n var CENTER = \"center\";\n var CIRCLE = \"circle\";\n var COORD_PRECISION = 3;\n var CROSS = \"cross\";\n var DATE = \"date\";\n var DEFAULT_FONT = \"12px sans-serif\";\n var DEFAULT_HEIGHT = 400;\n var DEFAULT_PRECISION = 10;\n var DEFAULT_WIDTH = 600;\n var END = \"end\";\n var ENTER = \"Enter\";\n var ESCAPE = \"Escape\";\n var FORMAT_REGEX = /\\{\\d+:?/;\n var HEIGHT = \"height\";\n var HIGHLIGHT_ZINDEX = 100;\n var INSIDE = \"inside\";\n var INHERIT = \"inherit\";\n var LEFT = \"left\";\n var MAX_VALUE = Number.MAX_VALUE;\n var MIN_VALUE = -Number.MAX_VALUE;\n var NONE = \"none\";\n var NOTE_CLICK = \"noteClick\";\n var NOTE_HOVER = \"noteHover\";\n var NOTE_LEAVE = \"noteLeave\";\n var OBJECT = \"object\";\n var OUTSIDE = \"outside\";\n var RIGHT = \"right\";\n var ROUNDED_RECT = \"roundedRect\";\n var START = \"start\";\n var STRING = \"string\";\n var TOP = \"top\";\n var TRIANGLE = \"triangle\";\n var SQUARE = \"square\";\n var RECT = \"rect\";\n var VALUE = \"value\";\n var WHITE = \"#fff\";\n var WIDTH = \"width\";\n var X = \"x\";\n var Y = \"y\";\n var DEFAULT_SERIES_OPACITY = 1;\n var POINTER = \"pointer\";\n var HORIZONTAL = \"horizontal\";\n var VERTICAL = \"vertical\";\n\n var constants = {\n \tARC: ARC,\n \tARROW_UP: ARROW_UP,\n \tARROW_DOWN: ARROW_DOWN,\n \tARROW_LEFT: ARROW_LEFT,\n \tARROW_RIGHT: ARROW_RIGHT,\n \tTAB: TAB,\n \tARIA_ACTIVE_DESCENDANT: ARIA_ACTIVE_DESCENDANT,\n \tAXIS_LABEL_CLICK: AXIS_LABEL_CLICK,\n \tBLACK: BLACK,\n \tBOTTOM: BOTTOM,\n \tCENTER: CENTER,\n \tCIRCLE: CIRCLE,\n \tCOORD_PRECISION: COORD_PRECISION,\n \tCROSS: CROSS,\n \tDATE: DATE,\n \tDEFAULT_FONT: DEFAULT_FONT,\n \tDEFAULT_HEIGHT: DEFAULT_HEIGHT,\n \tDEFAULT_PRECISION: DEFAULT_PRECISION,\n \tDEFAULT_WIDTH: DEFAULT_WIDTH,\n \tEND: END,\n \tENTER: ENTER,\n \tESCAPE: ESCAPE,\n \tFORMAT_REGEX: FORMAT_REGEX,\n \tHEIGHT: HEIGHT,\n \tHIGHLIGHT_ZINDEX: HIGHLIGHT_ZINDEX,\n \tINSIDE: INSIDE,\n \tINHERIT: INHERIT,\n \tLEFT: LEFT,\n \tMAX_VALUE: MAX_VALUE,\n \tMIN_VALUE: MIN_VALUE,\n \tNONE: NONE,\n \tNOTE_CLICK: NOTE_CLICK,\n \tNOTE_HOVER: NOTE_HOVER,\n \tNOTE_LEAVE: NOTE_LEAVE,\n \tOBJECT: OBJECT,\n \tOUTSIDE: OUTSIDE,\n \tRIGHT: RIGHT,\n \tROUNDED_RECT: ROUNDED_RECT,\n \tSTART: START,\n \tSTRING: STRING,\n \tTOP: TOP,\n \tTRIANGLE: TRIANGLE,\n \tSQUARE: SQUARE,\n \tRECT: RECT,\n \tVALUE: VALUE,\n \tWHITE: WHITE,\n \tWIDTH: WIDTH,\n \tX: X,\n \tY: Y,\n \tDEFAULT_SERIES_OPACITY: DEFAULT_SERIES_OPACITY,\n \tPOINTER: POINTER,\n \tHORIZONTAL: HORIZONTAL,\n \tVERTICAL: VERTICAL\n };\n\n function isArray(value) {\n return Array.isArray(value);\n }\n\n function addClass(element, classes) {\n var classArray = isArray(classes) ? classes : [ classes ];\n\n for (var idx = 0; idx < classArray.length; idx++) {\n var className = classArray[idx];\n if (element.className.indexOf(className) === -1) {\n element.className += \" \" + className;\n }\n }\n }\n\n var SPACE_REGEX = /\\s+/g;\n\n function removeClass(element, className) {\n if (element && element.className) {\n element.className = element.className.replace(className, \"\").replace(SPACE_REGEX, \" \");\n }\n }\n\n function alignPathToPixel(path) {\n var offset = 0.5;\n if (path.options.stroke && kendo.drawing.util.defined(path.options.stroke.width)) {\n if (path.options.stroke.width % 2 === 0) {\n offset = 0;\n }\n }\n\n for (var i = 0; i < path.segments.length; i++) {\n path.segments[i].anchor().round(0).translate(offset, offset);\n }\n\n return path;\n }\n\n function clockwise(angle1, angle2) {\n // True if angle2 is clockwise of angle1\n // assuming angles grow in clock-wise direction\n // (as in the pie and radar charts)\n return -angle1.x * angle2.y + angle1.y * angle2.x < 0;\n }\n\n function isNumber(value) {\n return typeof value === \"number\" && !isNaN(value);\n }\n\n function isString(value) {\n return typeof value === STRING;\n }\n\n function convertableToNumber(value) {\n return isNumber(value) || (isString(value) && isFinite(value));\n }\n\n function cycleUp(index, count) {\n return (index + 1) % count;\n }\n\n function cycleDown(index, count) {\n var result = index - 1;\n\n return result < 0 ? count - 1 : result;\n }\n\n function cycleIndex(index, length) {\n if (length === 1 || (index % length) === 0) {\n return 0;\n }\n\n if (index < 0) {\n return length + (index % length);\n } else if (index >= length) {\n return index % length;\n }\n\n return index;\n }\n\n function isObject(value) {\n return typeof value === \"object\";\n }\n\n function styleValue(value) {\n if (isNumber(value)) {\n return value + \"px\";\n }\n return value;\n }\n\n var SIZE_STYLES_REGEX = /width|height|top|left|bottom|right/i;\n\n function isSizeField(field) {\n return SIZE_STYLES_REGEX.test(field);\n }\n\n function elementStyles(element, styles) {\n var stylesArray = isString(styles) ? [ styles ] : styles;\n\n if (isArray(stylesArray)) {\n var result = {};\n var style = window.getComputedStyle(element);\n\n for (var idx = 0; idx < stylesArray.length; idx++) {\n var field = stylesArray[idx];\n result[field] = isSizeField(field) ? parseFloat(style[field]) : style[field];\n }\n\n return result;\n } else if (isObject(styles)) {\n for (var field$1 in styles) {\n element.style[field$1] = styleValue(styles[field$1]);\n }\n }\n }\n\n function getSpacing(value, defaultSpacing) {\n if (defaultSpacing === void 0) { defaultSpacing = 0; }\n\n var spacing = { top: 0, right: 0, bottom: 0, left: 0 };\n\n if (typeof(value) === \"number\") {\n spacing[TOP] = spacing[RIGHT] = spacing[BOTTOM] = spacing[LEFT] = value;\n } else {\n spacing[TOP] = value[TOP] || defaultSpacing;\n spacing[RIGHT] = value[RIGHT] || defaultSpacing;\n spacing[BOTTOM] = value[BOTTOM] || defaultSpacing;\n spacing[LEFT] = value[LEFT] || defaultSpacing;\n }\n\n return spacing;\n }\n\n var current = {\n compile: function(template) {\n return template;\n }\n };\n\n var TemplateService = Class.extend({\n\n });\n\n TemplateService.register = function(userImplementation) {\n current = userImplementation;\n };\n\n TemplateService.compile = function(template, options) {\n return current.compile(template, options);\n };\n\n function getTemplate(options) {\n if (options === void 0) { options = {}; }\n\n var template;\n if (options.template) {\n options.template = template = TemplateService.compile(options.template);\n } else if (isFunction(options.content)) {\n template = options.content;\n }\n\n return template;\n }\n\n function getTemplate$1(options) {\n if (options === void 0) { options = {}; }\n\n var ariaTemplate;\n if (options.ariaTemplate) {\n options.ariaTemplate = ariaTemplate = TemplateService.compile(options.ariaTemplate);\n } else if (isFunction(options.ariaContent)) {\n ariaTemplate = options.ariaContent;\n }\n\n return ariaTemplate;\n }\n\n function grep(array, callback) {\n var length = array.length;\n var result = [];\n for (var idx = 0; idx < length; idx++) {\n if (callback(array[idx])) {\n result .push(array[idx]);\n }\n }\n\n return result;\n }\n\n function hasClasses(element, classNames) {\n if (element.className) {\n var names = classNames.split(\" \");\n for (var idx = 0; idx < names.length; idx++) {\n if (element.className.indexOf && element.className.indexOf(names[idx]) !== -1) {\n return true;\n }\n }\n }\n }\n\n // TODO: Remove and replace with Map/WeakMap.\n var HashMap = function HashMap() {\n this._map = new Map();\n };\n\n HashMap.prototype.get = function get (key) {\n return this._map.get(key);\n };\n\n HashMap.prototype.set = function set (key, value) {\n this._map.set(key, value);\n };\n\n function inArray(value, array) {\n if (array) {\n return array.indexOf(value) !== -1;\n }\n }\n\n function interpolateValue(start, end, progress) {\n return kendo.drawing.util.round(start + (end - start) * progress, COORD_PRECISION);\n }\n\n var TRIGGER = 'trigger';\n\n var InstanceObserver = Class.extend({\n init: function(observer, handlers) {\n this.observer = observer;\n this.handlerMap = deepExtend({}, this.handlerMap, handlers);\n },\n\n trigger: function(name, args) {\n var ref = this;\n var observer = ref.observer;\n var handlerMap = ref.handlerMap;\n var isDefaultPrevented;\n if (handlerMap[name]) {\n isDefaultPrevented = this.callObserver(handlerMap[name], args);\n } else if (observer[TRIGGER]) {\n isDefaultPrevented = this.callObserver(TRIGGER, name, args);\n }\n\n return isDefaultPrevented;\n },\n\n callObserver: function(fnName) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n return this.observer[fnName].apply(this.observer, args);\n },\n\n requiresHandlers: function(names) {\n var this$1$1 = this;\n\n if (this.observer.requiresHandlers) {\n return this.observer.requiresHandlers(names);\n }\n\n for (var idx = 0; idx < names.length; idx++) {\n if (this$1$1.handlerMap[names[idx]]) {\n return true;\n }\n }\n }\n });\n\n function isPlainObject(value) {\n return Object.prototype.toString.call(value) === \"[object Object]\";\n }\n\n function map(array, callback) {\n var length = array.length;\n var result = [];\n for (var idx = 0; idx < length; idx++) {\n var value = callback(array[idx]);\n if (kendo.drawing.util.defined(value)) {\n result.push(value);\n }\n }\n return result;\n }\n\n var browser = support.browser || {};\n\n function mousewheelDelta(e) {\n var delta = 0;\n\n if (e.wheelDelta) {\n delta = -e.wheelDelta / 120;\n\n if (browser.webkit) {\n // Webkit browsers scale the delta by twice the device resolution.\n // Possibly related to https://bugs.webkit.org/show_bug.cgi?id=196339\n //\n // Low device resolutions (e.g. zoom-out to 30%) also behave strangely.\n delta = delta / (2 * Math.max(window.devicePixelRatio, 0.625));\n }\n } else if (e.detail) {\n delta = e.detail / 3;\n }\n\n delta = delta > 0 ? Math.ceil(delta) : Math.floor(delta);\n\n return delta;\n }\n\n var ref = kendo.drawing.util;\n var append = ref.append;\n var bindEvents = ref.bindEvents;\n var defined = ref.defined;\n var deg = ref.deg;\n var elementOffset = ref.elementOffset;\n var elementSize = ref.elementSize;\n var eventCoordinates = ref.eventCoordinates;\n var eventElement = ref.eventElement;\n var hashKey = ref.hashKey;\n var last = ref.last;\n var limitValue = ref.limitValue;\n var objectKey = ref.objectKey;\n var rad = ref.rad;\n var round = ref.round;\n var unbindEvents = ref.unbindEvents;\n var valueOrDefault = ref.valueOrDefault;\n\n var FontLoader = Class.extend({\n\n });\n\n FontLoader.fetchFonts = function(options, fonts, state) {\n if (state === void 0) { state = { depth: 0 }; }\n\n var MAX_DEPTH = 5;\n\n if (!options || state.depth > MAX_DEPTH || !document.fonts) {\n return;\n }\n\n Object.keys(options).forEach(function(key) {\n var value = options[key];\n if (key === \"dataSource\" || key[0] === \"$\" || !value) {\n return;\n }\n\n if (key === \"font\") {\n fonts.push(value);\n } else if (typeof value === \"object\") {\n state.depth++;\n FontLoader.fetchFonts(value, fonts, state);\n state.depth--;\n }\n });\n };\n\n FontLoader.loadFonts = function(fonts, callback) {\n var promises = [];\n\n if (fonts.length > 0 && document.fonts) {\n try {\n promises = fonts.map(function(font) {\n return document.fonts.load(font);\n });\n } catch (e) {\n // Silence font-loading errors\n kendo.logToConsole(e);\n }\n\n Promise.all(promises).then(callback, callback);\n } else {\n callback();\n }\n };\n\n FontLoader.preloadFonts = function(options, callback) {\n var fonts = [];\n FontLoader.fetchFonts(options, fonts);\n\n FontLoader.loadFonts(fonts, callback);\n };\n\n function setDefaultOptions(type, options) {\n var proto = type.prototype;\n if (proto.options) {\n proto.options = deepExtend({}, proto.options, options);\n } else {\n proto.options = options;\n }\n }\n\n var KICON = 'k-icon';\n var KI_PREFFIX = 'k-i-';\n var KFONTICON = 'k-font-icon';\n var KSVGICON = 'k-svg-icon';\n var KSVG_PREFFIX = 'k-svg-i-';\n\n var HTMLBaseIcon = Class.extend({\n init: function(element, options) {\n this.element = element;\n this.options = deepExtend({}, this.options, options);\n\n this.wrapper();\n },\n\n wrapper: function() {\n this.addClasses();\n },\n\n addClasses: function() {\n },\n\n html: function() {\n return this.element.outerHTML;\n }\n });\n\n setDefaultOptions(HTMLBaseIcon, {\n name: '',\n size: 'none',\n themeColor: 'none',\n flip: 'default',\n iconClass: '',\n stylingOptions: [ 'size', 'themeColor', 'fill' ]\n });\n\n var HTMLFontIcon = HTMLBaseIcon.extend({\n init: function(element, options) {\n HTMLBaseIcon.fn.init.call(this, element, options);\n },\n\n wrapper: function() {\n // Find if there is an existing k-i- class appended to the element.\n var currentIconClass = this.element.className.split(\" \").find(function (x) { return x.startsWith(KI_PREFFIX); });\n var className = this.options.icon ? (\"\" + (this.options.icon.startsWith(KI_PREFFIX) ? \"\" : KI_PREFFIX) + (this.options.icon)) : \"\";\n\n this._className = className;\n\n addClass(this.element, KICON);\n addClass(this.element, KFONTICON);\n removeClass(this.element, currentIconClass); // Remove any existing icons.\n addClass(this.element, className);\n addClass(this.element, this.options.iconClass || '');\n\n HTMLBaseIcon.fn.wrapper.call(this);\n }\n });\n\n setDefaultOptions(HTMLFontIcon, {\n name: 'HTMLFontIcon',\n icon: null\n });\n\n var HTMLSvgIcon = HTMLBaseIcon.extend({\n init: function(element, options) {\n // Ensure that the inner contents of the wrapping span element are always removed for re-rendering purposes.\n element.innerHTML = \"\";\n\n HTMLBaseIcon.fn.init.call(this, element, options);\n },\n\n wrapper: function() {\n var icon = this.options.icon;\n var iconClass = this.options.iconClass;\n var currentIconClass = this.element.className.split(\" \").find(function (x) { return x.startsWith(KSVG_PREFFIX); });\n\n if (!icon && iconClass) {\n // match k-i-(some-icon-name)\n var regex = /k-i-(\\w+(?:-\\w+)*)/;\n var iconNameMatch = iconClass.match(regex);\n if (iconNameMatch) {\n icon = iconNameMatch[1];\n iconClass = iconClass.replace(iconNameMatch[0], \"\");\n }\n }\n\n if (isString(icon)) {\n icon = icon.replace(\"k-i-\", \"\").replace(/-./g, function (x) { return x[1].toUpperCase(); });\n icon = this.options.svgIcons[icon] || this.options.svgIcons[(icon + \"Icon\")];\n }\n\n var className = icon && icon.name ? (\"\" + KSVG_PREFFIX + (icon.name)) : \"\";\n this._className = className;\n\n addClass(this.element, KSVGICON);\n removeClass(this.element, currentIconClass);\n addClass(this.element, className);\n addClass(this.element, iconClass || \"\");\n this.element.setAttribute(\"aria-hidden\", \"true\");\n\n if (icon && isPlainObject(icon)) {\n var svgElement = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svgElement.setAttribute(\"viewBox\", icon.viewBox || \"\");\n svgElement.setAttribute(\"focusable\", \"false\");\n svgElement.innerHTML = icon.content || \"\";\n\n this.element.appendChild(svgElement);\n }\n\n HTMLBaseIcon.fn.wrapper.call(this);\n }\n });\n\n setDefaultOptions(HTMLSvgIcon, {\n name: 'HTMLSvgIcon',\n icon: null,\n svgIcons: {}\n });\n\n var ICON_TYPES = {\n 'svg': HTMLSvgIcon,\n 'font': HTMLFontIcon\n };\n\n function renderIcon(iconElement, iconOptions) {\n var element = iconElement;\n var options = iconOptions;\n\n if (!element\n || (isObject(element) && !(element instanceof HTMLElement))\n || isString(element)) {\n options = element;\n element = document.createElement(\"span\");\n }\n\n if (isString(options)) {\n options = {\n icon: options\n };\n }\n\n if (!options.type) {\n options.type = 'svg';\n }\n\n if (!ICON_TYPES[options.type]) {\n return null;\n }\n\n return (new ICON_TYPES[options.type](element, options).html());\n }\n\n function sparseArrayLimits(arr) {\n var min = MAX_VALUE;\n var max = MIN_VALUE;\n\n for (var idx = 0, length = arr.length; idx < length; idx++) {\n var value = arr[idx];\n if (value !== null && isFinite(value)) {\n min = Math.min(min, value);\n max = Math.max(max, value);\n }\n }\n\n return {\n min: min === MAX_VALUE ? undefined : min,\n max: max === MIN_VALUE ? undefined : max\n };\n }\n\n function find(array, predicate) {\n for (var i = 0; i < array.length; i++) {\n var item = array[i];\n if (predicate(item, i, array)) {\n return item;\n }\n }\n }\n\n var Matrix = geometry.Matrix;\n var matrixRegexp = /matrix\\((.*)\\)/;\n\n function parseMatrix(matrixString) {\n var match = matrixString.match(matrixRegexp);\n if (match === null || match.length !== 2) {\n return Matrix.unit();\n }\n\n var members = match[1].split(',').map(function (x) { return parseFloat(x); });\n return new (Function.prototype.bind.apply( Matrix, [ null ].concat( members) ));\n }\n\n function transformMatrix(element) {\n var transform = getComputedStyle(element).transform;\n\n if (transform === 'none') {\n return Matrix.unit();\n }\n\n return parseMatrix(transform);\n }\n\n function elementScale(element) {\n if (!element) {\n return Matrix.unit();\n }\n\n var matrix = transformMatrix(element);\n var parent = element.parentElement;\n while (parent) {\n var parentMatrix = transformMatrix(parent);\n matrix = matrix.multiplyCopy(parentMatrix);\n parent = parent.parentElement;\n }\n\n matrix.b = matrix.c = matrix.e = matrix.f = 0;\n return matrix;\n }\n\n function autoTextColor(color) {\n var isDark = new kendo.Color(color).isDark();\n if (isDark) {\n return WHITE;\n }\n\n return BLACK;\n }\n\n var DELETED = {};\n\n var LegacySet = Class.extend({\n init: function(values) {\n var this$1$1 = this;\n\n this._index = {};\n this._values = values ? values.slice(0) : [];\n\n for (var i = 0; i < this._values.length; i++) {\n this$1$1._index[this$1$1._values[i]] = i;\n }\n },\n\n values: function() {\n return this._values.filter(function (item) { return item !== DELETED; });\n },\n\n has: function(value) {\n return this._index[value] !== undefined;\n },\n\n add: function(value) {\n if (!this.has(value)) {\n this._index[value] = this._values.length;\n this._values.push(value);\n }\n },\n\n delete: function(value) {\n var index = this._index[value];\n if (index !== undefined) {\n this._values[index] = DELETED;\n delete this._index[value];\n }\n },\n\n clear: function() {\n this._index = {};\n this._values = [];\n }\n });\n\n if (Object.defineProperties) {\n Object.defineProperties(LegacySet.fn, {\n size: {\n get: function() {\n return this._values.length;\n }\n }\n });\n }\n\n var SetWrapper = Class.extend({\n init: function(values) {\n this._set = new Set(values);\n },\n\n values: function() {\n return Array.from(this._set);\n },\n\n has: function(value) {\n return this._set.has(value);\n },\n\n add: function(value) {\n this._set.add(value);\n },\n\n delete: function(value) {\n this._set.delete(value);\n },\n\n clear: function() {\n this._set.clear();\n }\n });\n\n if (Object.defineProperties) {\n Object.defineProperties(SetWrapper.fn, {\n size: {\n get: function() {\n return this._set.size;\n }\n }\n });\n }\n\n // TODO: Drop LegacySet when removing support for IE10\n var supportsSet = function () {\n var supported = false;\n\n if (typeof Set === 'function') {\n var set = new Set([1]);\n supported = set.has(1);\n }\n\n return supported;\n };\n\n function createHashSet(values) {\n if (supportsSet()) {\n return new SetWrapper(values);\n }\n\n return new LegacySet(values);\n }\n\n function defaultErrorHandler(error) {\n throw error;\n }\n\n var keys = {\n INSERT: 45,\n DELETE: 46,\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n ESC: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n END: 35,\n HOME: 36,\n SPACEBAR: 32,\n PAGEUP: 33,\n PAGEDOWN: 34,\n F2: 113,\n F10: 121,\n F12: 123,\n NUMPAD_PLUS: 107,\n NUMPAD_MINUS: 109,\n NUMPAD_DOT: 110\n };\n\n function hasOwnProperty(obj, property) {\n return Object.prototype.hasOwnProperty.call(obj, property);\n }\n\n // Based on the implementation from kendo-spreadsheet-common/src/calc.js\n var Matrix$1 = Class.extend({\n init: function() {\n this.height = 0;\n this.width = 0;\n this.data = [];\n },\n\n clone: function() {\n var m = new Matrix$1();\n m.height = this.height;\n m.width = this.width;\n m.data = this.data.map(function (row) { return row.slice(); });\n return m;\n },\n\n get: function(row, col) {\n var line = this.data[row];\n var val = line ? line[col] : null;\n return val;\n },\n\n set: function(row, col, data) {\n var line = this.data[row];\n if (line == null) {\n line = this.data[row] = [];\n }\n line[col] = data;\n if (row >= this.height) {\n this.height = row + 1;\n }\n if (col >= this.width) {\n this.width = col + 1;\n }\n },\n\n each: function(f, includeEmpty) {\n var this$1$1 = this;\n\n for (var row = 0; row < this.height; ++row) {\n for (var col = 0; col < this.width; ++col) {\n var val = this$1$1.get(row, col);\n if (includeEmpty || val != null) {\n val = f(val, row, col);\n if (val !== undefined) {\n return val;\n }\n }\n }\n }\n },\n\n map: function(f, includeEmpty) {\n var m = new Matrix$1();\n this.each(function(el, row, col) {\n m.set(row, col, f(el, row, col));\n }, includeEmpty);\n return m;\n },\n\n transpose: function() {\n var m = new Matrix$1();\n this.each(function(el, row, col) {\n m.set(col, row, el);\n });\n return m;\n },\n\n unit: function(n) {\n this.width = this.height = n;\n var a = this.data = new Array(n);\n for (var i = n; --i >= 0;) {\n var row = a[i] = new Array(n);\n for (var j = n; --j >= 0;) {\n row[j] = i === j ? 1 : 0;\n }\n }\n return this;\n },\n\n multiply: function(b) {\n var a = this;\n var m = new Matrix$1();\n for (var row = 0; row < a.height; ++row) {\n for (var col = 0; col < b.width; ++col) {\n var s = 0;\n for (var i = 0; i < a.width; ++i) {\n var va = a.get(row, i);\n var vb = b.get(i, col);\n if (typeof va === \"number\" && typeof vb === \"number\") {\n s += va * vb;\n }\n }\n m.set(row, col, s);\n }\n }\n return m;\n },\n\n inverse: function() {\n var n = this.width;\n var m = this.augment(new Matrix$1().unit(n));\n var a = m.data;\n\n // Gaussian elimination\n // https://en.wikipedia.org/wiki/Gaussian_elimination#Finding_the_inverse_of_a_matrix\n\n // 1. Get zeros below main diagonal\n var loop = function ( k ) {\n var imax = argmax(k, n, function(i) { return a[i][k]; });\n if (!a[imax][k]) {\n return { v: null }; // singular matrix\n }\n if (k !== imax) {\n var tmp = a[k];\n a[k] = a[imax];\n a[imax] = tmp;\n }\n for (var i = k + 1; i < n; ++i) {\n for (var j = k + 1; j < 2 * n; ++j) {\n a[i][j] -= a[k][j] * a[i][k] / a[k][k];\n }\n a[i][k] = 0;\n }\n };\n\n for (var k = 0; k < n; ++k) {\n var returned = loop( k );\n\n if ( returned ) return returned.v;\n }\n\n // 2. Get 1-s on main diagonal, dividing by pivot\n for (var i$1 = 0; i$1 < n; ++i$1) {\n for (var f = a[i$1][i$1], j$1 = 0; j$1 < 2 * n; ++j$1) {\n a[i$1][j$1] /= f;\n }\n }\n\n // 3. Get zeros above main diagonal. Actually, we only care to compute the right side\n // here (that will be the inverse), so in the inner loop below we go while j >= n,\n // instead of j >= k.\n for (var k$1 = n; --k$1 >= 0;) {\n for (var i$2 = k$1; --i$2 >= 0;) {\n if (a[i$2][k$1]) {\n for (var j$2 = 2 * n; --j$2 >= n;) {\n a[i$2][j$2] -= a[k$1][j$2] * a[i$2][k$1];\n }\n }\n }\n }\n\n return m.slice(0, n, n, n);\n },\n\n augment: function(m) {\n var ret = this.clone();\n var n = ret.width;\n m.each(function(val, row, col) {\n ret.set(row, col + n, val);\n });\n return ret;\n },\n\n slice: function(row, col, height, width) {\n var this$1$1 = this;\n\n var m = new Matrix$1();\n for (var i = 0; i < height; ++i) {\n for (var j = 0; j < width; ++j) {\n m.set(i, j, this$1$1.get(row + i, col + j));\n }\n }\n return m;\n }\n });\n\n function argmax(start, end, f) {\n var max = f(start), pos = start;\n for (var i = start + 1; i < end; i++) {\n var v = f(start);\n if (v > max) {\n max = v;\n pos = start;\n }\n }\n return pos;\n }\n\n var STRING$1 = \"string\";\n var FUNCTION = \"function\";\n\n var preventDefault = function() {\n this._defaultPrevented = true;\n };\n\n var isDefaultPrevented = function() {\n return this._defaultPrevented === true;\n };\n\n var Observable$$1 = (function (Class$$1) {\n function Observable$$1() {\n Class$$1.call(this);\n this._events = {};\n }\n\n if ( Class$$1 ) Observable$$1.__proto__ = Class$$1;\n Observable$$1.prototype = Object.create( Class$$1 && Class$$1.prototype );\n Observable$$1.prototype.constructor = Observable$$1;\n\n Observable$$1.prototype.destroy = function destroy () {\n this.unbind();\n };\n\n Observable$$1.prototype.bind = function bind (event, handlers, one) {\n var that = this,\n idx,\n eventNames = typeof event === STRING$1 ? [event] : event || [],\n length,\n original,\n handler,\n handlersIsFunction = typeof handlers === FUNCTION,\n events;\n\n if (handlers === undefined) {\n for (idx in event) {\n that.bind(idx, event[idx]);\n }\n\n return that;\n }\n\n /* eslint-disable no-loop-func */\n var loop = function ( ) {\n var eventName = eventNames[idx];\n\n handler = handlersIsFunction ? handlers : handlers[eventName];\n\n if (handler) {\n if (one) {\n original = handler;\n handler = function() {\n that.unbind(eventName, handler);\n original.apply(that, arguments);\n };\n\n handler.original = original;\n }\n\n events = that._events[eventName] = that._events[eventName] || [];\n events.push(handler);\n }\n };\n\n for (idx = 0, length = eventNames.length; idx < length; idx++) loop( );\n /* eslint-enable no-loop-func */\n\n return that;\n };\n\n Observable$$1.prototype.one = function one (eventNames, handlers) {\n return this.bind(eventNames, handlers, true);\n };\n\n Observable$$1.prototype.first = function first (eventName, handlers) {\n var that = this,\n idx,\n eventNames = typeof eventName === STRING$1 ? [eventName] : eventName,\n length,\n handler,\n handlersIsFunction = typeof handlers === FUNCTION,\n events;\n\n for (idx = 0, length = eventNames.length; idx < length; idx++) {\n var eventName$1 = eventNames[idx];\n\n handler = handlersIsFunction ? handlers : handlers[eventName$1];\n\n if (handler) {\n events = that._events[eventName$1] = that._events[eventName$1] || [];\n events.unshift(handler);\n }\n }\n\n return that;\n };\n\n Observable$$1.prototype.trigger = function trigger (eventName, eventArgs) {\n var that = this,\n events = that._events[eventName],\n idx,\n length;\n\n if (events) {\n var e = eventArgs || {};\n\n e.sender = that;\n\n e._defaultPrevented = false;\n\n e.preventDefault = preventDefault;\n\n e.isDefaultPrevented = isDefaultPrevented;\n\n events = events.slice();\n\n for (idx = 0, length = events.length; idx < length; idx++) {\n events[idx].call(that, e);\n }\n\n return e._defaultPrevented === true;\n }\n\n return false;\n };\n\n Observable$$1.prototype.unbind = function unbind (eventName, handler) {\n var that = this,\n events = that._events[eventName],\n idx;\n\n if (eventName === undefined) {\n that._events = {};\n } else if (events) {\n if (handler) {\n for (idx = events.length - 1; idx >= 0; idx--) {\n if (events[idx] === handler || events[idx].original === handler) {\n events.splice(idx, 1);\n }\n }\n } else {\n that._events[eventName] = [];\n }\n }\n\n return that;\n };\n\n Observable$$1.prototype._setEvents = function _setEvents (options) {\n var this$1$1 = this;\n\n var length = (this.events || []).length;\n\n for (var idx = 0; idx < length; idx ++) {\n var e = this$1$1.events[idx];\n\n if (this$1$1.options[e] && options[e]) {\n this$1$1.unbind(e, this$1$1.options[e]);\n\n if (this$1$1._events && this$1$1._events[e]) {\n delete this$1$1._events[e];\n }\n }\n }\n\n this.bind(this.events, options);\n };\n\n return Observable$$1;\n }(Class));\n\n function autoMajorUnit(min, max) {\n var diff = round(max - min, DEFAULT_PRECISION - 1);\n\n if (diff === 0) {\n if (max === 0) {\n return 0.1;\n }\n\n diff = Math.abs(max);\n }\n\n var scale = Math.pow(10, Math.floor(Math.log(diff) / Math.log(10)));\n var relativeValue = round((diff / scale), DEFAULT_PRECISION);\n var scaleMultiplier = 1;\n\n if (relativeValue < 1.904762) {\n scaleMultiplier = 0.2;\n } else if (relativeValue < 4.761904) {\n scaleMultiplier = 0.5;\n } else if (relativeValue < 9.523809) {\n scaleMultiplier = 1;\n } else {\n scaleMultiplier = 2;\n }\n\n return round(scale * scaleMultiplier, DEFAULT_PRECISION);\n }\n\n var Point = Class.extend({\n init: function(x, y) {\n\n this.x = x || 0;\n this.y = y || 0;\n },\n\n clone: function() {\n return new Point(this.x, this.y);\n },\n\n equals: function(point) {\n return point && this.x === point.x && this.y === point.y;\n },\n\n rotate: function(center, degrees) {\n var theta = rad(degrees);\n var cosT = Math.cos(theta);\n var sinT = Math.sin(theta);\n var cx = center.x;\n var cy = center.y;\n var ref = this;\n var x = ref.x;\n var y = ref.y;\n\n this.x = round(\n cx + (x - cx) * cosT + (y - cy) * sinT,\n COORD_PRECISION\n );\n\n this.y = round(\n cy + (y - cy) * cosT - (x - cx) * sinT,\n COORD_PRECISION\n );\n\n return this;\n },\n\n multiply: function(a) {\n\n this.x *= a;\n this.y *= a;\n\n return this;\n },\n\n distanceTo: function(point) {\n var dx = this.x - point.x;\n var dy = this.y - point.y;\n\n return Math.sqrt(dx * dx + dy * dy);\n }\n });\n\n Point.onCircle = function(center, angle, radius) {\n var radians = rad(angle);\n\n return new Point(\n center.x - radius * Math.cos(radians),\n center.y - radius * Math.sin(radians)\n );\n };\n\n var Box = Class.extend({\n init: function(x1, y1, x2, y2) {\n\n this.x1 = x1 || 0;\n this.y1 = y1 || 0;\n this.x2 = x2 || 0;\n this.y2 = y2 || 0;\n },\n\n equals: function(box) {\n return this.x1 === box.x1 && this.x2 === box.x2 &&\n this.y1 === box.y1 && this.y2 === box.y2;\n },\n\n width: function() {\n return this.x2 - this.x1;\n },\n\n height: function() {\n return this.y2 - this.y1;\n },\n\n translate: function(dx, dy) {\n this.x1 += dx;\n this.x2 += dx;\n this.y1 += dy;\n this.y2 += dy;\n\n return this;\n },\n\n move: function(x, y) {\n var height = this.height();\n var width = this.width();\n\n if (defined(x)) {\n this.x1 = x;\n this.x2 = this.x1 + width;\n }\n\n if (defined(y)) {\n this.y1 = y;\n this.y2 = this.y1 + height;\n }\n\n return this;\n },\n\n wrap: function(targetBox) {\n this.x1 = Math.min(this.x1, targetBox.x1);\n this.y1 = Math.min(this.y1, targetBox.y1);\n this.x2 = Math.max(this.x2, targetBox.x2);\n this.y2 = Math.max(this.y2, targetBox.y2);\n\n return this;\n },\n\n wrapPoint: function(point) {\n var arrayPoint = isArray(point);\n var x = arrayPoint ? point[0] : point.x;\n var y = arrayPoint ? point[1] : point.y;\n this.wrap(new Box(x, y, x, y));\n\n return this;\n },\n\n snapTo: function(targetBox, axis) {\n\n if (axis === X || !axis) {\n this.x1 = targetBox.x1;\n this.x2 = targetBox.x2;\n }\n\n if (axis === Y || !axis) {\n this.y1 = targetBox.y1;\n this.y2 = targetBox.y2;\n }\n\n return this;\n },\n\n alignTo: function(targetBox, anchor) {\n var height = this.height();\n var width = this.width();\n var axis = anchor === TOP || anchor === BOTTOM ? Y : X;\n var offset = axis === Y ? height : width;\n\n if (anchor === CENTER) {\n var targetCenter = targetBox.center();\n var center = this.center();\n\n this.x1 += targetCenter.x - center.x;\n this.y1 += targetCenter.y - center.y;\n } else if (anchor === TOP || anchor === LEFT) {\n this[axis + 1] = targetBox[axis + 1] - offset;\n } else {\n this[axis + 1] = targetBox[axis + 2];\n }\n\n this.x2 = this.x1 + width;\n this.y2 = this.y1 + height;\n\n return this;\n },\n\n shrink: function(dw, dh) {\n\n this.x2 -= dw;\n this.y2 -= dh;\n\n return this;\n },\n\n expand: function(dw, dh) {\n this.shrink(-dw, -dh);\n return this;\n },\n\n pad: function(padding) {\n var spacing = getSpacing(padding);\n\n this.x1 -= spacing.left;\n this.x2 += spacing.right;\n this.y1 -= spacing.top;\n this.y2 += spacing.bottom;\n\n return this;\n },\n\n unpad: function(padding) {\n var spacing = getSpacing(padding);\n\n spacing.left = -spacing.left;\n spacing.top = -spacing.top;\n spacing.right = -spacing.right;\n spacing.bottom = -spacing.bottom;\n\n return this.pad(spacing);\n },\n\n clone: function() {\n return new Box(this.x1, this.y1, this.x2, this.y2);\n },\n\n center: function() {\n return new Point(\n this.x1 + this.width() / 2,\n this.y1 + this.height() / 2\n );\n },\n\n containsPoint: function(point) {\n\n return point.x >= this.x1 && point.x <= this.x2 &&\n point.y >= this.y1 && point.y <= this.y2;\n },\n\n points: function() {\n return [\n new Point(this.x1, this.y1),\n new Point(this.x2, this.y1),\n new Point(this.x2, this.y2),\n new Point(this.x1, this.y2)\n ];\n },\n\n getHash: function() {\n return [ this.x1, this.y1, this.x2, this.y2 ].join(\",\");\n },\n\n overlaps: function(box) {\n return !(box.y2 < this.y1 || this.y2 < box.y1 || box.x2 < this.x1 || this.x2 < box.x1);\n },\n\n rotate: function(rotation) {\n var width = this.width();\n var height = this.height();\n var ref = this.center();\n var cx = ref.x;\n var cy = ref.y;\n\n var r1 = rotatePoint(0, 0, cx, cy, rotation);\n var r2 = rotatePoint(width, 0, cx, cy, rotation);\n var r3 = rotatePoint(width, height, cx, cy, rotation);\n var r4 = rotatePoint(0, height, cx, cy, rotation);\n\n width = Math.max(r1.x, r2.x, r3.x, r4.x) - Math.min(r1.x, r2.x, r3.x, r4.x);\n height = Math.max(r1.y, r2.y, r3.y, r4.y) - Math.min(r1.y, r2.y, r3.y, r4.y);\n\n this.x2 = this.x1 + width;\n this.y2 = this.y1 + height;\n\n return this;\n },\n\n toRect: function() {\n return new Rect([ this.x1, this.y1 ], [ this.width(), this.height() ]);\n },\n\n hasSize: function() {\n return this.width() !== 0 && this.height() !== 0;\n },\n\n align: function(targetBox, axis, alignment) {\n var c1 = axis + 1;\n var c2 = axis + 2;\n var sizeFunc = axis === X ? WIDTH : HEIGHT;\n var size = this[sizeFunc]();\n\n if (inArray(alignment, [ LEFT, TOP ])) {\n this[c1] = targetBox[c1];\n this[c2] = this[c1] + size;\n } else if (inArray(alignment, [ RIGHT, BOTTOM ])) {\n this[c2] = targetBox[c2];\n this[c1] = this[c2] - size;\n } else if (alignment === CENTER) {\n this[c1] = targetBox[c1] + (targetBox[sizeFunc]() - size) / 2;\n this[c2] = this[c1] + size;\n }\n }\n });\n\n function rotatePoint(x, y, cx, cy, angle) {\n var theta = rad(angle);\n\n return new Point(\n cx + (x - cx) * Math.cos(theta) + (y - cy) * Math.sin(theta),\n cy - (x - cx) * Math.sin(theta) + (y - cy) * Math.cos(theta)\n );\n }\n\n var Ring = Class.extend({\n init: function(center, innerRadius, radius, startAngle, angle) {\n\n this.center = center;\n this.innerRadius = innerRadius;\n this.radius = radius;\n this.startAngle = startAngle;\n this.angle = angle;\n },\n\n clone: function() {\n return new Ring(this.center, this.innerRadius, this.radius, this.startAngle, this.angle);\n },\n\n middle: function() {\n return this.startAngle + this.angle / 2;\n },\n\n setRadius: function(newRadius, innerRadius) {\n if (innerRadius) {\n this.innerRadius = newRadius;\n } else {\n this.radius = newRadius;\n }\n\n return this;\n },\n\n point: function(angle, innerRadius) {\n var radianAngle = rad(angle);\n var ax = Math.cos(radianAngle);\n var ay = Math.sin(radianAngle);\n var radius = innerRadius ? this.innerRadius : this.radius;\n var x = round(this.center.x - (ax * radius), COORD_PRECISION);\n var y = round(this.center.y - (ay * radius), COORD_PRECISION);\n\n return new Point(x, y);\n },\n\n adjacentBox: function(distance, width, height) {\n var sector = this.clone().expand(distance);\n var midAndle = sector.middle();\n var midPoint = sector.point(midAndle);\n var hw = width / 2;\n var hh = height / 2;\n var sa = Math.sin(rad(midAndle));\n var ca = Math.cos(rad(midAndle));\n var x = midPoint.x - hw;\n var y = midPoint.y - hh;\n\n if (Math.abs(sa) < 0.9) {\n x += hw * -ca / Math.abs(ca);\n }\n\n if (Math.abs(ca) < 0.9) {\n y += hh * -sa / Math.abs(sa);\n }\n\n return new Box(x, y, x + width, y + height);\n },\n\n containsPoint: function(p) {\n var center = this.center;\n var innerRadius = this.innerRadius;\n var radius = this.radius;\n var startAngle = this.startAngle;\n var endAngle = this.startAngle + this.angle;\n var dx = p.x - center.x;\n var dy = p.y - center.y;\n var vector = new Point(dx, dy);\n var startPoint = this.point(startAngle);\n var startVector = new Point(startPoint.x - center.x, startPoint.y - center.y);\n var endPoint = this.point(endAngle);\n var endVector = new Point(endPoint.x - center.x, endPoint.y - center.y);\n var dist = round(dx * dx + dy * dy, COORD_PRECISION);\n\n return (startVector.equals(vector) || clockwise(startVector, vector)) &&\n !clockwise(endVector, vector) &&\n dist >= innerRadius * innerRadius && dist <= radius * radius;\n },\n\n getBBox: function() {\n var this$1$1 = this;\n\n var box = new Box(MAX_VALUE, MAX_VALUE, MIN_VALUE, MIN_VALUE);\n var startAngle = round(this.startAngle % 360);\n var endAngle = round((startAngle + this.angle) % 360);\n var innerRadius = this.innerRadius;\n var allAngles = [ 0, 90, 180, 270, startAngle, endAngle ].sort(numericComparer);\n var startAngleIndex = allAngles.indexOf(startAngle);\n var endAngleIndex = allAngles.indexOf(endAngle);\n var angles;\n\n if (startAngle === endAngle) {\n angles = allAngles;\n } else {\n if (startAngleIndex < endAngleIndex) {\n angles = allAngles.slice(startAngleIndex, endAngleIndex + 1);\n } else {\n angles = [].concat(\n allAngles.slice(0, endAngleIndex + 1),\n allAngles.slice(startAngleIndex, allAngles.length)\n );\n }\n }\n\n for (var i = 0; i < angles.length; i++) {\n var point = this$1$1.point(angles[i]);\n box.wrapPoint(point);\n box.wrapPoint(point, innerRadius);\n }\n\n if (!innerRadius) {\n box.wrapPoint(this.center);\n }\n\n return box;\n },\n\n expand: function(value) {\n this.radius += value;\n return this;\n }\n });\n\n function numericComparer(a, b) {\n return a - b;\n }\n\n var Sector = Ring.extend({\n init: function(center, radius, startAngle, angle) {\n Ring.fn.init.call(this, center, 0, radius, startAngle, angle);\n },\n\n expand: function(value) {\n return Ring.fn.expand.call(this, value);\n },\n\n clone: function() {\n return new Sector(this.center, this.radius, this.startAngle, this.angle);\n },\n\n setRadius: function(newRadius) {\n this.radius = newRadius;\n\n return this;\n }\n });\n\n var DIRECTION_ANGLE = 0.001; //any value that will make the endAngle bigger than the start angle will work here.\n\n var ShapeBuilder = Class.extend({\n createRing: function(sector, options) {\n var startAngle = sector.startAngle + 180;\n var endAngle = sector.angle + startAngle;\n\n //required in order to avoid reversing the arc direction in cases like 0.000000000000001 + 100 === 100\n if (sector.angle === 0 || sector.angle > 0 && startAngle === endAngle) {\n endAngle += DIRECTION_ANGLE;\n }\n\n var center = new geometry.Point(sector.center.x, sector.center.y);\n var radius = Math.max(sector.radius, 0);\n var innerRadius = Math.max(sector.innerRadius, 0);\n var arc = new geometry.Arc(center, {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: radius,\n radiusY: radius\n });\n var path = Path.fromArc(arc, options).close();\n\n if (innerRadius) {\n arc.radiusX = arc.radiusY = innerRadius;\n var innerEnd = arc.pointAt(endAngle);\n path.lineTo(innerEnd.x, innerEnd.y);\n path.arc(endAngle, startAngle, innerRadius, innerRadius, true);\n } else {\n path.lineTo(center.x, center.y);\n }\n\n return path;\n }\n });\n\n ShapeBuilder.current = new ShapeBuilder();\n\n var ChartElement = Class.extend({\n init: function(options) {\n\n this.children = [];\n\n this.options = deepExtend({}, this.options, this.initUserOptions(options));\n },\n\n initUserOptions: function(options) {\n return options;\n },\n\n reflow: function(targetBox) {\n var children = this.children;\n var box;\n\n for (var i = 0; i < children.length; i++) {\n var currentChild = children[i];\n currentChild.reflow(targetBox);\n\n box = box ? box.wrap(currentChild.box) : currentChild.box.clone();\n }\n\n this.box = box || targetBox;\n },\n\n destroy: function() {\n var children = this.children;\n\n if (this.animation) {\n this.animation.destroy();\n }\n\n for (var i = 0; i < children.length; i++) {\n children[i].destroy();\n }\n },\n\n getRoot: function() {\n var parent = this.parent;\n\n return parent ? parent.getRoot() : null;\n },\n\n getSender: function() {\n var service = this.getService();\n if (service) {\n return service.sender;\n }\n },\n\n getService: function() {\n var element = this;\n while (element) {\n if (element.chartService) {\n return element.chartService;\n }\n element = element.parent;\n }\n },\n\n translateChildren: function(dx, dy) {\n var children = this.children;\n var childrenCount = children.length;\n\n for (var i = 0; i < childrenCount; i++) {\n children[i].box.translate(dx, dy);\n }\n },\n\n append: function() {\n var arguments$1 = arguments;\n var this$1$1 = this;\n\n for (var i = 0; i < arguments.length; i++) {\n var item = arguments$1[i];\n this$1$1.children.push(item);\n item.parent = this$1$1;\n }\n },\n\n renderVisual: function() {\n if (this.options.visible === false) {\n return;\n }\n\n this.createVisual();\n\n this.addVisual();\n\n this.renderChildren();\n\n this.createAnimation();\n this.renderComplete();\n },\n\n addVisual: function() {\n if (this.visual) {\n this.visual.chartElement = this;\n\n if (this.parent) {\n this.parent.appendVisual(this.visual);\n }\n }\n },\n\n renderChildren: function() {\n var children = this.children;\n var length = children.length;\n for (var i = 0; i < length; i++) {\n children[i].renderVisual();\n }\n },\n\n createVisual: function() {\n this.visual = new Group({\n zIndex: this.options.zIndex,\n visible: valueOrDefault(this.options.visible, true)\n });\n },\n\n createAnimation: function() {\n if (this.visual && this.options.animation) {\n this.animation = drawing.Animation.create(\n this.visual, this.options.animation\n );\n }\n },\n\n appendVisual: function(childVisual) {\n if (!childVisual.chartElement) {\n childVisual.chartElement = this;\n }\n\n if (childVisual.options.noclip) {\n this.clipRoot().visual.append(childVisual);\n } else if (defined(childVisual.options.zIndex)) {\n this.stackRoot().stackVisual(childVisual);\n } else if (this.isStackRoot) {\n this.stackVisual(childVisual);\n } else if (this.visual) {\n this.visual.append(childVisual);\n } else {\n // Allow chart elements without visuals to\n // pass through child visuals\n this.parent.appendVisual(childVisual);\n }\n },\n\n clipRoot: function() {\n if (this.parent) {\n return this.parent.clipRoot();\n }\n\n return this;\n },\n\n stackRoot: function() {\n if (this.parent) {\n return this.parent.stackRoot();\n }\n\n return this;\n },\n\n stackVisual: function(childVisual) {\n var zIndex = childVisual.options.zIndex || 0;\n var visuals = this.visual.children;\n var length = visuals.length;\n var pos;\n\n for (pos = 0; pos < length; pos++) {\n var sibling = visuals[pos];\n var here = valueOrDefault(sibling.options.zIndex, 0);\n if (here > zIndex) {\n break;\n }\n }\n\n this.visual.insert(pos, childVisual);\n },\n\n traverse: function(callback) {\n var children = this.children;\n var length = children.length;\n\n for (var i = 0; i < length; i++) {\n var child = children[i];\n\n callback(child);\n if (child.traverse) {\n child.traverse(callback);\n }\n }\n },\n\n closest: function(match) {\n var element = this;\n var matched = false;\n\n while (element && !matched) {\n matched = match(element);\n\n if (!matched) {\n element = element.parent;\n }\n }\n\n if (matched) {\n return element;\n }\n },\n\n renderComplete: function() {},\n\n hasHighlight: function() {\n var options = (this.options || {}).highlight;\n return !(!this.createHighlight || (options && options.visible === false) || this.visible === false);\n },\n\n toggleHighlight: function(show, opacity) {\n var this$1$1 = this;\n\n var options = (this.options || {}).highlight || {};\n var customVisual = options.visual;\n var highlight = this._highlight;\n\n if (!highlight) {\n var highlightOptions = {\n fill: {\n color: WHITE,\n opacity: opacity || 0.2\n },\n stroke: {\n color: WHITE,\n width: 1,\n opacity: opacity || 0.2\n }\n };\n\n if (customVisual) {\n highlight = this._highlight = customVisual(\n $.extend(this.highlightVisualArgs(), {\n createVisual: function () { return this$1$1.createHighlight(highlightOptions); },\n sender: this.getSender(),\n series: this.series,\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n percentage: this.percentage,\n runningTotal: this.runningTotal,\n total: this.total\n })\n );\n\n if (!highlight) {\n return;\n }\n } else {\n highlight = this._highlight = this.createHighlight(highlightOptions);\n }\n\n if (!defined(highlight.options.zIndex)) {\n highlight.options.zIndex = valueOrDefault(options.zIndex, this.options.zIndex);\n }\n\n this.appendVisual(highlight);\n }\n\n highlight.visible(show);\n },\n\n toggleFocusHighlight: function(show) {\n var options = ((this.options || {}).accessibility || {}).highlight || {};\n var focusHighlight = this._focusHighlight;\n\n if (!show && !focusHighlight) {\n return;\n }\n\n if (!focusHighlight) {\n var rootBackground = this.getRoot().options.background;\n var highlightColor = autoTextColor(rootBackground);\n var focusHighlightOptions = {\n fill: {\n opacity: options.opacity,\n color: options.color\n },\n stroke: $.extend({}, {color: highlightColor}, options.border),\n zIndex: options.zIndex\n };\n\n focusHighlight = this._focusHighlight = this.createFocusHighlight(focusHighlightOptions);\n\n this.appendVisual(focusHighlight);\n }\n\n focusHighlight.visible(show);\n },\n\n createGradientOverlay: function(element, options, gradientOptions) {\n var overlay = new Path($.extend({\n stroke: {\n color: \"none\"\n },\n fill: this.createGradient(gradientOptions),\n closed: element.options.closed\n }, options));\n\n overlay.segments.elements(element.segments.elements());\n\n return overlay;\n },\n\n createGradient: function(options) {\n if (this.parent) {\n return this.parent.createGradient(options);\n }\n },\n\n supportsPointInactiveOpacity: function() {\n return true;\n }\n });\n\n ChartElement.prototype.options = { };\n\n var BoxElement = ChartElement.extend({\n init: function(options) {\n ChartElement.fn.init.call(this, options);\n\n this.options.margin = getSpacing(this.options.margin);\n this.options.padding = getSpacing(this.options.padding);\n },\n\n reflow: function(targetBox) {\n var this$1$1 = this;\n\n var options = this.options;\n var width = options.width;\n var height = options.height;\n var shrinkToFit = options.shrinkToFit;\n var hasSetSize = width && height;\n var margin = options.margin;\n var padding = options.padding;\n var borderWidth = options.border.width;\n var box;\n\n var reflowPaddingBox = function () {\n this$1$1.align(targetBox, X, options.align);\n this$1$1.align(targetBox, Y, options.vAlign);\n this$1$1.paddingBox = box.clone().unpad(margin).unpad(borderWidth);\n };\n\n var contentBox = targetBox.clone();\n if (hasSetSize) {\n contentBox.x2 = contentBox.x1 + width;\n contentBox.y2 = contentBox.y1 + height;\n }\n\n if (shrinkToFit) {\n contentBox.unpad(margin).unpad(borderWidth).unpad(padding);\n }\n\n ChartElement.fn.reflow.call(this, contentBox);\n\n if (hasSetSize) {\n box = this.box = new Box(0, 0, width, height);\n } else {\n box = this.box;\n }\n\n if (shrinkToFit && hasSetSize) {\n reflowPaddingBox();\n contentBox = this.contentBox = this.paddingBox.clone().unpad(padding);\n } else {\n contentBox = this.contentBox = box.clone();\n box.pad(padding).pad(borderWidth).pad(margin);\n reflowPaddingBox();\n }\n\n this.translateChildren(\n box.x1 - contentBox.x1 + margin.left + borderWidth + padding.left,\n box.y1 - contentBox.y1 + margin.top + borderWidth + padding.top\n );\n\n var children = this.children;\n for (var i = 0; i < children.length; i++) {\n var item = children[i];\n item.reflow(item.box);\n }\n },\n\n align: function(targetBox, axis, alignment) {\n this.box.align(targetBox, axis, alignment);\n },\n\n hasBox: function() {\n var options = this.options;\n return options.border.width || options.background;\n },\n\n createVisual: function() {\n ChartElement.fn.createVisual.call(this);\n\n var options = this.options;\n if (options.visible && this.hasBox()) {\n this.visual.append(Path.fromRect(\n this.paddingBox.toRect(),\n this.visualStyle()\n ));\n }\n },\n\n visualStyle: function() {\n var options = this.options;\n var border = options.border || {};\n\n return {\n stroke: {\n width: border.width,\n color: border.color,\n opacity: valueOrDefault(border.opacity, options.opacity),\n dashType: border.dashType\n },\n fill: {\n color: options.background,\n opacity: options.opacity\n },\n cursor: options.cursor\n };\n }\n });\n\n setDefaultOptions(BoxElement, {\n align: LEFT,\n vAlign: TOP,\n margin: {},\n padding: {},\n border: {\n color: BLACK,\n width: 0\n },\n background: \"\",\n shrinkToFit: false,\n width: 0,\n height: 0,\n visible: true\n });\n\n function addAccessibilityAttributesToVisual(visual, accessibilityOptions) {\n if (accessibilityOptions) {\n visual.options.className = accessibilityOptions.className;\n visual.options.role = accessibilityOptions.role;\n visual.options.ariaLabel = accessibilityOptions.ariaLabel;\n visual.options.ariaRoleDescription = accessibilityOptions.ariaRoleDescription;\n visual.options.ariaChecked = accessibilityOptions.ariaChecked;\n }\n }\n\n var ShapeElement = BoxElement.extend({\n init: function(options, pointData) {\n BoxElement.fn.init.call(this, options);\n\n this.pointData = pointData;\n },\n\n getElement: function() {\n var ref = this;\n var options = ref.options;\n var box = ref.paddingBox;\n var type = options.type;\n var rotation = options.rotation;\n var center = box.center();\n var halfWidth = box.width() / 2;\n var halfHeight = box.height() / 2;\n\n if (!options.visible || !this.hasBox()) {\n return null;\n }\n\n var style = this.visualStyle();\n var element;\n\n if (type === CIRCLE) {\n element = new drawing.Circle(\n new Circle([\n round(box.x1 + halfWidth, COORD_PRECISION),\n round(box.y1 + halfHeight, COORD_PRECISION)\n ], Math.min(halfWidth, halfHeight)),\n style\n );\n } else if (type === TRIANGLE) {\n element = Path.fromPoints([\n [ box.x1 + halfWidth, box.y1 ],\n [ box.x1, box.y2 ],\n [ box.x2, box.y2 ]\n ], style).close();\n } else if (type === CROSS) {\n element = new drawing.MultiPath(style);\n\n element.moveTo(box.x1, box.y1).lineTo(box.x2, box.y2);\n element.moveTo(box.x1, box.y2).lineTo(box.x2, box.y1);\n } else {\n var rect = box.toRect();\n if (type === ROUNDED_RECT) {\n var borderRadius = valueOrDefault(options.borderRadius, rect.width() / 5);\n rect.setCornerRadius(borderRadius);\n }\n\n element = Path.fromRect(rect, style);\n }\n\n if (rotation) {\n element.transform(geometryTransform()\n .rotate(-rotation, [ center.x, center.y ])\n );\n }\n\n element.options.zIndex = options.zIndex;\n\n return element;\n },\n\n createElement: function() {\n var this$1$1 = this;\n\n var customVisual = this.options.visual;\n var pointData = this.pointData || {};\n var visual;\n\n if (customVisual) {\n visual = customVisual({\n value: pointData.value,\n dataItem: pointData.dataItem,\n sender: this.getSender(),\n series: pointData.series,\n category: pointData.category,\n rect: this.paddingBox.toRect(),\n options: this.visualOptions(),\n createVisual: function () { return this$1$1.getElement(); }\n });\n } else {\n visual = this.getElement();\n }\n\n return visual;\n },\n\n visualOptions: function() {\n var options = this.options;\n return {\n background: options.background,\n border: options.border,\n margin: options.margin,\n padding: options.padding,\n type: options.type,\n size: options.width,\n visible: options.visible\n };\n },\n\n createVisual: function() {\n this.visual = this.createElement();\n\n addAccessibilityAttributesToVisual(this.visual, this.options.accessibilityOptions);\n }\n });\n\n setDefaultOptions(ShapeElement, {\n type: CIRCLE,\n align: CENTER,\n vAlign: CENTER\n });\n\n var LINEAR = \"linear\";\n var RADIAL = \"radial\";\n\n var GRADIENTS = {\n glass: {\n type: LINEAR,\n rotation: 0,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0\n }, {\n offset: 0.25,\n color: WHITE,\n opacity: 0.3\n }, {\n offset: 1,\n color: WHITE,\n opacity: 0\n } ]\n },\n sharpBevel: {\n type: RADIAL,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0.55\n }, {\n offset: 0.65,\n color: WHITE,\n opacity: 0\n }, {\n offset: 0.95,\n color: WHITE,\n opacity: 0.25\n } ]\n },\n roundedBevel: {\n type: RADIAL,\n stops: [ {\n offset: 0.33,\n color: WHITE,\n opacity: 0.06\n }, {\n offset: 0.83,\n color: WHITE,\n opacity: 0.2\n }, {\n offset: 0.95,\n color: WHITE,\n opacity: 0\n } ]\n },\n roundedGlass: {\n type: RADIAL,\n supportVML: false,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0\n }, {\n offset: 0.5,\n color: WHITE,\n opacity: 0.3\n }, {\n offset: 0.99,\n color: WHITE,\n opacity: 0\n } ]\n },\n sharpGlass: {\n type: RADIAL,\n supportVML: false,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0.2\n }, {\n offset: 0.15,\n color: WHITE,\n opacity: 0.15\n }, {\n offset: 0.17,\n color: WHITE,\n opacity: 0.35\n }, {\n offset: 0.85,\n color: WHITE,\n opacity: 0.05\n }, {\n offset: 0.87,\n color: WHITE,\n opacity: 0.15\n }, {\n offset: 0.99,\n color: WHITE,\n opacity: 0\n } ]\n },\n bubbleShadow: {\n type: RADIAL,\n center: [ 0.5, 0.5 ],\n radius: 0.5\n }\n };\n\n function boxDiff(r, s) {\n if (r.x1 === s.x1 && r.y1 === s.y1 && r.x2 === s.x2 && r.y2 === s.y2) {\n return s;\n }\n\n var a = Math.min(r.x1, s.x1);\n var b = Math.max(r.x1, s.x1);\n var c = Math.min(r.x2, s.x2);\n var d = Math.max(r.x2, s.x2);\n var e = Math.min(r.y1, s.y1);\n var f = Math.max(r.y1, s.y1);\n var g = Math.min(r.y2, s.y2);\n var h = Math.max(r.y2, s.y2);\n var boxes = [];\n\n // X = intersection, 0-7 = possible difference areas\n // h +-+-+-+\n // . |5|6|7|\n // g +-+-+-+\n // . |3|X|4|\n // f +-+-+-+\n // . |0|1|2|\n // e +-+-+-+\n // . a b c d\n\n // we'll always have rectangles 1, 3, 4 and 6\n boxes[0] = new Box(b, e, c, f);\n boxes[1] = new Box(a, f, b, g);\n boxes[2] = new Box(c, f, d, g);\n boxes[3] = new Box(b, g, c, h);\n\n // decide which corners\n if (r.x1 === a && r.y1 === e || s.x1 === a && s.y1 === e) { // corners 0 and 7\n boxes[4] = new Box(a, e, b, f);\n boxes[5] = new Box(c, g, d, h);\n } else { // corners 2 and 5\n boxes[4] = new Box(c, e, d, f);\n boxes[5] = new Box(a, g, b, h);\n }\n\n return grep(boxes, function(box) {\n return box.height() > 0 && box.width() > 0;\n })[0];\n }\n\n var RootElement = ChartElement.extend({\n init: function(options) {\n ChartElement.fn.init.call(this, options);\n\n var rootOptions = this.options;\n rootOptions.width = parseInt(rootOptions.width, 10);\n rootOptions.height = parseInt(rootOptions.height, 10);\n\n this.gradients = {};\n },\n\n reflow: function() {\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var currentBox = new Box(0, 0, options.width, options.height);\n\n this.box = currentBox.unpad(options.margin);\n\n for (var i = 0; i < children.length; i++) {\n children[i].reflow(currentBox);\n currentBox = boxDiff(currentBox, children[i].box) || new Box();\n }\n },\n\n createVisual: function() {\n this.visual = new Group();\n this.createBackground();\n },\n\n createBackground: function() {\n var options = this.options;\n var border = options.border || {};\n var box = this.box.clone().pad(options.margin).unpad(border.width);\n\n var background = Path.fromRect(box.toRect(), {\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n dashType: border.dashType\n },\n fill: {\n color: options.background,\n opacity: options.opacity\n },\n zIndex: -10\n });\n\n this.visual.append(background);\n },\n\n getRoot: function() {\n return this;\n },\n\n createGradient: function(options) {\n var gradients = this.gradients;\n var hashCode = objectKey(options);\n var gradient = GRADIENTS[options.gradient];\n var drawingGradient;\n\n if (gradients[hashCode]) {\n drawingGradient = gradients[hashCode];\n } else {\n var gradientOptions = $.extend({}, gradient, options);\n if (gradient.type === \"linear\") {\n drawingGradient = new drawing.LinearGradient(gradientOptions);\n } else {\n if (options.innerRadius) {\n gradientOptions.stops = innerRadialStops(gradientOptions);\n }\n drawingGradient = new drawing.RadialGradient(gradientOptions);\n drawingGradient.supportVML = gradient.supportVML !== false;\n }\n gradients[hashCode] = drawingGradient;\n }\n\n return drawingGradient;\n },\n\n cleanGradients: function() {\n var gradients = this.gradients;\n for (var hashCode in gradients) {\n gradients[hashCode]._observers = [];//add clear observers method in drawing ObserversMixin\n }\n },\n\n size: function() {\n var options = this.options;\n return new Box(0, 0, options.width, options.height);\n }\n });\n\n setDefaultOptions(RootElement, {\n width: DEFAULT_WIDTH,\n height: DEFAULT_HEIGHT,\n background: WHITE,\n border: {\n color: BLACK,\n width: 0\n },\n margin: getSpacing(5),\n zIndex: -2\n });\n\n function innerRadialStops(options) {\n var stops = options.stops;\n var usedSpace = ((options.innerRadius / options.radius) * 100);\n var length = stops.length;\n var currentStops = [];\n\n for (var i = 0; i < length; i++) {\n var currentStop = $.extend({}, stops[i]);\n currentStop.offset = (currentStop.offset * (100 - usedSpace) + usedSpace) / 100;\n currentStops.push(currentStop);\n }\n\n return currentStops;\n }\n\n var FloatElement = ChartElement.extend({\n init: function(options) {\n ChartElement.fn.init.call(this, options);\n this._initDirection();\n },\n\n _initDirection: function() {\n var options = this.options;\n if (options.vertical) {\n this.groupAxis = X;\n this.elementAxis = Y;\n this.groupSizeField = WIDTH;\n this.elementSizeField = HEIGHT;\n this.groupSpacing = options.spacing;\n this.elementSpacing = options.vSpacing;\n } else {\n this.groupAxis = Y;\n this.elementAxis = X;\n this.groupSizeField = HEIGHT;\n this.elementSizeField = WIDTH;\n this.groupSpacing = options.vSpacing;\n this.elementSpacing = options.spacing;\n }\n },\n\n reflow: function(targetBox) {\n this.box = targetBox.clone();\n this.reflowChildren();\n },\n\n reflowChildren: function() {\n var this$1$1 = this;\n\n var ref = this;\n var box = ref.box;\n var elementAxis = ref.elementAxis;\n var groupAxis = ref.groupAxis;\n var elementSizeField = ref.elementSizeField;\n var groupSizeField = ref.groupSizeField;\n var ref$1 = this.groupOptions();\n var groups = ref$1.groups;\n var groupsSize = ref$1.groupsSize;\n var maxGroupElementsSize = ref$1.maxGroupElementsSize;\n var groupsCount = groups.length;\n var groupsStart = box[groupAxis + 1] + this.alignStart(groupsSize, box[groupSizeField]());\n\n if (groupsCount) {\n var groupStart = groupsStart;\n\n for (var groupIdx = 0; groupIdx < groupsCount; groupIdx++) {\n var group = groups[groupIdx];\n var groupElements = group.groupElements;\n var elementStart = box[elementAxis + 1];\n var groupElementsCount = groupElements.length;\n\n for (var idx = 0; idx < groupElementsCount; idx++) {\n var element = groupElements[idx];\n var elementSize$$1 = this$1$1.elementSize(element);\n var groupElementStart = groupStart + this$1$1.alignStart(elementSize$$1[groupSizeField], group.groupSize);\n\n var elementBox = new Box();\n elementBox[groupAxis + 1] = groupElementStart;\n elementBox[groupAxis + 2] = groupElementStart + elementSize$$1[groupSizeField];\n elementBox[elementAxis + 1] = elementStart;\n elementBox[elementAxis + 2] = elementStart + elementSize$$1[elementSizeField];\n\n element.reflow(elementBox);\n\n elementStart += elementSize$$1[elementSizeField] + this$1$1.elementSpacing;\n }\n groupStart += group.groupSize + this$1$1.groupSpacing;\n }\n box[groupAxis + 1] = groupsStart;\n box[groupAxis + 2] = groupsStart + groupsSize;\n box[elementAxis + 2] = box[elementAxis + 1] + maxGroupElementsSize;\n }\n },\n\n alignStart: function(size, maxSize) {\n var start = 0;\n var align = this.options.align;\n if (align === RIGHT || align === BOTTOM) {\n start = maxSize - size;\n } else if (align === CENTER) {\n start = (maxSize - size) / 2;\n }\n return start;\n },\n\n groupOptions: function() {\n var this$1$1 = this;\n\n var ref = this;\n var box = ref.box;\n var children = ref.children;\n var elementSizeField = ref.elementSizeField;\n var groupSizeField = ref.groupSizeField;\n var elementSpacing = ref.elementSpacing;\n var groupSpacing = ref.groupSpacing;\n var maxSize = round(box[elementSizeField]());\n var childrenCount = children.length;\n var groups = [];\n\n var groupSize = 0;\n var groupElementsSize = 0;\n var groupsSize = 0;\n var maxGroupElementsSize = 0;\n var groupElements = [];\n\n for (var idx = 0; idx < childrenCount; idx++) {\n var element = children[idx];\n if (!element.box) {\n element.reflow(box);\n }\n\n var elementSize$$1 = this$1$1.elementSize(element);\n if (this$1$1.options.wrap && round(groupElementsSize + elementSpacing + elementSize$$1[elementSizeField]) > maxSize) {\n groups.push({\n groupElements: groupElements,\n groupSize: groupSize,\n groupElementsSize: groupElementsSize\n });\n maxGroupElementsSize = Math.max(maxGroupElementsSize, groupElementsSize);\n groupsSize += groupSpacing + groupSize;\n groupSize = 0;\n groupElementsSize = 0;\n groupElements = [];\n }\n groupSize = Math.max(groupSize, elementSize$$1[groupSizeField]);\n if (groupElementsSize > 0) {\n groupElementsSize += elementSpacing;\n }\n groupElementsSize += elementSize$$1[elementSizeField];\n groupElements.push(element);\n }\n\n groups.push({\n groupElements: groupElements,\n groupSize: groupSize,\n groupElementsSize: groupElementsSize\n });\n maxGroupElementsSize = Math.max(maxGroupElementsSize, groupElementsSize);\n groupsSize += groupSize;\n\n return {\n groups: groups,\n groupsSize: groupsSize,\n maxGroupElementsSize: maxGroupElementsSize\n };\n },\n\n elementSize: function(element) {\n return {\n width: element.box.width(),\n height: element.box.height()\n };\n },\n\n createVisual: function() {}\n });\n\n setDefaultOptions(FloatElement, {\n vertical: true,\n wrap: true,\n vSpacing: 0,\n spacing: 0\n });\n\n var DrawingText = drawing.Text;\n\n var Text = ChartElement.extend({\n init: function(content, options) {\n ChartElement.fn.init.call(this, options);\n\n this.content = content;\n\n // Calculate size\n this.reflow(new Box());\n },\n\n reflow: function(targetBox) {\n var options = this.options;\n var size = options.size = util.measureText(this.content, { font: options.font });\n\n this.baseline = size.baseline;\n\n this.box = new Box(targetBox.x1, targetBox.y1,\n targetBox.x1 + size.width, targetBox.y1 + size.height);\n },\n\n createVisual: function() {\n var ref = this.options;\n var font = ref.font;\n var color = ref.color;\n var opacity = ref.opacity;\n var cursor = ref.cursor;\n var stroke = ref.stroke;\n var paintOrder = ref.paintOrder;\n\n this.visual = new DrawingText(this.content, this.box.toRect().topLeft(), {\n font: font,\n fill: { color: color, opacity: opacity },\n cursor: cursor,\n stroke: stroke,\n paintOrder: paintOrder\n });\n }\n });\n\n setDefaultOptions(Text, {\n font: DEFAULT_FONT,\n color: BLACK\n });\n\n function rectToBox(rect) {\n var origin = rect.origin;\n var bottomRight = rect.bottomRight();\n\n return new Box(origin.x, origin.y, bottomRight.x, bottomRight.y);\n }\n\n var ROWS_SPLIT_REGEX = /\\n/m;\n\n var TextBox = BoxElement.extend({\n init: function(content, options, data) {\n BoxElement.fn.init.call(this, options);\n this.content = content;\n this.data = data;\n\n this._initContainer();\n if (this.options._autoReflow !== false) {\n this.reflow(new Box());\n }\n },\n\n _initContainer: function() {\n var options = this.options;\n var rows = String(this.content).split(ROWS_SPLIT_REGEX);\n var floatElement = new FloatElement({ vertical: true, align: options.align, wrap: false });\n var textOptions = deepExtend({ }, options, { opacity: 1, animation: null });\n\n this.container = floatElement;\n this.append(floatElement);\n\n for (var rowIdx = 0; rowIdx < rows.length; rowIdx++) {\n var text = new Text(rows[rowIdx].trim(), textOptions);\n floatElement.append(text);\n }\n },\n\n reflow: function(targetBox) {\n var options = this.options;\n var visualFn = options.visual;\n this.container.options.align = options.align;\n\n if (visualFn && !this._boxReflow) {\n var visualBox = targetBox;\n if (!visualBox.hasSize()) {\n this._boxReflow = true;\n this.reflow(visualBox);\n this._boxReflow = false;\n visualBox = this.box;\n }\n var visual = this.visual = visualFn(this.visualContext(visualBox));\n\n if (visual) {\n visualBox = rectToBox(visual.clippedBBox() || new Rect());\n\n visual.options.zIndex = options.zIndex;\n }\n\n this.box = this.contentBox = this.paddingBox = visualBox;\n } else {\n BoxElement.fn.reflow.call(this, targetBox);\n\n if (options.rotation) {\n var margin = getSpacing(options.margin);\n var box = this.box.unpad(margin);\n\n this.targetBox = targetBox;\n this.normalBox = box.clone();\n\n box = this.rotate();\n box.translate(margin.left - margin.right, margin.top - margin.bottom);\n\n this.rotatedBox = box.clone();\n\n box.pad(margin);\n }\n }\n },\n\n createVisual: function() {\n var options = this.options;\n\n this.visual = new Group({\n transform: this.rotationTransform(),\n zIndex: options.zIndex,\n noclip: options.noclip\n });\n\n if (this.hasBox()) {\n var box = Path.fromRect(this.paddingBox.toRect(), this.visualStyle());\n this.visual.append(box);\n }\n },\n\n renderVisual: function() {\n if (!this.options.visible) {\n return;\n }\n\n if (this.options.visual) {\n var visual = this.visual;\n if (visual && !defined(visual.options.noclip)) {\n visual.options.noclip = this.options.noclip;\n }\n this.addVisual();\n this.createAnimation();\n } else {\n BoxElement.fn.renderVisual.call(this);\n }\n },\n\n visualContext: function(targetBox) {\n var this$1$1 = this;\n\n var context = {\n text: this.content,\n rect: targetBox.toRect(),\n sender: this.getSender(),\n options: this.options,\n createVisual: function () {\n this$1$1._boxReflow = true;\n this$1$1.reflow(targetBox);\n this$1$1._boxReflow = false;\n return this$1$1.getDefaultVisual();\n }\n };\n if (this.data) {\n $.extend(context, this.data);\n }\n\n return context;\n },\n\n getDefaultVisual: function() {\n this.createVisual();\n this.renderChildren();\n var visual = this.visual;\n delete this.visual;\n return visual;\n },\n\n rotate: function() {\n var options = this.options;\n this.box.rotate(options.rotation);\n this.align(this.targetBox, X, options.align);\n this.align(this.targetBox, Y, options.vAlign);\n return this.box;\n },\n\n rotationTransform: function() {\n var rotation = this.options.rotation;\n if (!rotation) {\n return null;\n }\n\n var ref = this.normalBox.center();\n var cx = ref.x;\n var cy = ref.y;\n var boxCenter = this.rotatedBox.center();\n\n return geometryTransform()\n .translate(boxCenter.x - cx, boxCenter.y - cy)\n .rotate(rotation, [ cx, cy ]);\n }\n });\n\n var Title = ChartElement.extend({\n init: function(options) {\n ChartElement.fn.init.call(this, options);\n\n this._textBox = new TextBox(this.options.text, $.extend({}, this.options, {\n vAlign: this.options.position\n }));\n\n this.append(this._textBox);\n },\n\n reflow: function(targetBox) {\n ChartElement.fn.reflow.call(this, targetBox);\n this.box.snapTo(targetBox, X);\n }\n });\n\n Title.buildTitle = function(options, defaultOptions) {\n var titleOptions = options;\n\n if (typeof options === \"string\") {\n titleOptions = { text: options };\n }\n\n titleOptions = $.extend({ visible: true }, defaultOptions, titleOptions);\n\n var title;\n if (titleOptions && titleOptions.visible && titleOptions.text) {\n title = new Title(titleOptions);\n }\n\n return title;\n };\n\n Title.orderTitles = function(titles) {\n var items = [].concat(titles);\n var top = items.filter(function (item) { return item && item.options.position !== BOTTOM; });\n var bottom = items.filter(function (item) { return item && item.options.position === BOTTOM; });\n\n collapseVerticalMargins(top);\n collapseVerticalMargins(bottom);\n\n bottom.reverse();\n return top.concat(bottom);\n };\n\n function collapseVerticalMargins(items) {\n for (var i = 1; i < items.length; i++) {\n var box = items[i]._textBox;\n var prevBox = items[i - 1]._textBox;\n prevBox.options.margin = $.extend(getSpacing(prevBox.options.margin), { bottom: 0 });\n box.options.margin = $.extend(getSpacing(box.options.margin), { top: 0 });\n }\n }\n\n setDefaultOptions(Title, {\n color: BLACK,\n position: TOP,\n align: CENTER,\n margin: getSpacing(5),\n padding: getSpacing(5)\n });\n\n var AxisLabel = TextBox.extend({\n init: function(value, text, index, dataItem, options) {\n TextBox.fn.init.call(this, text, options);\n\n this.text = text;\n this.value = value;\n this.index = index;\n this.dataItem = dataItem;\n this.reflow(new Box());\n },\n\n visualContext: function(targetBox) {\n var context = TextBox.fn.visualContext.call(this, targetBox);\n\n context.value = this.value;\n context.dataItem = this.dataItem;\n context.format = this.options.format;\n context.culture = this.options.culture;\n\n return context;\n },\n\n click: function(widget, e) {\n\n widget.trigger(AXIS_LABEL_CLICK, {\n element: eventElement(e),\n value: this.value,\n text: this.text,\n index: this.index,\n dataItem: this.dataItem,\n axis: this.parent.options\n });\n },\n\n rotate: function() {\n if (this.options.alignRotation !== CENTER) {\n var box = this.normalBox.toRect();\n var transform = this.rotationTransform();\n\n this.box = rectToBox(box.bbox(transform.matrix()));\n } else {\n TextBox.fn.rotate.call(this);\n }\n\n return this.box;\n },\n\n rotationTransform: function() {\n var options = this.options;\n var rotation = options.rotation;\n if (!rotation) {\n return null;\n }\n\n if (options.alignRotation === CENTER) {\n return TextBox.fn.rotationTransform.call(this);\n }\n\n var rotationMatrix = geometryTransform().rotate(rotation).matrix();\n var box = this.normalBox.toRect();\n var rect = this.targetBox.toRect();\n\n var rotationOrigin = options.rotationOrigin || TOP;\n var alignAxis = rotationOrigin === TOP || rotationOrigin === BOTTOM ? X : Y;\n var distanceAxis = rotationOrigin === TOP || rotationOrigin === BOTTOM ? Y : X;\n var axisAnchor = rotationOrigin === TOP || rotationOrigin === LEFT ? rect.origin : rect.bottomRight();\n\n var topLeft = box.topLeft().transformCopy(rotationMatrix);\n var topRight = box.topRight().transformCopy(rotationMatrix);\n var bottomRight = box.bottomRight().transformCopy(rotationMatrix);\n var bottomLeft = box.bottomLeft().transformCopy(rotationMatrix);\n var rotatedBox = Rect.fromPoints(topLeft, topRight, bottomRight, bottomLeft);\n\n var translate = {};\n translate[distanceAxis] = rect.origin[distanceAxis] - rotatedBox.origin[distanceAxis];\n\n var distanceLeft = Math.abs(topLeft[distanceAxis] + translate[distanceAxis] - axisAnchor[distanceAxis]);\n var distanceRight = Math.abs(topRight[distanceAxis] + translate[distanceAxis] - axisAnchor[distanceAxis]);\n\n var alignStart, alignEnd;\n\n if (round(distanceLeft, DEFAULT_PRECISION) === round(distanceRight, DEFAULT_PRECISION)) {\n alignStart = topLeft;\n alignEnd = topRight;\n } else if (distanceRight < distanceLeft) {\n alignStart = topRight;\n alignEnd = bottomRight;\n } else {\n alignStart = topLeft;\n alignEnd = bottomLeft;\n }\n\n var alignCenter = alignStart[alignAxis] + (alignEnd[alignAxis] - alignStart[alignAxis]) / 2;\n translate[alignAxis] = rect.center()[alignAxis] - alignCenter;\n\n return geometryTransform()\n .translate(translate.x, translate.y)\n .rotate(rotation);\n }\n });\n\n setDefaultOptions(AxisLabel, {\n _autoReflow: false\n });\n\n var DEFAULT_ICON_SIZE = 7;\n var DEFAULT_LABEL_COLOR = \"#fff\";\n\n var Note = BoxElement.extend({\n init: function(fields, options, chartService) {\n BoxElement.fn.init.call(this, options);\n\n this.fields = fields;\n this.chartService = chartService;\n\n this.render();\n },\n\n hide: function() {\n this.options.visible = false;\n },\n\n show: function() {\n this.options.visible = true;\n },\n\n render: function() {\n var this$1$1 = this;\n\n var options = this.options;\n\n if (options.visible) {\n var label = options.label;\n var icon = options.icon;\n var box = new Box();\n var childAlias = function () { return this$1$1; };\n var size = icon.size;\n var text = this.fields.text;\n var width, height;\n\n if (defined(label) && label.visible) {\n var noteTemplate = getTemplate(label);\n if (noteTemplate) {\n text = noteTemplate(this.fields);\n } else if (label.format) {\n text = this.chartService.format.auto(label.format, text);\n }\n\n if (!label.color) {\n label.color = label.position === INSIDE ? DEFAULT_LABEL_COLOR : icon.background;\n }\n\n this.label = new TextBox(text, deepExtend({}, label));\n this.label.aliasFor = childAlias;\n\n if (label.position === INSIDE && !defined(size)) {\n if (icon.type === CIRCLE) {\n size = Math.max(this.label.box.width(), this.label.box.height());\n } else {\n width = this.label.box.width();\n height = this.label.box.height();\n }\n box.wrap(this.label.box);\n }\n }\n\n icon.width = width || size || DEFAULT_ICON_SIZE;\n icon.height = height || size || DEFAULT_ICON_SIZE;\n\n var marker = new ShapeElement(deepExtend({}, icon));\n marker.aliasFor = childAlias;\n\n this.marker = marker;\n this.append(marker);\n\n if (this.label) {\n this.append(this.label);\n }\n\n marker.reflow(new Box());\n this.wrapperBox = box.wrap(marker.box);\n }\n },\n\n reflow: function(targetBox) {\n var ref = this;\n var options = ref.options;\n var label = ref.label;\n var marker = ref.marker;\n var wrapperBox = ref.wrapperBox;\n var center = targetBox.center();\n var length = options.line.length;\n var position = options.position;\n\n // TODO: Review\n if (options.visible) {\n var lineStart, box, contentBox;\n\n if (inArray(position, [ LEFT, RIGHT ])) {\n if (position === LEFT) {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(-length, targetBox.center().y - wrapperBox.center().y);\n\n if (options.line.visible) {\n lineStart = [ targetBox.x1, center.y ];\n this.linePoints = [\n lineStart,\n [ contentBox.x2, center.y ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n } else {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(length, targetBox.center().y - wrapperBox.center().y);\n\n if (options.line.visible) {\n lineStart = [ targetBox.x2, center.y ];\n this.linePoints = [\n lineStart,\n [ contentBox.x1, center.y ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n }\n } else {\n if (position === BOTTOM) {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(targetBox.center().x - wrapperBox.center().x, length);\n\n if (options.line.visible) {\n lineStart = [ center.x, targetBox.y2 ];\n this.linePoints = [\n lineStart,\n [ center.x, contentBox.y1 ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n } else {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(targetBox.center().x - wrapperBox.center().x, -length);\n\n if (options.line.visible) {\n lineStart = [ center.x, targetBox.y1 ];\n this.linePoints = [\n lineStart,\n [ center.x, contentBox.y2 ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n }\n }\n\n if (marker) {\n marker.reflow(contentBox);\n }\n\n if (label) {\n label.reflow(contentBox);\n if (marker) {\n if (options.label.position === OUTSIDE) {\n label.box.alignTo(marker.box, position);\n }\n label.reflow(label.box);\n }\n }\n\n this.contentBox = contentBox;\n this.targetBox = targetBox;\n this.box = box || contentBox;\n }\n },\n\n createVisual: function() {\n BoxElement.fn.createVisual.call(this);\n this.visual.options.noclip = this.options.noclip;\n\n if (this.options.visible) {\n this.createLine();\n }\n },\n\n renderVisual: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var customVisual = options.visual;\n if (options.visible && customVisual) {\n this.visual = customVisual($.extend(this.fields, {\n sender: this.getSender(),\n rect: this.targetBox.toRect(),\n options: {\n background: options.background,\n border: options.background,\n icon: options.icon,\n label: options.label,\n line: options.line,\n position: options.position,\n visible: options.visible\n },\n createVisual: function () {\n this$1$1.createVisual();\n this$1$1.renderChildren();\n var defaultVisual = this$1$1.visual;\n delete this$1$1.visual;\n return defaultVisual;\n }\n }));\n this.addVisual();\n } else {\n BoxElement.fn.renderVisual.call(this);\n }\n },\n\n createLine: function() {\n var options = this.options.line;\n\n if (this.linePoints) {\n var path = Path.fromPoints(this.linePoints, {\n stroke: {\n color: options.color,\n width: options.width,\n dashType: options.dashType\n }\n });\n\n alignPathToPixel(path);\n this.visual.append(path);\n }\n },\n\n click: function(widget, e) {\n var args = this.eventArgs(e);\n\n if (!widget.trigger(NOTE_CLICK, args)) {\n e.preventDefault();\n }\n },\n\n over: function(widget, e) {\n var args = this.eventArgs(e);\n\n if (!widget.trigger(NOTE_HOVER, args)) {\n e.preventDefault();\n }\n },\n\n out: function(widget, e) {\n var args = this.eventArgs(e);\n\n widget.trigger(NOTE_LEAVE, args);\n },\n\n eventArgs: function(e) {\n var options = this.options;\n\n return $.extend(this.fields, {\n element: eventElement(e),\n text: defined(options.label) ? options.label.text : \"\",\n visual: this.visual\n });\n }\n });\n\n setDefaultOptions(Note, {\n icon: {\n visible: true,\n type: CIRCLE\n },\n label: {\n position: INSIDE,\n visible: true,\n align: CENTER,\n vAlign: CENTER\n },\n line: {\n visible: true\n },\n visible: true,\n position: TOP,\n zIndex: 2\n });\n\n var defaultImplementation = {\n format: function (format, value) { return value; },\n\n toString: function (value) { return value; },\n\n parseDate: function (value) { return new Date(value); },\n\n firstDay: function () { return 0; }\n };\n\n var current$1 = defaultImplementation;\n\n var IntlService = Class.extend({\n\n });\n\n IntlService.register = function(userImplementation) {\n current$1 = userImplementation;\n };\n\n if (Object.defineProperties) {\n Object.defineProperties(IntlService, {\n implementation: {\n get: function() {\n return current$1;\n }\n }\n });\n }\n\n // eslint-disable-next-line no-useless-escape\n var FORMAT_REPLACE_REGEX = /\\{(\\d+)(:[^\\}]+)?\\}/g;\n\n var FormatService = Class.extend({\n init: function(intlService) {\n this._intlService = intlService;\n },\n\n auto: function(formatString) {\n var values = [], len = arguments.length - 1;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];\n\n var intl = this.intl;\n\n if (isString(formatString) && formatString.match(FORMAT_REGEX)) {\n return intl.format.apply(intl, [ formatString ].concat( values ));\n }\n\n return intl.toString(values[0], formatString);\n },\n\n localeAuto: function(formatString, values, locale) {\n var intl = this.intl;\n var result;\n\n if (isString(formatString) && formatString.match(FORMAT_REGEX)) {\n result = formatString.replace(FORMAT_REPLACE_REGEX, function(match, index, placeholderFormat) {\n var value = values[parseInt(index, 10)];\n\n return intl.toString(value, placeholderFormat ? placeholderFormat.substring(1) : \"\", locale);\n });\n } else {\n result = intl.toString(values[0], formatString, locale);\n }\n\n return result;\n }\n });\n\n if (Object.defineProperties) {\n Object.defineProperties(FormatService.fn, {\n intl: {\n get: function() {\n return this._intlService || IntlService.implementation;\n },\n set: function(value) {\n this._intlService = value;\n }\n }\n });\n }\n\n var ChartService = Class.extend({\n init: function(chart, context) {\n if (context === void 0) { context = {}; }\n\n this._intlService = context.intlService;\n this.sender = context.sender || chart;\n this.format = new FormatService(context.intlService);\n this.chart = chart;\n this.rtl = Boolean(context.rtl);\n },\n\n notify: function(name, args) {\n if (this.chart) {\n this.chart.trigger(name, args);\n }\n },\n\n isPannable: function(axis) {\n var pannable = ((this.chart || {}).options || {}).pannable;\n return pannable && pannable.lock !== axis;\n }\n });\n\n if (Object.defineProperties) {\n Object.defineProperties(ChartService.fn, {\n intl: {\n get: function() {\n return this._intlService || IntlService.implementation;\n },\n set: function(value) {\n this._intlService = value;\n this.format.intl = value;\n }\n }\n });\n }\n\n var current$2;\n\n var DomEventsBuilder = Class.extend({\n\n });\n\n DomEventsBuilder.register = function(userImplementation) {\n current$2 = userImplementation;\n };\n\n DomEventsBuilder.create = function(element, events) {\n if (current$2) {\n return current$2.create(element, events);\n }\n };\n\n var services = {\n \tChartService: ChartService,\n \tDomEventsBuilder: DomEventsBuilder,\n \tFormatService: FormatService,\n \tIntlService: IntlService,\n \tTemplateService: TemplateService\n };\n\n function createAxisTick(options, tickOptions) {\n var tickX = options.tickX;\n var tickY = options.tickY;\n var position = options.position;\n\n var tick = new Path({\n stroke: {\n width: tickOptions.width,\n color: tickOptions.color\n }\n });\n\n if (options.vertical) {\n tick.moveTo(tickX, position)\n .lineTo(tickX + tickOptions.size, position);\n } else {\n tick.moveTo(position, tickY)\n .lineTo(position, tickY + tickOptions.size);\n }\n\n alignPathToPixel(tick);\n\n return tick;\n }\n\n function createAxisGridLine(options, gridLine) {\n var lineStart = options.lineStart;\n var lineEnd = options.lineEnd;\n var position = options.position;\n\n var line = new Path({\n stroke: {\n width: gridLine.width,\n color: gridLine.color,\n dashType: gridLine.dashType\n }\n });\n\n if (options.vertical) {\n line.moveTo(lineStart, position)\n .lineTo(lineEnd, position);\n } else {\n line.moveTo(position, lineStart)\n .lineTo(position, lineEnd);\n }\n\n alignPathToPixel(line);\n\n return line;\n }\n\n var Axis = ChartElement.extend({\n init: function(options, chartService) {\n if (chartService === void 0) { chartService = new ChartService(); }\n\n ChartElement.fn.init.call(this, options);\n\n this.chartService = chartService;\n\n if (!this.options.visible) {\n this.options = deepExtend({}, this.options, {\n labels: {\n visible: false\n },\n line: {\n visible: false\n },\n margin: 0,\n majorTickSize: 0,\n minorTickSize: 0\n });\n }\n\n this.options.minorTicks = deepExtend({}, {\n color: this.options.line.color,\n width: this.options.line.width,\n visible: this.options.minorTickType !== NONE\n }, this.options.minorTicks, {\n size: this.options.minorTickSize,\n align: this.options.minorTickType\n });\n\n this.options.majorTicks = deepExtend({}, {\n color: this.options.line.color,\n width: this.options.line.width,\n visible: this.options.majorTickType !== NONE\n }, this.options.majorTicks, {\n size: this.options.majorTickSize,\n align: this.options.majorTickType\n });\n\n this.initFields();\n\n if (!this.options._deferLabels) {\n this.createLabels();\n }\n\n this.createTitle();\n this.createNotes();\n },\n\n initFields: function() {\n },\n\n labelsRange: function() {\n return {\n min: this.options.labels.skip,\n max: this.labelsCount()\n };\n },\n\n normalizeLabelRotation: function(labelOptions) {\n var rotation = labelOptions.rotation;\n\n if (isObject(rotation)) {\n labelOptions.alignRotation = rotation.align;\n labelOptions.rotation = rotation.angle;\n }\n },\n\n createLabels: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var align = options.vertical ? RIGHT : CENTER;\n var labelOptions = deepExtend({ }, options.labels, {\n align: align,\n zIndex: options.zIndex\n });\n var step = Math.max(1, labelOptions.step);\n\n this.clearLabels();\n\n if (labelOptions.visible) {\n this.normalizeLabelRotation(labelOptions);\n if (labelOptions.rotation === \"auto\") {\n labelOptions.rotation = 0;\n options.autoRotateLabels = true;\n }\n\n var range = this.labelsRange();\n for (var idx = range.min; idx < range.max; idx += step) {\n var labelContext = { index: idx, count: range.max };\n var label = this$1$1.createAxisLabel(idx, labelOptions, labelContext);\n if (label) {\n this$1$1.append(label);\n this$1$1.labels.push(label);\n }\n }\n }\n },\n\n clearLabels: function() {\n this.children = grep(this.children, function (child) { return !(child instanceof AxisLabel); });\n this.labels = [];\n },\n\n clearTitle: function() {\n var this$1$1 = this;\n\n if (this.title) {\n this.children = grep(this.children, function (child) { return child !== this$1$1.title; });\n this.title = undefined;\n }\n },\n\n clear: function() {\n this.clearLabels();\n this.clearTitle();\n },\n\n lineBox: function() {\n var ref = this;\n var options = ref.options;\n var box = ref.box;\n var vertical = options.vertical;\n var mirror = options.labels.mirror;\n var axisX = mirror ? box.x1 : box.x2;\n var axisY = mirror ? box.y2 : box.y1;\n var lineWidth = options.line.width || 0;\n\n return vertical ?\n new Box(axisX, box.y1, axisX, box.y2 - lineWidth) :\n new Box(box.x1, axisY, box.x2 - lineWidth, axisY);\n },\n\n createTitle: function() {\n var options = this.options;\n var titleOptions = deepExtend({\n rotation: options.vertical ? -90 : 0,\n text: \"\",\n zIndex: 1,\n visualSize: true\n }, options.title);\n\n if (titleOptions.visible && titleOptions.text) {\n var title = new TextBox(titleOptions.text, titleOptions);\n this.append(title);\n this.title = title;\n }\n },\n\n createNotes: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var notes = options.notes;\n var items = notes.data || [];\n\n this.notes = [];\n\n for (var i = 0; i < items.length; i++) {\n var item = deepExtend({}, notes, items[i]);\n item.value = this$1$1.parseNoteValue(item.value);\n\n var note = new Note({\n value: item.value,\n text: item.label.text,\n dataItem: item\n }, item, this$1$1.chartService);\n\n if (note.options.visible) {\n if (defined(note.options.position)) {\n if (options.vertical && !inArray(note.options.position, [ LEFT, RIGHT ])) {\n note.options.position = options.reverse ? LEFT : RIGHT;\n } else if (!options.vertical && !inArray(note.options.position, [ TOP, BOTTOM ])) {\n note.options.position = options.reverse ? BOTTOM : TOP;\n }\n } else {\n if (options.vertical) {\n note.options.position = options.reverse ? LEFT : RIGHT;\n } else {\n note.options.position = options.reverse ? BOTTOM : TOP;\n }\n }\n this$1$1.append(note);\n this$1$1.notes.push(note);\n }\n }\n },\n\n parseNoteValue: function(value) {\n return value;\n },\n\n renderVisual: function() {\n ChartElement.fn.renderVisual.call(this);\n\n this.createPlotBands();\n },\n\n createVisual: function() {\n ChartElement.fn.createVisual.call(this);\n\n this.createBackground();\n this.createLine();\n },\n\n gridLinesVisual: function() {\n var gridLines = this._gridLines;\n if (!gridLines) {\n gridLines = this._gridLines = new Group({\n zIndex: -2\n });\n this.appendVisual(this._gridLines);\n }\n\n return gridLines;\n },\n\n createTicks: function(lineGroup) {\n var options = this.options;\n var lineBox = this.lineBox();\n var mirror = options.labels.mirror;\n var majorUnit = options.majorTicks.visible ? options.majorUnit : 0;\n var tickLineOptions = {\n // TODO\n // _alignLines: options._alignLines,\n vertical: options.vertical\n };\n\n function render(tickPositions, tickOptions, skipUnit) {\n var count = tickPositions.length;\n var step = Math.max(1, tickOptions.step);\n\n if (tickOptions.visible) {\n for (var i = tickOptions.skip; i < count; i += step) {\n if (defined(skipUnit) && (i % skipUnit === 0)) {\n continue;\n }\n\n tickLineOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n tickLineOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n tickLineOptions.position = tickPositions[i];\n\n lineGroup.append(createAxisTick(tickLineOptions, tickOptions));\n }\n }\n }\n\n render(this.getMajorTickPositions(), options.majorTicks);\n render(this.getMinorTickPositions(), options.minorTicks, majorUnit / options.minorUnit);\n },\n\n createLine: function() {\n var options = this.options;\n var line = options.line;\n var lineBox = this.lineBox();\n\n if (line.width > 0 && line.visible) {\n var path = new Path({\n stroke: {\n width: line.width,\n color: line.color,\n dashType: line.dashType\n }\n\n /* TODO\n zIndex: line.zIndex,\n */\n });\n\n path.moveTo(lineBox.x1, lineBox.y1)\n .lineTo(lineBox.x2, lineBox.y2);\n\n if (options._alignLines) {\n alignPathToPixel(path);\n }\n\n var group = this._lineGroup = new Group();\n group.append(path);\n\n this.visual.append(group);\n this.createTicks(group);\n }\n },\n\n getActualTickSize: function() {\n var options = this.options;\n var tickSize = 0;\n\n if (options.majorTicks.visible && options.minorTicks.visible) {\n tickSize = Math.max(options.majorTicks.size, options.minorTicks.size);\n } else if (options.majorTicks.visible) {\n tickSize = options.majorTicks.size;\n } else if (options.minorTicks.visible) {\n tickSize = options.minorTicks.size;\n }\n\n return tickSize;\n },\n\n createBackground: function() {\n var ref = this;\n var options = ref.options;\n var box = ref.box;\n var background = options.background;\n\n if (background) {\n this._backgroundPath = Path.fromRect(box.toRect(), {\n fill: {\n color: background\n },\n stroke: null\n });\n\n this.visual.append(this._backgroundPath);\n }\n },\n\n createPlotBands: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var plotBands = options.plotBands || [];\n var vertical = options.vertical;\n var plotArea = this.plotArea;\n\n if (plotBands.length === 0) {\n return;\n }\n\n var group = this._plotbandGroup = new Group({\n zIndex: -1\n });\n\n var altAxis = grep(this.pane.axes, function (axis) { return axis.options.vertical !== this$1$1.options.vertical; })[0];\n\n for (var idx = 0; idx < plotBands.length; idx++) {\n var item = plotBands[idx];\n var slotX = (void 0), slotY = (void 0);\n var labelOptions = item.label;\n var label = (void 0);\n\n if (vertical) {\n slotX = (altAxis || plotArea.axisX).lineBox();\n slotY = this$1$1.getSlot(item.from, item.to, true);\n } else {\n slotX = this$1$1.getSlot(item.from, item.to, true);\n slotY = (altAxis || plotArea.axisY).lineBox();\n }\n\n if (labelOptions) {\n labelOptions.vAlign = labelOptions.position || LEFT;\n label = this$1$1.createPlotBandLabel(\n labelOptions,\n item,\n new Box(\n slotX.x1,\n slotY.y1,\n slotX.x2,\n slotY.y2\n )\n\n );\n }\n\n if (slotX.width() !== 0 && slotY.height() !== 0) {\n var bandRect = new Rect(\n [ slotX.x1, slotY.y1 ],\n [ slotX.width(), slotY.height() ]\n );\n\n var path = Path.fromRect(bandRect, {\n fill: {\n color: item.color,\n opacity: item.opacity\n },\n stroke: null\n });\n\n group.append(path);\n if (label) {\n group.append(label);\n }\n }\n }\n\n this.appendVisual(group);\n },\n\n createPlotBandLabel: function(label, item, box) {\n\n if (label.visible === false) {\n return null;\n }\n\n var text = label.text;\n var textbox;\n\n if (defined(label) && label.visible) {\n var labelTemplate = getTemplate(label);\n if (labelTemplate) {\n text = labelTemplate({ text: text, item: item });\n } else if (label.format) {\n text = this.chartService.format.auto(label.format, text);\n }\n\n if (!label.color) {\n label.color = this.options.labels.color;\n }\n }\n\n textbox = new TextBox(text, label);\n textbox.reflow(box);\n textbox.renderVisual();\n\n return textbox.visual;\n },\n\n createGridLines: function(altAxis) {\n var options = this.options;\n var minorGridLines = options.minorGridLines;\n var majorGridLines = options.majorGridLines;\n var minorUnit = options.minorUnit;\n var vertical = options.vertical;\n var axisLineVisible = altAxis.options.line.visible;\n var majorUnit = majorGridLines.visible ? options.majorUnit : 0;\n var lineBox = altAxis.lineBox();\n var linePos = lineBox[vertical ? \"y1\" : \"x1\"];\n var lineOptions = {\n lineStart: lineBox[vertical ? \"x1\" : \"y1\"],\n lineEnd: lineBox[vertical ? \"x2\" : \"y2\"],\n vertical: vertical\n };\n var majorTicks = [];\n\n var container = this.gridLinesVisual();\n\n function render(tickPositions, gridLine, skipUnit) {\n var count = tickPositions.length;\n var step = Math.max(1, gridLine.step);\n\n if (gridLine.visible) {\n for (var i = gridLine.skip; i < count; i += step) {\n var pos = round(tickPositions[i]);\n if (!inArray(pos, majorTicks)) {\n if (i % skipUnit !== 0 && (!axisLineVisible || linePos !== pos)) {\n lineOptions.position = pos;\n container.append(createAxisGridLine(lineOptions, gridLine));\n\n majorTicks.push(pos);\n }\n }\n }\n }\n }\n\n render(this.getMajorTickPositions(), majorGridLines);\n render(this.getMinorTickPositions(), minorGridLines, majorUnit / minorUnit);\n\n return container.children;\n },\n\n reflow: function(box) {\n var ref = this;\n var options = ref.options;\n var labels = ref.labels;\n var title = ref.title;\n var vertical = options.vertical;\n var count = labels.length;\n var sizeFn = vertical ? WIDTH : HEIGHT;\n var titleSize = title ? title.box[sizeFn]() : 0;\n var space = this.getActualTickSize() + options.margin + titleSize;\n var rootBox = (this.getRoot() || {}).box || box;\n var boxSize = rootBox[sizeFn]();\n var maxLabelSize = 0;\n\n for (var i = 0; i < count; i++) {\n var labelSize = labels[i].box[sizeFn]();\n if (labelSize + space <= boxSize) {\n maxLabelSize = Math.max(maxLabelSize, labelSize);\n }\n }\n\n if (vertical) {\n this.box = new Box(\n box.x1, box.y1,\n box.x1 + maxLabelSize + space, box.y2\n );\n } else {\n this.box = new Box(\n box.x1, box.y1,\n box.x2, box.y1 + maxLabelSize + space\n );\n }\n\n this.arrangeTitle();\n this.arrangeLabels();\n this.arrangeNotes();\n },\n\n getLabelsTickPositions: function() {\n return this.getMajorTickPositions();\n },\n\n labelTickIndex: function(label) {\n return label.index;\n },\n\n arrangeLabels: function() {\n var this$1$1 = this;\n\n var ref = this;\n var options = ref.options;\n var labels = ref.labels;\n var labelsBetweenTicks = this.labelsBetweenTicks();\n var vertical = options.vertical;\n var mirror = options.labels.mirror;\n var tickPositions = this.getLabelsTickPositions();\n\n for (var idx = 0; idx < labels.length; idx++) {\n var label = labels[idx];\n var tickIx = this$1$1.labelTickIndex(label);\n var labelSize = vertical ? label.box.height() : label.box.width();\n var firstTickPosition = tickPositions[tickIx];\n var nextTickPosition = tickPositions[tickIx + 1];\n var positionStart = (void 0), positionEnd = (void 0);\n\n if (vertical) {\n if (labelsBetweenTicks) {\n var middle = firstTickPosition + (nextTickPosition - firstTickPosition) / 2;\n positionStart = middle - (labelSize / 2);\n } else {\n positionStart = firstTickPosition - (labelSize / 2);\n }\n\n positionEnd = positionStart;\n } else {\n if (labelsBetweenTicks) {\n positionStart = firstTickPosition;\n positionEnd = nextTickPosition;\n } else {\n positionStart = firstTickPosition - (labelSize / 2);\n positionEnd = positionStart + labelSize;\n }\n }\n\n this$1$1.positionLabel(label, mirror, positionStart, positionEnd);\n }\n },\n\n positionLabel: function(label, mirror, positionStart, positionEnd) {\n if (positionEnd === void 0) { positionEnd = positionStart; }\n\n var options = this.options;\n var vertical = options.vertical;\n var lineBox = this.lineBox();\n var labelOffset = this.getActualTickSize() + options.margin;\n var labelBox;\n\n if (vertical) {\n var labelX = lineBox.x2;\n\n if (mirror) {\n labelX += labelOffset;\n label.options.rotationOrigin = LEFT;\n } else {\n labelX -= labelOffset + label.box.width();\n label.options.rotationOrigin = RIGHT;\n }\n\n labelBox = label.box.move(labelX, positionStart);\n } else {\n var labelY = lineBox.y1;\n\n if (mirror) {\n labelY -= labelOffset + label.box.height();\n label.options.rotationOrigin = BOTTOM;\n } else {\n labelY += labelOffset;\n label.options.rotationOrigin = TOP;\n }\n\n labelBox = new Box(\n positionStart, labelY,\n positionEnd, labelY + label.box.height()\n );\n }\n\n label.reflow(labelBox);\n },\n\n autoRotateLabelAngle: function(labelBox, slotWidth) {\n if (labelBox.width() < slotWidth) {\n return 0;\n }\n\n if (labelBox.height() > slotWidth) {\n return -90;\n }\n\n return -45;\n },\n\n autoRotateLabels: function() {\n var this$1$1 = this;\n\n if (!this.options.autoRotateLabels || this.options.vertical) {\n return false;\n }\n\n var tickPositions = this.getMajorTickPositions();\n var labels = this.labels;\n var limit = Math.min(labels.length, tickPositions.length - 1);\n var angle = 0;\n\n for (var idx = 0; idx < limit; idx++) {\n var width = Math.abs(tickPositions[idx + 1] - tickPositions[idx]);\n var labelBox = labels[idx].box;\n var labelAngle = this$1$1.autoRotateLabelAngle(labelBox, width);\n\n if (labelAngle !== 0) {\n angle = labelAngle;\n }\n\n if (angle === -90) {\n break;\n }\n }\n\n if (angle !== 0) {\n for (var idx$1 = 0; idx$1 < labels.length; idx$1++) {\n labels[idx$1].options.rotation = angle;\n labels[idx$1].reflow(new Box());\n }\n\n return true;\n }\n },\n\n arrangeTitle: function() {\n var ref = this;\n var options = ref.options;\n var title = ref.title;\n var mirror = options.labels.mirror;\n var vertical = options.vertical;\n\n if (title) {\n if (vertical) {\n title.options.align = mirror ? RIGHT : LEFT;\n title.options.vAlign = title.options.position;\n } else {\n title.options.align = title.options.position;\n title.options.vAlign = mirror ? TOP : BOTTOM;\n }\n\n title.reflow(this.box);\n }\n },\n\n arrangeNotes: function() {\n var this$1$1 = this;\n\n for (var idx = 0; idx < this.notes.length; idx++) {\n var item = this$1$1.notes[idx];\n var value = item.options.value;\n var slot = (void 0);\n\n if (defined(value)) {\n if (this$1$1.shouldRenderNote(value)) {\n item.show();\n } else {\n item.hide();\n }\n\n slot = this$1$1.noteSlot(value);\n } else {\n item.hide();\n }\n\n item.reflow(slot || this$1$1.lineBox());\n }\n },\n\n noteSlot: function(value) {\n return this.getSlot(value);\n },\n\n alignTo: function(secondAxis) {\n var lineBox = secondAxis.lineBox();\n var vertical = this.options.vertical;\n var pos = vertical ? Y : X;\n\n this.box.snapTo(lineBox, pos);\n if (vertical) {\n this.box.shrink(0, this.lineBox().height() - lineBox.height());\n } else {\n this.box.shrink(this.lineBox().width() - lineBox.width(), 0);\n }\n this.box[pos + 1] -= this.lineBox()[pos + 1] - lineBox[pos + 1];\n this.box[pos + 2] -= this.lineBox()[pos + 2] - lineBox[pos + 2];\n },\n\n axisLabelText: function(value, options, context) {\n var this$1$1 = this;\n\n var text;\n var tmpl = getTemplate(options);\n var defaultText = function () {\n if (!options.format) {\n return value;\n }\n\n return this$1$1.chartService.format.localeAuto(\n options.format, [ value ], options.culture\n );\n };\n\n if (tmpl) {\n var templateContext = $.extend({}, context, {\n get text() { return defaultText(); },\n value: value,\n format: options.format,\n culture: options.culture\n });\n\n text = tmpl(templateContext);\n } else {\n text = defaultText();\n }\n\n return text;\n },\n\n slot: function(from , to, limit) {\n var slot = this.getSlot(from, to, limit);\n if (slot) {\n return slot.toRect();\n }\n },\n\n contentBox: function() {\n var box = this.box.clone();\n var labels = this.labels;\n if (labels.length) {\n var axis = this.options.vertical ? Y : X;\n if (this.chartService.isPannable(axis)) {\n var offset = this.maxLabelOffset();\n box[axis + 1] -= offset.start;\n box[axis + 2] += offset.end;\n } else {\n if (labels[0].options.visible) {\n box.wrap(labels[0].box);\n }\n var lastLabel = labels[labels.length - 1];\n if (lastLabel.options.visible) {\n box.wrap(lastLabel.box);\n }\n }\n }\n\n return box;\n },\n\n maxLabelOffset: function() {\n var this$1$1 = this;\n\n var ref = this.options;\n var vertical = ref.vertical;\n var reverse = ref.reverse;\n var labelsBetweenTicks = this.labelsBetweenTicks();\n var tickPositions = this.getLabelsTickPositions();\n var offsetField = vertical ? Y : X;\n var labels = this.labels;\n var startPosition = reverse ? 1 : 0;\n var endPosition = reverse ? 0 : 1;\n var maxStartOffset = 0;\n var maxEndOffset = 0;\n\n for (var idx = 0; idx < labels.length; idx++) {\n var label = labels[idx];\n var tickIx = this$1$1.labelTickIndex(label);\n var startTick = (void 0), endTick = (void 0);\n\n if (labelsBetweenTicks) {\n startTick = tickPositions[tickIx + startPosition];\n endTick = tickPositions[tickIx + endPosition];\n } else {\n startTick = endTick = tickPositions[tickIx];\n }\n\n maxStartOffset = Math.max(maxStartOffset, startTick - label.box[offsetField + 1]);\n maxEndOffset = Math.max(maxEndOffset, label.box[offsetField + 2] - endTick);\n }\n\n return {\n start: maxStartOffset,\n end: maxEndOffset\n };\n },\n\n limitRange: function(from, to, min, max, offset) {\n var options = this.options;\n\n if ((from < min && offset < 0 && (!defined(options.min) || options.min <= min)) || (max < to && offset > 0 && (!defined(options.max) || max <= options.max))) {\n return null;\n }\n\n if ((to < min && offset > 0) || (max < from && offset < 0)) {\n return {\n min: from,\n max: to\n };\n }\n\n var rangeSize = to - from;\n var minValue = from;\n var maxValue = to;\n\n if (from < min && offset < 0) {\n minValue = limitValue(from, min, max);\n maxValue = limitValue(from + rangeSize, min + rangeSize, max);\n } else if (to > max && offset > 0) {\n maxValue = limitValue(to, min, max);\n minValue = limitValue(to - rangeSize, min, max - rangeSize);\n }\n\n return {\n min: minValue,\n max: maxValue\n };\n },\n\n valueRange: function() {\n return {\n min: this.seriesMin,\n max: this.seriesMax\n };\n },\n\n lineDir: function() {\n /*\n * Axis line direction:\n * * Vertical: up.\n * * Horizontal: right.\n */\n\n var ref = this.options;\n var vertical = ref.vertical;\n var reverse = ref.reverse;\n return (vertical ? -1 : 1) * (reverse ? -1 : 1);\n },\n\n lineInfo: function() {\n var ref = this.options;\n var vertical = ref.vertical;\n var lineBox = this.lineBox();\n var lineSize = vertical ? lineBox.height() : lineBox.width();\n var axis = vertical ? Y : X;\n var axisDir = this.lineDir();\n var startEdge = axisDir === 1 ? 1 : 2;\n var axisOrigin = axis + startEdge.toString();\n var lineStart = lineBox[axisOrigin];\n\n return {\n axis: axis,\n axisOrigin: axisOrigin,\n axisDir: axisDir,\n lineBox: lineBox,\n lineSize: lineSize,\n lineStart: lineStart\n };\n },\n\n pointOffset: function(point) {\n var ref = this.lineInfo();\n var axis = ref.axis;\n var axisDir = ref.axisDir;\n var axisOrigin = ref.axisOrigin;\n var lineBox = ref.lineBox;\n var lineSize = ref.lineSize;\n var relative = axisDir > 0 ? point[axis] - lineBox[axisOrigin] : lineBox[axisOrigin] - point[axis];\n var offset = relative / lineSize;\n\n return offset;\n },\n\n scaleToDelta: function(rawScale, range) {\n // Scale >= 1 would result in axis range of 0.\n // Scale <= -1 would reverse the scale direction.\n var MAX_SCALE = 0.999;\n var scale = limitValue(rawScale, -MAX_SCALE, MAX_SCALE);\n\n var delta;\n if (scale > 0) {\n delta = range * Math.min(1, scale);\n } else {\n delta = range - (range / (1 + scale));\n }\n\n return delta;\n },\n\n labelsBetweenTicks: function() {\n return !this.options.justified;\n },\n\n prepareUserOptions: function() {\n }\n });\n\n setDefaultOptions(Axis, {\n labels: {\n visible: true,\n rotation: 0,\n mirror: false,\n step: 1,\n skip: 0\n },\n line: {\n width: 1,\n color: BLACK,\n visible: true\n },\n title: {\n visible: true,\n position: CENTER\n },\n majorTicks: {\n align: OUTSIDE,\n size: 4,\n skip: 0,\n step: 1\n },\n minorTicks: {\n align: OUTSIDE,\n size: 3,\n skip: 0,\n step: 1\n },\n axisCrossingValue: 0,\n majorTickType: OUTSIDE,\n minorTickType: NONE,\n majorGridLines: {\n skip: 0,\n step: 1\n },\n minorGridLines: {\n visible: false,\n width: 1,\n color: BLACK,\n skip: 0,\n step: 1\n },\n // TODO: Move to line or labels options\n margin: 5,\n visible: true,\n reverse: false,\n justified: true,\n notes: {\n label: {\n text: \"\"\n }\n },\n\n _alignLines: true,\n _deferLabels: false\n });\n\n var MILLISECONDS = \"milliseconds\";\n var SECONDS = \"seconds\";\n var MINUTES = \"minutes\";\n var HOURS = \"hours\";\n var DAYS = \"days\";\n var WEEKS = \"weeks\";\n var MONTHS = \"months\";\n var YEARS = \"years\";\n\n var TIME_PER_MILLISECOND = 1;\n var TIME_PER_SECOND = 1000;\n var TIME_PER_MINUTE = 60 * TIME_PER_SECOND;\n var TIME_PER_HOUR = 60 * TIME_PER_MINUTE;\n var TIME_PER_DAY = 24 * TIME_PER_HOUR;\n var TIME_PER_WEEK = 7 * TIME_PER_DAY;\n var TIME_PER_MONTH = 31 * TIME_PER_DAY;\n var TIME_PER_YEAR = 365 * TIME_PER_DAY;\n var TIME_PER_UNIT = {\n \"years\": TIME_PER_YEAR,\n \"months\": TIME_PER_MONTH,\n \"weeks\": TIME_PER_WEEK,\n \"days\": TIME_PER_DAY,\n \"hours\": TIME_PER_HOUR,\n \"minutes\": TIME_PER_MINUTE,\n \"seconds\": TIME_PER_SECOND,\n \"milliseconds\": TIME_PER_MILLISECOND\n };\n\n function absoluteDateDiff(a, b) {\n var diff = a.getTime() - b;\n var offsetDiff = a.getTimezoneOffset() - b.getTimezoneOffset();\n\n return diff - (offsetDiff * TIME_PER_MINUTE);\n }\n\n function addTicks(date, ticks) {\n return new Date(date.getTime() + ticks);\n }\n\n function toDate(value) {\n var result;\n\n if (value instanceof Date) {\n result = value;\n } else if (value) {\n result = new Date(value);\n }\n\n return result;\n }\n\n function startOfWeek(date, weekStartDay) {\n if (weekStartDay === void 0) { weekStartDay = 0; }\n\n var daysToSubtract = 0;\n var day = date.getDay();\n\n if (!isNaN(day)) {\n while (day !== weekStartDay) {\n if (day === 0) {\n day = 6;\n } else {\n day--;\n }\n\n daysToSubtract++;\n }\n }\n\n return addTicks(date, -daysToSubtract * TIME_PER_DAY);\n }\n\n function adjustDST(date, hours) {\n if (hours === 0 && date.getHours() === 23) {\n date.setHours(date.getHours() + 2);\n return true;\n }\n\n return false;\n }\n\n function addHours(date, hours) {\n var roundedDate = new Date(date);\n\n roundedDate.setMinutes(0, 0, 0);\n\n var tzDiff = (date.getTimezoneOffset() - roundedDate.getTimezoneOffset()) * TIME_PER_MINUTE;\n\n return addTicks(roundedDate, tzDiff + hours * TIME_PER_HOUR);\n }\n\n function addDuration(dateValue, value, unit, weekStartDay) {\n var result = dateValue;\n\n if (dateValue) {\n var date = toDate(dateValue);\n var hours = date.getHours();\n\n if (unit === YEARS) {\n result = new Date(date.getFullYear() + value, 0, 1);\n adjustDST(result, 0);\n } else if (unit === MONTHS) {\n result = new Date(date.getFullYear(), date.getMonth() + value, 1);\n adjustDST(result, hours);\n } else if (unit === WEEKS) {\n result = addDuration(startOfWeek(date, weekStartDay), value * 7, DAYS);\n adjustDST(result, hours);\n } else if (unit === DAYS) {\n result = new Date(date.getFullYear(), date.getMonth(), date.getDate() + value);\n adjustDST(result, hours);\n } else if (unit === HOURS) {\n result = addHours(date, value);\n } else if (unit === MINUTES) {\n result = addTicks(date, value * TIME_PER_MINUTE);\n\n if (result.getSeconds() > 0) {\n result.setSeconds(0);\n }\n } else if (unit === SECONDS) {\n result = addTicks(date, value * TIME_PER_SECOND);\n } else if (unit === MILLISECONDS) {\n result = addTicks(date, value);\n }\n\n if (unit !== MILLISECONDS && result.getMilliseconds() > 0) {\n result.setMilliseconds(0);\n }\n }\n\n return result;\n }\n\n function floorDate(date, unit, weekStartDay) {\n return addDuration(toDate(date), 0, unit, weekStartDay);\n }\n\n function ceilDate(dateValue, unit, weekStartDay) {\n var date = toDate(dateValue);\n\n if (date && floorDate(date, unit, weekStartDay).getTime() === date.getTime()) {\n return date;\n }\n\n return addDuration(date, 1, unit, weekStartDay);\n }\n\n function dateComparer(a, b) {\n if (a && b) {\n return a.getTime() - b.getTime();\n }\n\n return -1;\n }\n\n function dateDiff(a, b) {\n return a.getTime() - b;\n }\n\n function toTime(value) {\n if (isArray(value)) {\n var result = [];\n for (var idx = 0; idx < value.length; idx++) {\n result.push(toTime(value[idx]));\n }\n\n return result;\n } else if (value) {\n return toDate(value).getTime();\n }\n }\n\n function dateEquals(a, b) {\n if (a && b) {\n return toTime(a) === toTime(b);\n }\n\n return a === b;\n }\n\n function timeIndex(date, start, baseUnit) {\n return absoluteDateDiff(date, start) / TIME_PER_UNIT[baseUnit];\n }\n\n function dateIndex(value, start, baseUnit, baseUnitStep) {\n var date = toDate(value);\n var startDate = toDate(start);\n var index;\n\n if (baseUnit === MONTHS) {\n index = (date.getMonth() - startDate.getMonth() + (date.getFullYear() - startDate.getFullYear()) * 12) +\n timeIndex(date, new Date(date.getFullYear(), date.getMonth()), DAYS) / new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n } else if (baseUnit === YEARS) {\n index = date.getFullYear() - startDate.getFullYear() + dateIndex(date, new Date(date.getFullYear(), 0), MONTHS, 1) / 12;\n } else if (baseUnit === DAYS || baseUnit === WEEKS) {\n index = timeIndex(date, startDate, baseUnit);\n } else {\n index = dateDiff(date, start) / TIME_PER_UNIT[baseUnit];\n }\n\n return index / baseUnitStep;\n }\n\n function duration(a, b, unit) {\n var diff;\n\n if (unit === YEARS) {\n diff = b.getFullYear() - a.getFullYear();\n } else if (unit === MONTHS) {\n diff = duration(a, b, YEARS) * 12 + b.getMonth() - a.getMonth();\n } else if (unit === DAYS) {\n diff = Math.floor(dateDiff(b, a) / TIME_PER_DAY);\n } else {\n diff = Math.floor(dateDiff(b, a) / TIME_PER_UNIT[unit]);\n }\n\n return diff;\n }\n\n function lteDateIndex(date, sortedDates) {\n var low = 0;\n var high = sortedDates.length - 1;\n var index;\n\n while (low <= high) {\n index = Math.floor((low + high) / 2);\n var currentDate = sortedDates[index];\n\n if (currentDate < date) {\n low = index + 1;\n continue;\n }\n\n if (currentDate > date) {\n high = index - 1;\n continue;\n }\n\n while (dateEquals(sortedDates[index - 1], date)) {\n index--;\n }\n\n return index;\n }\n\n if (sortedDates[index] <= date) {\n return index;\n }\n\n return index - 1;\n }\n\n function parseDate(intlService, date) {\n var result;\n if (isString(date)) {\n result = intlService.parseDate(date) || toDate(date);\n } else {\n result = toDate(date);\n }\n return result;\n }\n\n function parseDates(intlService, dates) {\n if (isArray(dates)) {\n var result = [];\n for (var idx = 0; idx < dates.length; idx++) {\n result.push(parseDate(intlService, dates[idx]));\n }\n\n return result;\n }\n\n return parseDate(intlService, dates);\n }\n\n function firstDay(options, intlService) {\n if (isNumber(options.weekStartDay)) {\n return options.weekStartDay;\n }\n\n if (intlService && intlService.firstDay) {\n return intlService.firstDay();\n }\n\n return 0;\n }\n\n var MIN_CATEGORY_POINTS_RANGE = 0.01;\n var MIN_CATEGORY_RANGE = 0.1;\n\n function indexOf(value, arr) {\n if (value instanceof Date) {\n var length = arr.length;\n for (var idx = 0; idx < length; idx++) {\n if (dateEquals(arr[idx], value)) {\n return idx;\n }\n }\n\n return -1;\n }\n\n return arr.indexOf(value);\n }\n\n var CategoryAxis = Axis.extend({\n initFields: function() {\n this._ticks = {};\n },\n\n categoriesHash: function() {\n return \"\";\n },\n\n clone: function() {\n var copy = new CategoryAxis($.extend({}, this.options, {\n categories: this.options.srcCategories\n }), this.chartService);\n copy.createLabels();\n\n return copy;\n },\n\n initUserOptions: function(options) {\n var categories = options.categories || [];\n var definedMin = defined(options.min);\n var definedMax = defined(options.max);\n options.srcCategories = options.categories = categories;\n\n if ((definedMin || definedMax) && categories.length) {\n var min = definedMin ? Math.floor(options.min) : 0;\n var max;\n\n if (definedMax) {\n max = options.justified ? Math.floor(options.max) + 1 : Math.ceil(options.max);\n } else {\n max = categories.length;\n }\n\n options.categories = options.categories.slice(min, max);\n }\n\n return options;\n },\n\n rangeIndices: function() {\n var options = this.options;\n var length = options.categories.length || 1;\n var min = isNumber(options.min) ? options.min % 1 : 0;\n var max;\n\n if (isNumber(options.max) && options.max % 1 !== 0 && options.max < this.totalRange().max) {\n max = length - (1 - options.max % 1);\n } else {\n max = length - (options.justified ? 1 : 0);\n }\n\n return {\n min: min,\n max: max\n };\n },\n\n range: function() {\n var options = this.options;\n var min = isNumber(options.min) ? options.min : 0;\n var max = isNumber(options.max) ? options.max : this.totalRange().max;\n\n return {\n min: min,\n max: max\n };\n },\n\n roundedRange: function() {\n return this.range();\n },\n\n totalRange: function() {\n var options = this.options;\n return { min: 0, max: Math.max(this._seriesMax || 0, options.srcCategories.length) - (options.justified ? 1 : 0) };\n },\n\n scaleOptions: function() {\n var ref = this.rangeIndices();\n var min = ref.min;\n var max = ref.max;\n var lineBox = this.lineBox();\n var size = this.options.vertical ? lineBox.height() : lineBox.width();\n var scale = size / ((max - min) || 1);\n\n return {\n scale: scale * (this.options.reverse ? -1 : 1),\n box: lineBox,\n min: min,\n max: max\n };\n },\n\n arrangeLabels: function() {\n Axis.fn.arrangeLabels.call(this);\n this.hideOutOfRangeLabels();\n },\n\n hideOutOfRangeLabels: function() {\n var ref = this;\n var box = ref.box;\n var labels = ref.labels;\n\n if (labels.length > 0) {\n var valueAxis = this.options.vertical ? Y : X;\n var start = box[valueAxis + 1];\n var end = box[valueAxis + 2];\n var firstLabel = labels[0];\n var lastLabel = last(labels);\n\n if (firstLabel.box[valueAxis + 1] > end || firstLabel.box[valueAxis + 2] < start) {\n firstLabel.options.visible = false;\n }\n if (lastLabel.box[valueAxis + 1] > end || lastLabel.box[valueAxis + 2] < start) {\n lastLabel.options.visible = false;\n }\n }\n },\n\n getMajorTickPositions: function() {\n return this.getTicks().majorTicks;\n },\n\n getMinorTickPositions: function() {\n return this.getTicks().minorTicks;\n },\n\n getLabelsTickPositions: function() {\n return this.getTicks().labelTicks;\n },\n\n tickIndices: function(stepSize) {\n var ref = this.rangeIndices();\n var min = ref.min;\n var max = ref.max;\n var limit = Math.ceil(max);\n var current = Math.floor(min);\n var indices = [];\n\n while (current <= limit) {\n indices.push(current);\n current += stepSize;\n }\n\n return indices;\n },\n\n getTickPositions: function(stepSize) {\n var ref = this.options;\n var vertical = ref.vertical;\n var reverse = ref.reverse;\n var ref$1 = this.scaleOptions();\n var scale = ref$1.scale;\n var box = ref$1.box;\n var min = ref$1.min;\n var pos = box[(vertical ? Y : X) + (reverse ? 2 : 1)];\n var indices = this.tickIndices(stepSize);\n var positions = [];\n\n for (var idx = 0; idx < indices.length; idx++) {\n positions.push(pos + round(scale * (indices[idx] - min), COORD_PRECISION));\n }\n\n return positions;\n },\n\n getTicks: function() {\n var options = this.options;\n var cache = this._ticks;\n var range = this.rangeIndices();\n var lineBox = this.lineBox();\n var hash = lineBox.getHash() + range.min + \",\" + range.max + options.reverse + options.justified;\n\n if (cache._hash !== hash) {\n var hasMinor = options.minorTicks.visible || options.minorGridLines.visible;\n cache._hash = hash;\n cache.labelTicks = this.getTickPositions(1);\n cache.majorTicks = this.filterOutOfRangePositions(cache.labelTicks, lineBox);\n cache.minorTicks = hasMinor ? this.filterOutOfRangePositions(this.getTickPositions(0.5), lineBox) : [];\n }\n\n return cache;\n },\n\n filterOutOfRangePositions: function(positions, lineBox) {\n if (!positions.length) {\n return positions;\n }\n\n var axis = this.options.vertical ? Y : X;\n var inRange = function (position) { return lineBox[axis + 1] <= position && position <= lineBox[axis + 2]; };\n\n var end = positions.length - 1;\n var startIndex = 0;\n while (!inRange(positions[startIndex]) && startIndex <= end) {\n startIndex++;\n }\n\n var endIndex = end;\n\n while (!inRange(positions[endIndex]) && endIndex >= 0) {\n endIndex--;\n }\n\n return positions.slice(startIndex, endIndex + 1);\n },\n\n lineInfo: function() {\n var ref = this.options;\n var vertical = ref.vertical;\n var reverse = ref.reverse;\n var lineBox = this.lineBox();\n var lineSize = vertical ? lineBox.height() : lineBox.width();\n var axis = vertical ? Y : X;\n var axisDir = reverse ? -1 : 1;\n var startEdge = axisDir === 1 ? 1 : 2;\n var axisOrigin = axis + startEdge.toString();\n var lineStart = lineBox[axisOrigin];\n\n return {\n axis: axis,\n axisOrigin: axisOrigin,\n axisDir: axisDir,\n lineBox: lineBox,\n lineSize: lineSize,\n lineStart: lineStart\n };\n },\n\n lineDir: function() {\n /*\n * Category axis line direction:\n * * Vertical: down.\n * * Horizontal: right.\n */\n\n var ref = this.options;\n var reverse = ref.reverse;\n return reverse ? -1 : 1;\n },\n\n getSlot: function(from, to, limit) {\n var options = this.options;\n var reverse = options.reverse;\n var justified = options.justified;\n var ref = this.scaleOptions();\n var scale = ref.scale;\n var box = ref.box;\n var min = ref.min;\n var ref$1 = this.lineInfo();\n var valueAxis = ref$1.axis;\n var lineStart = ref$1.lineStart;\n\n var slotBox = box.clone();\n var singleSlot = !defined(to);\n\n var start = valueOrDefault(from, 0);\n var end = valueOrDefault(to, start);\n end = Math.max(end - 1, start);\n\n // Fixes transient bug caused by iOS 6.0 JIT\n // (one can never be too sure)\n end = Math.max(start, end);\n\n var p1 = lineStart + (start - min) * scale;\n var p2 = lineStart + (end + 1 - min) * scale;\n\n if (singleSlot && justified) {\n p2 = p1;\n }\n\n if (limit) {\n p1 = limitValue(p1, box[valueAxis + 1], box[valueAxis + 2]);\n p2 = limitValue(p2, box[valueAxis + 1], box[valueAxis + 2]);\n }\n\n slotBox[valueAxis + 1] = reverse ? p2 : p1;\n slotBox[valueAxis + 2] = reverse ? p1 : p2;\n\n return slotBox;\n },\n\n limitSlot: function(slot) {\n var vertical = this.options.vertical;\n var valueAxis = vertical ? Y : X;\n var lineBox = this.lineBox();\n var limittedSlot = slot.clone();\n\n limittedSlot[valueAxis + 1] = limitValue(slot[valueAxis + 1], lineBox[valueAxis + 1], lineBox[valueAxis + 2]);\n limittedSlot[valueAxis + 2] = limitValue(slot[valueAxis + 2], lineBox[valueAxis + 1], lineBox[valueAxis + 2]);\n\n return limittedSlot;\n },\n\n slot: function(from, to, limit) {\n var min = Math.floor(this.options.min || 0);\n var start = from;\n var end = to;\n\n if (typeof start === \"string\") {\n start = this.categoryIndex(start);\n } else if (isNumber(start)) {\n start -= min;\n }\n\n if (typeof end === \"string\") {\n end = this.categoryIndex(end);\n } else if (isNumber(end)) {\n end -= min;\n }\n\n return Axis.fn.slot.call(this, start, end, limit);\n },\n\n pointCategoryIndex: function(point) {\n var ref = this.options;\n var reverse = ref.reverse;\n var justified = ref.justified;\n var vertical = ref.vertical;\n var valueAxis = vertical ? Y : X;\n var ref$1 = this.scaleOptions();\n var scale = ref$1.scale;\n var box = ref$1.box;\n var min = ref$1.min;\n var max = ref$1.max;\n var startValue = reverse ? max : min;\n var lineStart = box[valueAxis + 1];\n var lineEnd = box[valueAxis + 2];\n var pos = point[valueAxis];\n\n if (pos < lineStart || pos > lineEnd) {\n return null;\n }\n\n var value = startValue + (pos - lineStart) / scale;\n var diff = value % 1;\n\n if (justified) {\n value = Math.round(value);\n } else if (diff === 0 && value > 0) {\n value--;\n }\n\n return Math.floor(value);\n },\n\n getCategory: function(point) {\n var index = this.pointCategoryIndex(point);\n\n if (index === null) {\n return null;\n }\n\n return this.options.categories[index];\n },\n\n categoryIndex: function(value) {\n return this.totalIndex(value) - Math.floor(this.options.min || 0);\n },\n\n categoryAt: function(index, total) {\n var options = this.options;\n\n return (total ? options.srcCategories : options.categories)[index];\n },\n\n categoriesCount: function() {\n return (this.options.categories || []).length;\n },\n\n translateRange: function(delta) {\n var options = this.options;\n var lineBox = this.lineBox();\n var size = options.vertical ? lineBox.height() : lineBox.width();\n var range = options.categories.length;\n var scale = size / range;\n var offset = round(delta / scale, DEFAULT_PRECISION);\n\n return {\n min: offset,\n max: range + offset\n };\n },\n\n scaleRange: function(scale, cursor) {\n var position = Math.abs(this.pointOffset(cursor));\n var rangeIndices = this.limitedRangeIndices();\n var range = rangeIndices.max - rangeIndices.min;\n var delta = this.scaleToDelta(scale, range);\n var minDelta = position * delta;\n var maxDelta = (1 - position) * delta;\n var min = rangeIndices.min + minDelta;\n var max = rangeIndices.max - maxDelta;\n\n if (max - min < MIN_CATEGORY_RANGE) {\n max = min + MIN_CATEGORY_RANGE;\n }\n\n return {\n min: min,\n max: max\n };\n },\n\n zoomRange: function(scale, cursor) {\n var ref = this.totalRange();\n var totalMin = ref.min;\n var totalMax = ref.max;\n var range = this.scaleRange(scale, cursor);\n\n return {\n min: limitValue(range.min, totalMin, totalMax),\n max: limitValue(range.max, totalMin, totalMax)\n };\n },\n\n labelsCount: function() {\n var labelsRange = this.labelsRange();\n\n return labelsRange.max - labelsRange.min;\n },\n\n labelsRange: function() {\n var options = this.options;\n var justified = options.justified;\n var labelOptions = options.labels;\n var ref = this.limitedRangeIndices(true);\n var min = ref.min;\n var max = ref.max;\n var start = Math.floor(min);\n\n if (!justified) {\n min = Math.floor(min);\n max = Math.ceil(max);\n } else {\n min = Math.ceil(min);\n max = Math.floor(max);\n }\n\n var skip;\n\n if (min > labelOptions.skip) {\n skip = labelOptions.skip + labelOptions.step * Math.ceil((min - labelOptions.skip) / labelOptions.step);\n } else {\n skip = labelOptions.skip;\n }\n\n return {\n min: skip - start,\n max: (options.categories.length ? max + (justified ? 1 : 0) : 0) - start\n };\n },\n\n createAxisLabel: function(index, labelOptions, labelContext) {\n var options = this.options;\n var dataItem = options.dataItems ? options.dataItems[index] : null;\n var category = valueOrDefault(options.categories[index], \"\");\n\n labelContext.dataItem = dataItem;\n var text = this.axisLabelText(category, labelOptions, labelContext);\n\n return new AxisLabel(category, text, index, dataItem, labelOptions);\n },\n\n shouldRenderNote: function(value) {\n var range = this.limitedRangeIndices();\n\n return Math.floor(range.min) <= value && value <= Math.ceil(range.max);\n },\n\n noteSlot: function(value) {\n var options = this.options;\n var index = value - Math.floor(options.min || 0);\n return this.getSlot(index);\n },\n\n arrangeNotes: function() {\n Axis.fn.arrangeNotes.call(this);\n this.hideOutOfRangeNotes();\n },\n\n hideOutOfRangeNotes: function() {\n var ref = this;\n var notes = ref.notes;\n var box = ref.box;\n if (notes && notes.length) {\n var valueAxis = this.options.vertical ? Y : X;\n var start = box[valueAxis + 1];\n var end = box[valueAxis + 2];\n\n for (var idx = 0; idx < notes.length; idx++) {\n var note = notes[idx];\n if (note.box && (end < note.box[valueAxis + 1] || note.box[valueAxis + 2] < start)) {\n note.hide();\n }\n }\n }\n },\n\n pan: function(delta) {\n var range = this.limitedRangeIndices(true);\n var ref = this.scaleOptions();\n var scale = ref.scale;\n var offset = round(delta / scale, DEFAULT_PRECISION);\n var totalRange = this.totalRange();\n var min = range.min + offset;\n var max = range.max + offset;\n\n return this.limitRange(min, max, 0, totalRange.max, offset);\n },\n\n pointsRange: function(start, end) {\n var ref = this.options;\n var reverse = ref.reverse;\n var vertical = ref.vertical;\n var valueAxis = vertical ? Y : X;\n var range = this.limitedRangeIndices(true);\n var ref$1 = this.scaleOptions();\n var scale = ref$1.scale;\n var box = ref$1.box;\n var lineStart = box[valueAxis + (reverse ? 2 : 1)];\n\n var diffStart = start[valueAxis] - lineStart;\n var diffEnd = end[valueAxis] - lineStart;\n\n var min = range.min + diffStart / scale;\n var max = range.min + diffEnd / scale;\n var rangeMin = Math.min(min, max);\n var rangeMax = Math.max(min, max);\n\n if (rangeMax - rangeMin >= MIN_CATEGORY_POINTS_RANGE) {\n return {\n min: rangeMin,\n max: rangeMax\n };\n }\n },\n\n valueRange: function() {\n return this.range();\n },\n\n totalIndex: function(value) {\n var options = this.options;\n var index = this._categoriesMap ?\n this._categoriesMap.get(value) : indexOf(value, options.srcCategories);\n\n return index;\n },\n\n currentRangeIndices: function() {\n var options = this.options;\n var min = 0;\n\n if (isNumber(options.min)) {\n min = Math.floor(options.min);\n }\n\n var max;\n if (isNumber(options.max)) {\n max = options.justified ? Math.floor(options.max) : Math.ceil(options.max) - 1;\n } else {\n max = this.totalCount() - 1;\n }\n\n return {\n min: min,\n max: max\n };\n },\n\n limitedRangeIndices: function(totalLimit) {\n var options = this.options;\n var min = isNumber(options.min) ? options.min : 0;\n var max;\n\n if (isNumber(options.max)) {\n max = options.max;\n } else if (isNumber(options.min)) {\n max = min + options.categories.length;\n } else {\n max = this.totalRange().max || 1;\n }\n\n if (totalLimit) {\n var totalRange = this.totalRange();\n min = limitValue(min, 0, totalRange.max);\n max = limitValue(max, 0, totalRange.max);\n }\n\n return {\n min: min,\n max: max\n };\n },\n\n totalRangeIndices: function() {\n return {\n min: 0,\n max: this.totalRange().max || 1\n };\n },\n\n indexCategories: function() {\n if (!this._categoriesMap) {\n var map$$1 = this._categoriesMap = new HashMap();\n var srcCategories = this.options.srcCategories;\n for (var idx = 0; idx < srcCategories.length; idx++) {\n map$$1.set(srcCategories[idx], idx);\n }\n }\n },\n\n totalCount: function() {\n return Math.max(this.options.srcCategories.length, this._seriesMax || 0);\n }\n });\n\n setDefaultOptions(CategoryAxis, {\n type: \"category\",\n vertical: false,\n majorGridLines: {\n visible: false,\n width: 1,\n color: BLACK\n },\n labels: {\n zIndex: 1\n },\n justified: false,\n _deferLabels: true\n });\n\n var COORDINATE_LIMIT = 300000;\n\n var DateLabelFormats = {\n milliseconds: \"HH:mm:ss.fff\",\n seconds: \"HH:mm:ss\",\n minutes: \"HH:mm\",\n hours: \"HH:mm\",\n days: \"M/d\",\n weeks: \"M/d\",\n months: \"MMM 'yy\",\n years: \"yyyy\"\n };\n\n var ZERO_THRESHOLD = 0.2;\n\n var AUTO = \"auto\";\n var BASE_UNITS = [\n MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS\n ];\n var FIT = \"fit\";\n\n function categoryRange(categories, clearCache) {\n if (clearCache) {\n categories._range = undefined;\n }\n\n var range = categories._range;\n if (!range) {\n range = categories._range = sparseArrayLimits(categories);\n range.min = toDate(range.min);\n range.max = toDate(range.max);\n }\n\n return range;\n }\n\n var EmptyDateRange = Class.extend({\n init: function(options) {\n this.options = options;\n },\n\n displayIndices: function() {\n return {\n min: 0,\n max: 1\n };\n },\n\n displayRange: function() {\n return {};\n },\n\n total: function() {\n return {};\n },\n\n valueRange: function() {\n return {};\n },\n\n valueIndex: function() {\n return -1;\n },\n\n values: function() {\n return [];\n },\n\n totalIndex: function() {\n return -1;\n },\n\n valuesCount: function() {\n return 0;\n },\n\n totalCount: function() {\n return 0;\n },\n\n dateAt: function() {\n return null;\n }\n });\n\n var DateRange = Class.extend({\n init: function(start, end, options) {\n this.options = options;\n options.baseUnitStep = options.baseUnitStep || 1;\n\n var roundToBaseUnit = options.roundToBaseUnit;\n var justified = options.justified;\n\n this.start = addDuration(start, 0, options.baseUnit, options.weekStartDay);\n var lowerEnd = this.roundToTotalStep(end);\n var expandEnd = !justified && dateEquals(end, lowerEnd) && !options.justifyEnd;\n\n this.end = this.roundToTotalStep(end, !justified, expandEnd ? 1 : 0);\n\n var min = options.min || start;\n this.valueStart = this.roundToTotalStep(min);\n this.displayStart = roundToBaseUnit ? this.valueStart : min;\n\n var max = options.max;\n if (!max) {\n this.valueEnd = lowerEnd;\n this.displayEnd = roundToBaseUnit || expandEnd ? this.end : end;\n } else {\n var next = !justified && dateEquals(max, this.roundToTotalStep(max)) ? -1 : 0;\n this.valueEnd = this.roundToTotalStep(max, false, next);\n this.displayEnd = roundToBaseUnit ? this.roundToTotalStep(max, !justified) : options.max;\n }\n\n if (this.valueEnd < this.valueStart) {\n this.valueEnd = this.valueStart;\n }\n if (this.displayEnd <= this.displayStart) {\n this.displayEnd = this.roundToTotalStep(this.displayStart, false, 1);\n }\n },\n\n displayRange: function() {\n return {\n min: this.displayStart,\n max: this.displayEnd\n };\n },\n\n displayIndices: function() {\n if (!this._indices) {\n var options = this.options;\n\n var baseUnit = options.baseUnit;\n var baseUnitStep = options.baseUnitStep;\n\n var minIdx = dateIndex(this.displayStart, this.valueStart, baseUnit, baseUnitStep);\n var maxIdx = dateIndex(this.displayEnd, this.valueStart, baseUnit, baseUnitStep);\n\n this._indices = { min: minIdx, max: maxIdx };\n }\n\n return this._indices;\n },\n\n total: function() {\n return {\n min: this.start,\n max: this.end\n };\n },\n\n totalCount: function() {\n var last$$1 = this.totalIndex(this.end);\n\n return last$$1 + (this.options.justified ? 1 : 0);\n },\n\n valueRange: function() {\n return {\n min: this.valueStart,\n max: this.valueEnd\n };\n },\n\n valueIndex: function(value) {\n var options = this.options;\n return Math.floor(dateIndex(value, this.valueStart, options.baseUnit, options.baseUnitStep));\n },\n\n totalIndex: function(value) {\n var options = this.options;\n return Math.floor(dateIndex(value, this.start, options.baseUnit, options.baseUnitStep));\n },\n\n dateIndex: function(value) {\n var options = this.options;\n return dateIndex(value, this.valueStart, options.baseUnit, options.baseUnitStep);\n },\n\n valuesCount: function() {\n var maxIdx = this.valueIndex(this.valueEnd);\n\n return maxIdx + 1;\n },\n\n values: function() {\n var values = this._values;\n if (!values) {\n var options = this.options;\n var range = this.valueRange();\n this._values = values = [];\n\n for (var date = range.min; date <= range.max;) {\n values.push(date);\n date = addDuration(date, options.baseUnitStep, options.baseUnit, options.weekStartDay);\n }\n }\n\n return values;\n },\n\n dateAt: function(index, total) {\n var options = this.options;\n\n return addDuration(total ? this.start : this.valueStart, options.baseUnitStep * index, options.baseUnit, options.weekStartDay);\n },\n\n roundToTotalStep: function(value, upper, next) {\n var ref = this.options;\n var baseUnit = ref.baseUnit;\n var baseUnitStep = ref.baseUnitStep;\n var weekStartDay = ref.weekStartDay;\n var start = this.start;\n\n var step = dateIndex(value, start, baseUnit, baseUnitStep);\n var roundedStep = upper ? Math.ceil(step) : Math.floor(step);\n\n if (next) {\n roundedStep += next;\n }\n\n return addDuration(start, roundedStep * baseUnitStep, baseUnit, weekStartDay);\n }\n });\n\n function autoBaseUnit(options, startUnit, startStep) {\n var categoryLimits = categoryRange(options.categories);\n var span = (options.max || categoryLimits.max) - (options.min || categoryLimits.min);\n var autoBaseUnitSteps = options.autoBaseUnitSteps;\n var maxDateGroups = options.maxDateGroups;\n var autoUnit = options.baseUnit === FIT;\n var autoUnitIx = startUnit ? BASE_UNITS.indexOf(startUnit) : 0;\n var baseUnit = autoUnit ? BASE_UNITS[autoUnitIx++] : options.baseUnit;\n var units = span / TIME_PER_UNIT[baseUnit];\n var totalUnits = units;\n var unitSteps, step, nextStep;\n\n while (!step || units >= maxDateGroups) {\n unitSteps = unitSteps || autoBaseUnitSteps[baseUnit].slice(0);\n\n do {\n nextStep = unitSteps.shift();\n } while (nextStep && startUnit === baseUnit && nextStep < startStep);\n\n if (nextStep) {\n step = nextStep;\n units = totalUnits / step;\n } else if (baseUnit === last(BASE_UNITS)) {\n step = Math.ceil(totalUnits / maxDateGroups);\n break;\n } else if (autoUnit) {\n baseUnit = BASE_UNITS[autoUnitIx++] || last(BASE_UNITS);\n totalUnits = span / TIME_PER_UNIT[baseUnit];\n unitSteps = null;\n } else {\n if (units > maxDateGroups) {\n step = Math.ceil(totalUnits / maxDateGroups);\n }\n break;\n }\n }\n\n options.baseUnitStep = step;\n options.baseUnit = baseUnit;\n }\n\n function defaultBaseUnit(options) {\n var categories = options.categories;\n var count = defined(categories) ? categories.length : 0;\n var minDiff = MAX_VALUE;\n var lastCategory, unit;\n\n for (var categoryIx = 0; categoryIx < count; categoryIx++) {\n var category = categories[categoryIx];\n\n if (category && lastCategory) {\n var diff = Math.abs(absoluteDateDiff(category, lastCategory));\n\n if (diff !== 0) {\n minDiff = Math.min(minDiff, diff);\n\n if (minDiff >= TIME_PER_YEAR) {\n unit = YEARS;\n } else if (minDiff >= TIME_PER_MONTH - TIME_PER_DAY * 3) {\n unit = MONTHS;\n } else if (minDiff >= TIME_PER_WEEK) {\n unit = WEEKS;\n } else if (minDiff >= TIME_PER_DAY) {\n unit = DAYS;\n } else if (minDiff >= TIME_PER_HOUR) {\n unit = HOURS;\n } else if (minDiff >= TIME_PER_MINUTE) {\n unit = MINUTES;\n } else {\n unit = SECONDS;\n }\n }\n }\n\n lastCategory = category;\n }\n\n options.baseUnit = unit || DAYS;\n }\n\n function initUnit(options) {\n var baseUnit = (options.baseUnit || \"\").toLowerCase();\n var useDefault = baseUnit !== FIT && !inArray(baseUnit, BASE_UNITS);\n\n if (useDefault) {\n defaultBaseUnit(options);\n }\n\n if (baseUnit === FIT || options.baseUnitStep === AUTO) {\n autoBaseUnit(options);\n }\n\n return options;\n }\n\n var DateCategoryAxis = CategoryAxis.extend({\n clone: function() {\n var copy = new DateCategoryAxis($.extend({}, this.options), this.chartService);\n copy.createLabels();\n\n return copy;\n },\n\n categoriesHash: function() {\n var start = this.dataRange.total().min;\n return this.options.baseUnit + this.options.baseUnitStep + start;\n },\n\n initUserOptions: function(options) {\n return options;\n },\n\n initFields: function() {\n CategoryAxis.fn.initFields.call(this);\n\n var chartService = this.chartService;\n var intlService = chartService.intl;\n var options = this.options;\n\n var categories = options.categories || [];\n if (!categories._parsed) {\n categories = parseDates(intlService, categories);\n categories._parsed = true;\n }\n\n options = deepExtend({\n roundToBaseUnit: true\n }, options, {\n categories: categories,\n min: parseDate(intlService, options.min),\n max: parseDate(intlService, options.max),\n weekStartDay: firstDay(options, intlService)\n });\n\n if (chartService.panning && chartService.isPannable(options.vertical ? Y : X)) {\n options.roundToBaseUnit = false;\n }\n\n options.userSetBaseUnit = options.userSetBaseUnit || options.baseUnit;\n options.userSetBaseUnitStep = options.userSetBaseUnitStep || options.baseUnitStep;\n\n this.options = options;\n options.srcCategories = categories;\n\n if (categories.length > 0) {\n var range = categoryRange(categories, true);\n var maxDivisions = options.maxDivisions;\n var safeOptions = initUnit(options);\n\n var forecast = options._forecast;\n if (forecast) {\n if (forecast.before > 0) {\n range.min = addDuration(range.min, -forecast.before, safeOptions.baseUnit, safeOptions.weekStartDay);\n }\n\n if (forecast.after > 0) {\n range.max = addDuration(range.max, forecast.after, safeOptions.baseUnit, safeOptions.weekStartDay);\n }\n }\n\n this.dataRange = new DateRange(range.min, range.max, safeOptions);\n\n if (maxDivisions) {\n var dataRange = this.dataRange.displayRange();\n\n var divisionOptions = $.extend({}, options, {\n justified: true,\n roundToBaseUnit: false,\n baseUnit: 'fit',\n min: dataRange.min,\n max: dataRange.max,\n maxDateGroups: maxDivisions\n });\n\n var dataRangeOptions = this.dataRange.options;\n\n autoBaseUnit(divisionOptions, dataRangeOptions.baseUnit, dataRangeOptions.baseUnitStep);\n\n this.divisionRange = new DateRange(range.min, range.max, divisionOptions);\n } else {\n this.divisionRange = this.dataRange;\n }\n\n } else {\n options.baseUnit = options.baseUnit || DAYS;\n this.dataRange = this.divisionRange = new EmptyDateRange(options);\n }\n\n this.rangeLabels = [];\n },\n\n tickIndices: function(stepSize) {\n var ref = this;\n var dataRange = ref.dataRange;\n var divisionRange = ref.divisionRange;\n var valuesCount = divisionRange.valuesCount();\n\n if (!this.options.maxDivisions || !valuesCount) {\n return CategoryAxis.fn.tickIndices.call(this, stepSize);\n }\n\n var indices = [];\n var values = divisionRange.values();\n var offset = 0;\n\n if (!this.options.justified) {\n values = values.concat(divisionRange.dateAt(valuesCount));\n offset = 0.5;//align ticks to the center of not justified categories\n }\n\n for (var idx = 0; idx < values.length; idx++) {\n indices.push(dataRange.dateIndex(values[idx]) + offset);\n if (stepSize !== 1 && idx >= 1) {\n var last$$1 = indices.length - 1;\n indices.splice(idx, 0, indices[last$$1 - 1] + (indices[last$$1] - indices[last$$1 - 1]) * stepSize);\n }\n }\n\n return indices;\n },\n\n shouldRenderNote: function(value) {\n var range = this.range();\n var categories = this.options.categories || [];\n\n return dateComparer(value, range.min) >= 0 && dateComparer(value, range.max) <= 0 && categories.length;\n },\n\n parseNoteValue: function(value) {\n return parseDate(this.chartService.intl, value);\n },\n\n noteSlot: function(value) {\n return this.getSlot(value);\n },\n\n translateRange: function(delta) {\n var options = this.options;\n var baseUnit = options.baseUnit;\n var weekStartDay = options.weekStartDay;\n var vertical = options.vertical;\n var lineBox = this.lineBox();\n var size = vertical ? lineBox.height() : lineBox.width();\n var range = this.range();\n var scale = size / (range.max - range.min);\n var offset = round(delta / scale, DEFAULT_PRECISION);\n\n if (range.min && range.max) {\n var from = addTicks(options.min || range.min, offset);\n var to = addTicks(options.max || range.max, offset);\n\n range = {\n min: addDuration(from, 0, baseUnit, weekStartDay),\n max: addDuration(to, 0, baseUnit, weekStartDay)\n };\n }\n\n return range;\n },\n\n labelsRange: function() {\n return {\n min: this.options.labels.skip,\n max: this.divisionRange.valuesCount()\n };\n },\n\n pan: function(delta) {\n if (this.isEmpty()) {\n return null;\n }\n\n var options = this.options;\n var lineBox = this.lineBox();\n var size = options.vertical ? lineBox.height() : lineBox.width();\n var ref = this.dataRange.displayRange();\n var min = ref.min;\n var max = ref.max;\n var totalLimits = this.dataRange.total();\n var scale = size / (max - min);\n var offset = round(delta / scale, DEFAULT_PRECISION) * (options.reverse ? -1 : 1);\n var from = addTicks(min, offset);\n var to = addTicks(max, offset);\n\n var panRange = this.limitRange(toTime(from), toTime(to), toTime(totalLimits.min), toTime(totalLimits.max), offset);\n\n if (panRange) {\n panRange.min = toDate(panRange.min);\n panRange.max = toDate(panRange.max);\n panRange.baseUnit = options.baseUnit;\n panRange.baseUnitStep = options.baseUnitStep || 1;\n panRange.userSetBaseUnit = options.userSetBaseUnit;\n panRange.userSetBaseUnitStep = options.userSetBaseUnitStep;\n\n return panRange;\n }\n },\n\n pointsRange: function(start, end) {\n if (this.isEmpty()) {\n return null;\n }\n\n var pointsRange = CategoryAxis.fn.pointsRange.call(this, start, end);\n var datesRange = this.dataRange.displayRange();\n var indicesRange = this.dataRange.displayIndices();\n var scale = dateDiff(datesRange.max, datesRange.min) / (indicesRange.max - indicesRange.min);\n var options = this.options;\n\n var min = addTicks(datesRange.min, pointsRange.min * scale);\n var max = addTicks(datesRange.min, pointsRange.max * scale);\n\n return {\n min: min,\n max: max,\n baseUnit: options.userSetBaseUnit || options.baseUnit,\n baseUnitStep: options.userSetBaseUnitStep || options.baseUnitStep\n };\n },\n\n scaleRange: function(scale, cursor) {\n if (this.isEmpty()) {\n return {};\n }\n\n var options = this.options;\n var fit = options.userSetBaseUnit === FIT;\n var totalLimits = this.dataRange.total();\n var ref = this.dataRange.displayRange();\n var rangeMin = ref.min;\n var rangeMax = ref.max;\n\n var position = Math.abs(this.pointOffset(cursor));\n var range = rangeMax - rangeMin;\n var delta = this.scaleToDelta(scale, range);\n var minDelta = Math.round(position * delta);\n var maxDelta = Math.round((1 - position) * delta);\n\n var ref$1 = this.dataRange.options;\n var baseUnit = ref$1.baseUnit;\n var min = new Date(rangeMin.getTime() + minDelta);\n var max = new Date(rangeMax.getTime() - maxDelta);\n\n if (fit) {\n var autoBaseUnitSteps = options.autoBaseUnitSteps;\n var maxDateGroups = options.maxDateGroups;\n\n var maxDiff = last(autoBaseUnitSteps[baseUnit]) * maxDateGroups * TIME_PER_UNIT[baseUnit];\n var rangeDiff = dateDiff(rangeMax, rangeMin);\n var diff = dateDiff(max, min);\n var baseUnitIndex = BASE_UNITS.indexOf(baseUnit);\n var autoBaseUnitStep, ticks;\n\n if (diff < TIME_PER_UNIT[baseUnit] && baseUnit !== MILLISECONDS) {\n baseUnit = BASE_UNITS[baseUnitIndex - 1];\n autoBaseUnitStep = last(autoBaseUnitSteps[baseUnit]);\n ticks = (rangeDiff - (maxDateGroups - 1) * autoBaseUnitStep * TIME_PER_UNIT[baseUnit]) / 2;\n min = addTicks(rangeMin, ticks);\n max = addTicks(rangeMax, -ticks);\n\n } else if (diff > maxDiff && baseUnit !== YEARS) {\n var stepIndex = 0;\n\n do {\n baseUnitIndex++;\n baseUnit = BASE_UNITS[baseUnitIndex];\n stepIndex = 0;\n ticks = 2 * TIME_PER_UNIT[baseUnit];\n do {\n autoBaseUnitStep = autoBaseUnitSteps[baseUnit][stepIndex];\n stepIndex++;\n } while (stepIndex < autoBaseUnitSteps[baseUnit].length && ticks * autoBaseUnitStep < rangeDiff);\n } while (baseUnit !== YEARS && ticks * autoBaseUnitStep < rangeDiff);\n\n ticks = (ticks * autoBaseUnitStep - rangeDiff) / 2;\n if (ticks > 0) {\n min = addTicks(rangeMin, -ticks);\n max = addTicks(rangeMax, ticks);\n min = addTicks(min, limitValue(max, totalLimits.min, totalLimits.max) - max);\n max = addTicks(max, limitValue(min, totalLimits.min, totalLimits.max) - min);\n }\n }\n }\n\n if (min && max && dateDiff(max, min) > 0) {\n return {\n min: min,\n max: max,\n baseUnit: options.userSetBaseUnit || options.baseUnit,\n baseUnitStep: options.userSetBaseUnitStep || options.baseUnitStep\n };\n }\n },\n\n zoomRange: function(scale, cursor) {\n var totalLimits = this.dataRange.total();\n var range = this.scaleRange(scale, cursor);\n\n if (range) {\n if (range.min < totalLimits.min) {\n range.min = totalLimits.min;\n }\n if (range.max > totalLimits.max) {\n range.max = totalLimits.max;\n }\n }\n\n return range;\n },\n\n range: function() {\n return this.dataRange.displayRange();\n },\n\n createLabels: function() {\n CategoryAxis.fn.createLabels.call(this);\n this.createRangeLabels();\n },\n\n clearLabels: function() {\n CategoryAxis.fn.clearLabels.call(this);\n this.rangeLabels = [];\n },\n\n arrangeLabels: function() {\n this.arrangeRangeLabels();\n CategoryAxis.fn.arrangeLabels.call(this);\n },\n\n arrangeRangeLabels: function() {\n var ref = this;\n var options = ref.options;\n var rangeLabels = ref.rangeLabels;\n if (rangeLabels.length === 0) {\n return;\n }\n\n var lineBox = this.lineBox();\n var vertical = options.vertical;\n var mirror = options.rangeLabels.mirror || options.labels.mirror;\n\n var firstLabel = rangeLabels[0];\n if (firstLabel) {\n var position = vertical ? lineBox.y1 - (firstLabel.box.height() / 2) : lineBox.x1;\n this.positionLabel(firstLabel, mirror, position);\n }\n\n var lastLabel = rangeLabels[1];\n if (lastLabel) {\n var position$1 = vertical ? lineBox.y2 - (lastLabel.box.height() / 2) : lineBox.x2;\n this.positionLabel(lastLabel, mirror, position$1);\n }\n },\n\n autoRotateLabels: function() {\n CategoryAxis.fn.autoRotateLabels.call(this);\n this.autoRotateRangeLabels();\n },\n\n hideOutOfRangeLabels: function() {\n CategoryAxis.fn.hideOutOfRangeLabels.call(this);\n this.hideOverlappingLabels();\n },\n\n hideOverlappingLabels: function() {\n var ref = this;\n var rangeLabels = ref.rangeLabels;\n var labels = ref.labels;\n if (rangeLabels.length === 0) {\n return;\n }\n\n function clip(rangeLabel, label) {\n if (!label.options.visible || label.box.overlaps(rangeLabel.box)) {\n label.options.visible = false;\n return true;\n }\n\n return false;\n }\n\n var firstRangeLabel = rangeLabels[0];\n if (firstRangeLabel && firstRangeLabel.options.visible) {\n for (var i = 0; i < labels.length; i++) {\n var overlaps = clip(firstRangeLabel, labels[i]);\n if (!overlaps) {\n break;\n }\n }\n }\n\n var lastRangeLabel = rangeLabels[1];\n if (lastRangeLabel && lastRangeLabel.options.visible) {\n for (var i$1 = labels.length - 1; i$1 > 0; --i$1) {\n var overlaps$1 = clip(lastRangeLabel, labels[i$1]);\n if (!overlaps$1) {\n break;\n }\n }\n }\n },\n\n contentBox: function() {\n var box = CategoryAxis.fn.contentBox.call(this);\n var rangeLabels = this.rangeLabels;\n\n for (var i = 0; i < rangeLabels.length; i++) {\n var label = rangeLabels[i];\n if (label.options.visible) {\n box.wrap(label.box);\n }\n }\n\n return box;\n },\n\n createAxisLabel: function(index, labelOptions, labelContext) {\n if (labelContext === void 0) { labelContext = {}; }\n\n var options = this.options;\n var dataItem = options.dataItems && !options.maxDivisions ? options.dataItems[index] : null;\n var date = this.divisionRange.dateAt(index);\n var unitFormat = labelOptions.dateFormats[this.divisionRange.options.baseUnit];\n\n labelOptions.format = labelOptions.format || unitFormat;\n labelContext.dataItem = dataItem;\n\n var text = this.axisLabelText(date, labelOptions, labelContext);\n if (text) {\n return new AxisLabel(date, text, index, dataItem, labelOptions);\n }\n },\n\n createRangeLabels: function() {\n var this$1$1 = this;\n\n var ref = this.divisionRange;\n var displayStart = ref.displayStart;\n var displayEnd = ref.displayEnd;\n var options = this.options;\n var labelOptions = $.extend({}, options.labels, options.rangeLabels, {\n align: CENTER,\n zIndex: options.zIndex\n });\n\n if (labelOptions.visible !== true) {\n return;\n }\n\n this.normalizeLabelRotation(labelOptions);\n labelOptions.alignRotation = CENTER;\n\n if (labelOptions.rotation === \"auto\") {\n labelOptions.rotation = 0;\n options.autoRotateRangeLabels = true;\n }\n\n var unitFormat = labelOptions.dateFormats[this.divisionRange.options.baseUnit];\n labelOptions.format = labelOptions.format || unitFormat;\n\n var createLabel = function (index, date, text) {\n if (text) {\n var label = new AxisLabel(date, text, index, null, labelOptions);\n this$1$1.append(label);\n this$1$1.rangeLabels.push(label);\n }\n };\n\n var startText = this.axisLabelText(displayStart, labelOptions, { index: 0, count: 2 });\n createLabel(0, displayStart, startText);\n\n var endText = this.axisLabelText(displayEnd, labelOptions, { index: 1, count: 2 });\n createLabel(1, displayEnd, endText);\n },\n\n autoRotateRangeLabels: function() {\n var this$1$1 = this;\n\n var labels = this.rangeLabels;\n if (!this.options.autoRotateRangeLabels || this.options.vertical || labels.length !== 2) {\n return;\n }\n\n var rotateLabel = function (label, tickPositions, index) {\n var width = Math.abs(tickPositions[index + 1] - tickPositions[index]) * 2;\n var angle = this$1$1.autoRotateLabelAngle(label.box, width);\n if (angle !== 0) {\n label.options.rotation = angle;\n label.reflow(new Box());\n }\n };\n\n var tickPositions = this.getMajorTickPositions();\n rotateLabel(labels[0], tickPositions, 0);\n rotateLabel(labels[1], tickPositions, tickPositions.length - 2);\n },\n\n categoryIndex: function(value) {\n return this.dataRange.valueIndex(value);\n },\n\n slot: function(from, to, limit) {\n var dateRange = this.dataRange;\n var start = from;\n var end = to;\n\n if (start instanceof Date) {\n start = dateRange.dateIndex(start);\n }\n\n if (end instanceof Date) {\n end = dateRange.dateIndex(end);\n }\n\n var slot = this.getSlot(start, end, limit);\n if (slot) {\n return slot.toRect();\n }\n },\n\n getSlot: function(a, b, limit) {\n var start = a;\n var end = b;\n\n if (typeof start === OBJECT) {\n start = this.categoryIndex(start);\n }\n\n if (typeof end === OBJECT) {\n end = this.categoryIndex(end);\n }\n\n return CategoryAxis.fn.getSlot.call(this, start, end, limit);\n },\n\n valueRange: function() {\n var options = this.options;\n var range = categoryRange(options.srcCategories);\n\n return {\n min: toDate(range.min),\n max: toDate(range.max)\n };\n },\n\n categoryAt: function(index, total) {\n return this.dataRange.dateAt(index, total);\n },\n\n categoriesCount: function() {\n return this.dataRange.valuesCount();\n },\n\n rangeIndices: function() {\n return this.dataRange.displayIndices();\n },\n\n labelsBetweenTicks: function() {\n return !this.divisionRange.options.justified;\n },\n\n prepareUserOptions: function() {\n if (this.isEmpty()) {\n return;\n }\n\n this.options.categories = this.dataRange.values();\n },\n\n getCategory: function(point) {\n var index = this.pointCategoryIndex(point);\n\n if (index === null) {\n return null;\n }\n\n return this.dataRange.dateAt(index);\n },\n\n totalIndex: function(value) {\n return this.dataRange.totalIndex(value);\n },\n\n currentRangeIndices: function() {\n var range = this.dataRange.valueRange();\n return {\n min: this.dataRange.totalIndex(range.min),\n max: this.dataRange.totalIndex(range.max)\n };\n },\n\n totalRange: function() {\n return this.dataRange.total();\n },\n\n totalRangeIndices: function() {\n var range = this.dataRange.total();\n return {\n min: this.dataRange.totalIndex(range.min),\n max: this.dataRange.totalIndex(range.max)\n };\n },\n\n totalCount: function() {\n return this.dataRange.totalCount();\n },\n\n isEmpty: function() {\n return !this.options.srcCategories.length;\n },\n\n roundedRange: function() {\n if (this.options.roundToBaseUnit !== false || this.isEmpty()) {\n return this.range();\n }\n\n var options = this.options;\n var datesRange = categoryRange(options.srcCategories);\n\n var dateRange = new DateRange(datesRange.min, datesRange.max, $.extend({}, options, {\n justified: false,\n roundToBaseUnit: true,\n justifyEnd: false\n }));\n\n return dateRange.displayRange();\n }\n });\n\n setDefaultOptions(DateCategoryAxis, {\n type: DATE,\n labels: {\n dateFormats: DateLabelFormats\n },\n rangeLabels: {\n visible: false\n },\n autoBaseUnitSteps: {\n milliseconds: [ 1, 10, 100 ],\n seconds: [ 1, 2, 5, 15, 30 ],\n minutes: [ 1, 2, 5, 15, 30 ],\n hours: [ 1, 2, 3 ],\n days: [ 1, 2, 3 ],\n weeks: [ 1, 2 ],\n months: [ 1, 2, 3, 6 ],\n years: [ 1, 2, 3, 5, 10, 25, 50 ]\n },\n maxDateGroups: 10\n });\n\n function autoAxisMin(min, max, narrow) {\n if (!min && !max) {\n return 0;\n }\n\n var axisMin;\n\n if (min >= 0 && max >= 0) {\n var minValue = min === max ? 0 : min;\n\n var diff = (max - minValue) / max;\n if (narrow === false || (!narrow && diff > ZERO_THRESHOLD)) {\n return 0;\n }\n\n axisMin = Math.max(0, minValue - ((max - minValue) / 2));\n } else {\n axisMin = min;\n }\n\n return axisMin;\n }\n\n function autoAxisMax(min, max, narrow) {\n if (!min && !max) {\n return 1;\n }\n\n var axisMax;\n\n if (min <= 0 && max <= 0) {\n var maxValue = min === max ? 0 : max;\n\n var diff = Math.abs((maxValue - min) / maxValue);\n if (narrow === false || (!narrow && diff > ZERO_THRESHOLD)) {\n return 0;\n }\n\n axisMax = Math.min(0, maxValue - ((min - maxValue) / 2));\n } else {\n axisMax = max;\n }\n\n return axisMax;\n }\n\n function floor(value, step) {\n return round(Math.floor(value / step) * step, DEFAULT_PRECISION);\n }\n\n function ceil(value, step) {\n return round(Math.ceil(value / step) * step, DEFAULT_PRECISION);\n }\n\n function limitCoordinate(value) {\n return Math.max(Math.min(value, COORDINATE_LIMIT), -COORDINATE_LIMIT);\n }\n\n var MIN_VALUE_RANGE$1 = Math.pow(10, -DEFAULT_PRECISION + 1);\n\n var NumericAxis = Axis.extend({\n init: function(seriesMin, seriesMax, options, chartService) {\n Axis.fn.init.call(this, $.extend({}, options, {\n seriesMin: seriesMin,\n seriesMax: seriesMax\n }), chartService);\n },\n\n initUserOptions: function(options) {\n var autoOptions = autoAxisOptions(options.seriesMin, options.seriesMax, options);\n this.totalOptions = totalAxisOptions(autoOptions, options);\n\n return axisOptions(autoOptions, options);\n },\n\n initFields: function() {\n this.totalMin = this.totalOptions.min;\n this.totalMax = this.totalOptions.max;\n this.totalMajorUnit = this.totalOptions.majorUnit;\n this.seriesMin = this.options.seriesMin;\n this.seriesMax = this.options.seriesMax;\n },\n\n clone: function() {\n return new NumericAxis(\n this.seriesMin,\n this.seriesMax,\n $.extend({}, this.options),\n this.chartService\n );\n },\n\n startValue: function() {\n return 0;\n },\n\n range: function() {\n var options = this.options;\n return { min: options.min, max: options.max };\n },\n\n getDivisions: function(stepValue) {\n if (stepValue === 0) {\n return 1;\n }\n\n var options = this.options;\n var range = options.max - options.min;\n\n return Math.floor(round(range / stepValue, COORD_PRECISION)) + 1;\n },\n\n getTickPositions: function(unit, skipUnit) {\n var options = this.options;\n var ref = this.lineInfo();\n var axisDir = ref.axisDir;\n var axisOrigin = ref.axisOrigin;\n var lineBox = ref.lineBox;\n var lineSize = ref.lineSize;\n var range = options.max - options.min;\n var scale = lineSize / range;\n var step = unit * scale;\n var divisions = this.getDivisions(unit);\n var positions = [];\n var pos = lineBox[axisOrigin];\n var skipStep = 0;\n\n if (skipUnit) {\n skipStep = skipUnit / unit;\n }\n\n for (var idx = 0; idx < divisions; idx++) {\n if (idx % skipStep !== 0) {\n positions.push(round(pos, COORD_PRECISION));\n }\n\n pos = pos + step * axisDir;\n }\n\n return positions;\n },\n\n getMajorTickPositions: function() {\n return this.getTickPositions(this.options.majorUnit);\n },\n\n getMinorTickPositions: function() {\n return this.getTickPositions(this.options.minorUnit);\n },\n\n getSlot: function(a, b, limit) {\n if (limit === void 0) { limit = false; }\n\n var options = this.options;\n var ref = this.lineInfo();\n var axis = ref.axis;\n var axisDir = ref.axisDir;\n var lineBox = ref.lineBox;\n var lineSize = ref.lineSize;\n var lineStart = ref.lineStart;\n var step = axisDir * (lineSize / (options.max - options.min));\n\n var start = valueOrDefault(a, b || 0);\n var end = valueOrDefault(b, a || 0);\n\n if (limit) {\n start = limitValue(start, options.min, options.max);\n end = limitValue(end, options.min, options.max);\n }\n\n var p1 = Math.min(start, end) - options.min;\n var p2 = Math.max(start, end) - options.min;\n\n var slotBox = new Box(lineBox.x1, lineBox.y1, lineBox.x1, lineBox.y1);\n slotBox[axis + 1] = limitCoordinate(lineStart + step * (axisDir > 0 ? p1 : p2));\n slotBox[axis + 2] = limitCoordinate(lineStart + step * (axisDir > 0 ? p2 : p1));\n\n return slotBox;\n },\n\n getValue: function(point) {\n var options = this.options;\n var max = Number(options.max);\n var min = Number(options.min);\n var offset = this.pointOffset(point);\n var valueOffset = offset * (max - min);\n\n if (offset < 0 || offset > 1) {\n return null;\n }\n\n var value = min + valueOffset;\n return round(value, DEFAULT_PRECISION);\n },\n\n translateRange: function(delta) {\n var options = this.options;\n var vertical = options.vertical;\n var reverse = options.reverse;\n var max = options.max;\n var min = options.min;\n var ref = this.lineInfo();\n var lineSize = ref.lineSize;\n var range = max - min;\n var scale = lineSize / range;\n var offset = round(delta / scale, DEFAULT_PRECISION);\n\n if ((vertical || reverse) && !(vertical && reverse )) {\n offset = -offset;\n }\n\n return {\n min: min + offset,\n max: max + offset,\n offset: offset\n };\n },\n\n labelsCount: function() {\n return this.getDivisions(this.options.majorUnit);\n },\n\n createAxisLabel: function(index, labelOptions, labelContext) {\n var options = this.options;\n var value = round(options.min + (index * options.majorUnit), DEFAULT_PRECISION);\n var text = this.axisLabelText(value, labelOptions, labelContext);\n\n return new AxisLabel(value, text, index, null, labelOptions);\n },\n\n shouldRenderNote: function(value) {\n var range = this.range();\n return range.min <= value && value <= range.max;\n },\n\n pan: function(delta) {\n var range = this.translateRange(delta);\n return this.limitRange(range.min, range.max, this.totalMin, this.totalMax, range.offset);\n },\n\n pointsRange: function(start, end) {\n var startValue = this.getValue(start);\n var endValue = this.getValue(end);\n var min = Math.min(startValue, endValue);\n var max = Math.max(startValue, endValue);\n\n if (this.isValidRange(min, max)) {\n return {\n min: min,\n max: max\n };\n }\n },\n\n scaleRange: function(scale, cursor) {\n var position = Math.abs(this.pointOffset(cursor));\n var range = this.options.max - this.options.min;\n var delta = this.scaleToDelta(scale, range);\n var minDelta = position * delta;\n var maxDelta = (1 - position) * delta;\n var min = round(this.options.min + minDelta, DEFAULT_PRECISION);\n var max = round(this.options.max - maxDelta, DEFAULT_PRECISION);\n\n if (max - min < MIN_VALUE_RANGE$1) {\n max = min + MIN_VALUE_RANGE$1;\n }\n\n return {\n min: min,\n max: max\n };\n },\n\n zoomRange: function(scale, cursor) {\n var ref = this;\n var totalMin = ref.totalMin;\n var totalMax = ref.totalMax;\n var range = this.scaleRange(scale, cursor);\n\n return {\n min: limitValue(range.min, totalMin, totalMax),\n max: limitValue(range.max, totalMin, totalMax),\n narrowRange: false\n };\n },\n\n isValidRange: function(min, max) {\n return max - min > MIN_VALUE_RANGE$1;\n }\n });\n\n function autoAxisOptions(seriesMin, seriesMax, options) {\n var narrowRange = options.narrowRange;\n\n var autoMin = autoAxisMin(seriesMin, seriesMax, narrowRange);\n var autoMax = autoAxisMax(seriesMin, seriesMax, narrowRange);\n\n var majorUnit = autoMajorUnit(autoMin, autoMax);\n var autoOptions = {\n majorUnit: majorUnit\n };\n\n if (options.roundToMajorUnit !== false) {\n if (autoMin < 0 && remainderClose(autoMin, majorUnit, 1 / 3)) {\n autoMin -= majorUnit;\n }\n\n if (autoMax > 0 && remainderClose(autoMax, majorUnit, 1 / 3)) {\n autoMax += majorUnit;\n }\n }\n\n autoOptions.min = floor(autoMin, majorUnit);\n autoOptions.max = ceil(autoMax, majorUnit);\n\n return autoOptions;\n }\n\n function totalAxisOptions(autoOptions, options) {\n return {\n min: defined(options.min) ? Math.min(autoOptions.min, options.min) : autoOptions.min,\n max: defined(options.max) ? Math.max(autoOptions.max, options.max) : autoOptions.max,\n majorUnit: autoOptions.majorUnit\n };\n }\n\n function clearNullValues(options, fields) {\n for (var idx = 0; idx < fields.length; idx++) {\n var field = fields[idx];\n if (options[field] === null) {\n options[field] = undefined;\n }\n }\n }\n\n function axisOptions(autoOptions, userOptions) {\n var options = userOptions;\n var userSetMin, userSetMax;\n\n if (userOptions) {\n clearNullValues(userOptions, [ 'min', 'max' ]);\n\n userSetMin = defined(userOptions.min);\n userSetMax = defined(userOptions.max);\n\n var userSetLimits = userSetMin || userSetMax;\n\n if (userSetLimits) {\n if (userOptions.min === userOptions.max) {\n if (userOptions.min > 0) {\n userOptions.min = 0;\n } else {\n userOptions.max = 1;\n }\n }\n }\n\n if (userOptions.majorUnit) {\n autoOptions.min = floor(autoOptions.min, userOptions.majorUnit);\n autoOptions.max = ceil(autoOptions.max, userOptions.majorUnit);\n } else if (userSetLimits) {\n options = deepExtend(autoOptions, userOptions);\n\n // Determine an auto major unit after min/max have been set\n autoOptions.majorUnit = autoMajorUnit(options.min, options.max);\n }\n }\n\n autoOptions.minorUnit = (options.majorUnit || autoOptions.majorUnit) / 5;\n\n var result = deepExtend(autoOptions, options);\n if (result.min >= result.max) {\n if (userSetMin && !userSetMax) {\n result.max = result.min + result.majorUnit;\n } else if (!userSetMin && userSetMax) {\n result.min = result.max - result.majorUnit;\n }\n }\n\n return result;\n }\n\n function remainderClose(value, divisor, ratio) {\n var remainder = round(Math.abs(value % divisor), DEFAULT_PRECISION);\n var threshold = divisor * (1 - ratio);\n\n return remainder === 0 || remainder > threshold;\n }\n\n setDefaultOptions(NumericAxis, {\n type: \"numeric\",\n min: 0,\n max: 1,\n vertical: true,\n majorGridLines: {\n visible: true,\n width: 1,\n color: BLACK\n },\n labels: {\n format: \"#.####################\"\n },\n zIndex: 1\n });\n\n var MIN_VALUE_RANGE = 1000;\n\n var DateValueAxis = Axis.extend({\n init: function(seriesMin, seriesMax, axisOptions, chartService) {\n var min = toDate(seriesMin);\n var max = toDate(seriesMax);\n\n var intlService = chartService.intl;\n var options = axisOptions || {};\n options = deepExtend(options || {}, {\n min: parseDate(intlService, options.min),\n max: parseDate(intlService, options.max),\n axisCrossingValue: parseDates(intlService, options.axisCrossingValues || options.axisCrossingValue),\n weekStartDay: firstDay(options, intlService)\n });\n options = applyDefaults(min, max, options);\n\n Axis.fn.init.call(this, options, chartService);\n\n this.intlService = intlService;\n this.seriesMin = min;\n this.seriesMax = max;\n\n var weekStartDay = options.weekStartDay || 0;\n this.totalMin = toTime(floorDate(toTime(min) - 1, options.baseUnit, weekStartDay));\n this.totalMax = toTime(ceilDate(toTime(max) + 1, options.baseUnit, weekStartDay));\n },\n\n clone: function() {\n return new DateValueAxis(this.seriesMin, this.seriesMax, $.extend({}, this.options), this.chartService);\n },\n\n range: function() {\n var options = this.options;\n return { min: options.min, max: options.max };\n },\n\n getDivisions: function(stepValue) {\n var options = this.options;\n\n return Math.floor(\n duration(options.min, options.max, options.baseUnit) / stepValue + 1\n );\n },\n\n getTickPositions: function(step) {\n var options = this.options;\n var ref = this.lineInfo();\n var dir = ref.axisDir;\n var lineSize = ref.lineSize;\n var start = ref.lineStart;\n var divisions = this.getDivisions(step);\n var timeRange = dateDiff(options.max, options.min);\n var scale = lineSize / timeRange;\n var weekStartDay = options.weekStartDay || 0;\n\n var positions = [ start ];\n for (var i = 1; i < divisions; i++) {\n var date = addDuration(options.min, i * step, options.baseUnit, weekStartDay);\n var pos = start + dateDiff(date, options.min) * scale * dir;\n\n positions.push(round(pos, COORD_PRECISION));\n }\n\n return positions;\n },\n\n getMajorTickPositions: function() {\n return this.getTickPositions(this.options.majorUnit);\n },\n\n getMinorTickPositions: function() {\n return this.getTickPositions(this.options.minorUnit);\n },\n\n getSlot: function(a, b, limit) {\n return NumericAxis.prototype.getSlot.call(\n this, parseDate(this.intlService, a), parseDate(this.intlService, b), limit\n );\n },\n\n getValue: function(point) {\n var value = NumericAxis.prototype.getValue.call(this, point);\n\n return value !== null ? toDate(value) : null;\n },\n\n labelsCount: function() {\n return this.getDivisions(this.options.majorUnit);\n },\n\n createAxisLabel: function(index, labelOptions, labelContext) {\n var options = this.options;\n var offset = index * options.majorUnit;\n var weekStartDay = options.weekStartDay || 0;\n var date = options.min;\n\n if (offset > 0) {\n date = addDuration(date, offset, options.baseUnit, weekStartDay);\n }\n\n var unitFormat = labelOptions.dateFormats[options.baseUnit];\n labelOptions.format = labelOptions.format || unitFormat;\n\n var text = this.axisLabelText(date, labelOptions, labelContext);\n return new AxisLabel(date, text, index, null, labelOptions);\n },\n\n translateRange: function(delta) {\n var options = this.options;\n var lineBox = this.lineBox();\n var vertical = options.vertical;\n var reverse = options.reverse;\n var size = vertical ? lineBox.height() : lineBox.width();\n var range = this.range();\n var scale = size / dateDiff(range.max, range.min);\n\n var offset = round(delta / scale, DEFAULT_PRECISION);\n if ((vertical || reverse) && !(vertical && reverse )) {\n offset = -offset;\n }\n\n var from = addTicks(options.min, offset);\n var to = addTicks(options.max, offset);\n\n return {\n min: from,\n max: to,\n offset: offset\n };\n },\n\n shouldRenderNote: function(value) {\n var range = this.range();\n\n return dateComparer(value, range.min) >= 0 && dateComparer(value, range.max) <= 0;\n },\n\n pan: function(delta) {\n var range = this.translateRange(delta, true);\n var limittedRange = this.limitRange(toTime(range.min), toTime(range.max), this.totalMin, this.totalMax, range.offset);\n\n if (limittedRange) {\n return {\n min: toDate(limittedRange.min),\n max: toDate(limittedRange.max)\n };\n }\n },\n\n pointsRange: function(start, end) {\n var startValue = this.getValue(start);\n var endValue = this.getValue(end);\n var min = Math.min(startValue, endValue);\n var max = Math.max(startValue, endValue);\n\n return {\n min: toDate(min),\n max: toDate(max)\n };\n },\n\n scaleRange: function(scale, cursor) {\n var position = Math.abs(this.pointOffset(cursor));\n var range = this.options.max - this.options.min;\n var delta = this.scaleToDelta(scale, range);\n var minDelta = position * delta;\n var maxDelta = (1 - position) * delta;\n var min = toDate(toTime(this.options.min) + minDelta);\n var max = toDate(toTime(this.options.max) - maxDelta);\n\n if (max - min < MIN_VALUE_RANGE) {\n max = toDate(toTime(min) + MIN_VALUE_RANGE);\n }\n\n return {\n min: min,\n max: max\n };\n },\n\n zoomRange: function(scale, cursor) {\n var range = this.scaleRange(scale, cursor);\n var min = toDate(limitValue(toTime(range.min), this.totalMin, this.totalMax));\n var max = toDate(limitValue(toTime(range.max), this.totalMin, this.totalMax));\n\n return {\n min: min,\n max: max\n };\n }\n });\n\n function timeUnits(delta) {\n var unit = HOURS;\n\n if (delta >= TIME_PER_YEAR) {\n unit = YEARS;\n } else if (delta >= TIME_PER_MONTH) {\n unit = MONTHS;\n } else if (delta >= TIME_PER_WEEK) {\n unit = WEEKS;\n } else if (delta >= TIME_PER_DAY) {\n unit = DAYS;\n }\n\n return unit;\n }\n\n function applyDefaults(seriesMin, seriesMax, options) {\n var min = options.min || seriesMin;\n var max = options.max || seriesMax;\n var baseUnit = options.baseUnit || (max && min ? timeUnits(absoluteDateDiff(max, min)) : HOURS);\n var baseUnitTime = TIME_PER_UNIT[baseUnit];\n var weekStartDay = options.weekStartDay || 0;\n var autoMin = floorDate(toTime(min) - 1, baseUnit, weekStartDay) || toDate(max);\n var autoMax = ceilDate(toTime(max) + 1, baseUnit, weekStartDay);\n var userMajorUnit = options.majorUnit ? options.majorUnit : undefined;\n var majorUnit = userMajorUnit || ceil(\n autoMajorUnit(autoMin.getTime(), autoMax.getTime()),\n baseUnitTime\n ) / baseUnitTime;\n var actualUnits = duration(autoMin, autoMax, baseUnit);\n var totalUnits = ceil(actualUnits, majorUnit);\n var unitsToAdd = totalUnits - actualUnits;\n var head = Math.floor(unitsToAdd / 2);\n var tail = unitsToAdd - head;\n\n if (!options.baseUnit) {\n delete options.baseUnit;\n }\n\n options.baseUnit = options.baseUnit || baseUnit;\n options.min = options.min || addDuration(autoMin, -head, baseUnit, weekStartDay);\n options.max = options.max || addDuration(autoMax, tail, baseUnit, weekStartDay);\n options.minorUnit = options.minorUnit || majorUnit / 5;\n options.majorUnit = majorUnit;\n\n return options;\n }\n\n setDefaultOptions(DateValueAxis, {\n type: DATE,\n majorGridLines: {\n visible: true,\n width: 1,\n color: BLACK\n },\n labels: {\n dateFormats: DateLabelFormats\n }\n });\n\n var DEFAULT_MAJOR_UNIT = 10;\n var MIN_VALUE_RANGE$2 = 1e-6;\n\n var LogarithmicAxis = Axis.extend({\n init: function(seriesMin, seriesMax, options, chartService) {\n\n var axisOptions = deepExtend({ majorUnit: DEFAULT_MAJOR_UNIT, min: seriesMin, max: seriesMax }, options);\n var base = axisOptions.majorUnit;\n var autoMax = autoAxisMax$1(seriesMax, base);\n var autoMin = autoAxisMin$1(seriesMin, seriesMax, axisOptions);\n var range = initRange(autoMin, autoMax, axisOptions, options);\n\n axisOptions.max = range.max;\n axisOptions.min = range.min;\n axisOptions.minorUnit = options.minorUnit || round(base - 1, DEFAULT_PRECISION);\n\n Axis.fn.init.call(this, axisOptions, chartService);\n\n this.totalMin = defined(options.min) ? Math.min(autoMin, options.min) : autoMin;\n this.totalMax = defined(options.max) ? Math.max(autoMax, options.max) : autoMax;\n this.logMin = round(log(range.min, base), DEFAULT_PRECISION);\n this.logMax = round(log(range.max, base), DEFAULT_PRECISION);\n this.seriesMin = seriesMin;\n this.seriesMax = seriesMax;\n\n this.createLabels();\n },\n\n clone: function() {\n return new LogarithmicAxis(\n this.seriesMin,\n this.seriesMax,\n $.extend({}, this.options),\n this.chartService\n );\n },\n\n startValue: function() {\n return this.options.min;\n },\n\n getSlot: function(a, b, limit) {\n var ref = this;\n var options = ref.options;\n var logMin = ref.logMin;\n var logMax = ref.logMax;\n var base = options.majorUnit;\n var min = options.min;\n var max = options.max;\n var ref$1 = this.lineInfo();\n var axis = ref$1.axis;\n var axisDir = ref$1.axisDir;\n var lineBox = ref$1.lineBox;\n var lineSize = ref$1.lineSize;\n var lineStart = ref$1.lineStart;\n var step = axisDir * (lineSize / (logMax - logMin));\n var start = valueOrDefault(a, b || 1);\n var end = valueOrDefault(b, a || 1);\n\n if (start <= 0 || end <= 0) {\n return null;\n }\n\n if (limit) {\n start = limitValue(start, min, max);\n end = limitValue(end, min, max);\n }\n\n start = log(start, base);\n end = log(end, base);\n\n var p1 = Math.min(start, end) - logMin;\n var p2 = Math.max(start, end) - logMin;\n\n var slotBox = new Box(lineBox.x1, lineBox.y1, lineBox.x1, lineBox.y1);\n slotBox[axis + 1] = limitCoordinate(lineStart + step * (axisDir > 0 ? p1 : p2));\n slotBox[axis + 2] = limitCoordinate(lineStart + step * (axisDir > 0 ? p2 : p1));\n\n return slotBox;\n },\n\n getValue: function(point) {\n var ref = this;\n var options = ref.options;\n var logMin = ref.logMin;\n var logMax = ref.logMax;\n var base = options.majorUnit;\n var ref$1 = this.lineInfo();\n var axis = ref$1.axis;\n var axisDir = ref$1.axisDir;\n var lineStart = ref$1.lineStart;\n var lineSize = ref$1.lineSize;\n var step = ((logMax - logMin) / lineSize);\n var offset = axisDir * (point[axis] - lineStart);\n var valueOffset = offset * step;\n\n if (offset < 0 || offset > lineSize) {\n return null;\n }\n\n var value = logMin + valueOffset;\n\n return round(Math.pow(base, value), DEFAULT_PRECISION);\n },\n\n range: function() {\n var options = this.options;\n return { min: options.min, max: options.max };\n },\n\n translateRange: function(delta) {\n var ref = this;\n var options = ref.options;\n var logMin = ref.logMin;\n var logMax = ref.logMax;\n var reverse = options.reverse;\n var vertical = options.vertical;\n var base = options.majorUnit;\n var lineBox = this.lineBox();\n var size = vertical ? lineBox.height() : lineBox.width();\n var scale = size / (logMax - logMin);\n var offset = round(delta / scale, DEFAULT_PRECISION);\n\n if ((vertical || reverse) && !(vertical && reverse )) {\n offset = -offset;\n }\n\n return {\n min: Math.pow(base, logMin + offset),\n max: Math.pow(base, logMax + offset),\n offset: offset\n };\n },\n\n labelsCount: function() {\n var floorMax = Math.floor(this.logMax);\n var count = Math.floor(floorMax - this.logMin) + 1;\n\n return count;\n },\n\n getMajorTickPositions: function() {\n var ticks = [];\n\n this.traverseMajorTicksPositions(function (position) {\n ticks.push(position);\n }, { step: 1, skip: 0 });\n\n return ticks;\n },\n\n createTicks: function(lineGroup) {\n var options = this.options;\n var majorTicks = options.majorTicks;\n var minorTicks = options.minorTicks;\n var vertical = options.vertical;\n var mirror = options.labels.mirror;\n var lineBox = this.lineBox();\n var ticks = [];\n var tickLineOptions = {\n // TODO\n // _alignLines: options._alignLines,\n vertical: vertical\n };\n\n function render(tickPosition, tickOptions) {\n tickLineOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n tickLineOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n tickLineOptions.position = tickPosition;\n\n lineGroup.append(createAxisTick(tickLineOptions, tickOptions));\n }\n\n if (majorTicks.visible) {\n this.traverseMajorTicksPositions(render, majorTicks);\n }\n\n if (minorTicks.visible) {\n this.traverseMinorTicksPositions(render, minorTicks);\n }\n\n return ticks;\n },\n\n createGridLines: function(altAxis) {\n var options = this.options;\n var minorGridLines = options.minorGridLines;\n var majorGridLines = options.majorGridLines;\n var vertical = options.vertical;\n var lineBox = altAxis.lineBox();\n var lineOptions = {\n lineStart: lineBox[vertical ? \"x1\" : \"y1\"],\n lineEnd: lineBox[vertical ? \"x2\" : \"y2\"],\n vertical: vertical\n };\n var majorTicks = [];\n\n var container = this.gridLinesVisual();\n function render(tickPosition, gridLine) {\n if (!inArray(tickPosition, majorTicks)) {\n lineOptions.position = tickPosition;\n container.append(createAxisGridLine(lineOptions, gridLine));\n\n majorTicks.push(tickPosition);\n }\n }\n\n if (majorGridLines.visible) {\n this.traverseMajorTicksPositions(render, majorGridLines);\n }\n\n if (minorGridLines.visible) {\n this.traverseMinorTicksPositions(render, minorGridLines);\n }\n\n return container.children;\n },\n\n traverseMajorTicksPositions: function(callback, tickOptions) {\n var ref = this.lineInfo();\n var lineStart = ref.lineStart;\n var step = ref.step;\n var ref$1 = this;\n var logMin = ref$1.logMin;\n var logMax = ref$1.logMax;\n\n for (var power = Math.ceil(logMin) + tickOptions.skip; power <= logMax; power += tickOptions.step) {\n var position = round(lineStart + step * (power - logMin), DEFAULT_PRECISION);\n callback(position, tickOptions);\n }\n },\n\n traverseMinorTicksPositions: function(callback, tickOptions) {\n var this$1$1 = this;\n\n var ref = this.options;\n var min = ref.min;\n var max = ref.max;\n var minorUnit = ref.minorUnit;\n var base = ref.majorUnit;\n var ref$1 = this.lineInfo();\n var lineStart = ref$1.lineStart;\n var step = ref$1.step;\n var ref$2 = this;\n var logMin = ref$2.logMin;\n var logMax = ref$2.logMax;\n var start = Math.floor(logMin);\n\n for (var power = start; power < logMax; power++) {\n var minorOptions = this$1$1._minorIntervalOptions(power);\n for (var idx = tickOptions.skip; idx < minorUnit; idx += tickOptions.step) {\n var value = minorOptions.value + idx * minorOptions.minorStep;\n if (value > max) {\n break;\n }\n if (value >= min) {\n var position = round(lineStart + step * (log(value, base) - logMin), DEFAULT_PRECISION);\n callback(position, tickOptions);\n }\n }\n }\n },\n\n createAxisLabel: function(index, labelOptions, labelContext) {\n var power = Math.ceil(this.logMin + index);\n var value = Math.pow(this.options.majorUnit, power);\n var text = this.axisLabelText(value, labelOptions, labelContext);\n\n return new AxisLabel(value, text, index, null, labelOptions);\n },\n\n shouldRenderNote: function(value) {\n var range = this.range();\n return range.min <= value && value <= range.max;\n },\n\n pan: function(delta) {\n var range = this.translateRange(delta);\n return this.limitRange(range.min, range.max, this.totalMin, this.totalMax, range.offset);\n },\n\n pointsRange: function(start, end) {\n var startValue = this.getValue(start);\n var endValue = this.getValue(end);\n var min = Math.min(startValue, endValue);\n var max = Math.max(startValue, endValue);\n\n return {\n min: min,\n max: max\n };\n },\n\n scaleRange: function(scale, cursor) {\n var ref = this.options;\n var base = ref.majorUnit;\n var logMin = log(this.options.min, base);\n var logMax = log(this.options.max, base);\n var position = Math.abs(this.pointOffset(cursor));\n var range = logMax - logMin;\n var delta = this.scaleToDelta(scale, range);\n var min = Math.pow(base, logMin + position * delta);\n var max = Math.pow(base, logMax - (1 - position) * delta);\n\n if (max - min < MIN_VALUE_RANGE$2) {\n max = min + MIN_VALUE_RANGE$2;\n }\n\n return {\n min: min,\n max: max\n };\n },\n\n zoomRange: function(scale, cursor) {\n var range = this.scaleRange(scale, cursor);\n var ref = this;\n var totalMin = ref.totalMin;\n var totalMax = ref.totalMax;\n\n return {\n min: limitValue(range.min, totalMin, totalMax),\n max: limitValue(range.max, totalMin, totalMax)\n };\n },\n\n _minorIntervalOptions: function(power) {\n var ref = this.options;\n var minorUnit = ref.minorUnit;\n var base = ref.majorUnit;\n var value = Math.pow(base, power);\n var nextValue = Math.pow(base, power + 1);\n var difference = nextValue - value;\n var minorStep = difference / minorUnit;\n\n return {\n value: value,\n minorStep: minorStep\n };\n },\n\n lineInfo: function() {\n var info = Axis.fn.lineInfo.call(this);\n info.step = info.axisDir * (info.lineSize / (this.logMax - this.logMin));\n\n return info;\n }\n });\n\n function initRange(autoMin, autoMax, axisOptions, options) {\n var min = axisOptions.min;\n var max = axisOptions.max;\n\n if (defined(axisOptions.axisCrossingValue) && axisOptions.axisCrossingValue <= 0) {\n throwNegativeValuesError();\n }\n\n if (!defined(options.max)) {\n max = autoMax;\n } else if (options.max <= 0) {\n throwNegativeValuesError();\n }\n\n if (!defined(options.min)) {\n min = autoMin;\n } else if (options.min <= 0) {\n throwNegativeValuesError();\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n function autoAxisMin$1(min, max, options) {\n var base = options.majorUnit;\n var autoMin = min;\n if (min <= 0) {\n autoMin = max <= 1 ? Math.pow(base, -2) : 1;\n } else if (!options.narrowRange) {\n autoMin = Math.pow(base, Math.floor(log(min, base)));\n }\n return autoMin;\n }\n\n function autoAxisMax$1(max, base) {\n var logMaxRemainder = round(log(max, base), DEFAULT_PRECISION) % 1;\n var autoMax;\n if (max <= 0) {\n autoMax = base;\n } else if (logMaxRemainder !== 0 && (logMaxRemainder < 0.3 || logMaxRemainder > 0.9)) {\n autoMax = Math.pow(base, log(max, base) + 0.2);\n } else {\n autoMax = Math.pow(base, Math.ceil(log(max, base)));\n }\n\n return autoMax;\n }\n\n function throwNegativeValuesError() {\n throw new Error(\"Non positive values cannot be used for a logarithmic axis\");\n }\n\n function log(x, base) {\n return Math.log(x) / Math.log(base);\n }\n\n setDefaultOptions(LogarithmicAxis, {\n type: \"log\",\n majorUnit: DEFAULT_MAJOR_UNIT,\n minorUnit: 1,\n axisCrossingValue: 1,\n vertical: true,\n majorGridLines: {\n visible: true,\n width: 1,\n color: BLACK\n },\n zIndex: 1,\n _deferLabels: true\n });\n\n var GridLinesMixin = {\n createGridLines: function(altAxis) {\n var options = this.options;\n var radius = Math.abs(this.box.center().y - altAxis.lineBox().y1);\n var gridLines = [];\n var skipMajor = false;\n var majorAngles, minorAngles;\n\n if (options.majorGridLines.visible) {\n majorAngles = this.majorGridLineAngles(altAxis);\n skipMajor = true;\n\n gridLines = this.renderMajorGridLines(\n majorAngles, radius, options.majorGridLines\n );\n }\n\n if (options.minorGridLines.visible) {\n minorAngles = this.minorGridLineAngles(altAxis, skipMajor);\n\n append(gridLines, this.renderMinorGridLines(\n minorAngles, radius, options.minorGridLines, altAxis, skipMajor\n ));\n }\n\n return gridLines;\n },\n\n renderMajorGridLines: function(angles, radius, options) {\n return this.renderGridLines(angles, radius, options);\n },\n\n renderMinorGridLines: function(angles, radius, options, altAxis, skipMajor) {\n var radiusCallback = this.radiusCallback && this.radiusCallback(radius, altAxis, skipMajor);\n return this.renderGridLines(angles, radius, options, radiusCallback);\n },\n\n renderGridLines: function(angles, radius, options, radiusCallback) {\n var style = {\n stroke: {\n width: options.width,\n color: options.color,\n dashType: options.dashType\n }\n };\n\n var center = this.box.center();\n var circle = new Circle([ center.x, center.y ], radius);\n var container = this.gridLinesVisual();\n\n for (var i = 0; i < angles.length; i++) {\n var line = new Path(style);\n if (radiusCallback) {\n circle.radius = radiusCallback(angles[i]);\n }\n\n line.moveTo(circle.center)\n .lineTo(circle.pointAt(angles[i] + 180));\n\n container.append(line);\n }\n\n return container.children;\n },\n\n gridLineAngles: function(altAxis, size, skip, step, skipAngles) {\n var this$1$1 = this;\n\n var divs = this.intervals(size, skip, step, skipAngles);\n var options = altAxis.options;\n var altAxisVisible = options.visible && (options.line || {}).visible !== false;\n\n return map(divs, function (d) {\n var alpha = this$1$1.intervalAngle(d);\n\n if (!altAxisVisible || alpha !== 90) {\n return alpha;\n }\n });\n }\n };\n\n var RadarCategoryAxis = CategoryAxis.extend({\n range: function() {\n return { min: 0, max: this.options.categories.length };\n },\n\n reflow: function(box) {\n this.box = box;\n this.reflowLabels();\n },\n\n lineBox: function() {\n return this.box;\n },\n\n reflowLabels: function() {\n var this$1$1 = this;\n\n var ref = this;\n var labels = ref.labels;\n var labelOptions = ref.options.labels;\n var skip = labelOptions.skip || 0;\n var step = labelOptions.step || 1;\n var measureBox = new Box();\n\n for (var i = 0; i < labels.length; i++) {\n labels[i].reflow(measureBox);\n var labelBox = labels[i].box;\n\n labels[i].reflow(this$1$1.getSlot(skip + i * step).adjacentBox(\n 0, labelBox.width(), labelBox.height()\n ));\n }\n },\n\n intervals: function(size, skipOption, stepOption, skipAngles) {\n if (skipAngles === void 0) { skipAngles = false; }\n\n var options = this.options;\n var categories = options.categories.length;\n var divCount = categories / size || 1;\n var divAngle = 360 / divCount;\n var skip = skipOption || 0;\n var step = stepOption || 1;\n var divs = [];\n var angle = 0;\n\n for (var i = skip; i < divCount; i += step) {\n if (options.reverse) {\n angle = 360 - i * divAngle;\n } else {\n angle = i * divAngle;\n }\n\n angle = round(angle, COORD_PRECISION) % 360;\n\n if (!(skipAngles && inArray(angle, skipAngles))) {\n divs.push(angle);\n }\n }\n\n return divs;\n },\n\n majorIntervals: function() {\n return this.intervals(1);\n },\n\n minorIntervals: function() {\n return this.intervals(0.5);\n },\n\n intervalAngle: function(interval) {\n return (360 + interval + this.options.startAngle) % 360;\n },\n\n majorAngles: function() {\n var this$1$1 = this;\n\n return map(this.majorIntervals(), function (interval) { return this$1$1.intervalAngle(interval); });\n },\n\n createLine: function() {\n return [];\n },\n\n majorGridLineAngles: function(altAxis) {\n var majorGridLines = this.options.majorGridLines;\n return this.gridLineAngles(altAxis, 1, majorGridLines.skip, majorGridLines.step);\n },\n\n minorGridLineAngles: function(altAxis, skipMajor) {\n var ref = this.options;\n var minorGridLines = ref.minorGridLines;\n var majorGridLines = ref.majorGridLines;\n var majorGridLineAngles = skipMajor ? this.intervals(1, majorGridLines.skip, majorGridLines.step) : null;\n\n return this.gridLineAngles(altAxis, 0.5, minorGridLines.skip, minorGridLines.step, majorGridLineAngles);\n },\n\n radiusCallback: function(radius, altAxis, skipMajor) {\n if (altAxis.options.type !== ARC) {\n var minorAngle = rad(360 / (this.options.categories.length * 2));\n var minorRadius = Math.cos(minorAngle) * radius;\n var majorAngles = this.majorAngles();\n\n var radiusCallback = function(angle) {\n if (!skipMajor && inArray(angle, majorAngles)) {\n return radius;\n }\n\n return minorRadius;\n };\n return radiusCallback;\n }\n },\n\n createPlotBands: function() {\n var this$1$1 = this;\n\n var plotBands = this.options.plotBands || [];\n\n var group = this._plotbandGroup = new Group({\n zIndex: -1\n });\n\n for (var i = 0; i < plotBands.length; i++) {\n var band = plotBands[i];\n var slot = this$1$1.plotBandSlot(band);\n var singleSlot = this$1$1.getSlot(band.from);\n\n var head = band.from - Math.floor(band.from);\n slot.startAngle += head * singleSlot.angle;\n\n var tail = Math.ceil(band.to) - band.to;\n slot.angle -= (tail + head) * singleSlot.angle;\n\n var ring = ShapeBuilder.current.createRing(slot, {\n fill: {\n color: band.color,\n opacity: band.opacity\n },\n stroke: {\n opacity: band.opacity\n }\n });\n group.append(ring);\n }\n\n this.appendVisual(group);\n },\n\n plotBandSlot: function(band) {\n return this.getSlot(band.from, band.to - 1);\n },\n\n getSlot: function(from, to) {\n var options = this.options;\n var justified = options.justified;\n var box = this.box;\n var divs = this.majorAngles();\n var totalDivs = divs.length;\n var slotAngle = 360 / totalDivs;\n var fromValue = from;\n\n if (options.reverse && !justified) {\n fromValue = (fromValue + 1) % totalDivs;\n }\n\n fromValue = limitValue(Math.floor(fromValue), 0, totalDivs - 1);\n var slotStart = divs[fromValue];\n\n if (justified) {\n slotStart = slotStart - slotAngle / 2;\n\n if (slotStart < 0) {\n slotStart += 360;\n }\n }\n\n var toValue = limitValue(Math.ceil(to || fromValue), fromValue, totalDivs - 1);\n var slots = toValue - fromValue + 1;\n var angle = slotAngle * slots;\n\n return new Ring(box.center(), 0, box.height() / 2, slotStart, angle);\n },\n\n slot: function(from, to) {\n var slot = this.getSlot(from, to);\n var startAngle = slot.startAngle + 180;\n var endAngle = startAngle + slot.angle;\n\n return new geometry.Arc([ slot.center.x, slot.center.y ], {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: slot.radius,\n radiusY: slot.radius\n });\n },\n\n pointCategoryIndex: function(point) {\n var this$1$1 = this;\n\n var length = this.options.categories.length;\n var index = null;\n\n for (var i = 0; i < length; i++) {\n var slot = this$1$1.getSlot(i);\n if (slot.containsPoint(point)) {\n index = i;\n break;\n }\n }\n\n return index;\n }\n });\n\n setDefaultOptions(RadarCategoryAxis, {\n startAngle: 90,\n labels: {\n margin: getSpacing(10)\n },\n majorGridLines: {\n visible: true\n },\n justified: true\n });\n deepExtend(RadarCategoryAxis.prototype, GridLinesMixin);\n\n var PolarAxis = Axis.extend({\n init: function(options, chartService) {\n Axis.fn.init.call(this, options, chartService);\n\n var instanceOptions = this.options;\n\n instanceOptions.minorUnit = instanceOptions.minorUnit || instanceOptions.majorUnit / 2;\n },\n\n getDivisions: function(stepValue) {\n return NumericAxis.prototype.getDivisions.call(this, stepValue) - 1;\n },\n\n reflow: function(box) {\n this.box = box;\n this.reflowLabels();\n },\n\n reflowLabels: function() {\n var this$1$1 = this;\n\n var ref = this;\n var options = ref.options;\n var labels = ref.labels;\n var labelOptions = ref.options.labels;\n var skip = labelOptions.skip || 0;\n var step = labelOptions.step || 1;\n\n var measureBox = new Box();\n var divs = this.intervals(options.majorUnit, skip, step);\n\n for (var i = 0; i < labels.length; i++) {\n labels[i].reflow(measureBox);\n var labelBox = labels[i].box;\n\n labels[i].reflow(this$1$1.getSlot(divs[i]).adjacentBox(0, labelBox.width(), labelBox.height()));\n }\n },\n\n lineBox: function() {\n return this.box;\n },\n\n intervals: function(size, skipOption, stepOption, skipAngles) {\n if (skipAngles === void 0) { skipAngles = false; }\n\n var min = this.options.min;\n var divisions = this.getDivisions(size);\n var divs = [];\n var skip = skipOption || 0;\n var step = stepOption || 1;\n\n for (var i = skip; i < divisions; i += step) {\n var current = (360 + min + i * size) % 360;\n if (!(skipAngles && inArray(current, skipAngles))) {\n divs.push(current);\n }\n }\n\n return divs;\n },\n\n majorIntervals: function() {\n return this.intervals(this.options.majorUnit);\n },\n\n minorIntervals: function() {\n return this.intervals(this.options.minorUnit);\n },\n\n intervalAngle: function(i) {\n return (540 - i - this.options.startAngle) % 360;\n },\n\n createLine: function() {\n return [];\n },\n\n majorGridLineAngles: function(altAxis) {\n var majorGridLines = this.options.majorGridLines;\n return this.gridLineAngles(altAxis, this.options.majorUnit, majorGridLines.skip, majorGridLines.step);\n },\n\n minorGridLineAngles: function(altAxis, skipMajor) {\n var options = this.options;\n var minorGridLines = options.minorGridLines;\n var majorGridLines = options.majorGridLines;\n var majorGridLineAngles = skipMajor ? this.intervals(options.majorUnit, majorGridLines.skip, majorGridLines.step) : null;\n\n return this.gridLineAngles(altAxis, options.minorUnit, minorGridLines.skip, minorGridLines.step, majorGridLineAngles);\n },\n\n plotBandSlot: function(band) {\n return this.getSlot(band.from, band.to);\n },\n\n getSlot: function(a, b) {\n var ref = this;\n var options = ref.options;\n var box = ref.box;\n var startAngle = options.startAngle;\n var start = limitValue(a, options.min, options.max);\n var end = limitValue(b || start, start, options.max);\n\n if (options.reverse) {\n start *= -1;\n end *= -1;\n }\n\n start = (540 - start - startAngle) % 360;\n end = (540 - end - startAngle) % 360;\n\n if (end < start) {\n var tmp = start;\n start = end;\n end = tmp;\n }\n\n return new Ring(box.center(), 0, box.height() / 2, start, end - start);\n },\n\n slot: function(from, to) {\n if (to === void 0) { to = from; }\n\n var options = this.options;\n var start = 360 - options.startAngle;\n var slot = this.getSlot(from, to);\n var min = Math.min(from, to);\n var max = Math.max(from, to);\n var startAngle, endAngle;\n\n if (options.reverse) {\n startAngle = min;\n endAngle = max;\n } else {\n startAngle = 360 - max;\n endAngle = 360 - min;\n }\n\n startAngle = (startAngle + start) % 360;\n endAngle = (endAngle + start) % 360;\n\n return new geometry.Arc([ slot.center.x, slot.center.y ], {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: slot.radius,\n radiusY: slot.radius\n });\n },\n\n getValue: function(point) {\n var options = this.options;\n var center = this.box.center();\n var dx = point.x - center.x;\n var dy = point.y - center.y;\n var theta = Math.round(deg(Math.atan2(dy, dx)));\n var start = options.startAngle;\n\n if (!options.reverse) {\n theta *= -1;\n start *= -1;\n }\n\n return (theta + start + 360) % 360;\n },\n\n valueRange: function() {\n return {\n min: 0,\n max: Math.PI * 2\n };\n }\n });\n\n setDefaultOptions(PolarAxis, {\n type: \"polar\",\n startAngle: 0,\n reverse: false,\n majorUnit: 60,\n min: 0,\n max: 360,\n labels: {\n margin: getSpacing(10)\n },\n majorGridLines: {\n color: BLACK,\n visible: true,\n width: 1\n },\n minorGridLines: {\n color: \"#aaa\"\n }\n });\n\n deepExtend(PolarAxis.prototype, GridLinesMixin, {\n createPlotBands: RadarCategoryAxis.prototype.createPlotBands,\n majorAngles: RadarCategoryAxis.prototype.majorAngles,\n range: NumericAxis.prototype.range,\n labelsCount: NumericAxis.prototype.labelsCount,\n createAxisLabel: NumericAxis.prototype.createAxisLabel\n });\n\n var RadarNumericAxisMixin = {\n options: {\n majorGridLines: {\n visible: true\n }\n },\n\n createPlotBands: function() {\n var this$1$1 = this;\n\n var ref = this.options;\n var type = ref.majorGridLines.type;\n var plotBands = ref.plotBands; if (plotBands === void 0) { plotBands = []; }\n var altAxis = this.plotArea.polarAxis;\n var majorAngles = altAxis.majorAngles();\n var center = altAxis.box.center();\n var group = this._plotbandGroup = new Group({\n zIndex: -1\n });\n\n for (var i = 0; i < plotBands.length; i++) {\n var band = plotBands[i];\n var bandStyle = {\n fill: {\n color: band.color,\n opacity: band.opacity\n },\n stroke: {\n opacity: band.opacity\n }\n };\n\n var slot = this$1$1.getSlot(band.from, band.to, true);\n var ring = new Ring(center, center.y - slot.y2, center.y - slot.y1, 0, 360);\n\n var shape = (void 0);\n if (type === ARC) {\n shape = ShapeBuilder.current.createRing(ring, bandStyle);\n } else {\n shape = Path.fromPoints(this$1$1.plotBandPoints(ring, majorAngles), bandStyle).close();\n }\n\n group.append(shape);\n }\n\n this.appendVisual(group);\n },\n\n plotBandPoints: function(ring, angles) {\n var innerPoints = [];\n var outerPoints = [];\n var center = [ ring.center.x, ring.center.y ];\n var innerCircle = new Circle(center, ring.innerRadius);\n var outerCircle = new Circle(center, ring.radius);\n\n for (var i = 0; i < angles.length; i++) {\n innerPoints.push(innerCircle.pointAt(angles[i] + 180));\n outerPoints.push(outerCircle.pointAt(angles[i] + 180));\n }\n\n innerPoints.reverse();\n innerPoints.push(innerPoints[0]);\n outerPoints.push(outerPoints[0]);\n\n return outerPoints.concat(innerPoints);\n },\n\n createGridLines: function(altAxis) {\n var options = this.options;\n var majorTicks = this.radarMajorGridLinePositions();\n var majorAngles = altAxis.majorAngles();\n var center = altAxis.box.center();\n var gridLines = [];\n\n if (options.majorGridLines.visible) {\n gridLines = this.renderGridLines(\n center, majorTicks, majorAngles, options.majorGridLines\n );\n }\n\n if (options.minorGridLines.visible) {\n var minorTicks = this.radarMinorGridLinePositions();\n append(gridLines, this.renderGridLines(\n center, minorTicks, majorAngles, options.minorGridLines\n ));\n }\n\n return gridLines;\n },\n\n renderGridLines: function(center, ticks, angles, options) {\n var style = {\n stroke: {\n width: options.width,\n color: options.color,\n dashType: options.dashType\n }\n };\n var skip = options.skip; if (skip === void 0) { skip = 0; }\n var step = options.step; if (step === void 0) { step = 0; }\n var container = this.gridLinesVisual();\n\n for (var tickIx = skip; tickIx < ticks.length; tickIx += step) {\n var tickRadius = center.y - ticks[tickIx];\n if (tickRadius > 0) {\n var circle = new Circle([ center.x, center.y ], tickRadius);\n if (options.type === ARC) {\n container.append(new drawing.Circle(circle, style));\n } else {\n var line = new Path(style);\n for (var angleIx = 0; angleIx < angles.length; angleIx++) {\n line.lineTo(circle.pointAt(angles[angleIx] + 180));\n }\n\n line.close();\n container.append(line);\n }\n }\n }\n\n return container.children;\n },\n\n getValue: function(point) {\n var lineBox = this.lineBox();\n var altAxis = this.plotArea.polarAxis;\n var majorAngles = altAxis.majorAngles();\n var center = altAxis.box.center();\n var radius = point.distanceTo(center);\n var distance = radius;\n\n if (this.options.majorGridLines.type !== ARC && majorAngles.length > 1) {\n var dx = point.x - center.x;\n var dy = point.y - center.y;\n var theta = (deg(Math.atan2(dy, dx)) + 540) % 360;\n\n majorAngles.sort(function(a, b) {\n return angularDistance(a, theta) - angularDistance(b, theta);\n });\n\n // Solve triangle (center, point, axis X) using one side (radius) and two angles.\n // Angles are derived from triangle (center, point, gridline X)\n var midAngle = angularDistance(majorAngles[0], majorAngles[1]) / 2;\n var alpha = angularDistance(theta, majorAngles[0]);\n var gamma = 90 - midAngle;\n var beta = 180 - alpha - gamma;\n\n distance = radius * (Math.sin(rad(beta)) / Math.sin(rad(gamma)));\n }\n\n return this.axisType().prototype.getValue.call(\n this, new Point(lineBox.x1, lineBox.y2 - distance)\n );\n }\n };\n\n function angularDistance(a, b) {\n return 180 - Math.abs(Math.abs(a - b) - 180);\n }\n\n var RadarNumericAxis = NumericAxis.extend({\n radarMajorGridLinePositions: function() {\n return this.getTickPositions(this.options.majorUnit);\n },\n\n radarMinorGridLinePositions: function() {\n var options = this.options;\n var minorSkipStep = 0;\n\n if (options.majorGridLines.visible) {\n minorSkipStep = options.majorUnit;\n }\n return this.getTickPositions(options.minorUnit, minorSkipStep);\n },\n\n axisType: function() {\n return NumericAxis;\n }\n });\n\n deepExtend(RadarNumericAxis.prototype, RadarNumericAxisMixin);\n\n var RadarLogarithmicAxis = LogarithmicAxis.extend({\n radarMajorGridLinePositions: function() {\n var positions = [];\n\n this.traverseMajorTicksPositions(function(position) {\n positions.push(position);\n }, this.options.majorGridLines);\n\n return positions;\n },\n\n radarMinorGridLinePositions: function() {\n var positions = [];\n\n this.traverseMinorTicksPositions(function(position) {\n positions.push(position);\n }, this.options.minorGridLines);\n\n return positions;\n },\n\n axisType: function() {\n return LogarithmicAxis;\n }\n });\n\n deepExtend(RadarLogarithmicAxis.prototype, RadarNumericAxisMixin);\n\n var WEIGHT = 0.333;\n var EXTREMUM_ALLOWED_DEVIATION = 0.01;\n\n var CurveProcessor = Class.extend({\n init: function(closed) {\n\n this.closed = closed;\n },\n\n process: function(dataPoints) {\n var this$1$1 = this;\n\n var points = dataPoints.slice(0);\n var segments = [];\n var closed = this.closed;\n var length = points.length;\n\n if (length > 2) {\n this.removeDuplicates(0, points);\n length = points.length;\n }\n\n if (length < 2 || (length === 2 && points[0].equals(points[1]))) {\n return segments;\n }\n\n var p0 = points[0];\n var p1 = points[1];\n var p2 = points[2];\n\n segments.push(new Segment(p0));\n\n while (p0.equals(points[length - 1])) {\n closed = true;\n points.pop();\n length--;\n }\n\n if (length === 2) {\n var tangent = this.tangent(p0,p1, X, Y);\n\n last(segments).controlOut(\n this.firstControlPoint(tangent, p0, p1, X, Y)\n );\n\n segments.push(new Segment(\n p1,\n this.secondControlPoint(tangent, p0, p1, X, Y)\n ));\n\n return segments;\n }\n\n var initialControlPoint, lastControlPoint;\n\n if (closed) {\n p0 = points[length - 1]; p1 = points[0]; p2 = points[1];\n var controlPoints = this.controlPoints(p0, p1, p2);\n initialControlPoint = controlPoints[1];\n lastControlPoint = controlPoints[0];\n } else {\n var tangent$1 = this.tangent(p0, p1, X,Y);\n initialControlPoint = this.firstControlPoint(tangent$1, p0, p1, X, Y);\n }\n\n var cp0 = initialControlPoint;\n for (var idx = 0; idx <= length - 3; idx++) {\n this$1$1.removeDuplicates(idx, points);\n length = points.length;\n if (idx + 3 <= length) {\n p0 = points[idx]; p1 = points[idx + 1]; p2 = points[idx + 2];\n var controlPoints$1 = this$1$1.controlPoints(p0,p1,p2);\n\n last(segments).controlOut(cp0);\n cp0 = controlPoints$1[1];\n\n var cp1 = controlPoints$1[0];\n segments.push(new Segment(p1, cp1));\n }\n }\n\n if (closed) {\n p0 = points[length - 2]; p1 = points[length - 1]; p2 = points[0];\n var controlPoints$2 = this.controlPoints(p0, p1, p2);\n\n last(segments).controlOut(cp0);\n segments.push(new Segment(\n p1,\n controlPoints$2[0]\n ));\n\n last(segments).controlOut(controlPoints$2[1]);\n segments.push(new Segment(\n p2,\n lastControlPoint\n ));\n } else {\n var tangent$2 = this.tangent(p1, p2, X, Y);\n\n last(segments).controlOut(cp0);\n segments.push(new Segment(\n p2,\n this.secondControlPoint(tangent$2, p1, p2, X, Y)\n ));\n }\n\n return segments;\n },\n\n removeDuplicates: function(idx, points) {\n while (points[idx + 1] && (points[idx].equals(points[idx + 1]) || points[idx + 1].equals(points[idx + 2]))) {\n points.splice(idx + 1, 1);\n }\n },\n\n invertAxis: function(p0, p1, p2) {\n var invertAxis = false;\n\n if (p0.x === p1.x) {\n invertAxis = true;\n } else if (p1.x === p2.x) {\n if ((p1.y < p2.y && p0.y <= p1.y) || (p2.y < p1.y && p1.y <= p0.y)) {\n invertAxis = true;\n }\n } else {\n var fn = this.lineFunction(p0,p1);\n var y2 = this.calculateFunction(fn, p2.x);\n if (!(p0.y <= p1.y && p2.y <= y2) &&\n !(p1.y <= p0.y && p2.y >= y2)) {\n invertAxis = true;\n }\n }\n\n return invertAxis;\n },\n\n isLine: function(p0, p1, p2) {\n var fn = this.lineFunction(p0, p1);\n var y2 = this.calculateFunction(fn, p2.x);\n\n return (p0.x === p1.x && p1.x === p2.x) || round(y2, 1) === round(p2.y, 1);\n },\n\n lineFunction: function(p1, p2) {\n var a = (p2.y - p1.y) / (p2.x - p1.x);\n var b = p1.y - a * p1.x;\n\n return [ b, a ];\n },\n\n controlPoints: function(p0, p1, p2) {\n var xField = X;\n var yField = Y;\n var restrict = false;\n var switchOrientation = false;\n var tangent;\n\n if (this.isLine(p0, p1, p2)) {\n tangent = this.tangent(p0, p1, X, Y);\n } else {\n var monotonic = {\n x: this.isMonotonicByField(p0, p1, p2, X),\n y: this.isMonotonicByField(p0, p1, p2, Y)\n };\n\n if (monotonic.x && monotonic.y) {\n tangent = this.tangent(p0, p2, X, Y);\n restrict = true;\n } else {\n if (this.invertAxis(p0, p1, p2)) {\n xField = Y;\n yField = X;\n }\n\n if (monotonic[xField]) {\n tangent = 0;\n } else {\n var sign;\n if ((p2[yField] < p0[yField] && p0[yField] <= p1[yField]) ||\n (p0[yField] < p2[yField] && p1[yField] <= p0[yField])) {\n sign = numberSign((p2[yField] - p0[yField]) * (p1[xField] - p0[xField]));\n } else {\n sign = -numberSign((p2[xField] - p0[xField]) * (p1[yField] - p0[yField]));\n }\n\n tangent = EXTREMUM_ALLOWED_DEVIATION * sign;\n switchOrientation = true;\n }\n }\n }\n\n var secondControlPoint = this.secondControlPoint(tangent, p0, p1, xField, yField);\n\n if (switchOrientation) {\n var oldXField = xField;\n xField = yField;\n yField = oldXField;\n }\n\n var firstControlPoint = this.firstControlPoint(tangent, p1, p2, xField, yField);\n\n if (restrict) {\n this.restrictControlPoint(p0, p1, secondControlPoint, tangent);\n this.restrictControlPoint(p1, p2, firstControlPoint, tangent);\n }\n\n return [ secondControlPoint, firstControlPoint ];\n },\n\n restrictControlPoint: function(p1, p2, cp, tangent) {\n if (p1.y < p2.y) {\n if (p2.y < cp.y) {\n cp.x = p1.x + (p2.y - p1.y) / tangent;\n cp.y = p2.y;\n } else if (cp.y < p1.y) {\n cp.x = p2.x - (p2.y - p1.y) / tangent;\n cp.y = p1.y;\n }\n } else {\n if (cp.y < p2.y) {\n cp.x = p1.x - (p1.y - p2.y) / tangent;\n cp.y = p2.y;\n } else if (p1.y < cp.y) {\n cp.x = p2.x + (p1.y - p2.y) / tangent;\n cp.y = p1.y;\n }\n }\n },\n\n tangent: function(p0, p1, xField, yField) {\n var x = p1[xField] - p0[xField];\n var y = p1[yField] - p0[yField];\n var tangent;\n\n if (x === 0) {\n tangent = 0;\n } else {\n tangent = y / x;\n }\n\n return tangent;\n },\n\n isMonotonicByField: function(p0, p1, p2, field) {\n return (p2[field] > p1[field] && p1[field] > p0[field]) ||\n (p2[field] < p1[field] && p1[field] < p0[field]);\n },\n\n firstControlPoint: function(tangent, p0, p3, xField, yField) {\n var t1 = p0[xField];\n var t2 = p3[xField];\n var distance = (t2 - t1) * WEIGHT;\n\n return this.point(t1 + distance, p0[yField] + distance * tangent, xField, yField);\n },\n\n secondControlPoint: function(tangent, p0, p3, xField, yField) {\n var t1 = p0[xField];\n var t2 = p3[xField];\n var distance = (t2 - t1) * WEIGHT;\n\n return this.point(t2 - distance, p3[yField] - distance * tangent, xField, yField);\n },\n\n point: function(xValue, yValue, xField, yField) {\n var controlPoint = new geometry.Point();\n controlPoint[xField] = xValue;\n controlPoint[yField] = yValue;\n\n return controlPoint;\n },\n\n calculateFunction: function(fn, x) {\n var length = fn.length;\n var result = 0;\n\n for (var i = 0; i < length; i++) {\n result += Math.pow(x,i) * fn[i];\n }\n return result;\n }\n });\n\n function numberSign(value) {\n return value <= 0 ? -1 : 1;\n }\n\n dataviz.Gradients = GRADIENTS;\n\n kendo.deepExtend(kendo.dataviz, {\n constants: constants,\n services: services,\n autoMajorUnit: autoMajorUnit,\n Point: Point,\n Box: Box,\n Ring: Ring,\n Sector: Sector,\n ShapeBuilder: ShapeBuilder,\n ShapeElement: ShapeElement,\n ChartElement: ChartElement,\n BoxElement: BoxElement,\n RootElement: RootElement,\n FloatElement: FloatElement,\n Text: Text,\n TextBox: TextBox,\n Title: Title,\n AxisLabel: AxisLabel,\n Axis: Axis,\n Note: Note,\n CategoryAxis: CategoryAxis,\n DateCategoryAxis: DateCategoryAxis,\n DateValueAxis: DateValueAxis,\n NumericAxis: NumericAxis,\n LogarithmicAxis: LogarithmicAxis,\n PolarAxis: PolarAxis,\n RadarCategoryAxis: RadarCategoryAxis,\n RadarNumericAxis: RadarNumericAxis,\n RadarLogarithmicAxis: RadarLogarithmicAxis,\n CurveProcessor: CurveProcessor,\n rectToBox: rectToBox,\n addClass: addClass,\n removeClass: removeClass,\n alignPathToPixel: alignPathToPixel,\n clockwise: clockwise,\n convertableToNumber: convertableToNumber,\n cycleUp: cycleUp,\n cycleDown: cycleDown,\n cycleIndex: cycleIndex,\n deepExtend: deepExtend,\n elementStyles: elementStyles,\n getSpacing: getSpacing,\n getTemplate: getTemplate,\n getAriaTemplate: getTemplate$1,\n getter: __common_getter_js,\n grep: grep,\n hasClasses: hasClasses,\n HashMap: HashMap,\n inArray: inArray,\n interpolateValue: interpolateValue,\n InstanceObserver: InstanceObserver,\n isArray: isArray,\n isFunction: isFunction,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isString: isString,\n map: map,\n mousewheelDelta: mousewheelDelta,\n FontLoader: FontLoader,\n renderIcon: renderIcon,\n setDefaultOptions: setDefaultOptions,\n sparseArrayLimits: sparseArrayLimits,\n styleValue: styleValue,\n find: find,\n elementScale: elementScale,\n autoTextColor: autoTextColor,\n createHashSet: createHashSet,\n defaultErrorHandler: defaultErrorHandler,\n keys: keys,\n hasOwnProperty: hasOwnProperty,\n Matrix: Matrix$1,\n Observable: Observable$$1,\n append: append,\n bindEvents: bindEvents,\n Class: Class,\n defined: defined,\n deg: deg,\n elementOffset: elementOffset,\n elementSize: elementSize,\n eventCoordinates: eventCoordinates,\n eventElement: eventElement,\n hashKey: hashKey,\n last: last,\n limitValue: limitValue,\n logToConsole: kendo.logToConsole,\n objectKey: objectKey,\n rad: rad,\n round: round,\n unbindEvents: unbindEvents,\n valueOrDefault: valueOrDefault,\n absoluteDateDiff: absoluteDateDiff,\n addDuration: addDuration,\n addTicks: addTicks,\n ceilDate: ceilDate,\n dateComparer: dateComparer,\n dateDiff: dateDiff,\n dateEquals: dateEquals,\n dateIndex: dateIndex,\n duration: duration,\n floorDate: floorDate,\n lteDateIndex: lteDateIndex,\n startOfWeek: startOfWeek,\n toDate: toDate,\n parseDate: parseDate,\n parseDates: parseDates,\n toTime: toTime,\n firstDay: firstDay\n });\n\n })(window.kendo.jQuery);\n\n (function($) {\n\n var dataviz = kendo.dataviz;\n var services = dataviz.services;\n var draw = kendo.drawing;\n\n dataviz.SASS_THEMES = [\"sass\", \"default-v2\", \"bootstrap-v4\", \"material-v2\"];\n\n dataviz.ExportMixin = {\n extend: function(proto, skipLegacy) {\n if (!proto.exportVisual) {\n throw new Error(\"Mixin target has no exportVisual method defined.\");\n }\n\n proto.exportSVG = this.exportSVG;\n proto.exportImage = this.exportImage;\n proto.exportPDF = this.exportPDF;\n\n if (!skipLegacy) {\n proto.svg = this.svg;\n proto.imageDataURL = this.imageDataURL;\n }\n },\n\n exportSVG: function(options) {\n return draw.exportSVG(this.exportVisual(), options);\n },\n\n exportImage: function(options) {\n return draw.exportImage(this.exportVisual(options), options);\n },\n\n exportPDF: function(options) {\n return draw.exportPDF(this.exportVisual(), options);\n },\n\n svg: function() {\n if (draw.svg.Surface) {\n return draw.svg.exportGroup(this.exportVisual());\n } else {\n throw new Error(\"SVG Export failed. Unable to export instantiate kendo.drawing.svg.Surface\");\n }\n },\n\n imageDataURL: function() {\n if (!kendo.support.canvas) {\n return null;\n }\n\n if (draw.canvas.Surface) {\n var container = $(\"
    \").css({\n display: \"none\",\n width: this.element.width(),\n height: this.element.height()\n }).appendTo(document.body);\n\n var surface = new draw.canvas.Surface(container[0]);\n surface.draw(this.exportVisual());\n var image = surface._rootElement.toDataURL();\n\n surface.destroy();\n container.remove();\n\n return image;\n } else {\n throw new Error(\"Image Export failed. Unable to export instantiate kendo.drawing.canvas.Surface\");\n }\n }\n };\n\n services.IntlService.register({\n format: function(format) {\n return kendo.format.apply(null, [format].concat(Array.prototype.slice.call(arguments, 1)));\n },\n toString: kendo.toString,\n parseDate: kendo.parseDate,\n firstDay: function() {\n return kendo.culture().calendars.standard.firstDay;\n }\n });\n\n services.TemplateService.register({\n compile: kendo.template\n });\n\n dataviz.Point2D = dataviz.Point;\n dataviz.Box2D = dataviz.Box;\n dataviz.mwDelta = function(e) {\n return dataviz.mousewheelDelta(e.originalEvent);\n };\n\n })(window.kendo.jQuery);\n\n var __meta__$F = {\n id: \"dataviz.core\",\n name: \"Core\",\n description: \"The DataViz core functions\",\n category: \"dataviz\",\n depends: [ \"core\", \"drawing\" ],\n hidden: true\n };\n\n var kendo$J = kendo;\n\n /***********************************************************************\n * WARNING: this file is auto-generated. If you change it directly,\n * your modifications will eventually be lost. The source code is in\n * `kendo-charts` repository, you should make your changes there and\n * run `src-modules/sync.sh` in this repository.\n */\n\n (function($) {\n /* eslint-disable space-before-blocks, space-before-function-paren, object-curly-spacing */\n\n window.kendo.dataviz = window.kendo.dataviz || {};\n\n var AREA = \"area\";\n var LINE = \"line\";\n\n var INHERIT = \"inherit\";\n\n var BAR_GAP = 1.5;\n var BAR_SPACING = 0.4;\n var BLACK$$1 = '#000';\n var SANS = 'Arial, Helvetica, sans-serif';\n var SANS11 = \"11px \" + SANS;\n var SANS12 = '12px ' + SANS;\n var SANS16 = '16px ' + SANS;\n var TRANSPARENT = 'transparent';\n var WHITE$$1 = '#fff';\n\n var lineSeriesLegendItem = {\n type: LINE\n };\n\n var areaSeriesLegendItem = {\n type: AREA\n };\n\n var areaNoMarkersSeriesLegendItem = $.extend({}, areaSeriesLegendItem,\n {markers: {\n visible: false\n },\n highlight: {\n visible: false\n }});\n\n var notes = function () { return ({\n icon: {\n border: {\n width: 1\n }\n },\n label: {\n font: SANS12,\n padding: 3\n },\n line: {\n length: 10,\n width: 2\n },\n legendItem: areaNoMarkersSeriesLegendItem,\n visible: true\n }); };\n\n var axisDefaults = function () { return ({\n labels: {\n font: SANS12\n },\n notes: notes(),\n title: {\n font: SANS16,\n margin: 5\n }\n }); };\n\n var areaSeries = function () { return ({\n highlight: {\n markers: {\n border: {}\n }\n },\n line: {\n opacity: 1,\n width: 0\n },\n markers: {\n size: 6,\n visible: false\n },\n legendItem: areaSeriesLegendItem,\n opacity: 0.4\n }); };\n\n var rangeAreaSeries = function () { return ({\n highlight: {\n markers: {\n border: {}\n }\n },\n line: {\n opacity: 1,\n width: 0\n },\n markers: {\n size: 6,\n visible: false\n },\n legendItem: areaSeriesLegendItem,\n opacity: 0.4\n }); };\n\n var barSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING,\n legendItem: areaNoMarkersSeriesLegendItem,\n }); };\n\n var boxPlotSeries = function () { return ({\n outliersField: \"\",\n meanField: \"\",\n border: {\n _brightness: 0.8,\n width: 1\n },\n downColor: WHITE$$1,\n gap: 1,\n highlight: {\n border: {\n opacity: 1,\n width: 2\n },\n whiskers: {\n width: 3\n },\n mean: {\n width: 2\n },\n median: {\n width: 2\n }\n },\n mean: {\n width: 2\n },\n median: {\n width: 2\n },\n spacing: 0.3,\n whiskers: {\n width: 2\n },\n legendItem: areaNoMarkersSeriesLegendItem,\n }); };\n\n var bubbleSeries = function () { return ({\n border: {\n width: 0\n },\n labels: {\n background: TRANSPARENT\n },\n legendItem: areaNoMarkersSeriesLegendItem,\n opacity: 0.6\n }); };\n\n var bulletSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING,\n target: {\n color: \"#ff0000\"\n },\n legendItem: areaNoMarkersSeriesLegendItem\n }); };\n\n var candlestickSeries = function () { return ({\n border: {\n _brightness: 0.8,\n width: 1\n },\n downColor: WHITE$$1,\n gap: 1,\n highlight: {\n border: {\n opacity: 1,\n width: 2\n },\n line: {\n width: 2\n }\n },\n line: {\n color: BLACK$$1,\n width: 1\n },\n legendItem: areaNoMarkersSeriesLegendItem,\n spacing: 0.3\n }); };\n\n var columnSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING,\n legendItem: areaNoMarkersSeriesLegendItem\n }); };\n\n var radarColumnSeries = function () { return ({\n legendItem: areaNoMarkersSeriesLegendItem\n }); };\n\n var polarScatterSeries = function () { return ({\n legendItem: lineSeriesLegendItem\n }); };\n\n var scatterSeries = function () { return ({\n legendItem: lineSeriesLegendItem\n }); };\n\n var donutSeries = function () { return ({\n margin: 1,\n legendItem: areaNoMarkersSeriesLegendItem\n }); };\n\n var lineSeries = function () { return ({\n width: 2,\n legendItem: lineSeriesLegendItem\n }); };\n\n var ohlcSeries = function () { return ({\n gap: 1,\n highlight: {\n line: {\n opacity: 1,\n width: 3\n }\n },\n line: {\n width: 1\n },\n legendItem: areaNoMarkersSeriesLegendItem,\n spacing: 0.3\n }); };\n\n var radarAreaSeries = function () { return ({\n line: {\n opacity: 1,\n width: 0\n },\n markers: {\n size: 6,\n visible: false\n },\n legendItem: areaSeriesLegendItem,\n opacity: 0.5\n }); };\n\n var radarLineSeries = function () { return ({\n markers: {\n visible: false\n },\n legendItem: lineSeriesLegendItem,\n width: 2\n }); };\n\n var rangeBarSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING,\n legendItem: areaNoMarkersSeriesLegendItem\n }); };\n\n var rangeColumnSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING,\n legendItem: areaNoMarkersSeriesLegendItem\n }); };\n\n var scatterLineSeries = function () { return ({\n width: 1,\n legendItem: lineSeriesLegendItem\n }); };\n\n var waterfallSeries = function () { return ({\n gap: 0.5,\n line: {\n color: BLACK$$1,\n width: 1\n },\n legendItem: areaNoMarkersSeriesLegendItem,\n spacing: BAR_SPACING\n }); };\n\n var pieSeries = function () { return ({\n labels: {\n background: '',\n color: '',\n padding: {\n top: 5,\n bottom: 5,\n left: 7,\n right: 7\n }\n },\n legendItem: areaNoMarkersSeriesLegendItem\n }); };\n\n var funnelSeries = function () { return ({\n labels: {\n background: '',\n color: '',\n padding: {\n top: 5,\n bottom: 5,\n left: 7,\n right: 7\n }\n },\n legendItem: areaNoMarkersSeriesLegendItem\n }); };\n\n var pyramidSeries = funnelSeries;\n\n var heatmapSeries = function () { return ({\n labels: {\n color: '',\n background: TRANSPARENT,\n visible: true\n },\n highlight: {\n border: {\n width: 0\n }\n },\n legendItem: areaNoMarkersSeriesLegendItem\n }); };\n\n var trendlineSeriesDefaults = function (options) { return $.extend({\n color: INHERIT,\n trendline: {},\n markers: {\n visible: false\n },\n width: 1,\n dashType: 'longDash',\n legendItem: lineSeriesLegendItem\n }, options); };\n\n var seriesDefaults = function (options) { return ({\n visible: true,\n labels: {\n font: SANS11\n },\n overlay: options.gradients ? {} : {\n gradient: \"none\"\n },\n area: areaSeries(),\n rangeArea: rangeAreaSeries(),\n verticalRangeArea: rangeAreaSeries(),\n bar: barSeries(),\n boxPlot: boxPlotSeries(),\n bubble: bubbleSeries(),\n bullet: bulletSeries(),\n candlestick: candlestickSeries(),\n column: columnSeries(),\n heatmap: heatmapSeries(),\n pie: pieSeries(),\n donut: donutSeries(),\n funnel: funnelSeries(),\n pyramid: pyramidSeries(),\n horizontalWaterfall: waterfallSeries(),\n line: lineSeries(),\n notes: notes(),\n ohlc: ohlcSeries(),\n radarArea: radarAreaSeries(),\n radarLine: radarLineSeries(),\n radarColumn: radarColumnSeries(),\n polarArea: radarAreaSeries(),\n polarLine: radarLineSeries(),\n polarScatter: polarScatterSeries(),\n rangeBar: rangeBarSeries(),\n rangeColumn: rangeColumnSeries(),\n scatter: scatterSeries(),\n scatterLine: scatterLineSeries(),\n verticalArea: areaSeries(),\n verticalBoxPlot: boxPlotSeries(),\n verticalBullet: bulletSeries(),\n verticalLine: lineSeries(),\n waterfall: waterfallSeries(),\n linearTrendline: trendlineSeriesDefaults(),\n exponentialTrendline: trendlineSeriesDefaults({ style: 'smooth' }),\n logarithmicTrendline: trendlineSeriesDefaults({ style: 'smooth' }),\n polynomialTrendline: trendlineSeriesDefaults({ style: 'smooth' }),\n powerTrendline: trendlineSeriesDefaults({ style: 'smooth' }),\n movingAverageTrendline: trendlineSeriesDefaults()\n }); };\n\n var title = function () { return ({\n font: SANS16\n }); };\n\n var subtitle = function () { return ({\n font: SANS12\n }); };\n\n var legend = function () { return ({\n labels: {\n font: SANS12\n }\n }); };\n\n var baseTheme = function (options) {\n if (options === void 0) { options = {}; }\n\n return ({\n axisDefaults: axisDefaults(),\n categoryAxis: {\n majorGridLines: {\n visible: true\n }\n },\n navigator: {\n pane: {\n height: 90,\n margin: {\n top: 10\n }\n }\n },\n seriesDefaults: seriesDefaults(options),\n title: title(),\n subtitle: subtitle(),\n legend: legend()\n });\n };\n\n kendo.deepExtend(kendo.dataviz, {\n chartBaseTheme: baseTheme\n });\n\n })(window.kendo.jQuery);\n\n (function($) {\n var cache;\n var SERIES_COLORS = 30;\n\n function seriesTemplate() {\n var template =\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ';\n\n for (var i = 0; i < SERIES_COLORS; i++) {\n template += '
    ';\n }\n\n return template;\n }\n\n function autoTheme(force) {\n if (!force && cache) {\n return cache;\n }\n\n var theme = { chart: kendo.dataviz.chartBaseTheme() };\n var hook = $(\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n seriesTemplate() +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ').hide().appendTo(document.body);\n\n function mapColor(key, varName) {\n set(key, queryStyle(varName, \"backgroundColor\"));\n }\n\n function queryStyle(varName, prop) {\n return hook.find(\".k-var--\" + varName).css(prop);\n }\n\n function set(path, value) {\n var store = theme;\n var parts = path.split('.');\n var key = parts.shift();\n\n while (parts.length > 0) {\n store = store[key] = store[key] || {};\n key = parts.shift();\n }\n\n store[key] = value;\n }\n\n function setInactiveOpacity(seriesTypes, selector) {\n var inactiveOpacity = parseFloat(queryStyle(selector, \"opacity\"));\n if (!isNaN(inactiveOpacity) && inactiveOpacity < 1) {\n seriesTypes.forEach(function(type) {\n set(\"chart.seriesDefaults.\" + type + \".highlight.inactiveOpacity\", inactiveOpacity);\n });\n }\n }\n\n (function setColors() {\n mapColor(\"chart.axisDefaults.crosshair.color\", \"chart-crosshair-background\");\n mapColor(\"chart.axisDefaults.labels.color\", \"normal-text-color\");\n mapColor(\"chart.axisDefaults.line.color\", \"chart-major-lines\");\n mapColor(\"chart.axisDefaults.majorGridLines.color\", \"chart-major-lines\");\n mapColor(\"chart.axisDefaults.minorGridLines.color\", \"chart-minor-lines\");\n mapColor(\"chart.axisDefaults.notes.icon.background\", \"chart-notes-background\");\n mapColor(\"chart.axisDefaults.notes.icon.border.color\", \"chart-notes-border\");\n mapColor(\"chart.axisDefaults.notes.line.color\", \"chart-notes-lines\");\n mapColor(\"chart.axisDefaults.title.color\", \"normal-text-color\");\n mapColor('chart.chartArea.background', 'background');\n mapColor(\"chart.legend.inactiveItems.labels.color\", \"chart-inactive\");\n mapColor(\"chart.legend.inactiveItems.markers.color\", \"chart-inactive\");\n mapColor(\"chart.legend.labels.color\", \"normal-text-color\");\n mapColor(\"chart.seriesDefaults.boxPlot.downColor\", \"chart-major-lines\");\n mapColor(\"chart.seriesDefaults.boxPlot.mean.color\", \"base\");\n mapColor(\"chart.seriesDefaults.boxPlot.median.color\", \"base\");\n mapColor(\"chart.seriesDefaults.boxPlot.whiskers.color\", \"primary\");\n mapColor(\"chart.seriesDefaults.bullet.target.color\", \"primary\");\n mapColor(\"chart.seriesDefaults.candlestick.downColor\", \"normal-text-color\");\n mapColor(\"chart.seriesDefaults.candlestick.line.color\", \"normal-text-color\");\n mapColor(\"chart.seriesDefaults.errorBars.color\", \"chart-error-bars-background\");\n mapColor(\"chart.seriesDefaults.horizontalWaterfall.line.color\", \"chart-major-lines\");\n mapColor(\"chart.seriesDefaults.icon.border.color\", \"chart-major-lines\");\n mapColor(\"chart.seriesDefaults.labels.background\", \"background\");\n mapColor(\"chart.seriesDefaults.labels.color\", \"normal-text-color\");\n mapColor(\"chart.seriesDefaults.notes.icon.background\", \"chart-notes-background\");\n mapColor(\"chart.seriesDefaults.notes.icon.border.color\", \"chart-notes-border\");\n mapColor(\"chart.seriesDefaults.notes.line.color\", \"chart-notes-lines\");\n mapColor(\"chart.seriesDefaults.verticalBoxPlot.downColor\", \"chart-major-lines\");\n mapColor(\"chart.seriesDefaults.verticalBoxPlot.mean.color\", \"base\");\n mapColor(\"chart.seriesDefaults.verticalBoxPlot.median.color\", \"base\");\n mapColor(\"chart.seriesDefaults.verticalBoxPlot.whiskers.color\", \"primary\");\n mapColor(\"chart.seriesDefaults.verticalBullet.target.color\", \"primary\");\n mapColor(\"chart.seriesDefaults.waterfall.line.color\", \"chart-major-lines\");\n mapColor(\"chart.title.color\", \"normal-text-color\");\n mapColor(\"chart.subtitle.color\", \"normal-text-color\");\n\n mapColor(\"diagram.shapeDefaults.fill.color\", \"primary\");\n mapColor(\"diagram.shapeDefaults.content.color\", \"primary-contrast\");\n mapColor(\"diagram.shapeDefaults.connectorDefaults.fill.color\", \"normal-text-color\");\n mapColor(\"diagram.shapeDefaults.connectorDefaults.stroke.color\", \"primary-contrast\");\n mapColor(\"diagram.shapeDefaults.connectorDefaults.hover.fill.color\", \"primary-contrast\");\n mapColor(\"diagram.shapeDefaults.connectorDefaults.hover.stroke.color\", \"normal-text-color\");\n mapColor(\"diagram.editable.resize.handles.stroke.color\", \"normal-text-color\");\n mapColor(\"diagram.editable.resize.handles.fill.color\", \"normal-background\");\n mapColor(\"diagram.editable.resize.handles.hover.stroke.color\", \"normal-text-color\");\n mapColor(\"diagram.editable.resize.handles.hover.fill.color\", \"normal-text-color\");\n mapColor(\"diagram.selectable.stroke.color\", \"normal-text-color\");\n mapColor(\"diagram.connectionDefaults.stroke.color\", \"normal-text-color\");\n mapColor(\"diagram.connectionDefaults.content.color\", \"normal-text-color\");\n mapColor(\"diagram.connectionDefaults.selection.handles.fill.color\", \"primary-contrast\");\n mapColor(\"diagram.connectionDefaults.selection.handles.stroke.color\", \"normal-text-color\");\n mapColor(\"diagram.connectionDefaults.selection.stroke.color\", \"normal-text-color\");\n\n mapColor(\"gauge.pointer.color\", \"gauge-pointer\");\n mapColor(\"gauge.scale.labels.color\", \"normal-text-color\");\n mapColor(\"gauge.scale.minorTicks.color\", \"normal-text-color\");\n mapColor(\"gauge.scale.majorTicks.color\", \"normal-text-color\");\n mapColor(\"gauge.scale.line.color\", \"normal-text-color\");\n mapColor(\"gauge.scale.rangePlaceholderColor\", \"gauge-track\");\n\n var opacity = parseFloat(queryStyle(\"chart-area-opacity\", \"opacity\"));\n if (!isNaN(opacity)) {\n set(\"chart.seriesDefaults.area.opacity\", opacity);\n set(\"chart.seriesDefaults.radarArea.opacity\", opacity);\n set(\"chart.seriesDefaults.verticalArea.opacity\", opacity);\n set(\"chart.seriesDefaults.labels.opacity\", opacity);\n }\n\n setInactiveOpacity([\"area\", \"verticalArea\"], \"chart-area-inactive-opacity\");\n setInactiveOpacity([\"line\", \"verticalLine\"], \"chart-line-inactive-opacity\");\n })();\n\n (function setSizes() {\n set(\"diagram.connectionDefaults.selection.handles.width\", 8);\n set(\"diagram.connectionDefaults.selection.handles.height\", 8);\n })();\n\n (function setFonts() {\n function font(varName) {\n return queryStyle(varName, \"fontWeight\") + \" \" +\n queryStyle(varName, \"fontSize\") + \" \" +\n queryStyle(varName, \"fontFamily\");\n }\n\n var defaultFont = font(\"chart-font\");\n var titleFont = font(\"chart-title-font\");\n var paneTitleFont = font(\"chart-pane-title-font\");\n var labelFont = font(\"chart-label-font\");\n\n set(\"chart.axisDefaults.labels.font\", labelFont);\n set(\"chart.axisDefaults.notes.label.font\", defaultFont);\n set(\"chart.axisDefaults.title.font\", defaultFont);\n set(\"chart.legend.labels.font\", defaultFont);\n set(\"chart.seriesDefaults.labels.font\", labelFont);\n set(\"chart.seriesDefaults.notes.label.font\", defaultFont);\n set(\"chart.title.font\", titleFont);\n set(\"chart.subtitle.font\", paneTitleFont);\n set(\"chart.paneDefaults.title.font\", paneTitleFont);\n })();\n\n (function setSeriesColors() {\n function letterPos(letter) {\n return letter.toLowerCase().charCodeAt(0) - \"a\".charCodeAt(0);\n }\n\n function seriesPos(name) {\n var alpha = name.match(/series-([a-z])$/);\n if (alpha !== null) {\n return letterPos(alpha[1]);\n }\n\n var num = name.split('--series-')[1];\n return parseInt(num, 10) - 1;\n }\n\n var series = $(\".k-var--series div\").toArray();\n var unsetColor = $('.k-var--series-unset').css(\"backgroundColor\");\n var seriesColors = series.reduce(\n function(arr, el) {\n var pos = seriesPos(el.className);\n var color = $(el).css(\"backgroundColor\");\n\n if (color !== unsetColor) {\n arr[pos] = color;\n }\n\n return arr;\n },\n [] // Will populate the series colors in this array\n );\n\n set(\"chart.seriesColors\", seriesColors);\n })();\n\n hook.remove();\n\n cache = theme;\n\n return theme;\n }\n\n kendo.dataviz.autoTheme = autoTheme;\n })(window.kendo.jQuery);\n\n (function($) {\n\n // Imports ================================================================\n var kendo = window.kendo,\n ui = kendo.dataviz.ui,\n deepExtend = kendo.deepExtend;\n\n // Constants ==============================================================\n var BLACK = \"#000\",\n SANS = \"Arial,Helvetica,sans-serif\",\n SANS12 = \"12px \" + SANS,\n WHITE = \"#fff\";\n\n var chartBaseTheme = kendo.dataviz.chartBaseTheme({\n gradients: true\n });\n\n var gaugeBaseTheme = {\n scale: {\n labels: {\n font: SANS12\n }\n }\n };\n\n var diagramBaseTheme = {\n shapeDefaults: {\n hover: {\n opacity: 0.2\n },\n stroke: {\n width: 0\n }\n },\n editable: {\n resize: {\n handles: {\n width: 7,\n height: 7\n }\n }\n },\n selectable: {\n stroke: {\n width: 1,\n dashType: \"dot\"\n }\n },\n connectionDefaults: {\n stroke: {\n width: 2\n },\n selection: {\n handles: {\n width: 8,\n height: 8\n }\n },\n editable: {\n tools: [\"edit\", \"delete\"]\n }\n }\n };\n\n var themes = ui.themes,\n registerTheme = ui.registerTheme = function(themeName, options) {\n var result = {};\n // Apply base theme\n result.chart = deepExtend({}, chartBaseTheme, options.chart);\n result.gauge = deepExtend({}, gaugeBaseTheme, options.gauge);\n result.diagram = deepExtend({}, diagramBaseTheme, options.diagram);\n result.treeMap = deepExtend({}, options.treeMap);\n\n // Copy the line/area chart settings for their vertical counterparts\n var defaults = result.chart.seriesDefaults;\n defaults.verticalLine = deepExtend({}, defaults.line);\n defaults.verticalArea = deepExtend({}, defaults.area);\n defaults.rangeArea = deepExtend({}, defaults.area);\n defaults.verticalRangeArea = deepExtend({}, defaults.rangeArea);\n defaults.verticalBoxPlot = deepExtend({}, defaults.boxPlot);\n defaults.polarArea = deepExtend({}, defaults.radarArea);\n defaults.polarLine = deepExtend({}, defaults.radarLine);\n\n themes[themeName] = result;\n };\n\n registerTheme(\"black\", {\n chart: {\n title: {\n color: WHITE\n },\n subtitle: {\n color: WHITE\n },\n legend: {\n labels: {\n color: WHITE\n },\n inactiveItems: {\n labels: {\n color: \"#919191\"\n },\n markers: {\n color: \"#919191\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: WHITE\n },\n errorBars: {\n color: WHITE\n },\n notes: {\n icon: {\n background: \"#3b3b3b\",\n border: {\n color: \"#8e8e8e\"\n }\n },\n label: {\n color: WHITE\n },\n line: {\n color: \"#8e8e8e\"\n }\n },\n pie: {\n overlay: {\n gradient: \"sharpBevel\"\n }\n },\n donut: {\n overlay: {\n gradient: \"sharpGlass\"\n }\n },\n line: {\n markers: {\n background: \"#3d3d3d\"\n }\n },\n scatter: {\n markers: {\n background: \"#3d3d3d\"\n }\n },\n scatterLine: {\n markers: {\n background: \"#3d3d3d\"\n }\n },\n waterfall: {\n line: {\n color: \"#8e8e8e\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#8e8e8e\"\n }\n },\n candlestick: {\n downColor: \"#555\",\n line: {\n color: WHITE\n },\n border: {\n _brightness: 1.5,\n opacity: 1\n },\n highlight: {\n border: {\n color: WHITE,\n opacity: 0.2\n }\n }\n },\n ohlc: {\n line: {\n color: WHITE\n }\n }\n },\n chartArea: {\n background: \"#3d3d3d\"\n },\n seriesColors: [\"#0081da\", \"#3aafff\", \"#99c900\", \"#ffeb3d\", \"#b20753\", \"#ff4195\"],\n axisDefaults: {\n line: {\n color: \"#8e8e8e\"\n },\n labels: {\n color: WHITE\n },\n majorGridLines: {\n color: \"#545454\"\n },\n minorGridLines: {\n color: \"#454545\"\n },\n title: {\n color: WHITE\n },\n crosshair: {\n color: \"#8e8e8e\"\n },\n notes: {\n icon: {\n background: \"#3b3b3b\",\n border: {\n color: \"#8e8e8e\"\n }\n },\n label: {\n color: WHITE\n },\n line: {\n color: \"#8e8e8e\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#0070e4\"\n },\n scale: {\n rangePlaceholderColor: \"#1d1d1d\",\n labels: {\n color: WHITE\n },\n minorTicks: {\n color: WHITE\n },\n majorTicks: {\n color: WHITE\n },\n line: {\n color: WHITE\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#0066cc\"\n },\n connectorDefaults: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#384049\"\n },\n hover: {\n fill: {\n color: \"#3d3d3d\"\n },\n stroke: {\n color: \"#efefef\"\n }\n }\n },\n content: {\n color: WHITE\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: \"#3d3d3d\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: WHITE\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: WHITE\n },\n fill: {\n color: WHITE\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: WHITE\n }\n },\n connectionDefaults: {\n stroke: {\n color: WHITE\n },\n content: {\n color: WHITE\n },\n selection: {\n handles: {\n fill: {\n color: \"#3d3d3d\"\n },\n stroke: {\n color: \"#efefef\"\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#0081da\", \"#314b5c\"],\n [\"#3aafff\", \"#3c5464\"],\n [\"#99c900\", \"#4f5931\"],\n [\"#ffeb3d\", \"#64603d\"],\n [\"#b20753\", \"#543241\"],\n [\"#ff4195\", \"#643e4f\"]]\n }\n });\n\n registerTheme(\"blueopal\", {\n chart: {\n title: {\n color: \"#293135\"\n },\n subtitle: {\n color: \"#293135\"\n },\n legend: {\n labels: {\n color: \"#293135\"\n },\n inactiveItems: {\n labels: {\n color: \"#27A5BA\"\n },\n markers: {\n color: \"#27A5BA\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: BLACK,\n background: WHITE,\n opacity: 0.5\n },\n errorBars: {\n color: \"#293135\"\n },\n candlestick: {\n downColor: \"#c4d0d5\",\n line: {\n color: \"#9aabb2\"\n }\n },\n waterfall: {\n line: {\n color: \"#9aabb2\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#9aabb2\"\n }\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#9aabb2\"\n }\n },\n label: {\n color: \"#293135\"\n },\n line: {\n color: \"#9aabb2\"\n }\n }\n },\n seriesColors: [\"#0069a5\", \"#0098ee\", \"#7bd2f6\", \"#ffb800\", \"#ff8517\", \"#e34a00\"],\n axisDefaults: {\n line: {\n color: \"#9aabb2\"\n },\n labels: {\n color: \"#293135\"\n },\n majorGridLines: {\n color: \"#c4d0d5\"\n },\n minorGridLines: {\n color: \"#edf1f2\"\n },\n title: {\n color: \"#293135\"\n },\n crosshair: {\n color: \"#9aabb2\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#9aabb2\"\n }\n },\n label: {\n color: \"#293135\"\n },\n line: {\n color: \"#9aabb2\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#005c83\"\n },\n scale: {\n rangePlaceholderColor: \"#daecf4\",\n\n labels: {\n color: \"#293135\"\n },\n minorTicks: {\n color: \"#293135\"\n },\n majorTicks: {\n color: \"#293135\"\n },\n line: {\n color: \"#293135\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#7ec6e3\"\n },\n connectorDefaults: {\n fill: {\n color: \"#003f59\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#003f59\"\n }\n }\n },\n content: {\n color: \"#293135\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#003f59\"\n },\n hover: {\n fill: {\n color: \"#003f59\"\n },\n stroke: {\n color: \"#003f59\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#003f59\"\n },\n fill: {\n color: \"#003f59\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#003f59\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#003f59\"\n },\n content: {\n color: \"#293135\"\n },\n selection: {\n handles: {\n fill: {\n color: \"#3d3d3d\"\n },\n stroke: {\n color: \"#efefef\"\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#0069a5\", \"#bad7e7\"],\n [\"#0098ee\", \"#b9e0f5\"],\n [\"#7bd2f6\", \"#ceeaf6\"],\n [\"#ffb800\", \"#e6e3c4\"],\n [\"#ff8517\", \"#e4d8c8\"],\n [\"#e34a00\", \"#ddccc2\"]\n ]\n }\n });\n\n registerTheme(\"highcontrast\", {\n chart: {\n title: {\n color: \"#ffffff\"\n },\n subtitle: {\n color: \"#ffffff\"\n },\n legend: {\n labels: {\n color: \"#ffffff\"\n },\n inactiveItems: {\n labels: {\n color: \"#66465B\"\n },\n markers: {\n color: \"#66465B\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: \"#ffffff\"\n },\n errorBars: {\n color: \"#ffffff\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#ffffff\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: \"#ffffff\"\n }\n },\n pie: {\n overlay: {\n gradient: \"sharpGlass\"\n }\n },\n donut: {\n overlay: {\n gradient: \"sharpGlass\"\n }\n },\n line: {\n markers: {\n background: \"#2c232b\"\n }\n },\n scatter: {\n markers: {\n background: \"#2c232b\"\n }\n },\n scatterLine: {\n markers: {\n background: \"#2c232b\"\n }\n },\n area: {\n opacity: 0.5\n },\n waterfall: {\n line: {\n color: \"#ffffff\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#ffffff\"\n }\n },\n candlestick: {\n downColor: \"#664e62\",\n line: {\n color: \"#ffffff\"\n },\n border: {\n _brightness: 1.5,\n opacity: 1\n },\n highlight: {\n border: {\n color: \"#ffffff\",\n opacity: 1\n }\n }\n },\n ohlc: {\n line: {\n color: \"#ffffff\"\n }\n }\n },\n chartArea: {\n background: \"#2c232b\"\n },\n seriesColors: [\"#a7008f\", \"#ffb800\", \"#3aafff\", \"#99c900\", \"#b20753\", \"#ff4195\"],\n axisDefaults: {\n line: {\n color: \"#ffffff\"\n },\n labels: {\n color: \"#ffffff\"\n },\n majorGridLines: {\n color: \"#664e62\"\n },\n minorGridLines: {\n color: \"#4f394b\"\n },\n title: {\n color: \"#ffffff\"\n },\n crosshair: {\n color: \"#ffffff\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#ffffff\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: \"#ffffff\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#a7008f\"\n },\n scale: {\n rangePlaceholderColor: \"#2c232b\",\n\n labels: {\n color: \"#ffffff\"\n },\n minorTicks: {\n color: \"#2c232b\"\n },\n majorTicks: {\n color: \"#664e62\"\n },\n line: {\n color: \"#ffffff\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#a7018f\"\n },\n connectorDefaults: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#2c232b\"\n },\n hover: {\n fill: {\n color: \"#2c232b\"\n },\n stroke: {\n color: WHITE\n }\n }\n },\n content: {\n color: WHITE\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: \"#2c232b\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: WHITE\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: WHITE\n },\n fill: {\n color: WHITE\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: WHITE\n }\n },\n connectionDefaults: {\n stroke: {\n color: WHITE\n },\n content: {\n color: WHITE\n },\n selection: {\n handles: {\n fill: {\n color: \"#2c232b\"\n },\n stroke: {\n color: WHITE\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#a7008f\", \"#451c3f\"],\n [\"#ffb800\", \"#564122\"],\n [\"#3aafff\", \"#2f3f55\"],\n [\"#99c900\", \"#424422\"],\n [\"#b20753\", \"#471d33\"],\n [\"#ff4195\", \"#562940\"]\n ]\n }\n });\n\n registerTheme(\"default\", {\n chart: {\n title: {\n color: \"#8e8e8e\"\n },\n subtitle: {\n color: \"#8e8e8e\"\n },\n legend: {\n labels: {\n color: \"#232323\"\n },\n inactiveItems: {\n labels: {\n color: \"#919191\"\n },\n markers: {\n color: \"#919191\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: BLACK,\n background: WHITE,\n opacity: 0.5\n },\n errorBars: {\n color: \"#232323\"\n },\n candlestick: {\n downColor: \"#dedede\",\n line: {\n color: \"#8d8d8d\"\n }\n },\n waterfall: {\n line: {\n color: \"#8e8e8e\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#8e8e8e\"\n }\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#8e8e8e\"\n }\n },\n label: {\n color: \"#232323\"\n },\n line: {\n color: \"#8e8e8e\"\n }\n }\n },\n seriesColors: [\"#ff6800\", \"#a0a700\", \"#ff8d00\", \"#678900\", \"#ffb53c\", \"#396000\"],\n axisDefaults: {\n line: {\n color: \"#8e8e8e\"\n },\n labels: {\n color: \"#232323\"\n },\n minorGridLines: {\n color: \"#f0f0f0\"\n },\n majorGridLines: {\n color: \"#dfdfdf\"\n },\n title: {\n color: \"#232323\"\n },\n crosshair: {\n color: \"#8e8e8e\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#8e8e8e\"\n }\n },\n label: {\n color: \"#232323\"\n },\n line: {\n color: \"#8e8e8e\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#ea7001\"\n },\n scale: {\n rangePlaceholderColor: \"#dedede\",\n\n labels: {\n color: \"#2e2e2e\"\n },\n minorTicks: {\n color: \"#2e2e2e\"\n },\n majorTicks: {\n color: \"#2e2e2e\"\n },\n line: {\n color: \"#2e2e2e\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#e15613\"\n },\n connectorDefaults: {\n fill: {\n color: \"#282828\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#282828\"\n }\n }\n },\n content: {\n color: \"#2e2e2e\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#282828\"\n },\n hover: {\n fill: {\n color: \"#282828\"\n },\n stroke: {\n color: \"#282828\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#282828\"\n },\n fill: {\n color: \"#282828\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#a7018f\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#282828\"\n },\n content: {\n color: \"#2e2e2e\"\n },\n selection: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#282828\"\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#ff6800\", \"#edcfba\"],\n [\"#a0a700\", \"#dadcba\"],\n [\"#ff8d00\", \"#edd7ba\"],\n [\"#678900\", \"#cfd6ba\"],\n [\"#ffb53c\", \"#eddfc6\"],\n [\"#396000\", \"#c6ceba\"]\n ]\n }\n });\n\n registerTheme(\"silver\", {\n chart: {\n title: {\n color: \"#4e5968\"\n },\n subtitle: {\n color: \"#4e5968\"\n },\n legend: {\n labels: {\n color: \"#4e5968\"\n },\n inactiveItems: {\n labels: {\n color: \"#B1BCC8\"\n },\n markers: {\n color: \"#B1BCC8\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: \"#293135\",\n background: \"#eaeaec\",\n opacity: 0.5\n },\n errorBars: {\n color: \"#4e5968\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#4e5968\"\n }\n },\n label: {\n color: \"#4e5968\"\n },\n line: {\n color: \"#4e5968\"\n }\n },\n line: {\n markers: {\n background: \"#eaeaec\"\n }\n },\n scatter: {\n markers: {\n background: \"#eaeaec\"\n }\n },\n scatterLine: {\n markers: {\n background: \"#eaeaec\"\n }\n },\n pie: {\n connectors: {\n color: \"#A6B1C0\"\n }\n },\n donut: {\n connectors: {\n color: \"#A6B1C0\"\n }\n },\n waterfall: {\n line: {\n color: \"#a6b1c0\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#a6b1c0\"\n }\n },\n candlestick: {\n downColor: \"#a6afbe\"\n }\n },\n chartArea: {\n background: \"#eaeaec\"\n },\n seriesColors: [\"#007bc3\", \"#76b800\", \"#ffae00\", \"#ef4c00\", \"#a419b7\", \"#430B62\"],\n axisDefaults: {\n line: {\n color: \"#a6b1c0\"\n },\n labels: {\n color: \"#4e5968\"\n },\n majorGridLines: {\n color: \"#dcdcdf\"\n },\n minorGridLines: {\n color: \"#eeeeef\"\n },\n title: {\n color: \"#4e5968\"\n },\n crosshair: {\n color: \"#a6b1c0\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#4e5968\"\n }\n },\n label: {\n color: \"#4e5968\"\n },\n line: {\n color: \"#4e5968\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#0879c0\"\n },\n scale: {\n rangePlaceholderColor: \"#f3f3f4\",\n\n labels: {\n color: \"#515967\"\n },\n minorTicks: {\n color: \"#515967\"\n },\n majorTicks: {\n color: \"#515967\"\n },\n line: {\n color: \"#515967\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#1c82c2\"\n },\n connectorDefaults: {\n fill: {\n color: \"#515967\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#282828\"\n }\n }\n },\n content: {\n color: \"#515967\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#515967\"\n },\n hover: {\n fill: {\n color: \"#515967\"\n },\n stroke: {\n color: \"#515967\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#515967\"\n },\n fill: {\n color: \"#515967\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#515967\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#515967\"\n },\n content: {\n color: \"#515967\"\n },\n selection: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#515967\"\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#007bc3\", \"#c2dbea\"],\n [\"#76b800\", \"#dae7c3\"],\n [\"#ffae00\", \"#f5e5c3\"],\n [\"#ef4c00\", \"#f2d2c3\"],\n [\"#a419b7\", \"#e3c7e8\"],\n [\"#430b62\", \"#d0c5d7\"]\n ]\n }\n });\n\n registerTheme(\"metro\", {\n chart: {\n title: {\n color: \"#777777\"\n },\n subtitle: {\n color: \"#777777\"\n },\n legend: {\n labels: {\n color: \"#777777\"\n },\n inactiveItems: {\n labels: {\n color: \"#CBCBCB\"\n },\n markers: {\n color: \"#CBCBCB\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: BLACK\n },\n errorBars: {\n color: \"#777777\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#777777\"\n }\n },\n label: {\n color: \"#777777\"\n },\n line: {\n color: \"#777777\"\n }\n },\n candlestick: {\n downColor: \"#c7c7c7\",\n line: {\n color: \"#787878\"\n }\n },\n waterfall: {\n line: {\n color: \"#c7c7c7\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#c7c7c7\"\n }\n },\n overlay: {\n gradient: \"none\"\n },\n border: {\n _brightness: 1\n }\n },\n seriesColors: [\"#8ebc00\", \"#309b46\", \"#25a0da\", \"#ff6900\", \"#e61e26\", \"#d8e404\", \"#16aba9\", \"#7e51a1\", \"#313131\", \"#ed1691\"],\n axisDefaults: {\n line: {\n color: \"#c7c7c7\"\n },\n labels: {\n color: \"#777777\"\n },\n minorGridLines: {\n color: \"#c7c7c7\"\n },\n majorGridLines: {\n color: \"#c7c7c7\"\n },\n title: {\n color: \"#777777\"\n },\n crosshair: {\n color: \"#c7c7c7\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#777777\"\n }\n },\n label: {\n color: \"#777777\"\n },\n line: {\n color: \"#777777\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#8ebc00\"\n },\n scale: {\n rangePlaceholderColor: \"#e6e6e6\",\n\n labels: {\n color: \"#777\"\n },\n minorTicks: {\n color: \"#777\"\n },\n majorTicks: {\n color: \"#777\"\n },\n line: {\n color: \"#777\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#8ebc00\"\n },\n connectorDefaults: {\n fill: {\n color: BLACK\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: BLACK\n }\n }\n },\n content: {\n color: \"#777\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#787878\"\n },\n hover: {\n fill: {\n color: \"#787878\"\n },\n stroke: {\n color: \"#787878\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#787878\"\n },\n fill: {\n color: \"#787878\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#515967\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#787878\"\n },\n content: {\n color: \"#777\"\n },\n selection: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#787878\"\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#8ebc00\", \"#e8f2cc\"],\n [\"#309b46\", \"#d6ebda\"],\n [\"#25a0da\", \"#d3ecf8\"],\n [\"#ff6900\", \"#ffe1cc\"],\n [\"#e61e26\", \"#fad2d4\"],\n [\"#d8e404\", \"#f7facd\"],\n [\"#16aba9\", \"#d0eeee\"],\n [\"#7e51a1\", \"#e5dcec\"],\n [\"#313131\", \"#d6d6d6\"],\n [\"#ed1691\", \"#fbd0e9\"]\n ]\n }\n });\n\n registerTheme(\"metroblack\", {\n chart: {\n title: {\n color: \"#ffffff\"\n },\n subtitle: {\n color: \"#ffffff\"\n },\n legend: {\n labels: {\n color: \"#ffffff\"\n },\n inactiveItems: {\n labels: {\n color: \"#797979\"\n },\n markers: {\n color: \"#797979\"\n }\n }\n },\n seriesDefaults: {\n border: {\n _brightness: 1\n },\n labels: {\n color: \"#ffffff\"\n },\n errorBars: {\n color: \"#ffffff\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#cecece\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: \"#cecece\"\n }\n },\n line: {\n markers: {\n background: \"#0e0e0e\"\n }\n },\n bubble: {\n opacity: 0.6\n },\n scatter: {\n markers: {\n background: \"#0e0e0e\"\n }\n },\n scatterLine: {\n markers: {\n background: \"#0e0e0e\"\n }\n },\n candlestick: {\n downColor: \"#828282\",\n line: {\n color: \"#ffffff\"\n }\n },\n waterfall: {\n line: {\n color: \"#cecece\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#cecece\"\n }\n },\n overlay: {\n gradient: \"none\"\n }\n },\n chartArea: {\n background: \"#0e0e0e\"\n },\n seriesColors: [\"#00aba9\", \"#309b46\", \"#8ebc00\", \"#ff6900\", \"#e61e26\", \"#d8e404\", \"#25a0da\", \"#7e51a1\", \"#313131\", \"#ed1691\"],\n axisDefaults: {\n line: {\n color: \"#cecece\"\n },\n labels: {\n color: \"#ffffff\"\n },\n minorGridLines: {\n color: \"#2d2d2d\"\n },\n majorGridLines: {\n color: \"#333333\"\n },\n title: {\n color: \"#ffffff\"\n },\n crosshair: {\n color: \"#cecece\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#cecece\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: \"#cecece\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#00aba9\"\n },\n scale: {\n rangePlaceholderColor: \"#2d2d2d\",\n\n labels: {\n color: \"#ffffff\"\n },\n minorTicks: {\n color: \"#333333\"\n },\n majorTicks: {\n color: \"#cecece\"\n },\n line: {\n color: \"#cecece\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#00aba9\"\n },\n connectorDefaults: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#0e0e0e\"\n },\n hover: {\n fill: {\n color: \"#0e0e0e\"\n },\n stroke: {\n color: WHITE\n }\n }\n },\n content: {\n color: WHITE\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: \"#0e0e0e\"\n },\n stroke: {\n color: \"#787878\"\n },\n hover: {\n fill: {\n color: \"#787878\"\n },\n stroke: {\n color: \"#787878\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: WHITE\n },\n fill: {\n color: WHITE\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#787878\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: WHITE\n },\n content: {\n color: WHITE\n },\n selection: {\n handles: {\n fill: {\n color: \"#0e0e0e\"\n },\n stroke: {\n color: WHITE\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#00aba9\", \"#0b2d2d\"],\n [\"#309b46\", \"#152a19\"],\n [\"#8ebc00\", \"#28310b\"],\n [\"#ff6900\", \"#3e200b\"],\n [\"#e61e26\", \"#391113\"],\n [\"#d8e404\", \"#36390c\"],\n [\"#25a0da\", \"#132b37\"],\n [\"#7e51a1\", \"#241b2b\"],\n [\"#313131\", \"#151515\"],\n [\"#ed1691\", \"#3b1028\"]\n ]\n }\n });\n\n registerTheme(\"moonlight\", {\n chart: {\n title: {\n color: \"#ffffff\"\n },\n subtitle: {\n color: \"#ffffff\"\n },\n legend: {\n labels: {\n color: \"#ffffff\"\n },\n inactiveItems: {\n labels: {\n color: \"#A1A7AB\"\n },\n markers: {\n color: \"#A1A7AB\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: \"#ffffff\"\n },\n errorBars: {\n color: \"#ffffff\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#8c909e\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: \"#8c909e\"\n }\n },\n pie: {\n overlay: {\n gradient: \"sharpBevel\"\n }\n },\n donut: {\n overlay: {\n gradient: \"sharpGlass\"\n }\n },\n line: {\n markers: {\n background: \"#212a33\"\n }\n },\n bubble: {\n opacity: 0.6\n },\n scatter: {\n markers: {\n background: \"#212a33\"\n }\n },\n scatterLine: {\n markers: {\n background: \"#212a33\"\n }\n },\n area: {\n opacity: 0.3\n },\n candlestick: {\n downColor: \"#757d87\",\n line: {\n color: \"#ea9d06\"\n },\n border: {\n _brightness: 1.5,\n opacity: 1\n },\n highlight: {\n border: {\n color: WHITE,\n opacity: 0.2\n }\n }\n },\n waterfall: {\n line: {\n color: \"#8c909e\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#8c909e\"\n }\n },\n ohlc: {\n line: {\n color: \"#ea9d06\"\n }\n }\n },\n chartArea: {\n background: \"#212a33\"\n },\n seriesColors: [\"#ffca08\", \"#ff710f\", \"#ed2e24\", \"#ff9f03\", \"#e13c02\", \"#a00201\"],\n axisDefaults: {\n line: {\n color: \"#8c909e\"\n },\n minorTicks: {\n color: \"#8c909e\"\n },\n majorTicks: {\n color: \"#8c909e\"\n },\n labels: {\n color: \"#ffffff\"\n },\n majorGridLines: {\n color: \"#3e424d\"\n },\n minorGridLines: {\n color: \"#2f3640\"\n },\n title: {\n color: \"#ffffff\"\n },\n crosshair: {\n color: \"#8c909e\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#8c909e\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: \"#8c909e\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#f4af03\"\n },\n scale: {\n rangePlaceholderColor: \"#2f3640\",\n\n labels: {\n color: WHITE\n },\n minorTicks: {\n color: \"#8c909e\"\n },\n majorTicks: {\n color: \"#8c909e\"\n },\n line: {\n color: \"#8c909e\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#f3ae03\"\n },\n connectorDefaults: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#414550\"\n },\n hover: {\n fill: {\n color: \"#414550\"\n },\n stroke: {\n color: WHITE\n }\n }\n },\n content: {\n color: WHITE\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: \"#414550\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: WHITE\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: WHITE\n },\n fill: {\n color: WHITE\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: WHITE\n }\n },\n connectionDefaults: {\n stroke: {\n color: WHITE\n },\n content: {\n color: WHITE\n },\n selection: {\n handles: {\n fill: {\n color: \"#414550\"\n },\n stroke: {\n color: WHITE\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#ffca08\", \"#4e4b2b\"],\n [\"#ff710f\", \"#4e392d\"],\n [\"#ed2e24\", \"#4b2c31\"],\n [\"#ff9f03\", \"#4e422a\"],\n [\"#e13c02\", \"#482e2a\"],\n [\"#a00201\", \"#3b232a\"]\n ]\n }\n });\n\n registerTheme(\"uniform\", {\n chart: {\n title: {\n color: \"#686868\"\n },\n subtitle: {\n color: \"#686868\"\n },\n legend: {\n labels: {\n color: \"#686868\"\n },\n inactiveItems: {\n labels: {\n color: \"#B6B6B6\"\n },\n markers: {\n color: \"#B6B6B6\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: \"#686868\"\n },\n errorBars: {\n color: \"#686868\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#9e9e9e\"\n }\n },\n label: {\n color: \"#686868\"\n },\n line: {\n color: \"#9e9e9e\"\n }\n },\n pie: {\n overlay: {\n gradient: \"sharpBevel\"\n }\n },\n donut: {\n overlay: {\n gradient: \"sharpGlass\"\n }\n },\n line: {\n markers: {\n background: \"#ffffff\"\n }\n },\n bubble: {\n opacity: 0.6\n },\n scatter: {\n markers: {\n background: \"#ffffff\"\n }\n },\n scatterLine: {\n markers: {\n background: \"#ffffff\"\n }\n },\n area: {\n opacity: 0.3\n },\n candlestick: {\n downColor: \"#cccccc\",\n line: {\n color: \"#cccccc\"\n },\n border: {\n _brightness: 1.5,\n opacity: 1\n },\n highlight: {\n border: {\n color: \"#cccccc\",\n opacity: 0.2\n }\n }\n },\n waterfall: {\n line: {\n color: \"#9e9e9e\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#9e9e9e\"\n }\n },\n ohlc: {\n line: {\n color: \"#cccccc\"\n }\n }\n },\n chartArea: {\n background: \"#ffffff\"\n },\n seriesColors: [\"#527aa3\", \"#6f91b3\", \"#8ca7c2\", \"#a8bdd1\", \"#c5d3e0\", \"#e2e9f0\"],\n axisDefaults: {\n line: {\n color: \"#9e9e9e\"\n },\n minorTicks: {\n color: \"#aaaaaa\"\n },\n majorTicks: {\n color: \"#888888\"\n },\n labels: {\n color: \"#686868\"\n },\n majorGridLines: {\n color: \"#dadada\"\n },\n minorGridLines: {\n color: \"#e7e7e7\"\n },\n title: {\n color: \"#686868\"\n },\n crosshair: {\n color: \"#9e9e9e\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#9e9e9e\"\n }\n },\n label: {\n color: \"#686868\"\n },\n line: {\n color: \"#9e9e9e\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#527aa3\"\n },\n scale: {\n rangePlaceholderColor: \"#e7e7e7\",\n\n labels: {\n color: \"#686868\"\n },\n minorTicks: {\n color: \"#aaaaaa\"\n },\n majorTicks: {\n color: \"#888888\"\n },\n line: {\n color: \"#9e9e9e\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#d1d1d1\"\n },\n connectorDefaults: {\n fill: {\n color: \"#686868\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#686868\"\n }\n }\n },\n content: {\n color: \"#686868\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#686868\"\n },\n hover: {\n fill: {\n color: \"#686868\"\n },\n stroke: {\n color: \"#686868\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#686868\"\n },\n fill: {\n color: \"#686868\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#686868\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#686868\"\n },\n content: {\n color: \"#686868\"\n },\n selection: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#686868\"\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#527aa3\", \"#d0d8e1\"],\n [\"#6f91b3\", \"#d6dde4\"],\n [\"#8ca7c2\", \"#dce1e7\"],\n [\"#a8bdd1\", \"#e2e6ea\"],\n [\"#c5d3e0\", \"#e7eaed\"],\n [\"#e2e9f0\", \"#edeff0\"]\n ]\n }\n });\n\n registerTheme(\"bootstrap\", {\n chart: {\n title: {\n color: \"#333333\"\n },\n subtitle: {\n color: \"#333333\"\n },\n legend: {\n labels: {\n color: \"#333333\"\n },\n inactiveItems: {\n labels: {\n color: \"#999999\"\n },\n markers: {\n color: \"#9A9A9A\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: \"#333333\"\n },\n overlay: {\n gradient: \"none\"\n },\n errorBars: {\n color: \"#343434\"\n },\n notes: {\n icon: {\n background: \"#000000\",\n border: {\n color: \"#000000\"\n }\n },\n label: {\n color: \"#333333\"\n },\n line: {\n color: \"#000000\"\n }\n },\n pie: {\n overlay: {\n gradient: \"none\"\n }\n },\n donut: {\n overlay: {\n gradient: \"none\"\n }\n },\n line: {\n markers: {\n background: \"#ffffff\"\n }\n },\n bubble: {\n opacity: 0.6\n },\n scatter: {\n markers: {\n background: \"#ffffff\"\n }\n },\n scatterLine: {\n markers: {\n background: \"#ffffff\"\n }\n },\n area: {\n opacity: 0.8\n },\n candlestick: {\n downColor: \"#d0d0d0\",\n line: {\n color: \"#333333\"\n },\n border: {\n _brightness: 1.5,\n opacity: 1\n },\n highlight: {\n border: {\n color: \"#b8b8b8\",\n opacity: 0.2\n }\n }\n },\n waterfall: {\n line: {\n color: \"#cccccc\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#cccccc\"\n }\n },\n ohlc: {\n line: {\n color: \"#333333\"\n }\n }\n },\n chartArea: {\n background: \"#ffffff\"\n },\n seriesColors: [\"#428bca\", \"#5bc0de\", \"#5cb85c\", \"#f2b661\", \"#e67d4a\", \"#da3b36\"],\n axisDefaults: {\n line: {\n color: \"#cccccc\"\n },\n minorTicks: {\n color: \"#ebebeb\"\n },\n majorTicks: {\n color: \"#cccccc\"\n },\n labels: {\n color: \"#333333\"\n },\n majorGridLines: {\n color: \"#cccccc\"\n },\n minorGridLines: {\n color: \"#ebebeb\"\n },\n title: {\n color: \"#333333\"\n },\n crosshair: {\n color: \"#000000\"\n },\n notes: {\n icon: {\n background: \"#000000\",\n border: {\n color: \"#000000\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: \"#000000\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#428bca\"\n },\n scale: {\n rangePlaceholderColor: \"#cccccc\",\n labels: {\n color: \"#333333\"\n },\n minorTicks: {\n color: \"#ebebeb\"\n },\n majorTicks: {\n color: \"#cccccc\"\n },\n line: {\n color: \"#cccccc\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#428bca\"\n },\n connectorDefaults: {\n fill: {\n color: \"#333333\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#333333\"\n }\n }\n },\n content: {\n color: \"#333333\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#333333\"\n },\n hover: {\n fill: {\n color: \"#333333\"\n },\n stroke: {\n color: \"#333333\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#333333\"\n },\n fill: {\n color: \"#333333\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#333333\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#c4c4c4\"\n },\n content: {\n color: \"#333333\"\n },\n selection: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#333333\"\n }\n },\n stroke: {\n color: \"#333333\"\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#428bca\", \"#d1e0ec\"],\n [\"#5bc0de\", \"#d6eaf0\"],\n [\"#5cb85c\", \"#d6e9d6\"],\n [\"#5cb85c\", \"#f4e8d7\"],\n [\"#e67d4a\", \"#f2ddd3\"],\n [\"#da3b36\", \"#f0d0cf\"]\n ]\n }\n });\n\n registerTheme(\"flat\", {\n chart: {\n title: {\n color: \"#4c5356\"\n },\n subtitle: {\n color: \"#4c5356\"\n },\n legend: {\n labels: {\n color: \"#4c5356\"\n },\n inactiveItems: {\n labels: {\n color: \"#CBCBCB\"\n },\n markers: {\n color: \"#CBCBCB\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: \"#4c5356\"\n },\n errorBars: {\n color: \"#4c5356\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#cdcdcd\"\n }\n },\n label: {\n color: \"#4c5356\"\n },\n line: {\n color: \"#cdcdcd\"\n }\n },\n candlestick: {\n downColor: \"#c7c7c7\",\n line: {\n color: \"#787878\"\n }\n },\n area: {\n opacity: 0.9\n },\n waterfall: {\n line: {\n color: \"#cdcdcd\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#cdcdcd\"\n }\n },\n overlay: {\n gradient: \"none\"\n },\n border: {\n _brightness: 1\n }\n },\n seriesColors: [\"#10c4b2\", \"#ff7663\", \"#ffb74f\", \"#a2df53\", \"#1c9ec4\", \"#ff63a5\", \"#1cc47b\"],\n axisDefaults: {\n line: {\n color: \"#cdcdcd\"\n },\n labels: {\n color: \"#4c5356\"\n },\n minorGridLines: {\n color: \"#cdcdcd\"\n },\n majorGridLines: {\n color: \"#cdcdcd\"\n },\n title: {\n color: \"#4c5356\"\n },\n crosshair: {\n color: \"#cdcdcd\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#cdcdcd\"\n }\n },\n label: {\n color: \"#4c5356\"\n },\n line: {\n color: \"#cdcdcd\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#10c4b2\"\n },\n scale: {\n rangePlaceholderColor: \"#cdcdcd\",\n\n labels: {\n color: \"#4c5356\"\n },\n minorTicks: {\n color: \"#4c5356\"\n },\n majorTicks: {\n color: \"#4c5356\"\n },\n line: {\n color: \"#4c5356\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#10c4b2\"\n },\n connectorDefaults: {\n fill: {\n color: \"#363940\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#363940\"\n }\n }\n },\n content: {\n color: \"#4c5356\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#363940\"\n },\n hover: {\n fill: {\n color: \"#363940\"\n },\n stroke: {\n color: \"#363940\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#363940\"\n },\n fill: {\n color: \"#363940\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#363940\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#cdcdcd\"\n },\n content: {\n color: \"#4c5356\"\n },\n selection: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#363940\"\n }\n },\n stroke: {\n color: \"#363940\"\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#10c4b2\", \"#cff3f0\"],\n [\"#ff7663\", \"#ffe4e0\"],\n [\"#ffb74f\", \"#fff1dc\"],\n [\"#a2df53\", \"#ecf9dd\"],\n [\"#1c9ec4\", \"#d2ecf3\"],\n [\"#ff63a5\", \"#ffe0ed\"],\n [\"#1cc47b\", \"#d2f3e5\"]\n ]\n }\n });\n\n\n registerTheme(\"material\", {\n chart: {\n title: {\n color: \"#444444\"\n },\n subtitle: {\n color: \"#444444\"\n },\n legend: {\n labels: {\n color: \"#444444\"\n },\n inactiveItems: {\n labels: {\n color: \"#CBCBCB\"\n },\n markers: {\n color: \"#CBCBCB\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: \"#444444\"\n },\n errorBars: {\n color: \"#444444\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#e5e5e5\"\n }\n },\n label: {\n color: \"#444444\"\n },\n line: {\n color: \"#e5e5e5\"\n }\n },\n candlestick: {\n downColor: \"#c7c7c7\",\n line: {\n color: \"#787878\"\n }\n },\n area: {\n opacity: 0.9\n },\n waterfall: {\n line: {\n color: \"#e5e5e5\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#e5e5e5\"\n }\n },\n overlay: {\n gradient: \"none\"\n },\n border: {\n _brightness: 1\n }\n },\n seriesColors: [\"#3f51b5\", \"#03a9f4\", \"#4caf50\", \"#f9ce1d\", \"#ff9800\", \"#ff5722\"],\n axisDefaults: {\n line: {\n color: \"#e5e5e5\"\n },\n labels: {\n color: \"#444444\"\n },\n minorGridLines: {\n color: \"#e5e5e5\"\n },\n majorGridLines: {\n color: \"#e5e5e5\"\n },\n title: {\n color: \"#444444\"\n },\n crosshair: {\n color: \"#7f7f7f\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#e5e5e5\"\n }\n },\n label: {\n color: \"#444444\"\n },\n line: {\n color: \"#e5e5e5\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#3f51b5\"\n },\n scale: {\n rangePlaceholderColor: \"#e5e5e5\",\n\n labels: {\n color: \"#444444\"\n },\n minorTicks: {\n color: \"#444444\"\n },\n majorTicks: {\n color: \"#444444\"\n },\n line: {\n color: \"#444444\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#3f51b5\"\n },\n connectorDefaults: {\n fill: {\n color: \"#7f7f7f\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#7f7f7f\"\n }\n }\n },\n content: {\n color: \"#444444\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#444444\"\n },\n hover: {\n fill: {\n color: \"#444444\"\n },\n stroke: {\n color: \"#444444\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#444444\"\n },\n fill: {\n color: \"#444444\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#444444\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#7f7f7f\"\n },\n content: {\n color: \"#444444\"\n },\n selection: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#444444\"\n }\n },\n stroke: {\n color: \"#444444\"\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#3f51b5\", \"#cff3f0\"],\n [\"#03a9f4\", \"#e5f6fe\"],\n [\"#4caf50\", \"#edf7ed\"],\n [\"#f9ce1d\", \"#fefae8\"],\n [\"#ff9800\", \"#fff4e5\"],\n [\"#ff5722\", \"#ffeee8\"]\n ]\n }\n });\n\n registerTheme(\"materialblack\", {\n chart: {\n title: {\n color: \"#fff\"\n },\n subtitle: {\n color: \"#fff\"\n },\n legend: {\n labels: {\n color: \"#fff\"\n },\n inactiveItems: {\n labels: {\n color: \"#CBCBCB\"\n },\n markers: {\n color: \"#CBCBCB\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: \"#fff\"\n },\n errorBars: {\n color: \"#fff\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#e5e5e5\"\n }\n },\n label: {\n color: \"#fff\"\n },\n line: {\n color: \"#e5e5e5\"\n }\n },\n candlestick: {\n downColor: \"#c7c7c7\",\n line: {\n color: \"#787878\"\n }\n },\n area: {\n opacity: 0.9\n },\n waterfall: {\n line: {\n color: \"#4d4d4d\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#4d4d4d\"\n }\n },\n overlay: {\n gradient: \"none\"\n },\n border: {\n _brightness: 1\n }\n },\n chartArea: {\n background: \"#1c1c1c\"\n },\n seriesColors: [\"#3f51b5\", \"#03a9f4\", \"#4caf50\", \"#f9ce1d\", \"#ff9800\", \"#ff5722\"],\n axisDefaults: {\n line: {\n color: \"#4d4d4d\"\n },\n labels: {\n color: \"#fff\"\n },\n minorGridLines: {\n color: \"#4d4d4d\"\n },\n majorGridLines: {\n color: \"#4d4d4d\"\n },\n title: {\n color: \"#fff\"\n },\n crosshair: {\n color: \"#7f7f7f\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#4d4d4d\"\n }\n },\n label: {\n color: \"#fff\"\n },\n line: {\n color: \"#4d4d4d\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#3f51b5\"\n },\n scale: {\n rangePlaceholderColor: \"#4d4d4d\",\n\n labels: {\n color: \"#fff\"\n },\n minorTicks: {\n color: \"#fff\"\n },\n majorTicks: {\n color: \"#fff\"\n },\n line: {\n color: \"#fff\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#3f51b5\"\n },\n connectorDefaults: {\n fill: {\n color: \"#7f7f7f\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#7f7f7f\"\n }\n }\n },\n content: {\n color: \"#fff\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#fff\"\n },\n hover: {\n fill: {\n color: \"#fff\"\n },\n stroke: {\n color: \"#fff\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#fff\"\n },\n fill: {\n color: \"#fff\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#fff\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#7f7f7f\"\n },\n content: {\n color: \"#fff\"\n },\n selection: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#fff\"\n }\n },\n stroke: {\n color: \"#fff\"\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#3f51b5\", \"#cff3f0\"],\n [\"#03a9f4\", \"#e5f6fe\"],\n [\"#4caf50\", \"#edf7ed\"],\n [\"#f9ce1d\", \"#fefae8\"],\n [\"#ff9800\", \"#fff4e5\"],\n [\"#ff5722\", \"#ffeee8\"]\n ]\n }\n });\n\n (function() {\n var TEXT = \"#333333\";\n var INACTIVE = \"#7f7f7f\";\n var INACTIVE_SHAPE = \"#bdbdbd\";\n var AXIS = \"#c8c8c8\";\n var AXIS_MINOR = \"#dddddd\";\n var SERIES = [\"#008fd3\", \"#99d101\", \"#f39b02\", \"#f05662\", \"#c03c53\", \"#acacac\"];\n var SERIES_LIGHT = [\"#cbe8f5\", \"#eaf5cb\", \"#fceacc\", \"#fbdcdf\", \"#f2d7dc\", \"#eeeeee\"];\n var PRIMARY = SERIES[0];\n var DIAGRAM_HOVER = WHITE;\n\n function noteStyle() {\n return {\n icon: {\n background: \"#007cc0\",\n border: {\n color: \"#007cc0\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: AXIS\n }\n };\n }\n\n registerTheme(\"fiori\", {\n chart: {\n title: {\n color: TEXT\n },\n subtitle: {\n color: TEXT\n },\n legend: {\n labels: {\n color: TEXT\n },\n inactiveItems: {\n labels: {\n color: INACTIVE\n },\n markers: {\n color: INACTIVE\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: TEXT\n },\n errorBars: {\n color: TEXT\n },\n notes: noteStyle(),\n candlestick: {\n downColor: AXIS,\n line: {\n color: INACTIVE_SHAPE\n }\n },\n area: {\n opacity: 0.8\n },\n waterfall: {\n line: {\n color: AXIS\n }\n },\n horizontalWaterfall: {\n line: {\n color: AXIS\n }\n },\n overlay: {\n gradient: \"none\"\n },\n border: {\n _brightness: 1\n }\n },\n seriesColors: SERIES,\n axisDefaults: {\n line: {\n color: AXIS\n },\n labels: {\n color: TEXT\n },\n minorGridLines: {\n color: AXIS_MINOR\n },\n majorGridLines: {\n color: AXIS\n },\n title: {\n color: TEXT\n },\n crosshair: {\n color: INACTIVE\n },\n notes: noteStyle()\n }\n },\n gauge: {\n pointer: {\n color: PRIMARY\n },\n scale: {\n rangePlaceholderColor: AXIS,\n labels: {\n color: TEXT\n },\n minorTicks: {\n color: TEXT\n },\n majorTicks: {\n color: TEXT\n },\n line: {\n color: TEXT\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: PRIMARY\n },\n connectorDefaults: {\n fill: {\n color: TEXT\n },\n stroke: {\n color: DIAGRAM_HOVER\n },\n hover: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: TEXT\n }\n }\n },\n content: {\n color: TEXT\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: INACTIVE_SHAPE\n },\n hover: {\n fill: {\n color: INACTIVE_SHAPE\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: INACTIVE_SHAPE\n },\n fill: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: INACTIVE_SHAPE\n }\n },\n connectionDefaults: {\n stroke: {\n color: INACTIVE_SHAPE\n },\n content: {\n color: INACTIVE_SHAPE\n },\n selection: {\n handles: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n treeMap: {\n colors: fuse(SERIES, SERIES_LIGHT)\n }\n });\n })();\n\n (function() {\n var TEXT = \"#4e4e4e\";\n var INACTIVE = \"#7f7f7f\";\n var INACTIVE_SHAPE = \"#bdbdbd\";\n var AXIS = \"#c8c8c8\";\n var AXIS_MINOR = \"#e5e5e5\";\n var SERIES = [\"#0072c6\", \"#5db2ff\", \"#008a17\", \"#82ba00\", \"#ff8f32\", \"#ac193d\"];\n var SERIES_LIGHT = [\"#cbe2f3\", \"#deeffe\", \"#cbe7d0\", \"#e5f0cb\", \"#fee8d5\", \"#eed0d7\"];\n var PRIMARY = SERIES[0];\n var DIAGRAM_HOVER = WHITE;\n\n function noteStyle() {\n return {\n icon: {\n background: \"#00b0ff\",\n border: {\n color: \"#00b0ff\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: AXIS\n }\n };\n }\n\n registerTheme(\"office365\", {\n chart: {\n title: {\n color: TEXT\n },\n subtitle: {\n color: TEXT\n },\n legend: {\n labels: {\n color: TEXT\n },\n inactiveItems: {\n labels: {\n color: INACTIVE\n },\n markers: {\n color: INACTIVE\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: TEXT\n },\n errorBars: {\n color: TEXT\n },\n notes: noteStyle(),\n candlestick: {\n downColor: AXIS,\n line: {\n color: INACTIVE_SHAPE\n }\n },\n area: {\n opacity: 0.8\n },\n waterfall: {\n line: {\n color: AXIS\n }\n },\n horizontalWaterfall: {\n line: {\n color: AXIS\n }\n },\n overlay: {\n gradient: \"none\"\n },\n border: {\n _brightness: 1\n }\n },\n seriesColors: SERIES,\n axisDefaults: {\n line: {\n color: AXIS\n },\n labels: {\n color: TEXT\n },\n minorGridLines: {\n color: AXIS_MINOR\n },\n majorGridLines: {\n color: AXIS\n },\n title: {\n color: TEXT\n },\n crosshair: {\n color: INACTIVE\n },\n notes: noteStyle()\n }\n },\n gauge: {\n pointer: {\n color: PRIMARY\n },\n scale: {\n rangePlaceholderColor: AXIS,\n labels: {\n color: TEXT\n },\n minorTicks: {\n color: TEXT\n },\n majorTicks: {\n color: TEXT\n },\n line: {\n color: TEXT\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: PRIMARY\n },\n connectorDefaults: {\n fill: {\n color: TEXT\n },\n stroke: {\n color: DIAGRAM_HOVER\n },\n hover: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: TEXT\n }\n }\n },\n content: {\n color: TEXT\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: INACTIVE_SHAPE\n },\n hover: {\n fill: {\n color: INACTIVE_SHAPE\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: INACTIVE_SHAPE\n },\n fill: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: INACTIVE_SHAPE\n }\n },\n connectionDefaults: {\n stroke: {\n color: INACTIVE_SHAPE\n },\n content: {\n color: INACTIVE_SHAPE\n },\n selection: {\n handles: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n treeMap: {\n colors: fuse(SERIES, SERIES_LIGHT)\n }\n });\n })();\n\n (function() {\n var TEXT = \"#32364c\";\n var INACTIVE = \"#7f7f7f\";\n var INACTIVE_SHAPE = \"#bdbdbd\";\n var AXIS = \"#dfe0e1\";\n var AXIS_MINOR = \"#dfe0e1\";\n var SERIES = [\"#ff4350\", \"#ff9ea5\", \"#00acc1\", \"#80deea\", \"#ffbf46\", \"#ffd78c\"];\n var SERIES_LIGHT = [\"#ffd9dc\", \"#ffeced\", \"#cceef3\", \"#e6f8fb\", \"#fff2da\", \"#fff7e8\"];\n var PRIMARY = SERIES[0];\n var DIAGRAM_HOVER = WHITE;\n\n function noteStyle() {\n return {\n icon: {\n background: \"#007cc0\",\n border: {\n color: \"#007cc0\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: AXIS\n }\n };\n }\n\n registerTheme(\"nova\", {\n chart: {\n title: {\n color: TEXT\n },\n subtitle: {\n color: TEXT\n },\n legend: {\n labels: {\n color: TEXT\n },\n inactiveItems: {\n labels: {\n color: INACTIVE\n },\n markers: {\n color: INACTIVE\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: TEXT\n },\n errorBars: {\n color: TEXT\n },\n notes: noteStyle(),\n candlestick: {\n downColor: AXIS,\n line: {\n color: INACTIVE_SHAPE\n }\n },\n area: {\n opacity: 0.8\n },\n waterfall: {\n line: {\n color: AXIS\n }\n },\n horizontalWaterfall: {\n line: {\n color: AXIS\n }\n },\n overlay: {\n gradient: \"none\"\n },\n border: {\n _brightness: 1\n }\n },\n seriesColors: SERIES,\n axisDefaults: {\n line: {\n color: AXIS\n },\n labels: {\n color: TEXT\n },\n minorGridLines: {\n color: AXIS_MINOR\n },\n majorGridLines: {\n color: AXIS\n },\n title: {\n color: TEXT\n },\n crosshair: {\n color: TEXT\n },\n notes: noteStyle()\n }\n },\n gauge: {\n pointer: {\n color: PRIMARY\n },\n scale: {\n rangePlaceholderColor: AXIS,\n labels: {\n color: TEXT\n },\n minorTicks: {\n color: TEXT\n },\n majorTicks: {\n color: TEXT\n },\n line: {\n color: TEXT\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: PRIMARY\n },\n connectorDefaults: {\n fill: {\n color: TEXT\n },\n stroke: {\n color: DIAGRAM_HOVER\n },\n hover: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: TEXT\n }\n }\n },\n content: {\n color: TEXT\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: INACTIVE_SHAPE\n },\n hover: {\n fill: {\n color: INACTIVE_SHAPE\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: INACTIVE_SHAPE\n },\n fill: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: INACTIVE_SHAPE\n }\n },\n connectionDefaults: {\n stroke: {\n color: INACTIVE_SHAPE\n },\n content: {\n color: INACTIVE_SHAPE\n },\n selection: {\n handles: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n treeMap: {\n colors: fuse(SERIES, SERIES_LIGHT)\n }\n });\n })();\n\n (function() {\n var SERIES = [\"#ff6358\", \"#ffd246\", \"#78d237\", \"#28b4c8\", \"#2d73f5\", \"#aa46be\"];\n var SERIES_LIGHT = [\"#ffd9dc\", \"#ffeced\", \"#cceef3\", \"#e6f8fb\", \"#fff2da\", \"#fff7e8\"];\n\n registerTheme(\"default-v2\", {\n chart: { /* read from DOM */ },\n gauge: { /* read from DOM */ },\n diagram: { /* read from DOM */ },\n treeMap: {\n colors: fuse(SERIES, SERIES_LIGHT)\n }\n });\n\n themes.sass = themes[\"default-v2\"];\n })();\n\n\n (function() {\n var TEXT = \"#292b2c\";\n var AXIS = \"rgba(0, 0, 0, .04)\";\n var SERIES = [\"#0275d8\", \"#5bc0de\", \"#5cb85c\", \"#f0ad4e\", \"#e67d4a\", \"#d9534f\"];\n var SERIES_LIGHT = [\"#ffd9dc\", \"#ffeced\", \"#cceef3\", \"#e6f8fb\", \"#fff2da\", \"#fff7e8\"];\n var PRIMARY = SERIES[0];\n\n registerTheme(\"bootstrap-v4\", {\n chart: { /* read from DOM */ },\n gauge: {\n pointer: {\n color: PRIMARY\n },\n scale: {\n rangePlaceholderColor: AXIS,\n labels: {\n color: TEXT\n },\n minorTicks: {\n color: TEXT\n },\n majorTicks: {\n color: TEXT\n },\n line: {\n color: TEXT\n }\n }\n },\n diagram: { /* read from DOM */ },\n treeMap: {\n colors: fuse(SERIES, SERIES_LIGHT)\n }\n });\n })();\n\n function fuse(arr1, arr2) {\n return $.map(arr1, function(item, index) {\n return [\n [item, arr2[index]]\n ];\n });\n }\n\n })(window.kendo.jQuery);\n\n var __meta__$E = {\n id: \"dataviz.themes\",\n name: \"Themes\",\n description: \"Built-in themes for the DataViz widgets\",\n category: \"dataviz\",\n depends: [ \"dataviz.core\" ],\n hidden: true\n };\n var kendo$I = kendo;\n\n /***********************************************************************\n * WARNING: this file is auto-generated. If you change it directly,\n * your modifications will eventually be lost. The source code is in\n * `kendo-charts` repository, you should make your changes there and\n * run `src-modules/sync.sh` in this repository.\n */\n\n (function($) {\n /* eslint-disable */\n\n window.kendo.dataviz = window.kendo.dataviz || {};\n var dataviz = kendo.dataviz;\n var Class = dataviz.Class;\n var isNumber = dataviz.isNumber;\n var datavizConstants = dataviz.constants;\n var MAX_VALUE = datavizConstants.MAX_VALUE;\n var MIN_VALUE = datavizConstants.MIN_VALUE;\n var VALUE = datavizConstants.VALUE;\n var DATE = datavizConstants.DATE;\n var CENTER = datavizConstants.CENTER;\n var TOP = datavizConstants.TOP;\n var BOTTOM = datavizConstants.BOTTOM;\n var LEFT = datavizConstants.LEFT;\n var WHITE = datavizConstants.WHITE;\n var CIRCLE = datavizConstants.CIRCLE;\n var X = datavizConstants.X;\n var Y = datavizConstants.Y;\n var RIGHT = datavizConstants.RIGHT;\n var BLACK = datavizConstants.BLACK;\n var COORD_PRECISION = datavizConstants.COORD_PRECISION;\n var END = datavizConstants.END;\n var START = datavizConstants.START;\n var DEFAULT_PRECISION = datavizConstants.DEFAULT_PRECISION;\n var ARC = datavizConstants.ARC;\n var defined = dataviz.defined;\n var getter = dataviz.getter;\n var isArray = dataviz.isArray;\n var ChartElement = dataviz.ChartElement;\n var Point = dataviz.Point;\n var Box = dataviz.Box;\n var alignPathToPixel = dataviz.alignPathToPixel;\n var setDefaultOptions = dataviz.setDefaultOptions;\n var isString = dataviz.isString;\n var inArray = dataviz.inArray;\n var isFunction = dataviz.isFunction;\n var valueOrDefault = dataviz.valueOrDefault;\n var isObject = dataviz.isObject;\n var parseDate = dataviz.parseDate;\n var deepExtend = dataviz.deepExtend;\n var last = dataviz.last;\n var eventElement = dataviz.eventElement;\n var TextBox = dataviz.TextBox;\n var getTemplate = dataviz.getTemplate;\n var ShapeElement = dataviz.ShapeElement;\n var getSpacing = dataviz.getSpacing;\n var CurveProcessor = dataviz.CurveProcessor;\n var append = dataviz.append;\n var styleValue = dataviz.styleValue;\n var CategoryAxis = dataviz.CategoryAxis;\n var BoxElement = dataviz.BoxElement;\n var Title = dataviz.Title;\n var round = dataviz.round;\n var limitValue = dataviz.limitValue;\n var cycleIndex = dataviz.cycleIndex;\n var grep = dataviz.grep;\n var elementStyles = dataviz.elementStyles;\n var autoTextColor = dataviz.autoTextColor;\n var rad = dataviz.rad;\n var bindEvents = dataviz.bindEvents;\n var services = dataviz.services;\n var unbindEvents = dataviz.unbindEvents;\n var support = kendo.support;\n var drawing = kendo.drawing;\n var Path = drawing.Path;\n var Animation = drawing.Animation;\n var AnimationFactory = drawing.AnimationFactory;\n var Group = drawing.Group;\n var Circle = drawing.Circle;\n var MultiPath = drawing.MultiPath;\n var Color = kendo.Color;\n var geometry = kendo.geometry;\n var GeometryPoint = geometry.Point;\n var GeometryCircle = geometry.Circle;\n var transform = geometry.transform;\n\n var ChartAxis = Class.extend({\n init: function(axis) {\n\n this._axis = axis;\n this.options = axis.options;\n },\n\n value: function(point) {\n var axis = this._axis;\n var value = axis.getCategory ? axis.getCategory(point) : axis.getValue(point);\n\n return value;\n },\n\n slot: function(from, to, limit) {\n if (limit === void 0) { limit = true; }\n\n return this._axis.slot(from, to, limit);\n },\n\n range: function() {\n return this._axis.range();\n },\n\n valueRange: function() {\n return this._axis.valueRange();\n }\n });\n\n function findAxisByName(name, axes) {\n for (var idx = 0; idx < axes.length; idx++) {\n if (axes[idx].options.name === name) {\n axes[idx].prepareUserOptions();\n return new ChartAxis(axes[idx]);\n }\n }\n }\n\n var ChartPane = kendo.Class.extend({\n init: function(pane) {\n this.visual = pane.visual;\n this.chartsVisual = pane.chartContainer.visual;\n this._pane = pane;\n },\n\n findAxisByName: function(name) {\n return findAxisByName(name, this._pane.axes);\n }\n });\n\n var ChartPlotArea = Class.extend({\n init: function(plotArea) {\n\n this._plotArea = plotArea;\n this.visual = plotArea.visual;\n this.backgroundVisual = plotArea._bgVisual;\n }\n });\n\n function countNumbers(values) {\n var length = values.length;\n var count = 0;\n\n for (var i = 0; i < length; i++) {\n var num = values[i];\n if (isNumber(num)) {\n count++;\n }\n }\n\n return count;\n }\n\n var Aggregates = {\n min: function(values) {\n var length = values.length;\n var min = MAX_VALUE;\n\n for (var i = 0; i < length; i++) {\n var value = values[i];\n if (isNumber(value)) {\n min = Math.min(min, value);\n }\n }\n\n return min === MAX_VALUE ? values[0] : min;\n },\n\n max: function(values) {\n var length = values.length;\n var max = MIN_VALUE;\n\n for (var i = 0; i < length; i++) {\n var value = values[i];\n if (isNumber(value)) {\n max = Math.max(max, value);\n }\n }\n\n return max === MIN_VALUE ? values[0] : max;\n },\n\n sum: function(values) {\n var length = values.length;\n var sum = 0;\n\n for (var i = 0; i < length; i++) {\n var value = values[i];\n if (isNumber(value)) {\n sum += value;\n }\n }\n\n return sum;\n },\n\n sumOrNull: function(values) {\n var result = null;\n\n if (countNumbers(values)) {\n result = Aggregates.sum(values);\n }\n\n return result;\n },\n\n count: function(values) {\n var length = values.length;\n var count = 0;\n\n for (var i = 0; i < length; i++) {\n var value = values[i];\n if (value !== null && defined(value)) {\n count++;\n }\n }\n\n return count;\n },\n\n avg: function(values) {\n var count = countNumbers(values);\n var result = values[0];\n\n if (count > 0) {\n result = Aggregates.sum(values) / count;\n }\n\n return result;\n },\n\n first: function(values) {\n var length = values.length;\n\n for (var i = 0; i < length; i++) {\n var value = values[i];\n if (value !== null && defined(value)) {\n return value;\n }\n }\n\n return values[0];\n }\n };\n\n function getField(field, row) {\n if (row === null) {\n return row;\n }\n\n var get = getter(field, true);\n return get(row);\n }\n\n var SeriesBinder = Class.extend({\n init: function() {\n\n this._valueFields = {};\n this._otherFields = {};\n this._nullValue = {};\n this._undefinedValue = {};\n },\n\n register: function(seriesTypes, valueFields, otherFields) {\n var this$1$1 = this;\n if (valueFields === void 0) { valueFields = [ VALUE ]; }\n if (otherFields === void 0) { otherFields = {}; }\n\n for (var i = 0; i < seriesTypes.length; i++) {\n var type = seriesTypes[i];\n\n this$1$1._valueFields[type] = valueFields;\n this$1$1._otherFields[type] = otherFields;\n this$1$1._nullValue[type] = this$1$1._makeValue(valueFields, null);\n this$1$1._undefinedValue[type] = this$1$1._makeValue(valueFields, undefined);\n }\n },\n\n canonicalFields: function(series) {\n return this.valueFields(series).concat(this.otherFields(series));\n },\n\n valueFields: function(series) {\n return this._valueFields[series.type] || [ VALUE ];\n },\n\n otherFields: function(series) {\n return this._otherFields[series.type] || [ VALUE ];\n },\n\n bindPoint: function(series, pointIx, item) {\n var data = series.data;\n var pointData = defined(item) ? item : data[pointIx];\n var result = { valueFields: { value: pointData } };\n var valueFields = this.valueFields(series);\n var otherFields = this._otherFields[series.type];\n var fields, value;\n\n if (pointData === null) {\n value = this._nullValue[series.type];\n } else if (!defined(pointData)) {\n value = this._undefinedValue[series.type];\n } else if (Array.isArray(pointData)) {\n var fieldData = pointData.slice(valueFields.length);\n value = this._bindFromArray(pointData, valueFields);\n fields = this._bindFromArray(fieldData, otherFields);\n } else if (typeof pointData === \"object\") {\n var srcValueFields = this.sourceFields(series, valueFields);\n var srcPointFields = this.sourceFields(series, otherFields);\n\n value = this._bindFromObject(pointData, valueFields, srcValueFields);\n fields = this._bindFromObject(pointData, otherFields, srcPointFields);\n }\n\n if (defined(value)) {\n if (valueFields.length === 1) {\n result.valueFields.value = value[valueFields[0]];\n } else {\n result.valueFields = value;\n }\n }\n\n result.fields = fields || {};\n\n return result;\n },\n\n _makeValue: function(fields, initialValue) {\n var value = {};\n var length = fields.length;\n\n for (var i = 0; i < length; i++) {\n var fieldName = fields[i];\n value[fieldName] = initialValue;\n }\n\n return value;\n },\n\n _bindFromArray: function(array, fields) {\n var value = {};\n\n if (fields) {\n var length = Math.min(fields.length, array.length);\n\n for (var i = 0; i < length; i++) {\n value[fields[i]] = array[i];\n }\n }\n\n return value;\n },\n\n _bindFromObject: function(object, fields, srcFields) {\n if (srcFields === void 0) { srcFields = fields; }\n\n var value = {};\n\n if (fields) {\n var length = fields.length;\n\n for (var i = 0; i < length; i++) {\n var fieldName = fields[i];\n var srcFieldName = srcFields[i];\n if (srcFieldName !== null) {\n value[fieldName] = getField(srcFieldName, object);\n }\n }\n }\n\n return value;\n },\n\n sourceFields: function(series, canonicalFields) {\n var sourceFields = [];\n\n if (canonicalFields) {\n var length = canonicalFields.length;\n\n for (var i = 0; i < length; i++) {\n var fieldName = canonicalFields[i];\n var sourceFieldName = fieldName === VALUE ? \"field\" : fieldName + \"Field\";\n\n sourceFields.push(series[sourceFieldName] !== null ? (series[sourceFieldName] || fieldName) : null);\n }\n }\n\n return sourceFields;\n }\n });\n\n SeriesBinder.current = new SeriesBinder();\n\n var STD_ERR = \"stderr\";\n var STD_DEV = \"stddev\";\n var percentRegex = /percent(?:\\w*)\\((\\d+)\\)/;\n var standardDeviationRegex = new RegExp(\"^\" + STD_DEV + \"(?:\\\\((\\\\d+(?:\\\\.\\\\d+)?)\\\\))?$\");\n\n var ErrorRangeCalculator = Class.extend({\n init: function(errorValue, series, field) {\n\n this.initGlobalRanges(errorValue, series, field);\n },\n\n initGlobalRanges: function(errorValue, series, field) {\n var data = series.data;\n var deviationMatch = standardDeviationRegex.exec(errorValue);\n\n if (deviationMatch) {\n this.valueGetter = this.createValueGetter(series, field);\n\n var average = this.getAverage(data);\n var deviation = this.getStandardDeviation(data, average, false);\n var multiple = deviationMatch[1] ? parseFloat(deviationMatch[1]) : 1;\n var errorRange = { low: average.value - deviation * multiple, high: average.value + deviation * multiple };\n\n this.globalRange = function() {\n return errorRange;\n };\n } else if (errorValue.indexOf && errorValue.indexOf(STD_ERR) >= 0) {\n this.valueGetter = this.createValueGetter(series, field);\n var standardError = this.getStandardError(data, this.getAverage(data));\n\n this.globalRange = function(value) {\n return { low: value - standardError, high: value + standardError };\n };\n }\n },\n\n createValueGetter: function(series, field) {\n var data = series.data;\n var binder = SeriesBinder.current;\n var valueFields = binder.valueFields(series);\n var item = defined(data[0]) ? data[0] : {};\n var valueGetter;\n\n if (isArray(item)) {\n var index = field ? valueFields.indexOf(field) : 0;\n valueGetter = getter(\"[\" + index + \"]\");\n } else if (isNumber(item)) {\n valueGetter = getter();\n } else if (typeof item === datavizConstants.OBJECT) {\n var srcValueFields = binder.sourceFields(series, valueFields);\n valueGetter = getter(srcValueFields[valueFields.indexOf(field)]);\n }\n\n return valueGetter;\n },\n\n getErrorRange: function(pointValue, errorValue) {\n var low, high, value;\n\n if (!defined(errorValue)) {\n return null;\n }\n\n if (this.globalRange) {\n return this.globalRange(pointValue);\n }\n\n if (isArray(errorValue)) {\n low = pointValue - errorValue[0];\n high = pointValue + errorValue[1];\n } else if (isNumber(value = parseFloat(errorValue))) {\n low = pointValue - value;\n high = pointValue + value;\n } else if ((value = percentRegex.exec(errorValue))) {\n var percentValue = pointValue * (parseFloat(value[1]) / 100);\n low = pointValue - Math.abs(percentValue);\n high = pointValue + Math.abs(percentValue);\n } else {\n throw new Error(\"Invalid ErrorBar value: \" + errorValue);\n }\n\n return { low: low, high: high };\n },\n\n getStandardError: function(data, average) {\n return this.getStandardDeviation(data, average, true) / Math.sqrt(average.count);\n },\n\n getStandardDeviation: function(data, average, isSample) {\n var this$1$1 = this;\n\n var length = data.length;\n var total = isSample ? average.count - 1 : average.count;\n var squareDifferenceSum = 0;\n\n for (var idx = 0; idx < length; idx++) {\n var value = this$1$1.valueGetter(data[idx]);\n if (isNumber(value)) {\n squareDifferenceSum += Math.pow(value - average.value, 2);\n }\n }\n\n return Math.sqrt(squareDifferenceSum / total);\n },\n\n getAverage: function(data) {\n var this$1$1 = this;\n\n var length = data.length;\n var sum = 0;\n var count = 0;\n\n for (var idx = 0; idx < length; idx++) {\n var value = this$1$1.valueGetter(data[idx]);\n if (isNumber(value)) {\n sum += value;\n count++;\n }\n }\n\n return {\n value: sum / count,\n count: count\n };\n }\n });\n\n var browser = support.browser || {};\n\n var INITIAL_ANIMATION_DURATION = 600;\n var FADEIN = \"fadeIn\";\n\n var GLASS = \"glass\";\n var BORDER_BRIGHTNESS = 0.8;\n var TOOLTIP_OFFSET = 5;\n var START_SCALE = browser.msie ? 0.001 : 0;\n var ERROR_LOW_FIELD = \"errorLow\";\n var ERROR_HIGH_FIELD = \"errorHigh\";\n var X_ERROR_LOW_FIELD = \"xErrorLow\";\n var X_ERROR_HIGH_FIELD = \"xErrorHigh\";\n var Y_ERROR_LOW_FIELD = \"yErrorLow\";\n var Y_ERROR_HIGH_FIELD = \"yErrorHigh\";\n var LINE_MARKER_SIZE = 8;\n var ZERO = \"zero\";\n var INTERPOLATE = \"interpolate\";\n var GAP = \"gap\";\n var ABOVE = \"above\";\n var BELOW = \"below\";\n\n var SMOOTH = \"smooth\";\n var STEP = \"step\";\n\n var AREA = \"area\";\n var BAR = \"bar\";\n var BOX_PLOT = \"boxPlot\";\n var BUBBLE = \"bubble\";\n var BULLET = \"bullet\";\n var CANDLESTICK = \"candlestick\";\n var COLUMN = \"column\";\n var DONUT = \"donut\";\n var FUNNEL = \"funnel\";\n var PYRAMID = \"pyramid\";\n var HEATMAP = \"heatmap\";\n var HORIZONTAL_WATERFALL = \"horizontalWaterfall\";\n var LINE = \"line\";\n var OHLC = \"ohlc\";\n var PIE = \"pie\";\n var POLAR_AREA = \"polarArea\";\n var POLAR_LINE = \"polarLine\";\n var POLAR_SCATTER = \"polarScatter\";\n var RADAR_AREA = \"radarArea\";\n var RADAR_COLUMN = \"radarColumn\";\n var RADAR_LINE = \"radarLine\";\n var RANGE_AREA = \"rangeArea\";\n var RANGE_BAR = \"rangeBar\";\n var RANGE_COLUMN = \"rangeColumn\";\n var SCATTER = \"scatter\";\n var SCATTER_LINE = \"scatterLine\";\n var VERTICAL_AREA = \"verticalArea\";\n var VERTICAL_BOX_PLOT = \"verticalBoxPlot\";\n var VERTICAL_BULLET = \"verticalBullet\";\n var VERTICAL_LINE = \"verticalLine\";\n var VERTICAL_RANGE_AREA = \"verticalRangeArea\";\n var WATERFALL = \"waterfall\";\n var EQUALLY_SPACED_SERIES = [\n BAR, COLUMN, OHLC, CANDLESTICK, BOX_PLOT, VERTICAL_BOX_PLOT,\n BULLET, RANGE_COLUMN, RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL\n ];\n\n var TRENDLINE_EXPONENTIAL = 'exponentialTrendline';\n var TRENDLINE_LINEAR = 'linearTrendline';\n var TRENDLINE_LOGARITHMIC = 'logarithmicTrendline';\n var TRENDLINE_MOVING_AVERAGE = 'movingAverageTrendline';\n var TRENDLINE_POLYNOMIAL = 'polynomialTrendline';\n var TRENDLINE_POWER = 'powerTrendline';\n var TRENDLINE_SERIES = [\n TRENDLINE_EXPONENTIAL,\n TRENDLINE_LINEAR,\n TRENDLINE_LOGARITHMIC,\n TRENDLINE_MOVING_AVERAGE,\n TRENDLINE_POLYNOMIAL,\n TRENDLINE_POWER\n ];\n\n var LEGEND_ITEM_CLICK = \"legendItemClick\";\n var LEGEND_ITEM_HOVER = \"legendItemHover\";\n var LEGEND_ITEM_LEAVE = \"legendItemLeave\";\n var SERIES_CLICK = \"seriesClick\";\n var SERIES_HOVER = \"seriesHover\";\n var SERIES_OVER = \"seriesOver\";\n var SERIES_LEAVE = \"seriesLeave\";\n var PLOT_AREA_CLICK = \"plotAreaClick\";\n var PLOT_AREA_HOVER = \"plotAreaHover\";\n var PLOT_AREA_LEAVE = \"plotAreaLeave\";\n var DRAG = \"drag\";\n var DRAG_END = \"dragEnd\";\n var DRAG_START = \"dragStart\";\n var ZOOM_START = \"zoomStart\";\n var ZOOM = \"zoom\";\n var ZOOM_END = \"zoomEnd\";\n var SELECT_START = \"selectStart\";\n var SELECT = \"select\";\n var SELECT_END = \"selectEnd\";\n var RENDER = \"render\";\n var SHOW_TOOLTIP = \"showTooltip\";\n var HIDE_TOOLTIP = \"hideTooltip\";\n var PANE_RENDER = \"paneRender\";\n\n var CHART_POINT_ROLE = \"graphics-symbol\";\n var CHART_POINT_CLASSNAME = \"k-chart-point\";\n var CHART_POINT_ROLE_DESCRIPTION = \"Point\";\n var LEGEND_ITEM_ROLE = \"checkbox\";\n var LEGEND_ITEM_CLASSNAME = \"k-chart-legend-item\";\n var LEGEND_ITEM_ARIA_ROLE_DESCRIPTION = \"Legend item\";\n\n var LOGARITHMIC = \"log\";\n var CATEGORY = \"category\";\n\n var INSIDE_END = \"insideEnd\";\n var INSIDE_BASE = \"insideBase\";\n var OUTSIDE_END = \"outsideEnd\";\n\n var MOUSEWHEEL = \"wheel\";\n var MOUSEWHEEL_DELAY = 150;\n var MOUSEWHEEL_ZOOM_RATE = 0.3;\n\n var DRILLDOWN = \"drilldown\";\n var DRILLDOWN_FIELD = \"drilldown\";\n\n var MIN_MOVING_AVERAGE_PERIOD = 2;\n\n var constants = {\n \tINITIAL_ANIMATION_DURATION: INITIAL_ANIMATION_DURATION,\n \tFADEIN: FADEIN,\n \tLEGEND_ITEM_CLICK: LEGEND_ITEM_CLICK,\n \tLEGEND_ITEM_HOVER: LEGEND_ITEM_HOVER,\n \tLEGEND_ITEM_LEAVE: LEGEND_ITEM_LEAVE,\n \tSERIES_CLICK: SERIES_CLICK,\n \tSERIES_HOVER: SERIES_HOVER,\n \tSERIES_OVER: SERIES_OVER,\n \tSERIES_LEAVE: SERIES_LEAVE,\n \tGLASS: GLASS,\n \tBORDER_BRIGHTNESS: BORDER_BRIGHTNESS,\n \tTOOLTIP_OFFSET: TOOLTIP_OFFSET,\n \tSTART_SCALE: START_SCALE,\n \tERROR_LOW_FIELD: ERROR_LOW_FIELD,\n \tERROR_HIGH_FIELD: ERROR_HIGH_FIELD,\n \tX_ERROR_LOW_FIELD: X_ERROR_LOW_FIELD,\n \tX_ERROR_HIGH_FIELD: X_ERROR_HIGH_FIELD,\n \tY_ERROR_LOW_FIELD: Y_ERROR_LOW_FIELD,\n \tY_ERROR_HIGH_FIELD: Y_ERROR_HIGH_FIELD,\n \tLINE_MARKER_SIZE: LINE_MARKER_SIZE,\n \tINTERPOLATE: INTERPOLATE,\n \tZERO: ZERO,\n \tSMOOTH: SMOOTH,\n \tSTEP: STEP,\n \tCATEGORY: CATEGORY,\n \tFUNNEL: FUNNEL,\n \tPYRAMID: PYRAMID,\n \tBAR: BAR,\n \tCANDLESTICK: CANDLESTICK,\n \tPIE: PIE,\n \tCOLUMN: COLUMN,\n \tAREA: AREA,\n \tVERTICAL_BULLET: VERTICAL_BULLET,\n \tBOX_PLOT: BOX_PLOT,\n \tOHLC: OHLC,\n \tWATERFALL: WATERFALL,\n \tLINE: LINE,\n \tBULLET: BULLET,\n \tVERTICAL_LINE: VERTICAL_LINE,\n \tVERTICAL_AREA: VERTICAL_AREA,\n \tRANGE_AREA: RANGE_AREA,\n \tVERTICAL_RANGE_AREA: VERTICAL_RANGE_AREA,\n \tRANGE_COLUMN: RANGE_COLUMN,\n \tVERTICAL_BOX_PLOT: VERTICAL_BOX_PLOT,\n \tRANGE_BAR: RANGE_BAR,\n \tHORIZONTAL_WATERFALL: HORIZONTAL_WATERFALL,\n \tSCATTER: SCATTER,\n \tSCATTER_LINE: SCATTER_LINE,\n \tBUBBLE: BUBBLE,\n \tRADAR_AREA: RADAR_AREA,\n \tRADAR_LINE: RADAR_LINE,\n \tRADAR_COLUMN: RADAR_COLUMN,\n \tPOLAR_LINE: POLAR_LINE,\n \tPOLAR_AREA: POLAR_AREA,\n \tPOLAR_SCATTER: POLAR_SCATTER,\n \tRENDER: RENDER,\n \tPLOT_AREA_CLICK: PLOT_AREA_CLICK,\n \tPLOT_AREA_HOVER: PLOT_AREA_HOVER,\n \tPLOT_AREA_LEAVE: PLOT_AREA_LEAVE,\n \tLOGARITHMIC: LOGARITHMIC,\n \tDRAG: DRAG,\n \tDRAG_START: DRAG_START,\n \tDRAG_END: DRAG_END,\n \tZOOM_START: ZOOM_START,\n \tZOOM: ZOOM,\n \tZOOM_END: ZOOM_END,\n \tSELECT_START: SELECT_START,\n \tSELECT: SELECT,\n \tSELECT_END: SELECT_END,\n \tPANE_RENDER: PANE_RENDER,\n \tGAP: GAP,\n \tDONUT: DONUT,\n \tINSIDE_END: INSIDE_END,\n \tINSIDE_BASE: INSIDE_BASE,\n \tOUTSIDE_END: OUTSIDE_END,\n \tMOUSEWHEEL: MOUSEWHEEL,\n \tMOUSEWHEEL_DELAY: MOUSEWHEEL_DELAY,\n \tMOUSEWHEEL_ZOOM_RATE: MOUSEWHEEL_ZOOM_RATE,\n \tSHOW_TOOLTIP: SHOW_TOOLTIP,\n \tHIDE_TOOLTIP: HIDE_TOOLTIP,\n \tEQUALLY_SPACED_SERIES: EQUALLY_SPACED_SERIES,\n \tABOVE: ABOVE,\n \tBELOW: BELOW,\n \tHEATMAP: HEATMAP,\n \tDRILLDOWN: DRILLDOWN,\n \tDRILLDOWN_FIELD: DRILLDOWN_FIELD,\n \tMIN_MOVING_AVERAGE_PERIOD: MIN_MOVING_AVERAGE_PERIOD,\n \tTRENDLINE_SERIES: TRENDLINE_SERIES,\n \tTRENDLINE_EXPONENTIAL: TRENDLINE_EXPONENTIAL,\n \tTRENDLINE_LINEAR: TRENDLINE_LINEAR,\n \tTRENDLINE_LOGARITHMIC: TRENDLINE_LOGARITHMIC,\n \tTRENDLINE_MOVING_AVERAGE: TRENDLINE_MOVING_AVERAGE,\n \tTRENDLINE_POLYNOMIAL: TRENDLINE_POLYNOMIAL,\n \tTRENDLINE_POWER: TRENDLINE_POWER,\n \tCHART_POINT_ROLE: CHART_POINT_ROLE,\n \tCHART_POINT_CLASSNAME: CHART_POINT_CLASSNAME,\n \tCHART_POINT_ROLE_DESCRIPTION: CHART_POINT_ROLE_DESCRIPTION,\n \tLEGEND_ITEM_ROLE: LEGEND_ITEM_ROLE,\n \tLEGEND_ITEM_CLASSNAME: LEGEND_ITEM_CLASSNAME,\n \tLEGEND_ITEM_ARIA_ROLE_DESCRIPTION: LEGEND_ITEM_ARIA_ROLE_DESCRIPTION\n };\n\n var DEFAULT_ERROR_BAR_WIDTH = 4;\n\n var ErrorBarBase = ChartElement.extend({\n init: function(low, high, isVertical, chart, series, options) {\n ChartElement.fn.init.call(this, options);\n\n this.low = low;\n this.high = high;\n this.isVertical = isVertical;\n this.chart = chart;\n this.series = series;\n },\n\n reflow: function(targetBox) {\n var endCaps = this.options.endCaps;\n var isVertical = this.isVertical;\n var axis = this.getAxis();\n var valueBox = axis.getSlot(this.low, this.high);\n var centerBox = targetBox.center();\n var capsWidth = this.getCapsWidth(targetBox, isVertical);\n var capValue = isVertical ? centerBox.x : centerBox.y;\n var capStart = capValue - capsWidth;\n var capEnd = capValue + capsWidth;\n var linePoints;\n\n if (isVertical) {\n linePoints = [\n new Point(centerBox.x, valueBox.y1),\n new Point(centerBox.x, valueBox.y2)\n ];\n if (endCaps) {\n linePoints.push(new Point(capStart, valueBox.y1),\n new Point(capEnd, valueBox.y1),\n new Point(capStart, valueBox.y2),\n new Point(capEnd, valueBox.y2));\n }\n this.box = new Box(capStart, valueBox.y1, capEnd, valueBox.y2);\n } else {\n linePoints = [\n new Point(valueBox.x1, centerBox.y),\n new Point(valueBox.x2, centerBox.y)\n ];\n if (endCaps) {\n linePoints.push(new Point(valueBox.x1, capStart),\n new Point(valueBox.x1, capEnd),\n new Point(valueBox.x2, capStart),\n new Point(valueBox.x2, capEnd));\n }\n this.box = new Box(valueBox.x1, capStart, valueBox.x2, capEnd);\n }\n\n this.linePoints = linePoints;\n },\n\n getCapsWidth: function(box, isVertical) {\n var boxSize = isVertical ? box.width() : box.height();\n var capsWidth = Math.min(Math.floor(boxSize / 2), DEFAULT_ERROR_BAR_WIDTH) || DEFAULT_ERROR_BAR_WIDTH;\n\n return capsWidth;\n },\n\n createVisual: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var visual = options.visual;\n\n if (visual) {\n this.visual = visual({\n low: this.low,\n high: this.high,\n rect: this.box.toRect(),\n sender: this.getSender(),\n options: {\n endCaps: options.endCaps,\n color: options.color,\n line: options.line\n },\n createVisual: function () {\n this$1$1.createDefaultVisual();\n var defaultVisual = this$1$1.visual;\n delete this$1$1.visual;\n return defaultVisual;\n }\n });\n } else {\n this.createDefaultVisual();\n }\n },\n\n createDefaultVisual: function() {\n var this$1$1 = this;\n\n var ref = this;\n var options = ref.options;\n var linePoints = ref.linePoints;\n var lineOptions = {\n stroke: {\n color: options.color,\n width: options.line.width,\n dashType: options.line.dashType\n }\n };\n\n ChartElement.fn.createVisual.call(this);\n\n for (var idx = 0; idx < linePoints.length; idx += 2) {\n var line = new Path(lineOptions)\n .moveTo(linePoints[idx].x, linePoints[idx].y)\n .lineTo(linePoints[idx + 1].x, linePoints[idx + 1].y);\n\n alignPathToPixel(line);\n this$1$1.visual.append(line);\n }\n }\n });\n\n setDefaultOptions(ErrorBarBase, {\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n },\n endCaps: true,\n line: {\n width: 2\n },\n zIndex: 1\n });\n\n var CategoricalErrorBar = ErrorBarBase.extend({\n getAxis: function() {\n var axis = this.chart.seriesValueAxis(this.series);\n\n return axis;\n }\n });\n\n function anyHasZIndex(elements) {\n for (var idx = 0; idx < elements.length; idx++) {\n if (defined(elements[idx].zIndex)) {\n return true;\n }\n }\n }\n\n function appendIfNotNull(array, element) {\n if (element !== null) {\n array.push(element);\n }\n }\n\n function areNumbers(values) {\n return countNumbers(values) === values.length;\n }\n\n function segmentVisible(series, fields, index) {\n var visible = fields.visible;\n if (defined(visible)) {\n return visible;\n }\n\n var pointVisibility = series.pointVisibility;\n if (pointVisibility) {\n return pointVisibility[index];\n }\n }\n\n function bindSegments(series) {\n var data = series.data;\n var points = [];\n var sum = 0;\n var count = 0;\n\n for (var idx = 0; idx < data.length; idx++) {\n var pointData = SeriesBinder.current.bindPoint(series, idx);\n var value = pointData.valueFields.value;\n\n if (isString(value)) {\n value = parseFloat(value);\n }\n\n if (isNumber(value)) {\n pointData.visible = segmentVisible(series, pointData.fields, idx) !== false;\n\n pointData.value = Math.abs(value);\n points.push(pointData);\n\n if (pointData.visible) {\n sum += pointData.value;\n }\n\n if (value !== 0) {\n count++;\n }\n } else {\n points.push(null);\n }\n }\n\n return {\n total: sum,\n points: points,\n count: count\n };\n }\n\n function categoriesCount(series) {\n var seriesCount = series.length;\n var categories = 0;\n\n for (var i = 0; i < seriesCount; i++) {\n categories = Math.max(categories, series[i].data.length);\n }\n\n return categories;\n }\n\n function equalsIgnoreCase(a, b) {\n if (a && b) {\n return a.toLowerCase() === b.toLowerCase();\n }\n\n return a === b;\n }\n\n var MAX_EXPAND_DEPTH = 5;\n\n function evalOptions(options, context, state, dryRun) {\n if (state === void 0) { state = {}; }\n if (dryRun === void 0) { dryRun = false; }\n\n var defaults = state.defaults = state.defaults || {};\n var depth = state.depth = state.depth || 0;\n var needsEval = false;\n\n state.excluded = state.excluded || [];\n\n if (depth > MAX_EXPAND_DEPTH) {\n return null;\n }\n\n for (var property in options) {\n if (!inArray(property, state.excluded) && dataviz.hasOwnProperty(options, property)) {\n var propValue = options[property];\n if (isFunction(propValue)) {\n needsEval = true;\n if (!dryRun) {\n options[property] = valueOrDefault(propValue(context), defaults[property]);\n }\n } else if (isObject(propValue)) {\n if (!dryRun) {\n state.defaults = defaults[property];\n }\n state.depth++;\n needsEval = evalOptions(propValue, context, state, dryRun) || needsEval;\n state.depth--;\n }\n }\n }\n\n return needsEval;\n }\n\n function filterSeriesByType(series, types) {\n var result = [];\n\n var seriesTypes = [].concat(types);\n for (var idx = 0; idx < series.length; idx++) {\n var currentSeries = series[idx];\n if (inArray(currentSeries.type, seriesTypes)) {\n result.push(currentSeries);\n }\n }\n\n return result;\n }\n\n var dateCache = new WeakMap();\n\n function parseDateCategory(category, row, intlService) {\n if (row === null || typeof row !== 'object') {\n return parseDate(intlService, category);\n }\n\n var date = dateCache.get(row);\n if (!date) {\n date = parseDate(intlService, category);\n dateCache.set(row, date);\n }\n\n return date;\n }\n\n function hasGradientOverlay(options) {\n var overlay = options.overlay;\n\n return overlay && overlay.gradient && overlay.gradient !== \"none\";\n }\n\n function hasValue(value) {\n return defined(value) && value !== null;\n }\n\n function isDateAxis(axisOptions, sampleCategory) {\n var type = axisOptions.type;\n var dateCategory = sampleCategory instanceof Date;\n\n return (!type && dateCategory) || equalsIgnoreCase(type, DATE);\n }\n\n function singleItemOrArray(array) {\n return array.length === 1 ? array[0] : array;\n }\n\n var AREA_REGEX = /area/i;\n\n function seriesMissingValues(series) {\n if (series.missingValues) {\n return series.missingValues;\n }\n\n return AREA_REGEX.test(series.type) || series.stack ? ZERO : INTERPOLATE;\n }\n\n function hasValue$1(series, item) {\n var fields = SeriesBinder.current.bindPoint(series, null, item);\n var valueFields = fields.valueFields;\n\n for (var field in valueFields) {\n if (dataviz.convertableToNumber(valueFields[field])) {\n return true;\n }\n }\n }\n\n function findNext(ref) {\n var start = ref.start;\n var dir = ref.dir;\n var min = ref.min;\n var max = ref.max;\n var getter$$1 = ref.getter;\n var hasItem = ref.hasItem;\n var series = ref.series;\n\n var pointHasValue, outPoint;\n var idx = start;\n do {\n idx += dir;\n //aggregating and binding the item takes too much time for large number of categories\n //will assume that if the aggregation does not create value for a missing item for one it will not create for others\n if (hasItem(idx)) {\n outPoint = getter$$1(idx);\n pointHasValue = hasValue$1(series, outPoint.item);\n }\n } while (min <= idx && idx <= max && !pointHasValue);\n\n if (pointHasValue) {\n return outPoint;\n }\n }\n\n function createOutOfRangePoints(series, range, count, getter$$1, hasItem) {\n var min = range.min;\n var max = range.max;\n var hasMinPoint = min > 0 && min < count;\n var hasMaxPoint = max + 1 < count;\n\n if (hasMinPoint || hasMaxPoint) {\n var missingValues = seriesMissingValues(series);\n var minPoint, maxPoint;\n if (missingValues !== INTERPOLATE) {\n if (hasMinPoint) {\n minPoint = getter$$1(min - 1);\n }\n\n if (hasMaxPoint) {\n maxPoint = getter$$1(max + 1);\n }\n } else {\n var outPoint, pointHasValue;\n if (hasMinPoint) {\n outPoint = getter$$1(min - 1);\n pointHasValue = hasValue$1(series, outPoint.item);\n if (!pointHasValue) {\n minPoint = findNext({\n start: min,\n dir: -1,\n min: 0,\n max: count - 1,\n getter: getter$$1,\n hasItem: hasItem,\n series: series\n });\n } else {\n minPoint = outPoint;\n }\n }\n\n if (hasMaxPoint) {\n outPoint = getter$$1(max + 1);\n pointHasValue = hasValue$1(series, outPoint.item);\n if (!pointHasValue) {\n maxPoint = findNext({\n start: max,\n dir: 1,\n min: 0,\n max: count - 1,\n getter: getter$$1,\n hasItem: hasItem,\n series: series\n });\n } else {\n maxPoint = outPoint;\n }\n }\n }\n\n if (minPoint) {\n series._outOfRangeMinPoint = minPoint;\n }\n\n if (maxPoint) {\n series._outOfRangeMaxPoint = maxPoint;\n }\n }\n }\n\n var CategoricalChart = ChartElement.extend({\n init: function(plotArea, options) {\n ChartElement.fn.init.call(this, options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this.categoryAxis = plotArea.seriesCategoryAxis(options.series[0]);\n\n // Value axis ranges grouped by axis name, e.g.:\n // primary: { min: 0, max: 1 }\n this.valueAxisRanges = {};\n\n this.points = [];\n this.categoryPoints = [];\n this.seriesPoints = [];\n this.seriesOptions = [];\n this._evalSeries = [];\n\n this.render();\n },\n\n render: function() {\n this.traverseDataPoints(this.addValue.bind(this));\n },\n\n pointOptions: function(series, seriesIx) {\n var options = this.seriesOptions[seriesIx];\n if (!options) {\n var defaults = this.pointType().prototype.defaults;\n this.seriesOptions[seriesIx] = options = deepExtend({ }, defaults, {\n vertical: !this.options.invertAxes\n }, series);\n }\n\n return options;\n },\n\n plotValue: function(point) {\n if (!point) {\n return 0;\n }\n\n if (this.options.isStacked100 && isNumber(point.value)) {\n var categoryIx = point.categoryIx;\n var categoryPoints = this.categoryPoints[categoryIx];\n var otherValues = [];\n var categorySum = 0;\n\n for (var i = 0; i < categoryPoints.length; i++) {\n var other = categoryPoints[i];\n if (other) {\n var stack = point.series.stack;\n var otherStack = other.series.stack;\n\n if ((stack && otherStack) && stack.group !== otherStack.group) {\n continue;\n }\n\n if (isNumber(other.value)) {\n categorySum += Math.abs(other.value);\n otherValues.push(Math.abs(other.value));\n }\n }\n }\n\n if (categorySum > 0) {\n return point.value / categorySum;\n }\n }\n\n return point.value;\n },\n\n plotRange: function(point, startValue) {\n var this$1$1 = this;\n if (startValue === void 0) { startValue = 0; }\n\n var categoryPoints = this.categoryPoints[point.categoryIx];\n\n if (this.options.isStacked) {\n var plotValue = this.plotValue(point);\n var positive = plotValue >= 0;\n var prevValue = startValue;\n var isStackedBar = false;\n var stack = defined(point.series.stack) ? point.series.stack : this.options.defaultStack;\n var isNonGroupStack = function (stack) { return stack === true || typeof stack === datavizConstants.OBJECT && !stack.group; };\n\n if (stack) {\n for (var i = 0; i < categoryPoints.length; i++) {\n var other = categoryPoints[i];\n\n if (point === other) {\n break;\n }\n\n var otherStack = defined(other.series.stack) ? other.series.stack : this$1$1.options.defaultStack;\n\n if (!otherStack) {\n continue;\n }\n\n if (typeof stack === datavizConstants.STRING && stack !== otherStack) {\n continue;\n }\n\n if (isNonGroupStack(stack) && !isNonGroupStack(otherStack)) {\n continue;\n }\n\n if (stack.group && stack.group !== otherStack.group) {\n continue;\n }\n\n var otherValue = this$1$1.plotValue(other);\n if ((otherValue >= 0 && positive) ||\n (otherValue < 0 && !positive)) {\n // zero values should be skipped for log axis (startValue !== 0)\n if (startValue === 0 || otherValue !== 0) {\n prevValue += otherValue;\n plotValue += otherValue;\n isStackedBar = true;\n\n if (this$1$1.options.isStacked100) {\n plotValue = Math.min(plotValue, 1);\n }\n }\n }\n }\n }\n\n if (isStackedBar) {\n prevValue -= startValue;\n }\n\n return [ prevValue, plotValue ];\n }\n\n var series = point.series;\n var valueAxis = this.seriesValueAxis(series);\n var axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n\n return [ axisCrossingValue, dataviz.convertableToNumber(point.value) ? point.value : axisCrossingValue ];\n },\n\n stackLimits: function(axisName, stackName) {\n var this$1$1 = this;\n\n var min = MAX_VALUE;\n var max = MIN_VALUE;\n\n for (var i = 0; i < this.categoryPoints.length; i++) {\n var categoryPoints = this$1$1.categoryPoints[i];\n if (!categoryPoints) {\n continue;\n }\n\n for (var pIx = 0; pIx < categoryPoints.length; pIx++) {\n var point = categoryPoints[pIx];\n if (point) {\n if (point.series.stack === stackName || point.series.axis === axisName) {\n var to = this$1$1.plotRange(point, 0)[1];\n if (defined(to) && isFinite(to)) {\n max = Math.max(max, to);\n min = Math.min(min, to);\n }\n }\n }\n }\n }\n\n return { min: min, max: max };\n },\n\n updateStackRange: function() {\n var this$1$1 = this;\n\n var ref = this.options;\n var isStacked = ref.isStacked;\n var chartSeries = ref.series;\n var limitsCache = {};\n\n if (isStacked) {\n for (var i = 0; i < chartSeries.length; i++) {\n var series = chartSeries[i];\n var axisName = series.axis;\n var key = axisName + series.stack;\n\n var limits = limitsCache[key];\n if (!limits) {\n limits = this$1$1.stackLimits(axisName, series.stack);\n\n var errorTotals = this$1$1.errorTotals;\n if (errorTotals) {\n if (errorTotals.negative.length) {\n limits.min = Math.min(limits.min, dataviz.sparseArrayLimits(errorTotals.negative).min);\n }\n if (errorTotals.positive.length) {\n limits.max = Math.max(limits.max, dataviz.sparseArrayLimits(errorTotals.positive).max);\n }\n }\n\n if (limits.min !== MAX_VALUE || limits.max !== MIN_VALUE) {\n limitsCache[key] = limits;\n } else {\n limits = null;\n }\n }\n\n if (limits) {\n this$1$1.valueAxisRanges[axisName] = limits;\n }\n }\n }\n },\n\n addErrorBar: function(point, data, categoryIx) {\n var value = point.value;\n var series = point.series;\n var seriesIx = point.seriesIx;\n var errorBars = point.options.errorBars;\n var lowValue = data.fields[ERROR_LOW_FIELD];\n var highValue = data.fields[ERROR_HIGH_FIELD];\n var errorRange;\n\n if (isNumber(lowValue) && isNumber(highValue)) {\n errorRange = { low: lowValue, high: highValue };\n } else if (errorBars && defined(errorBars.value)) {\n this.seriesErrorRanges = this.seriesErrorRanges || [];\n this.seriesErrorRanges[seriesIx] = this.seriesErrorRanges[seriesIx] ||\n new ErrorRangeCalculator(errorBars.value, series, VALUE);\n\n errorRange = this.seriesErrorRanges[seriesIx].getErrorRange(value, errorBars.value);\n }\n\n if (errorRange) {\n point.low = errorRange.low;\n point.high = errorRange.high;\n this.addPointErrorBar(point, categoryIx);\n }\n },\n\n addPointErrorBar: function(point, categoryIx) {\n var isVertical = !this.options.invertAxes;\n var options = point.options.errorBars;\n var series = point.series;\n var low = point.low;\n var high = point.high;\n\n if (this.options.isStacked) {\n var stackedErrorRange = this.stackedErrorRange(point, categoryIx);\n low = stackedErrorRange.low;\n high = stackedErrorRange.high;\n } else {\n var fields = { categoryIx: categoryIx, series: series };\n this.updateRange({ value: low }, fields);\n this.updateRange({ value: high }, fields);\n }\n\n var errorBar = new CategoricalErrorBar(low, high, isVertical, this, series, options);\n point.errorBars = [ errorBar ];\n point.append(errorBar);\n },\n\n stackedErrorRange: function(point, categoryIx) {\n var plotValue = this.plotRange(point, 0)[1] - point.value;\n var low = point.low + plotValue;\n var high = point.high + plotValue;\n\n this.errorTotals = this.errorTotals || { positive: [], negative: [] };\n\n if (low < 0) {\n this.errorTotals.negative[categoryIx] = Math.min(this.errorTotals.negative[categoryIx] || 0, low);\n }\n\n if (high > 0) {\n this.errorTotals.positive[categoryIx] = Math.max(this.errorTotals.positive[categoryIx] || 0, high);\n }\n\n return { low: low, high: high };\n },\n\n addValue: function(data, fields) {\n var categoryIx = fields.categoryIx;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n\n var categoryPoints = this.categoryPoints[categoryIx];\n if (!categoryPoints) {\n this.categoryPoints[categoryIx] = categoryPoints = [];\n }\n\n var seriesPoints = this.seriesPoints[seriesIx];\n if (!seriesPoints) {\n this.seriesPoints[seriesIx] = seriesPoints = [];\n }\n\n var point = this.createPoint(data, fields);\n if (point) {\n $.extend(point, fields);\n\n point.owner = this;\n point.noteText = data.fields.noteText;\n if (!defined(point.dataItem)) {\n point.dataItem = series.data[categoryIx];\n }\n this.addErrorBar(point, data, categoryIx);\n }\n\n this.points.push(point);\n seriesPoints.push(point);\n categoryPoints.push(point);\n\n this.updateRange(data.valueFields, fields);\n },\n\n evalPointOptions: function(options, value, fields) {\n var categoryIx = fields.categoryIx;\n var category = fields.category;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var state = {\n defaults: series._defaults,\n excluded: [\n \"data\", \"aggregate\", \"_events\", \"tooltip\", \"content\", \"template\",\n \"visual\", \"toggle\", \"_outOfRangeMinPoint\", \"_outOfRangeMaxPoint\",\n \"drilldownSeriesFactory\", \"ariaTemplate\", \"ariaContent\"\n ]\n };\n\n var doEval = this._evalSeries[seriesIx];\n if (!defined(doEval)) {\n this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n }\n\n var pointOptions = options;\n if (doEval) {\n pointOptions = deepExtend({}, pointOptions);\n evalOptions(pointOptions, {\n value: value,\n category: category,\n index: categoryIx,\n series: series,\n dataItem: series.data[categoryIx]\n }, state);\n }\n\n return pointOptions;\n },\n\n updateRange: function(data, fields) {\n var axisName = fields.series.axis;\n var value = data.value;\n var axisRange = this.valueAxisRanges[axisName];\n\n if (isFinite(value) && value !== null) {\n axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange.min = Math.min(axisRange.min, value);\n axisRange.max = Math.max(axisRange.max, value);\n }\n },\n\n seriesValueAxis: function(series) {\n var plotArea = this.plotArea;\n var axisName = series.axis;\n var axis = axisName ? plotArea.namedValueAxes[axisName] : plotArea.valueAxis;\n\n if (!axis) {\n throw new Error(\"Unable to locate value axis with name \" + axisName);\n }\n\n return axis;\n },\n\n reflow: function(targetBox) {\n var this$1$1 = this;\n\n var categorySlots = this.categorySlots = [];\n var chartPoints = this.points;\n var categoryAxis = this.categoryAxis;\n var pointIx = 0;\n\n this.traverseDataPoints(function (data, fields) {\n var categoryIx = fields.categoryIx;\n var currentSeries = fields.series;\n\n var valueAxis = this$1$1.seriesValueAxis(currentSeries);\n var point = chartPoints[pointIx++];\n\n var categorySlot = categorySlots[categoryIx];\n if (!categorySlot) {\n categorySlots[categoryIx] = categorySlot =\n this$1$1.categorySlot(categoryAxis, categoryIx, valueAxis);\n }\n\n if (point) {\n var plotRange = this$1$1.plotRange(point, valueAxis.startValue());\n var valueSlot = this$1$1.valueSlot(valueAxis, plotRange);\n if (valueSlot) {\n var pointSlot = this$1$1.pointSlot(categorySlot, valueSlot);\n\n point.aboveAxis = this$1$1.aboveAxis(point, valueAxis);\n point.stackValue = plotRange[1];\n\n if (this$1$1.options.isStacked100) {\n point.percentage = this$1$1.plotValue(point);\n }\n\n this$1$1.reflowPoint(point, pointSlot);\n } else {\n point.visible = false;\n }\n }\n });\n\n this.reflowCategories(categorySlots);\n if (!this.options.clip && this.options.limitPoints && this.points.length) {\n this.limitPoints();\n }\n\n this.box = targetBox;\n },\n\n valueSlot: function(valueAxis, plotRange) {\n return valueAxis.getSlot(plotRange[0], plotRange[1], !this.options.clip);\n },\n\n limitPoints: function() {\n var this$1$1 = this;\n\n var categoryPoints = this.categoryPoints;\n var points = categoryPoints[0].concat(last(categoryPoints));\n for (var idx = 0; idx < points.length; idx++) {\n if (points[idx]) {\n this$1$1.limitPoint(points[idx]);\n }\n }\n },\n\n limitPoint: function(point) {\n var limitedSlot = this.categoryAxis.limitSlot(point.box);\n if (!limitedSlot.equals(point.box)) {\n point.reflow(limitedSlot);\n }\n },\n\n aboveAxis: function(point, valueAxis) {\n var axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n var value = point.value;\n\n return valueAxis.options.reverse ?\n value < axisCrossingValue : value >= axisCrossingValue;\n },\n\n categoryAxisCrossingValue: function(valueAxis) {\n var categoryAxis = this.categoryAxis;\n var options = valueAxis.options;\n var crossingValues = [].concat(\n options.axisCrossingValues || options.axisCrossingValue\n );\n\n return crossingValues[categoryAxis.axisIndex || 0] || 0;\n },\n\n reflowPoint: function(point, pointSlot) {\n point.reflow(pointSlot);\n },\n\n reflowCategories: function() { },\n\n pointSlot: function(categorySlot, valueSlot) {\n var options = this.options;\n var invertAxes = options.invertAxes;\n var slotX = invertAxes ? valueSlot : categorySlot;\n var slotY = invertAxes ? categorySlot : valueSlot;\n\n return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n },\n\n categorySlot: function(categoryAxis, categoryIx) {\n return categoryAxis.getSlot(categoryIx);\n },\n\n traverseDataPoints: function(callback) {\n var this$1$1 = this;\n\n var series = this.options.series;\n var count = categoriesCount(series);\n var seriesCount = series.length;\n\n for (var seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n this$1$1._outOfRangeCallback(series[seriesIx], \"_outOfRangeMinPoint\", seriesIx, callback);\n }\n\n for (var categoryIx = 0; categoryIx < count; categoryIx++) {\n for (var seriesIx$1 = 0; seriesIx$1 < seriesCount; seriesIx$1++) {\n var currentSeries = series[seriesIx$1];\n var currentCategory = this$1$1.categoryAxis.categoryAt(categoryIx);\n var pointData = this$1$1.plotArea.bindPoint(currentSeries, categoryIx);\n\n callback(pointData, {\n category: currentCategory,\n categoryIx: categoryIx,\n categoriesCount: count,\n series: currentSeries,\n seriesIx: seriesIx$1\n });\n }\n }\n\n for (var seriesIx$2 = 0; seriesIx$2 < seriesCount; seriesIx$2++) {\n this$1$1._outOfRangeCallback(series[seriesIx$2], \"_outOfRangeMaxPoint\", seriesIx$2, callback);\n }\n },\n\n _outOfRangeCallback: function(series, field, seriesIx, callback) {\n var outOfRangePoint = series[field];\n if (outOfRangePoint) {\n var categoryIx = outOfRangePoint.categoryIx;\n var pointData = this.plotArea.bindPoint(series, categoryIx, outOfRangePoint.item);\n\n callback(pointData, {\n category: outOfRangePoint.category,\n categoryIx: categoryIx,\n series: series,\n seriesIx: seriesIx,\n dataItem: outOfRangePoint.item\n });\n }\n },\n\n formatPointValue: function(point, format) {\n if (point.value === null) {\n return \"\";\n }\n\n return this.chartService.format.auto(format, point.value);\n },\n\n pointValue: function(data) {\n return data.valueFields.value;\n }\n });\n\n setDefaultOptions(CategoricalChart, {\n series: [],\n invertAxes: false,\n isStacked: false,\n clip: true,\n limitPoints: true\n });\n\n var PointEventsMixin = {\n click: function(chart, e) {\n return chart.trigger(\n SERIES_CLICK,\n this.eventArgs(e)\n );\n },\n\n hover: function(chart, e) {\n return chart.trigger(\n SERIES_HOVER,\n this.eventArgs(e)\n );\n },\n\n over: function(chart, e) {\n return chart.trigger(\n SERIES_OVER,\n this.eventArgs(e)\n );\n },\n\n out: function(chart, e) {\n return chart.trigger(\n SERIES_LEAVE,\n this.eventArgs(e)\n );\n },\n\n eventArgs: function(e) {\n return {\n value: this.value,\n percentage: this.percentage,\n stackValue: this.stackValue,\n category: this.category,\n series: this.series,\n dataItem: this.dataItem,\n runningTotal: this.runningTotal,\n total: this.total,\n element: eventElement(e),\n originalEvent: e,\n point: this\n };\n }\n };\n\n var NoteMixin = {\n createNote: function() {\n var options = this.options.notes;\n var text = this.noteText || options.label.text;\n\n if (options.visible !== false && defined(text) && text !== null) {\n this.note = new dataviz.Note({\n value: this.value,\n text: text,\n dataItem: this.dataItem,\n category: this.category,\n series: this.series\n }, this.options.notes, this.owner.chartService);\n\n this.append(this.note);\n }\n }\n };\n\n function guid() {\n var id = \"\";\n var i;\n var random;\n\n for (i = 0; i < 32; i++) {\n random = Math.random() * 16 | 0;\n\n if (i === 8 || i === 12 || i === 16 || i === 20) {\n id += \"-\";\n }\n\n id += (i === 12 ? 4 : (i === 16 ? (random & 3 | 8) : random)).toString(16); // eslint-disable-line no-nested-ternary\n }\n\n return id;\n }\n\n var LinePoint = ChartElement.extend({\n init: function(value, options) {\n ChartElement.fn.init.call(this);\n\n this.value = value;\n this.options = options;\n this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n this.tooltipTracking = true;\n this._id = guid();\n },\n\n render: function() {\n var ref = this.options;\n var markers = ref.markers;\n\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n if (markers.visible && markers.size) {\n this.marker = this.createMarker();\n this.append(this.marker);\n }\n\n this.createLabel();\n this.createNote();\n\n if (this.errorBar) {\n this.append(this.errorBar);\n }\n },\n\n createLabel: function() {\n var options = this.options;\n var labels = options.labels;\n\n if (labels.visible) {\n this.label = this.createLabelElement(labels);\n this.append(this.label);\n }\n },\n\n createLabelElement: function(options) {\n return new TextBox(this.getLabelText(options),\n deepExtend({\n align: CENTER,\n vAlign: CENTER,\n margin: {\n left: 5,\n right: 5\n },\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex)\n }, options),\n this.pointData()\n );\n },\n\n getLabelText: function(options) {\n var labelTemplate = getTemplate(options);\n\n if (labelTemplate) {\n return labelTemplate(this.pointData());\n } else if (options.format) {\n return this.formatValue(options.format);\n }\n\n return this.value;\n },\n\n getAriaLabelText: function() {\n var labels = this.options.labels;\n var ariaTemplate = dataviz.getAriaTemplate(labels);\n\n if (ariaTemplate) {\n return ariaTemplate(this.pointData());\n }\n\n return this.getLabelText(labels);\n },\n\n markerBorder: function() {\n var options = this.options.markers;\n var background = options.background;\n var border = deepExtend({ color: this.color }, options.border);\n\n if (!defined(border.color)) {\n border.color = new Color(background).brightness(BORDER_BRIGHTNESS).toHex();\n }\n\n return border;\n },\n\n createVisual: function() {},\n\n createMarker: function() {\n var options = this.options.markers;\n var marker = new ShapeElement({\n type: options.type,\n width: options.size,\n height: options.size,\n rotation: options.rotation,\n background: options.background,\n border: this.markerBorder(),\n opacity: options.opacity,\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex),\n animation: options.animation,\n visual: options.visual,\n accessibilityOptions: deepExtend({\n ariaLabel: this.getAriaLabelText(this.options.labels)\n }, this.options.accessibility)\n }, {\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n category: this.category\n });\n\n return marker;\n },\n\n markerBox: function() {\n if (!this.marker) {\n this.marker = this.createMarker();\n this.marker.reflow(this._childBox);\n }\n\n return this.marker.box;\n },\n\n reflow: function(targetBox) {\n var this$1$1 = this;\n\n var ref = this;\n var options = ref.options;\n var aboveAxis = ref.aboveAxis;\n var vertical = options.vertical;\n\n this.render();\n\n this.box = targetBox;\n var childBox = targetBox.clone();\n\n if (vertical) {\n if (aboveAxis) {\n childBox.y1 -= childBox.height();\n } else {\n childBox.y2 += childBox.height();\n }\n } else {\n if (aboveAxis) {\n childBox.x1 += childBox.width();\n } else {\n childBox.x2 -= childBox.width();\n }\n }\n\n this._childBox = childBox;\n if (this.marker) {\n this.marker.reflow(childBox);\n }\n\n this.reflowLabel(childBox);\n\n if (this.errorBars) {\n for (var i = 0; i < this.errorBars.length; i++) {\n this$1$1.errorBars[i].reflow(childBox);\n }\n }\n\n if (this.note) {\n var noteTargetBox = this.markerBox();\n\n if (!(options.markers.visible && options.markers.size)) {\n var center = noteTargetBox.center();\n noteTargetBox = new Box(center.x, center.y, center.x, center.y);\n }\n\n this.note.reflow(noteTargetBox);\n }\n },\n\n reflowLabel: function(box) {\n var ref = this;\n var options = ref.options;\n var label = ref.label;\n var anchor = options.labels.position;\n\n if (label) {\n anchor = anchor === ABOVE ? TOP : anchor;\n anchor = anchor === BELOW ? BOTTOM : anchor;\n\n label.reflow(box);\n label.box.alignTo(this.markerBox(), anchor);\n label.reflow(label.box);\n }\n },\n\n createHighlight: function() {\n var markers = this.options.highlight.markers;\n var defaultColor = this.markerBorder().color;\n var options = this.options.markers;\n var size = options.size + (options.border.width || 0) + (markers.border.width || 0);\n\n var shadow = new ShapeElement({\n type: options.type,\n width: size,\n height: size,\n rotation: options.rotation,\n background: markers.color || defaultColor,\n border: {\n color: markers.border.color,\n width: markers.border.width,\n opacity: valueOrDefault(markers.border.opacity, 1)\n },\n opacity: valueOrDefault(markers.opacity, 1)\n });\n shadow.reflow(this._childBox);\n\n return shadow.getElement();\n },\n\n highlightVisual: function() {\n return (this.marker || {}).visual;\n },\n\n highlightVisualArgs: function() {\n var marker = this.marker;\n var visual, rect;\n\n if (marker) {\n rect = marker.paddingBox.toRect();\n visual = marker.visual;\n } else {\n var size = this.options.markers.size;\n var halfSize = size / 2;\n var center = this.box.center();\n rect = new geometry.Rect([ center.x - halfSize, center.y - halfSize ], [ size, size ]);\n }\n\n return {\n options: this.options,\n rect: rect,\n visual: visual\n };\n },\n\n createFocusHighlight: function() {\n var markerOptions = this.options.markers;\n var highlightOptions = this.options.accessibility.highlight;\n var size = markerOptions.size + (markerOptions.border.width || 0);\n\n var highlight = new ShapeElement({\n type: markerOptions.type,\n width: size,\n height: size,\n rotation: markerOptions.rotation,\n background: highlightOptions.color,\n border: highlightOptions.border,\n opacity: highlightOptions.opacity,\n padding: highlightOptions.border.width / 2,\n zIndex: highlightOptions.zIndex\n });\n\n highlight.reflow(this._childBox);\n\n return highlight.getElement();\n },\n\n tooltipAnchor: function() {\n var markerBox = this.markerBox();\n var clipBox = this.owner.pane.clipBox();\n var showTooltip = !clipBox || clipBox.overlaps(markerBox);\n\n if (showTooltip) {\n var x = markerBox.x2 + TOOLTIP_OFFSET;\n var horizontalAlign = LEFT;\n var y, verticalAlign;\n\n if (this.aboveAxis) {\n y = markerBox.y1;\n verticalAlign = BOTTOM;\n } else {\n y = markerBox.y2;\n verticalAlign = TOP;\n }\n\n return {\n point: new Point(x, y),\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n }\n },\n\n formatValue: function(format) {\n return this.owner.formatPointValue(this, format);\n },\n\n overlapsBox: function(box) {\n var markerBox = this.markerBox();\n return markerBox.overlaps(box);\n },\n\n unclipElements: function() {\n if (this.label) {\n this.label.options.noclip = true;\n }\n\n if (this.note) {\n this.note.options.noclip = true;\n }\n },\n\n pointData: function() {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n percentage: this.percentage,\n stackValue: this.stackValue,\n series: this.series\n };\n },\n\n focusVisual: function() {\n if (this.marker) {\n if (this.marker.visual) {\n this.marker.visual.options.set(\"id\", this._id);\n }\n\n this.toggleFocusHighlight(true);\n }\n },\n\n clearFocusFromVisual: function() {\n if (this.marker) {\n if (this.marker.visual) {\n this.marker.visual.options.set(\"id\", \"\");\n }\n\n this.toggleFocusHighlight(false);\n }\n },\n\n getIndex: function() {\n return defined(this.categoryIx) ? this.categoryIx : this.pointIx;\n }\n });\n\n LinePoint.prototype.defaults = {\n vertical: true,\n markers: {\n visible: true,\n background: WHITE,\n size: LINE_MARKER_SIZE,\n type: CIRCLE,\n border: {\n width: 2\n },\n opacity: 1\n },\n labels: {\n visible: false,\n position: ABOVE,\n margin: getSpacing(3),\n padding: getSpacing(4),\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n }\n },\n notes: {\n label: {}\n },\n highlight: {\n markers: {\n border: {\n color: \"#fff\",\n width: 2\n }\n },\n zIndex: datavizConstants.HIGHLIGHT_ZINDEX\n },\n errorBars: {\n line: {\n width: 1\n }\n },\n accessibility: {\n tabIndex: 0,\n role: CHART_POINT_ROLE,\n className: CHART_POINT_CLASSNAME,\n ariaRoleDescription: CHART_POINT_ROLE_DESCRIPTION\n }\n };\n\n deepExtend(LinePoint.prototype, PointEventsMixin);\n deepExtend(LinePoint.prototype, NoteMixin);\n\n var LineSegment = ChartElement.extend({\n init: function(linePoints, series, seriesIx) {\n ChartElement.fn.init.call(this);\n\n this.linePoints = linePoints;\n this.series = series;\n this.seriesIx = seriesIx;\n },\n\n points: function() {\n return this.toGeometryPoints(this.linePoints);\n },\n\n toGeometryPoints: function(points) {\n var result = [];\n for (var i = 0, length = points.length; i < length; i++) {\n if (points[i] && points[i].visible !== false) {\n result.push(points[i]._childBox.toRect().center());\n }\n }\n\n return result;\n },\n\n createVisual: function() {\n var this$1$1 = this;\n\n var customVisual = this.series.visual;\n if (customVisual) {\n this.visual = customVisual({\n points: this.toGeometryPoints(this.linePoints),\n series: this.series,\n sender: this.getSender(),\n createVisual: function () {\n this$1$1.segmentVisual();\n\n return this$1$1.visual;\n }\n });\n if (this.visual && !defined(this.visual.options.zIndex)) {\n this.visual.options.zIndex = this.series.zIndex;\n }\n } else {\n this.segmentVisual();\n }\n },\n\n segmentVisual: function() {\n var ref = this;\n var options = ref.options;\n var series = ref.series;\n var color = series.color;\n var defaults = series._defaults;\n\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n var line = Path.fromPoints(this.points(), {\n stroke: {\n color: color,\n width: series.width,\n opacity: series.opacity,\n dashType: series.dashType\n },\n zIndex: series.zIndex\n });\n\n if (options.closed) {\n line.close();\n }\n\n this.visual = line;\n },\n\n aliasFor: function(e, coords) {\n return this.parent.getNearestPoint(coords.x, coords.y, this.seriesIx);\n }\n });\n\n setDefaultOptions(LineSegment, {\n closed: false\n });\n\n var StepLineMixin = {\n calculateStepPoints: function(points) {\n var categoryAxis = this.parent.plotArea.seriesCategoryAxis(this.series);\n var ref = categoryAxis.options;\n var justified = ref.justified;\n var vertical = ref.vertical;\n var reverse = ref.reverse;\n\n var stepAxis = vertical ? X : Y;\n var axis = vertical ? Y : X;\n var stepDir = reverse ? 2 : 1;\n var dir = stepDir;\n\n var previousPoint = toGeometryPoint(points[0], stepAxis, stepDir, axis, dir);\n var result = [ previousPoint ];\n\n for (var idx = 1; idx < points.length; idx++) {\n var point = toGeometryPoint(points[idx], stepAxis, stepDir, axis, dir);\n\n if (previousPoint[stepAxis] !== point[stepAxis]) {\n var stepPoint = new GeometryPoint();\n stepPoint[stepAxis] = previousPoint[stepAxis];\n stepPoint[axis] = point[axis];\n\n result.push(stepPoint, point);\n }\n\n previousPoint = point;\n }\n\n if (!justified) {\n result.push(toGeometryPoint(last(points), stepAxis, stepDir, axis, reverse ? 1 : 2));\n } else if (previousPoint !== last(result)) {\n result.push(previousPoint);\n }\n\n return result;\n\n }\n };\n\n function toGeometryPoint(lintPoint, stepAxis, stepDir, axis, dir) {\n var box = lintPoint.box;\n var result = new GeometryPoint();\n\n result[stepAxis] = box[stepAxis + stepDir];\n result[axis] = box[axis + dir];\n\n return result;\n }\n\n var StepLineSegment = LineSegment.extend({\n points: function() {\n return this.calculateStepPoints(this.linePoints);\n }\n });\n\n deepExtend(StepLineSegment.prototype, StepLineMixin);\n\n var SplineSegment = LineSegment.extend({\n segmentVisual: function() {\n var series = this.series;\n var defaults = series._defaults;\n var color = series.color;\n\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n var curveProcessor = new CurveProcessor(this.options.closed);\n var segments = curveProcessor.process(this.points());\n var curve = new Path({\n stroke: {\n color: color,\n width: series.width,\n opacity: series.opacity,\n dashType: series.dashType\n },\n zIndex: series.zIndex\n });\n\n curve.segments.push.apply(curve.segments, segments);\n\n this.visual = curve;\n }\n });\n\n var LineChartMixin = {\n renderSegments: function() {\n var this$1$1 = this;\n\n var ref = this;\n var options = ref.options;\n var seriesPoints = ref.seriesPoints;\n var series = options.series;\n var seriesCount = seriesPoints.length;\n var lastSegment;\n\n this._segments = [];\n\n for (var seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n var currentSeries = series[seriesIx];\n var sortedPoints = this$1$1.sortPoints(seriesPoints[seriesIx]);\n var pointCount = sortedPoints.length;\n var linePoints = [];\n\n for (var pointIx = 0; pointIx < pointCount; pointIx++) {\n var point = sortedPoints[pointIx];\n if (point) {\n linePoints.push(point);\n } else if (this$1$1.seriesMissingValues(currentSeries) !== INTERPOLATE) {\n if (linePoints.length > 1) {\n lastSegment = this$1$1.createSegment(\n linePoints, currentSeries, seriesIx, lastSegment\n );\n this$1$1._addSegment(lastSegment);\n }\n linePoints = [];\n }\n }\n\n if (linePoints.length > 1) {\n lastSegment = this$1$1.createSegment(\n linePoints, currentSeries, seriesIx, lastSegment\n );\n this$1$1._addSegment(lastSegment);\n }\n }\n\n this.children.unshift.apply(this.children, this._segments);\n },\n\n _addSegment: function(segment) {\n this._segments.push(segment);\n segment.parent = this;\n },\n\n sortPoints: function(points) {\n return points;\n },\n\n seriesMissingValues: function(series) {\n var missingValues = series.missingValues;\n var assumeZero = !missingValues && this.options.isStacked;\n\n return assumeZero ? ZERO : missingValues || INTERPOLATE;\n },\n\n getNearestPoint: function(x, y, seriesIx) {\n var target = new Point(x, y);\n var allPoints = this.seriesPoints[seriesIx];\n var nearestPointDistance = MAX_VALUE;\n var nearestPoint;\n\n for (var i = 0; i < allPoints.length; i++) {\n var point = allPoints[i];\n\n if (point && defined(point.value) && point.value !== null && point.visible !== false) {\n var pointBox = point.box;\n var pointDistance = pointBox.center().distanceTo(target);\n\n if (pointDistance < nearestPointDistance) {\n nearestPoint = point;\n nearestPointDistance = pointDistance;\n }\n }\n }\n\n return nearestPoint;\n }\n };\n\n var ClipAnimation = Animation.extend({\n setup: function() {\n this._setEnd(this.options.box.x1);\n },\n\n step: function(pos) {\n var box = this.options.box;\n this._setEnd(dataviz.interpolateValue(box.x1, box.x2, pos));\n },\n\n _setEnd: function(x) {\n var element = this.element;\n var segments = element.segments;\n var topRight = segments[1].anchor();\n var bottomRight = segments[2].anchor();\n\n element.suspend();\n topRight.setX(x);\n element.resume();\n bottomRight.setX(x);\n }\n });\n\n setDefaultOptions(ClipAnimation, {\n duration: INITIAL_ANIMATION_DURATION\n });\n\n AnimationFactory.current.register(\"clip\", ClipAnimation);\n\n var ClipAnimationMixin = {\n createAnimation: function() {\n var root = this.getRoot();\n if (root && (root.options || {}).transitions !== false) {\n var box = root.size();\n var clipPath = Path.fromRect(box.toRect());\n this.visual.clip(clipPath);\n this.animation = new ClipAnimation(clipPath, {\n box: box\n });\n if (anyHasZIndex(this.options.series)) {\n this._setChildrenAnimation(clipPath);\n }\n }\n },\n\n _setChildrenAnimation: function(clipPath) {\n var points = this.animationPoints();\n\n for (var idx = 0; idx < points.length; idx++) {\n var point = points[idx];\n if (point && point.visual && defined(point.visual.options.zIndex)) {\n point.visual.clip(clipPath);\n }\n }\n }\n };\n\n var LineChart = CategoricalChart.extend({\n render: function() {\n\n CategoricalChart.fn.render.call(this);\n\n this.updateStackRange();\n this.renderSegments();\n },\n\n pointType: function() {\n return LinePoint;\n },\n\n createPoint: function(data, fields) {\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var missingValues = this.seriesMissingValues(series);\n var value = data.valueFields.value;\n\n if (!defined(value) || value === null) {\n if (missingValues === ZERO) {\n value = 0;\n } else {\n return null;\n }\n }\n\n var pointOptions = this.pointOptions(series, seriesIx);\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n var color = data.fields.color || series.color;\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n var point = new LinePoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n },\n\n plotRange: function(point) {\n var this$1$1 = this;\n\n var plotValue = this.plotValue(point);\n\n if (this.options.isStacked) {\n var categoryIx = point.categoryIx;\n var categoryPoints = this.categoryPoints[categoryIx];\n\n for (var i = 0; i < categoryPoints.length; i++) {\n var other = categoryPoints[i];\n\n if (point === other) {\n break;\n }\n\n plotValue += this$1$1.plotValue(other);\n\n if (this$1$1.options.isStacked100) {\n plotValue = Math.min(plotValue, 1);\n }\n }\n\n }\n\n return [ plotValue, plotValue ];\n },\n\n createSegment: function(linePoints, currentSeries, seriesIx) {\n var style = currentSeries.style;\n var pointType;\n\n if (style === STEP) {\n pointType = StepLineSegment;\n } else if (style === SMOOTH) {\n pointType = SplineSegment;\n } else {\n pointType = LineSegment;\n }\n\n return new pointType(linePoints, currentSeries, seriesIx);\n },\n\n animationPoints: function() {\n var points = this.points;\n var result = [];\n for (var idx = 0; idx < points.length; idx++) {\n result.push((points[idx] || {}).marker);\n }\n return result.concat(this._segments);\n },\n\n supportsPointInactiveOpacity: function() {\n return false;\n }\n });\n\n deepExtend(LineChart.prototype, LineChartMixin, ClipAnimationMixin);\n\n var AreaSegment = LineSegment.extend({\n init: function(linePoints, currentSeries, seriesIx, prevSegment, stackPoints) {\n LineSegment.fn.init.call(this, linePoints, currentSeries, seriesIx);\n\n this.prevSegment = prevSegment;\n this.stackPoints = stackPoints;\n },\n\n createVisual: function() {\n var series = this.series;\n var defaults = series._defaults;\n var lineOptions = series.line || {};\n var color = series.color;\n\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n this.visual = new Group({\n zIndex: series.zIndex\n });\n\n this.createFill({\n fill: {\n color: color,\n opacity: series.opacity\n },\n stroke: null\n });\n\n if (lineOptions.width > 0 && lineOptions.visible !== false) {\n this.createStroke({\n stroke: deepExtend({\n color: color,\n opacity: series.opacity,\n lineCap: \"butt\"\n }, lineOptions)\n });\n }\n },\n\n strokeSegments: function() {\n var segments = this._strokeSegments;\n\n if (!segments) {\n segments = this._strokeSegments = this.createStrokeSegments();\n }\n\n return segments;\n },\n\n createStrokeSegments: function() {\n return this.segmentsFromPoints(this.points());\n },\n\n stackSegments: function() {\n if (this.prevSegment) {\n return this.prevSegment.createStackSegments(this.stackPoints);\n }\n\n return this.createStackSegments(this.stackPoints);\n },\n\n createStackSegments: function(stackPoints) {\n return this.segmentsFromPoints(this.toGeometryPoints(stackPoints)).reverse();\n },\n\n segmentsFromPoints: function(points) {\n return points.map(function (point) { return new geometry.Segment(point); });\n },\n\n createStroke: function(style) {\n var stroke = new Path(style);\n stroke.segments.push.apply(stroke.segments, this.strokeSegments());\n\n this.visual.append(stroke);\n },\n\n hasStackSegment: function() {\n return this.prevSegment || (this.stackPoints && this.stackPoints.length);\n },\n\n createFill: function(style) {\n var strokeSegments = this.strokeSegments();\n var fillSegments = strokeSegments.slice(0);\n var hasStackSegments = this.hasStackSegment();\n\n if (hasStackSegments) {\n var stackSegments = this.stackSegments();\n\n append(fillSegments, stackSegments);\n }\n\n var fill = new Path(style);\n fill.segments.push.apply(fill.segments, fillSegments);\n\n if (!hasStackSegments && strokeSegments.length > 1) {\n this.fillToAxes(fill);\n }\n\n this.visual.append(fill);\n },\n\n fillToAxes: function(fillPath) {\n var chart = this.parent;\n var invertAxes = chart.options.invertAxes;\n var valueAxis = chart.seriesValueAxis(this.series);\n var crossingValue = chart.categoryAxisCrossingValue(valueAxis);\n var endSlot = valueAxis.getSlot(crossingValue, crossingValue, true);\n var segments = this.strokeSegments();\n var firstPoint = segments[0].anchor();\n var lastPoint = last(segments).anchor();\n var end = invertAxes ? endSlot.x1 : endSlot.y1;\n\n if (invertAxes) {\n fillPath.lineTo(end, lastPoint.y)\n .lineTo(end, firstPoint.y);\n } else {\n fillPath.lineTo(lastPoint.x, end)\n .lineTo(firstPoint.x, end);\n }\n }\n });\n\n var StepAreaSegment = AreaSegment.extend({\n createStrokeSegments: function() {\n return this.segmentsFromPoints(this.calculateStepPoints(this.linePoints));\n },\n\n createStackSegments: function(stackPoints) {\n return this.segmentsFromPoints(this.calculateStepPoints(stackPoints)).reverse();\n }\n });\n\n deepExtend(StepAreaSegment.prototype, StepLineMixin);\n\n var SplineAreaSegment = AreaSegment.extend({\n createStrokeSegments: function() {\n var curveProcessor = new CurveProcessor(this.options.closed);\n var linePoints = this.points();\n\n return curveProcessor.process(linePoints);\n },\n\n createStackSegments: function() {\n var strokeSegments = this.strokeSegments();\n var stackSegments = [];\n for (var idx = strokeSegments.length - 1; idx >= 0; idx--) {\n var segment = strokeSegments[idx];\n stackSegments.push(new geometry.Segment(\n segment.anchor(),\n segment.controlOut(),\n segment.controlIn()\n ));\n }\n\n return stackSegments;\n }\n });\n\n var AreaChart = LineChart.extend({\n createSegment: function(linePoints, currentSeries, seriesIx, prevSegment) {\n var isStacked = this.options.isStacked;\n var style = (currentSeries.line || {}).style;\n var previousSegment;\n\n var stackPoints;\n if (isStacked && seriesIx > 0 && prevSegment) {\n var missingValues = this.seriesMissingValues(currentSeries);\n if (missingValues !== \"gap\") {\n stackPoints = prevSegment.linePoints;\n previousSegment = prevSegment;\n } else {\n stackPoints = this._gapStackPoints(linePoints, seriesIx, style);\n }\n }\n\n var pointType;\n if (style === STEP) {\n pointType = StepAreaSegment;\n } else if (style === SMOOTH) {\n pointType = SplineAreaSegment;\n } else {\n pointType = AreaSegment;\n }\n\n return new pointType(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n },\n\n reflow: function(targetBox) {\n var this$1$1 = this;\n\n LineChart.fn.reflow.call(this, targetBox);\n\n var stackPoints = this._stackPoints;\n if (stackPoints) {\n for (var idx = 0; idx < stackPoints.length; idx++) {\n var stackPoint = stackPoints[idx];\n var pointSlot = this$1$1.categoryAxis.getSlot(stackPoint.categoryIx);\n stackPoint.reflow(pointSlot);\n }\n }\n },\n\n _gapStackPoints: function(linePoints, seriesIx, style) {\n var this$1$1 = this;\n\n var seriesPoints = this.seriesPoints;\n var startIdx = linePoints[0].categoryIx;\n var length = linePoints.length;\n if (startIdx < 0) {\n startIdx = 0;\n length--;\n }\n\n var endIdx = startIdx + length;\n var pointOffset = this.seriesOptions[0]._outOfRangeMinPoint ? 1 : 0;\n var stackPoints = [];\n\n this._stackPoints = this._stackPoints || [];\n for (var categoryIx = startIdx; categoryIx < endIdx; categoryIx++) {\n var pointIx = categoryIx + pointOffset;\n var currentSeriesIx = seriesIx;\n var point = (void 0);\n\n do {\n currentSeriesIx--;\n point = seriesPoints[currentSeriesIx][pointIx];\n } while (currentSeriesIx > 0 && !point);\n\n if (point) {\n if (style !== STEP && categoryIx > startIdx && !seriesPoints[currentSeriesIx][pointIx - 1]) {\n stackPoints.push(this$1$1._previousSegmentPoint(categoryIx, pointIx, pointIx - 1, currentSeriesIx));\n }\n\n stackPoints.push(point);\n\n if (style !== STEP && categoryIx + 1 < endIdx && !seriesPoints[currentSeriesIx][pointIx + 1]) {\n stackPoints.push(this$1$1._previousSegmentPoint(categoryIx, pointIx, pointIx + 1, currentSeriesIx));\n }\n } else {\n var gapStackPoint = this$1$1._createGapStackPoint(categoryIx);\n this$1$1._stackPoints.push(gapStackPoint);\n stackPoints.push(gapStackPoint);\n }\n }\n\n return stackPoints;\n },\n\n _previousSegmentPoint: function(categoryIx, pointIx, segmentIx, seriesIdx) {\n var seriesPoints = this.seriesPoints;\n var index = seriesIdx;\n var point;\n\n while (index > 0 && !point) {\n index--;\n point = seriesPoints[index][segmentIx];\n }\n\n if (!point) {\n point = this._createGapStackPoint(categoryIx);\n this._stackPoints.push(point);\n } else {\n point = seriesPoints[index][pointIx];\n }\n\n return point;\n },\n\n _createGapStackPoint: function(categoryIx) {\n var options = this.pointOptions({}, 0);\n var point = new LinePoint(0, options);\n point.categoryIx = categoryIx;\n point.series = {};\n\n return point;\n },\n\n seriesMissingValues: function(series) {\n return series.missingValues || ZERO;\n },\n\n supportsPointInactiveOpacity: function() {\n return false;\n }\n });\n\n var AxisGroupRangeTracker = Class.extend({\n init: function() {\n\n this.axisRanges = {};\n },\n\n update: function(chartAxisRanges) {\n var axisRanges = this.axisRanges;\n\n for (var axisName in chartAxisRanges) {\n var chartRange = chartAxisRanges[axisName];\n var range = axisRanges[axisName];\n axisRanges[axisName] = range = range || { min: MAX_VALUE, max: MIN_VALUE };\n\n range.min = Math.min(range.min, chartRange.min);\n range.max = Math.max(range.max, chartRange.max);\n }\n },\n\n reset: function(axisName) {\n this.axisRanges[axisName] = undefined;\n },\n\n query: function(axisName) {\n return this.axisRanges[axisName];\n }\n });\n\n var BarLabel = ChartElement.extend({\n init: function(content, options, pointData) {\n ChartElement.fn.init.call(this, options);\n\n this.textBox = new TextBox(content, this.options, pointData);\n this.append(this.textBox);\n },\n\n createVisual: function() {\n this.textBox.options.noclip = this.options.noclip;\n },\n\n reflow: function(targetBox) {\n var options = this.options;\n var vertical = options.vertical;\n var aboveAxis = options.aboveAxis;\n var text = this.children[0];\n var textOptions = text.options;\n var box = text.box;\n var padding = text.options.padding;\n var labelBox = targetBox;\n\n textOptions.align = vertical ? CENTER : LEFT;\n textOptions.vAlign = vertical ? TOP : CENTER;\n\n if (options.position === INSIDE_END) {\n if (vertical) {\n textOptions.vAlign = TOP;\n\n if (!aboveAxis && box.height() < targetBox.height()) {\n textOptions.vAlign = BOTTOM;\n }\n } else {\n textOptions.align = aboveAxis ? RIGHT : LEFT;\n }\n } else if (options.position === CENTER) {\n textOptions.vAlign = CENTER;\n textOptions.align = CENTER;\n } else if (options.position === INSIDE_BASE) {\n if (vertical) {\n textOptions.vAlign = aboveAxis ? BOTTOM : TOP;\n } else {\n textOptions.align = aboveAxis ? LEFT : RIGHT;\n }\n } else if (options.position === OUTSIDE_END) {\n if (vertical) {\n if (aboveAxis) {\n labelBox = new Box(\n targetBox.x1, targetBox.y1 - box.height(),\n targetBox.x2, targetBox.y1\n );\n } else {\n labelBox = new Box(\n targetBox.x1, targetBox.y2,\n targetBox.x2, targetBox.y2 + box.height()\n );\n }\n } else {\n textOptions.align = CENTER;\n if (aboveAxis) {\n labelBox = new Box(\n targetBox.x2, targetBox.y1,\n targetBox.x2 + box.width(), targetBox.y2\n );\n } else {\n labelBox = new Box(\n targetBox.x1 - box.width(), targetBox.y1,\n targetBox.x1, targetBox.y2\n );\n }\n }\n }\n\n if (!options.rotation) {\n if (vertical) {\n padding.left = padding.right =\n (labelBox.width() - text.contentBox.width()) / 2;\n } else {\n padding.top = padding.bottom =\n (labelBox.height() - text.contentBox.height()) / 2;\n }\n }\n\n text.reflow(labelBox);\n },\n\n alignToClipBox: function(clipBox) {\n var vertical = this.options.vertical;\n var field = vertical ? Y : X;\n var start = field + \"1\";\n var end = field + \"2\";\n var text = this.children[0];\n var parentBox = this.parent.box;\n\n if (parentBox[start] < clipBox[start] || clipBox[end] < parentBox[end]) {\n var targetBox = text.paddingBox.clone();\n targetBox[start] = Math.max(parentBox[start], clipBox[start]);\n targetBox[end] = Math.min(parentBox[end], clipBox[end]);\n\n this.reflow(targetBox);\n }\n }\n });\n\n setDefaultOptions(BarLabel, {\n position: OUTSIDE_END,\n margin: getSpacing(3),\n padding: getSpacing(4),\n color: BLACK,\n background: \"\",\n border: {\n width: 1,\n color: \"\"\n },\n aboveAxis: true,\n vertical: false,\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n },\n zIndex: 2\n });\n\n function addAccessibilityAttributesToVisual(visual, accessibilityOptions) {\n if (accessibilityOptions) {\n visual.options.className = accessibilityOptions.className;\n visual.options.role = accessibilityOptions.role;\n visual.options.ariaLabel = accessibilityOptions.ariaLabel;\n visual.options.ariaRoleDescription = accessibilityOptions.ariaRoleDescription;\n visual.options.ariaChecked = accessibilityOptions.ariaChecked;\n }\n }\n\n var AccessibilityAttributesMixin = {\n addAccessibilityAttributesToVisual: function() {\n this._id = this._id || guid();\n\n var accessibilityOptions = deepExtend({\n ariaLabel: this.getAriaLabelText()\n }, this.options.accessibility);\n\n addAccessibilityAttributesToVisual(this.visual, accessibilityOptions);\n },\n\n getAriaLabelText: function getAriaLabelText() {\n var labels = this.options.labels;\n var ariaTemplate = dataviz.getAriaTemplate(labels);\n\n if (ariaTemplate) {\n return ariaTemplate(this.pointData());\n }\n\n return this.getLabelText(labels);\n },\n\n focusVisual: function focusVisual() {\n this.visual.options.set(\"id\", this._id);\n this.toggleFocusHighlight(true);\n },\n\n clearFocusFromVisual: function clearFocusFromVisual() {\n this.visual.options.set(\"id\", \"\");\n this.toggleFocusHighlight(false);\n }\n };\n\n var BAR_ALIGN_MIN_WIDTH = 6;\n\n var Bar = ChartElement.extend({\n init: function(value, options) {\n ChartElement.fn.init.call(this);\n\n this.options = options;\n this.color = options.color || WHITE;\n this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n this.value = value;\n },\n\n render: function() {\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n this.createLabel();\n this.createNote();\n\n if (this.errorBar) {\n this.append(this.errorBar);\n }\n },\n\n createLabel: function() {\n var options = this.options;\n var labels = options.labels;\n\n if (labels.visible) {\n this.label = this.createLabelElement(labels);\n this.append(this.label);\n }\n },\n\n createLabelElement: function(options) {\n return new BarLabel(this.getLabelText(options),\n deepExtend({\n vertical: this.options.vertical\n },\n options\n ), this.pointData());\n },\n\n getLabelText: function(options) {\n var labelTemplate = getTemplate(options);\n\n if (labelTemplate) {\n return labelTemplate(this.pointData());\n }\n\n return this.formatValue(options.format);\n },\n\n formatValue: function(format) {\n return this.owner.formatPointValue(this, format);\n },\n\n reflow: function(targetBox) {\n var this$1$1 = this;\n\n this.render();\n\n var label = this.label;\n\n this.box = targetBox;\n\n if (label) {\n label.options.aboveAxis = this.aboveAxis;\n label.reflow(targetBox);\n }\n\n if (this.note) {\n this.note.reflow(targetBox);\n }\n\n if (this.errorBars) {\n for (var i = 0; i < this.errorBars.length; i++) {\n this$1$1.errorBars[i].reflow(targetBox);\n }\n }\n },\n\n createVisual: function() {\n var this$1$1 = this;\n\n var ref = this;\n var box = ref.box;\n var options = ref.options;\n var customVisual = options.visual;\n\n if (this.visible !== false) {\n ChartElement.fn.createVisual.call(this);\n\n this.addAccessibilityAttributesToVisual();\n\n if (customVisual) {\n var visual = this.rectVisual = customVisual({\n category: this.category,\n dataItem: this.dataItem,\n value: this.value,\n sender: this.getSender(),\n series: this.series,\n percentage: this.percentage,\n stackValue: this.stackValue,\n runningTotal: this.runningTotal,\n total: this.total,\n rect: box.toRect(),\n createVisual: function () {\n var group = new Group();\n this$1$1.createRect(group);\n return group;\n },\n options: options\n });\n\n if (visual) {\n this.visual.append(visual);\n }\n } else if (box.width() > 0 && box.height() > 0) {\n this.createRect(this.visual);\n }\n }\n },\n\n createRect: function(visual) {\n var options = this.options;\n var border = options.border;\n var strokeOpacity = defined(border.opacity) ? border.opacity : options.opacity;\n var rect = this.box.toRect();\n\n rect.size.width = Math.round(rect.size.width);\n\n var path = this.rectVisual = Path.fromRect(rect, {\n fill: {\n color: this.color,\n opacity: options.opacity\n },\n stroke: {\n color: this.getBorderColor(),\n width: border.width,\n opacity: strokeOpacity,\n dashType: border.dashType\n }\n });\n\n var width = this.box.width();\n var height = this.box.height();\n\n var size = options.vertical ? width : height;\n\n if (size > BAR_ALIGN_MIN_WIDTH) {\n alignPathToPixel(path);\n\n // Fixes lineJoin issue in firefox when the joined lines are parallel\n if (width < 1 || height < 1) {\n path.options.stroke.lineJoin = \"round\";\n }\n }\n\n visual.append(path);\n\n if (hasGradientOverlay(options)) {\n var overlay = this.createGradientOverlay(path, { baseColor: this.color }, deepExtend({\n end: !options.vertical ? [ 0, 1 ] : undefined\n }, options.overlay));\n\n visual.append(overlay);\n }\n },\n\n createHighlight: function(style) {\n var highlight = Path.fromRect(this.box.toRect(), style);\n\n return alignPathToPixel(highlight);\n },\n\n highlightVisual: function() {\n return this.rectVisual;\n },\n\n highlightVisualArgs: function() {\n return {\n options: this.options,\n rect: this.box.toRect(),\n visual: this.rectVisual\n };\n },\n\n createFocusHighlight: function(style) {\n var borderWidth = this.options.accessibility.highlight.border.width;\n var highlight = Path.fromRect(this.box.pad(borderWidth / 2).toRect(), style);\n\n return alignPathToPixel(highlight);\n },\n\n getBorderColor: function() {\n var color = this.color;\n var border = this.options.border;\n var brightness = border._brightness || BORDER_BRIGHTNESS;\n var borderColor = border.color;\n\n if (!defined(borderColor)) {\n borderColor = new Color(color).brightness(brightness).toHex();\n }\n\n return borderColor;\n },\n\n tooltipAnchor: function() {\n var ref = this;\n var options = ref.options;\n var box = ref.box;\n var aboveAxis = ref.aboveAxis;\n var clipBox = this.owner.pane.clipBox() || box;\n var horizontalAlign = LEFT;\n var verticalAlign = TOP;\n var x, y;\n\n if (options.vertical) {\n x = Math.min(box.x2, clipBox.x2) + TOOLTIP_OFFSET;\n if (aboveAxis) {\n y = Math.max(box.y1, clipBox.y1);\n } else {\n y = Math.min(box.y2, clipBox.y2);\n verticalAlign = BOTTOM;\n }\n } else {\n var x1 = Math.max(box.x1, clipBox.x1);\n var x2 = Math.min(box.x2, clipBox.x2);\n\n if (options.isStacked) {\n verticalAlign = BOTTOM;\n if (aboveAxis) {\n horizontalAlign = RIGHT;\n x = x2;\n } else {\n x = x1;\n }\n y = Math.max(box.y1, clipBox.y1) - TOOLTIP_OFFSET;\n } else {\n if (aboveAxis) {\n x = x2 + TOOLTIP_OFFSET;\n } else {\n x = x1 - TOOLTIP_OFFSET;\n horizontalAlign = RIGHT;\n }\n y = Math.max(box.y1, clipBox.y1);\n }\n }\n\n return {\n point: new Point(x, y),\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n },\n\n overlapsBox: function(box) {\n return this.box.overlaps(box);\n },\n\n pointData: function() {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n percentage: this.percentage,\n stackValue: this.stackValue,\n runningTotal: this.runningTotal,\n total: this.total,\n series: this.series\n };\n },\n\n getIndex: function() {\n return this.categoryIx;\n }\n });\n\n deepExtend(Bar.prototype, PointEventsMixin);\n deepExtend(Bar.prototype, NoteMixin);\n deepExtend(Bar.prototype, AccessibilityAttributesMixin);\n\n Bar.prototype.defaults = {\n border: {\n width: 1\n },\n vertical: true,\n overlay: {\n gradient: \"glass\"\n },\n labels: {\n visible: false,\n format: \"{0}\"\n },\n opacity: 1,\n notes: {\n label: {}\n },\n accessibility: {\n role: CHART_POINT_ROLE,\n className: CHART_POINT_CLASSNAME,\n ariaRoleDescription: CHART_POINT_ROLE_DESCRIPTION\n }\n };\n\n function forEach(elements, callback) {\n elements.forEach(callback);\n }\n\n function forEachReverse(elements, callback) {\n var length = elements.length;\n\n for (var idx = length - 1; idx >= 0; idx--) {\n callback(elements[idx], idx - length - 1);\n }\n }\n\n var ClusterLayout = ChartElement.extend({\n init: function(options) {\n ChartElement.fn.init.call(this, options);\n\n this.forEach = options.rtl ? forEachReverse : forEach;\n },\n\n reflow: function(box) {\n var ref = this.options;\n var vertical = ref.vertical;\n var gap = ref.gap;\n var spacing = ref.spacing;\n var children = this.children;\n var count = children.length;\n var axis = vertical ? Y : X;\n var slots = count + gap + (spacing * (count - 1));\n var slotSize = (vertical ? box.height() : box.width()) / slots;\n var position = box[axis + 1] + slotSize * (gap / 2);\n\n this.forEach(children, function (child, idx) {\n var childBox = (child.box || box).clone();\n\n childBox[axis + 1] = position;\n childBox[axis + 2] = position + slotSize;\n\n child.reflow(childBox);\n if (idx < count - 1) {\n position += (slotSize * spacing);\n }\n\n position += slotSize;\n });\n }\n });\n\n setDefaultOptions(ClusterLayout, {\n vertical: false,\n gap: 0,\n spacing: 0\n });\n\n var StackWrap = ChartElement.extend({\n reflow: function(targetBox) {\n var this$1$1 = this;\n\n var positionAxis = this.options.vertical ? X : Y;\n var children = this.children;\n var childrenCount = children.length;\n var box = this.box = new Box();\n\n for (var i = 0; i < childrenCount; i++) {\n var currentChild = children[i];\n\n if (currentChild.visible !== false) {\n var childBox = currentChild.box.clone();\n childBox.snapTo(targetBox, positionAxis);\n\n if (i === 0) {\n box = this$1$1.box = childBox.clone();\n }\n\n currentChild.reflow(childBox);\n box.wrap(childBox);\n }\n }\n }\n });\n\n setDefaultOptions(StackWrap, {\n vertical: true\n });\n\n var BarChart = CategoricalChart.extend({\n render: function() {\n CategoricalChart.fn.render.call(this);\n this.updateStackRange();\n },\n\n pointType: function() {\n return Bar;\n },\n\n clusterType: function() {\n return ClusterLayout;\n },\n\n stackType: function() {\n return StackWrap;\n },\n\n stackLimits: function(axisName, stackName) {\n var limits = CategoricalChart.fn.stackLimits.call(this, axisName, stackName);\n\n return limits;\n },\n\n createPoint: function(data, fields) {\n var categoryIx = fields.categoryIx;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var stackOrDefault = defined(series.stack) ? series.stack : options.defaultStack;\n var value = this.pointValue(data);\n var pointOptions = this.pointOptions(series, seriesIx);\n\n var labelOptions = pointOptions.labels;\n if (stackOrDefault) {\n if (labelOptions.position === OUTSIDE_END) {\n labelOptions.position = INSIDE_END;\n }\n }\n\n pointOptions.isStacked = stackOrDefault;\n\n var color = data.fields.color || series.color;\n if (value < 0 && pointOptions.negativeColor) {\n color = pointOptions.negativeColor;\n }\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n var pointType = this.pointType();\n var point = new pointType(value, pointOptions);\n point.color = color;\n\n var cluster = children[categoryIx];\n if (!cluster) {\n var clusterType = this.clusterType();\n cluster = new clusterType({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n if (options.isStacked) {\n var stackWrap = this.getStackWrap(stackOrDefault, cluster);\n stackWrap.append(point);\n } else {\n cluster.append(point);\n }\n\n return point;\n },\n\n getStackWrap: function(stack, cluster) {\n var stackGroup = (typeof stack === datavizConstants.OBJECT) ? (stack.group || true) : stack;\n var wraps = cluster.children;\n var stackWrap;\n\n if (typeof stackGroup === datavizConstants.STRING || stackGroup === true) {\n for (var i = 0; i < wraps.length; i++) {\n if (wraps[i]._stackGroup === stackGroup) {\n stackWrap = wraps[i];\n break;\n }\n }\n }\n\n if (!stackWrap) {\n var stackType = this.stackType();\n stackWrap = new stackType({\n vertical: !this.options.invertAxes\n });\n stackWrap._stackGroup = stackGroup;\n cluster.append(stackWrap);\n }\n\n return stackWrap;\n },\n\n categorySlot: function(categoryAxis, categoryIx, valueAxis) {\n var options = this.options;\n var categorySlot = categoryAxis.getSlot(categoryIx);\n var startValue = valueAxis.startValue();\n\n if (options.isStacked) {\n var zeroSlot = valueAxis.getSlot(startValue, startValue, true);\n var stackAxis = options.invertAxes ? X : Y;\n categorySlot[stackAxis + 1] = categorySlot[stackAxis + 2] = zeroSlot[stackAxis + 1];\n }\n\n return categorySlot;\n },\n\n reflowCategories: function(categorySlots) {\n var children = this.children;\n var childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; i++) {\n children[i].reflow(categorySlots[i]);\n }\n },\n\n createAnimation: function() {\n this._setAnimationOptions();\n CategoricalChart.fn.createAnimation.call(this);\n\n if (anyHasZIndex(this.options.series)) {\n this._setChildrenAnimation();\n }\n },\n\n _setChildrenAnimation: function() {\n var this$1$1 = this;\n\n var points = this.points;\n\n for (var idx = 0; idx < points.length; idx++) {\n var point = points[idx];\n var pointVisual = point.visual;\n if (pointVisual && defined(pointVisual.options.zIndex)) {\n point.options.animation = this$1$1.options.animation;\n point.createAnimation();\n }\n }\n },\n\n _setAnimationOptions: function() {\n var options = this.options;\n var animation = options.animation || {};\n var origin;\n\n if (options.isStacked) {\n var valueAxis = this.seriesValueAxis(options.series[0]);\n origin = valueAxis.getSlot(valueAxis.startValue());\n } else {\n origin = this.categoryAxis.getSlot(0);\n }\n\n animation.origin = new GeometryPoint(origin.x1, origin.y1);\n animation.vertical = !options.invertAxes;\n }\n });\n\n setDefaultOptions(BarChart, {\n animation: {\n type: BAR\n }\n });\n\n var Candlestick = ChartElement.extend({\n init: function(value, options) {\n ChartElement.fn.init.call(this, options);\n this.value = value;\n },\n\n getLabelText: function(options) {\n return this.formatValue(options.format);\n },\n\n reflow: function(box) {\n var ref = this;\n var options = ref.options;\n var value = ref.value;\n var chart = ref.owner;\n var valueAxis = chart.seriesValueAxis(options);\n var ocSlot = valueAxis.getSlot(value.open, value.close);\n var lhSlot = valueAxis.getSlot(value.low, value.high);\n\n ocSlot.x1 = lhSlot.x1 = box.x1;\n ocSlot.x2 = lhSlot.x2 = box.x2;\n\n this.realBody = ocSlot;\n\n var mid = lhSlot.center().x;\n var points = [];\n\n points.push([ [ mid, lhSlot.y1 ], [ mid, ocSlot.y1 ] ]);\n points.push([ [ mid, ocSlot.y2 ], [ mid, lhSlot.y2 ] ]);\n\n this.lines = points;\n\n this.box = lhSlot.clone().wrap(ocSlot);\n\n if (!this._rendered) {\n this._rendered = true;\n this.createNote();\n }\n\n this.reflowNote();\n },\n\n reflowNote: function() {\n if (this.note) {\n this.note.reflow(this.box);\n }\n },\n\n createVisual: function() {\n ChartElement.fn.createVisual.call(this);\n\n this.addAccessibilityAttributesToVisual();\n\n this._mainVisual = this.mainVisual(this.options);\n this.visual.append(\n this._mainVisual\n );\n\n this.createOverlay();\n },\n\n mainVisual: function(options) {\n var group = new Group();\n\n this.createBody(group, options);\n this.createLines(group, options);\n\n return group;\n },\n\n createBody: function(container, options) {\n var body = Path.fromRect(this.realBody.toRect(), {\n fill: {\n color: this.color,\n opacity: options.opacity\n },\n stroke: null\n });\n\n if (options.border.width > 0) {\n body.options.set(\"stroke\", {\n color: this.getBorderColor(),\n width: options.border.width,\n dashType: options.border.dashType,\n opacity: valueOrDefault(options.border.opacity, options.opacity)\n });\n }\n\n alignPathToPixel(body);\n container.append(body);\n\n if (hasGradientOverlay(options)) {\n container.append(this.createGradientOverlay(body, { baseColor: this.color }, deepExtend({\n end: !options.vertical ? [ 0, 1 ] : undefined\n }, options.overlay)));\n }\n },\n\n createLines: function(container, options) {\n this.drawLines(container, options, this.lines, options.line);\n },\n\n drawLines: function(container, options, lines, lineOptions) {\n if (!lines) {\n return;\n }\n\n var lineStyle = {\n stroke: {\n color: lineOptions.color || this.color,\n opacity: valueOrDefault(lineOptions.opacity, options.opacity),\n width: lineOptions.width,\n dashType: lineOptions.dashType,\n lineCap: \"butt\"\n }\n };\n\n for (var i = 0; i < lines.length; i++) {\n var line = Path.fromPoints(lines[i], lineStyle);\n alignPathToPixel(line);\n container.append(line);\n }\n },\n\n getBorderColor: function() {\n var border = this.options.border;\n var borderColor = border.color;\n\n if (!defined(borderColor)) {\n borderColor = new Color(this.color).brightness(border._brightness).toHex();\n }\n\n return borderColor;\n },\n\n createOverlay: function() {\n var overlay = Path.fromRect(this.box.toRect(), {\n fill: {\n color: WHITE,\n opacity: 0\n },\n stroke: null\n });\n\n this.visual.append(overlay);\n },\n\n createHighlight: function() {\n var highlight = this.options.highlight;\n var normalColor = this.color;\n\n this.color = highlight.color || this.color;\n var overlay = this.mainVisual(\n deepExtend({}, this.options, {\n line: {\n color: this.getBorderColor()\n }\n }, highlight)\n );\n this.color = normalColor;\n\n return overlay;\n },\n\n highlightVisual: function() {\n return this._mainVisual;\n },\n\n highlightVisualArgs: function() {\n return {\n options: this.options,\n rect: this.box.toRect(),\n visual: this._mainVisual\n };\n },\n\n tooltipAnchor: function() {\n var box = this.box;\n var clipBox = this.owner.pane.clipBox() || box;\n\n return {\n point: new Point(box.x2 + TOOLTIP_OFFSET, Math.max(box.y1, clipBox.y1) + TOOLTIP_OFFSET),\n align: {\n horizontal: LEFT,\n vertical: TOP\n }\n };\n },\n\n formatValue: function(format) {\n return this.owner.formatPointValue(this, format);\n },\n\n overlapsBox: function(box) {\n return this.box.overlaps(box);\n },\n\n pointData: function() {\n return {\n dataItem: this.dataItem,\n value: this.value,\n meanPoints: this.meanPoints,\n medianPoints: this.medianPoints,\n whiskerPoints: this.whiskerPoints,\n stackValue: this.stackValue,\n series: this.series\n };\n },\n\n getIndex: function() {\n return this.categoryIx;\n }\n });\n\n Candlestick.prototype.createFocusHighlight = Bar.prototype.createFocusHighlight;\n\n setDefaultOptions(Candlestick, {\n vertical: true,\n border: {\n _brightness: 0.8\n },\n line: {\n width: 2\n },\n overlay: {\n gradient: \"glass\"\n },\n tooltip: {\n format: \"
  • \" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"
    {4:d}
    Open:{0:C}
    High:{1:C}
    Low:{2:C}
    Close:{3:C}
    \"\n },\n labels: {\n format: \"\"\n },\n highlight: {\n opacity: 1,\n border: {\n width: 1,\n opacity: 1\n },\n line: {\n width: 1,\n opacity: 1\n }\n },\n notes: {\n visible: true,\n label: {}\n },\n accessibility: {\n role: CHART_POINT_ROLE,\n className: CHART_POINT_CLASSNAME,\n ariaRoleDescription: CHART_POINT_ROLE_DESCRIPTION\n }\n });\n\n deepExtend(Candlestick.prototype, PointEventsMixin);\n deepExtend(Candlestick.prototype, NoteMixin);\n deepExtend(Candlestick.prototype, AccessibilityAttributesMixin);\n\n var CandlestickChart = CategoricalChart.extend({\n reflowCategories: function(categorySlots) {\n var children = this.children;\n var childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; i++) {\n children[i].reflow(categorySlots[i]);\n }\n },\n\n addValue: function(data, fields) {\n var categoryIx = fields.categoryIx;\n var category = fields.category;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var ref = this;\n var children = ref.children;\n var options = ref.options;\n var value = data.valueFields;\n var valueParts = this.splitValue(value);\n var hasValue = areNumbers(valueParts);\n var dataItem = series.data[categoryIx];\n var categoryPoints = this.categoryPoints[categoryIx];\n var point;\n\n if (!categoryPoints) {\n this.categoryPoints[categoryIx] = categoryPoints = [];\n }\n\n if (hasValue) {\n point = this.createPoint(data, fields);\n }\n\n var cluster = children[categoryIx];\n if (!cluster) {\n cluster = new ClusterLayout({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n if (point) {\n this.updateRange(value, fields);\n\n cluster.append(point);\n\n point.categoryIx = categoryIx;\n point.category = category;\n point.series = series;\n point.seriesIx = seriesIx;\n point.owner = this;\n point.dataItem = dataItem;\n point.noteText = data.fields.noteText;\n }\n\n this.points.push(point);\n categoryPoints.push(point);\n },\n\n pointType: function() {\n return Candlestick;\n },\n\n createPoint: function(data, fields) {\n var series = fields.series;\n var pointType = this.pointType();\n var value = data.valueFields;\n var pointOptions = deepExtend({}, series);\n var color = data.fields.color || series.color;\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n if (series.type === CANDLESTICK || series.type === OHLC) {\n if (value.open > value.close) {\n color = data.fields.downColor || series.downColor || series.color;\n }\n }\n\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n pointOptions.vertical = !this.options.invertAxes;\n\n var point = new pointType(value, pointOptions);\n point.color = color;\n\n return point;\n },\n\n splitValue: function(value) {\n return [ value.low, value.open, value.close, value.high ];\n },\n\n updateRange: function(value, fields) {\n var axisName = fields.series.axis;\n var parts = this.splitValue(value);\n var axisRange = this.valueAxisRanges[axisName] || { min: MAX_VALUE, max: MIN_VALUE };\n\n this.valueAxisRanges[axisName] = {\n min: Math.min.apply(Math, parts.concat([ axisRange.min ])),\n max: Math.max.apply(Math, parts.concat([ axisRange.max ]))\n };\n },\n\n formatPointValue: function(point, format) {\n var value = point.value;\n\n return this.chartService.format.auto(format,\n value.open, value.high,\n value.low, value.close, point.category\n );\n },\n\n animationPoints: function() {\n return this.points;\n }\n });\n\n deepExtend(CandlestickChart.prototype, ClipAnimationMixin);\n\n var BoxPlot = Candlestick.extend({\n init: function(value, options) {\n Candlestick.fn.init.call(this, value, options);\n\n this.createNote();\n },\n\n reflow: function(box) {\n var ref = this;\n var options = ref.options;\n var value = ref.value;\n var chart = ref.owner;\n var valueAxis = chart.seriesValueAxis(options);\n var whiskerSlot, boxSlot;\n\n this.boxSlot = boxSlot = valueAxis.getSlot(value.q1, value.q3);\n this.realBody = boxSlot;\n this.reflowBoxSlot(box);\n\n this.whiskerSlot = whiskerSlot = valueAxis.getSlot(value.lower, value.upper);\n this.reflowWhiskerSlot(box);\n\n var medianSlot = valueAxis.getSlot(value.median);\n\n if (value.mean) {\n var meanSlot = valueAxis.getSlot(value.mean);\n this.meanPoints = this.calcMeanPoints(box, meanSlot);\n }\n\n this.whiskerPoints = this.calcWhiskerPoints(boxSlot, whiskerSlot);\n this.medianPoints = this.calcMedianPoints(box, medianSlot);\n\n this.box = whiskerSlot.clone().wrap(boxSlot);\n this.reflowNote();\n },\n\n reflowBoxSlot: function(box) {\n this.boxSlot.x1 = box.x1;\n this.boxSlot.x2 = box.x2;\n },\n\n reflowWhiskerSlot: function(box) {\n this.whiskerSlot.x1 = box.x1;\n this.whiskerSlot.x2 = box.x2;\n },\n\n calcMeanPoints: function(box, meanSlot) {\n return [\n [ [ box.x1, meanSlot.y1 ], [ box.x2, meanSlot.y1 ] ]\n ];\n },\n\n calcWhiskerPoints: function(boxSlot, whiskerSlot) {\n var mid = whiskerSlot.center().x;\n return [ [\n [ mid - 5, whiskerSlot.y1 ], [ mid + 5, whiskerSlot.y1 ],\n [ mid, whiskerSlot.y1 ], [ mid, boxSlot.y1 ]\n ], [\n [ mid - 5, whiskerSlot.y2 ], [ mid + 5, whiskerSlot.y2 ],\n [ mid, whiskerSlot.y2 ], [ mid, boxSlot.y2 ]\n ] ];\n },\n\n calcMedianPoints: function(box, medianSlot) {\n return [\n [ [ box.x1, medianSlot.y1 ], [ box.x2, medianSlot.y1 ] ]\n ];\n },\n\n renderOutliers: function(options) {\n var this$1$1 = this;\n\n var value = this.value;\n var outliers = value.outliers || [];\n var outerFence = Math.abs(value.q3 - value.q1) * 3;\n var elements = [];\n var markers = options.markers || {};\n\n for (var i = 0; i < outliers.length; i++) {\n var outlierValue = outliers[i];\n if (outlierValue < value.q3 + outerFence && outlierValue > value.q1 - outerFence) {\n markers = options.outliers;\n } else {\n markers = options.extremes;\n }\n var markersBorder = deepExtend({}, markers.border);\n\n if (!defined(markersBorder.color)) {\n if (defined(this$1$1.color)) {\n markersBorder.color = this$1$1.color;\n } else {\n markersBorder.color =\n new Color(markers.background).brightness(BORDER_BRIGHTNESS).toHex();\n }\n }\n\n var shape = new ShapeElement({\n type: markers.type,\n width: markers.size,\n height: markers.size,\n rotation: markers.rotation,\n background: markers.background,\n border: markersBorder,\n opacity: markers.opacity\n });\n\n shape.value = outlierValue;\n\n elements.push(shape);\n }\n\n this.reflowOutliers(elements);\n return elements;\n },\n\n reflowOutliers: function(outliers) {\n var this$1$1 = this;\n\n var valueAxis = this.owner.seriesValueAxis(this.options);\n var center = this.box.center();\n\n for (var i = 0; i < outliers.length; i++) {\n var outlierValue = outliers[i].value;\n var markerBox = valueAxis.getSlot(outlierValue);\n\n if (this$1$1.options.vertical) {\n markerBox.move(center.x);\n } else {\n markerBox.move(undefined, center.y);\n }\n\n this$1$1.box = this$1$1.box.wrap(markerBox);\n outliers[i].reflow(markerBox);\n }\n },\n\n mainVisual: function(options) {\n var group = Candlestick.fn.mainVisual.call(this, options);\n var outliers = this.renderOutliers(options);\n\n for (var i = 0; i < outliers.length; i++) {\n var element = outliers[i].getElement();\n if (element) {\n group.append(element);\n }\n }\n\n return group;\n },\n\n createLines: function(container, options) {\n this.drawLines(container, options, this.whiskerPoints, options.whiskers);\n this.drawLines(container, options, this.medianPoints, options.median);\n this.drawLines(container, options, this.meanPoints, options.mean);\n },\n\n getBorderColor: function() {\n if ((this.options.border || {}).color) {\n return this.options.border.color;\n }\n\n if (this.color) {\n return this.color;\n }\n\n return Candlestick.fn.getBorderColor.call(this);\n }\n });\n\n setDefaultOptions(BoxPlot, {\n border: {\n _brightness: 0.8\n },\n line: {\n width: 2\n },\n median: {\n color: \"#f6f6f6\"\n },\n mean: {\n width: 2,\n dashType: \"dash\",\n color: \"#f6f6f6\"\n },\n overlay: {\n gradient: \"glass\"\n },\n tooltip: {\n format: \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"
    {6:d}
    Lower:{0:C}
    Q1:{1:C}
    Median:{2:C}
    Mean:{5:C}
    Q3:{3:C}
    Upper:{4:C}
    \"\n },\n highlight: {\n opacity: 1,\n border: {\n width: 1,\n opacity: 1\n },\n line: {\n width: 1,\n opacity: 1\n }\n },\n notes: {\n visible: true,\n label: {}\n },\n outliers: {\n visible: true,\n size: LINE_MARKER_SIZE,\n type: datavizConstants.CROSS,\n background: WHITE,\n border: {\n width: 2,\n opacity: 1\n },\n opacity: 0\n },\n extremes: {\n visible: true,\n size: LINE_MARKER_SIZE,\n type: CIRCLE,\n background: WHITE,\n border: {\n width: 2,\n opacity: 1\n },\n opacity: 0\n }\n });\n\n deepExtend(BoxPlot.prototype, PointEventsMixin);\n\n var VerticalBoxPlot = BoxPlot.extend({\n reflowBoxSlot: function(box) {\n this.boxSlot.y1 = box.y1;\n this.boxSlot.y2 = box.y2;\n },\n\n reflowWhiskerSlot: function(box) {\n this.whiskerSlot.y1 = box.y1;\n this.whiskerSlot.y2 = box.y2;\n },\n\n calcMeanPoints: function(box, meanSlot) {\n return [\n [ [ meanSlot.x1, box.y1 ], [ meanSlot.x1, box.y2 ] ]\n ];\n },\n\n calcWhiskerPoints: function(boxSlot, whiskerSlot) {\n var mid = whiskerSlot.center().y;\n return [ [\n [ whiskerSlot.x1, mid - 5 ], [ whiskerSlot.x1, mid + 5 ],\n [ whiskerSlot.x1, mid ], [ boxSlot.x1, mid ]\n ], [\n [ whiskerSlot.x2, mid - 5 ], [ whiskerSlot.x2, mid + 5 ],\n [ whiskerSlot.x2, mid ], [ boxSlot.x2, mid ]\n ] ];\n },\n\n calcMedianPoints: function(box, medianSlot) {\n return [\n [ [ medianSlot.x1, box.y1 ], [ medianSlot.x1, box.y2 ] ]\n ];\n }\n });\n\n var BoxPlotChart = CandlestickChart.extend({\n addValue: function(data, fields) {\n var categoryIx = fields.categoryIx;\n var category = fields.category;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var ref = this;\n var children = ref.children;\n var options = ref.options;\n var value = data.valueFields;\n var valueParts = this.splitValue(value);\n var hasValue = areNumbers(valueParts);\n var dataItem = series.data[categoryIx];\n var categoryPoints = this.categoryPoints[categoryIx];\n var point;\n\n if (!categoryPoints) {\n this.categoryPoints[categoryIx] = categoryPoints = [];\n }\n\n if (hasValue) {\n point = this.createPoint(data, fields);\n }\n\n var cluster = children[categoryIx];\n if (!cluster) {\n cluster = new ClusterLayout({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n if (point) {\n this.updateRange(value, fields);\n\n cluster.append(point);\n\n point.categoryIx = categoryIx;\n point.category = category;\n point.series = series;\n point.seriesIx = seriesIx;\n point.owner = this;\n point.dataItem = dataItem;\n }\n\n this.points.push(point);\n categoryPoints.push(point);\n },\n\n pointType: function() {\n if (this.options.invertAxes) {\n return VerticalBoxPlot;\n }\n\n return BoxPlot;\n },\n\n splitValue: function(value) {\n return [\n value.lower, value.q1, value.median,\n value.q3, value.upper\n ];\n },\n\n updateRange: function(value, fields) {\n var axisName = fields.series.axis;\n var parts = this.splitValue(value).concat(this.filterOutliers(value.outliers));\n\n if (defined(value.mean)) {\n parts = parts.concat(value.mean);\n }\n\n var axisRange = this.valueAxisRanges[axisName] || { min: MAX_VALUE, max: MIN_VALUE };\n\n this.valueAxisRanges[axisName] = {\n min: Math.min.apply(Math, parts.concat([ axisRange.min ])),\n max: Math.max.apply(Math, parts.concat([ axisRange.max ]))\n };\n },\n\n formatPointValue: function(point, format) {\n var value = point.value;\n\n return this.chartService.format.auto(format,\n value.lower, value.q1, value.median,\n value.q3, value.upper, value.mean, point.category\n );\n },\n\n filterOutliers: function(items) {\n var length = (items || []).length;\n var result = [];\n\n for (var i = 0; i < length; i++) {\n var item = items[i];\n if (defined(item) && item !== null) {\n result.push(item);\n }\n }\n\n return result;\n },\n\n supportsPointInactiveOpacity: function() {\n return false;\n }\n });\n\n var ScatterErrorBar = ErrorBarBase.extend({\n getAxis: function() {\n var axes = this.chart.seriesAxes(this.series);\n var axis = this.isVertical ? axes.y : axes.x;\n\n return axis;\n }\n });\n\n var ScatterChart = ChartElement.extend({\n init: function(plotArea, options) {\n\n ChartElement.fn.init.call(this, options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this._initFields();\n\n this.render();\n },\n\n _initFields: function() {\n // X and Y axis ranges grouped by name, e.g.:\n // primary: { min: 0, max: 1 }\n this.xAxisRanges = {};\n this.yAxisRanges = {};\n\n this.points = [];\n this.seriesPoints = [];\n this.seriesOptions = [];\n this._evalSeries = [];\n },\n\n render: function() {\n this.traverseDataPoints(this.addValue.bind(this));\n },\n\n addErrorBar: function(point, field, fields) {\n var value = point.value[field];\n var valueErrorField = field + \"Value\";\n var lowField = field + \"ErrorLow\";\n var highField = field + \"ErrorHigh\";\n var seriesIx = fields.seriesIx;\n var series = fields.series;\n var errorBars = point.options.errorBars;\n var lowValue = fields[lowField];\n var highValue = fields[highField];\n\n if (isNumber(value)) {\n var errorRange;\n if (isNumber(lowValue) && isNumber(highValue)) {\n errorRange = { low: lowValue, high: highValue };\n }\n\n if (errorBars && defined(errorBars[valueErrorField])) {\n this.seriesErrorRanges = this.seriesErrorRanges || { x: [], y: [] };\n this.seriesErrorRanges[field][seriesIx] = this.seriesErrorRanges[field][seriesIx] ||\n new ErrorRangeCalculator(errorBars[valueErrorField], series, field);\n\n errorRange = this.seriesErrorRanges[field][seriesIx].getErrorRange(value, errorBars[valueErrorField]);\n }\n\n if (errorRange) {\n this.addPointErrorBar(errorRange, point, field);\n }\n }\n },\n\n addPointErrorBar: function(errorRange, point, field) {\n var low = errorRange.low;\n var high = errorRange.high;\n var series = point.series;\n var options = point.options.errorBars;\n var isVertical = field === Y;\n var item = {};\n\n point[field + \"Low\"] = low;\n point[field + \"High\"] = high;\n\n point.errorBars = point.errorBars || [];\n var errorBar = new ScatterErrorBar(low, high, isVertical, this, series, options);\n point.errorBars.push(errorBar);\n point.append(errorBar);\n\n item[field] = low;\n this.updateRange(item, series);\n item[field] = high;\n this.updateRange(item, series);\n },\n\n addValue: function(value, fields) {\n var x = value.x;\n var y = value.y;\n var seriesIx = fields.seriesIx;\n var series = this.options.series[seriesIx];\n var missingValues = this.seriesMissingValues(series);\n var seriesPoints = this.seriesPoints[seriesIx];\n\n var pointValue = value;\n if (!(hasValue(x) && hasValue(y))) {\n pointValue = this.createMissingValue(pointValue, missingValues);\n }\n\n var point;\n if (pointValue) {\n point = this.createPoint(pointValue, fields);\n if (point) {\n $.extend(point, fields);\n this.addErrorBar(point, X, fields);\n this.addErrorBar(point, Y, fields);\n }\n this.updateRange(pointValue, fields.series);\n }\n\n this.points.push(point);\n seriesPoints.push(point);\n },\n\n seriesMissingValues: function(series) {\n return series.missingValues;\n },\n\n createMissingValue: function() {},\n\n updateRange: function(value, series) {\n var intlService = this.chartService.intl;\n var xAxisName = series.xAxis;\n var yAxisName = series.yAxis;\n var x = value.x;\n var y = value.y;\n var xAxisRange = this.xAxisRanges[xAxisName];\n var yAxisRange = this.yAxisRanges[yAxisName];\n\n if (hasValue(x)) {\n xAxisRange = this.xAxisRanges[xAxisName] =\n xAxisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n if (isString(x)) {\n x = parseDate(intlService, x);\n }\n\n xAxisRange.min = Math.min(xAxisRange.min, x);\n xAxisRange.max = Math.max(xAxisRange.max, x);\n }\n\n if (hasValue(y)) {\n yAxisRange = this.yAxisRanges[yAxisName] =\n yAxisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n if (isString(y)) {\n y = parseDate(intlService, y);\n }\n\n yAxisRange.min = Math.min(yAxisRange.min, y);\n yAxisRange.max = Math.max(yAxisRange.max, y);\n }\n },\n\n evalPointOptions: function(options, value, fields) {\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var state = {\n defaults: series._defaults,\n excluded: [\n \"data\", \"tooltip\", \"content\", \"template\", \"visual\", \"toggle\",\n \"_outOfRangeMinPoint\", \"_outOfRangeMaxPoint\",\n \"drilldownSeriesFactory\", \"ariaTemplate\", \"ariaContent\"\n ]\n };\n\n var doEval = this._evalSeries[seriesIx];\n if (!defined(doEval)) {\n this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n }\n\n var pointOptions = options;\n if (doEval) {\n pointOptions = deepExtend({}, options);\n evalOptions(pointOptions, {\n value: value,\n series: series,\n dataItem: fields.dataItem\n }, state);\n }\n\n return pointOptions;\n },\n\n pointType: function() {\n return LinePoint;\n },\n\n pointOptions: function(series, seriesIx) {\n var options = this.seriesOptions[seriesIx];\n if (!options) {\n var defaults = this.pointType().prototype.defaults;\n this.seriesOptions[seriesIx] = options = deepExtend({}, defaults, {\n markers: {\n opacity: series.opacity\n },\n tooltip: {\n format: this.options.tooltip.format\n },\n labels: {\n format: this.options.labels.format\n }\n }, series);\n }\n\n return options;\n },\n\n createPoint: function(value, fields) {\n var series = fields.series;\n var pointOptions = this.pointOptions(series, fields.seriesIx);\n var color = fields.color || series.color;\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n var point = new LinePoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n },\n\n seriesAxes: function(series) {\n var xAxisName = series.xAxis;\n var yAxisName = series.yAxis;\n var plotArea = this.plotArea;\n var xAxis = xAxisName ? plotArea.namedXAxes[xAxisName] : plotArea.axisX;\n var yAxis = yAxisName ? plotArea.namedYAxes[yAxisName] : plotArea.axisY;\n\n if (!xAxis) {\n throw new Error(\"Unable to locate X axis with name \" + xAxisName);\n }\n\n if (!yAxis) {\n throw new Error(\"Unable to locate Y axis with name \" + yAxisName);\n }\n\n return {\n x: xAxis,\n y: yAxis\n };\n },\n\n reflow: function(targetBox) {\n var this$1$1 = this;\n\n var chartPoints = this.points;\n var limit = !this.options.clip;\n var pointIx = 0;\n\n this.traverseDataPoints(function (value, fields) {\n var point = chartPoints[pointIx++];\n var seriesAxes = this$1$1.seriesAxes(fields.series);\n var slotX = seriesAxes.x.getSlot(value.x, value.x, limit);\n var slotY = seriesAxes.y.getSlot(value.y, value.y, limit);\n\n if (point) {\n if (slotX && slotY) {\n var pointSlot = this$1$1.pointSlot(slotX, slotY);\n point.reflow(pointSlot);\n } else {\n point.visible = false;\n }\n }\n });\n\n this.box = targetBox;\n },\n\n pointSlot: function(slotX, slotY) {\n return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n },\n\n traverseDataPoints: function(callback) {\n var this$1$1 = this;\n\n var ref = this;\n var series = ref.options.series;\n var seriesPoints = ref.seriesPoints;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var currentSeriesPoints = seriesPoints[seriesIx];\n if (!currentSeriesPoints) {\n seriesPoints[seriesIx] = [];\n }\n\n for (var pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n var ref$1 = this$1$1.plotArea.bindPoint(currentSeries, pointIx);\n var value = ref$1.valueFields;\n var fields = ref$1.fields;\n\n callback(value, deepExtend({\n pointIx: pointIx,\n series: currentSeries,\n seriesIx: seriesIx,\n dataItem: currentSeries.data[pointIx],\n owner: this$1$1\n }, fields));\n }\n }\n },\n\n formatPointValue: function(point, format) {\n var value = point.value;\n return this.chartService.format.auto(format, value.x, value.y);\n },\n\n animationPoints: function() {\n var points = this.points;\n var result = [];\n for (var idx = 0; idx < points.length; idx++) {\n result.push((points[idx] || {}).marker);\n }\n return result;\n }\n });\n setDefaultOptions(ScatterChart, {\n series: [],\n tooltip: {\n format: \"{0}, {1}\"\n },\n labels: {\n format: \"{0}, {1}\"\n },\n clip: true\n });\n deepExtend(ScatterChart.prototype, ClipAnimationMixin);\n\n var Bubble = LinePoint.extend({\n init: function(value, options) {\n LinePoint.fn.init.call(this, value, options);\n\n this.category = value.category;\n },\n\n createHighlight: function() {\n var highlight = this.options.highlight;\n var border = highlight.border;\n var markers = this.options.markers;\n var center = this.box.center();\n var radius = (markers.size + markers.border.width + border.width) / 2;\n var highlightGroup = new Group();\n var shadow = new Circle(new GeometryCircle([ center.x, center.y + radius / 5 + border.width / 2 ], radius + border.width / 2), {\n stroke: {\n color: 'none'\n },\n fill: this.createGradient({\n gradient: 'bubbleShadow',\n color: markers.background,\n stops: [ {\n offset: 0,\n color: markers.background,\n opacity: 0.3\n }, {\n offset: 1,\n color: markers.background,\n opacity: 0\n } ]\n })\n });\n var overlay = new Circle(new GeometryCircle([ center.x, center.y ], radius), {\n stroke: {\n color: border.color ||\n new Color(markers.background).brightness(BORDER_BRIGHTNESS).toHex(),\n width: border.width,\n opacity: border.opacity\n },\n fill: {\n color: markers.background,\n opacity: highlight.opacity\n }\n });\n\n highlightGroup.append(shadow, overlay);\n\n return highlightGroup;\n },\n\n createFocusHighlight: function(style) {\n var highlightOptions = this.options.accessibility.highlight;\n var markers = this.options.markers;\n var center = this.box.center();\n var radius = (markers.size + markers.border.width) / 2 + highlightOptions.border.width / 2;\n var highlight = new Circle(new GeometryCircle([ center.x, center.y ], radius), style);\n\n return highlight;\n }\n });\n\n Bubble.prototype.defaults = deepExtend({}, Bubble.prototype.defaults, {\n labels: {\n position: CENTER\n },\n highlight: {\n opacity: 1,\n border: {\n color: \"#fff\",\n width: 2,\n opacity: 1\n }\n }\n });\n\n Bubble.prototype.defaults.highlight.zIndex = undefined;\n\n var BubbleChart = ScatterChart.extend({\n _initFields: function() {\n this._maxSize = MIN_VALUE;\n ScatterChart.fn._initFields.call(this);\n },\n\n addValue: function(value, fields) {\n if (value.size !== null && (value.size > 0 || (value.size < 0 && fields.series.negativeValues.visible))) {\n this._maxSize = Math.max(this._maxSize, Math.abs(value.size));\n ScatterChart.fn.addValue.call(this, value, fields);\n } else {\n this.points.push(null);\n this.seriesPoints[fields.seriesIx].push(null);\n }\n },\n\n reflow: function(box) {\n this.updateBubblesSize(box);\n ScatterChart.fn.reflow.call(this, box);\n },\n\n pointType: function() {\n return Bubble;\n },\n\n createPoint: function(value, fields) {\n var series = fields.series;\n var pointsCount = series.data.length;\n var delay = fields.pointIx * (INITIAL_ANIMATION_DURATION / pointsCount);\n var animationOptions = {\n delay: delay,\n duration: INITIAL_ANIMATION_DURATION - delay,\n type: BUBBLE\n };\n\n var color = fields.color || series.color;\n if (value.size < 0 && series.negativeValues.visible) {\n color = valueOrDefault(\n series.negativeValues.color, color\n );\n }\n\n var pointOptions = deepExtend({\n labels: {\n animation: {\n delay: delay,\n duration: INITIAL_ANIMATION_DURATION - delay\n }\n }\n }, this.pointOptions(series, fields.seriesIx), {\n markers: {\n type: CIRCLE,\n border: series.border,\n opacity: series.opacity,\n animation: animationOptions\n }\n });\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n pointOptions.markers.background = color;\n\n var point = new Bubble(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n },\n\n updateBubblesSize: function(box) {\n var this$1$1 = this;\n\n var ref = this;\n var series = ref.options.series;\n var boxSize = Math.min(box.width(), box.height());\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var seriesPoints = this$1$1.seriesPoints[seriesIx];\n var minSize = currentSeries.minSize || Math.max(boxSize * 0.02, 10);\n var maxSize = currentSeries.maxSize || boxSize * 0.2;\n var minR = minSize / 2;\n var maxR = maxSize / 2;\n var minArea = Math.PI * minR * minR;\n var maxArea = Math.PI * maxR * maxR;\n var areaRange = maxArea - minArea;\n var areaRatio = areaRange / this$1$1._maxSize;\n\n for (var pointIx = 0; pointIx < seriesPoints.length; pointIx++) {\n var point = seriesPoints[pointIx];\n if (point) {\n var area = Math.abs(point.value.size) * areaRatio;\n var radius = Math.sqrt((minArea + area) / Math.PI);\n var baseZIndex = valueOrDefault(point.options.zIndex, 0);\n var zIndex = baseZIndex + (1 - radius / maxR);\n\n deepExtend(point.options, {\n zIndex: zIndex,\n markers: {\n size: radius * 2,\n zIndex: zIndex\n },\n labels: {\n zIndex: zIndex + 1\n }\n });\n }\n }\n }\n },\n\n formatPointValue: function(point, format) {\n var value = point.value;\n return this.chartService.format.auto(format, value.x, value.y, value.size, point.category);\n },\n\n createAnimation: function() {},\n\n createVisual: function() {}\n });\n\n setDefaultOptions(BubbleChart, {\n tooltip: {\n format: \"{3}\"\n },\n labels: {\n format: \"{3}\"\n }\n });\n\n var Target = ShapeElement.extend({\n\n });\n\n deepExtend(Target.prototype, PointEventsMixin);\n\n var Bullet = ChartElement.extend({\n init: function(value, options) {\n ChartElement.fn.init.call(this, options);\n\n this.aboveAxis = this.options.aboveAxis;\n this.color = options.color || WHITE;\n this.value = value;\n },\n\n render: function() {\n var options = this.options;\n\n if (!this._rendered) {\n this._rendered = true;\n\n if (defined(this.value.target)) {\n this.target = new Target({\n type: options.target.shape,\n background: options.target.color || this.color,\n opacity: options.opacity,\n zIndex: options.zIndex,\n border: options.target.border,\n vAlign: TOP,\n align: RIGHT\n });\n\n this.target.value = this.value;\n this.target.dataItem = this.dataItem;\n this.target.series = this.series;\n\n this.append(this.target);\n }\n\n this.createLabel();\n this.createNote();\n }\n },\n\n createLabel: function() {\n var options = this.options;\n var labels = options.labels;\n\n if (labels.visible) {\n this.label = this.createLabelElement(labels);\n this.append(this.label);\n }\n },\n\n createLabelElement: function(options) {\n return new BarLabel(this.getLabelText(options),\n options,\n this.pointData());\n },\n\n getLabelText: function(options) {\n var labelTemplate = getTemplate(options);\n\n if (labelTemplate) {\n return labelTemplate(this.pointData());\n }\n\n return this.formatValue(options.format);\n },\n\n reflow: function(box) {\n this.render();\n\n var ref = this;\n var options = ref.options;\n var target = ref.target;\n var chart = ref.owner;\n var invertAxes = options.invertAxes;\n var valueAxis = chart.seriesValueAxis(this.options);\n var categorySlot = chart.categorySlot(chart.categoryAxis, options.categoryIx, valueAxis);\n var targetValueSlot = valueAxis.getSlot(this.value.target);\n var targetSlotX = invertAxes ? targetValueSlot : categorySlot;\n var targetSlotY = invertAxes ? categorySlot : targetValueSlot;\n\n if (target) {\n var targetSlot = new Box(\n targetSlotX.x1, targetSlotY.y1,\n targetSlotX.x2, targetSlotY.y2\n );\n target.options.height = invertAxes ? targetSlot.height() : options.target.line.width;\n target.options.width = invertAxes ? options.target.line.width : targetSlot.width();\n target.reflow(targetSlot);\n }\n\n var label = this.label;\n if (label) {\n label.options.aboveAxis = this.aboveAxis;\n label.reflow(box);\n }\n\n if (this.note) {\n this.note.reflow(box);\n }\n\n this.box = box;\n },\n\n createVisual: function() {\n ChartElement.fn.createVisual.call(this);\n\n this.addAccessibilityAttributesToVisual();\n\n var options = this.options;\n var body = Path.fromRect(this.box.toRect(), {\n fill: {\n color: this.color,\n opacity: options.opacity\n },\n stroke: null\n });\n\n if (options.border.width > 0) {\n body.options.set(\"stroke\", {\n color: options.border.color || this.color,\n width: options.border.width,\n dashType: options.border.dashType,\n opacity: valueOrDefault(options.border.opacity, options.opacity)\n });\n }\n\n this.bodyVisual = body;\n\n alignPathToPixel(body);\n this.visual.append(body);\n },\n\n createAnimation: function() {\n if (this.bodyVisual) {\n this.animation = Animation.create(\n this.bodyVisual, this.options.animation\n );\n }\n },\n\n createHighlight: function(style) {\n return Path.fromRect(this.box.toRect(), style);\n },\n\n highlightVisual: function() {\n return this.bodyVisual;\n },\n\n highlightVisualArgs: function() {\n return {\n rect: this.box.toRect(),\n visual: this.bodyVisual,\n options: this.options\n };\n },\n\n formatValue: function(format) {\n return this.owner.formatPointValue(this, format);\n },\n\n pointData: function() {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n series: this.series\n };\n },\n\n overlapsBox: function(box) {\n return this.box.overlaps(box);\n },\n\n getIndex: function() {\n return this.categoryIx;\n }\n });\n\n Bullet.prototype.tooltipAnchor = Bar.prototype.tooltipAnchor;\n Bullet.prototype.createFocusHighlight = Bar.prototype.createFocusHighlight;\n\n setDefaultOptions(Bullet, {\n border: {\n width: 1\n },\n vertical: false,\n opacity: 1,\n target: {\n shape: \"\",\n border: {\n width: 0,\n color: \"green\"\n },\n line: {\n width: 2\n }\n },\n labels: {\n visible: false\n },\n tooltip: {\n format: \"Current: {0}
    Target: {1}\"\n },\n notes: {\n label: {}\n },\n accessibility: {\n role: CHART_POINT_ROLE,\n className: CHART_POINT_CLASSNAME,\n ariaRoleDescription: CHART_POINT_ROLE_DESCRIPTION\n }\n });\n\n deepExtend(Bullet.prototype, PointEventsMixin);\n deepExtend(Bullet.prototype, NoteMixin);\n deepExtend(Bullet.prototype, AccessibilityAttributesMixin);\n\n var BulletChart = CategoricalChart.extend({\n init: function(plotArea, options) {\n\n wrapData(options);\n\n CategoricalChart.fn.init.call(this, plotArea, options);\n },\n\n reflowCategories: function(categorySlots) {\n var children = this.children;\n var childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; i++) {\n children[i].reflow(categorySlots[i]);\n }\n },\n\n plotRange: function(point) {\n var series = point.series;\n var valueAxis = this.seriesValueAxis(series);\n var axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n\n return [ axisCrossingValue, point.value.current || axisCrossingValue ];\n },\n\n createPoint: function(data, fields) {\n var categoryIx = fields.categoryIx;\n var series = fields.series;\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var value = data.valueFields;\n\n var bulletOptions = deepExtend({\n vertical: !options.invertAxes,\n overlay: series.overlay,\n categoryIx: categoryIx,\n invertAxes: options.invertAxes\n }, series);\n\n var color = data.fields.color || series.color;\n bulletOptions = this.evalPointOptions(bulletOptions, value, fields);\n if (isFunction(series.color)) {\n color = bulletOptions.color;\n }\n\n var bullet = new Bullet(value, bulletOptions);\n bullet.color = color;\n\n var cluster = children[categoryIx];\n if (!cluster) {\n cluster = new ClusterLayout({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n cluster.append(bullet);\n\n return bullet;\n },\n\n updateRange: function(value, fields) {\n var current = value.current;\n var target = value.target;\n var axisName = fields.series.axis;\n var axisRange = this.valueAxisRanges[axisName];\n\n if (defined(current) && !isNaN(current) && defined(target && !isNaN(target))) {\n axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange.min = Math.min(axisRange.min, current, target);\n axisRange.max = Math.max(axisRange.max, current, target);\n }\n },\n\n formatPointValue: function(point, format) {\n return this.chartService.format.auto(format, point.value.current, point.value.target);\n },\n\n pointValue: function(data) {\n return data.valueFields.current;\n },\n\n aboveAxis: function(point) {\n var value = point.value.current;\n\n return value > 0;\n },\n\n createAnimation: function() {\n var this$1$1 = this;\n\n var points = this.points;\n\n this._setAnimationOptions();\n\n for (var idx = 0; idx < points.length; idx++) {\n var point = points[idx];\n point.options.animation = this$1$1.options.animation;\n point.createAnimation();\n }\n }\n });\n\n BulletChart.prototype._setAnimationOptions = BarChart.prototype._setAnimationOptions;\n\n setDefaultOptions(BulletChart, {\n animation: {\n type: BAR\n }\n });\n\n function wrapData(options) {\n var series = options.series;\n\n for (var i = 0; i < series.length; i++) {\n var seriesItem = series[i];\n var data = seriesItem.data;\n if (data && !isArray(data[0]) && !isObject(data[0])) {\n seriesItem.data = [ data ];\n }\n }\n }\n\n var BaseTooltip = Class.extend({\n init: function(chartService, options) {\n\n this.chartService = chartService;\n this.options = deepExtend({}, this.options, options);\n },\n\n getStyle: function(options, point) {\n var background = options.background;\n var border = options.border.color;\n\n if (point) {\n var pointColor = point.color || point.options.color;\n background = valueOrDefault(background, pointColor);\n border = valueOrDefault(border, pointColor);\n }\n\n var padding = getSpacing(options.padding || {}, \"auto\");\n\n return {\n backgroundColor: background,\n borderColor: border,\n font: options.font,\n color: options.color,\n opacity: options.opacity,\n borderWidth: styleValue(options.border.width),\n paddingTop: styleValue(padding.top),\n paddingBottom: styleValue(padding.bottom),\n paddingLeft: styleValue(padding.left),\n paddingRight: styleValue(padding.right)\n };\n },\n\n show: function(options, tooltipOptions, point) {\n options.format = tooltipOptions.format;\n\n var style = this.getStyle(tooltipOptions, point);\n options.style = style;\n\n var background = new Color(style.backgroundColor);\n if (!defined(tooltipOptions.color) && !background.isDark()) {\n options.className = \"k-chart-tooltip-inverse\";\n }\n\n this.chartService.notify(SHOW_TOOLTIP, options);\n\n this.visible = true;\n },\n\n hide: function() {\n if (this.chartService) {\n this.chartService.notify(HIDE_TOOLTIP);\n }\n\n this.visible = false;\n },\n\n destroy: function() {\n delete this.chartService;\n }\n });\n\n setDefaultOptions(BaseTooltip, {\n border: {\n width: 1\n },\n opacity: 1\n });\n\n var CrosshairTooltip = BaseTooltip.extend({\n init: function(chartService, crosshair, options) {\n BaseTooltip.fn.init.call(this, chartService, options);\n\n this.crosshair = crosshair;\n this.formatService = chartService.format;\n this.initAxisName();\n },\n\n initAxisName: function() {\n var axis = this.crosshair.axis;\n var plotArea = axis.plotArea;\n var name;\n if (plotArea.categoryAxis) {\n name = axis.getCategory ? \"categoryAxis\" : \"valueAxis\";\n } else {\n name = axis.options.vertical ? \"yAxis\" : \"xAxis\";\n }\n this.axisName = name;\n },\n\n showAt: function(point) {\n var ref = this;\n var axis = ref.crosshair.axis;\n var options = ref.options;\n var value = axis[options.stickyMode ? \"getCategory\" : \"getValue\"](point);\n var formattedValue = value;\n\n if (options.format) {\n formattedValue = this.formatService.auto(options.format, value);\n } else if (axis.options.type === DATE) {\n formattedValue = this.formatService.auto(axis.options.labels.dateFormats[axis.options.baseUnit], value);\n }\n\n this.show({\n point: point,\n anchor: this.getAnchor(),\n crosshair: this.crosshair,\n value: formattedValue,\n axisName: this.axisName,\n axisIndex: this.crosshair.axis.axisIndex\n }, this.options);\n },\n\n hide: function() {\n this.chartService.notify(HIDE_TOOLTIP, {\n crosshair: this.crosshair,\n axisName: this.axisName,\n axisIndex: this.crosshair.axis.axisIndex\n });\n },\n\n getAnchor: function() {\n var ref = this;\n var crosshair = ref.crosshair;\n var ref_options = ref.options;\n var position = ref_options.position;\n var padding = ref_options.padding;\n var vertical = !crosshair.axis.options.vertical;\n var lineBox = crosshair.line.bbox();\n var horizontalAlign, verticalAlign, point;\n\n if (vertical) {\n horizontalAlign = CENTER;\n if (position === BOTTOM) {\n verticalAlign = TOP;\n point = lineBox.bottomLeft().translate(0, padding);\n } else {\n verticalAlign = BOTTOM;\n point = lineBox.topLeft().translate(0, -padding);\n }\n } else {\n verticalAlign = CENTER;\n if (position === LEFT) {\n horizontalAlign = RIGHT;\n point = lineBox.topLeft().translate(-padding, 0);\n } else {\n horizontalAlign = LEFT;\n point = lineBox.topRight().translate(padding, 0);\n }\n }\n\n return {\n point: point,\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n }\n });\n\n setDefaultOptions(CrosshairTooltip, {\n padding: 10\n });\n\n var Crosshair = ChartElement.extend({\n init: function(chartService, axis, options) {\n ChartElement.fn.init.call(this, options);\n\n this.axis = axis;\n this.stickyMode = axis instanceof CategoryAxis;\n\n var tooltipOptions = this.options.tooltip;\n\n if (tooltipOptions.visible) {\n this.tooltip = new CrosshairTooltip(chartService, this,\n deepExtend({}, tooltipOptions, { stickyMode: this.stickyMode })\n );\n }\n },\n\n showAt: function(point) {\n this.point = point;\n this.moveLine();\n this.line.visible(true);\n\n if (this.tooltip) {\n this.tooltip.showAt(point);\n }\n },\n\n hide: function() {\n this.line.visible(false);\n\n if (this.tooltip) {\n this.tooltip.hide();\n }\n },\n\n moveLine: function() {\n var ref = this;\n var axis = ref.axis;\n var point = ref.point;\n var vertical = axis.options.vertical;\n var box = this.getBox();\n var dim = vertical ? Y : X;\n var lineStart = new GeometryPoint(box.x1, box.y1);\n var lineEnd;\n\n if (vertical) {\n lineEnd = new GeometryPoint(box.x2, box.y1);\n } else {\n lineEnd = new GeometryPoint(box.x1, box.y2);\n }\n\n if (point) {\n if (this.stickyMode) {\n var slot = axis.getSlot(axis.pointCategoryIndex(point));\n lineStart[dim] = lineEnd[dim] = slot.center()[dim];\n } else {\n lineStart[dim] = lineEnd[dim] = point[dim];\n }\n }\n\n this.box = box;\n\n this.line.moveTo(lineStart).lineTo(lineEnd);\n },\n\n getBox: function() {\n var axis = this.axis;\n var axes = axis.pane.axes;\n var length = axes.length;\n var vertical = axis.options.vertical;\n var box = axis.lineBox().clone();\n var dim = vertical ? X : Y;\n var axisLineBox;\n\n for (var i = 0; i < length; i++) {\n var currentAxis = axes[i];\n if (currentAxis.options.vertical !== vertical) {\n if (!axisLineBox) {\n axisLineBox = currentAxis.lineBox().clone();\n } else {\n axisLineBox.wrap(currentAxis.lineBox());\n }\n }\n }\n\n box[dim + 1] = axisLineBox[dim + 1];\n box[dim + 2] = axisLineBox[dim + 2];\n\n return box;\n },\n\n createVisual: function() {\n ChartElement.fn.createVisual.call(this);\n\n var options = this.options;\n this.line = new Path({\n stroke: {\n color: options.color,\n width: options.width,\n opacity: options.opacity,\n dashType: options.dashType\n },\n visible: false\n });\n\n this.moveLine();\n this.visual.append(this.line);\n },\n\n destroy: function() {\n if (this.tooltip) {\n this.tooltip.destroy();\n }\n\n ChartElement.fn.destroy.call(this);\n }\n });\n\n setDefaultOptions(Crosshair, {\n color: BLACK,\n width: 2,\n zIndex: -1,\n tooltip: {\n visible: false\n }\n });\n\n var ChartContainer = ChartElement.extend({\n init: function(options, pane) {\n ChartElement.fn.init.call(this, options);\n this.pane = pane;\n },\n\n shouldClip: function() {\n var children = this.children;\n var length = children.length;\n\n for (var i = 0; i < length; i++) {\n if (children[i].options.clip === true) {\n return true;\n }\n }\n return false;\n },\n\n _clipBox: function() {\n return this.pane.chartsBox();\n },\n\n createVisual: function() {\n this.visual = new Group({\n zIndex: 0\n });\n\n if (this.shouldClip()) {\n var clipBox = this.clipBox = this._clipBox();\n var clipRect = clipBox.toRect();\n var clipPath = Path.fromRect(clipRect);\n alignPathToPixel(clipPath);\n\n this.visual.clip(clipPath);\n this.unclipLabels();\n }\n },\n\n stackRoot: function() {\n return this;\n },\n\n unclipLabels: function() {\n var ref = this;\n var charts = ref.children;\n var clipBox = ref.clipBox;\n\n for (var i = 0; i < charts.length; i++) {\n var points = charts[i].points || {};\n var length = points.length;\n\n for (var j = 0; j < length; j++) {\n var point = points[j];\n if (point && point.visible !== false && point.overlapsBox && point.overlapsBox(clipBox)) {\n if (point.unclipElements) {\n point.unclipElements();\n } else {\n var label = point.label;\n var note = point.note;\n\n if (label && label.options.visible) {\n if (label.alignToClipBox) {\n label.alignToClipBox(clipBox);\n }\n label.options.noclip = true;\n }\n\n if (note && note.options.visible) {\n note.options.noclip = true;\n }\n }\n }\n }\n }\n },\n\n destroy: function() {\n ChartElement.fn.destroy.call(this);\n\n delete this.parent;\n }\n });\n\n ChartContainer.prototype.isStackRoot = true;\n\n var Pane = BoxElement.extend({\n init: function(options) {\n BoxElement.fn.init.call(this, options);\n\n this.id = paneID();\n\n this.createTitle();\n\n this.content = new ChartElement();\n\n this.chartContainer = new ChartContainer({}, this);\n this.append(this.content);\n\n this.axes = [];\n this.charts = [];\n },\n\n createTitle: function() {\n var titleOptions = this.options.title;\n if (isObject(titleOptions)) {\n titleOptions = deepExtend({}, titleOptions, {\n align: titleOptions.position,\n position: TOP\n });\n }\n\n this.title = Title.buildTitle(titleOptions, Pane.prototype.options.title);\n if (this.title) {\n this.append(this.title);\n }\n },\n\n appendAxis: function(axis) {\n this.content.append(axis);\n this.axes.push(axis);\n axis.pane = this;\n },\n\n appendAxisAt: function(axis, pos) {\n this.content.append(axis);\n this.axes.splice(pos, 0, axis);\n axis.pane = this;\n },\n\n appendChart: function(chart) {\n if (this.chartContainer.parent !== this.content) {\n this.content.append(this.chartContainer);\n }\n\n this.charts.push(chart);\n this.chartContainer.append(chart);\n chart.pane = this;\n },\n\n empty: function() {\n var this$1$1 = this;\n\n var plotArea = this.parent;\n\n if (plotArea) {\n for (var i = 0; i < this.axes.length; i++) {\n plotArea.removeAxis(this$1$1.axes[i]);\n }\n\n for (var i$1 = 0; i$1 < this.charts.length; i$1++) {\n plotArea.removeChart(this$1$1.charts[i$1]);\n }\n }\n\n this.axes = [];\n this.charts = [];\n\n this.content.destroy();\n this.content.children = [];\n this.chartContainer.children = [];\n },\n\n reflow: function(targetBox) {\n // Content (such as charts) is rendered, but excluded from reflows\n var content;\n if (last(this.children) === this.content) {\n content = this.children.pop();\n }\n\n BoxElement.fn.reflow.call(this, targetBox);\n\n if (content) {\n this.children.push(content);\n }\n\n if (this.title) {\n this.contentBox.y1 += this.title.box.height();\n }\n },\n\n visualStyle: function() {\n var style = BoxElement.fn.visualStyle.call(this);\n style.zIndex = -10;\n\n return style;\n },\n\n renderComplete: function() {\n if (this.options.visible) {\n this.createGridLines();\n }\n },\n\n stackRoot: function() {\n return this;\n },\n\n clipRoot: function() {\n return this;\n },\n\n createGridLines: function() {\n var axes = this.axes;\n var allAxes = axes.concat(this.parent.axes);\n var vGridLines = [];\n var hGridLines = [];\n\n // TODO\n // Is full combination really necessary?\n for (var i = 0; i < axes.length; i++) {\n var axis = axes[i];\n var vertical = axis.options.vertical;\n var gridLines = vertical ? vGridLines : hGridLines;\n for (var j = 0; j < allAxes.length; j++) {\n if (gridLines.length === 0) {\n var altAxis = allAxes[j];\n if (vertical !== altAxis.options.vertical) {\n append(gridLines, axis.createGridLines(altAxis));\n }\n }\n }\n }\n },\n\n refresh: function() {\n this.visual.clear();\n\n this.content.parent = null;\n this.content.createGradient = this.createGradient.bind(this);\n this.content.renderVisual();\n this.content.parent = this;\n\n if (this.title) {\n this.visual.append(this.title.visual);\n }\n\n this.visual.append(this.content.visual);\n\n this.renderComplete();\n this.notifyRender();\n },\n\n chartsBox: function() {\n var axes = this.axes;\n var length = axes.length;\n var chartsBox = new Box();\n\n for (var idx = 0; idx < length; idx++) {\n var axis = axes[idx];\n var axisValueField = axis.options.vertical ? Y : X;\n var lineBox = axis.lineBox();\n chartsBox[axisValueField + 1] = lineBox[axisValueField + 1];\n chartsBox[axisValueField + 2] = lineBox[axisValueField + 2];\n }\n\n if (chartsBox.x2 === 0) {\n var allAxes = this.parent.axes;\n var length$1 = allAxes.length;\n\n for (var idx$1 = 0; idx$1 < length$1; idx$1++) {\n var axis$1 = allAxes[idx$1];\n if (!axis$1.options.vertical) {\n var lineBox$1 = axis$1.lineBox();\n chartsBox.x1 = lineBox$1.x1;\n chartsBox.x2 = lineBox$1.x2;\n }\n }\n }\n return chartsBox;\n },\n\n clipBox: function() {\n return this.chartContainer.clipBox;\n },\n\n notifyRender: function() {\n var service = this.getService();\n if (service) {\n service.notify(PANE_RENDER, {\n pane: new ChartPane(this),\n index: this.paneIndex,\n name: this.options.name\n });\n }\n }\n });\n\n var ID = 1;\n\n function paneID() {\n return \"pane\" + ID++;\n }\n\n Pane.prototype.isStackRoot = true;\n\n setDefaultOptions(Pane, {\n zIndex: -1,\n shrinkToFit: true,\n title: {\n align: LEFT\n },\n visible: true\n });\n\n var PlotAreaBase = ChartElement.extend({\n init: function(series, options, chartService) {\n ChartElement.fn.init.call(this, options);\n\n this.initFields(series, options);\n this.series = series;\n this.initSeries();\n this.charts = [];\n this.options.legend = this.options.legend || {};\n this.options.legend.data = [];\n this.axes = [];\n this.crosshairs = [];\n this.chartService = chartService;\n this.originalOptions = options;\n this.originalSeries = series;\n this._bindCache = new WeakMap();\n\n this.createPanes();\n this.render();\n this.createCrosshairs();\n },\n\n initFields: function() { },\n\n initSeries: function() {\n var series = this.series;\n\n for (var i = 0; i < series.length; i++) {\n series[i].index = i;\n }\n },\n\n bindPoint: function(series, pointIx, item) {\n var cached = this._bindCache.get(series);\n if (!cached) {\n cached = [];\n this._bindCache.set(series, cached);\n }\n\n var data = cached[pointIx];\n if (!data) {\n data = cached[pointIx] = SeriesBinder.current.bindPoint(series, pointIx, item);\n }\n\n return data;\n },\n\n createPanes: function() {\n var this$1$1 = this;\n\n var titleOptions = this.options.title || {};\n var paneDefaults = this.options.paneDefaults;\n var paneOptions = this.options.panes || [];\n var panesLength = Math.max(paneOptions.length, 1);\n var panes = [];\n\n var defaults = deepExtend({\n title: {\n color: titleOptions.color\n }\n }, paneDefaults);\n\n for (var i = 0; i < panesLength; i++) {\n var options = deepExtend({}, defaults, paneOptions[i]);\n if (isString(options.title)) {\n options.title = deepExtend({ text: options.title }, defaults.title);\n }\n\n var currentPane = new Pane(options);\n currentPane.paneIndex = i;\n\n panes.push(currentPane);\n this$1$1.append(currentPane);\n }\n\n this.panes = panes;\n },\n\n crosshairOptions: function(axis) {\n return axis.options.crosshair;\n },\n\n createCrosshairs: function(panes) {\n var this$1$1 = this;\n if (panes === void 0) { panes = this.panes; }\n\n for (var i = 0; i < panes.length; i++) {\n var pane = panes[i];\n for (var j = 0; j < pane.axes.length; j++) {\n var axis = pane.axes[j];\n var options = this$1$1.crosshairOptions(axis);\n if (options && options.visible) {\n var currentCrosshair = new Crosshair(this$1$1.chartService, axis, options);\n\n this$1$1.crosshairs.push(currentCrosshair);\n pane.content.append(currentCrosshair);\n }\n }\n }\n },\n\n removeCrosshairs: function(pane) {\n var crosshairs = this.crosshairs;\n var axes = pane.axes;\n\n for (var i = crosshairs.length - 1; i >= 0; i--) {\n for (var j = 0; j < axes.length; j++) {\n if (crosshairs[i].axis === axes[j]) {\n crosshairs.splice(i, 1);\n break;\n }\n }\n }\n },\n\n hideCrosshairs: function() {\n var crosshairs = this.crosshairs;\n for (var idx = 0; idx < crosshairs.length; idx++) {\n crosshairs[idx].hide();\n }\n },\n\n findPane: function(name) {\n var panes = this.panes;\n var matchingPane;\n\n for (var i = 0; i < panes.length; i++) {\n if (panes[i].options.name === name) {\n matchingPane = panes[i];\n break;\n }\n }\n\n return matchingPane || panes[0];\n },\n\n findPointPane: function(point) {\n var panes = this.panes;\n var matchingPane;\n\n for (var i = 0; i < panes.length; i++) {\n if (panes[i].box.containsPoint(point)) {\n matchingPane = panes[i];\n break;\n }\n }\n\n return matchingPane;\n },\n\n appendAxis: function(axis) {\n var pane = this.findPane(axis.options.pane);\n\n pane.appendAxis(axis);\n this.axes.push(axis);\n axis.plotArea = this;\n },\n\n removeAxis: function(axisToRemove) {\n var this$1$1 = this;\n\n var filteredAxes = [];\n\n for (var i = 0; i < this.axes.length; i++) {\n var axis = this$1$1.axes[i];\n if (axisToRemove !== axis) {\n filteredAxes.push(axis);\n } else {\n axis.destroy();\n }\n }\n\n this.axes = filteredAxes;\n },\n\n appendChart: function(chart, pane) {\n this.charts.push(chart);\n if (pane) {\n pane.appendChart(chart);\n } else {\n this.append(chart);\n }\n },\n\n removeChart: function(chartToRemove) {\n var this$1$1 = this;\n\n var filteredCharts = [];\n\n for (var i = 0; i < this.charts.length; i++) {\n var chart = this$1$1.charts[i];\n if (chart !== chartToRemove) {\n filteredCharts.push(chart);\n } else {\n chart.destroy();\n }\n }\n\n this.charts = filteredCharts;\n },\n\n addToLegend: function(series) {\n var count = series.length;\n var legend = this.options.legend;\n var labels = legend.labels || {};\n var inactiveItems = legend.inactiveItems || {};\n var inactiveItemsLabels = inactiveItems.labels || {};\n var data = [];\n\n for (var i = 0; i < count; i++) {\n var currentSeries = series[i];\n var seriesVisible = currentSeries.visible !== false;\n if (currentSeries.visibleInLegend === false) {\n continue;\n }\n\n var text = currentSeries.name;\n var labelTemplate = seriesVisible ? getTemplate(labels) : getTemplate(inactiveItemsLabels) || getTemplate(labels);\n if (labelTemplate) {\n text = labelTemplate({\n text: hasValue(text) ? text : \"\",\n series: currentSeries\n });\n }\n\n var defaults = currentSeries._defaults;\n var color = currentSeries.color;\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n var itemLabelOptions = (void 0), markerColor = (void 0);\n if (seriesVisible) {\n itemLabelOptions = {};\n markerColor = color;\n } else {\n itemLabelOptions = {\n color: inactiveItemsLabels.color,\n font: inactiveItemsLabels.font\n };\n markerColor = inactiveItems.markers.color;\n }\n\n if (hasValue(text) && text !== \"\") {\n data.push({\n text: text,\n labels: itemLabelOptions,\n markerColor: markerColor,\n series: currentSeries,\n active: seriesVisible\n });\n }\n }\n\n append(legend.data, data);\n },\n\n groupAxes: function(panes) {\n var xAxes = [];\n var yAxes = [];\n\n for (var paneIx = 0; paneIx < panes.length; paneIx++) {\n var paneAxes = panes[paneIx].axes;\n for (var axisIx = 0; axisIx < paneAxes.length; axisIx++) {\n var axis = paneAxes[axisIx];\n if (axis.options.vertical) {\n yAxes.push(axis);\n } else {\n xAxes.push(axis);\n }\n }\n }\n\n return { x: xAxes, y: yAxes, any: xAxes.concat(yAxes) };\n },\n\n groupSeriesByPane: function() {\n var this$1$1 = this;\n\n var series = this.series;\n var seriesByPane = {};\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n var pane = this$1$1.seriesPaneName(currentSeries);\n\n if (seriesByPane[pane]) {\n seriesByPane[pane].push(currentSeries);\n } else {\n seriesByPane[pane] = [ currentSeries ];\n }\n }\n\n return seriesByPane;\n },\n\n filterVisibleSeries: function(series) {\n var result = [];\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n if (currentSeries.visible !== false) {\n result.push(currentSeries);\n }\n }\n\n return result;\n },\n\n reflow: function(targetBox) {\n var options = this.options.plotArea;\n var panes = this.panes;\n var margin = getSpacing(options.margin);\n\n this.box = targetBox.clone().unpad(margin);\n this.reflowPanes();\n\n this.detachLabels();\n this.reflowAxes(panes);\n this.reflowCharts(panes);\n },\n\n redraw: function(panes) {\n var this$1$1 = this;\n\n var panesArray = [].concat(panes);\n this.initSeries();\n\n //prevents leak during partial redraws. the cached gradients observers retain reference to the destroyed elements.\n var root = this.getRoot();\n if (root) {\n root.cleanGradients();\n }\n\n for (var i = 0; i < panesArray.length; i++) {\n this$1$1.removeCrosshairs(panesArray[i]);\n panesArray[i].empty();\n }\n\n this._bindCache = new WeakMap();\n\n this.render(panesArray);\n this.detachLabels();\n this.reflowAxes(this.panes);\n this.reflowCharts(panesArray);\n\n this.createCrosshairs(panesArray);\n\n for (var i$1 = 0; i$1 < panesArray.length; i$1++) {\n panesArray[i$1].refresh();\n }\n },\n\n axisCrossingValues: function(axis, crossingAxes) {\n var options = axis.options;\n var crossingValues = [].concat(\n options.axisCrossingValues || options.axisCrossingValue\n );\n var valuesToAdd = crossingAxes.length - crossingValues.length;\n var defaultValue = crossingValues[0] || 0;\n\n for (var i = 0; i < valuesToAdd; i++) {\n crossingValues.push(defaultValue);\n }\n\n return crossingValues;\n },\n\n alignAxisTo: function(axis, targetAxis, crossingValue, targetCrossingValue) {\n var slot = axis.getSlot(crossingValue, crossingValue, true);\n var slotEdge = axis.options.reverse ? 2 : 1;\n var targetSlot = targetAxis.getSlot(targetCrossingValue, targetCrossingValue, true);\n var targetEdge = targetAxis.options.reverse ? 2 : 1;\n var axisBox = axis.box.translate(\n targetSlot[X + targetEdge] - slot[X + slotEdge],\n targetSlot[Y + targetEdge] - slot[Y + slotEdge]\n );\n\n if (axis.pane !== targetAxis.pane) {\n axisBox.translate(0, axis.pane.box.y1 - targetAxis.pane.box.y1);\n }\n\n axis.reflow(axisBox);\n },\n\n alignAxes: function(xAxes, yAxes) {\n var this$1$1 = this;\n\n var xAnchor = xAxes[0];\n var yAnchor = yAxes[0];\n var xAnchorCrossings = this.axisCrossingValues(xAnchor, yAxes);\n var yAnchorCrossings = this.axisCrossingValues(yAnchor, xAxes);\n var leftAnchors = {};\n var rightAnchors = {};\n var topAnchors = {};\n var bottomAnchors = {};\n\n for (var i = 0; i < yAxes.length; i++) {\n var axis = yAxes[i];\n var pane = axis.pane;\n var paneId = pane.id;\n var visible = axis.options.visible !== false;\n\n // Locate pane anchor, if any, and use its axisCrossingValues\n var anchor = paneAnchor(xAxes, pane) || xAnchor;\n var anchorCrossings = xAnchorCrossings;\n\n if (anchor !== xAnchor) {\n anchorCrossings = this$1$1.axisCrossingValues(anchor, yAxes);\n }\n\n this$1$1.alignAxisTo(axis, anchor, yAnchorCrossings[i], anchorCrossings[i]);\n\n if (axis.options._overlap) {\n continue;\n }\n\n if (round(axis.lineBox().x1) === round(anchor.lineBox().x1)) {\n // Push the axis to the left the previous y-axis so they don't overlap\n if (leftAnchors[paneId]) {\n axis.reflow(axis.box\n .alignTo(leftAnchors[paneId].box, LEFT)\n .translate(-axis.options.margin, 0)\n );\n }\n\n if (visible) {\n leftAnchors[paneId] = axis;\n }\n }\n\n if (round(axis.lineBox().x2) === round(anchor.lineBox().x2)) {\n // Flip the labels on the right if we're at the right end of the pane\n if (!axis._mirrored) {\n axis.options.labels.mirror = !axis.options.labels.mirror;\n axis._mirrored = true;\n }\n\n this$1$1.alignAxisTo(axis, anchor, yAnchorCrossings[i], anchorCrossings[i]);\n\n // Push the axis to the right the previous y-axis so they don't overlap\n if (rightAnchors[paneId]) {\n axis.reflow(axis.box\n .alignTo(rightAnchors[paneId].box, RIGHT)\n .translate(axis.options.margin, 0)\n );\n }\n\n if (visible) {\n rightAnchors[paneId] = axis;\n }\n }\n\n // Locate pane anchor, if any, and align the axis to it\n var paneYAnchor = paneAnchor(yAxes, pane) || yAnchor;\n if (paneYAnchor !== axis) {\n axis.alignTo(paneYAnchor);\n axis.reflow(axis.box);\n }\n }\n\n for (var i$1 = 0; i$1 < xAxes.length; i$1++) {\n var axis$1 = xAxes[i$1];\n var pane$1 = axis$1.pane;\n var paneId$1 = pane$1.id;\n var visible$1 = axis$1.options.visible !== false;\n\n // Locate pane anchor and use its axisCrossingValues\n var anchor$1 = paneAnchor(yAxes, pane$1) || yAnchor;\n var anchorCrossings$1 = yAnchorCrossings;\n if (anchor$1 !== yAnchor) {\n anchorCrossings$1 = this$1$1.axisCrossingValues(anchor$1, xAxes);\n }\n\n this$1$1.alignAxisTo(axis$1, anchor$1, xAnchorCrossings[i$1], anchorCrossings$1[i$1]);\n\n if (axis$1.options._overlap) {\n continue;\n }\n\n if (round(axis$1.lineBox().y1) === round(anchor$1.lineBox().y1)) {\n // Flip the labels on top if we're at the top of the pane\n if (!axis$1._mirrored) {\n axis$1.options.labels.mirror = !axis$1.options.labels.mirror;\n axis$1._mirrored = true;\n }\n this$1$1.alignAxisTo(axis$1, anchor$1, xAnchorCrossings[i$1], anchorCrossings$1[i$1]);\n\n // Push the axis above the previous x-axis so they don't overlap\n if (topAnchors[paneId$1]) {\n axis$1.reflow(axis$1.box\n .alignTo(topAnchors[paneId$1].box, TOP)\n .translate(0, -axis$1.options.margin)\n );\n }\n\n if (visible$1) {\n topAnchors[paneId$1] = axis$1;\n }\n }\n\n if (round(axis$1.lineBox().y2, COORD_PRECISION) === round(anchor$1.lineBox().y2, COORD_PRECISION)) {\n // Push the axis below the previous x-axis so they don't overlap\n if (bottomAnchors[paneId$1]) {\n axis$1.reflow(axis$1.box\n .alignTo(bottomAnchors[paneId$1].box, BOTTOM)\n .translate(0, axis$1.options.margin)\n );\n }\n\n if (visible$1) {\n bottomAnchors[paneId$1] = axis$1;\n }\n }\n\n if (i$1 !== 0) {\n axis$1.alignTo(xAnchor);\n axis$1.reflow(axis$1.box);\n }\n }\n },\n\n shrinkAxisWidth: function(panes) {\n var axes = this.groupAxes(panes).any;\n var axisBox = axisGroupBox(axes);\n var overflowX = 0;\n\n for (var i = 0; i < panes.length; i++) {\n var currentPane = panes[i];\n\n if (currentPane.axes.length > 0) {\n overflowX = Math.max(\n overflowX,\n axisBox.width() - currentPane.contentBox.width()\n );\n }\n }\n\n if (overflowX !== 0) {\n for (var i$1 = 0; i$1 < axes.length; i$1++) {\n var currentAxis = axes[i$1];\n\n if (!currentAxis.options.vertical) {\n currentAxis.reflow(currentAxis.box.shrink(overflowX, 0));\n }\n }\n }\n },\n\n shrinkAxisHeight: function(panes) {\n var shrinked;\n\n for (var i = 0; i < panes.length; i++) {\n var currentPane = panes[i];\n var axes = currentPane.axes;\n var overflowY = Math.max(0, axisGroupBox(axes).height() - currentPane.contentBox.height());\n\n if (overflowY !== 0) {\n for (var j = 0; j < axes.length; j++) {\n var currentAxis = axes[j];\n\n if (currentAxis.options.vertical) {\n currentAxis.reflow(\n currentAxis.box.shrink(0, overflowY)\n );\n }\n }\n shrinked = true;\n }\n }\n\n return shrinked;\n },\n\n fitAxes: function(panes) {\n var axes = this.groupAxes(panes).any;\n var offsetX = 0;\n\n for (var i = 0; i < panes.length; i++) {\n var currentPane = panes[i];\n var paneAxes = currentPane.axes;\n var paneBox = currentPane.contentBox;\n\n if (paneAxes.length > 0) {\n var axisBox = axisGroupBox(paneAxes);\n // OffsetY is calculated and applied per pane\n var offsetY = Math.max(paneBox.y1 - axisBox.y1, paneBox.y2 - axisBox.y2);\n\n // OffsetX is calculated and applied globally\n offsetX = Math.max(offsetX, paneBox.x1 - axisBox.x1);\n\n for (var j = 0; j < paneAxes.length; j++) {\n var currentAxis = paneAxes[j];\n\n currentAxis.reflow(\n currentAxis.box.translate(0, offsetY)\n );\n }\n }\n }\n\n for (var i$1 = 0; i$1 < axes.length; i$1++) {\n var currentAxis$1 = axes[i$1];\n\n currentAxis$1.reflow(\n currentAxis$1.box.translate(offsetX, 0)\n );\n }\n },\n\n reflowAxes: function(panes) {\n var this$1$1 = this;\n\n var axes = this.groupAxes(panes);\n\n for (var i = 0; i < panes.length; i++) {\n this$1$1.reflowPaneAxes(panes[i]);\n }\n\n if (axes.x.length > 0 && axes.y.length > 0) {\n this.alignAxes(axes.x, axes.y);\n this.shrinkAxisWidth(panes);\n\n this.autoRotateAxisLabels(axes);\n\n this.alignAxes(axes.x, axes.y);\n if (this.shrinkAxisWidth(panes)) {\n this.alignAxes(axes.x, axes.y);\n }\n\n this.shrinkAxisHeight(panes);\n this.alignAxes(axes.x, axes.y);\n\n if (this.shrinkAxisHeight(panes)) {\n this.alignAxes(axes.x, axes.y);\n }\n\n this.fitAxes(panes);\n }\n },\n\n autoRotateAxisLabels: function(groupedAxes) {\n var this$1$1 = this;\n\n var ref = this;\n var panes = ref.panes;\n var axes = allPaneAxes(panes);\n var rotated;\n\n for (var idx = 0; idx < axes.length; idx++) {\n var axis = axes[idx];\n if (axis.autoRotateLabels()) {\n rotated = true;\n }\n }\n\n if (rotated) {\n for (var idx$1 = 0; idx$1 < panes.length; idx$1++) {\n this$1$1.reflowPaneAxes(panes[idx$1]);\n }\n\n if (groupedAxes.x.length > 0 && groupedAxes.y.length > 0) {\n this.alignAxes(groupedAxes.x, groupedAxes.y);\n this.shrinkAxisWidth(panes);\n }\n }\n },\n\n reflowPaneAxes: function(pane) {\n var axes = pane.axes;\n var length = axes.length;\n\n if (length > 0) {\n for (var i = 0; i < length; i++) {\n axes[i].reflow(pane.contentBox);\n }\n }\n },\n\n reflowCharts: function(panes) {\n var charts = this.charts;\n var count = charts.length;\n var box = this.box;\n\n for (var i = 0; i < count; i++) {\n var chartPane = charts[i].pane;\n if (!chartPane || inArray(chartPane, panes)) {\n charts[i].reflow(box);\n }\n }\n },\n\n reflowPanes: function() {\n var ref = this;\n var box = ref.box;\n var panes = ref.panes;\n var panesLength = panes.length;\n var remainingHeight = box.height();\n var autoHeightPanes = 0;\n var top = box.y1;\n\n for (var i = 0; i < panesLength; i++) {\n var currentPane = panes[i];\n var height = currentPane.options.height;\n\n currentPane.options.width = box.width();\n\n if (!currentPane.options.height) {\n autoHeightPanes++;\n } else {\n if (height.indexOf && height.indexOf(\"%\")) {\n var percents = parseInt(height, 10) / 100;\n currentPane.options.height = percents * box.height();\n }\n\n currentPane.reflow(box.clone());\n\n remainingHeight -= currentPane.options.height;\n }\n }\n\n for (var i$1 = 0; i$1 < panesLength; i$1++) {\n var currentPane$1 = panes[i$1];\n\n if (!currentPane$1.options.height) {\n currentPane$1.options.height = remainingHeight / autoHeightPanes;\n }\n }\n\n for (var i$2 = 0; i$2 < panesLength; i$2++) {\n var currentPane$2 = panes[i$2];\n var paneBox = box\n .clone()\n .move(box.x1, top);\n\n currentPane$2.reflow(paneBox);\n\n top += currentPane$2.options.height;\n }\n },\n\n backgroundBox: function() {\n var axes = this.axes;\n var axesCount = axes.length;\n var box;\n\n for (var i = 0; i < axesCount; i++) {\n var axisA = axes[i];\n\n for (var j = 0; j < axesCount; j++) {\n var axisB = axes[j];\n\n if (axisA.options.vertical !== axisB.options.vertical) {\n var lineBox = axisA.lineBox().clone().wrap(axisB.lineBox());\n\n if (!box) {\n box = lineBox;\n } else {\n box = box.wrap(lineBox);\n }\n }\n }\n }\n\n return box || this.box;\n },\n\n chartsBoxes: function() {\n var panes = this.panes;\n var boxes = [];\n\n for (var idx = 0; idx < panes.length; idx++) {\n boxes.push(panes[idx].chartsBox());\n }\n\n return boxes;\n },\n\n addBackgroundPaths: function(multipath) {\n var boxes = this.chartsBoxes();\n for (var idx = 0; idx < boxes.length; idx++) {\n multipath.paths.push(Path.fromRect(boxes[idx].toRect()));\n }\n },\n\n backgroundContainsPoint: function(point) {\n var boxes = this.chartsBoxes();\n for (var idx = 0; idx < boxes.length; idx++) {\n if (boxes[idx].containsPoint(point)) {\n return true;\n }\n }\n },\n\n createVisual: function() {\n ChartElement.fn.createVisual.call(this);\n\n var options = this.options.plotArea;\n var opacity = options.opacity;\n var background = options.background;\n var border = options.border; if (border === void 0) { border = {}; }\n if (isTransparent(background)) {\n background = WHITE;\n opacity = 0;\n }\n\n var bg = this._bgVisual = new MultiPath({\n fill: {\n color: background,\n opacity: opacity\n },\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n dashType: border.dashType\n },\n zIndex: -1\n });\n\n this.addBackgroundPaths(bg);\n\n this.appendVisual(bg);\n },\n\n pointsByCategoryIndex: function(categoryIndex) {\n var charts = this.charts;\n var result = [];\n\n if (categoryIndex !== null) {\n for (var i = 0; i < charts.length; i++) {\n var chart = charts[i];\n\n if (chart.pane.options.name === \"_navigator\") {\n continue;\n }\n\n var points = charts[i].categoryPoints[categoryIndex];\n if (points && points.length) {\n for (var j = 0; j < points.length; j++) {\n var point = points[j];\n if (point && defined(point.value) && point.value !== null) {\n result.push(point);\n }\n }\n }\n }\n }\n\n return result;\n },\n\n pointsBySeriesIndex: function(seriesIndex) {\n return this.filterPoints(function(point) {\n return point.series.index === seriesIndex;\n });\n },\n\n pointsByPointIndex: function(pointIndex) {\n return this.filterPoints(function(point) {\n return point.getIndex() === pointIndex;\n });\n },\n\n pointsBySeriesName: function(name) {\n return this.filterPoints(function(point) {\n return point.series.name === name;\n });\n },\n\n filterPoints: function(callback) {\n var charts = this.charts;\n var result = [];\n\n for (var i = 0; i < charts.length; i++) {\n var chart = charts[i];\n var points = chart.points;\n for (var j = 0; j < points.length; j++) {\n var point = points[j];\n if (point && point.visible !== false && callback(point)) {\n result.push(point);\n }\n }\n }\n\n return result;\n },\n\n findPoint: function(callback) {\n var charts = this.charts;\n\n for (var i = 0; i < charts.length; i++) {\n var chart = charts[i];\n var points = chart.points;\n for (var j = 0; j < points.length; j++) {\n var point = points[j];\n if (point && point.visible !== false && callback(point)) {\n return point;\n }\n }\n }\n },\n\n paneByPoint: function(point) {\n var panes = this.panes;\n\n for (var i = 0; i < panes.length; i++) {\n var pane = panes[i];\n if (pane.box.containsPoint(point)) {\n return pane;\n }\n }\n },\n\n detachLabels: function() {\n var axes = this.groupAxes(this.panes);\n var xAxes = axes.x;\n var yAxes = axes.y;\n\n this.detachAxisGroupLabels(yAxes, xAxes);\n this.detachAxisGroupLabels(xAxes, yAxes);\n },\n\n detachAxisGroupLabels: function(axes, crossingAxes) {\n var this$1$1 = this;\n\n var labelAxisCount = 0;\n\n for (var i = 0; i < axes.length; i++) {\n var axis = axes[i];\n var pane = axis.pane;\n var anchor = paneAnchor(crossingAxes, pane) || crossingAxes[0];\n var axisIndex = i + labelAxisCount;\n var labelAxis = this$1$1.createLabelAxis(axis, axisIndex, anchor);\n\n if (labelAxis) {\n labelAxisCount++;\n\n var pos = pane.axes.indexOf(axis) + labelAxisCount;\n pane.appendAxisAt(labelAxis, pos);\n }\n }\n },\n\n createLabelAxis: function(axis, axisIndex, anchor) {\n var labelOptions = axis.options.labels;\n var position = labelOptions.position;\n var onAxis = position !== END && position !== START;\n var visible = labelOptions.visible;\n\n if (onAxis || visible === false) {\n return null;\n }\n\n var allAxes = this.groupAxes(this.panes);\n var crossingAxes = anchor.options.vertical ? allAxes.x : allAxes.y;\n var anchorCrossings = this.axisCrossingValues(anchor, crossingAxes);\n var end = position === END;\n var range = anchor.range();\n var edge = end ? range.max : range.min;\n var crossingValue = limitValue(anchorCrossings[axisIndex], range.min, range.max);\n\n if (crossingValue - edge === 0) {\n return null;\n }\n\n anchorCrossings.splice(axisIndex + 1, 0, edge);\n anchor.options.axisCrossingValues = anchorCrossings;\n\n var labelAxis = axis.clone();\n axis.clear();\n\n labelAxis.options.name = undefined;\n labelAxis.options.line.visible = false;\n\n labelAxis.options.crosshair = undefined;\n labelAxis.options.notes = undefined;\n labelAxis.options.plotBands = undefined;\n\n return labelAxis;\n },\n\n isTrendline: function(series) {\n return series && inArray(series.type, TRENDLINE_SERIES);\n },\n\n trendlineFactory: function() { /* abstract */ },\n\n createTrendlineSeries: function() {\n var this$1$1 = this;\n\n var modifiedSeries = [];\n\n this.series = this.series.map(function (series) {\n if (!this$1$1.isTrendline(series)) {\n return series;\n }\n\n var forSeries = this$1$1.seriesByName(series.for);\n if (!forSeries) {\n throw new Error('Invalid Configuration: Unable to locate linked series ' +\n \"\\\"\" + (series.for) + \"\\\" for trendline \\\"\" + (series.name) + \"\\\".\");\n }\n\n var valueFields = SeriesBinder.current.valueFields(forSeries);\n var field = last(valueFields); // Use the last field for multi-field series\n\n var trendlineSeries = this$1$1.trendlineFactory($.extend({}, {field: field}, series), forSeries);\n if (trendlineSeries) {\n if (forSeries.visible === false) {\n trendlineSeries.visible = false;\n }\n\n if (trendlineSeries.color === datavizConstants.INHERIT) {\n trendlineSeries.color = forSeries.color;\n }\n\n modifiedSeries.push(trendlineSeries);\n }\n\n return trendlineSeries;\n }).filter(function (series) { return series !== null; });\n\n return modifiedSeries;\n },\n\n seriesByName: function(name) {\n return this.series.find(function (series) { return series.name === name; });\n },\n\n getFirstPoint: function() {\n return this.pointsBySeriesIndex(0)[0];\n },\n\n getPointBelow: function(point) {\n return this._getNextPoint(point, this._pointsByVertical, 1);\n },\n\n getPointAbove: function(point) {\n return this._getNextPoint(point, this._pointsByVertical, -1);\n },\n\n getPointToTheRight: function(point) {\n return this._getNextPoint(point, this._pointsByHorizontal, 1);\n },\n\n getPointToTheLeft: function(point) {\n return this._getNextPoint(point, this._pointsByHorizontal, -1);\n },\n\n _getNextPoint: function(point, getPointsFunc, increment) {\n var this$1$1 = this;\n\n var points = getPointsFunc.call(this, point);\n var pointIndex = points.indexOf(point);\n var nextIndex = pointIndex + increment;\n var loopPoints = function (direction) {\n // loop over to last non-empty collection\n var result;\n var offset = 0;\n do {\n offset += direction;\n result = getPointsFunc.call(this$1$1, point, offset);\n } while (result.length === 0);\n\n return result;\n };\n\n if (nextIndex < 0) {\n points = loopPoints(-1);\n\n return points.at(-1);\n } else if (nextIndex >= points.length) {\n points = loopPoints(1);\n\n return points.at(0);\n }\n\n return points[nextIndex];\n },\n\n _pointsByVertical: function(basePoint) {\n return this.pointsByPointIndex(basePoint.getIndex());\n },\n\n _pointsByHorizontal: function(basePoint, offset) {\n if (offset === void 0) { offset = 0; }\n\n var index = cycleIndex(basePoint.series.index + offset, this.series.length);\n return this.pointsBySeriesIndex(index);\n }\n });\n\n function isSingleAxis(axis) {\n return !axis.pane.axes.some(function (a) { return a.options.vertical === axis.options.vertical && a !== axis && a.options.visible !== false; }\n );\n }\n\n function axisGroupBox(axes) {\n var length = axes.length;\n var box;\n\n for (var i = 0; i < length; i++) {\n var axis = axes[i];\n var visible = axis.options.visible !== false;\n if (visible || isSingleAxis(axis)) {\n var axisBox = visible ? axis.contentBox() : axis.lineBox();\n\n if (!box) {\n box = axisBox.clone();\n } else {\n box.wrap(axisBox);\n }\n }\n }\n\n return box || new Box();\n }\n\n function paneAnchor(axes, pane) {\n for (var i = 0; i < axes.length; i++) {\n var anchor = axes[i];\n if (anchor && anchor.pane === pane) {\n return anchor;\n }\n }\n }\n\n function isTransparent(color) {\n return color === \"\" || color === null || color === \"none\" || color === \"transparent\" || !defined(color);\n }\n\n var allPaneAxes = function (panes) { return panes.reduce(function (acc, pane) { return acc.concat(pane.axes); }, []); };\n\n setDefaultOptions(PlotAreaBase, {\n series: [],\n plotArea: {\n margin: {}\n },\n background: \"\",\n border: {\n color: BLACK,\n width: 0\n },\n paneDefaults: {\n title: {}\n },\n legend: {\n inactiveItems: {\n labels: {\n color: \"#919191\"\n },\n markers: {\n color: \"#919191\"\n }\n }\n }\n });\n\n var PlotAreaEventsMixin = {\n hover: function(chart, e) {\n this._dispatchEvent(chart, e, PLOT_AREA_HOVER);\n },\n\n click: function(chart, e) {\n this._dispatchEvent(chart, e, PLOT_AREA_CLICK);\n }\n };\n\n var SeriesAggregator = Class.extend({\n init: function(series, binder, defaultAggregates) {\n\n var canonicalFields = binder.canonicalFields(series);\n var valueFields = binder.valueFields(series);\n var sourceFields = binder.sourceFields(series, canonicalFields);\n var seriesFields = this._seriesFields = [];\n var defaults = defaultAggregates.query(series.type);\n var rootAggregate = series.aggregate || defaults;\n\n this._series = series;\n this._binder = binder;\n\n for (var i = 0; i < canonicalFields.length; i++) {\n var field = canonicalFields[i];\n var fieldAggregate = (void 0);\n\n if (isObject(rootAggregate)) {\n fieldAggregate = rootAggregate[field];\n } else if (i === 0 || inArray(field, valueFields)) {\n fieldAggregate = rootAggregate;\n } else {\n break;\n }\n\n if (fieldAggregate) {\n seriesFields.push({\n canonicalName: field,\n name: sourceFields[i],\n transform: isFunction(fieldAggregate) ? fieldAggregate : Aggregates[fieldAggregate]\n });\n }\n }\n },\n\n aggregatePoints: function(srcPoints, group) {\n var this$1$1 = this;\n\n var ref = this;\n var series = ref._series;\n var seriesFields = ref._seriesFields;\n var data = this._bindPoints(srcPoints || []);\n var firstDataItem = data.dataItems[0];\n var result = {};\n\n if (firstDataItem && !isNumber(firstDataItem) && !isArray(firstDataItem)) {\n var fn = function() {};\n fn.prototype = firstDataItem;\n result = new fn();\n }\n\n for (var i = 0; i < seriesFields.length; i++) {\n var field = seriesFields[i];\n var srcValues = this$1$1._bindField(data.values, field.canonicalName);\n var value = field.transform(srcValues, series, data.dataItems, group);\n\n if (value !== null && isObject(value) && !defined(value.length) && !(value instanceof Date)) {\n result = value;\n break;\n } else {\n if (defined(value)) {\n setValue(field.name, result, value);\n }\n }\n }\n\n return result;\n },\n\n _bindPoints: function(points) {\n var ref = this;\n var binder = ref._binder;\n var series = ref._series;\n var values = [];\n var dataItems = [];\n\n for (var i = 0; i < points.length; i++) {\n var pointIx = points[i];\n\n values.push(binder.bindPoint(series, pointIx));\n dataItems.push(series.data[pointIx]);\n }\n\n return {\n values: values,\n dataItems: dataItems\n };\n },\n\n _bindField: function(data, field) {\n var values = [];\n var count = data.length;\n\n for (var i = 0; i < count; i++) {\n var item = data[i];\n var valueFields = item.valueFields;\n var value = (void 0);\n\n if (defined(valueFields[field])) {\n value = valueFields[field];\n } else {\n value = item.fields[field];\n }\n\n values.push(value);\n }\n\n return values;\n }\n });\n\n function setValue(fieldName, target, value) {\n var parentObj = target;\n var field = fieldName;\n\n if (fieldName.indexOf(\".\") > -1) {\n var parts = fieldName.split(\".\");\n\n while (parts.length > 1) {\n field = parts.shift();\n if (!defined(parentObj[field])) {\n parentObj[field] = {};\n }\n parentObj = parentObj[field];\n }\n field = parts.shift();\n }\n\n parentObj[field] = value;\n }\n\n var DefaultAggregates = Class.extend({\n init: function() {\n\n this._defaults = {};\n },\n\n register: function(seriesTypes, aggregates) {\n var this$1$1 = this;\n\n for (var i = 0; i < seriesTypes.length; i++) {\n this$1$1._defaults[seriesTypes[i]] = aggregates;\n }\n },\n\n query: function(seriesType) {\n return this._defaults[seriesType];\n }\n });\n\n DefaultAggregates.current = new DefaultAggregates();\n\n var RangeBar = Bar.extend({\n createLabel: function() {\n var labels = this.options.labels;\n var fromOptions = deepExtend({}, labels, labels.from);\n var toOptions = deepExtend({}, labels, labels.to);\n\n if (fromOptions.visible) {\n this.labelFrom = this.createLabelElement(fromOptions);\n this.append(this.labelFrom);\n }\n\n if (toOptions.visible) {\n this.labelTo = this.createLabelElement(toOptions);\n this.append(this.labelTo);\n }\n },\n\n reflow: function(targetBox) {\n this.render();\n\n var ref = this;\n var labelFrom = ref.labelFrom;\n var labelTo = ref.labelTo;\n var value = ref.value;\n\n this.box = targetBox;\n\n if (labelFrom) {\n labelFrom.options.aboveAxis = value.from > value.to;\n labelFrom.reflow(targetBox);\n }\n\n if (labelTo) {\n labelTo.options.aboveAxis = value.to > value.from;\n labelTo.reflow(targetBox);\n }\n\n if (this.note) {\n this.note.reflow(targetBox);\n }\n }\n });\n\n RangeBar.prototype.defaults = deepExtend({}, RangeBar.prototype.defaults, {\n labels: {\n format: \"{0} - {1}\"\n },\n tooltip: {\n format: \"{1}\"\n }\n });\n\n var RangeBarChart = BarChart.extend({\n pointType: function() {\n return RangeBar;\n },\n\n pointValue: function(data) {\n return data.valueFields;\n },\n\n formatPointValue: function(point, format) {\n if (point.value.from === null && point.value.to === null) {\n return \"\";\n }\n\n return this.chartService.format.auto(format, point.value.from, point.value.to);\n },\n\n plotRange: function(point) {\n if (!point) {\n return 0;\n }\n\n return [ point.value.from, point.value.to ];\n },\n\n updateRange: function(value, fields) {\n var axisName = fields.series.axis;\n var from = value.from;\n var to = value.to;\n var axisRange = this.valueAxisRanges[axisName];\n\n if (value !== null && isNumber(from) && isNumber(to)) {\n axisRange = this.valueAxisRanges[axisName] = axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange.min = Math.min(axisRange.min, from);\n axisRange.max = Math.max(axisRange.max, from);\n\n axisRange.min = Math.min(axisRange.min, to);\n axisRange.max = Math.max(axisRange.max, to);\n }\n },\n\n aboveAxis: function(point) {\n var value = point.value;\n return value.from < value.to;\n }\n });\n\n RangeBarChart.prototype.plotLimits = CategoricalChart.prototype.plotLimits;\n\n var RangeLinePoint = LinePoint.extend({\n aliasFor: function() {\n return this.parent;\n }\n });\n\n var AUTO = 'auto';\n var DEFAULT_FROM_FORMAT = '{0}';\n var DEFAULT_TO_FORMAT = '{1}';\n\n var RangeAreaPoint = ChartElement.extend({\n init: function(value, options) {\n ChartElement.fn.init.call(this);\n\n this.value = value;\n this.options = options;\n this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n this.tooltipTracking = true;\n this._id = guid();\n this.initLabelsFormat();\n },\n\n render: function() {\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n var ref = this.options;\n var markers = ref.markers;\n var labels = ref.labels;\n var value = this.value;\n\n var fromPoint = this.fromPoint = new RangeLinePoint(value, deepExtend({}, this.options, {\n labels: labels.from,\n markers: markers.from\n }));\n\n var toPoint = this.toPoint = new RangeLinePoint(value, deepExtend({}, this.options, {\n labels: labels.to,\n markers: markers.to\n }));\n\n this.copyFields(fromPoint);\n this.copyFields(toPoint);\n\n this.append(fromPoint);\n this.append(toPoint);\n },\n\n reflow: function(targetBox) {\n this.render();\n\n var fromBox = targetBox.from;\n var toBox = targetBox.to;\n\n this.positionLabels(fromBox, toBox);\n\n this.fromPoint.reflow(fromBox);\n this.toPoint.reflow(toBox);\n\n this.box = this.fromPoint.markerBox().clone().wrap(this.toPoint.markerBox());\n },\n\n createHighlight: function() {\n var group = new Group();\n group.append(this.fromPoint.createHighlight());\n group.append(this.toPoint.createHighlight());\n\n return group;\n },\n\n highlightVisual: function() {\n return this.visual;\n },\n\n highlightVisualArgs: function() {\n return {\n options: this.options,\n from: this.fromPoint.highlightVisualArgs(),\n to: this.toPoint.highlightVisualArgs()\n };\n },\n\n createFocusHighlight: function() {\n var group = new Group();\n group.append(this.fromPoint.createFocusHighlight());\n group.append(this.toPoint.createFocusHighlight());\n\n return group;\n },\n\n tooltipAnchor: function() {\n var clipBox = this.owner.pane.clipBox();\n var showTooltip = !clipBox || clipBox.overlaps(this.box);\n\n if (showTooltip) {\n var box = this.box;\n var center = box.center();\n var horizontalAlign = LEFT;\n var x, y, verticalAlign;\n\n if (this.options.vertical) {\n x = center.x;\n y = box.y1 - TOOLTIP_OFFSET;\n verticalAlign = BOTTOM;\n } else {\n x = box.x2 + TOOLTIP_OFFSET;\n y = center.y;\n verticalAlign = CENTER;\n }\n\n return {\n point: new Point(x, y),\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n }\n },\n\n formatValue: function(format) {\n return this.owner.formatPointValue(this, format);\n },\n\n overlapsBox: function(box) {\n return this.box.overlaps(box);\n },\n\n unclipElements: function() {\n this.fromPoint.unclipElements();\n this.toPoint.unclipElements();\n },\n\n initLabelsFormat: function() {\n var labels = this.options.labels;\n if (!labels.format) {\n if (!labels.from || !labels.from.format) {\n labels.from = $.extend({}, labels.from, {\n format: DEFAULT_FROM_FORMAT\n });\n }\n\n if (!labels.to || !labels.to.format) {\n labels.to = $.extend({}, labels.to, {\n format: DEFAULT_TO_FORMAT\n });\n }\n }\n },\n\n positionLabels: function(fromBox, toBox) {\n var ref = this.options;\n var labels = ref.labels;\n var vertical = ref.vertical;\n\n if (labels.position === AUTO) {\n var fromLabelPosition, toLabelPosition;\n if (vertical) {\n if (toBox.y1 <= fromBox.y1) {\n toLabelPosition = ABOVE;\n fromLabelPosition = BELOW;\n } else {\n toLabelPosition = BELOW;\n fromLabelPosition = ABOVE;\n }\n } else {\n if (toBox.x1 <= fromBox.x1) {\n toLabelPosition = LEFT;\n fromLabelPosition = RIGHT;\n } else {\n toLabelPosition = RIGHT;\n fromLabelPosition = LEFT;\n }\n }\n\n if (!labels.from || !labels.from.position) {\n this.fromPoint.options.labels.position = fromLabelPosition;\n }\n\n if (!labels.to || !labels.to.position) {\n this.toPoint.options.labels.position = toLabelPosition;\n }\n }\n },\n\n copyFields: function(point) {\n point.dataItem = this.dataItem;\n point.category = this.category;\n point.series = this.series;\n point.color = this.color;\n point.owner = this.owner;\n },\n\n focusVisual: function() {\n this.fromPoint.focusVisual();\n },\n\n clearFocusFromVisual: function() {\n this.toPoint.clearFocusFromVisual();\n },\n\n getIndex: function() {\n return this.categoryIx;\n }\n });\n\n deepExtend(RangeAreaPoint.prototype, PointEventsMixin);\n deepExtend(RangeAreaPoint.prototype, NoteMixin);\n\n RangeAreaPoint.prototype.defaults = {\n markers: {\n visible: false,\n background: WHITE,\n size: LINE_MARKER_SIZE,\n type: CIRCLE,\n border: {\n width: 2\n },\n opacity: 1\n },\n labels: {\n visible: false,\n margin: getSpacing(3),\n padding: getSpacing(4),\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n },\n position: AUTO\n },\n notes: {\n label: {}\n },\n highlight: {\n markers: {\n border: {\n color: WHITE,\n width: 2\n }\n },\n zIndex: datavizConstants.HIGHLIGHT_ZINDEX\n },\n tooltip: {\n format: '{0} - {1}'\n },\n accessibility: {\n role: CHART_POINT_ROLE,\n className: CHART_POINT_CLASSNAME,\n ariaRoleDescription: CHART_POINT_ROLE_DESCRIPTION\n }\n };\n\n var RangeAreaSegment = AreaSegment.extend({\n createStrokeSegments: function() {\n return this.segmentsFromPoints(this.toGeometryPoints(this.toPoints()));\n },\n\n stackSegments: function() {\n var fromSegments = this.fromSegments;\n if (!this.fromSegments) {\n fromSegments = this.fromSegments = this.segmentsFromPoints(this.toGeometryPoints(this.fromPoints().reverse()));\n }\n\n return fromSegments;\n },\n\n createStroke: function(style) {\n var toPath = new Path(style);\n var fromPath = new Path(style);\n\n toPath.segments.push.apply(toPath.segments, this.strokeSegments());\n fromPath.segments.push.apply(fromPath.segments, this.stackSegments());\n\n this.visual.append(toPath);\n this.visual.append(fromPath);\n },\n\n hasStackSegment: function() {\n return true;\n },\n\n fromPoints: function() {\n return this.linePoints.map(function (point) { return point.fromPoint; });\n },\n\n toPoints: function() {\n return this.linePoints.map(function (point) { return point.toPoint; });\n }\n });\n\n var SplineRangeAreaSegment = RangeAreaSegment.extend({\n createStrokeSegments: function() {\n return this.createCurveSegments(this.toPoints());\n },\n\n stackSegments: function() {\n var fromSegments = this.fromSegments;\n if (!this.fromSegments) {\n fromSegments = this.fromSegments = this.createCurveSegments(this.fromPoints().reverse());\n }\n\n return fromSegments;\n },\n\n createCurveSegments: function(points) {\n var curveProcessor = new CurveProcessor();\n\n return curveProcessor.process(this.toGeometryPoints(points));\n }\n });\n\n var StepRangeAreaSegment = RangeAreaSegment.extend({\n createStrokeSegments: function() {\n return this.segmentsFromPoints(this.calculateStepPoints(this.toPoints()));\n },\n\n stackSegments: function() {\n var fromSegments = this.fromSegments;\n if (!this.fromSegments) {\n fromSegments = this.fromSegments = this.segmentsFromPoints(this.calculateStepPoints(this.fromPoints()));\n fromSegments.reverse();\n }\n\n return fromSegments;\n }\n });\n\n deepExtend(StepRangeAreaSegment.prototype, StepLineMixin);\n\n var RangeAreaChart = CategoricalChart.extend({\n render: function() {\n CategoricalChart.fn.render.call(this);\n\n this.renderSegments();\n },\n\n pointType: function() {\n return RangeAreaPoint;\n },\n\n createPoint: function(data, fields) {\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var value = data.valueFields;\n\n if (!hasValue(value.from) && !hasValue(value.to)) {\n if (this.seriesMissingValues(series) === ZERO) {\n value = {\n from: 0,\n to: 0\n };\n } else {\n return null;\n }\n }\n\n var pointOptions = this.pointOptions(series, seriesIx);\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n var color = data.fields.color || series.color;\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n var point = new RangeAreaPoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n },\n\n createSegment: function(linePoints, currentSeries, seriesIx) {\n var style = (currentSeries.line || {}).style;\n var segmentType;\n if (style === \"smooth\") {\n segmentType = SplineRangeAreaSegment;\n } else if (style === \"step\") {\n segmentType = StepRangeAreaSegment;\n } else {\n segmentType = RangeAreaSegment;\n }\n\n return new segmentType(linePoints, currentSeries, seriesIx);\n },\n\n plotRange: function(point, startValue) {\n if (!point) {\n return [ startValue, startValue ];\n }\n\n return [ point.value.from, point.value.to ];\n },\n\n valueSlot: function(valueAxis, plotRange) {\n var fromSlot = valueAxis.getSlot(plotRange[0], plotRange[0], !this.options.clip);\n var toSlot = valueAxis.getSlot(plotRange[1], plotRange[1], !this.options.clip);\n if (fromSlot && toSlot) {\n return {\n from: fromSlot,\n to: toSlot\n };\n }\n },\n\n pointSlot: function(categorySlot, valueSlot) {\n var from = valueSlot.from;\n var to = valueSlot.to;\n var fromSlot, toSlot;\n\n if (this.options.invertAxes) {\n fromSlot = new Box(from.x1, categorySlot.y1, from.x2, categorySlot.y2);\n toSlot = new Box(to.x1, categorySlot.y1, to.x2, categorySlot.y2);\n } else {\n fromSlot = new Box(categorySlot.x1, from.y1, categorySlot.x2, from.y2);\n toSlot = new Box(categorySlot.x1, to.y1, categorySlot.x2, to.y2);\n }\n\n return {\n from: fromSlot,\n to: toSlot\n };\n },\n\n addValue: function(data, fields) {\n var valueFields = data.valueFields;\n if (!isNumber(valueFields.from)) {\n valueFields.from = valueFields.to;\n }\n\n if (!isNumber(valueFields.to)) {\n valueFields.to = valueFields.from;\n }\n\n CategoricalChart.fn.addValue.call(this, data, fields);\n },\n\n updateRange: function(value, fields) {\n if (value !== null && isNumber(value.from) && isNumber(value.to)) {\n var axisName = fields.series.axis;\n var axisRange = this.valueAxisRanges[axisName] = this.valueAxisRanges[axisName] || { min: MAX_VALUE, max: MIN_VALUE };\n var from = value.from;\n var to = value.to;\n\n axisRange.min = Math.min(axisRange.min, from, to);\n axisRange.max = Math.max(axisRange.max, from, to);\n }\n },\n\n formatPointValue: function(point, format) {\n var value = point.value;\n\n return this.chartService.format.auto(format, value.from, value.to);\n },\n\n animationPoints: function() {\n var points = this.points;\n var result = [];\n for (var idx = 0; idx < points.length; idx++) {\n var point = points[idx];\n if (point) {\n result.push((point.fromPoint || {}).marker);\n result.push((point.toPoint || {}).marker);\n }\n }\n\n return result.concat(this._segments);\n }\n });\n\n deepExtend(RangeAreaChart.prototype, LineChartMixin, ClipAnimationMixin);\n\n var OHLCPoint = Candlestick.extend({\n reflow: function(box) {\n var ref = this;\n var options = ref.options;\n var value = ref.value;\n var chart = ref.owner;\n var valueAxis = chart.seriesValueAxis(options);\n var oPoints = [];\n var cPoints = [];\n var lhPoints = [];\n\n var lhSlot = valueAxis.getSlot(value.low, value.high);\n var oSlot = valueAxis.getSlot(value.open, value.open);\n var cSlot = valueAxis.getSlot(value.close, value.close);\n\n oSlot.x1 = cSlot.x1 = lhSlot.x1 = box.x1;\n oSlot.x2 = cSlot.x2 = lhSlot.x2 = box.x2;\n\n var mid = lhSlot.center().x;\n\n oPoints.push([ oSlot.x1, oSlot.y1 ]);\n oPoints.push([ mid, oSlot.y1 ]);\n cPoints.push([ mid, cSlot.y1 ]);\n cPoints.push([ cSlot.x2, cSlot.y1 ]);\n lhPoints.push([ mid, lhSlot.y1 ]);\n lhPoints.push([ mid, lhSlot.y2 ]);\n\n this.lines = [\n oPoints, cPoints, lhPoints\n ];\n\n this.box = lhSlot.clone().wrap(oSlot.clone().wrap(cSlot));\n\n this.reflowNote();\n },\n\n createBody: function() {}\n });\n\n var OHLCChart = CandlestickChart.extend({\n pointType: function() {\n return OHLCPoint;\n }\n });\n\n var WaterfallSegment = ChartElement.extend({\n init: function(from, to, series) {\n ChartElement.fn.init.call(this);\n\n this.from = from;\n this.to = to;\n this.series = series;\n },\n\n linePoints: function() {\n var from = this.from;\n var ref = this;\n var fromBox = ref.from.box;\n var toBox = ref.to.box;\n var points = [];\n\n if (from.isVertical) {\n var y = from.aboveAxis ? fromBox.y1 : fromBox.y2;\n points.push(\n [ fromBox.x1, y ],\n [ toBox.x2, y ]\n );\n } else {\n var x = from.aboveAxis ? fromBox.x2 : fromBox.x1;\n points.push(\n [ x, fromBox.y1 ],\n [ x, toBox.y2 ]\n );\n }\n\n return points;\n },\n\n createVisual: function() {\n ChartElement.fn.createVisual.call(this);\n\n var line = this.series.line || {};\n\n var path = Path.fromPoints(this.linePoints(), {\n stroke: {\n color: line.color,\n width: line.width,\n opacity: line.opacity,\n dashType: line.dashType\n }\n });\n\n alignPathToPixel(path);\n this.visual.append(path);\n }\n });\n\n setDefaultOptions(WaterfallSegment, {\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n }\n });\n\n var WaterfallChart = BarChart.extend({\n render: function() {\n BarChart.fn.render.call(this);\n this.createSegments();\n },\n\n traverseDataPoints: function(callback) {\n var this$1$1 = this;\n\n var series = this.options.series;\n var totalCategories = categoriesCount(series);\n var isVertical = !this.options.invertAxes;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var total = 0;\n var runningTotal = 0;\n\n for (var categoryIx = 0; categoryIx < totalCategories; categoryIx++) {\n var data = SeriesBinder.current.bindPoint(currentSeries, categoryIx);\n var value = data.valueFields.value;\n var summary = data.fields.summary;\n var from = total;\n var to = (void 0);\n\n if (summary) {\n if (summary.toLowerCase() === \"total\") {\n data.valueFields.value = total;\n from = 0;\n to = total;\n } else {\n data.valueFields.value = runningTotal;\n to = from - runningTotal;\n runningTotal = 0;\n }\n } else if (isNumber(value)) {\n runningTotal += value;\n total += value;\n to = total;\n }\n\n callback(data, {\n category: this$1$1.categoryAxis.categoryAt(categoryIx),\n categoryIx: categoryIx,\n series: currentSeries,\n seriesIx: seriesIx,\n total: total,\n runningTotal: runningTotal,\n from: from,\n to: to,\n isVertical: isVertical\n });\n }\n }\n },\n\n updateRange: function(value, fields) {\n BarChart.fn.updateRange.call(this, { value: fields.to }, fields);\n },\n\n aboveAxis: function(point) {\n return point.value >= 0;\n },\n\n plotRange: function(point) {\n return [ point.from, point.to ];\n },\n\n createSegments: function() {\n var this$1$1 = this;\n\n var series = this.options.series;\n var seriesPoints = this.seriesPoints;\n var segments = this.segments = [];\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var points = seriesPoints[seriesIx];\n\n if (points) {\n var prevPoint = (void 0);\n for (var pointIx = 0; pointIx < points.length; pointIx++) {\n var point = points[pointIx];\n\n if (point && prevPoint) {\n var segment = new WaterfallSegment(prevPoint, point, currentSeries);\n segments.push(segment);\n this$1$1.append(segment);\n }\n\n prevPoint = point;\n }\n }\n }\n }\n });\n\n function trendlineFactory(registry, type, context) {\n var impl = registry[String(type)];\n if (impl) {\n return impl(context);\n }\n\n return null;\n }\n\n // Optimized version of calculatePolynomial for order = 1\n function calculateSlope(sourceValues, valueGetter) {\n var x = 0;\n var y = 0;\n var x2 = 0;\n var xy = 0;\n var count = 0;\n var slope, intercept;\n var xMin = Number.MAX_VALUE;\n var xMax = Number.MIN_VALUE;\n\n for (var i = 0; i < sourceValues.length; i++) {\n var value = sourceValues[i];\n var ref = valueGetter(value);\n var xValue = ref.xValue;\n var yValue = ref.yValue;\n\n if (isFinite(xValue) && xValue !== null && isFinite(yValue) && yValue !== null) {\n xMin = Math.min(xValue, xMin);\n xMax = Math.max(xValue, xMax);\n\n count++;\n x += xValue;\n y += yValue;\n x2 += Math.pow(xValue, 2);\n xy += xValue * yValue;\n }\n }\n\n if (count > 0) {\n slope = (count * xy - x * y) / (count * x2 - Math.pow(x, 2));\n intercept = (y - slope * x) / count;\n }\n\n return { slope: slope, intercept: intercept, count: count, xMin: xMin, xMax: xMax };\n }\n\n var checkAllPositive = function (sourceValues, fieldName) { return sourceValues.every(function (ref) {\n var valueFields = ref.valueFields;\n\n return !hasValue(valueFields[fieldName]) || valueFields[fieldName] > 0;\n }); };\n\n function getTrendlineData(valueMapper, categoryAxis) {\n var data = [];\n var totalRange = categoryAxis.totalRangeIndices();\n var currentRange = categoryAxis.currentRangeIndices();\n var range = {\n min: Math.floor(Math.max(currentRange.min - 1, totalRange.min)),\n max: Math.ceil(Math.min(currentRange.max + 2, totalRange.max))\n };\n\n for (var i = range.min; i < range.max; i++) {\n var x = (i + 1);\n data[i] = {\n category: categoryAxis.categoryAt(i, true),\n value: valueMapper(x)\n };\n }\n\n return data;\n }\n\n function exponentialTrendline(context) {\n var options = context.options;\n var categoryAxis = context.categoryAxis;\n var seriesValues = context.seriesValues;\n\n var data = getData({ seriesValues: seriesValues, categoryAxis: categoryAxis, options: options });\n if (data) {\n return $.extend({}, options,\n\n {type: 'line',\n data: data,\n categoryField: 'category',\n field: 'value'});\n }\n\n return null;\n }\n\n var valueGetter = function (fieldName) { return function (ref) {\n var categoryIx = ref.categoryIx;\n var valueFields = ref.valueFields;\n\n return ({ xValue: categoryIx + 1, yValue: Math.log(valueFields[fieldName]) });\n } };\n\n function getData(ref) {\n var seriesValues = ref.seriesValues;\n var categoryAxis = ref.categoryAxis;\n var options = ref.options;\n\n var sourceValues = seriesValues();\n if (!checkAllPositive(sourceValues, options.field)) {\n return null;\n }\n\n var ref$1 = calculateSlope(sourceValues, valueGetter(options.field));\n var slope = ref$1.slope;\n var intercept = ref$1.intercept;\n var count = ref$1.count;\n if (count > 0) {\n // Exponential trendline equation:\n // y = a * e ^ (b * x)\n var a = Math.exp(intercept);\n var b = slope;\n\n return getTrendlineData(function (x) { return a * Math.exp(b * x); }, categoryAxis);\n }\n\n return null;\n }\n\n function linearTrendline(context) {\n var options = context.options;\n var categoryAxis = context.categoryAxis;\n var seriesValues = context.seriesValues;\n\n var data = getData$1({ seriesValues: seriesValues, categoryAxis: categoryAxis, options: options });\n if (data) {\n return $.extend({}, options,\n\n {type: 'line',\n data: data,\n categoryField: 'category',\n field: 'value'});\n }\n\n return null;\n }\n\n var valueGetter$1 = function (fieldName) { return function (ref) {\n var categoryIx = ref.categoryIx;\n var valueFields = ref.valueFields;\n\n return ({ xValue: categoryIx + 1, yValue: valueFields[fieldName] });\n } };\n\n function getData$1(ref) {\n var seriesValues = ref.seriesValues;\n var categoryAxis = ref.categoryAxis;\n var options = ref.options;\n\n var ref$1 = calculateSlope(seriesValues(), valueGetter$1(options.field));\n var slope = ref$1.slope;\n var intercept = ref$1.intercept;\n var count = ref$1.count;\n\n if (count > 0) {\n return getTrendlineData(function (x) { return slope * x + intercept; }, categoryAxis);\n }\n\n return null;\n }\n\n function logarithmicTrendline(context) {\n var options = context.options;\n var categoryAxis = context.categoryAxis;\n var seriesValues = context.seriesValues;\n\n var data = getData$2({ seriesValues: seriesValues, categoryAxis: categoryAxis, options: options });\n if (data) {\n return $.extend({}, options,\n\n {type: 'line',\n data: data,\n categoryField: 'category',\n field: 'value'});\n }\n\n return null;\n }\n\n var valueGetter$2 = function (fieldName) { return function (ref) {\n var categoryIx = ref.categoryIx;\n var valueFields = ref.valueFields;\n\n return ({ xValue: Math.log(categoryIx + 1), yValue: valueFields[fieldName] });\n } };\n\n function getData$2(ref) {\n var seriesValues = ref.seriesValues;\n var categoryAxis = ref.categoryAxis;\n var options = ref.options;\n\n var ref$1 = calculateSlope(seriesValues(), valueGetter$2(options.field));\n var slope = ref$1.slope;\n var intercept = ref$1.intercept;\n var count = ref$1.count;\n if (count > 0) {\n // Logarithmic trendline equation:\n // y = a * ln (x) + b\n var a = slope;\n var b = intercept;\n return getTrendlineData(function (x) { return a * Math.log(x) + b; }, categoryAxis);\n }\n\n return null;\n }\n\n function calculateMovingAverage(sourceValues, valueGetter, period) {\n var averagePoints = [];\n var values = [];\n var start = Math.max(MIN_MOVING_AVERAGE_PERIOD, period) - 1;\n\n var end = 0;\n var sum = 0;\n\n for (var i = 0; i < sourceValues.length; i++) {\n var value = sourceValues[i];\n var ref = valueGetter(value);\n var xValue = ref.xValue;\n var yValue = ref.yValue;\n\n if (isFinite(yValue) && yValue !== null) {\n values.push(yValue);\n sum += yValue;\n end = Math.max(i, end);\n } else {\n values.push(null);\n }\n\n if (i >= start) {\n var count = values.filter(function (value) { return value !== null; }).length;\n var lastValue = values.shift() || 0;\n\n if (count > 0) {\n var average = sum / count;\n averagePoints.push([xValue, average]);\n\n sum -= lastValue;\n continue;\n }\n }\n\n averagePoints.push([xValue, null]);\n }\n\n return averagePoints.slice(0, end + 1);\n }\n\n function movingAverageTrendline(context) {\n var options = context.options;\n\n var data = getData$3(context);\n if (data) {\n return $.extend({}, options,\n\n {type: 'line',\n data: data,\n categoryField: 'category',\n field: 'value'});\n }\n\n return null;\n }\n\n var valueGetter$3 = function (fieldName) { return function (ref) {\n var categoryIx = ref.categoryIx;\n var valueFields = ref.valueFields;\n\n return ({ xValue: categoryIx, yValue: valueFields[fieldName] });\n } };\n\n function calculatePoints(ref) {\n var options = ref.options;\n var categoryAxis = ref.categoryAxis;\n var seriesValues = ref.seriesValues;\n\n var period = (options.trendline || {}).period || MIN_MOVING_AVERAGE_PERIOD;\n var totalRange = categoryAxis.totalRangeIndices();\n var currentRange = categoryAxis.currentRangeIndices();\n var range = {\n min: Math.floor(Math.max(currentRange.min - period, totalRange.min)),\n max: Math.ceil(Math.min(currentRange.max + period + 2, totalRange.max))\n };\n\n return calculateMovingAverage(seriesValues(range), valueGetter$3(options.field), period);\n }\n\n function getData$3(context) {\n var categoryAxis = context.categoryAxis;\n var points = calculatePoints(context);\n var data = [];\n points.forEach(function (ref) {\n var categoryIx = ref[0];\n var value = ref[1];\n\n data[categoryIx] = {\n category: categoryAxis.categoryAt(categoryIx, true),\n value: value\n };\n });\n\n if (data.length > 0) {\n return data;\n }\n\n return null;\n }\n\n var MIN_ORDER = 1;\n var MAX_ORDER = 6;\n\n function calculatePolynomial(sourceValues, valueGetter, order) {\n var k = Math.min(Math.max(order || MIN_ORDER, MIN_ORDER), MAX_ORDER) + 1;\n var X$$1 = new dataviz.Matrix();\n var Y$$1 = new dataviz.Matrix();\n var count = 0;\n var xMin = Number.MAX_VALUE;\n var xMax = Number.MIN_VALUE;\n var valueMapper = function (x) { return x; };\n var coefficients = [];\n\n for (var i = 0; i < sourceValues.length; i++) {\n var value = sourceValues[i];\n var ref = valueGetter(value);\n var xValue = ref.xValue;\n var yValue = ref.yValue;\n\n if (isFinite(xValue) && xValue !== null && isFinite(yValue) && yValue !== null) {\n xMin = Math.min(xValue, xMin);\n xMax = Math.max(xValue, xMax);\n count++;\n\n // Set Y value in matrix\n Y$$1.set(i, 0, yValue);\n\n // Set indicator column to 1 for valid values\n X$$1.set(i, 0, 1);\n X$$1.set(i, 1, xValue);\n for (var pow = 2; pow <= k; pow++) {\n X$$1.set(i, pow, Math.pow(X$$1.get(i, 1), pow));\n }\n } else {\n // Set indicator column to 0 for missing values\n X$$1.set(i, 0, 0);\n }\n }\n\n // Limit order to number of values.\n X$$1.width = Math.min(k, count);\n\n if (count > 0) {\n // Polynomial trendline equation:\n // y = aN * x^N + ... + a2 * x^2 + a1 * x + a0\n coefficients = linearRegression(X$$1, Y$$1);\n valueMapper = function (x) { return coefficients.reduce(function (y, a, n) { return y + a * Math.pow(x, n); }, 0); };\n }\n\n return {\n coefficients: coefficients,\n count: count,\n valueMapper: valueMapper,\n xMin: xMin,\n xMax: xMax\n };\n }\n\n function linearRegression(X$$1, Y$$1) {\n var Xt = X$$1.transpose();\n var B = Xt.multiply(X$$1).inverse().multiply(Xt).multiply(Y$$1); // the last square estimate of the coefficients\n\n var coefficients = [];\n for (var i = 0; i < B.height; i++) {\n coefficients.push(B.get(i, 0));\n }\n\n // y_intercept and regression coefficients ('slopes')\n return coefficients;\n\n // It's possible to calculate statistics for the regression based on\n // the LINEST function implementation in kendo-spreadsheet-common/src/calc.js\n //\n // * The standard errors (of coefficients and y-intercept)\n // * The coefficient of determination (R^2)\n // * The standard error for the y estimate\n // * The F statistic\n // * The degrees of freedom\n // * The regression sum of squares (SSR)\n // * The residual sum of squares (SSE)\n }\n\n function polynomialTrendline(context) {\n var options = context.options;\n var categoryAxis = context.categoryAxis;\n var seriesValues = context.seriesValues;\n\n var data = getData$4({ seriesValues: seriesValues, categoryAxis: categoryAxis, options: options });\n if (data) {\n return $.extend({}, options,\n\n {type: 'line',\n data: data,\n categoryField: 'category',\n field: 'value'});\n }\n\n return null;\n }\n\n var valueGetter$4 = function (fieldName) { return function (ref) {\n var categoryIx = ref.categoryIx;\n var valueFields = ref.valueFields;\n\n return ({ xValue: categoryIx + 1, yValue: valueFields[fieldName] });\n } };\n\n function getData$4(ref) {\n var seriesValues = ref.seriesValues;\n var categoryAxis = ref.categoryAxis;\n var options = ref.options;\n\n var order = (options.trendline || {}).order;\n var ref$1 = calculatePolynomial(seriesValues(), valueGetter$4(options.field), order);\n var count = ref$1.count;\n var valueMapper = ref$1.valueMapper;\n\n if (count > 0) {\n // Polynomial trendline equation:\n // y = aN * x^N + ... + a2 * x^2 + a1 * x + a0\n\n return getTrendlineData(function (x) { return valueMapper(x); }, categoryAxis);\n }\n\n return null;\n }\n\n function powerTrendline(context) {\n var options = context.options;\n var categoryAxis = context.categoryAxis;\n var seriesValues = context.seriesValues;\n\n var data = getData$5({ seriesValues: seriesValues, categoryAxis: categoryAxis, options: options });\n if (data) {\n return $.extend({}, options,\n\n {type: 'line',\n data: data,\n categoryField: 'category',\n field: 'value'});\n }\n\n return null;\n }\n\n var valueGetter$5 = function (fieldName) { return function (ref) {\n var categoryIx = ref.categoryIx;\n var valueFields = ref.valueFields;\n\n return ({ xValue: Math.log(categoryIx + 1), yValue: Math.log(valueFields[fieldName]) });\n } };\n\n function getData$5(ref) {\n var seriesValues = ref.seriesValues;\n var categoryAxis = ref.categoryAxis;\n var options = ref.options;\n\n var sourceValues = seriesValues();\n if (!checkAllPositive(sourceValues, options.field)) {\n return null;\n }\n\n var ref$1 = calculateSlope(sourceValues, valueGetter$5(options.field));\n var slope = ref$1.slope;\n var intercept = ref$1.intercept;\n var count = ref$1.count;\n if (count > 0) {\n // Power trendline equation:\n // y = a * x ^ b\n var a = Math.exp(intercept);\n var b = slope;\n\n return getTrendlineData(function (x) { return a * Math.pow(x, b); }, categoryAxis);\n }\n\n return null;\n }\n\n var registry = {};\n registry[TRENDLINE_EXPONENTIAL] = exponentialTrendline;\n registry[TRENDLINE_LINEAR] = linearTrendline;\n registry[TRENDLINE_LOGARITHMIC] = logarithmicTrendline;\n registry[TRENDLINE_MOVING_AVERAGE] = movingAverageTrendline;\n registry[TRENDLINE_POLYNOMIAL] = polynomialTrendline;\n registry[TRENDLINE_POWER] = powerTrendline;\n\n var AREA_SERIES = [ AREA, VERTICAL_AREA, RANGE_AREA, VERTICAL_RANGE_AREA ];\n var OUT_OF_RANGE_SERIES = [ LINE, VERTICAL_LINE ].concat(AREA_SERIES);\n\n var CategoricalPlotArea = PlotAreaBase.extend({\n initFields: function(series) {\n var this$1$1 = this;\n\n this.namedCategoryAxes = {};\n this.namedValueAxes = {};\n this.valueAxisRangeTracker = new AxisGroupRangeTracker();\n this._seriesPointsCache = {};\n this._currentPointsCache = {};\n\n if (series.length > 0) {\n this.invertAxes = inArray(\n series[0].type, [ BAR, BULLET, VERTICAL_LINE, VERTICAL_AREA, VERTICAL_RANGE_AREA,\n RANGE_BAR, HORIZONTAL_WATERFALL, VERTICAL_BOX_PLOT ]\n );\n\n for (var i = 0; i < series.length; i++) {\n var stack = series[i].stack;\n if (stack && stack.type === \"100%\") {\n this$1$1.stack100 = true;\n break;\n }\n }\n }\n },\n\n render: function(panes) {\n if (panes === void 0) { panes = this.panes; }\n\n this.series = [].concat( this.originalSeries );\n this.createCategoryAxes(panes);\n\n this.aggregateCategories(panes);\n this.createTrendlineSeries(panes);\n\n this.createCategoryAxesLabels(panes);\n this.createCharts(panes);\n this.createValueAxes(panes);\n },\n\n removeAxis: function(axis) {\n var axisName = axis.options.name;\n\n PlotAreaBase.fn.removeAxis.call(this, axis);\n\n if (axis instanceof CategoryAxis) {\n delete this.namedCategoryAxes[axisName];\n } else {\n this.valueAxisRangeTracker.reset(axisName);\n delete this.namedValueAxes[axisName];\n }\n\n if (axis === this.categoryAxis) {\n delete this.categoryAxis;\n }\n\n if (axis === this.valueAxis) {\n delete this.valueAxis;\n }\n },\n\n trendlineFactory: function(options, series) {\n var categoryAxis = this.seriesCategoryAxis(options);\n var seriesValues = this.seriesValues.bind(this, series.index);\n\n var trendline = trendlineFactory(registry, options.type, {\n options: options,\n categoryAxis: categoryAxis,\n seriesValues: seriesValues\n });\n\n if (trendline) {\n // Inherit settings\n trendline.categoryAxis = series.categoryAxis;\n trendline.valueAxis = series.valueAxis;\n\n return this.filterSeries(trendline, categoryAxis);\n }\n\n return trendline;\n },\n\n trendlineAggregateForecast: function() {\n return this.series\n .map(function (series) { return (series.trendline || {}).forecast; })\n .filter(function (forecast) { return forecast !== undefined; })\n .reduce(function (result, forecast) { return ({\n before: Math.max(result.before, forecast.before || 0),\n after: Math.max(result.after, forecast.after || 0)\n }); }, { before: 0, after: 0 });\n },\n\n seriesValues: function(seriesIx, range) {\n var this$1$1 = this;\n\n var result = [];\n\n var series = this.srcSeries[seriesIx];\n var categoryAxis = this.seriesCategoryAxis(series);\n var dateAxis = equalsIgnoreCase(categoryAxis.options.type, DATE);\n if (dateAxis) {\n this._seriesPointsCache = {};\n this._currentPointsCache = {};\n categoryAxis.options.dataItems = [];\n series = this.aggregateSeries(series, categoryAxis, categoryAxis.totalRangeIndices());\n }\n\n var min = range ? range.min : 0;\n var max = range ? range.max : series.data.length;\n for (var categoryIx = min; categoryIx < max; categoryIx++) {\n var data = this$1$1.bindPoint(series, categoryIx);\n result.push({ categoryIx: categoryIx, category: data.fields.category, valueFields: data.valueFields });\n }\n\n return result;\n },\n\n createCharts: function(panes) {\n var this$1$1 = this;\n\n var seriesByPane = this.groupSeriesByPane();\n\n for (var i = 0; i < panes.length; i++) {\n var pane = panes[i];\n var paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n this$1$1.addToLegend(paneSeries);\n\n var visibleSeries = this$1$1.filterVisibleSeries(paneSeries);\n if (!visibleSeries) {\n continue;\n }\n\n var groups = this$1$1.groupSeriesByCategoryAxis(visibleSeries);\n for (var groupIx = 0; groupIx < groups.length; groupIx++) {\n this$1$1.createChartGroup(groups[groupIx], pane);\n }\n }\n },\n\n createChartGroup: function(series, pane) {\n this.createAreaChart(\n filterSeriesByType(series, [ AREA, VERTICAL_AREA ]), pane\n );\n\n this.createRangeAreaChart(\n filterSeriesByType(series, [ RANGE_AREA, VERTICAL_RANGE_AREA ]), pane\n );\n\n this.createBarChart(\n filterSeriesByType(series, [ COLUMN, BAR ]), pane\n );\n\n this.createRangeBarChart(\n filterSeriesByType(series, [ RANGE_COLUMN, RANGE_BAR ]), pane\n );\n\n this.createBulletChart(\n filterSeriesByType(series, [ BULLET, VERTICAL_BULLET ]), pane\n );\n\n this.createCandlestickChart(\n filterSeriesByType(series, CANDLESTICK), pane\n );\n\n this.createBoxPlotChart(\n filterSeriesByType(series, [ BOX_PLOT, VERTICAL_BOX_PLOT ]), pane\n );\n\n this.createOHLCChart(\n filterSeriesByType(series, OHLC), pane\n );\n\n this.createWaterfallChart(\n filterSeriesByType(series, [ WATERFALL, HORIZONTAL_WATERFALL ]), pane\n );\n\n this.createLineChart(\n filterSeriesByType(series, [ LINE, VERTICAL_LINE ]), pane\n );\n },\n\n aggregateCategories: function(panes) {\n var this$1$1 = this;\n\n var series = [].concat( this.series );\n var processedSeries = [];\n this._currentPointsCache = {};\n this._seriesPointsCache = this._seriesPointsCache || {};\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n\n if (!this$1$1.isTrendline(currentSeries)) {\n var categoryAxis = this$1$1.seriesCategoryAxis(currentSeries);\n var axisPane = this$1$1.findPane(categoryAxis.options.pane);\n var dateAxis = equalsIgnoreCase(categoryAxis.options.type, DATE);\n\n if ((dateAxis || currentSeries.categoryField) && inArray(axisPane, panes)) {\n currentSeries = this$1$1.aggregateSeries(currentSeries, categoryAxis, categoryAxis.currentRangeIndices());\n } else {\n currentSeries = this$1$1.filterSeries(currentSeries, categoryAxis);\n }\n }\n\n processedSeries.push(currentSeries);\n }\n\n this._seriesPointsCache = this._currentPointsCache;\n this._currentPointsCache = null;\n\n this.srcSeries = series;\n this.series = processedSeries;\n },\n\n filterSeries: function(series, categoryAxis) {\n var dataLength = (series.data || {}).length;\n categoryAxis._seriesMax = Math.max(categoryAxis._seriesMax || 0, dataLength);\n\n if (!(defined(categoryAxis.options.min) || defined(categoryAxis.options.max))) {\n return series;\n }\n\n var range = categoryAxis.currentRangeIndices();\n var outOfRangePoints = inArray(series.type, OUT_OF_RANGE_SERIES);\n var currentSeries = deepExtend({}, series);\n\n currentSeries.data = (currentSeries.data || []).slice(range.min, range.max + 1);\n\n if (outOfRangePoints) {\n createOutOfRangePoints(currentSeries, range, dataLength, function (idx) { return ({\n item: series.data[idx],\n category: categoryAxis.categoryAt(idx, true),\n categoryIx: idx - range.min\n }); }, function (idx) { return defined(series.data[idx]); });\n }\n\n return currentSeries;\n },\n\n clearSeriesPointsCache: function() {\n this._seriesPointsCache = {};\n },\n\n seriesSourcePoints: function(series, categoryAxis) {\n var this$1$1 = this;\n\n var key = (series.index) + \";\" + (categoryAxis.categoriesHash());\n if (this._seriesPointsCache && this._seriesPointsCache[key]) {\n this._currentPointsCache[key] = this._seriesPointsCache[key];\n return this._seriesPointsCache[key];\n }\n\n var axisOptions = categoryAxis.options;\n var srcCategories = axisOptions.srcCategories;\n var dateAxis = equalsIgnoreCase(axisOptions.type, DATE);\n var srcData = series.data;\n var result = [];\n if (!dateAxis) {\n categoryAxis.indexCategories();\n }\n\n for (var idx = 0; idx < srcData.length; idx++) {\n var category = SeriesBinder.current.bindPoint(series, idx).fields.category;\n if (dateAxis) {\n category = parseDateCategory(category, srcData[idx], this$1$1.chartService.intl);\n }\n\n if (!defined(category)) {\n category = srcCategories[idx];\n }\n\n if (defined(category) && category !== null) {\n var categoryIx = categoryAxis.totalIndex(category);\n result[categoryIx] = result[categoryIx] || { items: [], category: category };\n result[categoryIx].items.push(idx);\n }\n }\n\n this._currentPointsCache[key] = result;\n\n return result;\n },\n\n aggregateSeries: function(series, categoryAxis, range) {\n var srcData = series.data;\n if (!srcData.length) {\n return series;\n }\n\n var srcPoints = this.seriesSourcePoints(series, categoryAxis);\n var result = deepExtend({}, series);\n var aggregator = new SeriesAggregator(deepExtend({}, series), SeriesBinder.current, DefaultAggregates.current);\n var data = result.data = [];\n\n var dataItems = categoryAxis.options.dataItems || [];\n\n var categoryItem = function (idx) {\n var categoryIdx = idx - range.min;\n var point = srcPoints[idx];\n if (!point) {\n point = srcPoints[idx] = {};\n }\n\n point.categoryIx = categoryIdx;\n\n if (!point.item) {\n var category = categoryAxis.categoryAt(idx, true);\n point.category = category;\n point.item = aggregator.aggregatePoints(point.items, category);\n }\n\n return point;\n };\n\n for (var idx = range.min; idx <= range.max; idx++) {\n var point = categoryItem(idx);\n data[point.categoryIx] = point.item;\n\n if (point.items && point.items.length) {\n dataItems[point.categoryIx] = point.item;\n }\n }\n\n if (inArray(result.type, OUT_OF_RANGE_SERIES)) {\n createOutOfRangePoints(result, range, categoryAxis.totalCount(), categoryItem, function (idx) { return srcPoints[idx]; });\n }\n\n categoryAxis.options.dataItems = dataItems;\n\n return result;\n },\n\n appendChart: function(chart, pane) {\n var series = chart.options.series;\n var categoryAxis = this.seriesCategoryAxis(series[0]);\n var categories = categoryAxis.options.categories;\n var categoriesToAdd = Math.max(0, categoriesCount(series) - categories.length);\n\n if (categoriesToAdd > 0) {//consider setting an option to axis instead of adding fake categories\n categories = categoryAxis.options.categories = categoryAxis.options.categories.slice(0);\n while (categoriesToAdd--) {\n categories.push(\"\");\n }\n }\n\n this.valueAxisRangeTracker.update(chart.valueAxisRanges);\n\n PlotAreaBase.fn.appendChart.call(this, chart, pane);\n },\n\n seriesPaneName: function(series) {\n var options = this.options;\n var axisName = series.axis;\n var axisOptions = [].concat(options.valueAxis);\n var axis = grep(axisOptions, function(a) { return a.name === axisName; })[0];\n var panes = options.panes || [ {} ];\n var defaultPaneName = (panes[0] || {}).name || \"default\";\n var paneName = (axis || {}).pane || defaultPaneName;\n\n return paneName;\n },\n\n seriesCategoryAxis: function(series) {\n var axisName = series.categoryAxis;\n var axis = axisName ? this.namedCategoryAxes[axisName] : this.categoryAxis;\n\n if (!axis) {\n throw new Error(\"Unable to locate category axis with name \" + axisName);\n }\n\n return axis;\n },\n\n stackableChartOptions: function(series, pane) {\n var anyStackedSeries = series.some(function (s) { return s.stack; });\n var isStacked100 = series.some(function (s) { return s.stack && s.stack.type === \"100%\"; });\n var clip = pane.options.clip;\n\n return {\n defaultStack: series[0].stack,\n isStacked: anyStackedSeries,\n isStacked100: isStacked100,\n clip: clip\n };\n },\n\n groupSeriesByCategoryAxis: function(series) {\n var categoryAxes = [];\n var unique = {};\n for (var idx = 0; idx < series.length; idx++) {\n var name = series[idx].categoryAxis || \"$$default$$\";\n if (!dataviz.hasOwnProperty(unique, name)) {\n unique[name] = true;\n categoryAxes.push(name);\n }\n }\n\n var groups = [];\n for (var axisIx = 0; axisIx < categoryAxes.length; axisIx++) {\n var axis = categoryAxes[axisIx];\n var axisSeries = groupSeries(series, axis, axisIx);\n if (axisSeries.length === 0) {\n continue;\n }\n\n groups.push(axisSeries);\n }\n\n return groups;\n },\n\n createBarChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var barChart = new BarChart(this, $.extend({\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing\n }, this.stackableChartOptions(series, pane)));\n\n this.appendChart(barChart, pane);\n },\n\n createRangeBarChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var rangeColumnChart = new RangeBarChart(this, {\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing\n });\n\n this.appendChart(rangeColumnChart, pane);\n },\n\n createBulletChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var bulletChart = new BulletChart(this, {\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(bulletChart, pane);\n },\n\n createLineChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var lineChart = new LineChart(this, $.extend({\n invertAxes: this.invertAxes,\n series: series\n }, this.stackableChartOptions(series, pane)));\n\n this.appendChart(lineChart, pane);\n },\n\n createAreaChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var areaChart = new AreaChart(this, $.extend({\n invertAxes: this.invertAxes,\n series: series\n }, this.stackableChartOptions(series, pane)));\n\n this.appendChart(areaChart, pane);\n },\n\n createRangeAreaChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var rangeAreaChart = new RangeAreaChart(this, {\n invertAxes: this.invertAxes,\n series: series,\n clip: pane.options.clip\n });\n\n this.appendChart(rangeAreaChart, pane);\n },\n\n createOHLCChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var chart = new OHLCChart(this, {\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n series: series,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(chart, pane);\n },\n\n createCandlestickChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var chart = new CandlestickChart(this, {\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n series: series,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(chart, pane);\n },\n\n createBoxPlotChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var chart = new BoxPlotChart(this, {\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n series: series,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(chart, pane);\n },\n\n createWaterfallChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var waterfallChart = new WaterfallChart(this, {\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing\n });\n\n this.appendChart(waterfallChart, pane);\n },\n\n axisRequiresRounding: function(categoryAxisName, categoryAxisIndex) {\n var this$1$1 = this;\n\n var centeredSeries = filterSeriesByType(this.series, EQUALLY_SPACED_SERIES);\n\n for (var seriesIx = 0; seriesIx < this.series.length; seriesIx++) {\n var currentSeries = this$1$1.series[seriesIx];\n if (inArray(currentSeries.type, AREA_SERIES)) {\n var line = currentSeries.line;\n if (line && line.style === STEP) {\n centeredSeries.push(currentSeries);\n }\n }\n }\n\n for (var seriesIx$1 = 0; seriesIx$1 < centeredSeries.length; seriesIx$1++) {\n var seriesAxis = centeredSeries[seriesIx$1].categoryAxis || \"\";\n if (seriesAxis === categoryAxisName || (!seriesAxis && categoryAxisIndex === 0)) {\n return true;\n }\n }\n },\n\n aggregatedAxis: function(categoryAxisName, categoryAxisIndex) {\n var series = this.series;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var seriesAxis = series[seriesIx].categoryAxis || \"\";\n if ((seriesAxis === categoryAxisName || (!seriesAxis && categoryAxisIndex === 0)) && series[seriesIx].categoryField) {\n return true;\n }\n }\n },\n\n createCategoryAxesLabels: function() {\n var axes = this.axes;\n for (var i = 0; i < axes.length; i++) {\n if (axes[i] instanceof CategoryAxis) {\n axes[i].createLabels();\n }\n }\n },\n\n createCategoryAxes: function(panes) {\n var this$1$1 = this;\n\n var invertAxes = this.invertAxes;\n var definitions = [].concat(this.options.categoryAxis);\n var axes = [];\n\n for (var i = 0; i < definitions.length; i++) {\n var axisOptions = definitions[i];\n var axisPane = this$1$1.findPane(axisOptions.pane);\n\n if (inArray(axisPane, panes)) {\n var name = axisOptions.name;\n var categories = axisOptions.categories; if (categories === void 0) { categories = []; }\n axisOptions = deepExtend({\n vertical: invertAxes,\n reverse: !invertAxes && this$1$1.chartService.rtl,\n axisCrossingValue: invertAxes ? MAX_VALUE : 0\n }, axisOptions);\n\n if (!defined(axisOptions.justified)) {\n axisOptions.justified = this$1$1.isJustified();\n }\n\n if (this$1$1.axisRequiresRounding(name, i)) {\n axisOptions.justified = false;\n }\n\n var categoryAxis = (void 0);\n\n if (isDateAxis(axisOptions, categories[0])) {\n axisOptions._forecast = this$1$1.trendlineAggregateForecast();\n categoryAxis = new dataviz.DateCategoryAxis(axisOptions, this$1$1.chartService);\n } else {\n categoryAxis = new CategoryAxis(axisOptions, this$1$1.chartService);\n }\n\n definitions[i].categories = categoryAxis.options.srcCategories;\n\n if (name) {\n if (this$1$1.namedCategoryAxes[name]) {\n throw new Error((\"Category axis with name \" + name + \" is already defined\"));\n }\n this$1$1.namedCategoryAxes[name] = categoryAxis;\n }\n\n categoryAxis.axisIndex = i;\n axes.push(categoryAxis);\n this$1$1.appendAxis(categoryAxis);\n }\n }\n\n var primaryAxis = this.categoryAxis || axes[0];\n this.categoryAxis = primaryAxis;\n\n if (invertAxes) {\n this.axisY = primaryAxis;\n } else {\n this.axisX = primaryAxis;\n }\n },\n\n isJustified: function() {\n var series = this.series;\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n if (!inArray(currentSeries.type, AREA_SERIES)) {\n return false;\n }\n }\n\n return true;\n },\n\n createValueAxes: function(panes) {\n var this$1$1 = this;\n\n var tracker = this.valueAxisRangeTracker;\n var defaultRange = tracker.query();\n var definitions = [].concat(this.options.valueAxis);\n var invertAxes = this.invertAxes;\n var baseOptions = { vertical: !invertAxes, reverse: invertAxes && this.chartService.rtl };\n var axes = [];\n\n if (this.stack100) {\n baseOptions.roundToMajorUnit = false;\n baseOptions.labels = { format: \"P0\" };\n }\n\n for (var i = 0; i < definitions.length; i++) {\n var axisOptions = definitions[i];\n var axisPane = this$1$1.findPane(axisOptions.pane);\n\n if (inArray(axisPane, panes)) {\n var name = axisOptions.name;\n var defaultAxisRange = equalsIgnoreCase(axisOptions.type, LOGARITHMIC) ? { min: 0.1, max: 1 } : { min: 0, max: 1 };\n var range = tracker.query(name) || defaultRange || defaultAxisRange;\n\n if (i === 0 && range && defaultRange) {\n range.min = Math.min(range.min, defaultRange.min);\n range.max = Math.max(range.max, defaultRange.max);\n }\n\n var axisType = (void 0);\n if (equalsIgnoreCase(axisOptions.type, LOGARITHMIC)) {\n axisType = dataviz.LogarithmicAxis;\n } else {\n axisType = dataviz.NumericAxis;\n }\n\n var valueAxis = new axisType(range.min, range.max,\n deepExtend({}, baseOptions, axisOptions),\n this$1$1.chartService\n );\n\n if (name) {\n if (this$1$1.namedValueAxes[name]) {\n throw new Error((\"Value axis with name \" + name + \" is already defined\"));\n }\n this$1$1.namedValueAxes[name] = valueAxis;\n }\n valueAxis.axisIndex = i;\n\n axes.push(valueAxis);\n this$1$1.appendAxis(valueAxis);\n }\n }\n\n var primaryAxis = this.valueAxis || axes[0];\n this.valueAxis = primaryAxis;\n\n if (invertAxes) {\n this.axisX = primaryAxis;\n } else {\n this.axisY = primaryAxis;\n }\n },\n\n _dispatchEvent: function(chart, e, eventType) {\n var coords = chart._eventCoordinates(e);\n var point = new Point(coords.x, coords.y);\n var pane = this.pointPane(point);\n var categories = [];\n var values = [];\n\n if (!pane) {\n return;\n }\n\n var allAxes = pane.axes;\n for (var i = 0; i < allAxes.length; i++) {\n var axis = allAxes[i];\n if (axis.getValue) {\n appendIfNotNull(values, axis.getValue(point));\n } else {\n appendIfNotNull(categories, axis.getCategory(point));\n }\n }\n\n if (categories.length === 0) {\n appendIfNotNull(categories, this.categoryAxis.getCategory(point));\n }\n\n if (categories.length > 0 && values.length > 0) {\n chart.trigger(eventType, {\n element: eventElement(e),\n originalEvent: e,\n category: singleItemOrArray(categories),\n value: singleItemOrArray(values)\n });\n }\n },\n\n pointPane: function(point) {\n var panes = this.panes;\n\n for (var i = 0; i < panes.length; i++) {\n var currentPane = panes[i];\n if (currentPane.contentBox.containsPoint(point)) {\n return currentPane;\n }\n }\n },\n\n updateAxisOptions: function(axis, options) {\n updateAxisOptions(this.options, axis, options);\n updateAxisOptions(this.originalOptions, axis, options);\n },\n\n _pointsByVertical: function(basePoint, offset) {\n if (offset === void 0) { offset = 0; }\n\n if (this.invertAxes) {\n return this._siblingsBySeriesIndex(basePoint.series.index, offset);\n }\n\n return this._siblingsByPointIndex(basePoint.getIndex());\n },\n\n _pointsByHorizontal: function(basePoint, offset) {\n if (offset === void 0) { offset = 0; }\n\n if (this.invertAxes) {\n return this._siblingsByPointIndex(basePoint.getIndex());\n }\n\n var siblings = this._siblingsBySeriesIndex(basePoint.series.index, offset);\n\n if (this.chartService.rtl) {\n return siblings.reverse();\n }\n\n return siblings;\n },\n\n _siblingsByPointIndex: function(pointIndex) {\n var this$1$1 = this;\n\n var charts = this.charts;\n var result = [];\n\n for (var i = 0; i < charts.length; i++) {\n var chart = charts[i];\n\n if (chart.pane && chart.pane.options.name === \"_navigator\") {\n continue;\n }\n\n var chartPoints = chart.points\n .filter(function (point) { return point && point.visible !== false && point.getIndex() === pointIndex; }\n );\n\n result.push.apply(result, chartPoints.sort(this$1$1._getSeriesCompareFn(chartPoints[0])));\n }\n\n return result;\n },\n\n _siblingsBySeriesIndex: function(seriesIndex, offset) {\n var index = cycleIndex(seriesIndex + offset, this.series.length);\n\n return this.pointsBySeriesIndex(index);\n },\n\n _getSeriesCompareFn: function(point) {\n var isStacked = this._isInStackedSeries(point);\n\n if (isStacked && this.invertAxes || !isStacked && !this.invertAxes) {\n return function (a, b) { return a.box.center().x - b.box.center().x; };\n }\n\n return function (a, b) { return a.box.center().y - b.box.center().y; };\n },\n\n _isInStackedSeries: function(point) {\n var sortableSeries = inArray(point.series.type,\n [ AREA, VERTICAL_AREA, RANGE_AREA, VERTICAL_RANGE_AREA, LINE, VERTICAL_LINE, RADAR_LINE, RADAR_AREA]);\n\n var stackableSeries = inArray(point.series.type, [ COLUMN, BAR]);\n\n return sortableSeries || stackableSeries && point.options.isStacked;\n }\n });\n\n function updateAxisOptions(targetOptions, axis, options) {\n var axesOptions = axis instanceof CategoryAxis ? [].concat(targetOptions.categoryAxis) : [].concat(targetOptions.valueAxis);\n deepExtend(axesOptions[axis.axisIndex], options);\n }\n\n function groupSeries(series, axis, axisIx) {\n return grep(series, function(s) {\n return (axisIx === 0 && !s.categoryAxis) || (s.categoryAxis === axis);\n });\n }\n\n setDefaultOptions(CategoricalPlotArea, {\n categoryAxis: {},\n valueAxis: {}\n });\n\n deepExtend(CategoricalPlotArea.prototype, PlotAreaEventsMixin);\n\n var Highlight = Class.extend({\n init: function() {\n\n this._points = [];\n },\n\n destroy: function() {\n this._points = [];\n },\n\n show: function(points, opacity) {\n var this$1$1 = this;\n\n var arrayPoints = [].concat(points);\n this.hide();\n\n for (var i = 0; i < arrayPoints.length; i++) {\n var point = arrayPoints[i];\n if (point && point.toggleHighlight && point.hasHighlight()) {\n this$1$1.togglePointHighlight(point, true, opacity);\n this$1$1._points.push(point);\n }\n }\n },\n\n togglePointHighlight: function(point, show, opacity) {\n var toggleHandler = (point.options.highlight || {}).toggle;\n if (toggleHandler) {\n var eventArgs = {\n category: point.category,\n series: point.series,\n dataItem: point.dataItem,\n value: point.value,\n stackValue: point.stackValue,\n preventDefault: preventDefault,\n visual: point.highlightVisual(),\n show: show\n };\n toggleHandler(eventArgs);\n if (!eventArgs._defaultPrevented) {\n point.toggleHighlight(show, opacity);\n }\n } else {\n point.toggleHighlight(show, opacity);\n }\n },\n\n hide: function() {\n var this$1$1 = this;\n\n var points = this._points;\n while (points.length) {\n this$1$1.togglePointHighlight(points.pop(), false);\n }\n },\n\n isHighlighted: function(element) {\n var points = this._points;\n\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n if (element === point) {\n return true;\n }\n }\n\n return false;\n }\n });\n\n function preventDefault() {\n this._defaultPrevented = true;\n }\n\n function acceptKey(e, mouseKey) {\n var key = (mouseKey || \"\").toLowerCase();\n var event = e.event;\n var accept = (key === \"none\" && !(event.ctrlKey || event.shiftKey || event.altKey)) || event[key + \"Key\"];\n\n return accept;\n }\n\n function toChartAxisRanges(axisRanges) {\n var ranges = {};\n for (var idx = 0; idx < axisRanges.length; idx++) {\n var axisRange = axisRanges[idx];\n if (axisRange.axis.options.name) {\n ranges[axisRange.axis.options.name] = {\n min: axisRange.range.min,\n max: axisRange.range.max\n };\n }\n }\n return ranges;\n }\n\n var Pannable = Class.extend({\n init: function(plotArea, options) {\n\n this.plotArea = plotArea;\n this.options = deepExtend({}, this.options, options);\n },\n\n start: function(e) {\n this._active = acceptKey(e, this.options.key);\n return this._active;\n },\n\n move: function(e) {\n if (this._active) {\n var axisRanges = this.axisRanges = this._panAxes(e, X).concat(this._panAxes(e, Y));\n if (axisRanges.length) {\n this.axisRanges = axisRanges;\n return toChartAxisRanges(axisRanges);\n }\n }\n },\n\n end: function() {\n var active = this._active;\n this._active = false;\n\n return active;\n },\n\n pan: function() {\n var ref = this;\n var plotArea = ref.plotArea;\n var axisRanges = ref.axisRanges;\n if (axisRanges.length) {\n for (var idx = 0; idx < axisRanges.length; idx++) {\n var range = axisRanges[idx];\n plotArea.updateAxisOptions(range.axis, range.range);\n }\n plotArea.redraw(plotArea.panes);\n }\n },\n\n destroy: function() {\n delete this.plotArea;\n },\n\n _panAxes: function(e, position) {\n var plotArea = this.plotArea;\n var delta = -e[position].delta;\n var lock = (this.options.lock || \"\").toLowerCase();\n var updatedAxes = [];\n\n if (delta !== 0 && (lock || \"\").toLowerCase() !== position) {\n var axes = plotArea.axes;\n for (var idx = 0; idx < axes.length; idx++) {\n var axis = axes[idx];\n\n if (position === X && !axis.options.vertical || position === Y && axis.options.vertical) {\n var range = axis.pan(delta);\n\n if (range) {\n range.limitRange = true;\n updatedAxes.push({\n axis: axis,\n range: range\n });\n }\n }\n }\n }\n\n return updatedAxes;\n }\n });\n\n Pannable.prototype.options = {\n key: \"none\",\n lock: \"none\"\n };\n\n var ZoomSelection = Class.extend({\n init: function(chart, options) {\n\n this.chart = chart;\n this.options = deepExtend({}, this.options, options);\n this.createElement();\n },\n\n createElement: function() {\n var marquee = this._marquee = document.createElement(\"div\");\n marquee.className = \"k-marquee\";\n var marqueeColor = document.createElement(\"div\");\n marqueeColor.className = \"k-marquee-color\";\n marquee.appendChild(marqueeColor);\n },\n\n removeElement: function() {\n if (this._marquee.parentNode) {\n this._marquee.parentNode.removeChild(this._marquee);\n }\n },\n\n setStyles: function(styles) {\n elementStyles(this._marquee, styles);\n },\n\n start: function(e) {\n if (acceptKey(e, this.options.key)) {\n var chart = this.chart;\n var point = chart._eventCoordinates(e);\n var zoomPane = this._zoomPane = chart._plotArea.paneByPoint(point);\n var clipBox = zoomPane ? zoomPane.chartsBox().clone() : null;\n\n if (zoomPane && clipBox) {\n var offset = this._elementOffset();\n\n clipBox.translate(offset.left, offset.top);\n this._zoomPaneClipBox = clipBox;\n\n document.body.appendChild(this._marquee);\n this.setStyles({\n left: e.pageX + 1,\n top: e.pageY + 1,\n width: 0,\n height: 0\n });\n\n return true;\n }\n }\n return false;\n },\n\n _elementOffset: function() {\n var chartElement = this.chart.element;\n var ref = elementStyles(chartElement, [ \"paddingLeft\", \"paddingTop\" ]);\n var paddingLeft = ref.paddingLeft;\n var paddingTop = ref.paddingTop;\n var offset = dataviz.elementOffset(chartElement);\n\n return {\n left: paddingLeft + offset.left,\n top: paddingTop + offset.top\n };\n },\n\n move: function(e) {\n var zoomPane = this._zoomPane;\n if (zoomPane) {\n this.setStyles(this._selectionPosition(e));\n }\n },\n\n end: function(e) {\n var zoomPane = this._zoomPane;\n if (zoomPane) {\n var elementOffset$$1 = this._elementOffset();\n var selectionPosition = this._selectionPosition(e);\n selectionPosition.left -= elementOffset$$1.left;\n selectionPosition.top -= elementOffset$$1.top;\n\n var start = { x: selectionPosition.left, y: selectionPosition.top };\n var end = { x: selectionPosition.left + selectionPosition.width, y: selectionPosition.top + selectionPosition.height };\n this._updateAxisRanges(start, end);\n\n this.removeElement();\n delete this._zoomPane;\n\n return toChartAxisRanges(this.axisRanges);\n }\n },\n\n zoom: function() {\n var axisRanges = this.axisRanges;\n if (axisRanges && axisRanges.length) {\n var plotArea = this.chart._plotArea;\n for (var idx = 0; idx < axisRanges.length; idx++) {\n var axisRange = axisRanges[idx];\n plotArea.updateAxisOptions(axisRange.axis, axisRange.range);\n }\n plotArea.redraw(plotArea.panes);\n }\n },\n\n destroy: function() {\n this.removeElement();\n delete this._marquee;\n delete this.chart;\n },\n\n _updateAxisRanges: function(start, end) {\n var lock = (this.options.lock || \"\").toLowerCase();\n var axisRanges = [];\n\n var axes = this._zoomPane.axes;\n for (var idx = 0; idx < axes.length; idx++) {\n var axis = axes[idx];\n var vertical = axis.options.vertical;\n if (!(lock === X && !vertical) && !(lock === Y && vertical) && defined(axis.axisIndex)) {\n var range = axis.pointsRange(start, end);\n if (range) {\n axisRanges.push({\n axis: axis,\n range: range\n });\n }\n }\n }\n\n this.axisRanges = axisRanges;\n },\n\n _selectionPosition: function(e) {\n var clipBox = this._zoomPaneClipBox;\n var startLocation = {\n x: e.x.startLocation,\n y: e.y.startLocation\n };\n var pageX = e.x.location;\n var pageY = e.y.location;\n var lock = (this.options.lock || \"\").toLowerCase();\n var left = Math.min(startLocation.x, pageX);\n var top = Math.min(startLocation.y, pageY);\n var width = Math.abs(startLocation.x - pageX);\n var height = Math.abs(startLocation.y - pageY);\n\n if (lock === X) {\n left = clipBox.x1;\n width = clipBox.width();\n }\n if (lock === Y) {\n top = clipBox.y1;\n height = clipBox.height();\n }\n\n if (pageX > clipBox.x2) {\n width = clipBox.x2 - startLocation.x;\n }\n\n if (pageX < clipBox.x1) {\n width = startLocation.x - clipBox.x1;\n }\n\n if (pageY > clipBox.y2) {\n height = clipBox.y2 - startLocation.y;\n }\n\n if (pageY < clipBox.y1) {\n height = startLocation.y - clipBox.y1;\n }\n\n return {\n left: Math.max(left, clipBox.x1),\n top: Math.max(top, clipBox.y1),\n width: width,\n height: height\n };\n }\n });\n\n ZoomSelection.prototype.options = {\n key: \"shift\",\n lock: \"none\"\n };\n\n var ref = drawing.util;\n var limitValue$1 = ref.limitValue;\n var valueOrDefault$1 = ref.valueOrDefault;\n\n // Limit the zoom rate between 1% and 90% per mousewheel event.\n // At zoom rates close to 100% the axis range quickly becomes 0.\n var MIN_RATE = 0.01;\n var MAX_RATE = 0.9;\n var DEFAULT_RATE = 0.3;\n\n var MousewheelZoom = Class.extend({\n init: function(chart, options) {\n\n this.chart = chart;\n this.options = deepExtend({\n rate: DEFAULT_RATE\n }, this.options, options);\n },\n\n updateRanges: function(delta, coords) {\n var this$1$1 = this;\n\n var lock = (this.options.lock || \"\").toLowerCase();\n var axisRanges = [];\n var axes = this.chart._plotArea.axes;\n\n for (var idx = 0; idx < axes.length; idx++) {\n var axis = axes[idx];\n var vertical = axis.options.vertical;\n\n if (!(lock === X && !vertical) && !(lock === Y && vertical) && axis.zoomRange) {\n var rate = limitValue$1(this$1$1.options.rate, MIN_RATE, MAX_RATE);\n var range = axis.zoomRange(-delta * rate, coords);\n\n if (range) {\n axisRanges.push({\n axis: axis,\n range: range\n });\n }\n }\n }\n\n this.axisRanges = axisRanges;\n return toChartAxisRanges(axisRanges);\n },\n\n zoom: function() {\n var axisRanges = this.axisRanges;\n var plotArea = this.chart._plotArea;\n\n if (axisRanges && axisRanges.length && plotArea.updateAxisOptions) {\n for (var idx = 0; idx < axisRanges.length; idx++) {\n var axisRange = axisRanges[idx];\n plotArea.updateAxisOptions(axisRange.axis, axisRange.range);\n }\n plotArea.redraw(plotArea.panes);\n }\n },\n\n destroy: function() {\n delete this.chart;\n }\n });\n\n var LegendLayout = ChartElement.extend({\n init: function(options, chartService) {\n ChartElement.fn.init.call(this, options);\n\n this.chartService = chartService;\n },\n\n render: function() {\n var ref = this;\n var children = ref.children;\n var options = ref.options;\n var vertical = options.vertical;\n\n this.visual = new drawing.Layout(null, {\n spacing: vertical ? 0 : options.spacing,\n lineSpacing: vertical ? options.spacing : 0,\n orientation: vertical ? datavizConstants.VERTICAL : datavizConstants.HORIZONTAL,\n reverse: options.rtl,\n alignItems: vertical ? START : CENTER\n });\n\n for (var idx = 0; idx < children.length; idx++) {\n var legendItem = children[idx];\n legendItem.reflow(new Box());\n legendItem.renderVisual();\n }\n },\n\n reflow: function(box) {\n this.visual.rect(box.toRect());\n this.visual.reflow();\n var bbox = this.visual.clippedBBox();\n\n if (bbox) {\n this.box = dataviz.rectToBox(bbox);\n } else {\n this.box = new Box();\n }\n },\n\n renderVisual: function() {\n this.addVisual();\n },\n\n createVisual: function() {}\n });\n\n var DEFAULT_MARKER_SIZE = 10;\n var DEFAULT_MARKER_BORDER_WIDTH = 2;\n\n var LegendItemMarker = ShapeElement.extend({\n visualStyle: function() {\n var options = this.markerOptions();\n var border = options.border;\n\n return {\n stroke: {\n width: border.width,\n color: border.color,\n opacity: valueOrDefault$1(border.opacity, options.opacity),\n dashType: border.dashType\n },\n fill: {\n color: options.background,\n opacity: options.opacity\n },\n cursor: options.cursor\n };\n },\n\n markerOptions: function() {\n return this.options;\n },\n\n markerHighlightOptions: function() {\n var options = this.markerOptions();\n var borderWidth = options.highlight.border.width;\n\n return deepExtend(\n {},\n options,\n { background: options.border.color },\n options.highlight,\n options.type === datavizConstants.CROSS ? {\n background: options.highlight.border.color,\n border: { color: options.highlight.background, width: borderWidth / 2 },\n width: options.width,\n height: options.height,\n margin: { top: 0, left: 0 }\n } : {}\n );\n },\n\n createHighlight: function() {\n var highlight = new ShapeElement(this.markerHighlightOptions());\n var box = this.paddingBox.clone();\n highlight.reflow(box.pad(highlight.options.border.width));\n this.highlight = [ highlight.getElement() ];\n\n return this.highlight;\n }\n });\n\n setDefaultOptions(LegendItemMarker, {\n border: {\n width: DEFAULT_MARKER_BORDER_WIDTH\n },\n width: DEFAULT_MARKER_SIZE - DEFAULT_MARKER_BORDER_WIDTH,\n height: DEFAULT_MARKER_SIZE - DEFAULT_MARKER_BORDER_WIDTH,\n background: WHITE,\n margin: {\n top: -1,\n left: -1\n },\n vAlign: TOP,\n align: LEFT,\n highlight: {\n width: DEFAULT_MARKER_SIZE,\n height: DEFAULT_MARKER_SIZE,\n border: {\n color: WHITE,\n width: DEFAULT_MARKER_BORDER_WIDTH\n }\n }\n });\n\n var ChartElement$1 = Class.extend({\n init: function(options) {\n\n this.children = [];\n\n this.options = deepExtend({}, this.options, this.initUserOptions(options));\n },\n\n initUserOptions: function(options) {\n return options;\n },\n\n reflow: function(targetBox) {\n var children = this.children;\n var box;\n\n for (var i = 0; i < children.length; i++) {\n var currentChild = children[i];\n currentChild.reflow(targetBox);\n\n box = box ? box.wrap(currentChild.box) : currentChild.box.clone();\n }\n\n this.box = box || targetBox;\n },\n\n destroy: function() {\n var children = this.children;\n\n if (this.animation) {\n this.animation.destroy();\n }\n\n for (var i = 0; i < children.length; i++) {\n children[i].destroy();\n }\n },\n\n getRoot: function() {\n var parent = this.parent;\n\n return parent ? parent.getRoot() : null;\n },\n\n getSender: function() {\n var service = this.getService();\n if (service) {\n return service.sender;\n }\n },\n\n getService: function() {\n var element = this;\n while (element) {\n if (element.chartService) {\n return element.chartService;\n }\n element = element.parent;\n }\n },\n\n translateChildren: function(dx, dy) {\n var children = this.children;\n var childrenCount = children.length;\n\n for (var i = 0; i < childrenCount; i++) {\n children[i].box.translate(dx, dy);\n }\n },\n\n append: function() {\n var arguments$1 = arguments;\n var this$1$1 = this;\n\n for (var i = 0; i < arguments.length; i++) {\n var item = arguments$1[i];\n this$1$1.children.push(item);\n item.parent = this$1$1;\n }\n },\n\n renderVisual: function() {\n if (this.options.visible === false) {\n return;\n }\n\n this.createVisual();\n\n this.addVisual();\n\n this.renderChildren();\n\n this.createAnimation();\n this.renderComplete();\n },\n\n addVisual: function() {\n if (this.visual) {\n this.visual.chartElement = this;\n\n if (this.parent) {\n this.parent.appendVisual(this.visual);\n }\n }\n },\n\n renderChildren: function() {\n var children = this.children;\n var length = children.length;\n for (var i = 0; i < length; i++) {\n children[i].renderVisual();\n }\n },\n\n createVisual: function() {\n this.visual = new Group({\n zIndex: this.options.zIndex,\n visible: valueOrDefault(this.options.visible, true)\n });\n },\n\n createAnimation: function() {\n if (this.visual && this.options.animation) {\n this.animation = Animation.create(\n this.visual, this.options.animation\n );\n }\n },\n\n appendVisual: function(childVisual) {\n if (!childVisual.chartElement) {\n childVisual.chartElement = this;\n }\n\n if (childVisual.options.noclip) {\n this.clipRoot().visual.append(childVisual);\n } else if (defined(childVisual.options.zIndex)) {\n this.stackRoot().stackVisual(childVisual);\n } else if (this.isStackRoot) {\n this.stackVisual(childVisual);\n } else if (this.visual) {\n this.visual.append(childVisual);\n } else {\n // Allow chart elements without visuals to\n // pass through child visuals\n this.parent.appendVisual(childVisual);\n }\n },\n\n clipRoot: function() {\n if (this.parent) {\n return this.parent.clipRoot();\n }\n\n return this;\n },\n\n stackRoot: function() {\n if (this.parent) {\n return this.parent.stackRoot();\n }\n\n return this;\n },\n\n stackVisual: function(childVisual) {\n var zIndex = childVisual.options.zIndex || 0;\n var visuals = this.visual.children;\n var length = visuals.length;\n var pos;\n\n for (pos = 0; pos < length; pos++) {\n var sibling = visuals[pos];\n var here = valueOrDefault(sibling.options.zIndex, 0);\n if (here > zIndex) {\n break;\n }\n }\n\n this.visual.insert(pos, childVisual);\n },\n\n traverse: function(callback) {\n var children = this.children;\n var length = children.length;\n\n for (var i = 0; i < length; i++) {\n var child = children[i];\n\n callback(child);\n if (child.traverse) {\n child.traverse(callback);\n }\n }\n },\n\n closest: function(match) {\n var element = this;\n var matched = false;\n\n while (element && !matched) {\n matched = match(element);\n\n if (!matched) {\n element = element.parent;\n }\n }\n\n if (matched) {\n return element;\n }\n },\n\n renderComplete: function() {},\n\n hasHighlight: function() {\n var options = (this.options || {}).highlight;\n return !(!this.createHighlight || (options && options.visible === false) || this.visible === false);\n },\n\n toggleHighlight: function(show, opacity) {\n var this$1$1 = this;\n\n var options = (this.options || {}).highlight || {};\n var customVisual = options.visual;\n var highlight = this._highlight;\n\n if (!highlight) {\n var highlightOptions = {\n fill: {\n color: WHITE,\n opacity: opacity || 0.2\n },\n stroke: {\n color: WHITE,\n width: 1,\n opacity: opacity || 0.2\n }\n };\n\n if (customVisual) {\n highlight = this._highlight = customVisual(\n $.extend(this.highlightVisualArgs(), {\n createVisual: function () { return this$1$1.createHighlight(highlightOptions); },\n sender: this.getSender(),\n series: this.series,\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n percentage: this.percentage,\n runningTotal: this.runningTotal,\n total: this.total\n })\n );\n\n if (!highlight) {\n return;\n }\n } else {\n highlight = this._highlight = this.createHighlight(highlightOptions);\n }\n\n if (!defined(highlight.options.zIndex)) {\n highlight.options.zIndex = valueOrDefault(options.zIndex, this.options.zIndex);\n }\n\n this.appendVisual(highlight);\n }\n\n highlight.visible(show);\n },\n\n toggleFocusHighlight: function(show) {\n var options = ((this.options || {}).accessibility || {}).highlight || {};\n var focusHighlight = this._focusHighlight;\n\n if (!show && !focusHighlight) {\n return;\n }\n\n if (!focusHighlight) {\n var rootBackground = this.getRoot().options.background;\n var highlightColor = autoTextColor(rootBackground);\n var focusHighlightOptions = {\n fill: {\n opacity: options.opacity,\n color: options.color\n },\n stroke: $.extend({}, {color: highlightColor}, options.border),\n zIndex: options.zIndex\n };\n\n focusHighlight = this._focusHighlight = this.createFocusHighlight(focusHighlightOptions);\n\n this.appendVisual(focusHighlight);\n }\n\n focusHighlight.visible(show);\n },\n\n createGradientOverlay: function(element, options, gradientOptions) {\n var overlay = new Path($.extend({\n stroke: {\n color: \"none\"\n },\n fill: this.createGradient(gradientOptions),\n closed: element.options.closed\n }, options));\n\n overlay.segments.elements(element.segments.elements());\n\n return overlay;\n },\n\n createGradient: function(options) {\n if (this.parent) {\n return this.parent.createGradient(options);\n }\n },\n\n supportsPointInactiveOpacity: function() {\n return true;\n }\n });\n\n ChartElement$1.prototype.options = { };\n\n var Point$1 = Class.extend({\n init: function(x, y) {\n\n this.x = x || 0;\n this.y = y || 0;\n },\n\n clone: function() {\n return new Point$1(this.x, this.y);\n },\n\n equals: function(point) {\n return point && this.x === point.x && this.y === point.y;\n },\n\n rotate: function(center, degrees) {\n var theta = rad(degrees);\n var cosT = Math.cos(theta);\n var sinT = Math.sin(theta);\n var cx = center.x;\n var cy = center.y;\n var ref = this;\n var x = ref.x;\n var y = ref.y;\n\n this.x = round(\n cx + (x - cx) * cosT + (y - cy) * sinT,\n COORD_PRECISION\n );\n\n this.y = round(\n cy + (y - cy) * cosT - (x - cx) * sinT,\n COORD_PRECISION\n );\n\n return this;\n },\n\n multiply: function(a) {\n\n this.x *= a;\n this.y *= a;\n\n return this;\n },\n\n distanceTo: function(point) {\n var dx = this.x - point.x;\n var dy = this.y - point.y;\n\n return Math.sqrt(dx * dx + dy * dy);\n }\n });\n\n Point$1.onCircle = function(center, angle, radius) {\n var radians = rad(angle);\n\n return new Point$1(\n center.x - radius * Math.cos(radians),\n center.y - radius * Math.sin(radians)\n );\n };\n\n var Box$1 = Class.extend({\n init: function(x1, y1, x2, y2) {\n\n this.x1 = x1 || 0;\n this.y1 = y1 || 0;\n this.x2 = x2 || 0;\n this.y2 = y2 || 0;\n },\n\n equals: function(box) {\n return this.x1 === box.x1 && this.x2 === box.x2 &&\n this.y1 === box.y1 && this.y2 === box.y2;\n },\n\n width: function() {\n return this.x2 - this.x1;\n },\n\n height: function() {\n return this.y2 - this.y1;\n },\n\n translate: function(dx, dy) {\n this.x1 += dx;\n this.x2 += dx;\n this.y1 += dy;\n this.y2 += dy;\n\n return this;\n },\n\n move: function(x, y) {\n var height = this.height();\n var width = this.width();\n\n if (defined(x)) {\n this.x1 = x;\n this.x2 = this.x1 + width;\n }\n\n if (defined(y)) {\n this.y1 = y;\n this.y2 = this.y1 + height;\n }\n\n return this;\n },\n\n wrap: function(targetBox) {\n this.x1 = Math.min(this.x1, targetBox.x1);\n this.y1 = Math.min(this.y1, targetBox.y1);\n this.x2 = Math.max(this.x2, targetBox.x2);\n this.y2 = Math.max(this.y2, targetBox.y2);\n\n return this;\n },\n\n wrapPoint: function(point) {\n var arrayPoint = isArray(point);\n var x = arrayPoint ? point[0] : point.x;\n var y = arrayPoint ? point[1] : point.y;\n this.wrap(new Box$1(x, y, x, y));\n\n return this;\n },\n\n snapTo: function(targetBox, axis) {\n\n if (axis === X || !axis) {\n this.x1 = targetBox.x1;\n this.x2 = targetBox.x2;\n }\n\n if (axis === Y || !axis) {\n this.y1 = targetBox.y1;\n this.y2 = targetBox.y2;\n }\n\n return this;\n },\n\n alignTo: function(targetBox, anchor) {\n var height = this.height();\n var width = this.width();\n var axis = anchor === TOP || anchor === BOTTOM ? Y : X;\n var offset = axis === Y ? height : width;\n\n if (anchor === CENTER) {\n var targetCenter = targetBox.center();\n var center = this.center();\n\n this.x1 += targetCenter.x - center.x;\n this.y1 += targetCenter.y - center.y;\n } else if (anchor === TOP || anchor === LEFT) {\n this[axis + 1] = targetBox[axis + 1] - offset;\n } else {\n this[axis + 1] = targetBox[axis + 2];\n }\n\n this.x2 = this.x1 + width;\n this.y2 = this.y1 + height;\n\n return this;\n },\n\n shrink: function(dw, dh) {\n\n this.x2 -= dw;\n this.y2 -= dh;\n\n return this;\n },\n\n expand: function(dw, dh) {\n this.shrink(-dw, -dh);\n return this;\n },\n\n pad: function(padding) {\n var spacing = getSpacing(padding);\n\n this.x1 -= spacing.left;\n this.x2 += spacing.right;\n this.y1 -= spacing.top;\n this.y2 += spacing.bottom;\n\n return this;\n },\n\n unpad: function(padding) {\n var spacing = getSpacing(padding);\n\n spacing.left = -spacing.left;\n spacing.top = -spacing.top;\n spacing.right = -spacing.right;\n spacing.bottom = -spacing.bottom;\n\n return this.pad(spacing);\n },\n\n clone: function() {\n return new Box$1(this.x1, this.y1, this.x2, this.y2);\n },\n\n center: function() {\n return new Point$1(\n this.x1 + this.width() / 2,\n this.y1 + this.height() / 2\n );\n },\n\n containsPoint: function(point) {\n\n return point.x >= this.x1 && point.x <= this.x2 &&\n point.y >= this.y1 && point.y <= this.y2;\n },\n\n points: function() {\n return [\n new Point$1(this.x1, this.y1),\n new Point$1(this.x2, this.y1),\n new Point$1(this.x2, this.y2),\n new Point$1(this.x1, this.y2)\n ];\n },\n\n getHash: function() {\n return [ this.x1, this.y1, this.x2, this.y2 ].join(\",\");\n },\n\n overlaps: function(box) {\n return !(box.y2 < this.y1 || this.y2 < box.y1 || box.x2 < this.x1 || this.x2 < box.x1);\n },\n\n rotate: function(rotation) {\n var width = this.width();\n var height = this.height();\n var ref = this.center();\n var cx = ref.x;\n var cy = ref.y;\n\n var r1 = rotatePoint(0, 0, cx, cy, rotation);\n var r2 = rotatePoint(width, 0, cx, cy, rotation);\n var r3 = rotatePoint(width, height, cx, cy, rotation);\n var r4 = rotatePoint(0, height, cx, cy, rotation);\n\n width = Math.max(r1.x, r2.x, r3.x, r4.x) - Math.min(r1.x, r2.x, r3.x, r4.x);\n height = Math.max(r1.y, r2.y, r3.y, r4.y) - Math.min(r1.y, r2.y, r3.y, r4.y);\n\n this.x2 = this.x1 + width;\n this.y2 = this.y1 + height;\n\n return this;\n },\n\n toRect: function() {\n return new geometry.Rect([ this.x1, this.y1 ], [ this.width(), this.height() ]);\n },\n\n hasSize: function() {\n return this.width() !== 0 && this.height() !== 0;\n },\n\n align: function(targetBox, axis, alignment) {\n var c1 = axis + 1;\n var c2 = axis + 2;\n var sizeFunc = axis === X ? datavizConstants.WIDTH : datavizConstants.HEIGHT;\n var size = this[sizeFunc]();\n\n if (inArray(alignment, [ LEFT, TOP ])) {\n this[c1] = targetBox[c1];\n this[c2] = this[c1] + size;\n } else if (inArray(alignment, [ RIGHT, BOTTOM ])) {\n this[c2] = targetBox[c2];\n this[c1] = this[c2] - size;\n } else if (alignment === CENTER) {\n this[c1] = targetBox[c1] + (targetBox[sizeFunc]() - size) / 2;\n this[c2] = this[c1] + size;\n }\n }\n });\n\n function rotatePoint(x, y, cx, cy, angle) {\n var theta = rad(angle);\n\n return new Point$1(\n cx + (x - cx) * Math.cos(theta) + (y - cy) * Math.sin(theta),\n cy - (x - cx) * Math.sin(theta) + (y - cy) * Math.cos(theta)\n );\n }\n\n var BoxElement$1 = ChartElement$1.extend({\n init: function(options) {\n ChartElement$1.fn.init.call(this, options);\n\n this.options.margin = getSpacing(this.options.margin);\n this.options.padding = getSpacing(this.options.padding);\n },\n\n reflow: function(targetBox) {\n var this$1$1 = this;\n\n var options = this.options;\n var width = options.width;\n var height = options.height;\n var shrinkToFit = options.shrinkToFit;\n var hasSetSize = width && height;\n var margin = options.margin;\n var padding = options.padding;\n var borderWidth = options.border.width;\n var box;\n\n var reflowPaddingBox = function () {\n this$1$1.align(targetBox, X, options.align);\n this$1$1.align(targetBox, Y, options.vAlign);\n this$1$1.paddingBox = box.clone().unpad(margin).unpad(borderWidth);\n };\n\n var contentBox = targetBox.clone();\n if (hasSetSize) {\n contentBox.x2 = contentBox.x1 + width;\n contentBox.y2 = contentBox.y1 + height;\n }\n\n if (shrinkToFit) {\n contentBox.unpad(margin).unpad(borderWidth).unpad(padding);\n }\n\n ChartElement$1.fn.reflow.call(this, contentBox);\n\n if (hasSetSize) {\n box = this.box = new Box$1(0, 0, width, height);\n } else {\n box = this.box;\n }\n\n if (shrinkToFit && hasSetSize) {\n reflowPaddingBox();\n contentBox = this.contentBox = this.paddingBox.clone().unpad(padding);\n } else {\n contentBox = this.contentBox = box.clone();\n box.pad(padding).pad(borderWidth).pad(margin);\n reflowPaddingBox();\n }\n\n this.translateChildren(\n box.x1 - contentBox.x1 + margin.left + borderWidth + padding.left,\n box.y1 - contentBox.y1 + margin.top + borderWidth + padding.top\n );\n\n var children = this.children;\n for (var i = 0; i < children.length; i++) {\n var item = children[i];\n item.reflow(item.box);\n }\n },\n\n align: function(targetBox, axis, alignment) {\n this.box.align(targetBox, axis, alignment);\n },\n\n hasBox: function() {\n var options = this.options;\n return options.border.width || options.background;\n },\n\n createVisual: function() {\n ChartElement$1.fn.createVisual.call(this);\n\n var options = this.options;\n if (options.visible && this.hasBox()) {\n this.visual.append(Path.fromRect(\n this.paddingBox.toRect(),\n this.visualStyle()\n ));\n }\n },\n\n visualStyle: function() {\n var options = this.options;\n var border = options.border || {};\n\n return {\n stroke: {\n width: border.width,\n color: border.color,\n opacity: valueOrDefault(border.opacity, options.opacity),\n dashType: border.dashType\n },\n fill: {\n color: options.background,\n opacity: options.opacity\n },\n cursor: options.cursor\n };\n }\n });\n\n setDefaultOptions(BoxElement$1, {\n align: LEFT,\n vAlign: TOP,\n margin: {},\n padding: {},\n border: {\n color: BLACK,\n width: 0\n },\n background: \"\",\n shrinkToFit: false,\n width: 0,\n height: 0,\n visible: true\n });\n\n var ShapeElement$1 = BoxElement$1.extend({\n init: function(options, pointData) {\n BoxElement$1.fn.init.call(this, options);\n\n this.pointData = pointData;\n },\n\n getElement: function() {\n var ref = this;\n var options = ref.options;\n var box = ref.paddingBox;\n var type = options.type;\n var rotation = options.rotation;\n var center = box.center();\n var halfWidth = box.width() / 2;\n var halfHeight = box.height() / 2;\n\n if (!options.visible || !this.hasBox()) {\n return null;\n }\n\n var style = this.visualStyle();\n var element;\n\n if (type === CIRCLE) {\n element = new Circle(\n new GeometryCircle([\n round(box.x1 + halfWidth, COORD_PRECISION),\n round(box.y1 + halfHeight, COORD_PRECISION)\n ], Math.min(halfWidth, halfHeight)),\n style\n );\n } else if (type === datavizConstants.TRIANGLE) {\n element = Path.fromPoints([\n [ box.x1 + halfWidth, box.y1 ],\n [ box.x1, box.y2 ],\n [ box.x2, box.y2 ]\n ], style).close();\n } else if (type === datavizConstants.CROSS) {\n element = new MultiPath(style);\n\n element.moveTo(box.x1, box.y1).lineTo(box.x2, box.y2);\n element.moveTo(box.x1, box.y2).lineTo(box.x2, box.y1);\n } else {\n var rect = box.toRect();\n if (type === datavizConstants.ROUNDED_RECT) {\n var borderRadius = valueOrDefault$1(options.borderRadius, rect.width() / 5);\n rect.setCornerRadius(borderRadius);\n }\n\n element = Path.fromRect(rect, style);\n }\n\n if (rotation) {\n element.transform(transform()\n .rotate(-rotation, [ center.x, center.y ])\n );\n }\n\n element.options.zIndex = options.zIndex;\n\n return element;\n },\n\n createElement: function() {\n var this$1$1 = this;\n\n var customVisual = this.options.visual;\n var pointData = this.pointData || {};\n var visual;\n\n if (customVisual) {\n visual = customVisual({\n value: pointData.value,\n dataItem: pointData.dataItem,\n sender: this.getSender(),\n series: pointData.series,\n category: pointData.category,\n rect: this.paddingBox.toRect(),\n options: this.visualOptions(),\n createVisual: function () { return this$1$1.getElement(); }\n });\n } else {\n visual = this.getElement();\n }\n\n return visual;\n },\n\n visualOptions: function() {\n var options = this.options;\n return {\n background: options.background,\n border: options.border,\n margin: options.margin,\n padding: options.padding,\n type: options.type,\n size: options.width,\n visible: options.visible\n };\n },\n\n createVisual: function() {\n this.visual = this.createElement();\n\n addAccessibilityAttributesToVisual(this.visual, this.options.accessibilityOptions);\n }\n });\n\n setDefaultOptions(ShapeElement$1, {\n type: CIRCLE,\n align: CENTER,\n vAlign: CENTER\n });\n\n var MarkerLineArea = ShapeElement$1.extend({\n getElement: function() {\n var group = new Group();\n var element = new MultiPath(this.visualStyle());\n var ref = this;\n var box = ref.paddingBox;\n var halfHeight = box.height() / 2;\n\n element\n .moveTo(box.x1, box.y1 + halfHeight)\n .lineTo(box.x1, box.y2)\n .lineTo(box.x2, box.y2);\n\n group.append(element);\n\n return group;\n }\n });\n\n setDefaultOptions(MarkerLineArea, {\n width: 15,\n height: 15,\n align: RIGHT,\n vAlign: BOTTOM,\n margin: {\n right: -2,\n bottom: 2\n }\n });\n\n var LegendItemLine = ShapeElement$1.extend({\n getElement: function() {\n var group = new Group();\n var element = new MultiPath({\n stroke: {\n color: this.options.border.color,\n opacity: this.options.opacity,\n width: this.options.height,\n dashType: this.options.dashType\n }\n });\n var box = this.paddingBox;\n var centerY = box.center().y;\n\n element\n .moveTo(box.x1, centerY)\n .lineTo(box.x2, centerY);\n\n group.append(element);\n\n return group;\n },\n\n createHighlight: function() {\n this.highlight = [ this.createHighlightLine(), this.createHighlightMarker() ];\n return this.highlight;\n },\n\n createHighlightLine: function() {\n var options = deepExtend({}, {\n border: {\n color: this.options.border.color,\n opacity: this.options.border.opacity,\n dashType: this.options.border.dashType\n }\n }, this.options.highlight);\n var highlightLine = new MarkerLineArea(options);\n highlightLine.reflow(this.parent.paddingBox.clone());\n\n this.highlightLine = highlightLine.getElement();\n\n return this.highlightLine;\n },\n\n createHighlightMarker: function() {\n var options = deepExtend({}, {\n background: this.options.background,\n }, this.options.highlight.markers);\n var highlightMarker = new ShapeElement$1(options);\n var paddingBox = this.parent.paddingBox;\n var borderWidth = options.border.width;\n var box = this.parent.box.clone();\n\n box.pad({\n left: borderWidth - paddingBox.x1,\n top: borderWidth - paddingBox.y1\n });\n\n highlightMarker.reflow(box);\n this.highlightMarker = highlightMarker.getElement();\n\n return this.highlightMarker;\n }\n });\n\n setDefaultOptions(LegendItemLine, {\n border: {\n width: 0\n },\n type: datavizConstants.RECT,\n align: LEFT,\n vAlign: CENTER,\n highlight: {\n border: {\n width: DEFAULT_MARKER_BORDER_WIDTH\n },\n markers: {\n type: CIRCLE,\n width: DEFAULT_MARKER_SIZE,\n height: DEFAULT_MARKER_SIZE,\n border: {\n width: DEFAULT_MARKER_BORDER_WIDTH,\n color: WHITE\n },\n align: LEFT,\n vAlign: TOP\n }\n }\n });\n\n var LegendItemSquare = ShapeElement$1.extend({\n createHighlight: function() {\n var options = deepExtend({}, {\n background: this.options.background,\n }, this.options.highlight.markers);\n var highlight = new ShapeElement$1(options);\n\n var box = this.paddingBox.clone();\n var targetBox = this.parent.box.clone();\n box.align(targetBox, X, LEFT);\n box.align(targetBox, Y, TOP);\n highlight.reflow(box);\n\n this.highlight = [ highlight.getElement() ];\n\n return this.highlight;\n }\n });\n\n setDefaultOptions(LegendItemSquare, {\n highlight: {\n markers: {\n type: CIRCLE,\n width: DEFAULT_MARKER_SIZE,\n height: DEFAULT_MARKER_SIZE,\n border: {\n width: DEFAULT_MARKER_BORDER_WIDTH,\n color: WHITE\n },\n margin: {\n top: -3,\n left: -3\n }\n }\n }\n });\n\n var LegendItem = BoxElement.extend({\n init: function(options) {\n BoxElement.fn.init.call(this, options);\n\n this.createContainer();\n if (!options.rtl) {\n this.createMarker();\n this.createLabel();\n } else {\n this.createLabel();\n this.createMarker();\n }\n\n this._id = guid();\n this.options.accessibility.ariaChecked = options.active;\n },\n\n createContainer: function() {\n this.container = new dataviz.FloatElement({ vertical: false, wrap: false, align: CENTER, spacing: this.options.spacing });\n this.append(this.container);\n },\n\n createMarker: function() {\n this.markerWrap = new BoxElement({ vertical: false, shrinkToFit: true, wrap: false, margin: 1, width: 22, height: 22 });\n this.container.append(this.markerWrap);\n\n this.createMarkerArea();\n\n if (this.options.markers.visible) {\n this._marker = this._createMarker();\n this.markerWrap.append(this._marker);\n }\n },\n\n createMarkerArea: function() {\n var options = this.options;\n var markerColor = options.markerColor;\n var line = options.line; if (line === void 0) { line = {}; }\n var lineOptions = {\n border: {\n color: line.color || markerColor,\n opacity: line.opacity,\n dashType: line.dashType\n }\n };\n return this._createLine(lineOptions) ||\n this._createMarkerLine(lineOptions, line) ||\n this._createSquare();\n },\n\n markerOptions: function() {\n var options = this.options;\n var markers = options.markers; if (markers === void 0) { markers = {}; }\n var markerColor = options.markerColor;\n var border = markers.border; if (border === void 0) { border = {}; }\n markers.zIndex = undefined;\n\n return deepExtend({}, markers, {\n border: { color: border.color || markerColor },\n highlight: options.highlight.markers\n });\n },\n\n _highlightOptions: function() {\n var options = this.options;\n return deepExtend(\n { markers: { type: options.markers.type } },\n options.highlight\n );\n },\n\n _createLine: function(lineOptions) {\n var options = this.options;\n if (options.type === LINE && !options.markers.visible) {\n this._line = new LegendItemLine(deepExtend({}, {\n background: options.markerColor,\n highlight: this._highlightOptions(),\n }, lineOptions, options.line));\n\n this.markerWrap.append(this._line);\n }\n return this._line;\n },\n\n _createMarkerLine: function(lineOptions, line) {\n var options = this.options;\n if (options.type === LINE) {\n this._markerLineArea = new MarkerLineArea(deepExtend({}, {\n border: {\n width: line.height\n }\n }, lineOptions));\n\n this.markerWrap.append(this._markerLineArea);\n }\n\n return this._markerLineArea;\n },\n\n _createSquare: function() {\n var options = this.options;\n if (options.type === AREA) {\n this._square = new LegendItemSquare($.extend({}, {border: options.border,\n vAlign: options.markers.visible ? BOTTOM : CENTER,\n highlight: this._highlightOptions(),\n visual: options.visual},\n options.area,\n {background: options.area.background || options.markerColor}));\n this.markerWrap.append(this._square);\n }\n return this._square;\n },\n\n _createMarker: function() {\n return new LegendItemMarker(this.markerOptions());\n },\n\n _highlightMarkers: function() {\n if (this.options.active) {\n this._toggleHighlight(true);\n }\n },\n\n _restoreMarkers: function() {\n this._toggleHighlight(false);\n },\n\n _toggleHighlight: function(show) {\n var this$1$1 = this;\n\n if (!this.options.highlight.visible) {\n return;\n }\n\n var element = this._marker || this._square || this._line;\n\n if (element && element === this._line) {\n this._line.visual.visible(!show);\n }\n\n if (element) {\n var highlight = element.highlight;\n\n if (!highlight) {\n highlight = element.createHighlight();\n highlight.forEach(function (h) { return h && this$1$1.markerWrap.appendVisual(h); });\n }\n\n highlight.forEach(function (h) { return h && h.visible(show); });\n }\n },\n\n createLabel: function() {\n var options = this.options;\n var labelOptions = deepExtend({}, options.labels);\n\n this.container.append(new TextBox(options.text, labelOptions));\n },\n\n getAriaLabelText: function() {\n return this.options.text;\n },\n\n focusVisual: function() {\n this.visual.options.set(\"id\", this._id);\n this.toggleFocusHighlight(true);\n this._highlightMarkers();\n },\n\n clearFocusFromVisual: function() {\n this.visual.options.set(\"id\", \"\");\n this.toggleFocusHighlight(false);\n this._restoreMarkers();\n },\n\n renderComplete: function() {\n BoxElement.fn.renderComplete.call(this);\n\n var cursor = this.options.cursor || {};\n var eventSink = this._itemOverlay = Path.fromRect(this.container.box.toRect(), {\n fill: {\n color: WHITE,\n opacity: 0\n },\n stroke: null,\n cursor: cursor.style || cursor\n });\n\n this.appendVisual(eventSink);\n },\n\n click: function(widget, e) {\n var args = this.eventArgs(e);\n\n if (!widget.trigger(LEGEND_ITEM_CLICK, args) && e && e.type === 'contextmenu') {\n e.preventDefault();\n }\n },\n\n over: function(widget, e) {\n var args = this.eventArgs(e);\n\n if (!widget.trigger(LEGEND_ITEM_HOVER, args)) {\n widget._legendItemHover(args.seriesIndex, args.pointIndex);\n this._highlightMarkers();\n }\n\n // Don't trigger point hover for legend items\n return true;\n },\n\n out: function(widget, e) {\n widget._unsetActivePoint();\n this._restoreMarkers();\n\n widget.trigger(LEGEND_ITEM_LEAVE, this.eventArgs(e));\n },\n\n eventArgs: function(e) {\n var options = this.options;\n\n return {\n element: eventElement(e),\n text: options.text,\n series: options.series,\n seriesIndex: options.series.index,\n pointIndex: options.pointIndex\n };\n },\n\n createVisual: function() {\n BoxElement.fn.createVisual.call(this);\n var options = this.options;\n\n if (this.options.visible) {\n var accessibilityOptions = deepExtend({\n ariaLabel: options.text\n }, options.accessibility);\n\n addAccessibilityAttributesToVisual(this.visual, accessibilityOptions);\n }\n },\n\n renderVisual: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var customVisual = options.visual;\n\n if (customVisual) {\n this.visual = customVisual({\n active: options.active,\n series: options.series,\n sender: this.getSender(),\n pointIndex: options.pointIndex,\n options: {\n type: options.type,\n // Passing the markerColor as a background option for backwards compatibility.\n // Example in jq docs - https://docs.telerik.com/kendo-ui/api/javascript/dataviz/ui/chart/configuration/legend.item#legenditemvisual\n markers: deepExtend({ background: this.options.markerColor }, this.markerOptions()),\n labels: options.labels\n },\n createVisual: function () {\n this$1$1.createVisual();\n this$1$1.renderChildren();\n this$1$1.renderComplete();\n\n var defaultVisual = this$1$1.visual;\n\n delete this$1$1.visual;\n\n return defaultVisual;\n }\n });\n this._marker = this._markerLineArea = this._square = this._line = null;\n this.addVisual();\n } else {\n BoxElement.fn.renderVisual.call(this);\n }\n },\n\n createFocusHighlight: function(style) {\n var borderWidth = style.stroke.width;\n return Path.fromRect(this.container.box.pad(borderWidth / 2).toRect(), style);\n }\n });\n\n setDefaultOptions(LegendItem, {\n accessibility: {\n role: LEGEND_ITEM_ROLE,\n className: LEGEND_ITEM_CLASSNAME,\n ariaRoleDescription: LEGEND_ITEM_ARIA_ROLE_DESCRIPTION\n },\n markers: {},\n highlight: {\n visible: true,\n markers: {}\n }\n });\n\n var CUSTOM = \"custom\";\n\n var Legend = ChartElement.extend({\n init: function(options, chartService) {\n if (chartService === void 0) { chartService = {}; }\n\n ChartElement.fn.init.call(this, options);\n\n this.chartService = chartService;\n\n if (!inArray(this.options.position, [ TOP, RIGHT, BOTTOM, LEFT, CUSTOM ])) {\n this.options.position = RIGHT;\n }\n\n this.createContainers();\n\n this.createLegendTitle(options.title);\n\n this.createItems();\n },\n\n createContainers: function() {\n var options = this.options;\n var position = options.position;\n var userAlign = options.align;\n var align = position;\n var vAlign = CENTER;\n\n if (position === CUSTOM) {\n align = LEFT;\n } else if (inArray(position, [ TOP, BOTTOM ])) {\n if (userAlign === START) {\n align = LEFT;\n } else if (userAlign === END) {\n align = RIGHT;\n } else {\n align = CENTER;\n }\n vAlign = position;\n } else if (userAlign) {\n if (userAlign === START) {\n vAlign = TOP;\n } else if (userAlign === END) {\n vAlign = BOTTOM;\n }\n }\n\n this.container = new BoxElement({\n margin: options.margin,\n padding: options.padding,\n background: options.background,\n border: options.border,\n vAlign: vAlign,\n align: align,\n zIndex: options.zIndex,\n shrinkToFit: true\n });\n\n if (this.hasTitle()) {\n this.itemsContainer = new BoxElement({\n vAlign: vAlign,\n align: align,\n zIndex: options.zIndex,\n shrinkToFit: true\n });\n } else {\n this.itemsContainer = this.container;\n }\n\n this.append(this.container);\n },\n\n createItems: function() {\n var chartService = this.getService();\n var options = this.options;\n var vertical = this.isVertical();\n var innerElement = new LegendLayout({\n vertical: vertical,\n spacing: options.spacing,\n rtl: chartService.rtl\n }, chartService);\n var data = options.data;\n\n if (options.reverse) {\n data = data.slice(0).reverse();\n }\n\n var count = data.length;\n\n for (var i = 0; i < count; i++) {\n var dataItem = data[i];\n var ref = dataItem.series || {};\n var markers = ref.markers; if (markers === void 0) { markers = {}; }\n var dashType = ref.dashType;\n var legendItem = ref.legendItem;\n var opacity = ref.opacity;\n var markersOptions = deepExtend({ visible: markers.visible !== false, type: CIRCLE }, markers);\n delete markersOptions.size;\n\n var itemOptions = deepExtend({},\n {\n markers: markersOptions,\n labels: options.labels,\n rtl: chartService.rtl,\n line: $.extend({}, {dashType: dashType},\n options.line),\n area: $.extend({}, {opacity: opacity},\n options.area),\n opacity: opacity,\n accessibility: options.accessibility\n },\n options.item,\n legendItem,\n dataItem,\n { markers: options.markers }\n );\n\n innerElement.append(new LegendItem(itemOptions));\n }\n\n innerElement.render();\n this.itemsContainer.append(innerElement);\n },\n\n isVertical: function() {\n var ref = this.options;\n var orientation = ref.orientation;\n var position = ref.position;\n var vertical = (position === CUSTOM && orientation !== datavizConstants.HORIZONTAL) ||\n (defined(orientation) ? orientation !== datavizConstants.HORIZONTAL : inArray(position, [ LEFT, RIGHT ]));\n\n return vertical;\n },\n\n hasItems: function() {\n return this.container.children[0].children.length > 0;\n },\n\n getItems: function() {\n return this.itemsContainer.children[0].children;\n },\n\n reflow: function(targetBox) {\n var options = this.options;\n var legendBox = targetBox.clone();\n\n if (!this.hasItems()) {\n this.box = legendBox;\n return;\n }\n\n if (options.position === CUSTOM) {\n this.containerCustomReflow(legendBox);\n this.box = legendBox;\n } else {\n this.containerReflow(legendBox);\n }\n\n if (this.hasTitle()) {\n this.title.reflow(new Box(this.container.box.x1, this.title.box.y1, this.container.box.x2, this.title.box.y2));\n }\n },\n\n containerReflow: function(targetBox) {\n var ref = this;\n var options = ref.options;\n var container = ref.container;\n var position = options.position;\n var width = options.width;\n var height = options.height;\n var pos = position === TOP || position === BOTTOM ? X : Y;\n var vertical = this.isVertical();\n var alignTarget = targetBox.clone();\n var containerBox = targetBox.clone();\n\n if (position === LEFT || position === RIGHT) {\n containerBox.y1 = alignTarget.y1 = 0;\n }\n\n if (vertical && height) {\n containerBox.y2 = containerBox.y1 + height;\n containerBox.align(alignTarget, Y, container.options.vAlign);\n } else if (!vertical && width) {\n containerBox.x2 = containerBox.x1 + width;\n containerBox.align(alignTarget, X, container.options.align);\n }\n\n container.reflow(containerBox);\n containerBox = container.box;\n\n var box = containerBox.clone();\n\n if (options.offsetX || options.offsetY) {\n containerBox.translate(options.offsetX, options.offsetY);\n container.reflow(containerBox);\n }\n\n box[pos + 1] = targetBox[pos + 1];\n box[pos + 2] = targetBox[pos + 2];\n\n this.box = box;\n },\n\n containerCustomReflow: function(targetBox) {\n var ref = this;\n var options = ref.options;\n var container = ref.container;\n var offsetX = options.offsetX;\n var offsetY = options.offsetY;\n var width = options.width;\n var height = options.height;\n var vertical = this.isVertical();\n var containerBox = targetBox.clone();\n\n if (vertical && height) {\n containerBox.y2 = containerBox.y1 + height;\n } else if (!vertical && width) {\n containerBox.x2 = containerBox.x1 + width;\n }\n container.reflow(containerBox);\n containerBox = container.box;\n\n container.reflow(new Box(\n offsetX, offsetY,\n offsetX + containerBox.width(), offsetY + containerBox.height()\n ));\n },\n\n renderVisual: function() {\n if (this.hasItems()) {\n ChartElement.fn.renderVisual.call(this);\n }\n },\n\n createLegendTitle: function(title) {\n var titleOptions = deepExtend({}, {\n color: BLACK,\n position: TOP,\n align: CENTER\n }, title);\n var text = titleOptions.text;\n\n if (!title || title.visible === false || !title.text) {\n return;\n }\n\n if (defined(titleOptions) && titleOptions.visible) {\n var labelTemplate = getTemplate(titleOptions);\n if (labelTemplate) {\n text = labelTemplate({ text: text });\n } else if (titleOptions.format) {\n text = this.chartService.format.auto(titleOptions.format, text);\n }\n }\n\n this.title = new TextBox(text, titleOptions);\n\n this.createTitleLayout();\n\n this.appendTitleLayoutContent();\n },\n\n createTitleLayout: function() {\n this.layout = new dataviz.FloatElement({\n vertical: true,\n wrap: false\n });\n\n this.container.append(this.layout);\n },\n\n hasTitle: function() {\n return Boolean(this.options.title && this.options.title.visible !== false && this.options.title.text);\n },\n\n appendTitleLayoutContent: function() {\n var options = this.options;\n\n if (options.title.position === BOTTOM) {\n this.layout.append(this.itemsContainer);\n this.layout.append(this.title);\n } else {\n this.layout.append(this.title);\n this.layout.append(this.itemsContainer);\n }\n }\n });\n\n setDefaultOptions(Legend, {\n position: RIGHT,\n data: [],\n offsetX: 0,\n offsetY: 0,\n margin: getSpacing(2),\n padding: getSpacing(5),\n border: {\n color: BLACK,\n width: 0\n },\n item: {\n cursor: datavizConstants.POINTER,\n spacing: 6\n },\n spacing: 6,\n background: \"\",\n zIndex: 1,\n markers: {},\n line: {\n width: 20,\n height: 2,\n cursor: datavizConstants.POINTER,\n opacity: 1\n },\n area: {\n type: datavizConstants.SQUARE,\n align: RIGHT,\n width: 15,\n height: 15,\n }\n });\n\n var PlotAreaFactory = Class.extend({\n init: function() {\n\n this._registry = [];\n },\n\n register: function(type, seriesTypes) {\n this._registry.push({\n type: type,\n seriesTypes: seriesTypes\n });\n },\n\n create: function(srcSeries, options, chartService) {\n var registry = this._registry;\n var match = registry[0];\n var series;\n\n for (var idx = 0; idx < registry.length; idx++) {\n var entry = registry[idx];\n series = filterSeriesByType(srcSeries, entry.seriesTypes);\n var trendlines = filterSeriesByType(srcSeries, TRENDLINE_SERIES);\n\n if ((series.length - trendlines.length) > 0) {\n match = entry;\n break;\n }\n }\n\n return new match.type(series, options, chartService);\n }\n });\n\n PlotAreaFactory.current = new PlotAreaFactory();\n\n var ZOOM_ACCELERATION = 3;\n var SELECTOR_HEIGHT_ADJUST = 0.1;\n\n function createDiv(classNames) {\n var element = document.createElement(\"div\");\n if (classNames) {\n element.className = classNames;\n }\n\n return element;\n }\n\n function closestHandle(element) {\n var current = element;\n while (current && !dataviz.hasClasses(current, \"k-handle\")) {\n current = current.parentNode;\n }\n\n return current;\n }\n\n var Selection = Class.extend({\n init: function(chart, categoryAxis, options, observer) {\n\n var chartElement = chart.element;\n\n this.options = deepExtend({}, this.options, options);\n this.chart = chart;\n this.observer = observer;\n this.chartElement = chartElement;\n this.categoryAxis = categoryAxis;\n this._dateAxis = this.categoryAxis instanceof dataviz.DateCategoryAxis;\n\n this.initOptions();\n\n this.visible = this.options.visible && chartElement.offsetHeight;\n\n if (this.visible) {\n this.createElements();\n\n this.set(this._index(this.options.from), this._index(this.options.to));\n\n this.bindEvents();\n }\n },\n\n onPane: function(pane) {\n return this.categoryAxis.pane === pane;\n },\n\n createElements: function() {\n var options = this.options;\n var wrapper = this.wrapper = createDiv(\"k-selector k-pointer-events-none\");\n elementStyles(wrapper, {\n top: options.offset.top,\n left: options.offset.left,\n width: options.width,\n height: options.height,\n direction: 'ltr'\n });\n\n var selection = this.selection = createDiv(\"k-selection k-pointer-events-none\");\n\n this.leftMask = createDiv(\"k-mask k-pointer-events-none\");\n this.rightMask = createDiv(\"k-mask k-pointer-events-none\");\n\n wrapper.appendChild(this.leftMask);\n wrapper.appendChild(this.rightMask);\n wrapper.appendChild(selection);\n\n var body = this.body = createDiv(\"k-selection-bg k-pointer-events-none\");\n selection.appendChild(body);\n\n var leftHandle = this.leftHandle = createDiv(\"k-handle k-left-handle k-pointer-events-auto\");\n var rightHandle = this.rightHandle = createDiv(\"k-handle k-right-handle k-pointer-events-auto\");\n leftHandle.appendChild(createDiv());\n rightHandle.appendChild(createDiv());\n\n selection.appendChild(leftHandle);\n selection.appendChild(rightHandle);\n\n this.chartElement.appendChild(wrapper);\n var selectionStyles = elementStyles(selection, [ \"borderLeftWidth\", \"borderRightWidth\", \"height\" ]);\n var leftHandleHeight = elementStyles(leftHandle, \"height\").height;\n var rightHandleHeight = elementStyles(rightHandle, \"height\").height;\n\n options.selection = {\n border: {\n left: selectionStyles.borderLeftWidth,\n right: selectionStyles.borderRightWidth\n }\n };\n\n elementStyles(leftHandle, {\n top: (selectionStyles.height - leftHandleHeight) / 2\n });\n\n elementStyles(rightHandle, {\n top: (selectionStyles.height - rightHandleHeight) / 2\n });\n\n /* eslint no-self-assign: \"off\" */\n wrapper.style.cssText = wrapper.style.cssText;\n },\n\n bindEvents: function() {\n if (this.options.mousewheel !== false) {\n this._mousewheelHandler = this._mousewheel.bind(this);\n var obj;\n bindEvents(this.chartElement, ( obj = {}, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj ));\n }\n\n this._domEvents = services.DomEventsBuilder.create(this.chartElement, {\n stopPropagation: true, // applicable for the jQuery UserEvents\n start: this._start.bind(this),\n move: this._move.bind(this),\n end: this._end.bind(this),\n tap: this._tap.bind(this),\n press: this._press.bind(this),\n gesturestart: this._gesturestart.bind(this),\n gesturechange: this._gesturechange.bind(this),\n gestureend: this._gestureend.bind(this)\n });\n },\n\n initOptions: function() {\n var ref = this;\n var options = ref.options;\n var categoryAxis = ref.categoryAxis;\n var box = categoryAxis.pane.chartsBox();\n var intlService = this.chart.chartService.intl;\n\n if (this._dateAxis) {\n deepExtend(options, {\n min: parseDate(intlService, options.min),\n max: parseDate(intlService, options.max),\n from: parseDate(intlService, options.from),\n to: parseDate(intlService, options.to)\n });\n }\n\n var ref$1 = elementStyles(this.chartElement, [ \"paddingLeft\", \"paddingTop\" ]);\n var paddingLeft = ref$1.paddingLeft;\n var paddingTop = ref$1.paddingTop;\n\n this.options = deepExtend({}, {\n width: box.width(),\n height: box.height() + SELECTOR_HEIGHT_ADJUST, //workaround for sub-pixel hover on the paths in chrome\n padding: {\n left: paddingLeft,\n top: paddingTop\n },\n offset: {\n left: box.x1 + paddingLeft,\n top: box.y1 + paddingTop\n },\n from: options.min,\n to: options.max\n }, options);\n },\n\n destroy: function() {\n if (this._domEvents) {\n this._domEvents.destroy();\n delete this._domEvents;\n }\n\n clearTimeout(this._mwTimeout);\n this._state = null;\n\n if (this.wrapper) {\n if (this._mousewheelHandler) {\n var obj;\n unbindEvents(this.chartElement, ( obj = {}, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj ));\n this._mousewheelHandler = null;\n }\n\n this.chartElement.removeChild(this.wrapper);\n this.wrapper = null;\n }\n },\n\n _rangeEventArgs: function(range) {\n\n return {\n axis: this.categoryAxis.options,\n from: this._value(range.from),\n to: this._value(range.to)\n };\n },\n\n _pointInPane: function(x, y) {\n var paneBox = this.categoryAxis.pane.box;\n var modelCoords = this.chart._toModelCoordinates(x, y);\n return paneBox.containsPoint(modelCoords);\n },\n\n _start: function(e) {\n var options = this.options;\n var target = eventElement(e);\n if (this._state || !target) {\n return;\n }\n\n var coords = dataviz.eventCoordinates(e);\n var inPane = this._pointInPane(coords.x, coords.y);\n if (!inPane) {\n return;\n }\n\n var handle = closestHandle(target);\n var bodyRect = this.body.getBoundingClientRect();\n var inBody = !handle && coords.x >= bodyRect.x && coords.x <= bodyRect.x + bodyRect.width &&\n coords.y >= bodyRect.y && coords.y <= bodyRect.y + bodyRect.height;\n\n this.chart._unsetActivePoint();\n this._state = {\n moveTarget: handle,\n startLocation: e.x ? e.x.location : 0,\n inBody: inBody,\n range: {\n from: this._index(options.from),\n to: this._index(options.to)\n }\n };\n\n var args = this._rangeEventArgs({\n from: this._index(options.from),\n to: this._index(options.to)\n });\n\n if (this.trigger(SELECT_START, args)) {\n this._state = null;\n }\n },\n\n _press: function(e) {\n var handle;\n if (this._state) {\n handle = this._state.moveTarget;\n } else {\n handle = closestHandle(eventElement(e));\n }\n if (handle) {\n dataviz.addClass(handle, \"k-handle-active\");\n }\n },\n\n _move: function(e) {\n if (!this._state) {\n return;\n }\n\n var ref = this;\n var state = ref._state;\n var options = ref.options;\n var categoryAxis = ref.categoryAxis;\n var range = state.range;\n var target = state.moveTarget;\n var reverse = categoryAxis.options.reverse;\n var from = this._index(options.from);\n var to = this._index(options.to);\n var min = this._index(options.min);\n var max = this._index(options.max);\n var delta = state.startLocation - e.x.location;\n var oldRange = { from: range.from, to: range.to };\n var span = range.to - range.from;\n var scale = elementStyles(this.wrapper, \"width\").width / (categoryAxis.categoriesCount() - 1);\n var offset = Math.round(delta / scale) * (reverse ? -1 : 1);\n\n if (!target && !state.inBody) {\n return;\n }\n\n var leftHandle = target && dataviz.hasClasses(target, \"k-left-handle\");\n var rightHandle = target && dataviz.hasClasses(target, \"k-right-handle\");\n\n if (state.inBody) {\n range.from = Math.min(\n Math.max(min, from - offset),\n max - span\n );\n range.to = Math.min(\n range.from + span,\n max\n );\n } else if ((leftHandle && !reverse) || (rightHandle && reverse)) {\n range.from = Math.min(\n Math.max(min, from - offset),\n max - 1\n );\n range.to = Math.max(range.from + 1, range.to);\n } else if ((leftHandle && reverse) || (rightHandle && !reverse)) {\n range.to = Math.min(\n Math.max(min + 1, to - offset),\n max\n );\n range.from = Math.min(range.to - 1, range.from);\n }\n\n if (range.from !== oldRange.from || range.to !== oldRange.to) {\n this.move(range.from, range.to);\n this.trigger(SELECT, this._rangeEventArgs(range));\n }\n },\n\n _end: function() {\n if (this._state) {\n var moveTarget = this._state.moveTarget;\n if (moveTarget) {\n dataviz.removeClass(moveTarget, \"k-handle-active\");\n }\n\n var range = this._state.range;\n this.set(range.from, range.to);\n this.trigger(SELECT_END, this._rangeEventArgs(range));\n\n delete this._state;\n }\n },\n\n _tap: function(e) {\n var ref = this;\n var options = ref.options;\n var categoryAxis = ref.categoryAxis;\n var coords = this.chart._eventCoordinates(e);\n var categoryIx = categoryAxis.pointCategoryIndex(new Point(coords.x, categoryAxis.box.y1));\n var from = this._index(options.from);\n var to = this._index(options.to);\n var min = this._index(options.min);\n var max = this._index(options.max);\n var span = to - from;\n var mid = from + span / 2;\n var range = {};\n var rightClick = e.event.which === 3;\n var offset = Math.round(mid - categoryIx);\n\n if (this._state || rightClick) {\n return;\n }\n\n this.chart._unsetActivePoint();\n\n if (!categoryAxis.options.justified) {\n offset--;\n }\n\n range.from = Math.min(\n Math.max(min, from - offset),\n max - span\n );\n\n range.to = Math.min(range.from + span, max);\n\n this._start(e);\n\n if (this._state) {\n this._state.range = range;\n this.trigger(SELECT, this._rangeEventArgs(range));\n this._end();\n }\n },\n\n _mousewheel: function(e) {\n var this$1$1 = this;\n\n var delta = dataviz.mousewheelDelta(e);\n\n this._start(e);\n\n if (this._state) {\n var range = this._state.range;\n\n e.preventDefault();\n e.stopPropagation();\n\n if (Math.abs(delta) > 1) {\n delta *= ZOOM_ACCELERATION;\n }\n\n if (this.options.mousewheel.reverse) {\n delta *= -1;\n }\n\n if (this.expand(delta)) {\n this.trigger(SELECT, {\n axis: this.categoryAxis.options,\n delta: delta,\n originalEvent: e,\n from: this._value(range.from),\n to: this._value(range.to)\n });\n }\n\n if (this._mwTimeout) {\n clearTimeout(this._mwTimeout);\n }\n\n this._mwTimeout = setTimeout(function () {\n this$1$1._end();\n }, MOUSEWHEEL_DELAY);\n }\n },\n\n _gesturestart: function(e) {\n var options = this.options;\n var touch = e.touches[0];\n var inPane = this._pointInPane(touch.pageX, touch.pageY);\n\n if (!inPane) {\n return;\n }\n\n this._state = {\n range: {\n from: this._index(options.from),\n to: this._index(options.to)\n }\n };\n var args = this._rangeEventArgs(this._state.range);\n\n if (this.trigger(SELECT_START, args)) {\n this._state = null;\n } else {\n e.preventDefault();\n }\n },\n\n _gestureend: function() {\n if (this._state) {\n this.trigger(SELECT_END, this._rangeEventArgs(this._state.range));\n delete this._state;\n }\n },\n\n _gesturechange: function(e) {\n if (!this._state) {\n return;\n }\n\n var ref = this;\n var chart = ref.chart;\n var state = ref._state;\n var options = ref.options;\n var categoryAxis = ref.categoryAxis;\n var range = state.range;\n var p0 = chart._toModelCoordinates(e.touches[0].x.location).x;\n var p1 = chart._toModelCoordinates(e.touches[1].x.location).x;\n var left = Math.min(p0, p1);\n var right = Math.max(p0, p1);\n\n e.preventDefault();\n\n range.from = categoryAxis.pointCategoryIndex(new Point(left)) || options.min;\n\n range.to = categoryAxis.pointCategoryIndex(new Point(right)) || options.max;\n\n this.move(range.from, range.to);\n\n this.trigger(SELECT, this._rangeEventArgs(range));\n },\n\n _index: function(value) {\n var index = value;\n\n if (value instanceof Date) {\n index = this.categoryAxis.categoryIndex(value);\n }\n\n return index;\n },\n\n _value: function(index) {\n var value = index;\n if (this._dateAxis) {\n value = this.categoryAxis.categoryAt(index);\n if (value > this.options.max) {\n value = this.options.max;\n }\n }\n\n return value;\n },\n\n _slot: function(value) {\n var categoryAxis = this.categoryAxis;\n var index = this._index(value);\n\n return categoryAxis.getSlot(index, index, true);\n },\n\n move: function(from, to) {\n var options = this.options;\n var reverse = this.categoryAxis.options.reverse;\n var offset = options.offset;\n var padding = options.padding;\n var border = options.selection.border;\n var left = reverse ? to : from;\n var right = reverse ? from : to;\n var edge = 'x' + (reverse ? 2 : 1);\n\n var box = this._slot(left);\n var leftMaskWidth = round(box[edge] - offset.left + padding.left);\n\n elementStyles(this.leftMask, {\n width: leftMaskWidth\n });\n elementStyles(this.selection, {\n left: leftMaskWidth\n });\n\n box = this._slot(right);\n\n var rightMaskWidth = round(options.width - (box[edge] - offset.left + padding.left));\n elementStyles(this.rightMask, {\n width: rightMaskWidth\n });\n\n var distance = options.width - rightMaskWidth;\n if (distance !== options.width) {\n distance += border.right;\n }\n\n elementStyles(this.rightMask, {\n left: distance\n });\n elementStyles(this.selection, {\n width: Math.max(options.width - (leftMaskWidth + rightMaskWidth) - border.right, 0)\n });\n },\n\n set: function(from, to) {\n var options = this.options;\n var min = this._index(options.min);\n var max = this._index(options.max);\n var fromValue = limitValue(this._index(from), min, max);\n var toValue = limitValue(this._index(to), fromValue + 1, max);\n\n if (options.visible) {\n this.move(fromValue, toValue);\n }\n\n options.from = this._value(fromValue);\n options.to = this._value(toValue);\n },\n\n expand: function(delta) {\n var options = this.options;\n var min = this._index(options.min);\n var max = this._index(options.max);\n var zDir = options.mousewheel.zoom;\n var from = this._index(options.from);\n var to = this._index(options.to);\n var range = { from: from, to: to };\n var oldRange = deepExtend({}, range);\n\n if (this._state) {\n range = this._state.range;\n }\n\n if (zDir !== RIGHT) {\n range.from = limitValue(\n limitValue(from - delta, 0, to - 1),\n min, max\n );\n }\n\n if (zDir !== LEFT) {\n range.to = limitValue(\n limitValue(to + delta, range.from + 1, max),\n min,\n max\n );\n }\n\n if (range.from !== oldRange.from || range.to !== oldRange.to) {\n this.set(range.from, range.to);\n return true;\n }\n },\n\n zoom: function(delta, coords) {\n var options = this.options;\n var min = this._index(options.min);\n var max = this._index(options.max);\n var from = this._index(options.from);\n var to = this._index(options.to);\n var range = { from: from, to: to };\n var oldRange = deepExtend({}, range);\n\n var ref = this.categoryAxis.options;\n var reverse = ref.reverse;\n var origin = X + (reverse ? '2' : '1');\n var lineBox = this.categoryAxis.lineBox();\n var relative = Math.abs(lineBox[origin] - coords[X]);\n var size = lineBox.width();\n var position = round(relative / size, 2);\n var minDelta = round(position * delta);\n var maxDelta = round((1 - position) * delta);\n\n if (this._state) {\n range = this._state.range;\n }\n\n range.from = limitValue(\n limitValue(from - minDelta, 0, to - 1),\n min, max\n );\n\n range.to = limitValue(\n limitValue(to + maxDelta, range.from + 1, max),\n min,\n max\n );\n\n if (range.from !== oldRange.from || range.to !== oldRange.to) {\n this.set(range.from, range.to);\n return true;\n }\n },\n\n trigger: function(name, args) {\n return (this.observer || this.chart).trigger(name, args);\n }\n });\n\n setDefaultOptions(Selection, {\n visible: true,\n mousewheel: {\n zoom: \"both\"\n },\n min: MIN_VALUE,\n max: MAX_VALUE\n });\n\n var Tooltip = BaseTooltip.extend({\n show: function(point) {\n if (!point || !point.tooltipAnchor || (this._current && this._current === point)) {\n return;\n }\n\n var options = deepExtend({}, this.options, point.options.tooltip);\n var anchor = point.tooltipAnchor();\n\n if (anchor) {\n this._current = point;\n BaseTooltip.fn.show.call(this, {\n point: point,\n anchor: anchor\n }, options, point);\n } else {\n this.hide();\n }\n },\n\n hide: function() {\n delete this._current;\n BaseTooltip.fn.hide.call(this);\n }\n });\n\n var SharedTooltip = BaseTooltip.extend({\n init: function(plotArea, options) {\n BaseTooltip.fn.init.call(this, plotArea.chartService, options);\n\n this.plotArea = plotArea;\n this.formatService = plotArea.chartService.format;\n },\n\n showAt: function(points, coords) {\n var tooltipPoints = grep(points, function(point) {\n var tooltip = point.series.tooltip;\n var excluded = tooltip && tooltip.visible === false;\n\n return !excluded;\n });\n\n if (tooltipPoints.length > 0) {\n var point = tooltipPoints[0];\n var slot = this.plotArea.categoryAxis.getSlot(point.categoryIx);\n\n var anchor = coords ? this._slotAnchor(coords, slot) : this._defaultAnchor(point, slot);\n\n this.show({\n anchor: anchor,\n shared: true,\n points: points,\n category: point.category,\n categoryText: this.formatService.auto(this.options.categoryFormat, point.category),\n series: this.plotArea.series\n }, this.options);\n }\n },\n\n _slotAnchor: function(point, slot) {\n var axis = this.plotArea.categoryAxis;\n var align = {\n horizontal: \"left\",\n vertical: \"center\"\n };\n\n if (!axis.options.vertical) {\n point.x = slot.center().x;\n }\n\n return {\n point: point,\n align: align\n };\n },\n\n _defaultAnchor: function(point, slot) {\n var box = point.owner.pane.chartsBox();\n var vertical = this.plotArea.categoryAxis.options.vertical;\n var center = box.center();\n var slotCenter = slot.center();\n var align = {\n horizontal: \"center\",\n vertical: \"center\"\n };\n\n var centerPoint;\n if (vertical) {\n centerPoint = new Point(center.x, slotCenter.y);\n } else {\n centerPoint = new Point(slotCenter.x, center.y);\n }\n\n return {\n point: centerPoint,\n align: align\n };\n }\n });\n\n setDefaultOptions(SharedTooltip, {\n categoryFormat: '{0:d}'\n });\n\n var BarChartAnimation = Animation.extend({\n setup: function() {\n var ref = this;\n var element = ref.element;\n var options = ref.options;\n var bbox = element.bbox();\n\n if (bbox) {\n this.origin = options.origin;\n var axis = options.vertical ? Y : X;\n\n var fromScale = this.fromScale = new GeometryPoint(1, 1);\n fromScale[axis] = START_SCALE;\n\n element.transform(transform()\n .scale(fromScale.x, fromScale.y)\n );\n } else {\n this.abort();\n }\n },\n\n step: function(pos) {\n var scaleX = dataviz.interpolateValue(this.fromScale.x, 1, pos);\n var scaleY = dataviz.interpolateValue(this.fromScale.y, 1, pos);\n\n this.element.transform(transform()\n .scale(scaleX, scaleY, this.origin)\n );\n },\n\n abort: function() {\n Animation.fn.abort.call(this);\n this.element.transform(null);\n }\n });\n\n setDefaultOptions(BarChartAnimation, {\n duration: INITIAL_ANIMATION_DURATION\n });\n\n AnimationFactory.current.register(BAR, BarChartAnimation);\n\n var BubbleAnimation = Animation.extend({\n setup: function() {\n var center = this.center = this.element.bbox().center();\n this.element.transform(transform()\n .scale(START_SCALE, START_SCALE, center)\n );\n },\n\n step: function(pos) {\n this.element.transform(transform()\n .scale(pos, pos, this.center)\n );\n }\n });\n\n setDefaultOptions(BubbleAnimation, {\n easing: \"easeOutElastic\"\n });\n\n AnimationFactory.current.register(BUBBLE, BubbleAnimation);\n\n var FadeInAnimation = Animation.extend({\n setup: function() {\n this.fadeTo = this.element.opacity();\n this.element.opacity(0);\n },\n\n step: function(pos) {\n this.element.opacity(pos * this.fadeTo);\n }\n });\n\n setDefaultOptions(FadeInAnimation, {\n duration: 200,\n easing: \"linear\"\n });\n\n AnimationFactory.current.register(FADEIN, FadeInAnimation);\n\n var PieAnimation = Animation.extend({\n setup: function() {\n this.element.transform(transform()\n .scale(START_SCALE, START_SCALE, this.options.center)\n );\n },\n\n step: function(pos) {\n this.element.transform(transform()\n .scale(pos, pos, this.options.center)\n );\n }\n });\n\n setDefaultOptions(PieAnimation, {\n easing: \"easeOutElastic\",\n duration: INITIAL_ANIMATION_DURATION\n });\n\n AnimationFactory.current.register(PIE, PieAnimation);\n\n var ScatterLineChart = ScatterChart.extend({\n render: function() {\n ScatterChart.fn.render.call(this);\n\n this.renderSegments();\n },\n\n createSegment: function(linePoints, currentSeries, seriesIx) {\n var style = currentSeries.style;\n var pointType;\n\n if (style === SMOOTH) {\n pointType = SplineSegment;\n } else {\n pointType = LineSegment;\n }\n\n return new pointType(linePoints, currentSeries, seriesIx);\n },\n\n animationPoints: function() {\n var points = ScatterChart.fn.animationPoints.call(this);\n return points.concat(this._segments);\n },\n\n createMissingValue: function(value, missingValues) {\n if (missingValues === ZERO) {\n var missingValue = {\n x: value.x,\n y: value.y\n };\n if (!hasValue(missingValue.x)) {\n missingValue.x = 0;\n }\n if (!hasValue(missingValue.y)) {\n missingValue.y = 0;\n }\n return missingValue;\n }\n }\n });\n\n deepExtend(ScatterLineChart.prototype, LineChartMixin);\n\n function autoMajorUnit(min, max) {\n var diff = round(max - min, DEFAULT_PRECISION - 1);\n\n if (diff === 0) {\n if (max === 0) {\n return 0.1;\n }\n\n diff = Math.abs(max);\n }\n\n var scale = Math.pow(10, Math.floor(Math.log(diff) / Math.log(10)));\n var relativeValue = round((diff / scale), DEFAULT_PRECISION);\n var scaleMultiplier = 1;\n\n if (relativeValue < 1.904762) {\n scaleMultiplier = 0.2;\n } else if (relativeValue < 4.761904) {\n scaleMultiplier = 0.5;\n } else if (relativeValue < 9.523809) {\n scaleMultiplier = 1;\n } else {\n scaleMultiplier = 2;\n }\n\n return round(scale * scaleMultiplier, DEFAULT_PRECISION);\n }\n\n function getScatterTrendlineData(valueMapper, range, options) {\n var data = [];\n var xMin = range.xMin;\n var xMax = range.xMax;\n\n var forecast = (options || {}).forecast;\n if (forecast) {\n if (forecast.before > 0) {\n xMin -= forecast.before;\n }\n\n if (forecast.after > 0) {\n xMax += forecast.after;\n }\n }\n\n var samplingInterval = (options || {}).samplingInterval;\n var delta = valueOrDefault(samplingInterval, autoMajorUnit(xMin, xMax) / 10);\n if (samplingInterval <= 0) {\n delta = xMax - xMin;\n }\n\n for (var x = xMin; x <= xMax; x += delta) {\n data.push([\n x,\n valueMapper(x)\n ]);\n }\n\n return data;\n }\n\n function scatterExponentialTrendline(context) {\n var options = context.options;\n var seriesValues = context.seriesValues;\n\n var data = getData$6({ seriesValues: seriesValues, options: options });\n if (data) {\n return $.extend({}, options,\n\n {type: 'scatterLine',\n data: data});\n }\n\n return null;\n }\n\n var valueGetter$6 = function (fieldName) { return function (ref) {\n var valueFields = ref.valueFields;\n\n return ({ xValue: valueFields.x, yValue: Math.log(valueFields[fieldName]) });\n } };\n\n function getData$6(ref) {\n var seriesValues = ref.seriesValues;\n var options = ref.options;\n\n var sourceValues = seriesValues();\n if (!checkAllPositive(sourceValues, options.field)) {\n return null;\n }\n\n var ref$1 = calculateSlope(sourceValues, valueGetter$6(options.field));\n var slope = ref$1.slope;\n var intercept = ref$1.intercept;\n var count = ref$1.count;\n var xMin = ref$1.xMin;\n var xMax = ref$1.xMax;\n var range = { xMin: xMin, xMax: xMax };\n\n if (count > 0) {\n // Exponential trendline equation:\n // y = a * e ^ (b * x)\n var a = Math.exp(intercept);\n var b = slope;\n\n return getScatterTrendlineData(function (x) { return a * Math.exp(b * x); }, range, options.trendline);\n }\n\n return null;\n }\n\n var scatterValueGetter = function (fieldName) { return function (ref) {\n var valueFields = ref.valueFields;\n\n return ({ xValue: valueFields.x, yValue: valueFields[fieldName] });\n } };\n\n function scatterLinearTrendline(context) {\n var options = context.options;\n var seriesValues = context.seriesValues;\n\n var data = getData$7({ seriesValues: seriesValues, options: options });\n if (data) {\n return $.extend({}, options,\n\n {type: 'scatterLine',\n data: data});\n }\n\n return null;\n }\n\n function getData$7(ref) {\n var seriesValues = ref.seriesValues;\n var options = ref.options;\n\n var ref$1 = calculateSlope(seriesValues(), scatterValueGetter(options.field));\n var slope = ref$1.slope;\n var intercept = ref$1.intercept;\n var count = ref$1.count;\n var xMin = ref$1.xMin;\n var xMax = ref$1.xMax;\n var range = { xMin: xMin, xMax: xMax };\n\n if (count > 0) {\n return getScatterTrendlineData(function (x) { return slope * x + intercept; }, range, options.trendline);\n }\n\n return null;\n }\n\n function xValueLimits(sourceValues, valueGetter) {\n var xMin = Number.MAX_VALUE;\n var xMax = Number.MIN_VALUE;\n\n for (var i = 0; i < sourceValues.length; i++) {\n var value = sourceValues[i];\n var ref = valueGetter(value);\n var xValue = ref.xValue;\n var yValue = ref.yValue;\n\n if (isFinite(xValue) && xValue !== null && isFinite(yValue) && yValue !== null) {\n xMin = Math.min(xValue, xMin);\n xMax = Math.max(xValue, xMax);\n }\n }\n\n return { xMin: xMin, xMax: xMax };\n }\n\n function scatterLogarithmicTrendline(context) {\n var options = context.options;\n var seriesValues = context.seriesValues;\n\n var data = getData$8({ seriesValues: seriesValues, options: options });\n if (data) {\n return $.extend({}, options,\n\n {type: 'scatterLine',\n data: data});\n }\n\n return null;\n }\n\n var valueGetter$7 = function (fieldName) { return function (ref) {\n var valueFields = ref.valueFields;\n\n return ({ xValue: valueFields.x, yValue: valueFields[fieldName] });\n } };\n\n var logValueGetter = function (fieldName) { return function (ref) {\n var valueFields = ref.valueFields;\n\n return ({ xValue: Math.log(valueFields.x), yValue: valueFields[fieldName] });\n } };\n\n function getData$8(ref) {\n var seriesValues = ref.seriesValues;\n var options = ref.options;\n\n var sourceValues = seriesValues();\n if (!checkAllPositive(sourceValues, 'x')) {\n return null;\n }\n\n var ref$1 = calculateSlope(sourceValues, logValueGetter(options.field));\n var slope = ref$1.slope;\n var intercept = ref$1.intercept;\n var count = ref$1.count;\n var range = xValueLimits(sourceValues, valueGetter$7(options.field));\n\n if (count > 0) {\n // Logarithmic trendline equation:\n // y = a * ln (x) + b\n var a = slope;\n var b = intercept;\n\n return getScatterTrendlineData(function (x) { return a * Math.log(x) + b; }, range, options.trendline);\n }\n\n return null;\n }\n\n function scatterMovingAverageTrendline(context) {\n var options = context.options;\n\n var data = getData$9(context);\n if (data) {\n return $.extend({}, options,\n\n {type: 'scatterLine',\n data: data});\n }\n\n return null;\n }\n\n function getData$9(ref) {\n var options = ref.options;\n var seriesValues = ref.seriesValues;\n\n var period = (options.trendline || {}).period || MIN_MOVING_AVERAGE_PERIOD;\n var range = { before: period, after: period };\n var data = calculateMovingAverage(seriesValues(range), scatterValueGetter(options.field), period);\n\n if (data.length > 0) {\n return data;\n }\n\n return null;\n }\n\n function scatterPolynomialTrendline(context) {\n var options = context.options;\n var seriesValues = context.seriesValues;\n\n var data = getData$10({ seriesValues: seriesValues, options: options });\n if (data) {\n return $.extend({}, options,\n\n {type: 'scatterLine',\n data: data});\n }\n\n return null;\n }\n\n function getData$10(ref) {\n var seriesValues = ref.seriesValues;\n var options = ref.options;\n\n var order = (options.trendline || {}).order;\n var valueGetter = scatterValueGetter(options.field);\n var ref$1 = calculatePolynomial(seriesValues(), valueGetter, order);\n var count = ref$1.count;\n var valueMapper = ref$1.valueMapper;\n var xMin = ref$1.xMin;\n var xMax = ref$1.xMax;\n var range = { xMin: xMin, xMax: xMax };\n\n if (count > 0) {\n // Polynomial trendline equation:\n // y = aN * x^N + ... + a2 * x^2 + a1 * x + a0\n return getScatterTrendlineData(valueMapper, range, options.trendline);\n }\n\n return null;\n }\n\n function scatterPowerTrendline(context) {\n var options = context.options;\n var seriesValues = context.seriesValues;\n\n var data = getData$11({ seriesValues: seriesValues, options: options });\n if (data) {\n return $.extend({}, options,\n\n {type: 'scatterLine',\n data: data});\n }\n\n return null;\n }\n\n var valueGetter$8 = function (fieldName) { return function (ref) {\n var valueFields = ref.valueFields;\n\n return ({ xValue: Math.log(valueFields.x), yValue: Math.log(valueFields[fieldName]) });\n } };\n\n function getData$11(ref) {\n var seriesValues = ref.seriesValues;\n var options = ref.options;\n\n var sourceValues = seriesValues();\n if (!checkAllPositive(sourceValues, 'x')) {\n return null;\n }\n\n var ref$1 = calculateSlope(sourceValues, valueGetter$8(options.field));\n var slope = ref$1.slope;\n var intercept = ref$1.intercept;\n var count = ref$1.count;\n var range = xValueLimits(sourceValues, scatterValueGetter(options.field));\n\n if (count > 0) {\n // Power trendline equation:\n // y = a * x ^ b\n var a = Math.exp(intercept);\n var b = slope;\n return getScatterTrendlineData(function (x) { return a * Math.pow(x, b); }, range, options.trendline);\n }\n\n return null;\n }\n\n var scatterRegistry = {};\n scatterRegistry[TRENDLINE_EXPONENTIAL] = scatterExponentialTrendline;\n scatterRegistry[TRENDLINE_LINEAR] = scatterLinearTrendline;\n scatterRegistry[TRENDLINE_LOGARITHMIC] = scatterLogarithmicTrendline;\n scatterRegistry[TRENDLINE_MOVING_AVERAGE] = scatterMovingAverageTrendline;\n scatterRegistry[TRENDLINE_POLYNOMIAL] = scatterPolynomialTrendline;\n scatterRegistry[TRENDLINE_POWER] = scatterPowerTrendline;\n\n var XYPlotArea = PlotAreaBase.extend({\n initFields: function() {\n this.namedXAxes = {};\n this.namedYAxes = {};\n\n this.xAxisRangeTracker = new AxisGroupRangeTracker();\n this.yAxisRangeTracker = new AxisGroupRangeTracker();\n },\n\n render: function(panes) {\n var this$1$1 = this;\n if (panes === void 0) { panes = this.panes; }\n\n this.series = [].concat( this.originalSeries );\n this.createTrendlineSeries();\n\n var seriesByPane = this.groupSeriesByPane();\n for (var i = 0; i < panes.length; i++) {\n var pane = panes[i];\n var paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n this$1$1.addToLegend(paneSeries);\n var filteredSeries = this$1$1.filterVisibleSeries(paneSeries);\n\n if (!filteredSeries) {\n continue;\n }\n\n this$1$1.createScatterChart(\n filterSeriesByType(filteredSeries, SCATTER),\n pane\n );\n\n this$1$1.createScatterLineChart(\n filterSeriesByType(filteredSeries, SCATTER_LINE),\n pane\n );\n\n this$1$1.createBubbleChart(\n filterSeriesByType(filteredSeries, BUBBLE),\n pane\n );\n }\n\n this.createAxes(panes);\n },\n\n appendChart: function(chart, pane) {\n this.xAxisRangeTracker.update(chart.xAxisRanges);\n this.yAxisRangeTracker.update(chart.yAxisRanges);\n\n PlotAreaBase.fn.appendChart.call(this, chart, pane);\n },\n\n removeAxis: function(axis) {\n var axisName = axis.options.name;\n\n PlotAreaBase.fn.removeAxis.call(this, axis);\n\n if (axis.options.vertical) {\n this.yAxisRangeTracker.reset(axisName);\n delete this.namedYAxes[axisName];\n } else {\n this.xAxisRangeTracker.reset(axisName);\n delete this.namedXAxes[axisName];\n }\n\n if (axis === this.axisX) {\n delete this.axisX;\n }\n\n if (axis === this.axisY) {\n delete this.axisY;\n }\n },\n\n seriesPaneName: function(series) {\n var options = this.options;\n var xAxisName = series.xAxis;\n var xAxisOptions = [].concat(options.xAxis);\n var xAxis = grep(xAxisOptions, function(a) { return a.name === xAxisName; })[0];\n var yAxisName = series.yAxis;\n var yAxisOptions = [].concat(options.yAxis);\n var yAxis = grep(yAxisOptions, function(a) { return a.name === yAxisName; })[0];\n var panes = options.panes || [ {} ];\n var defaultPaneName = panes[0].name || \"default\";\n var paneName = (xAxis || {}).pane || (yAxis || {}).pane || defaultPaneName;\n\n return paneName;\n },\n\n createScatterChart: function(series, pane) {\n if (series.length > 0) {\n this.appendChart(\n new ScatterChart(this, { series: series, clip: pane.options.clip }),\n pane\n );\n }\n },\n\n createScatterLineChart: function(series, pane) {\n if (series.length > 0) {\n this.appendChart(\n new ScatterLineChart(this, { series: series, clip: pane.options.clip }),\n pane\n );\n }\n },\n\n createBubbleChart: function(series, pane) {\n if (series.length > 0) {\n this.appendChart(\n new BubbleChart(this, { series: series, clip: pane.options.clip }),\n pane\n );\n }\n },\n\n createXYAxis: function(options, vertical, axisIndex) {\n var axisName = options.name;\n var namedAxes = vertical ? this.namedYAxes : this.namedXAxes;\n var tracker = vertical ? this.yAxisRangeTracker : this.xAxisRangeTracker;\n var axisOptions = deepExtend({ reverse: !vertical && this.chartService.rtl }, options, { vertical: vertical });\n var isLog = equalsIgnoreCase(axisOptions.type, LOGARITHMIC);\n var defaultRange = tracker.query();\n var defaultAxisRange = isLog ? { min: 0.1, max: 1 } : { min: 0, max: 1 };\n var range = tracker.query(axisName) || defaultRange || defaultAxisRange;\n var typeSamples = [ axisOptions.min, axisOptions.max ];\n var series = this.series;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var seriesAxisName = currentSeries[vertical ? \"yAxis\" : \"xAxis\"];\n if ((seriesAxisName === axisOptions.name) || (axisIndex === 0 && !seriesAxisName)) {\n var firstPointValue = SeriesBinder.current.bindPoint(currentSeries, 0).valueFields;\n typeSamples.push(firstPointValue[vertical ? \"y\" : \"x\"]);\n\n break;\n }\n }\n\n if (axisIndex === 0 && defaultRange) {\n range.min = Math.min(range.min, defaultRange.min);\n range.max = Math.max(range.max, defaultRange.max);\n }\n\n var inferredDate;\n\n for (var i = 0; i < typeSamples.length; i++) {\n if (typeSamples[i] instanceof Date) {\n inferredDate = true;\n break;\n }\n }\n\n var axisType;\n if (equalsIgnoreCase(axisOptions.type, DATE) || (!axisOptions.type && inferredDate)) {\n axisType = dataviz.DateValueAxis;\n } else if (isLog) {\n axisType = dataviz.LogarithmicAxis;\n } else {\n axisType = dataviz.NumericAxis;\n }\n\n var axis = new axisType(range.min, range.max, axisOptions, this.chartService);\n axis.axisIndex = axisIndex;\n\n if (axisName) {\n if (namedAxes[axisName]) {\n throw new Error(((vertical ? \"Y\" : \"X\") + \" axis with name \" + axisName + \" is already defined\"));\n }\n namedAxes[axisName] = axis;\n }\n\n this.appendAxis(axis);\n\n return axis;\n },\n\n createAxes: function(panes) {\n var this$1$1 = this;\n\n var options = this.options;\n var xAxesOptions = [].concat(options.xAxis);\n var xAxes = [];\n var yAxesOptions = [].concat(options.yAxis);\n var yAxes = [];\n\n for (var idx = 0; idx < xAxesOptions.length; idx++) {\n var axisPane = this$1$1.findPane(xAxesOptions[idx].pane);\n if (inArray(axisPane, panes)) {\n xAxes.push(this$1$1.createXYAxis(xAxesOptions[idx], false, idx));\n }\n }\n\n for (var idx$1 = 0; idx$1 < yAxesOptions.length; idx$1++) {\n var axisPane$1 = this$1$1.findPane(yAxesOptions[idx$1].pane);\n if (inArray(axisPane$1, panes)) {\n yAxes.push(this$1$1.createXYAxis(yAxesOptions[idx$1], true, idx$1));\n }\n }\n\n this.axisX = this.axisX || xAxes[0];\n this.axisY = this.axisY || yAxes[0];\n },\n\n _dispatchEvent: function(chart, e, eventType) {\n var coords = chart._eventCoordinates(e);\n var point = new Point(coords.x, coords.y);\n var allAxes = this.axes;\n var length = allAxes.length;\n var xValues = [];\n var yValues = [];\n\n for (var i = 0; i < length; i++) {\n var axis = allAxes[i];\n var values = axis.options.vertical ? yValues : xValues;\n var currentValue = axis.getValue(point);\n if (currentValue !== null) {\n values.push(currentValue);\n }\n }\n\n if (xValues.length > 0 && yValues.length > 0) {\n chart.trigger(eventType, {\n element: eventElement(e),\n originalEvent: e,\n x: singleItemOrArray(xValues),\n y: singleItemOrArray(yValues)\n });\n }\n },\n\n updateAxisOptions: function(axis, options) {\n var vertical = axis.options.vertical;\n var axes = this.groupAxes(this.panes);\n var index = (vertical ? axes.y : axes.x).indexOf(axis);\n\n updateAxisOptions$1(this.options, index, vertical, options);\n updateAxisOptions$1(this.originalOptions, index, vertical, options);\n },\n\n trendlineFactory: function(options, series) {\n var seriesValues = this.seriesValues.bind(this, series.index);\n\n var trendline = trendlineFactory(scatterRegistry, options.type, {\n options: options,\n seriesValues: seriesValues\n });\n\n if (trendline) {\n // Inherit settings\n trendline.xAxis = series.xAxis;\n trendline.yAxis = series.yAxis;\n }\n\n return trendline;\n },\n\n seriesValues: function(seriesIx) {\n var this$1$1 = this;\n\n var result = [];\n var currentSeries = this.series[seriesIx];\n\n for (var pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n var data = this$1$1.bindPoint(currentSeries, pointIx);\n result.push({ pointIx: pointIx, valueFields: data.valueFields });\n }\n\n return result;\n }\n });\n\n function updateAxisOptions$1(targetOptions, axisIndex, vertical, options) {\n var axisOptions = ([].concat(vertical ? targetOptions.yAxis : targetOptions.xAxis))[axisIndex];\n deepExtend(axisOptions, options);\n }\n\n setDefaultOptions(XYPlotArea, {\n xAxis: {},\n yAxis: {}\n });\n\n deepExtend(XYPlotArea.prototype, PlotAreaEventsMixin);\n\n var PieSegment = ChartElement.extend({\n init: function(value, sector, options) {\n ChartElement.fn.init.call(this, options);\n\n this.value = value;\n this.sector = sector;\n },\n\n render: function() {\n if (this._rendered || this.visible === false) {\n return;\n }\n this._rendered = true;\n\n this.createLabel();\n },\n\n createLabel: function() {\n var labels = this.options.labels;\n var chartService = this.owner.chartService;\n var labelText = this.getLabelText(labels);\n\n if (labels.visible && (labelText || labelText === 0)) {\n if (labels.position === CENTER || labels.position === INSIDE_END) {\n if (!labels.color) {\n labels.color = autoTextColor(this.options.color);\n }\n if (!labels.background) {\n labels.background = this.options.color;\n }\n } else {\n var themeLabels = chartService.theme.seriesDefaults.labels;\n labels.color = labels.color || themeLabels.color;\n labels.background = labels.background || themeLabels.background;\n }\n\n this.label = new TextBox(labelText, deepExtend({}, labels, {\n align: CENTER,\n vAlign: \"\",\n animation: {\n type: FADEIN,\n delay: this.animationDelay\n }\n }), this.pointData());\n\n this.append(this.label);\n }\n },\n\n getLabelText: function(options) {\n var labelTemplate = getTemplate(options);\n\n if (labelTemplate) {\n return labelTemplate(this.pointData());\n }\n\n return this.owner.chartService.format.auto(options.format, this.value);\n },\n\n reflow: function(targetBox) {\n this.render();\n this.box = targetBox;\n this.reflowLabel();\n },\n\n reflowLabel: function() {\n var ref = this;\n var labelsOptions = ref.options.labels;\n var label = ref.label;\n var sector = this.sector.clone();\n var labelsDistance = labelsOptions.distance;\n var angle = sector.middle();\n\n if (label) {\n var labelHeight = label.box.height();\n var labelWidth = label.box.width();\n var lp;\n\n if (labelsOptions.position === CENTER) {\n sector.radius = Math.abs((sector.radius - labelHeight) / 2) + labelHeight;\n lp = sector.point(angle);\n label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n } else if (labelsOptions.position === INSIDE_END) {\n sector.radius = sector.radius - labelHeight / 2;\n lp = sector.point(angle);\n label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n } else {\n var x1;\n lp = sector.clone().expand(labelsDistance).point(angle);\n if (lp.x >= sector.center.x) {\n x1 = lp.x + labelWidth;\n label.orientation = RIGHT;\n } else {\n x1 = lp.x - labelWidth;\n label.orientation = LEFT;\n }\n label.reflow(new Box(x1, lp.y - labelHeight, lp.x, lp.y));\n }\n }\n },\n\n createVisual: function() {\n var this$1$1 = this;\n\n var ref = this;\n var sector = ref.sector;\n var options = ref.options;\n\n ChartElement.fn.createVisual.call(this);\n\n this.addAccessibilityAttributesToVisual();\n\n if (this.value) {\n if (options.visual) {\n var startAngle = (sector.startAngle + 180) % 360;\n var visual = options.visual({\n category: this.category,\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n percentage: this.percentage,\n center: new GeometryPoint(sector.center.x, sector.center.y),\n radius: sector.radius,\n innerRadius: sector.innerRadius,\n startAngle: startAngle,\n endAngle: startAngle + sector.angle,\n options: options,\n sender: this.getSender(),\n createVisual: function () {\n var group = new Group();\n this$1$1.createSegmentVisual(group);\n\n return group;\n }\n });\n\n if (visual) {\n this.visual.append(visual);\n }\n } else {\n this.createSegmentVisual(this.visual);\n }\n }\n },\n\n createSegmentVisual: function(group) {\n var ref = this;\n var sector = ref.sector;\n var options = ref.options;\n var borderOptions = options.border || {};\n var border = borderOptions.width > 0 ? {\n stroke: {\n color: borderOptions.color,\n width: borderOptions.width,\n opacity: borderOptions.opacity,\n dashType: borderOptions.dashType\n }\n } : {};\n var color = options.color;\n var fill = {\n color: color,\n opacity: options.opacity\n };\n var visual = this.createSegment(sector, deepExtend({\n fill: fill,\n stroke: {\n opacity: options.opacity\n },\n zIndex: options.zIndex\n }, border));\n\n group.append(visual);\n\n if (hasGradientOverlay(options)) {\n group.append(this.createGradientOverlay(visual, {\n baseColor: color,\n fallbackFill: fill\n }, deepExtend({\n center: [ sector.center.x, sector.center.y ],\n innerRadius: sector.innerRadius,\n radius: sector.radius,\n userSpace: true\n }, options.overlay)));\n }\n },\n\n createSegment: function(sector, options) {\n if (options.singleSegment) {\n return new Circle(new GeometryCircle(new GeometryPoint(sector.center.x, sector.center.y), sector.radius), options);\n }\n\n return dataviz.ShapeBuilder.current.createRing(sector, options);\n },\n\n createAnimation: function() {\n var ref = this;\n var options = ref.options;\n var center = ref.sector.center;\n\n deepExtend(options, {\n animation: {\n center: [ center.x, center.y ],\n delay: this.animationDelay\n }\n });\n\n ChartElement.fn.createAnimation.call(this);\n },\n\n createHighlight: function(options) {\n var highlight = this.options.highlight || {};\n var border = highlight.border || {};\n\n return this.createSegment(this.sector, deepExtend({}, options, {\n fill: {\n color: highlight.color,\n opacity: highlight.opacity\n },\n stroke: {\n opacity: border.opacity,\n width: border.width,\n color: border.color\n }\n }));\n },\n\n highlightVisual: function() {\n return this.visual.children[0];\n },\n\n highlightVisualArgs: function() {\n var sector = this.sector;\n\n return {\n options: this.options,\n radius: sector.radius,\n innerRadius: sector.innerRadius,\n center: new GeometryPoint(sector.center.x, sector.center.y),\n startAngle: sector.startAngle,\n endAngle: sector.angle + sector.startAngle,\n visual: this.visual\n };\n },\n\n createFocusHighlight: function(style) {\n var borderWidth = this.options.accessibility.highlight.border.width;\n var result = this.createSegment(this.sector, deepExtend({}, style, {\n stroke: {\n width: borderWidth * 2\n }\n }));\n\n var clipPath = new MultiPath();\n\n clipPath.paths.push(Path.fromRect(result.bbox()));\n clipPath.paths.push(this.createSegment(this.sector, {}));\n\n result.clip(clipPath);\n\n return result;\n },\n\n tooltipAnchor: function() {\n var sector = this.sector.clone().expand(TOOLTIP_OFFSET);\n var midAndle = sector.middle();\n var midPoint = sector.point(midAndle);\n\n return {\n point: midPoint,\n align: tooltipAlignment(midAndle + 180)\n };\n },\n\n formatValue: function(format) {\n return this.owner.formatPointValue(this, format);\n },\n\n pointData: function() {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n series: this.series,\n percentage: this.percentage\n };\n },\n\n getIndex: function() {\n return this.index;\n }\n });\n\n var RAD_30 = round(rad(30), DEFAULT_PRECISION);\n var RAD_60 = round(rad(60), DEFAULT_PRECISION);\n\n function tooltipAlignment(angle) {\n var radians = rad(angle);\n var sine = round(Math.sin(radians), DEFAULT_PRECISION);\n var cosine = round(Math.cos(radians), DEFAULT_PRECISION);\n\n var horizontal;\n if (Math.abs(sine) > RAD_60) {\n horizontal = CENTER;\n } else if (cosine < 0) {\n horizontal = RIGHT;\n } else {\n horizontal = LEFT;\n }\n\n var vertical;\n if (Math.abs(sine) < RAD_30) {\n vertical = CENTER;\n } else if (sine < 0) {\n vertical = BOTTOM;\n } else {\n vertical = TOP;\n }\n\n return {\n horizontal: horizontal,\n vertical: vertical\n };\n }\n\n setDefaultOptions(PieSegment, {\n color: WHITE,\n overlay: {\n gradient: \"roundedBevel\"\n },\n border: {\n width: 0.5\n },\n labels: {\n visible: false,\n distance: 35,\n font: datavizConstants.DEFAULT_FONT,\n margin: getSpacing(0.5),\n align: CIRCLE,\n zIndex: 1,\n position: OUTSIDE_END\n },\n animation: {\n type: PIE\n },\n highlight: {\n visible: true,\n border: {\n width: 1\n }\n },\n visible: true,\n accessibility: {\n role: CHART_POINT_ROLE,\n className: CHART_POINT_CLASSNAME,\n ariaRoleDescription: CHART_POINT_ROLE_DESCRIPTION\n }\n });\n\n deepExtend(PieSegment.prototype, PointEventsMixin);\n deepExtend(PieSegment.prototype, AccessibilityAttributesMixin);\n\n var PieChartMixin = {\n createLegendItem: function(value, point, options) {\n var legendOptions = this.options.legend || {};\n var labelsOptions = legendOptions.labels || {};\n var inactiveItems = legendOptions.inactiveItems || {};\n var inactiveItemsLabels = inactiveItems.labels || {};\n\n if (options && options.visibleInLegend !== false) {\n var pointVisible = options.visible !== false;\n var labelTemplate = pointVisible ? getTemplate(labelsOptions) :\n getTemplate(inactiveItemsLabels) || getTemplate(labelsOptions);\n var text = options.category;\n\n if (labelTemplate) {\n text = labelTemplate({\n text: text,\n series: options.series,\n dataItem: options.dataItem,\n percentage: options.percentage,\n value: value\n });\n }\n\n var itemLabelOptions, markerColor;\n if (pointVisible) {\n itemLabelOptions = {};\n markerColor = point.color;\n } else {\n itemLabelOptions = {\n color: inactiveItemsLabels.color,\n font: inactiveItemsLabels.font\n };\n markerColor = (inactiveItems.markers || {}).color;\n }\n\n if (hasValue(text) && text !== \"\") {\n this.legendItems.push({\n active: pointVisible,\n pointIndex: options.index,\n text: text,\n series: options.series,\n markerColor: markerColor,\n labels: itemLabelOptions\n });\n }\n }\n }\n };\n\n var PIE_SECTOR_ANIM_DELAY = 70;\n\n var PieChart = ChartElement.extend({\n init: function(plotArea, options) {\n ChartElement.fn.init.call(this, options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this.points = [];\n this.legendItems = [];\n this.render();\n },\n\n render: function() {\n this.traverseDataPoints(this.addValue.bind(this));\n },\n\n traverseDataPoints: function(callback) {\n var this$1$1 = this;\n\n var ref = this;\n var options = ref.options;\n var seriesColors = ref.plotArea.options.seriesColors; if (seriesColors === void 0) { seriesColors = []; }\n var colorsCount = seriesColors.length;\n var series = options.series;\n var seriesCount = series.length;\n\n for (var seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n var currentSeries = series[seriesIx];\n var data = currentSeries.data;\n var ref$1 = bindSegments(currentSeries);\n var total = ref$1.total;\n var points = ref$1.points;\n var count = ref$1.count;\n var anglePerValue = 360 / total;\n var constantAngle = (void 0);\n if (!isFinite(anglePerValue)) {\n constantAngle = 360 / count;\n }\n var currentAngle = (void 0);\n\n if (defined(currentSeries.startAngle)) {\n currentAngle = currentSeries.startAngle;\n } else {\n currentAngle = options.startAngle;\n }\n\n if (seriesIx !== seriesCount - 1) {\n if (currentSeries.labels.position === OUTSIDE_END) {\n currentSeries.labels.position = CENTER;\n }\n }\n\n for (var i = 0; i < points.length; i++) {\n var pointData = points[i];\n if (!pointData) {\n continue;\n }\n\n var fields = pointData.fields;\n var value = pointData.value;\n var visible = pointData.visible;\n var angle = value !== 0 ? (constantAngle || (value * anglePerValue)) : 0;\n var explode = data.length !== 1 && Boolean(fields.explode);\n\n if (!isFunction(currentSeries.color)) {\n currentSeries.color = fields.color || seriesColors[i % colorsCount];\n }\n\n callback(value, new dataviz.Ring(null, 0, 0, currentAngle, angle), {\n owner: this$1$1,\n category: defined(fields.category) ? fields.category : \"\",\n index: i,\n series: currentSeries,\n seriesIx: seriesIx,\n dataItem: data[i],\n percentage: total !== 0 ? value / total : 0,\n explode: explode,\n visibleInLegend: fields.visibleInLegend,\n visible: visible,\n zIndex: seriesCount - seriesIx,\n animationDelay: this$1$1.animationDelay(i, seriesIx, seriesCount)\n });\n\n if (visible !== false) {\n currentAngle += angle;\n }\n }\n }\n },\n\n evalSegmentOptions: function(options, value, fields) {\n var series = fields.series;\n\n evalOptions(options, {\n value: value,\n series: series,\n dataItem: fields.dataItem,\n category: fields.category,\n percentage: fields.percentage\n }, { defaults: series._defaults, excluded: [\n \"data\", \"content\", \"template\", \"visual\", \"toggle\",\n \"ariaTemplate\", \"ariaContent\"\n ] });\n },\n\n addValue: function(value, sector, fields) {\n var segmentOptions = deepExtend({}, fields.series, { index: fields.index });\n this.evalSegmentOptions(segmentOptions, value, fields);\n\n this.createLegendItem(value, segmentOptions, fields);\n\n if (fields.visible === false) {\n return;\n }\n\n var segment = new PieSegment(value, sector, segmentOptions);\n $.extend(segment, fields);\n this.append(segment);\n this.points.push(segment);\n },\n\n reflow: function(targetBox) {\n var ref = this;\n var options = ref.options;\n var points = ref.points;\n var seriesConfigs = ref.seriesConfigs; if (seriesConfigs === void 0) { seriesConfigs = []; }\n var count = points.length;\n var box = targetBox.clone();\n var space = 5;\n var minWidth = Math.min(box.width(), box.height());\n var halfMinWidth = minWidth / 2;\n var defaultPadding = minWidth - minWidth * 0.85;\n var newBox = new Box(box.x1, box.y1, box.x1 + minWidth, box.y1 + minWidth);\n var newBoxCenter = newBox.center();\n var boxCenter = box.center();\n var seriesCount = options.series.length;\n var leftSideLabels = [];\n var rightSideLabels = [];\n var padding = valueOrDefault(options.padding, defaultPadding);\n\n this.targetBox = targetBox;\n\n padding = padding > halfMinWidth - space ? halfMinWidth - space : padding;\n newBox.translate(boxCenter.x - newBoxCenter.x, boxCenter.y - newBoxCenter.y);\n\n var radius = halfMinWidth - padding;\n var center = new Point(\n radius + newBox.x1 + padding,\n radius + newBox.y1 + padding\n );\n\n for (var i = 0; i < count; i++) {\n var segment = points[i];\n var sector = segment.sector;\n var seriesIndex = segment.seriesIx;\n sector.radius = radius;\n sector.center = center;\n\n if (seriesConfigs.length) {\n var seriesConfig = seriesConfigs[seriesIndex];\n sector.innerRadius = seriesConfig.innerRadius;\n sector.radius = seriesConfig.radius;\n }\n\n if (seriesIndex === seriesCount - 1 && segment.explode) {\n sector.center = sector.clone().setRadius(sector.radius * 0.15).point(sector.middle());\n }\n\n segment.reflow(newBox);\n\n var label = segment.label;\n if (label) {\n if (label.options.position === OUTSIDE_END) {\n if (seriesIndex === seriesCount - 1) {\n if (label.orientation === RIGHT) {\n rightSideLabels.push(label);\n } else {\n leftSideLabels.push(label);\n }\n }\n }\n }\n }\n\n if (leftSideLabels.length > 0) {\n leftSideLabels.sort(this.labelComparator(true));\n this.leftLabelsReflow(leftSideLabels);\n }\n\n if (rightSideLabels.length > 0) {\n rightSideLabels.sort(this.labelComparator(false));\n this.rightLabelsReflow(rightSideLabels);\n }\n\n this.box = newBox;\n },\n\n leftLabelsReflow: function(labels) {\n var distances = this.distanceBetweenLabels(labels);\n\n this.distributeLabels(distances, labels);\n },\n\n rightLabelsReflow: function(labels) {\n var distances = this.distanceBetweenLabels(labels);\n\n this.distributeLabels(distances, labels);\n },\n\n distanceBetweenLabels: function(labels) {\n var segment = last(this.points);\n var sector = segment.sector;\n var count = labels.length - 1;\n var lr = sector.radius + segment.options.labels.distance;\n var distances = [];\n var firstBox = labels[0].box;\n var distance = round(firstBox.y1 - (sector.center.y - lr - firstBox.height() - firstBox.height() / 2));\n\n distances.push(distance);\n\n for (var i = 0; i < count; i++) {\n var secondBox = labels[i + 1].box;\n\n firstBox = labels[i].box;\n distance = round(secondBox.y1 - firstBox.y2);\n distances.push(distance);\n }\n distance = round(sector.center.y + lr - labels[count].box.y2 - labels[count].box.height() / 2);\n distances.push(distance);\n\n return distances;\n },\n\n distributeLabels: function(distances, labels) {\n var this$1$1 = this;\n\n var count = distances.length;\n var left, right, remaining;\n\n for (var i = 0; i < count; i++) {\n remaining = -distances[i];\n left = right = i;\n\n while (remaining > 0 && (left >= 0 || right < count)) {\n remaining = this$1$1._takeDistance(distances, i, --left, remaining);\n remaining = this$1$1._takeDistance(distances, i, ++right, remaining);\n }\n }\n\n this.reflowLabels(distances, labels);\n },\n\n _takeDistance: function(distances, anchor, position, amount) {\n var result = amount;\n if (distances[position] > 0) {\n var available = Math.min(distances[position], result);\n result -= available;\n distances[position] -= available;\n distances[anchor] += available;\n }\n\n return result;\n },\n\n reflowLabels: function(distances, labels) {\n var this$1$1 = this;\n\n var segment = last(this.points);\n var sector = segment.sector;\n var labelOptions = segment.options.labels;\n var labelsCount = labels.length;\n var labelDistance = labelOptions.distance;\n var boxY = sector.center.y - (sector.radius + labelDistance) - labels[0].box.height();\n var boxX;\n\n distances[0] += 2;\n for (var i = 0; i < labelsCount; i++) {\n var label = labels[i];\n var box = label.box;\n\n boxY += distances[i];\n boxX = this$1$1.hAlignLabel(\n box.x2,\n sector.clone().expand(labelDistance),\n boxY,\n boxY + box.height(),\n label.orientation === RIGHT);\n\n if (label.orientation === RIGHT) {\n if (labelOptions.align !== CIRCLE) {\n boxX = sector.radius + sector.center.x + labelDistance;\n }\n label.reflow(new Box(boxX + box.width(), boxY, boxX, boxY));\n } else {\n if (labelOptions.align !== CIRCLE) {\n boxX = sector.center.x - sector.radius - labelDistance;\n }\n label.reflow(new Box(boxX - box.width(), boxY, boxX, boxY));\n }\n\n boxY += box.height();\n }\n },\n\n createVisual: function() {\n var this$1$1 = this;\n\n var ref = this;\n var connectors = ref.options.connectors;\n var points = ref.points;\n var count = points.length;\n var space = 4;\n\n ChartElement.fn.createVisual.call(this);\n\n this._connectorLines = [];\n\n for (var i = 0; i < count; i++) {\n var segment = points[i];\n var sector = segment.sector;\n var label = segment.label;\n var angle = sector.middle();\n var connectorsColor = (segment.options.connectors || {}).color || connectors.color;\n\n if (label) {\n var connectorLine = new Path({\n stroke: {\n color: connectorsColor,\n width: connectors.width\n },\n animation: {\n type: FADEIN,\n delay: segment.animationDelay\n }\n });\n\n if (label.options.position === OUTSIDE_END) {\n var box = label.box;\n var centerPoint = sector.center;\n var start = sector.point(angle);\n var middle = new Point(box.x1, box.center().y);\n var sr = (void 0), end = (void 0), crossing = (void 0);\n\n start = sector.clone().expand(connectors.padding).point(angle);\n connectorLine.moveTo(start.x, start.y);\n // TODO: Extract into a method to remove duplication\n if (label.orientation === RIGHT) {\n end = new Point(box.x1 - connectors.padding, box.center().y);\n crossing = intersection(centerPoint, start, middle, end);\n middle = new Point(end.x - space, end.y);\n crossing = crossing || middle;\n crossing.x = Math.min(crossing.x, middle.x);\n\n if (this$1$1.pointInCircle(crossing, sector.center, sector.radius + space) ||\n crossing.x < sector.center.x) {\n sr = sector.center.x + sector.radius + space;\n if (segment.options.labels.align !== COLUMN) {\n if (sr < middle.x) {\n connectorLine.lineTo(sr, start.y);\n } else {\n connectorLine.lineTo(start.x + space * 2, start.y);\n }\n } else {\n connectorLine.lineTo(sr, start.y);\n }\n connectorLine.lineTo(middle.x, end.y);\n } else {\n crossing.y = end.y;\n connectorLine.lineTo(crossing.x, crossing.y);\n }\n } else {\n end = new Point(box.x2 + connectors.padding, box.center().y);\n crossing = intersection(centerPoint, start, middle, end);\n middle = new Point(end.x + space, end.y);\n crossing = crossing || middle;\n crossing.x = Math.max(crossing.x, middle.x);\n\n if (this$1$1.pointInCircle(crossing, sector.center, sector.radius + space) ||\n crossing.x > sector.center.x) {\n sr = sector.center.x - sector.radius - space;\n if (segment.options.labels.align !== COLUMN) {\n if (sr > middle.x) {\n connectorLine.lineTo(sr, start.y);\n } else {\n connectorLine.lineTo(start.x - space * 2, start.y);\n }\n } else {\n connectorLine.lineTo(sr, start.y);\n }\n connectorLine.lineTo(middle.x, end.y);\n } else {\n crossing.y = end.y;\n connectorLine.lineTo(crossing.x, crossing.y);\n }\n }\n\n connectorLine.lineTo(end.x, end.y);\n\n this$1$1._connectorLines.push(connectorLine);\n this$1$1.visual.append(connectorLine);\n }\n }\n }\n },\n\n renderVisual: function() {\n ChartElement.fn.renderVisual.call(this);\n\n if (dataviz.find(this.options.series, function (options) { return options.autoFit; })) {\n var targetBox = this.targetBox;\n var pieCenter = this.box.center();\n var bbox = this.visual.bbox();\n if (!bbox) {\n return;\n }\n\n var bboxBottom = bbox.bottomRight();\n\n var scale = Math.min(\n (pieCenter.y - targetBox.y1) / (pieCenter.y - bbox.origin.y),\n (targetBox.y2 - pieCenter.y) / (bboxBottom.y - pieCenter.y),\n (pieCenter.x - targetBox.x1) / (pieCenter.x - bbox.origin.x),\n (targetBox.x2 - pieCenter.x) / (bboxBottom.x - pieCenter.x)\n );\n\n if (scale < 1) {\n this.visual.transform(transform().scale(scale, scale, [ pieCenter.x, pieCenter.y ]));\n }\n }\n },\n\n labelComparator: function(reverse) {\n var reverseValue = reverse ? -1 : 1;\n\n return function(a, b) {\n var first = (a.parent.sector.middle() + 270) % 360;\n var second = (b.parent.sector.middle() + 270) % 360;\n return (first - second) * reverseValue;\n };\n },\n\n hAlignLabel: function(originalX, sector, y1, y2, direction) {\n var radius = sector.radius;\n var sector_center = sector.center;\n var cx = sector_center.x;\n var cy = sector_center.y;\n var t = Math.min(Math.abs(cy - y1), Math.abs(cy - y2));\n\n if (t > radius) {\n return originalX;\n }\n\n return cx + Math.sqrt((radius * radius) - (t * t)) * (direction ? 1 : -1);\n },\n\n pointInCircle: function(point, center, radius) {\n return Math.pow(center.x - point.x, 2) + Math.pow(center.y - point.y, 2) < Math.pow(radius, 2);\n },\n\n formatPointValue: function(point, format) {\n return this.chartService.format.auto(format, point.value);\n },\n\n animationDelay: function(categoryIndex) {\n return categoryIndex * PIE_SECTOR_ANIM_DELAY;\n },\n\n stackRoot: function() {\n return this;\n }\n });\n\n function intersection(a1, a2, b1, b2) {\n var uat = (b2.x - b1.x) * (a1.y - b1.y) - (b2.y - b1.y) * (a1.x - b1.x);\n var ub = (b2.y - b1.y) * (a2.x - a1.x) - (b2.x - b1.x) * (a2.y - a1.y);\n\n var result;\n if (ub !== 0) {\n var ua = (uat / ub);\n\n result = new Point(\n a1.x + ua * (a2.x - a1.x),\n a1.y + ua * (a2.y - a1.y)\n );\n }\n\n return result;\n }\n\n setDefaultOptions(PieChart, {\n startAngle: 90,\n connectors: {\n width: 2,\n color: \"#939393\",\n padding: 8\n },\n inactiveItems: {\n markers: {},\n labels: {}\n }\n });\n\n deepExtend(PieChart.prototype, PieChartMixin);\n\n PieChart.prototype.isStackRoot = true;\n\n var PiePlotArea = PlotAreaBase.extend({\n render: function() {\n this.createPieChart(this.series);\n },\n\n createPieChart: function(series) {\n var firstSeries = series[0];\n var pieChart = new PieChart(this, {\n series: series,\n padding: firstSeries.padding,\n startAngle: firstSeries.startAngle,\n connectors: firstSeries.connectors,\n legend: this.options.legend\n });\n\n this.appendChart(pieChart);\n },\n\n appendChart: function(chart, pane) {\n PlotAreaBase.fn.appendChart.call(this, chart, pane);\n append(this.options.legend.data, chart.legendItems);\n },\n\n getPointBelow: function(point) {\n return this.getPointToTheRight(point);\n },\n\n getPointAbove: function(point) {\n return this.getPointToTheLeft(point);\n }\n });\n\n var DonutSegment = PieSegment.extend({\n reflowLabel: function() {\n var ref = this;\n var labelsOptions = ref.options.labels;\n var label = ref.label;\n var sector = this.sector.clone();\n var angle = sector.middle();\n\n if (label) {\n var labelHeight = label.box.height();\n if (labelsOptions.position === CENTER) {\n sector.radius -= (sector.radius - sector.innerRadius) / 2;\n\n var lp = sector.point(angle);\n\n label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n } else {\n PieSegment.fn.reflowLabel.call(this);\n }\n }\n },\n\n createSegment: function(sector, options) {\n return dataviz.ShapeBuilder.current.createRing(sector, options);\n }\n });\n\n setDefaultOptions(DonutSegment, {\n overlay: {\n gradient: \"roundedGlass\"\n },\n labels: {\n position: CENTER\n },\n animation: {\n type: PIE\n }\n });\n\n deepExtend(DonutSegment.prototype, PointEventsMixin);\n\n var DONUT_SECTOR_ANIM_DELAY = 50;\n\n var DonutChart = PieChart.extend({\n addValue: function(value, sector, fields) {\n var segmentOptions = deepExtend({}, fields.series, { index: fields.index });\n this.evalSegmentOptions(segmentOptions, value, fields);\n\n this.createLegendItem(value, segmentOptions, fields);\n\n if (fields.visible === false) {\n return;\n }\n\n var segment = new DonutSegment(value, sector, segmentOptions);\n\n $.extend(segment, fields);\n this.append(segment);\n this.points.push(segment);\n },\n\n reflow: function(targetBox) {\n var this$1$1 = this;\n\n var options = this.options;\n var box = targetBox.clone();\n var space = 5;\n var minWidth = Math.min(box.width(), box.height());\n var halfMinWidth = minWidth / 2;\n var defaultPadding = minWidth - minWidth * 0.85;\n var series = options.series;\n var seriesCount = series.length;\n\n var padding = valueOrDefault(options.padding, defaultPadding);\n padding = padding > halfMinWidth - space ? halfMinWidth - space : padding;\n\n var totalSize = halfMinWidth - padding;\n var seriesWithoutSize = 0;\n var holeSize;\n\n for (var i = 0; i < seriesCount; i++) {\n var currentSeries = series[i];\n if (i === 0) {\n if (defined(currentSeries.holeSize)) {\n holeSize = currentSeries.holeSize;\n totalSize -= currentSeries.holeSize;\n }\n }\n\n if (defined(currentSeries.size)) {\n totalSize -= currentSeries.size;\n } else {\n seriesWithoutSize++;\n }\n\n if (defined(currentSeries.margin) && i !== seriesCount - 1) {\n totalSize -= currentSeries.margin;\n }\n }\n\n if (!defined(holeSize)) {\n var currentSize = (halfMinWidth - padding) / (seriesCount + 0.75);\n holeSize = currentSize * 0.75;\n totalSize -= holeSize;\n }\n\n var innerRadius = holeSize;\n var margin = 0;\n var size, radius;\n\n this.seriesConfigs = [];\n\n for (var i$1 = 0; i$1 < seriesCount; i$1++) {\n var currentSeries$1 = series[i$1];\n size = valueOrDefault(currentSeries$1.size, totalSize / seriesWithoutSize);\n innerRadius += margin;\n radius = innerRadius + size;\n this$1$1.seriesConfigs.push({ innerRadius: innerRadius, radius: radius });\n margin = currentSeries$1.margin || 0;\n innerRadius = radius;\n }\n\n PieChart.fn.reflow.call(this, targetBox);\n },\n\n animationDelay: function(categoryIndex, seriesIndex, seriesCount) {\n return categoryIndex * DONUT_SECTOR_ANIM_DELAY +\n (INITIAL_ANIMATION_DURATION * (seriesIndex + 1) / (seriesCount + 1));\n }\n });\n\n setDefaultOptions(DonutChart, {\n startAngle: 90,\n connectors: {\n width: 2,\n color: \"#939393\",\n padding: 8\n }\n });\n\n var DonutPlotArea = PiePlotArea.extend({\n render: function() {\n this.createDonutChart(this.series);\n },\n\n createDonutChart: function(series) {\n var firstSeries = series[0];\n var donutChart = new DonutChart(this, {\n series: series,\n padding: firstSeries.padding,\n connectors: firstSeries.connectors,\n legend: this.options.legend\n });\n\n this.appendChart(donutChart);\n },\n\n getPointBelow: function(point) {\n return this._getNextPoint(point, this._pointsByVertical, -1);\n },\n\n getPointAbove: function(point) {\n return this._getNextPoint(point, this._pointsByVertical, 1);\n }\n });\n\n var DEFAULT_PADDING = 0.15;\n\n var PolarPlotAreaBase = PlotAreaBase.extend({\n initFields: function() {\n this.valueAxisRangeTracker = new AxisGroupRangeTracker();\n },\n\n render: function() {\n this.addToLegend(this.series);\n this.createPolarAxis();\n this.createCharts();\n this.createValueAxis();\n },\n\n alignAxes: function() {\n var axis = this.valueAxis;\n var range = axis.range();\n var crossingValue = axis.options.reverse ? range.max : range.min;\n var slot = axis.getSlot(crossingValue);\n var center = this.polarAxis.getSlot(0).center;\n var axisBox = axis.box.translate(\n center.x - slot.x1,\n center.y - slot.y1\n );\n\n axis.reflow(axisBox);\n },\n\n createValueAxis: function() {\n var tracker = this.valueAxisRangeTracker;\n var defaultRange = tracker.query();\n var axisOptions = this.valueAxisOptions({\n roundToMajorUnit: false,\n zIndex: -1\n });\n var axisType, axisDefaultRange;\n\n if (axisOptions.type === LOGARITHMIC) {\n axisType = dataviz.RadarLogarithmicAxis;\n axisDefaultRange = { min: 0.1, max: 1 };\n } else {\n axisType = dataviz.RadarNumericAxis;\n axisDefaultRange = { min: 0, max: 1 };\n }\n\n var range = tracker.query(name) || defaultRange || axisDefaultRange;\n\n if (range && defaultRange) {\n range.min = Math.min(range.min, defaultRange.min);\n range.max = Math.max(range.max, defaultRange.max);\n }\n\n var valueAxis = new axisType(\n range.min, range.max,\n axisOptions,\n this.chartService\n );\n\n this.valueAxis = valueAxis;\n this.appendAxis(valueAxis);\n },\n\n reflowAxes: function() {\n var ref = this;\n var options = ref.options.plotArea;\n var valueAxis = ref.valueAxis;\n var polarAxis = ref.polarAxis;\n var box = ref.box;\n var defaultPadding = Math.min(box.width(), box.height()) * DEFAULT_PADDING;\n var padding = getSpacing(options.padding || {}, defaultPadding);\n var paddingBox = box.clone().unpad(padding);\n var axisBox = paddingBox.clone();\n\n axisBox.y2 = axisBox.y1 + Math.min(axisBox.width(), axisBox.height());\n axisBox.align(paddingBox, Y, CENTER);\n\n var valueAxisBox = axisBox.clone().shrink(0, axisBox.height() / 2);\n\n polarAxis.reflow(axisBox);\n valueAxis.reflow(valueAxisBox);\n var heightDiff = valueAxis.lineBox().height() - valueAxis.box.height();\n valueAxis.reflow(valueAxis.box.unpad({ top: heightDiff }));\n\n this.axisBox = axisBox;\n this.alignAxes(axisBox);\n },\n\n backgroundBox: function() {\n return this.box;\n },\n\n detachLabels: function() {}\n });\n\n var PolarScatterChart = ScatterChart.extend({\n pointSlot: function(slotX, slotY) {\n var valueRadius = slotX.center.y - slotY.y1;\n var slot = Point.onCircle(slotX.center, slotX.startAngle, valueRadius);\n\n return new Box(slot.x, slot.y, slot.x, slot.y);\n }\n });\n\n setDefaultOptions(PolarScatterChart, {\n clip: false\n });\n\n var PolarLineChart = ScatterLineChart.extend({\n\n });\n\n PolarLineChart.prototype.pointSlot = PolarScatterChart.prototype.pointSlot;\n\n setDefaultOptions(PolarLineChart, {\n clip: false\n });\n\n var SplinePolarAreaSegment = SplineAreaSegment.extend({\n fillToAxes: function(fillPath) {\n var center = this._polarAxisCenter();\n fillPath.lineTo(center.x, center.y);\n },\n\n _polarAxisCenter: function() {\n var polarAxis = this.parent.plotArea.polarAxis;\n var center = polarAxis.box.center();\n return center;\n },\n\n strokeSegments: function() {\n var segments = this._strokeSegments;\n\n if (!segments) {\n var center = this._polarAxisCenter();\n var curveProcessor = new CurveProcessor(false);\n var linePoints = this.points();\n\n linePoints.push(center);\n segments = this._strokeSegments = curveProcessor.process(linePoints);\n segments.pop();\n }\n\n return segments;\n }\n });\n\n var PolarAreaSegment = AreaSegment.extend({\n fillToAxes: function(fillPath) {\n var polarAxis = this.parent.plotArea.polarAxis;\n var center = polarAxis.box.center();\n var centerSegment = new geometry.Segment([ center.x, center.y ]);\n\n fillPath.segments.unshift(centerSegment);\n fillPath.segments.push(centerSegment);\n }\n });\n\n var PolarAreaChart = PolarLineChart.extend({\n createSegment: function(linePoints, currentSeries, seriesIx) {\n var style = (currentSeries.line || {}).style;\n var segment;\n\n if (style === SMOOTH) {\n segment = new SplinePolarAreaSegment(linePoints, currentSeries, seriesIx);\n } else {\n segment = new PolarAreaSegment(linePoints, currentSeries, seriesIx);\n }\n return segment;\n },\n\n createMissingValue: function(value, missingValues) {\n var missingValue;\n\n if (hasValue(value.x) && missingValues !== INTERPOLATE) {\n missingValue = {\n x: value.x,\n y: value.y\n };\n if (missingValues === ZERO) {\n missingValue.y = 0;\n }\n }\n\n return missingValue;\n },\n\n seriesMissingValues: function(series) {\n return series.missingValues || ZERO;\n },\n\n _hasMissingValuesGap: function() {\n var this$1$1 = this;\n\n var series = this.options.series;\n\n for (var idx = 0; idx < series.length; idx++) {\n if (this$1$1.seriesMissingValues(series[idx]) === GAP) {\n return true;\n }\n }\n },\n\n sortPoints: function(points) {\n var this$1$1 = this;\n\n points.sort(xComparer);\n\n if (this._hasMissingValuesGap()) {\n for (var idx = 0; idx < points.length; idx++) {\n var point = points[idx];\n if (point) {\n var value = point.value;\n if (!hasValue(value.y) && this$1$1.seriesMissingValues(point.series) === GAP) {\n delete points[idx];\n }\n }\n }\n }\n\n return points;\n }\n });\n\n function xComparer(a, b) {\n return a.value.x - b.value.x;\n }\n\n var PolarPlotArea = PolarPlotAreaBase.extend({\n createPolarAxis: function() {\n var polarAxis = new dataviz.PolarAxis(this.options.xAxis, this.chartService);\n\n this.polarAxis = polarAxis;\n this.axisX = polarAxis;\n this.appendAxis(polarAxis);\n },\n\n render: function() {\n this.series = [].concat( this.originalSeries );\n this.createTrendlineSeries();\n\n PolarPlotAreaBase.fn.render.call(this);\n },\n\n valueAxisOptions: function(defaults) {\n return deepExtend(defaults, {\n majorGridLines: { type: ARC },\n minorGridLines: { type: ARC }\n }, this.options.yAxis);\n },\n\n createValueAxis: function() {\n PolarPlotAreaBase.fn.createValueAxis.call(this);\n this.axisY = this.valueAxis;\n },\n\n trendlineFactory: function(options, series) {\n var trendline = XYPlotArea.prototype.trendlineFactory.call(this, options, series);\n if (trendline) {\n trendline.type = POLAR_LINE;\n }\n\n return trendline;\n },\n\n appendChart: function(chart, pane) {\n this.valueAxisRangeTracker.update(chart.yAxisRanges);\n\n PlotAreaBase.prototype.appendChart.call(this, chart, pane);\n },\n\n createCharts: function() {\n var series = this.filterVisibleSeries(this.series);\n var pane = this.panes[0];\n\n this.createLineChart(\n filterSeriesByType(series, [ POLAR_LINE ]),\n pane\n );\n\n this.createScatterChart(\n filterSeriesByType(series, [ POLAR_SCATTER ]),\n pane\n );\n\n this.createAreaChart(\n filterSeriesByType(series, [ POLAR_AREA ]),\n pane\n );\n },\n\n createLineChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var lineChart = new PolarLineChart(this, { series: series });\n\n this.appendChart(lineChart, pane);\n },\n\n createScatterChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var scatterChart = new PolarScatterChart(this, { series: series });\n\n this.appendChart(scatterChart, pane);\n },\n\n createAreaChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var areaChart = new PolarAreaChart(this, { series: series });\n\n this.appendChart(areaChart, pane);\n },\n\n _dispatchEvent: function(chart, e, eventType) {\n var coords = chart._eventCoordinates(e);\n var point = new Point(coords.x, coords.y);\n var xValue = this.axisX.getValue(point);\n var yValue = this.axisY.getValue(point);\n\n if (xValue !== null && yValue !== null) {\n chart.trigger(eventType, {\n element: eventElement(e),\n x: xValue,\n y: yValue\n });\n }\n },\n\n createCrosshairs: function() {}\n });\n\n setDefaultOptions(PolarPlotArea, {\n xAxis: {},\n yAxis: {}\n });\n\n deepExtend(PolarPlotArea.prototype, PlotAreaEventsMixin, {\n seriesValues: XYPlotArea.prototype.seriesValues\n });\n\n function groupBySeriesIx(segments) {\n var seriesSegments = [];\n for (var idx = 0; idx < segments.length; idx++) {\n var segment = segments[idx];\n seriesSegments[segment.seriesIx] = seriesSegments[segment.seriesIx] || [];\n seriesSegments[segment.seriesIx].push(segment);\n }\n\n return seriesSegments;\n }\n\n var RadarLineChart = LineChart.extend({\n pointSlot: function(categorySlot, valueSlot) {\n var valueRadius = categorySlot.center.y - valueSlot.y1;\n var slot = Point.onCircle(categorySlot.center, categorySlot.middle(), valueRadius);\n\n return new Box(slot.x, slot.y, slot.x, slot.y);\n },\n\n renderSegments: function() {\n LineChart.fn.renderSegments.call(this);\n\n if (this._segments && this._segments.length > 1) {\n var seriesSegments = groupBySeriesIx(this._segments);\n\n for (var idx = 0; idx < seriesSegments.length; idx++) {\n var segments = seriesSegments[idx];\n if (segments && segments.length > 1) {\n var firstPoint = segments[0].linePoints[0];\n var lastSegment = last(segments);\n var lastPoint = last(lastSegment.linePoints);\n var isFirstDataPoint = firstPoint.categoryIx === 0;\n var isLastDataPoint = lastPoint.categoryIx === lastPoint.categoriesCount - 1;\n if (isFirstDataPoint && isLastDataPoint) {\n last(segments).linePoints.push(firstPoint);\n }\n }\n }\n }\n },\n\n createSegment: function(linePoints, currentSeries, seriesIx) {\n var style = currentSeries.style;\n var pointType;\n\n if (style === SMOOTH) {\n pointType = SplineSegment;\n } else {\n pointType = LineSegment;\n }\n\n var segment = new pointType(linePoints, currentSeries, seriesIx);\n var missingValues = this.seriesMissingValues(currentSeries);\n\n if (linePoints.length === currentSeries.data.length || missingValues === INTERPOLATE) {\n segment.options.closed = true;\n }\n\n return segment;\n }\n });\n\n setDefaultOptions(RadarLineChart, {\n clip: false,\n limitPoints: false\n });\n\n var SplineRadarAreaSegment = SplineAreaSegment.extend({\n fillToAxes: function() {}\n });\n\n var RadarAreaSegment = AreaSegment.extend({\n fillToAxes: function() {}\n });\n\n var RadarAreaChart = RadarLineChart.extend({\n createSegment: function(linePoints, currentSeries, seriesIx, prevSegment) {\n var isStacked = this.options.isStacked;\n var style = (currentSeries.line || {}).style;\n var previousSegment;\n var stackPoints;\n var segment;\n\n if (isStacked && seriesIx > 0 && prevSegment) {\n stackPoints = prevSegment.linePoints.slice(0);\n previousSegment = prevSegment;\n }\n\n if (style === SMOOTH) {\n segment = new SplineRadarAreaSegment(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n segment.options.closed = true;\n } else {\n linePoints.push(linePoints[0]);\n segment = new RadarAreaSegment(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n }\n\n return segment;\n },\n\n seriesMissingValues: function(series) {\n return series.missingValues || ZERO;\n }\n });\n\n var RadarSegment = DonutSegment.extend({\n init: function(value, options) {\n DonutSegment.fn.init.call(this, value, null, options);\n },\n\n getIndex: function() {\n return this.categoryIx;\n }\n });\n\n setDefaultOptions(RadarSegment, {\n overlay: {\n gradient: \"none\"\n },\n labels: {\n distance: 10\n }\n });\n\n var RadarClusterLayout = ChartElement.extend({\n init: function(options) {\n ChartElement.fn.init.call(this, options);\n\n this.forEach = options.rtl ? forEachReverse : forEach;\n },\n\n reflow: function(sector) {\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var gap = options.gap;\n var spacing = options.spacing;\n var count = children.length;\n var slots = count + gap + (spacing * (count - 1));\n var slotAngle = sector.angle / slots;\n var angle = sector.startAngle + slotAngle * (gap / 2);\n\n this.forEach(children, function (child) {\n var slotSector = sector.clone();\n slotSector.startAngle = angle;\n slotSector.angle = slotAngle;\n\n if (child.sector) {\n slotSector.radius = child.sector.radius;\n }\n\n child.reflow(slotSector);\n child.sector = slotSector;\n\n angle += slotAngle + (slotAngle * spacing);\n });\n }\n });\n\n setDefaultOptions(RadarClusterLayout, {\n gap: 1,\n spacing: 0\n });\n\n var RadarStackLayout = ChartElement.extend({\n reflow: function(sector) {\n var ref = this;\n var reverse = ref.options.reverse;\n var children = ref.children;\n var childrenCount = children.length;\n var first = reverse ? childrenCount - 1 : 0;\n var step = reverse ? -1 : 1;\n\n this.box = new Box();\n\n for (var i = first; i >= 0 && i < childrenCount; i += step) {\n var childSector = children[i].sector;\n childSector.startAngle = sector.startAngle;\n childSector.angle = sector.angle;\n }\n }\n });\n\n var RadarBarChart = BarChart.extend({\n pointType: function() {\n return RadarSegment;\n },\n\n clusterType: function() {\n return RadarClusterLayout;\n },\n\n stackType: function() {\n return RadarStackLayout;\n },\n\n categorySlot: function(categoryAxis, categoryIx) {\n return categoryAxis.getSlot(categoryIx);\n },\n\n pointSlot: function(categorySlot, valueSlot) {\n var slot = categorySlot.clone();\n var y = categorySlot.center.y;\n\n slot.radius = y - valueSlot.y1;\n slot.innerRadius = y - valueSlot.y2;\n\n return slot;\n },\n\n reflowPoint: function(point, pointSlot) {\n point.sector = pointSlot;\n point.reflow();\n },\n\n createAnimation: function() {\n this.options.animation.center = this.box.toRect().center();\n BarChart.fn.createAnimation.call(this);\n }\n });\n\n RadarBarChart.prototype.reflow = CategoricalChart.prototype.reflow;\n\n setDefaultOptions(RadarBarChart, {\n clip: false,\n limitPoints: false,\n animation: {\n type: \"pie\"\n }\n });\n\n var RadarPlotArea = PolarPlotAreaBase.extend({\n createPolarAxis: function() {\n var categoryAxis = new dataviz.RadarCategoryAxis(this.options.categoryAxis, this.chartService);\n\n this.polarAxis = categoryAxis;\n this.categoryAxis = categoryAxis;\n this.appendAxis(categoryAxis);\n this.aggregateCategories();\n this.createTrendlineSeries();\n this.createCategoryAxesLabels();\n },\n\n valueAxisOptions: function(defaults) {\n if (this._hasBarCharts) {\n deepExtend(defaults, {\n majorGridLines: { type: ARC },\n minorGridLines: { type: ARC }\n });\n }\n\n if (this._isStacked100) {\n deepExtend(defaults, {\n roundToMajorUnit: false,\n labels: { format: \"P0\" }\n });\n }\n\n return deepExtend(defaults, this.options.valueAxis);\n },\n\n aggregateCategories: function() {\n // No separate panes in radar charts\n CategoricalPlotArea.prototype.aggregateCategories.call(this, this.panes);\n },\n\n createCategoryAxesLabels: function() {\n CategoricalPlotArea.prototype.createCategoryAxesLabels.call(this, this.panes);\n },\n\n filterSeries: function(currentSeries) {\n // Not supported for radar charts\n return currentSeries;\n },\n\n trendlineFactory: function(options, series) {\n var trendline = CategoricalPlotArea.prototype.trendlineFactory.call(this, options, series);\n if (trendline) {\n trendline.type = RADAR_LINE;\n }\n\n return trendline;\n },\n\n createCharts: function() {\n var series = this.filterVisibleSeries(this.series);\n var pane = this.panes[0];\n\n this.createAreaChart(\n filterSeriesByType(series, [ RADAR_AREA ]),\n pane\n );\n\n this.createLineChart(\n filterSeriesByType(series, [ RADAR_LINE ]),\n pane\n );\n\n this.createBarChart(\n filterSeriesByType(series, [ RADAR_COLUMN ]),\n pane\n );\n },\n\n chartOptions: function(series) {\n var options = { series: series };\n var firstSeries = series[0];\n if (firstSeries) {\n var filteredSeries = this.filterVisibleSeries(series);\n var stack = firstSeries.stack;\n options.isStacked = stack && filteredSeries.length > 1;\n options.isStacked100 = stack && stack.type === \"100%\" && filteredSeries.length > 1;\n\n if (options.isStacked100) {\n this._isStacked100 = true;\n }\n }\n\n return options;\n },\n\n createAreaChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var areaChart = new RadarAreaChart(this, this.chartOptions(series));\n this.appendChart(areaChart, pane);\n },\n\n createLineChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var lineChart = new RadarLineChart(this, this.chartOptions(series));\n this.appendChart(lineChart, pane);\n },\n\n createBarChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var options = this.chartOptions(series);\n var filteredSeries = this.filterVisibleSeries(series);\n var anyStackedSeries = filteredSeries.some(function (s) { return s.stack; });\n var isStacked100 = filteredSeries.some(function (s) { return s.stack && s.stack.type === \"100%\"; });\n options.gap = firstSeries.gap;\n options.spacing = firstSeries.spacing;\n options.defaultStack = firstSeries.stack && filteredSeries.length > 1;\n options.isStacked = anyStackedSeries && filteredSeries.length > 1;\n options.isStacked100 = isStacked100 && filteredSeries.length > 1;\n\n var barChart = new RadarBarChart(this, options);\n this.appendChart(barChart, pane);\n\n this._hasBarCharts = true;\n },\n\n seriesCategoryAxis: function() {\n return this.categoryAxis;\n },\n\n _dispatchEvent: function(chart, e, eventType) {\n var coords = chart._eventCoordinates(e);\n var point = new Point(coords.x, coords.y);\n var category = this.categoryAxis.getCategory(point);\n var value = this.valueAxis.getValue(point);\n\n if (category !== null && value !== null) {\n chart.trigger(eventType, {\n element: eventElement(e),\n category: category,\n value: value\n });\n }\n },\n\n createCrosshairs: function() {},\n\n _pointsByVertical: function(basePoint) {\n return PolarPlotAreaBase.fn._pointsByVertical.call(this, basePoint).sort(this._getSeriesCompareFn());\n },\n\n _getSeriesCompareFn: function() {\n return function (a, b) { return b.value - a.value; };\n }\n });\n\n deepExtend(RadarPlotArea.prototype, PlotAreaEventsMixin, {\n appendChart: CategoricalPlotArea.prototype.appendChart,\n aggregateSeries: CategoricalPlotArea.prototype.aggregateSeries,\n seriesSourcePoints: CategoricalPlotArea.prototype.seriesSourcePoints,\n seriesValues: CategoricalPlotArea.prototype.seriesValues\n });\n\n setDefaultOptions(RadarPlotArea, {\n categoryAxis: {\n categories: []\n },\n valueAxis: {}\n });\n\n var FunnelSegment = ChartElement.extend({\n init: function(value, options, segmentOptions) {\n ChartElement.fn.init.call(this, options);\n\n this.value = value;\n this.options.index = segmentOptions.index;\n },\n\n getLabelText: function(options) {\n var labelTemplate = getTemplate(options);\n\n if (labelTemplate) {\n return labelTemplate(this.pointData());\n } else if (options.format) {\n return this.formatValue(options.format);\n }\n\n return this.value;\n },\n\n reflow: function(chartBox) {\n var points = this.points;\n var label = this.children[0];\n var x1 = Math.min(points[0].x, points[3].x);\n var x2 = Math.max(points[1].x, points[2].x);\n\n this.box = new Box(x1, points[0].y, x2, points[2].y);\n\n if (label) {\n label.reflow(new Box(chartBox.x1, points[0].y, chartBox.x2, points[2].y));\n }\n },\n\n createVisual: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var visual;\n\n ChartElement.fn.createVisual.call(this);\n\n this.addAccessibilityAttributesToVisual();\n\n if (options.visual) {\n visual = options.visual({\n category: this.category,\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n percentage: this.percentage,\n points: this.points,\n options: options,\n sender: this.getSender(),\n createVisual: function () { return this$1$1.createPath(); }\n });\n } else {\n visual = this.createPath();\n }\n\n if (visual) {\n this.visual.append(visual);\n }\n },\n\n createPath: function() {\n var options = this.options;\n var border = options.border;\n var path = Path.fromPoints(this.points, {\n fill: {\n color: options.color,\n opacity: options.opacity\n },\n stroke: {\n color: border.color,\n opacity: border.opacity,\n width: border.width\n }\n }).close();\n\n return path;\n },\n\n createHighlight: function(style) {\n return Path.fromPoints(this.points, style);\n },\n\n highlightVisual: function() {\n return this.visual.children[0];\n },\n\n highlightVisualArgs: function() {\n var path = Path.fromPoints(this.points).close();\n\n return {\n options: this.options,\n path: path\n };\n },\n\n createFocusHighlight: function(style) {\n var borderWidth = this.options.accessibility.highlight.border.width;\n var result = Path.fromPoints(this.points, deepExtend({}, style, {\n stroke: {\n width: borderWidth * 2\n }\n })).close();\n\n var clipPath = new MultiPath();\n\n clipPath.paths.push(Path.fromRect(this.box.clone().pad(borderWidth).toRect()));\n clipPath.paths.push(Path.fromPoints(this.points));\n\n result.clip(clipPath);\n\n return result;\n },\n\n tooltipAnchor: function() {\n var box = this.box;\n return {\n point: new Point(box.center().x, box.y1),\n align: {\n horizontal: \"center\",\n vertical: \"top\"\n }\n };\n },\n\n formatValue: function(format) {\n var point = this;\n return point.owner.formatPointValue(point, format);\n },\n\n pointData: function() {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n series: this.series,\n percentage: this.percentage\n };\n },\n\n getIndex: function() {\n return this.index;\n }\n });\n\n setDefaultOptions(FunnelSegment, {\n color: WHITE,\n border: {\n width: 1\n },\n labels: {\n format: \"\"\n },\n accessibility: {\n role: CHART_POINT_ROLE,\n className: CHART_POINT_CLASSNAME,\n ariaRoleDescription: CHART_POINT_ROLE_DESCRIPTION\n }\n });\n\n deepExtend(FunnelSegment.prototype, PointEventsMixin);\n deepExtend(FunnelSegment.prototype, AccessibilityAttributesMixin);\n\n var FunnelChart = ChartElement.extend({\n init: function(plotArea, options) {\n ChartElement.fn.init.call(this, options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this.points = [];\n this.labels = [];\n this.legendItems = [];\n this.render();\n },\n\n formatPointValue: function(point, format) {\n return this.plotArea.chartService.format.auto(format,point.value);\n },\n\n render: function() {\n var this$1$1 = this;\n\n var seriesIx = 0;\n var ref = this;\n var options = ref.options;\n var seriesColors = ref.plotArea.options.seriesColors; if (seriesColors === void 0) { seriesColors = []; }\n var series = options.series[seriesIx];\n var data = series.data;\n\n if (!data) {\n return;\n }\n\n var ref$1 = bindSegments(series);\n var total = ref$1.total;\n var points = ref$1.points;\n\n for (var i = 0; i < points.length; i++) {\n var pointData = points[i];\n\n if (!pointData) {\n continue;\n }\n\n var fields = pointData.fields;\n\n if (!isFunction(series.color)) {\n series.color = fields.color || seriesColors[i % seriesColors.length];\n }\n\n fields = deepExtend({\n index: i,\n owner: this$1$1,\n series: series,\n seriesIx: seriesIx,\n dataItem: data[i],\n percentage: pointData.value / total\n }, fields, { visible: pointData.visible });\n\n var value = pointData.valueFields.value;\n var segment = this$1$1.createSegment(value, fields);\n var label = this$1$1.createLabel(value, fields);\n\n if (segment && label) {\n segment.append(label);\n }\n }\n },\n\n evalSegmentOptions: function(options, value, fields) {\n var series = fields.series;\n\n evalOptions(options, {\n value: value,\n series: series,\n dataItem: fields.dataItem,\n index: fields.index\n }, { defaults: series._defaults, excluded: [\n \"data\", \"content\", \"template\", \"toggle\", \"visual\",\n \"ariaTemplate\", \"ariaContent\"\n ] });\n },\n\n createSegment: function(value, fields) {\n var seriesOptions = deepExtend({}, fields.series);\n this.evalSegmentOptions(seriesOptions, value, fields);\n\n this.createLegendItem(value, seriesOptions, fields);\n\n if (fields.visible !== false) {\n\n var segment = new FunnelSegment(value, seriesOptions, fields);\n $.extend(segment, fields);\n\n this.append(segment);\n this.points.push(segment);\n\n return segment;\n }\n },\n\n createLabel: function(value, fields) {\n var series = fields.series;\n var dataItem = fields.dataItem;\n var labels = deepExtend({}, this.options.labels, series.labels);\n var text = value;\n\n if (labels.visible) {\n var labelTemplate = getTemplate(labels);\n var data = {\n dataItem: dataItem,\n value: value,\n percentage: fields.percentage,\n category: fields.category,\n series: series\n };\n if (labelTemplate) {\n text = labelTemplate(data);\n } else if (labels.format) {\n text = this.chartService.format.auto(labels.format, text);\n }\n\n if (!labels.color) {\n labels.color = autoTextColor(series.color);\n if (!labels.background) {\n labels.background = series.color;\n }\n }\n\n this.evalSegmentOptions(labels, value, fields);\n var textBox = new TextBox(text, deepExtend({\n vAlign: labels.position\n }, labels), data);\n\n this.labels.push(textBox);\n\n return textBox;\n }\n },\n\n labelPadding: function() {\n var labels = this.labels;\n var padding = { left: 0, right: 0 };\n\n for (var i = 0; i < labels.length; i++) {\n var label = labels[i];\n var align = label.options.align;\n if (align !== CENTER) {\n var width = labels[i].box.width();\n\n if (align === LEFT) {\n padding.left = Math.max(padding.left, width);\n } else {\n padding.right = Math.max(padding.right, width);\n }\n }\n }\n\n return padding;\n },\n\n dynamicSlopeReflow: function(box, width, totalHeight) {\n var ref = this;\n var options = ref.options;\n var segments = ref.points;\n var count = segments.length;\n var firstSegment = segments[0];\n var maxSegment = firstSegment;\n\n for (var idx = 0; idx < segments.length; idx++) {\n if (segments[idx].percentage > maxSegment.percentage) {\n maxSegment = segments[idx];\n }\n }\n\n var lastUpperSide = (firstSegment.percentage / maxSegment.percentage) * width;\n var previousOffset = (width - lastUpperSide) / 2;\n var previousHeight = 0;\n\n for (var idx$1 = 0; idx$1 < count; idx$1++) {\n var percentage = segments[idx$1].percentage;\n var nextSegment = segments[idx$1 + 1];\n var nextPercentage = (nextSegment ? nextSegment.percentage : percentage);\n var points = segments[idx$1].points = [];\n var height = (options.dynamicHeight) ? (totalHeight * percentage) : (totalHeight / count);\n var offset = (void 0);\n\n if (!percentage) {\n offset = nextPercentage ? 0 : width / 2;\n } else {\n offset = (width - lastUpperSide * (nextPercentage / percentage)) / 2;\n }\n\n offset = limitValue(offset, 0, width);\n\n points.push(new GeometryPoint(box.x1 + previousOffset, box.y1 + previousHeight));\n points.push(new GeometryPoint(box.x1 + width - previousOffset, box.y1 + previousHeight));\n points.push(new GeometryPoint(box.x1 + width - offset, box.y1 + height + previousHeight));\n points.push(new GeometryPoint(box.x1 + offset, box.y1 + height + previousHeight));\n\n previousOffset = offset;\n previousHeight += height + options.segmentSpacing;\n lastUpperSide = limitValue(width - 2 * offset, 0, width);\n }\n },\n\n constantSlopeReflow: function(box, width, totalHeight) {\n var ref = this;\n var options = ref.options;\n var segments = ref.points;\n var count = segments.length;\n var decreasingWidth = options.neckRatio <= 1;\n var neckRatio = decreasingWidth ? options.neckRatio * width : width;\n var previousOffset = decreasingWidth ? 0 : (width - width / options.neckRatio) / 2;\n var topMostWidth = decreasingWidth ? width : width - previousOffset * 2;\n var finalNarrow = (topMostWidth - neckRatio) / 2;\n var previousHeight = 0;\n\n for (var idx = 0; idx < count; idx++) {\n var points = segments[idx].points = [];\n var percentage = segments[idx].percentage;\n var offset = (options.dynamicHeight) ? (finalNarrow * percentage) : (finalNarrow / count);\n var height = (options.dynamicHeight) ? (totalHeight * percentage) : (totalHeight / count);\n\n points.push(new GeometryPoint(box.x1 + previousOffset, box.y1 + previousHeight));\n points.push(new GeometryPoint(box.x1 + width - previousOffset, box.y1 + previousHeight));\n points.push(new GeometryPoint(box.x1 + width - previousOffset - offset, box.y1 + height + previousHeight));\n points.push(new GeometryPoint(box.x1 + previousOffset + offset,box.y1 + height + previousHeight));\n previousOffset += offset;\n previousHeight += height + options.segmentSpacing;\n }\n },\n\n reflow: function(chartBox) {\n var points = this.points;\n var count = points.length;\n\n if (!count) {\n return;\n }\n\n var options = this.options;\n var box = chartBox.clone().unpad(this.labelPadding());\n var totalHeight = box.height() - options.segmentSpacing * (count - 1);\n var width = box.width();\n\n if (options.dynamicSlope) {\n this.dynamicSlopeReflow(box, width, totalHeight);\n } else {\n this.constantSlopeReflow(box, width, totalHeight);\n }\n\n for (var idx = 0; idx < count; idx++) {\n points[idx].reflow(chartBox);\n }\n }\n });\n\n setDefaultOptions(FunnelChart, {\n neckRatio: 0.3,\n width: 300,\n dynamicSlope: false,\n dynamicHeight: true,\n segmentSpacing: 0,\n labels: {\n visible: false,\n align: CENTER,\n position: CENTER,\n zIndex: 1\n }\n });\n\n deepExtend(FunnelChart.prototype, PieChartMixin);\n\n var MAX_NECK_RATIO = 1e6;\n\n var PyramidChart = FunnelChart.extend({\n init: function(plotArea, options) {\n options.dynamicSlope = false;\n options.neckRatio = MAX_NECK_RATIO;\n\n FunnelChart.fn.init.call(this, plotArea, options);\n }\n });\n\n var FunnelPlotArea = PlotAreaBase.extend({\n render: function() {\n this.createChart(FunnelChart, filterSeriesByType(this.series, [ FUNNEL ]));\n this.createChart(PyramidChart, filterSeriesByType(this.series, [ PYRAMID ]));\n },\n\n createChart: function(chartType, series) {\n var firstSeries = series[0];\n if (!firstSeries) {\n return;\n }\n\n var chart = new chartType(this, {\n series: series,\n legend: this.options.legend,\n neckRatio: firstSeries.neckRatio,\n dynamicHeight: firstSeries.dynamicHeight,\n dynamicSlope: firstSeries.dynamicSlope,\n segmentSpacing: firstSeries.segmentSpacing,\n highlight: firstSeries.highlight\n });\n\n this.appendChart(chart);\n },\n\n appendChart: function(chart, pane) {\n PlotAreaBase.fn.appendChart.call(this, chart, pane);\n append(this.options.legend.data, chart.legendItems);\n },\n\n _pointsByVertical: function(basePoint) {\n return this.pointsBySeriesIndex(basePoint.series.index);\n },\n\n getPointToTheRight: function(point) {\n return this.getPointBelow(point);\n },\n\n getPointToTheLeft: function(point) {\n return this.getPointAbove(point);\n }\n });\n\n // Linear color scale from the given color to white minus minimum lightness offset.\n var colorScale = function (color, minLightnessOffset) {\n if (minLightnessOffset === void 0) { minLightnessOffset = 0.05; }\n\n var baseColor = kendo.parseColor(color);\n var offset = 1 - minLightnessOffset;\n\n return function (value) {\n var hsl = baseColor.toHSL();\n var range = 100 - hsl.l;\n var point = offset - value;\n hsl.l += Math.min(point * range, range);\n\n return hsl.toCss();\n };\n };\n\n var HeatmapPoint = ChartElement.extend({\n init: function(value, options) {\n ChartElement.fn.init.call(this);\n\n this.options = options;\n this.color = options.color || WHITE;\n this.value = value;\n },\n\n render: function() {\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n this.createMarker();\n this.createLabel();\n this.createNote();\n },\n\n createLabel: function() {\n var options = this.options;\n var labels = options.labels;\n\n if (labels.visible) {\n this.label = this.createLabelElement(labels);\n this.append(this.label);\n }\n },\n\n createLabelElement: function(options) {\n var labelColor = options.color;\n\n if (!labelColor) {\n labelColor = autoTextColor(this.color);\n }\n\n return new TextBox(this.getLabelText(options),\n deepExtend({\n align: CENTER,\n vAlign: CENTER,\n margin: {\n left: 5,\n right: 5\n },\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex)\n },\n options, {\n color: labelColor\n }),\n this.pointData()\n );\n },\n\n getLabelText: function(options) {\n var labelTemplate = getTemplate(options);\n\n if (labelTemplate) {\n return labelTemplate(this.pointData());\n }\n\n return this.formatValue(options.format);\n },\n\n formatValue: function(format) {\n return this.owner.formatPointValue(this, format);\n },\n\n reflow: function(targetBox) {\n this.render();\n\n var label = this.label;\n\n this.box = targetBox;\n\n if (label) {\n label.reflow(this.markerBox());\n }\n\n if (this.note) {\n this.note.reflow(targetBox);\n }\n\n this.marker.reflow(this.markerBox());\n },\n\n createVisual: function() {\n ChartElement.fn.createVisual.call(this);\n\n this.addAccessibilityAttributesToVisual();\n },\n\n markerBox: function() {\n var options = this.options;\n var markers = options.markers;\n var border = markers.border;\n var rect = this.box.toRect();\n var type = valueOrDefault(markers.type, 'rect');\n var isRoundRect = type === datavizConstants.ROUNDED_RECT;\n var borderWidth = valueOrDefault(border.width, isRoundRect ? 1 : 0);\n var halfBorderWidth = Math.round(borderWidth / 2);\n\n if (markers.size) {\n var center = rect.center();\n rect.size.width = rect.size.height = markers.size;\n rect.origin.x = Math.round(center.x - rect.size.width / 2);\n rect.origin.y = Math.round(center.y - rect.size.height / 2);\n }\n\n rect.size.width -= borderWidth;\n rect.size.height -= borderWidth;\n rect.origin.y += halfBorderWidth + 0.5;\n rect.origin.x += halfBorderWidth + 0.5;\n\n return dataviz.rectToBox(rect);\n },\n\n markerBorder: function() {\n var options = this.options;\n var markers = options.markers;\n var border = markers.border;\n var opacity = valueOrDefault(border.opacity, options.opacity);\n\n return {\n color: border.color || this.color,\n width: border.width,\n opacity: opacity,\n dashType: border.dashType\n };\n },\n\n createMarker: function() {\n var options = this.options;\n var markerOptions = options.markers;\n var marker = new ShapeElement({\n type: valueOrDefault(markerOptions.type, 'rect'),\n width: markerOptions.size,\n height: markerOptions.size,\n rotation: markerOptions.rotation,\n background: this.color,\n border: this.markerBorder(),\n borderRadius: markerOptions.borderRadius,\n opacity: this.series.opacity || options.opacity,\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex),\n animation: options.animation,\n visual: options.visual\n }, {\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n category: this.category\n });\n\n this.marker = marker;\n this.append(marker);\n },\n\n createHighlight: function(style) {\n var options = this.options;\n var markerOptions = this.options.highlight.markers || this.options.markers;\n\n var highlight = new ShapeElement({\n type: valueOrDefault(markerOptions.type, 'rect'),\n width: markerOptions.size,\n height: markerOptions.size,\n rotation: markerOptions.rotation,\n background: markerOptions.color || this.color,\n border: this.markerBorder(),\n borderRadius: markerOptions.borderRadius,\n opacity: this.series.opacity || options.opacity,\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex)\n });\n\n highlight.reflow(this.markerBox());\n var visual = highlight.getElement();\n\n visual.options.fill = style.fill;\n visual.options.stroke = style.stroke;\n\n return visual;\n },\n\n highlightVisual: function() {\n return this.rectVisual;\n },\n\n highlightVisualArgs: function() {\n return {\n options: this.options,\n rect: this.box.toRect(),\n visual: this.rectVisual\n };\n },\n\n createFocusHighlight: function() {\n var markerOptions = this.options.markers;\n var highlightOptions = this.options.accessibility.highlight;\n\n var highlight = new ShapeElement({\n type: valueOrDefault(markerOptions.type, 'rect'),\n width: markerOptions.size,\n height: markerOptions.size,\n rotation: markerOptions.rotation,\n background: highlightOptions.color,\n border: highlightOptions.border,\n borderRadius: markerOptions.borderRadius,\n padding: highlightOptions.border.width / 2,\n zIndex: highlightOptions.zIndex\n });\n\n highlight.reflow(this.markerBox());\n\n return highlight.getElement();\n },\n\n tooltipAnchor: function() {\n var left = this.box.center().x;\n var top = this.box.y1 - TOOLTIP_OFFSET;\n\n return {\n point: new Point(left, top),\n align: {\n horizontal: CENTER,\n vertical: BOTTOM\n }\n };\n },\n\n overlapsBox: function(box) {\n return this.box.overlaps(box);\n },\n\n unclipElements: function() {\n /* noop, clip labels */\n },\n\n pointData: function() {\n return {\n x: this.value.x,\n y: this.value.y,\n value: this.value.value,\n dataItem: this.dataItem,\n series: this.series\n };\n }\n });\n\n deepExtend(HeatmapPoint.prototype, PointEventsMixin);\n deepExtend(HeatmapPoint.prototype, NoteMixin);\n deepExtend(HeatmapPoint.prototype, AccessibilityAttributesMixin);\n\n HeatmapPoint.prototype.defaults = {\n markers: {\n type: 'rect',\n borderRadius: 4,\n border: {\n color: 'transparent'\n }\n },\n padding: { top: 1 },\n labels: {\n visible: false,\n padding: 3\n },\n opacity: 1,\n notes: {\n label: {}\n },\n accessibility: {\n role: CHART_POINT_ROLE,\n className: CHART_POINT_CLASSNAME,\n ariaRoleDescription: CHART_POINT_ROLE_DESCRIPTION\n }\n };\n\n var HeatmapChart = ChartElement.extend({\n init: function(plotArea, options) {\n ChartElement.fn.init.call(this, options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this._initFields();\n\n this.render();\n },\n\n _initFields: function() {\n this.points = [];\n this.seriesOptions = [];\n this.valueRange = { min: MAX_VALUE, max: MIN_VALUE };\n this._evalSeries = [];\n },\n\n render: function() {\n this.setRange();\n this.traverseDataPoints(this.addValue.bind(this));\n },\n\n setRange: function() {\n var this$1$1 = this;\n\n var ref = this;\n var series = ref.options.series;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n\n for (var pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n var ref$1 = this$1$1.plotArea.bindPoint(currentSeries, pointIx);\n var valueFields = ref$1.valueFields;\n if (defined(valueFields.value) && valueFields.value !== null) {\n this$1$1.valueRange.min = Math.min(this$1$1.valueRange.min, valueFields.value);\n this$1$1.valueRange.max = Math.max(this$1$1.valueRange.max, valueFields.value);\n }\n }\n }\n },\n\n addValue: function(value, fields) {\n var point;\n if (value && defined(value.value) && value.value !== null) {\n point = this.createPoint(value, fields);\n if (point) {\n $.extend(point, fields);\n }\n }\n\n this.points.push(point);\n },\n\n evalPointOptions: function(options, value, fields) {\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var state = {\n defaults: series._defaults,\n excluded: [\n \"data\", \"tooltip\", \"content\", \"template\",\n \"visual\", \"toggle\", \"drilldownSeriesFactory\",\n \"ariaTemplate\", \"ariaContent\"\n ]\n };\n\n var doEval = this._evalSeries[seriesIx];\n if (!defined(doEval)) {\n this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n }\n\n var pointOptions = options;\n if (doEval) {\n pointOptions = deepExtend({}, options);\n evalOptions(pointOptions, {\n value: value,\n series: series,\n dataItem: fields.dataItem,\n min: this.valueRange.min,\n max: this.valueRange.max\n }, state);\n }\n\n return pointOptions;\n },\n\n pointType: function() {\n return HeatmapPoint;\n },\n\n pointOptions: function(series, seriesIx) {\n var options = this.seriesOptions[seriesIx];\n if (!options) {\n var defaults = this.pointType().prototype.defaults;\n this.seriesOptions[seriesIx] = options = deepExtend({}, defaults, {\n markers: {\n opacity: series.opacity\n },\n tooltip: {\n format: this.options.tooltip.format\n },\n labels: {\n format: this.options.labels.format\n }\n }, series);\n }\n\n return options;\n },\n\n createPoint: function(value, fields) {\n var series = fields.series;\n var pointOptions = this.pointOptions(series, fields.seriesIx);\n var color = fields.color || series.color;\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n if (isFunction(series.color)) {\n color = pointOptions.color;\n } else if (this.valueRange.max !== 0) {\n var scale = colorScale(color);\n color = scale(value.value / this.valueRange.max);\n }\n\n var point = new HeatmapPoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n },\n\n seriesAxes: function(series) {\n var xAxisName = series.xAxis;\n var yAxisName = series.yAxis;\n var plotArea = this.plotArea;\n var xAxis = xAxisName ? plotArea.namedXAxes[xAxisName] : plotArea.axisX;\n var yAxis = yAxisName ? plotArea.namedYAxes[yAxisName] : plotArea.axisY;\n\n if (!xAxis) {\n throw new Error(\"Unable to locate X axis with name \" + xAxisName);\n }\n\n if (!yAxis) {\n throw new Error(\"Unable to locate Y axis with name \" + yAxisName);\n }\n\n return { xAxis: xAxis, yAxis: yAxis };\n },\n\n reflow: function(targetBox) {\n var this$1$1 = this;\n\n var chartPoints = this.points;\n var limit = !this.options.clip;\n var pointIx = 0;\n\n this.traverseDataPoints(function (value, fields) {\n var point = chartPoints[pointIx++];\n var ref = this$1$1.seriesAxes(fields.series);\n var xAxis = ref.xAxis;\n var yAxis = ref.yAxis;\n var indexX = xAxis.categoryIndex(value.x);\n var indexY = yAxis.categoryIndex(value.y);\n var slotX = xAxis.getSlot(indexX, indexX, limit);\n var slotY = yAxis.getSlot(indexY, indexY, limit);\n\n if (point) {\n if (slotX && slotY) {\n var pointSlot = this$1$1.pointSlot(slotX, slotY);\n point.reflow(pointSlot);\n } else {\n point.visible = false;\n }\n }\n });\n\n this.box = targetBox;\n },\n\n pointSlot: function(slotX, slotY) {\n return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n },\n\n traverseDataPoints: function(callback) {\n var this$1$1 = this;\n\n var ref = this;\n var series = ref.options.series;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var ref$1 = this$1$1.seriesAxes(currentSeries);\n var xAxis = ref$1.xAxis;\n var yAxis = ref$1.yAxis;\n var xRange = xAxis.currentRangeIndices();\n var yRange = yAxis.currentRangeIndices();\n\n for (var pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n var ref$2 = this$1$1.plotArea.bindPoint(currentSeries, pointIx);\n var value = ref$2.valueFields;\n var fields = ref$2.fields;\n var xIndex = xAxis.totalIndex(value.x);\n var yIndex = yAxis.totalIndex(value.y);\n var xIn = xRange.min <= xIndex && xIndex <= xRange.max;\n var yIn = yRange.min <= yIndex && yIndex <= yRange.max;\n\n if (xIn && yIn) {\n callback(value, deepExtend({\n pointIx: pointIx,\n series: currentSeries,\n seriesIx: seriesIx,\n dataItem: currentSeries.data[pointIx],\n owner: this$1$1\n }, fields));\n }\n }\n }\n },\n\n formatPointValue: function(point, format) {\n var value = point.value;\n return this.chartService.format.auto(format, value.x, value.y, value.value);\n },\n\n animationPoints: function() {\n var points = this.points;\n var result = [];\n for (var idx = 0; idx < points.length; idx++) {\n result.push((points[idx] || {}).marker);\n }\n return result;\n }\n });\n setDefaultOptions(HeatmapChart, {\n series: [],\n tooltip: {\n format: \"{0}, {1}: {2}\"\n },\n labels: {\n format: \"{2}\"\n },\n clip: true\n });\n\n var HeatmapPlotArea = PlotAreaBase.extend({\n initFields: function() {\n this.namedXAxes = {};\n this.namedYAxes = {};\n },\n\n render: function(panes) {\n if (panes === void 0) { panes = this.panes; }\n\n this.bindCategories();\n this.createAxes(panes);\n this.createCharts(panes);\n this.createAxisLabels();\n },\n\n bindCategories: function() {\n var this$1$1 = this;\n\n var series = this.srcSeries || this.series;\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n var data = currentSeries.data || [];\n var ref = this$1$1.seriesAxes(currentSeries);\n var xAxis = ref.xAxis;\n var yAxis = ref.yAxis;\n\n var xCategories = dataviz.createHashSet(xAxis.categories || []);\n var yCategories = dataviz.createHashSet(yAxis.categories || []);\n\n for (var pointIndex = 0; pointIndex < data.length; pointIndex++) {\n var ref$1 = SeriesBinder.current.bindPoint(currentSeries, pointIndex).valueFields;\n var x = ref$1.x;\n var y = ref$1.y;\n\n if (!xCategories.has(x)) {\n xCategories.add(x);\n }\n\n if (!yCategories.has(y)) {\n yCategories.add(y);\n }\n }\n\n xAxis.categories = xCategories.values();\n yAxis.categories = yCategories.values();\n }\n },\n\n createCharts: function(panes) {\n var this$1$1 = this;\n\n var seriesByPane = this.groupSeriesByPane();\n\n for (var i = 0; i < panes.length; i++) {\n var pane = panes[i];\n var paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n this$1$1.addToLegend(paneSeries);\n var filteredSeries = this$1$1.filterVisibleSeries(paneSeries);\n\n if (!filteredSeries) {\n continue;\n }\n\n this$1$1.createHeatmapChart(\n filterSeriesByType(filteredSeries, [ HEATMAP ]),\n pane\n );\n }\n },\n\n createHeatmapChart: function(series, pane) {\n var chart = new HeatmapChart(this, {\n series: series\n });\n\n this.appendChart(chart, pane);\n },\n\n seriesPaneName: function(series) {\n var options = this.options;\n var xAxisName = series.xAxis;\n var xAxisOptions = [].concat(options.xAxis);\n var xAxis = grep(xAxisOptions, function(a) { return a.name === xAxisName; })[0];\n var yAxisName = series.yAxis;\n var yAxisOptions = [].concat(options.yAxis);\n var yAxis = grep(yAxisOptions, function(a) { return a.name === yAxisName; })[0];\n var panes = options.panes || [ {} ];\n var defaultPaneName = panes[0].name || \"default\";\n var paneName = (xAxis || {}).pane || (yAxis || {}).pane || defaultPaneName;\n\n return paneName;\n },\n\n seriesAxes: function(series) {\n var xAxis;\n var yAxis;\n\n var options = this.options;\n\n var xAxisOptions = [].concat(options.xAxis);\n var xAxisName = series.xAxis;\n if (xAxisName) {\n xAxis = xAxisOptions.find(function (axis) { return axis.name === xAxisName; });\n } else {\n xAxis = xAxisOptions[0];\n }\n\n var yAxisOptions = [].concat(options.yAxis);\n var yAxisName = series.yAxis;\n if (yAxisName) {\n yAxis = yAxisOptions.find(function (axis) { return axis.name === yAxisName; });\n } else {\n yAxis = yAxisOptions[0];\n }\n\n if (!xAxis) {\n throw new Error(\"Unable to locate X axis with name \" + xAxisName);\n }\n\n if (!yAxis) {\n throw new Error(\"Unable to locate Y axis with name \" + yAxisName);\n }\n\n return { xAxis: xAxis, yAxis: yAxis };\n },\n\n createAxisLabels: function() {\n var axes = this.axes;\n for (var i = 0; i < axes.length; i++) {\n axes[i].createLabels();\n }\n },\n\n createXYAxis: function(options, vertical, axisIndex) {\n var axisName = options.name;\n var namedAxes = vertical ? this.namedYAxes : this.namedXAxes;\n var axisOptions = $.extend({\n axisCrossingValue: 0\n }, options, {\n vertical: vertical,\n reverse: (vertical || this.chartService.rtl) ? !options.reverse : options.reverse,\n justified: false\n });\n var firstCategory = axisOptions.categories ? axisOptions.categories[0] : null;\n var typeSamples = [ axisOptions.min, axisOptions.max, firstCategory ];\n var series = this.series;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var seriesAxisName = currentSeries[vertical ? \"yAxis\" : \"xAxis\"];\n if ((seriesAxisName === axisOptions.name) || (axisIndex === 0 && !seriesAxisName)) {\n var firstPointValue = SeriesBinder.current.bindPoint(currentSeries, 0).valueFields;\n typeSamples.push(firstPointValue[vertical ? \"y\" : \"x\"]);\n\n break;\n }\n }\n\n var inferredDate;\n\n for (var i = 0; i < typeSamples.length; i++) {\n if (typeSamples[i] instanceof Date) {\n inferredDate = true;\n break;\n }\n }\n\n var axisType;\n if (equalsIgnoreCase(axisOptions.type, DATE) || (!axisOptions.type && inferredDate)) {\n axisType = dataviz.DateCategoryAxis;\n } else {\n axisType = CategoryAxis;\n }\n\n var axis = new axisType(axisOptions, this.chartService);\n axis.axisIndex = axisIndex;\n\n if (axisName) {\n if (namedAxes[axisName]) {\n throw new Error(((vertical ? \"Y\" : \"X\") + \" axis with name \" + axisName + \" is already defined\"));\n }\n namedAxes[axisName] = axis;\n }\n\n this.appendAxis(axis);\n axis.indexCategories();\n\n return axis;\n },\n\n createAxes: function(panes) {\n var this$1$1 = this;\n\n var options = this.options;\n var xAxesOptions = [].concat(options.xAxis);\n var xAxes = [];\n var yAxesOptions = [].concat(options.yAxis);\n var yAxes = [];\n\n for (var idx = 0; idx < xAxesOptions.length; idx++) {\n var axisPane = this$1$1.findPane(xAxesOptions[idx].pane);\n if (inArray(axisPane, panes)) {\n xAxes.push(this$1$1.createXYAxis(xAxesOptions[idx], false, idx));\n }\n }\n\n for (var idx$1 = 0; idx$1 < yAxesOptions.length; idx$1++) {\n var axisPane$1 = this$1$1.findPane(yAxesOptions[idx$1].pane);\n if (inArray(axisPane$1, panes)) {\n yAxes.push(this$1$1.createXYAxis(yAxesOptions[idx$1], true, idx$1));\n }\n }\n\n this.axisX = this.axisX || xAxes[0];\n this.axisY = this.axisY || yAxes[0];\n },\n\n removeAxis: function(axis) {\n var axisName = axis.options.name;\n\n PlotAreaBase.fn.removeAxis.call(this, axis);\n\n if (axis.options.vertical) {\n delete this.namedYAxes[axisName];\n } else {\n delete this.namedXAxes[axisName];\n }\n\n if (axis === this.axisX) {\n delete this.axisX;\n }\n\n if (axis === this.axisY) {\n delete this.axisY;\n }\n },\n\n _dispatchEvent: function(chart, e, eventType) {\n var coords = chart._eventCoordinates(e);\n var point = new Point(coords.x, coords.y);\n var allAxes = this.axes;\n var length = allAxes.length;\n var xValues = [];\n var yValues = [];\n\n for (var i = 0; i < length; i++) {\n var axis = allAxes[i];\n var values = axis.options.vertical ? yValues : xValues;\n appendIfNotNull(values, axis.getCategory(point));\n }\n\n if (xValues.length > 0 && yValues.length > 0) {\n chart.trigger(eventType, {\n element: eventElement(e),\n originalEvent: e,\n x: singleItemOrArray(xValues),\n y: singleItemOrArray(yValues)\n });\n }\n },\n\n updateAxisOptions: function(axis, options) {\n var vertical = axis.options.vertical;\n var axes = this.groupAxes(this.panes);\n var index = (vertical ? axes.y : axes.x).indexOf(axis);\n\n updateAxisOptions$2(this.options, index, vertical, options);\n updateAxisOptions$2(this.originalOptions, index, vertical, options);\n },\n\n crosshairOptions: function(axis) {\n // Stack the crosshair above the series points.\n return $.extend({}, axis.options.crosshair, { zIndex: 0 });\n },\n\n _pointsByVertical: function(basePoint, offset) {\n var this$1$1 = this;\n if (offset === void 0) { offset = 0; }\n\n var normalizedOffset = this.axisX.options.reverse ? offset * -1 : offset;\n var axisXItems = this.axisX.children;\n var xIndex = this._getPointAxisXIndex(basePoint) + normalizedOffset;\n\n xIndex = cycleIndex(xIndex, axisXItems.length);\n var targetXValue = axisXItems[xIndex].value;\n\n var points = this\n .filterPoints(function (point) { return compareValues(point.pointData().x, targetXValue); })\n .sort(function (a, b) { return this$1$1._getPointAxisYIndex(a) - this$1$1._getPointAxisYIndex(b); });\n\n if (this.axisY.options.reverse) {\n return points.reverse();\n }\n\n return points;\n },\n\n _pointsByHorizontal: function(basePoint, offset) {\n var this$1$1 = this;\n if (offset === void 0) { offset = 0; }\n\n var normalizedOffset = this.axisY.options.reverse ? offset * -1 : offset;\n var axisYItems = this.axisY.children;\n var yIndex = this._getPointAxisYIndex(basePoint) + normalizedOffset;\n\n yIndex = cycleIndex(yIndex, axisYItems.length);\n var targetYValue = axisYItems[yIndex].value;\n\n var points = this\n .filterPoints(function (point) { return compareValues(point.pointData().y, targetYValue); })\n .sort(function (a, b) { return this$1$1._getPointAxisXIndex(a) - this$1$1._getPointAxisXIndex(b); });\n\n if (this.axisX.options.reverse) {\n return points.reverse();\n }\n\n return points;\n },\n\n _getPointAxisXIndex: function(point) {\n return this._getPointAxisIndex(this.axisX, point.pointData().x);\n },\n\n _getPointAxisYIndex: function(point) {\n return this._getPointAxisIndex(this.axisY, point.pointData().y);\n },\n\n _getPointAxisIndex: function(axis, pointValue) {\n return axis.children.findIndex(function (axisItem) { return compareValues(pointValue, axisItem.value); });\n }\n });\n\n function compareValues(a, b) {\n if (a instanceof Date && b instanceof Date) {\n return dataviz.dateEquals(a, b);\n }\n\n return a === b;\n }\n\n function updateAxisOptions$2(targetOptions, axisIndex, vertical, options) {\n var axisOptions = ([].concat(vertical ? targetOptions.yAxis : targetOptions.xAxis))[axisIndex];\n deepExtend(axisOptions, options);\n }\n\n setDefaultOptions(HeatmapPlotArea, {\n xAxis: {},\n yAxis: {}\n });\n\n deepExtend(HeatmapPlotArea.prototype, PlotAreaEventsMixin);\n\n var COLOR = \"color\";\n var FIRST = \"first\";\n var FROM = \"from\";\n var MAX = \"max\";\n var MIN = \"min\";\n var NOTE_TEXT = \"noteText\";\n var SUMMARY_FIELD = \"summary\";\n var TO = \"to\";\n\n PlotAreaFactory.current.register(CategoricalPlotArea, [\n BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA,\n CANDLESTICK, OHLC, BULLET, VERTICAL_BULLET, BOX_PLOT, VERTICAL_BOX_PLOT,\n RANGE_COLUMN, RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL, RANGE_AREA, VERTICAL_RANGE_AREA ].concat( TRENDLINE_SERIES\n ));\n\n PlotAreaFactory.current.register(XYPlotArea, [\n SCATTER, SCATTER_LINE, BUBBLE ].concat( TRENDLINE_SERIES\n ));\n\n PlotAreaFactory.current.register(PiePlotArea, [ PIE ]);\n PlotAreaFactory.current.register(DonutPlotArea, [ DONUT ]);\n PlotAreaFactory.current.register(FunnelPlotArea, [ FUNNEL, PYRAMID ]);\n\n PlotAreaFactory.current.register(PolarPlotArea, [\n POLAR_AREA, POLAR_LINE, POLAR_SCATTER ].concat( TRENDLINE_SERIES\n ));\n\n PlotAreaFactory.current.register(RadarPlotArea, [\n RADAR_AREA, RADAR_COLUMN, RADAR_LINE ].concat( TRENDLINE_SERIES\n ));\n\n PlotAreaFactory.current.register(HeatmapPlotArea, [ HEATMAP ]);\n\n SeriesBinder.current.register(\n [ BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA ],\n [ VALUE ], [ CATEGORY, COLOR, NOTE_TEXT, ERROR_LOW_FIELD, ERROR_HIGH_FIELD, DRILLDOWN_FIELD ]\n );\n\n SeriesBinder.current.register(\n [ RANGE_COLUMN, RANGE_BAR, RANGE_AREA, VERTICAL_RANGE_AREA ],\n [ FROM, TO ], [ CATEGORY, COLOR, NOTE_TEXT, DRILLDOWN_FIELD ]\n );\n\n SeriesBinder.current.register(\n [ WATERFALL, HORIZONTAL_WATERFALL ],\n [ VALUE ], [ CATEGORY, COLOR, NOTE_TEXT, SUMMARY_FIELD, DRILLDOWN_FIELD ]\n );\n\n SeriesBinder.current.register([ POLAR_AREA, POLAR_LINE, POLAR_SCATTER ], [ X, Y ], [ COLOR, DRILLDOWN_FIELD ]);\n SeriesBinder.current.register([ RADAR_AREA, RADAR_COLUMN, RADAR_LINE ], [ VALUE ], [ CATEGORY, COLOR, DRILLDOWN_FIELD ]);\n\n SeriesBinder.current.register(\n [ FUNNEL, PYRAMID ],\n [ VALUE ], [ CATEGORY, COLOR, \"visibleInLegend\", \"visible\", DRILLDOWN_FIELD ]\n );\n\n DefaultAggregates.current.register(\n [ BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA, WATERFALL, HORIZONTAL_WATERFALL ],\n { value: MAX, color: FIRST, noteText: FIRST, errorLow: MIN, errorHigh: MAX }\n );\n\n DefaultAggregates.current.register(\n [ RANGE_COLUMN, RANGE_BAR, RANGE_AREA, VERTICAL_RANGE_AREA ],\n { from: MIN, to: MAX, color: FIRST, noteText: FIRST }\n );\n\n DefaultAggregates.current.register(\n [ RADAR_AREA, RADAR_COLUMN, RADAR_LINE ],\n { value: MAX, color: FIRST }\n );\n\n SeriesBinder.current.register(\n [ SCATTER, SCATTER_LINE, BUBBLE ],\n [ X, Y ], [ COLOR, NOTE_TEXT, X_ERROR_LOW_FIELD, X_ERROR_HIGH_FIELD, Y_ERROR_LOW_FIELD, Y_ERROR_HIGH_FIELD ]\n );\n\n SeriesBinder.current.register(\n [ BUBBLE ], [ X, Y, \"size\" ], [ COLOR, CATEGORY, NOTE_TEXT ]\n );\n\n SeriesBinder.current.register(\n [ HEATMAP ],\n [ X, Y, VALUE ], [ COLOR, NOTE_TEXT ]\n );\n\n SeriesBinder.current.register(\n [ CANDLESTICK, OHLC ],\n [ \"open\", \"high\", \"low\", \"close\" ], [ CATEGORY, COLOR, \"downColor\", NOTE_TEXT ]\n );\n\n DefaultAggregates.current.register(\n [ CANDLESTICK, OHLC ],\n { open: MAX, high: MAX, low: MIN, close: MAX,\n color: FIRST, downColor: FIRST, noteText: FIRST }\n );\n\n SeriesBinder.current.register(\n [ BOX_PLOT, VERTICAL_BOX_PLOT ],\n [ \"lower\", \"q1\", \"median\", \"q3\", \"upper\", \"mean\", \"outliers\" ], [ CATEGORY, COLOR, NOTE_TEXT, DRILLDOWN_FIELD ]\n );\n\n DefaultAggregates.current.register(\n [ BOX_PLOT, VERTICAL_BOX_PLOT ],\n { lower: MAX, q1: MAX, median: MAX, q3: MAX, upper: MAX, mean: MAX, outliers: FIRST,\n color: FIRST, noteText: FIRST }\n );\n\n SeriesBinder.current.register(\n [ BULLET, VERTICAL_BULLET ],\n [ \"current\", \"target\" ], [ CATEGORY, COLOR, \"visibleInLegend\", NOTE_TEXT, DRILLDOWN_FIELD ]\n );\n\n DefaultAggregates.current.register(\n [ BULLET, VERTICAL_BULLET ],\n { current: MAX, target: MAX, color: FIRST, noteText: FIRST }\n );\n\n SeriesBinder.current.register(\n [ PIE, DONUT ],\n [ VALUE ], [ CATEGORY, COLOR, \"explode\", \"visibleInLegend\", \"visible\", DRILLDOWN_FIELD ]\n );\n\n var AXIS_NAMES = [ CATEGORY, VALUE, X, Y ];\n\n var MOUSEDOWN = \"mousedown\";\n var MOUSEMOVE = \"mousemove\";\n var CONTEXTMENU = \"contextmenu\";\n var MOUSELEAVE = \"mouseleave\";\n var KEYDOWN = \"keydown\";\n var FOCUS = \"focus\";\n var BLUR = \"blur\";\n var MOUSEMOVE_DELAY = 20;\n\n var Chart = Class.extend({\n init: function(element, userOptions, themeOptions, context) {\n var this$1$1 = this;\n if (context === void 0) { context = {}; }\n\n this.observers = [];\n this.addObserver(context.observer);\n this.chartService = new services.ChartService(this, context);\n this.chartService.theme = themeOptions;\n\n this._initElement(element);\n\n var options = deepExtend({}, this.options, userOptions);\n this._originalOptions = deepExtend({}, options);\n this._theme = themeOptions;\n this._initTheme(options, themeOptions);\n this._focusState = {};\n\n this._initHandlers();\n this._initSurface();\n\n this.bindCategories();\n dataviz.FontLoader.preloadFonts(userOptions, function () {\n this$1$1.fontLoaded = true;\n if (!this$1$1._destroyed) {\n this$1$1.trigger('init');\n this$1$1._redraw();\n this$1$1._attachEvents();\n }\n });\n },\n\n _initElement: function(element) {\n this._setElementClass(element);\n element.style.position = \"relative\";\n element.tabIndex = element.getAttribute(\"tabindex\") ? element.getAttribute(\"tabindex\") : 0;\n // To support user agents and assistive technologies based on the ARIA 1.0 specification, authors may wish to include the document role as a fallback value, in the form role=\"graphics-document document\".\n element.setAttribute(\"role\", \"graphics-document document\");\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n this.element = element;\n },\n\n _setElementClass: function(element) {\n dataviz.addClass(element, \"k-chart\");\n },\n\n _initTheme: function(options, themeOptions) {\n var seriesCopies = [];\n var series = options.series || [];\n\n for (var i = 0; i < series.length; i++) {\n seriesCopies.push($.extend({}, series[i]));\n }\n options.series = seriesCopies;\n\n resolveAxisAliases(options);\n this.applyDefaults(options, themeOptions);\n\n // Clean up default if not overriden by data attributes\n if (options.seriesColors === null) {\n delete options.seriesColors;\n }\n\n if (isString(options.title)) {\n options.title = { text: options.title };\n }\n\n this.options = deepExtend({}, themeOptions, options);\n this.applySeriesColors();\n },\n\n getSize: function() {\n var chartArea = this.options.chartArea || {};\n var width = chartArea.width ? parseInt(chartArea.width, 10) : Math.floor(this.element.offsetWidth);\n var height = chartArea.height ? parseInt(chartArea.height, 10) : Math.floor(this.element.offsetHeight);\n\n return {\n width: width,\n height: height\n };\n },\n\n resize: function(force) {\n var size = this.getSize();\n var currentSize = this._size;\n var hasSize = size.width > 0 || size.height > 0;\n\n if (force || hasSize && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n this._size = size;\n this._resize(size, force);\n this.trigger(\"resize\", size);\n } else if (hasSize && this._selections && dataviz.find(this._selections, function (s) { return !s.visible; })) {\n this._destroySelections();\n this._setupSelection();\n }\n },\n\n _resize: function() {\n this._noTransitionsRedraw();\n },\n\n redraw: function(paneName) {\n this.applyDefaults(this.options);\n this.applySeriesColors();\n\n if (paneName) {\n var plotArea = this._model._plotArea;\n var pane = plotArea.findPane(paneName);\n plotArea.redraw(pane);\n } else {\n this._redraw();\n }\n },\n\n getAxis: function(name) {\n return findAxisByName(name, this._plotArea.axes);\n },\n\n findAxisByName: function(name) {\n return this.getAxis(name);\n },\n\n findPaneByName: function(name) {\n var panes = this._plotArea.panes;\n\n for (var idx = 0; idx < panes.length; idx++) {\n if (panes[idx].options.name === name) {\n return new ChartPane(panes[idx]);\n }\n }\n },\n\n findPaneByIndex: function(idx) {\n var panes = this._plotArea.panes;\n if (panes[idx]) {\n return new ChartPane(panes[idx]);\n }\n },\n\n plotArea: function() {\n return new ChartPlotArea(this._plotArea);\n },\n\n toggleHighlight: function(show, filter) {\n var plotArea = this._plotArea;\n var firstSeries = (plotArea.srcSeries || plotArea.series || [])[0];\n var points;\n\n if (isFunction(filter)) {\n points = plotArea.filterPoints(filter);\n } else {\n var seriesName, categoryName;\n if (isObject(filter)) {\n seriesName = filter.series;\n categoryName = filter.category;\n } else {\n seriesName = categoryName = filter;\n }\n\n if (firstSeries.type === DONUT) {\n points = pointByCategoryName(plotArea.pointsBySeriesName(seriesName), categoryName);\n } else if (inArray(firstSeries.type, [ PIE, FUNNEL, PYRAMID ])) {\n points = pointByCategoryName((plotArea.charts[0] || {}).points, categoryName);\n } else {\n points = plotArea.pointsBySeriesName(seriesName);\n }\n }\n\n if (points) {\n this.togglePointsHighlight(show, points);\n }\n },\n\n togglePointsHighlight: function(show, points) {\n var highlight = this._highlight;\n for (var idx = 0; idx < points.length; idx++) {\n highlight.togglePointHighlight(points[idx], show);\n }\n },\n\n showTooltip: function(filter) {\n var shared = this._sharedTooltip();\n var ref = this;\n var tooltip = ref._tooltip;\n var plotArea = ref._plotArea;\n var point, categoryIndex;\n\n if (isFunction(filter)) {\n point = plotArea.findPoint(filter);\n if (point && shared) {\n categoryIndex = point.categoryIx;\n }\n } else if (shared && defined(filter)) {\n categoryIndex = plotArea.categoryAxis.categoryIndex(filter);\n }\n\n if (shared) {\n if (categoryIndex >= 0) {\n var points = this._plotArea.pointsByCategoryIndex(categoryIndex);\n tooltip.showAt(points);\n }\n } else if (point) {\n tooltip.show(point);\n }\n },\n\n hideTooltip: function() {\n this._tooltip.hide();\n },\n\n _initSurface: function() {\n var surface = this.surface;\n var wrap = this._surfaceWrap();\n\n var chartArea = this.options.chartArea || {};\n if (chartArea.width) {\n dataviz.elementSize(wrap, { width: chartArea.width });\n }\n if (chartArea.height) {\n dataviz.elementSize(wrap, { height: chartArea.height });\n }\n\n if (!surface || surface.options.type !== this.options.renderAs) {\n this._destroySurface();\n\n this.surface = drawing.Surface.create(wrap, {\n type: this.options.renderAs\n });\n\n this.surface.bind(\"mouseenter\", this._surfaceMouseenterHandler);\n this.surface.bind(\"mouseleave\", this._surfaceMouseleaveHandler);\n\n } else {\n this.surface.clear();\n this.surface.resize();\n }\n },\n\n _surfaceWrap: function() {\n return this.element;\n },\n\n _redraw: function() {\n var model = this._getModel();\n this._size = {\n width: model.options.width,\n height: model.options.height\n };\n\n this._destroyView();\n\n this._setElementAccessibilityAttributes();\n\n this._model = model;\n this._plotArea = model._plotArea;\n this._legend = model._legend;\n\n model.renderVisual();\n\n if (this.options.transitions !== false) {\n model.traverse(function(element) {\n if (element.animation) {\n element.animation.setup();\n }\n });\n }\n\n this._initSurface();\n this.surface.draw(model.visual);\n\n if (this.options.transitions !== false) {\n model.traverse(function(element) {\n if (element.animation) {\n element.animation.play();\n }\n });\n }\n\n this._tooltip = this._createTooltip();\n this._highlight = new Highlight();\n this._setupSelection();\n this._createPannable();\n this._createZoomSelection();\n this._createMousewheelZoom();\n\n this.trigger(RENDER);\n triggerPaneRender(this._plotArea.panes);\n\n if (!this._navState) {\n this._cancelDomEvents();\n }\n\n this._redrawFocusHighlight();\n },\n\n _redrawFocusHighlight: function() {\n var ref = this;\n var ref_focusState = ref._focusState;\n var legendInFocus = ref_focusState.legendInFocus;\n var preserveHighlight = ref_focusState.preserveHighlight;\n\n if (legendInFocus && preserveHighlight) {\n this._focusElement(this._getFocusedLegendItem(), false);\n this._focusState.preserveHighlight = false;\n }\n },\n\n _setElementAccessibilityAttributes: function() {\n var titleOptions = this.options.title;\n var title = isString(titleOptions) ? titleOptions : (titleOptions.description || titleOptions.text);\n\n if (title) {\n this.element.setAttribute(\"aria-roledescription\", title);\n }\n },\n\n exportVisual: function(exportOptions) {\n var visual;\n if (exportOptions && (exportOptions.width || exportOptions.height || exportOptions.options)) {\n var currentOptions = this.options;\n var options = deepExtend({}, exportOptions.options, {\n chartArea: {\n width: exportOptions.width,\n height: exportOptions.height\n }\n });\n\n clearMissingValues(this._originalOptions, options);\n this.options = deepExtend({}, this._originalOptions, options);\n this._initTheme(this.options, this._theme);\n this.bindCategories();\n\n var model = this._getModel();\n\n model.renderVisual();\n triggerPaneRender(model._plotArea.panes);\n\n visual = model.visual;\n\n this.options = currentOptions;\n } else {\n visual = this.surface.exportVisual();\n }\n\n return visual;\n },\n\n _sharedTooltip: function() {\n return this._plotArea instanceof CategoricalPlotArea && this.options.tooltip && this.options.tooltip.shared;\n },\n\n _createPannable: function() {\n var options = this.options;\n if (options.pannable !== false) {\n this._pannable = new Pannable(this._plotArea, options.pannable);\n }\n },\n\n _createZoomSelection: function() {\n var zoomable = this.options.zoomable;\n var selection = (zoomable || {}).selection;\n if (zoomable !== false && selection !== false) {\n this._zoomSelection = new ZoomSelection(this, selection);\n }\n },\n\n _createMousewheelZoom: function() {\n var zoomable = this.options.zoomable;\n var mousewheel = (zoomable || {}).mousewheel;\n if (zoomable !== false && mousewheel !== false) {\n this._mousewheelZoom = new MousewheelZoom(this, mousewheel);\n }\n },\n\n _toggleDragZoomEvents: function() {\n var pannable = this.options.pannable;\n var zoomable = this.options.zoomable;\n var selection = (zoomable || {}).selection;\n var mousewheel = (zoomable || {}).mousewheel;\n var allowDrag = !pannable && (zoomable === false || selection === false) && !this.requiresHandlers([ DRAG_START, DRAG, DRAG_END ]);\n var allowZoom = (zoomable === false || mousewheel === false) && !this.requiresHandlers([ ZOOM_START, ZOOM, ZOOM_END ]);\n var element = this.element;\n\n if (this._dragZoomEnabled && allowDrag && allowZoom) {\n element.style.touchAction = this._touchAction || '';\n this._dragZoomEnabled = false;\n } else if (!this._dragZoomEnabled && !(allowDrag && allowZoom)) {\n element.style.touchAction = \"none\";\n\n this._dragZoomEnabled = true;\n }\n\n this._toggleDomEvents(!allowDrag, !allowZoom);\n },\n\n _toggleDomEvents: function(drag, zoom) {\n var domEvents = this.domEvents;\n if (!domEvents) {\n return;\n }\n\n if (domEvents.toggleDrag) {\n domEvents.toggleDrag(drag);\n }\n\n if (domEvents.toggleZoom) {\n domEvents.toggleZoom(zoom);\n }\n },\n\n _createTooltip: function() {\n var ref = this;\n var tooltipOptions = ref.options.tooltip;\n var tooltip;\n\n if (this._sharedTooltip()) {\n tooltip = this._createSharedTooltip(tooltipOptions);\n } else {\n tooltip = new Tooltip(this.chartService, tooltipOptions);\n }\n\n return tooltip;\n },\n\n _createSharedTooltip: function(options) {\n return new SharedTooltip(this._plotArea, options);\n },\n\n applyDefaults: function(options, themeOptions) {\n applyAxisDefaults(options, themeOptions);\n applySeriesDefaults(options, themeOptions);\n },\n\n applySeriesColors: function() {\n var options = this.options;\n var series = options.series;\n var colors = options.seriesColors || [];\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n var seriesColor = colors[i % colors.length];\n var defaults = currentSeries._defaults;\n\n currentSeries.color = currentSeries.color || seriesColor;\n if (defaults) {\n defaults.color = defaults.color || seriesColor;\n }\n }\n },\n\n _getModel: function() {\n var options = this.options;\n var plotArea = this._createPlotArea();\n var model = new dataviz.RootElement(this._modelOptions());\n model.chart = this;\n model._plotArea = plotArea;\n\n var title = Title.buildTitle(options.title);\n var subtitle = Title.buildTitle(options.subtitle, {\n align: options.title.align,\n position: options.title.position\n });\n model.append.apply(model, Title.orderTitles([title, subtitle]));\n\n if (options.legend && options.legend.visible) {\n var legend = new Legend(plotArea.options.legend, this.chartService);\n model.append(legend);\n model._legend = legend;\n }\n model.append(plotArea);\n model.reflow();\n\n return model;\n },\n\n _modelOptions: function() {\n var options = this.options;\n var size = this.getSize();\n\n return deepExtend({\n transitions: options.transitions,\n width: size.width || datavizConstants.DEFAULT_WIDTH,\n height: size.height || datavizConstants.DEFAULT_HEIGHT\n }, options.chartArea);\n },\n\n _createPlotArea: function(skipSeries) {\n var options = this.options;\n\n var plotArea = PlotAreaFactory.current.create(skipSeries ? [] : options.series, options, this.chartService);\n\n return plotArea;\n },\n\n _setupSelection: function() {\n var this$1$1 = this;\n\n var ref = this;\n var axes = ref._plotArea.axes;\n var selections = this._selections = [];\n\n for (var i = 0; i < axes.length; i++) {\n var axis = axes[i];\n var options = axis.options;\n if (axis instanceof CategoryAxis && options.select && !options.vertical) {\n var range = axis.range();\n\n var selection = new Selection(this$1$1, axis,\n deepExtend({ min: range.min, max: range.max }, options.select)\n );\n\n selections.push(selection);\n }\n }\n },\n\n _selectStart: function(e) {\n return this.trigger(SELECT_START, e);\n },\n\n _select: function(e) {\n return this.trigger(SELECT, e);\n },\n\n _selectEnd: function(e) {\n return this.trigger(SELECT_END, e);\n },\n\n _initHandlers: function() {\n this._clickHandler = this._click.bind(this);\n this._keydownHandler = this._keydown.bind(this);\n this._focusHandler = this._focus.bind(this);\n this._blurHandler = this._blur.bind(this);\n this._mousedownHandler = this._mousedown.bind(this);\n this._mousewheelHandler = this._mousewheel.bind(this);\n this._mouseleaveHandler = this._mouseleave.bind(this);\n this._surfaceMouseenterHandler = this._mouseover.bind(this);\n this._surfaceMouseleaveHandler = this._mouseout.bind(this);\n\n this._mousemove = kendo.throttle(\n this._mousemove.bind(this),\n MOUSEMOVE_DELAY\n );\n },\n\n addObserver: function(observer) {\n if (observer) {\n this.observers.push(observer);\n }\n },\n\n removeObserver: function(observer) {\n var index = this.observers.indexOf(observer);\n if (index >= 0) {\n this.observers.splice(index, 1);\n }\n },\n\n requiresHandlers: function(eventNames) {\n var observers = this.observers;\n for (var idx = 0; idx < observers.length; idx++) {\n if (observers[idx].requiresHandlers(eventNames)) {\n return true;\n }\n }\n },\n\n trigger: function(name, args) {\n if (args === void 0) { args = {}; }\n\n args.sender = this;\n\n if (name === SHOW_TOOLTIP) {\n args.anchor.point = this._toDocumentCoordinates(args.anchor.point);\n } else if (name === SERIES_OVER) {\n this._updateDrilldownPoint(args.point);\n } else if (name === SERIES_LEAVE) {\n this._resetDrilldownPoint();\n } else if (name === SERIES_CLICK) {\n this._focusPoint(args.point);\n this._startDrilldown(args.point);\n } else if (name === LEGEND_ITEM_CLICK) {\n this._focusLegendItem(args);\n }\n\n var observers = this.observers;\n var isDefaultPrevented = false;\n for (var idx = 0; idx < observers.length; idx++) {\n if (observers[idx].trigger(name, args)) {\n isDefaultPrevented = true;\n }\n }\n\n return isDefaultPrevented;\n },\n\n _attachEvents: function() {\n var element = this.element;\n\n this._touchAction = element.style.touchAction;\n\n var obj;\n bindEvents(element, ( obj = {}, obj[ CONTEXTMENU ] = this._clickHandler, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj[ MOUSELEAVE ] = this._mouseleaveHandler, obj[ KEYDOWN ] = this._keydownHandler, obj[ MOUSEDOWN ] = this._mousedownHandler, obj[ FOCUS ] = this._focusHandler, obj[ BLUR] = this._blurHandler, obj ));\n\n if (this._shouldAttachMouseMove()) {\n var obj$1;\n bindEvents(element, ( obj$1 = {}, obj$1[ MOUSEMOVE ] = this._mousemove, obj$1 ));\n }\n\n this.domEvents = services.DomEventsBuilder.create(this.element, {\n start: this._start.bind(this),\n move: this._move.bind(this),\n end: this._end.bind(this),\n tap: this._tap.bind(this),\n gesturestart: this._gesturestart.bind(this),\n gesturechange: this._gesturechange.bind(this),\n gestureend: this._gestureend.bind(this)\n });\n\n this._toggleDragZoomEvents();\n },\n\n _mouseleave: function(e) {\n if (this._hoveredPoint) {\n this._hoveredPoint.out(this, e);\n this._hoveredPoint = null;\n }\n\n if (this._plotAreaHovered) {\n this._plotAreaHovered = false;\n this.trigger(PLOT_AREA_LEAVE);\n }\n\n if (this._hasInactiveOpacity() && this._activeChartInstance) {\n this._applySeriesOpacity(this._activeChartInstance.children, null, true);\n this._updateSeriesOpacity(null, true);\n }\n },\n\n _cancelDomEvents: function() {\n if (this.domEvents && this.domEvents.cancel) {\n this.domEvents.cancel();\n }\n },\n\n _gesturestart: function(e) {\n if (this._mousewheelZoom && !this._stopChartHandlers(e)) {\n this._gestureDistance = e.distance;\n this._unsetActivePoint();\n this._clearFocusedElement();\n this.surface.suspendTracking();\n }\n },\n\n _gestureend: function(e) {\n if (this._zooming && !this._stopChartHandlers(e)) {\n if (this.surface) {\n this.surface.resumeTracking();\n }\n this._zooming = false;\n this.trigger(ZOOM_END, {});\n }\n },\n\n _gesturechange: function(e) {\n var mousewheelZoom = this._mousewheelZoom;\n\n if (mousewheelZoom && !this._stopChartHandlers(e)) {\n e.preventDefault();\n var previousGestureDistance = this._gestureDistance;\n var scaleDelta = -e.distance / previousGestureDistance + 1;\n\n if (Math.abs(scaleDelta) >= 0.1) {\n scaleDelta = Math.round(scaleDelta * 10);\n\n this._gestureDistance = e.distance;\n var args = { delta: scaleDelta, axisRanges: axisRanges(this._plotArea.axes), originalEvent: e };\n if (this._zooming || !this.trigger(ZOOM_START, args)) {\n var coords = this._eventCoordinates(e);\n\n if (!this._zooming) {\n this._zooming = true;\n }\n\n var ranges = args.axisRanges = mousewheelZoom.updateRanges(scaleDelta, coords);\n if (ranges && !this.trigger(ZOOM, args)) {\n mousewheelZoom.zoom();\n }\n }\n }\n }\n },\n\n _mouseout: function(e) {\n if (e.element) {\n var element = this._drawingChartElement(e.element, e);\n\n if (element && element.leave) {\n element.leave(this, e.originalEvent);\n }\n }\n },\n\n _start: function(e) {\n var coords = this._eventCoordinates(e);\n\n if (this._stopChartHandlers(e) || !this._plotArea.backgroundContainsPoint(coords)) {\n return;\n }\n\n if (this.requiresHandlers([ DRAG_START, DRAG, DRAG_END ])) {\n this._startNavigation(e, coords, DRAG_START);\n }\n\n if (this._pannable && this._pannable.start(e)) {\n this.surface.suspendTracking();\n this._unsetActivePoint();\n this._clearFocusedElement();\n this._suppressHover = true;\n this.chartService.panning = true;\n }\n\n if (this._zoomSelection) {\n if (this._zoomSelection.start(e)) {\n this.trigger(ZOOM_START, { axisRanges: axisRanges(this._plotArea.axes), originalEvent: e });\n }\n }\n },\n\n _move: function(e) {\n var ref = this;\n var state = ref._navState;\n var pannable = ref._pannable;\n\n if (this._stopChartHandlers(e)) {\n return;\n }\n\n if (pannable) {\n var ranges = pannable.move(e);\n\n if (ranges && !this.trigger(DRAG, { axisRanges: ranges, originalEvent: e })) {\n pannable.pan();\n }\n } else if (state) {\n var ranges$1 = {};\n var axes = state.axes;\n\n for (var i = 0; i < axes.length; i++) {\n var currentAxis = axes[i];\n var axisName = currentAxis.options.name;\n if (axisName) {\n var axis = currentAxis.options.vertical ? e.y : e.x;\n var delta = axis.startLocation - axis.location;\n\n if (delta !== 0) {\n ranges$1[currentAxis.options.name] = currentAxis.translateRange(delta);\n }\n }\n }\n\n state.axisRanges = ranges$1;\n this.trigger(DRAG, {\n axisRanges: ranges$1,\n originalEvent: e\n });\n }\n\n if (this._zoomSelection) {\n this._zoomSelection.move(e);\n }\n },\n\n _end: function(e) {\n if (this._stopChartHandlers(e)) {\n return;\n }\n\n var pannable = this._pannable;\n if (pannable && pannable.end(e)) {\n this.surface.resumeTracking();\n this.trigger(DRAG_END, {\n axisRanges: axisRanges(this._plotArea.axes),\n originalEvent: e\n });\n this._suppressHover = false;\n this.chartService.panning = false;\n } else {\n this._endNavigation(e, DRAG_END);\n }\n\n if (this._zoomSelection) {\n var ranges = this._zoomSelection.end(e);\n if (ranges && !this.trigger(ZOOM, { axisRanges: ranges, originalEvent: e })) {\n this._zoomSelection.zoom();\n this.trigger(ZOOM_END, { axisRanges: ranges, originalEvent: e });\n }\n }\n },\n\n _stopChartHandlers: function(e) {\n var selections = this._selections || [];\n if (!selections.length) {\n return false;\n }\n\n var coords = this._eventCoordinates(e);\n var pane = this._plotArea.paneByPoint(coords);\n if (pane) {\n for (var idx = 0; idx < selections.length; idx++) {\n if (selections[idx].onPane(pane)) {\n return true;\n }\n }\n }\n },\n\n _mousewheelZoomRate: function() {\n var zoomable = this.options.zoomable;\n var mousewheel = (zoomable || {}).mousewheel || {};\n return valueOrDefault(mousewheel.rate, MOUSEWHEEL_ZOOM_RATE);\n },\n\n _mousewheel: function(e) {\n var this$1$1 = this;\n\n var delta = dataviz.mousewheelDelta(e);\n var mousewheelZoom = this._mousewheelZoom;\n var coords = this._eventCoordinates(e);\n\n if (this._stopChartHandlers(e) || !this._plotArea.backgroundContainsPoint(coords)) {\n return;\n }\n\n if (mousewheelZoom) {\n var args = { delta: delta, axisRanges: axisRanges(this._plotArea.axes), originalEvent: e };\n if (this._zooming || !this.trigger(ZOOM_START, args)) {\n e.preventDefault();\n\n if (!this._zooming) {\n this._unsetActivePoint();\n this._clearFocusedElement();\n this.surface.suspendTracking();\n this._zooming = true;\n }\n\n if (this._mwTimeout) {\n clearTimeout(this._mwTimeout);\n }\n\n args.axisRanges = mousewheelZoom.updateRanges(delta, coords);\n if (args.axisRanges && !this.trigger(ZOOM, args)) {\n mousewheelZoom.zoom();\n }\n\n this._mwTimeout = setTimeout(function () {\n this$1$1.trigger(ZOOM_END, args);\n this$1$1._zooming = false;\n if (this$1$1.surface) {\n this$1$1.surface.resumeTracking();\n }\n }, MOUSEWHEEL_DELAY);\n }\n } else {\n var state = this._navState;\n if (!state) {\n var prevented = this._startNavigation(e, coords, ZOOM_START);\n if (!prevented) {\n state = this._navState;\n }\n }\n\n if (state) {\n var totalDelta = state.totalDelta || delta;\n state.totalDelta = totalDelta + delta;\n\n var axes = this._navState.axes;\n var ranges = {};\n\n for (var i = 0; i < axes.length; i++) {\n var currentAxis = axes[i];\n var axisName = currentAxis.options.name;\n if (axisName) {\n ranges[axisName] = currentAxis.scaleRange(-totalDelta * this$1$1._mousewheelZoomRate(), coords);\n }\n }\n\n this.trigger(ZOOM, {\n delta: delta,\n axisRanges: ranges,\n originalEvent: e\n });\n\n if (this._mwTimeout) {\n clearTimeout(this._mwTimeout);\n }\n\n this._mwTimeout = setTimeout(function () {\n this$1$1._endNavigation(e, ZOOM_END);\n }, MOUSEWHEEL_DELAY);\n }\n }\n },\n\n _startNavigation: function(e, coords, chartEvent) {\n var plotArea = this._model._plotArea;\n var pane = plotArea.findPointPane(coords);\n var axes = plotArea.axes.slice(0);\n\n if (!pane) {\n return;\n }\n\n var ranges = axisRanges(axes);\n\n var prevented = this.trigger(chartEvent, {\n axisRanges: ranges,\n originalEvent: e\n });\n\n if (prevented) {\n this._cancelDomEvents();\n } else {\n this._suppressHover = true;\n this._unsetActivePoint();\n this._clearFocusedElement();\n this._navState = {\n axisRanges: ranges,\n pane: pane,\n axes: axes\n };\n }\n },\n\n _endNavigation: function(e, chartEvent) {\n if (this._navState) {\n this.trigger(chartEvent, {\n axisRanges: this._navState.axisRanges,\n originalEvent: e\n });\n this._suppressHover = false;\n this._navState = null;\n }\n },\n\n _getChartElement: function(e, match) {\n var element = this.surface.eventTarget(e);\n if (element) {\n return this._drawingChartElement(element, e, match);\n }\n },\n\n _drawingChartElement: function(element, e, match) {\n var current = element;\n var chartElement;\n while (current && !chartElement) {\n chartElement = current.chartElement;\n current = current.parent;\n }\n\n if (chartElement) {\n if (chartElement.aliasFor) {\n chartElement = chartElement.aliasFor(e, this._eventCoordinates(e));\n }\n\n if (match) {\n chartElement = chartElement.closest(match);\n if (chartElement && chartElement.aliasFor) {\n chartElement = chartElement.aliasFor();\n }\n }\n\n return chartElement;\n }\n },\n\n _eventCoordinates: function(e) {\n var coordinates = dataviz.eventCoordinates(e);\n return this._toModelCoordinates(coordinates.x, coordinates.y);\n },\n\n _elementPadding: function() {\n if (!this._padding) {\n var ref = elementStyles(this.element, [ \"paddingLeft\", \"paddingTop\" ]);\n var paddingLeft = ref.paddingLeft;\n var paddingTop = ref.paddingTop;\n this._padding = {\n top: paddingTop,\n left: paddingLeft\n };\n }\n\n return this._padding;\n },\n\n _toDocumentCoordinates: function(point) {\n var padding = this._elementPadding();\n var offset = dataviz.elementOffset(this.element);\n\n return {\n left: round(point.x + padding.left + offset.left),\n top: round(point.y + padding.top + offset.top)\n };\n },\n\n _toModelCoordinates: function(clientX, clientY) {\n var element = this.element;\n var offset = dataviz.elementOffset(element);\n var padding = this._elementPadding();\n var inverseTransform = dataviz.elementScale(element).invert();\n var point = new GeometryPoint(\n clientX - offset.left - padding.left,\n clientY - offset.top - padding.top\n ).transform(inverseTransform);\n\n return new Point(point.x, point.y);\n },\n\n _tap: function(e) {\n var this$1$1 = this;\n\n var drawingElement = this.surface.eventTarget(e);\n var element = this._drawingChartElement(drawingElement, e);\n var sharedTooltip = this._sharedTooltip();\n\n if (!this._startHover(drawingElement, e) && !sharedTooltip) {\n this._unsetActivePoint();\n }\n\n if (sharedTooltip) {\n this._trackSharedTooltip(this._eventCoordinates(e), e, true);\n }\n\n this._propagateClick(element, e);\n\n //part of fix for hover issue on windows touch\n this.handlingTap = true;\n setTimeout(function () {\n this$1$1.handlingTap = false;\n }, 0);\n },\n\n _click: function(e) {\n var element = this._getChartElement(e);\n this._propagateClick(element, e);\n },\n\n _propagateClick: function(element, e) {\n var this$1$1 = this;\n\n var current = element;\n while (current) {\n if (current.click) {\n current.click(this$1$1, e);\n }\n\n current = current.parent;\n }\n },\n\n _isLegendBeforeChart: function() {\n var ref = this;\n var legendPosition = ref.options.legend.position;\n var legend = ref._legend;\n\n return legend && legend.hasItems() && (legendPosition === TOP || legendPosition === LEFT);\n },\n\n _focus: function() {\n if (!this._preventInitialPointFocus) {\n if (this._isLegendBeforeChart()) {\n this._focusFirstLegendItem();\n } else {\n this._focusFirstPoint();\n }\n }\n\n this._preventInitialPointFocus = false;\n },\n\n _keydown: function(e) {\n var ref = this;\n var ref_focusState = ref._focusState;\n var legendInFocus = ref_focusState.legendInFocus;\n var focusedElement = ref_focusState.focusedElement;\n var legend = ref._legend;\n\n if (e.key === datavizConstants.TAB) {\n this._clearFocusedElement();\n var isLegendBeforeChart = this._isLegendBeforeChart();\n\n if (legendInFocus && isLegendBeforeChart !== e.shiftKey) {\n this._navigatePoints(e);\n } else if (!legendInFocus && isLegendBeforeChart === e.shiftKey && legend.hasItems()) {\n this._navigateLegend(e);\n }\n } else if (e.key === datavizConstants.ESCAPE) {\n if (focusedElement) {\n e.stopPropagation();\n }\n\n if (this._tooltip && this._tooltip.visible) {\n this._hideTooltip();\n } else {\n this._blur();\n }\n } else if (e.key === datavizConstants.ENTER) {\n if (focusedElement) {\n this._focusState.preserveHighlight = true;\n this._propagateClick(focusedElement, e);\n this._focusElement(focusedElement);\n }\n } else if (!legendInFocus) {\n this._navigatePoints(e);\n } else {\n this._navigateLegend(e);\n }\n },\n\n _navigatePoints: function(e) {\n var this$1$1 = this;\n\n var ref = this;\n var focusState = ref._focusState;\n var plotArea = ref._plotArea;\n\n focusState.legendInFocus = false;\n\n if (!focusState.focusedElement) {\n this._focusFirstPoint();\n e.preventDefault();\n return;\n }\n\n var moveFocus = function (point) {\n focusState.focusedPoint = point;\n\n this$1$1._focusElement(focusState.focusedPoint);\n this$1$1._displayTooltip(point);\n e.preventDefault();\n };\n\n switch (e.key) {\n case datavizConstants.ARROW_RIGHT:\n moveFocus(plotArea.getPointToTheRight(focusState.focusedPoint));\n break;\n case datavizConstants.ARROW_LEFT:\n moveFocus(plotArea.getPointToTheLeft(focusState.focusedPoint));\n break;\n case datavizConstants.ARROW_DOWN:\n moveFocus(plotArea.getPointBelow(focusState.focusedPoint));\n break;\n case datavizConstants.ARROW_UP:\n moveFocus(plotArea.getPointAbove(focusState.focusedPoint));\n break;\n default:\n break;\n }\n },\n\n _navigateLegend: function(e) {\n var this$1$1 = this;\n\n var ref = this;\n var focusState = ref._focusState;\n var legend = ref._legend;\n var rtl = ref.chartService.rtl;\n\n focusState.legendInFocus = true;\n\n if (!focusState.focusedElement) {\n this._focusFirstLegendItem();\n e.preventDefault();\n return;\n }\n\n var itemsLength = legend.getItems().length;\n var moveFocus = function (cycleFunc) {\n focusState.focusedLegendItemIndex = cycleFunc(\n focusState.focusedLegendItemIndex,\n itemsLength\n );\n this$1$1._focusElement(this$1$1._getFocusedLegendItem());\n e.preventDefault();\n };\n\n switch (e.key) {\n case datavizConstants.ARROW_UP:\n case datavizConstants.ARROW_LEFT:\n moveFocus(rtl ? dataviz.cycleUp : dataviz.cycleDown);\n break;\n case datavizConstants.ARROW_DOWN:\n case datavizConstants.ARROW_RIGHT:\n moveFocus(rtl ? dataviz.cycleDown : dataviz.cycleUp);\n break;\n default:\n break;\n }\n },\n\n _focusFirstPoint: function() {\n var point = this._focusState.focusedPoint = this._plotArea.getFirstPoint();\n\n if (point) {\n this._focusElement(point);\n this._displayTooltip(point);\n }\n },\n\n _hasFocus: function() {\n return this.element.ownerDocument.activeElement === this.element;\n },\n\n _mousedown: function() {\n if (!this._hasFocus()) {\n this._preventInitialPointFocus = true;\n }\n },\n\n _focusChart: function() {\n if (!this._hasFocus()) {\n this._preventInitialPointFocus = true;\n this.element.focus();\n }\n },\n\n _focusPoint: function(point) {\n this._focusState.focusedPoint = point;\n\n this._focusChart();\n\n this._focusElement(point, true);\n },\n\n _focusFirstLegendItem: function() {\n var ref = this;\n var focusState = ref._focusState;\n\n focusState.focusedLegendItemIndex = 0;\n this._focusElement(this._getFocusedLegendItem());\n focusState.legendInFocus = true;\n\n this._hideTooltip();\n },\n\n _focusLegendItem: function(args) {\n var ref = this;\n var focusState = ref._focusState;\n\n focusState.focusedLegendItemIndex = this._legend\n .getItems()\n .findIndex(function (x) { return x.options.series.index === args.seriesIndex\n && x.options.pointIndex === args.pointIndex; });\n\n focusState.legendInFocus = true;\n\n this._focusChart();\n\n this._focusElement(this._getFocusedLegendItem(), true);\n },\n\n _getFocusedLegendItem: function() {\n var ref = this;\n var focusState = ref._focusState;\n var legend = ref._legend;\n\n return legend.getItems()[focusState.focusedLegendItemIndex];\n },\n\n _focusElement: function(element, omitHighlight) {\n var ref = this;\n var focusState = ref._focusState;\n\n this._clearFocusedElement();\n\n if (!element) {\n return;\n }\n\n focusState.focusedElement = element;\n\n this._setElementActiveDescendant(element);\n\n if (!omitHighlight) {\n element.focusVisual();\n\n if (focusState.legendInFocus) {\n var options = element.options;\n\n this._showSeriesInactiveOpacity(options.series.index, options.pointIndex);\n } else {\n this._showInactiveOpacity(element);\n }\n }\n },\n\n _clearFocusedElement: function() {\n var ref = this;\n var focusState = ref._focusState;\n\n if (!focusState) {\n return;\n }\n\n if (focusState.focusedElement) {\n focusState.focusedElement.clearFocusFromVisual();\n this._clearElementActiveDescendant();\n }\n\n focusState.focusedElement = null;\n },\n\n _setElementActiveDescendant: function(element) {\n if (this.options.renderAs === \"canvas\") {\n this._pseudoFocusedElement = this._createPseudoFocusedElement(element);\n this.element.append(this._pseudoFocusedElement);\n }\n\n this.element.setAttribute(datavizConstants.ARIA_ACTIVE_DESCENDANT, element._id);\n },\n\n _clearElementActiveDescendant: function() {\n if (this._pseudoFocusedElement) {\n this._pseudoFocusedElement.remove();\n this._pseudoFocusedElement = null;\n }\n\n this.element.removeAttribute(datavizConstants.ARIA_ACTIVE_DESCENDANT);\n },\n\n _createPseudoFocusedElement: function(element) {\n var pseudoElement = document.createElement(\"div\");\n var accessibilityOptions = element.options.accessibility;\n\n pseudoElement.id = element._id;\n pseudoElement.setAttribute(\"aria-label\", element.getAriaLabelText());\n pseudoElement.setAttribute(\"role\", accessibilityOptions.role);\n pseudoElement.setAttribute(\"aria-roledescription\", accessibilityOptions.ariaRoleDescription);\n\n var checked = accessibilityOptions.ariaChecked;\n if (defined(checked)) {\n pseudoElement.setAttribute(\"aria-checked\", checked);\n }\n\n return pseudoElement;\n },\n\n _blur: function() {\n this._focusState.legendInFocus = false;\n this._clearFocusedElement();\n this._hideInactiveOpacity();\n },\n\n _startHover: function(element, e) {\n if (this._suppressHover) {\n return false;\n }\n\n var point = this._drawingChartElement(element, e, function(element) {\n return (element.hover || element.over) && !(element instanceof PlotAreaBase);\n });\n\n var activePoint = this._activePoint;\n\n this._updateHoveredPoint(point, e);\n\n if (point && activePoint !== point && point.hover) {\n this._activePoint = point;\n\n if (!this._sharedTooltip() && !point.hover(this, e)) {\n this._displayTooltip(point);\n\n this._showInactiveOpacity(point);\n }\n }\n\n return point;\n },\n\n _displayTooltip: function(point) {\n var tooltipOptions = deepExtend({}, this.options.tooltip, point.options.tooltip);\n if (tooltipOptions.visible) {\n this._tooltip.show(point);\n }\n },\n\n _hideTooltip: function() {\n if (this._tooltip) {\n this._tooltip.hide();\n }\n },\n\n _displayInactiveOpacity: function(activePoint, multipleSeries, highlightPoints) {\n var chartInstance = this._activeChartInstance = this._chartInstanceFromPoint(activePoint);\n if (!chartInstance) {\n return;\n }\n\n if (multipleSeries) {\n this._updateSeriesOpacity(activePoint);\n this._applySeriesOpacity(chartInstance.children, null, true);\n this._applySeriesOpacity(chartInstance.children, activePoint.series);\n this._highlight.show(highlightPoints || activePoint);\n } else {\n var inactivePoints;\n\n if (!chartInstance.supportsPointInactiveOpacity()) {\n this._highlight.show(activePoint);\n return;\n }\n\n inactivePoints = this._getInactivePoints(activePoint, chartInstance);\n\n if (inactivePoints && inactivePoints.length) {\n this._highlight.show(inactivePoints, 1 - this._getInactiveOpacityForSeries(activePoint.series));\n }\n }\n },\n\n _getInactivePoints: function(activePoint, chartInstance) {\n var allPoints = this._getAllPointsOfType(chartInstance, activePoint.constructor);\n\n return allPoints.filter(function (point) { return point !== activePoint; });\n },\n\n _getAllPointsOfType: function(container, type) {\n var this$1$1 = this;\n\n var points = [];\n\n for (var i = 0; i < container.children.length; i++) {\n var element = container.children[i];\n\n if (element.constructor === type) {\n points.push(element);\n } else if (element.children && element.children.length) {\n points = points.concat(this$1$1._getAllPointsOfType(element, type));\n }\n }\n\n return points;\n },\n\n _updateHoveredPoint: function(point, e) {\n var hoveredPoint = this._hoveredPoint;\n\n if (hoveredPoint && hoveredPoint !== point) {\n hoveredPoint.out(this, e);\n this._hoveredPoint = null;\n }\n\n if (point && hoveredPoint !== point && point.over) {\n this._hoveredPoint = point;\n point.over(this, e);\n }\n },\n\n _updateDrilldownPoint: function(point) {\n if (!point || !point.series) {\n return;\n }\n\n var ref = SeriesBinder.current.bindPoint(point.series, null, point.dataItem);\n var fields = ref.fields;\n if (fields.drilldown) {\n this._drilldownState = { cursor: this.element.style.cursor };\n this.element.style.cursor = 'pointer';\n }\n },\n\n _resetDrilldownPoint: function() {\n if (this._drilldownState) {\n this.element.style.cursor = this._drilldownState.cursor;\n this._drilldownState = null;\n }\n },\n\n _startDrilldown: function(point) {\n if (!point || !point.series) {\n return;\n }\n\n var series = point.series;\n var ref = SeriesBinder.current.bindPoint(series, null, point.dataItem);\n var fields = ref.fields;\n var value = fields.drilldown;\n if (value) {\n var args = { series: series, point: point, value: value, sender: this };\n this.trigger(DRILLDOWN, args);\n }\n },\n\n _updateSeriesOpacity: function(point, resetOpacity) {\n var this$1$1 = this;\n\n var plotArea = this._plotArea;\n var length = plotArea.series.length;\n\n for (var i = 0; i < length; i++) {\n var currSeries = plotArea.series[i];\n var defaultOpacity = this$1$1._getDefaultOpacityForSeries(currSeries);\n var inactiveOpacity = this$1$1._getInactiveOpacityForSeries(currSeries);\n\n if (!resetOpacity && currSeries !== point.series) {\n currSeries.defaultOpacity = defaultOpacity;\n currSeries.opacity = inactiveOpacity;\n\n if (currSeries.line) {\n currSeries.line.opacity = inactiveOpacity;\n }\n } else {\n currSeries.opacity = defaultOpacity;\n\n if (currSeries.line) {\n currSeries.line.opacity = defaultOpacity;\n }\n }\n }\n },\n\n _applySeriesOpacity: function(elements, activeSeries, reset, series) {\n var this$1$1 = this;\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n var currSeries = element.series || series;\n var shouldHighlight = currSeries && (currSeries.highlight || {}).visible;\n\n if (shouldHighlight && element.visual) {\n var opacity = series ? series.opacity : element.series.opacity;\n if (currSeries !== activeSeries || reset) {\n element.visual.opacity(reset ? 1 : opacity);\n }\n }\n\n if (element.children && element.children.length) {\n this$1$1._applySeriesOpacity(element.children, activeSeries, reset, element.series);\n }\n }\n },\n\n _chartInstanceFromPoint: function(point) {\n var chartInstance = point.parent;\n\n while (chartInstance && !chartInstance.plotArea) {\n chartInstance = chartInstance.parent;\n }\n\n return chartInstance;\n },\n\n _showInactiveOpacity: function(point) {\n var multipleSeries = this._plotArea.series.length > 1;\n var hasInactiveOpacity = this._hasInactiveOpacity();\n\n if (hasInactiveOpacity) {\n this._displayInactiveOpacity(point, multipleSeries);\n } else {\n this._highlight.show(point);\n }\n },\n\n _hideInactiveOpacity: function(point) {\n var multipleSeries = this._plotArea.series.length > 1;\n var hasInactiveOpacity = this._hasInactiveOpacity();\n if (hasInactiveOpacity) {\n if (multipleSeries && this._activeChartInstance) {\n this._updateSeriesOpacity(point, true);\n this._applySeriesOpacity(this._activeChartInstance.children, null, true);\n this._activeChartInstance = null;\n }\n this._highlight && this._highlight.hide();\n this._activePoint = null;\n }\n },\n\n _hasInactiveOpacity: function() {\n var hasDefaultInactiveOpacity = this.options.seriesDefaults.highlight.inactiveOpacity !== undefined;\n var hasInactiveOpacity = this.options.series.filter(function (s) { return s.highlight.inactiveOpacity !== undefined; } ).length > 0;\n return hasDefaultInactiveOpacity || hasInactiveOpacity;\n },\n\n _getInactiveOpacityForSeries: function(series) {\n var defaultInactiveOpacity = this.options.seriesDefaults.highlight.inactiveOpacity;\n var seriesInactiveOpacity = series.highlight.inactiveOpacity;\n return seriesInactiveOpacity || defaultInactiveOpacity || series.opacity || datavizConstants.DEFAULT_SERIES_OPACITY;\n },\n\n _getDefaultOpacityForSeries: function(series) {\n return series.defaultOpacity || series.opacity || datavizConstants.DEFAULT_SERIES_OPACITY;\n },\n\n _mouseover: function(e) {\n var point = this._startHover(e.element, e.originalEvent);\n\n if (point && point.tooltipTracking && !this._mouseMoveTrackHandler && !this._sharedTooltip()) {\n this._mouseMoveTrackHandler = this._mouseMoveTracking.bind(this);\n var obj;\n bindEvents(document, ( obj = {}, obj[ MOUSEMOVE ] = this._mouseMoveTrackHandler, obj ));\n }\n },\n\n _mouseMoveTracking: function(e) {\n var ref = this;\n var options = ref.options;\n var tooltip = ref._tooltip;\n var highlight = ref._highlight;\n var point = ref._activePoint;\n var coords = this._eventCoordinates(e);\n\n if (this._plotArea.box.containsPoint(coords)) {\n if (point && point.tooltipTracking && point.series && point.parent.getNearestPoint) {\n var seriesPoint = point.parent.getNearestPoint(coords.x, coords.y, point.seriesIx);\n if (seriesPoint && seriesPoint !== point) {\n this._activePoint = seriesPoint;\n\n if (!seriesPoint.hover(this, e)) {\n var tooltipOptions = deepExtend({}, options.tooltip, seriesPoint.options.tooltip);\n if (tooltipOptions.visible) {\n tooltip.show(seriesPoint);\n }\n\n highlight.show(seriesPoint);\n }\n }\n }\n } else {\n var obj;\n unbindEvents(document, ( obj = {}, obj[ MOUSEMOVE ] = this._mouseMoveTrackHandler, obj ));\n this._unsetActivePoint();\n this._clearFocusedElement();\n this._mouseMoveTrackHandler = null;\n\n this._hideInactiveOpacity(point);\n }\n },\n\n _mousemove: function(e) {\n var coords = this._eventCoordinates(e);\n var plotArea = this._plotArea;\n\n this._trackCrosshairs(coords);\n\n if (plotArea.hover) {\n var overPlotArea = plotArea.backgroundContainsPoint(coords);\n if (overPlotArea) {\n this._plotAreaHovered = true;\n this._plotArea.hover(this, e);\n } else if (this._plotAreaHovered && !overPlotArea) {\n this._plotAreaHovered = false;\n this.trigger(PLOT_AREA_LEAVE);\n }\n }\n\n if (this._sharedTooltip()) {\n this._trackSharedTooltip(coords, e);\n }\n },\n\n _trackCrosshairs: function(coords) {\n var crosshairs = this._plotArea.crosshairs;\n\n for (var i = 0; i < crosshairs.length; i++) {\n var current = crosshairs[i];\n\n if (current.box.containsPoint(coords)) {\n current.showAt(coords);\n } else {\n current.hide();\n }\n }\n },\n\n _trackSharedTooltip: function(coords, e, toggle) {\n if (this._suppressHover) {\n return;\n }\n\n var ref = this;\n var tooltipOptions = ref.options.tooltip;\n var plotArea = ref._plotArea;\n var categoryAxis = ref._plotArea.categoryAxis;\n var tooltip = ref._tooltip;\n var highlight = ref._highlight;\n\n if (plotArea.backgroundContainsPoint(coords)) {\n var index = categoryAxis.pointCategoryIndex(coords);\n if (index !== this._tooltipCategoryIx || (!this._sharedHighlight && toggle)) {\n var points = plotArea.pointsByCategoryIndex(index);\n var pointArgs = points.map(function(point) {\n return point.eventArgs(e);\n });\n var hoverArgs = pointArgs[0] || {};\n hoverArgs.categoryPoints = pointArgs;\n\n if (points.length > 0 && !this.trigger(SERIES_HOVER, hoverArgs)) {\n if (tooltipOptions.visible) {\n tooltip.showAt(points, coords);\n }\n\n highlight.show(points);\n\n this._sharedHighlight = true;\n } else {\n tooltip.hide();\n }\n\n this._tooltipCategoryIx = index;\n } else if (toggle && this._sharedHighlight) {\n highlight.hide();\n tooltip.hide();\n this._sharedHighlight = false;\n }\n } else if (this._sharedHighlight) {\n highlight.hide();\n tooltip.hide();\n this._tooltipCategoryIx = null;\n this._sharedHighlight = false;\n }\n },\n\n hideElements: function(options) {\n var plotArea = this._plotArea;\n this._mousemove.cancel();\n\n plotArea.hideCrosshairs();\n\n this._unsetActivePoint(options);\n },\n\n _unsetActivePoint: function(options) {\n var ref = this;\n var highlight = ref._highlight;\n\n this._activePoint = null;\n this._hoveredPoint = null;\n\n if (!options || !options.keepTooltipOpen) {\n this._hideTooltip();\n }\n\n this._tooltipCategoryIx = null;\n this._sharedHighlight = false;\n\n if (highlight) {\n highlight.hide();\n }\n },\n\n _deferRedraw: function() {\n this._redraw();\n },\n\n _clearRedrawTimeout: function() {\n if (this._redrawTimeout) {\n clearInterval(this._redrawTimeout);\n this._redrawTimeout = null;\n }\n },\n\n bindCategories: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var definitions = [].concat(options.categoryAxis);\n\n for (var axisIx = 0; axisIx < definitions.length; axisIx++) {\n var axis = definitions[axisIx];\n if (axis.autoBind !== false) {\n this$1$1.bindCategoryAxisFromSeries(axis, axisIx);\n }\n }\n },\n\n bindCategoryAxisFromSeries: function(axis, axisIx) {\n var this$1$1 = this;\n\n var uniqueCategories = new Set();\n var seriesOnAxis = this.options.series.filter(function (series) { return series.categoryAxis === axis.name || (!series.categoryAxis && axisIx === 0); });\n var hasCategoryBinding = seriesOnAxis.some(function (series) { return Boolean(series.categoryField); });\n var seriesWithData = seriesOnAxis.filter(function (series) { return series.data && series.data.length > 0; });\n var categorySamples = seriesWithData.map(function (series) { return SeriesBinder.current.bindPoint(series, 0).fields.category; });\n var dateAxis = categorySamples.reduce(function (result, firstCategory) { return result || isDateAxis(axis, firstCategory); }, false);\n var seriesWithBinding = seriesWithData.filter(function (series, seriesIx) { return series.categoryField || defined(categorySamples[seriesIx]); });\n\n seriesWithBinding.forEach(function (series) { return series.data.forEach(function (row, index) {\n var category = SeriesBinder.current.bindPoint(series, index).fields.category;\n if (dateAxis) {\n var date = parseDateCategory(category, row, this$1$1.chartService.intl);\n category = date ? date.getTime() : undefined;\n }\n\n uniqueCategories.add(category);\n }); });\n\n if (uniqueCategories.size > 0) {\n var categories = Array.from(uniqueCategories.values());\n if (dateAxis) {\n categories = categories.sort().map(function (time) { return time && new Date(time); });\n }\n\n axis.categories = categories;\n } else if (hasCategoryBinding) {\n axis.categories = [];\n }\n },\n\n _isBindable: function(series) {\n var valueFields = SeriesBinder.current.valueFields(series);\n var result = true;\n\n for (var i = 0; i < valueFields.length; i++) {\n var field = valueFields[i];\n if (field === VALUE) {\n field = \"field\";\n } else {\n field = field + \"Field\";\n }\n\n if (!defined(series[field])) {\n result = false;\n break;\n }\n }\n\n return result;\n },\n\n _noTransitionsRedraw: function() {\n var options = this.options;\n var transitionsState;\n\n if (options.transitions !== false) {\n options.transitions = false;\n transitionsState = true;\n }\n\n this._redraw();\n\n if (transitionsState) {\n options.transitions = true;\n }\n },\n\n _legendItemHover: function(seriesIndex, pointIndex) {\n this._showSeriesInactiveOpacity(seriesIndex, pointIndex);\n },\n\n _showSeriesInactiveOpacity: function(seriesIndex, pointIndex) {\n var ref = this;\n var plotArea = ref._plotArea;\n var highlight = ref._highlight;\n var currentSeries = (plotArea.srcSeries || plotArea.series)[seriesIndex];\n var items;\n\n if (inArray(currentSeries.type, [ PIE, DONUT, FUNNEL, PYRAMID ])) {\n items = plotArea.findPoint(function(point) {\n return point.series.index === seriesIndex && point.index === pointIndex;\n });\n } else {\n items = plotArea.pointsBySeriesIndex(seriesIndex);\n }\n\n if (this._hasInactiveOpacity() && currentSeries.visible && items) {\n var multipleSeries = plotArea.series.length > 1;\n var point = items.length ? items[0] : items;\n\n this._displayInactiveOpacity(point, multipleSeries, items);\n } else {\n highlight.show(items);\n }\n },\n\n _shouldAttachMouseMove: function() {\n return this._plotArea.crosshairs.length || (this._tooltip && this._sharedTooltip()) || this.requiresHandlers([ PLOT_AREA_HOVER, PLOT_AREA_LEAVE ]);\n },\n\n updateMouseMoveHandler: function() {\n var obj;\n unbindEvents(this.element, ( obj = {}, obj[ MOUSEMOVE ] = this._mousemove, obj ));\n\n if (this._shouldAttachMouseMove()) {\n var obj$1;\n bindEvents(this.element, ( obj$1 = {}, obj$1[ MOUSEMOVE ] = this._mousemove, obj$1 ));\n }\n },\n\n applyOptions: function(options, theme) {\n clearMissingValues(this._originalOptions, options);\n this._originalOptions = deepExtend(this._originalOptions, options);\n this.options = deepExtend({}, this._originalOptions);\n\n if (theme) {\n this._theme = theme;\n this.chartService.theme = theme;\n }\n this._initTheme(this.options, this._theme);\n\n this._toggleDragZoomEvents();\n },\n\n setOptions: function(options, theme) {\n this.applyOptions(options, theme);\n this.bindCategories();\n this.redraw();\n this.updateMouseMoveHandler();\n },\n\n setDirection: function(rtl) {\n this.chartService.rtl = Boolean(rtl);\n if (this.surface && this.surface.type === 'svg') {\n this._destroySurface();\n }\n },\n\n setIntlService: function(intl) {\n this.chartService.intl = intl;\n },\n\n noTransitionsRedraw: function() {\n this._noTransitionsRedraw();\n },\n\n destroy: function() {\n this._destroyed = true;\n\n var obj;\n unbindEvents(this.element, ( obj = {}, obj[ CONTEXTMENU ] = this._clickHandler, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj[ MOUSEMOVE ] = this._mousemove, obj[ MOUSELEAVE ] = this._mouseleaveHandler, obj[ KEYDOWN ] = this._keydownHandler, obj[ FOCUS ] = this._focusHandler, obj[ BLUR] = this._blurHandler, obj ));\n\n if (this.domEvents) {\n this.domEvents.destroy();\n delete this.domEvents;\n }\n\n if (this._mouseMoveTrackHandler) {\n var obj$1;\n unbindEvents(document, ( obj$1 = {}, obj$1[ MOUSEMOVE ] = this._mouseMoveTrackHandler, obj$1 ));\n }\n\n this._focusState = null;\n\n this._destroyView();\n\n this._destroySurface();\n\n this._clearRedrawTimeout();\n },\n\n _destroySurface: function() {\n var surface = this.surface;\n if (surface) {\n surface.unbind(\"mouseenter\", this._surfaceMouseenterHandler);\n surface.unbind(\"mouseleave\", this._surfaceMouseleaveHandler);\n surface.destroy();\n\n this.surface = null;\n }\n },\n\n _destroySelections: function() {\n var selections = this._selections;\n\n if (selections) {\n while (selections.length > 0) {\n selections.shift().destroy();\n }\n }\n },\n\n _destroyView: function() {\n var model = this._model;\n\n if (model) {\n model.destroy();\n this._model = null;\n }\n\n this._unsetActivePoint();\n this._clearFocusedElement();\n this._resetDrilldownPoint();\n this._destroySelections();\n\n if (this._tooltip) {\n this._tooltip.destroy();\n }\n\n if (this._highlight) {\n this._highlight.destroy();\n }\n\n if (this._zoomSelection) {\n this._zoomSelection.destroy();\n delete this._zoomSelection;\n }\n\n if (this._pannable) {\n this._pannable.destroy();\n delete this._pannable;\n }\n\n if (this._mousewheelZoom) {\n this._mousewheelZoom.destroy();\n delete this._mousewheelZoom;\n }\n }\n });\n\n function resolveAxisAliases(options) {\n var aliases = AXIS_NAMES;\n\n for (var idx = 0; idx < aliases.length; idx++) {\n var alias = aliases[idx] + \"Axes\";\n if (options[alias]) {\n options[aliases[idx] + \"Axis\"] = options[alias];\n delete options[alias];\n }\n }\n }\n\n function pointByCategoryName(points, name) {\n if (points) {\n for (var idx = 0; idx < points.length; idx++) {\n if (points[idx].category === name) {\n return [ points[idx] ];\n }\n }\n }\n }\n\n function applyAxisDefaults(options, themeOptions) {\n var themeAxisDefaults = ((themeOptions || {}).axisDefaults) || {};\n var axisName, axisDefaults, axes;\n\n function mapAxisOptions(axisOptions) {\n var axisColor = (axisOptions || {}).color || axisDefaults.color;\n var result = deepExtend({},\n themeAxisDefaults,\n themeAxisDefaults[axisName],\n axisDefaults,\n axisDefaults[axisName], {\n line: { color: axisColor },\n labels: { color: axisColor },\n title: { color: axisColor }\n },\n axisOptions\n );\n\n delete result[axisName];\n\n return result;\n }\n\n for (var idx = 0; idx < AXIS_NAMES.length; idx++) {\n axisName = AXIS_NAMES[idx] + \"Axis\";\n axisDefaults = options.axisDefaults || {};\n axes = [].concat(options[axisName]);\n\n axes = axes.map(mapAxisOptions);\n\n options[axisName] = axes.length > 1 ? axes : axes[0];\n }\n }\n\n function applySeriesDefaults(options, themeOptions) {\n var series = options.series;\n var seriesLength = series.length;\n var seriesDefaults = options.seriesDefaults;\n var commonDefaults = deepExtend({}, options.seriesDefaults);\n var themeSeriesDefaults = themeOptions ? deepExtend({}, themeOptions.seriesDefaults) : {};\n var commonThemeDefaults = deepExtend({}, themeSeriesDefaults);\n\n cleanupNestedSeriesDefaults(commonDefaults);\n cleanupNestedSeriesDefaults(commonThemeDefaults);\n\n for (var i = 0; i < seriesLength; i++) {\n var seriesType = series[i].type || options.seriesDefaults.type;\n\n var baseOptions = deepExtend(\n { data: [] },\n commonThemeDefaults,\n themeSeriesDefaults[seriesType],\n { tooltip: options.tooltip },\n commonDefaults,\n seriesDefaults[seriesType]\n );\n\n series[i]._defaults = baseOptions;\n series[i] = deepExtend({}, baseOptions, series[i]);\n series[i].data = series[i].data || [];\n }\n }\n\n function cleanupNestedSeriesDefaults(seriesDefaults) {\n delete seriesDefaults.bar;\n delete seriesDefaults.column;\n delete seriesDefaults.rangeColumn;\n delete seriesDefaults.line;\n delete seriesDefaults.verticalLine;\n delete seriesDefaults.pie;\n delete seriesDefaults.donut;\n delete seriesDefaults.area;\n delete seriesDefaults.verticalArea;\n delete seriesDefaults.scatter;\n delete seriesDefaults.scatterLine;\n delete seriesDefaults.bubble;\n delete seriesDefaults.candlestick;\n delete seriesDefaults.ohlc;\n delete seriesDefaults.boxPlot;\n delete seriesDefaults.bullet;\n delete seriesDefaults.verticalBullet;\n delete seriesDefaults.polarArea;\n delete seriesDefaults.polarLine;\n delete seriesDefaults.radarArea;\n delete seriesDefaults.radarLine;\n delete seriesDefaults.waterfall;\n }\n\n function axisRanges(axes) {\n var ranges = {};\n\n for (var i = 0; i < axes.length; i++) {\n var axis = axes[i];\n var axisName = axis.options.name;\n if (axisName) {\n ranges[axisName] = axis.range();\n }\n }\n\n return ranges;\n }\n\n var DATA_FIELDS = [ 'data', 'categories' ];\n\n function clearMissingValues(originalOptions, options) {\n for (var field in options) {\n if (!inArray(field, DATA_FIELDS) && dataviz.hasOwnProperty(options, field)) {\n var fieldValue = options[field];\n var originalValue = originalOptions[field];\n if (defined(originalValue)) {\n var nullValue = fieldValue === null;\n if ((nullValue || !defined(fieldValue))) {\n delete originalOptions[field];\n if (nullValue) {\n delete options[field];\n }\n } else if (originalValue && isObject(fieldValue)) {\n if (isObject(originalValue)) {\n clearMissingValues(originalValue, fieldValue);\n }\n }\n }\n }\n }\n }\n\n function triggerPaneRender(panes) {\n for (var idx = 0; idx < panes.length; idx++) {\n panes[idx].notifyRender();\n }\n }\n\n setDefaultOptions(Chart, {\n renderAs: \"\",\n chartArea: {},\n legend: {\n visible: true,\n labels: {},\n accessibility: {\n highlight: {\n border: {\n opacity: 1,\n color: BLACK,\n width: 2\n }\n }\n }\n },\n categoryAxis: {},\n seriesDefaults: {\n type: COLUMN,\n data: [],\n highlight: {\n visible: true\n },\n labels: {},\n negativeValues: {\n visible: false\n },\n accessibility: {\n highlight: {\n border: {\n opacity: 1,\n width: 2\n },\n zIndex: 200\n }\n }\n },\n series: [],\n seriesColors: null,\n tooltip: {\n visible: false\n },\n transitions: true,\n valueAxis: {},\n plotArea: {},\n title: {},\n xAxis: {},\n yAxis: {},\n panes: [ {} ],\n pannable: false,\n zoomable: false\n });\n\n kendo.deepExtend(kendo.dataviz, {\n constants: constants,\n Aggregates: Aggregates,\n AreaChart: AreaChart,\n AreaSegment: AreaSegment,\n AxisGroupRangeTracker: AxisGroupRangeTracker,\n Bar: Bar,\n BarChart: BarChart,\n BarLabel: BarLabel,\n BoxPlotChart: BoxPlotChart,\n BoxPlot: BoxPlot,\n BubbleChart: BubbleChart,\n Bullet: Bullet,\n BulletChart: BulletChart,\n CandlestickChart: CandlestickChart,\n Candlestick: Candlestick,\n CategoricalChart: CategoricalChart,\n CategoricalErrorBar: CategoricalErrorBar,\n CategoricalPlotArea: CategoricalPlotArea,\n Chart: Chart,\n ChartContainer: ChartContainer,\n ClipAnimation: ClipAnimation,\n ClusterLayout: ClusterLayout,\n Crosshair: Crosshair,\n CrosshairTooltip: CrosshairTooltip,\n DefaultAggregates: DefaultAggregates,\n DonutChart: DonutChart,\n DonutPlotArea: DonutPlotArea,\n DonutSegment: DonutSegment,\n ErrorBarBase: ErrorBarBase,\n ErrorRangeCalculator: ErrorRangeCalculator,\n Highlight: Highlight,\n SharedTooltip: SharedTooltip,\n Legend: Legend,\n LegendItem: LegendItem,\n LegendLayout: LegendLayout,\n LineChart: LineChart,\n LinePoint: LinePoint,\n LineSegment: LineSegment,\n Pane: Pane,\n PieAnimation: PieAnimation,\n PieChart: PieChart,\n PieChartMixin: PieChartMixin,\n PiePlotArea: PiePlotArea,\n PieSegment: PieSegment,\n PlotAreaBase: PlotAreaBase,\n PlotAreaEventsMixin: PlotAreaEventsMixin,\n PlotAreaFactory: PlotAreaFactory,\n PointEventsMixin: PointEventsMixin,\n RangeBar: RangeBar,\n RangeBarChart: RangeBarChart,\n RangeAreaPoint: RangeAreaPoint,\n RangeAreaChart: RangeAreaChart,\n ScatterChart: ScatterChart,\n ScatterErrorBar: ScatterErrorBar,\n ScatterLineChart: ScatterLineChart,\n Selection: Selection,\n SeriesAggregator: SeriesAggregator,\n SeriesBinder: SeriesBinder,\n SplineSegment: SplineSegment,\n SplineAreaSegment: SplineAreaSegment,\n StackWrap: StackWrap,\n Tooltip: Tooltip,\n OHLCChart: OHLCChart,\n OHLCPoint: OHLCPoint,\n WaterfallChart: WaterfallChart,\n WaterfallSegment: WaterfallSegment,\n XYPlotArea: XYPlotArea,\n MousewheelZoom: MousewheelZoom,\n ZoomSelection: ZoomSelection,\n Pannable: Pannable,\n ChartAxis: ChartAxis,\n ChartPane: ChartPane,\n ChartPlotArea: ChartPlotArea,\n findAxisByName: findAxisByName,\n anyHasZIndex: anyHasZIndex,\n appendIfNotNull: appendIfNotNull,\n areNumbers: areNumbers,\n bindSegments: bindSegments,\n categoriesCount: categoriesCount,\n countNumbers: countNumbers,\n equalsIgnoreCase: equalsIgnoreCase,\n evalOptions: evalOptions,\n filterSeriesByType: filterSeriesByType,\n parseDateCategory: parseDateCategory,\n getField: getField,\n hasGradientOverlay: hasGradientOverlay,\n hasValue: hasValue,\n isDateAxis: isDateAxis,\n segmentVisible: segmentVisible,\n singleItemOrArray: singleItemOrArray,\n createOutOfRangePoints: createOutOfRangePoints\n });\n\n })(window.kendo.jQuery);\n\n var __meta__$D = {\n id: \"breadcrumb\",\n name: \"Breadcrumb\",\n category: \"web\",\n description: \"The Breadcrumb widget displays navigation breadcrumb.\",\n depends: [ \"core\", \"icons\" ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n Widget = kendo.ui.Widget,\n extend = $.extend,\n mediaQuery = kendo.mediaQuery,\n isPlainObject = $.isPlainObject,\n support = kendo.support,\n encode = kendo.htmlEncode,\n\n BREADCRUMB = \".kendoBreadcrumb\",\n\n ARIA_HIDDEN = \"aria-hidden\",\n ARIA_LABEL = \"aria-label\",\n\n CLICK = \"click\",\n FOCUS = \"focus\",\n BLUR = \"blur\",\n KEYDOWN = \"keydown\",\n CHANGE = \"change\",\n DOT = \".\";\n\n var breadcrumbStyles = {\n widget: \"k-breadcrumb\",\n overlay: \"k-breadcrumb-container\",\n textbox: \"k-input-inner\",\n textboxWrapper: \"k-textbox k-input k-input-md k-rounded-md k-input-solid\",\n link: \"k-breadcrumb-link\",\n item: \"k-breadcrumb-item\",\n delimiter: \"k-breadcrumb-delimiter-icon\",\n rootItem: \"k-breadcrumb-root-item\",\n rootLink: \"k-breadcrumb-root-link\",\n overflowIcon: \"k-breadcrumb-overflow-icon\",\n focused: \"k-focus\",\n hidden: \"k-hidden\",\n inputWrapper: \"k-breadcrumb-input-container\"\n };\n\n var Breadcrumb = Widget.extend({\n init: function(element, options) {\n var that = this;\n\n options = options || {};\n\n Widget.fn.init.call(that, element, options);\n\n that._wrapper();\n\n if (options.editable) {\n that._editable();\n that._tabindex();\n }\n\n that.wrapper.on(CLICK + BREADCRUMB, \"a:not(.k-disabled)\", that._click.bind(that));\n\n if (options.value || options.bindToLocation || !options.items) {\n that._value();\n } else if (options.items) {\n that.items(options.items);\n }\n\n that._applyCssClasses();\n\n that._resizeHandler = kendo.onResize(function() {\n that.resize(true);\n });\n },\n\n options: {\n editable: false,\n navigational: false,\n bindToLocation: false,\n items: null,\n name: \"Breadcrumb\",\n size: \"medium\",\n gap: 0,\n rootIcon: \"home\",\n delimiterIcon: \"chevron-right\",\n messages: {\n rootTitle: \"Go to root\"\n }\n },\n\n events: [ CHANGE, CLICK ],\n\n destroy: function() {\n var that = this;\n\n Widget.fn.destroy.call(that);\n\n kendo.unbindResize(that._resizeHandler);\n\n that.wrapper\n .add(that.wrapper.find(\"input\"))\n .add(that.wrapper.find(\"a\"))\n .off(BREADCRUMB);\n },\n\n items: function(items) {\n var that = this;\n\n if (items === undefined$1) {\n return that.options.items;\n }\n\n that.options.items = items;\n that._segments = items;\n that.refresh();\n },\n\n _update: function(val) {\n var that = this;\n\n if (val !== that.value()) {\n that._generateSegments(val);\n that.refresh();\n that.trigger(CHANGE, { sender: this, value: val });\n }\n },\n\n _generateSegments: function(value) {\n var that = this,\n options = that.options,\n items = options.items,\n path, segments;\n\n segments = that._split(value);\n\n if (!items) {\n that.options.items = that._segments = segments;\n return;\n }\n\n that._segments = [];\n\n for (var i = 0; i < segments.length; i++) {\n path = that._path(items.slice(0, i + 1));\n\n if (path !== \"\" && value.indexOf(path) > -1 && items[i] && items[i].text === segments[i]) {\n that._segments.push(items[i]);\n } else {\n that._segments.push(segments[i]);\n }\n }\n },\n\n _click: function(e) {\n var that = this,\n options = that.options,\n item = $(e.target).closest(DOT + breadcrumbStyles.item),\n previousDomItems = item.prevAll().addBack(),\n previousItems = that._getItems(previousDomItems),\n path = that._path(previousItems),\n segment = that._segments[item.index()];\n\n if (!options.navigational) {\n e.preventDefault();\n }\n\n if (!that.trigger(CLICK, { sender: that, originalEvent: e, isRoot: segment.type === \"rootitem\", item: segment })) {\n that._update(path);\n }\n },\n\n _getItems: function(items) {\n var that = this;\n\n return $.map(items, function(item) {\n return that._segments[$(item).index()] || item.innerText;\n });\n },\n\n _edit: function() {\n var that = this,\n input = that.input;\n\n that.oldValue = that.value();\n that.inputWrapper.css(\"height\", that.wrapper.height());\n that.overlay.hide();\n that.input.val(that.value());\n that.input.attr(ARIA_HIDDEN, false);\n that.inputWrapper.show();\n\n setTimeout(function() {\n input.select();\n });\n },\n\n _blur: function(shouldRestoreValue) {\n var that = this,\n input = that.input,\n inputWrapper = that.inputWrapper,\n wrapper = that.wrapper,\n overlay = that.overlay,\n val = input.val().replace(/\\/{2,}/g, \"/\");\n\n if (overlay.is(\":visible\")) {\n return;\n }\n\n if (shouldRestoreValue) {\n val = that.oldValue;\n }\n\n input.attr(ARIA_HIDDEN, true);\n inputWrapper.hide();\n overlay.show();\n input.val(\"\");\n that._update(val);\n wrapper.removeClass(breadcrumbStyles.focused);\n },\n\n _keydown: function(e) {\n var that = this,\n key = e.keyCode,\n isEnter = key === kendo.keys.ENTER,\n isEsc = key === kendo.keys.ESC;\n\n if (isEnter || isEsc) {\n that._blur(isEsc);\n\n setTimeout(function() {\n that.overlay.find(\"a\").first().trigger(\"focus\");\n });\n }\n },\n\n isNavigational: function(target) {\n var canNavigate =\n target.hasClass(breadcrumbStyles.textbox) ||\n target.closest(DOT + breadcrumbStyles.item);\n\n if (target[0] === this.wrapper[0]) {\n return false;\n }\n\n return canNavigate && !target.hasClass(\"k-breadcrumb-last-item\");\n },\n\n _wrapperKeydown: function(ev) {\n var that = this,\n target = $(ev.target),\n isNavigational = that.isNavigational(target);\n\n if (ev.keyCode === kendo.keys.ENTER && !isNavigational) {\n that._edit();\n }\n },\n\n _wrapperClick: function(ev) {\n var that = this,\n target = $(ev.target),\n isNavigational = that.isNavigational(target);\n\n if (!isNavigational) {\n this._edit();\n }\n },\n\n _wrapperFocus: function(ev) {\n $(ev.target).addClass(breadcrumbStyles.focused);\n },\n\n _wrapperBlur: function(ev) {\n $(ev.target).removeClass(breadcrumbStyles.focused);\n },\n\n _wrapper: function() {\n var that = this,\n element = this.element,\n elementIsInput = element.is(\"input\"),\n inputWrapper = $(\"
    \");\n\n that.wrapper = elementIsInput ? element\n .wrap($(\"