{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@kurkle/color/dist/color.esm.js","webpack:///./node_modules/chart.js/dist/chunks/helpers.segment.js","webpack:///./node_modules/chart.js/dist/chart.js","webpack:///./node_modules/chart.js/auto/auto.js","webpack:///./node_modules/turbolinks/dist/turbolinks.js","webpack:///./node_modules/@rails/activestorage/app/assets/javascripts/activestorage.js","webpack:///./node_modules/chartkick/dist/chartkick.esm.js","webpack:///./app/javascript/channels/index.js","webpack:///./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","webpack:///./node_modules/@rails/actioncable/app/assets/javascripts/action_cable.js","webpack:///./app/javascript/packs/application.js","webpack:///(webpack)/buildin/global.js","webpack:///./app/javascript/channels sync _channel\\.js$","webpack:///./node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack:///./node_modules/date-fns/esm/toDate/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack:///./node_modules/date-fns/esm/_lib/defaultLocale/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/index.js","webpack:///./node_modules/date-fns/esm/_lib/toInteger/index.js","webpack:///./node_modules/date-fns/esm/addMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/subMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/_lib/assign/index.js","webpack:///./node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack:///./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack:///./node_modules/date-fns/esm/parse/_lib/Setter.js","webpack:///./node_modules/date-fns/esm/parse/_lib/Parser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/EraParser.js","webpack:///./node_modules/date-fns/esm/constants/index.js","webpack:///./node_modules/date-fns/esm/parse/_lib/constants.js","webpack:///./node_modules/date-fns/esm/parse/_lib/utils.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/YearParser.js","webpack:///./node_modules/date-fns/esm/_lib/defaultOptions/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekYearParser.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekYearParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/ExtendedYearParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/QuarterParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/StandAloneQuarterParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/MonthParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/StandAloneMonthParser.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekParser.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekParser.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/DateParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/DayOfYearParser.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCDay/index.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/DayParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/LocalDayParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/StandAloneLocalDayParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/ISODayParser.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCISODay/index.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/AMPMParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/AMPMMidnightParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/DayPeriodParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/Hour1to12Parser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/Hour0to23Parser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/Hour0To11Parser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/Hour1To24Parser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/MinuteParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/SecondParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/FractionOfSecondParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneWithZParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/TimestampSecondsParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/TimestampMillisecondsParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/index.js","webpack:///./node_modules/date-fns/esm/parse/index.js","webpack:///./node_modules/date-fns/esm/parseISO/index.js","webpack:///./node_modules/date-fns/esm/isDate/index.js","webpack:///./node_modules/date-fns/esm/isValid/index.js","webpack:///./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack:///./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack:///./node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack:///./node_modules/date-fns/esm/format/index.js","webpack:///./node_modules/date-fns/esm/addDays/index.js","webpack:///./node_modules/date-fns/esm/addMonths/index.js","webpack:///./node_modules/date-fns/esm/differenceInMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/_lib/roundingMethods/index.js","webpack:///./node_modules/date-fns/esm/startOfDay/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarDays/index.js","webpack:///./node_modules/date-fns/esm/differenceInDays/index.js","webpack:///./node_modules/date-fns/esm/compareAsc/index.js","webpack:///./node_modules/date-fns/esm/endOfDay/index.js","webpack:///./node_modules/date-fns/esm/endOfMonth/index.js","webpack:///./node_modules/date-fns/esm/differenceInMonths/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarMonths/index.js","webpack:///./node_modules/date-fns/esm/isLastDayOfMonth/index.js","webpack:///./node_modules/date-fns/esm/differenceInYears/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarYears/index.js","webpack:///./node_modules/date-fns/esm/startOfWeek/index.js","webpack:///./node_modules/chartjs-adapter-date-fns/dist/chartjs-adapter-date-fns.esm.js","webpack:///./node_modules/date-fns/esm/addSeconds/index.js","webpack:///./node_modules/date-fns/esm/addMinutes/index.js","webpack:///./node_modules/date-fns/esm/addHours/index.js","webpack:///./node_modules/date-fns/esm/addWeeks/index.js","webpack:///./node_modules/date-fns/esm/addQuarters/index.js","webpack:///./node_modules/date-fns/esm/addYears/index.js","webpack:///./node_modules/date-fns/esm/differenceInSeconds/index.js","webpack:///./node_modules/date-fns/esm/differenceInMinutes/index.js","webpack:///./node_modules/date-fns/esm/differenceInHours/index.js","webpack:///./node_modules/date-fns/esm/differenceInWeeks/index.js","webpack:///./node_modules/date-fns/esm/differenceInQuarters/index.js","webpack:///./node_modules/date-fns/esm/startOfSecond/index.js","webpack:///./node_modules/date-fns/esm/startOfMinute/index.js","webpack:///./node_modules/date-fns/esm/startOfHour/index.js","webpack:///./node_modules/date-fns/esm/startOfMonth/index.js","webpack:///./node_modules/date-fns/esm/startOfQuarter/index.js","webpack:///./node_modules/date-fns/esm/startOfYear/index.js","webpack:///./node_modules/date-fns/esm/endOfSecond/index.js","webpack:///./node_modules/date-fns/esm/endOfMinute/index.js","webpack:///./node_modules/date-fns/esm/endOfHour/index.js","webpack:///./node_modules/date-fns/esm/endOfWeek/index.js","webpack:///./node_modules/date-fns/esm/endOfQuarter/index.js","webpack:///./node_modules/date-fns/esm/endOfYear/index.js","webpack:///./node_modules/chartkick/chart.js/chart.esm.js","webpack:///./app/javascript/channels/consumer.js","webpack:///./app/javascript/channels/merchant_channel.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","v","lim","h","Math","max","min","p2b","n2b","b2n","n2p","map$1","A","B","C","D","E","F","a","b","e","f","hex","h1","h2","eq","hexString","g","isShort","undefined","HUE_RE","hsl2rgbn","k","arguments","length","hsv2rgbn","hwb2rgbn","w","rgb","rgb2hsl","hueValue","calln","Array","isArray","map","hsl2rgb","hue","hueParse","str","exec","p1","p2","hwb2rgb","hsv2rgb","x","Z","Y","X","W","V","U","T","S","R","Q","P","O","N","M","L","K","G","H","I","J","names$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","Xe","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Yd","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","Qe","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","nameParse","unpacked","keys","tkeys","j","ok","nk","replace","parseInt","unpack","transparent","toLowerCase","RGB_RE","pow","modHSL","ratio","tmp","clone","proto","assign","fromObject","input","functionParse","charAt","rgbParse","Color","constructor","type","ret","len","this","_rgb","_valid","valid","obj","rgbString","hslString","mix","color","weight","c1","c2","w2","w1","interpolate","rgb1","rgb2","alpha","clearer","greyscale","val","opaquer","negate","lighten","darken","saturate","desaturate","rotate","deg","noop","uid","id","isNullOrUndef","toString","slice","isObject","isNumberFinite","Number","isFinite","finiteOrDefault","defaultValue","valueOrDefault","toDimension","dimension","endsWith","parseFloat","callback","fn","args","thisArg","apply","each","loopable","reverse","_elementsEqual","a0","a1","ilen","v0","v1","datasetIndex","index","source","target","klen","isValidKey","indexOf","_merger","options","tval","sval","merge","sources","merger","current","mergeIf","_mergerIf","keyResolvers","y","resolveObjectKey","resolver","parts","split","part","push","_splitKey","_getKeyResolver","_capitalize","toUpperCase","defined","isFunction","setsEqual","size","item","has","PI","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","sign","almostEquals","epsilon","abs","niceNum","range","roundedRange","round","niceRange","floor","fraction","isNumber","isNaN","_setMinAndMaxByKey","array","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","sqrt","angle","atan2","distance","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","start","end","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_isBetween","_lookup","table","cmp","mid","hi","lo","_lookupByKey","last","ti","_rlookupByKey","arrayEvents","unlistenArrayEvents","listener","stub","_chartjs","listeners","splice","forEach","_arrayUnique","items","set","Set","add","from","requestAnimFrame","window","requestAnimationFrame","throttled","argsToUse","ticking","_len2","_key2","_toLeftRightCenter","align","_alignStartEnd","_getStartAndCountOfVisiblePoints","meta","points","animationsDisabled","pointCount","count","_sorted","iScale","_parsed","axis","_iScale$getUserBounds","getUserBounds","minDefined","maxDefined","getPixelForValue","_scaleRangesChanged","xScale","yScale","_scaleRanges","newRanges","xmin","xmax","ymin","ymax","changed","atEdge","elasticIn","sin","elasticOut","effects","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","cos","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","isPatternOrGradient","getHoverColor","numbers","colors","intlCache","Map","formatNumber","num","locale","cacheKey","JSON","stringify","formatter","Intl","NumberFormat","getNumberFormat","format","formatters","values","numeric","tickValue","ticks","chart","notation","delta","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","logarithmic","remain","significand","includes","Ticks","overrides","getScope$1","node","root","scope","Defaults","_descriptors","_appliers","animation","backgroundColor","borderColor","datasets","devicePixelRatio","context","platform","getDevicePixelRatio","elements","events","font","family","style","lineHeight","hover","hoverBackgroundColor","ctx","hoverBorderColor","hoverColor","indexAxis","interaction","intersect","includeInvisible","maintainAspectRatio","onHover","onClick","parsing","plugins","responsive","scale","scales","showLine","drawActiveElementsOnTop","describe","override","route","targetScope","targetName","scopeObject","targetScopeObject","privateName","defineProperties","writable","local","appliers","defaults","_scriptable","startsWith","_indexable","_fallback","delay","duration","easing","loop","to","properties","active","resize","show","animations","visible","hide","autoPadding","padding","top","right","bottom","left","display","offset","beginAtZero","bounds","grace","grid","lineWidth","drawOnChartArea","drawTicks","tickLength","tickWidth","_ctx","tickColor","border","dash","dashOffset","width","title","text","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkip","autoSkipPadding","labelOffset","minor","major","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","_measureText","data","gc","longest","string","textWidth","measureText","_longestText","arrayOfThings","cache","garbageCollect","save","jlen","thing","nestedThing","restore","gcLen","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","canvas","getContext","resetTransform","clearRect","height","drawPoint","drawPointLegend","xOffset","yOffset","cornerRadius","xOffsetW","yOffsetW","pointStyle","rotation","radius","rad","translate","drawImage","beginPath","ellipse","arc","closePath","moveTo","lineTo","SQRT1_2","rect","fill","borderWidth","stroke","_isPointInArea","point","area","margin","clipArea","clip","unclipArea","_steppedLineTo","previous","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","renderText","opts","lines","strokeWidth","strokeColor","line","translation","fillStyle","textAlign","textBaseline","setRenderOpts","backdrop","drawBackdrop","strokeStyle","strokeText","maxWidth","fillText","decorateText","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","decorationWidth","oldColor","fillRect","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","FONT_STYLE","toLineHeight","matches","match","numberOrZero","_readValueToProps","props","objProps","read","prop","toTRBL","toTRBLCorners","toPadding","toFont","fallback","console","warn","toFontString","resolve","inputs","info","cacheable","createContext","parentContext","_createResolver","scopes","prefixes","rootScopes","getTarget","_resolve","_cacheable","_scopes","_rootScopes","_getTarget","Proxy","deleteProperty","_keys","_cached","proxy","prefix","readKey","needsSubResolver","createSubResolver","_resolveWithPrefixes","getOwnPropertyDescriptor","Reflect","getPrototypeOf","getKeysFromAllScopes","ownKeys","storage","_storage","_attachContext","subProxy","descriptorDefaults","_proxy","_context","_subProxy","_stack","setContext","receiver","descriptors","isScriptable","Error","join","delete","_resolveScriptable","isIndexable","arr","filter","_resolveArray","_resolveWithContext","allKeys","configurable","scriptable","indexable","_proxy$_scriptable","_proxy$_indexable","_proxy$_allKeys","_allKeys","resolveFallback","getScope","parent","addScopes","parentScopes","parentFallback","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","_parseObjectDataRadialScale","_this$_parsing$key","_parsing","parsed","parse","EPSILON","getPoint","skip","getValueAxis","splineCurve","firstPoint","middlePoint","afterPoint","next","d01","d12","s01","s12","fa","fb","splineCurveMonotone","valueAxis","pointsLen","deltaK","mK","pointBefore","pointCurrent","pointAfter","slopeDelta","alphaK","betaK","tauK","squaredMagnitude","monotoneAdjust","iPixel","vPixel","monotoneCompute","capControlPoint","pt","_updateBezierControlPoints","controlPoints","spanGaps","cubicInterpolationMode","prev","tension","capBezierPoints","inArea","inAreaPrev","inAreaNext","_isDomSupported","document","_getParentNode","domNode","parentNode","host","parseMaxStyle","styleValue","parentProperty","valueInPixels","getComputedStyle","element","ownerDocument","defaultView","positions","getPositionedStyle","styles","suffix","result","pos","useOffsetPos","shadowRoot","getRelativePosition","event","borderBox","boxSizing","paddings","borders","_getCanvasPosition","touches","offsetX","offsetY","box","getBoundingClientRect","clientX","clientY","getCanvasPosition","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","margins","maxHeight","containerSize","container","containerStyle","containerBorder","containerPadding","clientWidth","clientHeight","getContainerSize","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","passive","addEventListener","removeEventListener","readUsedSize","el","getPropertyValue","getStyle","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","getRtlAdapter","rtl","rectX","setWidth","xPlus","leftForLtr","itemWidth","getRightToLeftAdapter","_itemWidth","overrideTextDirection","direction","original","getPropertyPriority","setProperty","prevTextDirection","restoreTextDirection","propertyFn","between","compare","normalize","normalizeSegment","_ref","_boundSegment","segment","startBound","endBound","_propertyFn2","_getSegment","_propertyFn","getSegment","prevValue","inside","subStart","shouldStart","shouldStop","_boundSegments","segments","sub","splitByStyles","segmentOptions","chartContext","_chart","baseStyle","readStyle","_datasetIndex","prevStyle","addStyle","st","dir","p0","p0DataIndex","p1DataIndex","styleChanged","doSplitByStyles","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","enumerableOnly","getOwnPropertySymbols","symbols","sym","_objectSpread","_defineProperty","getOwnPropertyDescriptors","arg","hint","prim","toPrimitive","res","TypeError","String","_toPrimitive","_toPropertyKey","_slicedToArray","_arrayWithHoles","_i","iterator","_s","_e","_x","_r","_arr","_n","_d","done","err","return","_iterableToArrayLimit","minLen","_arrayLikeToArray","test","_unsupportedIterableToArray","_nonIterableRest","arr2","_request","_charts","_running","_lastDate","_notify","anims","date","callbacks","numSteps","initial","currentStep","_refresh","_update","Date","now","remaining","running","draw","_active","_total","tick","pop","_getAnims","charts","complete","progress","listen","cb","reduce","acc","cur","_duration","stop","cancel","remove","animator","interpolators","boolean","factor","c0","number","cfg","currentValue","_fn","_easing","_start","_loop","_target","_prop","_from","_to","_promises","update","elapsed","wait","promises","Promise","rej","resolved","method","config","_properties","configure","animationOptions","animatedProps","getOwnPropertyNames","option","_animateOptions","newOptions","$shared","$animations","resolveTargetOptions","_createAnimations","anim","all","awaitAll","then","scaleClip","allowedOverflow","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","applyStack","stack","dsIndex","singleMode","otherValue","isStacked","stacked","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","controller","_cachedMeta","_stacks","iAxis","vAxis","indexScale","valueScale","getStackKey","_top","_bottom","_visualValues","getFirstScaleId","shift","clearStacks","isDirectUpdateMode","cloneIfNotShared","cached","shared","_cachedDataOpts","getMeta","_type","_data","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","supportsDecimation","$context","_syncList","datasetElementType","dataElementType","initialize","linkScales","_stacked","addElements","isPluginEnabled","updateIndex","dataset","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","getScaleForId","rScale","getDatasetMeta","scaleID","_getOtherScale","reset","_destroy","_dataCheck","adata","convertObjectDataToArray","isExtensible","base","_len","_key","buildOrUpdateElements","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","sorted","parseArrayData","parseObjectData","parsePrimitiveData","isNotInOrderComparedToPrev","labels","getLabels","singleScale","_this$_parsing","_this$_parsing$xAxisK","xAxisKey","_this$_parsing$yAxisK","yAxisKey","getParsed","getDataElement","updateRangeFromParsed","parsedValue","NaN","getMinMax","canStack","otherScale","hidden","createStack","NEGATIVE_INFINITY","_getUserBounds","_scale$getUserBounds","otherMin","otherMax","_skip","getAllParsedValues","getMaxOverflow","getLabelAndValue","label","getLabelForValue","_clip","disabled","toClip","defaultClip","chartArea","resolveDatasetElementOptions","resolveDataElementOptions","dataIndex","raw","createDataContext","createDatasetContext","_resolveElementOptions","elementType","sharing","datasetElementScopeKeys","names","resolveNamedOptions","freeze","_resolveAnimations","transition","datasetAnimationScopeKeys","getSharedOptions","includeOptions","sharedOptions","_animationsDisabled","_getSharedOptions","firstOpts","previouslySharedOptions","updateSharedOptions","updateElement","_setStyle","removeHoverStyle","setHoverStyle","_removeDatasetHoverStyle","_setDatasetHoverStyle","_ref2","arg1","arg2","numMeta","numData","_insertElements","_removeElements","move","updateElements","removed","_sync","_args2","_dataChanges","_onDataPush","_onDataPop","_onDataShift","_onDataSplice","newCount","_onDataUnshift","computeMinSampleSize","_cache","$bar","visibleMetas","concat","sort","getAllScaleValues","curr","_length","updateMinAndPrev","getPixelForTick","parseValue","entry","startValue","endValue","barStart","barEnd","_custom","parseFloatBar","parseArrayOrPrimitive","isFloatBar","custom","setBorderSkipped","edge","borderSkipped","_borderProps","horizontal","borderProps","enableBorderRadius","parseEdge","orig","v2","startEnd","setInflateAmount","_ref3","inflateAmount","_this$_parsing2","_this$_parsing2$xAxis","_this$_parsing2$yAxis","iAxisKey","vAxisKey","super","bars","getBasePixel","isHorizontal","ruler","_getRuler","_this$_getSharedOptio","vpixels","head","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","center","_getStacks","grouped","skipNull","_getStackCount","_getStackIndex","pixels","barThickness","_startPixel","_endPixel","stackCount","categoryPercentage","barPercentage","_this$_cachedMeta","_this$options","baseValue","minBarLength","actualBase","floating","getDataVisibility","barSign","startPixel","getPixelForDecimal","endPixel","getValueForPixel","halfGrid","getLineWidthForValue","maxBarThickness","Infinity","percent","chunk","computeFlexCategoryTraits","thickness","computeFitCategoryTraits","stackIndex","rects","_index_","_value_","_this$_cachedMeta2","_this$_getSharedOptio2","innerRadius","outerRadius","_getRotation","_getCircumference","circumference","_getRotationExtents","isDatasetVisible","arcs","spacing","getMaxBorderWidth","getMaxOffset","maxSize","cutout","chartWeight","_getRingWeight","_this$_getRotationExt","_getRatioAndOffset","ratioX","ratioY","startAngle","endAngle","startX","startY","endX","endY","calcMax","calcMin","maxX","maxY","minX","minY","getRatioAndOffset","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","total","calculateTotal","_getRingWeightOffset","_circumference","animateRotate","calculateCircumference","animationOpts","centerX","centerY","animateScale","_this$_getSharedOptio3","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","legend","generateLabels","_chart$legend$options2","fontColor","legendItem","toggleDataVisibility","_meta$data","_dataset","_getStartAndCountOfVi","_decimated","animated","_this$_cachedMeta3","_this$_getSharedOptio4","_this$options2","maxGapLength","directUpdate","pointsCount","prevParsed","nullData","lastPoint","updateControlPoints","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","_chart$legend$options3","angleLines","circular","pointLabels","PieController","_fullLoop","pointPosition","getPointPositionForValue","_meta$data2","_getStartAndCountOfVi2","registry","getElement","_this$_cachedMeta4","_this$options3","controllers","__proto__","BarController","BubbleController","DoughnutController","LineController","PolarAreaController","RadarController","ScatterController","DateAdapterBase","members","init","formats","diff","startOf","endOf","adapters","_date","binarySearch","metaset","lookupMethod","_reversePixels","getRange","evaluateInteractionItems","position","handler","getSortedVisibleDatasetMetas","_metasets$i","_binarySearch","getIntersectItems","useFinalPosition","isPointInArea","inRange","getNearestCartesianItems","distanceMetric","useX","useY","deltaX","deltaY","getDistanceMetricForAxis","minDistance","getCenterPoint","getNearestItems","_element$getProps","getProps","getNearestRadialItems","getAxisItems","rangeMethod","intersectsItem","Interaction","modes","nearest","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","setLayoutDims","layouts","params","wrap","stackWeight","placed","buildStacks","vBoxMaxWidth","hBoxMaxHeight","layout","fullSize","availableWidth","availableHeight","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","getPadding","newWidth","outerWidth","newHeight","outerHeight","widthChanged","heightChanged","same","other","getMargins","marginForPositions","fitBoxes","boxes","refitBoxes","refit","_updateDims","setBoxDims","placeBoxes","userPadding","height1","width1","addBox","_layers","z","removeBox","layoutItem","minPadding","layoutBoxes","_box","_box$options","_box$options$stackWei","wrapBoxes","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","buildLayoutBoxes","verticalBoxes","horizontalBoxes","beforeLayout","visibleVerticalBoxCount","updatePos","change","handleMaxPadding","BasePlatform","acquireContext","releaseContext","isAttached","updateConfig","BasicPlatform","EXPANDO_KEY","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","eventListenerOptions","removeListener","nodeListContains","nodeList","contains","createAttachObserver","observer","MutationObserver","entries","trigger","addedNodes","removedNodes","observe","childList","subtree","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","createResizeObserver","ResizeObserver","contentRect","listenDevicePixelRatioChanges","releaseObserver","disconnect","unlistenDevicePixelRatioChanges","createProxyAndListen","_getRelativePosition","native","fromNativeEvent","addListener","renderHeight","getAttribute","renderWidth","displayWidth","displayHeight","initCanvas","removeAttribute","setAttribute","proxies","$proxies","attach","detach","isConnected","_detectPlatform","OffscreenCanvas","tooltipPosition","_this$getProps","hasValue","final","tickOpts","determinedMaxTicks","_tickSize","maxScale","maxChart","_maxLength","determineMaxTicks","ticksLimit","maxTicksLimit","majorIndices","enabled","getMajorIndices","numMajorIndices","first","newTicks","ceil","skipMajors","evenMajorSpacing","getEvenSpacing","factors","_factorize","calculateSpacing","avgMajorSpacing","majorStart","majorEnd","defaultRoutes","offsetFromEdge","getTicksLimit","ticksLength","sample","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","lineValue","getTickMarkLength","getTitleHeight","titleAlign","reverseAlign","_margins","paddingTop","paddingBottom","paddingLeft","paddingRight","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_longestTextCache","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","suggestedMin","suggestedMax","_this$getUserBounds","metas","getTicks","xLabels","yLabels","getLabelItems","_computeLabelItems","beforeUpdate","_this$options4","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","minmax","keepZero","_addGrace","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","afterAutoSkip","beforeFit","fit","afterFit","afterUpdate","reversePixels","_alignToPixels","alignToPixels","_callHooks","notifyPlugins","beforeTickToLabelConversion","generateTickLabels","afterTickToLabelConversion","numTicks","maxLabelDiagonal","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","_this$options5","titleOpts","gridOpts","titleHeight","_this$_getLabelSizes","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","_this$options6","_this$options6$ticks","isRotated","labelsBelowTicks","offsetLeft","offsetRight","_this$options7","isFullSize","_computeLabelSizes","caches","widths","heights","tickFont","fontString","nestedLabel","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","idx","decimal","getDecimalForPixel","getBaseValue","createTickContext","optionTicks","rot","_computeGridLineItems","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","positionAxisID","positionAxisID1","value1","limit","step","optsAtIndex","optsAtIndexBorder","lineColor","tickBorderDash","tickBorderDashOffset","tickAndPadding","hTickAndPadding","lineCount","textOffset","_getXAxisLabelAlignment","_getYAxisLabelAlignment","ret1","halfCount","tickTextAlign","labelPadding","_this$options8","_this$options9","_this$options9$ticks","_computeLabelArea","drawBackground","findIndex","drawGrid","drawLine","setLineDash","lineDashOffset","drawBorder","_this$options10","lastLineWidth","drawLabels","renderTextOptions","drawTitle","_this$options11","_titleArgs","titleX","titleY","titleArgs","tz","gz","bz","axisID","_maxDigits","fontSize","isForType","isPrototypeOf","register","parentScope","isIChartComponent","itemDefaults","routes","propertyParts","sourceName","sourceScope","routeDefaults","registerDefaults","unregister","_typedRegistries","_each","addControllers","_len3","_key3","_len4","_key4","addPlugins","_len5","_key5","addScales","_len6","_key6","getController","_get","getPlugin","getScale","removeControllers","_len7","_key7","removeElements","_len8","_key8","removePlugins","_len9","_key9","removeScales","_len10","_key10","typedRegistry","reg","_getRegistryForType","_exec","itemReg","component","camelMethod","_init","notify","hook","_createDescriptors","descriptor","plugin","cancelable","invalidate","_oldCache","_notifyStateChanges","localIds","i1","allPlugins","_ref4","getOpts","pluginOpts","createDescriptors","previousDescriptors","some","_ref5","pluginScopeKeys","getIndexAxis","datasetDefaults","determineAxis","scaleOptions","initOptions","chartDefaults","configScales","chartIndexAxis","scaleConf","error","defaultId","getDefaultScaleIDFromAxis","defaultScaleOptions","defaultID","getAxisFromDefaultScaleID","mergeScaleConfig","initData","keyCache","keysCached","cachedKeys","generate","addIfFound","_config","initConfig","_scopeCache","_resolverCache","clearCache","clear","datasetType","additionalOptionScopes","_cachedScopes","mainScope","resetCache","keyLists","chartOptionScopes","_getResolver","getResolver","subPrefixes","_descriptors2","hasFunction","needContext","resolverCache","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onComplete","onAnimationProgress","onProgress","getCanvas","getElementById","instances","getChart","moveNumericKeys","intKey","invalidatePlugins","userConfig","initialCanvas","existingChart","_options","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","timeout","clearTimeout","setTimeout","debounce","resizeDelay","_initialize","_this$options12","bindEvents","_resizeBeforeDraw","_resize","newSize","newRatio","onResize","render","ensureScalesHaveIDs","axisOptions","buildOrUpdateScales","scaleOpts","updated","isRadial","dposition","dtype","scaleType","hasUpdated","_updateMetasets","_destroyDatasetMeta","_removeUnreferencedMetasets","buildOrUpdateControllers","newControllers","order","ControllerClass","_defaults$datasets$ty","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","_minPadding","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","existingEvents","newEvents","unbindEvents","changes","_getUniformDataChanges","_ref6","datasetCount","makeSet","changeSet","noArea","_idx","ilen1","_updateDataset","_this$_resizeBeforeDr","layers","_drawDatasets","_drawDataset","useClip","getDatasetArea","getElementsAtEventForMode","setDatasetVisibility","_updateVisibility","_stop","destroy","toBase64Image","toDataURL","bindUserEvents","bindResponsiveEvents","_add","_remove","detached","updateHoverStyle","getActiveElements","setActiveElements","activeElements","lastActive","_ref7","pluginId","replay","hoverOptions","deactivated","activated","inChartArea","eventFilter","_handleEvent","_this$_active","_getActiveElements","isClick","_isClickEvent","lastEvent","determineLastEvent","parseBorderRadius$1","angleDelta","borderRadius","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStart","outerEnd","innerStart","innerEnd","rThetaToXY","theta","pathArc","pixelMargin","innerR","spacingOffset","avNogSpacingRadius","angleOffset","_parseBorderRadius$","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","outerMidAdjustedAngle","pCenter","p4","pCenter1","innerMidAdjustedAngle","pCenter2","p8","pCenter3","outerStartX","outerStartY","outerEndX","outerEndY","fullCircles","inner","lineJoin","angleMargin","clipArc","version","chartX","chartY","_getAngleFromPoint2","_this$getProps2","rAdjust","betweenAngles","withinRadius","_this$getProps3","_this$options13","halfAngle","halfRadius","radiusOffset","drawArc","setStyle","lineCap","pathVars","_params$start","paramsStart","_params$end","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","_pathVars","lineMethod","stepped","getLineMethod","_ref8","_ref8$move","fastPathSegment","_pathVars2","_ref9","_ref9$move","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","usePath2D","Path2D","path","_path","strokePathWithCache","segmentMethod","strokePathDirect","_points","_segments","_pointsUpdated","_findStartAndEnd","findStartAndEnd","solidSegments","_computeSegments","_interpolate","_getInterpolationMethod","_segments$i","interpolated","inRange$1","hitRadius","mouseX","mouseY","_this$getProps4","inXRange","inYRange","_this$getProps5","hoverRadius","getBarBounds","bar","_bar$getProps","half","skipOrLimit","boundingRects","maxW","maxH","parseBorderWidth","maxR","enableBorder","parseBorderRadius","outer","skipX","skipY","addNormalRectPath","inflateRect","amount","refRect","_this$options14","_boundingRects","addRectPath","_this$getProps6","ArcElement","LineElement","PointElement","BarElement","BORDER_COLORS","BACKGROUND_COLORS","getBorderColor","getBackgroundColor","getColorizer","colorizeDoughnutDataset","colorizePolarAreaDataset","colorizeDefaultDataset","containsColorsDefinitions","plugin_colors","forceOverride","_args","_chart$config","chartOptions","colorizer","cleanDecimatedDataset","cleanDecimatedData","plugin_decimation","algorithm","beforeElementsUpdate","xAxis","_getStartAndCountOfVi3","getStartAndCountOfVisiblePointsSimplified","threshold","decimated","samples","bucketWidth","sampledIndex","endIndex","maxAreaPoint","maxArea","nextA","avgY","avgRangeStart","avgRangeEnd","avgRangeLength","rangeOffs","rangeTo","_data$a","pointAx","pointAy","lttbDecimation","minIndex","maxIndex","startIndex","xMin","dx","lastIndex","intermediateIndex1","intermediateIndex2","minMaxDecimation","_getBounds","_findSegmentEnd","_getEdge","_createBoundaryLine","boundary","_ref10","_ref10$x","_ref10$y","linePoints","_ref11","_pointsFromSegments","_shouldApplyFill","_resolveTarget","propagate","visited","_decodeFill","fillOption","parseFillOption","firstCh","decodeTargetIndex","addPointsBelow","sourcePoint","linesBelow","postponed","_findPoint","findPoint","unshift","pointValue","firstValue","lastValue","getLineByIndex","sourcePoints","below","getLinesBelow","_buildStackLine","_getTargetValue","computeCircularBoundary","_source$scale","_getTargetPixel","computeLinearBoundary","computeBoundary","_drawfill","lineOpts","_ref12","_ref12$above","above","_ref12$below","clipVertical","doFill","clipY","lineLoop","tpoints","targetSegments","tgt","subBounds","fillSources","fillSource","_ref13","src","_src$style","_src$style2$backgroun","notShape","clipBounds","interpolatedLineTo","targetLoop","_scale$chart$chartAre","_ref14","interpolatedPoint","afterDatasetsUpdate","$filler","beforeDraw","drawTime","beforeDatasetsDraw","beforeDatasetDraw","getBoxSize","labelOpts","_labelOpts$boxHeight","boxHeight","_labelOpts$boxWidth","boxWidth","usePointStyle","pointStyleWidth","itemHeight","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","labelFont","_computeTitleHeight","_getBoxSize","_fitRows","_fitCols","hitboxes","totalHeight","row","_itemHeight","heightLimit","totalWidth","currentColWidth","currentColHeight","col","_calculateItemSize","legendItemText","calculateItemWidth","fontLineHeight","calculateLegendItemHeight","calculateItemHeight","calculateItemSize","adjustHitBoxes","_this$options15","rtlHelper","hitbox","hitbox1","_draw","defaultColor","halfFontSize","cursor","_getBoxSize2","textDirection","lineDash","drawOptions","SQRT2","yBoxTop","xBoxLeft","drawLegendBox","_textX","titleFont","titlePadding","topPaddingPlusHalfFontSize","_getLegendItemAt","hitBox","lh","handleEvent","onLeave","isListened","hoveredItem","sameItem","plugin_legend","_element","afterEvent","ci","_chart$legend$options","useBorderRadius","_padding","textSize","_drawArgs","fontOpts","_this$_drawArgs","plugin_title","titleBlock","createTitle","WeakMap","plugin_subtitle","positioners","average","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","_controller$getLabelA","formattedValue","getTooltipSize","tooltip","body","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","before","after","beforeBody","afterBody","titleSpacing","titleMarginBottom","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineXAlign","yAlign","chartWidth","_chart$chartArea","xAlign","caret","caretSize","caretPadding","doesNotFitWithAlign","determineAlignment","determineYAlign","getBackgroundPoint","alignment","paddingAndSize","_toTRBLCorners","alignX","alignY","getAlignedX","getBeforeAfterBodyLines","overrideCallbacks","defaultCallbacks","beforeTitle","tooltipItems","labelCount","afterTitle","beforeLabel","tooltipItem","labelColor","labelTextColor","bodyColor","labelPointStyle","afterLabel","beforeFooter","afterFooter","invokeCallbackWithFallback","opacity","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","getTitle","getBeforeBody","getBody","bodyItems","scoped","getAfterBody","getFooter","_createItems","itemSort","positionAndSize","backgroundPoint","external","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","_toTRBLCorners2","ptX","ptY","titleColor","_drawColorBox","colorX","rtlColorX","yOffSet","colorY","multiKeyBackground","outerX","innerX","strokeRect","drawBody","bodyAlign","bodyLineHeight","xLinePadding","fillLineOfText","bodyAlignForCalculation","textColor","drawFooter","footerAlign","footerColor","tooltipSize","_toTRBLCorners3","quadraticCurveTo","_updateAnimationTarget","animX","animY","_willRender","hasTooltipContent","globalAlpha","_ref15","positionChanged","_positionChanged","_ignoreReplayEvents","plugin_tooltip","afterInit","afterDraw","Colors","Decimation","Filler","Legend","SubTitle","Title","Tooltip","findOrAddLabel","addedLabels","addIfString","lastIndexOf","_getLabelForValue","_startValue","_valueRange","_addedLabels","added","_ref16","_this$getUserBounds2","_this$getMinMax","generateTicks$1","generationOptions","dataRange","precision","maxTicks","maxDigits","includeBounds","unit","maxSpaces","rmin","rmax","countDefined","minSpacing","niceMin","niceMax","numSpaces","rounded","almostWhole","decimalPlaces","relativeLabelSize","_ref17","_endValue","handleTickRangeOptions","_this$getUserBounds3","setMin","setMax","minSign","maxSign","getTickLimit","stepSize","computeTickLimit","_this$getMinMax2","log10Floor","changeExponent","isMajor","tickVal","steps","rangeExp","rangeStep","generateTicks","_ref18","minExp","exp","startExp","lastTick","_zero","_this$getMinMax3","_this$getUserBounds4","getTickBackdropHeight","determineLimits","fitWithPointLabels","limits","valueCount","_pointLabels","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","getPointPosition","drawingArea","plFont","updateLimits","setCenterPoint","_pointLabelItems","extra","outerDistance","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","buildPointLabelItems","hLimits","vLimits","pathRadiusLine","_this$getMinMax4","leftMovement","rightMovement","topMovement","bottomMovement","scalingFactor","getValueForDistanceFromCenter","scaledDistance","pointLabel","createPointLabelContext","distanceFromCenter","getBasePosition","getPointLabelPosition","_this$_pointLabelItem","_this$options16","_scale$_pointLabelIte","backdropLeft","backdropTop","backdropWidth","backdropHeight","drawPointLabels","gridLineOpts","drawRadiusLine","animate","INTERVALS","millisecond","common","second","minute","hour","day","week","month","quarter","year","UNITS","sorter","adapter","_adapter","_scale$_parseOpts","_parseOpts","parser","isoWeekday","determineUnitForAutoTicks","minUnit","capacity","interval","MAX_SAFE_INTEGER","addTick","time","timestamps","_lookup2","ticksFromTimestamps","majorUnit","setMajorTicks","_unit","_majorUnit","_offsets","_normalized","displayFormats","normalized","_this$getUserBounds5","_applyBounds","_getLabelBounds","getLabelTimestamps","timeOpts","_generate","_filterBetween","_getLabelCapacity","determineUnitForFormatting","determineMajorUnit","initOffsets","offsetAfterAutoskip","getDecimalForValue","weekday","hasWeekday","getDataTimestamps","tooltipFormat","datetime","fmt","_tickFormatFunction","minorFormat","majorFormat","offsets","_getLabelSize","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","prevSource","nextSource","prevTarget","nextTarget","_lookupByKey2","_table$lo","_table$hi","_lookupByKey3","_table$lo2","_table$hi2","span","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","CategoryScale","LinearScale","LogarithmicScale","RadialLinearScale","TimeScale","registerables","Turbolinks","supported","history","pushState","visit","setProgressBarDelay","copyObject","closest","documentElement","nodeType","Node","ELEMENT_NODE","defer","throttle","dispatch","u","createEvent","initEvent","preventDefault","defaultPrevented","dispatchEvent","matchesSelector","webkitMatchesSelector","msMatchesSelector","mozMatchesSelector","uuid","random","Location","createElement","href","absoluteURL","hash","requestURL","anchor","getOrigin","getPath","getPathComponents","getLastPathComponent","getExtension","isHTML","isPrefixedBy","isEqualTo","toCacheKey","toJSON","valueOf","HttpRequest","delegate","requestCanceled","requestTimedOut","requestFailed","requestLoaded","requestProgressed","url","referrer","createXHR","NETWORK_FAILURE","TIMEOUT_FAILURE","send","xhr","sent","notifyApplicationBeforeRequestStart","setProgress","requestStarted","abort","lengthComputable","loaded","endRequest","status","requestCompletedWithResponse","responseText","getResponseHeader","failed","requestFailedWithStatusCode","notifyApplicationAfterRequestEnd","XMLHttpRequest","open","setRequestHeader","onprogress","onload","onerror","ontimeout","onabort","requestFinished","ProgressBar","trickle","stylesheetElement","createStylesheetElement","progressElement","createProgressElement","defaultCSS","installStylesheetElement","installProgressElement","startTrickling","hiding","fadeProgressElement","uninstallProgressElement","stopTrickling","setValue","refresh","insertBefore","firstChild","removeChild","trickleInterval","setInterval","clearInterval","textContent","className","BrowserAdapter","showProgressBar","progressBar","visitProposedToLocationWithAction","startVisitToLocationWithAction","visitStarted","issueRequest","changeHistory","loadCachedSnapshot","visitRequestStarted","hasCachedSnapshot","action","showProgressBarAfterDelay","visitRequestProgressed","visitRequestCompleted","loadResponse","visitRequestFailedWithStatusCode","reload","visitRequestFinished","hideProgressBar","visitCompleted","followRedirect","pageInvalidated","progressBarTimeout","progressBarDelay","location","History","onPageLoad","onPopState","started","shouldHandlePopState","state","turbolinks","restorationIdentifier","historyPoppedToLocationWithRestorationIdentifier","pageLoaded","pageIsLoaded","readyState","HeadDetails","outerHTML","tracked","fromHeadElement","childNodes","hasElementWithKey","getTrackedElementSignature","getScriptElementsNotInDetails","getElementsMatchingTypeNotInDetails","getStylesheetElementsNotInDetails","getProvisionalElements","getMetaValue","findMetaElementByName","tagName","Snapshot","headDetails","bodyElement","fromHTMLString","fromHTMLElement","innerHTML","querySelector","cloneNode","getRootLocation","getSetting","getCacheControlValue","getElementForAnchor","getPermanentElements","querySelectorAll","getPermanentElementById","getPermanentElementsPresentInSnapshot","findFirstAutofocusableElement","hasAnchor","isPreviewable","isCacheable","isVisitable","Renderer","renderView","viewWillRender","newBody","viewRendered","invalidateView","viewInvalidated","createScriptElement","async","attributes","__super__","SnapshotRenderer","currentSnapshot","newSnapshot","isPreview","currentHeadDetails","newHeadDetails","currentBody","shouldRender","mergeHead","replaceBody","focusFirstAutofocusableElement","copyNewHeadStylesheetElements","copyNewHeadScriptElements","removeCurrentHeadProvisionalElements","copyNewHeadProvisionalElements","relocateCurrentBodyPermanentElements","activateNewBodyScriptElements","assignNewBody","replacePlaceholderElementsWithClonedPermanentElements","trackedElementsAreIdentical","getNewHeadStylesheetElements","appendChild","getNewHeadScriptElements","getCurrentHeadProvisionalElements","getNewHeadProvisionalElements","getCurrentBodyPermanentElements","permanentElement","getNewBodyScriptElements","focus","replaceChild","ErrorRenderer","newHead","replaceHeadAndBody","activateBodyScriptElements","getScriptElements","View","htmlElement","getSnapshot","snapshot","markAsPreview","renderSnapshot","renderError","ScrollManager","onScroll","scrollToElement","scrollIntoView","scrollToPosition","scrollTo","updatePosition","pageXOffset","pageYOffset","scrollPositionChanged","SnapshotCache","snapshots","touch","put","write","trim","Visit","performScroll","identifier","timingMetrics","recordTimingMetric","request","cancelRender","fail","visitFailed","historyChanged","shouldIssueRequest","getCachedSnapshot","getCachedSnapshotForLocation","cacheSnapshot","visitRendered","response","redirectedToLocation","followedRedirect","replaceHistoryWithLocationAndRestorationIdentifier","scrolled","scrollToRestoredPosition","scrollToTop","scrollToAnchor","restorationData","scrollPosition","getTime","getTimingMetrics","snapshotCached","frame","cancelAnimationFrame","Controller","clickBubbled","clickCaptured","view","scrollManager","startHistory","disable","stopHistory","applicationAllowsVisitingLocation","locationIsVisitable","getRestorationDataForIdentifier","startVisit","pushHistoryWithLocationAndRestorationIdentifier","shouldCacheSnapshot","notifyApplicationBeforeCachingSnapshot","lastRenderedLocation","getCurrentRestorationData","notifyApplicationBeforeRender","currentVisit","notifyApplicationAfterRender","notifyApplicationAfterPageLoad","clickEventIsSignificant","getVisitableLinkForNode","getVisitableLocationForLink","applicationAllowsFollowingLinkToLocation","getActionForLink","notifyApplicationAfterClickingLinkToLocation","notifyApplicationBeforeVisitingLocation","notifyApplicationAfterVisitingLocation","timing","createVisit","isContentEditable","which","altKey","ctrlKey","metaKey","shiftKey","nodeIsVisitable","currentScript","hasAttribute","createCommonjsModule","sparkMd5","factory","hex_chr","md5cycle","md5blk","md5blks","charCodeAt","md5blk_array","md51","tail","substring","md51_array","subarray","Uint8Array","rhex","toUtf8","unescape","encodeURIComponent","utf8Str2ArrayBuffer","returnUInt8Array","buff","ArrayBuffer","arrayBuffer2Utf8Str","fromCharCode","concatenateArrayBuffers","byteLength","buffer","hexToBinaryString","bytes","substr","SparkMD5","clamp","targetArray","sourceArray","begin","append","appendBinary","contents","_buff","_hash","_finish","getState","setState","hashBinary","content","classCallCheck","instance","Constructor","createClass","protoProps","staticProps","fileSlice","File","mozSlice","webkitSlice","FileChecksum","file","chunkSize","chunkCount","chunkIndex","_this","md5Buffer","fileReader","FileReader","fileReaderDidLoad","fileReaderDidError","readNextChunk","binaryDigest","base64digest","btoa","readAsArrayBuffer","findElement","findElements","selector","toArray$1","eventInit","bubbles","detail","BlobRecord","checksum","filename","content_type","byte_size","responseType","csrfToken","requestDidLoad","requestDidError","blob","direct_upload","directUploadData","_xhr","BlobUpload","_blob$directUploadDat","headers","DirectUpload","upload","methodName","messages","DirectUploadController","directUpload","hiddenInput","insertAdjacentElement","dispatchError","signed_id","alert","_this2","uploadRequestDidProgress","inputSelector","DirectUploadsController","form","files","createDirectUploadControllers","startNextController","processingAttribute","submitButtonsByForm","didClick","didSubmitForm","didSubmitRemoteElement","handleFormSubmissionEvent","enable","submitForm","button","click","autostart","ActiveStorage","variable","Function","isPlainObject","extend","obj1","obj2","DATE_PATTERN","toStr","toFloat","toDate","toArr","jsOptionsFunc","defaultOptions","hideLegend","setTitle","setStacked","setXtitle","setYtitle","series","singleSeriesFormat","negativeValues","xtitle","ytitle","library","sortByTime","sortByNumberSeries","sortByNumber","every","calculateTimeUnit","maxDay","getMilliseconds","getSeconds","getMinutes","getHours","getDate","dayOfWeek","getDay","getMonth","isDate","byteSuffixes","formatValue","pre","byteScale","suffixIdx","toPrecision","zeros","toFixed","thousands","seriesOption","baseOptions","defaultOptions$2","defaultColors","hideLegend$2","setTitle$2","setBarMin$1","setBarMax$1","setStacked$2","setXtitle$2","setYtitle$2","addOpacity","notnull","calculateScale","maxAbsY","setFormatOptions$1","chartType","numericOptions","formatOptions","dataPoint","valueLabel","xtype","jsOptions$2","prepareData","prepareBubbleData","prepareNumberData","rows","i$1","i$2","key$1","j$1","prepareDefaultData","createDataTable","ref","pointChart","pointBackgroundColor","pointHoverBackgroundColor","pointHitRadius","pointHoverBorderWidth","pointRadius","pointHoverRadius","timeUnit","minTime","maxTime","timeDiff","offsetWidth","unitStepSize","defaultExport$2","renderLineChart","drawChart","renderPieChart","donut","renderColumnChart","barOptions","maxLabelSize","setLabelSize","renderAreaChart","renderBarChart","renderScatterChart","renderBubbleChart","destroyed","code","log","getElementsByTagName","defaultOptions$1","yAxis","credits","plotOptions","areaspline","marker","useUTC","hideLegend$1","verticalAlign","setTitle$1","jsOptions$1","stackedValue","stacking","setFormatOptions","pointFormatter","pointFormat","defaultExport$1","curve","symbol","pie","innerSize","categories","newSeries","d$1","d2","renderTo","Chart","fontName","pointSize","textStyle","curveType","hAxis","titleTextStyle","gridlines","baselineColor","viewWindow","setBarMin","setBarMax","italic","jsOptions","defaultExport","this$1$1","waitForLoaded","pieHole","visualization","DataTable","addColumn","addRows","areaOpacity","renderGeoChart","colorAxis","rows2","renderTimeline","clearChart","attachEvent","pack","runCallbacks","loadOptions","packages","__config","language","mapsApiKey","load","LineChart","Timeline","GeoChart","columnType","sortedLabels","isDay","i$3","addAdapter","adapterType","product","getAdapterType","callAdapter","fnName","adapterName","Highcharts","google","__adapterObject","Chartkick","setDefaultOptions","eachChart","chartId","destroyAll","use","formatSeriesData","keyType","formatSeriesBubble","keyFunc","detectXTypeWithFunction","func","processSeries","noDatetime","rawData","copy","copySeries","discrete","dataEmpty","detectXType","processSimple","perfectData","pendingRequests","runningRequests","maxRequests","runNext","success","statusText","setText","chartError","message","noPrefix","errorCatcher","__render","fetchDataSource","dataSource","showLoading","loading","renderChart","empty","download","__downloadAttached","link","zIndex","image","alt","__enterEvent","related","relatedTarget","toImage","__leaveEvent","addDownloadButton","elementId","startRefresh","getDataSource","getData","getOptions","getChartObject","getAdapter","updateData","__updateOptions","setOptions","redraw","refreshData","sep","intervalId","stopRefresh","background","tmpCanvas","tmpCtx","updateRefresh","__processData","__chartName","PieChart","ColumnChart","BarChart","AreaChart","ScatterChart","BubbleChart","autoDestroy","Event","default","channels","require","Rails","linkClickSelector","buttonClickSelector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","nonce","loadCSPNonce","cspNonce","expando","Element","oMatchesSelector","setData","$","csrfParam","CSRFProtection","token","refreshCSRFTokens","param","CustomEvent","fire","evt","initCustomEvent","stopEverything","stopPropagation","stopImmediatePropagation","eventType","AcceptHeaders","prepareOptions","processResponse","html","xml","json","script","ajax","beforeSend","OPENED","dataType","accept","crossDomain","withCredentials","onreadystatechange","DONE","DOMParser","parseFromString","isCrossDomain","originAnchor","urlAnchor","protocol","toArray","serializeElement","additionalParam","selected","checked","formElements","allowAction","handleConfirm","confirm","answer","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","isXhrRedirect","handleDisabledElement","enableElement","disableElement","replacement","originalText","handleMethod","formContent","isRemote","handleRemote","enctype","FormData","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","jQuery","rails","ajaxPrefilter","originalOptions","_rails_loaded","logger","self","WebSocket","_adapters$logger","_typeof","secondsSince","ConnectionMonitor","connection","visibilityDidChange","reconnectAttempts","isRunning","startedAt","stoppedAt","startPolling","getPollInterval","stopPolling","recordPing","pingedAt","recordConnect","disconnectedAt","recordDisconnect","poll","pollTimeout","reconnectIfStale","_constructor$pollInte","pollInterval","multiplier","connectionIsStale","staleThreshold","disconnectedRecently","reopen","visibilityState","isOpen","INTERNAL","message_types","welcome","ping","confirmation","rejection","disconnect_reasons","unauthorized","invalid_request","server_restart","default_mount_path","protocols","supportedProtocols","Connection","consumer","subscriptions","monitor","disconnected","webSocket","isActive","uninstallEventHandlers","installEventHandlers","close","allowReconnect","reopenDelay","getProtocol","isState","isProtocolSupported","states","eventName","_JSON$parse","reason","reconnect","reject","notifyAll","willAttemptReconnect","Subscription","mixin","perform","command","unsubscribe","Subscriptions","channelName","channel","subscription","ensureActiveConnection","sendCommand","forget","findAll","callbackName","_this3","Consumer","_url","connect","createWebSocketURL","createConsumer","getConfig","global","webpackContext","req","webpackContextResolve","requiredArgs","required","argument","argStr","formatDistanceLocale","lessThanXSeconds","one","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","tokenValue","addSuffix","comparison","buildFormatLongFn","defaultWidth","full","long","medium","short","dateTime","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","_baseDate","buildLocalizeFn","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","_width","argumentCallback","ordinalNumber","dirtyNumber","rem100","era","narrow","abbreviated","wide","dayPeriod","am","pm","midnight","noon","morning","afternoon","evening","night","buildMatchFn","matchPattern","matchPatterns","defaultMatchWidth","matchResult","matchedString","parsePatterns","defaultParseWidth","predicate","pattern","findKey","valueCallback","rest","parsePattern","parseResult","any","defaultLocale","formatDistance","formatLong","formatRelative","localize","weekStartsOn","firstWeekContainsDate","toInteger","addMilliseconds","dirtyDate","dirtyAmount","timestamp","subMilliseconds","dateLongFormatter","timeLongFormatter","longFormatters","dateTimeFormat","datePattern","timePattern","getTimezoneOffsetInMilliseconds","utcDate","UTC","getFullYear","setUTCFullYear","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","RangeError","_inherits","subClass","superClass","_setPrototypeOf","setPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","construct","sham","Boolean","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_assertThisInitialized","_possibleConstructorReturn","ReferenceError","_classCallCheck","_defineProperties","_createClass","Setter","_utcDate","ValueSetter","_Setter","_super","validateValue","priority","subPriority","flags","DateToSystemTimezoneSetter","_Setter2","_super2","timestampIsSet","convertedDate","setFullYear","getUTCFullYear","getUTCMonth","getUTCDate","setHours","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","Parser","dateString","setter","validate","_value","EraParser","_Parser","setUTCHours","millisecondsInMinute","millisecondsInHour","numericPatterns","timezonePatterns","mapValue","parseFnResult","mapFn","parseNumericPattern","parseTimezonePattern","hours","minutes","seconds","parseAnyDigitsSigned","parseNDigits","RegExp","parseNDigitsSigned","dayPeriodEnumToHours","normalizeTwoDigitYear","twoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","isLeapYearIndex","YearParser","isTwoDigitYear","normalizedTwoDigitYear","getDefaultOptions","startOfUTCWeek","_options$weekStartsOn","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","getUTCDay","setUTCDate","getUTCWeekYear","_options$firstWeekCon","firstWeekOfNextYear","startOfNextYear","firstWeekOfThisYear","startOfThisYear","LocalWeekYearParser","startOfUTCISOWeek","ISOWeekYearParser","_flags","firstWeekOfYear","ExtendedYearParser","QuarterParser","setUTCMonth","StandAloneQuarterParser","MonthParser","StandAloneMonthParser","MILLISECONDS_IN_WEEK","getUTCWeek","firstWeek","startOfUTCWeekYear","LocalWeekParser","dirtyWeek","setUTCWeek","getUTCISOWeekYear","fourthOfJanuaryOfNextYear","fourthOfJanuaryOfThisYear","getUTCISOWeek","fourthOfJanuary","startOfUTCISOWeekYear","ISOWeekParser","dirtyISOWeek","isoWeek","setUTCISOWeek","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","DateParser","isLeapYear","DayOfYearParser","setUTCDay","dirtyDay","DayParser","LocalDayParser","wholeWeekDays","StandAloneLocalDayParser","ISODayParser","setUTCISODay","AMPMParser","AMPMMidnightParser","DayPeriodParser","Hour1to12Parser","isPM","Hour0to23Parser","Hour0To11Parser","Hour1To24Parser","MinuteParser","setUTCMinutes","SecondParser","setUTCSeconds","FractionOfSecondParser","setUTCMilliseconds","ISOTimezoneWithZParser","ISOTimezoneParser","TimestampSecondsParser","TimestampMillisecondsParser","parsers","q","_createForOfIteratorHelper","allowArrayLike","it","normalCompletion","didErr","_e2","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","notWhitespaceRegExp","unescapedLatinCharacterRegExp","dirtyDateString","dirtyFormatString","dirtyReferenceDate","_options$locale2","_options$locale2$opti","_options$locale3","_options$locale3$opti","_defaultOptions$local3","_defaultOptions$local4","formatString","_step","subFnOptions","setters","tokens","firstCharacter","longFormatter","usedTokens","_iterator","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","incompatibleTokens","incompatibleToken","find","usedToken","fullToken","run","_ret","uniquePrioritySetters","setterArray","_step2","_iterator2","parseISO","_options$additionalDi","additionalDigits","dateStrings","timeString","patterns","dateTimeDelimiter","timeZoneDelimiter","timezone","splitDateString","parseYearResult","regex","captures","restDateString","century","parseYear","dateRegex","isWeekDate","dayOfYear","parseDateUnit","_year","validateWeekDate","isoWeekYear","fourthOfJanuaryDay","dayOfISOWeekYear","daysInMonths","validateDate","validateDayOfYearDate","parseDate","timeRegex","parseTimeUnit","validateTime","parseTime","timezoneString","timezoneRegex","_hours","validateTimezone","parseTimezone","isValid","addLeadingZeros","targetLength","output","signedYear","dayPeriodEnumValue","numberOfDigits","milliseconds","dayPeriodEnum","lightFormatters","signedWeekYear","weekYear","difference","getUTCDayOfYear","localDayOfWeek","isoDayOfWeek","_localize","timezoneOffset","_originalDate","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","originalDate","dirtyDelimiter","absOffset","delimiter","dirtyFormatStr","formatStr","formatterOptions","matched","addDays","setDate","addMonths","dayOfMonth","endOfDesiredMonth","setMonth","differenceInMilliseconds","dateLeft","dateRight","roundingMap","trunc","defaultRoundingMethod","getRoundingMethod","startOfDay","compareLocalAsc","differenceInDays","dirtyDateLeft","dirtyDateRight","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","differenceInCalendarDays","compareAsc","endOfDay","endOfMonth","differenceInMonths","differenceInCalendarMonths","isLastMonthNotFull","isLastDayOfMonth","differenceInYears","differenceInCalendarYears","isLastYearNotFull","startOfWeek","FORMATS","_id","addSeconds","addMinutes","addHours","addWeeks","addQuarters","addYears","roundingMethod","differenceInSeconds","differenceInMinutes","differenceInHours","differenceInWeeks","differenceInQuarters","setMilliseconds","startOfSecond","setSeconds","startOfMinute","setMinutes","startOfHour","startOfMonth","currentMonth","startOfQuarter","cleanDate","startOfYear","endOfSecond","endOfMinute","endOfHour","endOfWeek","endOfQuarter","endOfYear"],"mappings":";aACE,IAAIA,EAAmB,CAAC,EAGxB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,CAAC,GAUX,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,OACf,CAIAF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,GAEhE,EAGAZ,EAAoBkB,EAAI,SAAShB,GACX,qBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,GACvD,EAOArB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,EAAM,EAAEC,KAAK,KAAMD,IAC9I,OAAOF,CACR,EAGAzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,CACR,EAGAZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,EAAW,EAGpH/B,EAAoBkC,EAAI,UAIjBlC,EAAoBA,EAAoBmC,EAAI,G,kCC5ErD,SAAS,EAAMC,GACb,OAAOA,EAAI,GAAM,CACnB,C,2jEACA,MAAMC,EAAM,CAACD,EAAG/B,EAAGiC,IAAMC,KAAKC,IAAID,KAAKE,IAAIL,EAAGE,GAAIjC,GAClD,SAASqC,EAAIN,GACX,OAAOC,EAAI,EAAU,KAAJD,GAAW,EAAG,IACjC,CAIA,SAASO,EAAIP,GACX,OAAOC,EAAI,EAAU,IAAJD,GAAU,EAAG,IAChC,CACA,SAASQ,EAAIR,GACX,OAAOC,EAAI,EAAMD,EAAI,MAAQ,IAAK,EAAG,EACvC,CACA,SAASS,EAAIT,GACX,OAAOC,EAAI,EAAU,IAAJD,GAAU,EAAG,IAChC,CACA,MAAMU,EAAQ,CACZ,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACHC,EAAG,GACHC,EAAG,GACHC,EAAG,GACHC,EAAG,GACHC,EAAG,GACHC,EAAG,GACHC,EAAG,GACHC,EAAG,GACH7C,EAAG,GACHC,EAAG,GACH6C,EAAG,GACHC,EAAG,IAECC,EAAM,IAAI,oBACVC,EAAKJ,GAAKG,EAAQ,GAAJH,GACdK,EAAKL,GAAKG,GAAS,IAAJH,IAAa,GAAKG,EAAQ,GAAJH,GACrCM,EAAKN,IAAU,IAAJA,IAAa,KAAW,GAAJA,GAyBrC,SAASO,EAAUzB,GACjB,IAAIoB,EAzBUpB,IAAKwB,EAAGxB,EAAElB,IAAM0C,EAAGxB,EAAE0B,IAAMF,EAAGxB,EAAEkB,IAAMM,EAAGxB,EAAEiB,GAyBjDU,CAAQ3B,GAAKsB,EAAKC,EAC1B,OAAOvB,EAAI,IAAMoB,EAAEpB,EAAElB,GAAKsC,EAAEpB,EAAE0B,GAAKN,EAAEpB,EAAEkB,GAH3B,EAACD,EAAGG,IAAMH,EAAI,IAAMG,EAAEH,GAAK,GAGK,CAAMjB,EAAEiB,EAAGG,QAAKQ,CAC9D,CACA,MAAMC,EAAS,+GACf,SAASC,EAAS5B,EAAGH,EAAG9B,GACtB,MAAMgD,EAAIlB,EAAII,KAAKE,IAAIpC,EAAG,EAAIA,GACxBmD,EAAI,SAAU3B,GAClB,IAAIsC,EAAIC,UAAUC,OAAS,QAAsBL,IAAjBI,UAAU,GAAmBA,UAAU,IAAMvC,EAAIS,EAAI,IAAM,GAC3F,OAAOjC,EAAIgD,EAAId,KAAKC,IAAID,KAAKE,IAAI0B,EAAI,EAAG,EAAIA,EAAG,IAAK,EACtD,EACA,MAAO,CAACX,EAAE,GAAIA,EAAE,GAAIA,EAAE,GACxB,CACA,SAASc,EAAShC,EAAGH,EAAGC,GACtB,MAAMoB,EAAI,SAAU3B,GAClB,IAAIsC,EAAIC,UAAUC,OAAS,QAAsBL,IAAjBI,UAAU,GAAmBA,UAAU,IAAMvC,EAAIS,EAAI,IAAM,EAC3F,OAAOF,EAAIA,EAAID,EAAII,KAAKC,IAAID,KAAKE,IAAI0B,EAAG,EAAIA,EAAG,GAAI,EACrD,EACA,MAAO,CAACX,EAAE,GAAIA,EAAE,GAAIA,EAAE,GACxB,CACA,SAASe,EAASjC,EAAGkC,EAAGlB,GACtB,MAAMmB,EAAMP,EAAS5B,EAAG,EAAG,IAC3B,IAAIlC,EAMJ,IALIoE,EAAIlB,EAAI,IACVlD,EAAI,GAAKoE,EAAIlB,GACbkB,GAAKpE,EACLkD,GAAKlD,GAEFA,EAAI,EAAGA,EAAI,EAAGA,IACjBqE,EAAIrE,IAAM,EAAIoE,EAAIlB,EAClBmB,EAAIrE,IAAMoE,EAEZ,OAAOC,CACT,CAUA,SAASC,EAAQtC,GACf,MACMlB,EAAIkB,EAAElB,EADE,IAER4C,EAAI1B,EAAE0B,EAFE,IAGRR,EAAIlB,EAAEkB,EAHE,IAIRd,EAAMD,KAAKC,IAAItB,EAAG4C,EAAGR,GACrBb,EAAMF,KAAKE,IAAIvB,EAAG4C,EAAGR,GACrBjD,GAAKmC,EAAMC,GAAO,EACxB,IAAIH,EAAGH,EAAGzB,EAOV,OANI8B,IAAQC,IACV/B,EAAI8B,EAAMC,EACVN,EAAI9B,EAAI,GAAMK,GAAK,EAAI8B,EAAMC,GAAO/B,GAAK8B,EAAMC,GAC/CH,EArBJ,SAAkBpB,EAAG4C,EAAGR,EAAG5C,EAAG8B,GAC5B,OAAItB,IAAMsB,GACAsB,EAAIR,GAAK5C,GAAKoD,EAAIR,EAAI,EAAI,GAEhCQ,IAAMtB,GACAc,EAAIpC,GAAKR,EAAI,GAEfQ,EAAI4C,GAAKpD,EAAI,CACvB,CAaQiE,CAASzD,EAAG4C,EAAGR,EAAG5C,EAAG8B,GACzBF,EAAQ,GAAJA,EAAS,IAER,CAAK,EAAJA,EAAOH,GAAK,EAAG9B,EACzB,CACA,SAASuE,EAAMpB,EAAGH,EAAGC,EAAG7C,GACtB,OAAQoE,MAAMC,QAAQzB,GAAKG,EAAEH,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAAMG,EAAEH,EAAGC,EAAG7C,IAAIsE,IAAIpC,EACnE,CACA,SAASqC,EAAQ1C,EAAGH,EAAG9B,GACrB,OAAOuE,EAAMV,EAAU5B,EAAGH,EAAG9B,EAC/B,CAOA,SAAS4E,EAAI3C,GACX,OAAQA,EAAI,IAAM,KAAO,GAC3B,CACA,SAAS4C,EAASC,GAChB,MAAM3E,EAAIyD,EAAOmB,KAAKD,GACtB,IACI/C,EADAiB,EAAI,IAER,IAAK7C,EACH,OAEEA,EAAE,KAAO4B,IACXiB,EAAI7C,EAAE,GAAKkC,GAAKlC,EAAE,IAAMmC,GAAKnC,EAAE,KAEjC,MAAM8B,EAAI2C,GAAKzE,EAAE,IACX6E,GAAM7E,EAAE,GAAK,IACb8E,GAAM9E,EAAE,GAAK,IAQnB,OANE4B,EADW,QAAT5B,EAAE,GAtBR,SAAiB8B,EAAGkC,EAAGlB,GACrB,OAAOsB,EAAML,EAAUjC,EAAGkC,EAAGlB,EAC/B,CAqBQiC,CAAQjD,EAAG+C,EAAIC,GACD,QAAT9E,EAAE,GArBf,SAAiB8B,EAAGH,EAAGC,GACrB,OAAOwC,EAAMN,EAAUhC,EAAGH,EAAGC,EAC/B,CAoBQoD,CAAQlD,EAAG+C,EAAIC,GAEfN,EAAQ1C,EAAG+C,EAAIC,GAEd,CACLpE,EAAGkB,EAAE,GACL0B,EAAG1B,EAAE,GACLkB,EAAGlB,EAAE,GACLiB,EAAGA,EAEP,CAmBA,MAAM0B,EAAM,CACVU,EAAG,OACHC,EAAG,QACHC,EAAG,KACHC,EAAG,MACHC,EAAG,KACHC,EAAG,SACHC,EAAG,QACHhD,EAAG,KACHiD,EAAG,KACHC,EAAG,KACHjD,EAAG,KACHC,EAAG,QACHC,EAAG,QACHgD,EAAG,KACHC,EAAG,WACHhD,EAAG,KACHiD,EAAG,KACHC,EAAG,KACHC,EAAG,KACHC,EAAG,KACHC,EAAG,QACHpD,EAAG,KACHqD,EAAG,KACHC,EAAG,OACHC,EAAG,KACHC,EAAG,QACHC,EAAG,MAECC,EAAU,CACdC,OAAQ,SACRC,YAAa,SACbC,KAAM,OACNC,UAAW,SACXC,KAAM,SACNC,MAAO,SACPC,OAAQ,SACRC,MAAO,IACPC,aAAc,SACdC,GAAI,KACJC,QAAS,SACTC,KAAM,SACNC,UAAW,SACXC,OAAQ,SACRC,SAAU,SACVC,QAAS,SACTC,IAAK,SACLC,YAAa,SACbC,QAAS,SACTC,QAAS,SACTC,KAAM,OACNC,IAAK,KACLC,MAAO,OACPC,QAAS,SACTC,KAAM,SACNC,KAAM,OACNC,KAAM,SACNC,OAAQ,SACRC,QAAS,SACTC,SAAU,SACVC,OAAQ,SACRC,MAAO,SACPC,IAAK,SACLC,OAAQ,SACRC,OAAQ,SACRC,KAAM,SACNC,MAAO,SACPC,MAAO,SACPC,IAAK,OACLC,OAAQ,SACRC,OAAQ,SACRC,SAAU,OACVC,OAAQ,SACRC,OAAQ,SACRC,SAAU,SACVC,SAAU,SACVC,SAAU,SACVC,SAAU,SACVC,OAAQ,SACRC,QAAS,SACTC,UAAW,SACXC,IAAK,SACLC,OAAQ,SACRC,IAAK,SACLC,IAAK,OACLC,MAAO,SACPC,IAAK,SACLC,QAAS,SACTC,OAAQ,SACRC,QAAS,SACTC,MAAO,SACPC,KAAM,SACNC,MAAO,SACPC,OAAQ,SACRC,UAAW,SACXC,QAAS,SACTC,WAAY,SACZC,IAAK,SACLC,KAAM,SACNC,MAAO,SACPC,UAAW,SACXC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNC,OAAQ,SACRC,OAAQ,SACRC,OAAQ,SACRC,MAAO,SACPC,MAAO,SACPC,QAAS,SACTC,IAAK,SACLC,KAAM,OACNC,QAAS,SACTC,IAAK,SACLC,OAAQ,SACRC,MAAO,SACPC,WAAY,SACZC,IAAK,KACLC,MAAO,SACPC,OAAQ,SACRC,OAAQ,SACRC,KAAM,SACNC,UAAW,OACXC,IAAK,SACLC,SAAU,SACVC,WAAY,SACZC,QAAS,SACTC,SAAU,SACVC,QAAS,SACTC,WAAY,SACZC,KAAM,KACNC,OAAQ,SACRC,KAAM,SACNC,QAAS,SACTC,MAAO,SACPC,QAAS,SACTC,KAAM,SACNC,UAAW,SACXC,OAAQ,SACRC,MAAO,SACPC,WAAY,SACZC,UAAW,SACXC,QAAS,SACTC,KAAM,SACNC,IAAK,SACLC,KAAM,SACNC,QAAS,SACTC,MAAO,SACPC,YAAa,SACbC,GAAI,SACJC,SAAU,SACVC,MAAO,SACPC,UAAW,SACXC,MAAO,SACPC,UAAW,SACXC,MAAO,SACPC,QAAS,SACTC,MAAO,SACPC,OAAQ,SACRC,MAAO,SACPC,IAAK,SACLC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNC,SAAU,OACVC,OAAQ,SACRC,IAAK,SACLC,IAAK,OACLC,MAAO,SACPC,OAAQ,SACRC,GAAI,SACJC,MAAO,SACPC,IAAK,SACLC,KAAM,SACNC,UAAW,SACXC,GAAI,SACJC,MAAO,UAkBT,IAAI,EACJ,SAASC,EAAUhL,GACZ,IACH,EAnBJ,WACE,MAAMiL,EAAW,CAAC,EACZC,EAAOvP,OAAOuP,KAAKvJ,GACnBwJ,EAAQxP,OAAOuP,KAAKtL,GAC1B,IAAI3E,EAAGmQ,EAAGpM,EAAGqM,EAAIC,EACjB,IAAKrQ,EAAI,EAAGA,EAAIiQ,EAAKhM,OAAQjE,IAAK,CAEhC,IADAoQ,EAAKC,EAAKJ,EAAKjQ,GACVmQ,EAAI,EAAGA,EAAID,EAAMjM,OAAQkM,IAC5BpM,EAAImM,EAAMC,GACVE,EAAKA,EAAGC,QAAQvM,EAAGY,EAAIZ,IAEzBA,EAAIwM,SAAS7J,EAAQ0J,GAAK,IAC1BJ,EAASK,GAAM,CAACtM,GAAK,GAAK,IAAMA,GAAK,EAAI,IAAU,IAAJA,EACjD,CACA,OAAOiM,CACT,CAIYQ,GACR,EAAMC,YAAc,CAAC,EAAG,EAAG,EAAG,IAEhC,MAAMxN,EAAI,EAAM8B,EAAI2L,eACpB,OAAOzN,GAAK,CACVnC,EAAGmC,EAAE,GACLS,EAAGT,EAAE,GACLC,EAAGD,EAAE,GACLA,EAAgB,IAAbA,EAAEgB,OAAehB,EAAE,GAAK,IAE/B,CACA,MAAM0N,EAAS,uGA4Bf,MAAM,EAAK3O,GAAKA,GAAK,SAAgB,MAAJA,EAAqC,MAAzBG,KAAKyO,IAAI5O,EAAG,EAAM,KAAe,KACxE,EAAOA,GAAKA,GAAK,OAAUA,EAAI,MAAQG,KAAKyO,KAAK5O,EAAI,MAAS,MAAO,KAY3E,SAAS6O,EAAO7O,EAAGhC,EAAG8Q,GACpB,GAAI9O,EAAG,CACL,IAAI+O,EAAMzM,EAAQtC,GAClB+O,EAAI/Q,GAAKmC,KAAKC,IAAI,EAAGD,KAAKE,IAAI0O,EAAI/Q,GAAK+Q,EAAI/Q,GAAK8Q,EAAa,IAAN9Q,EAAU,IAAM,IACvE+Q,EAAMnM,EAAQmM,GACd/O,EAAElB,EAAIiQ,EAAI,GACV/O,EAAE0B,EAAIqN,EAAI,GACV/O,EAAEkB,EAAI6N,EAAI,EACZ,CACF,CACA,SAASC,EAAMhP,EAAGiP,GAChB,OAAOjP,EAAItB,OAAOwQ,OAAOD,GAAS,CAAC,EAAGjP,GAAKA,CAC7C,CACA,SAASmP,EAAWC,GAClB,IAAIpP,EAAI,CACNlB,EAAG,EACH4C,EAAG,EACHR,EAAG,EACHD,EAAG,KAuBL,OArBIwB,MAAMC,QAAQ0M,GACZA,EAAMnN,QAAU,IAClBjC,EAAI,CACFlB,EAAGsQ,EAAM,GACT1N,EAAG0N,EAAM,GACTlO,EAAGkO,EAAM,GACTnO,EAAG,KAEDmO,EAAMnN,OAAS,IACjBjC,EAAEiB,EAAIV,EAAI6O,EAAM,OAIpBpP,EAAIgP,EAAMI,EAAO,CACftQ,EAAG,EACH4C,EAAG,EACHR,EAAG,EACHD,EAAG,KAEHA,EAAIV,EAAIP,EAAEiB,GAEPjB,CACT,CACA,SAASqP,EAActM,GACrB,MAAsB,MAAlBA,EAAIuM,OAAO,GApFjB,SAAkBvM,GAChB,MAAM3E,EAAIuQ,EAAO3L,KAAKD,GACtB,IACIjE,EAAG4C,EAAGR,EADND,EAAI,IAER,GAAK7C,EAAL,CAGA,GAAIA,EAAE,KAAOU,EAAG,CACd,MAAMkB,GAAK5B,EAAE,GACb6C,EAAI7C,EAAE,GAAKkC,EAAIN,GAAKC,EAAQ,IAAJD,EAAS,EAAG,IACtC,CAOA,OANAlB,GAAKV,EAAE,GACPsD,GAAKtD,EAAE,GACP8C,GAAK9C,EAAE,GACPU,EAAI,KAAOV,EAAE,GAAKkC,EAAIxB,GAAKmB,EAAInB,EAAG,EAAG,MACrC4C,EAAI,KAAOtD,EAAE,GAAKkC,EAAIoB,GAAKzB,EAAIyB,EAAG,EAAG,MACrCR,EAAI,KAAO9C,EAAE,GAAKkC,EAAIY,GAAKjB,EAAIiB,EAAG,EAAG,MAC9B,CACLpC,EAAGA,EACH4C,EAAGA,EACHR,EAAGA,EACHD,EAAGA,EAfL,CAiBF,CA8DWsO,CAASxM,GAEXD,EAASC,EAClB,CACA,MAAMyM,EACJ,WAAAC,CAAYL,GACV,GAAIA,aAAiBI,EACnB,OAAOJ,EAET,MAAMM,SAAcN,EACpB,IAAIpP,EAhcR,IAAkB+C,EAEZ4M,EADAC,EAgcW,WAATF,EACF1P,EAAImP,EAAWC,GACG,WAATM,IAlcTE,GADY7M,EAocCqM,GAncHnN,OAEC,MAAXc,EAAI,KACM,IAAR6M,GAAqB,IAARA,EACfD,EAAM,CACJ7Q,EAAG,IAAsB,GAAhB4B,EAAMqC,EAAI,IACnBrB,EAAG,IAAsB,GAAhBhB,EAAMqC,EAAI,IACnB7B,EAAG,IAAsB,GAAhBR,EAAMqC,EAAI,IACnB9B,EAAW,IAAR2O,EAA4B,GAAhBlP,EAAMqC,EAAI,IAAW,KAErB,IAAR6M,GAAqB,IAARA,IACtBD,EAAM,CACJ7Q,EAAG4B,EAAMqC,EAAI,KAAO,EAAIrC,EAAMqC,EAAI,IAClCrB,EAAGhB,EAAMqC,EAAI,KAAO,EAAIrC,EAAMqC,EAAI,IAClC7B,EAAGR,EAAMqC,EAAI,KAAO,EAAIrC,EAAMqC,EAAI,IAClC9B,EAAW,IAAR2O,EAAYlP,EAAMqC,EAAI,KAAO,EAAIrC,EAAMqC,EAAI,IAAM,OAobtD/C,EAhbG2P,GAgboB5B,EAAUqB,IAAUC,EAAcD,IAE3DS,KAAKC,KAAO9P,EACZ6P,KAAKE,SAAW/P,CAClB,CACA,SAAIgQ,GACF,OAAOH,KAAKE,MACd,CACA,OAAI1N,GACF,IAAIrC,EAAIgP,EAAMa,KAAKC,MAInB,OAHI9P,IACFA,EAAEiB,EAAIT,EAAIR,EAAEiB,IAEPjB,CACT,CACA,OAAIqC,CAAI4N,GACNJ,KAAKC,KAAOX,EAAWc,EACzB,CACA,SAAAC,GACE,OAAOL,KAAKE,QA9FG/P,EA8FgB6P,KAAKC,QA7FzB9P,EAAEiB,EAAI,IAAM,QAAQjB,EAAElB,MAAMkB,EAAE0B,MAAM1B,EAAEkB,MAAMV,EAAIR,EAAEiB,MAAQ,OAAOjB,EAAElB,MAAMkB,EAAE0B,MAAM1B,EAAEkB,WA6FlDU,EA9FhD,IAAmB5B,CA+FjB,CACA,SAAAyB,GACE,OAAOoO,KAAKE,OAAStO,EAAUoO,KAAKC,WAAQlO,CAC9C,CACA,SAAAuO,GACE,OAAON,KAAKE,OAxVhB,SAAmB/P,GACjB,IAAKA,EACH,OAEF,MAAMiB,EAAIqB,EAAQtC,GACZE,EAAIe,EAAE,GACNlB,EAAIU,EAAIQ,EAAE,IACVhD,EAAIwC,EAAIQ,EAAE,IAChB,OAAOjB,EAAEiB,EAAI,IAAM,QAAQf,MAAMH,OAAO9B,OAAOuC,EAAIR,EAAEiB,MAAQ,OAAOf,MAAMH,OAAO9B,KACnF,CA+UyBkS,CAAUN,KAAKC,WAAQlO,CAC9C,CACA,GAAAwO,CAAIC,EAAOC,GACT,GAAID,EAAO,CACT,MAAME,EAAKV,KAAKxN,IACVmO,EAAKH,EAAMhO,IACjB,IAAIoO,EACJ,MAAM3Q,EAAIwQ,IAAWG,EAAK,GAAMH,EAC1BlO,EAAI,EAAItC,EAAI,EACZmB,EAAIsP,EAAGtP,EAAIuP,EAAGvP,EACdyP,IAAOtO,EAAInB,KAAO,EAAImB,GAAKA,EAAInB,IAAM,EAAImB,EAAInB,IAAM,GAAK,EAC9DwP,EAAK,EAAIC,EACTH,EAAGzR,EAAI,IAAO4R,EAAKH,EAAGzR,EAAI2R,EAAKD,EAAG1R,EAAI,GACtCyR,EAAG7O,EAAI,IAAOgP,EAAKH,EAAG7O,EAAI+O,EAAKD,EAAG9O,EAAI,GACtC6O,EAAGrP,EAAI,IAAOwP,EAAKH,EAAGrP,EAAIuP,EAAKD,EAAGtP,EAAI,GACtCqP,EAAGtP,EAAInB,EAAIyQ,EAAGtP,GAAK,EAAInB,GAAK0Q,EAAGvP,EAC/B4O,KAAKxN,IAAMkO,CACb,CACA,OAAOV,IACT,CACA,WAAAc,CAAYN,EAAOnR,GAIjB,OAHImR,IACFR,KAAKC,KArHX,SAAqBc,EAAMC,EAAM3R,GAC/B,MAAMJ,EAAI,EAAK0B,EAAIoQ,EAAK9R,IAClB4C,EAAI,EAAKlB,EAAIoQ,EAAKlP,IAClBR,EAAI,EAAKV,EAAIoQ,EAAK1P,IACxB,MAAO,CACLpC,EAAGyB,EAAI,EAAGzB,EAAII,GAAK,EAAKsB,EAAIqQ,EAAK/R,IAAMA,KACvC4C,EAAGnB,EAAI,EAAGmB,EAAIxC,GAAK,EAAKsB,EAAIqQ,EAAKnP,IAAMA,KACvCR,EAAGX,EAAI,EAAGW,EAAIhC,GAAK,EAAKsB,EAAIqQ,EAAK3P,IAAMA,KACvCD,EAAG2P,EAAK3P,EAAI/B,GAAK2R,EAAK5P,EAAI2P,EAAK3P,GAEnC,CA2GkB0P,CAAYd,KAAKC,KAAMO,EAAMP,KAAM5Q,IAE1C2Q,IACT,CACA,KAAAb,GACE,OAAO,IAAIQ,EAAMK,KAAKxN,IACxB,CACA,KAAAyO,CAAM7P,GAEJ,OADA4O,KAAKC,KAAK7O,EAAIV,EAAIU,GACX4O,IACT,CACA,OAAAkB,CAAQjC,GAGN,OAFYe,KAAKC,KACb7O,GAAK,EAAI6N,EACNe,IACT,CACA,SAAAmB,GACE,MAAM3O,EAAMwN,KAAKC,KACXmB,EAAM,EAAc,GAAR5O,EAAIvD,EAAkB,IAARuD,EAAIX,EAAmB,IAARW,EAAInB,GAEnD,OADAmB,EAAIvD,EAAIuD,EAAIX,EAAIW,EAAInB,EAAI+P,EACjBpB,IACT,CACA,OAAAqB,CAAQpC,GAGN,OAFYe,KAAKC,KACb7O,GAAK,EAAI6N,EACNe,IACT,CACA,MAAAsB,GACE,MAAMnR,EAAI6P,KAAKC,KAIf,OAHA9P,EAAElB,EAAI,IAAMkB,EAAElB,EACdkB,EAAE0B,EAAI,IAAM1B,EAAE0B,EACd1B,EAAEkB,EAAI,IAAMlB,EAAEkB,EACP2O,IACT,CACA,OAAAuB,CAAQtC,GAEN,OADAD,EAAOgB,KAAKC,KAAM,EAAGhB,GACde,IACT,CACA,MAAAwB,CAAOvC,GAEL,OADAD,EAAOgB,KAAKC,KAAM,GAAIhB,GACfe,IACT,CACA,QAAAyB,CAASxC,GAEP,OADAD,EAAOgB,KAAKC,KAAM,EAAGhB,GACde,IACT,CACA,UAAA0B,CAAWzC,GAET,OADAD,EAAOgB,KAAKC,KAAM,GAAIhB,GACfe,IACT,CACA,MAAA2B,CAAOC,GAEL,OA1aJ,SAAgBzR,EAAGyR,GACjB,IAAIvR,EAAIoC,EAAQtC,GAChBE,EAAE,GAAK2C,EAAI3C,EAAE,GAAKuR,GAClBvR,EAAI0C,EAAQ1C,GACZF,EAAElB,EAAIoB,EAAE,GACRF,EAAE0B,EAAIxB,EAAE,GACRF,EAAEkB,EAAIhB,EAAE,EACV,CAkaIsR,CAAO3B,KAAKC,KAAM2B,GACX5B,IACT,ECjlBF,SAAS6B,IACG,CAIZ,MAAMC,EAAM,MACV,IAAIC,EAAK,EACT,MAAO,IAAMA,GACd,EAHW,GASZ,SAASC,EAAc5S,GACrB,OAAiB,OAAVA,GAAmC,qBAAVA,CAClC,CAMA,SAASyD,EAAQzD,GACf,GAAIwD,MAAMC,SAAWD,MAAMC,QAAQzD,GACjC,OAAO,EAET,MAAMyQ,EAAOhR,OAAOkB,UAAUkS,SAAS3T,KAAKc,GAC5C,MAAyB,YAArByQ,EAAKqC,MAAM,EAAG,IAAuC,WAAnBrC,EAAKqC,OAAO,EAIpD,CAMA,SAASC,EAAS/S,GAChB,OAAiB,OAAVA,GAA4D,oBAA1CP,OAAOkB,UAAUkS,SAAS3T,KAAKc,EAC1D,CAKA,SAASgT,EAAehT,GACtB,OAAyB,kBAAVA,GAAsBA,aAAiBiT,SAAWC,UAAUlT,EAC7E,CAMA,SAASmT,EAAgBnT,EAAOoT,GAC9B,OAAOJ,EAAehT,GAASA,EAAQoT,CACzC,CAMA,SAASC,EAAerT,EAAOoT,GAC7B,MAAwB,qBAAVpT,EAAwBoT,EAAepT,CACvD,CACA,MACMsT,EAAc,CAACtT,EAAOuT,IAA+B,kBAAVvT,GAAsBA,EAAMwT,SAAS,KAAOC,WAAWzT,GAAS,IAAMuT,GAAavT,EAQpI,SAAS0T,EAASC,EAAIC,EAAMC,GAC1B,GAAIF,GAAyB,oBAAZA,EAAGzU,KAClB,OAAOyU,EAAGG,MAAMD,EAASD,EAE7B,CACA,SAASG,EAAKC,EAAUL,EAAIE,EAASI,GACnC,IAAIlV,EAAG4R,EAAK3B,EACZ,GAAIvL,EAAQuQ,GAEV,GADArD,EAAMqD,EAAShR,OACXiR,EACF,IAAKlV,EAAI4R,EAAM,EAAG5R,GAAK,EAAGA,IACxB4U,EAAGzU,KAAK2U,EAASG,EAASjV,GAAIA,QAGhC,IAAKA,EAAI,EAAGA,EAAI4R,EAAK5R,IACnB4U,EAAGzU,KAAK2U,EAASG,EAASjV,GAAIA,QAG7B,GAAIgU,EAASiB,GAGlB,IAFAhF,EAAOvP,OAAOuP,KAAKgF,GACnBrD,EAAM3B,EAAKhM,OACNjE,EAAI,EAAGA,EAAI4R,EAAK5R,IACnB4U,EAAGzU,KAAK2U,EAASG,EAAShF,EAAKjQ,IAAKiQ,EAAKjQ,GAG/C,CAOA,SAASmV,EAAeC,EAAIC,GAC1B,IAAIrV,EAAGsV,EAAMC,EAAIC,EACjB,IAAKJ,IAAOC,GAAMD,EAAGnR,SAAWoR,EAAGpR,OACjC,OAAO,EAET,IAAKjE,EAAI,EAAGsV,EAAOF,EAAGnR,OAAQjE,EAAIsV,IAAQtV,EAGxC,GAFAuV,EAAKH,EAAGpV,GACRwV,EAAKH,EAAGrV,GACJuV,EAAGE,eAAiBD,EAAGC,cAAgBF,EAAGG,QAAUF,EAAGE,MACzD,OAAO,EAGX,OAAO,CACT,CAKA,SAAS,EAAMC,GACb,GAAIjR,EAAQiR,GACV,OAAOA,EAAOhR,IAAI,GAEpB,GAAIqP,EAAS2B,GAAS,CACpB,MAAMC,EAASlV,OAAOY,OAAO,MACvB2O,EAAOvP,OAAOuP,KAAK0F,GACnBE,EAAO5F,EAAKhM,OAClB,IAAIF,EAAI,EACR,KAAOA,EAAI8R,IAAQ9R,EACjB6R,EAAO3F,EAAKlM,IAAM,EAAM4R,EAAO1F,EAAKlM,KAEtC,OAAO6R,CACT,CACA,OAAOD,CACT,CACA,SAASG,EAAWvU,GAClB,OAAmE,IAA5D,CAAC,YAAa,YAAa,eAAewU,QAAQxU,EAC3D,CAMA,SAASyU,EAAQzU,EAAKqU,EAAQD,EAAQM,GACpC,IAAKH,EAAWvU,GACd,OAEF,MAAM2U,EAAON,EAAOrU,GACd4U,EAAOR,EAAOpU,GAChByS,EAASkC,IAASlC,EAASmC,GAE7BC,EAAMF,EAAMC,EAAMF,GAElBL,EAAOrU,GAAO,EAAM4U,EAExB,CACA,SAASC,EAAMR,EAAQD,EAAQM,GAC7B,MAAMI,EAAU3R,EAAQiR,GAAUA,EAAS,CAACA,GACtCL,EAAOe,EAAQpS,OACrB,IAAK+P,EAAS4B,GACZ,OAAOA,EAGT,MAAMU,GADNL,EAAUA,GAAW,CAAC,GACCK,QAAUN,EACjC,IAAIO,EACJ,IAAK,IAAIvW,EAAI,EAAGA,EAAIsV,IAAQtV,EAAG,CAE7B,GADAuW,EAAUF,EAAQrW,IACbgU,EAASuC,GACZ,SAEF,MAAMtG,EAAOvP,OAAOuP,KAAKsG,GACzB,IAAK,IAAIxS,EAAI,EAAG8R,EAAO5F,EAAKhM,OAAQF,EAAI8R,IAAQ9R,EAC9CuS,EAAOrG,EAAKlM,GAAI6R,EAAQW,EAASN,EAErC,CACA,OAAOL,CACT,CACA,SAASY,EAAQZ,EAAQD,GAEvB,OAAOS,EAAMR,EAAQD,EAAQ,CAC3BW,OAAQG,GAEZ,CAKA,SAASA,EAAUlV,EAAKqU,EAAQD,GAC9B,IAAKG,EAAWvU,GACd,OAEF,MAAM2U,EAAON,EAAOrU,GACd4U,EAAOR,EAAOpU,GAChByS,EAASkC,IAASlC,EAASmC,GAC7BK,EAAQN,EAAMC,GACJzV,OAAOkB,UAAUC,eAAe1B,KAAKyV,EAAQrU,KACvDqU,EAAOrU,GAAO,EAAM4U,GAExB,CAUA,MAAMO,GAAe,CAEnB,GAAI1U,GAAKA,EAETqD,EAAG5E,GAAKA,EAAE4E,EACVsR,EAAGlW,GAAKA,EAAEkW,GAgCZ,SAASC,GAAiB3E,EAAK1Q,GAC7B,MAAMsV,EAAWH,GAAanV,KAASmV,GAAanV,GAbtD,SAAyBA,GACvB,MAAM0O,EAhBR,SAAmB1O,GACjB,MAAMuV,EAAQvV,EAAIwV,MAAM,KAClB9G,EAAO,GACb,IAAIc,EAAM,GACV,IAAK,MAAMiG,KAAQF,EACjB/F,GAAOiG,EACHjG,EAAI0D,SAAS,MACf1D,EAAMA,EAAIgD,MAAM,GAAI,GAAK,KAEzB9D,EAAKgH,KAAKlG,GACVA,EAAM,IAGV,OAAOd,CACT,CAEeiH,CAAU3V,GACvB,OAAO0Q,IACL,IAAK,MAAMlO,KAAKkM,EAAM,CACpB,GAAU,KAANlM,EACF,MAEFkO,EAAMA,GAAOA,EAAIlO,EACnB,CACA,OAAOkO,CAAG,CAEd,CAE6DkF,CAAgB5V,IAC3E,OAAOsV,EAAS5E,EAClB,CAIA,SAASmF,GAAYrS,GACnB,OAAOA,EAAIuM,OAAO,GAAG+F,cAAgBtS,EAAIgP,MAAM,EACjD,CACA,MAAMuD,GAAUrW,GAA0B,qBAAVA,EAC1BsW,GAAatW,GAA0B,oBAAVA,EAE7BuW,GAAY,CAACvU,EAAGC,KACpB,GAAID,EAAEwU,OAASvU,EAAEuU,KACf,OAAO,EAET,IAAK,MAAMC,KAAQzU,EACjB,IAAKC,EAAEyU,IAAID,GACT,OAAO,EAGX,OAAO,CAAI,EAcb,MAAME,GAAKzV,KAAKyV,GACVC,GAAM,EAAID,GACVE,GAAQD,GAAMD,GACdG,GAAW7D,OAAO8D,kBAClBC,GAAcL,GAAK,IACnBM,GAAUN,GAAK,EACfO,GAAaP,GAAK,EAClBQ,GAAqB,EAALR,GAAS,EACzBS,GAAQlW,KAAKkW,MACbC,GAAOnW,KAAKmW,KAClB,SAASC,GAAalT,EAAGsR,EAAG6B,GAC1B,OAAOrW,KAAKsW,IAAIpT,EAAIsR,GAAK6B,CAC3B,CAIA,SAASE,GAAQC,GACf,MAAMC,EAAezW,KAAK0W,MAAMF,GAChCA,EAAQJ,GAAaI,EAAOC,EAAcD,EAAQ,KAAQC,EAAeD,EACzE,MAAMG,EAAY3W,KAAKyO,IAAI,GAAIzO,KAAK4W,MAAMV,GAAMM,KAC1CK,EAAWL,EAAQG,EAEzB,OADqBE,GAAY,EAAI,EAAIA,GAAY,EAAI,EAAIA,GAAY,EAAI,EAAI,IAC3DF,CACxB,CAqBA,SAASG,GAASxX,GAChB,OAAQyX,MAAMxE,WAAWjT,KAAO0S,SAAS1S,EAC3C,CAQA,SAAS0X,GAAmBC,EAAOxD,EAAQjU,GACzC,IAAI3B,EAAGsV,EAAMrU,EACb,IAAKjB,EAAI,EAAGsV,EAAO8D,EAAMnV,OAAQjE,EAAIsV,EAAMtV,IACzCiB,EAAQmY,EAAMpZ,GAAG2B,GACZuX,MAAMjY,KACT2U,EAAOvT,IAAMF,KAAKE,IAAIuT,EAAOvT,IAAKpB,GAClC2U,EAAOxT,IAAMD,KAAKC,IAAIwT,EAAOxT,IAAKnB,GAGxC,CACA,SAASoY,GAAUC,GACjB,OAAOA,GAAW1B,GAAK,IACzB,CACA,SAAS2B,GAAUC,GACjB,OAAOA,GAAW,IAAM5B,GAC1B,CAQA,SAAS6B,GAAepU,GACtB,IAAK4O,EAAe5O,GAClB,OAEF,IAAIlC,EAAI,EACJrB,EAAI,EACR,KAAOK,KAAK0W,MAAMxT,EAAIlC,GAAKA,IAAMkC,GAC/BlC,GAAK,GACLrB,IAEF,OAAOA,CACT,CAEA,SAAS4X,GAAkBC,EAAaC,GACtC,MAAMC,EAAsBD,EAAWvU,EAAIsU,EAAYtU,EACjDyU,EAAsBF,EAAWjD,EAAIgD,EAAYhD,EACjDoD,EAA2B5X,KAAK6X,KAAKH,EAAsBA,EAAsBC,EAAsBA,GAC7G,IAAIG,EAAQ9X,KAAK+X,MAAMJ,EAAqBD,GAK5C,OAJII,GAAS,GAAMrC,KACjBqC,GAASpC,IAGJ,CACLoC,QACAE,SAAUJ,EAEd,CACA,SAASK,GAAsBC,EAAKC,GAClC,OAAOnY,KAAK6X,KAAK7X,KAAKyO,IAAI0J,EAAIjV,EAAIgV,EAAIhV,EAAG,GAAKlD,KAAKyO,IAAI0J,EAAI3D,EAAI0D,EAAI1D,EAAG,GACxE,CAKA,SAAS4D,GAAWtX,EAAGC,GACrB,OAAQD,EAAIC,EAAI4U,IAASD,GAAMD,EACjC,CAKA,SAAS4C,GAAgBvX,GACvB,OAAQA,EAAI4U,GAAMA,IAAOA,EAC3B,CAIA,SAAS4C,GAAcR,EAAOS,EAAOC,EAAKC,GACxC,MAAM3X,EAAIuX,GAAgBP,GACpBlY,EAAIyY,GAAgBE,GACpBvX,EAAIqX,GAAgBG,GACpBE,EAAeL,GAAgBzY,EAAIkB,GACnC6X,EAAaN,GAAgBrX,EAAIF,GACjC8X,EAAeP,GAAgBvX,EAAIlB,GACnCiZ,EAAaR,GAAgBvX,EAAIE,GACvC,OAAOF,IAAMlB,GAAKkB,IAAME,GAAKyX,GAAyB7Y,IAAMoB,GAAK0X,EAAeC,GAAcC,EAAeC,CAC/G,CAQA,SAASC,GAAYha,EAAOoB,EAAKD,GAC/B,OAAOD,KAAKC,IAAIC,EAAKF,KAAKE,IAAID,EAAKnB,GACrC,CAeA,SAASia,GAAWja,EAAOyZ,EAAOC,GAChC,IAAInC,EAAUxU,UAAUC,OAAS,QAAsBL,IAAjBI,UAAU,GAAmBA,UAAU,GAAK,KAClF,OAAO/C,GAASkB,KAAKE,IAAIqY,EAAOC,GAAOnC,GAAWvX,GAASkB,KAAKC,IAAIsY,EAAOC,GAAOnC,CACpF,CACA,SAAS2C,GAAQC,EAAOna,EAAOoa,GAC7BA,EAAMA,GAAO,CAAC3F,GAAS0F,EAAM1F,GAASzU,GACtC,IAEIqa,EAFAC,EAAKH,EAAMnX,OAAS,EACpBuX,EAAK,EAET,KAAOD,EAAKC,EAAK,GACfF,EAAME,EAAKD,GAAM,EACbF,EAAIC,GACNE,EAAKF,EAELC,EAAKD,EAGT,MAAO,CACLE,KACAD,KAEJ,CASA,MAAME,GAAe,CAACL,EAAO7Z,EAAKN,EAAOya,IAASP,GAAQC,EAAOna,EAAOya,EAAOhG,IAC7E,MAAMiG,EAAKP,EAAM1F,GAAOnU,GACxB,OAAOoa,EAAK1a,GAAS0a,IAAO1a,GAASma,EAAM1F,EAAQ,GAAGnU,KAASN,CAAK,EAClEyU,GAAS0F,EAAM1F,GAAOnU,GAAON,GAQ3B2a,GAAgB,CAACR,EAAO7Z,EAAKN,IAAUka,GAAQC,EAAOna,GAAOyU,GAAS0F,EAAM1F,GAAOnU,IAAQN,IAmBjG,MAAM4a,GAAc,CAAC,OAAQ,MAAO,QAAS,SAAU,WAkCvD,SAASC,GAAoB1C,EAAO2C,GAClC,MAAMC,EAAO5C,EAAM6C,SACnB,IAAKD,EACH,OAEF,MAAME,EAAYF,EAAKE,UACjBxG,EAAQwG,EAAUnG,QAAQgG,IACjB,IAAXrG,GACFwG,EAAUC,OAAOzG,EAAO,GAEtBwG,EAAUjY,OAAS,IAGvB4X,GAAYO,SAAQ7a,WACX6X,EAAM7X,EAAI,WAEZ6X,EAAM6C,SACf,CAIA,SAASI,GAAaC,GACpB,MAAMC,EAAM,IAAIC,IAChB,IAAIxc,EAAGsV,EACP,IAAKtV,EAAI,EAAGsV,EAAOgH,EAAMrY,OAAQjE,EAAIsV,IAAQtV,EAC3Cuc,EAAIE,IAAIH,EAAMtc,IAEhB,OAAIuc,EAAI9E,OAASnC,EACRgH,EAEF7X,MAAMiY,KAAKH,EACpB,CAOA,MAAMI,GACkB,qBAAXC,OACF,SAAUjI,GACf,OAAOA,GACT,EAEKiI,OAAOC,sBAMhB,SAASC,GAAUlI,EAAIE,GACrB,IAAIiI,EAAY,GACZC,GAAU,EACd,OAAO,WACL,IAAK,IAAIC,EAAQjZ,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwY,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFrI,EAAKqI,GAASlZ,UAAUkZ,GAG1BH,EAAYlI,EACPmI,IACHA,GAAU,EACVL,GAAiBxc,KAAKyc,QAAQ,KAC5BI,GAAU,EACVpI,EAAGG,MAAMD,EAASiI,EAAU,IAGlC,CACF,CAuBA,MAAMI,GAAqBC,GAAmB,UAAVA,EAAoB,OAAmB,QAAVA,EAAkB,QAAU,SAKvFC,GAAiB,CAACD,EAAO1C,EAAOC,IAAkB,UAAVyC,EAAoB1C,EAAkB,QAAV0C,EAAkBzC,GAAOD,EAAQC,GAAO,EAalH,SAAS2C,GAAiCC,EAAMC,EAAQC,GACtD,MAAMC,EAAaF,EAAOvZ,OAC1B,IAAIyW,EAAQ,EACRiD,EAAQD,EACZ,GAAIH,EAAKK,QAAS,CAChB,MAAMC,EAASN,EAAKM,OAClBC,EAAUP,EAAKO,QACXC,EAAOF,EAAOE,KACdC,EAAwBH,EAAOI,gBACnC5b,EAAM2b,EAAsB3b,IAC5BD,EAAM4b,EAAsB5b,IAC5B8b,EAAaF,EAAsBE,WACnCC,EAAaH,EAAsBG,WACjCD,IACFxD,EAAQO,GAAY9Y,KAAKE,IAEzBoZ,GAAaqC,EAASD,EAAOE,KAAM1b,GAAKmZ,GAExCiC,EAAqBC,EAAajC,GAAa+B,EAAQO,EAAMF,EAAOO,iBAAiB/b,IAAMmZ,IAAK,EAAGkC,EAAa,IAGhHC,EADEQ,EACMlD,GAAY9Y,KAAKC,IAEzBqZ,GAAaqC,EAASD,EAAOE,KAAM3b,GAAK,GAAMmZ,GAAK,EAEnDkC,EAAqB,EAAIhC,GAAa+B,EAAQO,EAAMF,EAAOO,iBAAiBhc,IAAM,GAAMmZ,GAAK,GAAIb,EAAOgD,GAAchD,EAE9GgD,EAAahD,CAEzB,CACA,MAAO,CACLA,QACAiD,QAEJ,CAOA,SAASU,GAAoBd,GAC3B,MAAMe,EAASf,EAAKe,OAClBC,EAAShB,EAAKgB,OACdC,EAAejB,EAAKiB,aAChBC,EAAY,CAChBC,KAAMJ,EAAOjc,IACbsc,KAAML,EAAOlc,IACbwc,KAAML,EAAOlc,IACbwc,KAAMN,EAAOnc,KAEf,IAAKoc,EAEH,OADAjB,EAAKiB,aAAeC,GACb,EAET,MAAMK,EAAUN,EAAaE,OAASJ,EAAOjc,KAAOmc,EAAaG,OAASL,EAAOlc,KAAOoc,EAAaI,OAASL,EAAOlc,KAAOmc,EAAaK,OAASN,EAAOnc,IAEzJ,OADA1B,OAAOwQ,OAAOsN,EAAcC,GACrBK,CACT,CACA,MAAMC,GAAS7d,GAAW,IAANA,GAAiB,IAANA,EACzB8d,GAAY,CAAC9d,EAAGa,EAAGD,KAAQK,KAAKyO,IAAI,EAAG,IAAM1P,GAAK,IAAMiB,KAAK8c,KAAK/d,EAAIa,GAAK8V,GAAM/V,GACjFod,GAAa,CAAChe,EAAGa,EAAGD,IAAMK,KAAKyO,IAAI,GAAI,GAAK1P,GAAKiB,KAAK8c,KAAK/d,EAAIa,GAAK8V,GAAM/V,GAAK,EAM/Eqd,GAAU,CACdC,OAAQle,GAAKA,EACbme,WAAYne,GAAKA,EAAIA,EACrBoe,YAAape,IAAMA,GAAKA,EAAI,GAC5Bqe,cAAere,IAAMA,GAAK,IAAO,EAAI,GAAMA,EAAIA,GAAK,MAASA,GAAKA,EAAI,GAAK,GAC3Ese,YAAate,GAAKA,EAAIA,EAAIA,EAC1Bue,aAAcve,IAAMA,GAAK,GAAKA,EAAIA,EAAI,EACtCwe,eAAgBxe,IAAMA,GAAK,IAAO,EAAI,GAAMA,EAAIA,EAAIA,EAAI,KAAQA,GAAK,GAAKA,EAAIA,EAAI,GAClFye,YAAaze,GAAKA,EAAIA,EAAIA,EAAIA,EAC9B0e,aAAc1e,MAAQA,GAAK,GAAKA,EAAIA,EAAIA,EAAI,GAC5C2e,eAAgB3e,IAAMA,GAAK,IAAO,EAAI,GAAMA,EAAIA,EAAIA,EAAIA,GAAK,KAAQA,GAAK,GAAKA,EAAIA,EAAIA,EAAI,GAC3F4e,YAAa5e,GAAKA,EAAIA,EAAIA,EAAIA,EAAIA,EAClC6e,aAAc7e,IAAMA,GAAK,GAAKA,EAAIA,EAAIA,EAAIA,EAAI,EAC9C8e,eAAgB9e,IAAMA,GAAK,IAAO,EAAI,GAAMA,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,KAAQA,GAAK,GAAKA,EAAIA,EAAIA,EAAIA,EAAI,GAClG+e,WAAY/e,GAA8B,EAAxBiB,KAAK+d,IAAIhf,EAAIgX,IAC/BiI,YAAajf,GAAKiB,KAAK8c,IAAI/d,EAAIgX,IAC/BkI,cAAelf,IAAM,IAAOiB,KAAK+d,IAAItI,GAAK1W,GAAK,GAC/Cmf,WAAYnf,GAAW,IAANA,EAAU,EAAIiB,KAAKyO,IAAI,EAAG,IAAM1P,EAAI,IACrDof,YAAapf,GAAW,IAANA,EAAU,EAA4B,EAAvBiB,KAAKyO,IAAI,GAAI,GAAK1P,GACnDqf,cAAerf,GAAK6d,GAAO7d,GAAKA,EAAIA,EAAI,GAAM,GAAMiB,KAAKyO,IAAI,EAAG,IAAU,EAAJ1P,EAAQ,IAAM,IAAyC,EAAjCiB,KAAKyO,IAAI,GAAI,IAAU,EAAJ1P,EAAQ,KACvHsf,WAAYtf,GAAKA,GAAK,EAAIA,IAAMiB,KAAK6X,KAAK,EAAI9Y,EAAIA,GAAK,GACvDuf,YAAavf,GAAKiB,KAAK6X,KAAK,GAAK9Y,GAAK,GAAKA,GAC3Cwf,cAAexf,IAAMA,GAAK,IAAO,GAAK,IAAOiB,KAAK6X,KAAK,EAAI9Y,EAAIA,GAAK,GAAK,IAAOiB,KAAK6X,KAAK,GAAK9Y,GAAK,GAAKA,GAAK,GAC9Gyf,cAAezf,GAAK6d,GAAO7d,GAAKA,EAAI8d,GAAU9d,EAAG,KAAO,IACxD0f,eAAgB1f,GAAK6d,GAAO7d,GAAKA,EAAIge,GAAWhe,EAAG,KAAO,IAC1D,gBAAA2f,CAAiB3f,GACf,MAAMa,EAAI,MAEV,OAAOgd,GAAO7d,GAAKA,EAAIA,EAAI,GAAM,GAAM8d,GAAc,EAAJ9d,EAAOa,EAD9C,KACsD,GAAM,GAAMmd,GAAe,EAAJhe,EAAQ,EAAGa,EADxF,IAEZ,EACA,UAAA+e,CAAW5f,GACT,MAAMa,EAAI,QACV,OAAOb,EAAIA,IAAMa,EAAI,GAAKb,EAAIa,EAChC,EACA,WAAAgf,CAAY7f,GACV,MAAMa,EAAI,QACV,OAAQb,GAAK,GAAKA,IAAMa,EAAI,GAAKb,EAAIa,GAAK,CAC5C,EACA,aAAAif,CAAc9f,GACZ,IAAIa,EAAI,QACR,OAAKb,GAAK,IAAO,EACDA,EAAIA,IAAqB,GAAda,GAAK,QAAcb,EAAIa,GAAzC,GAEF,KAAQb,GAAK,GAAKA,IAAqB,GAAda,GAAK,QAAcb,EAAIa,GAAK,EAC9D,EACAkf,aAAc/f,GAAK,EAAIie,GAAQ+B,cAAc,EAAIhgB,GACjD,aAAAggB,CAAchgB,GACZ,MAAMd,EAAI,OACJE,EAAI,KACV,OAAIY,EAAI,EAAIZ,EACHF,EAAIc,EAAIA,EAEbA,EAAI,EAAIZ,EACHF,GAAKc,GAAK,IAAMZ,GAAKY,EAAI,IAE9BA,EAAI,IAAMZ,EACLF,GAAKc,GAAK,KAAOZ,GAAKY,EAAI,MAE5Bd,GAAKc,GAAK,MAAQZ,GAAKY,EAAI,OACpC,EACAigB,gBAAiBjgB,GAAKA,EAAI,GAAoC,GAA9Bie,GAAQ8B,aAAiB,EAAJ/f,GAAkD,GAAnCie,GAAQ+B,cAAkB,EAAJhgB,EAAQ,GAAW,IAE/G,SAASkgB,GAAoBngB,GAC3B,GAAIA,GAA0B,kBAAVA,EAAoB,CACtC,MAAMyQ,EAAOzQ,EAAM6S,WACnB,MAAgB,2BAATpC,GAA8C,4BAATA,CAC9C,CACA,OAAO,CACT,CACA,SAAS,GAAMzQ,GACb,OAAOmgB,GAAoBngB,GAASA,EAAQ,IAAIuQ,EAAMvQ,EACxD,CACA,SAASogB,GAAcpgB,GACrB,OAAOmgB,GAAoBngB,GAASA,EAAQ,IAAIuQ,EAAMvQ,GAAOqS,SAAS,IAAKD,OAAO,IAAK5P,WACzF,CACA,MAAM6d,GAAU,CAAC,IAAK,IAAK,cAAe,SAAU,WAC9CC,GAAS,CAAC,QAAS,cAAe,mBA6ExC,MAAMC,GAAY,IAAIC,IAWtB,SAASC,GAAaC,EAAKC,EAAQ3L,GACjC,OAXF,SAAyB2L,EAAQ3L,GAC/BA,EAAUA,GAAW,CAAC,EACtB,MAAM4L,EAAWD,EAASE,KAAKC,UAAU9L,GACzC,IAAI+L,EAAYR,GAAU3gB,IAAIghB,GAK9B,OAJKG,IACHA,EAAY,IAAIC,KAAKC,aAAaN,EAAQ3L,GAC1CuL,GAAUjF,IAAIsF,EAAUG,IAEnBA,CACT,CAESG,CAAgBP,EAAQ3L,GAASmM,OAAOT,EACjD,CACA,MAAMU,GAAa,CACjBC,OAAOrhB,GACEyD,EAAQzD,GAASA,EAAQ,GAAKA,EAEvC,OAAAshB,CAAQC,EAAW9M,EAAO+M,GACxB,GAAkB,IAAdD,EACF,MAAO,IAET,MAAMZ,EAAS/P,KAAK6Q,MAAMzM,QAAQ2L,OAClC,IAAIe,EACAC,EAAQJ,EACZ,GAAIC,EAAMxe,OAAS,EAAG,CACpB,MAAM4e,EAAU1gB,KAAKC,IAAID,KAAKsW,IAAIgK,EAAM,GAAGxhB,OAAQkB,KAAKsW,IAAIgK,EAAMA,EAAMxe,OAAS,GAAGhD,SAChF4hB,EAAU,MAAQA,EAAU,QAC9BF,EAAW,cAEbC,EAuBN,SAAwBJ,EAAWC,GACjC,IAAIG,EAAQH,EAAMxe,OAAS,EAAIwe,EAAM,GAAGxhB,MAAQwhB,EAAM,GAAGxhB,MAAQwhB,EAAM,GAAGxhB,MAAQwhB,EAAM,GAAGxhB,MACvFkB,KAAKsW,IAAImK,IAAU,GAAKJ,IAAcrgB,KAAK4W,MAAMyJ,KACnDI,EAAQJ,EAAYrgB,KAAK4W,MAAMyJ,IAEjC,OAAOI,CACT,CA7BcE,CAAeN,EAAWC,EACpC,CACA,MAAMM,EAAW1K,GAAMlW,KAAKsW,IAAImK,IAC1BI,EAAa7gB,KAAKC,IAAID,KAAKE,KAAK,EAAIF,KAAK4W,MAAMgK,GAAW,IAAK,GAC/D9M,EAAU,CACd0M,WACAM,sBAAuBD,EACvBE,sBAAuBF,GAGzB,OADAtiB,OAAOwQ,OAAO+E,EAASpE,KAAKoE,QAAQwM,MAAML,QACnCV,GAAac,EAAWZ,EAAQ3L,EACzC,EACA,WAAAkN,CAAYX,EAAW9M,EAAO+M,GAC5B,GAAkB,IAAdD,EACF,MAAO,IAET,MAAMY,EAASX,EAAM/M,GAAO2N,aAAeb,EAAYrgB,KAAKyO,IAAI,GAAIzO,KAAK4W,MAAMV,GAAMmK,KACrF,MAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,IAAIc,SAASF,IAAW1N,EAAQ,GAAM+M,EAAMxe,OACxDoe,GAAWE,QAAQpiB,KAAK0R,KAAM2Q,EAAW9M,EAAO+M,GAElD,EACT,GASF,IAAIc,GAAQ,CACVlB,eAwEF,MAAMmB,GAAY9iB,OAAOY,OAAO,MAC1B,GAAcZ,OAAOY,OAAO,MAClC,SAASmiB,GAAWC,EAAMniB,GACxB,IAAKA,EACH,OAAOmiB,EAET,MAAMzT,EAAO1O,EAAIwV,MAAM,KACvB,IAAK,IAAI/W,EAAI,EAAGyB,EAAIwO,EAAKhM,OAAQjE,EAAIyB,IAAKzB,EAAG,CAC3C,MAAM+D,EAAIkM,EAAKjQ,GACf0jB,EAAOA,EAAK3f,KAAO2f,EAAK3f,GAAKrD,OAAOY,OAAO,MAC7C,CACA,OAAOoiB,CACT,CACA,SAAS,GAAIC,EAAMC,EAAOtB,GACxB,MAAqB,kBAAVsB,EACFxN,EAAMqN,GAAWE,EAAMC,GAAQtB,GAEjClM,EAAMqN,GAAWE,EAAM,IAAKC,EACrC,CACA,MAAMC,GACJ,WAAApS,CAAYqS,EAAcC,GACxBlS,KAAKmS,eAAYpgB,EACjBiO,KAAKoS,gBAAkB,kBACvBpS,KAAKqS,YAAc,kBACnBrS,KAAKQ,MAAQ,OACbR,KAAKsS,SAAW,CAAC,EACjBtS,KAAKuS,iBAAmBC,GAAWA,EAAQ3B,MAAM4B,SAASC,sBAC1D1S,KAAK2S,SAAW,CAAC,EACjB3S,KAAK4S,OAAS,CAAC,YAAa,WAAY,QAAS,aAAc,aAC/D5S,KAAK6S,KAAO,CACVC,OAAQ,qDACRlN,KAAM,GACNmN,MAAO,SACPC,WAAY,IACZvS,OAAQ,MAEVT,KAAKiT,MAAQ,CAAC,EACdjT,KAAKkT,qBAAuB,CAACC,EAAK/O,IAAYoL,GAAcpL,EAAQgO,iBACpEpS,KAAKoT,iBAAmB,CAACD,EAAK/O,IAAYoL,GAAcpL,EAAQiO,aAChErS,KAAKqT,WAAa,CAACF,EAAK/O,IAAYoL,GAAcpL,EAAQ5D,OAC1DR,KAAKsT,UAAY,IACjBtT,KAAKuT,YAAc,CACjBjkB,KAAM,UACNkkB,WAAW,EACXC,kBAAkB,GAEpBzT,KAAK0T,qBAAsB,EAC3B1T,KAAK2T,QAAU,KACf3T,KAAK4T,QAAU,KACf5T,KAAK6T,SAAU,EACf7T,KAAK8T,QAAU,CAAC,EAChB9T,KAAK+T,YAAa,EAClB/T,KAAKgU,WAAQjiB,EACbiO,KAAKiU,OAAS,CAAC,EACfjU,KAAKkU,UAAW,EAChBlU,KAAKmU,yBAA0B,EAC/BnU,KAAKoU,SAASnC,GACdjS,KAAKkD,MAAMgP,EACb,CACA,GAAAxH,CAAIqH,EAAOtB,GACT,OAAO,GAAIzQ,KAAM+R,EAAOtB,EAC1B,CACA,GAAAzhB,CAAI+iB,GACF,OAAOH,GAAW5R,KAAM+R,EAC1B,CACA,QAAAqC,CAASrC,EAAOtB,GACd,OAAO,GAAI,GAAasB,EAAOtB,EACjC,CACA,QAAA4D,CAAStC,EAAOtB,GACd,OAAO,GAAIkB,GAAWI,EAAOtB,EAC/B,CACA,KAAA6D,CAAMvC,EAAOrjB,EAAM6lB,EAAaC,GAC9B,MAAMC,EAAc7C,GAAW5R,KAAM+R,GAC/B2C,EAAoB9C,GAAW5R,KAAMuU,GACrCI,EAAc,IAAMjmB,EAC1BG,OAAO+lB,iBAAiBH,EAAa,CACnC,CAACE,GAAc,CACbvlB,MAAOqlB,EAAY/lB,GACnBmmB,UAAU,GAEZ,CAACnmB,GAAO,CACNK,YAAY,EACZ,GAAAC,GACE,MAAM8lB,EAAQ9U,KAAK2U,GACb5Q,EAAS2Q,EAAkBF,GACjC,OAAIrS,EAAS2S,GACJjmB,OAAOwQ,OAAO,CAAC,EAAG0E,EAAQ+Q,GAE5BrS,EAAeqS,EAAO/Q,EAC/B,EACA,GAAA2G,CAAItb,GACF4Q,KAAK2U,GAAevlB,CACtB,IAGN,CACA,KAAA8T,CAAM6R,GACJA,EAASxK,SAAQrH,GAASA,EAAMlD,OAClC,EAEF,IAAIgV,GAA0B,IAAIhD,GAAS,CACzCiD,YAAavmB,IAASA,EAAKwmB,WAAW,MACtCC,WAAYzmB,GAAiB,WAATA,EACpBukB,MAAO,CACLmC,UAAW,eAEb7B,YAAa,CACX0B,aAAa,EACbE,YAAY,IAEb,CA/TH,SAAiCH,GAC/BA,EAAStK,IAAI,YAAa,CACxB2K,WAAOtjB,EACPujB,SAAU,IACVC,OAAQ,eACRxS,QAAIhR,EACJ8Y,UAAM9Y,EACNyjB,UAAMzjB,EACN0jB,QAAI1jB,EACJ8N,UAAM9N,IAERijB,EAASZ,SAAS,YAAa,CAC7BgB,WAAW,EACXD,YAAY,EACZF,YAAavmB,GAAiB,eAATA,GAAkC,eAATA,GAAkC,OAATA,IAEzEsmB,EAAStK,IAAI,aAAc,CACzBgF,OAAQ,CACN7P,KAAM,QACN6V,WAAYhG,IAEdD,QAAS,CACP5P,KAAM,SACN6V,WAAYjG,MAGhBuF,EAASZ,SAAS,aAAc,CAC9BgB,UAAW,cAEbJ,EAAStK,IAAI,cAAe,CAC1BiL,OAAQ,CACNxD,UAAW,CACTmD,SAAU,MAGdM,OAAQ,CACNzD,UAAW,CACTmD,SAAU,IAGdO,KAAM,CACJC,WAAY,CACVpG,OAAQ,CACN7E,KAAM,eAERkL,QAAS,CACPlW,KAAM,UACNyV,SAAU,KAIhBU,KAAM,CACJF,WAAY,CACVpG,OAAQ,CACN+F,GAAI,eAENM,QAAS,CACPlW,KAAM,UACN0V,OAAQ,SACRxS,GAAI5S,GAAS,EAAJA,MAKnB,EACA,SAA8B6kB,GAC5BA,EAAStK,IAAI,SAAU,CACrBuL,aAAa,EACbC,QAAS,CACPC,IAAK,EACLC,MAAO,EACPC,OAAQ,EACRC,KAAM,IAGZ,EAgEA,SAA4BtB,GAC1BA,EAAStK,IAAI,QAAS,CACpB6L,SAAS,EACTC,QAAQ,EACRnT,SAAS,EACToT,aAAa,EACbC,OAAQ,QACRC,MAAO,EACPC,KAAM,CACJL,SAAS,EACTM,UAAW,EACXC,iBAAiB,EACjBC,WAAW,EACXC,WAAY,EACZC,UAAW,CAACC,EAAM9S,IAAYA,EAAQyS,UACtCM,UAAW,CAACD,EAAM9S,IAAYA,EAAQ5D,MACtCgW,QAAQ,GAEVY,OAAQ,CACNb,SAAS,EACTc,KAAM,GACNC,WAAY,EACZC,MAAO,GAETC,MAAO,CACLjB,SAAS,EACTkB,KAAM,GACNvB,QAAS,CACPC,IAAK,EACLE,OAAQ,IAGZzF,MAAO,CACL8G,YAAa,EACbC,YAAa,GACbC,QAAQ,EACRC,gBAAiB,EACjBC,gBAAiB,GACjB5B,QAAS,EACTK,SAAS,EACTwB,UAAU,EACVC,gBAAiB,EACjBC,YAAa,EACbnV,SAAU4O,GAAMlB,WAAWC,OAC3ByH,MAAO,CAAC,EACRC,MAAO,CAAC,EACR5M,MAAO,SACP6M,WAAY,OACZC,mBAAmB,EACnBC,cAAe,4BACfC,gBAAiB,KAGrBvD,EAASV,MAAM,cAAe,QAAS,GAAI,SAC3CU,EAASV,MAAM,aAAc,QAAS,GAAI,eAC1CU,EAASV,MAAM,eAAgB,QAAS,GAAI,eAC5CU,EAASV,MAAM,cAAe,QAAS,GAAI,SAC3CU,EAASZ,SAAS,QAAS,CACzBgB,WAAW,EACXH,YAAavmB,IAASA,EAAKwmB,WAAW,YAAcxmB,EAAKwmB,WAAW,UAAqB,aAATxmB,GAAgC,WAATA,EACvGymB,WAAYzmB,GAAiB,eAATA,GAAkC,mBAATA,GAAsC,SAATA,IAE5EsmB,EAASZ,SAAS,SAAU,CAC1BgB,UAAW,UAEbJ,EAASZ,SAAS,cAAe,CAC/Ba,YAAavmB,GAAiB,oBAATA,GAAuC,aAATA,EACnDymB,WAAYzmB,GAAiB,oBAATA,GAExB,IAsHA,SAAS8pB,GAAarF,EAAKsF,EAAMC,EAAIC,EAASC,GAC5C,IAAIC,EAAYJ,EAAKG,GAQrB,OAPKC,IACHA,EAAYJ,EAAKG,GAAUzF,EAAI2F,YAAYF,GAAQrB,MACnDmB,EAAGtT,KAAKwT,IAENC,EAAYF,IACdA,EAAUE,GAELF,CACT,CACA,SAASI,GAAa5F,EAAKN,EAAMmG,EAAeC,GAE9C,IAAIR,GADJQ,EAAQA,GAAS,CAAC,GACDR,KAAOQ,EAAMR,MAAQ,CAAC,EACnCC,EAAKO,EAAMC,eAAiBD,EAAMC,gBAAkB,GACpDD,EAAMpG,OAASA,IACjB4F,EAAOQ,EAAMR,KAAO,CAAC,EACrBC,EAAKO,EAAMC,eAAiB,GAC5BD,EAAMpG,KAAOA,GAEfM,EAAIgG,OACJhG,EAAIN,KAAOA,EACX,IAAI8F,EAAU,EACd,MAAMlV,EAAOuV,EAAc5mB,OAC3B,IAAIjE,EAAGmQ,EAAG8a,EAAMC,EAAOC,EACvB,IAAKnrB,EAAI,EAAGA,EAAIsV,EAAMtV,IAEpB,GADAkrB,EAAQL,EAAc7qB,QACR4D,IAAVsnB,GAAiC,OAAVA,IAAqC,IAAnBxmB,EAAQwmB,GACnDV,EAAUH,GAAarF,EAAKsF,EAAMC,EAAIC,EAASU,QAC1C,GAAIxmB,EAAQwmB,GACjB,IAAK/a,EAAI,EAAG8a,EAAOC,EAAMjnB,OAAQkM,EAAI8a,EAAM9a,IACzCgb,EAAcD,EAAM/a,QACAvM,IAAhBunB,GAA6C,OAAhBA,GAAyBzmB,EAAQymB,KAChEX,EAAUH,GAAarF,EAAKsF,EAAMC,EAAIC,EAASW,IAKvDnG,EAAIoG,UACJ,MAAMC,EAAQd,EAAGtmB,OAAS,EAC1B,GAAIonB,EAAQR,EAAc5mB,OAAQ,CAChC,IAAKjE,EAAI,EAAGA,EAAIqrB,EAAOrrB,WACdsqB,EAAKC,EAAGvqB,IAEjBuqB,EAAGpO,OAAO,EAAGkP,EACf,CACA,OAAOb,CACT,CACA,SAASc,GAAY5I,EAAO6I,EAAOnC,GACjC,MAAMhF,EAAmB1B,EAAM8I,wBACzBC,EAAsB,IAAVrC,EAAcjnB,KAAKC,IAAIgnB,EAAQ,EAAG,IAAO,EAC3D,OAAOjnB,KAAK0W,OAAO0S,EAAQE,GAAarH,GAAoBA,EAAmBqH,CACjF,CACA,SAASC,GAAYC,EAAQ3G,IAC3BA,EAAMA,GAAO2G,EAAOC,WAAW,OAC3BZ,OACJhG,EAAI6G,iBACJ7G,EAAI8G,UAAU,EAAG,EAAGH,EAAOvC,MAAOuC,EAAOI,QACzC/G,EAAIoG,SACN,CACA,SAASY,GAAUhH,EAAK/O,EAAS5Q,EAAGsR,GAClCsV,GAAgBjH,EAAK/O,EAAS5Q,EAAGsR,EAAG,KACtC,CACA,SAASsV,GAAgBjH,EAAK/O,EAAS5Q,EAAGsR,EAAGvS,GAC3C,IAAIsN,EAAMwa,EAASC,EAAS1U,EAAM2U,EAAchD,EAAOiD,EAAUC,EACjE,MAAM1H,EAAQ3O,EAAQsW,WAChBC,EAAWvW,EAAQuW,SACnBC,EAASxW,EAAQwW,OACvB,IAAIC,GAAOF,GAAY,GAAKvU,GAC5B,GAAI2M,GAA0B,kBAAVA,IAClBlT,EAAOkT,EAAM9Q,WACA,8BAATpC,GAAiD,+BAATA,GAM1C,OALAsT,EAAIgG,OACJhG,EAAI2H,UAAUtnB,EAAGsR,GACjBqO,EAAIxR,OAAOkZ,GACX1H,EAAI4H,UAAUhI,GAAQA,EAAMwE,MAAQ,GAAIxE,EAAMmH,OAAS,EAAGnH,EAAMwE,MAAOxE,EAAMmH,aAC7E/G,EAAIoG,UAIR,KAAIlS,MAAMuT,IAAWA,GAAU,GAA/B,CAIA,OADAzH,EAAI6H,YACIjI,GACN,QACMxgB,EACF4gB,EAAI8H,QAAQznB,EAAGsR,EAAGvS,EAAI,EAAGqoB,EAAQ,EAAG,EAAG5U,IAEvCmN,EAAI+H,IAAI1nB,EAAGsR,EAAG8V,EAAQ,EAAG5U,IAE3BmN,EAAIgI,YACJ,MACF,IAAK,WACH5D,EAAQhlB,EAAIA,EAAI,EAAIqoB,EACpBzH,EAAIiI,OAAO5nB,EAAIlD,KAAK8c,IAAIyN,GAAOtD,EAAOzS,EAAIxU,KAAK+d,IAAIwM,GAAOD,GAC1DC,GAAOtU,GACP4M,EAAIkI,OAAO7nB,EAAIlD,KAAK8c,IAAIyN,GAAOtD,EAAOzS,EAAIxU,KAAK+d,IAAIwM,GAAOD,GAC1DC,GAAOtU,GACP4M,EAAIkI,OAAO7nB,EAAIlD,KAAK8c,IAAIyN,GAAOtD,EAAOzS,EAAIxU,KAAK+d,IAAIwM,GAAOD,GAC1DzH,EAAIgI,YACJ,MACF,IAAK,cACHZ,EAAwB,KAATK,EACfhV,EAAOgV,EAASL,EAChBF,EAAU/pB,KAAK+d,IAAIwM,EAAMvU,IAAcV,EACvC4U,EAAWlqB,KAAK+d,IAAIwM,EAAMvU,KAAe/T,EAAIA,EAAI,EAAIgoB,EAAe3U,GACpE0U,EAAUhqB,KAAK8c,IAAIyN,EAAMvU,IAAcV,EACvC6U,EAAWnqB,KAAK8c,IAAIyN,EAAMvU,KAAe/T,EAAIA,EAAI,EAAIgoB,EAAe3U,GACpEuN,EAAI+H,IAAI1nB,EAAIgnB,EAAU1V,EAAIwV,EAASC,EAAcM,EAAM9U,GAAI8U,EAAMxU,IACjE8M,EAAI+H,IAAI1nB,EAAIinB,EAAU3V,EAAIuV,EAASE,EAAcM,EAAMxU,GAASwU,GAChE1H,EAAI+H,IAAI1nB,EAAIgnB,EAAU1V,EAAIwV,EAASC,EAAcM,EAAKA,EAAMxU,IAC5D8M,EAAI+H,IAAI1nB,EAAIinB,EAAU3V,EAAIuV,EAASE,EAAcM,EAAMxU,GAASwU,EAAM9U,IACtEoN,EAAIgI,YACJ,MACF,IAAK,OACH,IAAKR,EAAU,CACb/U,EAAOtV,KAAKgrB,QAAUV,EACtBrD,EAAQhlB,EAAIA,EAAI,EAAIqT,EACpBuN,EAAIoI,KAAK/nB,EAAI+jB,EAAOzS,EAAIc,EAAM,EAAI2R,EAAO,EAAI3R,GAC7C,KACF,CACAiV,GAAOvU,GACT,IAAK,UACHkU,EAAWlqB,KAAK+d,IAAIwM,IAAQtoB,EAAIA,EAAI,EAAIqoB,GACxCP,EAAU/pB,KAAK+d,IAAIwM,GAAOD,EAC1BN,EAAUhqB,KAAK8c,IAAIyN,GAAOD,EAC1BH,EAAWnqB,KAAK8c,IAAIyN,IAAQtoB,EAAIA,EAAI,EAAIqoB,GACxCzH,EAAIiI,OAAO5nB,EAAIgnB,EAAU1V,EAAIwV,GAC7BnH,EAAIkI,OAAO7nB,EAAIinB,EAAU3V,EAAIuV,GAC7BlH,EAAIkI,OAAO7nB,EAAIgnB,EAAU1V,EAAIwV,GAC7BnH,EAAIkI,OAAO7nB,EAAIinB,EAAU3V,EAAIuV,GAC7BlH,EAAIgI,YACJ,MACF,IAAK,WACHN,GAAOvU,GACT,IAAK,QACHkU,EAAWlqB,KAAK+d,IAAIwM,IAAQtoB,EAAIA,EAAI,EAAIqoB,GACxCP,EAAU/pB,KAAK+d,IAAIwM,GAAOD,EAC1BN,EAAUhqB,KAAK8c,IAAIyN,GAAOD,EAC1BH,EAAWnqB,KAAK8c,IAAIyN,IAAQtoB,EAAIA,EAAI,EAAIqoB,GACxCzH,EAAIiI,OAAO5nB,EAAIgnB,EAAU1V,EAAIwV,GAC7BnH,EAAIkI,OAAO7nB,EAAIgnB,EAAU1V,EAAIwV,GAC7BnH,EAAIiI,OAAO5nB,EAAIinB,EAAU3V,EAAIuV,GAC7BlH,EAAIkI,OAAO7nB,EAAIinB,EAAU3V,EAAIuV,GAC7B,MACF,IAAK,OACHG,EAAWlqB,KAAK+d,IAAIwM,IAAQtoB,EAAIA,EAAI,EAAIqoB,GACxCP,EAAU/pB,KAAK+d,IAAIwM,GAAOD,EAC1BN,EAAUhqB,KAAK8c,IAAIyN,GAAOD,EAC1BH,EAAWnqB,KAAK8c,IAAIyN,IAAQtoB,EAAIA,EAAI,EAAIqoB,GACxCzH,EAAIiI,OAAO5nB,EAAIgnB,EAAU1V,EAAIwV,GAC7BnH,EAAIkI,OAAO7nB,EAAIgnB,EAAU1V,EAAIwV,GAC7BnH,EAAIiI,OAAO5nB,EAAIinB,EAAU3V,EAAIuV,GAC7BlH,EAAIkI,OAAO7nB,EAAIinB,EAAU3V,EAAIuV,GAC7BQ,GAAOvU,GACPkU,EAAWlqB,KAAK+d,IAAIwM,IAAQtoB,EAAIA,EAAI,EAAIqoB,GACxCP,EAAU/pB,KAAK+d,IAAIwM,GAAOD,EAC1BN,EAAUhqB,KAAK8c,IAAIyN,GAAOD,EAC1BH,EAAWnqB,KAAK8c,IAAIyN,IAAQtoB,EAAIA,EAAI,EAAIqoB,GACxCzH,EAAIiI,OAAO5nB,EAAIgnB,EAAU1V,EAAIwV,GAC7BnH,EAAIkI,OAAO7nB,EAAIgnB,EAAU1V,EAAIwV,GAC7BnH,EAAIiI,OAAO5nB,EAAIinB,EAAU3V,EAAIuV,GAC7BlH,EAAIkI,OAAO7nB,EAAIinB,EAAU3V,EAAIuV,GAC7B,MACF,IAAK,OACHA,EAAU9nB,EAAIA,EAAI,EAAIjC,KAAK+d,IAAIwM,GAAOD,EACtCN,EAAUhqB,KAAK8c,IAAIyN,GAAOD,EAC1BzH,EAAIiI,OAAO5nB,EAAI6mB,EAASvV,EAAIwV,GAC5BnH,EAAIkI,OAAO7nB,EAAI6mB,EAASvV,EAAIwV,GAC5B,MACF,IAAK,OACHnH,EAAIiI,OAAO5nB,EAAGsR,GACdqO,EAAIkI,OAAO7nB,EAAIlD,KAAK+d,IAAIwM,IAAQtoB,EAAIA,EAAI,EAAIqoB,GAAS9V,EAAIxU,KAAK8c,IAAIyN,GAAOD,GACzE,MACF,KAAK,EACHzH,EAAIgI,YAGRhI,EAAIqI,OACApX,EAAQqX,YAAc,GACxBtI,EAAIuI,QAnGN,CAqGF,CACA,SAASC,GAAeC,EAAOC,EAAMC,GAEnC,OADAA,EAASA,GAAU,IACXD,GAAQD,GAASA,EAAMpoB,EAAIqoB,EAAKvF,KAAOwF,GAAUF,EAAMpoB,EAAIqoB,EAAKzF,MAAQ0F,GAAUF,EAAM9W,EAAI+W,EAAK1F,IAAM2F,GAAUF,EAAM9W,EAAI+W,EAAKxF,OAASyF,CACnJ,CACA,SAASC,GAAS5I,EAAK0I,GACrB1I,EAAIgG,OACJhG,EAAI6H,YACJ7H,EAAIoI,KAAKM,EAAKvF,KAAMuF,EAAK1F,IAAK0F,EAAKzF,MAAQyF,EAAKvF,KAAMuF,EAAKxF,OAASwF,EAAK1F,KACzEhD,EAAI6I,MACN,CACA,SAASC,GAAW9I,GAClBA,EAAIoG,SACN,CACA,SAAS2C,GAAe/I,EAAKgJ,EAAUpY,EAAQqY,EAAM9sB,GACnD,IAAK6sB,EACH,OAAOhJ,EAAIkI,OAAOtX,EAAOvQ,EAAGuQ,EAAOe,GAErC,GAAa,WAATxV,EAAmB,CACrB,MAAM+sB,GAAYF,EAAS3oB,EAAIuQ,EAAOvQ,GAAK,EAC3C2f,EAAIkI,OAAOgB,EAAUF,EAASrX,GAC9BqO,EAAIkI,OAAOgB,EAAUtY,EAAOe,EAC9B,KAAoB,UAATxV,MAAuB8sB,EAChCjJ,EAAIkI,OAAOc,EAAS3oB,EAAGuQ,EAAOe,GAE9BqO,EAAIkI,OAAOtX,EAAOvQ,EAAG2oB,EAASrX,GAEhCqO,EAAIkI,OAAOtX,EAAOvQ,EAAGuQ,EAAOe,EAC9B,CACA,SAASwX,GAAenJ,EAAKgJ,EAAUpY,EAAQqY,GAC7C,IAAKD,EACH,OAAOhJ,EAAIkI,OAAOtX,EAAOvQ,EAAGuQ,EAAOe,GAErCqO,EAAIoJ,cAAcH,EAAOD,EAASK,KAAOL,EAASM,KAAML,EAAOD,EAASO,KAAOP,EAASQ,KAAMP,EAAOrY,EAAO0Y,KAAO1Y,EAAOyY,KAAMJ,EAAOrY,EAAO4Y,KAAO5Y,EAAO2Y,KAAM3Y,EAAOvQ,EAAGuQ,EAAOe,EACrL,CACA,SAAS8X,GAAWzJ,EAAKsE,EAAMjkB,EAAGsR,EAAG+N,GACnC,IAAIgK,EAAO1qB,UAAUC,OAAS,QAAsBL,IAAjBI,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAChF,MAAM2qB,EAAQjqB,EAAQ4kB,GAAQA,EAAO,CAACA,GAChCiE,EAASmB,EAAKE,YAAc,GAA0B,KAArBF,EAAKG,YAC5C,IAAI7uB,EAAG8uB,EAIP,IAHA9J,EAAIgG,OACJhG,EAAIN,KAAOA,EAAK+F,OAsBlB,SAAuBzF,EAAK0J,GACtBA,EAAKK,aACP/J,EAAI2H,UAAU+B,EAAKK,YAAY,GAAIL,EAAKK,YAAY,IAEjDlb,EAAc6a,EAAKlC,WACtBxH,EAAIxR,OAAOkb,EAAKlC,UAEdkC,EAAKrc,QACP2S,EAAIgK,UAAYN,EAAKrc,OAEnBqc,EAAKO,YACPjK,EAAIiK,UAAYP,EAAKO,WAEnBP,EAAKQ,eACPlK,EAAIkK,aAAeR,EAAKQ,aAE5B,CArCEC,CAAcnK,EAAK0J,GACd1uB,EAAI,EAAGA,EAAI2uB,EAAM1qB,SAAUjE,EAC9B8uB,EAAOH,EAAM3uB,GACT0uB,EAAKU,UACPC,GAAarK,EAAK0J,EAAKU,UAErB7B,IACEmB,EAAKG,cACP7J,EAAIsK,YAAcZ,EAAKG,aAEpBhb,EAAc6a,EAAKE,eACtB5J,EAAI0D,UAAYgG,EAAKE,aAEvB5J,EAAIuK,WAAWT,EAAMzpB,EAAGsR,EAAG+X,EAAKc,WAElCxK,EAAIyK,SAASX,EAAMzpB,EAAGsR,EAAG+X,EAAKc,UAC9BE,GAAa1K,EAAK3f,EAAGsR,EAAGmY,EAAMJ,GAC9B/X,GAAK+N,EAAKG,WAEZG,EAAIoG,SACN,CAkBA,SAASsE,GAAa1K,EAAK3f,EAAGsR,EAAGmY,EAAMJ,GACrC,GAAIA,EAAKiB,eAAiBjB,EAAKkB,UAAW,CACxC,MAAMC,EAAU7K,EAAI2F,YAAYmE,GAC1B3G,EAAO9iB,EAAIwqB,EAAQC,sBACnB7H,EAAQ5iB,EAAIwqB,EAAQE,uBACpB/H,EAAMrR,EAAIkZ,EAAQG,wBAClB9H,EAASvR,EAAIkZ,EAAQI,yBACrBC,EAAcxB,EAAKiB,eAAiB3H,EAAME,GAAU,EAAIA,EAC9DlD,EAAIsK,YAActK,EAAIgK,UACtBhK,EAAI6H,YACJ7H,EAAI0D,UAAYgG,EAAKyB,iBAAmB,EACxCnL,EAAIiI,OAAO9E,EAAM+H,GACjBlL,EAAIkI,OAAOjF,EAAOiI,GAClBlL,EAAIuI,QACN,CACF,CACA,SAAS8B,GAAarK,EAAK0J,GACzB,MAAM0B,EAAWpL,EAAIgK,UACrBhK,EAAIgK,UAAYN,EAAKrc,MACrB2S,EAAIqL,SAAS3B,EAAKvG,KAAMuG,EAAK1G,IAAK0G,EAAKtF,MAAOsF,EAAK3C,QACnD/G,EAAIgK,UAAYoB,CAClB,CACA,SAASE,GAAmBtL,EAAKoI,GAC/B,MAAM/nB,EAAI+nB,EAAK/nB,EACbsR,EAAIyW,EAAKzW,EACTvS,EAAIgpB,EAAKhpB,EACTlC,EAAIkrB,EAAKlrB,EACTuqB,EAASW,EAAKX,OAChBzH,EAAI+H,IAAI1nB,EAAIonB,EAAO8D,QAAS5Z,EAAI8V,EAAO8D,QAAS9D,EAAO8D,SAAUrY,GAASN,IAAI,GAC9EoN,EAAIkI,OAAO7nB,EAAGsR,EAAIzU,EAAIuqB,EAAO+D,YAC7BxL,EAAI+H,IAAI1nB,EAAIonB,EAAO+D,WAAY7Z,EAAIzU,EAAIuqB,EAAO+D,WAAY/D,EAAO+D,WAAY5Y,GAAIM,IAAS,GAC1F8M,EAAIkI,OAAO7nB,EAAIjB,EAAIqoB,EAAOgE,YAAa9Z,EAAIzU,GAC3C8iB,EAAI+H,IAAI1nB,EAAIjB,EAAIqoB,EAAOgE,YAAa9Z,EAAIzU,EAAIuqB,EAAOgE,YAAahE,EAAOgE,YAAavY,GAAS,GAAG,GAChG8M,EAAIkI,OAAO7nB,EAAIjB,EAAGuS,EAAI8V,EAAOiE,UAC7B1L,EAAI+H,IAAI1nB,EAAIjB,EAAIqoB,EAAOiE,SAAU/Z,EAAI8V,EAAOiE,SAAUjE,EAAOiE,SAAU,GAAIxY,IAAS,GACpF8M,EAAIkI,OAAO7nB,EAAIonB,EAAO8D,QAAS5Z,EACjC,CACA,MAAMga,GAAc,uCACdC,GAAa,wEAYnB,SAASC,GAAa5vB,EAAOwW,GAC3B,MAAMqZ,GAAW,GAAK7vB,GAAO8vB,MAAMJ,IACnC,IAAKG,GAA0B,WAAfA,EAAQ,GACtB,OAAc,IAAPrZ,EAGT,OADAxW,GAAS6vB,EAAQ,GACTA,EAAQ,IACd,IAAK,KACH,OAAO7vB,EACT,IAAK,IACHA,GAAS,IAGb,OAAOwW,EAAOxW,CAChB,CACA,MAAM+vB,GAAehvB,IAAMA,GAAK,EAChC,SAASivB,GAAkBhwB,EAAOiwB,GAChC,MAAMvf,EAAM,CAAC,EACPwf,EAAWnd,EAASkd,GACpBjhB,EAAOkhB,EAAWzwB,OAAOuP,KAAKihB,GAASA,EACvCE,EAAOpd,EAAS/S,GAASkwB,EAAWE,GAAQ/c,EAAerT,EAAMowB,GAAOpwB,EAAMiwB,EAAMG,KAAUA,GAAQpwB,EAAMowB,GAAQ,IAAMpwB,EAChI,IAAK,MAAMowB,KAAQphB,EACjB0B,EAAI0f,GAAQL,GAAaI,EAAKC,IAEhC,OAAO1f,CACT,CASA,SAAS2f,GAAOrwB,GACd,OAAOgwB,GAAkBhwB,EAAO,CAC9B+mB,IAAK,IACLC,MAAO,IACPC,OAAQ,IACRC,KAAM,KAEV,CAQA,SAASoJ,GAActwB,GACrB,OAAOgwB,GAAkBhwB,EAAO,CAAC,UAAW,WAAY,aAAc,eACxE,CASA,SAASuwB,GAAUvwB,GACjB,MAAMgR,EAAMqf,GAAOrwB,GAGnB,OAFAgR,EAAImX,MAAQnX,EAAIkW,KAAOlW,EAAIgW,MAC3BhW,EAAI8Z,OAAS9Z,EAAI+V,IAAM/V,EAAIiW,OACpBjW,CACT,CAQA,SAASwf,GAAOxb,EAASyb,GACvBzb,EAAUA,GAAW,CAAC,EACtByb,EAAWA,GAAY7K,GAASnC,KAChC,IAAIjN,EAAOnD,EAAe2B,EAAQwB,KAAMia,EAASja,MAC7B,kBAATA,IACTA,EAAOlH,SAASkH,EAAM,KAExB,IAAImN,EAAQtQ,EAAe2B,EAAQ2O,MAAO8M,EAAS9M,OAC/CA,KAAW,GAAKA,GAAOmM,MAAMH,MAC/Be,QAAQC,KAAK,kCAAoChN,EAAQ,KACzDA,OAAQhhB,GAEV,MAAM8gB,EAAO,CACXC,OAAQrQ,EAAe2B,EAAQ0O,OAAQ+M,EAAS/M,QAChDE,WAAYgM,GAAavc,EAAe2B,EAAQ4O,WAAY6M,EAAS7M,YAAapN,GAClFA,OACAmN,QACAtS,OAAQgC,EAAe2B,EAAQ3D,OAAQof,EAASpf,QAChDmY,OAAQ,IAGV,OADA/F,EAAK+F,OA5ZP,SAAsB/F,GACpB,OAAKA,GAAQ7Q,EAAc6Q,EAAKjN,OAAS5D,EAAc6Q,EAAKC,QACnD,MAEDD,EAAKE,MAAQF,EAAKE,MAAQ,IAAM,KAAOF,EAAKpS,OAASoS,EAAKpS,OAAS,IAAM,IAAMoS,EAAKjN,KAAO,MAAQiN,EAAKC,MAClH,CAuZgBkN,CAAanN,GACpBA,CACT,CAYA,SAASoN,GAAQC,EAAQ1N,EAAS3O,EAAOsc,GACvC,IACIhyB,EAAGsV,EAAMrU,EADTgxB,GAAY,EAEhB,IAAKjyB,EAAI,EAAGsV,EAAOyc,EAAO9tB,OAAQjE,EAAIsV,IAAQtV,EAE5C,GADAiB,EAAQ8wB,EAAO/xB,QACD4D,IAAV3C,SAGY2C,IAAZygB,GAA0C,oBAAVpjB,IAClCA,EAAQA,EAAMojB,GACd4N,GAAY,QAEAruB,IAAV8R,GAAuBhR,EAAQzD,KACjCA,EAAQA,EAAMyU,EAAQzU,EAAMgD,QAC5BguB,GAAY,QAEAruB,IAAV3C,GAIF,OAHI+wB,IAASC,IACXD,EAAKC,WAAY,GAEZhxB,CAGb,CAiBA,SAASixB,GAAcC,EAAe9N,GACpC,OAAO3jB,OAAOwQ,OAAOxQ,OAAOY,OAAO6wB,GAAgB9N,EACrD,CACA,SAAS+N,GAAgBC,GACvB,IAAIC,EAAWtuB,UAAUC,OAAS,QAAsBL,IAAjBI,UAAU,GAAmBA,UAAU,GAAK,CAAC,IAChFuuB,EAAavuB,UAAUC,OAAS,QAAsBL,IAAjBI,UAAU,GAAmBA,UAAU,GAAKquB,EACjFX,EAAW1tB,UAAUC,OAAS,EAAID,UAAU,QAAKJ,EACjD4uB,EAAYxuB,UAAUC,OAAS,QAAsBL,IAAjBI,UAAU,GAAmBA,UAAU,GAAK,IAAMquB,EAAO,GAC5F/a,GAAQoa,KACXA,EAAWe,GAAS,YAAaJ,IAEnC,MAAMvH,EAAQ,CACZ,CAAC/pB,OAAOC,aAAc,SACtB0xB,YAAY,EACZC,QAASN,EACTO,YAAaL,EACbtL,UAAWyK,EACXmB,WAAYL,EACZtM,SAAUtC,GAASwO,GAAgB,CAACxO,KAAUyO,GAASC,EAAUC,EAAYb,IAE/E,OAAO,IAAIoB,MAAMhI,EAAO,CACtBiI,eAAc,CAACnd,EAAQyb,YACdzb,EAAOyb,UACPzb,EAAOod,aACPX,EAAO,GAAGhB,IACV,GAETxwB,IAAG,CAAC+U,EAAQyb,IACH4B,GAAQrd,EAAQyb,GAAM,IAsMnC,SAA8BA,EAAMiB,EAAUD,EAAQa,GACpD,IAAIjyB,EACJ,IAAK,MAAMkyB,KAAUb,EAEnB,GADArxB,EAAQwxB,GAASW,GAAQD,EAAQ9B,GAAOgB,GACpC/a,GAAQrW,GACV,OAAOoyB,GAAiBhC,EAAMpwB,GAASqyB,GAAkBjB,EAAQa,EAAO7B,EAAMpwB,GAASA,CAG7F,CA9MyCsyB,CAAqBlC,EAAMiB,EAAUD,EAAQzc,KAElF4d,yBAAwB,CAAC5d,EAAQyb,IACxBoC,QAAQD,yBAAyB5d,EAAO+c,QAAQ,GAAItB,GAE7DqC,eAAc,IACLD,QAAQC,eAAerB,EAAO,IAEvC1a,IAAG,CAAC/B,EAAQyb,IACHsC,GAAqB/d,GAAQ0N,SAAS+N,GAE/CuC,QAAQhe,GACC+d,GAAqB/d,GAE9B,GAAA2G,CAAI3G,EAAQyb,EAAMpwB,GAChB,MAAM4yB,EAAUje,EAAOke,WAAale,EAAOke,SAAWtB,KAGtD,OAFA5c,EAAOyb,GAAQwC,EAAQxC,GAAQpwB,SACxB2U,EAAOod,OACP,CACT,GAEJ,CACA,SAASe,GAAeb,EAAO7O,EAAS2P,EAAUC,GAChD,MAAMnJ,EAAQ,CACZ4H,YAAY,EACZwB,OAAQhB,EACRiB,SAAU9P,EACV+P,UAAWJ,EACXK,OAAQ,IAAI7X,IACZsH,aAAcA,GAAaoP,EAAOe,GAClCK,WAAYtP,GAAO+O,GAAeb,EAAOlO,EAAKgP,EAAUC,GACxD/N,SAAUtC,GAASmQ,GAAeb,EAAMhN,SAAStC,GAAQS,EAAS2P,EAAUC,IAE9E,OAAO,IAAInB,MAAMhI,EAAO,CACtBiI,eAAc,CAACnd,EAAQyb,YACdzb,EAAOyb,UACP6B,EAAM7B,IACN,GAETxwB,IAAG,CAAC+U,EAAQyb,EAAMkD,IACTtB,GAAQrd,EAAQyb,GAAM,IAqDnC,SAA6Bzb,EAAQyb,EAAMkD,GACzC,MAAML,EAASte,EAAOse,OACpBC,EAAWve,EAAOue,SAClBC,EAAYxe,EAAOwe,UACnBI,EAAc5e,EAAOkO,aACvB,IAAI7iB,EAAQizB,EAAO7C,GACf9Z,GAAWtW,IAAUuzB,EAAYC,aAAapD,KAChDpwB,EAUJ,SAA4BowB,EAAMpwB,EAAO2U,EAAQ2e,GAC/C,MAAML,EAASte,EAAOse,OACpBC,EAAWve,EAAOue,SAClBC,EAAYxe,EAAOwe,UACnBC,EAASze,EAAOye,OAClB,GAAIA,EAAO1c,IAAI0Z,GACb,MAAM,IAAIqD,MAAM,uBAAyBjwB,MAAMiY,KAAK2X,GAAQM,KAAK,MAAQ,KAAOtD,GAElFgD,EAAO5X,IAAI4U,GACXpwB,EAAQA,EAAMkzB,EAAUC,GAAaG,GACrCF,EAAOO,OAAOvD,GACVgC,GAAiBhC,EAAMpwB,KACzBA,EAAQqyB,GAAkBY,EAAOvB,QAASuB,EAAQ7C,EAAMpwB,IAE1D,OAAOA,CACT,CAzBY4zB,CAAmBxD,EAAMpwB,EAAO2U,EAAQ2e,IAE9C7vB,EAAQzD,IAAUA,EAAMgD,SAC1BhD,EAuBJ,SAAuBowB,EAAMpwB,EAAO2U,EAAQkf,GAC1C,MAAMZ,EAASte,EAAOse,OACpBC,EAAWve,EAAOue,SAClBC,EAAYxe,EAAOwe,UACnBI,EAAc5e,EAAOkO,aACvB,GAAIxM,GAAQ6c,EAASze,QAAUof,EAAYzD,GACzCpwB,EAAQA,EAAMkzB,EAASze,MAAQzU,EAAMgD,aAChC,GAAI+P,EAAS/S,EAAM,IAAK,CAC7B,MAAM8zB,EAAM9zB,EACNoxB,EAAS6B,EAAOvB,QAAQqC,QAAOjzB,GAAKA,IAAMgzB,IAChD9zB,EAAQ,GACR,IAAK,MAAMyW,KAAQqd,EAAK,CACtB,MAAMle,EAAWyc,GAAkBjB,EAAQ6B,EAAQ7C,EAAM3Z,GACzDzW,EAAMgW,KAAK8c,GAAeld,EAAUsd,EAAUC,GAAaA,EAAU/C,GAAOmD,GAC9E,CACF,CACA,OAAOvzB,CACT,CAxCYg0B,CAAc5D,EAAMpwB,EAAO2U,EAAQ4e,EAAYM,cAErDzB,GAAiBhC,EAAMpwB,KACzBA,EAAQ8yB,GAAe9yB,EAAOkzB,EAAUC,GAAaA,EAAU/C,GAAOmD,IAExE,OAAOvzB,CACT,CArEyCi0B,CAAoBtf,EAAQyb,EAAMkD,KAEvEf,yBAAwB,CAAC5d,EAAQyb,IACxBzb,EAAOkO,aAAaqR,QAAU1B,QAAQ9b,IAAIub,EAAO7B,GAAQ,CAC9DzwB,YAAY,EACZw0B,cAAc,QACZxxB,EAAY6vB,QAAQD,yBAAyBN,EAAO7B,GAE1DqC,eAAc,IACLD,QAAQC,eAAeR,GAEhCvb,IAAG,CAAC/B,EAAQyb,IACHoC,QAAQ9b,IAAIub,EAAO7B,GAE5BuC,QAAO,IACEH,QAAQG,QAAQV,GAEzB3W,IAAG,CAAC3G,EAAQyb,EAAMpwB,KAChBiyB,EAAM7B,GAAQpwB,SACP2U,EAAOyb,IACP,IAGb,CACA,SAASvN,GAAaoP,GACpB,IAAIrM,EAAW7iB,UAAUC,OAAS,QAAsBL,IAAjBI,UAAU,GAAmBA,UAAU,GAAK,CACjFqxB,YAAY,EACZC,WAAW,GAEb,MAAMC,EAAqBrC,EAAMpM,YAC/BA,OAAqC,IAAvByO,EAAgC1O,EAASwO,WAAaE,EACpEC,EAAoBtC,EAAMlM,WAC1BA,OAAmC,IAAtBwO,EAA+B3O,EAASyO,UAAYE,EACjEC,EAAkBvC,EAAMwC,SAE1B,MAAO,CACLP,aAF+B,IAApBM,EAA6B5O,EAASsO,QAAUM,EAG3DJ,WAAYvO,EACZwO,UAAWtO,EACXyN,aAAcld,GAAWuP,GAAeA,EAAc,IAAMA,EAC5DgO,YAAavd,GAAWyP,GAAcA,EAAa,IAAMA,EAE7D,CACA,MAAMoM,GAAU,CAACD,EAAQ5yB,IAAS4yB,EAASA,EAAS/b,GAAY7W,GAAQA,EAClE8yB,GAAmB,CAAChC,EAAMpwB,IAAU+S,EAAS/S,IAAmB,aAATowB,IAAyD,OAAjC3wB,OAAOgzB,eAAezyB,IAAmBA,EAAMwQ,cAAgB/Q,QACpJ,SAASuyB,GAAQrd,EAAQyb,EAAMS,GAC7B,GAAIpxB,OAAOkB,UAAUC,eAAe1B,KAAKyV,EAAQyb,GAC/C,OAAOzb,EAAOyb,GAEhB,MAAMpwB,EAAQ6wB,IAEd,OADAlc,EAAOyb,GAAQpwB,EACRA,CACT,CAoDA,SAAS00B,GAAgBjE,EAAUL,EAAMpwB,GACvC,OAAOsW,GAAWma,GAAYA,EAASL,EAAMpwB,GAASywB,CACxD,CACA,MAAMkE,GAAW,CAACr0B,EAAKs0B,KAAmB,IAARt0B,EAAes0B,EAAwB,kBAARt0B,EAAmBqV,GAAiBif,EAAQt0B,QAAOqC,EACpH,SAASkyB,GAAUvZ,EAAKwZ,EAAcx0B,EAAKy0B,EAAgB/0B,GACzD,IAAK,MAAM40B,KAAUE,EAAc,CACjC,MAAMnS,EAAQgS,GAASr0B,EAAKs0B,GAC5B,GAAIjS,EAAO,CACTrH,EAAIE,IAAImH,GACR,MAAM8N,EAAWiE,GAAgB/R,EAAMqD,UAAW1lB,EAAKN,GACvD,GAAIqW,GAAQoa,IAAaA,IAAanwB,GAAOmwB,IAAasE,EACxD,OAAOtE,CAEX,MAAO,IAAc,IAAV9N,GAAmBtM,GAAQ0e,IAAmBz0B,IAAQy0B,EAC/D,OAAO,IAEX,CACA,OAAO,CACT,CACA,SAAS1C,GAAkByC,EAAclf,EAAUwa,EAAMpwB,GACvD,MAAMsxB,EAAa1b,EAAS+b,YACtBlB,EAAWiE,GAAgB9e,EAASoQ,UAAWoK,EAAMpwB,GACrDg1B,EAAY,IAAIF,KAAiBxD,GACjChW,EAAM,IAAIC,IAChBD,EAAIE,IAAIxb,GACR,IAAIM,EAAM20B,GAAiB3Z,EAAK0Z,EAAW5E,EAAMK,GAAYL,EAAMpwB,GACnE,OAAY,OAARM,MAGA+V,GAAQoa,IAAaA,IAAaL,IACpC9vB,EAAM20B,GAAiB3Z,EAAK0Z,EAAWvE,EAAUnwB,EAAKN,GAC1C,OAARM,KAIC6wB,GAAgB3tB,MAAMiY,KAAKH,GAAM,CAAC,IAAKgW,EAAYb,GAAU,IAQtE,SAAsB7a,EAAUwa,EAAMpwB,GACpC,MAAM40B,EAAShf,EAASgc,aAClBxB,KAAQwE,IACZA,EAAOxE,GAAQ,CAAC,GAElB,MAAMzb,EAASigB,EAAOxE,GACtB,GAAI3sB,EAAQkR,IAAW5B,EAAS/S,GAC9B,OAAOA,EAET,OAAO2U,GAAU,CAAC,CACpB,CAlB4EugB,CAAatf,EAAUwa,EAAMpwB,KACzG,CACA,SAASi1B,GAAiB3Z,EAAK0Z,EAAW10B,EAAKmwB,EAAUha,GACvD,KAAOnW,GACLA,EAAMu0B,GAAUvZ,EAAK0Z,EAAW10B,EAAKmwB,EAAUha,GAEjD,OAAOnW,CACT,CAqBA,SAASkxB,GAASlxB,EAAK8wB,GACrB,IAAK,MAAMzO,KAASyO,EAAQ,CAC1B,IAAKzO,EACH,SAEF,MAAM3iB,EAAQ2iB,EAAMriB,GACpB,GAAI+V,GAAQrW,GACV,OAAOA,CAEX,CACF,CACA,SAAS0yB,GAAqB/d,GAC5B,IAAI3F,EAAO2F,EAAOod,MAIlB,OAHK/iB,IACHA,EAAO2F,EAAOod,MAIlB,SAAkCX,GAChC,MAAM9V,EAAM,IAAIC,IAChB,IAAK,MAAMoH,KAASyO,EAClB,IAAK,MAAM9wB,KAAOb,OAAOuP,KAAK2T,GAAOoR,QAAOjxB,IAAMA,EAAEgjB,WAAW,OAC7DxK,EAAIE,IAAIlb,GAGZ,OAAOkD,MAAMiY,KAAKH,EACpB,CAZ0B6Z,CAAyBxgB,EAAO+c,UAEjD1iB,CACT,CAUA,SAASomB,GAA4B9Y,EAAM+M,EAAM5P,EAAOiD,GACtD,MAAME,EAASN,EAAKM,OACdyY,EAAqBzkB,KAAK0kB,SAASh1B,IACvCA,OAA6B,IAAvB+0B,EAAgC,IAAMA,EACxCE,EAAS,IAAI/xB,MAAMkZ,GACzB,IAAI3d,EAAGsV,EAAMI,EAAOgC,EACpB,IAAK1X,EAAI,EAAGsV,EAAOqI,EAAO3d,EAAIsV,IAAQtV,EACpC0V,EAAQ1V,EAAI0a,EACZhD,EAAO4S,EAAK5U,GACZ8gB,EAAOx2B,GAAK,CACVc,EAAG+c,EAAO4Y,MAAM7f,GAAiBc,EAAMnW,GAAMmU,IAGjD,OAAO8gB,CACT,CACA,MAAME,GAAUxiB,OAAOwiB,SAAW,MAC5BC,GAAW,CAACnZ,EAAQxd,IAAMA,EAAIwd,EAAOvZ,SAAWuZ,EAAOxd,GAAG42B,MAAQpZ,EAAOxd,GACzE62B,GAAe1R,GAA2B,MAAdA,EAAoB,IAAM,IAC5D,SAAS2R,GAAYC,EAAYC,EAAaC,EAAY/1B,GAIxD,MAAM8sB,EAAW+I,EAAWH,KAAOI,EAAcD,EAC3CxgB,EAAUygB,EACVE,EAAOD,EAAWL,KAAOI,EAAcC,EACvCE,EAAM/c,GAAsB7D,EAASyX,GACrCoJ,EAAMhd,GAAsB8c,EAAM3gB,GACxC,IAAI8gB,EAAMF,GAAOA,EAAMC,GACnBE,EAAMF,GAAOD,EAAMC,GAEvBC,EAAMne,MAAMme,GAAO,EAAIA,EACvBC,EAAMpe,MAAMoe,GAAO,EAAIA,EACvB,MAAMC,EAAKr2B,EAAIm2B,EACTG,EAAKt2B,EAAIo2B,EACf,MAAO,CACLtJ,SAAU,CACR3oB,EAAGkR,EAAQlR,EAAIkyB,GAAML,EAAK7xB,EAAI2oB,EAAS3oB,GACvCsR,EAAGJ,EAAQI,EAAI4gB,GAAML,EAAKvgB,EAAIqX,EAASrX,IAEzCugB,KAAM,CACJ7xB,EAAGkR,EAAQlR,EAAImyB,GAAMN,EAAK7xB,EAAI2oB,EAAS3oB,GACvCsR,EAAGJ,EAAQI,EAAI6gB,GAAMN,EAAKvgB,EAAIqX,EAASrX,IAG7C,CA8DA,SAAS8gB,GAAoBja,GAC3B,IAAI2H,EAAYnhB,UAAUC,OAAS,QAAsBL,IAAjBI,UAAU,GAAmBA,UAAU,GAAK,IACpF,MAAM0zB,EAAYb,GAAa1R,GACzBwS,EAAYna,EAAOvZ,OACnB2zB,EAASnzB,MAAMkzB,GAAWtK,KAAK,GAC/BwK,EAAKpzB,MAAMkzB,GAEjB,IAAI33B,EAAG83B,EAAaC,EAChBC,EAAarB,GAASnZ,EAAQ,GAClC,IAAKxd,EAAI,EAAGA,EAAI23B,IAAa33B,EAI3B,GAHA83B,EAAcC,EACdA,EAAeC,EACfA,EAAarB,GAASnZ,EAAQxd,EAAI,GAC7B+3B,EAAL,CAGA,GAAIC,EAAY,CACd,MAAMC,EAAaD,EAAW7S,GAAa4S,EAAa5S,GAExDyS,EAAO53B,GAAoB,IAAfi4B,GAAoBD,EAAWN,GAAaK,EAAaL,IAAcO,EAAa,CAClG,CACAJ,EAAG73B,GAAM83B,EAA2BE,EAA6B1f,GAAKsf,EAAO53B,EAAI,MAAQsY,GAAKsf,EAAO53B,IAAM,GAAK43B,EAAO53B,EAAI,GAAK43B,EAAO53B,IAAM,EAA5F43B,EAAO53B,EAAI,GAArC43B,EAAO53B,EAN9B,EAzEJ,SAAwBwd,EAAQoa,EAAQC,GACtC,MAAMF,EAAYna,EAAOvZ,OACzB,IAAIi0B,EAAQC,EAAOC,EAAMC,EAAkBN,EACvCC,EAAarB,GAASnZ,EAAQ,GAClC,IAAK,IAAIxd,EAAI,EAAGA,EAAI23B,EAAY,IAAK33B,EACnC+3B,EAAeC,EACfA,EAAarB,GAASnZ,EAAQxd,EAAI,GAC7B+3B,GAAiBC,IAGlBzf,GAAaqf,EAAO53B,GAAI,EAAG02B,IAC7BmB,EAAG73B,GAAK63B,EAAG73B,EAAI,GAAK,GAGtBk4B,EAASL,EAAG73B,GAAK43B,EAAO53B,GACxBm4B,EAAQN,EAAG73B,EAAI,GAAK43B,EAAO53B,GAC3Bq4B,EAAmBl2B,KAAKyO,IAAIsnB,EAAQ,GAAK/1B,KAAKyO,IAAIunB,EAAO,GACrDE,GAAoB,IAGxBD,EAAO,EAAIj2B,KAAK6X,KAAKqe,GACrBR,EAAG73B,GAAKk4B,EAASE,EAAOR,EAAO53B,GAC/B63B,EAAG73B,EAAI,GAAKm4B,EAAQC,EAAOR,EAAO53B,KAEtC,CAyDEs4B,CAAe9a,EAAQoa,EAAQC,GAxDjC,SAAyBra,EAAQqa,GAC/B,IAAI1S,EAAYnhB,UAAUC,OAAS,QAAsBL,IAAjBI,UAAU,GAAmBA,UAAU,GAAK,IACpF,MAAM0zB,EAAYb,GAAa1R,GACzBwS,EAAYna,EAAOvZ,OACzB,IAAI2e,EAAOkV,EAAaC,EACpBC,EAAarB,GAASnZ,EAAQ,GAClC,IAAK,IAAIxd,EAAI,EAAGA,EAAI23B,IAAa33B,EAAG,CAIlC,GAHA83B,EAAcC,EACdA,EAAeC,EACfA,EAAarB,GAASnZ,EAAQxd,EAAI,IAC7B+3B,EACH,SAEF,MAAMQ,EAASR,EAAa5S,GACtBqT,EAAST,EAAaL,GACxBI,IACFlV,GAAS2V,EAAST,EAAY3S,IAAc,EAC5C4S,EAAa,MAAM5S,KAAeoT,EAAS3V,EAC3CmV,EAAa,MAAML,KAAec,EAAS5V,EAAQiV,EAAG73B,IAEpDg4B,IACFpV,GAASoV,EAAW7S,GAAaoT,GAAU,EAC3CR,EAAa,MAAM5S,KAAeoT,EAAS3V,EAC3CmV,EAAa,MAAML,KAAec,EAAS5V,EAAQiV,EAAG73B,GAE1D,CACF,CA+BEy4B,CAAgBjb,EAAQqa,EAAI1S,EAC9B,CACA,SAASuT,GAAgBC,EAAIt2B,EAAKD,GAChC,OAAOD,KAAKC,IAAID,KAAKE,IAAIs2B,EAAIv2B,GAAMC,EACrC,CAyBA,SAASu2B,GAA2Bpb,EAAQvH,EAASyX,EAAMrG,EAAMlC,GAC/D,IAAInlB,EAAGsV,EAAMmY,EAAOoL,EAKpB,GAHI5iB,EAAQ6iB,WACVtb,EAASA,EAAOwX,QAAO2D,IAAOA,EAAG/B,QAEI,aAAnC3gB,EAAQ8iB,uBACVtB,GAAoBja,EAAQ2H,OACvB,CACL,IAAI6T,EAAO3R,EAAO7J,EAAOA,EAAOvZ,OAAS,GAAKuZ,EAAO,GACrD,IAAKxd,EAAI,EAAGsV,EAAOkI,EAAOvZ,OAAQjE,EAAIsV,IAAQtV,EAC5CytB,EAAQjQ,EAAOxd,GACf64B,EAAgB/B,GAAYkC,EAAMvL,EAAOjQ,EAAOrb,KAAKE,IAAIrC,EAAI,EAAGsV,GAAQ+R,EAAO,EAAI,IAAM/R,GAAOW,EAAQgjB,SACxGxL,EAAMY,KAAOwK,EAAc7K,SAAS3oB,EACpCooB,EAAMc,KAAOsK,EAAc7K,SAASrX,EACpC8W,EAAMa,KAAOuK,EAAc3B,KAAK7xB,EAChCooB,EAAMe,KAAOqK,EAAc3B,KAAKvgB,EAChCqiB,EAAOvL,CAEX,CACIxX,EAAQijB,iBA5Cd,SAAyB1b,EAAQkQ,GAC/B,IAAI1tB,EAAGsV,EAAMmY,EAAO0L,EAAQC,EACxBC,EAAa7L,GAAehQ,EAAO,GAAIkQ,GAC3C,IAAK1tB,EAAI,EAAGsV,EAAOkI,EAAOvZ,OAAQjE,EAAIsV,IAAQtV,EAC5Co5B,EAAaD,EACbA,EAASE,EACTA,EAAar5B,EAAIsV,EAAO,GAAKkY,GAAehQ,EAAOxd,EAAI,GAAI0tB,GACtDyL,IAGL1L,EAAQjQ,EAAOxd,GACXo5B,IACF3L,EAAMY,KAAOqK,GAAgBjL,EAAMY,KAAMX,EAAKvF,KAAMuF,EAAKzF,OACzDwF,EAAMc,KAAOmK,GAAgBjL,EAAMc,KAAMb,EAAK1F,IAAK0F,EAAKxF,SAEtDmR,IACF5L,EAAMa,KAAOoK,GAAgBjL,EAAMa,KAAMZ,EAAKvF,KAAMuF,EAAKzF,OACzDwF,EAAMe,KAAOkK,GAAgBjL,EAAMe,KAAMd,EAAK1F,IAAK0F,EAAKxF,SAG9D,CAyBIgR,CAAgB1b,EAAQkQ,EAE5B,CAWA,SAAS4L,KACP,MAAyB,qBAAX1c,QAA8C,qBAAb2c,QACjD,CAIA,SAASC,GAAeC,GACtB,IAAI5D,EAAS4D,EAAQC,WAIrB,OAHI7D,GAAgC,wBAAtBA,EAAO/hB,aACnB+hB,EAASA,EAAO8D,MAEX9D,CACT,CAKA,SAAS+D,GAAcC,EAAYnW,EAAMoW,GACvC,IAAIC,EAUJ,MAT0B,kBAAfF,GACTE,EAAgBxpB,SAASspB,EAAY,KACJ,IAA7BA,EAAW9jB,QAAQ,OAErBgkB,EAAgBA,EAAgB,IAAMrW,EAAKgW,WAAWI,KAGxDC,EAAgBF,EAEXE,CACT,CACA,MAAMC,GAAmBC,GAAWA,EAAQC,cAAcC,YAAYH,iBAAiBC,EAAS,MAIhG,MAAMG,GAAY,CAAC,MAAO,QAAS,SAAU,QAC7C,SAASC,GAAmBC,EAAQ1V,EAAO2V,GACzC,MAAMC,EAAS,CAAC,EAChBD,EAASA,EAAS,IAAMA,EAAS,GACjC,IAAK,IAAIv6B,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,MAAMy6B,EAAML,GAAUp6B,GACtBw6B,EAAOC,GAAO/lB,WAAW4lB,EAAO1V,EAAQ,IAAM6V,EAAMF,KAAY,CAClE,CAGA,OAFAC,EAAOpR,MAAQoR,EAAOrS,KAAOqS,EAAOvS,MACpCuS,EAAOzO,OAASyO,EAAOxS,IAAMwS,EAAOtS,OAC7BsS,CACT,CACA,MAAME,GAAe,CAACr1B,EAAGsR,EAAGf,KAAYvQ,EAAI,GAAKsR,EAAI,MAAQf,IAAWA,EAAO+kB,YAkC/E,SAASC,GAAoBC,EAAOnY,GAClC,GAAI,WAAYmY,EACd,OAAOA,EAET,MAAMlP,EAASjJ,EAAMiJ,OACnBH,EAA0B9I,EAAM8I,wBAC5B5G,EAAQoV,GAAiBrO,GACzBmP,EAAgC,eAApBlW,EAAMmW,UAClBC,EAAWX,GAAmBzV,EAAO,WACrCqW,EAAUZ,GAAmBzV,EAAO,SAAU,SAC9CsW,EAtCR,SAA2B/3B,EAAGwoB,GAC5B,MAAMwP,EAAUh4B,EAAEg4B,QACZxlB,EAASwlB,GAAWA,EAAQl3B,OAASk3B,EAAQ,GAAKh4B,EAClDi4B,EAAUzlB,EAAOylB,QACrBC,EAAU1lB,EAAO0lB,QACnB,IACIh2B,EAAGsR,EADH2kB,GAAM,EAEV,GAAIZ,GAAaU,EAASC,EAASl4B,EAAEyS,QACnCvQ,EAAI+1B,EACJzkB,EAAI0kB,MACC,CACL,MAAMjO,EAAOzB,EAAO4P,wBACpBl2B,EAAIsQ,EAAO6lB,QAAUpO,EAAKjF,KAC1BxR,EAAIhB,EAAO8lB,QAAUrO,EAAKpF,IAC1BsT,GAAM,CACR,CACA,MAAO,CACLj2B,IACAsR,IACA2kB,MAEJ,CAiB6BI,CAAkBb,EAAOlP,GAClDtmB,EAAI61B,EAAmB71B,EACvBsR,EAAIukB,EAAmBvkB,EACvB2kB,EAAMJ,EAAmBI,IACrBpP,EAAU8O,EAAS7S,MAAQmT,GAAOL,EAAQ9S,MAC1CgE,EAAU6O,EAAShT,KAAOsT,GAAOL,EAAQjT,KAC/C,IAAIoB,EAAQ1G,EAAM0G,MAChB2C,EAASrJ,EAAMqJ,OAKjB,OAJI+O,IACF1R,GAAS4R,EAAS5R,MAAQ6R,EAAQ7R,MAClC2C,GAAUiP,EAASjP,OAASkP,EAAQlP,QAE/B,CACL1mB,EAAGlD,KAAK0W,OAAOxT,EAAI6mB,GAAW9C,EAAQuC,EAAOvC,MAAQoC,GACrD7U,EAAGxU,KAAK0W,OAAOlC,EAAIwV,GAAWJ,EAASJ,EAAOI,OAASP,GAE3D,CA0BA,MAAMmQ,GAAS35B,GAAKG,KAAK0W,MAAU,GAAJ7W,GAAU,GAEzC,SAAS45B,GAAejQ,EAAQkQ,EAASC,EAAUC,GACjD,MAAMnX,EAAQoV,GAAiBrO,GACzBqQ,EAAU3B,GAAmBzV,EAAO,UACpC4K,EAAWoK,GAAchV,EAAM4K,SAAU7D,EAAQ,gBAAkB5T,GACnEkkB,EAAYrC,GAAchV,EAAMqX,UAAWtQ,EAAQ,iBAAmB5T,GACtEmkB,EAhCR,SAA0BvQ,EAAQvC,EAAO2C,GACvC,IAAIyD,EAAUyM,EACd,QAAcr4B,IAAVwlB,QAAkCxlB,IAAXmoB,EAAsB,CAC/C,MAAMoQ,EAAY3C,GAAe7N,GACjC,GAAKwQ,EAGE,CACL,MAAM/O,EAAO+O,EAAUZ,wBACjBa,EAAiBpC,GAAiBmC,GAClCE,EAAkBhC,GAAmB+B,EAAgB,SAAU,SAC/DE,EAAmBjC,GAAmB+B,EAAgB,WAC5DhT,EAAQgE,EAAKhE,MAAQkT,EAAiBlT,MAAQiT,EAAgBjT,MAC9D2C,EAASqB,EAAKrB,OAASuQ,EAAiBvQ,OAASsQ,EAAgBtQ,OACjEyD,EAAWoK,GAAcwC,EAAe5M,SAAU2M,EAAW,eAC7DF,EAAYrC,GAAcwC,EAAeH,UAAWE,EAAW,eACjE,MAXE/S,EAAQuC,EAAO4Q,YACfxQ,EAASJ,EAAO6Q,YAWpB,CACA,MAAO,CACLpT,QACA2C,SACAyD,SAAUA,GAAYzX,GACtBkkB,UAAWA,GAAalkB,GAE5B,CAQwB0kB,CAAiB9Q,EAAQkQ,EAASC,GACxD,IAAI1S,EAAQ8S,EAAc9S,MACxB2C,EAASmQ,EAAcnQ,OACzB,GAAwB,gBAApBnH,EAAMmW,UAA6B,CACrC,MAAME,EAAUZ,GAAmBzV,EAAO,SAAU,SAC9CoW,EAAWX,GAAmBzV,EAAO,WAC3CwE,GAAS4R,EAAS5R,MAAQ6R,EAAQ7R,MAClC2C,GAAUiP,EAASjP,OAASkP,EAAQlP,MACtC,CACA3C,EAAQjnB,KAAKC,IAAI,EAAGgnB,EAAQ4S,EAAQ5S,OACpC2C,EAAS5pB,KAAKC,IAAI,EAAG25B,EAAc3S,EAAQ2S,EAAchQ,EAASiQ,EAAQjQ,QAC1E3C,EAAQuS,GAAOx5B,KAAKE,IAAI+mB,EAAOoG,EAAU0M,EAAc1M,WACvDzD,EAAS4P,GAAOx5B,KAAKE,IAAI0pB,EAAQkQ,EAAWC,EAAcD,YACtD7S,IAAU2C,IAGZA,EAAS4P,GAAOvS,EAAQ,IAO1B,YALmCxlB,IAAZi4B,QAAsCj4B,IAAbk4B,IAC1BC,GAAeG,EAAcnQ,QAAUA,EAASmQ,EAAcnQ,SAClFA,EAASmQ,EAAcnQ,OACvB3C,EAAQuS,GAAOx5B,KAAK4W,MAAMgT,EAASgQ,KAE9B,CACL3S,QACA2C,SAEJ,CAOA,SAAS2Q,GAAYha,EAAOia,EAAYC,GACtC,MAAMC,EAAaF,GAAc,EAC3BG,EAAe36B,KAAK4W,MAAM2J,EAAMqJ,OAAS8Q,GACzCE,EAAc56B,KAAK4W,MAAM2J,EAAM0G,MAAQyT,GAC7Cna,EAAMqJ,OAAS5pB,KAAK4W,MAAM2J,EAAMqJ,QAChCrJ,EAAM0G,MAAQjnB,KAAK4W,MAAM2J,EAAM0G,OAC/B,MAAMuC,EAASjJ,EAAMiJ,OAQrB,OAJIA,EAAO/G,QAAUgY,IAAejR,EAAO/G,MAAMmH,SAAWJ,EAAO/G,MAAMwE,SACvEuC,EAAO/G,MAAMmH,OAAS,GAAGrJ,EAAMqJ,WAC/BJ,EAAO/G,MAAMwE,MAAQ,GAAG1G,EAAM0G,YAE5B1G,EAAM8I,0BAA4BqR,GAAclR,EAAOI,SAAW+Q,GAAgBnR,EAAOvC,QAAU2T,KACrGra,EAAM8I,wBAA0BqR,EAChClR,EAAOI,OAAS+Q,EAChBnR,EAAOvC,MAAQ2T,EACfra,EAAMsC,IAAIgY,aAAaH,EAAY,EAAG,EAAGA,EAAY,EAAG,IACjD,EAGX,CAMA,MAAMI,GAA+B,WACnC,IAAIC,GAAmB,EACvB,IACE,MAAMjnB,EAAU,CACd,WAAIknB,GAEF,OADAD,GAAmB,GACZ,CACT,GAEFtgB,OAAOwgB,iBAAiB,OAAQ,KAAMnnB,GACtC2G,OAAOygB,oBAAoB,OAAQ,KAAMpnB,EAC3C,CAAE,MAAO9S,GAET,CACA,OAAO+5B,CACT,CAfqC,GAyBrC,SAASI,GAAarD,EAASt4B,GAC7B,MAAMV,EApMR,SAAkBs8B,EAAI57B,GACpB,OAAOq4B,GAAiBuD,GAAIC,iBAAiB77B,EAC/C,CAkMgB87B,CAASxD,EAASt4B,GAC1BmvB,EAAU7vB,GAASA,EAAM8vB,MAAM,qBACrC,OAAOD,GAAWA,EAAQ,QAAKltB,CACjC,CAKA,SAAS85B,GAAaz4B,EAAIC,EAAIhE,EAAGC,GAC/B,MAAO,CACLkE,EAAGJ,EAAGI,EAAInE,GAAKgE,EAAGG,EAAIJ,EAAGI,GACzBsR,EAAG1R,EAAG0R,EAAIzV,GAAKgE,EAAGyR,EAAI1R,EAAG0R,GAE7B,CAIA,SAASgnB,GAAsB14B,EAAIC,EAAIhE,EAAGC,GACxC,MAAO,CACLkE,EAAGJ,EAAGI,EAAInE,GAAKgE,EAAGG,EAAIJ,EAAGI,GACzBsR,EAAY,WAATxV,EAAoBD,EAAI,GAAM+D,EAAG0R,EAAIzR,EAAGyR,EAAa,UAATxV,EAAmBD,EAAI,EAAI+D,EAAG0R,EAAIzR,EAAGyR,EAAIzV,EAAI,EAAIgE,EAAGyR,EAAI1R,EAAG0R,EAE9G,CAIA,SAASinB,GAAqB34B,EAAIC,EAAIhE,EAAGC,GACvC,MAAM08B,EAAM,CACVx4B,EAAGJ,EAAGqpB,KACN3X,EAAG1R,EAAGupB,MAEFsP,EAAM,CACVz4B,EAAGH,EAAGmpB,KACN1X,EAAGzR,EAAGqpB,MAEFtrB,EAAIy6B,GAAaz4B,EAAI44B,EAAK38B,GAC1BgC,EAAIw6B,GAAaG,EAAKC,EAAK58B,GAC3Bb,EAAIq9B,GAAaI,EAAK54B,EAAIhE,GAC1BZ,EAAIo9B,GAAaz6B,EAAGC,EAAGhC,GACvBiC,EAAIu6B,GAAax6B,EAAG7C,EAAGa,GAC7B,OAAOw8B,GAAap9B,EAAG6C,EAAGjC,EAC5B,CAwCA,SAAS68B,GAAcC,EAAKC,EAAO7U,GACjC,OAAO4U,EAxCqB,SAAUC,EAAO7U,GAC7C,MAAO,CACL/jB,EAAEA,GACO44B,EAAQA,EAAQ7U,EAAQ/jB,EAEjC,QAAA64B,CAAS95B,GACPglB,EAAQhlB,CACV,EACA6qB,UAAU7R,GACM,WAAVA,EACKA,EAEQ,UAAVA,EAAoB,OAAS,QAEtC+gB,MAAK,CAAC94B,EAAGpE,IACAoE,EAAIpE,EAEbm9B,WAAU,CAAC/4B,EAAGg5B,IACLh5B,EAAIg5B,EAGjB,CAmBeC,CAAsBL,EAAO7U,GAjBnC,CACL/jB,EAAEA,GACOA,EAET,QAAA64B,CAAS95B,GAAI,EACb6qB,UAAU7R,GACDA,EAET+gB,MAAK,CAAC94B,EAAGpE,IACAoE,EAAIpE,EAEbm9B,WAAU,CAAC/4B,EAAGk5B,IACLl5B,EAMb,CACA,SAASm5B,GAAsBxZ,EAAKyZ,GAClC,IAAI7Z,EAAO8Z,EACO,QAAdD,GAAqC,QAAdA,IACzB7Z,EAAQI,EAAI2G,OAAO/G,MACnB8Z,EAAW,CAAC9Z,EAAM4Y,iBAAiB,aAAc5Y,EAAM+Z,oBAAoB,cAC3E/Z,EAAMga,YAAY,YAAaH,EAAW,aAC1CzZ,EAAI6Z,kBAAoBH,EAE5B,CACA,SAASI,GAAqB9Z,EAAK0Z,QAChB96B,IAAb86B,WACK1Z,EAAI6Z,kBACX7Z,EAAI2G,OAAO/G,MAAMga,YAAY,YAAaF,EAAS,GAAIA,EAAS,IAEpE,CACA,SAASK,GAAWp9B,GAClB,MAAiB,UAAbA,EACK,CACLq9B,QAASvkB,GACTwkB,QAAS1kB,GACT2kB,UAAW1kB,IAGR,CACLwkB,QAAS9jB,GACT+jB,QAAS,CAACh8B,EAAGC,IAAMD,EAAIC,EACvBg8B,UAAW75B,GAAKA,EAEpB,CACA,SAAS85B,GAAiBC,GACxB,IAAI1kB,EAAQ0kB,EAAK1kB,MACfC,EAAMykB,EAAKzkB,IACXgD,EAAQyhB,EAAKzhB,MAGf,MAAO,CACLjD,MAAOA,EAAQiD,EACfhD,IAAKA,EAAMgD,EACX0J,KALO+X,EAAK/X,OAKG1M,EAAMD,EAAQ,GAAKiD,IAAU,EAC5CiH,MALQwa,EAAKxa,MAOjB,CAoCA,SAASya,GAAcC,EAAS9hB,EAAQ+K,GACtC,IAAKA,EACH,MAAO,CAAC+W,GAEV,MAAM39B,EAAW4mB,EAAO5mB,SACtB49B,EAAahX,EAAO7N,MACpB8kB,EAAWjX,EAAO5N,IACdgD,EAAQH,EAAOvZ,OACfw7B,EAAeV,GAAWp9B,GAC9Bs9B,EAAUQ,EAAaR,QACvBD,EAAUS,EAAaT,QACvBE,EAAYO,EAAaP,UACrBQ,EA/CR,SAAoBJ,EAAS9hB,EAAQ+K,GACnC,MAAM5mB,EAAW4mB,EAAO5mB,SACtB49B,EAAahX,EAAO7N,MACpB8kB,EAAWjX,EAAO5N,IACdglB,EAAcZ,GAAWp9B,GAC7Bq9B,EAAUW,EAAYX,QACtBE,EAAYS,EAAYT,UACpBvhB,EAAQH,EAAOvZ,OACrB,IAGIjE,EAAGsV,EAHHoF,EAAQ4kB,EAAQ5kB,MAClBC,EAAM2kB,EAAQ3kB,IACd0M,EAAOiY,EAAQjY,KAEjB,GAAIA,EAAM,CAGR,IAFA3M,GAASiD,EACThD,GAAOgD,EACF3d,EAAI,EAAGsV,EAAOqI,EAAO3d,EAAIsV,GACvB0pB,EAAQE,EAAU1hB,EAAO9C,EAAQiD,GAAOhc,IAAY49B,EAAYC,KADjCx/B,EAIpC0a,IACAC,IAEFD,GAASiD,EACThD,GAAOgD,CACT,CAIA,OAHIhD,EAAMD,IACRC,GAAOgD,GAEF,CACLjD,QACAC,MACA0M,OACAzC,MAAO0a,EAAQ1a,MAEnB,CAasBgb,CAAWN,EAAS9hB,EAAQ+K,GAC9C7N,EAAQglB,EAAYhlB,MACpBC,EAAM+kB,EAAY/kB,IAClB0M,EAAOqY,EAAYrY,KACnBzC,EAAQ8a,EAAY9a,MAChB4V,EAAS,GACf,IAEIv5B,EAAOwsB,EAAOoS,EAFdC,GAAS,EACTC,EAAW,KAEf,MAEMC,EAAc,IAAMF,GAFEd,EAAQO,EAAYM,EAAW5+B,IAA6C,IAAnCg+B,EAAQM,EAAYM,GAGnFI,EAAa,KAAOH,GAF6B,IAA7Bb,EAAQO,EAAUv+B,IAAgB+9B,EAAQQ,EAAUK,EAAW5+B,GAGzF,IAAK,IAAIjB,EAAI0a,EAAOse,EAAOte,EAAO1a,GAAK2a,IAAO3a,EAC5CytB,EAAQjQ,EAAOxd,EAAI2d,GACf8P,EAAMmJ,OAGV31B,EAAQi+B,EAAUzR,EAAM9rB,IACpBV,IAAU4+B,IAGdC,EAASd,EAAQ/9B,EAAOs+B,EAAYC,GACnB,OAAbO,GAAqBC,MACvBD,EAA0C,IAA/Bd,EAAQh+B,EAAOs+B,GAAoBv/B,EAAIg5B,GAEnC,OAAb+G,GAAqBE,MACvBzF,EAAOvjB,KAAKkoB,GAAiB,CAC3BzkB,MAAOqlB,EACPplB,IAAK3a,EACLqnB,OACA1J,QACAiH,WAEFmb,EAAW,MAEb/G,EAAOh5B,EACP6/B,EAAY5+B,IAWd,OATiB,OAAb8+B,GACFvF,EAAOvjB,KAAKkoB,GAAiB,CAC3BzkB,MAAOqlB,EACPplB,MACA0M,OACA1J,QACAiH,WAGG4V,CACT,CACA,SAAS0F,GAAepR,EAAMvG,GAC5B,MAAMiS,EAAS,GACT2F,EAAWrR,EAAKqR,SACtB,IAAK,IAAIngC,EAAI,EAAGA,EAAImgC,EAASl8B,OAAQjE,IAAK,CACxC,MAAMogC,EAAMf,GAAcc,EAASngC,GAAI8uB,EAAKtR,OAAQ+K,GAChD6X,EAAIn8B,QACNu2B,EAAOvjB,QAAQmpB,EAEnB,CACA,OAAO5F,CACT,CAkFA,SAAS6F,GAAcvR,EAAMqR,EAAU3iB,EAAQ8iB,GAC7C,OAAKA,GAAmBA,EAAehM,YAAe9W,EAKxD,SAAyBsR,EAAMqR,EAAU3iB,EAAQ8iB,GAC/C,MAAMC,EAAezR,EAAK0R,OAAO5U,aAC3B6U,EAAYC,GAAU5R,EAAK7Y,SAC3BR,EAAeqZ,EAAK6R,cACxB7H,EAAWhK,EAAK7Y,QAAQ6iB,SACpBnb,EAAQH,EAAOvZ,OACfu2B,EAAS,GACf,IAAIoG,EAAYH,EACZ/lB,EAAQylB,EAAS,GAAGzlB,MACpB1a,EAAI0a,EACR,SAASmmB,EAAS9+B,EAAGoB,EAAGlD,EAAG6gC,GACzB,MAAMC,EAAMjI,GAAY,EAAI,EAC5B,GAAI/2B,IAAMoB,EAAV,CAIA,IADApB,GAAK4b,EACEH,EAAOzb,EAAI4b,GAAOiZ,MACvB70B,GAAKg/B,EAEP,KAAOvjB,EAAOra,EAAIwa,GAAOiZ,MACvBzzB,GAAK49B,EAEHh/B,EAAI4b,IAAUxa,EAAIwa,IACpB6c,EAAOvjB,KAAK,CACVyD,MAAO3Y,EAAI4b,EACXhD,IAAKxX,EAAIwa,EACT0J,KAAMpnB,EACN2kB,MAAOkc,IAETF,EAAYE,EACZpmB,EAAQvX,EAAIwa,EAhBd,CAkBF,CACA,IAAK,MAAM2hB,KAAWa,EAAU,CAC9BzlB,EAAQoe,EAAWpe,EAAQ4kB,EAAQ5kB,MACnC,IACIkK,EADAoU,EAAOxb,EAAO9C,EAAQiD,GAE1B,IAAK3d,EAAI0a,EAAQ,EAAG1a,GAAKs/B,EAAQ3kB,IAAK3a,IAAK,CACzC,MAAM24B,EAAKnb,EAAOxd,EAAI2d,GACtBiH,EAAQ8b,GAAUJ,EAAehM,WAAWpC,GAAcqO,EAAc,CACtE7uB,KAAM,UACNsvB,GAAIhI,EACJ/zB,GAAI0zB,EACJsI,aAAcjhC,EAAI,GAAK2d,EACvBujB,YAAalhC,EAAI2d,EACjBlI,mBAEE0rB,GAAavc,EAAOgc,IACtBC,EAASnmB,EAAO1a,EAAI,EAAGs/B,EAAQjY,KAAMuZ,GAEvC5H,EAAOL,EACPiI,EAAYhc,CACd,CACIlK,EAAQ1a,EAAI,GACd6gC,EAASnmB,EAAO1a,EAAI,EAAGs/B,EAAQjY,KAAMuZ,EAEzC,CACA,OAAOpG,CACT,CA5DS4G,CAAgBtS,EAAMqR,EAAU3iB,EAAQ8iB,GAFtCH,CAGX,CA4DA,SAASO,GAAUzqB,GACjB,MAAO,CACLgO,gBAAiBhO,EAAQgO,gBACzBod,eAAgBprB,EAAQorB,eACxBC,WAAYrrB,EAAQqrB,WACpBC,iBAAkBtrB,EAAQsrB,iBAC1BC,gBAAiBvrB,EAAQurB,gBACzBlU,YAAarX,EAAQqX,YACrBpJ,YAAajO,EAAQiO,YAEzB,CACA,SAASid,GAAavc,EAAOgc,GAC3B,OAAOA,GAAa9e,KAAKC,UAAU6C,KAAW9C,KAAKC,UAAU6e,EAC/D,CCtmFA,SAAShN,GAAQlyB,EAAQ+/B,GAAkB,IAAIxxB,EAAOvP,OAAOuP,KAAKvO,GAAS,GAAIhB,OAAOghC,sBAAuB,CAAE,IAAIC,EAAUjhC,OAAOghC,sBAAsBhgC,GAAS+/B,IAAmBE,EAAUA,EAAQ3M,QAAO,SAAU4M,GAAO,OAAOlhC,OAAO8yB,yBAAyB9xB,EAAQkgC,GAAKhhC,UAAY,KAAKqP,EAAKgH,KAAKlC,MAAM9E,EAAM0xB,EAAU,CAAE,OAAO1xB,CAAM,CACpV,SAAS4xB,GAAcjsB,GAAU,IAAK,IAAI5V,EAAI,EAAGA,EAAIgE,UAAUC,OAAQjE,IAAK,CAAE,IAAI2V,EAAS,MAAQ3R,UAAUhE,GAAKgE,UAAUhE,GAAK,CAAC,EAAGA,EAAI,EAAI4zB,GAAQlzB,OAAOiV,IAAS,GAAIyG,SAAQ,SAAU7a,GAAOugC,GAAgBlsB,EAAQrU,EAAKoU,EAAOpU,GAAO,IAAKb,OAAOqhC,0BAA4BrhC,OAAO+lB,iBAAiB7Q,EAAQlV,OAAOqhC,0BAA0BpsB,IAAWie,GAAQlzB,OAAOiV,IAASyG,SAAQ,SAAU7a,GAAOb,OAAOC,eAAeiV,EAAQrU,EAAKb,OAAO8yB,yBAAyB7d,EAAQpU,GAAO,GAAI,CAAE,OAAOqU,CAAQ,CACzf,SAASksB,GAAgB7vB,EAAK1Q,EAAKN,GAA4L,OAAnLM,EAC5C,SAAwBygC,GAAO,IAAIzgC,EACnC,SAAsB6P,EAAO6wB,GAAQ,GAAqB,kBAAV7wB,GAAgC,OAAVA,EAAgB,OAAOA,EAAO,IAAI8wB,EAAO9wB,EAAMrQ,OAAOohC,aAAc,QAAav+B,IAATs+B,EAAoB,CAAE,IAAIE,EAAMF,EAAK/hC,KAAKiR,EAAO6wB,GAAQ,WAAY,GAAmB,kBAARG,EAAkB,OAAOA,EAAK,MAAM,IAAIC,UAAU,+CAAiD,CAAE,OAAiB,WAATJ,EAAoBK,OAASpuB,QAAQ9C,EAAQ,CAD/UmxB,CAAaP,EAAK,UAAW,MAAsB,kBAARzgC,EAAmBA,EAAM+gC,OAAO/gC,EAAM,CADxEihC,CAAejhC,MAAiB0Q,EAAOvR,OAAOC,eAAesR,EAAK1Q,EAAK,CAAEN,MAAOA,EAAOL,YAAY,EAAMw0B,cAAc,EAAM1O,UAAU,IAAkBzU,EAAI1Q,GAAON,EAAgBgR,CAAK,CAG3O,SAASwwB,GAAe1N,EAAK/0B,GAAK,OAKlC,SAAyB+0B,GAAO,GAAItwB,MAAMC,QAAQqwB,GAAM,OAAOA,CAAK,CAL3B2N,CAAgB3N,IAIzD,SAA+BA,EAAK/0B,GAAK,IAAI2iC,EAAK,MAAQ5N,EAAM,KAAO,oBAAsBh0B,QAAUg0B,EAAIh0B,OAAO6hC,WAAa7N,EAAI,cAAe,GAAI,MAAQ4N,EAAI,CAAE,IAAIE,EAAIC,EAAIC,EAAIC,EAAIC,EAAO,GAAIC,GAAK,EAAIC,GAAK,EAAI,IAAM,GAAIJ,GAAMJ,EAAKA,EAAGxiC,KAAK40B,IAAMmC,KAAM,IAAMl3B,EAAG,CAAE,GAAIU,OAAOiiC,KAAQA,EAAI,OAAQO,GAAK,CAAI,MAAO,OAASA,GAAML,EAAKE,EAAG5iC,KAAKwiC,IAAKS,QAAUH,EAAKhsB,KAAK4rB,EAAG5hC,OAAQgiC,EAAKh/B,SAAWjE,GAAIkjC,GAAK,GAAK,CAAE,MAAOG,GAAOF,GAAK,EAAIL,EAAKO,CAAK,CAAE,QAAU,IAAM,IAAKH,GAAM,MAAQP,EAAGW,SAAWN,EAAKL,EAAGW,SAAU5iC,OAAOsiC,KAAQA,GAAK,MAAQ,CAAE,QAAU,GAAIG,EAAI,MAAML,CAAI,CAAE,CAAE,OAAOG,CAAM,CAAE,CAJ1gBM,CAAsBxO,EAAK/0B,IAE5F,SAAqCS,EAAG+iC,GAAU,IAAK/iC,EAAG,OAAQ,GAAiB,kBAANA,EAAgB,OAAOgjC,GAAkBhjC,EAAG+iC,GAAS,IAAI/hC,EAAIf,OAAOkB,UAAUkS,SAAS3T,KAAKM,GAAGsT,MAAM,GAAI,GAAc,WAANtS,GAAkBhB,EAAEgR,cAAahQ,EAAIhB,EAAEgR,YAAYlR,MAAM,GAAU,QAANkB,GAAqB,QAANA,EAAa,OAAOgD,MAAMiY,KAAKjc,GAAI,GAAU,cAANgB,GAAqB,2CAA2CiiC,KAAKjiC,GAAI,OAAOgiC,GAAkBhjC,EAAG+iC,EAAS,CAF7TG,CAA4B5O,EAAK/0B,IACnI,WAA8B,MAAM,IAAIqiC,UAAU,4IAA8I,CADvDuB,EAAoB,CAG7J,SAASH,GAAkB1O,EAAKnjB,IAAkB,MAAPA,GAAeA,EAAMmjB,EAAI9wB,UAAQ2N,EAAMmjB,EAAI9wB,QAAQ,IAAK,IAAIjE,EAAI,EAAG6jC,EAAO,IAAIp/B,MAAMmN,GAAM5R,EAAI4R,EAAK5R,IAAK6jC,EAAK7jC,GAAK+0B,EAAI/0B,GAAI,OAAO6jC,CAAM,CAYlL,MAAM,GACJ,WAAApyB,GACEI,KAAKiyB,SAAW,KAChBjyB,KAAKkyB,QAAU,IAAItiB,IACnB5P,KAAKmyB,UAAW,EAChBnyB,KAAKoyB,eAAYrgC,CACnB,CACA,OAAAsgC,CAAQxhB,EAAOyhB,EAAOC,EAAM1yB,GAC1B,MAAM2yB,EAAYF,EAAMjoB,UAAUxK,GAC5B4yB,EAAWH,EAAMhd,SACvBkd,EAAUjoB,SAAQxH,GAAMA,EAAG,CACzB8N,QACA6hB,QAASJ,EAAMI,QACfD,WACAE,YAAariC,KAAKE,IAAI+hC,EAAOD,EAAMzpB,MAAO4pB,MAE9C,CACA,QAAAG,GACM5yB,KAAKiyB,WAGTjyB,KAAKmyB,UAAW,EAChBnyB,KAAKiyB,SAAWnnB,GAAiBxc,KAAKyc,QAAQ,KAC5C/K,KAAK6yB,UACL7yB,KAAKiyB,SAAW,KACZjyB,KAAKmyB,UACPnyB,KAAK4yB,UACP,IAEJ,CACA,OAAAC,GACE,IAAIN,EAAOpgC,UAAUC,OAAS,QAAsBL,IAAjBI,UAAU,GAAmBA,UAAU,GAAK2gC,KAAKC,MAChFC,EAAY,EAChBhzB,KAAKkyB,QAAQ3nB,SAAQ,CAAC+nB,EAAOzhB,KAC3B,IAAKyhB,EAAMW,UAAYX,EAAM7nB,MAAMrY,OACjC,OAEF,MAAMqY,EAAQ6nB,EAAM7nB,MACpB,IAEI5E,EAFA1X,EAAIsc,EAAMrY,OAAS,EACnB8gC,GAAO,EAEX,KAAO/kC,GAAK,IAAKA,EACf0X,EAAO4E,EAAMtc,GACT0X,EAAKstB,SACHttB,EAAKutB,OAASd,EAAMhd,WACtBgd,EAAMhd,SAAWzP,EAAKutB,QAExBvtB,EAAKwtB,KAAKd,GACVW,GAAO,IAEPzoB,EAAMtc,GAAKsc,EAAMA,EAAMrY,OAAS,GAChCqY,EAAM6oB,OAGNJ,IACFriB,EAAMqiB,OACNlzB,KAAKqyB,QAAQxhB,EAAOyhB,EAAOC,EAAM,aAE9B9nB,EAAMrY,SACTkgC,EAAMW,SAAU,EAChBjzB,KAAKqyB,QAAQxhB,EAAOyhB,EAAOC,EAAM,YACjCD,EAAMI,SAAU,GAElBM,GAAavoB,EAAMrY,MAAM,IAE3B4N,KAAKoyB,UAAYG,EACC,IAAdS,IACFhzB,KAAKmyB,UAAW,EAEpB,CACA,SAAAoB,CAAU1iB,GACR,MAAM2iB,EAASxzB,KAAKkyB,QACpB,IAAII,EAAQkB,EAAOxkC,IAAI6hB,GAavB,OAZKyhB,IACHA,EAAQ,CACNW,SAAS,EACTP,SAAS,EACTjoB,MAAO,GACPJ,UAAW,CACTopB,SAAU,GACVC,SAAU,KAGdF,EAAO9oB,IAAImG,EAAOyhB,IAEbA,CACT,CACA,MAAAqB,CAAO9iB,EAAOmY,EAAO4K,GACnB5zB,KAAKuzB,UAAU1iB,GAAOxG,UAAU2e,GAAO5jB,KAAKwuB,EAC9C,CACA,GAAAhpB,CAAIiG,EAAOpG,GACJA,GAAUA,EAAMrY,QAGrB4N,KAAKuzB,UAAU1iB,GAAOpG,MAAMrF,QAAQqF,EACtC,CACA,GAAA3E,CAAI+K,GACF,OAAO7Q,KAAKuzB,UAAU1iB,GAAOpG,MAAMrY,OAAS,CAC9C,CACA,KAAAyW,CAAMgI,GACJ,MAAMyhB,EAAQtyB,KAAKkyB,QAAQljC,IAAI6hB,GAC1ByhB,IAGLA,EAAMW,SAAU,EAChBX,EAAMzpB,MAAQiqB,KAAKC,MACnBT,EAAMhd,SAAWgd,EAAM7nB,MAAMopB,QAAO,CAACC,EAAKC,IAAQzjC,KAAKC,IAAIujC,EAAKC,EAAIC,YAAY,GAChFh0B,KAAK4yB,WACP,CACA,OAAAK,CAAQpiB,GACN,IAAK7Q,KAAKmyB,SACR,OAAO,EAET,MAAMG,EAAQtyB,KAAKkyB,QAAQljC,IAAI6hB,GAC/B,SAAKyhB,GAAUA,EAAMW,SAAYX,EAAM7nB,MAAMrY,OAI/C,CACA,IAAA6hC,CAAKpjB,GACH,MAAMyhB,EAAQtyB,KAAKkyB,QAAQljC,IAAI6hB,GAC/B,IAAKyhB,IAAUA,EAAM7nB,MAAMrY,OACzB,OAEF,MAAMqY,EAAQ6nB,EAAM7nB,MACpB,IAAItc,EAAIsc,EAAMrY,OAAS,EACvB,KAAOjE,GAAK,IAAKA,EACfsc,EAAMtc,GAAG+lC,SAEX5B,EAAM7nB,MAAQ,GACdzK,KAAKqyB,QAAQxhB,EAAOyhB,EAAOQ,KAAKC,MAAO,WACzC,CACA,MAAAoB,CAAOtjB,GACL,OAAO7Q,KAAKkyB,QAAQnP,OAAOlS,EAC7B,EAEF,IAAIujB,GAA0B,IAAI,GAClC,MAAMx1B,GAAc,cACdy1B,GAAgB,CACpBC,QAAO,CAACzpB,EAAM4K,EAAI8e,IACTA,EAAS,GAAM9e,EAAK5K,EAE7B,KAAArK,CAAMqK,EAAM4K,EAAI8e,GACd,MAAMC,EAAK,GAAM3pB,GAAQjM,IACnB8B,EAAK8zB,EAAGr0B,OAAS,GAAMsV,GAAM7W,IACnC,OAAO8B,GAAMA,EAAGP,MAAQO,EAAGH,IAAIi0B,EAAID,GAAQ3iC,YAAc6jB,CAC3D,EACAgf,OAAM,CAAC5pB,EAAM4K,EAAI8e,IACR1pB,GAAQ4K,EAAK5K,GAAQ0pB,GAGhC,MAAM,GACJ,WAAA30B,CAAY80B,EAAK3wB,EAAQyb,EAAM/J,GAC7B,MAAMkf,EAAe5wB,EAAOyb,GAC5B/J,EAAKwK,GAAQ,CAACyU,EAAIjf,GAAIA,EAAIkf,EAAcD,EAAI7pB,OAC5C,MAAMA,EAAOoV,GAAQ,CAACyU,EAAI7pB,KAAM8pB,EAAclf,IAC9CzV,KAAKmzB,SAAU,EACfnzB,KAAK40B,IAAMF,EAAI3xB,IAAMsxB,GAAcK,EAAI70B,aAAegL,GACtD7K,KAAK60B,QAAUvnB,GAAQonB,EAAInf,SAAWjI,GAAQC,OAC9CvN,KAAK80B,OAASxkC,KAAK4W,MAAM4rB,KAAKC,OAAS2B,EAAIrf,OAAS,IACpDrV,KAAKg0B,UAAYh0B,KAAKozB,OAAS9iC,KAAK4W,MAAMwtB,EAAIpf,UAC9CtV,KAAK+0B,QAAUL,EAAIlf,KACnBxV,KAAKg1B,QAAUjxB,EACf/D,KAAKi1B,MAAQzV,EACbxf,KAAKk1B,MAAQrqB,EACb7K,KAAKm1B,IAAM1f,EACXzV,KAAKo1B,eAAYrjC,CACnB,CACA,MAAA4jB,GACE,OAAO3V,KAAKmzB,OACd,CACA,MAAAkC,CAAOX,EAAKjf,EAAI8c,GACd,GAAIvyB,KAAKmzB,QAAS,CAChBnzB,KAAKqyB,SAAQ,GACb,MAAMsC,EAAe30B,KAAKg1B,QAAQh1B,KAAKi1B,OACjCK,EAAU/C,EAAOvyB,KAAK80B,OACtBvjB,EAASvR,KAAKg0B,UAAYsB,EAChCt1B,KAAK80B,OAASvC,EACdvyB,KAAKg0B,UAAY1jC,KAAK4W,MAAM5W,KAAKC,IAAIghB,EAAQmjB,EAAIpf,WACjDtV,KAAKozB,QAAUkC,EACft1B,KAAK+0B,QAAUL,EAAIlf,KACnBxV,KAAKm1B,IAAMlV,GAAQ,CAACyU,EAAIjf,GAAIA,EAAIkf,EAAcD,EAAI7pB,OAClD7K,KAAKk1B,MAAQjV,GAAQ,CAACyU,EAAI7pB,KAAM8pB,EAAclf,GAChD,CACF,CACA,MAAAye,GACMl0B,KAAKmzB,UACPnzB,KAAKqzB,KAAKP,KAAKC,OACf/yB,KAAKmzB,SAAU,EACfnzB,KAAKqyB,SAAQ,GAEjB,CACA,IAAAgB,CAAKd,GACH,MAAM+C,EAAU/C,EAAOvyB,KAAK80B,OACtBxf,EAAWtV,KAAKg0B,UAChBxU,EAAOxf,KAAKi1B,MACZpqB,EAAO7K,KAAKk1B,MACZ1f,EAAOxV,KAAK+0B,MACZtf,EAAKzV,KAAKm1B,IAChB,IAAIZ,EAEJ,GADAv0B,KAAKmzB,QAAUtoB,IAAS4K,IAAOD,GAAQ8f,EAAUhgB,IAC5CtV,KAAKmzB,QAGR,OAFAnzB,KAAKg1B,QAAQxV,GAAQ/J,OACrBzV,KAAKqyB,SAAQ,GAGXiD,EAAU,EACZt1B,KAAKg1B,QAAQxV,GAAQ3U,GAGvB0pB,EAASe,EAAUhgB,EAAW,EAC9Bif,EAAS/e,GAAQ+e,EAAS,EAAI,EAAIA,EAASA,EAC3CA,EAASv0B,KAAK60B,QAAQvkC,KAAKE,IAAI,EAAGF,KAAKC,IAAI,EAAGgkC,KAC9Cv0B,KAAKg1B,QAAQxV,GAAQxf,KAAK40B,IAAI/pB,EAAM4K,EAAI8e,GAC1C,CACA,IAAAgB,GACE,MAAMC,EAAWx1B,KAAKo1B,YAAcp1B,KAAKo1B,UAAY,IACrD,OAAO,IAAIK,SAAQ,CAAClF,EAAKmF,KACvBF,EAASpwB,KAAK,CACZmrB,MACAmF,OACA,GAEN,CACA,OAAArD,CAAQsD,GACN,MAAMC,EAASD,EAAW,MAAQ,MAC5BH,EAAWx1B,KAAKo1B,WAAa,GACnC,IAAK,IAAIjnC,EAAI,EAAGA,EAAIqnC,EAASpjC,OAAQjE,IACnCqnC,EAASrnC,GAAGynC,IAEhB,EAEF,MAAM,GACJ,WAAAh2B,CAAYiR,EAAOglB,GACjB71B,KAAK2uB,OAAS9d,EACd7Q,KAAK81B,YAAc,IAAIlmB,IACvB5P,KAAK+1B,UAAUF,EACjB,CACA,SAAAE,CAAUF,GACR,IAAK1zB,EAAS0zB,GACZ,OAEF,MAAMG,EAAmBnnC,OAAOuP,KAAK4W,GAAS7C,WACxC8jB,EAAgBj2B,KAAK81B,YAC3BjnC,OAAOqnC,oBAAoBL,GAAQtrB,SAAQ7a,IACzC,MAAMglC,EAAMmB,EAAOnmC,GACnB,IAAKyS,EAASuyB,GACZ,OAEF,MAAMiB,EAAW,CAAC,EAClB,IAAK,MAAMQ,KAAUH,EACnBL,EAASQ,GAAUzB,EAAIyB,IAExBtjC,EAAQ6hC,EAAIhf,aAAegf,EAAIhf,YAAc,CAAChmB,IAAM6a,SAAQiV,IACvDA,IAAS9vB,GAAQumC,EAAcnwB,IAAI0Z,IACrCyW,EAAcvrB,IAAI8U,EAAMmW,EAC1B,GACA,GAEN,CACA,eAAAS,CAAgBryB,EAAQ0M,GACtB,MAAM4lB,EAAa5lB,EAAOrM,QACpBA,EAuEV,SAA8BL,EAAQsyB,GACpC,IAAKA,EACH,OAEF,IAAIjyB,EAAUL,EAAOK,QACrB,IAAKA,EAEH,YADAL,EAAOK,QAAUiyB,GAGfjyB,EAAQkyB,UACVvyB,EAAOK,QAAUA,EAAUvV,OAAOwQ,OAAO,CAAC,EAAG+E,EAAS,CACpDkyB,SAAS,EACTC,YAAa,CAAC,KAGlB,OAAOnyB,CACT,CAvFoBoyB,CAAqBzyB,EAAQsyB,GAC7C,IAAKjyB,EACH,MAAO,GAET,MAAM0R,EAAa9V,KAAKy2B,kBAAkBryB,EAASiyB,GAMnD,OALIA,EAAWC,SAuDnB,SAAkBxgB,EAAYJ,GAC5B,MAAMud,EAAU,GACV70B,EAAOvP,OAAOuP,KAAKsX,GACzB,IAAK,IAAIvnB,EAAI,EAAGA,EAAIiQ,EAAKhM,OAAQjE,IAAK,CACpC,MAAMuoC,EAAO5gB,EAAW1X,EAAKjQ,IACzBuoC,GAAQA,EAAK/gB,UACfsd,EAAQ7tB,KAAKsxB,EAAKnB,OAEtB,CACA,OAAOE,QAAQkB,IAAI1D,EACrB,CAhEM2D,CAAS7yB,EAAOK,QAAQmyB,YAAaF,GAAYQ,MAAK,KACpD9yB,EAAOK,QAAUiyB,CAAU,IAC1B,SAEEvgB,CACT,CACA,iBAAA2gB,CAAkB1yB,EAAQ0M,GACxB,MAAMwlB,EAAgBj2B,KAAK81B,YACrBhgB,EAAa,GACbmd,EAAUlvB,EAAOwyB,cAAgBxyB,EAAOwyB,YAAc,CAAC,GACvDlX,EAAQxwB,OAAOuP,KAAKqS,GACpB8hB,EAAOO,KAAKC,MAClB,IAAI5kC,EACJ,IAAKA,EAAIkxB,EAAMjtB,OAAS,EAAGjE,GAAK,IAAKA,EAAG,CACtC,MAAMqxB,EAAOH,EAAMlxB,GACnB,GAAuB,MAAnBqxB,EAAK/f,OAAO,GACd,SAEF,GAAa,YAAT+f,EAAoB,CACtB1J,EAAW1Q,QAAQpF,KAAKo2B,gBAAgBryB,EAAQ0M,IAChD,QACF,CACA,MAAMrhB,EAAQqhB,EAAO+O,GACrB,IAAIrN,EAAY8gB,EAAQzT,GACxB,MAAMkV,EAAMuB,EAAcjnC,IAAIwwB,GAC9B,GAAIrN,EAAW,CACb,GAAIuiB,GAAOviB,EAAUwD,SAAU,CAC7BxD,EAAUkjB,OAAOX,EAAKtlC,EAAOmjC,GAC7B,QACF,CACEpgB,EAAU+hB,QAEd,CACKQ,GAAQA,EAAIpf,UAIjB2d,EAAQzT,GAAQrN,EAAY,IAAI,GAAUuiB,EAAK3wB,EAAQyb,EAAMpwB,GAC7D0mB,EAAW1Q,KAAK+M,IAJdpO,EAAOyb,GAAQpwB,CAKnB,CACA,OAAO0mB,CACT,CACA,MAAAuf,CAAOtxB,EAAQ0M,GACb,GAA8B,IAA1BzQ,KAAK81B,YAAYlwB,KAEnB,YADA/W,OAAOwQ,OAAO0E,EAAQ0M,GAGxB,MAAMqF,EAAa9V,KAAKy2B,kBAAkB1yB,EAAQ0M,GAClD,OAAIqF,EAAW1jB,QACbgiC,GAASxpB,IAAI5K,KAAK2uB,OAAQ7Y,IACnB,QAFT,CAIF,EA8BF,SAASghB,GAAU9iB,EAAO+iB,GACxB,MAAMla,EAAO7I,GAASA,EAAM5P,SAAW,CAAC,EAClCf,EAAUwZ,EAAKxZ,QACf7S,OAAmBuB,IAAb8qB,EAAKrsB,IAAoBumC,EAAkB,EACjDxmC,OAAmBwB,IAAb8qB,EAAKtsB,IAAoBwmC,EAAkB,EACvD,MAAO,CACLluB,MAAOxF,EAAU9S,EAAMC,EACvBsY,IAAKzF,EAAU7S,EAAMD,EAEzB,CAgCA,SAASymC,GAAwBnmB,EAAOomB,GACtC,MAAM74B,EAAO,GACP84B,EAAWrmB,EAAMsmB,uBAAuBF,GAC9C,IAAI9oC,EAAGsV,EACP,IAAKtV,EAAI,EAAGsV,EAAOyzB,EAAS9kC,OAAQjE,EAAIsV,IAAQtV,EAC9CiQ,EAAKgH,KAAK8xB,EAAS/oC,GAAG0V,OAExB,OAAOzF,CACT,CACA,SAASg5B,GAAWC,EAAOjoC,EAAOkoC,GAChC,IAAIlzB,EAAUjS,UAAUC,OAAS,QAAsBL,IAAjBI,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,MAAMiM,EAAOi5B,EAAMj5B,KACbm5B,EAA8B,WAAjBnzB,EAAQ9U,KAC3B,IAAInB,EAAGsV,EAAMG,EAAc4zB,EAC3B,GAAc,OAAVpoC,EAAJ,CAGA,IAAKjB,EAAI,EAAGsV,EAAOrF,EAAKhM,OAAQjE,EAAIsV,IAAQtV,EAAG,CAE7C,GADAyV,GAAgBxF,EAAKjQ,GACjByV,IAAiB0zB,EAAS,CAC5B,GAAIlzB,EAAQuyB,IACV,SAEF,KACF,CACAa,EAAaH,EAAM5mB,OAAO7M,GACtBxB,EAAeo1B,KAAgBD,GAAwB,IAAVnoC,GAAeqX,GAAKrX,KAAWqX,GAAK+wB,MACnFpoC,GAASooC,EAEb,CACA,OAAOpoC,CAdP,CAeF,CAcA,SAASqoC,GAAUzjB,EAAOtI,GACxB,MAAMgsB,EAAU1jB,GAASA,EAAM5P,QAAQszB,QACvC,OAAOA,QAAuB3lC,IAAZ2lC,QAAwC3lC,IAAf2Z,EAAK2rB,KAClD,CAeA,SAASM,GAAiBC,EAAQC,EAAUC,GAC1C,MAAMC,EAAWH,EAAOC,KAAcD,EAAOC,GAAY,CAAC,GAC1D,OAAOE,EAASD,KAAgBC,EAASD,GAAc,CAAC,EAC1D,CACA,SAASE,GAAoBX,EAAOY,EAAQC,EAAUr4B,GACpD,IAAK,MAAM6L,KAAQusB,EAAOE,wBAAwBt4B,GAAMwD,UAAW,CACjE,MAAMjU,EAAQioC,EAAM3rB,EAAK7H,OACzB,GAAIq0B,GAAY9oC,EAAQ,IAAM8oC,GAAY9oC,EAAQ,EAChD,OAAOsc,EAAK7H,KAEhB,CACA,OAAO,IACT,CACA,SAASu0B,GAAaC,EAAY1T,GAChC,MAAM9T,EAAQwnB,EAAWxnB,MACvBnF,EAAO2sB,EAAWC,YACdV,EAAS/mB,EAAM0nB,UAAY1nB,EAAM0nB,QAAU,CAAC,GAC5CvsB,EAASN,EAAKM,OAClBisB,EAASvsB,EAAKusB,OACdr0B,EAAe8H,EAAK7H,MAChB20B,EAAQxsB,EAAOE,KACfusB,EAAQR,EAAO/rB,KACfxc,EApCR,SAAqBgpC,EAAYC,EAAYjtB,GAC3C,MAAO,GAAGgtB,EAAW32B,MAAM42B,EAAW52B,MAAM2J,EAAK2rB,OAAS3rB,EAAK7L,MACjE,CAkCc+4B,CAAY5sB,EAAQisB,EAAQvsB,GAClCjI,EAAOkhB,EAAOvyB,OACpB,IAAIilC,EACJ,IAAK,IAAIlpC,EAAI,EAAGA,EAAIsV,IAAQtV,EAAG,CAC7B,MAAM0X,EAAO8e,EAAOx2B,GACd0V,EAAQgC,EAAK2yB,GACjBppC,EAAQyW,EAAK4yB,GAEfpB,GADmBxxB,EAAK0yB,UAAY1yB,EAAK0yB,QAAU,CAAC,IACjCE,GAASd,GAAiBC,EAAQloC,EAAKmU,GAC1DwzB,EAAMzzB,GAAgBxU,EACtBioC,EAAMwB,KAAOb,GAAoBX,EAAOY,GAAQ,EAAMvsB,EAAK7L,MAC3Dw3B,EAAMyB,QAAUd,GAAoBX,EAAOY,GAAQ,EAAOvsB,EAAK7L,OAC1Cw3B,EAAM0B,gBAAkB1B,EAAM0B,cAAgB,CAAC,IACvDn1B,GAAgBxU,CAC/B,CACF,CACA,SAAS4pC,GAAgBnoB,EAAO3E,GAC9B,MAAM+H,EAASpD,EAAMoD,OACrB,OAAOplB,OAAOuP,KAAK6V,GAAQkP,QAAOzzB,GAAOukB,EAAOvkB,GAAKwc,OAASA,IAAM+sB,OACtE,CAuBA,SAASC,GAAYxtB,EAAMjB,GACzB,MAAM7G,EAAe8H,EAAK2sB,WAAWx0B,MAC/BqI,EAAOR,EAAKusB,QAAUvsB,EAAKusB,OAAO/rB,KACxC,GAAKA,EAAL,CAGAzB,EAAQA,GAASiB,EAAKO,QACtB,IAAK,MAAM0Y,KAAUla,EAAO,CAC1B,MAAMmtB,EAASjT,EAAO4T,QACtB,IAAKX,QAA2B7lC,IAAjB6lC,EAAO1rB,SAAsDna,IAA/B6lC,EAAO1rB,GAAMtI,GACxD,cAEKg0B,EAAO1rB,GAAMtI,QACe7R,IAA/B6lC,EAAO1rB,GAAM6sB,oBAA4EhnC,IAA7C6lC,EAAO1rB,GAAM6sB,cAAcn1B,WAClEg0B,EAAO1rB,GAAM6sB,cAAcn1B,EAEtC,CAXA,CAYF,CACA,MAAMu1B,GAAqB7pC,GAAiB,UAATA,GAA6B,SAATA,EACjD8pC,GAAmB,CAACC,EAAQC,IAAWA,EAASD,EAASxqC,OAAOwQ,OAAO,CAAC,EAAGg6B,GAKjF,MAAM,GACJ,WAAAz5B,CAAYiR,EAAOjN,GACjB5D,KAAK6Q,MAAQA,EACb7Q,KAAKkX,KAAOrG,EAAMsC,IAClBnT,KAAK6D,MAAQD,EACb5D,KAAKu5B,gBAAkB,CAAC,EACxBv5B,KAAKs4B,YAAct4B,KAAKw5B,UACxBx5B,KAAKy5B,MAAQz5B,KAAKs4B,YAAYz4B,KAC9BG,KAAKoE,aAAUrS,EACfiO,KAAK0kB,UAAW,EAChB1kB,KAAK05B,WAAQ3nC,EACbiO,KAAK25B,iBAAc5nC,EACnBiO,KAAK45B,oBAAiB7nC,EACtBiO,KAAK65B,gBAAa9nC,EAClBiO,KAAK85B,gBAAa/nC,EAClBiO,KAAK+5B,qBAAsB,EAC3B/5B,KAAKg6B,oBAAqB,EAC1Bh6B,KAAKi6B,cAAWloC,EAChBiO,KAAKk6B,UAAY,GACjBl6B,KAAKm6B,8BAAgCA,mBACrCn6B,KAAKo6B,2BAA6BA,gBAClCp6B,KAAKq6B,YACP,CACA,UAAAA,GACE,MAAM3uB,EAAO1L,KAAKs4B,YAClBt4B,KAAK+1B,YACL/1B,KAAKs6B,aACL5uB,EAAK6uB,SAAW9C,GAAU/rB,EAAKusB,OAAQvsB,GACvC1L,KAAKw6B,cACDx6B,KAAKoE,QAAQoX,OAASxb,KAAK6Q,MAAM4pB,gBAAgB,WACnD3a,QAAQC,KAAK,qKAEjB,CACA,WAAA2a,CAAY92B,GACN5D,KAAK6D,QAAUD,GACjBs1B,GAAYl5B,KAAKs4B,aAEnBt4B,KAAK6D,MAAQD,CACf,CACA,UAAA02B,GACE,MAAMzpB,EAAQ7Q,KAAK6Q,MACbnF,EAAO1L,KAAKs4B,YACZqC,EAAU36B,KAAK46B,aACfC,EAAW,CAAC3uB,EAAM1Y,EAAGsR,EAAG7V,IAAe,MAATid,EAAe1Y,EAAa,MAAT0Y,EAAejd,EAAI6V,EACpEg2B,EAAMpvB,EAAKqvB,QAAUt4B,EAAek4B,EAAQI,QAAS/B,GAAgBnoB,EAAO,MAC5EmqB,EAAMtvB,EAAKuvB,QAAUx4B,EAAek4B,EAAQM,QAASjC,GAAgBnoB,EAAO,MAC5EqqB,EAAMxvB,EAAKyvB,QAAU14B,EAAek4B,EAAQQ,QAASnC,GAAgBnoB,EAAO,MAC5EyC,EAAY5H,EAAK4H,UACjB8nB,EAAM1vB,EAAK2vB,QAAUR,EAASvnB,EAAWwnB,EAAKE,EAAKE,GACnDI,EAAM5vB,EAAK6vB,QAAUV,EAASvnB,EAAW0nB,EAAKF,EAAKI,GACzDxvB,EAAKe,OAASzM,KAAKw7B,cAAcV,GACjCpvB,EAAKgB,OAAS1M,KAAKw7B,cAAcR,GACjCtvB,EAAK+vB,OAASz7B,KAAKw7B,cAAcN,GACjCxvB,EAAKM,OAAShM,KAAKw7B,cAAcJ,GACjC1vB,EAAKusB,OAASj4B,KAAKw7B,cAAcF,EACnC,CACA,UAAAV,GACE,OAAO56B,KAAK6Q,MAAM4H,KAAKnG,SAAStS,KAAK6D,MACvC,CACA,OAAA21B,GACE,OAAOx5B,KAAK6Q,MAAM6qB,eAAe17B,KAAK6D,MACxC,CACA,aAAA23B,CAAcG,GACZ,OAAO37B,KAAK6Q,MAAMoD,OAAO0nB,EAC3B,CACA,cAAAC,CAAe5nB,GACb,MAAMtI,EAAO1L,KAAKs4B,YAClB,OAAOtkB,IAAUtI,EAAKM,OAASN,EAAKusB,OAASvsB,EAAKM,MACpD,CACA,KAAA6vB,GACE77B,KAAK6yB,QAAQ,QACf,CACA,QAAAiJ,GACE,MAAMpwB,EAAO1L,KAAKs4B,YACdt4B,KAAK05B,OACPzvB,GAAoBjK,KAAK05B,MAAO15B,MAE9B0L,EAAK6uB,UACPrB,GAAYxtB,EAEhB,CACA,UAAAqwB,GACE,MAAMpB,EAAU36B,KAAK46B,aACfniB,EAAOkiB,EAAQliB,OAASkiB,EAAQliB,KAAO,IACvCihB,EAAQ15B,KAAK05B,MACnB,GAAIv3B,EAASsW,GACXzY,KAAK05B,MA7MX,SAAkCjhB,GAChC,MAAMra,EAAOvP,OAAOuP,KAAKqa,GACnBujB,EAAQ,IAAIppC,MAAMwL,EAAKhM,QAC7B,IAAIjE,EAAGsV,EAAM/T,EACb,IAAKvB,EAAI,EAAGsV,EAAOrF,EAAKhM,OAAQjE,EAAIsV,IAAQtV,EAC1CuB,EAAM0O,EAAKjQ,GACX6tC,EAAM7tC,GAAK,CACTqF,EAAG9D,EACHoV,EAAG2T,EAAK/oB,IAGZ,OAAOssC,CACT,CAiMmBC,CAAyBxjB,QACjC,GAAIihB,IAAUjhB,EAAM,CACzB,GAAIihB,EAAO,CACTzvB,GAAoByvB,EAAO15B,MAC3B,MAAM0L,EAAO1L,KAAKs4B,YAClBY,GAAYxtB,GACZA,EAAKO,QAAU,EACjB,CACIwM,GAAQ5pB,OAAOqtC,aAAazjB,KD5IJvO,EC6IFlK,MD7ILuH,EC6IDkR,GD5IdrO,SACR7C,EAAM6C,SAASC,UAAUjF,KAAK8E,IAGhCrb,OAAOC,eAAeyY,EAAO,WAAY,CACvCgc,cAAc,EACdx0B,YAAY,EACZK,MAAO,CACLib,UAAW,CAACH,MAGhBF,GAAYO,SAAQ7a,IAClB,MAAMkmC,EAAS,UAAYrwB,GAAY7V,GACjCysC,EAAO50B,EAAM7X,GACnBb,OAAOC,eAAeyY,EAAO7X,EAAK,CAChC6zB,cAAc,EACdx0B,YAAY,EACZ,KAAAK,GACE,IAAK,IAAIgtC,EAAOjqC,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Er5B,EAAKq5B,GAAQlqC,UAAUkqC,GAEzB,MAAM9L,EAAM4L,EAAKj5B,MAAMlD,KAAMgD,GAM7B,OALAuE,EAAM6C,SAASC,UAAUE,SAAQ1a,IACD,oBAAnBA,EAAO+lC,IAChB/lC,EAAO+lC,MAAW5yB,EACpB,IAEKutB,CACT,GACA,MCiHAvwB,KAAKk6B,UAAY,GACjBl6B,KAAK05B,MAAQjhB,CACf,CDjJJ,IAA2BlR,EAAO2C,CCkJhC,CACA,WAAAswB,GACE,MAAM9uB,EAAO1L,KAAKs4B,YAClBt4B,KAAK+7B,aACD/7B,KAAKm6B,qBACPzuB,EAAKivB,QAAU,IAAI36B,KAAKm6B,mBAE5B,CACA,qBAAAmC,CAAsBC,GACpB,MAAM7wB,EAAO1L,KAAKs4B,YACZqC,EAAU36B,KAAK46B,aACrB,IAAI4B,GAAe,EACnBx8B,KAAK+7B,aACL,MAAMU,EAAa/wB,EAAK6uB,SACxB7uB,EAAK6uB,SAAW9C,GAAU/rB,EAAKusB,OAAQvsB,GACnCA,EAAK2rB,QAAUsD,EAAQtD,QACzBmF,GAAe,EACftD,GAAYxtB,GACZA,EAAK2rB,MAAQsD,EAAQtD,OAEvBr3B,KAAK08B,gBAAgBH,IACjBC,GAAgBC,IAAe/wB,EAAK6uB,WACtCnC,GAAap4B,KAAM0L,EAAKO,QAE5B,CACA,SAAA8pB,GACE,MAAMF,EAAS71B,KAAK6Q,MAAMglB,OACpB8G,EAAY9G,EAAO+G,iBAAiB58B,KAAKy5B,OACzCjZ,EAASqV,EAAOgH,gBAAgB78B,KAAK46B,aAAc+B,GAAW,GACpE38B,KAAKoE,QAAUyxB,EAAOiH,eAAetc,EAAQxgB,KAAK+Z,cAClD/Z,KAAK0kB,SAAW1kB,KAAKoE,QAAQyP,QAC7B7T,KAAKu5B,gBAAkB,CAAC,CAC1B,CACA,KAAA3U,CAAM/b,EAAOiD,GACX,MAAMJ,EAAO1L,KAAKs4B,YAChB7f,EAAOzY,KAAK05B,MACR1tB,EAASN,EAAKM,OAClBuuB,EAAW7uB,EAAK6uB,SACZ/B,EAAQxsB,EAAOE,KACrB,IAEI/d,EAAG4lC,EAAKpP,EAFRoY,EAAmB,IAAVl0B,GAAeiD,IAAU2M,EAAKrmB,QAAgBsZ,EAAKK,QAC5Dob,EAAOte,EAAQ,GAAK6C,EAAKO,QAAQpD,EAAQ,GAE7C,IAAsB,IAAlB7I,KAAK0kB,SACPhZ,EAAKO,QAAUwM,EACf/M,EAAKK,SAAU,EACf4Y,EAASlM,MACJ,CAEHkM,EADE9xB,EAAQ4lB,EAAK5P,IACN7I,KAAKg9B,eAAetxB,EAAM+M,EAAM5P,EAAOiD,GACvC3J,EAASsW,EAAK5P,IACd7I,KAAKi9B,gBAAgBvxB,EAAM+M,EAAM5P,EAAOiD,GAExC9L,KAAKk9B,mBAAmBxxB,EAAM+M,EAAM5P,EAAOiD,GAEtD,MAAMqxB,EAA6B,IAAqB,OAAfpJ,EAAIyE,IAAmBrR,GAAQ4M,EAAIyE,GAASrR,EAAKqR,GAC1F,IAAKrqC,EAAI,EAAGA,EAAI2d,IAAS3d,EACvBud,EAAKO,QAAQ9d,EAAI0a,GAASkrB,EAAMpP,EAAOx2B,GACnC4uC,IACEI,MACFJ,GAAS,GAEX5V,EAAO4M,GAGXroB,EAAKK,QAAUgxB,CACjB,CACIxC,GACFnC,GAAap4B,KAAM2kB,EAEvB,CACA,kBAAAuY,CAAmBxxB,EAAM+M,EAAM5P,EAAOiD,GACpC,MAAME,EAASN,EAAKM,OAClBisB,EAASvsB,EAAKusB,OACVO,EAAQxsB,EAAOE,KACfusB,EAAQR,EAAO/rB,KACfkxB,EAASpxB,EAAOqxB,YAChBC,EAActxB,IAAWisB,EACzBtT,EAAS,IAAI/xB,MAAMkZ,GACzB,IAAI3d,EAAGsV,EAAMI,EACb,IAAK1V,EAAI,EAAGsV,EAAOqI,EAAO3d,EAAIsV,IAAQtV,EACpC0V,EAAQ1V,EAAI0a,EACZ8b,EAAOx2B,GAAK,CACV,CAACqqC,GAAQ8E,GAAetxB,EAAO4Y,MAAMwY,EAAOv5B,GAAQA,GACpD,CAAC40B,GAAQR,EAAOrT,MAAMnM,EAAK5U,GAAQA,IAGvC,OAAO8gB,CACT,CACA,cAAAqY,CAAetxB,EAAM+M,EAAM5P,EAAOiD,GAChC,MAAMW,EAASf,EAAKe,OAClBC,EAAShB,EAAKgB,OACViY,EAAS,IAAI/xB,MAAMkZ,GACzB,IAAI3d,EAAGsV,EAAMI,EAAOgC,EACpB,IAAK1X,EAAI,EAAGsV,EAAOqI,EAAO3d,EAAIsV,IAAQtV,EACpC0V,EAAQ1V,EAAI0a,EACZhD,EAAO4S,EAAK5U,GACZ8gB,EAAOx2B,GAAK,CACVqF,EAAGiZ,EAAOmY,MAAM/e,EAAK,GAAIhC,GACzBiB,EAAG4H,EAAOkY,MAAM/e,EAAK,GAAIhC,IAG7B,OAAO8gB,CACT,CACA,eAAAsY,CAAgBvxB,EAAM+M,EAAM5P,EAAOiD,GACjC,MAAMW,EAASf,EAAKe,OAClBC,EAAShB,EAAKgB,OACV6wB,EAAiBv9B,KAAK0kB,SAC1B8Y,EAAwBD,EAAeE,SACvCA,OAAqC,IAA1BD,EAAmC,IAAMA,EACpDE,EAAwBH,EAAeI,SACvCA,OAAqC,IAA1BD,EAAmC,IAAMA,EAChD/Y,EAAS,IAAI/xB,MAAMkZ,GACzB,IAAI3d,EAAGsV,EAAMI,EAAOgC,EACpB,IAAK1X,EAAI,EAAGsV,EAAOqI,EAAO3d,EAAIsV,IAAQtV,EACpC0V,EAAQ1V,EAAI0a,EACZhD,EAAO4S,EAAK5U,GACZ8gB,EAAOx2B,GAAK,CACVqF,EAAGiZ,EAAOmY,MAAM7f,GAAiBc,EAAM43B,GAAW55B,GAClDiB,EAAG4H,EAAOkY,MAAM7f,GAAiBc,EAAM83B,GAAW95B,IAGtD,OAAO8gB,CACT,CACA,SAAAiZ,CAAU/5B,GACR,OAAO7D,KAAKs4B,YAAYrsB,QAAQpI,EAClC,CACA,cAAAg6B,CAAeh6B,GACb,OAAO7D,KAAKs4B,YAAY7f,KAAK5U,EAC/B,CACA,UAAAuzB,CAAWpjB,EAAO2Q,EAAQr1B,GACxB,MAAMuhB,EAAQ7Q,KAAK6Q,MACbnF,EAAO1L,KAAKs4B,YACZlpC,EAAQu1B,EAAO3Q,EAAM9H,MAK3B,OAAOkrB,GAJO,CACZh5B,KAAM44B,GAAwBnmB,GAAO,GACrCJ,OAAQkU,EAAO4T,QAAQvkB,EAAM9H,MAAM6sB,eAEZ3pC,EAAOsc,EAAK7H,MAAO,CAC1CvU,QAEJ,CACA,qBAAAwuC,CAAsBh3B,EAAOkN,EAAO2Q,EAAQ0S,GAC1C,MAAM0G,EAAcpZ,EAAO3Q,EAAM9H,MACjC,IAAI9c,EAAwB,OAAhB2uC,EAAuBC,IAAMD,EACzC,MAAMttB,EAAS4mB,GAAS1S,EAAO4T,QAAQvkB,EAAM9H,MACzCmrB,GAAS5mB,IACX4mB,EAAM5mB,OAASA,EACfrhB,EAAQgoC,GAAWC,EAAO0G,EAAa/9B,KAAKs4B,YAAYz0B,QAE1DiD,EAAMtW,IAAMF,KAAKE,IAAIsW,EAAMtW,IAAKpB,GAChC0X,EAAMvW,IAAMD,KAAKC,IAAIuW,EAAMvW,IAAKnB,EAClC,CACA,SAAA6uC,CAAUjqB,EAAOkqB,GACf,MAAMxyB,EAAO1L,KAAKs4B,YACZrsB,EAAUP,EAAKO,QACf8wB,EAASrxB,EAAKK,SAAWiI,IAAUtI,EAAKM,OACxCvI,EAAOwI,EAAQ7Z,OACf+rC,EAAan+B,KAAK47B,eAAe5nB,GACjCqjB,EAtQU,EAAC6G,EAAUxyB,EAAMmF,IAAUqtB,IAAaxyB,EAAK0yB,QAAU1yB,EAAK6uB,UAAY,CAC1Fn8B,KAAM44B,GAAwBnmB,GAAO,GACrCJ,OAAQ,MAoQQ4tB,CAAYH,EAAUxyB,EAAM1L,KAAK6Q,OACzC/J,EAAQ,CACZtW,IAAK6R,OAAO8D,kBACZ5V,IAAK8R,OAAOi8B,mBAERC,EA1WV,SAAuBvqB,GACrB,MAAMwqB,EAAuBxqB,EAAM5H,gBACjC5b,EAAMguC,EAAqBhuC,IAC3BD,EAAMiuC,EAAqBjuC,IAC3B8b,EAAamyB,EAAqBnyB,WAClCC,EAAakyB,EAAqBlyB,WACpC,MAAO,CACL9b,IAAK6b,EAAa7b,EAAM6R,OAAOi8B,kBAC/B/tC,IAAK+b,EAAa/b,EAAM8R,OAAO8D,kBAEnC,CAgW2BiG,CAAc+xB,GACnCM,EAAWF,EAAe/tC,IAC1BkuC,EAAWH,EAAehuC,IAC5B,IAAIpC,EAAGw2B,EACP,SAASga,IACPha,EAAS1Y,EAAQ9d,GACjB,MAAMqpC,EAAa7S,EAAOwZ,EAAWjyB,MACrC,OAAQ9J,EAAeuiB,EAAO3Q,EAAM9H,QAAUuyB,EAAWjH,GAAckH,EAAWlH,CACpF,CACA,IAAKrpC,EAAI,EAAGA,EAAIsV,IACVk7B,MAGJ3+B,KAAK89B,sBAAsBh3B,EAAOkN,EAAO2Q,EAAQ0S,IAC7C0F,MALkB5uC,GASxB,GAAI4uC,EACF,IAAK5uC,EAAIsV,EAAO,EAAGtV,GAAK,IAAKA,EAC3B,IAAIwwC,IAAJ,CAGA3+B,KAAK89B,sBAAsBh3B,EAAOkN,EAAO2Q,EAAQ0S,GACjD,KAFA,CAKJ,OAAOvwB,CACT,CACA,kBAAA83B,CAAmB5qB,GACjB,MAAM2Q,EAAS3kB,KAAKs4B,YAAYrsB,QAC1BwE,EAAS,GACf,IAAItiB,EAAGsV,EAAMrU,EACb,IAAKjB,EAAI,EAAGsV,EAAOkhB,EAAOvyB,OAAQjE,EAAIsV,IAAQtV,EAC5CiB,EAAQu1B,EAAOx2B,GAAG6lB,EAAM9H,MACpB9J,EAAehT,IACjBqhB,EAAOrL,KAAKhW,GAGhB,OAAOqhB,CACT,CACA,cAAAouB,GACE,OAAO,CACT,CACA,gBAAAC,CAAiBj7B,GACf,MAAM6H,EAAO1L,KAAKs4B,YACZtsB,EAASN,EAAKM,OACdisB,EAASvsB,EAAKusB,OACdtT,EAAS3kB,KAAK49B,UAAU/5B,GAC9B,MAAO,CACLk7B,MAAO/yB,EAAS,GAAKA,EAAOgzB,iBAAiBra,EAAO3Y,EAAOE,OAAS,GACpE9c,MAAO6oC,EAAS,GAAKA,EAAO+G,iBAAiBra,EAAOsT,EAAO/rB,OAAS,GAExE,CACA,OAAA2mB,CAAQvjC,GACN,MAAMoc,EAAO1L,KAAKs4B,YAClBt4B,KAAKq1B,OAAO/lC,GAAQ,WACpBoc,EAAKuzB,MAzeT,SAAgB7vC,GACd,IAAIC,EAAGJ,EAAGoC,EAAGjD,EASb,OARI+T,EAAS/S,IACXC,EAAID,EAAM+mB,IACVlnB,EAAIG,EAAMgnB,MACV/kB,EAAIjC,EAAMinB,OACVjoB,EAAIgB,EAAMknB,MAEVjnB,EAAIJ,EAAIoC,EAAIjD,EAAIgB,EAEX,CACL+mB,IAAK9mB,EACL+mB,MAAOnnB,EACPonB,OAAQhlB,EACRilB,KAAMloB,EACN8wC,UAAoB,IAAV9vC,EAEd,CAwdiB+vC,CAAO18B,EAAezC,KAAKoE,QAAQ4X,KAtfpD,SAAqBvP,EAAQC,EAAQqqB,GACnC,IAAwB,IAApBA,EACF,OAAO,EAET,MAAMvjC,EAAIsjC,GAAUrqB,EAAQsqB,GACtBjyB,EAAIgyB,GAAUpqB,EAAQqqB,GAC5B,MAAO,CACL5gB,IAAKrR,EAAEgE,IACPsN,MAAO5iB,EAAEsV,IACTuN,OAAQvR,EAAE+D,MACVyN,KAAM9iB,EAAEqV,MAEZ,CA0e0Du2B,CAAY1zB,EAAKe,OAAQf,EAAKgB,OAAQ1M,KAAK6+B,mBACnG,CACA,MAAAxJ,CAAO/lC,GAAO,CACd,IAAA4jC,GACE,MAAM/f,EAAMnT,KAAKkX,KACXrG,EAAQ7Q,KAAK6Q,MACbnF,EAAO1L,KAAKs4B,YACZ3lB,EAAWjH,EAAK+M,MAAQ,GACxBoD,EAAOhL,EAAMwuB,UACb1pB,EAAS,GACT9M,EAAQ7I,KAAK65B,YAAc,EAC3B/tB,EAAQ9L,KAAK85B,YAAcnnB,EAASvgB,OAASyW,EAC7CsL,EAA0BnU,KAAKoE,QAAQ+P,wBAC7C,IAAIhmB,EAIJ,IAHIud,EAAKivB,SACPjvB,EAAKivB,QAAQzH,KAAK/f,EAAK0I,EAAMhT,EAAOiD,GAEjC3d,EAAI0a,EAAO1a,EAAI0a,EAAQiD,IAAS3d,EAAG,CACtC,MAAMi6B,EAAUzV,EAASxkB,GACrBi6B,EAAQgW,SAGRhW,EAAQzS,QAAUxB,EACpBwB,EAAOvQ,KAAKgjB,GAEZA,EAAQ8K,KAAK/f,EAAK0I,GAEtB,CACA,IAAK1tB,EAAI,EAAGA,EAAIwnB,EAAOvjB,SAAUjE,EAC/BwnB,EAAOxnB,GAAG+kC,KAAK/f,EAAK0I,EAExB,CACA,QAAA+P,CAAS/nB,EAAO8R,GACd,MAAMrmB,EAAOqmB,EAAS,SAAW,UACjC,YAAiB5jB,IAAV8R,GAAuB7D,KAAKs4B,YAAYqC,QAAU36B,KAAKs/B,6BAA6BhwC,GAAQ0Q,KAAKu/B,0BAA0B17B,GAAS,EAAGvU,EAChJ,CACA,UAAAyqB,CAAWlW,EAAO8R,EAAQrmB,GACxB,MAAMqrC,EAAU36B,KAAK46B,aACrB,IAAIpoB,EACJ,GAAI3O,GAAS,GAAKA,EAAQ7D,KAAKs4B,YAAY7f,KAAKrmB,OAAQ,CACtD,MAAMg2B,EAAUpoB,KAAKs4B,YAAY7f,KAAK5U,GACtC2O,EAAU4V,EAAQ6R,WAAa7R,EAAQ6R,SA7Y7C,SAA2BjW,EAAQngB,EAAOukB,GACxC,OAAO/H,GAAc2D,EAAQ,CAC3BrO,QAAQ,EACR6pB,UAAW37B,EACX8gB,YAAQ5yB,EACR0tC,SAAK1tC,EACLq2B,UACAvkB,QACAvU,KAAM,UACNuQ,KAAM,QAEV,CAkYwD6/B,CAAkB1/B,KAAK+Z,aAAclW,EAAOukB,IAC9F5V,EAAQmS,OAAS3kB,KAAK49B,UAAU/5B,GAChC2O,EAAQitB,IAAM9E,EAAQliB,KAAK5U,GAC3B2O,EAAQ3O,MAAQ2O,EAAQgtB,UAAY37B,CACtC,MACE2O,EAAUxS,KAAKi6B,WAAaj6B,KAAKi6B,SA5ZvC,SAA8BjW,EAAQngB,GACpC,OAAOwc,GAAc2D,EAAQ,CAC3BrO,QAAQ,EACRglB,aAAS5oC,EACT6R,aAAcC,EACdA,QACAvU,KAAM,UACNuQ,KAAM,WAEV,CAmZkD8/B,CAAqB3/B,KAAK6Q,MAAMkJ,aAAc/Z,KAAK6D,QAC/F2O,EAAQmoB,QAAUA,EAClBnoB,EAAQ3O,MAAQ2O,EAAQ5O,aAAe5D,KAAK6D,MAI9C,OAFA2O,EAAQmD,SAAWA,EACnBnD,EAAQljB,KAAOA,EACRkjB,CACT,CACA,4BAAA8sB,CAA6BhwC,GAC3B,OAAO0Q,KAAK4/B,uBAAuB5/B,KAAKm6B,mBAAmBp4B,GAAIzS,EACjE,CACA,yBAAAiwC,CAA0B17B,EAAOvU,GAC/B,OAAO0Q,KAAK4/B,uBAAuB5/B,KAAKo6B,gBAAgBr4B,GAAIzS,EAAMuU,EACpE,CACA,sBAAA+7B,CAAuBC,GACrB,IAAIvwC,EAAO6C,UAAUC,OAAS,QAAsBL,IAAjBI,UAAU,GAAmBA,UAAU,GAAK,UAC3E0R,EAAQ1R,UAAUC,OAAS,EAAID,UAAU,QAAKJ,EAClD,MAAM4jB,EAAkB,WAATrmB,EACT2pB,EAAQjZ,KAAKu5B,gBACbvpB,EAAW6vB,EAAc,IAAMvwC,EAC/B+pC,EAASpgB,EAAMjJ,GACf8vB,EAAU9/B,KAAK+5B,qBAAuBt0B,GAAQ5B,GACpD,GAAIw1B,EACF,OAAOD,GAAiBC,EAAQyG,GAElC,MAAMjK,EAAS71B,KAAK6Q,MAAMglB,OACpB8G,EAAY9G,EAAOkK,wBAAwB//B,KAAKy5B,MAAOoG,GACvDpf,EAAW9K,EAAS,CAAC,GAAGkqB,SAAoB,QAASA,EAAa,IAAM,CAACA,EAAa,IACtFrf,EAASqV,EAAOgH,gBAAgB78B,KAAK46B,aAAc+B,GACnDqD,EAAQnxC,OAAOuP,KAAK4W,GAASrC,SAASktB,IAEtCpvB,EAASolB,EAAOoK,oBAAoBzf,EAAQwf,GADlC,IAAMhgC,KAAK+Z,WAAWlW,EAAO8R,EAAQrmB,IACamxB,GAKlE,OAJIhQ,EAAO6lB,UACT7lB,EAAO6lB,QAAUwJ,EACjB7mB,EAAMjJ,GAAYnhB,OAAOqxC,OAAO9G,GAAiB3oB,EAAQqvB,KAEpDrvB,CACT,CACA,kBAAA0vB,CAAmBt8B,EAAOu8B,EAAYzqB,GACpC,MAAM9E,EAAQ7Q,KAAK6Q,MACboI,EAAQjZ,KAAKu5B,gBACbvpB,EAAW,aAAaowB,IACxB/G,EAASpgB,EAAMjJ,GACrB,GAAIqpB,EACF,OAAOA,EAET,IAAIj1B,EACJ,IAAgC,IAA5ByM,EAAMzM,QAAQ+N,UAAqB,CACrC,MAAM0jB,EAAS71B,KAAK6Q,MAAMglB,OACpB8G,EAAY9G,EAAOwK,0BAA0BrgC,KAAKy5B,MAAO2G,GACzD5f,EAASqV,EAAOgH,gBAAgB78B,KAAK46B,aAAc+B,GACzDv4B,EAAUyxB,EAAOiH,eAAetc,EAAQxgB,KAAK+Z,WAAWlW,EAAO8R,EAAQyqB,GACzE,CACA,MAAMtqB,EAAa,IAAI,GAAWjF,EAAOzM,GAAWA,EAAQ0R,YAI5D,OAHI1R,GAAWA,EAAQyc,aACrB5H,EAAMjJ,GAAYnhB,OAAOqxC,OAAOpqB,IAE3BA,CACT,CACA,gBAAAwqB,CAAiBl8B,GACf,GAAKA,EAAQkyB,QAGb,OAAOt2B,KAAK45B,iBAAmB55B,KAAK45B,eAAiB/qC,OAAOwQ,OAAO,CAAC,EAAG+E,GACzE,CACA,cAAAm8B,CAAejxC,EAAMkxC,GACnB,OAAQA,GAAiBrH,GAAmB7pC,IAAS0Q,KAAK6Q,MAAM4vB,mBAClE,CACA,iBAAAC,CAAkB73B,EAAOvZ,GACvB,MAAMqxC,EAAY3gC,KAAKu/B,0BAA0B12B,EAAOvZ,GAClDsxC,EAA0B5gC,KAAK45B,eAC/B4G,EAAgBxgC,KAAKsgC,iBAAiBK,GACtCJ,EAAiBvgC,KAAKugC,eAAejxC,EAAMkxC,IAAkBA,IAAkBI,EAErF,OADA5gC,KAAK6gC,oBAAoBL,EAAelxC,EAAMqxC,GACvC,CACLH,gBACAD,iBAEJ,CACA,aAAAO,CAAc1Y,EAASvkB,EAAO6R,EAAYpmB,GACpC6pC,GAAmB7pC,GACrBT,OAAOwQ,OAAO+oB,EAAS1S,GAEvB1V,KAAKmgC,mBAAmBt8B,EAAOvU,GAAM+lC,OAAOjN,EAAS1S,EAEzD,CACA,mBAAAmrB,CAAoBL,EAAelxC,EAAM+mC,GACnCmK,IAAkBrH,GAAmB7pC,IACvC0Q,KAAKmgC,wBAAmBpuC,EAAWzC,GAAM+lC,OAAOmL,EAAenK,EAEnE,CACA,SAAA0K,CAAU3Y,EAASvkB,EAAOvU,EAAMqmB,GAC9ByS,EAAQzS,OAASA,EACjB,MAAMvR,EAAUpE,KAAK4rB,SAAS/nB,EAAO8R,GACrC3V,KAAKmgC,mBAAmBt8B,EAAOvU,EAAMqmB,GAAQ0f,OAAOjN,EAAS,CAC3DhkB,SAAUuR,GAAU3V,KAAKsgC,iBAAiBl8B,IAAYA,GAE1D,CACA,gBAAA48B,CAAiB5Y,EAASxkB,EAAcC,GACtC7D,KAAK+gC,UAAU3Y,EAASvkB,EAAO,UAAU,EAC3C,CACA,aAAAo9B,CAAc7Y,EAASxkB,EAAcC,GACnC7D,KAAK+gC,UAAU3Y,EAASvkB,EAAO,UAAU,EAC3C,CACA,wBAAAq9B,GACE,MAAM9Y,EAAUpoB,KAAKs4B,YAAYqC,QAC7BvS,GACFpoB,KAAK+gC,UAAU3Y,OAASr2B,EAAW,UAAU,EAEjD,CACA,qBAAAovC,GACE,MAAM/Y,EAAUpoB,KAAKs4B,YAAYqC,QAC7BvS,GACFpoB,KAAK+gC,UAAU3Y,OAASr2B,EAAW,UAAU,EAEjD,CACA,eAAA2qC,CAAgBH,GACd,MAAM9jB,EAAOzY,KAAK05B,MACZ/mB,EAAW3S,KAAKs4B,YAAY7f,KAClC,IAAK,MAAM8U,KAAQvtB,KAAKk6B,UAAW,CACjC,IAAIkH,EAAQxQ,GAAerD,EAAM,GACjC,MAAMqI,EAASwL,EAAM,GACfC,EAAOD,EAAM,GACbE,EAAOF,EAAM,GACnBphC,KAAK41B,GAAQyL,EAAMC,EACrB,CACAthC,KAAKk6B,UAAY,GACjB,MAAMqH,EAAU5uB,EAASvgB,OACnBovC,EAAU/oB,EAAKrmB,OACf0Z,EAAQxb,KAAKE,IAAIgxC,EAASD,GAC5Bz1B,GACF9L,KAAK4kB,MAAM,EAAG9Y,GAEZ01B,EAAUD,EACZvhC,KAAKyhC,gBAAgBF,EAASC,EAAUD,EAAShF,GACxCiF,EAAUD,GACnBvhC,KAAK0hC,gBAAgBF,EAASD,EAAUC,EAE5C,CACA,eAAAC,CAAgB54B,EAAOiD,GACrB,IAAIywB,IAAmBpqC,UAAUC,OAAS,QAAsBL,IAAjBI,UAAU,KAAmBA,UAAU,GACtF,MAAMuZ,EAAO1L,KAAKs4B,YACZ7f,EAAO/M,EAAK+M,KACZ3P,EAAMD,EAAQiD,EACpB,IAAI3d,EACJ,MAAMwzC,EAAOze,IAEX,IADAA,EAAI9wB,QAAU0Z,EACT3d,EAAI+0B,EAAI9wB,OAAS,EAAGjE,GAAK2a,EAAK3a,IACjC+0B,EAAI/0B,GAAK+0B,EAAI/0B,EAAI2d,EACnB,EAGF,IADA61B,EAAKlpB,GACAtqB,EAAI0a,EAAO1a,EAAI2a,IAAO3a,EACzBsqB,EAAKtqB,GAAK,IAAI6R,KAAKo6B,gBAEjBp6B,KAAK0kB,UACPid,EAAKj2B,EAAKO,SAEZjM,KAAK4kB,MAAM/b,EAAOiD,GACdywB,GACFv8B,KAAK4hC,eAAenpB,EAAM5P,EAAOiD,EAAO,QAE5C,CACA,cAAA81B,CAAexZ,EAASvf,EAAOiD,EAAOxc,GAAO,CAC7C,eAAAoyC,CAAgB74B,EAAOiD,GACrB,MAAMJ,EAAO1L,KAAKs4B,YAClB,GAAIt4B,KAAK0kB,SAAU,CACjB,MAAMmd,EAAUn2B,EAAKO,QAAQ3B,OAAOzB,EAAOiD,GACvCJ,EAAK6uB,UACPrB,GAAYxtB,EAAMm2B,EAEtB,CACAn2B,EAAK+M,KAAKnO,OAAOzB,EAAOiD,EAC1B,CACA,KAAAg2B,CAAM9+B,GACJ,GAAIhD,KAAK0kB,SACP1kB,KAAKk6B,UAAU90B,KAAKpC,OACf,CACL,MAAM++B,EAASnR,GAAe5tB,EAAM,GAClC4yB,EAASmM,EAAO,GAChBV,EAAOU,EAAO,GACdT,EAAOS,EAAO,GAChB/hC,KAAK41B,GAAQyL,EAAMC,EACrB,CACAthC,KAAK6Q,MAAMmxB,aAAa58B,KAAK,CAACpF,KAAK6D,SAAUb,GAC/C,CACA,WAAAi/B,GACE,MAAMn2B,EAAQ3Z,UAAUC,OACxB4N,KAAK8hC,MAAM,CAAC,kBAAmB9hC,KAAK46B,aAAaniB,KAAKrmB,OAAS0Z,EAAOA,GACxE,CACA,UAAAo2B,GACEliC,KAAK8hC,MAAM,CAAC,kBAAmB9hC,KAAKs4B,YAAY7f,KAAKrmB,OAAS,EAAG,GACnE,CACA,YAAA+vC,GACEniC,KAAK8hC,MAAM,CAAC,kBAAmB,EAAG,GACpC,CACA,aAAAM,CAAcv5B,EAAOiD,GACfA,GACF9L,KAAK8hC,MAAM,CAAC,kBAAmBj5B,EAAOiD,IAExC,MAAMu2B,EAAWlwC,UAAUC,OAAS,EAChCiwC,GACFriC,KAAK8hC,MAAM,CAAC,kBAAmBj5B,EAAOw5B,GAE1C,CACA,cAAAC,GACEtiC,KAAK8hC,MAAM,CAAC,kBAAmB,EAAG3vC,UAAUC,QAC9C,EAgBF,SAASmwC,GAAqB72B,GAC5B,MAAMsI,EAAQtI,EAAKM,OACbyE,EAbR,SAA2BuD,EAAOnU,GAChC,IAAKmU,EAAMwuB,OAAOC,KAAM,CACtB,MAAMC,EAAe1uB,EAAMmkB,wBAAwBt4B,GACnD,IAAI4Q,EAAS,GACb,IAAK,IAAItiB,EAAI,EAAGsV,EAAOi/B,EAAatwC,OAAQjE,EAAIsV,EAAMtV,IACpDsiB,EAASA,EAAOkyB,OAAOD,EAAav0C,GAAGkqC,WAAWuG,mBAAmB5qB,IAEvEA,EAAMwuB,OAAOC,KAAOj4B,GAAaiG,EAAOmyB,MAAK,CAACxxC,EAAGC,IAAMD,EAAIC,IAC7D,CACA,OAAO2iB,EAAMwuB,OAAOC,IACtB,CAGiBI,CAAkB7uB,EAAOtI,EAAK7L,MAC7C,IACI1R,EAAGsV,EAAMq/B,EAAM3b,EADf32B,EAAMwjB,EAAM+uB,QAEhB,MAAMC,EAAmB,KACV,QAATF,IAA4B,QAAVA,IAGlBr9B,GAAQ0hB,KACV32B,EAAMF,KAAKE,IAAIA,EAAKF,KAAKsW,IAAIk8B,EAAO3b,IAAS32B,IAE/C22B,EAAO2b,EAAI,EAEb,IAAK30C,EAAI,EAAGsV,EAAOgN,EAAOre,OAAQjE,EAAIsV,IAAQtV,EAC5C20C,EAAO9uB,EAAMzH,iBAAiBkE,EAAOtiB,IACrC60C,IAGF,IADA7b,OAAOp1B,EACF5D,EAAI,EAAGsV,EAAOuQ,EAAMpD,MAAMxe,OAAQjE,EAAIsV,IAAQtV,EACjD20C,EAAO9uB,EAAMivB,gBAAgB90C,GAC7B60C,IAEF,OAAOxyC,CACT,CA0DA,SAAS0yC,GAAWC,EAAOt9B,EAAMoyB,EAAQ9pC,GAMvC,OALI0E,EAAQswC,GAtBd,SAAuBA,EAAOt9B,EAAMoyB,EAAQ9pC,GAC1C,MAAMi1C,EAAanL,EAAOrT,MAAMue,EAAM,GAAIh1C,GACpCk1C,EAAWpL,EAAOrT,MAAMue,EAAM,GAAIh1C,GAClCqC,EAAMF,KAAKE,IAAI4yC,EAAYC,GAC3B9yC,EAAMD,KAAKC,IAAI6yC,EAAYC,GACjC,IAAIC,EAAW9yC,EACX+yC,EAAShzC,EACTD,KAAKsW,IAAIpW,GAAOF,KAAKsW,IAAIrW,KAC3B+yC,EAAW/yC,EACXgzC,EAAS/yC,GAEXqV,EAAKoyB,EAAO/rB,MAAQq3B,EACpB19B,EAAK29B,QAAU,CACbF,WACAC,SACA16B,MAAOu6B,EACPt6B,IAAKu6B,EACL7yC,MACAD,MAEJ,CAGIkzC,CAAcN,EAAOt9B,EAAMoyB,EAAQ9pC,GAEnC0X,EAAKoyB,EAAO/rB,MAAQ+rB,EAAOrT,MAAMue,EAAOh1C,GAEnC0X,CACT,CACA,SAAS69B,GAAsBh4B,EAAM+M,EAAM5P,EAAOiD,GAChD,MAAME,EAASN,EAAKM,OACdisB,EAASvsB,EAAKusB,OACdmF,EAASpxB,EAAOqxB,YAChBC,EAActxB,IAAWisB,EACzBtT,EAAS,GACf,IAAIx2B,EAAGsV,EAAMoC,EAAMs9B,EACnB,IAAKh1C,EAAI0a,EAAOpF,EAAOoF,EAAQiD,EAAO3d,EAAIsV,IAAQtV,EAChDg1C,EAAQ1qB,EAAKtqB,GACb0X,EAAO,CAAC,EACRA,EAAKmG,EAAOE,MAAQoxB,GAAetxB,EAAO4Y,MAAMwY,EAAOjvC,GAAIA,GAC3Dw2B,EAAOvf,KAAK89B,GAAWC,EAAOt9B,EAAMoyB,EAAQ9pC,IAE9C,OAAOw2B,CACT,CACA,SAASgf,GAAWC,GAClB,OAAOA,QAA8B7xC,IAApB6xC,EAAON,eAA4CvxC,IAAlB6xC,EAAOL,MAC3D,CAiCA,SAASM,GAAiBnuB,EAAYtR,EAASizB,EAAOxzB,GACpD,IAAIigC,EAAO1/B,EAAQ2/B,cACnB,MAAMxT,EAAM,CAAC,EACb,IAAKuT,EAEH,YADApuB,EAAWquB,cAAgBxT,GAG7B,IAAa,IAATuT,EAOF,YANApuB,EAAWquB,cAAgB,CACzB5tB,KAAK,EACLC,OAAO,EACPC,QAAQ,EACRC,MAAM,IAIV,MAAM0tB,EA1CR,SAAqBtuB,GACnB,IAAIrS,EAASwF,EAAOC,EAAKqN,EAAKE,EAiB9B,OAhBIX,EAAWuuB,YACb5gC,EAAUqS,EAAWymB,KAAOzmB,EAAWliB,EACvCqV,EAAQ,OACRC,EAAM,UAENzF,EAAUqS,EAAWymB,KAAOzmB,EAAW5Q,EACvC+D,EAAQ,SACRC,EAAM,OAEJzF,GACF8S,EAAM,MACNE,EAAS,UAETF,EAAM,QACNE,EAAS,OAEJ,CACLxN,QACAC,MACAzF,UACA8S,MACAE,SAEJ,CAiBuB6tB,CAAYxuB,GAC/B7M,EAAQm7B,EAAan7B,MACrBC,EAAMk7B,EAAal7B,IACnBzF,EAAU2gC,EAAa3gC,QACvB8S,EAAM6tB,EAAa7tB,IACnBE,EAAS2tB,EAAa3tB,OACX,WAATytB,GAAqBzM,IACvB3hB,EAAWyuB,oBAAqB,GAC3B9M,EAAMwB,MAAQ,KAAOh1B,EACxBigC,EAAO3tB,GACGkhB,EAAMyB,SAAW,KAAOj1B,EAClCigC,EAAOztB,GAEPka,EAAI6T,GAAU/tB,EAAQxN,EAAOC,EAAKzF,KAAY,EAC9CygC,EAAO3tB,IAGXoa,EAAI6T,GAAUN,EAAMj7B,EAAOC,EAAKzF,KAAY,EAC5CqS,EAAWquB,cAAgBxT,CAC7B,CACA,SAAS6T,GAAUN,EAAM1yC,EAAGC,EAAGgS,GAS/B,IAAcghC,EAAM1gC,EAAI2gC,EAFtB,OANIjhC,GAQkBihC,EAPCjzC,EACrByyC,EAAOS,GADPT,GAOUO,EAPEP,MAOIngC,EAPEvS,GAQCkzC,EAAKD,IAASC,EAAK3gC,EAAK0gC,EAPrBhzC,EAAGD,IAEzB0yC,EAAOS,GAAST,EAAM1yC,EAAGC,GAEpByyC,CACT,CAIA,SAASS,GAASp0C,EAAG0Y,EAAOC,GAC1B,MAAa,UAAN3Y,EAAgB0Y,EAAc,QAAN1Y,EAAc2Y,EAAM3Y,CACrD,CACA,SAASq0C,GAAiB9uB,EAAY+uB,EAAOxlC,GAC3C,IAAIylC,EAAgBD,EAAMC,cAC1BhvB,EAAWgvB,cAAkC,SAAlBA,EAAqC,IAAVzlC,EAAc,IAAO,EAAIylC,CACjF,CAhNA,GAAkB1vB,SAAW,CAAC,EAC9B,GAAkBmlB,mBAAqB,KACvC,GAAkBC,gBAAkB,KA+MpC,MAAM,WAAsB,GAC1B,kBAAA8C,CAAmBxxB,EAAM+M,EAAM5P,EAAOiD,GACpC,OAAO43B,GAAsBh4B,EAAM+M,EAAM5P,EAAOiD,EAClD,CACA,cAAAkxB,CAAetxB,EAAM+M,EAAM5P,EAAOiD,GAChC,OAAO43B,GAAsBh4B,EAAM+M,EAAM5P,EAAOiD,EAClD,CACA,eAAAmxB,CAAgBvxB,EAAM+M,EAAM5P,EAAOiD,GACjC,MAAME,EAASN,EAAKM,OAClBisB,EAASvsB,EAAKusB,OACV0M,EAAkB3kC,KAAK0kB,SAC3BkgB,EAAwBD,EAAgBlH,SACxCA,OAAqC,IAA1BmH,EAAmC,IAAMA,EACpDC,EAAwBF,EAAgBhH,SACxCA,OAAqC,IAA1BkH,EAAmC,IAAMA,EAChDC,EAA2B,MAAhB94B,EAAOE,KAAeuxB,EAAWE,EAC5CoH,EAA2B,MAAhB9M,EAAO/rB,KAAeuxB,EAAWE,EAC5ChZ,EAAS,GACf,IAAIx2B,EAAGsV,EAAMoC,EAAMzF,EACnB,IAAKjS,EAAI0a,EAAOpF,EAAOoF,EAAQiD,EAAO3d,EAAIsV,IAAQtV,EAChDiS,EAAMqY,EAAKtqB,GACX0X,EAAO,CAAC,EACRA,EAAKmG,EAAOE,MAAQF,EAAO4Y,MAAM7f,GAAiB3E,EAAK0kC,GAAW32C,GAClEw2B,EAAOvf,KAAK89B,GAAWn+B,GAAiB3E,EAAK2kC,GAAWl/B,EAAMoyB,EAAQ9pC,IAExE,OAAOw2B,CACT,CACA,qBAAAmZ,CAAsBh3B,EAAOkN,EAAO2Q,EAAQ0S,GAC1C2N,MAAMlH,sBAAsBh3B,EAAOkN,EAAO2Q,EAAQ0S,GAClD,MAAMuM,EAASjf,EAAO6e,QAClBI,GAAU5vB,IAAUhU,KAAKs4B,YAAYL,SACvCnxB,EAAMtW,IAAMF,KAAKE,IAAIsW,EAAMtW,IAAKozC,EAAOpzC,KACvCsW,EAAMvW,IAAMD,KAAKC,IAAIuW,EAAMvW,IAAKqzC,EAAOrzC,KAE3C,CACA,cAAAsuC,GACE,OAAO,CACT,CACA,gBAAAC,CAAiBj7B,GACf,MAAM6H,EAAO1L,KAAKs4B,YACZtsB,EAASN,EAAKM,OAClBisB,EAASvsB,EAAKusB,OACVtT,EAAS3kB,KAAK49B,UAAU/5B,GACxB+/B,EAASjf,EAAO6e,QAChBp0C,EAAQu0C,GAAWC,GAAU,IAAMA,EAAO/6B,MAAQ,KAAO+6B,EAAO96B,IAAM,IAAM,GAAKmvB,EAAO+G,iBAAiBra,EAAOsT,EAAO/rB,OAC7H,MAAO,CACL6yB,MAAO,GAAK/yB,EAAOgzB,iBAAiBra,EAAO3Y,EAAOE,OAClD9c,QAEJ,CACA,UAAAirC,GACEr6B,KAAK+5B,qBAAsB,EAC3BiL,MAAM3K,aACOr6B,KAAKs4B,YACbjB,MAAQr3B,KAAK46B,aAAavD,KACjC,CACA,MAAAhC,CAAO/lC,GACL,MAAMoc,EAAO1L,KAAKs4B,YAClBt4B,KAAK4hC,eAAel2B,EAAK+M,KAAM,EAAG/M,EAAK+M,KAAKrmB,OAAQ9C,EACtD,CACA,cAAAsyC,CAAeqD,EAAMp8B,EAAOiD,EAAOxc,GACjC,MAAMusC,EAAiB,UAATvsC,EACRuU,EAAQ7D,KAAK6D,MACjBo0B,EAASj4B,KAAKs4B,YAAYL,OACtBkE,EAAOlE,EAAOiN,eACdjB,EAAahM,EAAOkN,eACpBC,EAAQplC,KAAKqlC,YACbC,EAAwBtlC,KAAK0gC,kBAAkB73B,EAAOvZ,GAC1DkxC,EAAgB8E,EAAsB9E,cACtCD,EAAiB+E,EAAsB/E,eACzC,IAAK,IAAIpyC,EAAI0a,EAAO1a,EAAI0a,EAAQiD,EAAO3d,IAAK,CAC1C,MAAMw2B,EAAS3kB,KAAK49B,UAAUzvC,GACxBo3C,EAAU1J,GAAS75B,EAAc2iB,EAAOsT,EAAO/rB,OAAS,CAC5DiwB,OACAqJ,KAAMrJ,GACJn8B,KAAKylC,yBAAyBt3C,GAC5Bu3C,EAAU1lC,KAAK2lC,yBAAyBx3C,EAAGi3C,GAC3C/N,GAAS1S,EAAO4T,SAAW,CAAC,GAAGN,EAAO/rB,MACtCwJ,EAAa,CACjBuuB,aACA9H,KAAMoJ,EAAQpJ,KACdgI,oBAAqB9M,GAASsM,GAAWhf,EAAO6e,UAAY3/B,IAAUwzB,EAAMwB,MAAQh1B,IAAUwzB,EAAMyB,QACpGtlC,EAAGywC,EAAasB,EAAQC,KAAOE,EAAQE,OACvC9gC,EAAGm/B,EAAayB,EAAQE,OAASL,EAAQC,KACzCtrB,OAAQ+pB,EAAayB,EAAQ9/B,KAAOtV,KAAKsW,IAAI2+B,EAAQ3/B,MACrD2R,MAAO0sB,EAAa3zC,KAAKsW,IAAI2+B,EAAQ3/B,MAAQ8/B,EAAQ9/B,MAEnD26B,IACF7qB,EAAWtR,QAAUo8B,GAAiBxgC,KAAKu/B,0BAA0BpxC,EAAG82C,EAAK92C,GAAGwnB,OAAS,SAAWrmB,IAEtG,MAAM8U,EAAUsR,EAAWtR,SAAW6gC,EAAK92C,GAAGiW,QAC9Cy/B,GAAiBnuB,EAAYtR,EAASizB,EAAOxzB,GAC7C2gC,GAAiB9uB,EAAYtR,EAASghC,EAAMnmC,OAC5Ce,KAAK8gC,cAAcmE,EAAK92C,GAAIA,EAAGunB,EAAYpmB,EAC7C,CACF,CACA,UAAAu2C,CAAWh8B,EAAM21B,GACf,MAAMxzB,EAAShM,KAAKs4B,YAAYtsB,OAC1BkrB,EAAWlrB,EAAOmsB,wBAAwBn4B,KAAKy5B,OAAOtW,QAAOzX,GAAQA,EAAK2sB,WAAWj0B,QAAQ0hC,UAC7FpO,EAAU1rB,EAAO5H,QAAQszB,QACzBE,EAAS,GACTmO,EAAWr6B,IACf,MAAMiZ,EAASjZ,EAAK2sB,WAAWuF,UAAU4B,GACnCp+B,EAAMujB,GAAUA,EAAOjZ,EAAKusB,OAAO/rB,MACzC,GAAIlK,EAAcZ,IAAQiG,MAAMjG,GAC9B,OAAO,CACT,EAEF,IAAK,MAAMsK,KAAQwrB,EACjB,SAAkBnlC,IAAdytC,IAA2BuG,EAASr6B,QAGxB,IAAZgsB,IAAqD,IAAhCE,EAAO1zB,QAAQwH,EAAK2rB,aAA6BtlC,IAAZ2lC,QAAwC3lC,IAAf2Z,EAAK2rB,QAC1FO,EAAOxyB,KAAKsG,EAAK2rB,OAEf3rB,EAAK7H,QAAUgG,GACjB,MAMJ,OAHK+tB,EAAOxlC,QACVwlC,EAAOxyB,UAAKrT,GAEP6lC,CACT,CACA,cAAAoO,CAAeniC,GACb,OAAO7D,KAAK6lC,gBAAW9zC,EAAW8R,GAAOzR,MAC3C,CACA,cAAA6zC,CAAeriC,EAAclV,EAAM8wC,GACjC,MAAM5H,EAAS53B,KAAK6lC,WAAWjiC,EAAc47B,GACvC37B,OAAiB9R,IAATrD,EAAqBkpC,EAAO1zB,QAAQxV,IAAS,EAC3D,OAAkB,IAAXmV,EAAe+zB,EAAOxlC,OAAS,EAAIyR,CAC5C,CACA,SAAAwhC,GACE,MAAMxoB,EAAO7c,KAAKoE,QACZsH,EAAO1L,KAAKs4B,YACZtsB,EAASN,EAAKM,OACdk6B,EAAS,GACf,IAAI/3C,EAAGsV,EACP,IAAKtV,EAAI,EAAGsV,EAAOiI,EAAK+M,KAAKrmB,OAAQjE,EAAIsV,IAAQtV,EAC/C+3C,EAAO9gC,KAAK4G,EAAOO,iBAAiBvM,KAAK49B,UAAUzvC,GAAG6d,EAAOE,MAAO/d,IAEtE,MAAMg4C,EAAetpB,EAAKspB,aAE1B,MAAO,CACL31C,IAFU21C,GAAgB5D,GAAqB72B,GAG/Cw6B,SACAr9B,MAAOmD,EAAOo6B,YACdt9B,IAAKkD,EAAOq6B,UACZC,WAAYtmC,KAAKgmC,iBACjBhyB,MAAOhI,EACP85B,QAASjpB,EAAKipB,QACd7mC,MAAOknC,EAAe,EAAItpB,EAAK0pB,mBAAqB1pB,EAAK2pB,cAE7D,CACA,wBAAAf,CAAyB5hC,GACvB,MAAM4iC,EAAoBzmC,KAAKs4B,YAC7BL,EAASwO,EAAkBxO,OAC3BsC,EAAWkM,EAAkBlM,SAC7B32B,EAAe6iC,EAAkB5iC,MACjC6iC,EAAgB1mC,KAAKoE,QACrBuiC,EAAYD,EAAcvK,KAC1ByK,EAAeF,EAAcE,aACzBC,EAAaF,GAAa,EAC1BhiB,EAAS3kB,KAAK49B,UAAU/5B,GACxB+/B,EAASjf,EAAO6e,QAChBsD,EAAWnD,GAAWC,GAC5B,IAGI4B,EAAM5/B,EAHNxW,EAAQu1B,EAAOsT,EAAO/rB,MACtBrD,EAAQ,EACRzW,EAASmoC,EAAWv6B,KAAKo3B,WAAWa,EAAQtT,EAAQ4V,GAAYnrC,EAEhEgD,IAAWhD,IACbyZ,EAAQzW,EAAShD,EACjBgD,EAAShD,GAEP03C,IACF13C,EAAQw0C,EAAON,SACflxC,EAASwxC,EAAOL,OAASK,EAAON,SAClB,IAAVl0C,GAAeqX,GAAKrX,KAAWqX,GAAKm9B,EAAOL,UAC7C16B,EAAQ,GAEVA,GAASzZ,GAEX,MAAMg0C,EAAcphC,EAAc2kC,IAAeG,EAAuBj+B,EAAZ89B,EAC5D,IAAIxK,EAAOlE,EAAO1rB,iBAAiB62B,GAOnC,GALEoC,EADExlC,KAAK6Q,MAAMk2B,kBAAkBljC,GACxBo0B,EAAO1rB,iBAAiB1D,EAAQzW,GAEhC+pC,EAETv2B,EAAO4/B,EAAOrJ,EACV7rC,KAAKsW,IAAIhB,GAAQghC,EAAc,CACjChhC,EAtRN,SAAiBA,EAAMqyB,EAAQ4O,GAC7B,OAAa,IAATjhC,EACKa,GAAKb,IAENqyB,EAAOkN,eAAiB,GAAK,IAAMlN,EAAOznC,KAAOq2C,EAAa,GAAK,EAC7E,CAiRaG,CAAQphC,EAAMqyB,EAAQ4O,GAAcD,EACvCx3C,IAAUy3C,IACZ1K,GAAQv2B,EAAO,GAEjB,MAAMqhC,EAAahP,EAAOiP,mBAAmB,GACvCC,EAAWlP,EAAOiP,mBAAmB,GACrC12C,EAAMF,KAAKE,IAAIy2C,EAAYE,GAC3B52C,EAAMD,KAAKC,IAAI02C,EAAYE,GACjChL,EAAO7rC,KAAKC,IAAID,KAAKE,IAAI2rC,EAAM5rC,GAAMC,GACrCg1C,EAAOrJ,EAAOv2B,EACV20B,IAAauM,IACfniB,EAAO4T,QAAQN,EAAO/rB,MAAM6sB,cAAcn1B,GAAgBq0B,EAAOmP,iBAAiB5B,GAAQvN,EAAOmP,iBAAiBjL,GAEtH,CACA,GAAIA,IAASlE,EAAO1rB,iBAAiBs6B,GAAa,CAChD,MAAMQ,EAAW5gC,GAAKb,GAAQqyB,EAAOqP,qBAAqBT,GAAc,EACxE1K,GAAQkL,EACRzhC,GAAQyhC,CACV,CACA,MAAO,CACLzhC,OACAu2B,OACAqJ,OACAI,OAAQJ,EAAO5/B,EAAO,EAE1B,CACA,wBAAA+/B,CAAyB9hC,EAAOuhC,GAC9B,MAAMpxB,EAAQoxB,EAAMpxB,MACd5P,EAAUpE,KAAKoE,QACf2hC,EAAW3hC,EAAQ2hC,SACnBwB,EAAkB9kC,EAAe2B,EAAQmjC,gBAAiBC,KAChE,IAAI5B,EAAQhgC,EACZ,GAAIw/B,EAAMU,QAAS,CACjB,MAAMQ,EAAaP,EAAW/lC,KAAKgmC,eAAeniC,GAASuhC,EAAMkB,WAC3Dx/B,EAAiC,SAAzB1C,EAAQ+hC,aA3X5B,SAAmCtiC,EAAOuhC,EAAOhhC,EAASkiC,GACxD,MAAMJ,EAASd,EAAMc,OACfpD,EAAOoD,EAAOriC,GACpB,IAAIsjB,EAAOtjB,EAAQ,EAAIqiC,EAAOriC,EAAQ,GAAK,KACvCwhB,EAAOxhB,EAAQqiC,EAAO9zC,OAAS,EAAI8zC,EAAOriC,EAAQ,GAAK,KAC3D,MAAM4jC,EAAUrjC,EAAQmiC,mBACX,OAATpf,IACFA,EAAO2b,GAAiB,OAATzd,EAAgB+f,EAAMt8B,IAAMs8B,EAAMv8B,MAAQwc,EAAOyd,IAErD,OAATzd,IACFA,EAAOyd,EAAOA,EAAO3b,GAEvB,MAAMte,EAAQi6B,GAAQA,EAAOxyC,KAAKE,IAAI22B,EAAM9B,IAAS,EAAIoiB,EAEzD,MAAO,CACLC,MAFWp3C,KAAKsW,IAAIye,EAAO8B,GAAQ,EAAIsgB,EAEzBnB,EACdrnC,MAAOmF,EAAQoiC,cACf39B,QAEJ,CAwWsD8+B,CAA0B9jC,EAAOuhC,EAAOhhC,EAASkiC,GA3YvG,SAAkCziC,EAAOuhC,EAAOhhC,EAASkiC,GACvD,MAAMsB,EAAYxjC,EAAQ+hC,aAC1B,IAAIvgC,EAAM3G,EAQV,OAPI+C,EAAc4lC,IAChBhiC,EAAOw/B,EAAM50C,IAAM4T,EAAQmiC,mBAC3BtnC,EAAQmF,EAAQoiC,gBAEhB5gC,EAAOgiC,EAAYtB,EACnBrnC,EAAQ,GAEH,CACLyoC,MAAO9hC,EAAO0gC,EACdrnC,QACA4J,MAAOu8B,EAAMc,OAAOriC,GAAS+B,EAAO,EAExC,CA4XqHiiC,CAAyBhkC,EAAOuhC,EAAOhhC,EAASkiC,GACzJwB,EAAa9nC,KAAKimC,eAAejmC,KAAK6D,MAAO7D,KAAKs4B,YAAYjB,MAAO0O,EAAWliC,OAAQ9R,GAC9F6zC,EAAS9+B,EAAM+B,MAAQ/B,EAAM4gC,MAAQI,EAAahhC,EAAM4gC,MAAQ,EAChE9hC,EAAOtV,KAAKE,IAAI+2C,EAAiBzgC,EAAM4gC,MAAQ5gC,EAAM7H,MACvD,MACE2mC,EAAS5xB,EAAMzH,iBAAiBvM,KAAK49B,UAAU/5B,GAAOmQ,EAAM9H,MAAOrI,GACnE+B,EAAOtV,KAAKE,IAAI+2C,EAAiBnC,EAAM50C,IAAM40C,EAAMnmC,OAErD,MAAO,CACLk9B,KAAMyJ,EAAShgC,EAAO,EACtB4/B,KAAMI,EAAShgC,EAAO,EACtBggC,SACAhgC,OAEJ,CACA,IAAAstB,GACE,MAAMxnB,EAAO1L,KAAKs4B,YACZL,EAASvsB,EAAKusB,OACd8P,EAAQr8B,EAAK+M,KACbhV,EAAOskC,EAAM31C,OACnB,IAAIjE,EAAI,EACR,KAAOA,EAAIsV,IAAQtV,EACsB,OAAnC6R,KAAK49B,UAAUzvC,GAAG8pC,EAAO/rB,OAC3B67B,EAAM55C,GAAG+kC,KAAKlzB,KAAKkX,KAGzB,EAEF,GAAcnV,GAAK,MACnB,GAAciT,SAAW,CACvBmlB,oBAAoB,EACpBC,gBAAiB,MACjBmM,mBAAoB,GACpBC,cAAe,GACfV,SAAS,EACThwB,WAAY,CACVrG,QAAS,CACP5P,KAAM,SACN6V,WAAY,CAAC,IAAK,IAAK,OAAQ,QAAS,aAI9C,GAAc/D,UAAY,CACxBsC,OAAQ,CACN+zB,QAAS,CACPnoC,KAAM,WACN2W,QAAQ,EACRI,KAAM,CACJJ,QAAQ,IAGZyxB,QAAS,CACPpoC,KAAM,SACN4W,aAAa,KAInB,MAAM,WAAyB,GAC7B,UAAA4jB,GACEr6B,KAAK+5B,qBAAsB,EAC3BiL,MAAM3K,YACR,CACA,kBAAA6C,CAAmBxxB,EAAM+M,EAAM5P,EAAOiD,GACpC,MAAM6Y,EAASqgB,MAAM9H,mBAAmBxxB,EAAM+M,EAAM5P,EAAOiD,GAC3D,IAAK,IAAI3d,EAAI,EAAGA,EAAIw2B,EAAOvyB,OAAQjE,IACjCw2B,EAAOx2B,GAAGq1C,QAAUxjC,KAAKu/B,0BAA0BpxC,EAAI0a,GAAO+R,OAEhE,OAAO+J,CACT,CACA,cAAAqY,CAAetxB,EAAM+M,EAAM5P,EAAOiD,GAChC,MAAM6Y,EAASqgB,MAAMhI,eAAetxB,EAAM+M,EAAM5P,EAAOiD,GACvD,IAAK,IAAI3d,EAAI,EAAGA,EAAIw2B,EAAOvyB,OAAQjE,IAAK,CACtC,MAAM0X,EAAO4S,EAAK5P,EAAQ1a,GAC1Bw2B,EAAOx2B,GAAGq1C,QAAU/gC,EAAeoD,EAAK,GAAI7F,KAAKu/B,0BAA0BpxC,EAAI0a,GAAO+R,OACxF,CACA,OAAO+J,CACT,CACA,eAAAsY,CAAgBvxB,EAAM+M,EAAM5P,EAAOiD,GACjC,MAAM6Y,EAASqgB,MAAM/H,gBAAgBvxB,EAAM+M,EAAM5P,EAAOiD,GACxD,IAAK,IAAI3d,EAAI,EAAGA,EAAIw2B,EAAOvyB,OAAQjE,IAAK,CACtC,MAAM0X,EAAO4S,EAAK5P,EAAQ1a,GAC1Bw2B,EAAOx2B,GAAGq1C,QAAU/gC,EAAeoD,GAAQA,EAAK5W,IAAM4W,EAAK5W,EAAG+Q,KAAKu/B,0BAA0BpxC,EAAI0a,GAAO+R,OAC1G,CACA,OAAO+J,CACT,CACA,cAAAka,GACE,MAAMpmB,EAAOzY,KAAKs4B,YAAY7f,KAC9B,IAAIloB,EAAM,EACV,IAAK,IAAIpC,EAAIsqB,EAAKrmB,OAAS,EAAGjE,GAAK,IAAKA,EACtCoC,EAAMD,KAAKC,IAAIA,EAAKkoB,EAAKtqB,GAAGyX,KAAK5F,KAAKu/B,0BAA0BpxC,IAAM,GAExE,OAAOoC,EAAM,GAAKA,CACpB,CACA,gBAAAuuC,CAAiBj7B,GACf,MAAM6H,EAAO1L,KAAKs4B,YACZ8E,EAASp9B,KAAK6Q,MAAM4H,KAAK2kB,QAAU,GACnC3wB,EAASf,EAAKe,OAClBC,EAAShB,EAAKgB,OACViY,EAAS3kB,KAAK49B,UAAU/5B,GACxBrQ,EAAIiZ,EAAOuyB,iBAAiBra,EAAOnxB,GACnCsR,EAAI4H,EAAOsyB,iBAAiBra,EAAO7f,GACnC7V,EAAI01B,EAAO6e,QACjB,MAAO,CACLzE,MAAO3B,EAAOv5B,IAAU,GACxBzU,MAAO,IAAMoE,EAAI,KAAOsR,GAAK7V,EAAI,KAAOA,EAAI,IAAM,IAEtD,CACA,MAAAomC,CAAO/lC,GACL,MAAMqc,EAAS3L,KAAKs4B,YAAY7f,KAChCzY,KAAK4hC,eAAej2B,EAAQ,EAAGA,EAAOvZ,OAAQ9C,EAChD,CACA,cAAAsyC,CAAej2B,EAAQ9C,EAAOiD,EAAOxc,GACnC,MAAMusC,EAAiB,UAATvsC,EACR44C,EAAqBloC,KAAKs4B,YAC9BtsB,EAASk8B,EAAmBl8B,OAC5BisB,EAASiQ,EAAmBjQ,OACxBkQ,EAAyBnoC,KAAK0gC,kBAAkB73B,EAAOvZ,GAC3DkxC,EAAgB2H,EAAuB3H,cACvCD,EAAiB4H,EAAuB5H,eACpC/H,EAAQxsB,EAAOE,KACfusB,EAAQR,EAAO/rB,KACrB,IAAK,IAAI/d,EAAI0a,EAAO1a,EAAI0a,EAAQiD,EAAO3d,IAAK,CAC1C,MAAMytB,EAAQjQ,EAAOxd,GACfw2B,GAAUkX,GAAS77B,KAAK49B,UAAUzvC,GAClCunB,EAAa,CAAC,EACdgR,EAAShR,EAAW8iB,GAASqD,EAAQ7vB,EAAOk7B,mBAAmB,IAAOl7B,EAAOO,iBAAiBoY,EAAO6T,IACrG7R,EAASjR,EAAW+iB,GAASoD,EAAQ5D,EAAOiN,eAAiBjN,EAAO1rB,iBAAiBoY,EAAO8T,IAClG/iB,EAAWqP,KAAO1d,MAAMqf,IAAWrf,MAAMsf,GACrC4Z,IACF7qB,EAAWtR,QAAUo8B,GAAiBxgC,KAAKu/B,0BAA0BpxC,EAAGytB,EAAMjG,OAAS,SAAWrmB,GAC9FusC,IACFnmB,EAAWtR,QAAQwW,OAAS,IAGhC5a,KAAK8gC,cAAcllB,EAAOztB,EAAGunB,EAAYpmB,EAC3C,CACF,CACA,yBAAAiwC,CAA0B17B,EAAOvU,GAC/B,MAAMq1B,EAAS3kB,KAAK49B,UAAU/5B,GAC9B,IAAI4M,EAASu0B,MAAMzF,0BAA0B17B,EAAOvU,GAChDmhB,EAAO6lB,UACT7lB,EAAS5hB,OAAOwQ,OAAO,CAAC,EAAGoR,EAAQ,CACjC6lB,SAAS,KAGb,MAAM1b,EAASnK,EAAOmK,OAKtB,MAJa,WAATtrB,IACFmhB,EAAOmK,OAAS,GAElBnK,EAAOmK,QAAUnY,EAAekiB,GAAUA,EAAO6e,QAAS5oB,GACnDnK,CACT,EAEF,GAAiB1O,GAAK,SACtB,GAAiBiT,SAAW,CAC1BmlB,oBAAoB,EACpBC,gBAAiB,QACjBtkB,WAAY,CACVrG,QAAS,CACP5P,KAAM,SACN6V,WAAY,CAAC,IAAK,IAAK,cAAe,aAI5C,GAAiB/D,UAAY,CAC3BsC,OAAQ,CACNzgB,EAAG,CACDqM,KAAM,UAERiF,EAAG,CACDjF,KAAM,YAkCZ,MAAM,WAA2B,GAC/B,WAAAD,CAAYiR,EAAOjN,GACjBohC,MAAMn0B,EAAOjN,GACb5D,KAAK+5B,qBAAsB,EAC3B/5B,KAAKooC,iBAAcr2C,EACnBiO,KAAKqoC,iBAAct2C,EACnBiO,KAAKupB,aAAUx3B,EACfiO,KAAKwpB,aAAUz3B,CACjB,CACA,UAAAuoC,GAAc,CACd,KAAA1V,CAAM/b,EAAOiD,GACX,MAAM2M,EAAOzY,KAAK46B,aAAaniB,KACzB/M,EAAO1L,KAAKs4B,YAClB,IAAsB,IAAlBt4B,KAAK0kB,SACPhZ,EAAKO,QAAUwM,MACV,CACL,IAMItqB,EAAGsV,EANH9U,EAASR,IAAMsqB,EAAKtqB,GACxB,GAAIgU,EAASsW,EAAK5P,IAAS,CACzB,MAAM4b,EAAqBzkB,KAAK0kB,SAASh1B,IACvCA,OAA6B,IAAvB+0B,EAAgC,QAAUA,EAClD91B,EAASR,IAAM4W,GAAiB0T,EAAKtqB,GAAIuB,EAC3C,CAEA,IAAKvB,EAAI0a,EAAOpF,EAAOoF,EAAQiD,EAAO3d,EAAIsV,IAAQtV,EAChDud,EAAKO,QAAQ9d,GAAKQ,EAAOR,EAE7B,CACF,CACA,YAAAm6C,GACE,OAAO9gC,GAAUxH,KAAKoE,QAAQuW,SAAW,GAC3C,CACA,iBAAA4tB,GACE,OAAO/gC,GAAUxH,KAAKoE,QAAQokC,cAChC,CACA,mBAAAC,GACE,IAAIj4C,EAAMwV,GACNzV,GAAOyV,GACX,IAAK,IAAI7X,EAAI,EAAGA,EAAI6R,KAAK6Q,MAAM4H,KAAKnG,SAASlgB,SAAUjE,EACrD,GAAI6R,KAAK6Q,MAAM63B,iBAAiBv6C,IAAM6R,KAAK6Q,MAAM6qB,eAAevtC,GAAG0R,OAASG,KAAKy5B,MAAO,CACtF,MAAMpB,EAAar4B,KAAK6Q,MAAM6qB,eAAevtC,GAAGkqC,WAC1C1d,EAAW0d,EAAWiQ,eACtBE,EAAgBnQ,EAAWkQ,oBACjC/3C,EAAMF,KAAKE,IAAIA,EAAKmqB,GACpBpqB,EAAMD,KAAKC,IAAIA,EAAKoqB,EAAW6tB,EACjC,CAEF,MAAO,CACL7tB,SAAUnqB,EACVg4C,cAAej4C,EAAMC,EAEzB,CACA,MAAA6kC,CAAO/lC,GACL,MACM+vC,EADQr/B,KAAK6Q,MACKwuB,UAClB3zB,EAAO1L,KAAKs4B,YACZqQ,EAAOj9B,EAAK+M,KACZmwB,EAAU5oC,KAAK6oC,oBAAsB7oC,KAAK8oC,aAAaH,GAAQ3oC,KAAKoE,QAAQwkC,QAC5EG,EAAUz4C,KAAKC,KAAKD,KAAKE,IAAI6uC,EAAU9nB,MAAO8nB,EAAUnlB,QAAU0uB,GAAW,EAAG,GAChFI,EAAS14C,KAAKE,KD7tDFpB,EC6tDmB4Q,KAAKoE,QAAQ4kC,OD7tDzBrmC,EC6tDiComC,ED7tDF,kBAAV35C,GAAsBA,EAAMwT,SAAS,KAAOC,WAAWzT,GAAS,KAAOA,EAAQuT,GC6tDzD,GD7tDnD,IAACvT,EAAOuT,EC8tDzB,MAAMsmC,EAAcjpC,KAAKkpC,eAAelpC,KAAK6D,OACvCslC,EAAwBnpC,KAAKyoC,sBACjCD,EAAgBW,EAAsBX,cAElCY,EA7FV,SAA2BzuB,EAAU6tB,EAAeQ,GAClD,IAAIK,EAAS,EACTC,EAAS,EACT/f,EAAU,EACVC,EAAU,EACd,GAAIgf,EAAgBxiC,GAAK,CACvB,MAAMujC,EAAa5uB,EACb6uB,EAAWD,EAAaf,EACxBiB,EAASn5C,KAAK+d,IAAIk7B,GAClBG,EAASp5C,KAAK8c,IAAIm8B,GAClBI,EAAOr5C,KAAK+d,IAAIm7B,GAChBI,EAAOt5C,KAAK8c,IAAIo8B,GAChBK,EAAU,CAACzhC,EAAOhX,EAAGC,IAAMuX,GAAcR,EAAOmhC,EAAYC,GAAU,GAAQ,EAAIl5C,KAAKC,IAAIa,EAAGA,EAAI43C,EAAQ33C,EAAGA,EAAI23C,GACjHc,EAAU,CAAC1hC,EAAOhX,EAAGC,IAAMuX,GAAcR,EAAOmhC,EAAYC,GAAU,IAAS,EAAIl5C,KAAKE,IAAIY,EAAGA,EAAI43C,EAAQ33C,EAAGA,EAAI23C,GAClHe,EAAOF,EAAQ,EAAGJ,EAAQE,GAC1BK,EAAOH,EAAQxjC,GAASqjC,EAAQE,GAChCK,EAAOH,EAAQ/jC,GAAI0jC,EAAQE,GAC3BO,EAAOJ,EAAQ/jC,GAAKM,GAASqjC,EAAQE,GAC3CP,GAAUU,EAAOE,GAAQ,EACzBX,GAAUU,EAAOE,GAAQ,EACzB3gB,IAAYwgB,EAAOE,GAAQ,EAC3BzgB,IAAYwgB,EAAOE,GAAQ,CAC7B,CACA,MAAO,CACLb,SACAC,SACA/f,UACAC,UAEJ,CAgE+B2gB,CADdhB,EAAsBxuB,SACoB6tB,EAAeQ,GACpEK,EAASD,EAAmBC,OAC5BC,EAASF,EAAmBE,OAC5B/f,EAAU6f,EAAmB7f,QAC7BC,EAAU4f,EAAmB5f,QACzB7L,GAAY0hB,EAAU9nB,MAAQqxB,GAAWS,EACzCjf,GAAaiV,EAAUnlB,OAAS0uB,GAAWU,EAC3Cc,EAAY95C,KAAKC,IAAID,KAAKE,IAAImtB,EAAUyM,GAAa,EAAG,GACxDie,EAAc3lC,EAAY1C,KAAKoE,QAAQwW,OAAQwvB,GAE/CC,GAAgBhC,EADF/3C,KAAKC,IAAI83C,EAAcW,EAAQ,IACAhpC,KAAKsqC,gCACxDtqC,KAAKupB,QAAUA,EAAU8e,EACzBroC,KAAKwpB,QAAUA,EAAU6e,EACzB38B,EAAK6+B,MAAQvqC,KAAKwqC,iBAClBxqC,KAAKqoC,YAAcA,EAAcgC,EAAerqC,KAAKyqC,qBAAqBzqC,KAAK6D,OAC/E7D,KAAKooC,YAAc93C,KAAKC,IAAIyP,KAAKqoC,YAAcgC,EAAepB,EAAa,GAC3EjpC,KAAK4hC,eAAe+G,EAAM,EAAGA,EAAKv2C,OAAQ9C,EAC5C,CACA,cAAAo7C,CAAev8C,EAAG0tC,GAChB,MAAMhf,EAAO7c,KAAKoE,QACZsH,EAAO1L,KAAKs4B,YACZkQ,EAAgBxoC,KAAKuoC,oBAC3B,OAAI1M,GAAShf,EAAK1K,UAAUw4B,gBAAkB3qC,KAAK6Q,MAAMk2B,kBAAkB54C,IAA0B,OAApBud,EAAKO,QAAQ9d,IAAeud,EAAK+M,KAAKtqB,GAAGiwC,OACjH,EAEFp+B,KAAK4qC,uBAAuBl/B,EAAKO,QAAQ9d,GAAKq6C,EAAgBxiC,GACvE,CACA,cAAA47B,CAAe+G,EAAM9/B,EAAOiD,EAAOxc,GACjC,MAAMusC,EAAiB,UAATvsC,EACRuhB,EAAQ7Q,KAAK6Q,MACbwuB,EAAYxuB,EAAMwuB,UAElBwL,EADOh6B,EAAMzM,QACQ+N,UACrB24B,GAAWzL,EAAU/oB,KAAO+oB,EAAUjpB,OAAS,EAC/C20B,GAAW1L,EAAUlpB,IAAMkpB,EAAUhpB,QAAU,EAC/C20B,EAAenP,GAASgP,EAAcG,aACtC5C,EAAc4C,EAAe,EAAIhrC,KAAKooC,YACtCC,EAAc2C,EAAe,EAAIhrC,KAAKqoC,YACtC4C,EAAyBjrC,KAAK0gC,kBAAkB73B,EAAOvZ,GAC3DkxC,EAAgByK,EAAuBzK,cACvCD,EAAiB0K,EAAuB1K,eAC1C,IACIpyC,EADAo7C,EAAavpC,KAAKsoC,eAEtB,IAAKn6C,EAAI,EAAGA,EAAI0a,IAAS1a,EACvBo7C,GAAcvpC,KAAK0qC,eAAev8C,EAAG0tC,GAEvC,IAAK1tC,EAAI0a,EAAO1a,EAAI0a,EAAQiD,IAAS3d,EAAG,CACtC,MAAMq6C,EAAgBxoC,KAAK0qC,eAAev8C,EAAG0tC,GACvC3gB,EAAMytB,EAAKx6C,GACXunB,EAAa,CACjBliB,EAAGs3C,EAAU9qC,KAAKupB,QAClBzkB,EAAGimC,EAAU/qC,KAAKwpB,QAClB+f,aACAC,SAAUD,EAAaf,EACvBA,gBACAH,cACAD,eAEE7H,IACF7qB,EAAWtR,QAAUo8B,GAAiBxgC,KAAKu/B,0BAA0BpxC,EAAG+sB,EAAIvF,OAAS,SAAWrmB,IAElGi6C,GAAcf,EACdxoC,KAAK8gC,cAAc5lB,EAAK/sB,EAAGunB,EAAYpmB,EACzC,CACF,CACA,cAAAk7C,GACE,MAAM9+B,EAAO1L,KAAKs4B,YACZ4S,EAAWx/B,EAAK+M,KACtB,IACItqB,EADAo8C,EAAQ,EAEZ,IAAKp8C,EAAI,EAAGA,EAAI+8C,EAAS94C,OAAQjE,IAAK,CACpC,MAAMiB,EAAQsc,EAAKO,QAAQ9d,GACb,OAAViB,GAAmBiY,MAAMjY,KAAU4Q,KAAK6Q,MAAMk2B,kBAAkB54C,IAAO+8C,EAAS/8C,GAAGiwC,SACrFmM,GAASj6C,KAAKsW,IAAIxX,GAEtB,CACA,OAAOm7C,CACT,CACA,sBAAAK,CAAuBx7C,GACrB,MAAMm7C,EAAQvqC,KAAKs4B,YAAYiS,MAC/B,OAAIA,EAAQ,IAAMljC,MAAMjY,GACf4W,IAAO1V,KAAKsW,IAAIxX,GAASm7C,GAE3B,CACT,CACA,gBAAAzL,CAAiBj7B,GACf,MAAM6H,EAAO1L,KAAKs4B,YACZznB,EAAQ7Q,KAAK6Q,MACbusB,EAASvsB,EAAM4H,KAAK2kB,QAAU,GAC9BhuC,EAAQygB,GAAanE,EAAKO,QAAQpI,GAAQgN,EAAMzM,QAAQ2L,QAC9D,MAAO,CACLgvB,MAAO3B,EAAOv5B,IAAU,GACxBzU,QAEJ,CACA,iBAAAy5C,CAAkBF,GAChB,IAAIp4C,EAAM,EACV,MAAMsgB,EAAQ7Q,KAAK6Q,MACnB,IAAI1iB,EAAGsV,EAAMiI,EAAM2sB,EAAYj0B,EAC/B,IAAKukC,EACH,IAAKx6C,EAAI,EAAGsV,EAAOoN,EAAM4H,KAAKnG,SAASlgB,OAAQjE,EAAIsV,IAAQtV,EACzD,GAAI0iB,EAAM63B,iBAAiBv6C,GAAI,CAC7Bud,EAAOmF,EAAM6qB,eAAevtC,GAC5Bw6C,EAAOj9B,EAAK+M,KACZ4f,EAAa3sB,EAAK2sB,WAClB,KACF,CAGJ,IAAKsQ,EACH,OAAO,EAET,IAAKx6C,EAAI,EAAGsV,EAAOklC,EAAKv2C,OAAQjE,EAAIsV,IAAQtV,EAC1CiW,EAAUi0B,EAAWkH,0BAA0BpxC,GACnB,UAAxBiW,EAAQ+mC,cACV56C,EAAMD,KAAKC,IAAIA,EAAK6T,EAAQqX,aAAe,EAAGrX,EAAQgnC,kBAAoB,IAG9E,OAAO76C,CACT,CACA,YAAAu4C,CAAaH,GACX,IAAIp4C,EAAM,EACV,IAAK,IAAIpC,EAAI,EAAGsV,EAAOklC,EAAKv2C,OAAQjE,EAAIsV,IAAQtV,EAAG,CACjD,MAAMiW,EAAUpE,KAAKu/B,0BAA0BpxC,GAC/CoC,EAAMD,KAAKC,IAAIA,EAAK6T,EAAQoS,QAAU,EAAGpS,EAAQinC,aAAe,EAClE,CACA,OAAO96C,CACT,CACA,oBAAAk6C,CAAqB7mC,GACnB,IAAI0nC,EAAmB,EACvB,IAAK,IAAIn9C,EAAI,EAAGA,EAAIyV,IAAgBzV,EAC9B6R,KAAK6Q,MAAM63B,iBAAiBv6C,KAC9Bm9C,GAAoBtrC,KAAKkpC,eAAe/6C,IAG5C,OAAOm9C,CACT,CACA,cAAApC,CAAetlC,GACb,OAAOtT,KAAKC,IAAIkS,EAAezC,KAAK6Q,MAAM4H,KAAKnG,SAAS1O,GAAcnD,OAAQ,GAAI,EACpF,CACA,6BAAA6pC,GACE,OAAOtqC,KAAKyqC,qBAAqBzqC,KAAK6Q,MAAM4H,KAAKnG,SAASlgB,SAAW,CACvE,EAEF,GAAmB2P,GAAK,WACxB,GAAmBiT,SAAW,CAC5BmlB,oBAAoB,EACpBC,gBAAiB,MACjBjoB,UAAW,CACTw4B,eAAe,EACfK,cAAc,GAEhBl1B,WAAY,CACVrG,QAAS,CACP5P,KAAM,SACN6V,WAAY,CAAC,gBAAiB,WAAY,cAAe,cAAe,aAAc,IAAK,IAAK,SAAU,cAAe,aAG7HszB,OAAQ,MACRruB,SAAU,EACV6tB,cAAe,IACf5tB,OAAQ,OACRguB,QAAS,EACTt1B,UAAW,KAEb,GAAmBqP,YAAc,CAC/B1N,YAAavmB,GAAiB,YAATA,EACrBymB,WAAYzmB,GAAiB,YAATA,GAEtB,GAAmBijB,UAAY,CAC7BuY,YAAa,EACbpW,QAAS,CACPy3B,OAAQ,CACNnO,OAAQ,CACN,cAAAoO,CAAe36B,GACb,MAAM4H,EAAO5H,EAAM4H,KACnB,GAAIA,EAAK2kB,OAAOhrC,QAAUqmB,EAAKnG,SAASlgB,OAAQ,CAC9C,MAAMq5C,EAAyB56B,EAAM06B,OAAOnnC,QAAQg5B,OAClD1iB,EAAa+wB,EAAuB/wB,WACpCla,EAAQirC,EAAuBjrC,MACjC,OAAOiY,EAAK2kB,OAAOtqC,KAAI,CAACisC,EAAO5wC,KAC7B,MACM4kB,EADOlC,EAAM6qB,eAAe,GACfrD,WAAWzM,SAASz9B,GACvC,MAAO,CACLspB,KAAMsnB,EACN5hB,UAAWpK,EAAMX,gBACjBqL,YAAa1K,EAAMV,YACnBq5B,UAAWlrC,EACXqW,UAAW9D,EAAM0I,YACjBf,WAAYA,EACZ0jB,QAASvtB,EAAMk2B,kBAAkB54C,GACjC0V,MAAO1V,EACR,GAEL,CACA,MAAO,EACT,GAEF,OAAAylB,CAAQtiB,EAAGq6C,EAAYJ,GACrBA,EAAO16B,MAAM+6B,qBAAqBD,EAAW9nC,OAC7C0nC,EAAO16B,MAAMwkB,QACf,KAIN,MAAM,WAAuB,GAC3B,UAAAgF,GACEr6B,KAAK+5B,qBAAsB,EAC3B/5B,KAAKg6B,oBAAqB,EAC1BgL,MAAM3K,YACR,CACA,MAAAhF,CAAO/lC,GACL,MAAMoc,EAAO1L,KAAKs4B,YACZrb,EAAOvR,EAAKivB,QAChBkR,EAAangC,EAAK+M,KAClB9M,OAAwB,IAAfkgC,EAAwB,GAAKA,EACtCC,EAAWpgC,EAAKogC,SACZlgC,EAAqB5L,KAAK6Q,MAAM4vB,oBACtC,IAAIsL,EAAwBtgC,GAAiCC,EAAMC,EAAQC,GACzE/C,EAAQkjC,EAAsBljC,MAC9BiD,EAAQigC,EAAsBjgC,MAChC9L,KAAK65B,WAAahxB,EAClB7I,KAAK85B,WAAahuB,EACdU,GAAoBd,KACtB7C,EAAQ,EACRiD,EAAQH,EAAOvZ,QAEjB6qB,EAAK0R,OAAS3uB,KAAK6Q,MACnBoM,EAAK6R,cAAgB9uB,KAAK6D,MAC1BoZ,EAAK+uB,aAAeF,EAASE,WAC7B/uB,EAAKtR,OAASA,EACd,MAAMvH,EAAUpE,KAAKs/B,6BAA6BhwC,GAC7C0Q,KAAKoE,QAAQ8P,WAChB9P,EAAQqX,YAAc,GAExBrX,EAAQqpB,QAAUztB,KAAKoE,QAAQqpB,QAC/BztB,KAAK8gC,cAAc7jB,OAAMlrB,EAAW,CAClCk6C,UAAWrgC,EACXxH,WACC9U,GACH0Q,KAAK4hC,eAAej2B,EAAQ9C,EAAOiD,EAAOxc,EAC5C,CACA,cAAAsyC,CAAej2B,EAAQ9C,EAAOiD,EAAOxc,GACnC,MAAMusC,EAAiB,UAATvsC,EACR48C,EAAqBlsC,KAAKs4B,YAC9BtsB,EAASkgC,EAAmBlgC,OAC5BisB,EAASiU,EAAmBjU,OAC5BsC,EAAW2R,EAAmB3R,SAC9BuR,EAAWI,EAAmBJ,SAC1BK,EAAyBnsC,KAAK0gC,kBAAkB73B,EAAOvZ,GAC3DkxC,EAAgB2L,EAAuB3L,cACvCD,EAAiB4L,EAAuB5L,eACpC/H,EAAQxsB,EAAOE,KACfusB,EAAQR,EAAO/rB,KACfkgC,EAAiBpsC,KAAKoE,QAC1B6iB,EAAWmlB,EAAenlB,SAC1BwG,EAAU2e,EAAe3e,QACrB4e,EAAejlC,GAAS6f,GAAYA,EAAW5kB,OAAO8D,kBACtDmmC,EAAetsC,KAAK6Q,MAAM4vB,qBAAuB5E,GAAkB,SAATvsC,EAC1DwZ,EAAMD,EAAQiD,EACdygC,EAAc5gC,EAAOvZ,OAC3B,IAAIo6C,EAAa3jC,EAAQ,GAAK7I,KAAK49B,UAAU/0B,EAAQ,GACrD,IAAK,IAAI1a,EAAI,EAAGA,EAAIo+C,IAAep+C,EAAG,CACpC,MAAMytB,EAAQjQ,EAAOxd,GACfunB,EAAa42B,EAAe1wB,EAAQ,CAAC,EAC3C,GAAIztB,EAAI0a,GAAS1a,GAAK2a,EAAK,CACzB4M,EAAWqP,MAAO,EAClB,QACF,CACA,MAAMJ,EAAS3kB,KAAK49B,UAAUzvC,GACxBs+C,EAAWzqC,EAAc2iB,EAAO8T,IAChC/R,EAAShR,EAAW8iB,GAASxsB,EAAOO,iBAAiBoY,EAAO6T,GAAQrqC,GACpEw4B,EAASjR,EAAW+iB,GAASoD,GAAS4Q,EAAWxU,EAAOiN,eAAiBjN,EAAO1rB,iBAAiBguB,EAAWv6B,KAAKo3B,WAAWa,EAAQtT,EAAQ4V,GAAY5V,EAAO8T,GAAQtqC,GAC7KunB,EAAWqP,KAAO1d,MAAMqf,IAAWrf,MAAMsf,IAAW8lB,EACpD/2B,EAAWue,KAAO9lC,EAAI,GAAKmC,KAAKsW,IAAI+d,EAAO6T,GAASgU,EAAWhU,IAAU6T,EACrE5e,IACF/X,EAAWiP,OAASA,EACpBjP,EAAW+pB,IAAMqM,EAASrzB,KAAKtqB,IAE7BoyC,IACF7qB,EAAWtR,QAAUo8B,GAAiBxgC,KAAKu/B,0BAA0BpxC,EAAGytB,EAAMjG,OAAS,SAAWrmB,IAE/Fg9C,GACHtsC,KAAK8gC,cAAcllB,EAAOztB,EAAGunB,EAAYpmB,GAE3Ck9C,EAAa7nB,CACf,CACF,CACA,cAAAka,GACE,MAAMnzB,EAAO1L,KAAKs4B,YACZqC,EAAUjvB,EAAKivB,QACfvjB,EAASujB,EAAQv2B,SAAWu2B,EAAQv2B,QAAQqX,aAAe,EAC3DhD,EAAO/M,EAAK+M,MAAQ,GAC1B,IAAKA,EAAKrmB,OACR,OAAOglB,EAET,MAAM8N,EAAazM,EAAK,GAAG7S,KAAK5F,KAAKu/B,0BAA0B,IACzDmN,EAAYj0B,EAAKA,EAAKrmB,OAAS,GAAGwT,KAAK5F,KAAKu/B,0BAA0B9mB,EAAKrmB,OAAS,IAC1F,OAAO9B,KAAKC,IAAI6mB,EAAQ8N,EAAYwnB,GAAa,CACnD,CACA,IAAAxZ,GACE,MAAMxnB,EAAO1L,KAAKs4B,YAClB5sB,EAAKivB,QAAQgS,oBAAoB3sC,KAAK6Q,MAAMwuB,UAAW3zB,EAAKM,OAAOE,MACnE84B,MAAM9R,MACR,EAEF,GAAenxB,GAAK,OACpB,GAAeiT,SAAW,CACxBmlB,mBAAoB,OACpBC,gBAAiB,QACjBlmB,UAAU,EACV+S,UAAU,GAEZ,GAAetV,UAAY,CACzBsC,OAAQ,CACN+zB,QAAS,CACPnoC,KAAM,YAERooC,QAAS,CACPpoC,KAAM,YAIZ,MAAM,WAA4B,GAChC,WAAAD,CAAYiR,EAAOjN,GACjBohC,MAAMn0B,EAAOjN,GACb5D,KAAKooC,iBAAcr2C,EACnBiO,KAAKqoC,iBAAct2C,CACrB,CACA,gBAAA+sC,CAAiBj7B,GACf,MAAM6H,EAAO1L,KAAKs4B,YACZznB,EAAQ7Q,KAAK6Q,MACbusB,EAASvsB,EAAM4H,KAAK2kB,QAAU,GAC9BhuC,EAAQygB,GAAanE,EAAKO,QAAQpI,GAAO5U,EAAG4hB,EAAMzM,QAAQ2L,QAChE,MAAO,CACLgvB,MAAO3B,EAAOv5B,IAAU,GACxBzU,QAEJ,CACA,eAAA6tC,CAAgBvxB,EAAM+M,EAAM5P,EAAOiD,GACjC,OAAO0Y,GAA4B70B,KAAKqQ,KAAjCwkB,CAAuC9Y,EAAM+M,EAAM5P,EAAOiD,EACnE,CACA,MAAAupB,CAAO/lC,GACL,MAAMq5C,EAAO3oC,KAAKs4B,YAAY7f,KAC9BzY,KAAK4sC,gBACL5sC,KAAK4hC,eAAe+G,EAAM,EAAGA,EAAKv2C,OAAQ9C,EAC5C,CACA,SAAA2uC,GACE,MAAMvyB,EAAO1L,KAAKs4B,YACZxxB,EAAQ,CACZtW,IAAK6R,OAAO8D,kBACZ5V,IAAK8R,OAAOi8B,mBAad,OAXA5yB,EAAK+M,KAAKlO,SAAQ,CAAC6d,EAASvkB,KAC1B,MAAM8gB,EAAS3kB,KAAK49B,UAAU/5B,GAAO5U,GAChCoY,MAAMsd,IAAW3kB,KAAK6Q,MAAMk2B,kBAAkBljC,KAC7C8gB,EAAS7d,EAAMtW,MACjBsW,EAAMtW,IAAMm0B,GAEVA,EAAS7d,EAAMvW,MACjBuW,EAAMvW,IAAMo0B,GAEhB,IAEK7d,CACT,CACA,aAAA8lC,GACE,MAAM/7B,EAAQ7Q,KAAK6Q,MACbwuB,EAAYxuB,EAAMwuB,UAClBxiB,EAAOhM,EAAMzM,QACbyoC,EAAUv8C,KAAKE,IAAI6uC,EAAUjpB,MAAQipB,EAAU/oB,KAAM+oB,EAAUhpB,OAASgpB,EAAUlpB,KAClFkyB,EAAc/3C,KAAKC,IAAIs8C,EAAU,EAAG,GAEpCxC,GAAgBhC,EADF/3C,KAAKC,IAAIssB,EAAKiwB,iBAAmBzE,EAAc,IAAMxrB,EAAKiwB,iBAAmB,EAAG,IACjDj8B,EAAMk8B,yBACzD/sC,KAAKqoC,YAAcA,EAAcgC,EAAerqC,KAAK6D,MACrD7D,KAAKooC,YAAcpoC,KAAKqoC,YAAcgC,CACxC,CACA,cAAAzI,CAAe+G,EAAM9/B,EAAOiD,EAAOxc,GACjC,MAAMusC,EAAiB,UAATvsC,EACRuhB,EAAQ7Q,KAAK6Q,MAEbg6B,EADOh6B,EAAMzM,QACQ+N,UACrB6B,EAAQhU,KAAKs4B,YAAYmD,OACzBqP,EAAU92B,EAAMg5B,QAChBjC,EAAU/2B,EAAMi5B,QAChBC,EAAoBl5B,EAAMm5B,cAAc,GAAK,GAAMpnC,GACzD,IACI5X,EADAia,EAAQ8kC,EAEZ,MAAME,EAAe,IAAMptC,KAAKqtC,uBAChC,IAAKl/C,EAAI,EAAGA,EAAI0a,IAAS1a,EACvBia,GAASpI,KAAKstC,cAAcn/C,EAAGmB,EAAM89C,GAEvC,IAAKj/C,EAAI0a,EAAO1a,EAAI0a,EAAQiD,EAAO3d,IAAK,CACtC,MAAM+sB,EAAMytB,EAAKx6C,GACjB,IAAIo7C,EAAanhC,EACbohC,EAAWphC,EAAQpI,KAAKstC,cAAcn/C,EAAGmB,EAAM89C,GAC/C/E,EAAcx3B,EAAMk2B,kBAAkB54C,GAAK6lB,EAAMu5B,8BAA8BvtC,KAAK49B,UAAUzvC,GAAGc,GAAK,EAC1GmZ,EAAQohC,EACJ3N,IACEgP,EAAcG,eAChB3C,EAAc,GAEZwC,EAAcF,gBAChBpB,EAAaC,EAAW0D,IAG5B,MAAMx3B,EAAa,CACjBliB,EAAGs3C,EACHhmC,EAAGimC,EACH3C,YAAa,EACbC,cACAkB,aACAC,WACAplC,QAASpE,KAAKu/B,0BAA0BpxC,EAAG+sB,EAAIvF,OAAS,SAAWrmB,IAErE0Q,KAAK8gC,cAAc5lB,EAAK/sB,EAAGunB,EAAYpmB,EACzC,CACF,CACA,oBAAA+9C,GACE,MAAM3hC,EAAO1L,KAAKs4B,YAClB,IAAIxsB,EAAQ,EAMZ,OALAJ,EAAK+M,KAAKlO,SAAQ,CAAC6d,EAASvkB,MACrBwD,MAAMrH,KAAK49B,UAAU/5B,GAAO5U,IAAM+Q,KAAK6Q,MAAMk2B,kBAAkBljC,IAClEiI,GACF,IAEKA,CACT,CACA,aAAAwhC,CAAczpC,EAAOvU,EAAM89C,GACzB,OAAOptC,KAAK6Q,MAAMk2B,kBAAkBljC,GAAS2D,GAAUxH,KAAKu/B,0BAA0B17B,EAAOvU,GAAM8Y,OAASglC,GAAgB,CAC9H,EAEF,GAAoBrrC,GAAK,YACzB,GAAoBiT,SAAW,CAC7BolB,gBAAiB,MACjBjoB,UAAW,CACTw4B,eAAe,EACfK,cAAc,GAEhBl1B,WAAY,CACVrG,QAAS,CACP5P,KAAM,SACN6V,WAAY,CAAC,IAAK,IAAK,aAAc,WAAY,cAAe,iBAGpEpC,UAAW,IACXi2B,WAAY,GAEd,GAAoB53B,UAAY,CAC9BuY,YAAa,EACbpW,QAAS,CACPy3B,OAAQ,CACNnO,OAAQ,CACN,cAAAoO,CAAe36B,GACb,MAAM4H,EAAO5H,EAAM4H,KACnB,GAAIA,EAAK2kB,OAAOhrC,QAAUqmB,EAAKnG,SAASlgB,OAAQ,CAC9C,MAAMo7C,EAAyB38B,EAAM06B,OAAOnnC,QAAQg5B,OAClD1iB,EAAa8yB,EAAuB9yB,WACpCla,EAAQgtC,EAAuBhtC,MACjC,OAAOiY,EAAK2kB,OAAOtqC,KAAI,CAACisC,EAAO5wC,KAC7B,MACM4kB,EADOlC,EAAM6qB,eAAe,GACfrD,WAAWzM,SAASz9B,GACvC,MAAO,CACLspB,KAAMsnB,EACN5hB,UAAWpK,EAAMX,gBACjBqL,YAAa1K,EAAMV,YACnBq5B,UAAWlrC,EACXqW,UAAW9D,EAAM0I,YACjBf,WAAYA,EACZ0jB,QAASvtB,EAAMk2B,kBAAkB54C,GACjC0V,MAAO1V,EACR,GAEL,CACA,MAAO,EACT,GAEF,OAAAylB,CAAQtiB,EAAGq6C,EAAYJ,GACrBA,EAAO16B,MAAM+6B,qBAAqBD,EAAW9nC,OAC7C0nC,EAAO16B,MAAMwkB,QACf,IAGJphB,OAAQ,CACNhlB,EAAG,CACD4Q,KAAM,eACN4tC,WAAY,CACVl3B,SAAS,GAEXE,aAAa,EACbG,KAAM,CACJ82B,UAAU,GAEZC,YAAa,CACXp3B,SAAS,GAEXgzB,WAAY,KAIlB,MAAMqE,WAAsB,IAC5BA,GAAc7rC,GAAK,MACnB6rC,GAAc54B,SAAW,CACvBg0B,OAAQ,EACRruB,SAAU,EACV6tB,cAAe,IACf5tB,OAAQ,QAEV,MAAM,WAAwB,GAC5B,gBAAAkkB,CAAiBj7B,GACf,MAAMo0B,EAASj4B,KAAKs4B,YAAYL,OAC1BtT,EAAS3kB,KAAK49B,UAAU/5B,GAC9B,MAAO,CACLk7B,MAAO9G,EAAOoF,YAAYx5B,GAC1BzU,MAAO,GAAK6oC,EAAO+G,iBAAiBra,EAAOsT,EAAO/rB,OAEtD,CACA,eAAA+wB,CAAgBvxB,EAAM+M,EAAM5P,EAAOiD,GACjC,OAAO0Y,GAA4B70B,KAAKqQ,KAAjCwkB,CAAuC9Y,EAAM+M,EAAM5P,EAAOiD,EACnE,CACA,MAAAupB,CAAO/lC,GACL,MAAMoc,EAAO1L,KAAKs4B,YACZrb,EAAOvR,EAAKivB,QACZhvB,EAASD,EAAK+M,MAAQ,GACtB2kB,EAAS1xB,EAAKM,OAAOqxB,YAE3B,GADApgB,EAAKtR,OAASA,EACD,WAATrc,EAAmB,CACrB,MAAM8U,EAAUpE,KAAKs/B,6BAA6BhwC,GAC7C0Q,KAAKoE,QAAQ8P,WAChB9P,EAAQqX,YAAc,GAExB,MAAM/F,EAAa,CACjBqf,OAAO,EACP8Y,UAAWzQ,EAAOhrC,SAAWuZ,EAAOvZ,OACpCgS,WAEFpE,KAAK8gC,cAAc7jB,OAAMlrB,EAAW2jB,EAAYpmB,EAClD,CACA0Q,KAAK4hC,eAAej2B,EAAQ,EAAGA,EAAOvZ,OAAQ9C,EAChD,CACA,cAAAsyC,CAAej2B,EAAQ9C,EAAOiD,EAAOxc,GACnC,MAAM0kB,EAAQhU,KAAKs4B,YAAYmD,OACzBI,EAAiB,UAATvsC,EACd,IAAK,IAAInB,EAAI0a,EAAO1a,EAAI0a,EAAQiD,EAAO3d,IAAK,CAC1C,MAAMytB,EAAQjQ,EAAOxd,GACfiW,EAAUpE,KAAKu/B,0BAA0BpxC,EAAGytB,EAAMjG,OAAS,SAAWrmB,GACtEw+C,EAAgB95B,EAAM+5B,yBAAyB5/C,EAAG6R,KAAK49B,UAAUzvC,GAAGc,GACpEuE,EAAIqoC,EAAQ7nB,EAAMg5B,QAAUc,EAAct6C,EAC1CsR,EAAI+2B,EAAQ7nB,EAAMi5B,QAAUa,EAAchpC,EAC1C4Q,EAAa,CACjBliB,IACAsR,IACAsD,MAAO0lC,EAAc1lC,MACrB2c,KAAM1d,MAAM7T,IAAM6T,MAAMvC,GACxBV,WAEFpE,KAAK8gC,cAAcllB,EAAOztB,EAAGunB,EAAYpmB,EAC3C,CACF,EAEF,GAAgByS,GAAK,QACrB,GAAgBiT,SAAW,CACzBmlB,mBAAoB,OACpBC,gBAAiB,QACjB9mB,UAAW,IACXY,UAAU,EACVvB,SAAU,CACRsK,KAAM,CACJzB,KAAM,WAIZ,GAAgB7J,UAAY,CAC1BuY,YAAa,EACbjW,OAAQ,CACNhlB,EAAG,CACD4Q,KAAM,kBAIZ,MAAM,WAA0B,GAC9B,gBAAAi/B,CAAiBj7B,GACf,MAAM6H,EAAO1L,KAAKs4B,YACZ8E,EAASp9B,KAAK6Q,MAAM4H,KAAK2kB,QAAU,GACnC3wB,EAASf,EAAKe,OAClBC,EAAShB,EAAKgB,OACViY,EAAS3kB,KAAK49B,UAAU/5B,GACxBrQ,EAAIiZ,EAAOuyB,iBAAiBra,EAAOnxB,GACnCsR,EAAI4H,EAAOsyB,iBAAiBra,EAAO7f,GACzC,MAAO,CACLi6B,MAAO3B,EAAOv5B,IAAU,GACxBzU,MAAO,IAAMoE,EAAI,KAAOsR,EAAI,IAEhC,CACA,MAAAuwB,CAAO/lC,GACL,MAAMoc,EAAO1L,KAAKs4B,YACZ0V,EAActiC,EAAK+M,KACvB9M,OAAyB,IAAhBqiC,EAAyB,GAAKA,EACnCpiC,EAAqB5L,KAAK6Q,MAAM4vB,oBACtC,IAAIwN,EAAyBxiC,GAAiCC,EAAMC,EAAQC,GAC1E/C,EAAQolC,EAAuBplC,MAC/BiD,EAAQmiC,EAAuBniC,MAOjC,GANA9L,KAAK65B,WAAahxB,EAClB7I,KAAK85B,WAAahuB,EACdU,GAAoBd,KACtB7C,EAAQ,EACRiD,EAAQH,EAAOvZ,QAEb4N,KAAKoE,QAAQ8P,SAAU,CACzB,MAAM+I,EAAOvR,EAAKivB,QAChBmR,EAAWpgC,EAAKogC,SAClB7uB,EAAK0R,OAAS3uB,KAAK6Q,MACnBoM,EAAK6R,cAAgB9uB,KAAK6D,MAC1BoZ,EAAK+uB,aAAeF,EAASE,WAC7B/uB,EAAKtR,OAASA,EACd,MAAMvH,EAAUpE,KAAKs/B,6BAA6BhwC,GAClD8U,EAAQqpB,QAAUztB,KAAKoE,QAAQqpB,QAC/BztB,KAAK8gC,cAAc7jB,OAAMlrB,EAAW,CAClCk6C,UAAWrgC,EACXxH,WACC9U,EACL,CACA0Q,KAAK4hC,eAAej2B,EAAQ9C,EAAOiD,EAAOxc,EAC5C,CACA,WAAAkrC,GACE,MAAMtmB,EAAWlU,KAAKoE,QAAQ8P,UACzBlU,KAAKm6B,oBAAsBjmB,IAC9BlU,KAAKm6B,mBAAqBn6B,KAAK6Q,MAAMq9B,SAASC,WAAW,SAE3DnJ,MAAMxK,aACR,CACA,cAAAoH,CAAej2B,EAAQ9C,EAAOiD,EAAOxc,GACnC,MAAMusC,EAAiB,UAATvsC,EACR8+C,EAAqBpuC,KAAKs4B,YAC9BtsB,EAASoiC,EAAmBpiC,OAC5BisB,EAASmW,EAAmBnW,OAC5BsC,EAAW6T,EAAmB7T,SAC9BuR,EAAWsC,EAAmBtC,SAC1BnL,EAAY3gC,KAAKu/B,0BAA0B12B,EAAOvZ,GAClDkxC,EAAgBxgC,KAAKsgC,iBAAiBK,GACtCJ,EAAiBvgC,KAAKugC,eAAejxC,EAAMkxC,GAC3ChI,EAAQxsB,EAAOE,KACfusB,EAAQR,EAAO/rB,KACfmiC,EAAiBruC,KAAKoE,QAC1B6iB,EAAWonB,EAAepnB,SAC1BwG,EAAU4gB,EAAe5gB,QACrB4e,EAAejlC,GAAS6f,GAAYA,EAAW5kB,OAAO8D,kBACtDmmC,EAAetsC,KAAK6Q,MAAM4vB,qBAAuB5E,GAAkB,SAATvsC,EAChE,IAAIk9C,EAAa3jC,EAAQ,GAAK7I,KAAK49B,UAAU/0B,EAAQ,GACrD,IAAK,IAAI1a,EAAI0a,EAAO1a,EAAI0a,EAAQiD,IAAS3d,EAAG,CAC1C,MAAMytB,EAAQjQ,EAAOxd,GACfw2B,EAAS3kB,KAAK49B,UAAUzvC,GACxBunB,EAAa42B,EAAe1wB,EAAQ,CAAC,EACrC6wB,EAAWzqC,EAAc2iB,EAAO8T,IAChC/R,EAAShR,EAAW8iB,GAASxsB,EAAOO,iBAAiBoY,EAAO6T,GAAQrqC,GACpEw4B,EAASjR,EAAW+iB,GAASoD,GAAS4Q,EAAWxU,EAAOiN,eAAiBjN,EAAO1rB,iBAAiBguB,EAAWv6B,KAAKo3B,WAAWa,EAAQtT,EAAQ4V,GAAY5V,EAAO8T,GAAQtqC,GAC7KunB,EAAWqP,KAAO1d,MAAMqf,IAAWrf,MAAMsf,IAAW8lB,EACpD/2B,EAAWue,KAAO9lC,EAAI,GAAKmC,KAAKsW,IAAI+d,EAAO6T,GAASgU,EAAWhU,IAAU6T,EACrE5e,IACF/X,EAAWiP,OAASA,EACpBjP,EAAW+pB,IAAMqM,EAASrzB,KAAKtqB,IAE7BoyC,IACF7qB,EAAWtR,QAAUo8B,GAAiBxgC,KAAKu/B,0BAA0BpxC,EAAGytB,EAAMjG,OAAS,SAAWrmB,IAE/Fg9C,GACHtsC,KAAK8gC,cAAcllB,EAAOztB,EAAGunB,EAAYpmB,GAE3Ck9C,EAAa7nB,CACf,CACA3kB,KAAK6gC,oBAAoBL,EAAelxC,EAAMqxC,EAChD,CACA,cAAA9B,GACE,MAAMnzB,EAAO1L,KAAKs4B,YACZ7f,EAAO/M,EAAK+M,MAAQ,GAC1B,IAAKzY,KAAKoE,QAAQ8P,SAAU,CAC1B,IAAI3jB,EAAM,EACV,IAAK,IAAIpC,EAAIsqB,EAAKrmB,OAAS,EAAGjE,GAAK,IAAKA,EACtCoC,EAAMD,KAAKC,IAAIA,EAAKkoB,EAAKtqB,GAAGyX,KAAK5F,KAAKu/B,0BAA0BpxC,IAAM,GAExE,OAAOoC,EAAM,GAAKA,CACpB,CACA,MAAMoqC,EAAUjvB,EAAKivB,QACfvjB,EAASujB,EAAQv2B,SAAWu2B,EAAQv2B,QAAQqX,aAAe,EACjE,IAAKhD,EAAKrmB,OACR,OAAOglB,EAET,MAAM8N,EAAazM,EAAK,GAAG7S,KAAK5F,KAAKu/B,0BAA0B,IACzDmN,EAAYj0B,EAAKA,EAAKrmB,OAAS,GAAGwT,KAAK5F,KAAKu/B,0BAA0B9mB,EAAKrmB,OAAS,IAC1F,OAAO9B,KAAKC,IAAI6mB,EAAQ8N,EAAYwnB,GAAa,CACnD,EAEF,GAAkB3qC,GAAK,UACvB,GAAkBiT,SAAW,CAC3BmlB,oBAAoB,EACpBC,gBAAiB,QACjBlmB,UAAU,EACVsH,MAAM,GAER,GAAkB7J,UAAY,CAC5B4B,YAAa,CACXjkB,KAAM,SAER2kB,OAAQ,CACNzgB,EAAG,CACDqM,KAAM,UAERiF,EAAG,CACDjF,KAAM,YAIZ,IAAIyuC,GAA2Bz/C,OAAOqxC,OAAO,CAC3CqO,UAAW,KACXC,cAAe,GACfC,iBAAkB,GAClBC,mBAAoB,GACpBC,eAAgB,GAChBC,oBAAqB,GACrBhB,cAAeA,GACfiB,gBAAiB,GACjBC,kBAAmB,KAQrB,SAAS,KACP,MAAM,IAAIjsB,MAAM,kFAClB,CAOA,MAAMksB,GAWJ,eAAO16B,CAAS26B,GACdngD,OAAOwQ,OAAO0vC,GAAgBh/C,UAAWi/C,EAC3C,CACA,WAAApvC,CAAYwE,GACVpE,KAAKoE,QAAUA,GAAW,CAAC,CAC7B,CAEA,IAAA6qC,GAAQ,CACR,OAAAC,GACE,OAAO,IACT,CACA,KAAAtqB,GACE,OAAO,IACT,CACA,MAAArU,GACE,OAAO,IACT,CACA,GAAA3F,GACE,OAAO,IACT,CACA,IAAAukC,GACE,OAAO,IACT,CACA,OAAAC,GACE,OAAO,IACT,CACA,KAAAC,GACE,OAAO,IACT,EAEF,IAAIC,GAAW,CACbC,MAAOR,IAET,SAASS,GAAaC,EAASvjC,EAAM9c,EAAOokB,GAC1C,MAAM6kB,EAAaoX,EAAQpX,WACzB5f,EAAOg3B,EAAQh3B,KACf1M,EAAU0jC,EAAQ1jC,QACdC,EAASqsB,EAAWC,YAAYtsB,OACtC,GAAIA,GAAUE,IAASF,EAAOE,MAAiB,MAATA,GAAgBH,GAAW0M,EAAKrmB,OAAQ,CAC5E,MAAMs9C,EAAe1jC,EAAO2jC,eAAiB5lC,GAAgBH,GAC7D,IAAK4J,EACH,OAAOk8B,EAAaj3B,EAAMvM,EAAM9c,GAC3B,GAAIipC,EAAWuB,eAAgB,CACpC,MAAMlO,EAAKjT,EAAK,GACV3R,EAA+B,oBAAhB4kB,EAAGkkB,UAA2BlkB,EAAGkkB,SAAS1jC,GAC/D,GAAIpF,EAAO,CACT,MAAM+B,EAAQ6mC,EAAaj3B,EAAMvM,EAAM9c,EAAQ0X,GACzCgC,EAAM4mC,EAAaj3B,EAAMvM,EAAM9c,EAAQ0X,GAC7C,MAAO,CACL6C,GAAId,EAAMc,GACVD,GAAIZ,EAAIY,GAEZ,CACF,CACF,CACA,MAAO,CACLC,GAAI,EACJD,GAAI+O,EAAKrmB,OAAS,EAEtB,CACA,SAASy9C,GAAyBh/B,EAAO3E,EAAM4jC,EAAUC,EAASv8B,GAChE,MAAM0jB,EAAWrmB,EAAMm/B,+BACjB5gD,EAAQ0gD,EAAS5jC,GACvB,IAAK,IAAI/d,EAAI,EAAGsV,EAAOyzB,EAAS9kC,OAAQjE,EAAIsV,IAAQtV,EAAG,CACrD,MAAM8hD,EAAc/Y,EAAS/oC,GAC3B0V,EAAQosC,EAAYpsC,MACpB4U,EAAOw3B,EAAYx3B,KACfy3B,EAAgBV,GAAatY,EAAS/oC,GAAI+d,EAAM9c,EAAOokB,GAC3D7J,EAAKumC,EAAcvmC,GACnBD,EAAKwmC,EAAcxmC,GACrB,IAAK,IAAIpL,EAAIqL,EAAIrL,GAAKoL,IAAMpL,EAAG,CAC7B,MAAM8pB,EAAU3P,EAAKna,GAChB8pB,EAAQrD,MACXgrB,EAAQ3nB,EAASvkB,EAAOvF,EAE5B,CACF,CACF,CAUA,SAAS6xC,GAAkBt/B,EAAOi/B,EAAU5jC,EAAMkkC,EAAkB38B,GAClE,MAAMhJ,EAAQ,GACd,IAAKgJ,IAAqB5C,EAAMw/B,cAAcP,GAC5C,OAAOrlC,EAeT,OADAolC,GAAyBh/B,EAAO3E,EAAM4jC,GAZf,SAAU1nB,EAASxkB,EAAcC,IACjD4P,GAAqBkI,GAAeyM,EAASvX,EAAMwuB,UAAW,KAG/DjX,EAAQkoB,QAAQR,EAASt8C,EAAGs8C,EAAShrC,EAAGsrC,IAC1C3lC,EAAMrF,KAAK,CACTgjB,UACAxkB,eACAC,SAGN,IACgE,GACzD4G,CACT,CAuBA,SAAS8lC,GAAyB1/B,EAAOi/B,EAAU5jC,EAAMsH,EAAW48B,EAAkB38B,GACpF,IAAIhJ,EAAQ,GACZ,MAAM+lC,EArDR,SAAkCtkC,GAChC,MAAMukC,GAA8B,IAAvBvkC,EAAKhI,QAAQ,KACpBwsC,GAA8B,IAAvBxkC,EAAKhI,QAAQ,KAC1B,OAAO,SAAUsE,EAAKC,GACpB,MAAMkoC,EAASF,EAAOngD,KAAKsW,IAAI4B,EAAIhV,EAAIiV,EAAIjV,GAAK,EAC1Co9C,EAASF,EAAOpgD,KAAKsW,IAAI4B,EAAI1D,EAAI2D,EAAI3D,GAAK,EAChD,OAAOxU,KAAK6X,KAAK7X,KAAKyO,IAAI4xC,EAAQ,GAAKrgD,KAAKyO,IAAI6xC,EAAQ,GAC1D,CACF,CA6CyBC,CAAyB3kC,GAChD,IAAI4kC,EAAczuC,OAAO8D,kBA4BzB,OADA0pC,GAAyBh/B,EAAO3E,EAAM4jC,GA1BtC,SAAwB1nB,EAASxkB,EAAcC,GAC7C,MAAMysC,EAAUloB,EAAQkoB,QAAQR,EAASt8C,EAAGs8C,EAAShrC,EAAGsrC,GACxD,GAAI58B,IAAc88B,EAChB,OAEF,MAAM1K,EAASxd,EAAQ2oB,eAAeX,GAEtC,OADsB38B,GAAoB5C,EAAMw/B,cAAczK,MACzC0K,EACnB,OAEF,MAAMhoC,EAAWkoC,EAAeV,EAAUlK,GACtCt9B,EAAWwoC,GACbrmC,EAAQ,CAAC,CACP2d,UACAxkB,eACAC,UAEFitC,EAAcxoC,GACLA,IAAawoC,GACtBrmC,EAAMrF,KAAK,CACTgjB,UACAxkB,eACAC,SAGN,IAEO4G,CACT,CACA,SAASumC,GAAgBngC,EAAOi/B,EAAU5jC,EAAMsH,EAAW48B,EAAkB38B,GAC3E,OAAKA,GAAqB5C,EAAMw/B,cAAcP,GAG9B,MAAT5jC,GAAiBsH,EAA6E+8B,GAAyB1/B,EAAOi/B,EAAU5jC,EAAMsH,EAAW48B,EAAkB38B,GA3DpL,SAA+B5C,EAAOi/B,EAAU5jC,EAAMkkC,GACpD,IAAI3lC,EAAQ,GAmBZ,OADAolC,GAAyBh/B,EAAO3E,EAAM4jC,GAjBtC,SAAwB1nB,EAASxkB,EAAcC,GAC7C,MAAMotC,EAAoB7oB,EAAQ8oB,SAAS,CAAC,aAAc,YAAad,GACrE7G,EAAa0H,EAAkB1H,WAC/BC,EAAWyH,EAAkBzH,SAM3B5gC,GALuBf,GAAkBugB,EAAS,CAClD50B,EAAGs8C,EAASt8C,EACZsR,EAAGgrC,EAAShrC,IAEasD,MACJmhC,EAAYC,IACnC/+B,EAAMrF,KAAK,CACTgjB,UACAxkB,eACAC,SAGN,IAEO4G,CACT,CAsCsC0mC,CAAsBtgC,EAAOi/B,EAAU5jC,EAAMkkC,GAFxE,EAGX,CACA,SAASgB,GAAavgC,EAAOi/B,EAAU5jC,EAAMsH,EAAW48B,GACtD,MAAM3lC,EAAQ,GACR4mC,EAAuB,MAATnlC,EAAe,WAAa,WAChD,IAAIolC,GAAiB,EAWrB,OAVAzB,GAAyBh/B,EAAO3E,EAAM4jC,GAAU,CAAC1nB,EAASxkB,EAAcC,KAClEukB,EAAQipB,GAAavB,EAAS5jC,GAAOkkC,KACvC3lC,EAAMrF,KAAK,CACTgjB,UACAxkB,eACAC,UAEFytC,EAAiBA,GAAkBlpB,EAAQkoB,QAAQR,EAASt8C,EAAGs8C,EAAShrC,EAAGsrC,GAC7E,IAEE58B,IAAc89B,EACT,GAEF7mC,CACT,CACA,IAAI8mC,GAAc,CAChB1B,4BACA2B,MAAO,CACL,KAAA3tC,CAAMgN,EAAOvf,EAAG8S,EAASgsC,GACvB,MAAMN,EAAW/mB,GAAoBz3B,EAAGuf,GAClC3E,EAAO9H,EAAQ8H,MAAQ,IACvBuH,EAAmBrP,EAAQqP,mBAAoB,EAC/ChJ,EAAQrG,EAAQoP,UAAY28B,GAAkBt/B,EAAOi/B,EAAU5jC,EAAMkkC,EAAkB38B,GAAoBu9B,GAAgBngC,EAAOi/B,EAAU5jC,GAAM,EAAOkkC,EAAkB38B,GAC3Kd,EAAW,GACjB,OAAKlI,EAAMrY,QAGXye,EAAMm/B,+BAA+BzlC,SAAQmB,IAC3C,MAAM7H,EAAQ4G,EAAM,GAAG5G,MACjBukB,EAAU1c,EAAK+M,KAAK5U,GACtBukB,IAAYA,EAAQrD,MACtBpS,EAASvN,KAAK,CACZgjB,UACAxkB,aAAc8H,EAAK7H,MACnBA,SAEJ,IAEK8O,GAbE,EAcX,EACA,OAAAgoB,CAAQ9pB,EAAOvf,EAAG8S,EAASgsC,GACzB,MAAMN,EAAW/mB,GAAoBz3B,EAAGuf,GAClC3E,EAAO9H,EAAQ8H,MAAQ,KACvBuH,EAAmBrP,EAAQqP,mBAAoB,EACrD,IAAIhJ,EAAQrG,EAAQoP,UAAY28B,GAAkBt/B,EAAOi/B,EAAU5jC,EAAMkkC,EAAkB38B,GAAoBu9B,GAAgBngC,EAAOi/B,EAAU5jC,GAAM,EAAOkkC,EAAkB38B,GAC/K,GAAIhJ,EAAMrY,OAAS,EAAG,CACpB,MAAMwR,EAAe6G,EAAM,GAAG7G,aACxB6U,EAAO5H,EAAM6qB,eAAe93B,GAAc6U,KAChDhO,EAAQ,GACR,IAAK,IAAItc,EAAI,EAAGA,EAAIsqB,EAAKrmB,SAAUjE,EACjCsc,EAAMrF,KAAK,CACTgjB,QAAS3P,EAAKtqB,GACdyV,eACAC,MAAO1V,GAGb,CACA,OAAOsc,CACT,EACAmR,MAAK,CAAC/K,EAAOvf,EAAG8S,EAASgsC,IAIhBD,GAAkBt/B,EAHRkY,GAAoBz3B,EAAGuf,GAC3BzM,EAAQ8H,MAAQ,KAEmBkkC,EADvBhsC,EAAQqP,mBAAoB,GAGvD,OAAAg+B,CAAQ5gC,EAAOvf,EAAG8S,EAASgsC,GACzB,MAAMN,EAAW/mB,GAAoBz3B,EAAGuf,GAClC3E,EAAO9H,EAAQ8H,MAAQ,KACvBuH,EAAmBrP,EAAQqP,mBAAoB,EACrD,OAAOu9B,GAAgBngC,EAAOi/B,EAAU5jC,EAAM9H,EAAQoP,UAAW48B,EAAkB38B,EACrF,EACAjgB,EAAC,CAACqd,EAAOvf,EAAG8S,EAASgsC,IAEZgB,GAAavgC,EADHkY,GAAoBz3B,EAAGuf,GACH,IAAKzM,EAAQoP,UAAW48B,GAE/DtrC,EAAC,CAAC+L,EAAOvf,EAAG8S,EAASgsC,IAEZgB,GAAavgC,EADHkY,GAAoBz3B,EAAGuf,GACH,IAAKzM,EAAQoP,UAAW48B,KAInE,MAAMsB,GAAmB,CAAC,OAAQ,MAAO,QAAS,UAClD,SAASC,GAAiBpqC,EAAOuoC,GAC/B,OAAOvoC,EAAM4b,QAAOhzB,GAAKA,EAAEy4B,MAAQknB,GACrC,CACA,SAAS8B,GAA4BrqC,EAAO2E,GAC1C,OAAO3E,EAAM4b,QAAOhzB,IAA0C,IAArCuhD,GAAiBxtC,QAAQ/T,EAAEy4B,MAAez4B,EAAEs5B,IAAIvd,OAASA,GACpF,CACA,SAAS2lC,GAAatqC,EAAOlE,GAC3B,OAAOkE,EAAMq7B,MAAK,CAACxxC,EAAGC,KACpB,MAAMqS,EAAKL,EAAUhS,EAAID,EACnBuS,EAAKN,EAAUjS,EAAIC,EACzB,OAAOqS,EAAGjD,SAAWkD,EAAGlD,OAASiD,EAAGG,MAAQF,EAAGE,MAAQH,EAAGjD,OAASkD,EAAGlD,MAAM,GAEhF,CA4CA,SAASqxC,GAAcC,EAASC,GAC9B,MAAMpa,EArBR,SAAqBma,GACnB,MAAMna,EAAS,CAAC,EAChB,IAAK,MAAMqa,KAAQF,EAAS,CAC1B,MAAM1a,EAAQ4a,EAAK5a,MACjBzO,EAAMqpB,EAAKrpB,IACXspB,EAAcD,EAAKC,YACrB,IAAK7a,IAAUqa,GAAiBjgC,SAASmX,GACvC,SAEF,MAAMpG,EAASoV,EAAOP,KAAWO,EAAOP,GAAS,CAC/CvrB,MAAO,EACPqmC,OAAQ,EACR1xC,OAAQ,EACRmF,KAAM,IAER4c,EAAO1W,QACP0W,EAAO/hB,QAAUyxC,CACnB,CACA,OAAOta,CACT,CAEiBwa,CAAYL,GACrBM,EAAeL,EAAOK,aAC1BC,EAAgBN,EAAOM,cACzB,IAAInkD,EAAGsV,EAAM8uC,EACb,IAAKpkD,EAAI,EAAGsV,EAAOsuC,EAAQ3/C,OAAQjE,EAAIsV,IAAQtV,EAAG,CAChDokD,EAASR,EAAQ5jD,GACjB,MAAMqkD,EAAWD,EAAO9oB,IAAI+oB,SACtBnb,EAAQO,EAAO2a,EAAOlb,OACtB9C,EAAS8C,GAASkb,EAAOL,YAAc7a,EAAM52B,OAC/C8xC,EAAOtO,YACTsO,EAAOh7B,MAAQgd,EAASA,EAAS8d,EAAeG,GAAYR,EAAOS,eACnEF,EAAOr4B,OAASo4B,IAEhBC,EAAOh7B,MAAQ86B,EACfE,EAAOr4B,OAASqa,EAASA,EAAS+d,EAAgBE,GAAYR,EAAOU,gBAEzE,CACA,OAAO9a,CACT,CAmBA,SAAS+a,GAAeC,EAAYvT,EAAWjuC,EAAGC,GAChD,OAAOf,KAAKC,IAAIqiD,EAAWxhD,GAAIiuC,EAAUjuC,IAAMd,KAAKC,IAAIqiD,EAAWvhD,GAAIguC,EAAUhuC,GACnF,CACA,SAASwhD,GAAiBD,EAAYE,GACpCF,EAAWz8B,IAAM7lB,KAAKC,IAAIqiD,EAAWz8B,IAAK28B,EAAW38B,KACrDy8B,EAAWt8B,KAAOhmB,KAAKC,IAAIqiD,EAAWt8B,KAAMw8B,EAAWx8B,MACvDs8B,EAAWv8B,OAAS/lB,KAAKC,IAAIqiD,EAAWv8B,OAAQy8B,EAAWz8B,QAC3Du8B,EAAWx8B,MAAQ9lB,KAAKC,IAAIqiD,EAAWx8B,MAAO08B,EAAW18B,MAC3D,CACA,SAAS28B,GAAW1T,EAAW2S,EAAQO,EAAQ3a,GAC7C,MAAMhP,EAAM2pB,EAAO3pB,IACjBa,EAAM8oB,EAAO9oB,IACTmpB,EAAavT,EAAUuT,WAC7B,IAAKzwC,EAASymB,GAAM,CACd2pB,EAAO3sC,OACTy5B,EAAUzW,IAAQ2pB,EAAO3sC,MAE3B,MAAMyxB,EAAQO,EAAO2a,EAAOlb,QAAU,CACpCzxB,KAAM,EACNkG,MAAO,GAETurB,EAAMzxB,KAAOtV,KAAKC,IAAI8mC,EAAMzxB,KAAM2sC,EAAOtO,WAAaxa,EAAIvP,OAASuP,EAAIlS,OACvEg7B,EAAO3sC,KAAOyxB,EAAMzxB,KAAOyxB,EAAMvrB,MACjCuzB,EAAUzW,IAAQ2pB,EAAO3sC,IAC3B,CACI6jB,EAAIupB,YACNH,GAAiBD,EAAYnpB,EAAIupB,cAEnC,MAAMC,EAAW3iD,KAAKC,IAAI,EAAGyhD,EAAOkB,WAAaP,GAAeC,EAAYvT,EAAW,OAAQ,UACzF8T,EAAY7iD,KAAKC,IAAI,EAAGyhD,EAAOoB,YAAcT,GAAeC,EAAYvT,EAAW,MAAO,WAC1FgU,EAAeJ,IAAa5T,EAAU9sC,EACtC+gD,EAAgBH,IAAc9T,EAAUhvC,EAG9C,OAFAgvC,EAAU9sC,EAAI0gD,EACd5T,EAAUhvC,EAAI8iD,EACPZ,EAAOtO,WAAa,CACzBsP,KAAMF,EACNG,MAAOF,GACL,CACFC,KAAMD,EACNE,MAAOH,EAEX,CAaA,SAASI,GAAWxP,EAAY5E,GAC9B,MAAMuT,EAAavT,EAAUuT,WAC7B,SAASc,EAAmBnrB,GAC1B,MAAMzM,EAAS,CACbxF,KAAM,EACNH,IAAK,EACLC,MAAO,EACPC,OAAQ,GAKV,OAHAkS,EAAUhe,SAAQqe,IAChB9M,EAAO8M,GAAOt4B,KAAKC,IAAI8uC,EAAUzW,GAAMgqB,EAAWhqB,GAAK,IAElD9M,CACT,CACA,OAAoB43B,EAAbzP,EAAgC,CAAC,OAAQ,SAA+B,CAAC,MAAO,UACzF,CACA,SAAS0P,GAASC,EAAOvU,EAAW2S,EAAQpa,GAC1C,MAAMic,EAAa,GACnB,IAAI1lD,EAAGsV,EAAM8uC,EAAQ9oB,EAAKqqB,EAAO7mC,EACjC,IAAK9e,EAAI,EAAGsV,EAAOmwC,EAAMxhD,OAAQ0hD,EAAQ,EAAG3lD,EAAIsV,IAAQtV,EAAG,CACzDokD,EAASqB,EAAMzlD,GACfs7B,EAAM8oB,EAAO9oB,IACbA,EAAI4L,OAAOkd,EAAOh7B,OAAS8nB,EAAU9sC,EAAGggD,EAAOr4B,QAAUmlB,EAAUhvC,EAAGojD,GAAWlB,EAAOtO,WAAY5E,IACpG,MAAM0U,EAAchB,GAAW1T,EAAW2S,EAAQO,EAAQ3a,GACxD2b,EAAOQ,EAAYR,KACnBC,EAAQO,EAAYP,MACtBM,GAASP,GAAQM,EAAWzhD,OAC5B6a,EAAUA,GAAWumC,EAChB/pB,EAAI+oB,UACPqB,EAAWzuC,KAAKmtC,EAEpB,CACA,OAAOuB,GAASH,GAASE,EAAYxU,EAAW2S,EAAQpa,IAAW3qB,CACrE,CACA,SAAS+mC,GAAWvqB,EAAKnT,EAAMH,EAAKoB,EAAO2C,GACzCuP,EAAItT,IAAMA,EACVsT,EAAInT,KAAOA,EACXmT,EAAIrT,MAAQE,EAAOiB,EACnBkS,EAAIpT,OAASF,EAAM+D,EACnBuP,EAAIlS,MAAQA,EACZkS,EAAIvP,OAASA,CACf,CACA,SAAS+5B,GAAWL,EAAOvU,EAAW2S,EAAQpa,GAC5C,MAAMsc,EAAclC,EAAO97B,QAC3B,IAAI1iB,EAAI6rC,EAAU7rC,EAChBsR,EAAIu6B,EAAUv6B,EAChB,IAAK,MAAMytC,KAAUqB,EAAO,CAC1B,MAAMnqB,EAAM8oB,EAAO9oB,IACb4N,EAAQO,EAAO2a,EAAOlb,QAAU,CACpCvrB,MAAO,EACPqmC,OAAQ,EACR1xC,OAAQ,GAEJA,EAAS8xC,EAAOL,YAAc7a,EAAM52B,QAAU,EACpD,GAAI8xC,EAAOtO,WAAY,CACrB,MAAM1sB,EAAQ8nB,EAAU9sC,EAAIkO,EACtByZ,EAASmd,EAAMzxB,MAAQ6jB,EAAIvP,OAC7BzU,GAAQ4xB,EAAMxuB,SAChB/D,EAAIuyB,EAAMxuB,OAER4gB,EAAI+oB,SACNwB,GAAWvqB,EAAKyqB,EAAY59B,KAAMxR,EAAGktC,EAAOkB,WAAagB,EAAY99B,MAAQ89B,EAAY59B,KAAM4D,GAE/F85B,GAAWvqB,EAAK4V,EAAU/oB,KAAO+gB,EAAM8a,OAAQrtC,EAAGyS,EAAO2C,GAE3Dmd,EAAMxuB,MAAQ/D,EACduyB,EAAM8a,QAAU56B,EAChBzS,EAAI2kB,EAAIpT,MACV,KAAO,CACL,MAAM89B,EAAU9U,EAAUhvC,EAAIoQ,EACxB2zC,EAAS/c,EAAMzxB,MAAQ6jB,EAAIlS,MAC7B9R,GAAQ4xB,EAAMxuB,SAChBrV,EAAI6jC,EAAMxuB,OAER4gB,EAAI+oB,SACNwB,GAAWvqB,EAAKj2B,EAAG0gD,EAAY/9B,IAAKi+B,EAAQpC,EAAOoB,YAAcc,EAAY79B,OAAS69B,EAAY/9B,KAElG69B,GAAWvqB,EAAKj2B,EAAG6rC,EAAUlpB,IAAMkhB,EAAM8a,OAAQiC,EAAQD,GAE3D9c,EAAMxuB,MAAQrV,EACd6jC,EAAM8a,QAAUgC,EAChB3gD,EAAIi2B,EAAIrT,KACV,CACF,CACAipB,EAAU7rC,EAAIA,EACd6rC,EAAUv6B,EAAIA,CAChB,CACA,IAAIitC,GAAU,CACZ,MAAAsC,CAAOxjC,EAAOhL,GACPgL,EAAM+iC,QACT/iC,EAAM+iC,MAAQ,IAEhB/tC,EAAK2sC,SAAW3sC,EAAK2sC,WAAY,EACjC3sC,EAAKiqC,SAAWjqC,EAAKiqC,UAAY,MACjCjqC,EAAKpF,OAASoF,EAAKpF,QAAU,EAC7BoF,EAAKyuC,QAAUzuC,EAAKyuC,SAAW,WAC7B,MAAO,CAAC,CACNC,EAAG,EACH,IAAArhB,CAAKmM,GACHx5B,EAAKqtB,KAAKmM,EACZ,GAEJ,EACAxuB,EAAM+iC,MAAMxuC,KAAKS,EACnB,EACA,SAAA2uC,CAAU3jC,EAAO4jC,GACf,MAAM5wC,EAAQgN,EAAM+iC,MAAQ/iC,EAAM+iC,MAAM1vC,QAAQuwC,IAAe,GAChD,IAAX5wC,GACFgN,EAAM+iC,MAAMtpC,OAAOzG,EAAO,EAE9B,EACA,SAAAkyB,CAAUllB,EAAOhL,EAAMzB,GACrByB,EAAK2sC,SAAWpuC,EAAQouC,SACxB3sC,EAAKiqC,SAAW1rC,EAAQ0rC,SACxBjqC,EAAKpF,OAAS2D,EAAQ3D,MACxB,EACA,MAAA40B,CAAOxkB,EAAO0G,EAAO2C,EAAQw6B,GAC3B,IAAK7jC,EACH,OAEF,MAAMqF,EAAUyJ,GAAU9O,EAAMzM,QAAQmuC,OAAOr8B,SACzCu8B,EAAiBniD,KAAKC,IAAIgnB,EAAQrB,EAAQqB,MAAO,GACjDm7B,EAAkBpiD,KAAKC,IAAI2pB,EAAShE,EAAQgE,OAAQ,GACpD05B,EAnMV,SAA0BA,GACxB,MAAMe,EAhER,SAAmBf,GACjB,MAAMe,EAAc,GACpB,IAAIxmD,EAAGsV,EAAMgmB,EAAKb,EAAKyO,EAAO6a,EAC9B,IAAK/jD,EAAI,EAAGsV,GAAQmwC,GAAS,IAAIxhD,OAAQjE,EAAIsV,IAAQtV,EAAG,CACtDs7B,EAAMmqB,EAAMzlD,GACZ,IAAIymD,EAAOnrB,EACXb,EAAMgsB,EAAK9E,SACX,IAAI+E,EAAeD,EAAKxwC,QACxBizB,EAAQwd,EAAaxd,MACrB,IAAIyd,EAAwBD,EAAa3C,YACzCA,OAAwC,IAA1B4C,EAAmC,EAAIA,EACrDH,EAAYvvC,KAAK,CACfvB,MAAO1V,EACPs7B,MACAb,MACAqb,WAAYxa,EAAI0b,eAChB1kC,OAAQgpB,EAAIhpB,OACZ42B,MAAOA,GAASzO,EAAMyO,EACtB6a,eAEJ,CACA,OAAOyC,CACT,CA0CsBI,CAAUnB,GACxBpB,EAAWX,GAAa8C,EAAYxxB,QAAO8uB,GAAQA,EAAKxoB,IAAI+oB,YAAW,GACvEl8B,EAAOu7B,GAAaF,GAAiBgD,EAAa,SAAS,GAC3Dv+B,EAAQy7B,GAAaF,GAAiBgD,EAAa,UACnDx+B,EAAM07B,GAAaF,GAAiBgD,EAAa,QAAQ,GACzDt+B,EAASw7B,GAAaF,GAAiBgD,EAAa,WACpDK,EAAmBpD,GAA4B+C,EAAa,KAC5DM,EAAiBrD,GAA4B+C,EAAa,KAChE,MAAO,CACLnC,WACA0C,WAAY5+B,EAAKqsB,OAAOxsB,GACxBg/B,eAAgB/+B,EAAMusB,OAAOsS,GAAgBtS,OAAOtsB,GAAQssB,OAAOqS,GACnE3V,UAAWsS,GAAiBgD,EAAa,aACzCS,SAAU9+B,EAAKqsB,OAAOvsB,GAAOusB,OAAOsS,GACpChR,WAAY9tB,EAAIwsB,OAAOtsB,GAAQssB,OAAOqS,GAE1C,CAkLkBK,CAAiBxkC,EAAM+iC,OAC/B0B,EAAgB1B,EAAMwB,SACtBG,EAAkB3B,EAAM3P,WAC9B9gC,EAAK0N,EAAM+iC,OAAOnqB,IACgB,oBAArBA,EAAI+rB,cACb/rB,EAAI+rB,cACN,IAEF,MAAMC,EAA0BH,EAAczhB,QAAO,CAAC0W,EAAO0H,IAASA,EAAKxoB,IAAIrlB,UAAwC,IAA7B6tC,EAAKxoB,IAAIrlB,QAAQmS,QAAoBg0B,EAAQA,EAAQ,GAAG,IAAM,EAClJyH,EAASnjD,OAAOqxC,OAAO,CAC3BgT,WAAY37B,EACZ67B,YAAal5B,EACbhE,UACAu8B,iBACAC,kBACAL,aAAcI,EAAiB,EAAIgD,EACnCnD,cAAeI,EAAkB,IAE7BE,EAAa/jD,OAAOwQ,OAAO,CAAC,EAAG6W,GACrC28B,GAAiBD,EAAYjzB,GAAU+0B,IACvC,MAAMrV,EAAYxwC,OAAOwQ,OAAO,CAC9BuzC,aACArgD,EAAGkgD,EACHpiD,EAAGqiD,EACHl/C,EAAG0iB,EAAQI,KACXxR,EAAGoR,EAAQC,KACVD,GACG0hB,EAASka,GAAcwD,EAAc3S,OAAO4S,GAAkBvD,GACpE2B,GAASC,EAAMpB,SAAUnT,EAAW2S,EAAQpa,GAC5C+b,GAAS2B,EAAejW,EAAW2S,EAAQpa,GACvC+b,GAAS4B,EAAiBlW,EAAW2S,EAAQpa,IAC/C+b,GAAS2B,EAAejW,EAAW2S,EAAQpa,GAtKjD,SAA0ByH,GACxB,MAAMuT,EAAavT,EAAUuT,WAC7B,SAAS8C,EAAU9sB,GACjB,MAAM+sB,EAASrlD,KAAKC,IAAIqiD,EAAWhqB,GAAOyW,EAAUzW,GAAM,GAE1D,OADAyW,EAAUzW,IAAQ+sB,EACXA,CACT,CACAtW,EAAUv6B,GAAK4wC,EAAU,OACzBrW,EAAU7rC,GAAKkiD,EAAU,QACzBA,EAAU,SACVA,EAAU,SACZ,CA6JIE,CAAiBvW,GACjB4U,GAAWL,EAAMsB,WAAY7V,EAAW2S,EAAQpa,GAChDyH,EAAU7rC,GAAK6rC,EAAU9sC,EACzB8sC,EAAUv6B,GAAKu6B,EAAUhvC,EACzB4jD,GAAWL,EAAMuB,eAAgB9V,EAAW2S,EAAQpa,GACpD/mB,EAAMwuB,UAAY,CAChB/oB,KAAM+oB,EAAU/oB,KAChBH,IAAKkpB,EAAUlpB,IACfC,MAAOipB,EAAU/oB,KAAO+oB,EAAU9sC,EAClC8jB,OAAQgpB,EAAUlpB,IAAMkpB,EAAUhvC,EAClC6pB,OAAQmlB,EAAUhvC,EAClBknB,MAAO8nB,EAAU9sC,GAEnB4Q,EAAKywC,EAAMvU,WAAWkT,IACpB,MAAM9oB,EAAM8oB,EAAO9oB,IACnB56B,OAAOwQ,OAAOoqB,EAAK5Y,EAAMwuB,WACzB5V,EAAI4L,OAAOgK,EAAU9sC,EAAG8sC,EAAUhvC,EAAG,CACnCimB,KAAM,EACNH,IAAK,EACLC,MAAO,EACPC,OAAQ,GACR,GAEN,GAEF,MAAMw/B,GACJ,cAAAC,CAAeh8B,EAAQoQ,GAAc,CACrC,cAAA6rB,CAAevjC,GACb,OAAO,CACT,CACA,gBAAA+Y,CAAiB1a,EAAOhR,EAAMqK,GAAW,CACzC,mBAAAshB,CAAoB3a,EAAOhR,EAAMqK,GAAW,CAC5C,mBAAAwI,GACE,OAAO,CACT,CACA,cAAAqX,CAAe3B,EAAS7Q,EAAO2C,EAAQgQ,GAGrC,OAFA3S,EAAQjnB,KAAKC,IAAI,EAAGgnB,GAAS6Q,EAAQ7Q,OACrC2C,EAASA,GAAUkO,EAAQlO,OACpB,CACL3C,QACA2C,OAAQ5pB,KAAKC,IAAI,EAAG25B,EAAc55B,KAAK4W,MAAMqQ,EAAQ2S,GAAehQ,GAExE,CACA,UAAA87B,CAAWl8B,GACT,OAAO,CACT,CACA,YAAAm8B,CAAapgB,GAAS,EAExB,MAAMqgB,WAAsBL,GAC1B,cAAAC,CAAejwC,GACb,OAAOA,GAAQA,EAAKkU,YAAclU,EAAKkU,WAAW,OAAS,IAC7D,CACA,YAAAk8B,CAAapgB,GACXA,EAAOzxB,QAAQ+N,WAAY,CAC7B,EAEF,MAAMgkC,GAAc,WACdC,GAAc,CAClBC,WAAY,YACZC,UAAW,YACXC,SAAU,UACVC,aAAc,aACdC,YAAa,YACbC,YAAa,YACbC,UAAW,UACXC,aAAc,WACdC,WAAY,YAERC,GAAgB1nD,GAAmB,OAAVA,GAA4B,KAAVA,EAoCjD,MAAM2nD,KAAuB3rB,IAA+B,CAC1DE,SAAS,GAKX,SAAS0rB,GAAenmC,EAAOhR,EAAMqK,GACnC2G,EAAMiJ,OAAO0R,oBAAoB3rB,EAAMqK,EAAU6sC,GACnD,CAcA,SAASE,GAAiBC,EAAUp9B,GAClC,IAAK,MAAMjI,KAAQqlC,EACjB,GAAIrlC,IAASiI,GAAUjI,EAAKslC,SAASr9B,GACnC,OAAO,CAGb,CACA,SAASs9B,GAAqBvmC,EAAOhR,EAAMqK,GACzC,MAAM4P,EAASjJ,EAAMiJ,OACfu9B,EAAW,IAAIC,kBAAiBC,IACpC,IAAIC,GAAU,EACd,IAAK,MAAMrU,KAASoU,EAClBC,EAAUA,GAAWP,GAAiB9T,EAAMsU,WAAY39B,GACxD09B,EAAUA,IAAYP,GAAiB9T,EAAMuU,aAAc59B,GAEzD09B,GACFttC,GACF,IAMF,OAJAmtC,EAASM,QAAQjwB,SAAU,CACzBkwB,WAAW,EACXC,SAAS,IAEJR,CACT,CACA,SAASS,GAAqBjnC,EAAOhR,EAAMqK,GACzC,MAAM4P,EAASjJ,EAAMiJ,OACfu9B,EAAW,IAAIC,kBAAiBC,IACpC,IAAIC,GAAU,EACd,IAAK,MAAMrU,KAASoU,EAClBC,EAAUA,GAAWP,GAAiB9T,EAAMuU,aAAc59B,GAC1D09B,EAAUA,IAAYP,GAAiB9T,EAAMsU,WAAY39B,GAEvD09B,GACFttC,GACF,IAMF,OAJAmtC,EAASM,QAAQjwB,SAAU,CACzBkwB,WAAW,EACXC,SAAS,IAEJR,CACT,CACA,MAAMU,GAAqB,IAAInoC,IAC/B,IAAIooC,GAAsB,EAC1B,SAASC,KACP,MAAMC,EAAMntC,OAAOwH,iBACf2lC,IAAQF,KAGZA,GAAsBE,EACtBH,GAAmBxtC,SAAQ,CAACqL,EAAQ/E,KAC9BA,EAAM8I,0BAA4Bu+B,GACpCtiC,GACF,IAEJ,CAaA,SAASuiC,GAAqBtnC,EAAOhR,EAAMqK,GACzC,MAAM4P,EAASjJ,EAAMiJ,OACfwQ,EAAYxQ,GAAU6N,GAAe7N,GAC3C,IAAKwQ,EACH,OAEF,MAAM1U,EAAS3K,IAAU,CAACsM,EAAO2C,KAC/B,MAAM3nB,EAAI+3B,EAAUI,YACpBxgB,EAASqN,EAAO2C,GACZ3nB,EAAI+3B,EAAUI,aAChBxgB,GACF,GACCa,QACGssC,EAAW,IAAIe,gBAAeb,IAClC,MAAMpU,EAAQoU,EAAQ,GAChBhgC,EAAQ4rB,EAAMkV,YAAY9gC,MAC1B2C,EAASipB,EAAMkV,YAAYn+B,OACnB,IAAV3C,GAA0B,IAAX2C,GAGnBtE,EAAO2B,EAAO2C,EAAO,IAIvB,OAFAm9B,EAASM,QAAQrtB,GAlCnB,SAAuCzZ,EAAO+E,GACvCmiC,GAAmBnyC,MACtBmF,OAAOwgB,iBAAiB,SAAU0sB,IAEpCF,GAAmBrtC,IAAImG,EAAO+E,EAChC,CA8BE0iC,CAA8BznC,EAAO+E,GAC9ByhC,CACT,CACA,SAASkB,GAAgB1nC,EAAOhR,EAAMw3C,GAChCA,GACFA,EAASmB,aAEE,WAAT34C,GApCN,SAAyCgR,GACvCknC,GAAmBh1B,OAAOlS,GACrBknC,GAAmBnyC,MACtBmF,OAAOygB,oBAAoB,SAAUysB,GAEzC,CAgCIQ,CAAgC5nC,EAEpC,CACA,SAAS6nC,GAAqB7nC,EAAOhR,EAAMqK,GACzC,MAAM4P,EAASjJ,EAAMiJ,OACfuH,EAAQpW,IAAU+d,IACJ,OAAdnY,EAAMsC,KACRjJ,EAxHN,SAAyB8e,EAAOnY,GAC9B,MAAMhR,EAAOu2C,GAAYptB,EAAMnpB,OAASmpB,EAAMnpB,KACxC84C,EAAuB5vB,GAAoBC,EAAOnY,GACtDrd,EAAImlD,EAAqBnlD,EACzBsR,EAAI6zC,EAAqB7zC,EAC3B,MAAO,CACLjF,OACAgR,QACA+nC,OAAQ5vB,EACRx1B,OAASzB,IAANyB,EAAkBA,EAAI,KACzBsR,OAAS/S,IAAN+S,EAAkBA,EAAI,KAE7B,CA4Ge+zC,CAAgB7vB,EAAOnY,GAClC,GACCA,GAEH,OAlIF,SAAqBgB,EAAMhS,EAAMqK,GAC/B2H,EAAK0Z,iBAAiB1rB,EAAMqK,EAAU6sC,GACxC,CA+HE+B,CAAYh/B,EAAQja,EAAMwhB,GACnBA,CACT,CACA,MAAM,WAAoBw0B,GACxB,cAAAC,CAAeh8B,EAAQoQ,GACrB,MAAM1X,EAAUsH,GAAUA,EAAOC,YAAcD,EAAOC,WAAW,MACjE,OAAIvH,GAAWA,EAAQsH,SAAWA,GA7KtC,SAAoBA,EAAQoQ,GAC1B,MAAMnX,EAAQ+G,EAAO/G,MACfgmC,EAAej/B,EAAOk/B,aAAa,UACnCC,EAAcn/B,EAAOk/B,aAAa,SAcxC,GAbAl/B,EAAOq8B,IAAe,CACpBzjB,QAAS,CACPxY,OAAQ6+B,EACRxhC,MAAO0hC,EACPlmC,MAAO,CACLwD,QAASxD,EAAMwD,QACf2D,OAAQnH,EAAMmH,OACd3C,MAAOxE,EAAMwE,SAInBxE,EAAMwD,QAAUxD,EAAMwD,SAAW,QACjCxD,EAAMmW,UAAYnW,EAAMmW,WAAa,aACjC4tB,GAAcmC,GAAc,CAC9B,MAAMC,EAAeztB,GAAa3R,EAAQ,cACrB/nB,IAAjBmnD,IACFp/B,EAAOvC,MAAQ2hC,EAEnB,CACA,GAAIpC,GAAciC,GAChB,GAA4B,KAAxBj/B,EAAO/G,MAAMmH,OACfJ,EAAOI,OAASJ,EAAOvC,OAAS2S,GAAe,OAC1C,CACL,MAAMivB,EAAgB1tB,GAAa3R,EAAQ,eACrB/nB,IAAlBonD,IACFr/B,EAAOI,OAASi/B,EAEpB,CAGJ,CA4IMC,CAAWt/B,EAAQoQ,GACZ1X,GAEF,IACT,CACA,cAAAujC,CAAevjC,GACb,MAAMsH,EAAStH,EAAQsH,OACvB,IAAKA,EAAOq8B,IACV,OAAO,EAET,MAAMzjB,EAAU5Y,EAAOq8B,IAAazjB,QACpC,CAAC,SAAU,SAASnoB,SAAQiV,IAC1B,MAAMpwB,EAAQsjC,EAAQlT,GAClBxd,EAAc5S,GAChB0qB,EAAOu/B,gBAAgB75B,GAEvB1F,EAAOw/B,aAAa95B,EAAMpwB,EAC5B,IAEF,MAAM2jB,EAAQ2f,EAAQ3f,OAAS,CAAC,EAMhC,OALAlkB,OAAOuP,KAAK2U,GAAOxI,SAAQ7a,IACzBoqB,EAAO/G,MAAMrjB,GAAOqjB,EAAMrjB,EAAI,IAEhCoqB,EAAOvC,MAAQuC,EAAOvC,aACfuC,EAAOq8B,KACP,CACT,CACA,gBAAA5qB,CAAiB1a,EAAOhR,EAAMqK,GAC5BlK,KAAKwrB,oBAAoB3a,EAAOhR,GAChC,MAAM05C,EAAU1oC,EAAM2oC,WAAa3oC,EAAM2oC,SAAW,CAAC,GAM/CzJ,EALW,CACf0J,OAAQrC,GACRsC,OAAQ5B,GACRliC,OAAQuiC,IAEet4C,IAAS64C,GAClCa,EAAQ15C,GAAQkwC,EAAQl/B,EAAOhR,EAAMqK,EACvC,CACA,mBAAAshB,CAAoB3a,EAAOhR,GACzB,MAAM05C,EAAU1oC,EAAM2oC,WAAa3oC,EAAM2oC,SAAW,CAAC,GAC/Cn4B,EAAQk4B,EAAQ15C,GACtB,IAAKwhB,EACH,QAEe,CACfo4B,OAAQlB,GACRmB,OAAQnB,GACR3iC,OAAQ2iC,IAEe14C,IAASm3C,IAC1BnmC,EAAOhR,EAAMwhB,GACrBk4B,EAAQ15C,QAAQ9N,CAClB,CACA,mBAAA2gB,GACE,OAAO3H,OAAOwH,gBAChB,CACA,cAAAwX,CAAejQ,EAAQvC,EAAO2C,EAAQgQ,GACpC,OAAOH,GAAejQ,EAAQvC,EAAO2C,EAAQgQ,EAC/C,CACA,UAAA8rB,CAAWl8B,GACT,MAAMwQ,EAAY3C,GAAe7N,GACjC,SAAUwQ,IAAaA,EAAUqvB,YACnC,EAEF,SAASC,GAAgB9/B,GACvB,OAAK2N,MAAgD,qBAApBoyB,iBAAmC//B,aAAkB+/B,gBAC7E3D,GAEF,EACT,CACA,MAAM,GACJ,WAAAt2C,GACEI,KAAK2V,QAAS,CAChB,CACA,eAAAmkC,CAAgB1J,GACd,MAAM2J,EAAiB/5C,KAAKkxC,SAAS,CAAC,IAAK,KAAMd,GAGjD,MAAO,CACL58C,EAHIumD,EAAevmD,EAInBsR,EAHIi1C,EAAej1C,EAKvB,CACA,QAAAk1C,GACE,OAAO5yC,GAASpH,KAAKxM,IAAM4T,GAASpH,KAAK8E,EAC3C,CACA,QAAAosC,CAAS7xB,EAAO46B,GACd,MAAM3nB,EAAQtyB,KAAKu2B,YACnB,IAAK0jB,IAAU3nB,EAEb,OAAOtyB,KAET,MAAMF,EAAM,CAAC,EAIb,OAHAuf,EAAM9U,SAAQiV,IACZ1f,EAAI0f,GAAQ8S,EAAM9S,IAAS8S,EAAM9S,GAAM7J,SAAW2c,EAAM9S,GAAM2V,IAAMn1B,KAAKwf,EAAK,IAEzE1f,CACT,EAIF,SAASiY,GAAS/D,EAAOpD,GACvB,MAAMspC,EAAWlmC,EAAM5P,QAAQwM,MACzBupC,EAyBR,SAA2BnmC,GACzB,MAAMwC,EAASxC,EAAM5P,QAAQoS,OACvBQ,EAAahD,EAAMomC,YACnBC,EAAWrmC,EAAM+uB,QAAU/rB,GAAcR,EAAS,EAAI,GACtD8jC,EAAWtmC,EAAMumC,WAAavjC,EACpC,OAAO1mB,KAAK4W,MAAM5W,KAAKE,IAAI6pD,EAAUC,GACvC,CA/B6BE,CAAkBxmC,GACvCymC,EAAanqD,KAAKE,IAAI0pD,EAASQ,eAAiBP,EAAoBA,GACpEQ,EAAeT,EAAS/hC,MAAMyiC,QA6CtC,SAAyBhqC,GACvB,MAAM+X,EAAS,GACf,IAAIx6B,EAAGsV,EACP,IAAKtV,EAAI,EAAGsV,EAAOmN,EAAMxe,OAAQjE,EAAIsV,EAAMtV,IACrCyiB,EAAMziB,GAAGgqB,OACXwQ,EAAOvjB,KAAKjX,GAGhB,OAAOw6B,CACT,CAtDgDkyB,CAAgBjqC,GAAS,GACjEkqC,EAAkBH,EAAavoD,OAC/B2oD,EAAQJ,EAAa,GACrB9wC,EAAO8wC,EAAaG,EAAkB,GACtCE,EAAW,GACjB,GAAIF,EAAkBL,EAEpB,OAgDJ,SAAoB7pC,EAAOoqC,EAAUL,EAAc/R,GACjD,IAEIz6C,EAFA2d,EAAQ,EACRuZ,EAAOs1B,EAAa,GAGxB,IADA/R,EAAUt4C,KAAK2qD,KAAKrS,GACfz6C,EAAI,EAAGA,EAAIyiB,EAAMxe,OAAQjE,IACxBA,IAAMk3B,IACR21B,EAAS51C,KAAKwL,EAAMziB,IACpB2d,IACAuZ,EAAOs1B,EAAa7uC,EAAQ88B,GAGlC,CA7DIsS,CAAWtqC,EAAOoqC,EAAUL,EAAcG,EAAkBL,GACrDO,EAET,MAAMpS,EAqBR,SAA0B+R,EAAc/pC,EAAO6pC,GAC7C,MAAMU,EA4DR,SAAwBj4B,GACtB,MAAMnjB,EAAMmjB,EAAI9wB,OAChB,IAAIjE,EAAGghD,EACP,GAAIpvC,EAAM,EACR,OAAO,EAET,IAAKovC,EAAOjsB,EAAI,GAAI/0B,EAAI,EAAGA,EAAI4R,IAAO5R,EACpC,GAAI+0B,EAAI/0B,GAAK+0B,EAAI/0B,EAAI,KAAOghD,EAC1B,OAAO,EAGX,OAAOA,CACT,CAxE2BiM,CAAeT,GAClC/R,EAAUh4B,EAAMxe,OAASqoD,EAC/B,IAAKU,EACH,OAAO7qD,KAAKC,IAAIq4C,EAAS,GAE3B,MAAMyS,EDpoGR,SAAoBjsD,GAClB,MAAMu5B,EAAS,GACTxgB,EAAO7X,KAAK6X,KAAK/Y,GACvB,IAAIjB,EACJ,IAAKA,EAAI,EAAGA,EAAIga,EAAMha,IAChBiB,EAAQjB,IAAM,IAChBw6B,EAAOvjB,KAAKjX,GACZw6B,EAAOvjB,KAAKhW,EAAQjB,IAOxB,OAJIga,KAAiB,EAAPA,IACZwgB,EAAOvjB,KAAK+C,GAEdwgB,EAAOia,MAAK,CAACxxC,EAAGC,IAAMD,EAAIC,IAAGiiC,MACtB3K,CACT,CCqnGkB2yB,CAAWH,GAC3B,IAAK,IAAIhtD,EAAI,EAAGsV,EAAO43C,EAAQjpD,OAAS,EAAGjE,EAAIsV,EAAMtV,IAAK,CACxD,MAAMomC,EAAS8mB,EAAQltD,GACvB,GAAIomC,EAASqU,EACX,OAAOrU,CAEX,CACA,OAAOjkC,KAAKC,IAAIq4C,EAAS,EAC3B,CAnCkB2S,CAAiBZ,EAAc/pC,EAAO6pC,GACtD,GAAIK,EAAkB,EAAG,CACvB,IAAI3sD,EAAGsV,EACP,MAAM+3C,EAAkBV,EAAkB,EAAIxqD,KAAK0W,OAAO6C,EAAOkxC,IAAUD,EAAkB,IAAM,KAEnG,IADA,GAAKlqC,EAAOoqC,EAAUpS,EAAS5mC,EAAcw5C,GAAmB,EAAIT,EAAQS,EAAiBT,GACxF5sD,EAAI,EAAGsV,EAAOq3C,EAAkB,EAAG3sD,EAAIsV,EAAMtV,IAChD,GAAKyiB,EAAOoqC,EAAUpS,EAAS+R,EAAaxsD,GAAIwsD,EAAaxsD,EAAI,IAGnE,OADA,GAAKyiB,EAAOoqC,EAAUpS,EAAS/+B,EAAM7H,EAAcw5C,GAAmB5qC,EAAMxe,OAASyX,EAAO2xC,GACrFR,CACT,CAEA,OADA,GAAKpqC,EAAOoqC,EAAUpS,GACfoS,CACT,CA8CA,SAAS,GAAKpqC,EAAOoqC,EAAUpS,EAAS6S,EAAYC,GAClD,MAAM7yC,EAAQpG,EAAeg5C,EAAY,GACnC3yC,EAAMxY,KAAKE,IAAIiS,EAAei5C,EAAU9qC,EAAMxe,QAASwe,EAAMxe,QACnE,IACIA,EAAQjE,EAAGk3B,EADXvZ,EAAQ,EAQZ,IANA88B,EAAUt4C,KAAK2qD,KAAKrS,GAChB8S,IACFtpD,EAASspD,EAAWD,EACpB7S,EAAUx2C,EAAS9B,KAAK4W,MAAM9U,EAASw2C,IAEzCvjB,EAAOxc,EACAwc,EAAO,GACZvZ,IACAuZ,EAAO/0B,KAAK0W,MAAM6B,EAAQiD,EAAQ88B,GAEpC,IAAKz6C,EAAImC,KAAKC,IAAIsY,EAAO,GAAI1a,EAAI2a,EAAK3a,IAChCA,IAAMk3B,IACR21B,EAAS51C,KAAKwL,EAAMziB,IACpB2d,IACAuZ,EAAO/0B,KAAK0W,MAAM6B,EAAQiD,EAAQ88B,GAGxC,CAhGA,GAAQ5zB,SAAW,CAAC,EACpB,GAAQ2mC,mBAAgB5pD,EA6GxB,MACM6pD,GAAiB,CAAC5nC,EAAO8vB,EAAMttB,IAAoB,QAATstB,GAA2B,SAATA,EAAkB9vB,EAAM8vB,GAAQttB,EAASxC,EAAM8vB,GAAQttB,EACnHqlC,GAAgB,CAACC,EAAapB,IAAkBpqD,KAAKE,IAAIkqD,GAAiBoB,EAAaA,GAC7F,SAASC,GAAO74B,EAAK84B,GACnB,MAAMrzB,EAAS,GACTszB,EAAY/4B,EAAI9wB,OAAS4pD,EACzBj8C,EAAMmjB,EAAI9wB,OAChB,IAAIjE,EAAI,EACR,KAAOA,EAAI4R,EAAK5R,GAAK8tD,EACnBtzB,EAAOvjB,KAAK8d,EAAI5yB,KAAK4W,MAAM/Y,KAE7B,OAAOw6B,CACT,CACA,SAASuzB,GAAoBloC,EAAOnQ,EAAOs4C,GACzC,MAAM/pD,EAAS4hB,EAAMpD,MAAMxe,OACrBgqD,EAAa9rD,KAAKE,IAAIqT,EAAOzR,EAAS,GACtCyW,EAAQmL,EAAMoyB,YACdt9B,EAAMkL,EAAMqyB,UACZ1/B,EAAU,KAChB,IACI6P,EADA6lC,EAAYroC,EAAMivB,gBAAgBmZ,GAEtC,KAAID,IAEA3lC,EADa,IAAXpkB,EACO9B,KAAKC,IAAI8rD,EAAYxzC,EAAOC,EAAMuzC,GACxB,IAAVx4C,GACCmQ,EAAMivB,gBAAgB,GAAKoZ,GAAa,GAExCA,EAAYroC,EAAMivB,gBAAgBmZ,EAAa,IAAM,EAEjEC,GAAaD,EAAav4C,EAAQ2S,GAAUA,EACxC6lC,EAAYxzC,EAAQlC,GAAW01C,EAAYvzC,EAAMnC,IAIvD,OAAO01C,CACT,CAcA,SAASC,GAAkBl4C,GACzB,OAAOA,EAAQ2S,UAAY3S,EAAQ4S,WAAa,CAClD,CACA,SAASulC,GAAen4C,EAASyb,GAC/B,IAAKzb,EAAQmS,QACX,OAAO,EAET,MAAM1D,EAAO+M,GAAOxb,EAAQyO,KAAMgN,GAC5B3J,EAAUyJ,GAAUvb,EAAQ8R,SAElC,OADcrjB,EAAQuR,EAAQqT,MAAQrT,EAAQqT,KAAKrlB,OAAS,GAC7CygB,EAAKG,WAAakD,EAAQgE,MAC3C,CAcA,SAASsiC,GAAWjxC,EAAOukC,EAAUzsC,GACnC,IAAIvD,EAAMwL,GAAmBC,GAI7B,OAHIlI,GAAwB,UAAbysC,IAAyBzsC,GAAwB,UAAbysC,KACjDhwC,EA7EiByL,IAAmB,SAAVA,EAAmB,QAAoB,UAAVA,EAAoB,OAASA,EA6E9EkxC,CAAa38C,IAEdA,CACT,CA6CA,MAAM,WAAc,GAClB,WAAAF,CAAY80B,GACVsQ,QACAhlC,KAAK+B,GAAK2yB,EAAI3yB,GACd/B,KAAKH,KAAO60B,EAAI70B,KAChBG,KAAKoE,aAAUrS,EACfiO,KAAKmT,IAAMuhB,EAAIvhB,IACfnT,KAAK6Q,MAAQ6jB,EAAI7jB,MACjB7Q,KAAKmW,SAAMpkB,EACXiO,KAAKqW,YAAStkB,EACdiO,KAAKsW,UAAOvkB,EACZiO,KAAKoW,WAAQrkB,EACbiO,KAAKuX,WAAQxlB,EACbiO,KAAKka,YAASnoB,EACdiO,KAAK08C,SAAW,CACdpmC,KAAM,EACNF,MAAO,EACPD,IAAK,EACLE,OAAQ,GAEVrW,KAAK2d,cAAW5rB,EAChBiO,KAAKoqB,eAAYr4B,EACjBiO,KAAK28C,gBAAa5qD,EAClBiO,KAAK48C,mBAAgB7qD,EACrBiO,KAAK68C,iBAAc9qD,EACnBiO,KAAK88C,kBAAe/qD,EACpBiO,KAAKkM,UAAOna,EACZiO,KAAK+8C,mBAAgBhrD,EACrBiO,KAAKxP,SAAMuB,EACXiO,KAAKzP,SAAMwB,EACXiO,KAAKg9C,YAASjrD,EACdiO,KAAK4Q,MAAQ,GACb5Q,KAAKi9C,eAAiB,KACtBj9C,KAAKk9C,YAAc,KACnBl9C,KAAKm9C,YAAc,KACnBn9C,KAAK+iC,QAAU,EACf/iC,KAAKu6C,WAAa,EAClBv6C,KAAKo9C,kBAAoB,CAAC,EAC1Bp9C,KAAKomC,iBAAcr0C,EACnBiO,KAAKqmC,eAAYt0C,EACjBiO,KAAK2vC,gBAAiB,EACtB3vC,KAAKq9C,cAAWtrD,EAChBiO,KAAKs9C,cAAWvrD,EAChBiO,KAAKu9C,mBAAgBxrD,EACrBiO,KAAKw9C,mBAAgBzrD,EACrBiO,KAAKy9C,aAAe,EACpBz9C,KAAK09C,aAAe,EACpB19C,KAAKwiC,OAAS,CAAC,EACfxiC,KAAK29C,mBAAoB,EACzB39C,KAAKi6B,cAAWloC,CAClB,CACA,IAAAk9C,CAAK7qC,GACHpE,KAAKoE,QAAUA,EAAQqe,WAAWziB,KAAK+Z,cACvC/Z,KAAKkM,KAAO9H,EAAQ8H,KACpBlM,KAAKs9C,SAAWt9C,KAAK4kB,MAAMxgB,EAAQ5T,KACnCwP,KAAKq9C,SAAWr9C,KAAK4kB,MAAMxgB,EAAQ7T,KACnCyP,KAAKw9C,cAAgBx9C,KAAK4kB,MAAMxgB,EAAQw5C,cACxC59C,KAAKu9C,cAAgBv9C,KAAK4kB,MAAMxgB,EAAQy5C,aAC1C,CACA,KAAAj5B,CAAM6a,EAAK57B,GACT,OAAO47B,CACT,CACA,aAAArzB,GACE,IAAIkxC,EAAWt9C,KAAKs9C,SAClBD,EAAWr9C,KAAKq9C,SAChBG,EAAgBx9C,KAAKw9C,cACrBD,EAAgBv9C,KAAKu9C,cAKvB,OAJAD,EAAW/6C,EAAgB+6C,EAAUj7C,OAAO8D,mBAC5Ck3C,EAAW96C,EAAgB86C,EAAUh7C,OAAOi8B,mBAC5Ckf,EAAgBj7C,EAAgBi7C,EAAen7C,OAAO8D,mBACtDo3C,EAAgBh7C,EAAgBg7C,EAAel7C,OAAOi8B,mBAC/C,CACL9tC,IAAK+R,EAAgB+6C,EAAUE,GAC/BjtD,IAAKgS,EAAgB86C,EAAUE,GAC/BlxC,WAAYjK,EAAek7C,GAC3BhxC,WAAYlK,EAAei7C,GAE/B,CACA,SAAApf,CAAUC,GACR,IAKIp3B,EALAg3C,EAAsB99C,KAAKoM,gBAC7B5b,EAAMstD,EAAoBttD,IAC1BD,EAAMutD,EAAoBvtD,IAC1B8b,EAAayxC,EAAoBzxC,WACjCC,EAAawxC,EAAoBxxC,WAEnC,GAAID,GAAcC,EAChB,MAAO,CACL9b,MACAD,OAGJ,MAAMwtD,EAAQ/9C,KAAKm4B,0BACnB,IAAK,IAAIhqC,EAAI,EAAGsV,EAAOs6C,EAAM3rD,OAAQjE,EAAIsV,IAAQtV,EAC/C2Y,EAAQi3C,EAAM5vD,GAAGkqC,WAAW4F,UAAUj+B,KAAMk+B,GACvC7xB,IACH7b,EAAMF,KAAKE,IAAIA,EAAKsW,EAAMtW,MAEvB8b,IACH/b,EAAMD,KAAKC,IAAIA,EAAKuW,EAAMvW,MAK9B,OAFAC,EAAM8b,GAAc9b,EAAMD,EAAMA,EAAMC,EACtCD,EAAM8b,GAAc7b,EAAMD,EAAMC,EAAMD,EAC/B,CACLC,IAAK+R,EAAgB/R,EAAK+R,EAAgBhS,EAAKC,IAC/CD,IAAKgS,EAAgBhS,EAAKgS,EAAgB/R,EAAKD,IAEnD,CACA,UAAAyiD,GACE,MAAO,CACL18B,KAAMtW,KAAK68C,aAAe,EAC1B1mC,IAAKnW,KAAK28C,YAAc,EACxBvmC,MAAOpW,KAAK88C,cAAgB,EAC5BzmC,OAAQrW,KAAK48C,eAAiB,EAElC,CACA,QAAAoB,GACE,OAAOh+C,KAAK4Q,KACd,CACA,SAAAysB,GACE,MAAM5kB,EAAOzY,KAAK6Q,MAAM4H,KACxB,OAAOzY,KAAKoE,QAAQg5B,SAAWp9B,KAAKmlC,eAAiB1sB,EAAKwlC,QAAUxlC,EAAKylC,UAAYzlC,EAAK2kB,QAAU,EACtG,CACA,aAAA+gB,GACE,IAAI9e,EAAYltC,UAAUC,OAAS,QAAsBL,IAAjBI,UAAU,GAAmBA,UAAU,GAAK6N,KAAK6Q,MAAMwuB,UAE/F,OADcr/B,KAAKk9C,cAAgBl9C,KAAKk9C,YAAcl9C,KAAKo+C,mBAAmB/e,GAEhF,CACA,YAAAmW,GACEx1C,KAAKwiC,OAAS,CAAC,EACfxiC,KAAK29C,mBAAoB,CAC3B,CACA,YAAAU,GACEv7C,EAAS9C,KAAKoE,QAAQi6C,aAAc,CAACr+C,MACvC,CACA,MAAAq1B,CAAO1X,EAAUyM,EAAWD,GAC1B,MAAMm0B,EAAiBt+C,KAAKoE,QAC1BqS,EAAc6nC,EAAe7nC,YAC7BE,EAAQ2nC,EAAe3nC,MACvBujC,EAAWoE,EAAe1tC,MACtB2tC,EAAarE,EAASqE,WAC5Bv+C,KAAKq+C,eACLr+C,KAAK2d,SAAWA,EAChB3d,KAAKoqB,UAAYA,EACjBpqB,KAAK08C,SAAWvyB,EAAUt7B,OAAOwQ,OAAO,CACtCiX,KAAM,EACNF,MAAO,EACPD,IAAK,EACLE,OAAQ,GACP8T,GACHnqB,KAAK4Q,MAAQ,KACb5Q,KAAKm9C,YAAc,KACnBn9C,KAAKi9C,eAAiB,KACtBj9C,KAAKk9C,YAAc,KACnBl9C,KAAKw+C,sBACLx+C,KAAKy+C,gBACLz+C,KAAK0+C,qBACL1+C,KAAKu6C,WAAav6C,KAAKmlC,eAAiBnlC,KAAKuX,MAAQ4S,EAAQ7T,KAAO6T,EAAQ/T,MAAQpW,KAAKka,OAASiQ,EAAQhU,IAAMgU,EAAQ9T,OACnHrW,KAAK29C,oBACR39C,KAAK2+C,mBACL3+C,KAAK4+C,sBACL5+C,KAAK6+C,kBACL7+C,KAAKg9C,ODnwEX,SAAmB8B,EAAQnoC,EAAOF,GAChC,MAAMjmB,EAAMsuD,EAAOtuD,IACjBD,EAAMuuD,EAAOvuD,IACTolD,EAASjzC,EAAYiU,GAAQpmB,EAAMC,GAAO,GAC1CuuD,EAAW,CAAC3vD,EAAOwb,IAAQ6L,GAAyB,IAAVrnB,EAAc,EAAIA,EAAQwb,EAC1E,MAAO,CACLpa,IAAKuuD,EAASvuD,GAAMF,KAAKsW,IAAI+uC,IAC7BplD,IAAKwuD,EAASxuD,EAAKolD,GAEvB,CC0vEoBqJ,CAAUh/C,KAAM2W,EAAOF,GACrCzW,KAAK29C,mBAAoB,GAE3B39C,KAAKi/C,mBACLj/C,KAAK4Q,MAAQ5Q,KAAKk/C,cAAgB,GAClCl/C,KAAKm/C,kBACL,MAAMC,EAAkBb,EAAav+C,KAAK4Q,MAAMxe,OAChD4N,KAAKq/C,sBAAsBD,EAAkBrD,GAAO/7C,KAAK4Q,MAAO2tC,GAAcv+C,KAAK4Q,OACnF5Q,KAAK+1B,YACL/1B,KAAKs/C,+BACLt/C,KAAKu/C,yBACLv/C,KAAKw/C,8BACDtF,EAAS3jC,UAAY2jC,EAASniC,UAAgC,SAApBmiC,EAASp2C,UACrD9D,KAAK4Q,MAAQmH,GAAS/X,KAAMA,KAAK4Q,OACjC5Q,KAAKm9C,YAAc,KACnBn9C,KAAKy/C,iBAEHL,GACFp/C,KAAKq/C,sBAAsBr/C,KAAK4Q,OAElC5Q,KAAK0/C,YACL1/C,KAAK2/C,MACL3/C,KAAK4/C,WACL5/C,KAAK6/C,aACP,CACA,SAAA9pB,GACE,IACIkR,EAAYE,EADZ2Y,EAAgB9/C,KAAKoE,QAAQf,QAE7BrD,KAAKmlC,gBACP8B,EAAajnC,KAAKsW,KAClB6wB,EAAWnnC,KAAKoW,QAEhB6wB,EAAajnC,KAAKmW,IAClBgxB,EAAWnnC,KAAKqW,OAChBypC,GAAiBA,GAEnB9/C,KAAKomC,YAAca,EACnBjnC,KAAKqmC,UAAYc,EACjBnnC,KAAK2vC,eAAiBmQ,EACtB9/C,KAAK+iC,QAAUoE,EAAWF,EAC1BjnC,KAAK+/C,eAAiB//C,KAAKoE,QAAQ47C,aACrC,CACA,WAAAH,GACE/8C,EAAS9C,KAAKoE,QAAQy7C,YAAa,CAAC7/C,MACtC,CACA,mBAAAw+C,GACE17C,EAAS9C,KAAKoE,QAAQo6C,oBAAqB,CAACx+C,MAC9C,CACA,aAAAy+C,GACMz+C,KAAKmlC,gBACPnlC,KAAKuX,MAAQvX,KAAK2d,SAClB3d,KAAKsW,KAAO,EACZtW,KAAKoW,MAAQpW,KAAKuX,QAElBvX,KAAKka,OAASla,KAAKoqB,UACnBpqB,KAAKmW,IAAM,EACXnW,KAAKqW,OAASrW,KAAKka,QAErBla,KAAK68C,YAAc,EACnB78C,KAAK28C,WAAa,EAClB38C,KAAK88C,aAAe,EACpB98C,KAAK48C,cAAgB,CACvB,CACA,kBAAA8B,GACE57C,EAAS9C,KAAKoE,QAAQs6C,mBAAoB,CAAC1+C,MAC7C,CACA,UAAAigD,CAAWvxD,GACTsR,KAAK6Q,MAAMqvC,cAAcxxD,EAAMsR,KAAK+Z,cACpCjX,EAAS9C,KAAKoE,QAAQ1V,GAAO,CAACsR,MAChC,CACA,gBAAA2+C,GACE3+C,KAAKigD,WAAW,mBAClB,CACA,mBAAArB,GAAuB,CACvB,eAAAC,GACE7+C,KAAKigD,WAAW,kBAClB,CACA,gBAAAhB,GACEj/C,KAAKigD,WAAW,mBAClB,CACA,UAAAf,GACE,MAAO,EACT,CACA,eAAAC,GACEn/C,KAAKigD,WAAW,kBAClB,CACA,2BAAAE,GACEr9C,EAAS9C,KAAKoE,QAAQ+7C,4BAA6B,CAACngD,MACtD,CACA,kBAAAogD,CAAmBxvC,GACjB,MAAMspC,EAAWl6C,KAAKoE,QAAQwM,MAC9B,IAAIziB,EAAGsV,EAAM4vB,EACb,IAAKllC,EAAI,EAAGsV,EAAOmN,EAAMxe,OAAQjE,EAAIsV,EAAMtV,IACzCklC,EAAOziB,EAAMziB,GACbklC,EAAK0L,MAAQj8B,EAASo3C,EAASp3C,SAAU,CAACuwB,EAAKjkC,MAAOjB,EAAGyiB,GAAQ5Q,KAErE,CACA,0BAAAqgD,GACEv9C,EAAS9C,KAAKoE,QAAQi8C,2BAA4B,CAACrgD,MACrD,CACA,4BAAAs/C,GACEx8C,EAAS9C,KAAKoE,QAAQk7C,6BAA8B,CAACt/C,MACvD,CACA,sBAAAu/C,GACE,MAAMn7C,EAAUpE,KAAKoE,QACf81C,EAAW91C,EAAQwM,MACnB0vC,EAAWzE,GAAc77C,KAAK4Q,MAAMxe,OAAQgS,EAAQwM,MAAM8pC,eAC1DhjC,EAAcwiC,EAASxiC,aAAe,EACtCC,EAAcuiC,EAASviC,YAC7B,IACIV,EAAWmT,EAAWm2B,EADtBxD,EAAgBrlC,EAEpB,IAAK1X,KAAKwgD,eAAiBtG,EAAS3jC,SAAWmB,GAAeC,GAAe2oC,GAAY,IAAMtgD,KAAKmlC,eAElG,YADAnlC,KAAK+8C,cAAgBrlC,GAGvB,MAAM+oC,EAAazgD,KAAK0gD,iBAClBC,EAAgBF,EAAWG,OAAOrpC,MAClCspC,EAAiBJ,EAAWK,QAAQ5mC,OACpCyD,EAAWvU,GAAYpJ,KAAK6Q,MAAM0G,MAAQopC,EAAe,EAAG3gD,KAAK2d,UACvE1G,EAAY7S,EAAQoS,OAASxW,KAAK2d,SAAW2iC,EAAW3iC,GAAY2iC,EAAW,GAC3EK,EAAgB,EAAI1pC,IACtBA,EAAY0G,GAAY2iC,GAAYl8C,EAAQoS,OAAS,GAAM,IAC3D4T,EAAYpqB,KAAKoqB,UAAYkyB,GAAkBl4C,EAAQwS,MAAQsjC,EAAShkC,QAAUqmC,GAAen4C,EAAQoT,MAAOxX,KAAK6Q,MAAMzM,QAAQyO,MACnI0tC,EAAmBjwD,KAAK6X,KAAKw4C,EAAgBA,EAAgBE,EAAiBA,GAC9E9D,EAAgBr1C,GAAUpX,KAAKE,IAAIF,KAAKywD,KAAK33C,IAAaq3C,EAAWK,QAAQ5mC,OAAS,GAAKjD,GAAY,EAAG,IAAK3mB,KAAKywD,KAAK33C,GAAYghB,EAAYm2B,GAAmB,EAAG,IAAMjwD,KAAKywD,KAAK33C,GAAYy3C,EAAiBN,GAAmB,EAAG,MAC1OxD,EAAgBzsD,KAAKC,IAAImnB,EAAapnB,KAAKE,IAAImnB,EAAaolC,KAE9D/8C,KAAK+8C,cAAgBA,CACvB,CACA,2BAAAyC,GACE18C,EAAS9C,KAAKoE,QAAQo7C,4BAA6B,CAACx/C,MACtD,CACA,aAAAy/C,GAAiB,CACjB,SAAAC,GACE58C,EAAS9C,KAAKoE,QAAQs7C,UAAW,CAAC1/C,MACpC,CACA,GAAA2/C,GACE,MAAM9S,EAAU,CACdt1B,MAAO,EACP2C,OAAQ,GAEJrJ,EAAQ7Q,KAAK6Q,MACjBmwC,EAAiBhhD,KAAKoE,QACtB81C,EAAW8G,EAAepwC,MAC1BqwC,EAAYD,EAAexpC,MAC3B0pC,EAAWF,EAAepqC,KACtBL,EAAUvW,KAAKwgD,aACfrb,EAAenlC,KAAKmlC,eAC1B,GAAI5uB,EAAS,CACX,MAAM4qC,EAAc5E,GAAe0E,EAAWpwC,EAAMzM,QAAQyO,MAQ5D,GAPIsyB,GACF0H,EAAQt1B,MAAQvX,KAAK2d,SACrBkvB,EAAQ3yB,OAASoiC,GAAkB4E,GAAYC,IAE/CtU,EAAQ3yB,OAASla,KAAKoqB,UACtByiB,EAAQt1B,MAAQ+kC,GAAkB4E,GAAYC,GAE5CjH,EAAS3jC,SAAWvW,KAAK4Q,MAAMxe,OAAQ,CACzC,MAAMgvD,EAAuBphD,KAAK0gD,iBAChC3F,EAAQqG,EAAqBrG,MAC7BlxC,EAAOu3C,EAAqBv3C,KAC5B+2C,EAASQ,EAAqBR,OAC9BE,EAAUM,EAAqBN,QAC3BO,EAAiC,EAAnBnH,EAAShkC,QACvBorC,EAAe95C,GAAUxH,KAAK+8C,eAC9B1uC,EAAM/d,KAAK+d,IAAIizC,GACfl0C,EAAM9c,KAAK8c,IAAIk0C,GACrB,GAAInc,EAAc,CAChB,MAAMoc,EAAcrH,EAAStiC,OAAS,EAAIxK,EAAMwzC,EAAOrpC,MAAQlJ,EAAMyyC,EAAQ5mC,OAC7E2yB,EAAQ3yB,OAAS5pB,KAAKE,IAAIwP,KAAKoqB,UAAWyiB,EAAQ3yB,OAASqnC,EAAcF,EAC3E,KAAO,CACL,MAAMG,EAAatH,EAAStiC,OAAS,EAAIvJ,EAAMuyC,EAAOrpC,MAAQnK,EAAM0zC,EAAQ5mC,OAC5E2yB,EAAQt1B,MAAQjnB,KAAKE,IAAIwP,KAAK2d,SAAUkvB,EAAQt1B,MAAQiqC,EAAaH,EACvE,CACArhD,KAAKyhD,kBAAkB1G,EAAOlxC,EAAMuD,EAAKiB,EAC3C,CACF,CACArO,KAAK0hD,iBACDvc,GACFnlC,KAAKuX,MAAQvX,KAAK+iC,QAAUlyB,EAAM0G,MAAQvX,KAAK08C,SAASpmC,KAAOtW,KAAK08C,SAAStmC,MAC7EpW,KAAKka,OAAS2yB,EAAQ3yB,SAEtBla,KAAKuX,MAAQs1B,EAAQt1B,MACrBvX,KAAKka,OAASla,KAAK+iC,QAAUlyB,EAAMqJ,OAASla,KAAK08C,SAASvmC,IAAMnW,KAAK08C,SAASrmC,OAElF,CACA,iBAAAorC,CAAkB1G,EAAOlxC,EAAMuD,EAAKiB,GAClC,MAAMszC,EAAiB3hD,KAAKoE,QAC1Bw9C,EAAuBD,EAAe/wC,MACtCrF,EAAQq2C,EAAqBr2C,MAC7B2K,EAAU0rC,EAAqB1rC,QAC/B45B,EAAW6R,EAAe7R,SACtB+R,EAAmC,IAAvB7hD,KAAK+8C,cACjB+E,EAAgC,QAAbhS,GAAoC,MAAd9vC,KAAKkM,KACpD,GAAIlM,KAAKmlC,eAAgB,CACvB,MAAM4c,EAAa/hD,KAAKijC,gBAAgB,GAAKjjC,KAAKsW,KAC5C0rC,EAAchiD,KAAKoW,MAAQpW,KAAKijC,gBAAgBjjC,KAAK4Q,MAAMxe,OAAS,GAC1E,IAAIyqD,EAAc,EACdC,EAAe,EACf+E,EACEC,GACFjF,EAAcxuC,EAAM0sC,EAAMxjC,MAC1BulC,EAAe1vC,EAAMvD,EAAKqQ,SAE1B2iC,EAAczvC,EAAM2tC,EAAM7gC,OAC1B4iC,EAAezuC,EAAMxE,EAAK0N,OAET,UAAVhM,EACTuxC,EAAejzC,EAAK0N,MACD,QAAVhM,EACTsxC,EAAc9B,EAAMxjC,MACD,UAAVhM,IACTsxC,EAAc9B,EAAMxjC,MAAQ,EAC5BulC,EAAejzC,EAAK0N,MAAQ,GAE9BvX,KAAK68C,YAAcvsD,KAAKC,KAAKssD,EAAckF,EAAa7rC,GAAWlW,KAAKuX,OAASvX,KAAKuX,MAAQwqC,GAAa,GAC3G/hD,KAAK88C,aAAexsD,KAAKC,KAAKusD,EAAekF,EAAc9rC,GAAWlW,KAAKuX,OAASvX,KAAKuX,MAAQyqC,GAAc,EACjH,KAAO,CACL,IAAIrF,EAAa9yC,EAAKqQ,OAAS,EAC3B0iC,EAAgB7B,EAAM7gC,OAAS,EACrB,UAAV3O,GACFoxC,EAAa,EACbC,EAAgB7B,EAAM7gC,QACH,QAAV3O,IACToxC,EAAa9yC,EAAKqQ,OAClB0iC,EAAgB,GAElB58C,KAAK28C,WAAaA,EAAazmC,EAC/BlW,KAAK48C,cAAgBA,EAAgB1mC,CACvC,CACF,CACA,cAAAwrC,GACM1hD,KAAK08C,WACP18C,KAAK08C,SAASpmC,KAAOhmB,KAAKC,IAAIyP,KAAK68C,YAAa78C,KAAK08C,SAASpmC,MAC9DtW,KAAK08C,SAASvmC,IAAM7lB,KAAKC,IAAIyP,KAAK28C,WAAY38C,KAAK08C,SAASvmC,KAC5DnW,KAAK08C,SAAStmC,MAAQ9lB,KAAKC,IAAIyP,KAAK88C,aAAc98C,KAAK08C,SAAStmC,OAChEpW,KAAK08C,SAASrmC,OAAS/lB,KAAKC,IAAIyP,KAAK48C,cAAe58C,KAAK08C,SAASrmC,QAEtE,CACA,QAAAupC,GACE98C,EAAS9C,KAAKoE,QAAQw7C,SAAU,CAAC5/C,MACnC,CACA,YAAAmlC,GACE,MAAM8c,EAAiBjiD,KAAKoE,QAC1B8H,EAAO+1C,EAAe/1C,KACtB4jC,EAAWmS,EAAenS,SAC5B,MAAoB,QAAbA,GAAmC,WAAbA,GAAkC,MAAT5jC,CACxD,CACA,UAAAg2C,GACE,OAAOliD,KAAKoE,QAAQouC,QACtB,CACA,qBAAA6M,CAAsBzuC,GAGpB,IAAIziB,EAAGsV,EACP,IAHAzD,KAAKmgD,8BACLngD,KAAKogD,mBAAmBxvC,GAEnBziB,EAAI,EAAGsV,EAAOmN,EAAMxe,OAAQjE,EAAIsV,EAAMtV,IACrC6T,EAAc4O,EAAMziB,GAAG4wC,SACzBnuB,EAAMtG,OAAOnc,EAAG,GAChBsV,IACAtV,KAGJ6R,KAAKqgD,4BACP,CACA,cAAAK,GACE,IAAID,EAAazgD,KAAKm9C,YACtB,IAAKsD,EAAY,CACf,MAAMlC,EAAav+C,KAAKoE,QAAQwM,MAAM2tC,WACtC,IAAI3tC,EAAQ5Q,KAAK4Q,MACb2tC,EAAa3tC,EAAMxe,SACrBwe,EAAQmrC,GAAOnrC,EAAO2tC,IAExBv+C,KAAKm9C,YAAcsD,EAAazgD,KAAKmiD,mBAAmBvxC,EAAOA,EAAMxe,OAAQ4N,KAAKoE,QAAQwM,MAAM8pC,cAClG,CACA,OAAO+F,CACT,CACA,kBAAA0B,CAAmBvxC,EAAOxe,EAAQsoD,GAChC,MAAMvnC,EAAMnT,KAAKmT,IACfivC,EAASpiD,KAAKo9C,kBACViF,EAAS,GACTC,EAAU,GACVrG,EAAY3rD,KAAK4W,MAAM9U,EAASypD,GAAczpD,EAAQsoD,IAC5D,IAEIvsD,EAAGmQ,EAAG8a,EAAM2lB,EAAOwjB,EAAUC,EAAYvpC,EAAOjG,EAAYuE,EAAO2C,EAAQuoC,EAF3EC,EAAkB,EAClBC,EAAmB,EAEvB,IAAKx0D,EAAI,EAAGA,EAAIiE,EAAQjE,GAAK8tD,EAAW,CAUtC,GATAld,EAAQnuB,EAAMziB,GAAG4wC,MACjBwjB,EAAWviD,KAAK4iD,wBAAwBz0D,GACxCglB,EAAIN,KAAO2vC,EAAaD,EAAS3pC,OACjCK,EAAQmpC,EAAOI,GAAcJ,EAAOI,IAAe,CACjD/pC,KAAM,CAAC,EACPC,GAAI,IAEN1F,EAAauvC,EAASvvC,WACtBuE,EAAQ2C,EAAS,EACZlY,EAAc+8B,IAAWlsC,EAAQksC,IAG/B,GAAIlsC,EAAQksC,GACjB,IAAKzgC,EAAI,EAAG8a,EAAO2lB,EAAM3sC,OAAQkM,EAAI8a,IAAQ9a,EAC3CmkD,EAAc1jB,EAAMzgC,GACf0D,EAAcygD,IAAiB5vD,EAAQ4vD,KAC1ClrC,EAAQiB,GAAarF,EAAK8F,EAAMR,KAAMQ,EAAMP,GAAInB,EAAOkrC,GACvDvoC,GAAUlH,QAPduE,EAAQiB,GAAarF,EAAK8F,EAAMR,KAAMQ,EAAMP,GAAInB,EAAOwnB,GACvD7kB,EAASlH,EAUXqvC,EAAOj9C,KAAKmS,GACZ+qC,EAAQl9C,KAAK8U,GACbwoC,EAAkBpyD,KAAKC,IAAIgnB,EAAOmrC,GAClCC,EAAmBryD,KAAKC,IAAI2pB,EAAQyoC,EACtC,EAljBJ,SAAwBP,EAAQhwD,GAC9B+Q,EAAKi/C,GAAQnpC,IACX,MAAMP,EAAKO,EAAMP,GACXc,EAAQd,EAAGtmB,OAAS,EAC1B,IAAIjE,EACJ,GAAIqrB,EAAQpnB,EAAQ,CAClB,IAAKjE,EAAI,EAAGA,EAAIqrB,IAASrrB,SAChB8qB,EAAMR,KAAKC,EAAGvqB,IAEvBuqB,EAAGpO,OAAO,EAAGkP,EACf,IAEJ,CAuiBIN,CAAekpC,EAAQhwD,GACvB,MAAMwuD,EAASyB,EAAOn+C,QAAQw+C,GACxB5B,EAAUwB,EAAQp+C,QAAQy+C,GAC1BE,EAAUC,IAAO,CACrBvrC,MAAO8qC,EAAOS,IAAQ,EACtB5oC,OAAQooC,EAAQQ,IAAQ,IAE1B,MAAO,CACL/H,MAAO8H,EAAQ,GACfh5C,KAAMg5C,EAAQzwD,EAAS,GACvBwuD,OAAQiC,EAAQjC,GAChBE,QAAS+B,EAAQ/B,GACjBuB,SACAC,UAEJ,CACA,gBAAAtjB,CAAiB5vC,GACf,OAAOA,CACT,CACA,gBAAAmd,CAAiBnd,EAAOyU,GACtB,OAAOm6B,GACT,CACA,gBAAAoJ,CAAiB1tB,GAAQ,CACzB,eAAAupB,CAAgBp/B,GACd,MAAM+M,EAAQ5Q,KAAK4Q,MACnB,OAAI/M,EAAQ,GAAKA,EAAQ+M,EAAMxe,OAAS,EAC/B,KAEF4N,KAAKuM,iBAAiBqE,EAAM/M,GAAOzU,MAC5C,CACA,kBAAA83C,CAAmB6b,GACb/iD,KAAK2vC,iBACPoT,EAAU,EAAIA,GAEhB,MAAMrpC,EAAQ1Z,KAAKomC,YAAc2c,EAAU/iD,KAAK+iC,QAChD,ODzsHK35B,GCysHcpJ,KAAK+/C,eAAiBtmC,GAAYzZ,KAAK6Q,MAAO6I,EAAO,GAAKA,GDzsHpD,MAAO,MC0sHlC,CACA,kBAAAspC,CAAmBtpC,GACjB,MAAMqpC,GAAWrpC,EAAQ1Z,KAAKomC,aAAepmC,KAAK+iC,QAClD,OAAO/iC,KAAK2vC,eAAiB,EAAIoT,EAAUA,CAC7C,CACA,YAAA7d,GACE,OAAOllC,KAAKuM,iBAAiBvM,KAAKijD,eACpC,CACA,YAAAA,GACE,MAAMzyD,EAAMwP,KAAKxP,IACfD,EAAMyP,KAAKzP,IACb,OAAOC,EAAM,GAAKD,EAAM,EAAIA,EAAMC,EAAM,GAAKD,EAAM,EAAIC,EAAM,CAC/D,CACA,UAAAupB,CAAWlW,GACT,MAAM+M,EAAQ5Q,KAAK4Q,OAAS,GAC5B,GAAI/M,GAAS,GAAKA,EAAQ+M,EAAMxe,OAAQ,CACtC,MAAMihC,EAAOziB,EAAM/M,GACnB,OAAOwvB,EAAK4G,WAAa5G,EAAK4G,SAzkBpC,SAA2BjW,EAAQngB,EAAOwvB,GACxC,OAAOhT,GAAc2D,EAAQ,CAC3BqP,OACAxvB,QACAhE,KAAM,QAEV,CAmkB+CqjD,CAAkBljD,KAAK+Z,aAAclW,EAAOwvB,GACvF,CACA,OAAOrzB,KAAKi6B,WAAaj6B,KAAKi6B,SAhlBzB5Z,GAglBuDrgB,KAAK6Q,MAAMkJ,aAhlB5C,CAC3B/F,MA+kBqFhU,KA9kBrFH,KAAM,UA+kBR,CACA,SAAAu6C,GACE,MAAM+I,EAAcnjD,KAAKoE,QAAQwM,MAC3BwyC,EAAM57C,GAAUxH,KAAK+8C,eACrB1uC,EAAM/d,KAAKsW,IAAItW,KAAK+d,IAAI+0C,IACxBh2C,EAAM9c,KAAKsW,IAAItW,KAAK8c,IAAIg2C,IACxB3C,EAAazgD,KAAK0gD,iBAClBxqC,EAAUitC,EAAYnrC,iBAAmB,EACzCzlB,EAAIkuD,EAAaA,EAAWG,OAAOrpC,MAAQrB,EAAU,EACrD7lB,EAAIowD,EAAaA,EAAWK,QAAQ5mC,OAAShE,EAAU,EAC7D,OAAOlW,KAAKmlC,eAAiB90C,EAAIge,EAAM9b,EAAI6a,EAAM7a,EAAI8b,EAAMhe,EAAI+c,EAAM/c,EAAI+c,EAAM7a,EAAI8b,EAAMhe,EAAIge,EAAM9b,EAAI6a,CACzG,CACA,UAAAozC,GACE,MAAMjqC,EAAUvW,KAAKoE,QAAQmS,QAC7B,MAAgB,SAAZA,IACOA,EAEJvW,KAAKm4B,0BAA0B/lC,OAAS,CACjD,CACA,qBAAAixD,CAAsBhkB,GACpB,MAAMnzB,EAAOlM,KAAKkM,KACZ2E,EAAQ7Q,KAAK6Q,MACbzM,EAAUpE,KAAKoE,QACfwS,EAAOxS,EAAQwS,KACnBk5B,EAAW1rC,EAAQ0rC,SACnB14B,EAAShT,EAAQgT,OACbZ,EAASI,EAAKJ,OACd2uB,EAAenlC,KAAKmlC,eAEpB2W,EADQ97C,KAAK4Q,MACOxe,QAAUokB,EAAS,EAAI,GAC3C8sC,EAAKhH,GAAkB1lC,GACvBnM,EAAQ,GACR84C,EAAansC,EAAOqL,WAAWziB,KAAK+Z,cACpCypC,EAAYD,EAAWhtC,QAAUgtC,EAAWhsC,MAAQ,EACpDksC,EAAgBD,EAAY,EAC5BE,EAAmB,SAAUhqC,GACjC,OAAOD,GAAY5I,EAAO6I,EAAO8pC,EACnC,EACA,IAAIG,EAAax1D,EAAGkuD,EAAWuH,EAC3BC,EAAKC,EAAKC,EAAKC,EAAKC,EAAIC,EAAIC,EAAIC,EACpC,GAAiB,QAAbtU,EACF6T,EAAcD,EAAiB1jD,KAAKqW,QACpCytC,EAAM9jD,KAAKqW,OAASitC,EACpBU,EAAML,EAAcF,EACpBS,EAAKR,EAAiBrkB,EAAUlpB,KAAOstC,EACvCW,EAAK/kB,EAAUhpB,YACV,GAAiB,WAAby5B,EACT6T,EAAcD,EAAiB1jD,KAAKmW,KACpC+tC,EAAK7kB,EAAUlpB,IACfiuC,EAAKV,EAAiBrkB,EAAUhpB,QAAUotC,EAC1CK,EAAMH,EAAcF,EACpBO,EAAMhkD,KAAKmW,IAAMmtC,OACZ,GAAiB,SAAbxT,EACT6T,EAAcD,EAAiB1jD,KAAKoW,OACpCytC,EAAM7jD,KAAKoW,MAAQktC,EACnBS,EAAMJ,EAAcF,EACpBQ,EAAKP,EAAiBrkB,EAAU/oB,MAAQmtC,EACxCU,EAAK9kB,EAAUjpB,WACV,GAAiB,UAAb05B,EACT6T,EAAcD,EAAiB1jD,KAAKsW,MACpC2tC,EAAK5kB,EAAU/oB,KACf6tC,EAAKT,EAAiBrkB,EAAUjpB,OAASqtC,EACzCI,EAAMF,EAAcF,EACpBM,EAAM/jD,KAAKsW,KAAOgtC,OACb,GAAa,MAATp3C,EAAc,CACvB,GAAiB,WAAb4jC,EACF6T,EAAcD,GAAkBrkB,EAAUlpB,IAAMkpB,EAAUhpB,QAAU,EAAI,SACnE,GAAIlU,EAAS2tC,GAAW,CAC7B,MAAMuU,EAAiBx1D,OAAOuP,KAAK0xC,GAAU,GACvC1gD,EAAQ0gD,EAASuU,GACvBV,EAAcD,EAAiB1jD,KAAK6Q,MAAMoD,OAAOowC,GAAgB93C,iBAAiBnd,GACpF,CACA80D,EAAK7kB,EAAUlpB,IACfiuC,EAAK/kB,EAAUhpB,OACfytC,EAAMH,EAAcF,EACpBO,EAAMF,EAAMR,CACd,MAAO,GAAa,MAATp3C,EAAc,CACvB,GAAiB,WAAb4jC,EACF6T,EAAcD,GAAkBrkB,EAAU/oB,KAAO+oB,EAAUjpB,OAAS,QAC/D,GAAIjU,EAAS2tC,GAAW,CAC7B,MAAMwU,EAAkBz1D,OAAOuP,KAAK0xC,GAAU,GACxCyU,EAASzU,EAASwU,GACxBX,EAAcD,EAAiB1jD,KAAK6Q,MAAMoD,OAAOqwC,GAAiB/3C,iBAAiBg4C,GACrF,CACAV,EAAMF,EAAcF,EACpBM,EAAMF,EAAMP,EACZW,EAAK5kB,EAAU/oB,KACf6tC,EAAK9kB,EAAUjpB,KACjB,CACA,MAAMouC,EAAQ/hD,EAAe2B,EAAQwM,MAAM8pC,cAAeoB,GACpD2I,EAAOn0D,KAAKC,IAAI,EAAGD,KAAK2qD,KAAKa,EAAc0I,IACjD,IAAKr2D,EAAI,EAAGA,EAAI2tD,EAAa3tD,GAAKs2D,EAAM,CACtC,MAAMjyC,EAAUxS,KAAK+Z,WAAW5rB,GAC1Bu2D,EAAc9tC,EAAK6L,WAAWjQ,GAC9BmyC,EAAoBvtC,EAAOqL,WAAWjQ,GACtCqE,EAAY6tC,EAAY7tC,UACxB+tC,EAAYF,EAAYlkD,MACxBivB,EAAak1B,EAAkBttC,MAAQ,GACvCqY,EAAmBi1B,EAAkBrtC,WACrCL,EAAYytC,EAAYztC,UACxBE,EAAYutC,EAAYvtC,UACxB0tC,EAAiBH,EAAYG,gBAAkB,GAC/CC,EAAuBJ,EAAYI,qBACzCzI,EAAYH,GAAoBl8C,KAAM7R,EAAGqoB,QACvBzkB,IAAdsqD,IAGJuH,EAAmBnqC,GAAY5I,EAAOwrC,EAAWxlC,GAC7CsuB,EACF0e,EAAME,EAAME,EAAKE,EAAKP,EAEtBE,EAAME,EAAME,EAAKE,EAAKR,EAExBn5C,EAAMrF,KAAK,CACTy+C,MACAC,MACAC,MACAC,MACAC,KACAC,KACAC,KACAC,KACA7sC,MAAOV,EACPrW,MAAOokD,EACPn1B,aACAC,mBACAzY,YACAE,YACA0tC,iBACAC,yBAEJ,CAGA,OAFA9kD,KAAKy9C,aAAe3B,EACpB97C,KAAK09C,aAAeiG,EACbl5C,CACT,CACA,kBAAA2zC,CAAmB/e,GACjB,MAAMnzB,EAAOlM,KAAKkM,KACZ9H,EAAUpE,KAAKoE,QACf0rC,EAAW1rC,EAAQ0rC,SACvBqT,EAAc/+C,EAAQwM,MAClBu0B,EAAenlC,KAAKmlC,eACpBv0B,EAAQ5Q,KAAK4Q,MACbrF,EAAQ43C,EAAY53C,MACxB6M,EAAa+qC,EAAY/qC,WACzBlC,EAAUitC,EAAYjtC,QACtB0B,EAASurC,EAAYvrC,OACjB0rC,EAAKhH,GAAkBl4C,EAAQwS,MAC/BmuC,EAAiBzB,EAAKptC,EACtB8uC,EAAkBptC,GAAU1B,EAAU6uC,EACtCpqC,GAAYnT,GAAUxH,KAAK+8C,eAC3BtyC,EAAQ,GACd,IAAItc,EAAGsV,EAAM4vB,EAAM0L,EAAOvrC,EAAGsR,EAAGsY,EAAW1D,EAAO7G,EAAMG,EAAYiyC,EAAWC,EAC3E7nC,EAAe,SACnB,GAAiB,QAAbyyB,EACFhrC,EAAI9E,KAAKqW,OAAS2uC,EAClB5nC,EAAYpd,KAAKmlD,+BACZ,GAAiB,WAAbrV,EACThrC,EAAI9E,KAAKmW,IAAM6uC,EACf5nC,EAAYpd,KAAKmlD,+BACZ,GAAiB,SAAbrV,EAAqB,CAC9B,MAAMhwC,EAAME,KAAKolD,wBAAwB9B,GACzClmC,EAAYtd,EAAIsd,UAChB5pB,EAAIsM,EAAItM,CACV,MAAO,GAAiB,UAAbs8C,EAAsB,CAC/B,MAAMuV,EAAOrlD,KAAKolD,wBAAwB9B,GAC1ClmC,EAAYioC,EAAKjoC,UACjB5pB,EAAI6xD,EAAK7xD,CACX,MAAO,GAAa,MAAT0Y,EAAc,CACvB,GAAiB,WAAb4jC,EACFhrC,GAAKu6B,EAAUlpB,IAAMkpB,EAAUhpB,QAAU,EAAI0uC,OACxC,GAAI5iD,EAAS2tC,GAAW,CAC7B,MAAMuU,EAAiBx1D,OAAOuP,KAAK0xC,GAAU,GACvC1gD,EAAQ0gD,EAASuU,GACvBv/C,EAAI9E,KAAK6Q,MAAMoD,OAAOowC,GAAgB93C,iBAAiBnd,GAAS21D,CAClE,CACA3nC,EAAYpd,KAAKmlD,yBACnB,MAAO,GAAa,MAATj5C,EAAc,CACvB,GAAiB,WAAb4jC,EACFt8C,GAAK6rC,EAAU/oB,KAAO+oB,EAAUjpB,OAAS,EAAI2uC,OACxC,GAAI5iD,EAAS2tC,GAAW,CAC7B,MAAMwU,EAAkBz1D,OAAOuP,KAAK0xC,GAAU,GACxCyU,EAASzU,EAASwU,GACxB9wD,EAAIwM,KAAK6Q,MAAMoD,OAAOqwC,GAAiB/3C,iBAAiBg4C,EAC1D,CACAnnC,EAAYpd,KAAKolD,wBAAwB9B,GAAIlmC,SAC/C,CACa,MAATlR,IACY,UAAVX,EACF8R,EAAe,MACI,QAAV9R,IACT8R,EAAe,WAGnB,MAAMojC,EAAazgD,KAAK0gD,iBACxB,IAAKvyD,EAAI,EAAGsV,EAAOmN,EAAMxe,OAAQjE,EAAIsV,IAAQtV,EAAG,CAC9CklC,EAAOziB,EAAMziB,GACb4wC,EAAQ1L,EAAK0L,MACb,MAAM2lB,EAAcvB,EAAY1gC,WAAWziB,KAAK+Z,WAAW5rB,IAC3DurB,EAAQ1Z,KAAKijC,gBAAgB90C,GAAKg1D,EAAYlrC,YAC9CpF,EAAO7S,KAAK4iD,wBAAwBz0D,GACpC6kB,EAAaH,EAAKG,WAClBiyC,EAAYpyD,EAAQksC,GAASA,EAAM3sC,OAAS,EAC5C,MAAMkzD,EAAYL,EAAY,EACxBzkD,EAAQkkD,EAAYlkD,MACpBwc,EAAc0nC,EAAY5sC,gBAC1BiF,EAAc2nC,EAAY7sC,gBAChC,IAuCI0F,EAvCAgoC,EAAgBnoC,EAwCpB,GAvCI+nB,GACF3xC,EAAIkmB,EACc,UAAd0D,IAEAmoC,EADEp3D,IAAMsV,EAAO,EACEzD,KAAKoE,QAAQf,QAAoB,OAAV,QACzB,IAANlV,EACQ6R,KAAKoE,QAAQf,QAAmB,QAAT,OAExB,UAKhB6hD,EAFa,QAAbpV,EACiB,SAAf13B,GAAsC,IAAbuC,GACbsqC,EAAYjyC,EAAaA,EAAa,EAC5B,WAAfoF,GACKqoC,EAAWK,QAAQ5mC,OAAS,EAAIorC,EAAYtyC,EAAaA,GAEzDytC,EAAWK,QAAQ5mC,OAASlH,EAAa,EAGtC,SAAfoF,GAAsC,IAAbuC,EACd3H,EAAa,EACF,WAAfoF,EACIqoC,EAAWK,QAAQ5mC,OAAS,EAAIorC,EAAYtyC,EAE5CytC,EAAWK,QAAQ5mC,OAAS+qC,EAAYjyC,EAGrD4E,IACFstC,IAAe,GAEA,IAAbvqC,GAAmB+pC,EAAYrsC,oBACjC7kB,GAAKwf,EAAa,EAAI1iB,KAAK8c,IAAIuN,MAGjC7V,EAAI4U,EACJwrC,GAAc,EAAID,GAAajyC,EAAa,GAG1C0xC,EAAYrsC,kBAAmB,CACjC,MAAMmtC,EAAe7lC,GAAU+kC,EAAYnsC,iBACrC2B,EAASumC,EAAW6B,QAAQn0D,GAC5BopB,EAAQkpC,EAAW4B,OAAOl0D,GAChC,IAAIgoB,EAAM+uC,EAAaM,EAAarvC,IAChCG,EAAO,EAAIkvC,EAAalvC,KAC5B,OAAQ+G,GACN,IAAK,SACHlH,GAAO+D,EAAS,EAChB,MACF,IAAK,SACH/D,GAAO+D,EAGX,OAAQkD,GACN,IAAK,SACH9G,GAAQiB,EAAQ,EAChB,MACF,IAAK,QACHjB,GAAQiB,EAGZgG,EAAW,CACTjH,OACAH,MACAoB,MAAOA,EAAQiuC,EAAajuC,MAC5B2C,OAAQA,EAASsrC,EAAatrC,OAC9B1Z,MAAOkkD,EAAYpsC,cAEvB,CACA7N,EAAMrF,KAAK,CACT25B,QACAlsB,OACAqyC,aACA9gD,QAAS,CACPuW,WACAna,QACAwc,cACAD,cACAK,UAAWmoC,EACXloC,eACAH,YAAa,CAAC1pB,EAAGsR,GACjByY,aAGN,CACA,OAAO9S,CACT,CACA,uBAAA06C,GACE,MAAMM,EAAiBzlD,KAAKoE,QAC1B0rC,EAAW2V,EAAe3V,SAC1Bl/B,EAAQ60C,EAAe70C,MAEzB,IADkBpJ,GAAUxH,KAAK+8C,eAE/B,MAAoB,QAAbjN,EAAqB,OAAS,QAEvC,IAAIvkC,EAAQ,SAQZ,MAPoB,UAAhBqF,EAAMrF,MACRA,EAAQ,OACiB,QAAhBqF,EAAMrF,MACfA,EAAQ,QACiB,UAAhBqF,EAAMrF,QACfA,EAAQ,SAEHA,CACT,CACA,uBAAA65C,CAAwB9B,GACtB,MAAMoC,EAAiB1lD,KAAKoE,QAC1B0rC,EAAW4V,EAAe5V,SAC1B6V,EAAuBD,EAAe90C,MACtCwH,EAAautC,EAAqBvtC,WAClCR,EAAS+tC,EAAqB/tC,OAC9B1B,EAAUyvC,EAAqBzvC,QAE3B6uC,EAAiBzB,EAAKptC,EACtB0qC,EAFa5gD,KAAK0gD,iBAEEE,OAAOrpC,MACjC,IAAI6F,EACA5pB,EAoDJ,MAnDiB,SAAbs8C,EACEl4B,GACFpkB,EAAIwM,KAAKoW,MAAQF,EACE,SAAfkC,EACFgF,EAAY,OACY,WAAfhF,GACTgF,EAAY,SACZ5pB,GAAKotD,EAAS,IAEdxjC,EAAY,QACZ5pB,GAAKotD,KAGPptD,EAAIwM,KAAKoW,MAAQ2uC,EACE,SAAf3sC,EACFgF,EAAY,QACY,WAAfhF,GACTgF,EAAY,SACZ5pB,GAAKotD,EAAS,IAEdxjC,EAAY,OACZ5pB,EAAIwM,KAAKsW,OAGS,UAAbw5B,EACLl4B,GACFpkB,EAAIwM,KAAKsW,KAAOJ,EACG,SAAfkC,EACFgF,EAAY,QACY,WAAfhF,GACTgF,EAAY,SACZ5pB,GAAKotD,EAAS,IAEdxjC,EAAY,OACZ5pB,GAAKotD,KAGPptD,EAAIwM,KAAKsW,KAAOyuC,EACG,SAAf3sC,EACFgF,EAAY,OACY,WAAfhF,GACTgF,EAAY,SACZ5pB,GAAKotD,EAAS,IAEdxjC,EAAY,QACZ5pB,EAAIwM,KAAKoW,QAIbgH,EAAY,QAEP,CACLA,YACA5pB,IAEJ,CACA,iBAAAoyD,GACE,GAAI5lD,KAAKoE,QAAQwM,MAAMgH,OACrB,OAEF,MAAM/G,EAAQ7Q,KAAK6Q,MACbi/B,EAAW9vC,KAAKoE,QAAQ0rC,SAC9B,MAAiB,SAAbA,GAAoC,UAAbA,EAClB,CACL35B,IAAK,EACLG,KAAMtW,KAAKsW,KACXD,OAAQxF,EAAMqJ,OACd9D,MAAOpW,KAAKoW,OAGC,QAAb05B,GAAmC,WAAbA,EACjB,CACL35B,IAAKnW,KAAKmW,IACVG,KAAM,EACND,OAAQrW,KAAKqW,OACbD,MAAOvF,EAAM0G,YALjB,CAQF,CACA,cAAAsuC,GACE,MAAM1yC,EAAMnT,KAAKmT,IACff,EAAkBpS,KAAKoE,QAAQgO,gBAC/BkE,EAAOtW,KAAKsW,KACZH,EAAMnW,KAAKmW,IACXoB,EAAQvX,KAAKuX,MACb2C,EAASla,KAAKka,OACZ9H,IACFe,EAAIgG,OACJhG,EAAIgK,UAAY/K,EAChBe,EAAIqL,SAASlI,EAAMH,EAAKoB,EAAO2C,GAC/B/G,EAAIoG,UAER,CACA,oBAAA+tB,CAAqBl4C,GACnB,MAAMwnB,EAAO5W,KAAKoE,QAAQwS,KAC1B,IAAK5W,KAAKwgD,eAAiB5pC,EAAKL,QAC9B,OAAO,EAET,MACM1S,EADQ7D,KAAK4Q,MACCk1C,WAAUz2D,GAAKA,EAAED,QAAUA,IAC/C,GAAIyU,GAAS,EAAG,CAEd,OADa+S,EAAK6L,WAAWziB,KAAK+Z,WAAWlW,IACjCgT,SACd,CACA,OAAO,CACT,CACA,QAAAkvC,CAAS1mB,GACP,MAAMzoB,EAAO5W,KAAKoE,QAAQwS,KACpBzD,EAAMnT,KAAKmT,IACX1I,EAAQzK,KAAKi9C,iBAAmBj9C,KAAKi9C,eAAiBj9C,KAAKqjD,sBAAsBhkB,IACvF,IAAIlxC,EAAGsV,EACP,MAAMuiD,EAAW,CAAC5yD,EAAIC,EAAI0f,KACnBA,EAAMwE,OAAUxE,EAAMvS,QAG3B2S,EAAIgG,OACJhG,EAAI0D,UAAY9D,EAAMwE,MACtBpE,EAAIsK,YAAc1K,EAAMvS,MACxB2S,EAAI8yC,YAAYlzC,EAAM0c,YAAc,IACpCtc,EAAI+yC,eAAiBnzC,EAAM2c,iBAC3Bvc,EAAI6H,YACJ7H,EAAIiI,OAAOhoB,EAAGI,EAAGJ,EAAG0R,GACpBqO,EAAIkI,OAAOhoB,EAAGG,EAAGH,EAAGyR,GACpBqO,EAAIuI,SACJvI,EAAIoG,UAAS,EAEf,GAAI3C,EAAKL,QACP,IAAKpoB,EAAI,EAAGsV,EAAOgH,EAAMrY,OAAQjE,EAAIsV,IAAQtV,EAAG,CAC9C,MAAM0X,EAAO4E,EAAMtc,GACfyoB,EAAKE,iBACPkvC,EAAS,CACPxyD,EAAGqS,EAAKo+C,GACRn/C,EAAGe,EAAKq+C,IACP,CACD1wD,EAAGqS,EAAKs+C,GACRr/C,EAAGe,EAAKu+C,IACPv+C,GAED+Q,EAAKG,WACPivC,EAAS,CACPxyD,EAAGqS,EAAKg+C,IACR/+C,EAAGe,EAAKi+C,KACP,CACDtwD,EAAGqS,EAAKk+C,IACRj/C,EAAGe,EAAKm+C,KACP,CACDxjD,MAAOqF,EAAKsR,UACZI,MAAO1R,EAAKoR,UACZwY,WAAY5pB,EAAKg/C,eACjBn1B,iBAAkB7pB,EAAKi/C,sBAG7B,CAEJ,CACA,UAAAqB,GACE,MAAMt1C,EAAQ7Q,KAAK6Q,MACjBsC,EAAMnT,KAAKmT,IACXizC,EAAkBpmD,KAAKoE,QACvBgT,EAASgvC,EAAgBhvC,OACzBR,EAAOwvC,EAAgBxvC,KACnB2sC,EAAansC,EAAOqL,WAAWziB,KAAK+Z,cACpCypC,EAAYpsC,EAAOb,QAAUgtC,EAAWhsC,MAAQ,EACtD,IAAKisC,EACH,OAEF,MAAM6C,EAAgBzvC,EAAK6L,WAAWziB,KAAK+Z,WAAW,IAAIlD,UACpD8sC,EAAc3jD,KAAK09C,aACzB,IAAIuG,EAAIE,EAAID,EAAIE,EACZpkD,KAAKmlC,gBACP8e,EAAKxqC,GAAY5I,EAAO7Q,KAAKsW,KAAMktC,GAAaA,EAAY,EAC5DW,EAAK1qC,GAAY5I,EAAO7Q,KAAKoW,MAAOiwC,GAAiBA,EAAgB,EACrEnC,EAAKE,EAAKT,IAEVO,EAAKzqC,GAAY5I,EAAO7Q,KAAKmW,IAAKqtC,GAAaA,EAAY,EAC3DY,EAAK3qC,GAAY5I,EAAO7Q,KAAKqW,OAAQgwC,GAAiBA,EAAgB,EACtEpC,EAAKE,EAAKR,GAEZxwC,EAAIgG,OACJhG,EAAI0D,UAAY0sC,EAAWhsC,MAC3BpE,EAAIsK,YAAc8lC,EAAW/iD,MAC7B2S,EAAI6H,YACJ7H,EAAIiI,OAAO6oC,EAAIC,GACf/wC,EAAIkI,OAAO8oC,EAAIC,GACfjxC,EAAIuI,SACJvI,EAAIoG,SACN,CACA,UAAA+sC,CAAWjnB,GAET,IADoBr/B,KAAKoE,QAAQwM,MAChB2F,QACf,OAEF,MAAMpD,EAAMnT,KAAKmT,IACX0I,EAAO7b,KAAK4lD,oBACd/pC,GACFE,GAAS5I,EAAK0I,GAEhB,MAAMpR,EAAQzK,KAAKm+C,cAAc9e,GACjC,IAAK,MAAMx5B,KAAQ4E,EAAO,CACxB,MAAM87C,EAAoB1gD,EAAKzB,QACzBm+C,EAAW18C,EAAKgN,KAGtB+J,GAAWzJ,EAFGtN,EAAKk5B,MAEI,EADbl5B,EAAKq/C,WACc3C,EAAUgE,EACzC,CACI1qC,GACFI,GAAW9I,EAEf,CACA,SAAAqzC,GACE,MAAMrzC,EAAMnT,KAAKmT,IACfszC,EAAkBzmD,KAAKoE,QACvB0rC,EAAW2W,EAAgB3W,SAC3Bt4B,EAAQivC,EAAgBjvC,MACxBnU,EAAUojD,EAAgBpjD,QAC5B,IAAKmU,EAAMjB,QACT,OAEF,MAAM1D,EAAO+M,GAAOpI,EAAM3E,MACpBqD,EAAUyJ,GAAUnI,EAAMtB,SAC1B3K,EAAQiM,EAAMjM,MACpB,IAAIiL,EAAS3D,EAAKG,WAAa,EACd,WAAb88B,GAAsC,WAAbA,GAAyB3tC,EAAS2tC,IAC7Dt5B,GAAUN,EAAQG,OACdxjB,EAAQ2kB,EAAMC,QAChBjB,GAAU3D,EAAKG,YAAcwE,EAAMC,KAAKrlB,OAAS,KAGnDokB,GAAUN,EAAQC,IAEpB,MAAMuwC,EAzmCV,SAAmB1yC,EAAOwC,EAAQs5B,EAAUvkC,GAC1C,MAAM4K,EAAMnC,EAAMmC,IAChBG,EAAOtC,EAAMsC,KACbD,EAASrC,EAAMqC,OACfD,EAAQpC,EAAMoC,MACdvF,EAAQmD,EAAMnD,MACVwuB,EAAYxuB,EAAMwuB,UACtBprB,EAASpD,EAAMoD,OACjB,IACI0J,EAAUgpC,EAAQC,EADlBjsC,EAAW,EAEf,MAAMT,EAAS7D,EAASF,EAClBoB,EAAQnB,EAAQE,EACtB,GAAItC,EAAMmxB,eAAgB,CAExB,GADAwhB,EAASn7C,GAAeD,EAAO+K,EAAMF,GACjCjU,EAAS2tC,GAAW,CACtB,MAAMuU,EAAiBx1D,OAAOuP,KAAK0xC,GAAU,GACvC1gD,EAAQ0gD,EAASuU,GACvBuC,EAAS3yC,EAAOowC,GAAgB93C,iBAAiBnd,GAAS8qB,EAAS1D,CACrE,MACEowC,EADsB,WAAb9W,GACCzQ,EAAUhpB,OAASgpB,EAAUlpB,KAAO,EAAI+D,EAAS1D,EAElDolC,GAAe5nC,EAAO87B,EAAUt5B,GAE3CmH,EAAWvH,EAAQE,CACrB,KAAO,CACL,GAAInU,EAAS2tC,GAAW,CACtB,MAAMwU,EAAkBz1D,OAAOuP,KAAK0xC,GAAU,GACxCyU,EAASzU,EAASwU,GACxBqC,EAAS1yC,EAAOqwC,GAAiB/3C,iBAAiBg4C,GAAUhtC,EAAQf,CACtE,MACEmwC,EADsB,WAAb7W,GACCzQ,EAAU/oB,KAAO+oB,EAAUjpB,OAAS,EAAImB,EAAQf,EAEjDolC,GAAe5nC,EAAO87B,EAAUt5B,GAE3CowC,EAASp7C,GAAeD,EAAO8K,EAAQF,GACvCwE,EAAwB,SAAbm1B,GAAuBzpC,GAAUA,EAC9C,CACA,MAAO,CACLsgD,SACAC,SACAjpC,WACAhD,WAEJ,CA8jCuBksC,CAAU7mD,KAAMwW,EAAQs5B,EAAUvkC,GACnDo7C,EAASD,EAAWC,OACpBC,EAASF,EAAWE,OACpBjpC,EAAW+oC,EAAW/oC,SACtBhD,EAAW+rC,EAAW/rC,SACxBiC,GAAWzJ,EAAKqE,EAAMC,KAAM,EAAG,EAAG5E,EAAM,CACtCrS,MAAOgX,EAAMhX,MACbmd,WACAhD,WACAyC,UAAWo/B,GAAWjxC,EAAOukC,EAAUzsC,GACvCga,aAAc,SACdH,YAAa,CAACypC,EAAQC,IAE1B,CACA,IAAA1zB,CAAKmM,GACEr/B,KAAKwgD,eAGVxgD,KAAK6lD,iBACL7lD,KAAK+lD,SAAS1mB,GACdr/B,KAAKmmD,aACLnmD,KAAKwmD,YACLxmD,KAAKsmD,WAAWjnB,GAClB,CACA,OAAAiV,GACE,MAAMz3B,EAAO7c,KAAKoE,QACZ0iD,EAAKjqC,EAAKjM,OAASiM,EAAKjM,MAAM2jC,GAAK,EACnCwS,EAAKtkD,EAAeoa,EAAKjG,MAAQiG,EAAKjG,KAAK29B,GAAI,GAC/CyS,EAAKvkD,EAAeoa,EAAKzF,QAAUyF,EAAKzF,OAAOm9B,EAAG,GACxD,OAAKv0C,KAAKwgD,cAAgBxgD,KAAKkzB,OAAS,GAAMnjC,UAAUmjC,KAQjD,CAAC,CACNqhB,EAAGwS,EACH7zB,KAAMmM,IACJr/B,KAAK6lD,iBACL7lD,KAAK+lD,SAAS1mB,GACdr/B,KAAKwmD,WAAW,GAEjB,CACDjS,EAAGyS,EACH9zB,KAAM,KACJlzB,KAAKmmD,YAAY,GAElB,CACD5R,EAAGuS,EACH5zB,KAAMmM,IACJr/B,KAAKsmD,WAAWjnB,EAAU,IAtBrB,CAAC,CACNkV,EAAGuS,EACH5zB,KAAMmM,IACJr/B,KAAKkzB,KAAKmM,EAAU,GAsB5B,CACA,uBAAAlH,CAAwBt4B,GACtB,MAAMk+C,EAAQ/9C,KAAK6Q,MAAMm/B,+BACnBiX,EAASjnD,KAAKkM,KAAO,SACrByc,EAAS,GACf,IAAIx6B,EAAGsV,EACP,IAAKtV,EAAI,EAAGsV,EAAOs6C,EAAM3rD,OAAQjE,EAAIsV,IAAQtV,EAAG,CAC9C,MAAMud,EAAOqyC,EAAM5vD,GACfud,EAAKu7C,KAAYjnD,KAAK+B,IAAQlC,GAAQ6L,EAAK7L,OAASA,GACtD8oB,EAAOvjB,KAAKsG,EAEhB,CACA,OAAOid,CACT,CACA,uBAAAi6B,CAAwB/+C,GAEtB,OAAO+b,GADM5f,KAAKoE,QAAQwM,MAAM6R,WAAWziB,KAAK+Z,WAAWlW,IACxCgP,KACrB,CACA,UAAAq0C,GACE,MAAMC,EAAWnnD,KAAK4iD,wBAAwB,GAAG5vC,WACjD,OAAQhT,KAAKmlC,eAAiBnlC,KAAKuX,MAAQvX,KAAKka,QAAUitC,CAC5D,EAEF,MAAM,GACJ,WAAAvnD,CAAYC,EAAMkS,EAAOsC,GACvBrU,KAAKH,KAAOA,EACZG,KAAK+R,MAAQA,EACb/R,KAAKqU,SAAWA,EAChBrU,KAAKyK,MAAQ5b,OAAOY,OAAO,KAC7B,CACA,SAAA23D,CAAUvnD,GACR,OAAOhR,OAAOkB,UAAUs3D,cAAc/4D,KAAK0R,KAAKH,KAAK9P,UAAW8P,EAAK9P,UACvE,CACA,QAAAu3D,CAASzhD,GACP,MAAMzG,EAAQvQ,OAAOgzB,eAAehc,GACpC,IAAI0hD,GA2DR,SAA2BnoD,GACzB,MAAO,OAAQA,GAAS,aAAcA,CACxC,EA5DQooD,CAAkBpoD,KACpBmoD,EAAcvnD,KAAKsnD,SAASloD,IAE9B,MAAMqL,EAAQzK,KAAKyK,MACb1I,EAAK8D,EAAK9D,GACVgQ,EAAQ/R,KAAK+R,MAAQ,IAAMhQ,EACjC,IAAKA,EACH,MAAM,IAAI8gB,MAAM,2BAA6Bhd,GAE/C,OAAI9D,KAAM0I,IAGVA,EAAM1I,GAAM8D,EAyBhB,SAA0BA,EAAMkM,EAAOw1C,GACrC,MAAME,EAAeljD,EAAM1V,OAAOY,OAAO,MAAO,CAAC83D,EAAcvyC,GAAShmB,IAAIu4D,GAAe,CAAC,EAAGvyC,GAAShmB,IAAI+iB,GAAQlM,EAAKmP,WACzHA,GAAStK,IAAIqH,EAAO01C,GAChB5hD,EAAK81C,eAOX,SAAuB5pC,EAAO21C,GAC5B74D,OAAOuP,KAAKspD,GAAQn9C,SAAQza,IAC1B,MAAM63D,EAAgB73D,EAASoV,MAAM,KAC/B0iD,EAAaD,EAAcr0B,MAC3Bu0B,EAAc,CAAC91C,GAAO4wB,OAAOglB,GAAe7kC,KAAK,KACjD7d,EAAQyiD,EAAO53D,GAAUoV,MAAM,KAC/BsP,EAAavP,EAAMquB,MACnB/e,EAActP,EAAM6d,KAAK,KAC/B9N,GAASV,MAAMuzC,EAAaD,EAAYrzC,EAAaC,EAAW,GAEpE,CAhBIszC,CAAc/1C,EAAOlM,EAAK81C,eAExB91C,EAAK8c,aACP3N,GAASZ,SAASrC,EAAOlM,EAAK8c,YAElC,CAjCIolC,CAAiBliD,EAAMkM,EAAOw1C,GAC1BvnD,KAAKqU,UACPW,GAASX,SAASxO,EAAK9D,GAAI8D,EAAK8L,YALzBI,CAQX,CACA,GAAA/iB,CAAI+S,GACF,OAAO/B,KAAKyK,MAAM1I,EACpB,CACA,UAAAimD,CAAWniD,GACT,MAAM4E,EAAQzK,KAAKyK,MACb1I,EAAK8D,EAAK9D,GACVgQ,EAAQ/R,KAAK+R,MACfhQ,KAAM0I,UACDA,EAAM1I,GAEXgQ,GAAShQ,KAAMiT,GAASjD,YACnBiD,GAASjD,GAAOhQ,GACnB/B,KAAKqU,iBACA1C,GAAU5P,GAGvB,EA0BF,MAAM,GACJ,WAAAnC,GACEI,KAAKsuC,YAAc,IAAI,GAAc,GAAmB,YAAY,GACpEtuC,KAAK2S,SAAW,IAAI,GAAc,GAAS,YAC3C3S,KAAK8T,QAAU,IAAI,GAAcjlB,OAAQ,WACzCmR,KAAKiU,OAAS,IAAI,GAAc,GAAO,UACvCjU,KAAKioD,iBAAmB,CAACjoD,KAAKsuC,YAAatuC,KAAKiU,OAAQjU,KAAK2S,SAC/D,CACA,GAAA/H,GACE,IAAK,IAAIwxB,EAAOjqC,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Er5B,EAAKq5B,GAAQlqC,UAAUkqC,GAEzBr8B,KAAKkoD,MAAM,WAAYllD,EACzB,CACA,MAAAmxB,GACE,IAAK,IAAI/oB,EAAQjZ,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwY,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFrI,EAAKqI,GAASlZ,UAAUkZ,GAE1BrL,KAAKkoD,MAAM,aAAcllD,EAC3B,CACA,cAAAmlD,GACE,IAAK,IAAIC,EAAQj2D,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMw1D,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFrlD,EAAKqlD,GAASl2D,UAAUk2D,GAE1BroD,KAAKkoD,MAAM,WAAYllD,EAAMhD,KAAKsuC,YACpC,CACA,WAAA9T,GACE,IAAK,IAAI8tB,EAAQn2D,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAM01D,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFvlD,EAAKulD,GAASp2D,UAAUo2D,GAE1BvoD,KAAKkoD,MAAM,WAAYllD,EAAMhD,KAAK2S,SACpC,CACA,UAAA61C,GACE,IAAK,IAAIC,EAAQt2D,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAM61D,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpF1lD,EAAK0lD,GAASv2D,UAAUu2D,GAE1B1oD,KAAKkoD,MAAM,WAAYllD,EAAMhD,KAAK8T,QACpC,CACA,SAAA60C,GACE,IAAK,IAAIC,EAAQz2D,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMg2D,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpF7lD,EAAK6lD,GAAS12D,UAAU02D,GAE1B7oD,KAAKkoD,MAAM,WAAYllD,EAAMhD,KAAKiU,OACpC,CACA,aAAA60C,CAAc/mD,GACZ,OAAO/B,KAAK+oD,KAAKhnD,EAAI/B,KAAKsuC,YAAa,aACzC,CACA,UAAAH,CAAWpsC,GACT,OAAO/B,KAAK+oD,KAAKhnD,EAAI/B,KAAK2S,SAAU,UACtC,CACA,SAAAq2C,CAAUjnD,GACR,OAAO/B,KAAK+oD,KAAKhnD,EAAI/B,KAAK8T,QAAS,SACrC,CACA,QAAAm1C,CAASlnD,GACP,OAAO/B,KAAK+oD,KAAKhnD,EAAI/B,KAAKiU,OAAQ,QACpC,CACA,iBAAAi1C,GACE,IAAK,IAAIC,EAAQh3D,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMu2D,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFpmD,EAAKomD,GAASj3D,UAAUi3D,GAE1BppD,KAAKkoD,MAAM,aAAcllD,EAAMhD,KAAKsuC,YACtC,CACA,cAAA+a,GACE,IAAK,IAAIC,EAAQn3D,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAM02D,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFvmD,EAAKumD,GAASp3D,UAAUo3D,GAE1BvpD,KAAKkoD,MAAM,aAAcllD,EAAMhD,KAAK2S,SACtC,CACA,aAAA62C,GACE,IAAK,IAAIC,EAAQt3D,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAM62D,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpF1mD,EAAK0mD,GAASv3D,UAAUu3D,GAE1B1pD,KAAKkoD,MAAM,aAAcllD,EAAMhD,KAAK8T,QACtC,CACA,YAAA61C,GACE,IAAK,IAAIC,EAASz3D,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMg3D,GAASC,EAAS,EAAGA,EAASD,EAAQC,IACzF7mD,EAAK6mD,GAAU13D,UAAU03D,GAE3B7pD,KAAKkoD,MAAM,aAAcllD,EAAMhD,KAAKiU,OACtC,CACA,KAAAi0C,CAAMtyB,EAAQ5yB,EAAM8mD,GAClB,IAAI9mD,GAAMuH,SAAQ4lB,IAChB,MAAM45B,EAAMD,GAAiB9pD,KAAKgqD,oBAAoB75B,GAClD25B,GAAiBC,EAAI3C,UAAUj3B,IAAQ45B,IAAQ/pD,KAAK8T,SAAWqc,EAAIpuB,GACrE/B,KAAKiqD,MAAMr0B,EAAQm0B,EAAK55B,GAExBhtB,EAAKgtB,GAAKtqB,IACR,MAAMqkD,EAAUJ,GAAiB9pD,KAAKgqD,oBAAoBnkD,GAC1D7F,KAAKiqD,MAAMr0B,EAAQs0B,EAASrkD,EAAK,GAErC,GAEJ,CACA,KAAAokD,CAAMr0B,EAAQsY,EAAUic,GACtB,MAAMC,EAAc7kD,GAAYqwB,GAChC9yB,EAASqnD,EAAU,SAAWC,GAAc,GAAID,GAChDjc,EAAStY,GAAQu0B,GACjBrnD,EAASqnD,EAAU,QAAUC,GAAc,GAAID,EACjD,CACA,mBAAAH,CAAoBnqD,GAClB,IAAK,IAAI1R,EAAI,EAAGA,EAAI6R,KAAKioD,iBAAiB71D,OAAQjE,IAAK,CACrD,MAAM47D,EAAM/pD,KAAKioD,iBAAiB95D,GAClC,GAAI47D,EAAI3C,UAAUvnD,GAChB,OAAOkqD,CAEX,CACA,OAAO/pD,KAAK8T,OACd,CACA,IAAAi1C,CAAKhnD,EAAI+nD,EAAejqD,GACtB,MAAMgG,EAAOikD,EAAc96D,IAAI+S,GAC/B,QAAahQ,IAAT8T,EACF,MAAM,IAAIgd,MAAM,IAAM9gB,EAAK,yBAA2BlC,EAAO,KAE/D,OAAOgG,CACT,EAEF,IAAI,GAA0B,IAAI,GAClC,MAAM,GACJ,WAAAjG,GACEI,KAAKqqD,MAAQ,EACf,CACA,MAAAC,CAAOz5C,EAAO05C,EAAMvnD,EAAMmgB,GACX,eAATonC,IACFvqD,KAAKqqD,MAAQrqD,KAAKwqD,mBAAmB35C,GAAO,GAC5C7Q,KAAKqyB,QAAQryB,KAAKqqD,MAAOx5C,EAAO,YAElC,MAAM8R,EAAcQ,EAASnjB,KAAKiS,aAAapB,GAAOsS,OAAOA,GAAUnjB,KAAKiS,aAAapB,GACnF8X,EAAS3oB,KAAKqyB,QAAQ1P,EAAa9R,EAAO05C,EAAMvnD,GAKtD,MAJa,iBAATunD,IACFvqD,KAAKqyB,QAAQ1P,EAAa9R,EAAO,QACjC7Q,KAAKqyB,QAAQryB,KAAKqqD,MAAOx5C,EAAO,cAE3B8X,CACT,CACA,OAAA0J,CAAQ1P,EAAa9R,EAAO05C,EAAMvnD,GAChCA,EAAOA,GAAQ,CAAC,EAChB,IAAK,MAAMynD,KAAc9nC,EAAa,CACpC,MAAM+nC,EAASD,EAAWC,OAG1B,IAAyC,IAArC5nD,EAFW4nD,EAAOH,GACP,CAAC15C,EAAO7N,EAAMynD,EAAWrmD,SACXsmD,IAAqB1nD,EAAK2nD,WACrD,OAAO,CAEX,CACA,OAAO,CACT,CACA,UAAAC,GACO5oD,EAAchC,KAAKwiC,UACtBxiC,KAAK6qD,UAAY7qD,KAAKwiC,OACtBxiC,KAAKwiC,YAASzwC,EAElB,CACA,YAAAkgB,CAAapB,GACX,GAAI7Q,KAAKwiC,OACP,OAAOxiC,KAAKwiC,OAEd,MAAM7f,EAAc3iB,KAAKwiC,OAASxiC,KAAKwqD,mBAAmB35C,GAE1D,OADA7Q,KAAK8qD,oBAAoBj6C,GAClB8R,CACT,CACA,kBAAA6nC,CAAmB35C,EAAO8lB,GACxB,MAAMd,EAAShlB,GAASA,EAAMglB,OACxBzxB,EAAU3B,EAAeozB,EAAOzxB,SAAWyxB,EAAOzxB,QAAQ0P,QAAS,CAAC,GACpEA,EAWV,SAAoB+hB,GAClB,MAAMk1B,EAAW,CAAC,EACZj3C,EAAU,GACV1V,EAAOvP,OAAOuP,KAAK,GAAS0V,QAAQrJ,OAC1C,IAAK,IAAItc,EAAI,EAAGA,EAAIiQ,EAAKhM,OAAQjE,IAC/B2lB,EAAQ1O,KAAK,GAAS4jD,UAAU5qD,EAAKjQ,KAEvC,MAAM2mB,EAAQ+gB,EAAO/hB,SAAW,GAChC,IAAK,IAAIk3C,EAAK,EAAGA,EAAKl2C,EAAM1iB,OAAQ44D,IAAM,CACxC,MAAMN,EAAS51C,EAAMk2C,IACY,IAA7Bl3C,EAAQ5P,QAAQwmD,KAClB52C,EAAQ1O,KAAKslD,GACbK,EAASL,EAAO3oD,KAAM,EAE1B,CACA,MAAO,CACL+R,UACAi3C,WAEJ,CA9BoBE,CAAWp1B,GAC3B,OAAmB,IAAZzxB,GAAsBuyB,EAuCjC,SAA2B9lB,EAAOq6C,EAAO9mD,EAASuyB,GAChD,IAAI7iB,EAAUo3C,EAAMp3C,QAClBi3C,EAAWG,EAAMH,SACnB,MAAMpiC,EAAS,GACTnW,EAAU3B,EAAMkJ,aACtB,IAAK,MAAM2wC,KAAU52C,EAAS,CAC5B,MAAM/R,EAAK2oD,EAAO3oD,GACZ8a,EAAOsuC,GAAQ/mD,EAAQrC,GAAK40B,GACrB,OAAT9Z,GAGJ8L,EAAOvjB,KAAK,CACVslD,SACAtmD,QAASgnD,GAAWv6C,EAAMglB,OAAQ,CAChC60B,SACA51C,MAAOi2C,EAAShpD,IACf8a,EAAMrK,IAEb,CACA,OAAOmW,CACT,CA3D4C0iC,CAAkBx6C,EAAOiD,EAAS1P,EAASuyB,GAAhD,EACrC,CACA,mBAAAm0B,CAAoBj6C,GAClB,MAAMy6C,EAAsBtrD,KAAK6qD,WAAa,GACxCloC,EAAc3iB,KAAKwiC,OACnB2M,EAAO,CAAC/9C,EAAGC,IAAMD,EAAE+xB,QAAO3vB,IAAMnC,EAAEk6D,MAAKzmD,GAAKtR,EAAEk3D,OAAO3oD,KAAO+C,EAAE4lD,OAAO3oD,OAC3E/B,KAAKqyB,QAAQ8c,EAAKmc,EAAqB3oC,GAAc9R,EAAO,QAC5D7Q,KAAKqyB,QAAQ8c,EAAKxsB,EAAa2oC,GAAsBz6C,EAAO,QAC9D,EAsBF,SAASs6C,GAAQ/mD,EAASuyB,GACxB,OAAKA,IAAmB,IAAZvyB,GAGI,IAAZA,EACK,CAAC,EAEHA,EALE,IAMX,CAsBA,SAASgnD,GAAWv1B,EAAQ21B,EAAO3uC,EAAMrK,GACvC,IAAIk4C,EAASc,EAAMd,OACjB51C,EAAQ02C,EAAM12C,MAChB,MAAM1W,EAAOy3B,EAAO41B,gBAAgBf,GAC9BlqC,EAASqV,EAAOgH,gBAAgBhgB,EAAMze,GAI5C,OAHI0W,GAAS41C,EAAO11C,UAClBwL,EAAOpb,KAAKslD,EAAO11C,UAEd6gB,EAAOiH,eAAetc,EAAQhO,EAAS,CAAC,IAAK,CAClDgR,YAAY,EACZC,WAAW,EACXH,SAAS,GAEb,CACA,SAASooC,GAAa7rD,EAAMuE,GAC1B,MAAMunD,EAAkB32C,GAAS1C,SAASzS,IAAS,CAAC,EAEpD,QADwBuE,EAAQkO,UAAY,CAAC,GAAGzS,IAAS,CAAC,GACpCyT,WAAalP,EAAQkP,WAAaq4C,EAAgBr4C,WAAa,GACvF,CAqBA,SAASs4C,GAAc7pD,EAAI8pD,GACzB,GAAW,MAAP9pD,GAAqB,MAAPA,GAAqB,MAAPA,EAC9B,OAAOA,EAVX,IAA0B+tC,EAaxB,GADA/tC,EAAK8pD,EAAa3/C,OAXD,SADO4jC,EAYmB+b,EAAa/b,WAXjB,WAAbA,EACjB,IAEQ,SAAbA,GAAoC,UAAbA,EAClB,SADT,IAQqE/tC,EAAG3P,OAAS,GAAKw5D,GAAc7pD,EAAG,GAAGlD,cAAegtD,GAEvH,OAAO9pD,EAET,MAAM,IAAI8gB,MAAM,6BAA6Bn0B,0DAC/C,CA2CA,SAASo9D,GAAYj2B,GACnB,MAAMzxB,EAAUyxB,EAAOzxB,UAAYyxB,EAAOzxB,QAAU,CAAC,GACrDA,EAAQ0P,QAAUrR,EAAe2B,EAAQ0P,QAAS,CAAC,GACnD1P,EAAQ6P,OA7CV,SAA0B4hB,EAAQzxB,GAChC,MAAM2nD,EAAgBp6C,GAAUkkB,EAAOh2B,OAAS,CAC9CoU,OAAQ,CAAC,GAEL+3C,EAAe5nD,EAAQ6P,QAAU,CAAC,EAClCg4C,EAAiBP,GAAa71B,EAAOh2B,KAAMuE,GAC3C6P,EAASplB,OAAOY,OAAO,MAkC7B,OAjCAZ,OAAOuP,KAAK4tD,GAAczhD,SAAQxI,IAChC,MAAMmqD,EAAYF,EAAajqD,GAC/B,IAAKI,EAAS+pD,GACZ,OAAOpsC,QAAQqsC,MAAM,0CAA0CpqD,KAEjE,GAAImqD,EAAU7pC,OACZ,OAAOvC,QAAQC,KAAK,kDAAkDhe,KAExE,MAAMmK,EAAO0/C,GAAc7pD,EAAImqD,GACzBE,EArCV,SAAmClgD,EAAMoH,GACvC,OAAOpH,IAASoH,EAAY,UAAY,SAC1C,CAmCsB+4C,CAA0BngD,EAAM+/C,GAC5CK,EAAsBP,EAAc93C,QAAU,CAAC,EACrDA,EAAOlS,GAAM4C,EAAQ9V,OAAOY,OAAO,MAAO,CAAC,CACzCyc,QACCggD,EAAWI,EAAoBpgD,GAAOogD,EAAoBF,IAAY,IAE3Ev2B,EAAOpd,KAAKnG,SAAS/H,SAAQowB,IAC3B,MAAM96B,EAAO86B,EAAQ96B,MAAQg2B,EAAOh2B,KAC9ByT,EAAYqnB,EAAQrnB,WAAao4C,GAAa7rD,EAAMuE,GAEpDkoD,GADkB36C,GAAU9R,IAAS,CAAC,GACAoU,QAAU,CAAC,EACvDplB,OAAOuP,KAAKkuD,GAAqB/hD,SAAQgiD,IACvC,MAAMrgD,EA1DZ,SAAmCnK,EAAIuR,GACrC,IAAIpH,EAAOnK,EAMX,MALW,YAAPA,EACFmK,EAAOoH,EACS,YAAPvR,IACTmK,EAAqB,MAAdoH,EAAoB,IAAM,KAE5BpH,CACT,CAkDmBsgD,CAA0BD,EAAWj5C,GAC5CvR,EAAK44B,EAAQzuB,EAAO,WAAaA,EACvC+H,EAAOlS,GAAMkS,EAAOlS,IAAOlT,OAAOY,OAAO,MACzCkV,EAAQsP,EAAOlS,GAAK,CAAC,CACnBmK,QACC8/C,EAAajqD,GAAKuqD,EAAoBC,IAAY,GACrD,IAEJ19D,OAAOuP,KAAK6V,GAAQ1J,SAAQ7a,IAC1B,MAAMskB,EAAQC,EAAOvkB,GACrBiV,EAAQqP,EAAO,CAACgB,GAASf,OAAOD,EAAMnU,MAAOmV,GAAShB,OAAO,IAExDC,CACT,CAImBw4C,CAAiB52B,EAAQzxB,EAC5C,CACA,SAASsoD,GAASj0C,GAIhB,OAHAA,EAAOA,GAAQ,CAAC,GACXnG,SAAWmG,EAAKnG,UAAY,GACjCmG,EAAK2kB,OAAS3kB,EAAK2kB,QAAU,GACtB3kB,CACT,CAOA,MAAMk0C,GAAW,IAAI/8C,IACfg9C,GAAa,IAAIjiD,IACvB,SAASkiD,GAAW78C,EAAU88C,GAC5B,IAAI1uD,EAAOuuD,GAAS39D,IAAIghB,GAMxB,OALK5R,IACHA,EAAO0uD,IACPH,GAASjiD,IAAIsF,EAAU5R,GACvBwuD,GAAWhiD,IAAIxM,IAEVA,CACT,CACA,MAAM2uD,GAAa,CAACriD,EAAKtK,EAAK1Q,KAC5B,MAAMmtB,EAAO9X,GAAiB3E,EAAK1Q,QACtBqC,IAAT8qB,GACFnS,EAAIE,IAAIiS,EACV,EAEF,MAAM,GACJ,WAAAjd,CAAYi2B,GACV71B,KAAKgtD,QAzBT,SAAoBn3B,GAIlB,OAHAA,EAASA,GAAU,CAAC,GACbpd,KAAOi0C,GAAS72B,EAAOpd,MAC9BqzC,GAAYj2B,GACLA,CACT,CAoBmBo3B,CAAWp3B,GAC1B71B,KAAKktD,YAAc,IAAIt9C,IACvB5P,KAAKmtD,eAAiB,IAAIv9C,GAC5B,CACA,YAAI6C,GACF,OAAOzS,KAAKgtD,QAAQv6C,QACtB,CACA,QAAI5S,GACF,OAAOG,KAAKgtD,QAAQntD,IACtB,CACA,QAAIA,CAAKA,GACPG,KAAKgtD,QAAQntD,KAAOA,CACtB,CACA,QAAI4Y,GACF,OAAOzY,KAAKgtD,QAAQv0C,IACtB,CACA,QAAIA,CAAKA,GACPzY,KAAKgtD,QAAQv0C,KAAOi0C,GAASj0C,EAC/B,CACA,WAAIrU,GACF,OAAOpE,KAAKgtD,QAAQ5oD,OACtB,CACA,WAAIA,CAAQA,GACVpE,KAAKgtD,QAAQ5oD,QAAUA,CACzB,CACA,WAAI0P,GACF,OAAO9T,KAAKgtD,QAAQl5C,OACtB,CACA,MAAAuhB,GACE,MAAMQ,EAAS71B,KAAKgtD,QACpBhtD,KAAKotD,aACLtB,GAAYj2B,EACd,CACA,UAAAu3B,GACEptD,KAAKktD,YAAYG,QACjBrtD,KAAKmtD,eAAeE,OACtB,CACA,gBAAAzwB,CAAiB0wB,GACf,OAAOT,GAAWS,GAAa,IAAM,CAAC,CAAC,YAAYA,IAAe,MACpE,CACA,yBAAAjtB,CAA0BitB,EAAaltB,GACrC,OAAOysB,GAAW,GAAGS,gBAA0BltB,KAAc,IAAM,CAAC,CAAC,YAAYktB,iBAA2BltB,IAAc,eAAeA,KAAe,CAAC,YAAYktB,IAAe,MACtL,CACA,uBAAAvtB,CAAwButB,EAAaztB,GACnC,OAAOgtB,GAAW,GAAGS,KAAeztB,KAAe,IAAM,CAAC,CAAC,YAAYytB,cAAwBztB,IAAe,YAAYytB,IAAe,YAAYztB,IAAe,MACtK,CACA,eAAA4rB,CAAgBf,GACd,MAAM3oD,EAAK2oD,EAAO3oD,GAElB,OAAO8qD,GAAW,GADL7sD,KAAKH,eACkBkC,KAAM,IAAM,CAAC,CAAC,WAAWA,OAAU2oD,EAAO6C,wBAA0B,MAC1G,CACA,aAAAC,CAAcC,EAAWC,GACvB,MAAMR,EAAcltD,KAAKktD,YACzB,IAAIj0C,EAAQi0C,EAAYl+D,IAAIy+D,GAK5B,OAJKx0C,IAASy0C,IACZz0C,EAAQ,IAAIrJ,IACZs9C,EAAYxiD,IAAI+iD,EAAWx0C,IAEtBA,CACT,CACA,eAAA4jB,CAAgB4wB,EAAWE,EAAUD,GACnC,MAAMtpD,EAAUpE,KAAKoE,QACnBvE,EAAOG,KAAKH,KACRoZ,EAAQjZ,KAAKwtD,cAAcC,EAAWC,GACtCr0B,EAASpgB,EAAMjqB,IAAI2+D,GACzB,GAAIt0B,EACF,OAAOA,EAET,MAAM7Y,EAAS,IAAI7V,IACnBgjD,EAASpjD,SAAQnM,IACXqvD,IACFjtC,EAAO5V,IAAI6iD,GACXrvD,EAAKmM,SAAQ7a,GAAOq9D,GAAWvsC,EAAQitC,EAAW/9D,MAEpD0O,EAAKmM,SAAQ7a,GAAOq9D,GAAWvsC,EAAQpc,EAAS1U,KAChD0O,EAAKmM,SAAQ7a,GAAOq9D,GAAWvsC,EAAQ7O,GAAU9R,IAAS,CAAC,EAAGnQ,KAC9D0O,EAAKmM,SAAQ7a,GAAOq9D,GAAWvsC,EAAQxL,GAAUtlB,KACjD0O,EAAKmM,SAAQ7a,GAAOq9D,GAAWvsC,EAAQ,GAAa9wB,IAAK,IAE3D,MAAM6X,EAAQ3U,MAAMiY,KAAK2V,GAOzB,OANqB,IAAjBjZ,EAAMnV,QACRmV,EAAMnC,KAAKvW,OAAOY,OAAO,OAEvBm9D,GAAW9mD,IAAI6nD,IACjB10C,EAAMvO,IAAIijD,EAAUpmD,GAEfA,CACT,CACA,iBAAAqmD,GACE,MAAMxpD,EAAUpE,KAAKoE,QACnBvE,EAAOG,KAAKH,KACd,MAAO,CAACuE,EAASuN,GAAU9R,IAAS,CAAC,EAAGmV,GAAS1C,SAASzS,IAAS,CAAC,EAAG,CACrEA,QACCmV,GAAU,GACf,CACA,mBAAAirB,CAAoBzf,EAAQwf,EAAOxtB,GACjC,IAAIiO,EAAWtuB,UAAUC,OAAS,QAAsBL,IAAjBI,UAAU,GAAmBA,UAAU,GAAK,CAAC,IACpF,MAAMw2B,EAAS,CACb2N,SAAS,GAELu3B,EAAeC,GAAY9tD,KAAKmtD,eAAgB3sC,EAAQC,GAC5Dzb,EAAW6oD,EAAa7oD,SACxB+oD,EAAcF,EAAaE,YAC7B,IAAI3pD,EAAUY,EACd,GAsCJ,SAAqBqc,EAAO2e,GAC1B,MAAMguB,EAAgB/7C,GAAaoP,GACjCuB,EAAeorC,EAAcprC,aAC7BK,EAAc+qC,EAAc/qC,YAC9B,IAAK,MAAMzD,KAAQwgB,EAAO,CACxB,MAAMxc,EAAaZ,EAAapD,GAC1BiE,EAAYR,EAAYzD,GACxBpwB,GAASq0B,GAAaD,IAAenC,EAAM7B,GACjD,GAAIgE,IAAe9d,GAAWtW,IAAU6+D,GAAY7+D,KAAWq0B,GAAa5wB,EAAQzD,GAClF,OAAO,CAEX,CACA,OAAO,CACT,CAnDQ8+D,CAAYlpD,EAAUg7B,GAAQ,CAChCrX,EAAO2N,SAAU,EAGjBlyB,EAAU8d,GAAeld,EAFzBwN,EAAU9M,GAAW8M,GAAWA,IAAYA,EACxBxS,KAAK88B,eAAetc,EAAQhO,EAASu7C,GAE3D,CACA,IAAK,MAAMvuC,KAAQwgB,EACjBrX,EAAOnJ,GAAQpb,EAAQob,GAEzB,OAAOmJ,CACT,CACA,cAAAmU,CAAetc,EAAQhO,GACrB,IAAIiO,EAAWtuB,UAAUC,OAAS,QAAsBL,IAAjBI,UAAU,GAAmBA,UAAU,GAAK,CAAC,IAChFiwB,EAAqBjwB,UAAUC,OAAS,EAAID,UAAU,QAAKJ,EAC/D,MACEiT,EADoB8oD,GAAY9tD,KAAKmtD,eAAgB3sC,EAAQC,GACpCzb,SAC3B,OAAO7C,EAASqQ,GAAW0P,GAAeld,EAAUwN,OAASzgB,EAAWqwB,GAAsBpd,CAChG,EAEF,SAAS8oD,GAAYK,EAAe3tC,EAAQC,GAC1C,IAAIxH,EAAQk1C,EAAcn/D,IAAIwxB,GACzBvH,IACHA,EAAQ,IAAIrJ,IACZu+C,EAAczjD,IAAI8V,EAAQvH,IAE5B,MAAMjJ,EAAWyQ,EAASqC,OAC1B,IAAIuW,EAASpgB,EAAMjqB,IAAIghB,GACvB,IAAKqpB,EAAQ,CAEXA,EAAS,CACPr0B,SAFeub,GAAgBC,EAAQC,GAGvCstC,YAAattC,EAAS0C,QAAOlzB,IAAMA,EAAE4O,cAAc4S,SAAS,YAE9DwH,EAAMvO,IAAIsF,EAAUqpB,EACtB,CACA,OAAOA,CACT,CACA,MAAM40B,GAAc7+D,GAAS+S,EAAS/S,IAAUP,OAAOqnC,oBAAoB9mC,GAAOykC,QAAO,CAACC,EAAKpkC,IAAQokC,GAAOpuB,GAAWtW,EAAMM,MAAO,GAgBtI,MAAM0+D,GAAkB,CAAC,MAAO,SAAU,OAAQ,QAAS,aAC3D,SAASC,GAAqBve,EAAU5jC,GACtC,MAAoB,QAAb4jC,GAAmC,WAAbA,IAAgE,IAAvCse,GAAgBlqD,QAAQ4rC,IAA6B,MAAT5jC,CACpG,CACA,SAASoiD,GAAcC,EAAIC,GACzB,OAAO,SAAUp9D,EAAGC,GAClB,OAAOD,EAAEm9D,KAAQl9D,EAAEk9D,GAAMn9D,EAAEo9D,GAAMn9D,EAAEm9D,GAAMp9D,EAAEm9D,GAAMl9D,EAAEk9D,EACrD,CACF,CACA,SAASE,GAAqBj8C,GAC5B,MAAM3B,EAAQ2B,EAAQ3B,MAChBmlB,EAAmBnlB,EAAMzM,QAAQ+N,UACvCtB,EAAMqvC,cAAc,eACpBp9C,EAASkzB,GAAoBA,EAAiB04B,WAAY,CAACl8C,GAAU3B,EACvE,CACA,SAAS89C,GAAoBn8C,GAC3B,MAAM3B,EAAQ2B,EAAQ3B,MAChBmlB,EAAmBnlB,EAAMzM,QAAQ+N,UACvCrP,EAASkzB,GAAoBA,EAAiB44B,WAAY,CAACp8C,GAAU3B,EACvE,CACA,SAASg+C,GAAUhpD,GASjB,OARI4hB,MAAqC,kBAAT5hB,EAC9BA,EAAO6hB,SAASonC,eAAejpD,GACtBA,GAAQA,EAAKzT,SACtByT,EAAOA,EAAK,IAEVA,GAAQA,EAAKiU,SACfjU,EAAOA,EAAKiU,QAEPjU,CACT,CACA,MAAMkpD,GAAY,CAAC,EACbC,GAAWt/D,IACf,MAAMoqB,EAAS+0C,GAAUn/D,GACzB,OAAOb,OAAO4hB,OAAOs+C,IAAW5rC,QAAO30B,GAAKA,EAAEsrB,SAAWA,IAAQwZ,KAAK,EAExE,SAAS27B,GAAgB7uD,EAAKyI,EAAO84B,GACnC,MAAMvjC,EAAOvP,OAAOuP,KAAKgC,GACzB,IAAK,MAAM1Q,KAAO0O,EAAM,CACtB,MAAM8wD,GAAUx/D,EAChB,GAAIw/D,GAAUrmD,EAAO,CACnB,MAAMzZ,EAAQgR,EAAI1Q,UACX0Q,EAAI1Q,IACPiyC,EAAO,GAAKutB,EAASrmD,KACvBzI,EAAI8uD,EAASvtB,GAAQvyC,EAEzB,CACF,CACF,CAsBA,MAAM,GACJ,eAAOk4D,GACL,GAAS18C,OAAOzY,WAChBg9D,IACF,CACA,iBAAOnH,GACL,GAAS7zB,UAAUhiC,WACnBg9D,IACF,CACA,WAAAvvD,CAAYiG,EAAMupD,GAChB,MAAMv5B,EAAS71B,KAAK61B,OAAS,IAAI,GAAOu5B,GAClCC,EAAgBR,GAAUhpD,GAC1BypD,EAAgBN,GAASK,GAC/B,GAAIC,EACF,MAAM,IAAIzsC,MAAM,4CAA+CysC,EAAcvtD,GAA7D,kDAA6HutD,EAAcx1C,OAAO/X,GAAK,oBAEzK,MAAMqC,EAAUyxB,EAAOiH,eAAejH,EAAO+3B,oBAAqB5tD,KAAK+Z,cACvE/Z,KAAKyS,SAAW,IAAKojB,EAAOpjB,UAAYmnC,GAAgByV,IACxDrvD,KAAKyS,SAASwjC,aAAapgB,GAC3B,MAAMrjB,EAAUxS,KAAKyS,SAASqjC,eAAeuZ,EAAejrD,EAAQ8lB,aAC9DpQ,EAAStH,GAAWA,EAAQsH,OAC5BI,EAASJ,GAAUA,EAAOI,OAC1B3C,EAAQuC,GAAUA,EAAOvC,MAC/BvX,KAAK+B,GAAKD,IACV9B,KAAKmT,IAAMX,EACXxS,KAAK8Z,OAASA,EACd9Z,KAAKuX,MAAQA,EACbvX,KAAKka,OAASA,EACdla,KAAKuvD,SAAWnrD,EAChBpE,KAAKwvD,aAAexvD,KAAKkqB,YACzBlqB,KAAKs0C,QAAU,GACft0C,KAAKyvD,UAAY,GACjBzvD,KAAKu4B,aAAUxmC,EACfiO,KAAK4zC,MAAQ,GACb5zC,KAAK2Z,6BAA0B5nB,EAC/BiO,KAAKq/B,eAAYttC,EACjBiO,KAAKmzB,QAAU,GACfnzB,KAAK0vD,gBAAa39D,EAClBiO,KAAK2vD,WAAa,CAAC,EACnB3vD,KAAK4vD,0BAAuB79D,EAC5BiO,KAAK6vD,gBAAkB,GACvB7vD,KAAKiU,OAAS,CAAC,EACfjU,KAAK8vD,SAAW,IAAI,GACpB9vD,KAAKw5C,SAAW,CAAC,EACjBx5C,KAAK+vD,eAAiB,CAAC,EACvB/vD,KAAKgwD,UAAW,EAChBhwD,KAAKygC,yBAAsB1uC,EAC3BiO,KAAKi6B,cAAWloC,EAChBiO,KAAKiwD,UDr2JT,SAAkBltD,EAAIsS,GACpB,IAAI66C,EACJ,OAAO,WACL,IAAK,IAAI9H,EAAQj2D,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMw1D,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFrlD,EAAKqlD,GAASl2D,UAAUk2D,GAQ1B,OANIhzC,GACF86C,aAAaD,GACbA,EAAUE,WAAWrtD,EAAIsS,EAAOrS,IAEhCD,EAAGG,MAAMlD,KAAMgD,GAEVqS,CACT,CACF,CCu1JqBg7C,EAAS/gE,GAAQ0Q,KAAKq1B,OAAO/lC,IAAO8U,EAAQksD,aAAe,GAC5EtwD,KAAKgiC,aAAe,GACpB+sB,GAAU/uD,KAAK+B,IAAM/B,KAChBwS,GAAYsH,GAIjBsa,GAAST,OAAO3zB,KAAM,WAAYyuD,IAClCr6B,GAAST,OAAO3zB,KAAM,WAAY2uD,IAClC3uD,KAAKuwD,cACDvwD,KAAKgwD,UACPhwD,KAAKq1B,UAPLvV,QAAQqsC,MAAM,oEASlB,CACA,eAAIjiC,GACF,MAAMsmC,EAAkBxwD,KAAKoE,QAC3B8lB,EAAcsmC,EAAgBtmC,YAC9BxW,EAAsB88C,EAAgB98C,oBACtC6D,EAAQvX,KAAKuX,MACb2C,EAASla,KAAKka,OACds1C,EAAexvD,KAAKwvD,aACtB,OAAKxtD,EAAckoB,GAGfxW,GAAuB87C,EAClBA,EAEFt1C,EAAS3C,EAAQ2C,EAAS,KALxBgQ,CAMX,CACA,QAAIzR,GACF,OAAOzY,KAAK61B,OAAOpd,IACrB,CACA,QAAIA,CAAKA,GACPzY,KAAK61B,OAAOpd,KAAOA,CACrB,CACA,WAAIrU,GACF,OAAOpE,KAAKuvD,QACd,CACA,WAAInrD,CAAQA,GACVpE,KAAK61B,OAAOzxB,QAAUA,CACxB,CACA,YAAI8pC,GACF,OAAO,EACT,CACA,WAAAqiB,GASE,OARAvwD,KAAKkgD,cAAc,cACflgD,KAAKoE,QAAQ2P,WACf/T,KAAK4V,SAELiV,GAAY7qB,KAAMA,KAAKoE,QAAQmO,kBAEjCvS,KAAKywD,aACLzwD,KAAKkgD,cAAc,aACZlgD,IACT,CACA,KAAAqtD,GAEE,OADAxzC,GAAY7Z,KAAK8Z,OAAQ9Z,KAAKmT,KACvBnT,IACT,CACA,IAAAi0B,GAEE,OADAG,GAASH,KAAKj0B,MACPA,IACT,CACA,MAAA4V,CAAO2B,EAAO2C,GACPka,GAASnB,QAAQjzB,MAGpBA,KAAK0wD,kBAAoB,CACvBn5C,QACA2C,UAJFla,KAAK2wD,QAAQp5C,EAAO2C,EAOxB,CACA,OAAAy2C,CAAQp5C,EAAO2C,GACb,MAAM9V,EAAUpE,KAAKoE,QACf0V,EAAS9Z,KAAK8Z,OACdoQ,EAAc9lB,EAAQsP,qBAAuB1T,KAAKkqB,YAClD0mC,EAAU5wD,KAAKyS,SAASsX,eAAejQ,EAAQvC,EAAO2C,EAAQgQ,GAC9D2mC,EAAWzsD,EAAQmO,kBAAoBvS,KAAKyS,SAASC,sBACrDpjB,EAAO0Q,KAAKuX,MAAQ,SAAW,SACrCvX,KAAKuX,MAAQq5C,EAAQr5C,MACrBvX,KAAKka,OAAS02C,EAAQ12C,OACtBla,KAAKwvD,aAAexvD,KAAKkqB,YACpBW,GAAY7qB,KAAM6wD,GAAU,KAGjC7wD,KAAKkgD,cAAc,SAAU,CAC3Bt6C,KAAMgrD,IAER9tD,EAASsB,EAAQ0sD,SAAU,CAAC9wD,KAAM4wD,GAAU5wD,MACxCA,KAAKgwD,UACHhwD,KAAKiwD,UAAU3gE,IACjB0Q,KAAK+wD,SAGX,CACA,mBAAAC,GAGE7tD,EAFgBnD,KAAKoE,QACS6P,QAAU,CAAC,GACrB,CAACg9C,EAAahK,KAChCgK,EAAYlvD,GAAKklD,CAAM,GAE3B,CACA,mBAAAiK,GACE,MAAM9sD,EAAUpE,KAAKoE,QACf+sD,EAAY/sD,EAAQ6P,OACpBA,EAASjU,KAAKiU,OACdm9C,EAAUviE,OAAOuP,KAAK6V,GAAQ4f,QAAO,CAACzzB,EAAK2B,KAC/C3B,EAAI2B,IAAM,EACH3B,IACN,CAAC,GACJ,IAAIqK,EAAQ,GACR0mD,IACF1mD,EAAQA,EAAMk4B,OAAO9zC,OAAOuP,KAAK+yD,GAAWr+D,KAAIiP,IAC9C,MAAM8pD,EAAesF,EAAUpvD,GACzBmK,EAAO0/C,GAAc7pD,EAAI8pD,GACzBwF,EAAoB,MAATnlD,EACXi5B,EAAwB,MAATj5B,EACrB,MAAO,CACL9H,QAASynD,EACTyF,UAAWD,EAAW,YAAclsB,EAAe,SAAW,OAC9DosB,MAAOF,EAAW,eAAiBlsB,EAAe,WAAa,SAChE,MAGLhiC,EAAKsH,GAAO5E,IACV,MAAMgmD,EAAehmD,EAAKzB,QACpBrC,EAAK8pD,EAAa9pD,GAClBmK,EAAO0/C,GAAc7pD,EAAI8pD,GACzB2F,EAAY/uD,EAAeopD,EAAahsD,KAAMgG,EAAK0rD,YAC3Bx/D,IAA1B85D,EAAa/b,UAA0Bue,GAAqBxC,EAAa/b,SAAU5jC,KAAUmiD,GAAqBxoD,EAAKyrD,aACzHzF,EAAa/b,SAAWjqC,EAAKyrD,WAE/BF,EAAQrvD,IAAM,EACd,IAAIiS,EAAQ,KACZ,GAAIjS,KAAMkS,GAAUA,EAAOlS,GAAIlC,OAAS2xD,EACtCx9C,EAAQC,EAAOlS,OACV,CAELiS,EAAQ,IADW,GAASi1C,SAASuI,GAC7B,CAAe,CACrBzvD,KACAlC,KAAM2xD,EACNr+C,IAAKnT,KAAKmT,IACVtC,MAAO7Q,OAETiU,EAAOD,EAAMjS,IAAMiS,CACrB,CACAA,EAAMi7B,KAAK4c,EAAcznD,EAAQ,IAEnCjB,EAAKiuD,GAAS,CAACK,EAAY1vD,KACpB0vD,UACIx9C,EAAOlS,EAChB,IAEFoB,EAAK8Q,GAAQD,IACX+9B,GAAQhc,UAAU/1B,KAAMgU,EAAOA,EAAM5P,SACrC2tC,GAAQsC,OAAOr0C,KAAMgU,EAAM,GAE/B,CACA,eAAA09C,GACE,MAAMx6B,EAAWl3B,KAAKyvD,UAChBjuB,EAAUxhC,KAAKyY,KAAKnG,SAASlgB,OAC7BmvC,EAAUrK,EAAS9kC,OAEzB,GADA8kC,EAAS0L,MAAK,CAACxxC,EAAGC,IAAMD,EAAEyS,MAAQxS,EAAEwS,QAChC09B,EAAUC,EAAS,CACrB,IAAK,IAAIrzC,EAAIqzC,EAASrzC,EAAIozC,IAAWpzC,EACnC6R,KAAK2xD,oBAAoBxjE,GAE3B+oC,EAAS5sB,OAAOk3B,EAASD,EAAUC,EACrC,CACAxhC,KAAK6vD,gBAAkB34B,EAASh1B,MAAM,GAAG0gC,KAAK0rB,GAAc,QAAS,SACvE,CACA,2BAAAsD,GACE,MAAM16B,EAAWl3B,KAAKyvD,UACpBn9C,EAAWtS,KAAKyY,KAAKnG,SACnB4kB,EAAS9kC,OAASkgB,EAASlgB,eACtB4N,KAAKu4B,QAEdrB,EAAS3sB,SAAQ,CAACmB,EAAM7H,KACmC,IAArDyO,EAAS6Q,QAAO3vB,GAAKA,IAAMkY,EAAKogC,WAAU15C,QAC5C4N,KAAK2xD,oBAAoB9tD,EAC3B,GAEJ,CACA,wBAAAguD,GACE,MAAMC,EAAiB,GACjBx/C,EAAWtS,KAAKyY,KAAKnG,SAC3B,IAAInkB,EAAGsV,EAEP,IADAzD,KAAK4xD,8BACAzjE,EAAI,EAAGsV,EAAO6O,EAASlgB,OAAQjE,EAAIsV,EAAMtV,IAAK,CACjD,MAAMwsC,EAAUroB,EAASnkB,GACzB,IAAIud,EAAO1L,KAAK07B,eAAevtC,GAC/B,MAAM0R,EAAO86B,EAAQ96B,MAAQG,KAAK61B,OAAOh2B,KAWzC,GAVI6L,EAAK7L,MAAQ6L,EAAK7L,OAASA,IAC7BG,KAAK2xD,oBAAoBxjE,GACzBud,EAAO1L,KAAK07B,eAAevtC,IAE7Bud,EAAK7L,KAAOA,EACZ6L,EAAK4H,UAAYqnB,EAAQrnB,WAAao4C,GAAa7rD,EAAMG,KAAKoE,SAC9DsH,EAAKqmD,MAAQp3B,EAAQo3B,OAAS,EAC9BrmD,EAAK7H,MAAQ1V,EACbud,EAAKqzB,MAAQ,GAAKpE,EAAQoE,MAC1BrzB,EAAKqK,QAAU/V,KAAK0oC,iBAAiBv6C,GACjCud,EAAK2sB,WACP3sB,EAAK2sB,WAAWqC,YAAYvsC,GAC5Bud,EAAK2sB,WAAWiC,iBACX,CACL,MAAM03B,EAAkB,GAASlJ,cAAcjpD,GACzCoyD,EAAwBj9C,GAAS1C,SAASzS,GAC9Cs6B,EAAqB83B,EAAsB93B,mBAC3CC,EAAkB63B,EAAsB73B,gBAC1CvrC,OAAOwQ,OAAO2yD,EAAiB,CAC7B53B,gBAAiB,GAAS+T,WAAW/T,GACrCD,mBAAoBA,GAAsB,GAASgU,WAAWhU,KAEhEzuB,EAAK2sB,WAAa,IAAI25B,EAAgBhyD,KAAM7R,GAC5C2jE,EAAe1sD,KAAKsG,EAAK2sB,WAC3B,CACF,CAEA,OADAr4B,KAAK0xD,kBACEI,CACT,CACA,cAAAI,GACE/uD,EAAKnD,KAAKyY,KAAKnG,UAAU,CAACqoB,EAAS/2B,KACjC5D,KAAK07B,eAAe93B,GAAcy0B,WAAWwD,OAAO,GACnD77B,KACL,CACA,KAAA67B,GACE77B,KAAKkyD,iBACLlyD,KAAKkgD,cAAc,QACrB,CACA,MAAA7qB,CAAO/lC,GACL,MAAMumC,EAAS71B,KAAK61B,OACpBA,EAAOR,SACP,MAAMjxB,EAAUpE,KAAKuvD,SAAW15B,EAAOiH,eAAejH,EAAO+3B,oBAAqB5tD,KAAK+Z,cACjFo4C,EAAgBnyD,KAAKygC,qBAAuBr8B,EAAQ+N,UAK1D,GAJAnS,KAAKoyD,gBACLpyD,KAAKqyD,sBACLryD,KAAKsyD,uBACLtyD,KAAK8vD,SAASlF,cAIP,IAHH5qD,KAAKkgD,cAAc,eAAgB,CACrC5wD,OACAq7D,YAAY,IAEZ,OAEF,MAAMmH,EAAiB9xD,KAAK6xD,2BAC5B7xD,KAAKkgD,cAAc,wBACnB,IAAIxL,EAAa,EACjB,IAAK,IAAIvmD,EAAI,EAAGsV,EAAOzD,KAAKyY,KAAKnG,SAASlgB,OAAQjE,EAAIsV,EAAMtV,IAAK,CAC/D,MACEkqC,EAD2Br4B,KAAK07B,eAAevtC,GACbkqC,WAC9BwD,GAASs2B,IAAyD,IAAxCL,EAAe5tD,QAAQm0B,GACvDA,EAAWiE,sBAAsBT,GACjC6Y,EAAapkD,KAAKC,KAAK8nC,EAAWwG,iBAAkB6V,EACtD,CACAA,EAAa10C,KAAKuyD,YAAcnuD,EAAQmuC,OAAOt8B,YAAcy+B,EAAa,EAC1E10C,KAAKwyD,cAAc9d,GACdyd,GACHhvD,EAAK2uD,GAAgBz5B,IACnBA,EAAWwD,OAAO,IAGtB77B,KAAKyyD,gBAAgBnjE,GACrB0Q,KAAKkgD,cAAc,cAAe,CAChC5wD,SAEF0Q,KAAKs0C,QAAQ1R,KAAK0rB,GAAc,IAAK,SACrC,MAAMn7B,EAAUnzB,KAAKmzB,QACnBu8B,EAAa1vD,KAAK0vD,WAChBA,EACF1vD,KAAK0yD,cAAchD,GAAY,GACtBv8B,EAAQ/gC,QACjB4N,KAAK2yD,mBAAmBx/B,EAASA,GAAS,GAE5CnzB,KAAK+wD,QACP,CACA,aAAAqB,GACEjvD,EAAKnD,KAAKiU,QAAQD,IAChB+9B,GAAQyC,UAAUx0C,KAAMgU,EAAM,IAEhChU,KAAKgxD,sBACLhxD,KAAKkxD,qBACP,CACA,mBAAAmB,GACE,MAAMjuD,EAAUpE,KAAKoE,QACfwuD,EAAiB,IAAIjoD,IAAI9b,OAAOuP,KAAK4B,KAAK2vD,aAC1CkD,EAAY,IAAIloD,IAAIvG,EAAQwO,QAC7BjN,GAAUitD,EAAgBC,MAAgB7yD,KAAK4vD,uBAAyBxrD,EAAQ2P,aACnF/T,KAAK8yD,eACL9yD,KAAKywD,aAET,CACA,oBAAA6B,GACE,MAAMvC,EAAiB/vD,KAAK+vD,eACtBgD,EAAU/yD,KAAKgzD,0BAA4B,GACjD,IAAK,MAAMC,KAASF,EAAS,CAC3B,MAAMn9B,EAASq9B,EAAMr9B,OACf/sB,EAAQoqD,EAAMpqD,MACdiD,EAAQmnD,EAAMnnD,MAEpBmjD,GAAgBc,EAAgBlnD,EADR,oBAAX+sB,GAAgC9pB,EAAQA,EAEvD,CACF,CACA,sBAAAknD,GACE,MAAMhxB,EAAehiC,KAAKgiC,aAC1B,IAAKA,IAAiBA,EAAa5vC,OACjC,OAEF4N,KAAKgiC,aAAe,GACpB,MAAMkxB,EAAelzD,KAAKyY,KAAKnG,SAASlgB,OAClC+gE,EAAUrQ,GAAO,IAAIn4C,IAAIq3B,EAAa7e,QAAO30B,GAAKA,EAAE,KAAOs0D,IAAKhwD,KAAI,CAACtE,EAAGL,IAAMA,EAAI,IAAMK,EAAE8b,OAAO,GAAGwY,KAAK,QACzGswC,EAAYD,EAAQ,GAC1B,IAAK,IAAIhlE,EAAI,EAAGA,EAAI+kE,EAAc/kE,IAChC,IAAKwX,GAAUytD,EAAWD,EAAQhlE,IAChC,OAGJ,OAAOyE,MAAMiY,KAAKuoD,GAAWtgE,KAAItE,GAAKA,EAAE0W,MAAM,OAAMpS,KAAI1B,IAAK,CAC3DwkC,OAAQxkC,EAAE,GACVyX,OAAQzX,EAAE,GACV0a,OAAQ1a,EAAE,MAEd,CACA,aAAAohE,CAAc9d,GACZ,IAEO,IAFH10C,KAAKkgD,cAAc,eAAgB,CACrCyK,YAAY,IAEZ,OAEF5Y,GAAQ1c,OAAOr1B,KAAMA,KAAKuX,MAAOvX,KAAKka,OAAQw6B,GAC9C,MAAM74B,EAAO7b,KAAKq/B,UACZg0B,EAASx3C,EAAKtE,OAAS,GAAKsE,EAAK3B,QAAU,EACjDla,KAAKs0C,QAAU,GACfnxC,EAAKnD,KAAK4zC,OAAOnqB,IACX4pC,GAA2B,cAAjB5pC,EAAIqmB,WAGdrmB,EAAIsM,WACNtM,EAAIsM,YAEN/1B,KAAKs0C,QAAQlvC,QAAQqkB,EAAI6qB,WAAU,GAClCt0C,MACHA,KAAKs0C,QAAQ/pC,SAAQ,CAAC1E,EAAMhC,KAC1BgC,EAAKytD,KAAOzvD,CAAK,IAEnB7D,KAAKkgD,cAAc,cACrB,CACA,eAAAuS,CAAgBnjE,GACd,IAGO,IAHH0Q,KAAKkgD,cAAc,uBAAwB,CAC7C5wD,OACAq7D,YAAY,IAFd,CAMA,IAAK,IAAIx8D,EAAI,EAAGsV,EAAOzD,KAAKyY,KAAKnG,SAASlgB,OAAQjE,EAAIsV,IAAQtV,EAC5D6R,KAAK07B,eAAevtC,GAAGkqC,WAAWtC,YAEpC,IAAK,IAAIi1B,EAAK,EAAGuI,EAAQvzD,KAAKyY,KAAKnG,SAASlgB,OAAQ44D,EAAKuI,IAASvI,EAChEhrD,KAAKwzD,eAAexI,EAAItlD,GAAWpW,GAAQA,EAAK,CAC9CsU,aAAconD,IACX17D,GAEP0Q,KAAKkgD,cAAc,sBAAuB,CACxC5wD,QAVF,CAYF,CACA,cAAAkkE,CAAe3vD,EAAOvU,GACpB,MAAMoc,EAAO1L,KAAK07B,eAAe73B,GAC3Bb,EAAO,CACX0I,OACA7H,QACAvU,OACAq7D,YAAY,IAE0C,IAApD3qD,KAAKkgD,cAAc,sBAAuBl9C,KAG9C0I,EAAK2sB,WAAWxF,QAAQvjC,GACxB0T,EAAK2nD,YAAa,EAClB3qD,KAAKkgD,cAAc,qBAAsBl9C,GAC3C,CACA,MAAA+tD,IAGS,IAFH/wD,KAAKkgD,cAAc,eAAgB,CACrCyK,YAAY,MAIVv2B,GAAStuB,IAAI9F,MACXA,KAAKgwD,WAAa57B,GAASnB,QAAQjzB,OACrCo0B,GAASvrB,MAAM7I,OAGjBA,KAAKkzB,OACLu7B,GAAqB,CACnB59C,MAAO7Q,QAGb,CACA,IAAAkzB,GACE,IAAI/kC,EACJ,GAAI6R,KAAK0wD,kBAAmB,CAC1B,MAAM+C,EAAwBzzD,KAAK0wD,kBACjCn5C,EAAQk8C,EAAsBl8C,MAC9B2C,EAASu5C,EAAsBv5C,OACjCla,KAAK2wD,QAAQp5C,EAAO2C,GACpBla,KAAK0wD,kBAAoB,IAC3B,CAEA,GADA1wD,KAAKqtD,QACDrtD,KAAKuX,OAAS,GAAKvX,KAAKka,QAAU,EACpC,OAEF,IAEO,IAFHla,KAAKkgD,cAAc,aAAc,CACnCyK,YAAY,IAEZ,OAEF,MAAM+I,EAAS1zD,KAAKs0C,QACpB,IAAKnmD,EAAI,EAAGA,EAAIulE,EAAOthE,QAAUshE,EAAOvlE,GAAGomD,GAAK,IAAKpmD,EACnDulE,EAAOvlE,GAAG+kC,KAAKlzB,KAAKq/B,WAGtB,IADAr/B,KAAK2zD,gBACExlE,EAAIulE,EAAOthE,SAAUjE,EAC1BulE,EAAOvlE,GAAG+kC,KAAKlzB,KAAKq/B,WAEtBr/B,KAAKkgD,cAAc,YACrB,CACA,sBAAA/oB,CAAuBF,GACrB,MAAMC,EAAWl3B,KAAK6vD,gBAChBlnC,EAAS,GACf,IAAIx6B,EAAGsV,EACP,IAAKtV,EAAI,EAAGsV,EAAOyzB,EAAS9kC,OAAQjE,EAAIsV,IAAQtV,EAAG,CACjD,MAAMud,EAAOwrB,EAAS/oC,GACjB8oC,IAAiBvrB,EAAKqK,SACzB4S,EAAOvjB,KAAKsG,EAEhB,CACA,OAAOid,CACT,CACA,4BAAAqnB,GACE,OAAOhwC,KAAKm3B,wBAAuB,EACrC,CACA,aAAAw8B,GACE,IAEO,IAFH3zD,KAAKkgD,cAAc,qBAAsB,CAC3CyK,YAAY,IAEZ,OAEF,MAAMzzB,EAAWl3B,KAAKgwC,+BACtB,IAAK,IAAI7hD,EAAI+oC,EAAS9kC,OAAS,EAAGjE,GAAK,IAAKA,EAC1C6R,KAAK4zD,aAAa18B,EAAS/oC,IAE7B6R,KAAKkgD,cAAc,oBACrB,CACA,YAAA0T,CAAaloD,GACX,MAAMyH,EAAMnT,KAAKmT,IACX6I,EAAOtQ,EAAKuzB,MACZ40B,GAAW73C,EAAKkjB,SAChBrjB,EAtgBV,SAAwBnQ,GACtB,MAAMe,EAASf,EAAKe,OAClBC,EAAShB,EAAKgB,OAChB,GAAID,GAAUC,EACZ,MAAO,CACL4J,KAAM7J,EAAO6J,KACbF,MAAO3J,EAAO2J,MACdD,IAAKzJ,EAAOyJ,IACZE,OAAQ3J,EAAO2J,OAGrB,CA2fiBy9C,CAAepoD,IAAS1L,KAAKq/B,UACpCr8B,EAAO,CACX0I,OACA7H,MAAO6H,EAAK7H,MACZ8mD,YAAY,IAEwC,IAAlD3qD,KAAKkgD,cAAc,oBAAqBl9C,KAGxC6wD,GACF93C,GAAS5I,EAAK,CACZmD,MAAoB,IAAd0F,EAAK1F,KAAiB,EAAIuF,EAAKvF,KAAO0F,EAAK1F,KACjDF,OAAsB,IAAf4F,EAAK5F,MAAkBpW,KAAKuX,MAAQsE,EAAKzF,MAAQ4F,EAAK5F,MAC7DD,KAAkB,IAAb6F,EAAK7F,IAAgB,EAAI0F,EAAK1F,IAAM6F,EAAK7F,IAC9CE,QAAwB,IAAhB2F,EAAK3F,OAAmBrW,KAAKka,OAAS2B,EAAKxF,OAAS2F,EAAK3F,SAGrE3K,EAAK2sB,WAAWnF,OACZ2gC,GACF53C,GAAW9I,GAEbnQ,EAAK2nD,YAAa,EAClB3qD,KAAKkgD,cAAc,mBAAoBl9C,GACzC,CACA,aAAAqtC,CAAcz0B,GACZ,OAAOD,GAAeC,EAAO5b,KAAKq/B,UAAWr/B,KAAKuyD,YACpD,CACA,yBAAAwB,CAA0BziE,EAAGhC,EAAM8U,EAASgsC,GAC1C,MAAMxa,EAAS2b,GAAYC,MAAMliD,GACjC,MAAsB,oBAAXsmC,EACFA,EAAO51B,KAAM1O,EAAG8S,EAASgsC,GAE3B,EACT,CACA,cAAA1U,CAAe93B,GACb,MAAM+2B,EAAU36B,KAAKyY,KAAKnG,SAAS1O,GAC7BszB,EAAWl3B,KAAKyvD,UACtB,IAAI/jD,EAAOwrB,EAAS/T,QAAO3vB,GAAKA,GAAKA,EAAEs4C,WAAanR,IAASrH,MAkB7D,OAjBK5nB,IACHA,EAAO,CACL7L,KAAM,KACN4Y,KAAM,GACNkiB,QAAS,KACTtC,WAAY,KACZ+F,OAAQ,KACRrD,QAAS,KACTE,QAAS,KACT82B,MAAOp3B,GAAWA,EAAQo3B,OAAS,EACnCluD,MAAOD,EACPkoC,SAAUnR,EACV1uB,QAAS,GACTF,SAAS,GAEXmrB,EAAS9xB,KAAKsG,IAETA,CACT,CACA,UAAAqO,GACE,OAAO/Z,KAAKi6B,WAAaj6B,KAAKi6B,SAAW5Z,GAAc,KAAM,CAC3DxP,MAAO7Q,KACPH,KAAM,UAEV,CACA,sBAAAktC,GACE,OAAO/sC,KAAKgwC,+BAA+B59C,MAC7C,CACA,gBAAAs2C,CAAiB9kC,GACf,MAAM+2B,EAAU36B,KAAKyY,KAAKnG,SAAS1O,GACnC,IAAK+2B,EACH,OAAO,EAET,MAAMjvB,EAAO1L,KAAK07B,eAAe93B,GACjC,MAA8B,mBAAhB8H,EAAK0yB,QAAwB1yB,EAAK0yB,QAAUzD,EAAQyD,MACpE,CACA,oBAAA41B,CAAqBpwD,EAAcmS,GACpB/V,KAAK07B,eAAe93B,GAC5Bw6B,QAAUroB,CACjB,CACA,oBAAA61B,CAAqB/nC,GACnB7D,KAAK+vD,eAAelsD,IAAU7D,KAAK+vD,eAAelsD,EACpD,CACA,iBAAAkjC,CAAkBljC,GAChB,OAAQ7D,KAAK+vD,eAAelsD,EAC9B,CACA,iBAAAowD,CAAkBrwD,EAAc47B,EAAWzpB,GACzC,MAAMzmB,EAAOymB,EAAU,OAAS,OAC1BrK,EAAO1L,KAAK07B,eAAe93B,GAC3B0uB,EAAQ5mB,EAAK2sB,WAAW8H,wBAAmBpuC,EAAWzC,GACxDmW,GAAQ+5B,IACV9zB,EAAK+M,KAAK+mB,GAAWpB,QAAUroB,EAC/B/V,KAAKq1B,WAELr1B,KAAKg0D,qBAAqBpwD,EAAcmS,GACxCuc,EAAM+C,OAAO3pB,EAAM,CACjBqK,YAEF/V,KAAKq1B,QAAOliB,GAAOA,EAAIvP,eAAiBA,EAAetU,OAAOyC,IAElE,CACA,IAAAikB,CAAKpS,EAAc47B,GACjBx/B,KAAKi0D,kBAAkBrwD,EAAc47B,GAAW,EAClD,CACA,IAAA3pB,CAAKjS,EAAc47B,GACjBx/B,KAAKi0D,kBAAkBrwD,EAAc47B,GAAW,EAClD,CACA,mBAAAmyB,CAAoB/tD,GAClB,MAAM8H,EAAO1L,KAAKyvD,UAAU7rD,GACxB8H,GAAQA,EAAK2sB,YACf3sB,EAAK2sB,WAAWyD,kBAEX97B,KAAKyvD,UAAU7rD,EACxB,CACA,KAAAswD,GACE,IAAI/lE,EAAGsV,EAGP,IAFAzD,KAAKi0B,OACLG,GAASD,OAAOn0B,MACX7R,EAAI,EAAGsV,EAAOzD,KAAKyY,KAAKnG,SAASlgB,OAAQjE,EAAIsV,IAAQtV,EACxD6R,KAAK2xD,oBAAoBxjE,EAE7B,CACA,OAAAgmE,GACEn0D,KAAKkgD,cAAc,iBACnB,MAAMpmC,EAAS9Z,KAAK8Z,OAClB3G,EAAMnT,KAAKmT,IACbnT,KAAKk0D,QACLl0D,KAAK61B,OAAOu3B,aACRtzC,IACF9Z,KAAK8yD,eACLj5C,GAAYC,EAAQ3G,GACpBnT,KAAKyS,SAASsjC,eAAe5iC,GAC7BnT,KAAK8Z,OAAS,KACd9Z,KAAKmT,IAAM,aAEN47C,GAAU/uD,KAAK+B,IACtB/B,KAAKkgD,cAAc,eACrB,CACA,aAAAkU,GACE,OAAOp0D,KAAK8Z,OAAOu6C,aAAaliE,UAClC,CACA,UAAAs+D,GACEzwD,KAAKs0D,iBACDt0D,KAAKoE,QAAQ2P,WACf/T,KAAKu0D,uBAELv0D,KAAKgwD,UAAW,CAEpB,CACA,cAAAsE,GACE,MAAMjqD,EAAYrK,KAAK2vD,WACjBl9C,EAAWzS,KAAKyS,SAChB+hD,EAAO,CAAC30D,EAAMqK,KAClBuI,EAAS8Y,iBAAiBvrB,KAAMH,EAAMqK,GACtCG,EAAUxK,GAAQqK,CAAQ,EAEtBA,EAAW,CAAC5Y,EAAGkC,EAAGsR,KACtBxT,EAAEi4B,QAAU/1B,EACZlC,EAAEk4B,QAAU1kB,EACZ9E,KAAK0yD,cAAcphE,EAAE,EAEvB6R,EAAKnD,KAAKoE,QAAQwO,QAAQ/S,GAAQ20D,EAAK30D,EAAMqK,IAC/C,CACA,oBAAAqqD,GACOv0D,KAAK4vD,uBACR5vD,KAAK4vD,qBAAuB,CAAC,GAE/B,MAAMvlD,EAAYrK,KAAK4vD,qBACjBn9C,EAAWzS,KAAKyS,SAChB+hD,EAAO,CAAC30D,EAAMqK,KAClBuI,EAAS8Y,iBAAiBvrB,KAAMH,EAAMqK,GACtCG,EAAUxK,GAAQqK,CAAQ,EAEtBuqD,EAAU,CAAC50D,EAAMqK,KACjBG,EAAUxK,KACZ4S,EAAS+Y,oBAAoBxrB,KAAMH,EAAMqK,UAClCG,EAAUxK,GACnB,EAEIqK,EAAW,CAACqN,EAAO2C,KACnBla,KAAK8Z,QACP9Z,KAAK4V,OAAO2B,EAAO2C,EACrB,EAEF,IAAIw6C,EACJ,MAAM1E,EAAW,KACfyE,EAAQ,SAAUzE,GAClBhwD,KAAKgwD,UAAW,EAChBhwD,KAAK4V,SACL4+C,EAAK,SAAUtqD,GACfsqD,EAAK,SAAUE,EAAS,EAE1BA,EAAW,KACT10D,KAAKgwD,UAAW,EAChByE,EAAQ,SAAUvqD,GAClBlK,KAAKk0D,QACLl0D,KAAK2wD,QAAQ,EAAG,GAChB6D,EAAK,SAAUxE,EAAS,EAEtBv9C,EAASujC,WAAWh2C,KAAK8Z,QAC3Bk2C,IAEA0E,GAEJ,CACA,YAAA5B,GACE3vD,EAAKnD,KAAK2vD,YAAY,CAACzlD,EAAUrK,KAC/BG,KAAKyS,SAAS+Y,oBAAoBxrB,KAAMH,EAAMqK,EAAS,IAEzDlK,KAAK2vD,WAAa,CAAC,EACnBxsD,EAAKnD,KAAK4vD,sBAAsB,CAAC1lD,EAAUrK,KACzCG,KAAKyS,SAAS+Y,oBAAoBxrB,KAAMH,EAAMqK,EAAS,IAEzDlK,KAAK4vD,0BAAuB79D,CAC9B,CACA,gBAAA4iE,CAAiBlqD,EAAOnb,EAAMsrD,GAC5B,MAAMt5B,EAASs5B,EAAU,MAAQ,SACjC,IAAIlvC,EAAM7F,EAAM1X,EAAGsV,EAKnB,IAJa,YAATnU,IACFoc,EAAO1L,KAAK07B,eAAejxB,EAAM,GAAG7G,cACpC8H,EAAK2sB,WAAW,IAAM/W,EAAS,wBAE5BnzB,EAAI,EAAGsV,EAAOgH,EAAMrY,OAAQjE,EAAIsV,IAAQtV,EAAG,CAC9C0X,EAAO4E,EAAMtc,GACb,MAAMkqC,EAAaxyB,GAAQ7F,KAAK07B,eAAe71B,EAAKjC,cAAcy0B,WAC9DA,GACFA,EAAW/W,EAAS,cAAczb,EAAKuiB,QAASviB,EAAKjC,aAAciC,EAAKhC,MAE5E,CACF,CACA,iBAAA+wD,GACE,OAAO50D,KAAKmzB,SAAW,EACzB,CACA,iBAAA0hC,CAAkBC,GAChB,MAAMC,EAAa/0D,KAAKmzB,SAAW,GAC7Bxd,EAASm/C,EAAehiE,KAAIkiE,IAChC,IAAIpxD,EAAeoxD,EAAMpxD,aACvBC,EAAQmxD,EAAMnxD,MAChB,MAAM6H,EAAO1L,KAAK07B,eAAe93B,GACjC,IAAK8H,EACH,MAAM,IAAImX,MAAM,6BAA+Bjf,GAEjD,MAAO,CACLA,eACAwkB,QAAS1c,EAAK+M,KAAK5U,GACnBA,QACD,KAEcP,EAAeqS,EAAQo/C,KAEtC/0D,KAAKmzB,QAAUxd,EACf3V,KAAK0vD,WAAa,KAClB1vD,KAAK2yD,mBAAmBh9C,EAAQo/C,GAEpC,CACA,aAAA7U,CAAcqK,EAAMvnD,EAAMmgB,GACxB,OAAOnjB,KAAK8vD,SAASxF,OAAOtqD,KAAMuqD,EAAMvnD,EAAMmgB,EAChD,CACA,eAAAsX,CAAgBw6B,GACd,OAA6E,IAAtEj1D,KAAK8vD,SAASttB,OAAOrf,QAAOlzB,GAAKA,EAAEy6D,OAAO3oD,KAAOkzD,IAAU7iE,MACpE,CACA,kBAAAugE,CAAmBh9C,EAAQo/C,EAAYG,GACrC,MAAMC,EAAen1D,KAAKoE,QAAQ6O,MAC5Bk8B,EAAO,CAAC/9C,EAAGC,IAAMD,EAAE+xB,QAAO3vB,IAAMnC,EAAEk6D,MAAKzmD,GAAKtR,EAAEoQ,eAAiBkB,EAAElB,cAAgBpQ,EAAEqQ,QAAUiB,EAAEjB,UAC/FuxD,EAAcjmB,EAAK4lB,EAAYp/C,GAC/B0/C,EAAYH,EAASv/C,EAASw5B,EAAKx5B,EAAQo/C,GAC7CK,EAAYhjE,QACd4N,KAAK20D,iBAAiBS,EAAaD,EAAa7lE,MAAM,GAEpD+lE,EAAUjjE,QAAU+iE,EAAa7lE,MACnC0Q,KAAK20D,iBAAiBU,EAAWF,EAAa7lE,MAAM,EAExD,CACA,aAAAojE,CAAcphE,EAAG4jE,GACf,MAAMlyD,EAAO,CACXgmB,MAAO13B,EACP4jE,SACAvK,YAAY,EACZ2K,YAAat1D,KAAKqwC,cAAc/+C,IAE5BikE,EAAc7K,IAAWA,EAAOtmD,QAAQwO,QAAU5S,KAAKoE,QAAQwO,QAAQnB,SAASngB,EAAEsnD,OAAO/4C,MAC/F,IAA6D,IAAzDG,KAAKkgD,cAAc,cAAel9C,EAAMuyD,GAC1C,OAEF,MAAMtoD,EAAUjN,KAAKw1D,aAAalkE,EAAG4jE,EAAQlyD,EAAKsyD,aAMlD,OALAtyD,EAAK2nD,YAAa,EAClB3qD,KAAKkgD,cAAc,aAAcl9C,EAAMuyD,IACnCtoD,GAAWjK,EAAKiK,UAClBjN,KAAK+wD,SAEA/wD,IACT,CACA,YAAAw1D,CAAalkE,EAAG4jE,EAAQI,GACtB,MAAMG,EAAgBz1D,KAAKmzB,QACzB4hC,OAA+B,IAAlBU,EAA2B,GAAKA,EAC7CrxD,EAAUpE,KAAKoE,QACXgsC,EAAmB8kB,EACnBv/C,EAAS3V,KAAK01D,mBAAmBpkE,EAAGyjE,EAAYO,EAAallB,GAC7DulB,EDl6LV,SAAuBrkE,GACrB,MAAkB,YAAXA,EAAEuO,MAAiC,UAAXvO,EAAEuO,MAA+B,gBAAXvO,EAAEuO,IACzD,CCg6LoB+1D,CAActkE,GACxBukE,EAxzBV,SAA4BvkE,EAAGukE,EAAWP,EAAaK,GACrD,OAAKL,GAA0B,aAAXhkE,EAAEuO,KAGlB81D,EACKE,EAEFvkE,EALE,IAMX,CAgzBsBwkE,CAAmBxkE,EAAG0O,KAAK0vD,WAAY4F,EAAaK,GAClEL,IACFt1D,KAAK0vD,WAAa,KAClB5sD,EAASsB,EAAQuP,QAAS,CAACriB,EAAGqkB,EAAQ3V,MAAOA,MACzC21D,GACF7yD,EAASsB,EAAQwP,QAAS,CAACtiB,EAAGqkB,EAAQ3V,MAAOA,OAGjD,MAAMiN,GAAW3J,EAAeqS,EAAQo/C,GAMxC,OALI9nD,GAAWioD,KACbl1D,KAAKmzB,QAAUxd,EACf3V,KAAK2yD,mBAAmBh9C,EAAQo/C,EAAYG,IAE9Cl1D,KAAK0vD,WAAamG,EACX5oD,CACT,CACA,kBAAAyoD,CAAmBpkE,EAAGyjE,EAAYO,EAAallB,GAC7C,GAAe,aAAX9+C,EAAEuO,KACJ,MAAO,GAET,IAAKy1D,EACH,OAAOP,EAET,MAAMI,EAAen1D,KAAKoE,QAAQ6O,MAClC,OAAOjT,KAAK+zD,0BAA0BziE,EAAG6jE,EAAa7lE,KAAM6lE,EAAc/kB,EAC5E,EAQF,SAAS+e,KACP,OAAOhsD,EAAK,GAAM4rD,WAAWl+C,GAASA,EAAMi/C,SAASlF,cACvD,CA4BA,SAASmL,GAAoB76C,EAAKktB,EAAaC,EAAa2tB,GAC1D,MAAMpnE,EANCwwB,GAMmBlE,EAAI9W,QAAQ6xD,aANN,CAAC,aAAc,WAAY,aAAc,aAOzE,MAAMC,GAAiB7tB,EAAcD,GAAe,EAC9C+tB,EAAa7lE,KAAKE,IAAI0lE,EAAeF,EAAa5tB,EAAc,GAQhEguB,EAAoBh1D,IACxB,MAAMi1D,GAAiBhuB,EAAc/3C,KAAKE,IAAI0lE,EAAe90D,IAAQ40D,EAAa,EAClF,OAAO5sD,GAAYhI,EAAK,EAAG9Q,KAAKE,IAAI0lE,EAAeG,GAAe,EAEpE,MAAO,CACLC,WAAYF,EAAkBxnE,EAAE0nE,YAChCC,SAAUH,EAAkBxnE,EAAE2nE,UAC9BC,WAAYptD,GAAYxa,EAAE4nE,WAAY,EAAGL,GACzCM,SAAUrtD,GAAYxa,EAAE6nE,SAAU,EAAGN,GAEzC,CAIA,SAASO,GAAWznE,EAAG0nE,EAAOnjE,EAAGsR,GAC/B,MAAO,CACLtR,EAAGA,EAAIvE,EAAIqB,KAAK+d,IAAIsoD,GACpB7xD,EAAGA,EAAI7V,EAAIqB,KAAK8c,IAAIupD,GAExB,CAeA,SAASC,GAAQzjD,EAAKiV,EAAS5R,EAAQoyB,EAAS9/B,EAAK4kC,GACnD,MAAMl6C,EAAI40B,EAAQ50B,EAChBsR,EAAIsjB,EAAQtjB,EACZ+D,EAAQuf,EAAQmhB,WAChBstB,EAAczuC,EAAQyuC,YACtBC,EAAS1uC,EAAQggB,YACbC,EAAc/3C,KAAKC,IAAI63B,EAAQigB,YAAcO,EAAUpyB,EAASqgD,EAAa,GAC7EzuB,EAAc0uB,EAAS,EAAIA,EAASluB,EAAUpyB,EAASqgD,EAAc,EAC3E,IAAIE,EAAgB,EACpB,MAAM91D,EAAQ6H,EAAMD,EACpB,GAAI+/B,EAAS,CAIX,MAEMouB,IAFuBF,EAAS,EAAIA,EAASluB,EAAU,IAChCP,EAAc,EAAIA,EAAcO,EAAU,IACI,EAE3EmuB,GAAiB91D,GAD4B,IAAvB+1D,EAA2B/1D,EAAQ+1D,GAAsBA,EAAqBpuB,GAAW3nC,IACrE,CAC5C,CACA,MACMg2D,GAAeh2D,EADR3Q,KAAKC,IAAI,KAAO0Q,EAAQonC,EAAc7xB,EAASzQ,IAAMsiC,GAC7B,EAC/BkB,EAAa1gC,EAAQouD,EAAcF,EACnCvtB,EAAW1gC,EAAMmuD,EAAcF,EAC/BG,EAAsBnB,GAAoB3tC,EAASggB,EAAaC,EAAamB,EAAWD,GAC5F+sB,EAAaY,EAAoBZ,WACjCC,EAAWW,EAAoBX,SAC/BC,EAAaU,EAAoBV,WACjCC,EAAWS,EAAoBT,SAC3BU,EAA2B9uB,EAAciuB,EACzCc,EAAyB/uB,EAAckuB,EACvCc,EAA0B9tB,EAAa+sB,EAAaa,EACpDG,EAAwB9tB,EAAW+sB,EAAWa,EAC9CG,EAA2BnvB,EAAcouB,EACzCgB,EAAyBpvB,EAAcquB,EACvCgB,EAA0BluB,EAAaitB,EAAae,EACpDG,EAAwBluB,EAAWitB,EAAWe,EAEpD,GADArkD,EAAI6H,YACA0yB,EAAU,CAEZ,MAAMiqB,GAAyBN,EAA0BC,GAAyB,EAIlF,GAHAnkD,EAAI+H,IAAI1nB,EAAGsR,EAAGujC,EAAagvB,EAAyBM,GACpDxkD,EAAI+H,IAAI1nB,EAAGsR,EAAGujC,EAAasvB,EAAuBL,GAE9Cf,EAAW,EAAG,CAChB,MAAMqB,EAAUlB,GAAWU,EAAwBE,EAAuB9jE,EAAGsR,GAC7EqO,EAAI+H,IAAI08C,EAAQpkE,EAAGokE,EAAQ9yD,EAAGyxD,EAAUe,EAAuB9tB,EAAWnjC,GAC5E,CAEA,MAAMwxD,EAAKnB,GAAWc,EAAwBhuB,EAAUh2C,EAAGsR,GAG3D,GAFAqO,EAAIkI,OAAOw8C,EAAGrkE,EAAGqkE,EAAG/yD,GAEhB2xD,EAAW,EAAG,CAChB,MAAMqB,EAAWpB,GAAWc,EAAwBE,EAAuBlkE,EAAGsR,GAC9EqO,EAAI+H,IAAI48C,EAAStkE,EAAGskE,EAAShzD,EAAG2xD,EAAUjtB,EAAWnjC,GAASqxD,EAAwBpnE,KAAKyV,GAC7F,CAEA,MAAMgyD,GAAyBvuB,EAAWitB,EAAWruB,GAAemB,EAAaitB,EAAapuB,IAAgB,EAI9G,GAHAj1B,EAAI+H,IAAI1nB,EAAGsR,EAAGsjC,EAAaoB,EAAWitB,EAAWruB,EAAa2vB,GAAuB,GACrF5kD,EAAI+H,IAAI1nB,EAAGsR,EAAGsjC,EAAa2vB,EAAuBxuB,EAAaitB,EAAapuB,GAAa,GAErFouB,EAAa,EAAG,CAClB,MAAMwB,EAAWtB,GAAWa,EAA0BE,EAAyBjkE,EAAGsR,GAClFqO,EAAI+H,IAAI88C,EAASxkE,EAAGwkE,EAASlzD,EAAG0xD,EAAYiB,EAA0BnnE,KAAKyV,GAAIwjC,EAAaljC,GAC9F,CAEA,MAAM4xD,EAAKvB,GAAWS,EAA0B5tB,EAAY/1C,EAAGsR,GAG/D,GAFAqO,EAAIkI,OAAO48C,EAAGzkE,EAAGykE,EAAGnzD,GAEhBwxD,EAAa,EAAG,CAClB,MAAM4B,EAAWxB,GAAWS,EAA0BE,EAAyB7jE,EAAGsR,GAClFqO,EAAI+H,IAAIg9C,EAAS1kE,EAAG0kE,EAASpzD,EAAGwxD,EAAY/sB,EAAaljC,GAASgxD,EACpE,CACF,KAAO,CACLlkD,EAAIiI,OAAO5nB,EAAGsR,GACd,MAAMqzD,EAAc7nE,KAAK+d,IAAIgpD,GAA2BhvB,EAAc70C,EAChE4kE,EAAc9nE,KAAK8c,IAAIiqD,GAA2BhvB,EAAcvjC,EACtEqO,EAAIkI,OAAO88C,EAAaC,GACxB,MAAMC,EAAY/nE,KAAK+d,IAAIipD,GAAyBjvB,EAAc70C,EAC5D8kE,EAAYhoE,KAAK8c,IAAIkqD,GAAyBjvB,EAAcvjC,EAClEqO,EAAIkI,OAAOg9C,EAAWC,EACxB,CACAnlD,EAAIgI,WACN,CAmBA,SAASgrC,GAAWhzC,EAAKiV,EAAS5R,EAAQoyB,EAAS8E,GACjD,MAAM6qB,EAAcnwC,EAAQmwC,YAC1BhvB,EAAanhB,EAAQmhB,WACrBf,EAAgBpgB,EAAQogB,cACxBpkC,EAAUgkB,EAAQhkB,QACdqX,EAAcrX,EAAQqX,YAC1BkU,EAAkBvrB,EAAQurB,gBACtB6oC,EAAgC,UAAxBp0D,EAAQ+mC,YACtB,IAAK1vB,EACH,OAEE+8C,GACFrlD,EAAI0D,UAA0B,EAAd4E,EAChBtI,EAAIslD,SAAW9oC,GAAmB,UAElCxc,EAAI0D,UAAY4E,EAChBtI,EAAIslD,SAAW9oC,GAAmB,SAEpC,IAAI6Z,EAAWphB,EAAQohB,SACvB,GAAI+uB,EAAa,CACf3B,GAAQzjD,EAAKiV,EAAS5R,EAAQoyB,EAASY,EAAUkE,GACjD,IAAK,IAAIv/C,EAAI,EAAGA,EAAIoqE,IAAepqE,EACjCglB,EAAIuI,SAEDrU,MAAMmhC,KACTgB,EAAWD,GAAcf,EAAgBxiC,IAAOA,IAEpD,CACIwyD,GA1MN,SAAiBrlD,EAAKiV,EAASohB,GAC7B,MAAMD,EAAanhB,EAAQmhB,WACzBstB,EAAczuC,EAAQyuC,YACtBrjE,EAAI40B,EAAQ50B,EACZsR,EAAIsjB,EAAQtjB,EACZujC,EAAcjgB,EAAQigB,YACtBD,EAAchgB,EAAQggB,YACxB,IAAIswB,EAAc7B,EAAcxuB,EAGhCl1B,EAAI6H,YACJ7H,EAAI+H,IAAI1nB,EAAGsR,EAAGujC,EAAakB,EAAamvB,EAAalvB,EAAWkvB,GAC5DtwB,EAAcyuB,GAChB6B,EAAc7B,EAAczuB,EAC5Bj1B,EAAI+H,IAAI1nB,EAAGsR,EAAGsjC,EAAaoB,EAAWkvB,EAAanvB,EAAamvB,GAAa,IAE7EvlD,EAAI+H,IAAI1nB,EAAGsR,EAAG+xD,EAAartB,EAAWnjC,GAASkjC,EAAaljC,IAE9D8M,EAAIgI,YACJhI,EAAI6I,MACN,CAuLI28C,CAAQxlD,EAAKiV,EAASohB,GAEnB+uB,IACH3B,GAAQzjD,EAAKiV,EAAS5R,EAAQoyB,EAASY,EAAUkE,GACjDv6B,EAAIuI,SAER,CA1NA,GAAM1G,SAAWA,GACjB,GAAM+5C,UAAYA,GAClB,GAAMp9C,UAAYA,GAClB,GAAMu8B,SAAW,GACjB,GAAM0qB,QAz4BQ,QA04Bd,GAAM5J,SAAWA,GAsNjB,MAAM,WAAmB,GACvB,WAAApvD,CAAY80B,GACVsQ,QACAhlC,KAAKoE,aAAUrS,EACfiO,KAAKwoC,mBAAgBz2C,EACrBiO,KAAKupC,gBAAax3C,EAClBiO,KAAKwpC,cAAWz3C,EAChBiO,KAAKooC,iBAAcr2C,EACnBiO,KAAKqoC,iBAAct2C,EACnBiO,KAAK62D,YAAc,EACnB72D,KAAKu4D,YAAc,EACf7jC,GACF7lC,OAAOwQ,OAAOW,KAAM00B,EAExB,CACA,OAAA4b,CAAQuoB,EAAQC,EAAQ1oB,GACtB,MACM2oB,EAAsBlxD,GADd7H,KAAKkxC,SAAS,CAAC,IAAK,KAAMd,GACa,CACjD58C,EAAGqlE,EACH/zD,EAAGg0D,IAEL1wD,EAAQ2wD,EAAoB3wD,MAC5BE,EAAWywD,EAAoBzwD,SAC3B0wD,EAAkBh5D,KAAKkxC,SAAS,CAAC,aAAc,WAAY,cAAe,cAAe,iBAAkBd,GAC/G7G,EAAayvB,EAAgBzvB,WAC7BC,EAAWwvB,EAAgBxvB,SAC3BpB,EAAc4wB,EAAgB5wB,YAC9BC,EAAc2wB,EAAgB3wB,YAC9BG,EAAgBwwB,EAAgBxwB,cAC5BywB,EAAUj5D,KAAKoE,QAAQwkC,QAAU,EAEjCswB,EADiBz2D,EAAe+lC,EAAegB,EAAWD,IACxBvjC,IAAO4C,GAAcR,EAAOmhC,EAAYC,GAC1E2vB,EAAe9vD,GAAWf,EAAU8/B,EAAc6wB,EAAS5wB,EAAc4wB,GAC/E,OAAOC,GAAiBC,CAC1B,CACA,cAAApoB,CAAeX,GACb,MAAMgpB,EAAkBp5D,KAAKkxC,SAAS,CAAC,IAAK,IAAK,aAAc,WAAY,cAAe,eAAgBd,GACxG58C,EAAI4lE,EAAgB5lE,EACpBsR,EAAIs0D,EAAgBt0D,EACpBykC,EAAa6vB,EAAgB7vB,WAC7BC,EAAW4vB,EAAgB5vB,SAC3BpB,EAAcgxB,EAAgBhxB,YAC9BC,EAAc+wB,EAAgB/wB,YAC1BgxB,EAAkBr5D,KAAKoE,QAC3BoS,EAAS6iD,EAAgB7iD,OAErB8iD,GAAa/vB,EAAaC,GAAY,EACtC+vB,GAAcnxB,EAAcC,EAFtBgxB,EAAgBzwB,QAE8BpyB,GAAU,EACpE,MAAO,CACLhjB,EAAGA,EAAIlD,KAAK+d,IAAIirD,GAAaC,EAC7Bz0D,EAAGA,EAAIxU,KAAK8c,IAAIksD,GAAaC,EAEjC,CACA,eAAAzf,CAAgB1J,GACd,OAAOpwC,KAAK+wC,eAAeX,EAC7B,CACA,IAAAld,CAAK/f,GACH,MAAM/O,EAAUpE,KAAKoE,QACnBokC,EAAgBxoC,KAAKwoC,cACjBhyB,GAAUpS,EAAQoS,QAAU,GAAK,EACjCoyB,GAAWxkC,EAAQwkC,SAAW,GAAK,EACnC8E,EAAWtpC,EAAQspC,SAGzB,GAFA1tC,KAAK62D,YAAsC,UAAxBzyD,EAAQ+mC,YAA0B,IAAO,EAC5DnrC,KAAKu4D,YAAc/vB,EAAgBxiC,GAAM1V,KAAK4W,MAAMshC,EAAgBxiC,IAAO,EACrD,IAAlBwiC,GAAuBxoC,KAAKooC,YAAc,GAAKpoC,KAAKqoC,YAAc,EACpE,OAEFl1B,EAAIgG,OACJ,MAAMmgD,GAAat5D,KAAKupC,WAAavpC,KAAKwpC,UAAY,EACtDr2B,EAAI2H,UAAUxqB,KAAK+d,IAAIirD,GAAa9iD,EAAQlmB,KAAK8c,IAAIksD,GAAa9iD,GAClE,MACMgjD,EAAehjD,GADT,EAAIlmB,KAAK8c,IAAI9c,KAAKE,IAAIuV,GAAIyiC,GAAiB,KAEvDr1B,EAAIgK,UAAY/Y,EAAQgO,gBACxBe,EAAIsK,YAAcrZ,EAAQiO,YA/H9B,SAAiBc,EAAKiV,EAAS5R,EAAQoyB,EAAS8E,GAC9C,MAAM6qB,EAAcnwC,EAAQmwC,YAC1BhvB,EAAanhB,EAAQmhB,WACrBf,EAAgBpgB,EAAQogB,cAC1B,IAAIgB,EAAWphB,EAAQohB,SACvB,GAAI+uB,EAAa,CACf3B,GAAQzjD,EAAKiV,EAAS5R,EAAQoyB,EAASY,EAAUkE,GACjD,IAAK,IAAIv/C,EAAI,EAAGA,EAAIoqE,IAAepqE,EACjCglB,EAAIqI,OAEDnU,MAAMmhC,KACTgB,EAAWD,GAAcf,EAAgBxiC,IAAOA,IAEpD,CACA4wD,GAAQzjD,EAAKiV,EAAS5R,EAAQoyB,EAASY,EAAUkE,GACjDv6B,EAAIqI,MAEN,CA+GIi+C,CAAQtmD,EAAKnT,KAAMw5D,EAAc5wB,EAAS8E,GAC1CyY,GAAWhzC,EAAKnT,KAAMw5D,EAAc5wB,EAAS8E,GAC7Cv6B,EAAIoG,SACN,EAiBF,SAASmgD,GAASvmD,EAAK/O,GACrB,IAAI2O,EAAQ5gB,UAAUC,OAAS,QAAsBL,IAAjBI,UAAU,GAAmBA,UAAU,GAAKiS,EAChF+O,EAAIwmD,QAAUl3D,EAAesQ,EAAMyc,eAAgBprB,EAAQorB,gBAC3Drc,EAAI8yC,YAAYxjD,EAAesQ,EAAM0c,WAAYrrB,EAAQqrB,aACzDtc,EAAI+yC,eAAiBzjD,EAAesQ,EAAM2c,iBAAkBtrB,EAAQsrB,kBACpEvc,EAAIslD,SAAWh2D,EAAesQ,EAAM4c,gBAAiBvrB,EAAQurB,iBAC7Dxc,EAAI0D,UAAYpU,EAAesQ,EAAM0I,YAAarX,EAAQqX,aAC1DtI,EAAIsK,YAAchb,EAAesQ,EAAMV,YAAajO,EAAQiO,YAC9D,CACA,SAASgJ,GAAOlI,EAAKgJ,EAAUpY,GAC7BoP,EAAIkI,OAAOtX,EAAOvQ,EAAGuQ,EAAOe,EAC9B,CAUA,SAAS80D,GAASjuD,EAAQ8hB,GACxB,IAAIukB,EAAS7/C,UAAUC,OAAS,QAAsBL,IAAjBI,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAClF,MAAM2Z,EAAQH,EAAOvZ,OACfynE,EAAgB7nB,EAAOnpC,MAC3BixD,OAAgC,IAAlBD,EAA2B,EAAIA,EAC7CE,EAAc/nB,EAAOlpC,IACrBkxD,OAA4B,IAAhBD,EAAyBjuD,EAAQ,EAAIiuD,EAC7CE,EAAexsC,EAAQ5kB,MAC3BqxD,EAAazsC,EAAQ3kB,IACjBD,EAAQvY,KAAKC,IAAIupE,EAAaG,GAC9BnxD,EAAMxY,KAAKE,IAAIwpE,EAAWE,GAC1BC,EAAUL,EAAcG,GAAgBD,EAAYC,GAAgBH,EAAcI,GAAcF,EAAYE,EAClH,MAAO,CACLpuD,QACAjD,QACA2M,KAAMiY,EAAQjY,KACd/R,KAAMqF,EAAMD,IAAUsxD,EAAUruD,EAAQhD,EAAMD,EAAQC,EAAMD,EAEhE,CACA,SAASuxD,GAAYjnD,EAAK8J,EAAMwQ,EAASukB,GACvC,MAAMrmC,EAASsR,EAAKtR,OAClBvH,EAAU6Y,EAAK7Y,QACXi2D,EAAYT,GAASjuD,EAAQ8hB,EAASukB,GAC1ClmC,EAAQuuD,EAAUvuD,MAClBjD,EAAQwxD,EAAUxxD,MAClB2M,EAAO6kD,EAAU7kD,KACjB/R,EAAO42D,EAAU52D,KACb62D,EApCR,SAAuBl2D,GACrB,OAAIA,EAAQm2D,QACHr+C,GAEL9X,EAAQgjB,SAA8C,aAAnChjB,EAAQ8iB,uBACtB5K,GAEFjB,EACT,CA4BqBm/C,CAAcp2D,GACjC,IAIIjW,EAAGytB,EAAOuL,EAJVszC,EAAQzoB,GAAU,CAAC,EACrB0oB,EAAaD,EAAM94B,KACnBA,OAAsB,IAAf+4B,GAA+BA,EACtCr3D,EAAUo3D,EAAMp3D,QAElB,IAAKlV,EAAI,EAAGA,GAAKsV,IAAQtV,EACvBytB,EAAQjQ,GAAQ9C,GAASxF,EAAUI,EAAOtV,EAAIA,IAAM2d,GAChD8P,EAAMmJ,OAEC4c,GACTxuB,EAAIiI,OAAOQ,EAAMpoB,EAAGooB,EAAM9W,GAC1B68B,GAAO,GAEP24B,EAAWnnD,EAAKgU,EAAMvL,EAAOvY,EAASe,EAAQm2D,SAEhDpzC,EAAOvL,GAMT,OAJIpG,IACFoG,EAAQjQ,GAAQ9C,GAASxF,EAAUI,EAAO,IAAMqI,GAChDwuD,EAAWnnD,EAAKgU,EAAMvL,EAAOvY,EAASe,EAAQm2D,YAEvC/kD,CACX,CACA,SAASmlD,GAAgBxnD,EAAK8J,EAAMwQ,EAASukB,GAC3C,MAAMrmC,EAASsR,EAAKtR,OACdivD,EAAahB,GAASjuD,EAAQ8hB,EAASukB,GAC3ClmC,EAAQ8uD,EAAW9uD,MACnBjD,EAAQ+xD,EAAW/xD,MACnBpF,EAAOm3D,EAAWn3D,KACdo3D,EAAQ7oB,GAAU,CAAC,EACvB8oB,EAAaD,EAAMl5B,KACnBA,OAAsB,IAAfm5B,GAA+BA,EACtCz3D,EAAUw3D,EAAMx3D,QAClB,IAEIlV,EAAGytB,EAAOm/C,EAAO7wB,EAAMF,EAAMgxB,EAF7BC,EAAO,EACPC,EAAS,EAEb,MAAMC,EAAat3D,IAAUgF,GAASxF,EAAUI,EAAOI,EAAQA,IAAUiI,EACnEsvD,EAAQ,KACRlxB,IAASF,IACX72B,EAAIkI,OAAO4/C,EAAMjxB,GACjB72B,EAAIkI,OAAO4/C,EAAM/wB,GACjB/2B,EAAIkI,OAAO4/C,EAAMD,GACnB,EAMF,IAJIr5B,IACF/lB,EAAQjQ,EAAOwvD,EAAW,IAC1BhoD,EAAIiI,OAAOQ,EAAMpoB,EAAGooB,EAAM9W,IAEvB3W,EAAI,EAAGA,GAAKsV,IAAQtV,EAAG,CAE1B,GADAytB,EAAQjQ,EAAOwvD,EAAWhtE,IACtBytB,EAAMmJ,KACR,SAEF,MAAMvxB,EAAIooB,EAAMpoB,EACVsR,EAAI8W,EAAM9W,EACVu2D,EAAa,EAAJ7nE,EACX6nE,IAAWN,GACTj2D,EAAIolC,EACNA,EAAOplC,EACEA,EAAIklC,IACbA,EAAOllC,GAETm2D,GAAQC,EAASD,EAAOznE,KAAO0nE,IAE/BE,IACAjoD,EAAIkI,OAAO7nB,EAAGsR,GACdi2D,EAAQM,EACRH,EAAS,EACThxB,EAAOF,EAAOllC,GAEhBk2D,EAAQl2D,CACV,CACAs2D,GACF,CACA,SAASE,GAAkBr+C,GACzB,MAAMJ,EAAOI,EAAK7Y,QACZqrB,EAAa5S,EAAK4S,YAAc5S,EAAK4S,WAAWr9B,OAEtD,OADqB6qB,EAAK+uB,aAAe/uB,EAAK8X,QAAUlY,EAAKuK,SAA2C,aAAhCvK,EAAKqK,yBAA0CrK,EAAK09C,UAAY9qC,EACnHkrC,GAAkBP,EACzC,CA/IA,GAAWr4D,GAAK,MAChB,GAAWiT,SAAW,CACpBm2B,YAAa,SACb94B,YAAa,OACbsd,qBAAiB59B,EACjBkkE,aAAc,EACdx6C,YAAa,EACbjF,OAAQ,EACRoyB,QAAS,EACTxgC,WAAOrW,EACP27C,UAAU,GAEZ,GAAWiO,cAAgB,CACzBvpC,gBAAiB,mBAuKnB,MAAMmpD,GAA8B,oBAAXC,OACzB,SAAStoC,GAAK/f,EAAK8J,EAAMpU,EAAOiD,GAC1ByvD,KAAct+C,EAAK7Y,QAAQqpB,QA7BjC,SAA6Bta,EAAK8J,EAAMpU,EAAOiD,GAC7C,IAAI2vD,EAAOx+C,EAAKy+C,MACXD,IACHA,EAAOx+C,EAAKy+C,MAAQ,IAAIF,OACpBv+C,EAAKw+C,KAAKA,EAAM5yD,EAAOiD,IACzB2vD,EAAKtgD,aAGTu+C,GAASvmD,EAAK8J,EAAK7Y,SACnB+O,EAAIuI,OAAO+/C,EACb,CAoBIE,CAAoBxoD,EAAK8J,EAAMpU,EAAOiD,GAnB1C,SAA0BqH,EAAK8J,EAAMpU,EAAOiD,GAC1C,MAAMwiB,EAAWrR,EAAKqR,SACpBlqB,EAAU6Y,EAAK7Y,QACXw3D,EAAgBN,GAAkBr+C,GACxC,IAAK,MAAMwQ,KAAWa,EACpBorC,GAASvmD,EAAK/O,EAASqpB,EAAQ1a,OAC/BI,EAAI6H,YACA4gD,EAAczoD,EAAK8J,EAAMwQ,EAAS,CACpC5kB,QACAC,IAAKD,EAAQiD,EAAQ,KAErBqH,EAAIgI,YAENhI,EAAIuI,QAER,CAMImgD,CAAiB1oD,EAAK8J,EAAMpU,EAAOiD,EAEvC,CACA,MAAM,WAAoB,GACxB,WAAAlM,CAAY80B,GACVsQ,QACAhlC,KAAKisC,UAAW,EAChBjsC,KAAKoE,aAAUrS,EACfiO,KAAK2uB,YAAS58B,EACdiO,KAAK+0B,WAAQhjC,EACbiO,KAAK6tC,eAAY97C,EACjBiO,KAAK07D,WAAQ3pE,EACbiO,KAAK87D,aAAU/pE,EACfiO,KAAK+7D,eAAYhqE,EACjBiO,KAAKgsC,YAAa,EAClBhsC,KAAKg8D,gBAAiB,EACtBh8D,KAAK8uB,mBAAgB/8B,EACjB2iC,GACF7lC,OAAOwQ,OAAOW,KAAM00B,EAExB,CACA,mBAAAiY,CAAoBtN,EAAW/rB,GAC7B,MAAMlP,EAAUpE,KAAKoE,QACrB,IAAKA,EAAQgjB,SAA8C,aAAnChjB,EAAQ8iB,0BAA2C9iB,EAAQm2D,UAAYv6D,KAAKg8D,eAAgB,CAClH,MAAMxmD,EAAOpR,EAAQ6iB,SAAWjnB,KAAK+0B,MAAQ/0B,KAAK6tC,UAClD9mB,GAA2B/mB,KAAK87D,QAAS13D,EAASi7B,EAAW7pB,EAAMlC,GACnEtT,KAAKg8D,gBAAiB,CACxB,CACF,CACA,UAAIrwD,CAAOA,GACT3L,KAAK87D,QAAUnwD,SACR3L,KAAK+7D,iBACL/7D,KAAK07D,MACZ17D,KAAKg8D,gBAAiB,CACxB,CACA,UAAIrwD,GACF,OAAO3L,KAAK87D,OACd,CACA,YAAIxtC,GACF,OAAOtuB,KAAK+7D,YAAc/7D,KAAK+7D,UDvuInC,SAA0B9+C,EAAMwR,GAC9B,MAAM9iB,EAASsR,EAAKtR,OACdsb,EAAWhK,EAAK7Y,QAAQ6iB,SACxBnb,EAAQH,EAAOvZ,OACrB,IAAK0Z,EACH,MAAO,GAET,MAAM0J,IAASyH,EAAK8X,MACdknC,EAnER,SAAyBtwD,EAAQG,EAAO0J,EAAMyR,GAC5C,IAAIpe,EAAQ,EACRC,EAAMgD,EAAQ,EAClB,GAAI0J,IAASyR,EACX,KAAOpe,EAAQiD,IAAUH,EAAO9C,GAAOkc,MACrClc,IAGJ,KAAOA,EAAQiD,GAASH,EAAO9C,GAAOkc,MACpClc,IAMF,IAJAA,GAASiD,EACL0J,IACF1M,GAAOD,GAEFC,EAAMD,GAAS8C,EAAO7C,EAAMgD,GAAOiZ,MACxCjc,IAGF,OADAA,GAAOgD,EACA,CACLjD,QACAC,MAEJ,CA4C2BozD,CAAgBvwD,EAAQG,EAAO0J,EAAMyR,GAC5Dpe,EAAQozD,EAAiBpzD,MACzBC,EAAMmzD,EAAiBnzD,IACzB,OACS0lB,GAAcvR,GADN,IAAbgK,EACyB,CAAC,CAC1Bpe,QACAC,MACA0M,SAlDN,SAAuB7J,EAAQ9C,EAAOtY,EAAKilB,GACzC,MAAM1J,EAAQH,EAAOvZ,OACfu2B,EAAS,GACf,IAEI7f,EAFAe,EAAOhB,EACPse,EAAOxb,EAAO9C,GAElB,IAAKC,EAAMD,EAAQ,EAAGC,GAAOvY,IAAOuY,EAAK,CACvC,MAAMirB,EAAMpoB,EAAO7C,EAAMgD,GACrBioB,EAAIhP,MAAQgP,EAAIE,KACb9M,EAAKpC,OACRvP,GAAO,EACPmT,EAAOvjB,KAAK,CACVyD,MAAOA,EAAQiD,EACfhD,KAAMA,EAAM,GAAKgD,EACjB0J,SAEF3M,EAAQgB,EAAOkqB,EAAIE,KAAOnrB,EAAM,OAGlCe,EAAOf,EACHqe,EAAKpC,OACPlc,EAAQC,IAGZqe,EAAO4M,CACT,CAQA,OAPa,OAATlqB,GACF8e,EAAOvjB,KAAK,CACVyD,MAAOA,EAAQiD,EACfhD,IAAKe,EAAOiC,EACZ0J,SAGGmT,CACT,CAqB6BwzC,CAAcxwD,EAAQ9C,EAFrCC,EAAMD,EAAQC,EAAMgD,EAAQhD,IACjBmU,EAAK4wB,WAAuB,IAAVhlC,GAAeC,IAAQgD,EAAQ,GAHlEH,EAAQ8iB,EAKhB,CCktI+C2tC,CAAiBp8D,KAAMA,KAAKoE,QAAQqpB,SACjF,CACA,KAAAstB,GACE,MAAMzsB,EAAWtuB,KAAKsuB,SAChB3iB,EAAS3L,KAAK2L,OACpB,OAAO2iB,EAASl8B,QAAUuZ,EAAO2iB,EAAS,GAAGzlB,MAC/C,CACA,IAAAgB,GACE,MAAMykB,EAAWtuB,KAAKsuB,SAChB3iB,EAAS3L,KAAK2L,OACdG,EAAQwiB,EAASl8B,OACvB,OAAO0Z,GAASH,EAAO2iB,EAASxiB,EAAQ,GAAGhD,IAC7C,CACA,WAAAhI,CAAY8a,EAAO9rB,GACjB,MAAMsU,EAAUpE,KAAKoE,QACfhV,EAAQwsB,EAAM9rB,GACd6b,EAAS3L,KAAK2L,OACd2iB,EAAWD,GAAeruB,KAAM,CACpClQ,WACA+Y,MAAOzZ,EACP0Z,IAAK1Z,IAEP,IAAKk/B,EAASl8B,OACZ,OAEF,MAAMu2B,EAAS,GACT0zC,EA1GV,SAAiCj4D,GAC/B,OAAIA,EAAQm2D,QACHzuC,GAEL1nB,EAAQgjB,SAA8C,aAAnChjB,EAAQ8iB,uBACtB6E,GAEFF,EACT,CAkGyBywC,CAAwBl4D,GAC7C,IAAIjW,EAAGsV,EACP,IAAKtV,EAAI,EAAGsV,EAAO6qB,EAASl8B,OAAQjE,EAAIsV,IAAQtV,EAAG,CACjD,MAAMouE,EAAcjuC,EAASngC,GAC3B0a,EAAQ0zD,EAAY1zD,MACpBC,EAAMyzD,EAAYzzD,IACd1V,EAAKuY,EAAO9C,GACZxV,EAAKsY,EAAO7C,GAClB,GAAI1V,IAAOC,EAAI,CACbs1B,EAAOvjB,KAAKhS,GACZ,QACF,CACA,MACMopE,EAAeH,EAAajpE,EAAIC,EAD5B/C,KAAKsW,KAAKxX,EAAQgE,EAAGtD,KAAcuD,EAAGvD,GAAYsD,EAAGtD,KAClBsU,EAAQm2D,SACrDiC,EAAa1sE,GAAY8rB,EAAM9rB,GAC/B64B,EAAOvjB,KAAKo3D,EACd,CACA,OAAyB,IAAlB7zC,EAAOv2B,OAAeu2B,EAAO,GAAKA,CAC3C,CACA,WAAAyxC,CAAYjnD,EAAKsa,EAASukB,GAExB,OADsBspB,GAAkBt7D,KACjC47D,CAAczoD,EAAKnT,KAAMytB,EAASukB,EAC3C,CACA,IAAAypB,CAAKtoD,EAAKtK,EAAOiD,GACf,MAAMwiB,EAAWtuB,KAAKsuB,SAChBstC,EAAgBN,GAAkBt7D,MACxC,IAAIwV,EAAOxV,KAAK+0B,MAChBlsB,EAAQA,GAAS,EACjBiD,EAAQA,GAAS9L,KAAK2L,OAAOvZ,OAASyW,EACtC,IAAK,MAAM4kB,KAAWa,EACpB9Y,GAAQomD,EAAczoD,EAAKnT,KAAMytB,EAAS,CACxC5kB,QACAC,IAAKD,EAAQiD,EAAQ,IAGzB,QAAS0J,CACX,CACA,IAAA0d,CAAK/f,EAAKksB,EAAWx2B,EAAOiD,GAC1B,MAAM1H,EAAUpE,KAAKoE,SAAW,CAAC,GAClBpE,KAAK2L,QAAU,IACnBvZ,QAAUgS,EAAQqX,cAC3BtI,EAAIgG,OACJ+Z,GAAK/f,EAAKnT,KAAM6I,EAAOiD,GACvBqH,EAAIoG,WAEFvZ,KAAKisC,WACPjsC,KAAKg8D,gBAAiB,EACtBh8D,KAAK07D,WAAQ3pE,EAEjB,EAwBF,SAAS0qE,GAAU/wC,EAAI9C,EAAK1c,EAAMkkC,GAChC,MAAMhsC,EAAUsnB,EAAGtnB,QAEjBhV,EADmBs8B,EAAGwlB,SAAS,CAAChlC,GAAOkkC,GAClBlkC,GACvB,OAAO5b,KAAKsW,IAAIgiB,EAAMx5B,GAASgV,EAAQwW,OAASxW,EAAQs4D,SAC1D,CA3BA,GAAY36D,GAAK,OACjB,GAAYiT,SAAW,CACrBwa,eAAgB,OAChBC,WAAY,GACZC,iBAAkB,EAClBC,gBAAiB,QACjBlU,YAAa,EACb4L,iBAAiB,EACjBH,uBAAwB,UACxB1L,MAAM,EACNyL,UAAU,EACVszC,SAAS,EACTnzC,QAAS,GAEX,GAAYu0B,cAAgB,CAC1BvpC,gBAAiB,kBACjBC,YAAa,eAEf,GAAYsQ,YAAc,CACxB1N,aAAa,EACbE,WAAYzmB,GAAiB,eAATA,GAAkC,SAATA,GAQ/C,MAAM,WAAqB,GACzB,WAAAkR,CAAY80B,GACVsQ,QACAhlC,KAAKoE,aAAUrS,EACfiO,KAAK2kB,YAAS5yB,EACdiO,KAAK+kB,UAAOhzB,EACZiO,KAAKi0B,UAAOliC,EACR2iC,GACF7lC,OAAOwQ,OAAOW,KAAM00B,EAExB,CACA,OAAA4b,CAAQqsB,EAAQC,EAAQxsB,GACtB,MAAMhsC,EAAUpE,KAAKoE,QACfy4D,EAAkB78D,KAAKkxC,SAAS,CAAC,IAAK,KAAMd,GAChD58C,EAAIqpE,EAAgBrpE,EACpBsR,EAAI+3D,EAAgB/3D,EACtB,OAAOxU,KAAKyO,IAAI49D,EAASnpE,EAAG,GAAKlD,KAAKyO,IAAI69D,EAAS93D,EAAG,GAAKxU,KAAKyO,IAAIqF,EAAQs4D,UAAYt4D,EAAQwW,OAAQ,EAC1G,CACA,QAAAkiD,CAASH,EAAQvsB,GACf,OAAOqsB,GAAUz8D,KAAM28D,EAAQ,IAAKvsB,EACtC,CACA,QAAA2sB,CAASH,EAAQxsB,GACf,OAAOqsB,GAAUz8D,KAAM48D,EAAQ,IAAKxsB,EACtC,CACA,cAAAW,CAAeX,GACb,MAAM4sB,EAAkBh9D,KAAKkxC,SAAS,CAAC,IAAK,KAAMd,GAGlD,MAAO,CACL58C,EAHIwpE,EAAgBxpE,EAIpBsR,EAHIk4D,EAAgBl4D,EAKxB,CACA,IAAAc,CAAKxB,GAEH,IAAIwW,GADJxW,EAAUA,GAAWpE,KAAKoE,SAAW,CAAC,GACjBwW,QAAU,EAC/BA,EAAStqB,KAAKC,IAAIqqB,EAAQA,GAAUxW,EAAQ64D,aAAe,GAE3D,OAAgC,GAAxBriD,GADYA,GAAUxW,EAAQqX,aAAe,GAEvD,CACA,IAAAyX,CAAK/f,EAAK0I,GACR,MAAMzX,EAAUpE,KAAKoE,QACjBpE,KAAK+kB,MAAQ3gB,EAAQwW,OAAS,KAAQe,GAAe3b,KAAM6b,EAAM7b,KAAK4F,KAAKxB,GAAW,KAG1F+O,EAAIsK,YAAcrZ,EAAQiO,YAC1Bc,EAAI0D,UAAYzS,EAAQqX,YACxBtI,EAAIgK,UAAY/Y,EAAQgO,gBACxB+H,GAAUhH,EAAK/O,EAASpE,KAAKxM,EAAGwM,KAAK8E,GACvC,CACA,QAAA8qC,GACE,MAAMxrC,EAAUpE,KAAKoE,SAAW,CAAC,EAEjC,OAAOA,EAAQwW,OAASxW,EAAQs4D,SAClC,EAsBF,SAASQ,GAAaC,EAAK/sB,GACzB,MAAMgtB,EAAgBD,EAAIjsB,SAAS,CAAC,IAAK,IAAK,OAAQ,QAAS,UAAWd,GACxE58C,EAAI4pE,EAAc5pE,EAClBsR,EAAIs4D,EAAct4D,EAClBq3B,EAAOihC,EAAcjhC,KACrB5kB,EAAQ6lD,EAAc7lD,MACtB2C,EAASkjD,EAAcljD,OACzB,IAAI5D,EAAMF,EAAOD,EAAKE,EAAQgnD,EAc9B,OAbIF,EAAIl5B,YACNo5B,EAAOnjD,EAAS,EAChB5D,EAAOhmB,KAAKE,IAAIgD,EAAG2oC,GACnB/lB,EAAQ9lB,KAAKC,IAAIiD,EAAG2oC,GACpBhmB,EAAMrR,EAAIu4D,EACVhnD,EAASvR,EAAIu4D,IAEbA,EAAO9lD,EAAQ,EACfjB,EAAO9iB,EAAI6pE,EACXjnD,EAAQ5iB,EAAI6pE,EACZlnD,EAAM7lB,KAAKE,IAAIsU,EAAGq3B,GAClB9lB,EAAS/lB,KAAKC,IAAIuU,EAAGq3B,IAEhB,CACL7lB,OACAH,MACAC,QACAC,SAEJ,CACA,SAASinD,GAAYv4C,EAAM31B,EAAOoB,EAAKD,GACrC,OAAOw0B,EAAO,EAAI3b,GAAYha,EAAOoB,EAAKD,EAC5C,CA2BA,SAASgtE,GAAcJ,GACrB,MAAMzmD,EAASwmD,GAAaC,GACtB5lD,EAAQb,EAAON,MAAQM,EAAOJ,KAC9B4D,EAASxD,EAAOL,OAASK,EAAOP,IAChCiB,EA9BR,SAA0B+lD,EAAKK,EAAMC,GACnC,MAAMruE,EAAQ+tE,EAAI/4D,QAAQqX,YACpBsJ,EAAOo4C,EAAIp5B,cACXn1C,EAAI6wB,GAAOrwB,GACjB,MAAO,CACLC,EAAGiuE,GAAYv4C,EAAK5O,IAAKvnB,EAAEunB,IAAK,EAAGsnD,GACnCxuE,EAAGquE,GAAYv4C,EAAK3O,MAAOxnB,EAAEwnB,MAAO,EAAGonD,GACvCnsE,EAAGisE,GAAYv4C,EAAK1O,OAAQznB,EAAEynB,OAAQ,EAAGonD,GACzCrvE,EAAGkvE,GAAYv4C,EAAKzO,KAAM1nB,EAAE0nB,KAAM,EAAGknD,GAEzC,CAoBiBE,CAAiBP,EAAK5lD,EAAQ,EAAG2C,EAAS,GACnDU,EApBR,SAA2BuiD,EAAKK,EAAMC,GACpC,MACEt5B,EADqBg5B,EAAIjsB,SAAS,CAAC,uBACC/M,mBAChC/0C,EAAQ+tE,EAAI/4D,QAAQ6xD,aACpBrnE,EAAI8wB,GAActwB,GAClBuuE,EAAOrtE,KAAKE,IAAIgtE,EAAMC,GACtB14C,EAAOo4C,EAAIp5B,cACX65B,EAAez5B,GAAsBhiC,EAAS/S,GACpD,MAAO,CACLsvB,QAAS4+C,IAAaM,GAAgB74C,EAAK5O,KAAO4O,EAAKzO,KAAM1nB,EAAE8vB,QAAS,EAAGi/C,GAC3E9+C,SAAUy+C,IAAaM,GAAgB74C,EAAK5O,KAAO4O,EAAK3O,MAAOxnB,EAAEiwB,SAAU,EAAG8+C,GAC9Eh/C,WAAY2+C,IAAaM,GAAgB74C,EAAK1O,QAAU0O,EAAKzO,KAAM1nB,EAAE+vB,WAAY,EAAGg/C,GACpF/+C,YAAa0+C,IAAaM,GAAgB74C,EAAK1O,QAAU0O,EAAK3O,MAAOxnB,EAAEgwB,YAAa,EAAG++C,GAE3F,CAMiBE,CAAkBV,EAAK5lD,EAAQ,EAAG2C,EAAS,GAC1D,MAAO,CACL4jD,MAAO,CACLtqE,EAAGkjB,EAAOJ,KACVxR,EAAG4R,EAAOP,IACV5jB,EAAGglB,EACHlnB,EAAG6pB,EACHU,UAEF49C,MAAO,CACLhlE,EAAGkjB,EAAOJ,KAAOc,EAAOhpB,EACxB0W,EAAG4R,EAAOP,IAAMiB,EAAO/nB,EACvBkD,EAAGglB,EAAQH,EAAOhpB,EAAIgpB,EAAOnoB,EAC7BoB,EAAG6pB,EAAS9C,EAAO/nB,EAAI+nB,EAAO/lB,EAC9BupB,OAAQ,CACN8D,QAASpuB,KAAKC,IAAI,EAAGqqB,EAAO8D,QAAUpuB,KAAKC,IAAI6mB,EAAO/nB,EAAG+nB,EAAOhpB,IAChEywB,SAAUvuB,KAAKC,IAAI,EAAGqqB,EAAOiE,SAAWvuB,KAAKC,IAAI6mB,EAAO/nB,EAAG+nB,EAAOnoB,IAClE0vB,WAAYruB,KAAKC,IAAI,EAAGqqB,EAAO+D,WAAaruB,KAAKC,IAAI6mB,EAAO/lB,EAAG+lB,EAAOhpB,IACtEwwB,YAAatuB,KAAKC,IAAI,EAAGqqB,EAAOgE,YAActuB,KAAKC,IAAI6mB,EAAO/lB,EAAG+lB,EAAOnoB,MAIhF,CACA,SAASqhD,GAAQ6sB,EAAK3pE,EAAGsR,EAAGsrC,GAC1B,MAAM2tB,EAAc,OAANvqE,EACRwqE,EAAc,OAANl5D,EAER4R,EAASymD,KADEY,GAASC,IACSd,GAAaC,EAAK/sB,GACrD,OAAO15B,IAAWqnD,GAAS10D,GAAW7V,EAAGkjB,EAAOJ,KAAMI,EAAON,UAAY4nD,GAAS30D,GAAWvE,EAAG4R,EAAOP,IAAKO,EAAOL,QACrH,CAIA,SAAS4nD,GAAkB9qD,EAAKoI,GAC9BpI,EAAIoI,KAAKA,EAAK/nB,EAAG+nB,EAAKzW,EAAGyW,EAAKhpB,EAAGgpB,EAAKlrB,EACxC,CACA,SAAS6tE,GAAY3iD,EAAM4iD,GACzB,IAAIC,EAAUjsE,UAAUC,OAAS,QAAsBL,IAAjBI,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,MAAMqB,EAAI+nB,EAAK/nB,IAAM4qE,EAAQ5qE,GAAK2qE,EAAS,EACrCr5D,EAAIyW,EAAKzW,IAAMs5D,EAAQt5D,GAAKq5D,EAAS,EACrC5rE,GAAKgpB,EAAK/nB,EAAI+nB,EAAKhpB,IAAM6rE,EAAQ5qE,EAAI4qE,EAAQ7rE,EAAI4rE,EAAS,GAAK3qE,EAC/DnD,GAAKkrB,EAAKzW,EAAIyW,EAAKlrB,IAAM+tE,EAAQt5D,EAAIs5D,EAAQ/tE,EAAI8tE,EAAS,GAAKr5D,EACrE,MAAO,CACLtR,EAAG+nB,EAAK/nB,EAAIA,EACZsR,EAAGyW,EAAKzW,EAAIA,EACZvS,EAAGgpB,EAAKhpB,EAAIA,EACZlC,EAAGkrB,EAAKlrB,EAAIA,EACZuqB,OAAQW,EAAKX,OAEjB,CAnIA,GAAa7Y,GAAK,QAIlB,GAAaiT,SAAW,CACtByG,YAAa,EACbihD,UAAW,EACXtxB,iBAAkB,EAClB6xB,YAAa,EACbviD,WAAY,SACZE,OAAQ,EACRD,SAAU,GAKZ,GAAaghC,cAAgB,CAC3BvpC,gBAAiB,kBACjBC,YAAa,eAkHf,MAAM,WAAmB,GACvB,WAAAzS,CAAY80B,GACVsQ,QACAhlC,KAAKoE,aAAUrS,EACfiO,KAAKikC,gBAAalyC,EAClBiO,KAAKm8B,UAAOpqC,EACZiO,KAAKuX,WAAQxlB,EACbiO,KAAKka,YAASnoB,EACdiO,KAAK0kC,mBAAgB3yC,EACjB2iC,GACF7lC,OAAOwQ,OAAOW,KAAM00B,EAExB,CACA,IAAAxB,CAAK/f,GACH,MAAMuxB,EAAgB1kC,KAAK0kC,cACzB25B,EAAkBr+D,KAAKoE,QACvBiO,EAAcgsD,EAAgBhsD,YAC9BD,EAAkBisD,EAAgBjsD,gBAC9BksD,EAAiBf,GAAcv9D,MACnCw4D,EAAQ8F,EAAe9F,MACvBsF,EAAQQ,EAAeR,MACnBS,GAzCS3jD,EAyCekjD,EAAMljD,QAxCxB8D,SAAW9D,EAAOiE,UAAYjE,EAAO+D,YAAc/D,EAAOgE,YAwCxBH,GAAqBw/C,GAzCvE,IAAmBrjD,EA0CfzH,EAAIgG,OACA2kD,EAAMvrE,IAAMimE,EAAMjmE,GAAKurE,EAAMztE,IAAMmoE,EAAMnoE,IAC3C8iB,EAAI6H,YACJujD,EAAYprD,EAAK+qD,GAAYJ,EAAOp5B,EAAe8zB,IACnDrlD,EAAI6I,OACJuiD,EAAYprD,EAAK+qD,GAAY1F,GAAQ9zB,EAAeo5B,IACpD3qD,EAAIgK,UAAY9K,EAChBc,EAAIqI,KAAK,YAEXrI,EAAI6H,YACJujD,EAAYprD,EAAK+qD,GAAY1F,EAAO9zB,IACpCvxB,EAAIgK,UAAY/K,EAChBe,EAAIqI,OACJrI,EAAIoG,SACN,CACA,OAAA+2B,CAAQqsB,EAAQC,EAAQxsB,GACtB,OAAOE,GAAQtwC,KAAM28D,EAAQC,EAAQxsB,EACvC,CACA,QAAA0sB,CAASH,EAAQvsB,GACf,OAAOE,GAAQtwC,KAAM28D,EAAQ,KAAMvsB,EACrC,CACA,QAAA2sB,CAASH,EAAQxsB,GACf,OAAOE,GAAQtwC,KAAM,KAAM48D,EAAQxsB,EACrC,CACA,cAAAW,CAAeX,GACb,MAAMouB,EAAkBx+D,KAAKkxC,SAAS,CAAC,IAAK,IAAK,OAAQ,cAAed,GACtE58C,EAAIgrE,EAAgBhrE,EACpBsR,EAAI05D,EAAgB15D,EACpBq3B,EAAOqiC,EAAgBriC,KACvB8H,EAAau6B,EAAgBv6B,WAC/B,MAAO,CACLzwC,EAAGywC,GAAczwC,EAAI2oC,GAAQ,EAAI3oC,EACjCsR,EAAGm/B,EAAan/B,GAAKA,EAAIq3B,GAAQ,EAErC,CACA,QAAAyT,CAAS1jC,GACP,MAAgB,MAATA,EAAelM,KAAKuX,MAAQ,EAAIvX,KAAKka,OAAS,CACvD,EAEF,GAAWnY,GAAK,MAChB,GAAWiT,SAAW,CACpB+uB,cAAe,QACftoB,YAAa,EACbw6C,aAAc,EACdvxB,cAAe,OACfhqB,gBAAY3oB,GAEd,GAAW4pD,cAAgB,CACzBvpC,gBAAiB,kBACjBC,YAAa,eAEf,IAAI,GAAwBxjB,OAAOqxC,OAAO,CACxCqO,UAAW,KACXkwB,WAAY,GACZC,YAAa,GACbC,aAAc,GACdC,WAAY,KAEd,MAAMC,GAAgB,CAAC,oBAAqB,oBAAqB,oBAAqB,oBAAqB,oBAAqB,qBAAsB,sBAGhJC,GAAmCD,GAAc/rE,KAAI0N,GAASA,EAAM/B,QAAQ,OAAQ,SAASA,QAAQ,IAAK,YAChH,SAASsgE,GAAe5wE,GACtB,OAAO0wE,GAAc1wE,EAAI0wE,GAAczsE,OACzC,CACA,SAAS4sE,GAAmB7wE,GAC1B,OAAO2wE,GAAkB3wE,EAAI2wE,GAAkB1sE,OACjD,CAcA,SAAS6sE,GAAapuD,GACpB,IAAI1iB,EAAI,EACR,MAAO,CAACwsC,EAAS/2B,KACf,MAAMy0B,EAAaxnB,EAAM6qB,eAAe93B,GAAcy0B,WAClDA,aAAsB,GACxBlqC,EAbN,SAAiCwsC,EAASxsC,GAExC,OADAwsC,EAAQvoB,gBAAkBuoB,EAAQliB,KAAK3lB,KAAI,IAAMisE,GAAe5wE,OACzDA,CACT,CAUU+wE,CAAwBvkC,EAASxsC,GAC5BkqC,aAAsB,GAC/BlqC,EAXN,SAAkCwsC,EAASxsC,GAEzC,OADAwsC,EAAQvoB,gBAAkBuoB,EAAQliB,KAAK3lB,KAAI,IAAMksE,GAAmB7wE,OAC7DA,CACT,CAQUgxE,CAAyBxkC,EAASxsC,GAC7BkqC,IACTlqC,EAtBN,SAAgCwsC,EAASxsC,GAGvC,OAFAwsC,EAAQtoB,YAAc0sD,GAAe5wE,GACrCwsC,EAAQvoB,gBAAkB4sD,GAAmB7wE,KACpCA,CACX,CAkBUixE,CAAuBzkC,EAASxsC,GACtC,CAEJ,CACA,SAASkxE,GAA0B18C,GACjC,IAAIzwB,EACJ,IAAKA,KAAKywB,EACR,GAAIA,EAAYzwB,GAAGmgB,aAAesQ,EAAYzwB,GAAGkgB,gBAC/C,OAAO,EAGX,OAAO,CACT,CAIA,IAAIktD,GAAgB,CAClBv9D,GAAI,SACJiT,SAAU,CACR4lC,SAAS,EACT2kB,eAAe,GAEjB,YAAA/pB,CAAa3kC,EAAO2uD,EAAOp7D,GACzB,IAAKA,EAAQw2C,QACX,OAEF,MAAM6kB,EAAgB5uD,EAAMglB,OAC1BvjB,EAAWmtD,EAAchnD,KAAKnG,SAC9BotD,EAAeD,EAAcr7D,QACzBuO,EAAW+sD,EAAa/sD,SAC9B,IAAKvO,EAAQm7D,gBAAkBF,GAA0B/sD,KAjB3Bm4C,EAiBiEiV,KAhB3EjV,EAAWp4C,aAAeo4C,EAAWr4C,kBAgBuDO,GAAY0sD,GAA0B1sD,IACpJ,OAlBN,IAAkC83C,EAoB9B,MAAMkV,EAAYV,GAAapuD,GAC/ByB,EAAS/H,QAAQo1D,EACnB,GAkGF,SAASC,GAAsBjlC,GAC7B,GAAIA,EAAQqR,WAAY,CACtB,MAAMvzB,EAAOkiB,EAAQjB,aACdiB,EAAQqR,kBACRrR,EAAQjB,MACf7qC,OAAOC,eAAe6rC,EAAS,OAAQ,CACrCpX,cAAc,EACdx0B,YAAY,EACZ8lB,UAAU,EACVzlB,MAAOqpB,GAEX,CACF,CACA,SAASonD,GAAmBhvD,GAC1BA,EAAM4H,KAAKnG,SAAS/H,SAAQowB,IAC1BilC,GAAsBjlC,EAAQ,GAElC,CAwBA,IAAImlC,GAAoB,CACtB/9D,GAAI,aACJiT,SAAU,CACR+qD,UAAW,UACXnlB,SAAS,GAEXolB,qBAAsB,CAACnvD,EAAO7N,EAAMoB,KAClC,IAAKA,EAAQw2C,QAEX,YADAilB,GAAmBhvD,GAGrB,MAAM4hC,EAAiB5hC,EAAM0G,MAC7B1G,EAAM4H,KAAKnG,SAAS/H,SAAQ,CAACowB,EAAS/2B,KACpC,MAAM81B,EAAQiB,EAAQjB,MACpBpmB,EAAYqnB,EAAQrnB,UAChB5H,EAAOmF,EAAM6qB,eAAe93B,GAC5B6U,EAAOihB,GAASiB,EAAQliB,KAC9B,GAAsD,MAAlDwH,GAAQ,CAAC3M,EAAWzC,EAAMzM,QAAQkP,YACpC,OAEF,IAAK5H,EAAK2sB,WAAW2B,mBACnB,OAEF,MAAMimC,EAAQpvD,EAAMoD,OAAOvI,EAAKqvB,SAChC,GAAmB,WAAfklC,EAAMpgE,MAAoC,SAAfogE,EAAMpgE,KACnC,OAEF,GAAIgR,EAAMzM,QAAQyP,QAChB,OAEF,IAAIqsD,EArDV,SAAmDx0D,EAAMC,GACvD,MAAME,EAAaF,EAAOvZ,OAC1B,IACI0Z,EADAjD,EAAQ,EAEZ,MAAMmD,EAASN,EAAKM,OACdG,EAAwBH,EAAOI,gBACnC5b,EAAM2b,EAAsB3b,IAC5BD,EAAM4b,EAAsB5b,IAC5B8b,EAAaF,EAAsBE,WACnCC,EAAaH,EAAsBG,WASrC,OARID,IACFxD,EAAQO,GAAYQ,GAAa+B,EAAQK,EAAOE,KAAM1b,GAAKmZ,GAAI,EAAGkC,EAAa,IAG/EC,EADEQ,EACMlD,GAAYQ,GAAa+B,EAAQK,EAAOE,KAAM3b,GAAKmZ,GAAK,EAAGb,EAAOgD,GAAchD,EAEhFgD,EAAahD,EAEhB,CACLA,QACAiD,QAEJ,CA+BmCq0D,CAA0Cz0D,EAAM+M,GAC3E5P,EAAQq3D,EAAuBr3D,MAC/BiD,EAAQo0D,EAAuBp0D,MAEjC,GAAIA,IADc1H,EAAQg8D,WAAa,EAAI3tB,GAGzC,YADAmtB,GAAsBjlC,GAiBxB,IAAI0lC,EACJ,OAfIr+D,EAAc03B,KAChBiB,EAAQjB,MAAQjhB,SACTkiB,EAAQliB,KACf5pB,OAAOC,eAAe6rC,EAAS,OAAQ,CACrCpX,cAAc,EACdx0B,YAAY,EACZC,IAAK,WACH,OAAOgR,KAAKgsC,UACd,EACAthC,IAAK,SAAUjc,GACbuR,KAAK05B,MAAQjrC,CACf,KAII2V,EAAQ27D,WACd,IAAK,OACHM,EAhMV,SAAwB5nD,EAAM5P,EAAOiD,EAAO2mC,EAAgBruC,GAC1D,MAAMk8D,EAAUl8D,EAAQk8D,SAAW7tB,EACnC,GAAI6tB,GAAWx0D,EACb,OAAO2M,EAAKvW,MAAM2G,EAAOA,EAAQiD,GAEnC,MAAMu0D,EAAY,GACZE,GAAez0D,EAAQ,IAAMw0D,EAAU,GAC7C,IAAIE,EAAe,EACnB,MAAMC,EAAW53D,EAAQiD,EAAQ,EACjC,IACI3d,EAAGuyE,EAAcC,EAAS9kD,EAAM+kD,EADhCxvE,EAAIyX,EAGR,IADAw3D,EAAUG,KAAkB/nD,EAAKrnB,GAC5BjD,EAAI,EAAGA,EAAImyE,EAAU,EAAGnyE,IAAK,CAChC,IAEImQ,EAFA28D,EAAO,EACP4F,EAAO,EAEX,MAAMC,EAAgBxwE,KAAK4W,OAAO/Y,EAAI,GAAKoyE,GAAe,EAAI13D,EACxDk4D,EAAczwE,KAAKE,IAAIF,KAAK4W,OAAO/Y,EAAI,GAAKoyE,GAAe,EAAGz0D,GAASjD,EACvEm4D,EAAiBD,EAAcD,EACrC,IAAKxiE,EAAIwiE,EAAexiE,EAAIyiE,EAAaziE,IACvC28D,GAAQxiD,EAAKna,GAAG9K,EAChBqtE,GAAQpoD,EAAKna,GAAGwG,EAElBm2D,GAAQ+F,EACRH,GAAQG,EACR,MAAMC,EAAY3wE,KAAK4W,MAAM/Y,EAAIoyE,GAAe,EAAI13D,EAC9Cq4D,EAAU5wE,KAAKE,IAAIF,KAAK4W,OAAO/Y,EAAI,GAAKoyE,GAAe,EAAGz0D,GAASjD,EACnEs4D,EAAU1oD,EAAKrnB,GACnBgwE,EAAUD,EAAQ3tE,EAClB6tE,EAAUF,EAAQr8D,EAEpB,IADA67D,EAAU9kD,GAAQ,EACbvd,EAAI2iE,EAAW3iE,EAAI4iE,EAAS5iE,IAC/Bud,EAAO,GAAMvrB,KAAKsW,KAAKw6D,EAAUnG,IAASxiD,EAAKna,GAAGwG,EAAIu8D,IAAYD,EAAU3oD,EAAKna,GAAG9K,IAAMqtE,EAAOQ,IAC7FxlD,EAAO8kD,IACTA,EAAU9kD,EACV6kD,EAAejoD,EAAKna,GACpBsiE,EAAQtiE,GAGZ+hE,EAAUG,KAAkBE,EAC5BtvE,EAAIwvE,CACN,CAEA,OADAP,EAAUG,KAAkB/nD,EAAKgoD,GAC1BJ,CACT,CAoJsBiB,CAAe7oD,EAAM5P,EAAOiD,EAAO2mC,EAAgBruC,GAC/D,MACF,IAAK,UACHi8D,EAtJV,SAA0B5nD,EAAM5P,EAAOiD,EAAO2mC,GAC5C,IAEItkD,EAAGytB,EAAOpoB,EAAGsR,EAAGi2D,EAAOwG,EAAUC,EAAUC,EAAYv3B,EAAMF,EAF7DixB,EAAO,EACPC,EAAS,EAEb,MAAMmF,EAAY,GACZI,EAAW53D,EAAQiD,EAAQ,EAC3B41D,EAAOjpD,EAAK5P,GAAOrV,EAEnBmuE,EADOlpD,EAAKgoD,GAAUjtE,EACVkuE,EAClB,IAAKvzE,EAAI0a,EAAO1a,EAAI0a,EAAQiD,IAAS3d,EAAG,CACtCytB,EAAQnD,EAAKtqB,GACbqF,GAAKooB,EAAMpoB,EAAIkuE,GAAQC,EAAKlvB,EAC5B3tC,EAAI8W,EAAM9W,EACV,MAAMu2D,EAAa,EAAJ7nE,EACf,GAAI6nE,IAAWN,EACTj2D,EAAIolC,GACNA,EAAOplC,EACPy8D,EAAWpzE,GACF2W,EAAIklC,IACbA,EAAOllC,EACP08D,EAAWrzE,GAEb8sE,GAAQC,EAASD,EAAOr/C,EAAMpoB,KAAO0nE,MAChC,CACL,MAAM0G,EAAYzzE,EAAI,EACtB,IAAK6T,EAAcu/D,KAAcv/D,EAAcw/D,GAAW,CACxD,MAAMK,EAAqBvxE,KAAKE,IAAI+wE,EAAUC,GACxCM,EAAqBxxE,KAAKC,IAAIgxE,EAAUC,GAC1CK,IAAuBJ,GAAcI,IAAuBD,GAC9DvB,EAAUj7D,KAAK4qB,GAAcA,GAAc,CAAC,EAAGvX,EAAKopD,IAAsB,CAAC,EAAG,CAC5EruE,EAAGynE,KAGH6G,IAAuBL,GAAcK,IAAuBF,GAC9DvB,EAAUj7D,KAAK4qB,GAAcA,GAAc,CAAC,EAAGvX,EAAKqpD,IAAsB,CAAC,EAAG,CAC5EtuE,EAAGynE,IAGT,CACI9sE,EAAI,GAAKyzE,IAAcH,GACzBpB,EAAUj7D,KAAKqT,EAAKmpD,IAEtBvB,EAAUj7D,KAAKwW,GACfm/C,EAAQM,EACRH,EAAS,EACThxB,EAAOF,EAAOllC,EACdy8D,EAAWC,EAAWC,EAAatzE,CACrC,CACF,CACA,OAAOkyE,CACT,CAoGsB0B,CAAiBtpD,EAAM5P,EAAOiD,EAAO2mC,GACjD,MACF,QACE,MAAM,IAAI5vB,MAAM,qCAAqCze,EAAQ27D,cAEjEplC,EAAQqR,WAAaq0B,CAAS,GAC9B,EAEJ,OAAAlM,CAAQtjD,GACNgvD,GAAmBhvD,EACrB,GAyCF,SAASmxD,GAAWlyE,EAAUirD,EAAOlxC,EAAM2L,GACzC,GAAIA,EACF,OAEF,IAAI3M,EAAQkyC,EAAMjrD,GACdgZ,EAAMe,EAAK/Z,GAKf,MAJiB,UAAbA,IACF+Y,EAAQF,GAAgBE,GACxBC,EAAMH,GAAgBG,IAEjB,CACLhZ,WACA+Y,QACAC,MAEJ,CAqCA,SAASm5D,GAAgBp5D,EAAOC,EAAK6C,GACnC,KAAO7C,EAAMD,EAAOC,IAAO,CACzB,MAAM8S,EAAQjQ,EAAO7C,GACrB,IAAKzB,MAAMuU,EAAMpoB,KAAO6T,MAAMuU,EAAM9W,GAClC,KAEJ,CACA,OAAOgE,CACT,CACA,SAASo5D,GAAS9wE,EAAGC,EAAGmuB,EAAMzc,GAC5B,OAAI3R,GAAKC,EACA0R,EAAG3R,EAAEouB,GAAOnuB,EAAEmuB,IAEhBpuB,EAAIA,EAAEouB,GAAQnuB,EAAIA,EAAEmuB,GAAQ,CACrC,CACA,SAAS2iD,GAAoBC,EAAUnlD,GACrC,IAAItR,EAAS,GACTopB,GAAQ,EAOZ,OANIliC,EAAQuvE,IACVrtC,GAAQ,EACRppB,EAASy2D,GAETz2D,EA1DJ,SAA6By2D,EAAUnlD,GACrC,MAAMolD,EAASD,GAAY,CAAC,EAC1BE,EAAWD,EAAO7uE,EAClBA,OAAiB,IAAb8uE,EAAsB,KAAOA,EACjCC,EAAWF,EAAOv9D,EAClBA,OAAiB,IAAby9D,EAAsB,KAAOA,EAC7BC,EAAavlD,EAAKtR,OAClBA,EAAS,GA2Bf,OA1BAsR,EAAKqR,SAAS/jB,SAAQk4D,IACpB,IAAI55D,EAAQ45D,EAAO55D,MACjBC,EAAM25D,EAAO35D,IACfA,EAAMm5D,GAAgBp5D,EAAOC,EAAK05D,GAClC,MAAMznB,EAAQynB,EAAW35D,GACnBgB,EAAO24D,EAAW15D,GACd,OAANhE,GACF6G,EAAOvG,KAAK,CACV5R,EAAGunD,EAAMvnD,EACTsR,MAEF6G,EAAOvG,KAAK,CACV5R,EAAGqW,EAAKrW,EACRsR,OAEa,OAANtR,IACTmY,EAAOvG,KAAK,CACV5R,IACAsR,EAAGi2C,EAAMj2C,IAEX6G,EAAOvG,KAAK,CACV5R,IACAsR,EAAG+E,EAAK/E,IAEZ,IAEK6G,CACT,CAuBa+2D,CAAoBN,EAAUnlD,GAElCtR,EAAOvZ,OAAS,IAAI,GAAY,CACrCuZ,SACAvH,QAAS,CACPgjB,QAAS,GAEX2N,QACA8Y,UAAW9Y,IACR,IACP,CACA,SAAS4tC,GAAiB7+D,GACxB,OAAOA,IAA0B,IAAhBA,EAAO0X,IAC1B,CACA,SAASonD,GAAep+D,EAASX,EAAOg/D,GAEtC,IAAIrnD,EADWhX,EAAQX,GACL2X,KAClB,MAAMsnD,EAAU,CAACj/D,GACjB,IAAIE,EACJ,IAAK8+D,EACH,OAAOrnD,EAET,MAAgB,IAATA,IAA6C,IAA3BsnD,EAAQ5+D,QAAQsX,IAAc,CACrD,IAAKpZ,EAAeoZ,GAClB,OAAOA,EAGT,GADAzX,EAASS,EAAQgX,IACZzX,EACH,OAAO,EAET,GAAIA,EAAOgS,QACT,OAAOyF,EAETsnD,EAAQ19D,KAAKoW,GACbA,EAAOzX,EAAOyX,IAChB,CACA,OAAO,CACT,CACA,SAASunD,GAAY9lD,EAAMpZ,EAAOiI,GAChC,MAAM0P,EA6CR,SAAyByB,GACvB,MAAM7Y,EAAU6Y,EAAK7Y,QACf4+D,EAAa5+D,EAAQoX,KAC3B,IAAIA,EAAO/Y,EAAeugE,GAAcA,EAAWj/D,OAAQi/D,QAC9CjxE,IAATypB,IACFA,IAASpX,EAAQgO,iBAEnB,IAAa,IAAToJ,GAA2B,OAATA,EACpB,OAAO,EAET,IAAa,IAATA,EACF,MAAO,SAET,OAAOA,CACT,CA3DeynD,CAAgBhmD,GAC7B,GAAI9a,EAASqZ,GACX,OAAOnU,MAAMmU,EAAKpsB,QAAiBosB,EAErC,IAAIzX,EAASlB,WAAW2Y,GACxB,OAAIpZ,EAAe2B,IAAWzT,KAAK4W,MAAMnD,KAAYA,EAKvD,SAA2Bm/D,EAASr/D,EAAOE,EAAQ+H,GACjC,MAAZo3D,GAA+B,MAAZA,IACrBn/D,EAASF,EAAQE,GAEnB,GAAIA,IAAWF,GAASE,EAAS,GAAKA,GAAU+H,EAC9C,OAAO,EAET,OAAO/H,CACT,CAZWo/D,CAAkB3nD,EAAK,GAAI3X,EAAOE,EAAQ+H,GAE5C,CAAC,SAAU,QAAS,MAAO,QAAS,SAAS5H,QAAQsX,IAAS,GAAKA,CAC5E,CAwFA,SAAS4nD,GAAez3D,EAAQ03D,EAAaC,GAC3C,MAAMC,EAAY,GAClB,IAAK,IAAIjlE,EAAI,EAAGA,EAAIglE,EAAWlxE,OAAQkM,IAAK,CAC1C,MACMklE,EAAaC,GADNH,EAAWhlE,GACW+kE,EAAa,KAC9CtoB,EAAQyoB,EAAWzoB,MACnBlxC,EAAO25D,EAAW35D,KAClB+R,EAAQ4nD,EAAW5nD,MACrB,MAAKA,GAASm/B,GAASlxC,GAGvB,GAAIkxC,EACFwoB,EAAUG,QAAQ9nD,QAGlB,GADAjQ,EAAOvG,KAAKwW,IACP/R,EACH,KAGN,CACA8B,EAAOvG,QAAQm+D,EACjB,CACA,SAASE,GAAUxmD,EAAMomD,EAAavzE,GACpC,MAAM8rB,EAAQqB,EAAKnc,YAAYuiE,EAAavzE,GAC5C,IAAK8rB,EACH,MAAO,CAAC,EAEV,MAAM+nD,EAAa/nD,EAAM9rB,GACnBw+B,EAAWrR,EAAKqR,SAChBk0C,EAAavlD,EAAKtR,OACxB,IAAIovC,GAAQ,EACRlxC,GAAO,EACX,IAAK,IAAI1b,EAAI,EAAGA,EAAImgC,EAASl8B,OAAQjE,IAAK,CACxC,MAAMs/B,EAAUa,EAASngC,GACnBy1E,EAAapB,EAAW/0C,EAAQ5kB,OAAO/Y,GACvC+zE,EAAYrB,EAAW/0C,EAAQ3kB,KAAKhZ,GAC1C,GAAIuZ,GAAWs6D,EAAYC,EAAYC,GAAY,CACjD9oB,EAAQ4oB,IAAeC,EACvB/5D,EAAO85D,IAAeE,EACtB,KACF,CACF,CACA,MAAO,CACL9oB,QACAlxC,OACA+R,QAEJ,CACA,MAAM,GACJ,WAAAhc,CAAYid,GACV7c,KAAKxM,EAAIqpB,EAAKrpB,EACdwM,KAAK8E,EAAI+X,EAAK/X,EACd9E,KAAK4a,OAASiC,EAAKjC,MACrB,CACA,WAAAw/C,CAAYjnD,EAAKuD,EAAQmG,GACvB,MAAMrpB,EAAIwM,KAAKxM,EACbsR,EAAI9E,KAAK8E,EACT8V,EAAS5a,KAAK4a,OAMhB,OALAlE,EAASA,GAAU,CACjB7N,MAAO,EACPC,IAAK9C,IAEPmN,EAAI+H,IAAI1nB,EAAGsR,EAAG8V,EAAQlE,EAAO5N,IAAK4N,EAAO7N,OAAO,IACxCgU,EAAKnG,MACf,CACA,WAAA5V,CAAY8a,GACV,MAAMpoB,EAAIwM,KAAKxM,EACbsR,EAAI9E,KAAK8E,EACT8V,EAAS5a,KAAK4a,OACVxS,EAAQwT,EAAMxT,MACpB,MAAO,CACL5U,EAAGA,EAAIlD,KAAK+d,IAAIjG,GAASwS,EACzB9V,EAAGA,EAAIxU,KAAK8c,IAAIhF,GAASwS,EACzBxS,QAEJ,EAEF,SAAS4Y,GAAWld,GAClB,MAAM+M,EAAQ/M,EAAO+M,MACnB2K,EAAO1X,EAAO0X,KACdyB,EAAOnZ,EAAOmZ,KAChB,GAAI7a,EAAeoZ,GACjB,OAcJ,SAAwB3K,EAAOhN,GAC7B,MAAM6H,EAAOmF,EAAM6qB,eAAe73B,GAC5BkS,EAAUrK,GAAQmF,EAAM63B,iBAAiB7kC,GAC/C,OAAOkS,EAAUrK,EAAKivB,QAAU,IAClC,CAlBWmpC,CAAejzD,EAAO2K,GAE/B,GAAa,UAATA,EACF,OA1HJ,SAAyB1X,GACvB,MAAMkQ,EAAQlQ,EAAOkQ,MACnBnQ,EAAQC,EAAOD,MACfoZ,EAAOnZ,EAAOmZ,KACVtR,EAAS,GACT2iB,EAAWrR,EAAKqR,SAChBy1C,EAAe9mD,EAAKtR,OACpB23D,EAgBR,SAAuBtvD,EAAOnQ,GAC5B,MAAMmgE,EAAQ,GACRjmB,EAAQ/pC,EAAMmkB,wBAAwB,QAC5C,IAAK,IAAIhqC,EAAI,EAAGA,EAAI4vD,EAAM3rD,OAAQjE,IAAK,CACrC,MAAMud,EAAOqyC,EAAM5vD,GACnB,GAAIud,EAAK7H,QAAUA,EACjB,MAEG6H,EAAK0yB,QACR4lC,EAAMN,QAAQh4D,EAAKivB,QAEvB,CACA,OAAOqpC,CACT,CA7BqBC,CAAcjwD,EAAOnQ,GACxCy/D,EAAWl+D,KAAK+8D,GAAoB,CAClC3uE,EAAG,KACHsR,EAAGkP,EAAMqC,QACR4G,IACH,IAAK,IAAI9uB,EAAI,EAAGA,EAAImgC,EAASl8B,OAAQjE,IAAK,CACxC,MAAMs/B,EAAUa,EAASngC,GACzB,IAAK,IAAImQ,EAAImvB,EAAQ5kB,MAAOvK,GAAKmvB,EAAQ3kB,IAAKxK,IAC5C8kE,GAAez3D,EAAQo4D,EAAazlE,GAAIglE,EAE5C,CACA,OAAO,IAAI,GAAY,CACrB33D,SACAvH,QAAS,CAAC,GAEd,CAoGW8/D,CAAgBpgE,GAEzB,GAAa,UAAT0X,EACF,OAAO,EAET,MAAM4mD,EAWR,SAAyBt+D,GACvB,MAAMkQ,EAAQlQ,EAAOkQ,OAAS,CAAC,EAC/B,GAAIA,EAAM+5B,yBACR,OAkBJ,SAAiCjqC,GAC/B,MAAMkQ,EAAQlQ,EAAOkQ,MACnBwH,EAAO1X,EAAO0X,KACVpX,EAAU4P,EAAM5P,QAChBhS,EAAS4hB,EAAMqpB,YAAYjrC,OAC3ByW,EAAQzE,EAAQf,QAAU2Q,EAAMzjB,IAAMyjB,EAAMxjB,IAC5CpB,EAjMR,SAAyBosB,EAAMxH,EAAOovB,GACpC,IAAIh0C,EAUJ,OAREA,EADW,UAATosB,EACM4nB,EACU,QAAT5nB,EACDxH,EAAM5P,QAAQf,QAAU2Q,EAAMxjB,IAAMwjB,EAAMzjB,IACzC4R,EAASqZ,GACVA,EAAKpsB,MAEL4kB,EAAMivC,eAET7zD,CACT,CAqLgB+0E,CAAgB3oD,EAAMxH,EAAOnL,GACrC9E,EAAS,GACf,GAAIK,EAAQwS,KAAK82B,SAAU,CACzB,MAAM9H,EAAS5xB,EAAM+5B,yBAAyB,EAAGllC,GACjD,OAAO,IAAI,GAAU,CACnBrV,EAAGoyC,EAAOpyC,EACVsR,EAAG8gC,EAAO9gC,EACV8V,OAAQ5G,EAAMu5B,8BAA8Bn+C,IAEhD,CACA,IAAK,IAAIjB,EAAI,EAAGA,EAAIiE,IAAUjE,EAC5B4V,EAAOqB,KAAK4O,EAAM+5B,yBAAyB5/C,EAAGiB,IAEhD,OAAO2U,CACT,CAtCWqgE,CAAwBtgE,GAEjC,OAEF,SAA+BA,GAC7B,MAAMugE,EAAgBvgE,EAAOkQ,MAC3BA,OAA0B,IAAlBqwD,EAA2B,CAAC,EAAIA,EACxC7oD,EAAO1X,EAAO0X,KACV9B,EA9LR,SAAyB8B,EAAMxH,GAC7B,IAAI0F,EAAQ,KAUZ,MATa,UAAT8B,EACF9B,EAAQ1F,EAAMqC,OACI,QAATmF,EACT9B,EAAQ1F,EAAMmC,IACLhU,EAASqZ,GAClB9B,EAAQ1F,EAAMzH,iBAAiBiP,EAAKpsB,OAC3B4kB,EAAMkxB,eACfxrB,EAAQ1F,EAAMkxB,gBAETxrB,CACT,CAkLgB4qD,CAAgB9oD,EAAMxH,GACpC,GAAI5R,EAAesX,GAAQ,CACzB,MAAMuqB,EAAajwB,EAAMmxB,eACzB,MAAO,CACL3xC,EAAGywC,EAAavqB,EAAQ,KACxB5U,EAAGm/B,EAAa,KAAOvqB,EAE3B,CACA,OAAO,IACT,CAfS6qD,CAAsBzgE,EAC/B,CAjBmB0gE,CAAgB1gE,GACjC,OAAIs+D,aAAoB,GACfA,EAEFD,GAAoBC,EAAUnlD,EACvC,CAgDA,SAASwnD,GAAUtxD,EAAKrP,EAAQ+X,GAC9B,MAAM9X,EAASid,GAAWld,GACpBmZ,EAAOnZ,EAAOmZ,KAClBjJ,EAAQlQ,EAAOkQ,MACf9H,EAAOpI,EAAOoI,KACVw4D,EAAWznD,EAAK7Y,QAChB4+D,EAAa0B,EAASlpD,KACtBhb,EAAQkkE,EAAStyD,gBACjBuyD,EAAS3B,GAAc,CAAC,EAC5B4B,EAAeD,EAAOE,MACtBA,OAAyB,IAAjBD,EAA0BpkE,EAAQokE,EAC1CE,EAAeH,EAAOX,MACtBA,OAAyB,IAAjBc,EAA0BtkE,EAAQskE,EACxC/gE,GAAUkZ,EAAKtR,OAAOvZ,SACxB2pB,GAAS5I,EAAK0I,GAalB,SAAgB1I,EAAKuhB,GACnB,MAAMzX,EAAOyX,EAAIzX,KACflZ,EAAS2wB,EAAI3wB,OACb8gE,EAAQnwC,EAAImwC,MACZb,EAAQtvC,EAAIsvC,MACZnoD,EAAO6Y,EAAI7Y,KACX7H,EAAQ0gB,EAAI1gB,MACRlkB,EAAWmtB,EAAK8X,MAAQ,QAAUL,EAAIxoB,KAC5CiH,EAAIgG,OACa,MAAbrpB,GAAoBk0E,IAAUa,IAChCE,GAAa5xD,EAAKpP,EAAQ8X,EAAK1F,KAC/B,GAAKhD,EAAK,CACR8J,OACAlZ,SACAvD,MAAOqkE,EACP7wD,QACAlkB,aAEFqjB,EAAIoG,UACJpG,EAAIgG,OACJ4rD,GAAa5xD,EAAKpP,EAAQ8X,EAAKxF,SAEjC,GAAKlD,EAAK,CACR8J,OACAlZ,SACAvD,MAAOwjE,EACPhwD,QACAlkB,aAEFqjB,EAAIoG,SACN,CA1CIyrD,CAAO7xD,EAAK,CACV8J,OACAlZ,SACA8gE,QACAb,QACAnoD,OACA7H,QACA9H,SAEF+P,GAAW9I,GAEf,CAgCA,SAAS4xD,GAAa5xD,EAAKpP,EAAQkhE,GACjC,MAAM32C,EAAWvqB,EAAOuqB,SACtB3iB,EAAS5H,EAAO4H,OAClB,IAAIovC,GAAQ,EACRmqB,GAAW,EACf/xD,EAAI6H,YACJ,IAAK,MAAMyS,KAAWa,EAAU,CAC9B,MAAMzlB,EAAQ4kB,EAAQ5kB,MACpBC,EAAM2kB,EAAQ3kB,IACVoc,EAAavZ,EAAO9C,GACpB6jC,EAAY/gC,EAAOs2D,GAAgBp5D,EAAOC,EAAK6C,IACjDovC,GACF5nC,EAAIiI,OAAO8J,EAAW1xB,EAAG0xB,EAAWpgB,GACpCi2C,GAAQ,IAER5nC,EAAIkI,OAAO6J,EAAW1xB,EAAGyxE,GACzB9xD,EAAIkI,OAAO6J,EAAW1xB,EAAG0xB,EAAWpgB,IAEtCogE,IAAanhE,EAAOq2D,YAAYjnD,EAAKsa,EAAS,CAC5CkU,KAAMujC,IAEJA,EACF/xD,EAAIgI,YAEJhI,EAAIkI,OAAOqxB,EAAUl5C,EAAGyxE,EAE5B,CACA9xD,EAAIkI,OAAOtX,EAAOg3C,QAAQvnD,EAAGyxE,GAC7B9xD,EAAIgI,YACJhI,EAAI6I,MACN,CACA,SAAS,GAAK7I,EAAKuhB,GACjB,MAAMzX,EAAOyX,EAAIzX,KACflZ,EAAS2wB,EAAI3wB,OACbjU,EAAW4kC,EAAI5kC,SACf0Q,EAAQk0B,EAAIl0B,MACZwT,EAAQ0gB,EAAI1gB,MACRsa,EAveR,SAAmBrR,EAAMlZ,EAAQjU,GAC/B,MAAMw+B,EAAWrR,EAAKqR,SAChB3iB,EAASsR,EAAKtR,OACdw5D,EAAUphE,EAAO4H,OACjB1G,EAAQ,GACd,IAAK,MAAMwoB,KAAWa,EAAU,CAC9B,IAAIzlB,EAAQ4kB,EAAQ5kB,MAClBC,EAAM2kB,EAAQ3kB,IAChBA,EAAMm5D,GAAgBp5D,EAAOC,EAAK6C,GAClC,MAAM+K,EAASsrD,GAAWlyE,EAAU6b,EAAO9C,GAAQ8C,EAAO7C,GAAM2kB,EAAQjY,MACxE,IAAKzR,EAAOuqB,SAAU,CACpBrpB,EAAMG,KAAK,CACTtB,OAAQ2pB,EACR1pB,OAAQ2S,EACR7N,MAAO8C,EAAO9C,GACdC,IAAK6C,EAAO7C,KAEd,QACF,CACA,MAAMs8D,EAAiB/2C,GAAetqB,EAAQ2S,GAC9C,IAAK,MAAM2uD,KAAOD,EAAgB,CAChC,MAAME,EAAYtD,GAAWlyE,EAAUq1E,EAAQE,EAAIx8D,OAAQs8D,EAAQE,EAAIv8D,KAAMu8D,EAAI7vD,MAC3E+vD,EAAc/3C,GAAcC,EAAS9hB,EAAQ25D,GACnD,IAAK,MAAME,KAAcD,EACvBtgE,EAAMG,KAAK,CACTtB,OAAQ0hE,EACRzhE,OAAQshE,EACRx8D,MAAO,CACL,CAAC/Y,GAAWoyE,GAASxrD,EAAQ4uD,EAAW,QAASh1E,KAAKC,MAExDuY,IAAK,CACH,CAAChZ,GAAWoyE,GAASxrD,EAAQ4uD,EAAW,MAAOh1E,KAAKE,OAI5D,CACF,CACA,OAAOyU,CACT,CAicmB82D,CAAU9+C,EAAMlZ,EAAQjU,GACzC,IAAK,MAAM21E,KAAUn3C,EAAU,CAC7B,MAAMo3C,EAAMD,EAAO3hE,OACbuhE,EAAMI,EAAO1hE,OACb8E,EAAQ48D,EAAO58D,MACfC,EAAM28D,EAAO38D,IACb68D,EAAaD,EAAI3yD,MAErB6yD,QAD6B,IAAfD,EAAwB,CAAC,EAAIA,GACPvzD,gBACpCA,OAA4C,IAA1BwzD,EAAmCplE,EAAQolE,EACzDC,GAAsB,IAAX9hE,EACjBoP,EAAIgG,OACJhG,EAAIgK,UAAY/K,EAChB0zD,GAAW3yD,EAAKa,EAAO6xD,GAAY7D,GAAWlyE,EAAU+Y,EAAOC,IAC/DqK,EAAI6H,YACJ,MAAMkqD,IAAajoD,EAAKm9C,YAAYjnD,EAAKuyD,GACzC,IAAIlwD,EACJ,GAAIqwD,EAAU,CACRX,EACF/xD,EAAIgI,YAEJ4qD,GAAmB5yD,EAAKpP,EAAQ+E,EAAKhZ,GAEvC,MAAMk2E,IAAejiE,EAAOq2D,YAAYjnD,EAAKkyD,EAAK,CAChD1jC,KAAMujC,EACN7hE,SAAS,IAEXmS,EAAO0vD,GAAYc,EACdxwD,GACHuwD,GAAmB5yD,EAAKpP,EAAQ8E,EAAO/Y,EAE3C,CACAqjB,EAAIgI,YACJhI,EAAIqI,KAAKhG,EAAO,UAAY,WAC5BrC,EAAIoG,SACN,CACF,CACA,SAASusD,GAAW3yD,EAAKa,EAAO0C,GAC9B,MAAMuvD,EAAwBjyD,EAAMnD,MAAMwuB,UACxClpB,EAAM8vD,EAAsB9vD,IAC5BE,EAAS4vD,EAAsB5vD,OAC3B6vD,EAASxvD,GAAU,CAAC,EACxB5mB,EAAWo2E,EAAOp2E,SAClB+Y,EAAQq9D,EAAOr9D,MACfC,EAAMo9D,EAAOp9D,IACE,MAAbhZ,IACFqjB,EAAI6H,YACJ7H,EAAIoI,KAAK1S,EAAOsN,EAAKrN,EAAMD,EAAOwN,EAASF,GAC3ChD,EAAI6I,OAER,CACA,SAAS+pD,GAAmB5yD,EAAKpP,EAAQ6X,EAAO9rB,GAC9C,MAAMq2E,EAAoBpiE,EAAOjD,YAAY8a,EAAO9rB,GAChDq2E,GACFhzD,EAAIkI,OAAO8qD,EAAkB3yE,EAAG2yE,EAAkBrhE,EAEtD,CACA,IAAI,GAAQ,CACV/C,GAAI,SACJ,mBAAAqkE,CAAoBv1D,EAAO2uD,EAAOp7D,GAChC,MAAM0H,GAAS+E,EAAM4H,KAAKnG,UAAY,IAAIlgB,OACpCoS,EAAU,GAChB,IAAIkH,EAAMvd,EAAG8uB,EAAMnZ,EACnB,IAAK3V,EAAI,EAAGA,EAAI2d,IAAS3d,EACvBud,EAAOmF,EAAM6qB,eAAevtC,GAC5B8uB,EAAOvR,EAAKivB,QACZ72B,EAAS,KACLmZ,GAAQA,EAAK7Y,SAAW6Y,aAAgB,KAC1CnZ,EAAS,CACPiS,QAASlF,EAAM63B,iBAAiBv6C,GAChC0V,MAAO1V,EACPqtB,KAAMunD,GAAY9lD,EAAM9uB,EAAG2d,GAC3B+E,QACA3E,KAAMR,EAAK2sB,WAAWj0B,QAAQkP,UAC9BU,MAAOtI,EAAKusB,OACZhb,SAGJvR,EAAK26D,QAAUviE,EACfU,EAAQY,KAAKtB,GAEf,IAAK3V,EAAI,EAAGA,EAAI2d,IAAS3d,EACvB2V,EAASU,EAAQrW,GACZ2V,IAA0B,IAAhBA,EAAO0X,OAGtB1X,EAAO0X,KAAOonD,GAAep+D,EAASrW,EAAGiW,EAAQy+D,WAErD,EACA,UAAAyD,CAAWz1D,EAAO2uD,EAAOp7D,GACvB,MAAM8uB,EAA4B,eAArB9uB,EAAQmiE,SACfrvC,EAAWrmB,EAAMm/B,+BACjBn0B,EAAOhL,EAAMwuB,UACnB,IAAK,IAAIlxC,EAAI+oC,EAAS9kC,OAAS,EAAGjE,GAAK,IAAKA,EAAG,CAC7C,MAAM2V,EAASozB,EAAS/oC,GAAGk4E,QACtBviE,IAGLA,EAAOmZ,KAAK0vB,oBAAoB9wB,EAAM/X,EAAOoI,MACzCgnB,GAAQpvB,EAAO0X,MACjBipD,GAAU5zD,EAAMsC,IAAKrP,EAAQ+X,GAEjC,CACF,EACA,kBAAA2qD,CAAmB31D,EAAO2uD,EAAOp7D,GAC/B,GAAyB,uBAArBA,EAAQmiE,SACV,OAEF,MAAMrvC,EAAWrmB,EAAMm/B,+BACvB,IAAK,IAAI7hD,EAAI+oC,EAAS9kC,OAAS,EAAGjE,GAAK,IAAKA,EAAG,CAC7C,MAAM2V,EAASozB,EAAS/oC,GAAGk4E,QACvB1D,GAAiB7+D,IACnB2gE,GAAU5zD,EAAMsC,IAAKrP,EAAQ+M,EAAMwuB,UAEvC,CACF,EACA,iBAAAonC,CAAkB51D,EAAO7N,EAAMoB,GAC7B,MAAMN,EAASd,EAAK0I,KAAK26D,QACpB1D,GAAiB7+D,IAAgC,sBAArBM,EAAQmiE,UAGzC9B,GAAU5zD,EAAMsC,IAAKrP,EAAQ+M,EAAMwuB,UACrC,EACArqB,SAAU,CACR6tD,WAAW,EACX0D,SAAU,sBAGd,MAAMG,GAAa,CAACC,EAAWxf,KAC7B,IAAIyf,EAAuBD,EAAUE,UACnCA,OAAqC,IAAzBD,EAAkCzf,EAAWyf,EACzDE,EAAsBH,EAAUI,SAChCA,OAAmC,IAAxBD,EAAiC3f,EAAW2f,EAKzD,OAJIH,EAAUK,gBACZH,EAAYv2E,KAAKE,IAAIq2E,EAAW1f,GAChC4f,EAAWJ,EAAUM,iBAAmB32E,KAAKE,IAAIu2E,EAAU5f,IAEtD,CACL4f,WACAF,YACAK,WAAY52E,KAAKC,IAAI42D,EAAU0f,GAChC,EAGH,MAAM,WAAe,GACnB,WAAAjnE,CAAYi2B,GACVmP,QACAhlC,KAAKmnE,QAAS,EACdnnE,KAAKonE,eAAiB,GACtBpnE,KAAKqnE,aAAe,KACpBrnE,KAAKsnE,cAAe,EACpBtnE,KAAK6Q,MAAQglB,EAAOhlB,MACpB7Q,KAAKoE,QAAUyxB,EAAOzxB,QACtBpE,KAAKmT,IAAM0iB,EAAO1iB,IAClBnT,KAAKunE,iBAAcx1E,EACnBiO,KAAKwnE,iBAAcz1E,EACnBiO,KAAKynE,gBAAa11E,EAClBiO,KAAKoqB,eAAYr4B,EACjBiO,KAAK2d,cAAW5rB,EAChBiO,KAAKmW,SAAMpkB,EACXiO,KAAKqW,YAAStkB,EACdiO,KAAKsW,UAAOvkB,EACZiO,KAAKoW,WAAQrkB,EACbiO,KAAKka,YAASnoB,EACdiO,KAAKuX,WAAQxlB,EACbiO,KAAK08C,cAAW3qD,EAChBiO,KAAK8vC,cAAW/9C,EAChBiO,KAAKS,YAAS1O,EACdiO,KAAKwyC,cAAWzgD,CAClB,CACA,MAAAsjC,CAAO1X,EAAUyM,EAAWD,GAC1BnqB,KAAK2d,SAAWA,EAChB3d,KAAKoqB,UAAYA,EACjBpqB,KAAK08C,SAAWvyB,EAChBnqB,KAAKy+C,gBACLz+C,KAAK0nE,cACL1nE,KAAK2/C,KACP,CACA,aAAAlB,GACMz+C,KAAKmlC,gBACPnlC,KAAKuX,MAAQvX,KAAK2d,SAClB3d,KAAKsW,KAAOtW,KAAK08C,SAASpmC,KAC1BtW,KAAKoW,MAAQpW,KAAKuX,QAElBvX,KAAKka,OAASla,KAAKoqB,UACnBpqB,KAAKmW,IAAMnW,KAAK08C,SAASvmC,IACzBnW,KAAKqW,OAASrW,KAAKka,OAEvB,CACA,WAAAwtD,GACE,MAAMf,EAAY3mE,KAAKoE,QAAQg5B,QAAU,CAAC,EAC1C,IAAImqC,EAAczkE,EAAS6jE,EAAUn7B,eAAgB,CAACxrC,KAAK6Q,OAAQ7Q,OAAS,GACxE2mE,EAAUxjD,SACZokD,EAAcA,EAAYpkD,QAAOtd,GAAQ8gE,EAAUxjD,OAAOtd,EAAM7F,KAAK6Q,MAAM4H,SAEzEkuD,EAAU/jC,OACZ2kC,EAAcA,EAAY3kC,MAAK,CAACxxC,EAAGC,IAAMs1E,EAAU/jC,KAAKxxC,EAAGC,EAAG2O,KAAK6Q,MAAM4H,SAEvEzY,KAAKoE,QAAQf,SACfkkE,EAAYlkE,UAEdrD,KAAKunE,YAAcA,CACrB,CACA,GAAA5nB,GACE,MAAMv7C,EAAUpE,KAAKoE,QACnB+O,EAAMnT,KAAKmT,IACb,IAAK/O,EAAQmS,QAEX,YADAvW,KAAKuX,MAAQvX,KAAKka,OAAS,GAG7B,MAAMysD,EAAYviE,EAAQg5B,OACpBuqC,EAAY/nD,GAAO+mD,EAAU9zD,MAC7Bs0C,EAAWwgB,EAAU/hE,KACrBu7C,EAAcnhD,KAAK4nE,sBACnBC,EAAcnB,GAAWC,EAAWxf,GACxC4f,EAAWc,EAAYd,SACvBG,EAAaW,EAAYX,WAC3B,IAAI3vD,EAAO2C,EACX/G,EAAIN,KAAO80D,EAAU/uD,OACjB5Y,KAAKmlC,gBACP5tB,EAAQvX,KAAK2d,SACbzD,EAASla,KAAK8nE,SAAS3mB,EAAagG,EAAU4f,EAAUG,GAAc,KAEtEhtD,EAASla,KAAKoqB,UACd7S,EAAQvX,KAAK+nE,SAAS5mB,EAAawmB,EAAWZ,EAAUG,GAAc,IAExElnE,KAAKuX,MAAQjnB,KAAKE,IAAI+mB,EAAOnT,EAAQuZ,UAAY3d,KAAK2d,UACtD3d,KAAKka,OAAS5pB,KAAKE,IAAI0pB,EAAQ9V,EAAQgmB,WAAapqB,KAAKoqB,UAC3D,CACA,QAAA09C,CAAS3mB,EAAagG,EAAU4f,EAAUG,GACxC,MAAM/zD,EAAMnT,KAAKmT,IACfwK,EAAW3d,KAAK2d,SAChBzH,EAAUlW,KAAKoE,QAAQg5B,OAAOlnB,QAC1B8xD,EAAWhoE,KAAKonE,eAAiB,GACjCK,EAAaznE,KAAKynE,WAAa,CAAC,GAChCz0D,EAAak0D,EAAahxD,EAChC,IAAI+xD,EAAc9mB,EAClBhuC,EAAIiK,UAAY,OAChBjK,EAAIkK,aAAe,SACnB,IAAI6qD,GAAO,EACP/xD,GAAOnD,EAkBX,OAjBAhT,KAAKunE,YAAYh9D,SAAQ,CAACohC,EAAYx9C,KACpC,MAAMq+B,EAAYu6C,EAAW5f,EAAW,EAAIh0C,EAAI2F,YAAY6yB,EAAWl0B,MAAMF,OACnE,IAANppB,GAAWs5E,EAAWA,EAAWr1E,OAAS,GAAKo6B,EAAY,EAAItW,EAAUyH,KAC3EsqD,GAAej1D,EACfy0D,EAAWA,EAAWr1E,QAAUjE,EAAI,EAAI,EAAI,IAAM,EAClDgoB,GAAOnD,EACPk1D,KAEFF,EAAS75E,GAAK,CACZmoB,KAAM,EACNH,MACA+xD,MACA3wD,MAAOiV,EACPtS,OAAQgtD,GAEVO,EAAWA,EAAWr1E,OAAS,IAAMo6B,EAAYtW,CAAO,IAEnD+xD,CACT,CACA,QAAAF,CAAS5mB,EAAawmB,EAAWZ,EAAUoB,GACzC,MAAMh1D,EAAMnT,KAAKmT,IACfiX,EAAYpqB,KAAKoqB,UACjBlU,EAAUlW,KAAKoE,QAAQg5B,OAAOlnB,QAC1B8xD,EAAWhoE,KAAKonE,eAAiB,GACjCI,EAAcxnE,KAAKwnE,YAAc,GACjCY,EAAch+C,EAAY+2B,EAChC,IAAIknB,EAAanyD,EACboyD,EAAkB,EAClBC,EAAmB,EACnBjyD,EAAO,EACPkyD,EAAM,EA8BV,OA7BAxoE,KAAKunE,YAAYh9D,SAAQ,CAACohC,EAAYx9C,KACpC,MAAMs6E,EAsRZ,SAA2B1B,EAAUY,EAAWx0D,EAAKw4B,EAAYw8B,GAC/D,MAAM37C,EAOR,SAA4Bmf,EAAYo7B,EAAUY,EAAWx0D,GAC3D,IAAIu1D,EAAiB/8B,EAAWl0B,KAC5BixD,GAA4C,kBAAnBA,IAC3BA,EAAiBA,EAAe70C,QAAO,CAACziC,EAAGC,IAAMD,EAAEgB,OAASf,EAAEe,OAAShB,EAAIC,KAE7E,OAAO01E,EAAWY,EAAU/hE,KAAO,EAAIuN,EAAI2F,YAAY4vD,GAAgBnxD,KACzE,CAboBoxD,CAAmBh9B,EAAYo7B,EAAUY,EAAWx0D,GAChE+zD,EAaR,SAA6BiB,EAAax8B,EAAYi9B,GACpD,IAAI1B,EAAaiB,EACc,kBAApBx8B,EAAWl0B,OACpByvD,EAAa2B,GAA0Bl9B,EAAYi9B,IAErD,OAAO1B,CACT,CAnBqB4B,CAAoBX,EAAax8B,EAAYg8B,EAAU30D,YAC1E,MAAO,CACLwZ,YACA06C,aAEJ,CA7RiC6B,CAAkBhC,EAAUY,EAAWx0D,EAAKw4B,EAAYw8B,GACjF37C,EAAYi8C,EAAmBj8C,UAC/B06C,EAAauB,EAAmBvB,WAC9B/4E,EAAI,GAAKo6E,EAAmBrB,EAAa,EAAIhxD,EAAUkyD,IACzDC,GAAcC,EAAkBpyD,EAChCsxD,EAAYpiE,KAAK,CACfmS,MAAO+wD,EACPpuD,OAAQquD,IAEVjyD,GAAQgyD,EAAkBpyD,EAC1BsyD,IACAF,EAAkBC,EAAmB,GAEvCP,EAAS75E,GAAK,CACZmoB,OACAH,IAAKoyD,EACLC,MACAjxD,MAAOiV,EACPtS,OAAQgtD,GAEVoB,EAAkBh4E,KAAKC,IAAI+3E,EAAiB97C,GAC5C+7C,GAAoBrB,EAAahxD,CAAO,IAE1CmyD,GAAcC,EACdd,EAAYpiE,KAAK,CACfmS,MAAO+wD,EACPpuD,OAAQquD,IAEHF,CACT,CACA,cAAAW,GACE,IAAKhpE,KAAKoE,QAAQmS,QAChB,OAEF,MAAM4qC,EAAcnhD,KAAK4nE,sBACnBI,EAAWhoE,KAAKonE,eACpB6B,EAAkBjpE,KAAKoE,QACvBmH,EAAQ09D,EAAgB19D,MACxB2K,EAAU+yD,EAAgB7rC,OAAOlnB,QAE7BgzD,EAAYh9C,GADV+8C,EAAgB98C,IACansB,KAAKsW,KAAMtW,KAAKuX,OACrD,GAAIvX,KAAKmlC,eAAgB,CACvB,IAAI+iC,EAAM,EACN5xD,EAAO9K,GAAeD,EAAOvL,KAAKsW,KAAOJ,EAASlW,KAAKoW,MAAQpW,KAAKynE,WAAWS,IACnF,IAAK,MAAMiB,KAAUnB,EACfE,IAAQiB,EAAOjB,MACjBA,EAAMiB,EAAOjB,IACb5xD,EAAO9K,GAAeD,EAAOvL,KAAKsW,KAAOJ,EAASlW,KAAKoW,MAAQpW,KAAKynE,WAAWS,KAEjFiB,EAAOhzD,KAAOnW,KAAKmW,IAAMgrC,EAAcjrC,EACvCizD,EAAO7yD,KAAO4yD,EAAU38C,WAAW28C,EAAU11E,EAAE8iB,GAAO6yD,EAAO5xD,OAC7DjB,GAAQ6yD,EAAO5xD,MAAQrB,CAE3B,KAAO,CACL,IAAIsyD,EAAM,EACNryD,EAAM3K,GAAeD,EAAOvL,KAAKmW,IAAMgrC,EAAcjrC,EAASlW,KAAKqW,OAASrW,KAAKwnE,YAAYgB,GAAKtuD,QACtG,IAAK,MAAMkvD,KAAWpB,EAChBoB,EAAQZ,MAAQA,IAClBA,EAAMY,EAAQZ,IACdryD,EAAM3K,GAAeD,EAAOvL,KAAKmW,IAAMgrC,EAAcjrC,EAASlW,KAAKqW,OAASrW,KAAKwnE,YAAYgB,GAAKtuD,SAEpGkvD,EAAQjzD,IAAMA,EACdizD,EAAQ9yD,MAAQtW,KAAKsW,KAAOJ,EAC5BkzD,EAAQ9yD,KAAO4yD,EAAU38C,WAAW28C,EAAU11E,EAAE41E,EAAQ9yD,MAAO8yD,EAAQ7xD,OACvEpB,GAAOizD,EAAQlvD,OAAShE,CAE5B,CACF,CACA,YAAAivB,GACE,MAAiC,QAA1BnlC,KAAKoE,QAAQ0rC,UAAgD,WAA1B9vC,KAAKoE,QAAQ0rC,QACzD,CACA,IAAA5c,GACE,GAAIlzB,KAAKoE,QAAQmS,QAAS,CACxB,MAAMpD,EAAMnT,KAAKmT,IACjB4I,GAAS5I,EAAKnT,MACdA,KAAKqpE,QACLptD,GAAW9I,EACb,CACF,CACA,KAAAk2D,GACE,MAAMxsD,EAAO7c,KAAKoE,QAChBojE,EAAcxnE,KAAKwnE,YACnBC,EAAaznE,KAAKynE,WAClBt0D,EAAMnT,KAAKmT,IACP5H,EAAQsR,EAAKtR,MACjBo7D,EAAY9pD,EAAKugB,OACbksC,EAAet0D,GAASxU,MACxB0oE,EAAYh9C,GAAcrP,EAAKsP,IAAKnsB,KAAKsW,KAAMtW,KAAKuX,OACpDowD,EAAY/nD,GAAO+mD,EAAU9zD,MAC7BqD,EAAUywD,EAAUzwD,QACpBixC,EAAWwgB,EAAU/hE,KACrB2jE,EAAepiB,EAAW,EAChC,IAAIqiB,EACJxpE,KAAKwmD,YACLrzC,EAAIiK,UAAY8rD,EAAU9rD,UAAU,QACpCjK,EAAIkK,aAAe,SACnBlK,EAAI0D,UAAY,GAChB1D,EAAIN,KAAO80D,EAAU/uD,OACrB,MAAM6wD,EAAe/C,GAAWC,EAAWxf,GACzC4f,EAAW0C,EAAa1C,SACxBF,EAAY4C,EAAa5C,UACzBK,EAAauC,EAAavC,WAqDtB/hC,EAAenlC,KAAKmlC,eACpBgc,EAAcnhD,KAAK4nE,sBAEvB4B,EADErkC,EACO,CACP3xC,EAAGgY,GAAeD,EAAOvL,KAAKsW,KAAOJ,EAASlW,KAAKoW,MAAQqxD,EAAW,IACtE3iE,EAAG9E,KAAKmW,IAAMD,EAAUirC,EACxBlkC,KAAM,GAGC,CACPzpB,EAAGwM,KAAKsW,KAAOJ,EACfpR,EAAG0G,GAAeD,EAAOvL,KAAKmW,IAAMgrC,EAAcjrC,EAASlW,KAAKqW,OAASmxD,EAAY,GAAGttD,QACxF+C,KAAM,GAGV0P,GAAsB3sB,KAAKmT,IAAK0J,EAAK6sD,eACrC,MAAM12D,EAAak0D,EAAahxD,EAChClW,KAAKunE,YAAYh9D,SAAQ,CAACohC,EAAYx9C,KACpCglB,EAAIsK,YAAckuB,EAAWD,UAC7Bv4B,EAAIgK,UAAYwuB,EAAWD,UAC3B,MAAM7yB,EAAY1F,EAAI2F,YAAY6yB,EAAWl0B,MAAMF,MAC7C6F,EAAY8rD,EAAU9rD,UAAUuuB,EAAWvuB,YAAcuuB,EAAWvuB,UAAYupD,EAAUvpD,YAC1F7F,EAAQwvD,EAAWwC,EAAe1wD,EACxC,IAAIrlB,EAAIg2E,EAAOh2E,EACXsR,EAAI0kE,EAAO1kE,EACfokE,EAAU78C,SAASrsB,KAAKuX,OACpB4tB,EACEh3C,EAAI,GAAKqF,EAAI+jB,EAAQrB,EAAUlW,KAAKoW,QACtCtR,EAAI0kE,EAAO1kE,GAAKkO,EAChBw2D,EAAOvsD,OACPzpB,EAAIg2E,EAAOh2E,EAAIgY,GAAeD,EAAOvL,KAAKsW,KAAOJ,EAASlW,KAAKoW,MAAQqxD,EAAW+B,EAAOvsD,QAElF9uB,EAAI,GAAK2W,EAAIkO,EAAahT,KAAKqW,SACxC7iB,EAAIg2E,EAAOh2E,EAAIA,EAAIg0E,EAAYgC,EAAOvsD,MAAM1F,MAAQrB,EACpDszD,EAAOvsD,OACPnY,EAAI0kE,EAAO1kE,EAAI0G,GAAeD,EAAOvL,KAAKmW,IAAMgrC,EAAcjrC,EAASlW,KAAKqW,OAASmxD,EAAYgC,EAAOvsD,MAAM/C,SAMhH,GA7FoB,SAAU1mB,EAAGsR,EAAG6mC,GACpC,GAAItkC,MAAM0/D,IAAaA,GAAY,GAAK1/D,MAAMw/D,IAAcA,EAAY,EACtE,OAEF1zD,EAAIgG,OACJ,MAAMtC,EAAYpU,EAAekpC,EAAW90B,UAAW,GAQvD,GAPA1D,EAAIgK,UAAY1a,EAAekpC,EAAWxuB,UAAWmsD,GACrDn2D,EAAIwmD,QAAUl3D,EAAekpC,EAAWguB,QAAS,QACjDxmD,EAAI+yC,eAAiBzjD,EAAekpC,EAAWua,eAAgB,GAC/D/yC,EAAIslD,SAAWh2D,EAAekpC,EAAW8sB,SAAU,SACnDtlD,EAAI0D,UAAYA,EAChB1D,EAAIsK,YAAchb,EAAekpC,EAAWluB,YAAa6rD,GACzDn2D,EAAI8yC,YAAYxjD,EAAekpC,EAAWg+B,SAAU,KAChDhD,EAAUK,cAAe,CAC3B,MAAM4C,EAAc,CAClBhvD,OAAQisD,EAAYv2E,KAAKu5E,MAAQ,EACjCnvD,WAAYixB,EAAWjxB,WACvBC,SAAUgxB,EAAWhxB,SACrBc,YAAa5E,GAETi0B,EAAUo+B,EAAU58C,MAAM94B,EAAGuzE,EAAW,GAE9C3sD,GAAgBjH,EAAKy2D,EAAa9+B,EADlBhmC,EAAIykE,EACgC5C,EAAUM,iBAAmBF,EACnF,KAAO,CACL,MAAM+C,EAAUhlE,EAAIxU,KAAKC,KAAK42D,EAAW0f,GAAa,EAAG,GACnDkD,EAAWb,EAAU38C,WAAW/4B,EAAGuzE,GACnC9Q,EAAev2C,GAAcisB,EAAWsqB,cAC9C9iD,EAAI6H,YACAnsB,OAAO4hB,OAAOwlD,GAAc1K,MAAKp7D,GAAW,IAANA,IACxCsuB,GAAmBtL,EAAK,CACtB3f,EAAGu2E,EACHjlE,EAAGglE,EACHv3E,EAAGw0E,EACH12E,EAAGw2E,EACHjsD,OAAQq7C,IAGV9iD,EAAIoI,KAAKwuD,EAAUD,EAAS/C,EAAUF,GAExC1zD,EAAIqI,OACc,IAAd3E,GACF1D,EAAIuI,QAER,CACAvI,EAAIoG,SACN,CA6CEywD,CADcd,EAAU11E,EAAEA,GACLsR,EAAG6mC,GACxBn4C,EDlqPS,EAAC+X,EAAO+K,EAAMF,EAAO+V,IAE3B5gB,KADO4gB,EAAM,OAAS,SACJ/V,EAAkB,WAAV7K,GAAsB+K,EAAOF,GAAS,EAAIE,ECgqPnE2zD,CAAO7sD,EAAW5pB,EAAIuzE,EAAWwC,EAAcpkC,EAAe3xC,EAAI+jB,EAAQvX,KAAKoW,MAAOyG,EAAKsP,KA7ChF,SAAU34B,EAAGsR,EAAG6mC,GAC/B/uB,GAAWzJ,EAAKw4B,EAAWl0B,KAAMjkB,EAAGsR,EAAIoiE,EAAa,EAAGS,EAAW,CACjE7pD,cAAe6tB,EAAWvN,OAC1BhhB,UAAW8rD,EAAU9rD,UAAUuuB,EAAWvuB,YAE9C,CAyCEQ,CAASsrD,EAAU11E,EAAEA,GAAIsR,EAAG6mC,GACxBxG,EACFqkC,EAAOh2E,GAAK+jB,EAAQrB,OACf,GAA+B,kBAApBy1B,EAAWl0B,KAAmB,CAC9C,MAAMmxD,EAAiBjB,EAAU30D,WACjCw2D,EAAO1kE,GAAK+jE,GAA0Bl9B,EAAYi9B,EACpD,MACEY,EAAO1kE,GAAKkO,CACd,IAEFia,GAAqBjtB,KAAKmT,IAAK0J,EAAK6sD,cACtC,CACA,SAAAljB,GACE,MAAM3pC,EAAO7c,KAAKoE,QACZ68C,EAAYpkC,EAAKrF,MACjB0yD,EAAYtqD,GAAOqhC,EAAUpuC,MAC7Bs3D,EAAexqD,GAAUshC,EAAU/qC,SACzC,IAAK+qC,EAAU1qC,QACb,OAEF,MAAM2yD,EAAYh9C,GAAcrP,EAAKsP,IAAKnsB,KAAKsW,KAAMtW,KAAKuX,OACpDpE,EAAMnT,KAAKmT,IACX28B,EAAWmR,EAAUnR,SACrBy5B,EAAeW,EAAUtkE,KAAO,EAChCwkE,EAA6BD,EAAah0D,IAAMozD,EACtD,IAAIzkE,EACAwR,EAAOtW,KAAKsW,KACZqH,EAAW3d,KAAKuX,MACpB,GAAIvX,KAAKmlC,eACPxnB,EAAWrtB,KAAKC,OAAOyP,KAAKynE,YAC5B3iE,EAAI9E,KAAKmW,IAAMi0D,EACf9zD,EAAO9K,GAAeqR,EAAKtR,MAAO+K,EAAMtW,KAAKoW,MAAQuH,OAChD,CACL,MAAMyM,EAAYpqB,KAAKwnE,YAAY3zC,QAAO,CAACC,EAAKluB,IAAStV,KAAKC,IAAIujC,EAAKluB,EAAKsU,SAAS,GACrFpV,EAAIslE,EAA6B5+D,GAAeqR,EAAKtR,MAAOvL,KAAKmW,IAAKnW,KAAKqW,OAAS+T,EAAYvN,EAAKugB,OAAOlnB,QAAUlW,KAAK4nE,sBAC7H,CACA,MAAMp0E,EAAIgY,GAAeskC,EAAUx5B,EAAMA,EAAOqH,GAChDxK,EAAIiK,UAAY8rD,EAAU9rD,UAAU9R,GAAmBwkC,IACvD38B,EAAIkK,aAAe,SACnBlK,EAAIsK,YAAcwjC,EAAUzgD,MAC5B2S,EAAIgK,UAAY8jC,EAAUzgD,MAC1B2S,EAAIN,KAAOq3D,EAAUtxD,OACrBgE,GAAWzJ,EAAK8tC,EAAUxpC,KAAMjkB,EAAGsR,EAAGolE,EACxC,CACA,mBAAAtC,GACE,MAAM3mB,EAAYjhD,KAAKoE,QAAQoT,MACzB0yD,EAAYtqD,GAAOqhC,EAAUpuC,MAC7Bs3D,EAAexqD,GAAUshC,EAAU/qC,SACzC,OAAO+qC,EAAU1qC,QAAU2zD,EAAUl3D,WAAam3D,EAAajwD,OAAS,CAC1E,CACA,gBAAAmwD,CAAiB72E,EAAGsR,GAClB,IAAI3W,EAAGm8E,EAAQC,EACf,GAAIlhE,GAAW7V,EAAGwM,KAAKsW,KAAMtW,KAAKoW,QAAU/M,GAAWvE,EAAG9E,KAAKmW,IAAKnW,KAAKqW,QAEvE,IADAk0D,EAAKvqE,KAAKonE,eACLj5E,EAAI,EAAGA,EAAIo8E,EAAGn4E,SAAUjE,EAE3B,GADAm8E,EAASC,EAAGp8E,GACRkb,GAAW7V,EAAG82E,EAAOh0D,KAAMg0D,EAAOh0D,KAAOg0D,EAAO/yD,QAAUlO,GAAWvE,EAAGwlE,EAAOn0D,IAAKm0D,EAAOn0D,IAAMm0D,EAAOpwD,QAC1G,OAAOla,KAAKunE,YAAYp5E,GAI9B,OAAO,IACT,CACA,WAAAq8E,CAAYl5E,GACV,MAAMurB,EAAO7c,KAAKoE,QAClB,IA6CJ,SAAoBvE,EAAMgd,GACxB,IAAc,cAAThd,GAAiC,aAATA,KAAyBgd,EAAKlJ,SAAWkJ,EAAK4tD,SACzE,OAAO,EAET,GAAI5tD,EAAKjJ,UAAqB,UAAT/T,GAA6B,YAATA,GACvC,OAAO,EAET,OAAO,CACT,CArDS6qE,CAAWp5E,EAAEuO,KAAMgd,GACtB,OAEF,MAAM8tD,EAAc3qE,KAAKqqE,iBAAiB/4E,EAAEkC,EAAGlC,EAAEwT,GACjD,GAAe,cAAXxT,EAAEuO,MAAmC,aAAXvO,EAAEuO,KAAqB,CACnD,MAAMsc,EAAWnc,KAAKqnE,aAChBuD,GA3YWv5E,EA2YqBs5E,EA3YT,QAAfv5E,EA2Yc+qB,IA3Ye,OAAN9qB,GAAcD,EAAEwS,eAAiBvS,EAAEuS,cAAgBxS,EAAEyS,QAAUxS,EAAEwS,OA4YlGsY,IAAayuD,GACf9nE,EAAS+Z,EAAK4tD,QAAS,CAACn5E,EAAG6qB,EAAUnc,MAAOA,MAE9CA,KAAKqnE,aAAesD,EAChBA,IAAgBC,GAClB9nE,EAAS+Z,EAAKlJ,QAAS,CAACriB,EAAGq5E,EAAa3qE,MAAOA,KAEnD,MAAW2qE,GACT7nE,EAAS+Z,EAAKjJ,QAAS,CAACtiB,EAAGq5E,EAAa3qE,MAAOA,MApZlC,IAAC5O,EAAGC,CAsZrB,EAwBF,SAASw3E,GAA0Bl9B,EAAYi9B,GAE7C,OAAOA,GADaj9B,EAAWl0B,KAAOk0B,EAAWl0B,KAAKrlB,OAAS,GAAM,EAEvE,CAUA,IAAIy4E,GAAgB,CAClB9oE,GAAI,SACJ+oE,SAAU,GACV,KAAAjiE,CAAMgI,EAAO2uD,EAAOp7D,GAClB,MAAMmnC,EAAS16B,EAAM06B,OAAS,IAAI,GAAO,CACvCp4B,IAAKtC,EAAMsC,IACX/O,UACAyM,UAEFkhC,GAAQhc,UAAUllB,EAAO06B,EAAQnnC,GACjC2tC,GAAQsC,OAAOxjC,EAAO06B,EACxB,EACA,IAAAtX,CAAKpjB,GACHkhC,GAAQyC,UAAU3jC,EAAOA,EAAM06B,eACxB16B,EAAM06B,MACf,EACA,YAAA8S,CAAaxtC,EAAO2uD,EAAOp7D,GACzB,MAAMmnC,EAAS16B,EAAM06B,OACrBwG,GAAQhc,UAAUllB,EAAO06B,EAAQnnC,GACjCmnC,EAAOnnC,QAAUA,CACnB,EACA,WAAAy7C,CAAYhvC,GACV,MAAM06B,EAAS16B,EAAM06B,OACrBA,EAAOm8B,cACPn8B,EAAOy9B,gBACT,EACA,UAAA+B,CAAWl6D,EAAO7N,GACXA,EAAKkyD,QACRrkD,EAAM06B,OAAOi/B,YAAYxnE,EAAKgmB,MAElC,EACAhU,SAAU,CACRuB,SAAS,EACTu5B,SAAU,MACVvkC,MAAO,SACPinC,UAAU,EACVnvC,SAAS,EACT5C,OAAQ,IACR,OAAAmT,CAAQtiB,EAAGq6C,EAAYJ,GACrB,MAAM1nC,EAAQ8nC,EAAW/nC,aACnBonE,EAAKz/B,EAAO16B,MACdm6D,EAAGtiC,iBAAiB7kC,IACtBmnE,EAAGh1D,KAAKnS,GACR8nC,EAAWvN,QAAS,IAEpB4sC,EAAGn1D,KAAKhS,GACR8nC,EAAWvN,QAAS,EAExB,EACAzqB,QAAS,KACT82D,QAAS,KACTrtC,OAAQ,CACN58B,MAAO2S,GAAOA,EAAItC,MAAMzM,QAAQ5D,MAChCumE,SAAU,GACV7wD,QAAS,GACT,cAAAs1B,CAAe36B,GACb,MAAMyB,EAAWzB,EAAM4H,KAAKnG,SACtB24D,EAAwBp6D,EAAM06B,OAAOnnC,QAAQg5B,OACjD4pC,EAAgBiE,EAAsBjE,cACtCtsD,EAAauwD,EAAsBvwD,WACnC0C,EAAY6tD,EAAsB7tD,UAClC5c,EAAQyqE,EAAsBzqE,MAC9B0qE,EAAkBD,EAAsBC,gBACxCjV,EAAegV,EAAsBhV,aACvC,OAAOplD,EAAMsmB,yBAAyBrkC,KAAI4Y,IACxC,MAAMqH,EAAQrH,EAAK2sB,WAAWzM,SAASo7C,EAAgB,OAAIj1E,GACrD0pB,EAAckE,GAAU5M,EAAM0I,aACpC,MAAO,CACLhE,KAAMnF,EAAS5G,EAAK7H,OAAOk7B,MAC3B5hB,UAAWpK,EAAMX,gBACjBs5B,UAAWlrC,EACX49B,QAAS1yB,EAAKqK,QACd4jD,QAAS5mD,EAAMyc,eACfm6C,SAAU52D,EAAM0c,WAChBy2B,eAAgBnzC,EAAM2c,iBACtB+oC,SAAU1lD,EAAM4c,gBAChB9Y,WAAY4E,EAAYlE,MAAQkE,EAAYvB,QAAU,EACtDuD,YAAa1K,EAAMV,YACnBqI,WAAYA,GAAc3H,EAAM2H,WAChCC,SAAU5H,EAAM4H,SAChByC,UAAWA,GAAarK,EAAMqK,UAC9B64C,aAAciV,IAAoBjV,GAAgBljD,EAAMkjD,cACxDryD,aAAc8H,EAAK7H,MACpB,GACA7D,KACL,GAEFwX,MAAO,CACLhX,MAAO2S,GAAOA,EAAItC,MAAMzM,QAAQ5D,MAChC+V,SAAS,EACTu5B,SAAU,SACVr4B,KAAM,KAGVkL,YAAa,CACX1N,YAAavmB,IAASA,EAAKwmB,WAAW,MACtCkoB,OAAQ,CACNnoB,YAAavmB,IAAS,CAAC,iBAAkB,SAAU,QAAQ+iB,SAAS/iB,MAI1E,MAAM,WAAc,GAClB,WAAAkR,CAAYi2B,GACVmP,QACAhlC,KAAK6Q,MAAQglB,EAAOhlB,MACpB7Q,KAAKoE,QAAUyxB,EAAOzxB,QACtBpE,KAAKmT,IAAM0iB,EAAO1iB,IAClBnT,KAAKmrE,cAAWp5E,EAChBiO,KAAKmW,SAAMpkB,EACXiO,KAAKqW,YAAStkB,EACdiO,KAAKsW,UAAOvkB,EACZiO,KAAKoW,WAAQrkB,EACbiO,KAAKuX,WAAQxlB,EACbiO,KAAKka,YAASnoB,EACdiO,KAAK8vC,cAAW/9C,EAChBiO,KAAKS,YAAS1O,EACdiO,KAAKwyC,cAAWzgD,CAClB,CACA,MAAAsjC,CAAO1X,EAAUyM,GACf,MAAMvN,EAAO7c,KAAKoE,QAGlB,GAFApE,KAAKsW,KAAO,EACZtW,KAAKmW,IAAM,GACN0G,EAAKtG,QAER,YADAvW,KAAKuX,MAAQvX,KAAKka,OAASla,KAAKoW,MAAQpW,KAAKqW,OAAS,GAGxDrW,KAAKuX,MAAQvX,KAAKoW,MAAQuH,EAC1B3d,KAAKka,OAASla,KAAKqW,OAAS+T,EAC5B,MAAM66B,EAAYpyD,EAAQgqB,EAAKpF,MAAQoF,EAAKpF,KAAKrlB,OAAS,EAC1D4N,KAAKmrE,SAAWxrD,GAAU9C,EAAK3G,SAC/B,MAAMk1D,EAAWnmB,EAAYrlC,GAAO/C,EAAKhK,MAAMG,WAAahT,KAAKmrE,SAASjxD,OACtEla,KAAKmlC,eACPnlC,KAAKka,OAASkxD,EAEdprE,KAAKuX,MAAQ6zD,CAEjB,CACA,YAAAjmC,GACE,MAAMvc,EAAM5oB,KAAKoE,QAAQ0rC,SACzB,MAAe,QAARlnB,GAAyB,WAARA,CAC1B,CACA,SAAAyiD,CAAU70D,GACR,MAAML,EAAMnW,KAAKmW,IACfG,EAAOtW,KAAKsW,KACZD,EAASrW,KAAKqW,OACdD,EAAQpW,KAAKoW,MACbhS,EAAUpE,KAAKoE,QACXmH,EAAQnH,EAAQmH,MACtB,IACIoS,EAAUgpC,EAAQC,EADlBjsC,EAAW,EAkBf,OAhBI3a,KAAKmlC,gBACPwhB,EAASn7C,GAAeD,EAAO+K,EAAMF,GACrCwwC,EAASzwC,EAAMK,EACfmH,EAAWvH,EAAQE,IAEM,SAArBlS,EAAQ0rC,UACV6W,EAASrwC,EAAOE,EAChBowC,EAASp7C,GAAeD,EAAO8K,EAAQF,GACvCwE,GAAiB,GAAN5U,KAEX4gD,EAASvwC,EAAQI,EACjBowC,EAASp7C,GAAeD,EAAO4K,EAAKE,GACpCsE,EAAgB,GAAL5U,IAEb4X,EAAWtH,EAASF,GAEf,CACLwwC,SACAC,SACAjpC,WACAhD,WAEJ,CACA,IAAAuY,GACE,MAAM/f,EAAMnT,KAAKmT,IACX0J,EAAO7c,KAAKoE,QAClB,IAAKyY,EAAKtG,QACR,OAEF,MAAM+0D,EAAW1rD,GAAO/C,EAAKhK,MAEvB2D,EADa80D,EAASt4D,WACA,EAAIhT,KAAKmrE,SAASh1D,IACxCo1D,EAAkBvrE,KAAKqrE,UAAU70D,GACrCmwC,EAAS4kB,EAAgB5kB,OACzBC,EAAS2kB,EAAgB3kB,OACzBjpC,EAAW4tD,EAAgB5tD,SAC3BhD,EAAW4wD,EAAgB5wD,SAC7BiC,GAAWzJ,EAAK0J,EAAKpF,KAAM,EAAG,EAAG6zD,EAAU,CACzC9qE,MAAOqc,EAAKrc,MACZmd,WACAhD,WACAyC,UAAW9R,GAAmBuR,EAAKtR,OACnC8R,aAAc,SACdH,YAAa,CAACypC,EAAQC,IAE1B,EAYF,IAAI4kB,GAAe,CACjBzpE,GAAI,QACJ+oE,SAAU,GACV,KAAAjiE,CAAMgI,EAAO2uD,EAAOp7D,IAbtB,SAAqByM,EAAOowC,GAC1B,MAAMzpC,EAAQ,IAAI,GAAM,CACtBrE,IAAKtC,EAAMsC,IACX/O,QAAS68C,EACTpwC,UAEFkhC,GAAQhc,UAAUllB,EAAO2G,EAAOypC,GAChClP,GAAQsC,OAAOxjC,EAAO2G,GACtB3G,EAAM46D,WAAaj0D,CACrB,CAKIk0D,CAAY76D,EAAOzM,EACrB,EACA,IAAA6vB,CAAKpjB,GACH,MAAM46D,EAAa56D,EAAM46D,WACzB15B,GAAQyC,UAAU3jC,EAAO46D,UAClB56D,EAAM46D,UACf,EACA,YAAAptB,CAAaxtC,EAAO2uD,EAAOp7D,GACzB,MAAMoT,EAAQ3G,EAAM46D,WACpB15B,GAAQhc,UAAUllB,EAAO2G,EAAOpT,GAChCoT,EAAMpT,QAAUA,CAClB,EACA4Q,SAAU,CACRzJ,MAAO,SACPgL,SAAS,EACT1D,KAAM,CACJpS,OAAQ,QAEV+xC,UAAU,EACVt8B,QAAS,GACT45B,SAAU,MACVr4B,KAAM,GACNhX,OAAQ,KAEVk7C,cAAe,CACbn7C,MAAO,SAETmiB,YAAa,CACX1N,aAAa,EACbE,YAAY,IAGhB,MAAM,GAAM,IAAIw2D,QAChB,IAAIC,GAAkB,CACpB7pE,GAAI,WACJ,KAAA8G,CAAMgI,EAAO2uD,EAAOp7D,GAClB,MAAMoT,EAAQ,IAAI,GAAM,CACtBrE,IAAKtC,EAAMsC,IACX/O,UACAyM,UAEFkhC,GAAQhc,UAAUllB,EAAO2G,EAAOpT,GAChC2tC,GAAQsC,OAAOxjC,EAAO2G,GACtB,GAAI9M,IAAImG,EAAO2G,EACjB,EACA,IAAAyc,CAAKpjB,GACHkhC,GAAQyC,UAAU3jC,EAAO,GAAI7hB,IAAI6hB,IACjC,GAAIkS,OAAOlS,EACb,EACA,YAAAwtC,CAAaxtC,EAAO2uD,EAAOp7D,GACzB,MAAMoT,EAAQ,GAAIxoB,IAAI6hB,GACtBkhC,GAAQhc,UAAUllB,EAAO2G,EAAOpT,GAChCoT,EAAMpT,QAAUA,CAClB,EACA4Q,SAAU,CACRzJ,MAAO,SACPgL,SAAS,EACT1D,KAAM,CACJpS,OAAQ,UAEV+xC,UAAU,EACVt8B,QAAS,EACT45B,SAAU,MACVr4B,KAAM,GACNhX,OAAQ,MAEVk7C,cAAe,CACbn7C,MAAO,SAETmiB,YAAa,CACX1N,aAAa,EACbE,YAAY,IAGhB,MAAM02D,GAAc,CAClB,OAAAC,CAAQrhE,GACN,IAAKA,EAAMrY,OACT,OAAO,EAET,IAAIjE,EAAG4R,EACHvM,EAAI,EACJsR,EAAI,EACJgH,EAAQ,EACZ,IAAK3d,EAAI,EAAG4R,EAAM0K,EAAMrY,OAAQjE,EAAI4R,IAAO5R,EAAG,CAC5C,MAAMu9B,EAAKjhB,EAAMtc,GAAGi6B,QACpB,GAAIsD,GAAMA,EAAGsuB,WAAY,CACvB,MAAMpxB,EAAM8C,EAAGouB,kBACftmD,GAAKo1B,EAAIp1B,EACTsR,GAAK8jB,EAAI9jB,IACPgH,CACJ,CACF,CACA,MAAO,CACLtY,EAAGA,EAAIsY,EACPhH,EAAGA,EAAIgH,EAEX,EACA,OAAA2lC,CAAQhnC,EAAOshE,GACb,IAAKthE,EAAMrY,OACT,OAAO,EAET,IAGIjE,EAAG4R,EAAKisE,EAHRx4E,EAAIu4E,EAAcv4E,EAClBsR,EAAIinE,EAAcjnE,EAClBgsC,EAAczuC,OAAO8D,kBAEzB,IAAKhY,EAAI,EAAG4R,EAAM0K,EAAMrY,OAAQjE,EAAI4R,IAAO5R,EAAG,CAC5C,MAAMu9B,EAAKjhB,EAAMtc,GAAGi6B,QACpB,GAAIsD,GAAMA,EAAGsuB,WAAY,CACvB,MACMvrD,EAAI8Z,GAAsBwjE,EADjBrgD,EAAGqlB,kBAEdtiD,EAAIqiD,IACNA,EAAcriD,EACdu9E,EAAiBtgD,EAErB,CACF,CACA,GAAIsgD,EAAgB,CAClB,MAAMC,EAAKD,EAAelyB,kBAC1BtmD,EAAIy4E,EAAGz4E,EACPsR,EAAImnE,EAAGnnE,CACT,CACA,MAAO,CACLtR,IACAsR,IAEJ,GAEF,SAASonE,GAAa/vC,EAAMgwC,GAQ1B,OAPIA,IACEt5E,EAAQs5E,GACVv5E,MAAM7C,UAAUqV,KAAKlC,MAAMi5B,EAAMgwC,GAEjChwC,EAAK/2B,KAAK+mE,IAGPhwC,CACT,CACA,SAASiwC,GAAcl5E,GACrB,OAAoB,kBAARA,GAAoBA,aAAeu9B,SAAWv9B,EAAIgR,QAAQ,OAAS,EACtEhR,EAAIgS,MAAM,MAEZhS,CACT,CACA,SAASm5E,GAAkBx7D,EAAOhL,GAChC,MAAMuiB,EAAUviB,EAAKuiB,QACnBxkB,EAAeiC,EAAKjC,aACpBC,EAAQgC,EAAKhC,MACTw0B,EAAaxnB,EAAM6qB,eAAe93B,GAAcy0B,WAChDi0C,EAAwBj0C,EAAWyG,iBAAiBj7B,GACxDk7B,EAAQutC,EAAsBvtC,MAC9B3vC,EAAQk9E,EAAsBl9E,MAChC,MAAO,CACLyhB,QACAkuB,QACApa,OAAQ0T,EAAWuF,UAAU/5B,GAC7B47B,IAAK5uB,EAAM4H,KAAKnG,SAAS1O,GAAc6U,KAAK5U,GAC5C0oE,eAAgBn9E,EAChBurC,QAAStC,EAAWuC,aACpB4E,UAAW37B,EACXD,eACAwkB,UAEJ,CACA,SAASokD,GAAeC,EAASroE,GAC/B,MAAM+O,EAAMs5D,EAAQ57D,MAAMsC,IACpBu5D,EAAOD,EAAQC,KACnBC,EAASF,EAAQE,OACjBn1D,EAAQi1D,EAAQj1D,MACZuvD,EAAW3iE,EAAQ2iE,SACvBF,EAAYziE,EAAQyiE,UAChB+F,EAAWhtD,GAAOxb,EAAQwoE,UAC1B1C,EAAYtqD,GAAOxb,EAAQ8lE,WAC3B2C,EAAajtD,GAAOxb,EAAQyoE,YAC5BC,EAAiBt1D,EAAMplB,OACvB26E,EAAkBJ,EAAOv6E,OACzB46E,EAAoBN,EAAKt6E,OACzB8jB,EAAUyJ,GAAUvb,EAAQ8R,SAClC,IAAIgE,EAAShE,EAAQgE,OACjB3C,EAAQ,EACR01D,EAAqBP,EAAK74C,QAAO,CAAC/nB,EAAOohE,IAAaphE,EAAQohE,EAASC,OAAO/6E,OAAS86E,EAASpwD,MAAM1qB,OAAS86E,EAASE,MAAMh7E,QAAQ,GAK1I,GAJA66E,GAAsBR,EAAQY,WAAWj7E,OAASq6E,EAAQa,UAAUl7E,OAChE06E,IACF5yD,GAAU4yD,EAAiB5C,EAAUl3D,YAAc85D,EAAiB,GAAK1oE,EAAQmpE,aAAenpE,EAAQopE,mBAEtGP,EAAoB,CAEtB/yD,GAAU8yD,GADa5oE,EAAQqpE,cAAgBn9E,KAAKC,IAAIs2E,EAAW+F,EAAS55D,YAAc45D,EAAS55D,aACnDi6D,EAAqBD,GAAqBJ,EAAS55D,YAAci6D,EAAqB,GAAK7oE,EAAQspE,WACrJ,CACIX,IACF7yD,GAAU9V,EAAQupE,gBAAkBZ,EAAkBF,EAAW75D,YAAc+5D,EAAkB,GAAK3oE,EAAQwpE,eAEhH,IAAIC,EAAe,EACnB,MAAMC,EAAe,SAAU7wD,GAC7B1F,EAAQjnB,KAAKC,IAAIgnB,EAAOpE,EAAI2F,YAAYmE,GAAM1F,MAAQs2D,EACxD,EAiBA,OAhBA16D,EAAIgG,OACJhG,EAAIN,KAAOq3D,EAAUtxD,OACrBzV,EAAKspE,EAAQj1D,MAAOs2D,GACpB36D,EAAIN,KAAO+5D,EAASh0D,OACpBzV,EAAKspE,EAAQY,WAAW1qC,OAAO8pC,EAAQa,WAAYQ,GACnDD,EAAezpE,EAAQqpE,cAAgB1G,EAAW,EAAI3iE,EAAQ0uC,WAAa,EAC3E3vC,EAAKupE,GAAMQ,IACT/pE,EAAK+pE,EAASC,OAAQW,GACtB3qE,EAAK+pE,EAASpwD,MAAOgxD,GACrB3qE,EAAK+pE,EAASE,MAAOU,EAAa,IAEpCD,EAAe,EACf16D,EAAIN,KAAOg6D,EAAWj0D,OACtBzV,EAAKspE,EAAQE,OAAQmB,GACrB36D,EAAIoG,UACJhC,GAASrB,EAAQqB,MACV,CACLA,QACA2C,SAEJ,CAsBA,SAAS6zD,GAAgBl9D,EAAOzM,EAASwB,EAAMooE,GAC7C,MAAMx6E,EAAIoS,EAAKpS,EACb+jB,EAAQ3R,EAAK2R,MACT02D,EAAap9D,EAAM0G,MACvB22D,EAAmBr9D,EAAMwuB,UACzB/oB,EAAO43D,EAAiB53D,KACxBF,EAAQ83D,EAAiB93D,MAC3B,IAAI+3D,EAAS,SAWb,MAVe,WAAXH,EACFG,EAAS36E,IAAM8iB,EAAOF,GAAS,EAAI,OAAS,QACnC5iB,GAAK+jB,EAAQ,EACtB42D,EAAS,OACA36E,GAAKy6E,EAAa12D,EAAQ,IACnC42D,EAAS,SAxBb,SAA6BA,EAAQt9D,EAAOzM,EAASwB,GACnD,MAAMpS,EAAIoS,EAAKpS,EACb+jB,EAAQ3R,EAAK2R,MACT62D,EAAQhqE,EAAQiqE,UAAYjqE,EAAQkqE,aAC1C,MAAe,SAAXH,GAAqB36E,EAAI+jB,EAAQ62D,EAAQv9D,EAAM0G,OAGpC,UAAX42D,GAAsB36E,EAAI+jB,EAAQ62D,EAAQ,QAA9C,CAGF,CAgBMG,CAAoBJ,EAAQt9D,EAAOzM,EAASwB,KAC9CuoE,EAAS,UAEJA,CACT,CACA,SAASK,GAAmB39D,EAAOzM,EAASwB,GAC1C,MAAMooE,EAASpoE,EAAKooE,QAAU5pE,EAAQ4pE,QA1CxC,SAAyBn9D,EAAOjL,GAC9B,MAAMd,EAAIc,EAAKd,EACboV,EAAStU,EAAKsU,OAChB,OAAIpV,EAAIoV,EAAS,EACR,MACEpV,EAAI+L,EAAMqJ,OAASA,EAAS,EAC9B,SAEF,QACT,CAiCkDu0D,CAAgB59D,EAAOjL,GACvE,MAAO,CACLuoE,OAAQvoE,EAAKuoE,QAAU/pE,EAAQ+pE,QAAUJ,GAAgBl9D,EAAOzM,EAASwB,EAAMooE,GAC/EA,SAEJ,CAuBA,SAASU,GAAmBtqE,EAASwB,EAAM+oE,EAAW99D,GACpD,MAAMw9D,EAAYjqE,EAAQiqE,UACxBC,EAAelqE,EAAQkqE,aACvB/zD,EAAenW,EAAQmW,aACnB4zD,EAASQ,EAAUR,OACvBH,EAASW,EAAUX,OACfY,EAAiBP,EAAYC,EAC7BO,EAAiBnvD,GAAcnF,GACnCmE,EAAUmwD,EAAenwD,QACzBG,EAAWgwD,EAAehwD,SAC1BF,EAAakwD,EAAelwD,WAC5BC,EAAciwD,EAAejwD,YAC/B,IAAIprB,EAlCN,SAAgBoS,EAAMuoE,GACpB,IAAI36E,EAAIoS,EAAKpS,EACX+jB,EAAQ3R,EAAK2R,MAMf,MALe,UAAX42D,EACF36E,GAAK+jB,EACe,WAAX42D,IACT36E,GAAK+jB,EAAQ,GAER/jB,CACT,CAyBUs7E,CAAOlpE,EAAMuoE,GACrB,MAAMrpE,EAzBR,SAAgBc,EAAMooE,EAAQY,GAC5B,IAAI9pE,EAAIc,EAAKd,EACXoV,EAAStU,EAAKsU,OAQhB,MAPe,QAAX8zD,EACFlpE,GAAK8pE,EAEL9pE,GADoB,WAAXkpE,EACJ9zD,EAAS00D,EAET10D,EAAS,EAETpV,CACT,CAcYiqE,CAAOnpE,EAAMooE,EAAQY,GAY/B,MAXe,WAAXZ,EACa,SAAXG,EACF36E,GAAKo7E,EACe,UAAXT,IACT36E,GAAKo7E,GAEa,SAAXT,EACT36E,GAAKlD,KAAKC,IAAImuB,EAASC,GAAc0vD,EACjB,UAAXF,IACT36E,GAAKlD,KAAKC,IAAIsuB,EAAUD,GAAeyvD,GAElC,CACL76E,EAAG4V,GAAY5V,EAAG,EAAGqd,EAAM0G,MAAQ3R,EAAK2R,OACxCzS,EAAGsE,GAAYtE,EAAG,EAAG+L,EAAMqJ,OAAStU,EAAKsU,QAE7C,CACA,SAAS80D,GAAYvC,EAASlhE,EAAOnH,GACnC,MAAM8R,EAAUyJ,GAAUvb,EAAQ8R,SAClC,MAAiB,WAAV3K,EAAqBkhE,EAAQj5E,EAAIi5E,EAAQl1D,MAAQ,EAAc,UAAVhM,EAAoBkhE,EAAQj5E,EAAIi5E,EAAQl1D,MAAQrB,EAAQE,MAAQq2D,EAAQj5E,EAAI0iB,EAAQI,IAClJ,CACA,SAAS24D,GAAwBnsE,GAC/B,OAAOopE,GAAa,GAAIE,GAActpE,GACxC,CAQA,SAASosE,GAAkB18C,EAAWhgB,GACpC,MAAM6B,EAAW7B,GAAWA,EAAQmoB,SAAWnoB,EAAQmoB,QAAQ8xC,SAAWj6D,EAAQmoB,QAAQ8xC,QAAQj6C,UAClG,OAAOne,EAAWme,EAAUne,SAASA,GAAYme,CACnD,CACA,MAAM28C,GAAmB,CACvBC,YAAavtE,EACb,KAAA2V,CAAM63D,GACJ,GAAIA,EAAaj9E,OAAS,EAAG,CAC3B,MAAMyT,EAAOwpE,EAAa,GACpBjyC,EAASv3B,EAAKgL,MAAM4H,KAAK2kB,OACzBkyC,EAAalyC,EAASA,EAAOhrC,OAAS,EAC5C,GAAI4N,MAAQA,KAAKoE,SAAiC,YAAtBpE,KAAKoE,QAAQ9U,KACvC,OAAOuW,EAAK80B,QAAQoE,OAAS,GACxB,GAAIl5B,EAAKk5B,MACd,OAAOl5B,EAAKk5B,MACP,GAAIuwC,EAAa,GAAKzpE,EAAK25B,UAAY8vC,EAC5C,OAAOlyC,EAAOv3B,EAAK25B,UAEvB,CACA,MAAO,EACT,EACA+vC,WAAY1tE,EACZwrE,WAAYxrE,EACZ2tE,YAAa3tE,EACb,KAAAk9B,CAAM0wC,GACJ,GAAIzvE,MAAQA,KAAKoE,SAAiC,YAAtBpE,KAAKoE,QAAQ9U,KACvC,OAAOmgF,EAAY1wC,MAAQ,KAAO0wC,EAAYlD,gBAAkBkD,EAAYlD,eAE9E,IAAIxtC,EAAQ0wC,EAAY90C,QAAQoE,OAAS,GACrCA,IACFA,GAAS,MAEX,MAAM3vC,EAAQqgF,EAAYlD,eAI1B,OAHKvqE,EAAc5S,KACjB2vC,GAAS3vC,GAEJ2vC,CACT,EACA,UAAA2wC,CAAWD,GACT,MACMrrE,EADOqrE,EAAY5+D,MAAM6qB,eAAe+zC,EAAY7rE,cACrCy0B,WAAWzM,SAAS6jD,EAAYjwC,WACrD,MAAO,CACLntB,YAAajO,EAAQiO,YACrBD,gBAAiBhO,EAAQgO,gBACzBqJ,YAAarX,EAAQqX,YACrBgU,WAAYrrB,EAAQqrB,WACpBC,iBAAkBtrB,EAAQsrB,iBAC1BumC,aAAc,EAElB,EACA,cAAA0Z,GACE,OAAO3vE,KAAKoE,QAAQwrE,SACtB,EACA,eAAAC,CAAgBJ,GACd,MACMrrE,EADOqrE,EAAY5+D,MAAM6qB,eAAe+zC,EAAY7rE,cACrCy0B,WAAWzM,SAAS6jD,EAAYjwC,WACrD,MAAO,CACL9kB,WAAYtW,EAAQsW,WACpBC,SAAUvW,EAAQuW,SAEtB,EACAm1D,WAAYjuE,EACZyrE,UAAWzrE,EACXkuE,aAAcluE,EACd8qE,OAAQ9qE,EACRmuE,YAAanuE,GAEf,SAASouE,GAA2Bz9C,EAAW9jC,EAAMykB,EAAKgd,GACxD,MAAMxH,EAAS6J,EAAU9jC,GAAMJ,KAAK6kB,EAAKgd,GACzC,MAAsB,qBAAXxH,EACFwmD,GAAiBzgF,GAAMJ,KAAK6kB,EAAKgd,GAEnCxH,CACT,CACA,MAAM,WAAgB,GACpB,WAAA/oB,CAAYi2B,GACVmP,QACAhlC,KAAKkwE,QAAU,EACflwE,KAAKmzB,QAAU,GACfnzB,KAAKmwE,oBAAiBp+E,EACtBiO,KAAKowE,WAAQr+E,EACbiO,KAAKqwE,uBAAoBt+E,EACzBiO,KAAKswE,cAAgB,GACrBtwE,KAAKu2B,iBAAcxkC,EACnBiO,KAAKi6B,cAAWloC,EAChBiO,KAAK6Q,MAAQglB,EAAOhlB,MACpB7Q,KAAKoE,QAAUyxB,EAAOzxB,QACtBpE,KAAKuwE,gBAAax+E,EAClBiO,KAAKwX,WAAQzlB,EACbiO,KAAKqtE,gBAAat7E,EAClBiO,KAAK0sE,UAAO36E,EACZiO,KAAKstE,eAAYv7E,EACjBiO,KAAK2sE,YAAS56E,EACdiO,KAAKmuE,YAASp8E,EACdiO,KAAKguE,YAASj8E,EACdiO,KAAKxM,OAAIzB,EACTiO,KAAK8E,OAAI/S,EACTiO,KAAKka,YAASnoB,EACdiO,KAAKuX,WAAQxlB,EACbiO,KAAKwwE,YAASz+E,EACdiO,KAAKywE,YAAS1+E,EACdiO,KAAK0wE,iBAAc3+E,EACnBiO,KAAK2wE,sBAAmB5+E,EACxBiO,KAAK4wE,qBAAkB7+E,CACzB,CACA,UAAAsoC,CAAWj2B,GACTpE,KAAKoE,QAAUA,EACfpE,KAAKqwE,uBAAoBt+E,EACzBiO,KAAKi6B,cAAWloC,CAClB,CACA,kBAAAouC,GACE,MAAM9G,EAASr5B,KAAKqwE,kBACpB,GAAIh3C,EACF,OAAOA,EAET,MAAMxoB,EAAQ7Q,KAAK6Q,MACbzM,EAAUpE,KAAKoE,QAAQqe,WAAWziB,KAAK+Z,cACvC8C,EAAOzY,EAAQw2C,SAAW/pC,EAAMzM,QAAQ+N,WAAa/N,EAAQ0R,WAC7DA,EAAa,IAAI,GAAW9V,KAAK6Q,MAAOgM,GAI9C,OAHIA,EAAKgE,aACP7gB,KAAKqwE,kBAAoBxhF,OAAOqxC,OAAOpqB,IAElCA,CACT,CACA,UAAAiE,GACE,OAAO/Z,KAAKi6B,WAAaj6B,KAAKi6B,UApIJjW,EAoIoChkB,KAAK6Q,MAAMkJ,aApIvC0yD,EAoIqDzsE,KApI5CqvE,EAoIkDrvE,KAAKswE,cAnI7FjwD,GAAc2D,EAAQ,CAC3ByoD,UACA4C,eACAxvE,KAAM,cAJV,IAA8BmkB,EAAQyoD,EAAS4C,CAqI7C,CACA,QAAAwB,CAASr+D,EAASpO,GAChB,MAAMouB,EAAYpuB,EAAQouB,UACpB48C,EAAca,GAA2Bz9C,EAAW,cAAexyB,KAAMwS,GACzEgF,EAAQy4D,GAA2Bz9C,EAAW,QAASxyB,KAAMwS,GAC7D+8D,EAAaU,GAA2Bz9C,EAAW,aAAcxyB,KAAMwS,GAC7E,IAAIsK,EAAQ,GAIZ,OAHAA,EAAQovD,GAAapvD,EAAOsvD,GAAcgD,IAC1CtyD,EAAQovD,GAAapvD,EAAOsvD,GAAc50D,IAC1CsF,EAAQovD,GAAapvD,EAAOsvD,GAAcmD,IACnCzyD,CACT,CACA,aAAAg0D,CAAczB,EAAcjrE,GAC1B,OAAO6qE,GAAwBgB,GAA2B7rE,EAAQouB,UAAW,aAAcxyB,KAAMqvE,GACnG,CACA,OAAA0B,CAAQ1B,EAAcjrE,GACpB,MAAMouB,EAAYpuB,EAAQouB,UACpBw+C,EAAY,GAalB,OAZA7tE,EAAKksE,GAAc78D,IACjB,MAAM06D,EAAW,CACfC,OAAQ,GACRrwD,MAAO,GACPswD,MAAO,IAEH6D,EAAS/B,GAAkB18C,EAAWhgB,GAC5C05D,GAAagB,EAASC,OAAQf,GAAc6D,GAA2BgB,EAAQ,cAAejxE,KAAMwS,KACpG05D,GAAagB,EAASpwD,MAAOmzD,GAA2BgB,EAAQ,QAASjxE,KAAMwS,IAC/E05D,GAAagB,EAASE,MAAOhB,GAAc6D,GAA2BgB,EAAQ,aAAcjxE,KAAMwS,KAClGw+D,EAAU5rE,KAAK8nE,EAAS,IAEnB8D,CACT,CACA,YAAAE,CAAa7B,EAAcjrE,GACzB,OAAO6qE,GAAwBgB,GAA2B7rE,EAAQouB,UAAW,YAAaxyB,KAAMqvE,GAClG,CACA,SAAA8B,CAAU9B,EAAcjrE,GACtB,MAAMouB,EAAYpuB,EAAQouB,UACpBu9C,EAAeE,GAA2Bz9C,EAAW,eAAgBxyB,KAAMqvE,GAC3E1C,EAASsD,GAA2Bz9C,EAAW,SAAUxyB,KAAMqvE,GAC/DW,EAAcC,GAA2Bz9C,EAAW,cAAexyB,KAAMqvE,GAC/E,IAAIvyD,EAAQ,GAIZ,OAHAA,EAAQovD,GAAapvD,EAAOsvD,GAAc2D,IAC1CjzD,EAAQovD,GAAapvD,EAAOsvD,GAAcO,IAC1C7vD,EAAQovD,GAAapvD,EAAOsvD,GAAc4D,IACnClzD,CACT,CACA,YAAAs0D,CAAahtE,GACX,MAAMuR,EAAS3V,KAAKmzB,QACd1a,EAAOzY,KAAK6Q,MAAM4H,KAClBi4D,EAAc,GACdC,EAAmB,GACnBC,EAAkB,GACxB,IACIziF,EAAG4R,EADHsvE,EAAe,GAEnB,IAAKlhF,EAAI,EAAG4R,EAAM4V,EAAOvjB,OAAQjE,EAAI4R,IAAO5R,EAC1CkhF,EAAajqE,KAAKinE,GAAkBrsE,KAAK6Q,MAAO8E,EAAOxnB,KAkBzD,OAhBIiW,EAAQ+e,SACVksD,EAAeA,EAAalsD,QAAO,CAACiF,EAASvkB,EAAO0D,IAAUnD,EAAQ+e,OAAOiF,EAASvkB,EAAO0D,EAAOkR,MAElGrU,EAAQitE,WACVhC,EAAeA,EAAazsC,MAAK,CAACxxC,EAAGC,IAAM+S,EAAQitE,SAASjgF,EAAGC,EAAGonB,MAEpEtV,EAAKksE,GAAc78D,IACjB,MAAMy+D,EAAS/B,GAAkB9qE,EAAQouB,UAAWhgB,GACpDk+D,EAAYtrE,KAAK6qE,GAA2BgB,EAAQ,aAAcjxE,KAAMwS,IACxEm+D,EAAiBvrE,KAAK6qE,GAA2BgB,EAAQ,kBAAmBjxE,KAAMwS,IAClFo+D,EAAgBxrE,KAAK6qE,GAA2BgB,EAAQ,iBAAkBjxE,KAAMwS,GAAS,IAE3FxS,KAAK0wE,YAAcA,EACnB1wE,KAAK2wE,iBAAmBA,EACxB3wE,KAAK4wE,gBAAkBA,EACvB5wE,KAAKuwE,WAAalB,EACXA,CACT,CACA,MAAAh6C,CAAOpoB,EAASioD,GACd,MAAM9wD,EAAUpE,KAAKoE,QAAQqe,WAAWziB,KAAK+Z,cACvCpE,EAAS3V,KAAKmzB,QACpB,IAAIzd,EACA25D,EAAe,GACnB,GAAK15D,EAAOvjB,OAML,CACL,MAAM09C,EAAW+7B,GAAYznE,EAAQ0rC,UAAUxhD,KAAK0R,KAAM2V,EAAQ3V,KAAKmwE,gBACvEd,EAAervE,KAAKoxE,aAAahtE,GACjCpE,KAAKwX,MAAQxX,KAAK6wE,SAASxB,EAAcjrE,GACzCpE,KAAKqtE,WAAartE,KAAK8wE,cAAczB,EAAcjrE,GACnDpE,KAAK0sE,KAAO1sE,KAAK+wE,QAAQ1B,EAAcjrE,GACvCpE,KAAKstE,UAAYttE,KAAKkxE,aAAa7B,EAAcjrE,GACjDpE,KAAK2sE,OAAS3sE,KAAKmxE,UAAU9B,EAAcjrE,GAC3C,MAAMwB,EAAO5F,KAAKowE,MAAQ5D,GAAexsE,KAAMoE,GACzCktE,EAAkBziF,OAAOwQ,OAAO,CAAC,EAAGywC,EAAUlqC,GAC9C+oE,EAAYH,GAAmBxuE,KAAK6Q,MAAOzM,EAASktE,GACpDC,EAAkB7C,GAAmBtqE,EAASktE,EAAiB3C,EAAW3uE,KAAK6Q,OACrF7Q,KAAKmuE,OAASQ,EAAUR,OACxBnuE,KAAKguE,OAASW,EAAUX,OACxBt4D,EAAa,CACXw6D,QAAS,EACT18E,EAAG+9E,EAAgB/9E,EACnBsR,EAAGysE,EAAgBzsE,EACnByS,MAAO3R,EAAK2R,MACZ2C,OAAQtU,EAAKsU,OACbs2D,OAAQ1gC,EAASt8C,EACjBi9E,OAAQ3gC,EAAShrC,EAErB,MA5BuB,IAAjB9E,KAAKkwE,UACPx6D,EAAa,CACXw6D,QAAS,IA2BflwE,KAAKswE,cAAgBjB,EACrBrvE,KAAKi6B,cAAWloC,EACZ2jB,GACF1V,KAAKmgC,qBAAqB9K,OAAOr1B,KAAM0V,GAErCzI,GAAW7I,EAAQotE,UACrBptE,EAAQotE,SAASljF,KAAK0R,KAAM,CAC1B6Q,MAAO7Q,KAAK6Q,MACZ47D,QAASzsE,KACTk1D,UAGN,CACA,SAAAuc,CAAUC,EAAcv+D,EAAKvN,EAAMxB,GACjC,MAAMutE,EAAgB3xE,KAAK4xE,iBAAiBF,EAAc9rE,EAAMxB,GAChE+O,EAAIkI,OAAOs2D,EAAc1tB,GAAI0tB,EAAcztB,IAC3C/wC,EAAIkI,OAAOs2D,EAAcxtB,GAAIwtB,EAAcvtB,IAC3CjxC,EAAIkI,OAAOs2D,EAAcE,GAAIF,EAAcG,GAC7C,CACA,gBAAAF,CAAiBF,EAAc9rE,EAAMxB,GACnC,MAAM+pE,EAASnuE,KAAKmuE,OAClBH,EAAShuE,KAAKguE,OACVK,EAAYjqE,EAAQiqE,UAEpB0D,EAAkBryD,GADPtb,EAAQmW,cAEvBmE,EAAUqzD,EAAgBrzD,QAC1BG,EAAWkzD,EAAgBlzD,SAC3BF,EAAaozD,EAAgBpzD,WAC7BC,EAAcmzD,EAAgBnzD,YAC1BozD,EAAMN,EAAal+E,EACvBy+E,EAAMP,EAAa5sE,EACfyS,EAAQ3R,EAAK2R,MACjB2C,EAAStU,EAAKsU,OAChB,IAAI+pC,EAAIE,EAAI0tB,EAAI3tB,EAAIE,EAAI0tB,EAoCxB,MAnCe,WAAX9D,GACF5pB,EAAK6tB,EAAM/3D,EAAS,EACL,SAAXi0D,GACFlqB,EAAK+tB,EACL7tB,EAAKF,EAAKoqB,EACVnqB,EAAKE,EAAKiqB,EACVyD,EAAK1tB,EAAKiqB,IAEVpqB,EAAK+tB,EAAMz6D,EACX4sC,EAAKF,EAAKoqB,EACVnqB,EAAKE,EAAKiqB,EACVyD,EAAK1tB,EAAKiqB,GAEZwD,EAAK5tB,IAGHE,EADa,SAAXgqB,EACG6D,EAAM1hF,KAAKC,IAAImuB,EAASC,GAAc0vD,EACvB,UAAXF,EACJ6D,EAAMz6D,EAAQjnB,KAAKC,IAAIsuB,EAAUD,GAAeyvD,EAEhDruE,KAAKwwE,OAEG,QAAXxC,GACF9pB,EAAK+tB,EACL7tB,EAAKF,EAAKmqB,EACVpqB,EAAKE,EAAKkqB,EACVwD,EAAK1tB,EAAKkqB,IAEVnqB,EAAK+tB,EAAM/3D,EACXkqC,EAAKF,EAAKmqB,EACVpqB,EAAKE,EAAKkqB,EACVwD,EAAK1tB,EAAKkqB,GAEZyD,EAAK5tB,GAEA,CACLD,KACAE,KACA0tB,KACA3tB,KACAE,KACA0tB,KAEJ,CACA,SAAAtrB,CAAU1/B,EAAI3T,EAAK/O,GACjB,MAAMoT,EAAQxX,KAAKwX,MACbplB,EAASolB,EAAMplB,OACrB,IAAI83E,EAAWqD,EAAcp/E,EAC7B,GAAIiE,EAAQ,CACV,MAAM82E,EAAYh9C,GAAc9nB,EAAQ+nB,IAAKnsB,KAAKxM,EAAGwM,KAAKuX,OAQ1D,IAPAuP,EAAGtzB,EAAIw7E,GAAYhvE,KAAMoE,EAAQo4C,WAAYp4C,GAC7C+O,EAAIiK,UAAY8rD,EAAU9rD,UAAUhZ,EAAQo4C,YAC5CrpC,EAAIkK,aAAe,SACnB6sD,EAAYtqD,GAAOxb,EAAQ8lE,WAC3BqD,EAAenpE,EAAQmpE,aACvBp6D,EAAIgK,UAAY/Y,EAAQ8tE,WACxB/+D,EAAIN,KAAOq3D,EAAUtxD,OAChBzqB,EAAI,EAAGA,EAAIiE,IAAUjE,EACxBglB,EAAIyK,SAASpG,EAAMrpB,GAAI+6E,EAAU11E,EAAEszB,EAAGtzB,GAAIszB,EAAGhiB,EAAIolE,EAAUl3D,WAAa,GACxE8T,EAAGhiB,GAAKolE,EAAUl3D,WAAau6D,EAC3Bp/E,EAAI,IAAMiE,IACZ00B,EAAGhiB,GAAKV,EAAQopE,kBAAoBD,EAG1C,CACF,CACA,aAAA4E,CAAch/D,EAAK2T,EAAI34B,EAAG+6E,EAAW9kE,GACnC,MAAMssE,EAAc1wE,KAAK0wE,YAAYviF,GAC/B0hF,EAAkB7vE,KAAK2wE,iBAAiBxiF,GACxC04E,EAAYziE,EAAQyiE,UACxBE,EAAW3iE,EAAQ2iE,SACnBj0B,EAAa1uC,EAAQ0uC,WACjB85B,EAAWhtD,GAAOxb,EAAQwoE,UAC1BwF,EAASpD,GAAYhvE,KAAM,OAAQoE,GACnCiuE,EAAYnJ,EAAU11E,EAAE4+E,GACxBE,EAAUzL,EAAY+F,EAAS55D,YAAc45D,EAAS55D,WAAa6zD,GAAa,EAAI,EACpF0L,EAASzrD,EAAGhiB,EAAIwtE,EACtB,GAAIluE,EAAQ4iE,cAAe,CACzB,MAAM4C,EAAc,CAClBhvD,OAAQtqB,KAAKE,IAAIu2E,EAAUF,GAAa,EACxCnsD,WAAYm1D,EAAgBn1D,WAC5BC,SAAUk1D,EAAgBl1D,SAC1Bc,YAAa,GAETqvB,EAAUo+B,EAAU38C,WAAW8lD,EAAWtL,GAAYA,EAAW,EACjEh8B,EAAUwnC,EAAS1L,EAAY,EACrC1zD,EAAIsK,YAAcrZ,EAAQouE,mBAC1Br/D,EAAIgK,UAAY/Y,EAAQouE,mBACxBr4D,GAAUhH,EAAKy2D,EAAa9+B,EAASC,GACrC53B,EAAIsK,YAAcizD,EAAYr+D,YAC9Bc,EAAIgK,UAAYuzD,EAAYt+D,gBAC5B+H,GAAUhH,EAAKy2D,EAAa9+B,EAASC,EACvC,KAAO,CACL53B,EAAI0D,UAAY1U,EAASuuE,EAAYj1D,aAAenrB,KAAKC,OAAO1B,OAAO4hB,OAAOigE,EAAYj1D,cAAgBi1D,EAAYj1D,aAAe,EACrItI,EAAIsK,YAAcizD,EAAYr+D,YAC9Bc,EAAI8yC,YAAYyqB,EAAYjhD,YAAc,IAC1Ctc,EAAI+yC,eAAiBwqB,EAAYhhD,kBAAoB,EACrD,MAAM+iD,EAASvJ,EAAU38C,WAAW8lD,EAAWtL,EAAWj0B,GACpD4/B,EAASxJ,EAAU38C,WAAW28C,EAAU58C,MAAM+lD,EAAW,GAAItL,EAAWj0B,EAAa,GACrFmjB,EAAev2C,GAAcgxD,EAAYza,cAC3CpnE,OAAO4hB,OAAOwlD,GAAc1K,MAAKp7D,GAAW,IAANA,KACxCgjB,EAAI6H,YACJ7H,EAAIgK,UAAY/Y,EAAQouE,mBACxB/zD,GAAmBtL,EAAK,CACtB3f,EAAGi/E,EACH3tE,EAAGytE,EACHhgF,EAAGw0E,EACH12E,EAAGw2E,EACHjsD,OAAQq7C,IAEV9iD,EAAIqI,OACJrI,EAAIuI,SACJvI,EAAIgK,UAAYuzD,EAAYt+D,gBAC5Be,EAAI6H,YACJyD,GAAmBtL,EAAK,CACtB3f,EAAGk/E,EACH5tE,EAAGytE,EAAS,EACZhgF,EAAGw0E,EAAW,EACd12E,EAAGw2E,EAAY,EACfjsD,OAAQq7C,IAEV9iD,EAAIqI,SAEJrI,EAAIgK,UAAY/Y,EAAQouE,mBACxBr/D,EAAIqL,SAASi0D,EAAQF,EAAQxL,EAAUF,GACvC1zD,EAAIw/D,WAAWF,EAAQF,EAAQxL,EAAUF,GACzC1zD,EAAIgK,UAAYuzD,EAAYt+D,gBAC5Be,EAAIqL,SAASk0D,EAAQH,EAAS,EAAGxL,EAAW,EAAGF,EAAY,GAE/D,CACA1zD,EAAIgK,UAAYnd,KAAK4wE,gBAAgBziF,EACvC,CACA,QAAAykF,CAAS9rD,EAAI3T,EAAK/O,GAChB,MAAMsoE,EAAO1sE,KAAK0sE,KACZgB,EAActpE,EAAQspE,YAC1BmF,EAAYzuE,EAAQyuE,UACpBpF,EAAgBrpE,EAAQqpE,cACxB5G,EAAYziE,EAAQyiE,UACpBE,EAAW3iE,EAAQ2iE,SACnBj0B,EAAa1uC,EAAQ0uC,WACjB85B,EAAWhtD,GAAOxb,EAAQwoE,UAChC,IAAIkG,EAAiBlG,EAAS55D,WAC1B+/D,EAAe,EACnB,MAAM7J,EAAYh9C,GAAc9nB,EAAQ+nB,IAAKnsB,KAAKxM,EAAGwM,KAAKuX,OACpDy7D,EAAiB,SAAU/1D,GAC/B9J,EAAIyK,SAASX,EAAMisD,EAAU11E,EAAEszB,EAAGtzB,EAAIu/E,GAAejsD,EAAGhiB,EAAIguE,EAAiB,GAC7EhsD,EAAGhiB,GAAKguE,EAAiBpF,CAC3B,EACMuF,EAA0B/J,EAAU9rD,UAAUy1D,GACpD,IAAI3F,EAAUgG,EAAWp2D,EAAO3uB,EAAGmQ,EAAGmF,EAAM2V,EAQ5C,IAPAjG,EAAIiK,UAAYy1D,EAChB1/D,EAAIkK,aAAe,SACnBlK,EAAIN,KAAO+5D,EAASh0D,OACpBkO,EAAGtzB,EAAIw7E,GAAYhvE,KAAMizE,EAAyB7uE,GAClD+O,EAAIgK,UAAY/Y,EAAQwrE,UACxBzsE,EAAKnD,KAAKqtE,WAAY2F,GACtBD,EAAetF,GAA6C,UAA5BwF,EAAoD,WAAdJ,EAAyB9L,EAAW,EAAIj0B,EAAai0B,EAAW,EAAIj0B,EAAa,EAClJ3kD,EAAI,EAAGsV,EAAOipE,EAAKt6E,OAAQjE,EAAIsV,IAAQtV,EAAG,CAU7C,IATA++E,EAAWR,EAAKv+E,GAChB+kF,EAAYlzE,KAAK4wE,gBAAgBziF,GACjCglB,EAAIgK,UAAY+1D,EAChB/vE,EAAK+pE,EAASC,OAAQ6F,GACtBl2D,EAAQowD,EAASpwD,MACb2wD,GAAiB3wD,EAAM1qB,SACzB4N,KAAKmyE,cAAch/D,EAAK2T,EAAI34B,EAAG+6E,EAAW9kE,GAC1C0uE,EAAiBxiF,KAAKC,IAAIq8E,EAAS55D,WAAY6zD,IAE5CvoE,EAAI,EAAG8a,EAAO0D,EAAM1qB,OAAQkM,EAAI8a,IAAQ9a,EAC3C00E,EAAel2D,EAAMxe,IACrBw0E,EAAiBlG,EAAS55D,WAE5B7P,EAAK+pE,EAASE,MAAO4F,EACvB,CACAD,EAAe,EACfD,EAAiBlG,EAAS55D,WAC1B7P,EAAKnD,KAAKstE,UAAW0F,GACrBlsD,EAAGhiB,GAAK4oE,CACV,CACA,UAAAyF,CAAWrsD,EAAI3T,EAAK/O,GAClB,MAAMuoE,EAAS3sE,KAAK2sE,OACdv6E,EAASu6E,EAAOv6E,OACtB,IAAIy6E,EAAY1+E,EAChB,GAAIiE,EAAQ,CACV,MAAM82E,EAAYh9C,GAAc9nB,EAAQ+nB,IAAKnsB,KAAKxM,EAAGwM,KAAKuX,OAQ1D,IAPAuP,EAAGtzB,EAAIw7E,GAAYhvE,KAAMoE,EAAQgvE,YAAahvE,GAC9C0iB,EAAGhiB,GAAKV,EAAQupE,gBAChBx6D,EAAIiK,UAAY8rD,EAAU9rD,UAAUhZ,EAAQgvE,aAC5CjgE,EAAIkK,aAAe,SACnBwvD,EAAajtD,GAAOxb,EAAQyoE,YAC5B15D,EAAIgK,UAAY/Y,EAAQivE,YACxBlgE,EAAIN,KAAOg6D,EAAWj0D,OACjBzqB,EAAI,EAAGA,EAAIiE,IAAUjE,EACxBglB,EAAIyK,SAAS+uD,EAAOx+E,GAAI+6E,EAAU11E,EAAEszB,EAAGtzB,GAAIszB,EAAGhiB,EAAI+nE,EAAW75D,WAAa,GAC1E8T,EAAGhiB,GAAK+nE,EAAW75D,WAAa5O,EAAQwpE,aAE5C,CACF,CACA,cAAA/nB,CAAe/+B,EAAI3T,EAAKmgE,EAAalvE,GACnC,MAAM+pE,EAASnuE,KAAKmuE,OAClBH,EAAShuE,KAAKguE,OACVx6E,EAAIszB,EAAGtzB,EACXsR,EAAIgiB,EAAGhiB,EACHyS,EAAQ+7D,EAAY/7D,MACxB2C,EAASo5D,EAAYp5D,OACjBq5D,EAAkB7zD,GAActb,EAAQmW,cAC5CmE,EAAU60D,EAAgB70D,QAC1BG,EAAW00D,EAAgB10D,SAC3BF,EAAa40D,EAAgB50D,WAC7BC,EAAc20D,EAAgB30D,YAChCzL,EAAIgK,UAAY/Y,EAAQgO,gBACxBe,EAAIsK,YAAcrZ,EAAQiO,YAC1Bc,EAAI0D,UAAYzS,EAAQqX,YACxBtI,EAAI6H,YACJ7H,EAAIiI,OAAO5nB,EAAIkrB,EAAS5Z,GACT,QAAXkpE,GACFhuE,KAAKyxE,UAAU3qD,EAAI3T,EAAKmgE,EAAalvE,GAEvC+O,EAAIkI,OAAO7nB,EAAI+jB,EAAQsH,EAAU/Z,GACjCqO,EAAIqgE,iBAAiBhgF,EAAI+jB,EAAOzS,EAAGtR,EAAI+jB,EAAOzS,EAAI+Z,GACnC,WAAXmvD,GAAkC,UAAXG,GACzBnuE,KAAKyxE,UAAU3qD,EAAI3T,EAAKmgE,EAAalvE,GAEvC+O,EAAIkI,OAAO7nB,EAAI+jB,EAAOzS,EAAIoV,EAAS0E,GACnCzL,EAAIqgE,iBAAiBhgF,EAAI+jB,EAAOzS,EAAIoV,EAAQ1mB,EAAI+jB,EAAQqH,EAAa9Z,EAAIoV,GAC1D,WAAX8zD,GACFhuE,KAAKyxE,UAAU3qD,EAAI3T,EAAKmgE,EAAalvE,GAEvC+O,EAAIkI,OAAO7nB,EAAImrB,EAAY7Z,EAAIoV,GAC/B/G,EAAIqgE,iBAAiBhgF,EAAGsR,EAAIoV,EAAQ1mB,EAAGsR,EAAIoV,EAASyE,GACrC,WAAXqvD,GAAkC,SAAXG,GACzBnuE,KAAKyxE,UAAU3qD,EAAI3T,EAAKmgE,EAAalvE,GAEvC+O,EAAIkI,OAAO7nB,EAAGsR,EAAI4Z,GAClBvL,EAAIqgE,iBAAiBhgF,EAAGsR,EAAGtR,EAAIkrB,EAAS5Z,GACxCqO,EAAIgI,YACJhI,EAAIqI,OACApX,EAAQqX,YAAc,GACxBtI,EAAIuI,QAER,CACA,sBAAA+3D,CAAuBrvE,GACrB,MAAMyM,EAAQ7Q,KAAK6Q,MACbyhB,EAAQtyB,KAAKu2B,YACbm9C,EAAQphD,GAASA,EAAM9+B,EACvBmgF,EAAQrhD,GAASA,EAAMxtB,EAC7B,GAAI4uE,GAASC,EAAO,CAClB,MAAM7jC,EAAW+7B,GAAYznE,EAAQ0rC,UAAUxhD,KAAK0R,KAAMA,KAAKmzB,QAASnzB,KAAKmwE,gBAC7E,IAAKrgC,EACH,OAEF,MAAMlqC,EAAO5F,KAAKowE,MAAQ5D,GAAexsE,KAAMoE,GACzCktE,EAAkBziF,OAAOwQ,OAAO,CAAC,EAAGywC,EAAU9vC,KAAKowE,OACnDzB,EAAYH,GAAmB39D,EAAOzM,EAASktE,GAC/C11D,EAAQ8yD,GAAmBtqE,EAASktE,EAAiB3C,EAAW99D,GAClE6iE,EAAMv+C,MAAQvZ,EAAMpoB,GAAKmgF,EAAMx+C,MAAQvZ,EAAM9W,IAC/C9E,KAAKmuE,OAASQ,EAAUR,OACxBnuE,KAAKguE,OAASW,EAAUX,OACxBhuE,KAAKuX,MAAQ3R,EAAK2R,MAClBvX,KAAKka,OAAStU,EAAKsU,OACnBla,KAAKwwE,OAAS1gC,EAASt8C,EACvBwM,KAAKywE,OAAS3gC,EAAShrC,EACvB9E,KAAKmgC,qBAAqB9K,OAAOr1B,KAAM4b,GAE3C,CACF,CACA,WAAAg4D,GACE,QAAS5zE,KAAKkwE,OAChB,CACA,IAAAh9C,CAAK/f,GACH,MAAM/O,EAAUpE,KAAKoE,QAAQqe,WAAWziB,KAAK+Z,cAC7C,IAAIm2D,EAAUlwE,KAAKkwE,QACnB,IAAKA,EACH,OAEFlwE,KAAKyzE,uBAAuBrvE,GAC5B,MAAMkvE,EAAc,CAClB/7D,MAAOvX,KAAKuX,MACZ2C,OAAQla,KAAKka,QAET4M,EAAK,CACTtzB,EAAGwM,KAAKxM,EACRsR,EAAG9E,KAAK8E,GAEVorE,EAAU5/E,KAAKsW,IAAIspE,GAAW,KAAO,EAAIA,EACzC,MAAMh6D,EAAUyJ,GAAUvb,EAAQ8R,SAC5B29D,EAAoB7zE,KAAKwX,MAAMplB,QAAU4N,KAAKqtE,WAAWj7E,QAAU4N,KAAK0sE,KAAKt6E,QAAU4N,KAAKstE,UAAUl7E,QAAU4N,KAAK2sE,OAAOv6E,OAC9HgS,EAAQw2C,SAAWi5B,IACrB1gE,EAAIgG,OACJhG,EAAI2gE,YAAc5D,EAClBlwE,KAAK6lD,eAAe/+B,EAAI3T,EAAKmgE,EAAalvE,GAC1CuoB,GAAsBxZ,EAAK/O,EAAQslE,eACnC5iD,EAAGhiB,GAAKoR,EAAQC,IAChBnW,KAAKwmD,UAAU1/B,EAAI3T,EAAK/O,GACxBpE,KAAK4yE,SAAS9rD,EAAI3T,EAAK/O,GACvBpE,KAAKmzE,WAAWrsD,EAAI3T,EAAK/O,GACzB6oB,GAAqB9Z,EAAK/O,EAAQslE,eAClCv2D,EAAIoG,UAER,CACA,iBAAAq7C,GACE,OAAO50D,KAAKmzB,SAAW,EACzB,CACA,iBAAA0hC,CAAkBC,EAAgBiX,GAChC,MAAMhX,EAAa/0D,KAAKmzB,QAClBxd,EAASm/C,EAAehiE,KAAIihF,IAChC,IAAInwE,EAAemwE,EAAOnwE,aACxBC,EAAQkwE,EAAOlwE,MACjB,MAAM6H,EAAO1L,KAAK6Q,MAAM6qB,eAAe93B,GACvC,IAAK8H,EACH,MAAM,IAAImX,MAAM,kCAAoCjf,GAEtD,MAAO,CACLA,eACAwkB,QAAS1c,EAAK+M,KAAK5U,GACnBA,QACD,IAEGoJ,GAAW3J,EAAeyxD,EAAYp/C,GACtCq+D,EAAkBh0E,KAAKi0E,iBAAiBt+D,EAAQo2D,IAClD9+D,GAAW+mE,KACbh0E,KAAKmzB,QAAUxd,EACf3V,KAAKmwE,eAAiBpE,EACtB/rE,KAAKk0E,qBAAsB,EAC3Bl0E,KAAKq1B,QAAO,GAEhB,CACA,WAAAm1C,CAAYl5E,EAAG4jE,GACb,IAAII,IAAcnjE,UAAUC,OAAS,QAAsBL,IAAjBI,UAAU,KAAmBA,UAAU,GACjF,GAAI+iE,GAAUl1D,KAAKk0E,oBACjB,OAAO,EAETl0E,KAAKk0E,qBAAsB,EAC3B,MAAM9vE,EAAUpE,KAAKoE,QACf2wD,EAAa/0D,KAAKmzB,SAAW,GAC7Bxd,EAAS3V,KAAK01D,mBAAmBpkE,EAAGyjE,EAAYG,EAAQI,GACxD0e,EAAkBh0E,KAAKi0E,iBAAiBt+D,EAAQrkB,GAChD2b,EAAUioD,IAAW5xD,EAAeqS,EAAQo/C,IAAeif,EAWjE,OAVI/mE,IACFjN,KAAKmzB,QAAUxd,GACXvR,EAAQw2C,SAAWx2C,EAAQotE,YAC7BxxE,KAAKmwE,eAAiB,CACpB38E,EAAGlC,EAAEkC,EACLsR,EAAGxT,EAAEwT,GAEP9E,KAAKq1B,QAAO,EAAM6/B,KAGfjoD,CACT,CACA,kBAAAyoD,CAAmBpkE,EAAGyjE,EAAYG,EAAQI,GACxC,MAAMlxD,EAAUpE,KAAKoE,QACrB,GAAe,aAAX9S,EAAEuO,KACJ,MAAO,GAET,IAAKy1D,EACH,OAAOP,EAET,MAAMp/C,EAAS3V,KAAK6Q,MAAMkjD,0BAA0BziE,EAAG8S,EAAQ9U,KAAM8U,EAAS8wD,GAI9E,OAHI9wD,EAAQf,SACVsS,EAAOtS,UAEFsS,CACT,CACA,gBAAAs+D,CAAiBt+D,EAAQrkB,GACvB,MAAMk/E,EAASxwE,KAAKwwE,OAClBC,EAASzwE,KAAKywE,OACdrsE,EAAUpE,KAAKoE,QACX0rC,EAAW+7B,GAAYznE,EAAQ0rC,UAAUxhD,KAAK0R,KAAM2V,EAAQrkB,GAClE,OAAoB,IAAbw+C,IAAuB0gC,IAAW1gC,EAASt8C,GAAKi9E,IAAW3gC,EAAShrC,EAC7E,EAEF,GAAQ+mE,YAAcA,GACtB,IAAIsI,GAAiB,CACnBpyE,GAAI,UACJ+oE,SAAU,GACVe,eACA,SAAAuI,CAAUvjE,EAAO2uD,EAAOp7D,GAClBA,IACFyM,EAAM47D,QAAU,IAAI,GAAQ,CAC1B57D,QACAzM,YAGN,EACA,YAAAi6C,CAAaxtC,EAAO2uD,EAAOp7D,GACrByM,EAAM47D,SACR57D,EAAM47D,QAAQpyC,WAAWj2B,EAE7B,EACA,KAAAy3B,CAAMhrB,EAAO2uD,EAAOp7D,GACdyM,EAAM47D,SACR57D,EAAM47D,QAAQpyC,WAAWj2B,EAE7B,EACA,SAAAiwE,CAAUxjE,GACR,MAAM47D,EAAU57D,EAAM47D,QACtB,GAAIA,GAAWA,EAAQmH,cAAe,CACpC,MAAM5wE,EAAO,CACXypE,WAEF,IAEQ,IAFJ57D,EAAMqvC,cAAc,oBAAqBlwB,GAAcA,GAAc,CAAC,EAAGhtB,GAAO,CAAC,EAAG,CACtF2nD,YAAY,KAEZ,OAEF8hB,EAAQv5C,KAAKriB,EAAMsC,KACnBtC,EAAMqvC,cAAc,mBAAoBl9C,EAC1C,CACF,EACA,UAAA+nE,CAAWl6D,EAAO7N,GAChB,GAAI6N,EAAM47D,QAAS,CACjB,MAAMr8B,EAAmBptC,EAAKkyD,OAC1BrkD,EAAM47D,QAAQjC,YAAYxnE,EAAKgmB,MAAOonB,EAAkBptC,EAAKsyD,eAC/DtyD,EAAKiK,SAAU,EAEnB,CACF,EACA+H,SAAU,CACR4lC,SAAS,EACT42B,SAAU,KACV1hC,SAAU,UACV19B,gBAAiB,kBACjB8/D,WAAY,OACZhI,UAAW,CACTzpE,OAAQ,QAEV8sE,aAAc,EACdC,kBAAmB,EACnBhxB,WAAY,OACZozB,UAAW,OACXlC,YAAa,EACbd,SAAU,CAAC,EACXiG,UAAW,OACXQ,YAAa,OACbzF,cAAe,EACfD,gBAAiB,EACjBd,WAAY,CACVpsE,OAAQ,QAEV2yE,YAAa,OACbl9D,QAAS,EACTo4D,aAAc,EACdD,UAAW,EACX9zD,aAAc,EACdssD,UAAW,CAAC1zD,EAAK0J,IAASA,EAAK+vD,SAAShnE,KACxCmhE,SAAU,CAAC5zD,EAAK0J,IAASA,EAAK+vD,SAAShnE,KACvC4sE,mBAAoB,OACpB/E,eAAe,EACf36B,WAAY,EACZzgC,YAAa,gBACboJ,YAAa,EACbtJ,UAAW,CACTmD,SAAU,IACVC,OAAQ,gBAEVO,WAAY,CACVrG,QAAS,CACP5P,KAAM,SACN6V,WAAY,CAAC,IAAK,IAAK,QAAS,SAAU,SAAU,WAEtDw6D,QAAS,CACP36D,OAAQ,SACRD,SAAU,MAGdkd,UAAW28C,IAEbxzB,cAAe,CACbixB,SAAU,OACVC,WAAY,OACZ3C,UAAW,QAEbvnD,YAAa,CACX1N,YAAavmB,GAAiB,WAATA,GAA8B,aAATA,GAAgC,aAATA,EACjEymB,YAAY,EACZqd,UAAW,CACTvd,aAAa,EACbE,YAAY,GAEdhD,UAAW,CACTiD,WAAW,GAEbU,WAAY,CACVV,UAAW,cAGfm4C,uBAAwB,CAAC,gBAEvB,GAAuB1+D,OAAOqxC,OAAO,CACvCqO,UAAW,KACX+lC,OAAQhV,GACRiV,WAAYzU,GACZ0U,OAAQ,GACRC,OAAQ5J,GACR6J,SAAU9I,GACV+I,MAAOnJ,GACPoJ,QAAST,KAcX,SAASU,GAAez3C,EAAQqC,EAAK57B,EAAOixE,GAC1C,MAAM/5B,EAAQ3d,EAAOl5B,QAAQu7B,GAC7B,IAAe,IAAXsb,EACF,MAfgB,EAAC3d,EAAQqC,EAAK57B,EAAOixE,KACpB,kBAARr1C,GACT57B,EAAQu5B,EAAOh4B,KAAKq6B,GAAO,EAC3Bq1C,EAAYpR,QAAQ,CAClB7/D,QACAk7B,MAAOU,KAEAp4B,MAAMo4B,KACf57B,EAAQ,MAEHA,GAKEkxE,CAAY33C,EAAQqC,EAAK57B,EAAOixE,GAGzC,OAAO/5B,IADM3d,EAAO43C,YAAYv1C,GACR57B,EAAQk3C,CAClC,CAEA,SAASk6B,GAAkB7lF,GACzB,MAAMguC,EAASp9B,KAAKq9B,YACpB,OAAIjuC,GAAS,GAAKA,EAAQguC,EAAOhrC,OACxBgrC,EAAOhuC,GAETA,CACT,CACA,MAAM,WAAsB,GAC1B,WAAAwQ,CAAY80B,GACVsQ,MAAMtQ,GACN10B,KAAKk1E,iBAAcnjF,EACnBiO,KAAKm1E,YAAc,EACnBn1E,KAAKo1E,aAAe,EACtB,CACA,IAAAnmC,CAAK4c,GACH,MAAMwpB,EAAQr1E,KAAKo1E,aACnB,GAAIC,EAAMjjF,OAAQ,CAChB,MAAMgrC,EAASp9B,KAAKq9B,YACpB,IAAK,MAAMi4C,KAAUD,EAAO,CAC1B,MAAMxxE,EAAQyxE,EAAOzxE,MACfk7B,EAAQu2C,EAAOv2C,MACjB3B,EAAOv5B,KAAWk7B,GACpB3B,EAAO9yB,OAAOzG,EAAO,EAEzB,CACA7D,KAAKo1E,aAAe,EACtB,CACApwC,MAAMiK,KAAK4c,EACb,CACA,KAAAjnC,CAAM6a,EAAK57B,GACT,GAAI7B,EAAcy9B,GAChB,OAAO,KAET,MAAMrC,EAASp9B,KAAKq9B,YAEpB,MApCe,EAACx5B,EAAOtT,IAAkB,OAAVsT,EAAiB,KAAOuF,GAAY9Y,KAAK0W,MAAMnD,GAAQ,EAAGtT,GAoClF6rD,CADPv4C,EAAQvB,SAASuB,IAAUu5B,EAAOv5B,KAAW47B,EAAM57B,EAAQgxE,GAAez3C,EAAQqC,EAAKh9B,EAAeoB,EAAO47B,GAAMz/B,KAAKo1E,cAC/Fh4C,EAAOhrC,OAAS,EAC3C,CACA,mBAAAwsD,GACE,MAAM22B,EAAuBv1E,KAAKoM,gBAChCC,EAAakpE,EAAqBlpE,WAClCC,EAAaipE,EAAqBjpE,WACpC,IAAIkpE,EAAkBx1E,KAAKi+B,WAAU,GACnCztC,EAAMglF,EAAgBhlF,IACtBD,EAAMilF,EAAgBjlF,IACI,UAAxByP,KAAKoE,QAAQsS,SACVrK,IACH7b,EAAM,GAEH8b,IACH/b,EAAMyP,KAAKq9B,YAAYjrC,OAAS,IAGpC4N,KAAKxP,IAAMA,EACXwP,KAAKzP,IAAMA,CACb,CACA,UAAA2uD,GACE,MAAM1uD,EAAMwP,KAAKxP,IACXD,EAAMyP,KAAKzP,IACXimB,EAASxW,KAAKoE,QAAQoS,OACtB5F,EAAQ,GACd,IAAIwsB,EAASp9B,KAAKq9B,YAClBD,EAAiB,IAAR5sC,GAAaD,IAAQ6sC,EAAOhrC,OAAS,EAAIgrC,EAASA,EAAOl7B,MAAM1R,EAAKD,EAAM,GACnFyP,KAAKm1E,YAAc7kF,KAAKC,IAAI6sC,EAAOhrC,QAAUokB,EAAS,EAAI,GAAI,GAC9DxW,KAAKk1E,YAAcl1E,KAAKxP,KAAOgmB,EAAS,GAAM,GAC9C,IAAK,IAAIpnB,EAAQoB,EAAKpB,GAASmB,EAAKnB,IAClCwhB,EAAMxL,KAAK,CACThW,UAGJ,OAAOwhB,CACT,CACA,gBAAAouB,CAAiB5vC,GACf,OAAO6lF,GAAkB3mF,KAAK0R,KAAM5Q,EACtC,CACA,SAAA2mC,GACEiP,MAAMjP,YACD/1B,KAAKmlC,iBACRnlC,KAAK2vC,gBAAkB3vC,KAAK2vC,eAEhC,CACA,gBAAApjC,CAAiBnd,GAIf,MAHqB,kBAAVA,IACTA,EAAQ4Q,KAAK4kB,MAAMx1B,IAEJ,OAAVA,EAAiB4uC,IAAMh+B,KAAKknC,oBAAoB93C,EAAQ4Q,KAAKk1E,aAAel1E,KAAKm1E,YAC1F,CACA,eAAAlyC,CAAgBp/B,GACd,MAAM+M,EAAQ5Q,KAAK4Q,MACnB,OAAI/M,EAAQ,GAAKA,EAAQ+M,EAAMxe,OAAS,EAC/B,KAEF4N,KAAKuM,iBAAiBqE,EAAM/M,GAAOzU,MAC5C,CACA,gBAAAg4C,CAAiB1tB,GACf,OAAOppB,KAAK0W,MAAMhH,KAAKk1E,YAAcl1E,KAAKgjD,mBAAmBtpC,GAAS1Z,KAAKm1E,YAC7E,CACA,YAAAjwC,GACE,OAAOllC,KAAKqW,MACd,EAQF,SAASo/D,GAAgBC,EAAmBC,GAC1C,MAAM/kE,EAAQ,GAER8F,EAASg/D,EAAkBh/D,OAC/B+tC,EAAOixB,EAAkBjxB,KACzBj0D,EAAMklF,EAAkBllF,IACxBD,EAAMmlF,EAAkBnlF,IACxBqlF,EAAYF,EAAkBE,UAC9B9pE,EAAQ4pE,EAAkB5pE,MAC1B+pE,EAAWH,EAAkBG,SAC7BC,EAAYJ,EAAkBI,UAC9BC,EAAgBL,EAAkBK,cAC9BC,EAAOvxB,GAAQ,EACfwxB,EAAYJ,EAAW,EACvBK,EAAOP,EAAUnlF,IACrB2lF,EAAOR,EAAUplF,IACb8b,GAAcrK,EAAcxR,GAC5B8b,GAActK,EAAczR,GAC5B6lF,GAAgBp0E,EAAc8J,GAC9BuqE,GAAcF,EAAOD,IAASJ,EAAY,GAChD,IACIvhD,EAAQ+hD,EAASC,EAASC,EAD1B5tC,EAAU/hC,IAASsvE,EAAOD,GAAQD,EAAYD,GAAQA,EAE1D,GAAIptC,EApBgB,QAoBUv8B,IAAeC,EAC3C,MAAO,CAAC,CACNld,MAAO8mF,GACN,CACD9mF,MAAO+mF,IAGXK,EAAYlmF,KAAK2qD,KAAKk7B,EAAOvtC,GAAWt4C,KAAK4W,MAAMgvE,EAAOttC,GACtD4tC,EAAYP,IACdrtC,EAAU/hC,GAAQ2vE,EAAY5tC,EAAUqtC,EAAYD,GAAQA,GAEzDh0E,EAAc4zE,KACjBrhD,EAASjkC,KAAKyO,IAAI,GAAI62E,GACtBhtC,EAAUt4C,KAAK2qD,KAAKrS,EAAUrU,GAAUA,GAE3B,UAAX7d,GACF4/D,EAAUhmF,KAAK4W,MAAMgvE,EAAOttC,GAAWA,EACvC2tC,EAAUjmF,KAAK2qD,KAAKk7B,EAAOvtC,GAAWA,IAEtC0tC,EAAUJ,EACVK,EAAUJ,GAER9pE,GAAcC,GAAcm4C,GDnhTlC,SAAqBjxD,EAAGmT,GACtB,MAAM8vE,EAAUnmF,KAAK0W,MAAMxT,GAC3B,OAAOijF,EAAU9vE,GAAWnT,GAAKijF,EAAU9vE,GAAWnT,CACxD,CCghT0CkjF,EAAanmF,EAAMC,GAAOi0D,EAAM7b,EAAU,MAChF4tC,EAAYlmF,KAAK0W,MAAM1W,KAAKE,KAAKD,EAAMC,GAAOo4C,EAASitC,IACvDjtC,GAAWr4C,EAAMC,GAAOgmF,EACxBF,EAAU9lF,EACV+lF,EAAUhmF,GACD6lF,GACTE,EAAUjqE,EAAa7b,EAAM8lF,EAC7BC,EAAUjqE,EAAa/b,EAAMgmF,EAC7BC,EAAY1qE,EAAQ,EACpB88B,GAAW2tC,EAAUD,GAAWE,IAEhCA,GAAaD,EAAUD,GAAW1tC,EAEhC4tC,EADE9vE,GAAa8vE,EAAWlmF,KAAK0W,MAAMwvE,GAAY5tC,EAAU,KAC/Ct4C,KAAK0W,MAAMwvE,GAEXlmF,KAAK2qD,KAAKu7B,IAG1B,MAAMG,EAAgBrmF,KAAKC,IAAIqX,GAAeghC,GAAUhhC,GAAe0uE,IACvE/hD,EAASjkC,KAAKyO,IAAI,GAAIiD,EAAc4zE,GAAae,EAAgBf,GACjEU,EAAUhmF,KAAK0W,MAAMsvE,EAAU/hD,GAAUA,EACzCgiD,EAAUjmF,KAAK0W,MAAMuvE,EAAUhiD,GAAUA,EACzC,IAAIj2B,EAAI,EAgBR,IAfI+N,IACE0pE,GAAiBO,IAAY9lF,GAC/BogB,EAAMxL,KAAK,CACThW,MAAOoB,IAEL8lF,EAAU9lF,GACZ8N,IAEEoI,GAAapW,KAAK0W,OAAOsvE,EAAUh4E,EAAIsqC,GAAWrU,GAAUA,EAAQ/jC,EAAKomF,GAAkBpmF,EAAK6lF,EAAYX,KAC9Gp3E,KAEOg4E,EAAU9lF,GACnB8N,KAGGA,EAAIk4E,IAAal4E,EACtBsS,EAAMxL,KAAK,CACThW,MAAOkB,KAAK0W,OAAOsvE,EAAUh4E,EAAIsqC,GAAWrU,GAAUA,IAgB1D,OAbIjoB,GAAcypE,GAAiBQ,IAAYhmF,EACzCqgB,EAAMxe,QAAUsU,GAAakK,EAAMA,EAAMxe,OAAS,GAAGhD,MAAOmB,EAAKqmF,GAAkBrmF,EAAK8lF,EAAYX,IACtG9kE,EAAMA,EAAMxe,OAAS,GAAGhD,MAAQmB,EAEhCqgB,EAAMxL,KAAK,CACThW,MAAOmB,IAGD+b,GAAciqE,IAAYhmF,GACpCqgB,EAAMxL,KAAK,CACThW,MAAOmnF,IAGJ3lE,CACT,CACA,SAASgmE,GAAkBxnF,EAAOinF,EAAYQ,GAC5C,IAAI5yC,EAAa4yC,EAAO5yC,WAExB,MAAMppB,EAAMrT,GADIqvE,EAAOn/D,aAEjBzY,GAASglC,EAAa3zC,KAAK8c,IAAIyN,GAAOvqB,KAAK+d,IAAIwM,KAAS,KACxDzoB,EAAS,IAAOikF,GAAc,GAAKjnF,GAAOgD,OAChD,OAAO9B,KAAKE,IAAI6lF,EAAap3E,EAAO7M,EACtC,CAnHA,GAAc2P,GAAK,WACnB,GAAciT,SAAW,CACvBpE,MAAO,CACL9N,SAAUmyE,KAiHd,MAAM,WAAwB,GAC5B,WAAAr1E,CAAY80B,GACVsQ,MAAMtQ,GACN10B,KAAK6I,WAAQ9W,EACbiO,KAAK8I,SAAM/W,EACXiO,KAAKk1E,iBAAcnjF,EACnBiO,KAAK82E,eAAY/kF,EACjBiO,KAAKm1E,YAAc,CACrB,CACA,KAAAvwD,CAAM6a,EAAK57B,GACT,OAAI7B,EAAcy9B,KAGE,kBAARA,GAAoBA,aAAep9B,UAAYC,UAAUm9B,GAF5D,MAKDA,CACV,CACA,sBAAAs3C,GACE,MAAMtgE,EAAczW,KAAKoE,QAAQqS,YAC3BugE,EAAuBh3E,KAAKoM,gBAChCC,EAAa2qE,EAAqB3qE,WAClCC,EAAa0qE,EAAqB1qE,WACpC,IAAI9b,EAAMwP,KAAKxP,IACbD,EAAMyP,KAAKzP,IACb,MAAM0mF,EAAS9mF,GAAKK,EAAM6b,EAAa7b,EAAML,EACvC+mF,EAAS/mF,GAAKI,EAAM+b,EAAa/b,EAAMJ,EAC7C,GAAIsmB,EAAa,CACf,MAAM0gE,EAAU1wE,GAAKjW,GACf4mF,EAAU3wE,GAAKlW,GACjB4mF,EAAU,GAAKC,EAAU,EAC3BF,EAAO,GACEC,EAAU,GAAKC,EAAU,GAClCH,EAAO,EAEX,CACA,GAAIzmF,IAAQD,EAAK,CACf,IAAIimB,EAAiB,IAARjmB,EAAY,EAAID,KAAKsW,IAAU,IAANrW,GACtC2mF,EAAO3mF,EAAMimB,GACRC,GACHwgE,EAAOzmF,EAAMgmB,EAEjB,CACAxW,KAAKxP,IAAMA,EACXwP,KAAKzP,IAAMA,CACb,CACA,YAAA8mF,GACE,MAAMn9B,EAAWl6C,KAAKoE,QAAQwM,MAC9B,IAEIilE,EAFAn7B,EAAgBR,EAASQ,cAC3B48B,EAAWp9B,EAASo9B,SAetB,OAbIA,GACFzB,EAAWvlF,KAAK2qD,KAAKj7C,KAAKzP,IAAM+mF,GAAYhnF,KAAK4W,MAAMlH,KAAKxP,IAAM8mF,GAAY,EAC1EzB,EAAW,MACb/1D,QAAQC,KAAK,UAAU/f,KAAK+B,sBAAsBu1E,mCAA0CzB,8BAC5FA,EAAW,OAGbA,EAAW71E,KAAKu3E,mBAChB78B,EAAgBA,GAAiB,IAE/BA,IACFm7B,EAAWvlF,KAAKE,IAAIkqD,EAAem7B,IAE9BA,CACT,CACA,gBAAA0B,GACE,OAAOl1E,OAAO8D,iBAChB,CACA,UAAA+4C,GACE,MAAMriC,EAAO7c,KAAKoE,QACZ81C,EAAWr9B,EAAKjM,MACtB,IAAIilE,EAAW71E,KAAKq3E,eACpBxB,EAAWvlF,KAAKC,IAAI,EAAGslF,GACvB,MAcMjlE,EAAQ6kE,GAdkB,CAC9BI,WACAn/D,OAAQmG,EAAKnG,OACblmB,IAAKqsB,EAAKrsB,IACVD,IAAKssB,EAAKtsB,IACVqlF,UAAW17B,EAAS07B,UACpBnxB,KAAMvK,EAASo9B,SACfxrE,MAAOouC,EAASpuC,MAChBgqE,UAAW91E,KAAKknD,aAChBjjB,WAAYjkC,KAAKmlC,eACjBztB,YAAawiC,EAASxiC,aAAe,EACrCq+D,eAA0C,IAA3B77B,EAAS67B,eAER/1E,KAAKg9C,QAAUh9C,MAajC,MAXoB,UAAhB6c,EAAKnG,QACPpP,GAAmBsJ,EAAO5Q,KAAM,SAE9B6c,EAAKxZ,SACPuN,EAAMvN,UACNrD,KAAK6I,MAAQ7I,KAAKzP,IAClByP,KAAK8I,IAAM9I,KAAKxP,MAEhBwP,KAAK6I,MAAQ7I,KAAKxP,IAClBwP,KAAK8I,IAAM9I,KAAKzP,KAEXqgB,CACT,CACA,SAAAmlB,GACE,MAAMnlB,EAAQ5Q,KAAK4Q,MACnB,IAAI/H,EAAQ7I,KAAKxP,IACbsY,EAAM9I,KAAKzP,IAEf,GADAy0C,MAAMjP,YACF/1B,KAAKoE,QAAQoS,QAAU5F,EAAMxe,OAAQ,CACvC,MAAMokB,GAAU1N,EAAMD,GAASvY,KAAKC,IAAIqgB,EAAMxe,OAAS,EAAG,GAAK,EAC/DyW,GAAS2N,EACT1N,GAAO0N,CACT,CACAxW,KAAKk1E,YAAcrsE,EACnB7I,KAAK82E,UAAYhuE,EACjB9I,KAAKm1E,YAAcrsE,EAAMD,CAC3B,CACA,gBAAAm2B,CAAiB5vC,GACf,OAAOygB,GAAazgB,EAAO4Q,KAAK6Q,MAAMzM,QAAQ2L,OAAQ/P,KAAKoE,QAAQwM,MAAML,OAC3E,EAEF,MAAM,WAAoB,GACxB,mBAAAquC,GACE,MAAM44B,EAAmBx3E,KAAKi+B,WAAU,GACtCztC,EAAMgnF,EAAiBhnF,IACvBD,EAAMinF,EAAiBjnF,IACzByP,KAAKxP,IAAM4R,EAAe5R,GAAOA,EAAM,EACvCwP,KAAKzP,IAAM6R,EAAe7R,GAAOA,EAAM,EACvCyP,KAAK+2E,wBACP,CACA,gBAAAQ,GACE,MAAMtzC,EAAajkC,KAAKmlC,eAClB/yC,EAAS6xC,EAAajkC,KAAKuX,MAAQvX,KAAKka,OACxCxC,EAAclQ,GAAUxH,KAAKoE,QAAQwM,MAAM8G,aAC3CzY,GAASglC,EAAa3zC,KAAK8c,IAAIsK,GAAepnB,KAAK+d,IAAIqJ,KAAiB,KACxE6qC,EAAWviD,KAAK4iD,wBAAwB,GAC9C,OAAOtyD,KAAK2qD,KAAK7oD,EAAS9B,KAAKE,IAAI,GAAI+xD,EAASvvC,WAAa/T,GAC/D,CACA,gBAAAsN,CAAiBnd,GACf,OAAiB,OAAVA,EAAiB4uC,IAAMh+B,KAAKknC,oBAAoB93C,EAAQ4Q,KAAKk1E,aAAel1E,KAAKm1E,YAC1F,CACA,gBAAA/tC,CAAiB1tB,GACf,OAAO1Z,KAAKk1E,YAAcl1E,KAAKgjD,mBAAmBtpC,GAAS1Z,KAAKm1E,WAClE,EAEF,GAAYpzE,GAAK,SACjB,GAAYiT,SAAW,CACrBpE,MAAO,CACL9N,SAAU4O,GAAMlB,WAAWE,UAG/B,MAAM+mE,GAAatnF,GAAKG,KAAK4W,MAAMV,GAAMrW,IACnCunF,GAAiB,CAACvnF,EAAG5B,IAAM+B,KAAKyO,IAAI,GAAI04E,GAAWtnF,GAAK5B,GAC9D,SAASopF,GAAQC,GAEf,OAAkB,IADHA,EAAUtnF,KAAKyO,IAAI,GAAI04E,GAAWG,GAEnD,CACA,SAASC,GAAMrnF,EAAKD,EAAKunF,GACvB,MAAMC,EAAYznF,KAAKyO,IAAI,GAAI+4E,GACzBjvE,EAAQvY,KAAK4W,MAAM1W,EAAMunF,GAE/B,OADYznF,KAAK2qD,KAAK1qD,EAAMwnF,GACflvE,CACf,CAYA,SAASmvE,GAActC,EAAmBuC,GACxC,IAAIznF,EAAMynF,EAAOznF,IACfD,EAAM0nF,EAAO1nF,IACfC,EAAM+R,EAAgBmzE,EAAkBllF,IAAKA,GAC7C,MAAMogB,EAAQ,GACRsnE,EAAST,GAAWjnF,GAC1B,IAAI2nF,EAjBN,SAAkB3nF,EAAKD,GAErB,IAAIunF,EAAWL,GADDlnF,EAAMC,GAEpB,KAAOqnF,GAAMrnF,EAAKD,EAAKunF,GAAY,IACjCA,IAEF,KAAOD,GAAMrnF,EAAKD,EAAKunF,GAAY,IACjCA,IAEF,OAAOxnF,KAAKE,IAAIsnF,EAAUL,GAAWjnF,GACvC,CAOY4nF,CAAS5nF,EAAKD,GACpBqlF,EAAYuC,EAAM,EAAI7nF,KAAKyO,IAAI,GAAIzO,KAAKsW,IAAIuxE,IAAQ,EACxD,MAAMb,EAAWhnF,KAAKyO,IAAI,GAAIo5E,GACxBh8C,EAAO+7C,EAASC,EAAM7nF,KAAKyO,IAAI,GAAIm5E,GAAU,EAC7CrvE,EAAQvY,KAAK0W,OAAOxW,EAAM2rC,GAAQy5C,GAAaA,EAC/Cp/D,EAASlmB,KAAK4W,OAAO1W,EAAM2rC,GAAQm7C,EAAW,IAAMA,EAAW,GACrE,IAAI9lE,EAAclhB,KAAK4W,OAAO2B,EAAQ2N,GAAUlmB,KAAKyO,IAAI,GAAIo5E,IACzD/oF,EAAQmT,EAAgBmzE,EAAkBllF,IAAKF,KAAK0W,OAAOm1B,EAAO3lB,EAAShF,EAAclhB,KAAKyO,IAAI,GAAIo5E,IAAQvC,GAAaA,GAC/H,KAAOxmF,EAAQmB,GACbqgB,EAAMxL,KAAK,CACThW,QACA+oB,MAAOw/D,GAAQvoF,GACfoiB,gBAEEA,GAAe,GACjBA,EAAcA,EAAc,GAAK,GAAK,GAEtCA,IAEEA,GAAe,KACjB2mE,IACA3mE,EAAc,EACdokE,EAAYuC,GAAO,EAAI,EAAIvC,GAE7BxmF,EAAQkB,KAAK0W,OAAOm1B,EAAO3lB,EAAShF,EAAclhB,KAAKyO,IAAI,GAAIo5E,IAAQvC,GAAaA,EAEtF,MAAMyC,EAAW91E,EAAgBmzE,EAAkBnlF,IAAKnB,GAMxD,OALAwhB,EAAMxL,KAAK,CACThW,MAAOipF,EACPlgE,MAAOw/D,GAAQU,GACf7mE,gBAEKZ,CACT,CACA,MAAM,WAAyB,GAC7B,WAAAhR,CAAY80B,GACVsQ,MAAMtQ,GACN10B,KAAK6I,WAAQ9W,EACbiO,KAAK8I,SAAM/W,EACXiO,KAAKk1E,iBAAcnjF,EACnBiO,KAAKm1E,YAAc,CACrB,CACA,KAAAvwD,CAAM6a,EAAK57B,GACT,MAAMzU,EAAQ,GAAgBW,UAAU60B,MAAM1hB,MAAMlD,KAAM,CAACy/B,EAAK57B,IAChE,GAAc,IAAVzU,EAIJ,OAAOgT,EAAehT,IAAUA,EAAQ,EAAIA,EAAQ,KAHlD4Q,KAAKs4E,OAAQ,CAIjB,CACA,mBAAA15B,GACE,MAAM25B,EAAmBv4E,KAAKi+B,WAAU,GACtCztC,EAAM+nF,EAAiB/nF,IACvBD,EAAMgoF,EAAiBhoF,IACzByP,KAAKxP,IAAM4R,EAAe5R,GAAOF,KAAKC,IAAI,EAAGC,GAAO,KACpDwP,KAAKzP,IAAM6R,EAAe7R,GAAOD,KAAKC,IAAI,EAAGA,GAAO,KAChDyP,KAAKoE,QAAQqS,cACfzW,KAAKs4E,OAAQ,GAEXt4E,KAAKs4E,OAASt4E,KAAKxP,MAAQwP,KAAKw9C,gBAAkBp7C,EAAepC,KAAKs9C,YACxEt9C,KAAKxP,IAAMA,IAAQknF,GAAe13E,KAAKxP,IAAK,GAAKknF,GAAe13E,KAAKxP,KAAM,GAAKknF,GAAe13E,KAAKxP,IAAK,IAE3GwP,KAAK+2E,wBACP,CACA,sBAAAA,GACE,MAAMyB,EAAuBx4E,KAAKoM,gBAChCC,EAAamsE,EAAqBnsE,WAClCC,EAAaksE,EAAqBlsE,WACpC,IAAI9b,EAAMwP,KAAKxP,IACXD,EAAMyP,KAAKzP,IACf,MAAM0mF,EAAS9mF,GAAKK,EAAM6b,EAAa7b,EAAML,EACvC+mF,EAAS/mF,GAAKI,EAAM+b,EAAa/b,EAAMJ,EACzCK,IAAQD,IACNC,GAAO,GACTymF,EAAO,GACPC,EAAO,MAEPD,EAAOS,GAAelnF,GAAM,IAC5B0mF,EAAOQ,GAAennF,EAAK,MAG3BC,GAAO,GACTymF,EAAOS,GAAennF,GAAM,IAE1BA,GAAO,GACT2mF,EAAOQ,GAAelnF,EAAK,IAE7BwP,KAAKxP,IAAMA,EACXwP,KAAKzP,IAAMA,CACb,CACA,UAAA2uD,GACE,MAAMriC,EAAO7c,KAAKoE,QAKZwM,EAAQonE,GAJY,CACxBxnF,IAAKwP,KAAKs9C,SACV/sD,IAAKyP,KAAKq9C,UAEmCr9C,MAY/C,MAXoB,UAAhB6c,EAAKnG,QACPpP,GAAmBsJ,EAAO5Q,KAAM,SAE9B6c,EAAKxZ,SACPuN,EAAMvN,UACNrD,KAAK6I,MAAQ7I,KAAKzP,IAClByP,KAAK8I,IAAM9I,KAAKxP,MAEhBwP,KAAK6I,MAAQ7I,KAAKxP,IAClBwP,KAAK8I,IAAM9I,KAAKzP,KAEXqgB,CACT,CACA,gBAAAouB,CAAiB5vC,GACf,YAAiB2C,IAAV3C,EAAsB,IAAMygB,GAAazgB,EAAO4Q,KAAK6Q,MAAMzM,QAAQ2L,OAAQ/P,KAAKoE,QAAQwM,MAAML,OACvG,CACA,SAAAwlB,GACE,MAAMltB,EAAQ7I,KAAKxP,IACnBw0C,MAAMjP,YACN/1B,KAAKk1E,YAAc1uE,GAAMqC,GACzB7I,KAAKm1E,YAAc3uE,GAAMxG,KAAKzP,KAAOiW,GAAMqC,EAC7C,CACA,gBAAA0D,CAAiBnd,GAIf,YAHc2C,IAAV3C,GAAiC,IAAVA,IACzBA,EAAQ4Q,KAAKxP,KAED,OAAVpB,GAAkBiY,MAAMjY,GACnB4uC,IAEFh+B,KAAKknC,mBAAmB93C,IAAU4Q,KAAKxP,IAAM,GAAKgW,GAAMpX,GAAS4Q,KAAKk1E,aAAel1E,KAAKm1E,YACnG,CACA,gBAAA/tC,CAAiB1tB,GACf,MAAMqpC,EAAU/iD,KAAKgjD,mBAAmBtpC,GACxC,OAAOppB,KAAKyO,IAAI,GAAIiB,KAAKk1E,YAAcnyB,EAAU/iD,KAAKm1E,YACxD,EAWF,SAASsD,GAAsB57D,GAC7B,MAAMq9B,EAAWr9B,EAAKjM,MACtB,GAAIspC,EAAS3jC,SAAWsG,EAAKtG,QAAS,CACpC,MAAML,EAAUyJ,GAAUu6B,EAAS3hC,iBACnC,OAAO9V,EAAey3C,EAASrnC,MAAQqnC,EAASrnC,KAAKjN,KAAMoP,GAASnC,KAAKjN,MAAQsQ,EAAQgE,MAC3F,CACA,OAAO,CACT,CAQA,SAASw+D,GAAgBtwE,EAAOwgB,EAAKhjB,EAAMpV,EAAKD,GAC9C,OAAI6X,IAAU5X,GAAO4X,IAAU7X,EACtB,CACLsY,MAAO+f,EAAMhjB,EAAO,EACpBkD,IAAK8f,EAAMhjB,EAAO,GAEXwC,EAAQ5X,GAAO4X,EAAQ7X,EACzB,CACLsY,MAAO+f,EAAMhjB,EACbkD,IAAK8f,GAGF,CACL/f,MAAO+f,EACP9f,IAAK8f,EAAMhjB,EAEf,CACA,SAAS+yE,GAAmB3kE,GAC1B,MAAMqwB,EAAO,CACXj2C,EAAG4lB,EAAMsC,KAAOtC,EAAMm3D,SAAS70D,KAC/BrnB,EAAG+kB,EAAMoC,MAAQpC,EAAMm3D,SAAS/0D,MAChC/mB,EAAG2kB,EAAMmC,IAAMnC,EAAMm3D,SAASh1D,IAC9B9kB,EAAG2iB,EAAMqC,OAASrC,EAAMm3D,SAAS90D,QAE7BuiE,EAAS/pF,OAAOwQ,OAAO,CAAC,EAAGglC,GAC3Boc,EAAa,GACbvqC,EAAU,GACV2iE,EAAa7kE,EAAM8kE,aAAa1mF,OAChC2mF,EAAiB/kE,EAAM5P,QAAQupC,YAC/BqrC,EAAkBD,EAAeE,kBAAoBlzE,GAAK8yE,EAAa,EAC7E,IAAK,IAAI1qF,EAAI,EAAGA,EAAI0qF,EAAY1qF,IAAK,CACnC,MAAM0uB,EAAOk8D,EAAet2D,WAAWzO,EAAMklE,qBAAqB/qF,IAClE+nB,EAAQ/nB,GAAK0uB,EAAK3G,QAClB,MAAM43B,EAAgB95B,EAAMmlE,iBAAiBhrF,EAAG6lB,EAAMolE,YAAcljE,EAAQ/nB,GAAI6qF,GAC1EK,EAASz5D,GAAO/C,EAAKhK,MACrBu4D,GA1CgBj4D,EA0CYa,EAAMb,IA1CbN,EA0CkBwmE,EAzC/Ct6C,EAAQlsC,EAD2BksC,EA0CoB/qB,EAAM8kE,aAAa3qF,IAzCjD4wC,EAAQ,CAACA,GAC3B,CACLxsC,EAAGwmB,GAAa5F,EAAKN,EAAK+F,OAAQmmB,GAClC1uC,EAAG0uC,EAAM3sC,OAASygB,EAAKG,aAuCvBytC,EAAWtyD,GAAKi9E,EAChB,MAAM9pB,EAAe34C,GAAgBqL,EAAMm5B,cAAch/C,GAAK6qF,GACxD5wE,EAAQ9X,KAAK0W,MAAMU,GAAU45C,IAGnCg4B,GAAaV,EAAQv0C,EAAMid,EAFXo3B,GAAgBtwE,EAAO0lC,EAAct6C,EAAG43E,EAAS74E,EAAG,EAAG,KACvDmmF,GAAgBtwE,EAAO0lC,EAAchpC,EAAGsmE,EAAS/6E,EAAG,GAAI,KAE1E,CAjDF,IAA0B8iB,EAAKN,EAAMksB,EAkDnC/qB,EAAMulE,eAAel1C,EAAKj2C,EAAIwqF,EAAOxqF,EAAGwqF,EAAO3pF,EAAIo1C,EAAKp1C,EAAGo1C,EAAKh1C,EAAIupF,EAAOvpF,EAAGupF,EAAOvnF,EAAIgzC,EAAKhzC,GAC9F2iB,EAAMwlE,iBAsBR,SAA8BxlE,EAAOysC,EAAYvqC,GAC/C,MAAMzL,EAAQ,GACRouE,EAAa7kE,EAAM8kE,aAAa1mF,OAChCyqB,EAAO7I,EAAM5P,QACbq1E,EAAQhB,GAAsB57D,GAAQ,EACtC68D,EAAgB1lE,EAAMolE,YACtBJ,EAAkBn8D,EAAK8wB,YAAYsrC,kBAAoBlzE,GAAK8yE,EAAa,EAC/E,IAAK,IAAI1qF,EAAI,EAAGA,EAAI0qF,EAAY1qF,IAAK,CACnC,MAAMwrF,EAAqB3lE,EAAMmlE,iBAAiBhrF,EAAGurF,EAAgBD,EAAQvjE,EAAQ/nB,GAAI6qF,GACnF5wE,EAAQ9X,KAAK0W,MAAMU,GAAUiB,GAAgBgxE,EAAmBvxE,MAAQ/B,MACxET,EAAO66C,EAAWtyD,GAClB2W,EAAI80E,GAAUD,EAAmB70E,EAAGc,EAAKvV,EAAG+X,GAC5CgV,EAAYy8D,GAAqBzxE,GACjCkO,EAAOwjE,GAAiBH,EAAmBnmF,EAAGoS,EAAKrT,EAAG6qB,GAC5D3S,EAAMrF,KAAK,CACT5R,EAAGmmF,EAAmBnmF,EACtBsR,IACAsY,YACA9G,OACAH,IAAKrR,EACLsR,MAAOE,EAAO1Q,EAAKrT,EACnB8jB,OAAQvR,EAAIc,EAAKvV,GAErB,CACA,OAAOoa,CACT,CA/C2BsvE,CAAqB/lE,EAAOysC,EAAYvqC,EACnE,CACA,SAASojE,GAAaV,EAAQv0C,EAAMj8B,EAAO4xE,EAASC,GAClD,MAAM7sE,EAAM9c,KAAKsW,IAAItW,KAAK8c,IAAIhF,IACxBiG,EAAM/d,KAAKsW,IAAItW,KAAK+d,IAAIjG,IAC9B,IAAI5U,EAAI,EACJsR,EAAI,EACJk1E,EAAQnxE,MAAQw7B,EAAKj2C,GACvBoF,GAAK6wC,EAAKj2C,EAAI4rF,EAAQnxE,OAASuE,EAC/BwrE,EAAOxqF,EAAIkC,KAAKE,IAAIooF,EAAOxqF,EAAGi2C,EAAKj2C,EAAIoF,IAC9BwmF,EAAQlxE,IAAMu7B,EAAKp1C,IAC5BuE,GAAKwmF,EAAQlxE,IAAMu7B,EAAKp1C,GAAKme,EAC7BwrE,EAAO3pF,EAAIqB,KAAKC,IAAIqoF,EAAO3pF,EAAGo1C,EAAKp1C,EAAIuE,IAErCymF,EAAQpxE,MAAQw7B,EAAKh1C,GACvByV,GAAKu/B,EAAKh1C,EAAI4qF,EAAQpxE,OAASwF,EAC/BuqE,EAAOvpF,EAAIiB,KAAKE,IAAIooF,EAAOvpF,EAAGg1C,EAAKh1C,EAAIyV,IAC9Bm1E,EAAQnxE,IAAMu7B,EAAKhzC,IAC5ByT,GAAKm1E,EAAQnxE,IAAMu7B,EAAKhzC,GAAKgd,EAC7BuqE,EAAOvnF,EAAIf,KAAKC,IAAIqoF,EAAOvnF,EAAGgzC,EAAKhzC,EAAIyT,GAE3C,CA2BA,SAAS+0E,GAAqBzxE,GAC5B,OAAc,IAAVA,GAAyB,MAAVA,EACV,SACEA,EAAQ,IACV,OAEF,OACT,CACA,SAAS0xE,GAAiBtmF,EAAGjB,EAAGgZ,GAM9B,MALc,UAAVA,EACF/X,GAAKjB,EACc,WAAVgZ,IACT/X,GAAKjB,EAAI,GAEJiB,CACT,CACA,SAASomF,GAAU90E,EAAGzU,EAAG+X,GAMvB,OALc,KAAVA,GAA0B,MAAVA,EAClBtD,GAAKzU,EAAI,GACA+X,EAAQ,KAAOA,EAAQ,MAChCtD,GAAKzU,GAEAyU,CACT,CA6CA,SAASo1E,GAAelmE,EAAO4G,EAAQ8yB,EAAU4hC,GAC/C,MAAMn8D,EAAMa,EAAMb,IAClB,GAAIu6B,EACFv6B,EAAI+H,IAAIlH,EAAMg5B,QAASh5B,EAAMi5B,QAASryB,EAAQ,EAAG5U,QAC5C,CACL,IAAI8nC,EAAgB95B,EAAMmlE,iBAAiB,EAAGv+D,GAC9CzH,EAAIiI,OAAO0yB,EAAct6C,EAAGs6C,EAAchpC,GAC1C,IAAK,IAAI3W,EAAI,EAAGA,EAAImhF,EAAYnhF,IAC9B2/C,EAAgB95B,EAAMmlE,iBAAiBhrF,EAAGysB,GAC1CzH,EAAIkI,OAAOyyB,EAAct6C,EAAGs6C,EAAchpC,EAE9C,CACF,CApMA,GAAiB/C,GAAK,cACtB,GAAiBiT,SAAW,CAC1BpE,MAAO,CACL9N,SAAU4O,GAAMlB,WAAWc,YAC3B6G,MAAO,CACLyiC,SAAS,KA0Nf,MAAM,WAA0B,GAC9B,WAAAh7C,CAAY80B,GACVsQ,MAAMtQ,GACN10B,KAAKgtC,aAAUj7C,EACfiO,KAAKitC,aAAUl7C,EACfiO,KAAKo5E,iBAAcrnF,EACnBiO,KAAK84E,aAAe,GACpB94E,KAAKw5E,iBAAmB,EAC1B,CACA,aAAA/6B,GACE,MAAMvoC,EAAUlW,KAAKmrE,SAAWxrD,GAAU84D,GAAsBz4E,KAAKoE,SAAW,GAC1E7R,EAAIyN,KAAKuX,MAAQvX,KAAK2d,SAAWzH,EAAQqB,MACzClnB,EAAI2P,KAAKka,OAASla,KAAKoqB,UAAYlU,EAAQgE,OACjDla,KAAKgtC,QAAU18C,KAAK4W,MAAMlH,KAAKsW,KAAO/jB,EAAI,EAAI2jB,EAAQI,MACtDtW,KAAKitC,QAAU38C,KAAK4W,MAAMlH,KAAKmW,IAAM9lB,EAAI,EAAI6lB,EAAQC,KACrDnW,KAAKo5E,YAAc9oF,KAAK4W,MAAM5W,KAAKE,IAAI+B,EAAGlC,GAAK,EACjD,CACA,mBAAAuuD,GACE,MAAMu7B,EAAmBn6E,KAAKi+B,WAAU,GACtCztC,EAAM2pF,EAAiB3pF,IACvBD,EAAM4pF,EAAiB5pF,IACzByP,KAAKxP,IAAM4R,EAAe5R,KAAS6W,MAAM7W,GAAOA,EAAM,EACtDwP,KAAKzP,IAAM6R,EAAe7R,KAAS8W,MAAM9W,GAAOA,EAAM,EACtDyP,KAAK+2E,wBACP,CACA,gBAAAQ,GACE,OAAOjnF,KAAK2qD,KAAKj7C,KAAKo5E,YAAcX,GAAsBz4E,KAAKoE,SACjE,CACA,kBAAAg8C,CAAmBxvC,GACjB,GAAgB7gB,UAAUqwD,mBAAmB9xD,KAAK0R,KAAM4Q,GACxD5Q,KAAK84E,aAAe94E,KAAKq9B,YAAYvqC,KAAI,CAAC1D,EAAOyU,KAC/C,MAAMk7B,EAAQj8B,EAAS9C,KAAKoE,QAAQupC,YAAY7qC,SAAU,CAAC1T,EAAOyU,GAAQ7D,MAC1E,OAAO++B,GAAmB,IAAVA,EAAcA,EAAQ,EAAE,IACvC5b,QAAO,CAAChzB,EAAGhC,IAAM6R,KAAK6Q,MAAMk2B,kBAAkB54C,IACnD,CACA,GAAAwxD,GACE,MAAM9iC,EAAO7c,KAAKoE,QACdyY,EAAKtG,SAAWsG,EAAK8wB,YAAYp3B,QACnCoiE,GAAmB34E,MAEnBA,KAAKu5E,eAAe,EAAG,EAAG,EAAG,EAEjC,CACA,cAAAA,CAAea,EAAcC,EAAeC,EAAaC,GACvDv6E,KAAKgtC,SAAW18C,KAAK4W,OAAOkzE,EAAeC,GAAiB,GAC5Dr6E,KAAKitC,SAAW38C,KAAK4W,OAAOozE,EAAcC,GAAkB,GAC5Dv6E,KAAKo5E,aAAe9oF,KAAKE,IAAIwP,KAAKo5E,YAAc,EAAG9oF,KAAKC,IAAI6pF,EAAcC,EAAeC,EAAaC,GACxG,CACA,aAAAptC,CAActpC,GAGZ,OAAO8E,GAAgB9E,GAFCmC,IAAOhG,KAAK84E,aAAa1mF,QAAU,IAEVoV,GAD9BxH,KAAKoE,QAAQmlC,YAAc,GAEhD,CACA,6BAAAgE,CAA8Bn+C,GAC5B,GAAI4S,EAAc5S,GAChB,OAAO4uC,IAET,MAAMw8C,EAAgBx6E,KAAKo5E,aAAep5E,KAAKzP,IAAMyP,KAAKxP,KAC1D,OAAIwP,KAAKoE,QAAQf,SACPrD,KAAKzP,IAAMnB,GAASorF,GAEtBprF,EAAQ4Q,KAAKxP,KAAOgqF,CAC9B,CACA,6BAAAC,CAA8BnyE,GAC5B,GAAItG,EAAcsG,GAChB,OAAO01B,IAET,MAAM08C,EAAiBpyE,GAAYtI,KAAKo5E,aAAep5E,KAAKzP,IAAMyP,KAAKxP,MACvE,OAAOwP,KAAKoE,QAAQf,QAAUrD,KAAKzP,IAAMmqF,EAAiB16E,KAAKxP,IAAMkqF,CACvE,CACA,oBAAAxB,CAAqBr1E,GACnB,MAAM8pC,EAAc3tC,KAAK84E,cAAgB,GACzC,GAAIj1E,GAAS,GAAKA,EAAQ8pC,EAAYv7C,OAAQ,CAC5C,MAAMuoF,EAAahtC,EAAY9pC,GAC/B,OAjFN,SAAiCmgB,EAAQngB,EAAOk7B,GAC9C,OAAO1e,GAAc2D,EAAQ,CAC3B+a,QACAl7B,QACAhE,KAAM,cAEV,CA2Ea+6E,CAAwB56E,KAAK+Z,aAAclW,EAAO82E,EAC3D,CACF,CACA,gBAAAxB,CAAiBt1E,EAAOg3E,GACtB,IAAI7B,EAAkB7mF,UAAUC,OAAS,QAAsBL,IAAjBI,UAAU,GAAmBA,UAAU,GAAK,EAC1F,MAAMiW,EAAQpI,KAAKmtC,cAActpC,GAASwC,GAAU2yE,EACpD,MAAO,CACLxlF,EAAGlD,KAAK+d,IAAIjG,GAASyyE,EAAqB76E,KAAKgtC,QAC/CloC,EAAGxU,KAAK8c,IAAIhF,GAASyyE,EAAqB76E,KAAKitC,QAC/C7kC,QAEJ,CACA,wBAAA2lC,CAAyBlqC,EAAOzU,GAC9B,OAAO4Q,KAAKm5E,iBAAiBt1E,EAAO7D,KAAKutC,8BAA8Bn+C,GACzE,CACA,eAAA0rF,CAAgBj3E,GACd,OAAO7D,KAAK+tC,yBAAyBlqC,GAAS,EAAG7D,KAAKijD,eACxD,CACA,qBAAA83B,CAAsBl3E,GACpB,MAAMm3E,EAAwBh7E,KAAKw5E,iBAAiB31E,GAKpD,MAAO,CACLyS,KALO0kE,EAAsB1kE,KAM7BH,IALM6kE,EAAsB7kE,IAM5BC,MALQ4kE,EAAsB5kE,MAM9BC,OALS2kE,EAAsB3kE,OAOnC,CACA,cAAAwvC,GACE,MAAMo1B,EAAkBj7E,KAAKoE,QAC3BgO,EAAkB6oE,EAAgB7oE,gBAClCs7B,EAAWutC,EAAgBrkE,KAAK82B,SAClC,GAAIt7B,EAAiB,CACnB,MAAMe,EAAMnT,KAAKmT,IACjBA,EAAIgG,OACJhG,EAAI6H,YACJk/D,GAAel6E,KAAMA,KAAKutC,8BAA8BvtC,KAAK82E,WAAYppC,EAAU1tC,KAAK84E,aAAa1mF,QACrG+gB,EAAIgI,YACJhI,EAAIgK,UAAY/K,EAChBe,EAAIqI,OACJrI,EAAIoG,SACN,CACF,CACA,QAAAwsC,GACE,MAAM5yC,EAAMnT,KAAKmT,IACX0J,EAAO7c,KAAKoE,QACZqpC,EAAa5wB,EAAK4wB,WACtB72B,EAAOiG,EAAKjG,KACZQ,EAASyF,EAAKzF,OACVk4D,EAAatvE,KAAK84E,aAAa1mF,OACrC,IAAIjE,EAAGqoB,EAAQs5B,EAef,GAdIjzB,EAAK8wB,YAAYp3B,SAnNzB,SAAyBvC,EAAOs7D,GAC9B,MAAMn8D,EAAMa,EAAMb,IAChBw6B,EAAc35B,EAAM5P,QAAQupC,YAC9B,IAAK,IAAIx/C,EAAImhF,EAAa,EAAGnhF,GAAK,EAAGA,IAAK,CACxC,MAAMu2D,EAAc/W,EAAYlrB,WAAWzO,EAAMklE,qBAAqB/qF,IAChEkrF,EAASz5D,GAAO8kC,EAAY7xC,MAC5BqoE,EAAwBlnE,EAAMwlE,iBAAiBrrF,GACnDqF,EAAI0nF,EAAsB1nF,EAC1BsR,EAAIo2E,EAAsBp2E,EAC1BsY,EAAY89D,EAAsB99D,UAClC9G,EAAO4kE,EAAsB5kE,KAC7BH,EAAM+kE,EAAsB/kE,IAC5BC,EAAQ8kE,EAAsB9kE,MAC9BC,EAAS6kE,EAAsB7kE,OAC3BiC,EAAgBosC,EAAYpsC,cAClC,IAAKtW,EAAcsW,GAAgB,CACjC,MAAM29C,EAAev2C,GAAcglC,EAAYuR,cACzC//C,EAAUyJ,GAAU+kC,EAAYnsC,iBACtCpF,EAAIgK,UAAY7E,EAChB,MAAM6iE,EAAe7kE,EAAOJ,EAAQI,KAC9B8kE,EAAcjlE,EAAMD,EAAQC,IAC5BklE,EAAgBjlE,EAAQE,EAAOJ,EAAQqB,MACvC+jE,EAAiBjlE,EAASF,EAAMD,EAAQgE,OAC1CrrB,OAAO4hB,OAAOwlD,GAAc1K,MAAKp7D,GAAW,IAANA,KACxCgjB,EAAI6H,YACJyD,GAAmBtL,EAAK,CACtB3f,EAAG2nF,EACHr2E,EAAGs2E,EACH7oF,EAAG8oF,EACHhrF,EAAGirF,EACH1gE,OAAQq7C,IAEV9iD,EAAIqI,QAEJrI,EAAIqL,SAAS28D,EAAcC,EAAaC,EAAeC,EAE3D,CACA1+D,GAAWzJ,EAAKa,EAAM8kE,aAAa3qF,GAAIqF,EAAGsR,EAAIu0E,EAAOrmE,WAAa,EAAGqmE,EAAQ,CAC3E74E,MAAOkkD,EAAYlkD,MACnB4c,UAAWA,EACXC,aAAc,UAElB,CACF,CAyKMk+D,CAAgBv7E,KAAMsvE,GAEpB14D,EAAKL,SACPvW,KAAK4Q,MAAMrG,SAAQ,CAAC8oB,EAAMxvB,KACxB,GAAc,IAAVA,EAAa,CACf2S,EAASxW,KAAKutC,8BAA8Bla,EAAKjkC,OACjD,MAAMojB,EAAUxS,KAAK+Z,WAAWlW,GAC1B6gD,EAAc9tC,EAAK6L,WAAWjQ,GAC9BmyC,EAAoBvtC,EAAOqL,WAAWjQ,IAnKtD,SAAwBwB,EAAOwnE,EAAc5gE,EAAQ00D,EAAY/rB,GAC/D,MAAMpwC,EAAMa,EAAMb,IACZu6B,EAAW8tC,EAAa9tC,SACxBltC,EAAQg7E,EAAah7E,MACzBqW,EAAY2kE,EAAa3kE,WACtB62B,IAAa4hC,IAAe9uE,IAAUqW,GAAa+D,EAAS,IAGjEzH,EAAIgG,OACJhG,EAAIsK,YAAcjd,EAClB2S,EAAI0D,UAAYA,EAChB1D,EAAI8yC,YAAY1C,EAAWlsC,MAC3BlE,EAAI+yC,eAAiB3C,EAAWjsC,WAChCnE,EAAI6H,YACJk/D,GAAelmE,EAAO4G,EAAQ8yB,EAAU4hC,GACxCn8D,EAAIgI,YACJhI,EAAIuI,SACJvI,EAAIoG,UACN,CAkJUkiE,CAAez7E,KAAM0kD,EAAaluC,EAAQ84D,EAAY3qB,EACxD,KAGAlX,EAAWl3B,QAAS,CAEtB,IADApD,EAAIgG,OACChrB,EAAImhF,EAAa,EAAGnhF,GAAK,EAAGA,IAAK,CACpC,MAAMu2D,EAAcjX,EAAWhrB,WAAWziB,KAAKk5E,qBAAqB/qF,IAC9DqS,EAAQkkD,EAAYlkD,MACxBqW,EAAY6tC,EAAY7tC,UACrBA,GAAcrW,IAGnB2S,EAAI0D,UAAYA,EAChB1D,EAAIsK,YAAcjd,EAClB2S,EAAI8yC,YAAYvB,EAAYj1B,YAC5Btc,EAAI+yC,eAAiBxB,EAAYh1B,iBACjClZ,EAASxW,KAAKutC,8BAA8B1wB,EAAKjM,MAAMvN,QAAUrD,KAAKxP,IAAMwP,KAAKzP,KACjFu/C,EAAW9vC,KAAKm5E,iBAAiBhrF,EAAGqoB,GACpCrD,EAAI6H,YACJ7H,EAAIiI,OAAOpb,KAAKgtC,QAAShtC,KAAKitC,SAC9B95B,EAAIkI,OAAOy0B,EAASt8C,EAAGs8C,EAAShrC,GAChCqO,EAAIuI,SACN,CACAvI,EAAIoG,SACN,CACF,CACA,UAAA4sC,GAAc,CACd,UAAAG,GACE,MAAMnzC,EAAMnT,KAAKmT,IACX0J,EAAO7c,KAAKoE,QACZ81C,EAAWr9B,EAAKjM,MACtB,IAAKspC,EAAS3jC,QACZ,OAEF,MAAMgzB,EAAavpC,KAAKmtC,cAAc,GACtC,IAAI32B,EAAQe,EACZpE,EAAIgG,OACJhG,EAAI2H,UAAU9a,KAAKgtC,QAAShtC,KAAKitC,SACjC95B,EAAIxR,OAAO4nC,GACXp2B,EAAIiK,UAAY,SAChBjK,EAAIkK,aAAe,SACnBrd,KAAK4Q,MAAMrG,SAAQ,CAAC8oB,EAAMxvB,KACxB,GAAc,IAAVA,IAAgBgZ,EAAKxZ,QACvB,OAEF,MAAMqhD,EAAcxK,EAASz3B,WAAWziB,KAAK+Z,WAAWlW,IAClD0+C,EAAW3iC,GAAO8kC,EAAY7xC,MAEpC,GADA2D,EAASxW,KAAKutC,8BAA8BvtC,KAAK4Q,MAAM/M,GAAOzU,OAC1Ds1D,EAAYrsC,kBAAmB,CACjClF,EAAIN,KAAO0vC,EAAS3pC,OACpBrB,EAAQpE,EAAI2F,YAAYua,EAAK0L,OAAOxnB,MACpCpE,EAAIgK,UAAYunC,EAAYpsC,cAC5B,MAAMpC,EAAUyJ,GAAU+kC,EAAYnsC,iBACtCpF,EAAIqL,UAAUjH,EAAQ,EAAIrB,EAAQI,MAAOE,EAAS+rC,EAAS38C,KAAO,EAAIsQ,EAAQC,IAAKoB,EAAQrB,EAAQqB,MAAOgrC,EAAS38C,KAAOsQ,EAAQgE,OACpI,CACA0C,GAAWzJ,EAAKkgB,EAAK0L,MAAO,GAAIvoB,EAAQ+rC,EAAU,CAChD/hD,MAAOkkD,EAAYlkD,OACnB,IAEJ2S,EAAIoG,SACN,CACA,SAAAitC,GAAa,EAEf,GAAkBzkD,GAAK,eACvB,GAAkBiT,SAAW,CAC3BuB,SAAS,EACTmlE,SAAS,EACT5rC,SAAU,YACVrC,WAAY,CACVl3B,SAAS,EACTM,UAAW,EACX4Y,WAAY,GACZC,iBAAkB,GAEpB9Y,KAAM,CACJ82B,UAAU,GAEZnE,WAAY,EACZ34B,MAAO,CACLyH,mBAAmB,EACnBvV,SAAU4O,GAAMlB,WAAWE,SAE7Bi9B,YAAa,CACXr1B,mBAAevmB,EACfwmB,gBAAiB,EACjBhC,SAAS,EACT1D,KAAM,CACJjN,KAAM,IAER9C,SAASi8B,GACAA,EAET7oB,QAAS,EACT+iE,mBAAmB,IAGvB,GAAkBt9B,cAAgB,CAChC,mBAAoB,cACpB,oBAAqB,QACrB,cAAe,SAEjB,GAAkBh5B,YAAc,CAC9B8qB,WAAY,CACVr4B,UAAW,SAGf,MAAMumE,GAAY,CAChBC,YAAa,CACXC,QAAQ,EACRj2E,KAAM,EACNiyE,MAAO,KAETiE,OAAQ,CACND,QAAQ,EACRj2E,KAAM,IACNiyE,MAAO,IAETkE,OAAQ,CACNF,QAAQ,EACRj2E,KAAM,IACNiyE,MAAO,IAETmE,KAAM,CACJH,QAAQ,EACRj2E,KAAM,KACNiyE,MAAO,IAEToE,IAAK,CACHJ,QAAQ,EACRj2E,KAAM,MACNiyE,MAAO,IAETqE,KAAM,CACJL,QAAQ,EACRj2E,KAAM,OACNiyE,MAAO,GAETsE,MAAO,CACLN,QAAQ,EACRj2E,KAAM,OACNiyE,MAAO,IAETuE,QAAS,CACPP,QAAQ,EACRj2E,KAAM,OACNiyE,MAAO,GAETwE,KAAM,CACJR,QAAQ,EACRj2E,KAAM,SAGJ02E,GAAuBztF,OAAOuP,KAAKu9E,IACzC,SAASY,GAAOnrF,EAAGC,GACjB,OAAOD,EAAIC,CACb,CACA,SAASuzB,GAAM5Q,EAAOzU,GACpB,GAAIyC,EAAczC,GAChB,OAAO,KAET,MAAMi9E,EAAUxoE,EAAMyoE,SAChBC,EAAoB1oE,EAAM2oE,WAC9BC,EAASF,EAAkBE,OAC3B51E,EAAQ01E,EAAkB11E,MAC1B61E,EAAaH,EAAkBG,WACjC,IAAIztF,EAAQmQ,EAOZ,MANsB,oBAAXq9E,IACTxtF,EAAQwtF,EAAOxtF,IAEZgT,EAAehT,KAClBA,EAA0B,kBAAXwtF,EAAsBJ,EAAQ53D,MAAMx1B,EAAOwtF,GAAUJ,EAAQ53D,MAAMx1B,IAEtE,OAAVA,EACK,MAEL4X,IACF5X,EAAkB,SAAV4X,IAAqBI,GAASy1E,KAA8B,IAAfA,EAAuEL,EAAQptC,QAAQhgD,EAAO4X,GAAvEw1E,EAAQptC,QAAQhgD,EAAO,UAAWytF,KAExGztF,EACV,CACA,SAAS0tF,GAA0BC,EAASvsF,EAAKD,EAAKysF,GACpD,MAAMv5E,EAAO64E,GAAMlqF,OACnB,IAAK,IAAIjE,EAAImuF,GAAMp4E,QAAQ64E,GAAU5uF,EAAIsV,EAAO,IAAKtV,EAAG,CACtD,MAAM8uF,EAAWtB,GAAUW,GAAMnuF,IAC3BomC,EAAS0oD,EAASpF,MAAQoF,EAASpF,MAAQx1E,OAAO66E,iBACxD,GAAID,EAASpB,QAAUvrF,KAAK2qD,MAAM1qD,EAAMC,IAAQ+jC,EAAS0oD,EAASr3E,QAAUo3E,EAC1E,OAAOV,GAAMnuF,EAEjB,CACA,OAAOmuF,GAAM74E,EAAO,EACtB,CAiBA,SAAS05E,GAAQvsE,EAAOwsE,EAAMC,GAC5B,GAAKA,GAEE,GAAIA,EAAWjrF,OAAQ,CAC5B,MAAMkrF,EAAWh0E,GAAQ+zE,EAAYD,GACnCzzE,EAAK2zE,EAAS3zE,GACdD,EAAK4zE,EAAS5zE,GAEhBkH,EADkBysE,EAAW1zE,IAAOyzE,EAAOC,EAAW1zE,GAAM0zE,EAAW3zE,KACpD,CACrB,OAPEkH,EAAMwsE,IAAQ,CAQlB,CAcA,SAASG,GAAoBvpE,EAAOvD,EAAQ+sE,GAC1C,MAAM5sE,EAAQ,GACR9d,EAAM,CAAC,EACP2Q,EAAOgN,EAAOre,OACpB,IAAIjE,EAAGiB,EACP,IAAKjB,EAAI,EAAGA,EAAIsV,IAAQtV,EACtBiB,EAAQqhB,EAAOtiB,GACf2E,EAAI1D,GAASjB,EACbyiB,EAAMxL,KAAK,CACThW,QACA+oB,OAAO,IAGX,OAAgB,IAAT1U,GAAe+5E,EA1BxB,SAAuBxpE,EAAOpD,EAAO9d,EAAK0qF,GACxC,MAAMhB,EAAUxoE,EAAMyoE,SAChB1hC,GAASyhC,EAAQptC,QAAQx+B,EAAM,GAAGxhB,MAAOouF,GACzC3zE,EAAO+G,EAAMA,EAAMxe,OAAS,GAAGhD,MACrC,IAAI+oB,EAAOtU,EACX,IAAKsU,EAAQ4iC,EAAO5iC,GAAStO,EAAMsO,GAASqkE,EAAQ5xE,IAAIuN,EAAO,EAAGqlE,GAChE35E,EAAQ/Q,EAAIqlB,GACRtU,GAAS,IACX+M,EAAM/M,GAAOsU,OAAQ,GAGzB,OAAOvH,CACT,CAc4C6sE,CAAczpE,EAAOpD,EAAO9d,EAAK0qF,GAAzC5sE,CACpC,CACA,MAAM,WAAkB,GACtB,WAAAhR,CAAYyf,GACV2lB,MAAM3lB,GACNrf,KAAKwiC,OAAS,CACZ/pB,KAAM,GACN2kB,OAAQ,GACRzG,IAAK,IAEP32B,KAAK09E,MAAQ,MACb19E,KAAK29E,gBAAa5rF,EAClBiO,KAAK49E,SAAW,CAAC,EACjB59E,KAAK69E,aAAc,EACnB79E,KAAK28E,gBAAa5qF,CACpB,CACA,IAAAk9C,CAAKkiB,GACH,IAAIt0C,EAAO1qB,UAAUC,OAAS,QAAsBL,IAAjBI,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAChF,MAAMirF,EAAOjsB,EAAUisB,OAASjsB,EAAUisB,KAAO,CAAC,GAC5CZ,EAAUx8E,KAAKy8E,SAAW,IAAIntC,GAASC,MAAM4hB,EAAU7hB,SAAS/c,MACtEiqD,EAAQvtC,KAAKpyB,GACblY,EAAQy4E,EAAKU,eAAgBtB,EAAQttC,WACrClvC,KAAK28E,WAAa,CAChBC,OAAQQ,EAAKR,OACb51E,MAAOo2E,EAAKp2E,MACZ61E,WAAYO,EAAKP,YAEnB73C,MAAMiK,KAAKkiB,GACXnxD,KAAK69E,YAAchhE,EAAKkhE,UAC1B,CACA,KAAAn5D,CAAM6a,EAAK57B,GACT,YAAY9R,IAAR0tC,EACK,KAEF7a,GAAM5kB,KAAMy/B,EACrB,CACA,YAAA+V,GACExQ,MAAMwQ,eACNx1C,KAAKwiC,OAAS,CACZ/pB,KAAM,GACN2kB,OAAQ,GACRzG,IAAK,GAET,CACA,mBAAAioB,GACE,MAAMx6C,EAAUpE,KAAKoE,QACfo4E,EAAUx8E,KAAKy8E,SACfzG,EAAO5xE,EAAQg5E,KAAKpH,MAAQ,MAClC,IAAIgI,EAAuBh+E,KAAKoM,gBAC9B5b,EAAMwtF,EAAqBxtF,IAC3BD,EAAMytF,EAAqBztF,IAC3B8b,EAAa2xE,EAAqB3xE,WAClCC,EAAa0xE,EAAqB1xE,WACpC,SAAS2xE,EAAavnE,GACfrK,GAAehF,MAAMqP,EAAOlmB,OAC/BA,EAAMF,KAAKE,IAAIA,EAAKkmB,EAAOlmB,MAExB8b,GAAejF,MAAMqP,EAAOnmB,OAC/BA,EAAMD,KAAKC,IAAIA,EAAKmmB,EAAOnmB,KAE/B,CACK8b,GAAeC,IAClB2xE,EAAaj+E,KAAKk+E,mBACK,UAAnB95E,EAAQsS,QAA+C,WAAzBtS,EAAQwM,MAAM9M,QAC9Cm6E,EAAaj+E,KAAKi+B,WAAU,KAGhCztC,EAAM4R,EAAe5R,KAAS6W,MAAM7W,GAAOA,GAAOgsF,EAAQptC,QAAQtc,KAAKC,MAAOijD,GAC9EzlF,EAAM6R,EAAe7R,KAAS8W,MAAM9W,GAAOA,GAAOisF,EAAQntC,MAAMvc,KAAKC,MAAOijD,GAAQ,EACpFh2E,KAAKxP,IAAMF,KAAKE,IAAIA,EAAKD,EAAM,GAC/ByP,KAAKzP,IAAMD,KAAKC,IAAIC,EAAM,EAAGD,EAC/B,CACA,eAAA2tF,GACE,MAAMh7D,EAAMljB,KAAKm+E,qBACjB,IAAI3tF,EAAM6R,OAAO8D,kBACb5V,EAAM8R,OAAOi8B,kBAKjB,OAJIpb,EAAI9wB,SACN5B,EAAM0yB,EAAI,GACV3yB,EAAM2yB,EAAIA,EAAI9wB,OAAS,IAElB,CACL5B,MACAD,MAEJ,CACA,UAAA2uD,GACE,MAAM96C,EAAUpE,KAAKoE,QACfg6E,EAAWh6E,EAAQg5E,KACnBljC,EAAW91C,EAAQwM,MACnBysE,EAAiC,WAApBnjC,EAASp2C,OAAsB9D,KAAKm+E,qBAAuBn+E,KAAKq+E,YAC5D,UAAnBj6E,EAAQsS,QAAsB2mE,EAAWjrF,SAC3C4N,KAAKxP,IAAMwP,KAAKs9C,UAAY+/B,EAAW,GACvCr9E,KAAKzP,IAAMyP,KAAKq9C,UAAYggC,EAAWA,EAAWjrF,OAAS,IAE7D,MAAM5B,EAAMwP,KAAKxP,IAEXogB,ED36UV,SAAwBH,EAAQjgB,EAAKD,GACnC,IAAIsY,EAAQ,EACRC,EAAM2H,EAAOre,OACjB,KAAOyW,EAAQC,GAAO2H,EAAO5H,GAASrY,GACpCqY,IAEF,KAAOC,EAAMD,GAAS4H,EAAO3H,EAAM,GAAKvY,GACtCuY,IAEF,OAAOD,EAAQ,GAAKC,EAAM2H,EAAOre,OAASqe,EAAOvO,MAAM2G,EAAOC,GAAO2H,CACvE,CCi6UkB6tE,CAAejB,EAAY7sF,EAD7BwP,KAAKzP,KAQjB,OANAyP,KAAK09E,MAAQU,EAASpI,OAAS97B,EAASniC,SAAW+kE,GAA0BsB,EAASrB,QAAS/8E,KAAKxP,IAAKwP,KAAKzP,IAAKyP,KAAKu+E,kBAAkB/tF,IAtJ9I,SAAoCwjB,EAAOssC,EAAUy8B,EAASvsF,EAAKD,GACjE,IAAK,IAAIpC,EAAImuF,GAAMlqF,OAAS,EAAGjE,GAAKmuF,GAAMp4E,QAAQ64E,GAAU5uF,IAAK,CAC/D,MAAM6nF,EAAOsG,GAAMnuF,GACnB,GAAIwtF,GAAU3F,GAAM6F,QAAU7nE,EAAMyoE,SAASttC,KAAK5+C,EAAKC,EAAKwlF,IAAS11B,EAAW,EAC9E,OAAO01B,CAEX,CACA,OAAOsG,GAAMS,EAAUT,GAAMp4E,QAAQ64E,GAAW,EAClD,CA8IsJyB,CAA2Bx+E,KAAM4Q,EAAMxe,OAAQgsF,EAASrB,QAAS/8E,KAAKxP,IAAKwP,KAAKzP,MAClOyP,KAAK29E,WAAczjC,EAAS/hC,MAAMyiC,SAA0B,SAAf56C,KAAK09E,MA9ItD,SAA4B1H,GAC1B,IAAK,IAAI7nF,EAAImuF,GAAMp4E,QAAQ8xE,GAAQ,EAAGvyE,EAAO64E,GAAMlqF,OAAQjE,EAAIsV,IAAQtV,EACrE,GAAIwtF,GAAUW,GAAMnuF,IAAI0tF,OACtB,OAAOS,GAAMnuF,EAGnB,CAwIqFswF,CAAmBz+E,KAAK09E,YAApC3rF,EACrEiO,KAAK0+E,YAAYrB,GACbj5E,EAAQf,SACVuN,EAAMvN,UAEDk6E,GAAoBv9E,KAAM4Q,EAAO5Q,KAAK29E,WAC/C,CACA,aAAAl+B,GACMz/C,KAAKoE,QAAQu6E,qBACf3+E,KAAK0+E,YAAY1+E,KAAK4Q,MAAM9d,KAAIugC,IAASA,EAAKjkC,QAElD,CACA,WAAAsvF,GACE,IAGI3jC,EAAOlxC,EAHPwzE,EAAalrF,UAAUC,OAAS,QAAsBL,IAAjBI,UAAU,GAAmBA,UAAU,GAAK,GACjF0W,EAAQ,EACRC,EAAM,EAEN9I,KAAKoE,QAAQoS,QAAU6mE,EAAWjrF,SACpC2oD,EAAQ/6C,KAAK4+E,mBAAmBvB,EAAW,IAEzCx0E,EADwB,IAAtBw0E,EAAWjrF,OACL,EAAI2oD,GAEH/6C,KAAK4+E,mBAAmBvB,EAAW,IAAMtiC,GAAS,EAE7DlxC,EAAO7J,KAAK4+E,mBAAmBvB,EAAWA,EAAWjrF,OAAS,IAE5D0W,EADwB,IAAtBu0E,EAAWjrF,OACPyX,GAECA,EAAO7J,KAAK4+E,mBAAmBvB,EAAWA,EAAWjrF,OAAS,KAAO,GAGhF,MAAMoyD,EAAQ64B,EAAWjrF,OAAS,EAAI,GAAM,IAC5CyW,EAAQO,GAAYP,EAAO,EAAG27C,GAC9B17C,EAAMM,GAAYN,EAAK,EAAG07C,GAC1BxkD,KAAK49E,SAAW,CACd/0E,QACAC,MACAyrB,OAAQ,GAAK1rB,EAAQ,EAAIC,GAE7B,CACA,SAAAu1E,GACE,MAAM7B,EAAUx8E,KAAKy8E,SACfjsF,EAAMwP,KAAKxP,IACXD,EAAMyP,KAAKzP,IACX6T,EAAUpE,KAAKoE,QACfg6E,EAAWh6E,EAAQg5E,KACnBllE,EAAQkmE,EAASpI,MAAQ8G,GAA0BsB,EAASrB,QAASvsF,EAAKD,EAAKyP,KAAKu+E,kBAAkB/tF,IACtG8mF,EAAW70E,EAAe2B,EAAQwM,MAAM0mE,SAAU,GAClDuH,EAAoB,SAAV3mE,GAAmBkmE,EAASvB,WACtCiC,EAAa13E,GAASy3E,KAAwB,IAAZA,EAClCjuE,EAAQ,CAAC,EACf,IACIwsE,EAAMtxE,EADNivC,EAAQvqD,EAMZ,GAJIsuF,IACF/jC,GAASyhC,EAAQptC,QAAQ2L,EAAO,UAAW8jC,IAE7C9jC,GAASyhC,EAAQptC,QAAQ2L,EAAO+jC,EAAa,MAAQ5mE,GACjDskE,EAAQrtC,KAAK5+C,EAAKC,EAAK0nB,GAAS,IAASo/D,EAC3C,MAAM,IAAIz0D,MAAMryB,EAAM,QAAUD,EAAM,uCAAyC+mF,EAAW,IAAMp/D,GAElG,MAAMmlE,EAAsC,SAAzBj5E,EAAQwM,MAAM9M,QAAqB9D,KAAK++E,oBAC3D,IAAK3B,EAAOriC,EAAOjvC,EAAQ,EAAGsxE,EAAO7sF,EAAK6sF,GAAQZ,EAAQ5xE,IAAIwyE,EAAM9F,EAAUp/D,GAAQpM,IACpFqxE,GAAQvsE,EAAOwsE,EAAMC,GAKvB,OAHID,IAAS7sF,GAA0B,UAAnB6T,EAAQsS,QAAgC,IAAV5K,GAChDqxE,GAAQvsE,EAAOwsE,EAAMC,GAEhBxuF,OAAOuP,KAAKwS,GAAOgyB,MAAK,CAACxxC,EAAGC,IAAMD,EAAIC,IAAGyB,KAAIU,IAAMA,GAC5D,CACA,gBAAAwrC,CAAiB5vC,GACf,MAAMotF,EAAUx8E,KAAKy8E,SACf2B,EAAWp+E,KAAKoE,QAAQg5E,KAC9B,OAAIgB,EAASY,cACJxC,EAAQjsE,OAAOnhB,EAAOgvF,EAASY,eAEjCxC,EAAQjsE,OAAOnhB,EAAOgvF,EAASN,eAAemB,SACvD,CACA,MAAA1uE,CAAOnhB,EAAOmhB,GACZ,MACM2+B,EADUlvC,KAAKoE,QACGg5E,KAAKU,eACvB9H,EAAOh2E,KAAK09E,MACZwB,EAAM3uE,GAAU2+B,EAAQ8mC,GAC9B,OAAOh2E,KAAKy8E,SAASlsE,OAAOnhB,EAAO8vF,EACrC,CACA,mBAAAC,CAAoB/B,EAAMv5E,EAAO+M,EAAOL,GACtC,MAAMnM,EAAUpE,KAAKoE,QACf+L,EAAY/L,EAAQwM,MAAM9N,SAChC,GAAIqN,EACF,OAAOrN,EAASqN,EAAW,CAACitE,EAAMv5E,EAAO+M,GAAQ5Q,MAEnD,MAAMkvC,EAAU9qC,EAAQg5E,KAAKU,eACvB9H,EAAOh2E,KAAK09E,MACZF,EAAYx9E,KAAK29E,WACjByB,EAAcpJ,GAAQ9mC,EAAQ8mC,GAC9BqJ,EAAc7B,GAAatuC,EAAQsuC,GACnCnqD,EAAOziB,EAAM/M,GACbsU,EAAQqlE,GAAa6B,GAAehsD,GAAQA,EAAKlb,MACvD,OAAOnY,KAAKy8E,SAASlsE,OAAO6sE,EAAM7sE,IAAW4H,EAAQknE,EAAcD,GACrE,CACA,kBAAAh/B,CAAmBxvC,GACjB,IAAIziB,EAAGsV,EAAM4vB,EACb,IAAKllC,EAAI,EAAGsV,EAAOmN,EAAMxe,OAAQjE,EAAIsV,IAAQtV,EAC3CklC,EAAOziB,EAAMziB,GACbklC,EAAK0L,MAAQ/+B,KAAKm/E,oBAAoB9rD,EAAKjkC,MAAOjB,EAAGyiB,EAEzD,CACA,kBAAAguE,CAAmBxvF,GACjB,OAAiB,OAAVA,EAAiB4uC,KAAO5uC,EAAQ4Q,KAAKxP,MAAQwP,KAAKzP,IAAMyP,KAAKxP,IACtE,CACA,gBAAA+b,CAAiBnd,GACf,MAAMkwF,EAAUt/E,KAAK49E,SACfh1D,EAAM5oB,KAAK4+E,mBAAmBxvF,GACpC,OAAO4Q,KAAKknC,oBAAoBo4C,EAAQz2E,MAAQ+f,GAAO02D,EAAQ/qD,OACjE,CACA,gBAAA6S,CAAiB1tB,GACf,MAAM4lE,EAAUt/E,KAAK49E,SACfh1D,EAAM5oB,KAAKgjD,mBAAmBtpC,GAAS4lE,EAAQ/qD,OAAS+qD,EAAQx2E,IACtE,OAAO9I,KAAKxP,IAAMo4B,GAAO5oB,KAAKzP,IAAMyP,KAAKxP,IAC3C,CACA,aAAA+uF,CAAcxgD,GACZ,MAAMygD,EAAYx/E,KAAKoE,QAAQwM,MACzB6uE,EAAiBz/E,KAAKmT,IAAI2F,YAAYimB,GAAOxnB,MAC7CnP,EAAQZ,GAAUxH,KAAKmlC,eAAiBq6C,EAAU7nE,YAAc6nE,EAAU9nE,aAC1EgoE,EAAcpvF,KAAK+d,IAAIjG,GACvBu3E,EAAcrvF,KAAK8c,IAAIhF,GACvBw3E,EAAe5/E,KAAK4iD,wBAAwB,GAAGh9C,KACrD,MAAO,CACLrT,EAAGktF,EAAiBC,EAAcE,EAAeD,EACjDtvF,EAAGovF,EAAiBE,EAAcC,EAAeF,EAErD,CACA,iBAAAnB,CAAkBsB,GAChB,MAAMzB,EAAWp+E,KAAKoE,QAAQg5E,KACxBU,EAAiBM,EAASN,eAC1BvtE,EAASutE,EAAeM,EAASpI,OAAS8H,EAAelC,YACzDkE,EAAe9/E,KAAKm/E,oBAAoBU,EAAa,EAAGtC,GAAoBv9E,KAAM,CAAC6/E,GAAc7/E,KAAK29E,YAAaptE,GACnH3K,EAAO5F,KAAKu/E,cAAcO,GAC1B9C,EAAW1sF,KAAK4W,MAAMlH,KAAKmlC,eAAiBnlC,KAAKuX,MAAQ3R,EAAKrT,EAAIyN,KAAKka,OAAStU,EAAKvV,GAAK,EAChG,OAAO2sF,EAAW,EAAIA,EAAW,CACnC,CACA,iBAAA+B,GACE,IACI5wF,EAAGsV,EADH45E,EAAar9E,KAAKwiC,OAAO/pB,MAAQ,GAErC,GAAI4kE,EAAWjrF,OACb,OAAOirF,EAET,MAAMt/B,EAAQ/9C,KAAKm4B,0BACnB,GAAIn4B,KAAK69E,aAAe9/B,EAAM3rD,OAC5B,OAAO4N,KAAKwiC,OAAO/pB,KAAOslC,EAAM,GAAG1lB,WAAWuG,mBAAmB5+B,MAEnE,IAAK7R,EAAI,EAAGsV,EAAOs6C,EAAM3rD,OAAQjE,EAAIsV,IAAQtV,EAC3CkvF,EAAaA,EAAW16C,OAAOob,EAAM5vD,GAAGkqC,WAAWuG,mBAAmB5+B,OAExE,OAAOA,KAAKwiC,OAAO/pB,KAAOzY,KAAKqtB,UAAUgwD,EAC3C,CACA,kBAAAc,GACE,MAAMd,EAAar9E,KAAKwiC,OAAOpF,QAAU,GACzC,IAAIjvC,EAAGsV,EACP,GAAI45E,EAAWjrF,OACb,OAAOirF,EAET,MAAMjgD,EAASp9B,KAAKq9B,YACpB,IAAKlvC,EAAI,EAAGsV,EAAO25B,EAAOhrC,OAAQjE,EAAIsV,IAAQtV,EAC5CkvF,EAAWj4E,KAAKwf,GAAM5kB,KAAMo9B,EAAOjvC,KAErC,OAAO6R,KAAKwiC,OAAOpF,OAASp9B,KAAK69E,YAAcR,EAAar9E,KAAKqtB,UAAUgwD,EAC7E,CACA,SAAAhwD,CAAU5c,GACR,OAAOjG,GAAaiG,EAAOmyB,KAAK25C,IAClC,EAsBF,SAAS,GAAYhzE,EAAOnI,EAAKiC,GAC/B,IAEI08E,EAAYC,EAAYC,EAAYC,EAFpCv2E,EAAK,EACLD,EAAKH,EAAMnX,OAAS,EAExB,GAAIiR,EAAS,CACX,GAAIjC,GAAOmI,EAAMI,GAAIif,KAAOxnB,GAAOmI,EAAMG,GAAIkf,IAAK,CAChD,IAAIu3D,EAAgBv2E,GAAaL,EAAO,MAAOnI,GAC/CuI,EAAKw2E,EAAcx2E,GACnBD,EAAKy2E,EAAcz2E,EACrB,CACA,IAAI02E,EAAY72E,EAAMI,GACtBo2E,EAAaK,EAAUx3D,IACvBq3D,EAAaG,EAAUhD,KACvB,IAAIiD,EAAY92E,EAAMG,GACtBs2E,EAAaK,EAAUz3D,IACvBs3D,EAAaG,EAAUjD,IACzB,KAAO,CACL,GAAIh8E,GAAOmI,EAAMI,GAAIyzE,MAAQh8E,GAAOmI,EAAMG,GAAI0zE,KAAM,CAClD,IAAIkD,EAAgB12E,GAAaL,EAAO,OAAQnI,GAChDuI,EAAK22E,EAAc32E,GACnBD,EAAK42E,EAAc52E,EACrB,CACA,IAAI62E,EAAah3E,EAAMI,GACvBo2E,EAAaQ,EAAWnD,KACxB6C,EAAaM,EAAW33D,IACxB,IAAI43D,EAAaj3E,EAAMG,GACvBs2E,EAAaQ,EAAWpD,KACxB8C,EAAaM,EAAW53D,GAC1B,CACA,MAAM63D,EAAOT,EAAaD,EAC1B,OAAOU,EAAOR,GAAcC,EAAaD,IAAe7+E,EAAM2+E,GAAcU,EAAOR,CACrF,CAnDA,GAAUl+E,GAAK,OACf,GAAUiT,SAAW,CACnB0B,OAAQ,OACR44B,SAAU,CAAC,EACX8tC,KAAM,CACJR,QAAQ,EACR5G,MAAM,EACNhvE,OAAO,EACP61E,YAAY,EACZE,QAAS,cACTe,eAAgB,CAAC,GAEnBltE,MAAO,CACL9M,OAAQ,OACRhB,UAAU,EACVqV,MAAO,CACLyiC,SAAS,KAoCf,MAAM8lC,WAAwB,GAC5B,WAAA9gF,CAAYyf,GACV2lB,MAAM3lB,GACNrf,KAAK2gF,OAAS,GACd3gF,KAAK4gF,aAAU7uF,EACfiO,KAAK6gF,iBAAc9uF,CACrB,CACA,WAAA2sF,GACE,MAAMrB,EAAar9E,KAAK8gF,yBAClBv3E,EAAQvJ,KAAK2gF,OAAS3gF,KAAK+gF,iBAAiB1D,GAClDr9E,KAAK4gF,QAAU,GAAYr3E,EAAOvJ,KAAKxP,KACvCwP,KAAK6gF,YAAc,GAAYt3E,EAAOvJ,KAAKzP,KAAOyP,KAAK4gF,QACvD57C,MAAM05C,YAAYrB,EACpB,CACA,gBAAA0D,CAAiB1D,GACf,MAAM7sF,EAAMwP,KAAKxP,IACfD,EAAMyP,KAAKzP,IACPka,EAAQ,GACRlB,EAAQ,GACd,IAAIpb,EAAGsV,EAAM0jB,EAAM2b,EAAMzd,EACzB,IAAKl3B,EAAI,EAAGsV,EAAO45E,EAAWjrF,OAAQjE,EAAIsV,IAAQtV,EAChD20C,EAAOu6C,EAAWlvF,GACd20C,GAAQtyC,GAAOsyC,GAAQvyC,GACzBka,EAAMrF,KAAK09B,GAGf,GAAIr4B,EAAMrY,OAAS,EACjB,MAAO,CAAC,CACNgrF,KAAM5sF,EACNo4B,IAAK,GACJ,CACDw0D,KAAM7sF,EACNq4B,IAAK,IAGT,IAAKz6B,EAAI,EAAGsV,EAAOgH,EAAMrY,OAAQjE,EAAIsV,IAAQtV,EAC3Ck3B,EAAO5a,EAAMtc,EAAI,GACjBg5B,EAAO1c,EAAMtc,EAAI,GACjB20C,EAAOr4B,EAAMtc,GACTmC,KAAK0W,OAAOqe,EAAO8B,GAAQ,KAAO2b,GACpCv5B,EAAMnE,KAAK,CACTg4E,KAAMt6C,EACNla,IAAKz6B,GAAKsV,EAAO,KAIvB,OAAO8F,CACT,CACA,sBAAAu3E,GACE,IAAIzD,EAAar9E,KAAKwiC,OAAO7L,KAAO,GACpC,GAAI0mD,EAAWjrF,OACb,OAAOirF,EAET,MAAM5kE,EAAOzY,KAAK++E,oBACZhgD,EAAQ/+B,KAAKm+E,qBAOnB,OALEd,EADE5kE,EAAKrmB,QAAU2sC,EAAM3sC,OACV4N,KAAKqtB,UAAU5U,EAAKkqB,OAAO5D,IAE3BtmB,EAAKrmB,OAASqmB,EAAOsmB,EAEpCs+C,EAAar9E,KAAKwiC,OAAO7L,IAAM0mD,EACxBA,CACT,CACA,kBAAAuB,CAAmBxvF,GACjB,OAAQ,GAAY4Q,KAAK2gF,OAAQvxF,GAAS4Q,KAAK4gF,SAAW5gF,KAAK6gF,WACjE,CACA,gBAAAz5C,CAAiB1tB,GACf,MAAM4lE,EAAUt/E,KAAK49E,SACf76B,EAAU/iD,KAAKgjD,mBAAmBtpC,GAAS4lE,EAAQ/qD,OAAS+qD,EAAQx2E,IAC1E,OAAO,GAAY9I,KAAK2gF,OAAQ59B,EAAU/iD,KAAK6gF,YAAc7gF,KAAK4gF,SAAS,EAC7E,EAEFF,GAAgB3+E,GAAK,aACrB2+E,GAAgB1rE,SAAW,GAAUA,SACrC,IAAI,GAAsBnmB,OAAOqxC,OAAO,CACtCqO,UAAW,KACXyyC,cAAe,GACfC,YAAa,GACbC,iBAAkB,GAClBC,kBAAmB,GACnBC,UAAW,GACXV,gBAAiBA,KAEnB,MAAMW,GAAgB,CAAC/yC,GAAa,GAAU,GAAS,G,gCCvtWvD,WACA,QAAMgZ,YAAY,iBAEH,MAAK,K,uBCHpB,SAIA,YAEE,YACE,WACEtnD,KAAKshF,WAAa,CAChBC,UACS,MAAQx2E,OAAOy2E,QAAQC,WAAa,MAAQ12E,OAAOC,uBAAyB,MAAQD,OAAOwgB,iBAEpGm2D,MAAO,SAAUryF,EAAGJ,GAClB,OAAOqC,EAAE+mC,WAAWqpD,MAAMryF,EAAGJ,EAC/B,EACAm+D,WAAY,WACV,OAAO97D,EAAE+mC,WAAW+0B,YACtB,EACAu0B,oBAAqB,SAAUtyF,GAC7B,OAAOiC,EAAE+mC,WAAWspD,oBAAoBtyF,EAC1C,EAEH,GAAEf,KAAK0R,KACT,GAAE1R,KAlBK0R,MAmBR,IAAI1O,EAnBI0O,KAmBEshF,YACV,YACE,WACE,IAAIjyF,EACFJ,EACAW,EACAhB,EAAI,GAAGsT,MACT5Q,EAAEswF,WAAa,SAAUvyF,GACvB,IAAIiC,EAAGrC,EAAGW,EAEV,IAAK0B,KADLrC,EAAI,CAAC,EACKI,EAAGO,EAAIP,EAAEiC,GAAIrC,EAAEqC,GAAK1B,EAC9B,OAAOX,CACT,EAAGqC,EAAEuwF,QAAU,SAAUvwF,EAAGrC,GAC1B,OAAOI,EAAEf,KAAKgD,EAAGrC,EACnB,EAAGI,EAAI,WACL,IAAOiC,EACP,OAAqC,OAASA,EAAnCo2B,SAASo6D,gBAAgCD,SAAWvwF,EAAI,SAAUjC,GAC3E,IAAIiC,EACJ,IAAKA,EAAI0O,KAAM1O,GAAI,CACjB,GAAIA,EAAEywF,WAAaC,KAAKC,cAAgBhzF,EAAEX,KAAKgD,EAAGjC,GAAI,OAAOiC,EAC7DA,EAAIA,EAAEu2B,UACR,CACF,CACF,CATO,GASFv2B,EAAE4wF,MAAQ,SAAU7yF,GACvB,OAAO+gE,WAAW/gE,EAAG,EACvB,EAAGiC,EAAE6wF,SAAW,SAAU9yF,GACxB,IAAIiC,EACJ,OAAOA,EAAI,KAAM,WACf,IAAIrC,EACJ,OAAOA,EAAI,GAAKkD,UAAUC,OAASxD,EAAEN,KAAK6D,UAAW,GAAK,GAAI,MAAQb,EAAIA,EAAIA,EAAI0Z,sBAAsB,SAAUpb,GAChH,OAAO,WACL,OAAO0B,EAAI,KAAMjC,EAAE6T,MAAMtT,EAAGX,EAC9B,CACF,CAJwG,CAItG+Q,MACJ,CACF,EAAG1O,EAAE8wF,SAAW,SAAU/yF,EAAGiC,GAC3B,IAAIrC,EAAGL,EAAGT,EAAG+B,EAAGkB,EAAGixF,EACnB,OAA+BA,GAAxBjxF,EAAI,MAAQE,EAAIA,EAAI,CAAC,GAASyS,OAAQ9U,EAAImC,EAAEu5D,WAAY/7D,EAAIwC,EAAEqnB,MAAMtqB,EAAIu5B,SAAS46D,YAAY,WAAaC,UAAUlzF,GAAG,GAAU,IAANJ,GAAWd,EAAEsqB,KAAO,MAAQ7pB,EAAIA,EAAI,CAAC,EAAGT,EAAEw8D,aAAe/6D,IAAMM,EAAI/B,EAAEq0F,eAAgBr0F,EAAEq0F,eAAiB,WACxO,OAAOxiF,KAAKyiF,kBAAoB5zF,OAAOC,eAAekR,KAAM,mBAAoB,CAC9EhR,IAAK,WACH,OAAO,CACT,IACEkB,EAAE5B,KAAK0R,KACb,IAAK,MAAQqiF,EAAIA,EAAI36D,UAAUg7D,cAAcv0F,GAAIA,CACnD,EAAGyB,EAAI,WACL,IAAIP,EACJ,OAAOA,EAAIq4B,SAAS46D,YAAY,WAAaC,UAAU,QAAQ,GAAI,GAAKlzF,EAAEmzF,iBAAkBnzF,EAAEozF,gBAChG,CAHO,GAGFnxF,EAAE4tB,MAAQ,SAAU7vB,EAAGiC,GAC1B,OAAOrC,EAAEX,KAAKe,EAAGiC,EACnB,EAAGrC,EAAI,WACL,IAAII,EAAGiC,EAAGrC,EAAGW,EACb,OAAqC,OAAS0B,EAAI,OAASrC,EAAI,OAASW,GAAjEP,EAAIq4B,SAASo6D,iBAA0Da,iBAAmB/yF,EAAIP,EAAEuzF,uBAAyB3zF,EAAII,EAAEwzF,mBAAqBvxF,EAAIjC,EAAEyzF,kBACnK,CAHO,GAGFxxF,EAAEyxF,KAAO,WACZ,IAAI1zF,EAAGiC,EAAGrC,EACV,IAAKA,EAAI,GAAII,EAAIiC,EAAI,EAAG,IAAMA,EAAGjC,IAAMiC,EAAGrC,GAAK,IAAMI,GAAK,KAAOA,GAAK,KAAOA,GAAK,KAAOA,EAAI,IAAM,KAAOA,EAAI,IAAM,KAAOA,GAAKiB,KAAK4W,MAAM,EAAI5W,KAAK0yF,UAAY,GAAG/gF,SAAS,IAAM3R,KAAK4W,MAAM,GAAK5W,KAAK0yF,UAAU/gF,SAAS,IAC1N,OAAOhT,CACT,CACD,GAAEX,KAAK0R,MAAO,WACb1O,EAAE2xF,SAAW,WACX,SAAS5zF,EAAEA,GACT,IAAIiC,EAAGrC,EACP,MAAQI,IAAMA,EAAI,KAAKJ,EAAIy4B,SAASw7D,cAAc,MAAQC,KAAO9zF,EAAE4S,WAAYjC,KAAKojF,YAAcn0F,EAAEk0F,KAAyB,GAAnB7xF,EAAIrC,EAAEo0F,KAAKjxF,QAAgB4N,KAAKsjF,WAAatjF,KAAKojF,aAAepjF,KAAKsjF,WAAatjF,KAAKojF,YAAYlhF,MAAM,GAAI5Q,GAAI0O,KAAKujF,OAASt0F,EAAEo0F,KAAKnhF,MAAM,GACzP,CACA,IAAI5Q,EAAGrC,EAAGW,EAAGhB,EACb,OAAOS,EAAE4iD,KAAO,SAAU5iD,GACxB,OAAOA,aAAa2Q,KAAO3Q,EAAI,IAAI2Q,KAAK3Q,EAC1C,EAAGA,EAAEU,UAAUyzF,UAAY,WACzB,OAAOxjF,KAAKojF,YAAYl+E,MAAM,IAAK,GAAG4d,KAAK,IAC7C,EAAGzzB,EAAEU,UAAU0zF,QAAU,WACvB,IAAIp0F,EAAGiC,EACP,OAAO,OAASjC,EAAI,OAASiC,EAAI0O,KAAKsjF,WAAWpkE,MAAM,yBAA2B5tB,EAAE,QAAK,GAAUjC,EAAI,GACzG,EAAGA,EAAEU,UAAU2zF,kBAAoB,WACjC,OAAO1jF,KAAKyjF,UAAUv+E,MAAM,KAAKhD,MAAM,EACzC,EAAG7S,EAAEU,UAAU4zF,qBAAuB,WACpC,OAAO3jF,KAAK0jF,oBAAoBxhF,OAAO,GAAG,EAC5C,EAAG7S,EAAEU,UAAU6zF,aAAe,WAC5B,IAAIv0F,EAAGiC,EACP,OAAO,OAASjC,EAAI,OAASiC,EAAI0O,KAAK2jF,uBAAuBzkE,MAAM,aAAe5tB,EAAE,QAAK,GAAUjC,EAAI,EACzG,EAAGA,EAAEU,UAAU8zF,OAAS,WACtB,OAAO7jF,KAAK4jF,eAAe1kE,MAAM,8BACnC,EAAG7vB,EAAEU,UAAU+zF,aAAe,SAAUz0F,GACtC,IAAIiC,EACJ,OAAOA,EAAIrC,EAAEI,GAAI2Q,KAAK+jF,UAAU10F,IAAMT,EAAEoR,KAAKojF,YAAa9xF,EAC5D,EAAGjC,EAAEU,UAAUg0F,UAAY,SAAU10F,GACnC,OAAO2Q,KAAKojF,eAAiB,MAAQ/zF,EAAIA,EAAE+zF,iBAAc,EAC3D,EAAG/zF,EAAEU,UAAUi0F,WAAa,WAC1B,OAAOhkF,KAAKsjF,UACd,EAAGj0F,EAAEU,UAAUk0F,OAAS,WACtB,OAAOjkF,KAAKojF,WACd,EAAG/zF,EAAEU,UAAUkS,SAAW,WACxB,OAAOjC,KAAKojF,WACd,EAAG/zF,EAAEU,UAAUm0F,QAAU,WACvB,OAAOlkF,KAAKojF,WACd,EAAGn0F,EAAI,SAAUI,GACf,OAAOiC,EAAEjC,EAAEm0F,YAAcn0F,EAAEo0F,UAC7B,EAAGnyF,EAAI,SAAUjC,GACf,OAAOO,EAAEP,EAAG,KAAOA,EAAIA,EAAI,GAC7B,EAAGT,EAAI,SAAUS,EAAGiC,GAClB,OAAOjC,EAAE6S,MAAM,EAAG5Q,EAAEc,UAAYd,CAClC,EAAG1B,EAAI,SAAUP,EAAGiC,GAClB,OAAOjC,EAAE6S,OAAO5Q,EAAEc,UAAYd,CAChC,EAAGjC,CACL,CA5Ca,EA6Cf,EAAEf,KAAK0R,MAAO,WACZ,IAAI3Q,EAAI,SAAUA,EAAGiC,GACnB,OAAO,WACL,OAAOjC,EAAE6T,MAAM5R,EAAGa,UACpB,CACF,EACAb,EAAE6yF,YAAc,WACd,SAASl1F,EAAEA,EAAGW,EAAGhB,GACfoR,KAAKokF,SAAWn1F,EAAG+Q,KAAKqkF,gBAAkBh1F,EAAE2Q,KAAKqkF,gBAAiBrkF,MAAOA,KAAKskF,gBAAkBj1F,EAAE2Q,KAAKskF,gBAAiBtkF,MAAOA,KAAKukF,cAAgBl1F,EAAE2Q,KAAKukF,cAAevkF,MAAOA,KAAKwkF,cAAgBn1F,EAAE2Q,KAAKwkF,cAAexkF,MAAOA,KAAKykF,kBAAoBp1F,EAAE2Q,KAAKykF,kBAAmBzkF,MAAOA,KAAK0kF,IAAMpzF,EAAE2xF,SAAShxC,KAAKriD,GAAG0zF,WAAYtjF,KAAK2kF,SAAWrzF,EAAE2xF,SAAShxC,KAAKrjD,GAAGw0F,YAAapjF,KAAK4kF,WAC9X,CACA,OAAO31F,EAAE41F,gBAAkB,EAAG51F,EAAE61F,iBAAmB,EAAG71F,EAAEihE,QAAU,GAAIjhE,EAAEc,UAAUg1F,KAAO,WACvF,IAAI11F,EACJ,OAAO2Q,KAAKglF,MAAQhlF,KAAKilF,MAAQjlF,KAAKklF,sCAAuCllF,KAAKmlF,YAAY,GAAInlF,KAAKglF,IAAID,OAAQ/kF,KAAKilF,MAAO,EAAI,mBAAsB51F,EAAI2Q,KAAKokF,UAAUgB,eAAiB/1F,EAAE+1F,sBAAmB,QAAU,CAC9N,EAAGn2F,EAAEc,UAAUmkC,OAAS,WACtB,OAAOl0B,KAAKglF,KAAOhlF,KAAKilF,KAAOjlF,KAAKglF,IAAIK,aAAU,CACpD,EAAGp2F,EAAEc,UAAU00F,kBAAoB,SAAUp1F,GAC3C,OAAOA,EAAEi2F,iBAAmBtlF,KAAKmlF,YAAY91F,EAAEk2F,OAASl2F,EAAEk7C,YAAS,CACrE,EAAGt7C,EAAEc,UAAUy0F,cAAgB,WAC7B,OAAOxkF,KAAKwlF,WAAW,SAAUn2F,GAC/B,OAAO,WACL,IAAIiC,EACJ,OAAO,MAAQA,EAAIjC,EAAE21F,IAAIS,SAAW,IAAMn0F,EAAIjC,EAAE+0F,SAASsB,6BAA6Br2F,EAAE21F,IAAIW,aAAct2F,EAAE21F,IAAIY,kBAAkB,yBAA2Bv2F,EAAEw2F,QAAS,EAAIx2F,EAAE+0F,SAAS0B,4BAA4Bz2F,EAAE21F,IAAIS,OAAQp2F,EAAE21F,IAAIW,cACzO,CACF,CALuB,CAKrB3lF,MACJ,EAAG/Q,EAAEc,UAAUw0F,cAAgB,WAC7B,OAAOvkF,KAAKwlF,WAAW,SAAUn2F,GAC/B,OAAO,WACL,OAAOA,EAAEw2F,QAAS,EAAIx2F,EAAE+0F,SAAS0B,4BAA4Bz2F,EAAEuQ,YAAYilF,gBAC7E,CACF,CAJuB,CAIrB7kF,MACJ,EAAG/Q,EAAEc,UAAUu0F,gBAAkB,WAC/B,OAAOtkF,KAAKwlF,WAAW,SAAUn2F,GAC/B,OAAO,WACL,OAAOA,EAAEw2F,QAAS,EAAIx2F,EAAE+0F,SAAS0B,4BAA4Bz2F,EAAEuQ,YAAYklF,gBAC7E,CACF,CAJuB,CAIrB9kF,MACJ,EAAG/Q,EAAEc,UAAUs0F,gBAAkB,WAC/B,OAAOrkF,KAAKwlF,YACd,EAAGv2F,EAAEc,UAAUm1F,oCAAsC,WACnD,OAAO5zF,EAAE8wF,SAAS,2BAA4B,CAC5C3pE,KAAM,CACJisE,IAAK1kF,KAAK0kF,IACVM,IAAKhlF,KAAKglF,MAGhB,EAAG/1F,EAAEc,UAAUg2F,iCAAmC,WAChD,OAAOz0F,EAAE8wF,SAAS,yBAA0B,CAC1C3pE,KAAM,CACJisE,IAAK1kF,KAAK0kF,IACVM,IAAKhlF,KAAKglF,MAGhB,EAAG/1F,EAAEc,UAAU60F,UAAY,WACzB,OAAO5kF,KAAKglF,IAAM,IAAIgB,eAAkBhmF,KAAKglF,IAAIiB,KAAK,MAAOjmF,KAAK0kF,KAAK,GAAK1kF,KAAKglF,IAAI90B,QAAU,IAAMlwD,KAAKJ,YAAYswD,QAASlwD,KAAKglF,IAAIkB,iBAAiB,SAAU,oCAAqClmF,KAAKglF,IAAIkB,iBAAiB,sBAAuBlmF,KAAK2kF,UAAW3kF,KAAKglF,IAAImB,WAAanmF,KAAKykF,kBAAmBzkF,KAAKglF,IAAIoB,OAASpmF,KAAKwkF,cAAexkF,KAAKglF,IAAIqB,QAAUrmF,KAAKukF,cAAevkF,KAAKglF,IAAIsB,UAAYtmF,KAAKskF,gBAAiBtkF,KAAKglF,IAAIuB,QAAUvmF,KAAKqkF,eACzc,EAAGp1F,EAAEc,UAAUy1F,WAAa,SAAUn2F,GACpC,OAAO2Q,KAAKglF,KAAOhlF,KAAK+lF,mCAAoC,MAAQ12F,GAAKA,EAAEf,KAAK0R,MAAOA,KAAKm0D,gBAAa,CAC3G,EAAGllE,EAAEc,UAAUo1F,YAAc,SAAU91F,GACrC,IAAIiC,EACJ,OAAO0O,KAAK0zB,SAAWrkC,EAAG,mBAAsBiC,EAAI0O,KAAKokF,UAAUK,kBAAoBnzF,EAAEmzF,kBAAkBzkF,KAAK0zB,eAAY,CAC9H,EAAGzkC,EAAEc,UAAUokE,QAAU,WACvB,IAAI9kE,EACJ,OAAO2Q,KAAKmlF,YAAY,GAAI,mBAAsB91F,EAAI2Q,KAAKokF,UAAUoC,iBAAmBn3F,EAAEm3F,kBAAmBxmF,KAAKokF,SAAW,KAAMpkF,KAAKglF,IAAM,IAChJ,EAAG/1F,CACL,CAzDgB,EA0DlB,EAAEX,KAAK0R,MAAO,WAMZ1O,EAAEm1F,YAAc,WACd,SAASn1F,IACP0O,KAAK0mF,QAPD,SAAUr3F,EAAGiC,GACnB,OAAO,WACL,OAAOjC,EAAE6T,MAAM5R,EAAGa,UACpB,CACF,CAGmB9C,CAAE2Q,KAAK0mF,QAAS1mF,MAAOA,KAAK2mF,kBAAoB3mF,KAAK4mF,0BAA2B5mF,KAAK6mF,gBAAkB7mF,KAAK8mF,uBAC7H,CACA,IAAI73F,EACJ,OAAOA,EAAI,IAAKqC,EAAEy1F,WAAa,8PAAyRz1F,EAAEvB,UAAU8lB,KAAO,WACzU,OAAO7V,KAAK+V,aAAU,GAAU/V,KAAK+V,SAAU,EAAI/V,KAAKgnF,2BAA4BhnF,KAAKinF,yBAA0BjnF,KAAKknF,iBAC1H,EAAG51F,EAAEvB,UAAUimB,KAAO,WACpB,OAAOhW,KAAK+V,UAAY/V,KAAKmnF,QAAUnnF,KAAKmnF,QAAS,EAAInnF,KAAKonF,oBAAoB,SAAU/3F,GAC1F,OAAO,WACL,OAAOA,EAAEg4F,2BAA4Bh4F,EAAEi4F,gBAAiBj4F,EAAE0mB,SAAU,EAAI1mB,EAAE83F,QAAS,CACrF,CACF,CAJkF,CAIhFnnF,aAAU,CACd,EAAG1O,EAAEvB,UAAUw3F,SAAW,SAAUl4F,GAClC,OAAO2Q,KAAK5Q,MAAQC,EAAG2Q,KAAKwnF,SAC9B,EAAGl2F,EAAEvB,UAAUi3F,yBAA2B,WACxC,OAAOt/D,SAAS8d,KAAKiiD,aAAaznF,KAAK2mF,kBAAmBj/D,SAAS8d,KAAKkiD,WAC1E,EAAGp2F,EAAEvB,UAAUk3F,uBAAyB,WACtC,OAAOjnF,KAAK6mF,gBAAgB9zE,MAAMwE,MAAQ,EAAGvX,KAAK6mF,gBAAgB9zE,MAAMm9D,QAAU,EAAGxoD,SAASo6D,gBAAgB2F,aAAaznF,KAAK6mF,gBAAiBn/D,SAASglD,MAAO1sE,KAAKwnF,SACxK,EAAGl2F,EAAEvB,UAAUq3F,oBAAsB,SAAU/3F,GAC7C,OAAO2Q,KAAK6mF,gBAAgB9zE,MAAMm9D,QAAU,EAAG9f,WAAW/gE,EAAG,IAC/D,EAAGiC,EAAEvB,UAAUs3F,yBAA2B,WACxC,OAAOrnF,KAAK6mF,gBAAgBh/D,WAAaH,SAASo6D,gBAAgB6F,YAAY3nF,KAAK6mF,sBAAmB,CACxG,EAAGv1F,EAAEvB,UAAUm3F,eAAiB,WAC9B,OAAO,MAAQlnF,KAAK4nF,gBAAkB5nF,KAAK4nF,gBAAkB5nF,KAAK4nF,gBAAkBC,YAAY7nF,KAAK0mF,QAASz3F,EAChH,EAAGqC,EAAEvB,UAAUu3F,cAAgB,WAC7B,OAAOQ,cAAc9nF,KAAK4nF,iBAAkB5nF,KAAK4nF,gBAAkB,IACrE,EAAGt2F,EAAEvB,UAAU22F,QAAU,WACvB,OAAO1mF,KAAKunF,SAASvnF,KAAK5Q,MAAQkB,KAAK0yF,SAAW,IACpD,EAAG1xF,EAAEvB,UAAUy3F,QAAU,WACvB,OAAOx8E,sBAAsB,SAAU3b,GACrC,OAAO,WACL,OAAOA,EAAEw3F,gBAAgB9zE,MAAMwE,MAAQ,GAAK,GAAKloB,EAAED,MAAQ,GAC7D,CACF,CAJ6B,CAI3B4Q,MACJ,EAAG1O,EAAEvB,UAAU62F,wBAA0B,WACvC,IAAIv3F,EACJ,OAAOA,EAAIq4B,SAASw7D,cAAc,UAAYrjF,KAAO,WAAYxQ,EAAE04F,YAAc/nF,KAAKJ,YAAYmnF,WAAY13F,CAChH,EAAGiC,EAAEvB,UAAU+2F,sBAAwB,WACrC,IAAIz3F,EACJ,OAAOA,EAAIq4B,SAASw7D,cAAc,QAAU8E,UAAY,0BAA2B34F,CACrF,EAAGiC,CACL,CA1CgB,EA2ClB,EAAEhD,KAAK0R,MAAO,WAMZ1O,EAAE22F,eAAiB,WACjB,SAASh5F,EAAEA,GACT+Q,KAAKq4B,WAAappC,EAAG+Q,KAAKkoF,gBAPtB,SAAU74F,EAAGiC,GACnB,OAAO,WACL,OAAOjC,EAAE6T,MAAM5R,EAAGa,UACpB,CACF,CAGgD9C,CAAE2Q,KAAKkoF,gBAAiBloF,MAAOA,KAAKmoF,YAAc,IAAI72F,EAAEm1F,WACtG,CACA,IAAI72F,EAAGhB,EAAGT,EACV,OAAOA,EAAImD,EAAE6yF,YAAav0F,EAAIzB,EAAE02F,gBAAiBj2F,EAAIT,EAAE22F,gBAAiB71F,EAAEc,UAAUq4F,kCAAoC,SAAU/4F,EAAGiC,GACnI,OAAO0O,KAAKq4B,WAAWgwD,+BAA+Bh5F,EAAGiC,EAC3D,EAAGrC,EAAEc,UAAUu4F,aAAe,SAAUj5F,GACtC,OAAOA,EAAEk5F,eAAgBl5F,EAAEm5F,gBAAiBn5F,EAAEo5F,oBAChD,EAAGx5F,EAAEc,UAAU24F,oBAAsB,SAAUr5F,GAC7C,OAAO2Q,KAAKmoF,YAAYZ,SAAS,GAAIl4F,EAAEs5F,qBAAuB,YAAct5F,EAAEu5F,OAAS5oF,KAAK6oF,4BAA8B7oF,KAAKkoF,iBACjI,EAAGj5F,EAAEc,UAAU+4F,uBAAyB,SAAUz5F,GAChD,OAAO2Q,KAAKmoF,YAAYZ,SAASl4F,EAAEqkC,SACrC,EAAGzkC,EAAEc,UAAUg5F,sBAAwB,SAAU15F,GAC/C,OAAOA,EAAE25F,cACX,EAAG/5F,EAAEc,UAAUk5F,iCAAmC,SAAU55F,EAAGiC,GAC7D,OAAQA,GACN,KAAK1B,EACL,KAAKhB,EACH,OAAOoR,KAAKkpF,SACd,QACE,OAAO75F,EAAE25F,eAEf,EAAG/5F,EAAEc,UAAUo5F,qBAAuB,SAAU95F,GAC9C,OAAO2Q,KAAKopF,iBACd,EAAGn6F,EAAEc,UAAUs5F,eAAiB,SAAUh6F,GACxC,OAAOA,EAAEi6F,gBACX,EAAGr6F,EAAEc,UAAUw5F,gBAAkB,WAC/B,OAAOvpF,KAAKkpF,QACd,EAAGj6F,EAAEc,UAAU84F,0BAA4B,WACzC,OAAO7oF,KAAKwpF,mBAAqBp5B,WAAWpwD,KAAKkoF,gBAAiBloF,KAAKq4B,WAAWoxD,iBACpF,EAAGx6F,EAAEc,UAAUm4F,gBAAkB,WAC/B,OAAOloF,KAAKmoF,YAAYtyE,MAC1B,EAAG5mB,EAAEc,UAAUq5F,gBAAkB,WAC/B,OAAOppF,KAAKmoF,YAAYnyE,OAAQm6C,aAAanwD,KAAKwpF,mBACpD,EAAGv6F,EAAEc,UAAUm5F,OAAS,WACtB,OAAOn+E,OAAO2+E,SAASR,QACzB,EAAGj6F,CACL,CAtCmB,EAuCrB,EAAEX,KAAK0R,MAAO,WACZ,IAAI3Q,EAAI,SAAUA,EAAGiC,GACnB,OAAO,WACL,OAAOjC,EAAE6T,MAAM5R,EAAGa,UACpB,CACF,EACAb,EAAEq4F,QAAU,WACV,SAAS16F,EAAEqC,GACT0O,KAAKokF,SAAW9yF,EAAG0O,KAAK4pF,WAAav6F,EAAE2Q,KAAK4pF,WAAY5pF,MAAOA,KAAK6pF,WAAax6F,EAAE2Q,KAAK6pF,WAAY7pF,KACtG,CACA,OAAO/Q,EAAEc,UAAU8Y,MAAQ,WACzB,OAAO7I,KAAK8pF,aAAU,GAAUv+D,iBAAiB,WAAYvrB,KAAK6pF,YAAY,GAAKt+D,iBAAiB,OAAQvrB,KAAK4pF,YAAY,GAAK5pF,KAAK8pF,SAAU,EACnJ,EAAG76F,EAAEc,UAAUkkC,KAAO,WACpB,OAAOj0B,KAAK8pF,SAAWt+D,oBAAoB,WAAYxrB,KAAK6pF,YAAY,GAAKr+D,oBAAoB,OAAQxrB,KAAK4pF,YAAY,GAAK5pF,KAAK8pF,SAAU,QAAM,CACtJ,EAAG76F,EAAEc,UAAUqV,KAAO,SAAU/V,EAAGJ,GACjC,OAAOI,EAAIiC,EAAE2xF,SAAShxC,KAAK5iD,GAAI2Q,KAAKq1B,OAAO,OAAQhmC,EAAGJ,EACxD,EAAGA,EAAEc,UAAU0O,QAAU,SAAUpP,EAAGJ,GACpC,OAAOI,EAAIiC,EAAE2xF,SAAShxC,KAAK5iD,GAAI2Q,KAAKq1B,OAAO,UAAWhmC,EAAGJ,EAC3D,EAAGA,EAAEc,UAAU85F,WAAa,SAAUx6F,GACpC,IAAIJ,EAAGW,EAAGhB,EAAGT,EACb,OAAO6R,KAAK+pF,yBAA2B57F,EAAI,OAASyB,EAAIP,EAAE26F,OAASp6F,EAAEq6F,gBAAa,IAAWh7F,EAAIqC,EAAE2xF,SAAShxC,KAAKlnC,OAAO2+E,UAAW96F,EAAIT,EAAE+7F,sBAAuBlqF,KAAKokF,SAAS+F,iDAAiDl7F,EAAGL,SAAM,CAC1O,EAAGK,EAAEc,UAAU65F,WAAa,SAAUv6F,GACpC,OAAOiC,EAAE4wF,MAAM,SAAU7yF,GACvB,OAAO,WACL,OAAOA,EAAE+6F,YAAa,CACxB,CACF,CAJe,CAIbpqF,MACJ,EAAG/Q,EAAEc,UAAUg6F,qBAAuB,WACpC,OAAO/pF,KAAKqqF,cACd,EAAGp7F,EAAEc,UAAUs6F,aAAe,WAC5B,OAAOrqF,KAAKoqF,YAAc,aAAe1iE,SAAS4iE,UACpD,EAAGr7F,EAAEc,UAAUslC,OAAS,SAAUhmC,EAAGiC,EAAGrC,GACtC,IAAIW,EACJ,OAAOA,EAAI,CACTq6F,WAAY,CACVC,sBAAuBj7F,IAExBuyF,QAAQnyF,EAAI,SAASO,EAAG,KAAM0B,EACnC,EAAGrC,CACL,CAjCY,EAkCd,EAAEX,KAAK0R,MAAO,WACZ1O,EAAEi5F,YAAc,WACd,SAASl7F,EAAEA,GACT,IAAIiC,EAAM1B,EAAGM,EAAGkB,EAAGixF,EACnB,IAAKriF,KAAK2S,SAAW,CAAC,EAAG/iB,EAAI,EAAGwB,EAAI/B,EAAE+C,OAAQhB,EAAIxB,EAAGA,KAAKyyF,EAAIhzF,EAAEO,IAAMmyF,WAAaC,KAAKC,eAAiB/xF,EAAImyF,EAAEmI,WAAe,OAASl5F,EAAI0O,KAAK2S,UAAUziB,GAAKoB,EAAEpB,GAAKoB,EAAEpB,GAAK,CAC3K2P,KAAM1R,EAAEk0F,GACRoI,QAAS77F,EAAEyzF,GACX1vE,SAAU,KACPA,SAASvN,KAAKi9E,GACrB,CACA,IAAI/wF,EAAGrC,EAAGW,EAAGhB,EAAGT,EAChB,OAAOkB,EAAEq7F,gBAAkB,SAAUr7F,GACnC,IAAIiC,EACJ,OAAO,IAAI0O,KAAK,OAAS1O,EAAI,MAAQjC,EAAIA,EAAEs7F,gBAAa,GAAUr5F,EAAI,GACxE,EAAGjC,EAAEU,UAAU66F,kBAAoB,SAAUv7F,GAC3C,OAAOA,KAAK2Q,KAAK2S,QACnB,EAAGtjB,EAAEU,UAAU86F,2BAA6B,WAC1C,IAAIx7F,EACJ,OAAO,WACL,IAAIJ,EAAGW,EAEP,IAAKP,KADcO,EAAI,GAAvBX,EAAI+Q,KAAK2S,SACQ1jB,EAAEI,GAAGo7F,SAAc76F,EAAEwV,KAAK/V,GAC3C,OAAOO,CACT,EAAEtB,KAAK0R,MAAM8iB,KAAK,GACpB,EAAGzzB,EAAEU,UAAU+6F,8BAAgC,SAAUz7F,GACvD,OAAO2Q,KAAK+qF,oCAAoC,SAAU17F,EAC5D,EAAGA,EAAEU,UAAUi7F,kCAAoC,SAAU37F,GAC3D,OAAO2Q,KAAK+qF,oCAAoC,aAAc17F,EAChE,EAAGA,EAAEU,UAAUg7F,oCAAsC,SAAU17F,EAAGiC,GAChE,IAAIrC,EAAGW,EAAGhB,EAAGT,EAAG+B,EAAGkB,EAEnB,IAAKxB,KADcM,EAAI,GAAvBtB,EAAIoR,KAAK2S,SACcvhB,GAAVjD,EAAIS,EAAEgB,IAAUiQ,KAAM5Q,EAAId,EAAEwkB,SAAUvhB,IAAM/B,GAAKiC,EAAEs5F,kBAAkBh7F,IAAMM,EAAEkV,KAAKnW,EAAE,IACjG,OAAOiB,CACT,EAAGb,EAAEU,UAAUk7F,uBAAyB,WACtC,IAAI57F,EAAGiC,EAAGrC,EAAGW,EAAGhB,EAAGT,EAAG+B,EAEtB,IAAKoB,KADLrC,EAAI,GAAIW,EAAIoQ,KAAK2S,SACMziB,GAAVtB,EAAIgB,EAAE0B,IAAUuO,KAAM1R,EAAIS,EAAE67F,QAASp7F,EAAIT,EAAE+jB,SAAU,MAAQziB,GAAK/B,EAAIkB,EAAE+C,OAAS,GAAKnD,EAAEmW,KAAKlC,MAAMjU,EAAGI,EAAE6S,MAAM,IAAMjT,EAAEmW,KAAKlC,MAAMjU,EAAGI,GACjJ,OAAOJ,CACT,EAAGI,EAAEU,UAAUm7F,aAAe,SAAU77F,GACtC,IAAIiC,EACJ,OAAO,OAASA,EAAI0O,KAAKmrF,sBAAsB97F,IAAMiC,EAAE0nD,aAAa,gBAAa,CACnF,EAAG3pD,EAAEU,UAAUo7F,sBAAwB,SAAU97F,GAC/C,IAAIJ,EAAGW,EAAGhB,EAAGT,EAEb,IAAKS,KADLK,OAAI,EAAQd,EAAI6R,KAAK2S,SACR/iB,EAAIzB,EAAES,GAAG+jB,SAAUrhB,EAAE1B,EAAE,GAAIP,KAAOJ,EAAIW,EAAE,IACrD,OAAOX,CACT,EAAGd,EAAI,SAAUkB,GACf,OAAOJ,EAAEI,GAAK,SAAWO,EAAEP,GAAK,kBAAe,CACjD,EAAGT,EAAI,SAAUS,GACf,MAAO,WAAaA,EAAE2pD,aAAa,wBACrC,EAAG/pD,EAAI,SAAUI,GAEf,MAAoC,WAAzBA,EAAE+7F,QAAQvsF,aACvB,EAAGjP,EAAI,SAAUP,GACf,IAAIiC,EACJ,MAAoC,WAA7BA,EAAIjC,EAAE+7F,QAAQvsF,gBAAgC,SAAWvN,GAAK,eAAiBjC,EAAE2pD,aAAa,MACvG,EAAG1nD,EAAI,SAAUjC,EAAGiC,GAElB,MAAoC,SAAzBjC,EAAE+7F,QAAQvsF,eAA+BxP,EAAE2pD,aAAa,UAAY1nD,CACjF,EAAGjC,CACL,CA3DgB,EA4DlB,EAAEf,KAAK0R,MAAO,WACZ1O,EAAE+5F,SAAW,WACX,SAASh8F,EAAEA,EAAGiC,GACZ0O,KAAKsrF,YAAcj8F,EAAG2Q,KAAKurF,YAAcj6F,CAC3C,CACA,OAAOjC,EAAE4iD,KAAO,SAAU5iD,GACxB,OAAOA,aAAa2Q,KAAO3Q,EAAI,iBAAmBA,EAAI2Q,KAAKwrF,eAAen8F,GAAK2Q,KAAKyrF,gBAAgBp8F,EACtG,EAAGA,EAAEm8F,eAAiB,SAAUn8F,GAC9B,IAAIiC,EACJ,OAAOA,EAAIo2B,SAASw7D,cAAc,SAAWwI,UAAYr8F,EAAG2Q,KAAKyrF,gBAAgBn6F,EACnF,EAAGjC,EAAEo8F,gBAAkB,SAAUp8F,GAC/B,IAAIJ,EAAML,EAAGT,EACb,OAAOS,EAAIS,EAAEs8F,cAAc,QAAS18F,EAAI,OAASd,EAAIkB,EAAEs8F,cAAc,SAAWx9F,EAAIu5B,SAASw7D,cAAc,QAA+C,IAAIljF,KAAtC1O,EAAEi5F,YAAYG,gBAAgB97F,GAAgBK,EACxK,EAAGI,EAAEU,UAAUoP,MAAQ,WACrB,OAAO,IAAIa,KAAKJ,YAAYI,KAAKsrF,YAAatrF,KAAKurF,YAAYK,WAAU,GAC3E,EAAGv8F,EAAEU,UAAU87F,gBAAkB,WAC/B,IAAIx8F,EAAGJ,EACP,OAAOA,EAAI,OAASI,EAAI2Q,KAAK8rF,WAAW,SAAWz8F,EAAI,IAAK,IAAIiC,EAAE2xF,SAASh0F,EAC7E,EAAGI,EAAEU,UAAUg8F,qBAAuB,WACpC,OAAO/rF,KAAK8rF,WAAW,gBACzB,EAAGz8F,EAAEU,UAAUi8F,oBAAsB,SAAU38F,GAC7C,IACE,OAAO2Q,KAAKurF,YAAYI,cAAc,QAAUt8F,EAAI,eAAiBA,EAAI,KAC3E,CAAE,MAAOiC,GAAI,CACf,EAAGjC,EAAEU,UAAUk8F,qBAAuB,WACpC,OAAOjsF,KAAKurF,YAAYW,iBAAiB,kCAC3C,EAAG78F,EAAEU,UAAUo8F,wBAA0B,SAAU98F,GACjD,OAAO2Q,KAAKurF,YAAYI,cAAc,IAAMt8F,EAAI,8BAClD,EAAGA,EAAEU,UAAUq8F,sCAAwC,SAAU/8F,GAC/D,IAAIiC,EAAGrC,EAAGW,EAAGhB,EAAGT,EAChB,IAAsCA,EAAI,GAAIc,EAAI,EAAGW,GAAhDhB,EAAIoR,KAAKisF,wBAA6C75F,OAAQxC,EAAIX,EAAGA,IAAKqC,EAAI1C,EAAEK,GAAII,EAAE88F,wBAAwB76F,EAAEyQ,KAAO5T,EAAEiX,KAAK9T,GACnI,OAAOnD,CACT,EAAGkB,EAAEU,UAAUs8F,8BAAgC,WAC7C,OAAOrsF,KAAKurF,YAAYI,cAAc,cACxC,EAAGt8F,EAAEU,UAAUu8F,UAAY,SAAUj9F,GACnC,OAAO,MAAQ2Q,KAAKgsF,oBAAoB38F,EAC1C,EAAGA,EAAEU,UAAUw8F,cAAgB,WAC7B,MAAO,eAAiBvsF,KAAK+rF,sBAC/B,EAAG18F,EAAEU,UAAUy8F,YAAc,WAC3B,MAAO,aAAexsF,KAAK+rF,sBAC7B,EAAG18F,EAAEU,UAAU08F,YAAc,WAC3B,MAAO,WAAazsF,KAAK8rF,WAAW,gBACtC,EAAGz8F,EAAEU,UAAU+7F,WAAa,SAAUz8F,GACpC,OAAO2Q,KAAKsrF,YAAYJ,aAAa,cAAgB77F,EACvD,EAAGA,CACL,CA5Ca,EA6Cf,EAAEf,KAAK0R,MAAO,WACZ,IAAI3Q,EAAI,GAAG6S,MACX5Q,EAAEo7F,SAAW,WACX,SAASp7F,IAAK,CACd,IAAIrC,EACJ,OAAOqC,EAAEy/D,OAAS,WAChB,IAAO9hE,EAAGW,EAAGhB,EACb,OAAOgB,EAAIuC,UAAU,GAAIlD,EAAIkD,UAAU,GAA2DvD,EAAI,SAAUS,EAAGiC,EAAGrC,GACpHA,EAAEc,UAAYV,EAAEU,UAChB,IAAIH,EAAI,IAAIX,EACVL,EAAIS,EAAE6T,MAAMtT,EAAG0B,GACjB,OAAOzC,OAAOD,KAAOA,EAAIA,EAAIgB,CAC/B,CALsG,CAKpGoQ,KAL6C,GAAK7N,UAAUC,OAAS/C,EAAEf,KAAK6D,UAAW,GAAK,IAKnF,WAAa,IAAIvD,EAAEw1F,SAAWx0F,EAAGhB,EAAEmiE,OAAO9hE,GAAIL,CAC3D,EAAG0C,EAAEvB,UAAU48F,WAAa,SAAUt9F,GACpC,OAAO2Q,KAAKokF,SAASwI,eAAe5sF,KAAK6sF,SAAUx9F,IAAK2Q,KAAKokF,SAAS0I,aAAa9sF,KAAK6sF,QAC1F,EAAGv7F,EAAEvB,UAAUg9F,eAAiB,WAC9B,OAAO/sF,KAAKokF,SAAS4I,iBACvB,EAAG17F,EAAEvB,UAAUk9F,oBAAsB,SAAU59F,GAC7C,IAAIiC,EACJ,MAAO,UAAYjC,EAAE2pD,aAAa,wBAA0B3pD,IAAKiC,EAAIo2B,SAASw7D,cAAc,WAAa6E,YAAc14F,EAAE04F,YAAaz2F,EAAE47F,OAAQ,EAAIj+F,EAAEqC,EAAGjC,GAAIiC,EAC/J,EAAGrC,EAAI,SAAUI,EAAGiC,GAClB,IAAIrC,EAAGW,EAAGhB,EAAGT,EAAG+B,EAAGkB,EAAGixF,EACtB,IAAuBjxF,EAAI,GAAInC,EAAI,EAAGW,GAAjCzB,EAAImD,EAAE67F,YAAiC/6F,OAAQxC,EAAIX,EAAGA,IAAeL,GAAVsB,EAAI/B,EAAEc,IAAUP,KAAM2zF,EAAInyF,EAAEd,MAAOgC,EAAEgU,KAAK/V,EAAEiqD,aAAa1qD,EAAGyzF,IAC5H,OAAOjxF,CACT,EAAGE,CACL,CAvBa,EAwBf,EAAEhD,KAAK0R,MAAO,WACZ,IAAI3Q,EACFJ,EACAW,EAAI,SAAUP,EAAGiC,GACf,SAASrC,IACP+Q,KAAKJ,YAAcvQ,CACrB,CACA,IAAK,IAAIO,KAAK0B,EAAG1C,EAAEN,KAAKgD,EAAG1B,KAAOP,EAAEO,GAAK0B,EAAE1B,IAC3C,OAAOX,EAAEc,UAAYuB,EAAEvB,UAAWV,EAAEU,UAAY,IAAId,EAAKI,EAAE+9F,UAAY97F,EAAEvB,UAAWV,CACtF,EACAT,EAAI,CAAC,EAAEoB,eACTsB,EAAE+7F,iBAAmB,SAAU/7F,GAC7B,SAAS1C,EAAES,EAAGiC,EAAGrC,GACf+Q,KAAKstF,gBAAkBj+F,EAAG2Q,KAAKutF,YAAcj8F,EAAG0O,KAAKwtF,UAAYv+F,EAAG+Q,KAAKytF,mBAAqBztF,KAAKstF,gBAAgBhC,YAAatrF,KAAK0tF,eAAiB1tF,KAAKutF,YAAYjC,YAAatrF,KAAK2tF,YAAc3tF,KAAKstF,gBAAgB/B,YAAavrF,KAAK6sF,QAAU7sF,KAAKutF,YAAYhC,WAC3Q,CACA,OAAO37F,EAAEhB,EAAG0C,GAAI1C,EAAEmB,UAAUghE,OAAS,SAAU1hE,GAC7C,OAAO2Q,KAAK4tF,gBAAkB5tF,KAAK6tF,YAAa7tF,KAAK2sF,WAAW,SAAUr7F,GACxE,OAAO,WACL,OAAOA,EAAEw8F,cAAex8F,EAAEk8F,WAAal8F,EAAEy8F,iCAAkC1+F,GAC7E,CACF,CAJgE,CAI9D2Q,QAAUA,KAAK+sF,gBACnB,EAAGn+F,EAAEmB,UAAU89F,UAAY,WACzB,OAAO7tF,KAAKguF,gCAAiChuF,KAAKiuF,4BAA6BjuF,KAAKkuF,uCAAwCluF,KAAKmuF,gCACnI,EAAGv/F,EAAEmB,UAAU+9F,YAAc,WAC3B,IAAIz+F,EACJ,OAAOA,EAAI2Q,KAAKouF,uCAAwCpuF,KAAKquF,gCAAiCruF,KAAKsuF,gBAAiBtuF,KAAKuuF,sDAAsDl/F,EACjL,EAAGT,EAAEmB,UAAU69F,aAAe,WAC5B,OAAO5tF,KAAKutF,YAAYd,eAAiBzsF,KAAKwuF,6BAChD,EAAG5/F,EAAEmB,UAAUy+F,4BAA8B,WAC3C,OAAOxuF,KAAKytF,mBAAmB5C,+BAAiC7qF,KAAK0tF,eAAe7C,4BACtF,EAAGj8F,EAAEmB,UAAUi+F,8BAAgC,WAC7C,IAAI3+F,EAAGiC,EAAGrC,EAAGW,EAAGhB,EAChB,IAA8CA,EAAI,GAAI0C,EAAI,EAAGrC,GAAxDW,EAAIoQ,KAAKyuF,gCAAqDr8F,OAAQnD,EAAIqC,EAAGA,IAAKjC,EAAIO,EAAE0B,GAAI1C,EAAEwW,KAAKsiB,SAAS8d,KAAKkpD,YAAYr/F,IAClI,OAAOT,CACT,EAAGA,EAAEmB,UAAUk+F,0BAA4B,WACzC,IAAI5+F,EAAGiC,EAAGrC,EAAGW,EAAGhB,EAChB,IAA0CA,EAAI,GAAI0C,EAAI,EAAGrC,GAApDW,EAAIoQ,KAAK2uF,4BAAiDv8F,OAAQnD,EAAIqC,EAAGA,IAAKjC,EAAIO,EAAE0B,GAAI1C,EAAEwW,KAAKsiB,SAAS8d,KAAKkpD,YAAY1uF,KAAKitF,oBAAoB59F,KACvJ,OAAOT,CACT,EAAGA,EAAEmB,UAAUm+F,qCAAuC,WACpD,IAAI7+F,EAAGiC,EAAGrC,EAAGW,EAAGhB,EAChB,IAAmDA,EAAI,GAAI0C,EAAI,EAAGrC,GAA7DW,EAAIoQ,KAAK4uF,qCAA0Dx8F,OAAQnD,EAAIqC,EAAGA,IAAKjC,EAAIO,EAAE0B,GAAI1C,EAAEwW,KAAKsiB,SAAS8d,KAAKmiD,YAAYt4F,IACvI,OAAOT,CACT,EAAGA,EAAEmB,UAAUo+F,+BAAiC,WAC9C,IAAI9+F,EAAGiC,EAAGrC,EAAGW,EAAGhB,EAChB,IAA+CA,EAAI,GAAI0C,EAAI,EAAGrC,GAAzDW,EAAIoQ,KAAK6uF,iCAAsDz8F,OAAQnD,EAAIqC,EAAGA,IAAKjC,EAAIO,EAAE0B,GAAI1C,EAAEwW,KAAKsiB,SAAS8d,KAAKkpD,YAAYr/F,IACnI,OAAOT,CACT,EAAGA,EAAEmB,UAAUq+F,qCAAuC,WACpD,IAAI98F,EAAG1B,EAAGhB,EAAGT,EAAG+B,EAAGkB,EAAGixF,EACtB,IAAiDA,EAAI,GAAI/wF,EAAI,EAAG1B,GAA3DwB,EAAI4O,KAAK8uF,mCAAwD18F,OAAQxC,EAAI0B,EAAGA,IAAKnD,EAAIiD,EAAEE,GAAIpB,EAAIb,EAAElB,GAAIS,EAAIoR,KAAKutF,YAAYpB,wBAAwBh+F,EAAE4T,IAAK9S,EAAEd,EAAG+B,EAAEk4B,SAAUn5B,EAAEL,EAAGT,GAAIk0F,EAAEj9E,KAAKlV,GACnM,OAAOmyF,CACT,EAAGzzF,EAAEmB,UAAUw+F,sDAAwD,SAAUl/F,GAC/E,IAAIiC,EAAG1B,EAAGhB,EAAGT,EAAMiD,EAAGixF,EACtB,IAAKA,EAAI,GAAIzzF,EAAI,EAAGT,EAAIkB,EAAE+C,OAAQjE,EAAIS,EAAGA,IAAegB,GAAVwB,EAAI/B,EAAET,IAAUw5B,QAAiC92B,EAApBF,EAAE29F,iBAAwBnD,WAAU,GAAKvJ,EAAEj9E,KAAKnW,EAAEW,EAAG0B,IAChI,OAAO+wF,CACT,EAAGzzF,EAAEmB,UAAUs+F,8BAAgC,WAC7C,IAAIh/F,EAAGiC,EAAG1B,EAAGhB,EAAGT,EAAG+B,EACnB,IAA0CA,EAAI,GAAIoB,EAAI,EAAG1C,GAApDT,EAAI6R,KAAKgvF,4BAAiD58F,OAAQxD,EAAI0C,EAAGA,IAAK1B,EAAIzB,EAAEmD,GAAIjC,EAAI2Q,KAAKitF,oBAAoBr9F,GAAIM,EAAEkV,KAAKnW,EAAEW,EAAGP,IAC1I,OAAOa,CACT,EAAGtB,EAAEmB,UAAUu+F,cAAgB,WAC7B,OAAO5mE,SAASglD,KAAO1sE,KAAK6sF,OAC9B,EAAGj+F,EAAEmB,UAAUg+F,+BAAiC,WAC9C,IAAI1+F,EACJ,OAAO,OAASA,EAAI2Q,KAAKutF,YAAYlB,iCAAmCh9F,EAAE4/F,aAAU,CACtF,EAAGrgG,EAAEmB,UAAU0+F,6BAA+B,WAC5C,OAAOzuF,KAAK0tF,eAAe1C,kCAAkChrF,KAAKytF,mBACpE,EAAG7+F,EAAEmB,UAAU4+F,yBAA2B,WACxC,OAAO3uF,KAAK0tF,eAAe5C,8BAA8B9qF,KAAKytF,mBAChE,EAAG7+F,EAAEmB,UAAU6+F,kCAAoC,WACjD,OAAO5uF,KAAKytF,mBAAmBxC,wBACjC,EAAGr8F,EAAEmB,UAAU8+F,8BAAgC,WAC7C,OAAO7uF,KAAK0tF,eAAezC,wBAC7B,EAAGr8F,EAAEmB,UAAU++F,gCAAkC,WAC/C,OAAO9uF,KAAKstF,gBAAgBlB,sCAAsCpsF,KAAKutF,YACzE,EAAG3+F,EAAEmB,UAAUi/F,yBAA2B,WACxC,OAAOhvF,KAAK6sF,QAAQX,iBAAiB,SACvC,EAAGt9F,CACL,CAjEqB,CAiEnB0C,EAAEo7F,UAAWr9F,EAAI,SAAUA,GAC3B,IAAIiC,EACJ,OAAOA,EAAIo2B,SAASw7D,cAAc,SAAW5pC,aAAa,OAAQ,oCAAqChoD,EAAEgoD,aAAa,UAAWjqD,EAAE0S,IAAK,CACtIqmB,QAAS92B,EACTy9F,iBAAkB1/F,EAEtB,EAAGJ,EAAI,SAAUI,EAAGiC,GAClB,IAAIrC,EACJ,OAAQA,EAAII,EAAEw4B,YAAc54B,EAAEigG,aAAa59F,EAAGjC,QAAK,CACrD,CACF,EAAEf,KAAK0R,MAAO,WACZ,IAAI3Q,EAAI,SAAUA,EAAGiC,GACjB,SAAS1B,IACPoQ,KAAKJ,YAAcvQ,CACrB,CACA,IAAK,IAAIT,KAAK0C,EAAGrC,EAAEX,KAAKgD,EAAG1C,KAAOS,EAAET,GAAK0C,EAAE1C,IAC3C,OAAOgB,EAAEG,UAAYuB,EAAEvB,UAAWV,EAAEU,UAAY,IAAIH,EAAKP,EAAE+9F,UAAY97F,EAAEvB,UAAWV,CACtF,EACAJ,EAAI,CAAC,EAAEe,eACTsB,EAAE69F,cAAgB,SAAU79F,GAC1B,SAASrC,EAAEI,GACT,IAAIiC,GACJA,EAAIo2B,SAASw7D,cAAc,SAAWwI,UAAYr8F,EAAG2Q,KAAKovF,QAAU99F,EAAEq6F,cAAc,QAAS3rF,KAAK6sF,QAAUv7F,EAAEq6F,cAAc,OAC9H,CACA,OAAOt8F,EAAEJ,EAAGqC,GAAIrC,EAAEc,UAAUghE,OAAS,SAAU1hE,GAC7C,OAAO2Q,KAAK2sF,WAAW,SAAUr7F,GAC/B,OAAO,WACL,OAAOA,EAAE+9F,qBAAsB/9F,EAAEg+F,6BAA8BjgG,GACjE,CACF,CAJuB,CAIrB2Q,MACJ,EAAG/Q,EAAEc,UAAUs/F,mBAAqB,WAClC,IAAIhgG,EAAGiC,EACP,OAAOA,EAAIo2B,SAAS8d,KAAMn2C,EAAIq4B,SAASglD,KAAMp7E,EAAEu2B,WAAWqnE,aAAalvF,KAAKovF,QAAS99F,GAAIjC,EAAEw4B,WAAWqnE,aAAalvF,KAAK6sF,QAASx9F,EACnI,EAAGJ,EAAEc,UAAUu/F,2BAA6B,WAC1C,IAAIjgG,EAAGiC,EAAGrC,EAAGW,EAAGhB,EAAGT,EACnB,IAAmCA,EAAI,GAAImD,EAAI,EAAGrC,GAA7CW,EAAIoQ,KAAKuvF,qBAA0Cn9F,OAAQnD,EAAIqC,EAAGA,IAAK1C,EAAIgB,EAAE0B,GAAIjC,EAAI2Q,KAAKitF,oBAAoBr+F,GAAIT,EAAEiX,KAAKxW,EAAEi5B,WAAWqnE,aAAa7/F,EAAGT,IAC3J,OAAOT,CACT,EAAGc,EAAEc,UAAUw/F,kBAAoB,WACjC,OAAO7nE,SAASo6D,gBAAgBoK,iBAAiB,SACnD,EAAGj9F,CACL,CArBkB,CAqBhBqC,EAAEo7F,SACN,EAAEp+F,KAAK0R,MAAO,WACZ1O,EAAEk+F,KAAO,WACP,SAASngG,EAAEA,GACT2Q,KAAKokF,SAAW/0F,EAAG2Q,KAAKyvF,YAAc/nE,SAASo6D,eACjD,CACA,OAAOzyF,EAAEU,UAAU87F,gBAAkB,WACnC,OAAO7rF,KAAK0vF,cAAc7D,iBAC5B,EAAGx8F,EAAEU,UAAUi8F,oBAAsB,SAAU38F,GAC7C,OAAO2Q,KAAK0vF,cAAc1D,oBAAoB38F,EAChD,EAAGA,EAAEU,UAAU2/F,YAAc,WAC3B,OAAOp+F,EAAE+5F,SAASI,gBAAgBzrF,KAAKyvF,YACzC,EAAGpgG,EAAEU,UAAUghE,OAAS,SAAU1hE,EAAGiC,GACnC,IAAIrC,EAAGW,EAAGhB,EACV,OAAOA,EAAIS,EAAEsgG,SAAU1gG,EAAII,EAAE88D,MAAOv8D,EAAIP,EAAEm+F,UAAWxtF,KAAK4vF,cAAchgG,GAAI,MAAQhB,EAAIoR,KAAK6vF,eAAejhG,EAAGgB,EAAG0B,GAAK0O,KAAK8vF,YAAY7gG,EAAGqC,EAC7I,EAAGjC,EAAEU,UAAU6/F,cAAgB,SAAUvgG,GACvC,OAAOA,EAAI2Q,KAAKyvF,YAAYn2C,aAAa,0BAA2B,IAAMt5C,KAAKyvF,YAAYp2C,gBAAgB,0BAC7G,EAAGhqD,EAAEU,UAAU8/F,eAAiB,SAAUxgG,EAAGJ,EAAGW,GAC9C,OAAO0B,EAAE+7F,iBAAiBt8B,OAAO/wD,KAAKokF,SAAUx0F,EAAGoQ,KAAK0vF,cAAep+F,EAAE+5F,SAASp5C,KAAK5iD,GAAIJ,EAC7F,EAAGI,EAAEU,UAAU+/F,YAAc,SAAUzgG,EAAGJ,GACxC,OAAOqC,EAAE69F,cAAcp+B,OAAO/wD,KAAKokF,SAAUn1F,EAAGI,EAClD,EAAGA,CACL,CApBS,EAqBX,EAAEf,KAAK0R,MAAO,WAMZ1O,EAAEy+F,cAAgB,WAChB,SAAS9gG,EAAEA,GACT+Q,KAAKokF,SAAWn1F,EAAG+Q,KAAKgwF,SAPpB,SAAU3gG,EAAGiC,GACnB,OAAO,WACL,OAAOjC,EAAE6T,MAAM5R,EAAGa,UACpB,CACF,CAGuC9C,CAAE2Q,KAAKgwF,SAAUhwF,MAAOA,KAAKgwF,SAAW1+F,EAAE6wF,SAASniF,KAAKgwF,SAC7F,CACA,OAAO/gG,EAAEc,UAAU8Y,MAAQ,WACzB,OAAO7I,KAAK8pF,aAAU,GAAUv+D,iBAAiB,SAAUvrB,KAAKgwF,UAAU,GAAKhwF,KAAKgwF,WAAYhwF,KAAK8pF,SAAU,EACjH,EAAG76F,EAAEc,UAAUkkC,KAAO,WACpB,OAAOj0B,KAAK8pF,SAAWt+D,oBAAoB,SAAUxrB,KAAKgwF,UAAU,GAAKhwF,KAAK8pF,SAAU,QAAM,CAChG,EAAG76F,EAAEc,UAAUkgG,gBAAkB,SAAU5gG,GACzC,OAAOA,EAAE6gG,gBACX,EAAGjhG,EAAEc,UAAUogG,iBAAmB,SAAU9gG,GAC1C,IAAIiC,EAAGrC,EACP,OAAOqC,EAAIjC,EAAEmE,EAAGvE,EAAII,EAAEyV,EAAGiG,OAAOqlF,SAAS9+F,EAAGrC,EAC9C,EAAGA,EAAEc,UAAUigG,SAAW,SAAU3gG,GAClC,OAAO2Q,KAAKqwF,eAAe,CACzB78F,EAAGuX,OAAOulF,YACVxrF,EAAGiG,OAAOwlF,aAEd,EAAGthG,EAAEc,UAAUsgG,eAAiB,SAAUhhG,GACxC,IAAIiC,EACJ,OAAO0O,KAAK8vC,SAAWzgD,EAAG,OAASiC,EAAI0O,KAAKokF,UAAY9yF,EAAEk/F,sBAAsBxwF,KAAK8vC,eAAY,CACnG,EAAG7gD,CACL,CAtBkB,EAuBpB,EAAEX,KAAK0R,MAAO,WACZ1O,EAAEm/F,cAAgB,WAChB,SAASphG,EAAEA,GACT2Q,KAAK4F,KAAOvW,EAAG2Q,KAAK5B,KAAO,GAAI4B,KAAK0wF,UAAY,CAAC,CACnD,CACA,IAAIzhG,EACJ,OAAOI,EAAEU,UAAU+V,IAAM,SAAUzW,GAEjC,OAAWJ,EAAEI,KAAS2Q,KAAK0wF,SAC7B,EAAGrhG,EAAEU,UAAUf,IAAM,SAAUK,GAC7B,IAAIiC,EACJ,GAAI0O,KAAK8F,IAAIzW,GAAI,OAAOiC,EAAI0O,KAAKuf,KAAKlwB,GAAI2Q,KAAK2wF,MAAMthG,GAAIiC,CAC3D,EAAGjC,EAAEU,UAAU6gG,IAAM,SAAUvhG,EAAGiC,GAChC,OAAO0O,KAAK6wF,MAAMxhG,EAAGiC,GAAI0O,KAAK2wF,MAAMthG,GAAIiC,CAC1C,EAAGjC,EAAEU,UAAUwvB,KAAO,SAAUlwB,GAC9B,IAAIiC,EACJ,OAAOA,EAAIrC,EAAEI,GAAI2Q,KAAK0wF,UAAUp/F,EAClC,EAAGjC,EAAEU,UAAU8gG,MAAQ,SAAUxhG,EAAGiC,GAClC,IAAI1B,EACJ,OAAOA,EAAIX,EAAEI,GAAI2Q,KAAK0wF,UAAU9gG,GAAK0B,CACvC,EAAGjC,EAAEU,UAAU4gG,MAAQ,SAAUthG,GAC/B,IAAIiC,EAAG1B,EACP,OAAOA,EAAIX,EAAEI,IAAIiC,EAAI0O,KAAK5B,KAAK8F,QAAQtU,KAAS,GAAKoQ,KAAK5B,KAAKkM,OAAOhZ,EAAG,GAAI0O,KAAK5B,KAAKslE,QAAQ9zE,GAAIoQ,KAAK8wF,MAC1G,EAAGzhG,EAAEU,UAAU+gG,KAAO,WACpB,IAAIzhG,EAAGiC,EAAGrC,EAAGW,EAAGhB,EAChB,IAAsCA,EAAI,GAAIS,EAAI,EAAGJ,GAAhDW,EAAIoQ,KAAK5B,KAAKkM,OAAOtK,KAAK4F,OAA4BxT,OAAQnD,EAAII,EAAGA,IAAKiC,EAAI1B,EAAEP,GAAIT,EAAEwW,YAAYpF,KAAK0wF,UAAUp/F,IACtH,OAAO1C,CACT,EAAGK,EAAI,SAAUI,GACf,OAAOiC,EAAE2xF,SAAShxC,KAAK5iD,GAAG20F,YAC5B,EAAG30F,CACL,CA7BkB,EA8BpB,EAAEf,KAAK0R,MAAO,WAMZ1O,EAAEy/F,MAAQ,WACR,SAAS9hG,EAAEA,EAAGW,EAAGhB,GACfoR,KAAKq4B,WAAappC,EAAG+Q,KAAK4oF,OAASh6F,EAAGoR,KAAKgxF,cAPvC,SAAU3hG,EAAGiC,GACnB,OAAO,WACL,OAAOjC,EAAE6T,MAAM5R,EAAGa,UACpB,CACF,CAG+D9C,CAAE2Q,KAAKgxF,cAAehxF,MAAOA,KAAKixF,WAAa3/F,EAAEyxF,OAAQ/iF,KAAK0pF,SAAWp4F,EAAE2xF,SAAShxC,KAAKriD,GAAIoQ,KAAKw8E,QAAUx8E,KAAKq4B,WAAWmkD,QAASx8E,KAAKgqF,MAAQ,cAAehqF,KAAKkxF,cAAgB,CAAC,CACpP,CACA,IAAIthG,EACJ,OAAOX,EAAEc,UAAU8Y,MAAQ,WACzB,MAAO,gBAAkB7I,KAAKgqF,OAAShqF,KAAKmxF,mBAAmB,cAAenxF,KAAKgqF,MAAQ,UAAWhqF,KAAKw8E,QAAQ8L,aAAatoF,YAAS,CAC3I,EAAG/Q,EAAEc,UAAUmkC,OAAS,WACtB,IAAI7kC,EACJ,MAAO,YAAc2Q,KAAKgqF,OAAS,OAAS36F,EAAI2Q,KAAKoxF,UAAY/hG,EAAE6kC,SAAUl0B,KAAKqxF,eAAgBrxF,KAAKgqF,MAAQ,iBAAc,CAC/H,EAAG/6F,EAAEc,UAAU0jC,SAAW,WACxB,IAAIpkC,EACJ,MAAO,YAAc2Q,KAAKgqF,OAAShqF,KAAKmxF,mBAAmB,YAAanxF,KAAKgqF,MAAQ,YAAa,mBAAsB36F,EAAI2Q,KAAKw8E,SAAS6M,gBAAkBh6F,EAAEg6F,eAAerpF,MAAOA,KAAKq4B,WAAWgxD,eAAerpF,YAAS,CAC9N,EAAG/Q,EAAEc,UAAUuhG,KAAO,WACpB,IAAIjiG,EACJ,MAAO,YAAc2Q,KAAKgqF,OAAShqF,KAAKgqF,MAAQ,SAAU,mBAAsB36F,EAAI2Q,KAAKw8E,SAAS+U,YAAcliG,EAAEkiG,YAAYvxF,WAAQ,QAAU,CAClJ,EAAG/Q,EAAEc,UAAUy4F,cAAgB,WAC7B,IAAIn5F,EAAGiC,EACP,OAAO0O,KAAKwxF,oBAAiB,GAAUniG,EAAI2Q,KAAK0pF,SAAS3F,UAAU/jF,KAAK2kF,UAAY,UAAY3kF,KAAK4oF,OAAQt3F,EAAI1B,EAAEP,GAAI2Q,KAAKq4B,WAAW/mC,GAAG0O,KAAK0pF,SAAU1pF,KAAKkqF,uBAAwBlqF,KAAKwxF,gBAAiB,EAC9M,EAAGviG,EAAEc,UAAUw4F,aAAe,WAC5B,OAAOvoF,KAAKyxF,sBAAwB,MAAQzxF,KAAKoxF,SAAWpxF,KAAK0zB,SAAW,EAAG1zB,KAAKoxF,QAAU,IAAI9/F,EAAE6yF,YAAYnkF,KAAMA,KAAK0pF,SAAU1pF,KAAK2kF,UAAW3kF,KAAKoxF,QAAQrM,aAAU,CAC9K,EAAG91F,EAAEc,UAAU2hG,kBAAoB,WACjC,IAAIriG,EACJ,QAASA,EAAI2Q,KAAKq4B,WAAWs5D,6BAA6B3xF,KAAK0pF,YAAc,MAAQ1pF,KAAK0pF,SAASnG,SAAWl0F,EAAEi9F,UAAUtsF,KAAK0pF,SAASnG,SAAW,YAAcvjF,KAAK4oF,SAAWv5F,EAAEk9F,qBAAkB,EAASl9F,CAChN,EAAGJ,EAAEc,UAAU44F,kBAAoB,WACjC,OAAO,MAAQ3oF,KAAK0xF,mBACtB,EAAGziG,EAAEc,UAAU04F,mBAAqB,WAClC,IAAIp5F,EAAGiC,EACP,OAAQA,EAAI0O,KAAK0xF,sBAAwBriG,EAAI2Q,KAAKyxF,qBAAsBzxF,KAAK+wD,QAAO,WAClF,IAAI9hE,EACJ,OAAO+Q,KAAK4xF,gBAAiB5xF,KAAKq4B,WAAW04B,OAAO,CAClD4+B,SAAUr+F,EACVk8F,UAAWn+F,GACV2Q,KAAKgxF,eAAgB,mBAAsB/hG,EAAI+Q,KAAKw8E,SAASqV,eAAiB5iG,EAAE4iG,cAAc7xF,MAAO3Q,OAAI,EAAS2Q,KAAKyzB,UAC5H,UAAM,CACR,EAAGxkC,EAAEc,UAAUi5F,aAAe,WAC5B,OAAO,MAAQhpF,KAAK8xF,SAAW9xF,KAAK+wD,QAAO,WACzC,IAAI1hE,EAAGiC,EACP,OAAO0O,KAAK4xF,gBAAiB5xF,KAAKoxF,QAAQvL,QAAU7lF,KAAKq4B,WAAW04B,OAAO,CACzE5E,MAAOnsD,KAAK8xF,UACX9xF,KAAKgxF,eAAgB,mBAAsB3hG,EAAI2Q,KAAKw8E,SAASqV,eAAiBxiG,EAAEwiG,cAAc7xF,MAAOA,KAAKsxF,SAAWtxF,KAAKq4B,WAAW04B,OAAO,CAC7I4+B,SAAU3vF,KAAK8xF,UACd9xF,KAAKgxF,eAAgB,mBAAsB1/F,EAAI0O,KAAKw8E,SAASqV,eAAiBvgG,EAAEugG,cAAc7xF,MAAOA,KAAKyzB,WAC/G,SAAK,CACP,EAAGxkC,EAAEc,UAAUu5F,eAAiB,WAC9B,OAAOtpF,KAAK+xF,uBAAyB/xF,KAAKgyF,kBAAoBhyF,KAAK0pF,SAAW1pF,KAAK+xF,qBAAsB/xF,KAAKq4B,WAAW45D,mDAAmDjyF,KAAK+xF,qBAAsB/xF,KAAKkqF,uBAAwBlqF,KAAKgyF,kBAAmB,QAAM,CACpQ,EAAG/iG,EAAEc,UAAUq1F,eAAiB,WAC9B,IAAI/1F,EACJ,OAAO2Q,KAAKmxF,mBAAmB,gBAAiB,mBAAsB9hG,EAAI2Q,KAAKw8E,SAASkM,oBAAsBr5F,EAAEq5F,oBAAoB1oF,WAAQ,CAC9I,EAAG/Q,EAAEc,UAAU00F,kBAAoB,SAAUp1F,GAC3C,IAAIiC,EACJ,OAAO0O,KAAK0zB,SAAWrkC,EAAG,mBAAsBiC,EAAI0O,KAAKw8E,SAASsM,uBAAyBx3F,EAAEw3F,uBAAuB9oF,WAAQ,CAC9H,EAAG/Q,EAAEc,UAAU21F,6BAA+B,SAAUr2F,EAAGJ,GACzD,OAAO+Q,KAAK8xF,SAAWziG,EAAG,MAAQJ,IAAM+Q,KAAK+xF,qBAAuBzgG,EAAE2xF,SAAShxC,KAAKhjD,IAAK+Q,KAAKw8E,QAAQuM,sBAAsB/oF,KAC9H,EAAG/Q,EAAEc,UAAU+1F,4BAA8B,SAAUz2F,EAAGiC,GACxD,OAAO0O,KAAK8xF,SAAWxgG,EAAG0O,KAAKw8E,QAAQyM,iCAAiCjpF,KAAM3Q,EAChF,EAAGJ,EAAEc,UAAUy2F,gBAAkB,WAC/B,IAAIn3F,EACJ,OAAO2Q,KAAKmxF,mBAAmB,cAAe,mBAAsB9hG,EAAI2Q,KAAKw8E,SAAS2M,qBAAuB95F,EAAE85F,qBAAqBnpF,WAAQ,CAC9I,EAAG/Q,EAAEc,UAAUihG,cAAgB,WAC7B,OAAOhxF,KAAKkyF,cAAW,GAAU,YAAclyF,KAAK4oF,OAAS5oF,KAAKmyF,4BAA8BnyF,KAAKoyF,cAAgBpyF,KAAKqyF,kBAAoBryF,KAAKoyF,cAAepyF,KAAKkyF,UAAW,EACpL,EAAGjjG,EAAEc,UAAUoiG,yBAA2B,WACxC,IAAI9iG,EAAGiC,EACP,OAA2E,OAApEjC,EAAI,OAASiC,EAAI0O,KAAKsyF,iBAAmBhhG,EAAEihG,oBAAiB,IAAqBvyF,KAAKq4B,WAAW83D,iBAAiB9gG,IAAI,QAAM,CACrI,EAAGJ,EAAEc,UAAUsiG,eAAiB,WAC9B,OAAO,MAAQryF,KAAK0pF,SAASnG,QAAUvjF,KAAKq4B,WAAWg6D,eAAeryF,KAAK0pF,SAASnG,SAAS,QAAM,CACrG,EAAGt0F,EAAEc,UAAUqiG,YAAc,WAC3B,OAAOpyF,KAAKq4B,WAAW83D,iBAAiB,CACtC38F,EAAG,EACHsR,EAAG,GAEP,EAAG7V,EAAEc,UAAUohG,mBAAqB,SAAU9hG,GAC5C,IAAIiC,EACJ,OAAO,OAASA,EAAI0O,KAAKkxF,eAAe7hG,GAAKiC,EAAEjC,GAAKiC,EAAEjC,IAAK,IAAIyjC,MAAO0/D,SACxE,EAAGvjG,EAAEc,UAAU0iG,iBAAmB,WAChC,OAAOnhG,EAAEswF,WAAW5hF,KAAKkxF,cAC3B,EAAGthG,EAAI,SAAUP,GACf,OAAQA,GACN,IAAK,UACH,MAAO,qDACT,IAAK,UACL,IAAK,UACH,MAAO,kDAEb,EAAGJ,EAAEc,UAAU0hG,mBAAqB,WAClC,MAAO,YAAczxF,KAAK4oF,SAAU5oF,KAAK2oF,mBAC3C,EAAG15F,EAAEc,UAAU6hG,cAAgB,WAC7B,OAAO5xF,KAAK0yF,oBAAiB,GAAU1yF,KAAKq4B,WAAWu5D,gBAAiB5xF,KAAK0yF,gBAAiB,EAChG,EAAGzjG,EAAEc,UAAUghE,OAAS,SAAU1hE,GAChC,OAAO2Q,KAAKqxF,eAAgBrxF,KAAK2yF,MAAQ3nF,sBAAsB,SAAU1Z,GACvE,OAAO,WACL,OAAOA,EAAEqhG,MAAQ,KAAMtjG,EAAEf,KAAKgD,EAChC,CACF,CAJ+D,CAI7D0O,MACJ,EAAG/Q,EAAEc,UAAUshG,aAAe,WAC5B,OAAOrxF,KAAK2yF,MAAQC,qBAAqB5yF,KAAK2yF,YAAS,CACzD,EAAG1jG,CACL,CAjGU,EAkGZ,EAAEX,KAAK0R,MAAO,WACZ,IAAI3Q,EAAI,SAAUA,EAAGiC,GACnB,OAAO,WACL,OAAOjC,EAAE6T,MAAM5R,EAAGa,UACpB,CACF,EACAb,EAAEuhG,WAAa,WACb,SAAS5jG,IACP+Q,KAAK8yF,aAAezjG,EAAE2Q,KAAK8yF,aAAc9yF,MAAOA,KAAK+yF,cAAgB1jG,EAAE2Q,KAAK+yF,cAAe/yF,MAAOA,KAAKoqF,WAAa/6F,EAAE2Q,KAAKoqF,WAAYpqF,MAAOA,KAAKwhF,QAAU,IAAIlwF,EAAEq4F,QAAQ3pF,MAAOA,KAAKgzF,KAAO,IAAI1hG,EAAEk+F,KAAKxvF,MAAOA,KAAKizF,cAAgB,IAAI3hG,EAAEy+F,cAAc/vF,MAAOA,KAAKsyF,gBAAkB,CAAC,EAAGtyF,KAAKotD,aAAcptD,KAAK2hF,oBAAoB,IACzU,CACA,OAAO1yF,EAAEc,UAAU8Y,MAAQ,WACzB,OAAOvX,EAAEiwF,YAAcvhF,KAAK8pF,SAAWv+D,iBAAiB,QAASvrB,KAAK+yF,eAAe,GAAKxnE,iBAAiB,mBAAoBvrB,KAAKoqF,YAAY,GAAKpqF,KAAKizF,cAAcpqF,QAAS7I,KAAKkzF,eAAgBlzF,KAAK8pF,SAAU,EAAI9pF,KAAK46C,SAAU,QAAM,CAChP,EAAG3rD,EAAEc,UAAUojG,QAAU,WACvB,OAAOnzF,KAAK46C,SAAU,CACxB,EAAG3rD,EAAEc,UAAUkkC,KAAO,WACpB,OAAOj0B,KAAK8pF,SAAWt+D,oBAAoB,QAASxrB,KAAK+yF,eAAe,GAAKvnE,oBAAoB,mBAAoBxrB,KAAKoqF,YAAY,GAAKpqF,KAAKizF,cAAch/D,OAAQj0B,KAAKozF,cAAepzF,KAAK8pF,SAAU,QAAM,CACjN,EAAG76F,EAAEc,UAAUq9D,WAAa,WAC1B,OAAOptD,KAAKiZ,MAAQ,IAAI3nB,EAAEm/F,cAAc,GAC1C,EAAGxhG,EAAEc,UAAU2xF,MAAQ,SAAUryF,EAAGJ,GAClC,IAAIW,EAAGhB,EACP,OAAO,MAAQK,IAAMA,EAAI,CAAC,GAAII,EAAIiC,EAAE2xF,SAAShxC,KAAK5iD,GAAI2Q,KAAKqzF,kCAAkChkG,GAAK2Q,KAAKszF,oBAAoBjkG,IAAMO,EAAI,OAAShB,EAAIK,EAAE25F,QAAUh6F,EAAI,UAAWoR,KAAKw8E,QAAQ4L,kCAAkC/4F,EAAGO,IAAMmb,OAAO2+E,SAAWr6F,OAAI,CAC7P,EAAGJ,EAAEc,UAAUs4F,+BAAiC,SAAUh5F,EAAGJ,EAAGW,GAC9D,IAAIhB,EACJ,OAAO0C,EAAEiwF,WAAa3yF,EAAIoR,KAAKuzF,gCAAgC3jG,GAAIoQ,KAAKwzF,WAAWnkG,EAAGJ,EAAG,CACvFqjG,gBAAiB1jG,KACbmc,OAAO2+E,SAAWr6F,CAC1B,EAAGJ,EAAEc,UAAU4xF,oBAAsB,SAAUtyF,GAC7C,OAAO2Q,KAAKypF,iBAAmBp6F,CACjC,EAAGJ,EAAEc,UAAUmjG,aAAe,WAC5B,OAAOlzF,KAAK0pF,SAAWp4F,EAAE2xF,SAAShxC,KAAKlnC,OAAO2+E,UAAW1pF,KAAKkqF,sBAAwB54F,EAAEyxF,OAAQ/iF,KAAKwhF,QAAQ34E,QAAS7I,KAAKwhF,QAAQ/iF,QAAQuB,KAAK0pF,SAAU1pF,KAAKkqF,sBACjK,EAAGj7F,EAAEc,UAAUqjG,YAAc,WAC3B,OAAOpzF,KAAKwhF,QAAQvtD,MACtB,EAAGhlC,EAAEc,UAAU0jG,gDAAkD,SAAUpkG,EAAGJ,GAC5E,OAAO+Q,KAAKkqF,sBAAwBj7F,EAAG+Q,KAAK0pF,SAAWp4F,EAAE2xF,SAAShxC,KAAK5iD,GAAI2Q,KAAKwhF,QAAQp8E,KAAKpF,KAAK0pF,SAAU1pF,KAAKkqF,sBACnH,EAAGj7F,EAAEc,UAAUkiG,mDAAqD,SAAU5iG,EAAGJ,GAC/E,OAAO+Q,KAAKkqF,sBAAwBj7F,EAAG+Q,KAAK0pF,SAAWp4F,EAAE2xF,SAAShxC,KAAK5iD,GAAI2Q,KAAKwhF,QAAQ/iF,QAAQuB,KAAK0pF,SAAU1pF,KAAKkqF,sBACtH,EAAGj7F,EAAEc,UAAUo6F,iDAAmD,SAAU96F,EAAGJ,GAC7E,IAAIW,EACJ,OAAOoQ,KAAKkqF,sBAAwBj7F,EAAG+Q,KAAK46C,SAAWhrD,EAAIoQ,KAAKuzF,gCAAgCvzF,KAAKkqF,uBAAwBlqF,KAAKwzF,WAAWnkG,EAAG,UAAW,CACzJ66F,sBAAuBlqF,KAAKkqF,sBAC5BoI,gBAAiB1iG,EACjB4hG,gBAAgB,IACdxxF,KAAK0pF,SAAWp4F,EAAE2xF,SAAShxC,KAAK5iD,IAAM2Q,KAAKw8E,QAAQ+M,iBACzD,EAAGt6F,EAAEc,UAAU4hG,6BAA+B,SAAUtiG,GACtD,IAAIiC,EACJ,OAAO,OAASA,EAAI0O,KAAKiZ,MAAMjqB,IAAIK,IAAMiC,EAAE6N,aAAU,CACvD,EAAGlQ,EAAEc,UAAU2jG,oBAAsB,WACnC,OAAO1zF,KAAKgzF,KAAKtD,cAAclD,aACjC,EAAGv9F,EAAEc,UAAU6hG,cAAgB,WAC7B,IAAIviG,EAAGJ,EACP,OAAO+Q,KAAK0zF,uBAAyB1zF,KAAK2zF,yCAA0C1kG,EAAI+Q,KAAKgzF,KAAKtD,cAAergG,EAAI2Q,KAAK4zF,qBAAsBtiG,EAAE4wF,MAAM,SAAU5wF,GAChK,OAAO,WACL,OAAOA,EAAE2nB,MAAM23E,IAAIvhG,EAAGJ,EAAEkQ,QAC1B,CACF,CAJwJ,CAItJa,aAAU,CACd,EAAG/Q,EAAEc,UAAUsiG,eAAiB,SAAUhjG,GACxC,IAAIiC,EACJ,OAAQA,EAAI0O,KAAKgzF,KAAKhH,oBAAoB38F,IAAM2Q,KAAKiwF,gBAAgB3+F,GAAK0O,KAAKmwF,iBAAiB,CAC9F38F,EAAG,EACHsR,EAAG,GAEP,EAAG7V,EAAEc,UAAUkgG,gBAAkB,SAAU5gG,GACzC,OAAO2Q,KAAKizF,cAAchD,gBAAgB5gG,EAC5C,EAAGJ,EAAEc,UAAUogG,iBAAmB,SAAU9gG,GAC1C,OAAO2Q,KAAKizF,cAAc9C,iBAAiB9gG,EAC7C,EAAGJ,EAAEc,UAAUygG,sBAAwB,SAAUnhG,GAE/C,OAAW2Q,KAAK6zF,4BAA+BtB,eAAiBljG,CAClE,EAAGJ,EAAEc,UAAUghE,OAAS,SAAU1hE,EAAGiC,GACnC,OAAO0O,KAAKgzF,KAAKjiC,OAAO1hE,EAAGiC,EAC7B,EAAGrC,EAAEc,UAAUi9F,gBAAkB,WAC/B,OAAOhtF,KAAKw8E,QAAQ+M,iBACtB,EAAGt6F,EAAEc,UAAU68F,eAAiB,SAAUv9F,GACxC,OAAO2Q,KAAK8zF,8BAA8BzkG,EAC5C,EAAGJ,EAAEc,UAAU+8F,aAAe,WAC5B,OAAO9sF,KAAK4zF,qBAAuB5zF,KAAK+zF,aAAarK,SAAU1pF,KAAKg0F,8BACtE,EAAG/kG,EAAEc,UAAUq6F,WAAa,WAC1B,OAAOpqF,KAAK4zF,qBAAuB5zF,KAAK0pF,SAAU1pF,KAAKi0F,gCACzD,EAAGhlG,EAAEc,UAAUgjG,cAAgB,WAC7B,OAAOvnE,oBAAoB,QAASxrB,KAAK8yF,cAAc,GAAKvnE,iBAAiB,QAASvrB,KAAK8yF,cAAc,EAC3G,EAAG7jG,EAAEc,UAAU+iG,aAAe,SAAUzjG,GACtC,IAAIiC,EAAGrC,EAAGW,EACV,OAAOoQ,KAAK46C,SAAW56C,KAAKk0F,wBAAwB7kG,KAAOJ,EAAI+Q,KAAKm0F,wBAAwB9kG,EAAE0U,WAAanU,EAAIoQ,KAAKo0F,4BAA4BnlG,KAAO+Q,KAAKq0F,yCAAyCplG,EAAGW,IAAMP,EAAEmzF,iBAAkBlxF,EAAI0O,KAAKs0F,iBAAiBrlG,GAAI+Q,KAAK0hF,MAAM9xF,EAAG,CAC5Qg5F,OAAQt3F,UACJ,CACR,EAAGrC,EAAEc,UAAUskG,yCAA2C,SAAUhlG,EAAGiC,GAErE,OAAW0O,KAAKu0F,6CAA6CllG,EAAGiC,GAAOmxF,gBACzE,EAAGxzF,EAAEc,UAAUsjG,kCAAoC,SAAUhkG,GAE3D,OAAW2Q,KAAKw0F,wCAAwCnlG,GAAOozF,gBACjE,EAAGxzF,EAAEc,UAAUwkG,6CAA+C,SAAUllG,EAAGJ,GACzE,OAAOqC,EAAE8wF,SAAS,mBAAoB,CACpCr+E,OAAQ1U,EACRopB,KAAM,CACJisE,IAAKz1F,EAAEm0F,aAETz4B,YAAY,GAEhB,EAAG17D,EAAEc,UAAUykG,wCAA0C,SAAUnlG,GACjE,OAAOiC,EAAE8wF,SAAS,0BAA2B,CAC3C3pE,KAAM,CACJisE,IAAKr1F,EAAE+zF,aAETz4B,YAAY,GAEhB,EAAG17D,EAAEc,UAAU0kG,uCAAyC,SAAUplG,GAChE,OAAOiC,EAAE8wF,SAAS,mBAAoB,CACpC3pE,KAAM,CACJisE,IAAKr1F,EAAE+zF,cAGb,EAAGn0F,EAAEc,UAAU4jG,uCAAyC,WACtD,OAAOriG,EAAE8wF,SAAS,0BACpB,EAAGnzF,EAAEc,UAAU+jG,8BAAgC,SAAUzkG,GACvD,OAAOiC,EAAE8wF,SAAS,2BAA4B,CAC5C3pE,KAAM,CACJo0E,QAASx9F,IAGf,EAAGJ,EAAEc,UAAUikG,6BAA+B,WAC5C,OAAO1iG,EAAE8wF,SAAS,oBACpB,EAAGnzF,EAAEc,UAAUkkG,+BAAiC,SAAU5kG,GACxD,OAAO,MAAQA,IAAMA,EAAI,CAAC,GAAIiC,EAAE8wF,SAAS,kBAAmB,CAC1D3pE,KAAM,CACJisE,IAAK1kF,KAAK0pF,SAAStG,YACnBsR,OAAQrlG,IAGd,EAAGJ,EAAEc,UAAUyjG,WAAa,SAAUnkG,EAAGiC,EAAGrC,GAC1C,IAAIW,EACJ,OAAO,OAASA,EAAIoQ,KAAK+zF,eAAiBnkG,EAAEskC,SAAUl0B,KAAK+zF,aAAe/zF,KAAK20F,YAAYtlG,EAAGiC,EAAGrC,GAAI+Q,KAAK+zF,aAAalrF,QAAS7I,KAAKy0F,uCAAuCplG,EAC9K,EAAGJ,EAAEc,UAAU4kG,YAAc,SAAUtlG,EAAGJ,EAAGW,GAC3C,IAAIhB,EAAGT,EAAG+B,EAAGkB,EAAGixF,EAChB,OAA+BjxF,GAAxBjD,EAAI,MAAQyB,EAAIA,EAAI,CAAC,GAASs6F,sBAAuBh6F,EAAI/B,EAAEmkG,gBAAiB1jG,EAAIT,EAAEqjG,gBAAgBnP,EAAI,IAAI/wF,EAAEy/F,MAAM/wF,KAAM3Q,EAAGJ,IAAMi7F,sBAAwB,MAAQ94F,EAAIA,EAAIE,EAAEyxF,OAAQV,EAAEiQ,gBAAkBhhG,EAAEswF,WAAW1xF,GAAImyF,EAAEmP,eAAiB5iG,EAAGyzF,EAAEsC,SAAW3kF,KAAK0pF,SAAUrH,CACnR,EAAGpzF,EAAEc,UAAUs5F,eAAiB,SAAUh6F,GACxC,OAAO2Q,KAAKi0F,+BAA+B5kG,EAAEojG,mBAC/C,EAAGxjG,EAAEc,UAAUmkG,wBAA0B,SAAU7kG,GACjD,QAASA,EAAEozF,kBAAoBpzF,EAAE0U,OAAO6wF,mBAAqBvlG,EAAEwlG,MAAQ,GAAKxlG,EAAEylG,QAAUzlG,EAAE0lG,SAAW1lG,EAAE2lG,SAAW3lG,EAAE4lG,SACtH,EAAGhmG,EAAEc,UAAUokG,wBAA0B,SAAU9kG,GACjD,OAAO2Q,KAAKk1F,gBAAgB7lG,GAAKiC,EAAEuwF,QAAQxyF,EAAG,8CAA2C,CAC3F,EAAGJ,EAAEc,UAAUqkG,4BAA8B,SAAU/kG,GACrD,IAAIJ,EACJ,OAAOA,EAAI,IAAIqC,EAAE2xF,SAAS5zF,EAAE2pD,aAAa,SAAUh5C,KAAKszF,oBAAoBrkG,GAAKA,OAAI,CACvF,EAAGA,EAAEc,UAAUukG,iBAAmB,SAAUjlG,GAC1C,IAAIiC,EACJ,OAAO,OAASA,EAAIjC,EAAE2pD,aAAa,2BAA6B1nD,EAAI,SACtE,EAAGrC,EAAEc,UAAUmlG,gBAAkB,SAAU7lG,GACzC,IAAIJ,EACJ,QAAQA,EAAIqC,EAAEuwF,QAAQxyF,EAAG,uBAAwB,UAAYJ,EAAE+pD,aAAa,kBAC9E,EAAG/pD,EAAEc,UAAUujG,oBAAsB,SAAUjkG,GAC7C,OAAOA,EAAEy0F,aAAa9jF,KAAKgzF,KAAKnH,oBAAsBx8F,EAAEw0F,QAC1D,EAAG50F,EAAEc,UAAU8jG,0BAA4B,WACzC,OAAO7zF,KAAKuzF,gCAAgCvzF,KAAKkqF,sBACnD,EAAGj7F,EAAEc,UAAUwjG,gCAAkC,SAAUlkG,GACzD,IAAIiC,EACJ,OAAO,OAASA,EAAI0O,KAAKsyF,iBAAiBjjG,GAAKiC,EAAEjC,GAAKiC,EAAEjC,GAAK,CAAC,CAChE,EAAGJ,CACL,CAxJe,EAyJjB,EAAEX,KAAK0R,MAAO,YACX,WACC,IAAI3Q,EAAGiC,EACP,IAAKjC,EAAIiC,EAAIo2B,SAASytE,iBAAmB7jG,EAAE8jG,aAAa,oCAAqC,KAAO/lG,EAAIA,EAAEw4B,YAAa,GAAIx4B,IAAMq4B,SAASglD,KAAM,OAAO5sD,QAAQC,KAAK,4dAA6dzuB,EAAEk5F,UACroB,CAHC,EAIH,EAAEl8F,KAAK0R,MAAO,WACZ,IAAI3Q,EAAGJ,EAAGW,EACV0B,EAAEuX,MAAQ,WACR,OAAO5Z,KAAO,MAAQqC,EAAE+mC,aAAe/mC,EAAE+mC,WAAahpC,KAAMiC,EAAE+mC,WAAWxvB,cAAW,CACtF,EAAG5Z,EAAI,WACL,OAAO,MAAQ8b,OAAOu2E,aAAev2E,OAAOu2E,WAAahwF,GAAI1B,GAC/D,EAAGP,EAAI,WACL,IAAIA,EACJ,OAAOA,EAAI,IAAIiC,EAAEuhG,YAAgBrW,QAAU,IAAIlrF,EAAE22F,eAAe54F,GAAIA,CACtE,GAAGO,EAAI,WACL,OAAOmb,OAAOu2E,aAAehwF,CAC/B,MAAUA,EAAEuX,OACd,EAAEva,KAAK0R,KACR,GAAE1R,KAAK0R,MAAoC9R,EAAOD,QAAUC,EAAOD,QAAUqD,OAAyD,2BAAR,KAAQ,iCACxI,GAAEhD,KAAK0R,K,mBCz6BC,SAAU/R,GACjB,aAEA,SAASonG,EAAqBtyF,EAAI7U,GAChC,OAEG6U,EAFI7U,EAAS,CACdD,QAAS,CAAC,GACEC,EAAOD,SAAUC,EAAOD,OACxC,CACA,IAAIqnG,EAAWD,GAAqB,SAAUnnG,EAAQD,IACpD,SAAWsnG,GAEPrnG,EAAOD,QAAUsnG,GAEpB,CAJD,EAIG,SAAUxjG,GACX,IAAIyjG,EAAU,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAC1F,SAASC,EAASjiG,EAAGtB,GACnB,IAAId,EAAIoC,EAAE,GACRnC,EAAImC,EAAE,GACNhF,EAAIgF,EAAE,GACN/E,EAAI+E,EAAE,GAQRnC,IADAA,KADA7C,IADAA,KADAC,IADAA,KADA2C,IADAA,IAAMC,EAAI7C,GAAK6C,EAAI5C,GAAKyD,EAAE,GAAK,UAAY,IACjC,EAAId,IAAM,IAAMC,EAAI,GACpBA,GAAKD,EAAI5C,GAAK0D,EAAE,GAAK,UAAY,IACjC,GAAKzD,IAAM,IAAM2C,EAAI,GACrBA,GAAK3C,EAAI4C,GAAKa,EAAE,GAAK,UAAY,IACjC,GAAK1D,IAAM,IAAMC,EAAI,GACrBA,GAAKD,EAAI4C,GAAKc,EAAE,GAAK,WAAa,IAClC,GAAKb,IAAM,IAAM7C,EAAI,EAQ/B6C,IADAA,KADA7C,IADAA,KADAC,IADAA,KADA2C,IADAA,IAAMC,EAAI7C,GAAK6C,EAAI5C,GAAKyD,EAAE,GAAK,UAAY,IACjC,EAAId,IAAM,IAAMC,EAAI,GACpBA,GAAKD,EAAI5C,GAAK0D,EAAE,GAAK,WAAa,IAClC,GAAKzD,IAAM,IAAM2C,EAAI,GACrBA,GAAK3C,EAAI4C,GAAKa,EAAE,GAAK,WAAa,IAClC,GAAK1D,IAAM,IAAMC,EAAI,GACrBA,GAAKD,EAAI4C,GAAKc,EAAE,GAAK,SAAW,IAChC,GAAKb,IAAM,IAAM7C,EAAI,EAQ/B6C,IADAA,KADA7C,IADAA,KADAC,IADAA,KADA2C,IADAA,IAAMC,EAAI7C,GAAK6C,EAAI5C,GAAKyD,EAAE,GAAK,WAAa,IAClC,EAAId,IAAM,IAAMC,EAAI,GACpBA,GAAKD,EAAI5C,GAAK0D,EAAE,GAAK,WAAa,IAClC,GAAKzD,IAAM,IAAM2C,EAAI,GACrBA,GAAK3C,EAAI4C,GAAKa,EAAE,IAAM,MAAQ,IAC9B,GAAK1D,IAAM,IAAMC,EAAI,GACrBA,GAAKD,EAAI4C,GAAKc,EAAE,IAAM,WAAa,IACnC,GAAKb,IAAM,IAAM7C,EAAI,EAQ/B6C,IADAA,KADA7C,IADAA,KADAC,IADAA,KADA2C,IADAA,IAAMC,EAAI7C,GAAK6C,EAAI5C,GAAKyD,EAAE,IAAM,WAAa,IACnC,EAAId,IAAM,IAAMC,EAAI,GACpBA,GAAKD,EAAI5C,GAAK0D,EAAE,IAAM,SAAW,IACjC,GAAKzD,IAAM,IAAM2C,EAAI,GACrBA,GAAK3C,EAAI4C,GAAKa,EAAE,IAAM,WAAa,IACnC,GAAK1D,IAAM,IAAMC,EAAI,GACrBA,GAAKD,EAAI4C,GAAKc,EAAE,IAAM,WAAa,IACnC,GAAKb,IAAM,IAAM7C,EAAI,EAQ/B6C,IADAA,KADA7C,IADAA,KADAC,IADAA,KADA2C,IADAA,IAAMC,EAAI5C,EAAID,GAAKC,GAAKyD,EAAE,GAAK,UAAY,IACjC,EAAId,IAAM,IAAMC,EAAI,GACpB7C,EAAI6C,GAAK7C,GAAK0D,EAAE,GAAK,WAAa,IAClC,EAAIzD,IAAM,IAAM2C,EAAI,GACpBC,EAAID,GAAKC,GAAKa,EAAE,IAAM,UAAY,IAClC,GAAK1D,IAAM,IAAMC,EAAI,GACrB2C,EAAI3C,GAAK2C,GAAKc,EAAE,GAAK,UAAY,IACjC,GAAKb,IAAM,IAAM7C,EAAI,EAQ/B6C,IADAA,KADA7C,IADAA,KADAC,IADAA,KADA2C,IADAA,IAAMC,EAAI5C,EAAID,GAAKC,GAAKyD,EAAE,GAAK,UAAY,IACjC,EAAId,IAAM,IAAMC,EAAI,GACpB7C,EAAI6C,GAAK7C,GAAK0D,EAAE,IAAM,SAAW,IACjC,EAAIzD,IAAM,IAAM2C,EAAI,GACpBC,EAAID,GAAKC,GAAKa,EAAE,IAAM,UAAY,IAClC,GAAK1D,IAAM,IAAMC,EAAI,GACrB2C,EAAI3C,GAAK2C,GAAKc,EAAE,GAAK,UAAY,IACjC,GAAKb,IAAM,IAAM7C,EAAI,EAQ/B6C,IADAA,KADA7C,IADAA,KADAC,IADAA,KADA2C,IADAA,IAAMC,EAAI5C,EAAID,GAAKC,GAAKyD,EAAE,GAAK,UAAY,IACjC,EAAId,IAAM,IAAMC,EAAI,GACpB7C,EAAI6C,GAAK7C,GAAK0D,EAAE,IAAM,WAAa,IACnC,EAAIzD,IAAM,IAAM2C,EAAI,GACpBC,EAAID,GAAKC,GAAKa,EAAE,GAAK,UAAY,IACjC,GAAK1D,IAAM,IAAMC,EAAI,GACrB2C,EAAI3C,GAAK2C,GAAKc,EAAE,GAAK,WAAa,IAClC,GAAKb,IAAM,IAAM7C,EAAI,EAQ/B6C,IADAA,KADA7C,IADAA,KADAC,IADAA,KADA2C,IADAA,IAAMC,EAAI5C,EAAID,GAAKC,GAAKyD,EAAE,IAAM,WAAa,IACnC,EAAId,IAAM,IAAMC,EAAI,GACpB7C,EAAI6C,GAAK7C,GAAK0D,EAAE,GAAK,SAAW,IAChC,EAAIzD,IAAM,IAAM2C,EAAI,GACpBC,EAAID,GAAKC,GAAKa,EAAE,GAAK,WAAa,IAClC,GAAK1D,IAAM,IAAMC,EAAI,GACrB2C,EAAI3C,GAAK2C,GAAKc,EAAE,IAAM,WAAa,IACnC,GAAKb,IAAM,IAAM7C,EAAI,EAQ/B6C,IADAA,KADA7C,IADAA,KADAC,IADAA,KADA2C,IADAA,IAAMC,EAAI7C,EAAIC,GAAKyD,EAAE,GAAK,OAAS,IACzB,EAAId,IAAM,IAAMC,EAAI,GACpBA,EAAI7C,GAAK0D,EAAE,GAAK,WAAa,IAC7B,GAAKzD,IAAM,IAAM2C,EAAI,GACrBA,EAAIC,GAAKa,EAAE,IAAM,WAAa,IAC9B,GAAK1D,IAAM,IAAMC,EAAI,GACrBA,EAAI2C,GAAKc,EAAE,IAAM,SAAW,IAC5B,GAAKb,IAAM,GAAK7C,EAAI,EAQ9B6C,IADAA,KADA7C,IADAA,KADAC,IADAA,KADA2C,IADAA,IAAMC,EAAI7C,EAAIC,GAAKyD,EAAE,GAAK,WAAa,IAC7B,EAAId,IAAM,IAAMC,EAAI,GACpBA,EAAI7C,GAAK0D,EAAE,GAAK,WAAa,IAC7B,GAAKzD,IAAM,IAAM2C,EAAI,GACrBA,EAAIC,GAAKa,EAAE,GAAK,UAAY,IAC5B,GAAK1D,IAAM,IAAMC,EAAI,GACrBA,EAAI2C,GAAKc,EAAE,IAAM,WAAa,IAC9B,GAAKb,IAAM,GAAK7C,EAAI,EAQ9B6C,IADAA,KADA7C,IADAA,KADAC,IADAA,KADA2C,IADAA,IAAMC,EAAI7C,EAAIC,GAAKyD,EAAE,IAAM,UAAY,IAC7B,EAAId,IAAM,IAAMC,EAAI,GACpBA,EAAI7C,GAAK0D,EAAE,GAAK,UAAY,IAC5B,GAAKzD,IAAM,IAAM2C,EAAI,GACrBA,EAAIC,GAAKa,EAAE,GAAK,UAAY,IAC5B,GAAK1D,IAAM,IAAMC,EAAI,GACrBA,EAAI2C,GAAKc,EAAE,GAAK,SAAW,IAC3B,GAAKb,IAAM,GAAK7C,EAAI,EAQ9B6C,IADAA,KADA7C,IADAA,KADAC,IADAA,KADA2C,IADAA,IAAMC,EAAI7C,EAAIC,GAAKyD,EAAE,GAAK,UAAY,IAC5B,EAAId,IAAM,IAAMC,EAAI,GACpBA,EAAI7C,GAAK0D,EAAE,IAAM,UAAY,IAC7B,GAAKzD,IAAM,IAAM2C,EAAI,GACrBA,EAAIC,GAAKa,EAAE,IAAM,UAAY,IAC7B,GAAK1D,IAAM,IAAMC,EAAI,GACrBA,EAAI2C,GAAKc,EAAE,GAAK,UAAY,IAC5B,GAAKb,IAAM,GAAK7C,EAAI,EAQ9B6C,IADAA,KAHA5C,IADAA,IAAM4C,IADND,IADAA,IAAM5C,GAAK6C,GAAK5C,IAAMyD,EAAE,GAAK,UAAY,IAC/B,EAAId,IAAM,IAAMC,EAAI,IACd7C,IAAM0D,EAAE,GAAK,WAAa,IAChC,GAAKzD,IAAM,IAAM2C,EAAI,KAE/B5C,IADAA,IAAM4C,GAAK3C,GAAK4C,IAAMa,EAAE,IAAM,WAAa,IACjC,GAAK1D,IAAM,IAAMC,EAAI,IACf2C,IAAMc,EAAE,GAAK,SAAW,IAC9B,GAAKb,IAAM,IAAM7C,EAAI,EAQ/B6C,IADAA,KAHA5C,IADAA,IAAM4C,IADND,IADAA,IAAM5C,GAAK6C,GAAK5C,IAAMyD,EAAE,IAAM,WAAa,IACjC,EAAId,IAAM,IAAMC,EAAI,IACd7C,IAAM0D,EAAE,GAAK,WAAa,IAChC,GAAKzD,IAAM,IAAM2C,EAAI,KAE/B5C,IADAA,IAAM4C,GAAK3C,GAAK4C,IAAMa,EAAE,IAAM,QAAU,IAC9B,GAAK1D,IAAM,IAAMC,EAAI,IACf2C,IAAMc,EAAE,GAAK,WAAa,IAChC,GAAKb,IAAM,IAAM7C,EAAI,EAQ/B6C,IADAA,KAHA5C,IADAA,IAAM4C,IADND,IADAA,IAAM5C,GAAK6C,GAAK5C,IAAMyD,EAAE,GAAK,WAAa,IAChC,EAAId,IAAM,IAAMC,EAAI,IACd7C,IAAM0D,EAAE,IAAM,SAAW,IAC/B,GAAKzD,IAAM,IAAM2C,EAAI,KAE/B5C,IADAA,IAAM4C,GAAK3C,GAAK4C,IAAMa,EAAE,GAAK,WAAa,IAChC,GAAK1D,IAAM,IAAMC,EAAI,IACf2C,IAAMc,EAAE,IAAM,WAAa,IACjC,GAAKb,IAAM,IAAM7C,EAAI,EAQ/B6C,IADAA,KAHA5C,IADAA,IAAM4C,IADND,IADAA,IAAM5C,GAAK6C,GAAK5C,IAAMyD,EAAE,GAAK,UAAY,IAC/B,EAAId,IAAM,IAAMC,EAAI,IACd7C,IAAM0D,EAAE,IAAM,WAAa,IACjC,GAAKzD,IAAM,IAAM2C,EAAI,KAE/B5C,IADAA,IAAM4C,GAAK3C,GAAK4C,IAAMa,EAAE,GAAK,UAAY,IAC/B,GAAK1D,IAAM,IAAMC,EAAI,IACf2C,IAAMc,EAAE,GAAK,UAAY,IAC/B,GAAKb,IAAM,IAAM7C,EAAI,EAC/BgF,EAAE,GAAKpC,EAAIoC,EAAE,GAAK,EAClBA,EAAE,GAAKnC,EAAImC,EAAE,GAAK,EAClBA,EAAE,GAAKhF,EAAIgF,EAAE,GAAK,EAClBA,EAAE,GAAK/E,EAAI+E,EAAE,GAAK,CACpB,CACA,SAASkiG,EAAOxlG,GACd,IACE/B,EADEwnG,EAAU,GAEd,IAAKxnG,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBwnG,EAAQxnG,GAAK,GAAK+B,EAAE0lG,WAAWznG,IAAM+B,EAAE0lG,WAAWznG,EAAI,IAAM,IAAM+B,EAAE0lG,WAAWznG,EAAI,IAAM,KAAO+B,EAAE0lG,WAAWznG,EAAI,IAAM,IAEzH,OAAOwnG,CACT,CACA,SAASE,EAAazkG,GACpB,IACEjD,EADEwnG,EAAU,GAEd,IAAKxnG,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBwnG,EAAQxnG,GAAK,GAAKiD,EAAEjD,IAAMiD,EAAEjD,EAAI,IAAM,IAAMiD,EAAEjD,EAAI,IAAM,KAAOiD,EAAEjD,EAAI,IAAM,IAE7E,OAAOwnG,CACT,CACA,SAASG,EAAK5lG,GACZ,IAEE/B,EACAiE,EACA2jG,EACA72F,EACAyK,EACAD,EAPE9Z,EAAIM,EAAEkC,OACR43F,EAAQ,CAAC,YAAa,WAAY,WAAY,WAOhD,IAAK77F,EAAI,GAAIA,GAAKyB,EAAGzB,GAAK,GACxBsnG,EAASzL,EAAO0L,EAAOxlG,EAAE8lG,UAAU7nG,EAAI,GAAIA,KAK7C,IAFAiE,GADAlC,EAAIA,EAAE8lG,UAAU7nG,EAAI,KACTiE,OACX2jG,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAChD5nG,EAAI,EAAGA,EAAIiE,EAAQjE,GAAK,EAC3B4nG,EAAK5nG,GAAK,IAAM+B,EAAE0lG,WAAWznG,KAAOA,EAAI,GAAK,GAG/C,GADA4nG,EAAK5nG,GAAK,IAAM,MAAQA,EAAI,GAAK,GAC7BA,EAAI,GAEN,IADAsnG,EAASzL,EAAO+L,GACX5nG,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvB4nG,EAAK5nG,GAAK,EAUd,OANA+Q,GADAA,EAAU,EAAJtP,GACIqS,SAAS,IAAIid,MAAM,kBAC7BvV,EAAKjL,SAASQ,EAAI,GAAI,IACtBwK,EAAKhL,SAASQ,EAAI,GAAI,KAAO,EAC7B62F,EAAK,IAAMpsF,EACXosF,EAAK,IAAMrsF,EACX+rF,EAASzL,EAAO+L,GACT/L,CACT,CACA,SAASiM,EAAW7kG,GAClB,IAEEjD,EACAiE,EACA2jG,EACA72F,EACAyK,EACAD,EAPE9Z,EAAIwB,EAAEgB,OACR43F,EAAQ,CAAC,YAAa,WAAY,WAAY,WAOhD,IAAK77F,EAAI,GAAIA,GAAKyB,EAAGzB,GAAK,GACxBsnG,EAASzL,EAAO6L,EAAazkG,EAAE8kG,SAAS/nG,EAAI,GAAIA,KAKlD,IAFAiE,GADAhB,EAAIjD,EAAI,GAAKyB,EAAIwB,EAAE8kG,SAAS/nG,EAAI,IAAM,IAAIgoG,WAAW,IAC1C/jG,OACX2jG,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAChD5nG,EAAI,EAAGA,EAAIiE,EAAQjE,GAAK,EAC3B4nG,EAAK5nG,GAAK,IAAMiD,EAAEjD,KAAOA,EAAI,GAAK,GAGpC,GADA4nG,EAAK5nG,GAAK,IAAM,MAAQA,EAAI,GAAK,GAC7BA,EAAI,GAEN,IADAsnG,EAASzL,EAAO+L,GACX5nG,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvB4nG,EAAK5nG,GAAK,EAUd,OANA+Q,GADAA,EAAU,EAAJtP,GACIqS,SAAS,IAAIid,MAAM,kBAC7BvV,EAAKjL,SAASQ,EAAI,GAAI,IACtBwK,EAAKhL,SAASQ,EAAI,GAAI,KAAO,EAC7B62F,EAAK,IAAMpsF,EACXosF,EAAK,IAAMrsF,EACX+rF,EAASzL,EAAO+L,GACT/L,CACT,CACA,SAASoM,EAAKxmG,GACZ,IACE0O,EADEpO,EAAI,GAER,IAAKoO,EAAI,EAAGA,EAAI,EAAGA,GAAK,EACtBpO,GAAKslG,EAAQ5lG,GAAS,EAAJ0O,EAAQ,EAAI,IAAMk3F,EAAQ5lG,GAAS,EAAJ0O,EAAQ,IAE3D,OAAOpO,CACT,CACA,SAASsB,EAAIgC,GACX,IAAIrF,EACJ,IAAKA,EAAI,EAAGA,EAAIqF,EAAEpB,OAAQjE,GAAK,EAC7BqF,EAAErF,GAAKioG,EAAK5iG,EAAErF,IAEhB,OAAOqF,EAAEsvB,KAAK,GAChB,CAkCA,SAASuzE,EAAOnjG,GAId,MAHI,kBAAkB2+B,KAAK3+B,KACzBA,EAAMojG,SAASC,mBAAmBrjG,KAE7BA,CACT,CACA,SAASsjG,EAAoBtjG,EAAKujG,GAChC,IAGEtoG,EAHEiE,EAASc,EAAId,OACfskG,EAAO,IAAIC,YAAYvkG,GACvB8wB,EAAM,IAAIizE,WAAWO,GAEvB,IAAKvoG,EAAI,EAAGA,EAAIiE,EAAQjE,GAAK,EAC3B+0B,EAAI/0B,GAAK+E,EAAI0iG,WAAWznG,GAE1B,OAAOsoG,EAAmBvzE,EAAMwzE,CAClC,CACA,SAASE,EAAoBF,GAC3B,OAAOjmE,OAAOomE,aAAa3zF,MAAM,KAAM,IAAIizF,WAAWO,GACxD,CACA,SAASI,EAAwB/7C,EAAO+gC,EAAQ2a,GAC9C,IAAI9tE,EAAS,IAAIwtE,WAAWp7C,EAAMg8C,WAAajb,EAAOib,YAGtD,OAFApuE,EAAOje,IAAI,IAAIyrF,WAAWp7C,IAC1BpyB,EAAOje,IAAI,IAAIyrF,WAAWra,GAAS/gC,EAAMg8C,YAClCN,EAAmB9tE,EAASA,EAAOquE,MAC5C,CACA,SAASC,EAAkBzlG,GACzB,IAEEgC,EAFE0jG,EAAQ,GACV9kG,EAASZ,EAAIY,OAEf,IAAKoB,EAAI,EAAGA,EAAIpB,EAAS,EAAGoB,GAAK,EAC/B0jG,EAAM9xF,KAAK1G,SAASlN,EAAI2lG,OAAO3jG,EAAG,GAAI,KAExC,OAAOi9B,OAAOomE,aAAa3zF,MAAMutB,OAAQymE,EAC3C,CACA,SAASE,IACPp3F,KAAK67B,OACP,CA0IA,OA/MIrqC,EAAIskG,EAAK,UACc,qBAAhBa,aAAgCA,YAAY5mG,UAAUmS,OAC/D,WACE,SAASm1F,EAAMj2F,EAAKhP,GAElB,OADAgP,EAAY,EAANA,GAAW,GACP,EACD9Q,KAAKC,IAAI6Q,EAAMhP,EAAQ,GAEzB9B,KAAKE,IAAI4Q,EAAKhP,EACvB,CACAukG,YAAY5mG,UAAUmS,MAAQ,SAAU2I,EAAM4K,GAC5C,IAGE3F,EACA/L,EACAuzF,EACAC,EANEnlG,EAAS4N,KAAK+2F,WAChBS,EAAQH,EAAMxsF,EAAMzY,GACpB0W,EAAM1W,EAQR,OAHIqjB,IAAO1jB,IACT+W,EAAMuuF,EAAM5hF,EAAIrjB,IAEdolG,EAAQ1uF,EACH,IAAI6tF,YAAY,IAEzB7mF,EAAMhH,EAAM0uF,EACZzzF,EAAS,IAAI4yF,YAAY7mF,GACzBwnF,EAAc,IAAInB,WAAWpyF,GAC7BwzF,EAAc,IAAIpB,WAAWn2F,KAAMw3F,EAAO1nF,GAC1CwnF,EAAY5sF,IAAI6sF,GACTxzF,EACT,CACD,CA7BD,GAoEFqzF,EAASrnG,UAAU0nG,OAAS,SAAUvkG,GAEpC,OADA8M,KAAK03F,aAAarB,EAAOnjG,IAClB8M,IACT,EACAo3F,EAASrnG,UAAU2nG,aAAe,SAAUC,GAC1C33F,KAAK43F,OAASD,EACd33F,KAAK+iC,SAAW40D,EAASvlG,OACzB,IACEjE,EADEiE,EAAS4N,KAAK43F,MAAMxlG,OAExB,IAAKjE,EAAI,GAAIA,GAAKiE,EAAQjE,GAAK,GAC7BsnG,EAASz1F,KAAK63F,MAAOnC,EAAO11F,KAAK43F,MAAM5B,UAAU7nG,EAAI,GAAIA,KAG3D,OADA6R,KAAK43F,MAAQ53F,KAAK43F,MAAM5B,UAAU7nG,EAAI,IAC/B6R,IACT,EACAo3F,EAASrnG,UAAU+Y,IAAM,SAAU22B,GACjC,IAEEtxC,EAEA2R,EAJE42F,EAAO12F,KAAK43F,MACdxlG,EAASskG,EAAKtkG,OAEd2jG,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAEvD,IAAK5nG,EAAI,EAAGA,EAAIiE,EAAQjE,GAAK,EAC3B4nG,EAAK5nG,GAAK,IAAMuoG,EAAKd,WAAWznG,KAAOA,EAAI,GAAK,GAQlD,OANA6R,KAAK83F,QAAQ/B,EAAM3jG,GACnB0N,EAAMtO,EAAIwO,KAAK63F,OACXp4D,IACF3/B,EAAMm3F,EAAkBn3F,IAE1BE,KAAK67B,QACE/7B,CACT,EACAs3F,EAASrnG,UAAU8rC,MAAQ,WAIzB,OAHA77B,KAAK43F,MAAQ,GACb53F,KAAK+iC,QAAU,EACf/iC,KAAK63F,MAAQ,CAAC,YAAa,WAAY,WAAY,WAC5C73F,IACT,EACAo3F,EAASrnG,UAAUgoG,SAAW,WAC5B,MAAO,CACLrB,KAAM12F,KAAK43F,MACXxlG,OAAQ4N,KAAK+iC,QACbsgD,KAAMrjF,KAAK63F,MAEf,EACAT,EAASrnG,UAAUioG,SAAW,SAAUhO,GAItC,OAHAhqF,KAAK43F,MAAQ5N,EAAM0M,KACnB12F,KAAK+iC,QAAUinD,EAAM53F,OACrB4N,KAAK63F,MAAQ7N,EAAM3G,KACZrjF,IACT,EACAo3F,EAASrnG,UAAUokE,QAAU,kBACpBn0D,KAAK63F,aACL73F,KAAK43F,aACL53F,KAAK+iC,OACd,EACAq0D,EAASrnG,UAAU+nG,QAAU,SAAU/B,EAAM3jG,GAC3C,IACE8M,EACAyK,EACAD,EAHEvb,EAAIiE,EAKR,GADA2jG,EAAK5nG,GAAK,IAAM,MAAQA,EAAI,GAAK,GAC7BA,EAAI,GAEN,IADAsnG,EAASz1F,KAAK63F,MAAO9B,GAChB5nG,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvB4nG,EAAK5nG,GAAK,EAId+Q,GADAA,EAAqB,EAAfc,KAAK+iC,SACD9gC,SAAS,IAAIid,MAAM,kBAC7BvV,EAAKjL,SAASQ,EAAI,GAAI,IACtBwK,EAAKhL,SAASQ,EAAI,GAAI,KAAO,EAC7B62F,EAAK,IAAMpsF,EACXosF,EAAK,IAAMrsF,EACX+rF,EAASz1F,KAAK63F,MAAO9B,EACvB,EACAqB,EAAS/T,KAAO,SAAUnwF,EAAKusC,GAC7B,OAAO23D,EAASa,WAAW5B,EAAOnjG,GAAMusC,EAC1C,EACA23D,EAASa,WAAa,SAAUC,EAASz4D,GACvC,IACE3/B,EAAMtO,EADGskG,EAAKoC,IAEhB,OAAOz4D,EAAMw3D,EAAkBn3F,GAAOA,CACxC,EACAs3F,EAAST,YAAc,WACrB32F,KAAK67B,OACP,EACAu7D,EAAST,YAAY5mG,UAAU0nG,OAAS,SAAUv0E,GAChD,IAEE/0B,EAFEuoG,EAAOI,EAAwB92F,KAAK43F,MAAMZ,OAAQ9zE,GAAK,GACzD9wB,EAASskG,EAAKtkG,OAGhB,IADA4N,KAAK+iC,SAAW7f,EAAI6zE,WACf5oG,EAAI,GAAIA,GAAKiE,EAAQjE,GAAK,GAC7BsnG,EAASz1F,KAAK63F,MAAOhC,EAAaa,EAAKR,SAAS/nG,EAAI,GAAIA,KAG1D,OADA6R,KAAK43F,MAAQzpG,EAAI,GAAKiE,EAAS,IAAI+jG,WAAWO,EAAKM,OAAO90F,MAAM/T,EAAI,KAAO,IAAIgoG,WAAW,GACnFn2F,IACT,EACAo3F,EAAST,YAAY5mG,UAAU+Y,IAAM,SAAU22B,GAC7C,IAGEtxC,EACA2R,EAJE42F,EAAO12F,KAAK43F,MACdxlG,EAASskG,EAAKtkG,OACd2jG,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAGvD,IAAK5nG,EAAI,EAAGA,EAAIiE,EAAQjE,GAAK,EAC3B4nG,EAAK5nG,GAAK,IAAMuoG,EAAKvoG,KAAOA,EAAI,GAAK,GAQvC,OANA6R,KAAK83F,QAAQ/B,EAAM3jG,GACnB0N,EAAMtO,EAAIwO,KAAK63F,OACXp4D,IACF3/B,EAAMm3F,EAAkBn3F,IAE1BE,KAAK67B,QACE/7B,CACT,EACAs3F,EAAST,YAAY5mG,UAAU8rC,MAAQ,WAIrC,OAHA77B,KAAK43F,MAAQ,IAAIzB,WAAW,GAC5Bn2F,KAAK+iC,QAAU,EACf/iC,KAAK63F,MAAQ,CAAC,YAAa,WAAY,WAAY,WAC5C73F,IACT,EACAo3F,EAAST,YAAY5mG,UAAUgoG,SAAW,WACxC,IAAI/N,EAAQoN,EAASrnG,UAAUgoG,SAASzpG,KAAK0R,MAE7C,OADAgqF,EAAM0M,KAAOE,EAAoB5M,EAAM0M,MAChC1M,CACT,EACAoN,EAAST,YAAY5mG,UAAUioG,SAAW,SAAUhO,GAElD,OADAA,EAAM0M,KAAOF,EAAoBxM,EAAM0M,MAAM,GACtCU,EAASrnG,UAAUioG,SAAS1pG,KAAK0R,KAAMgqF,EAChD,EACAoN,EAAST,YAAY5mG,UAAUokE,QAAUijC,EAASrnG,UAAUokE,QAC5DijC,EAAST,YAAY5mG,UAAU+nG,QAAUV,EAASrnG,UAAU+nG,QAC5DV,EAAST,YAAYtT,KAAO,SAAUngE,EAAKuc,GACzC,IACE3/B,EAAMtO,EADGykG,EAAW,IAAIE,WAAWjzE,KAErC,OAAOuc,EAAMw3D,EAAkBn3F,GAAOA,CACxC,EACOs3F,CACT,GACF,IACIe,EAAiB,SAAUC,EAAUC,GACvC,KAAMD,aAAoBC,GACxB,MAAM,IAAI7nE,UAAU,oCAExB,EACI8nE,EAAc,WAChB,SAAS1jF,EAAiB7Q,EAAQsb,GAChC,IAAK,IAAIlxB,EAAI,EAAGA,EAAIkxB,EAAMjtB,OAAQjE,IAAK,CACrC,IAAIs8D,EAAaprC,EAAMlxB,GACvBs8D,EAAW17D,WAAa07D,EAAW17D,aAAc,EACjD07D,EAAWlnC,cAAe,EACtB,UAAWknC,IAAYA,EAAW51C,UAAW,GACjDhmB,OAAOC,eAAeiV,EAAQ0mD,EAAW/6D,IAAK+6D,EAChD,CACF,CACA,OAAO,SAAU4tC,EAAaE,EAAYC,GAGxC,OAFID,GAAY3jF,EAAiByjF,EAAYtoG,UAAWwoG,GACpDC,GAAa5jF,EAAiByjF,EAAaG,GACxCH,CACT,CACF,CAfkB,GAgBdI,EAAYC,KAAK3oG,UAAUmS,OAASw2F,KAAK3oG,UAAU4oG,UAAYD,KAAK3oG,UAAU6oG,YAC9EC,EAAe,WAQjB,SAASA,EAAaC,GACpBX,EAAen4F,KAAM64F,GACrB74F,KAAK84F,KAAOA,EACZ94F,KAAK+4F,UAAY,QACjB/4F,KAAKg5F,WAAa1oG,KAAK2qD,KAAKj7C,KAAK84F,KAAKlzF,KAAO5F,KAAK+4F,WAClD/4F,KAAKi5F,WAAa,CACpB,CA8CA,OA3DAX,EAAYO,EAAc,KAAM,CAAC,CAC/BnpG,IAAK,SACLN,MAAO,SAAgB0pG,EAAMh2F,GACZ,IAAI+1F,EAAaC,GACvBrpG,OAAOqT,EAClB,KASFw1F,EAAYO,EAAc,CAAC,CACzBnpG,IAAK,SACLN,MAAO,SAAgB0T,GACrB,IAAIo2F,EAAQl5F,KACZA,KAAK8C,SAAWA,EAChB9C,KAAKm5F,UAAY,IAAI7D,EAASqB,YAC9B32F,KAAKo5F,WAAa,IAAIC,WACtBr5F,KAAKo5F,WAAW7tE,iBAAiB,QAAQ,SAAUvC,GACjD,OAAOkwE,EAAMI,kBAAkBtwE,EACjC,IACAhpB,KAAKo5F,WAAW7tE,iBAAiB,SAAS,SAAUvC,GAClD,OAAOkwE,EAAMK,mBAAmBvwE,EAClC,IACAhpB,KAAKw5F,eACP,GACC,CACD9pG,IAAK,oBACLN,MAAO,SAA2B45B,GAEhC,GADAhpB,KAAKm5F,UAAU1B,OAAOzuE,EAAMjlB,OAAO4kB,SAC9B3oB,KAAKw5F,gBAAiB,CACzB,IAAIC,EAAez5F,KAAKm5F,UAAUrwF,KAAI,GAClC4wF,EAAeC,KAAKF,GACxBz5F,KAAK8C,SAAS,KAAM42F,EACtB,CACF,GACC,CACDhqG,IAAK,qBACLN,MAAO,SAA4B45B,GACjChpB,KAAK8C,SAAS,iBAAmB9C,KAAK84F,KAAKpqG,KAC7C,GACC,CACDgB,IAAK,gBACLN,MAAO,WACL,GAAI4Q,KAAKi5F,WAAaj5F,KAAKg5F,YAAiC,GAAnBh5F,KAAKi5F,YAAsC,GAAnBj5F,KAAKg5F,WAAiB,CACrF,IAAInwF,EAAQ7I,KAAKi5F,WAAaj5F,KAAK+4F,UAC/BjwF,EAAMxY,KAAKE,IAAIqY,EAAQ7I,KAAK+4F,UAAW/4F,KAAK84F,KAAKlzF,MACjDsxF,EAAQuB,EAAUnqG,KAAK0R,KAAK84F,KAAMjwF,EAAOC,GAG7C,OAFA9I,KAAKo5F,WAAWQ,kBAAkB1C,GAClCl3F,KAAKi5F,cACE,CACT,CACE,OAAO,CAEX,KAEKJ,CACT,CA7DmB,GA8DnB,SAAS3N,EAAax8F,GACpB,IAAI05B,EAAUyxE,EAAYnyE,SAAS8d,KAAM,cAAgB92C,EAAO,MAChE,GAAI05B,EACF,OAAOA,EAAQ4wB,aAAa,UAEhC,CACA,SAAS8gD,EAAahoF,EAAMioF,GAM1B,MALmB,iBAARjoF,IACTioF,EAAWjoF,EACXA,EAAO4V,UAGFsyE,EADQloF,EAAKo6E,iBAAiB6N,GAEvC,CACA,SAASF,EAAY/nF,EAAMioF,GAKzB,MAJmB,iBAARjoF,IACTioF,EAAWjoF,EACXA,EAAO4V,UAEF5V,EAAK65E,cAAcoO,EAC5B,CACA,SAASrX,EAAct6D,EAASvoB,GAC9B,IAAIo6F,EAAY9nG,UAAUC,OAAS,QAAsBL,IAAjBI,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACjF+sC,EAAW9W,EAAQ8W,SACnBg7D,EAAUD,EAAUC,QACtBvvC,EAAasvC,EAAUtvC,WACvBwvC,EAASF,EAAUE,OACjBnxE,EAAQtB,SAAS46D,YAAY,SACjCt5D,EAAMu5D,UAAU1iF,EAAMq6F,IAAW,EAAMvvC,IAAc,GACrD3hC,EAAMmxE,OAASA,GAAU,CAAC,EAC1B,IACE/xE,EAAQ8W,UAAW,EACnB9W,EAAQs6D,cAAc15D,EACxB,CAAE,QACAZ,EAAQ8W,SAAWA,CACrB,CACA,OAAOlW,CACT,CACA,SAASgxE,EAAU5qG,GACjB,OAAIwD,MAAMC,QAAQzD,GACTA,EACEwD,MAAMiY,KACRjY,MAAMiY,KAAKzb,GAEX,GAAG8S,MAAM5T,KAAKc,EAEzB,CACA,IAAIgrG,EAAa,WACf,SAASA,EAAWtB,EAAMuB,EAAU3V,GAClC,IAAIwU,EAAQl5F,KACZm4F,EAAen4F,KAAMo6F,GACrBp6F,KAAK84F,KAAOA,EACZ94F,KAAKmtF,WAAa,CAChBmN,SAAUxB,EAAKpqG,KACf6rG,aAAczB,EAAKj5F,MAAQ,2BAC3B26F,UAAW1B,EAAKlzF,KAChBy0F,SAAUA,GAEZr6F,KAAKglF,IAAM,IAAIgB,eACfhmF,KAAKglF,IAAIiB,KAAK,OAAQvB,GAAK,GAC3B1kF,KAAKglF,IAAIyV,aAAe,OACxBz6F,KAAKglF,IAAIkB,iBAAiB,eAAgB,oBAC1ClmF,KAAKglF,IAAIkB,iBAAiB,SAAU,oBACpClmF,KAAKglF,IAAIkB,iBAAiB,mBAAoB,kBAC9C,IAAIwU,EAAYxP,EAAa,mBACZn5F,GAAb2oG,GACF16F,KAAKglF,IAAIkB,iBAAiB,eAAgBwU,GAE5C16F,KAAKglF,IAAIz5D,iBAAiB,QAAQ,SAAUvC,GAC1C,OAAOkwE,EAAMyB,eAAe3xE,EAC9B,IACAhpB,KAAKglF,IAAIz5D,iBAAiB,SAAS,SAAUvC,GAC3C,OAAOkwE,EAAM0B,gBAAgB5xE,EAC/B,GACF,CAuDA,OAtDAsvE,EAAY8B,EAAY,CAAC,CACvB1qG,IAAK,SACLN,MAAO,SAAgB0T,GACrB9C,KAAK8C,SAAWA,EAChB9C,KAAKglF,IAAID,KAAK90E,KAAKC,UAAU,CAC3B2qF,KAAM76F,KAAKmtF,aAEf,GACC,CACDz9F,IAAK,iBACLN,MAAO,SAAwB45B,GAC7B,GAAIhpB,KAAKylF,QAAU,KAAOzlF,KAAKylF,OAAS,IAAK,CAC3C,IAAIqM,EAAW9xF,KAAK8xF,SAChBgJ,EAAgBhJ,EAASgJ,qBACtBhJ,EAASgJ,cAChB96F,KAAKmtF,WAAa2E,EAClB9xF,KAAK+6F,iBAAmBD,EACxB96F,KAAK8C,SAAS,KAAM9C,KAAKikF,SAC3B,MACEjkF,KAAK46F,gBAAgB5xE,EAEzB,GACC,CACDt5B,IAAK,kBACLN,MAAO,SAAyB45B,GAC9BhpB,KAAK8C,SAAS,4BAA8B9C,KAAK84F,KAAKpqG,KAAO,cAAgBsR,KAAKylF,OACpF,GACC,CACD/1F,IAAK,SACLN,MAAO,WACL,IAAIu5B,EAAS,CAAC,EACd,IAAK,IAAIj5B,KAAOsQ,KAAKmtF,WACnBxkE,EAAOj5B,GAAOsQ,KAAKmtF,WAAWz9F,GAEhC,OAAOi5B,CACT,GACC,CACDj5B,IAAK,SACLV,IAAK,WACH,OAAOgR,KAAKglF,IAAIS,MAClB,GACC,CACD/1F,IAAK,WACLV,IAAK,WACH,IAAIgsG,EAAOh7F,KAAKglF,IACdyV,EAAeO,EAAKP,aACpB3I,EAAWkJ,EAAKlJ,SAClB,MAAoB,QAAhB2I,EACK3I,EAEA7hF,KAAK2U,MAAMktE,EAEtB,KAEKsI,CACT,CAnFiB,GAoFba,EAAa,WACf,SAASA,EAAWJ,GAClB,IAAI3B,EAAQl5F,KACZm4F,EAAen4F,KAAMi7F,GACrBj7F,KAAK66F,KAAOA,EACZ76F,KAAK84F,KAAO+B,EAAK/B,KACjB,IAAIoC,EAAwBL,EAAKE,iBAC/BrW,EAAMwW,EAAsBxW,IAC5ByW,EAAUD,EAAsBC,QAIlC,IAAK,IAAIzrG,KAHTsQ,KAAKglF,IAAM,IAAIgB,eACfhmF,KAAKglF,IAAIiB,KAAK,MAAOvB,GAAK,GAC1B1kF,KAAKglF,IAAIyV,aAAe,OACRU,EACdn7F,KAAKglF,IAAIkB,iBAAiBx2F,EAAKyrG,EAAQzrG,IAEzCsQ,KAAKglF,IAAIz5D,iBAAiB,QAAQ,SAAUvC,GAC1C,OAAOkwE,EAAMyB,eAAe3xE,EAC9B,IACAhpB,KAAKglF,IAAIz5D,iBAAiB,SAAS,SAAUvC,GAC3C,OAAOkwE,EAAM0B,gBAAgB5xE,EAC/B,GACF,CAyBA,OAxBAsvE,EAAY2C,EAAY,CAAC,CACvBvrG,IAAK,SACLN,MAAO,SAAgB0T,GACrB9C,KAAK8C,SAAWA,EAChB9C,KAAKglF,IAAID,KAAK/kF,KAAK84F,KAAK52F,QAC1B,GACC,CACDxS,IAAK,iBACLN,MAAO,SAAwB45B,GAC7B,IAAIgyE,EAAOh7F,KAAKglF,IACdS,EAASuV,EAAKvV,OACdqM,EAAWkJ,EAAKlJ,SACdrM,GAAU,KAAOA,EAAS,IAC5BzlF,KAAK8C,SAAS,KAAMgvF,GAEpB9xF,KAAK46F,gBAAgB5xE,EAEzB,GACC,CACDt5B,IAAK,kBACLN,MAAO,SAAyB45B,GAC9BhpB,KAAK8C,SAAS,kBAAoB9C,KAAK84F,KAAKpqG,KAAO,cAAgBsR,KAAKglF,IAAIS,OAC9E,KAEKwV,CACT,CA/CiB,GAgDbl5F,EAAK,EACLq5F,EAAe,WACjB,SAASA,EAAatC,EAAMpU,EAAKN,GAC/B+T,EAAen4F,KAAMo7F,GACrBp7F,KAAK+B,KAAOA,EACZ/B,KAAK84F,KAAOA,EACZ94F,KAAK0kF,IAAMA,EACX1kF,KAAKokF,SAAWA,CAClB,CA8BA,OA7BAkU,EAAY8C,EAAc,CAAC,CACzB1rG,IAAK,SACLN,MAAO,SAAgB0T,GACrB,IAAIo2F,EAAQl5F,KACZ64F,EAAappG,OAAOuQ,KAAK84F,MAAM,SAAU3sC,EAAOkuC,GAC9C,GAAIluC,EACFrpD,EAASqpD,OADX,CAIA,IAAI0uC,EAAO,IAAIT,EAAWlB,EAAMJ,KAAMuB,EAAUnB,EAAMxU,KACtDp6B,EAAO4uC,EAAM9U,SAAU,oCAAqCyW,EAAK7V,KACjE6V,EAAKprG,QAAO,SAAU08D,GACpB,GAAIA,EACFrpD,EAASqpD,OACJ,CACL,IAAIkvC,EAAS,IAAIJ,EAAWJ,GAC5BvwC,EAAO4uC,EAAM9U,SAAU,mCAAoCiX,EAAOrW,KAClEqW,EAAO5rG,QAAO,SAAU08D,GAClBA,EACFrpD,EAASqpD,GAETrpD,EAAS,KAAM+3F,EAAK5W,SAExB,GACF,CACF,GAjBA,CAkBF,GACF,KAEKmX,CACT,CAtCmB,GAuCnB,SAAS9wC,EAAOz6D,EAAQyrG,GACtB,GAAIzrG,GAAuC,mBAAtBA,EAAOyrG,GAA2B,CACrD,IAAK,IAAIl/D,EAAOjqC,UAAUC,OAAQmpG,EAAW3oG,MAAMwpC,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAClGk/D,EAASl/D,EAAO,GAAKlqC,UAAUkqC,GAEjC,OAAOxsC,EAAOyrG,GAAYp4F,MAAMrT,EAAQ0rG,EAC1C,CACF,CACA,IAAIC,EAAyB,WAC3B,SAASA,EAAuBj8F,EAAOu5F,GACrCX,EAAen4F,KAAMw7F,GACrBx7F,KAAKT,MAAQA,EACbS,KAAK84F,KAAOA,EACZ94F,KAAKy7F,aAAe,IAAIL,EAAap7F,KAAK84F,KAAM94F,KAAK0kF,IAAK1kF,MAC1DA,KAAKoiF,SAAS,aAChB,CA2EA,OA1EAkW,EAAYkD,EAAwB,CAAC,CACnC9rG,IAAK,QACLN,MAAO,SAAe0T,GACpB,IAAIo2F,EAAQl5F,KACR07F,EAAch0E,SAASw7D,cAAc,SACzCwY,EAAY77F,KAAO,SACnB67F,EAAYhtG,KAAOsR,KAAKT,MAAM7Q,KAC9BsR,KAAKT,MAAMo8F,sBAAsB,cAAeD,GAChD17F,KAAKoiF,SAAS,SACdpiF,KAAKy7F,aAAahsG,QAAO,SAAU08D,EAAOghC,GACpChhC,GACFuvC,EAAY7zE,WAAW8/D,YAAY+T,GACnCxC,EAAM0C,cAAczvC,IAEpBuvC,EAAYtsG,MAAQ+9F,EAAW0O,UAEjC3C,EAAM9W,SAAS,OACft/E,EAASqpD,EACX,GACF,GACC,CACDz8D,IAAK,2BACLN,MAAO,SAAkC45B,GACvC,IAAI0K,EAAW1K,EAAMu8D,OAASv8D,EAAMuhB,MAAQ,IACxC7W,GACF1zB,KAAKoiF,SAAS,WAAY,CACxB1uD,SAAUA,GAGhB,GACC,CACDhkC,IAAK,WACLN,MAAO,SAAkBV,GACvB,IAAIyrG,EAAShoG,UAAUC,OAAS,QAAsBL,IAAjBI,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAGlF,OAFAgoG,EAAOrB,KAAO94F,KAAK84F,KACnBqB,EAAOp4F,GAAK/B,KAAKy7F,aAAa15F,GACvB2gF,EAAc1iF,KAAKT,MAAO,iBAAmB7Q,EAAM,CACxDyrG,OAAQA,GAEZ,GACC,CACDzqG,IAAK,gBACLN,MAAO,SAAuB+8D,GAChBnsD,KAAKoiF,SAAS,QAAS,CACjCj2B,MAAOA,IAEEs2B,kBACTqZ,MAAM3vC,EAEV,GACC,CACDz8D,IAAK,oCACLN,MAAO,SAA2C41F,GAChDhlF,KAAKoiF,SAAS,sBAAuB,CACnC4C,IAAKA,GAET,GACC,CACDt1F,IAAK,mCACLN,MAAO,SAA0C41F,GAC/C,IAAI+W,EAAS/7F,KACbA,KAAKoiF,SAAS,yBAA0B,CACtC4C,IAAKA,IAEPA,EAAIqW,OAAO9vE,iBAAiB,YAAY,SAAUvC,GAChD,OAAO+yE,EAAOC,yBAAyBhzE,EACzC,GACF,GACC,CACDt5B,IAAK,MACLV,IAAK,WACH,OAAOgR,KAAKT,MAAMy5C,aAAa,yBACjC,KAEKwiD,CACT,CAnF6B,GAoFzBS,EAAgB,2DAChBC,EAA0B,WAC5B,SAASA,EAAwBC,GAC/BhE,EAAen4F,KAAMk8F,GACrBl8F,KAAKm8F,KAAOA,EACZn8F,KAAKkgB,OAAS45E,EAAaqC,EAAMF,GAAe94E,QAAO,SAAU5jB,GAC/D,OAAOA,EAAM68F,MAAMhqG,MACrB,GACF,CA8CA,OA7CAkmG,EAAY4D,EAAyB,CAAC,CACpCxsG,IAAK,QACLN,MAAO,SAAe0T,GACpB,IAAIo2F,EAAQl5F,KACRsuC,EAActuC,KAAKq8F,gCACnBC,EAAsB,SAASA,IACjC,IAAIjkE,EAAaiW,EAAYrV,QACzBZ,EACFA,EAAWxvB,OAAM,SAAUsjD,GACrBA,GACFrpD,EAASqpD,GACT+sC,EAAM9W,SAAS,QAEfka,GAEJ,KAEAx5F,IACAo2F,EAAM9W,SAAS,OAEnB,EACApiF,KAAKoiF,SAAS,SACdka,GACF,GACC,CACD5sG,IAAK,gCACLN,MAAO,WACL,IAAIk/C,EAAc,GAOlB,OANAtuC,KAAKkgB,OAAO3V,SAAQ,SAAUhL,GAC5By6F,EAAUz6F,EAAM68F,OAAO7xF,SAAQ,SAAUuuF,GACvC,IAAIzgE,EAAa,IAAImjE,EAAuBj8F,EAAOu5F,GACnDxqD,EAAYlpC,KAAKizB,EACnB,GACF,IACOiW,CACT,GACC,CACD5+C,IAAK,WACLN,MAAO,SAAkBV,GACvB,IAAIyrG,EAAShoG,UAAUC,OAAS,QAAsBL,IAAjBI,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAClF,OAAOuwF,EAAc1iF,KAAKm8F,KAAM,kBAAoBztG,EAAM,CACxDyrG,OAAQA,GAEZ,KAEK+B,CACT,CAtD8B,GAuD1BK,EAAsB,iCACtBC,EAAsB,IAAI7wB,QAC1Bme,GAAU,EACd,SAASjhF,IACFihF,IACHA,GAAU,EACVpiE,SAAS6D,iBAAiB,QAASkxE,GAAU,GAC7C/0E,SAAS6D,iBAAiB,SAAUmxE,GACpCh1E,SAAS6D,iBAAiB,cAAeoxE,GAE7C,CACA,SAASF,EAASzzE,GAChB,IAAIjlB,EAASilB,EAAMjlB,OACI,SAAlBA,EAAOqnF,SAAwC,UAAlBrnF,EAAOqnF,SAAuC,UAAfrnF,EAAOlE,OAAoBkE,EAAOo4F,MACjGK,EAAoB9xF,IAAI3G,EAAOo4F,KAAMp4F,EAEzC,CACA,SAAS24F,EAAc1zE,GACrB4zE,EAA0B5zE,EAC5B,CACA,SAAS2zE,EAAuB3zE,GACF,QAAxBA,EAAMjlB,OAAOqnF,SACfwR,EAA0B5zE,EAE9B,CACA,SAAS4zE,EAA0B5zE,GACjC,IAAImzE,EAAOnzE,EAAMjlB,OACjB,GAAIo4F,EAAK/G,aAAamH,GACpBvzE,EAAMw5D,qBADR,CAIA,IAAInqD,EAAa,IAAI6jE,EAAwBC,GACzCj8E,EAASmY,EAAWnY,OACpBA,EAAO9tB,SACT42B,EAAMw5D,iBACN2Z,EAAK7iD,aAAaijD,EAAqB,IACvCr8E,EAAO3V,QAAQ4oF,GACf96D,EAAWxvB,OAAM,SAAUsjD,GACzBgwC,EAAK9iD,gBAAgBkjD,GACjBpwC,EACFjsC,EAAO3V,QAAQsyF,GAEfC,EAAWX,EAEf,IAdF,CAgBF,CACA,SAASW,EAAWX,GAClB,IAAIY,EAASP,EAAoBxtG,IAAImtG,IAAStC,EAAYsC,EAAM,2CAChE,GAAIY,EAAQ,CACV,IACE79D,EADY69D,EACO79D,SACrB69D,EAAO79D,UAAW,EAClB69D,EAAO9N,QACP8N,EAAOC,QACPD,EAAO79D,SAAWA,CACpB,MACE69D,EAASr1E,SAASw7D,cAAc,UACzBrjF,KAAO,SACdk9F,EAAOhqF,MAAMwD,QAAU,OACvB4lF,EAAKzN,YAAYqO,GACjBA,EAAOC,QACPb,EAAKxU,YAAYoV,GAEnBP,EAAoBz5E,OAAOo5E,EAC7B,CACA,SAAShJ,EAAQ5zF,GACfA,EAAM2/B,UAAW,CACnB,CACA,SAAS29D,EAAOt9F,GACdA,EAAM2/B,UAAW,CACnB,CACA,SAAS+9D,IACHlyF,OAAOmyF,eACTr0F,GAEJ,CACAunD,WAAW6sC,EAAW,GACtBhvG,EAAQ4a,MAAQA,EAChB5a,EAAQmtG,aAAeA,EACvBvsG,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,GAEX,CAr+BiEmmG,CAAQtnG,E,+BCMzE,SAAS4E,EAAQsqG,GACf,MAAoD,mBAA7CtuG,OAAOkB,UAAUkS,SAAS3T,KAAK6uG,EACxC,CACA,SAASz3F,EAAWy3F,GAClB,OAAOA,aAAoBC,QAC7B,CACA,SAASC,EAAcF,GAErB,MAAoD,oBAA7CtuG,OAAOkB,UAAUkS,SAAS3T,KAAK6uG,KAAoCz3F,EAAWy3F,IAAaA,aAAoBtuG,MACxH,CAGA,SAASyuG,EAAOv5F,EAAQD,GACtB,IAAK,IAAIpU,KAAOoU,EAEF,cAARpU,IAGA2tG,EAAcv5F,EAAOpU,KAASmD,EAAQiR,EAAOpU,KAC3C2tG,EAAcv5F,EAAOpU,MAAU2tG,EAAct5F,EAAOrU,MACtDqU,EAAOrU,GAAO,CAAC,GAEbmD,EAAQiR,EAAOpU,MAAUmD,EAAQkR,EAAOrU,MAC1CqU,EAAOrU,GAAO,IAEhB4tG,EAAOv5F,EAAOrU,GAAMoU,EAAOpU,UACFqC,IAAhB+R,EAAOpU,KAChBqU,EAAOrU,GAAOoU,EAAOpU,IAG3B,CACA,SAAS6U,EAAMg5F,EAAMC,GACnB,IAAIz5F,EAAS,CAAC,EAGd,OAFAu5F,EAAOv5F,EAAQw5F,GACfD,EAAOv5F,EAAQy5F,GACRz5F,CACT,CA3CA,gDA4CA,IAAI05F,EAAe,wCAYnB,SAASC,EAAMt9F,GACb,MAAO,GAAKA,CACd,CACA,SAASu9F,EAAQv9F,GACf,OAAOyC,WAAWzC,EACpB,CACA,SAASw9F,EAAOx9F,GACd,GAAIA,aAAe0yB,KACjB,OAAO1yB,EACF,GAAmB,kBAARA,EAChB,OAAO,IAAI0yB,KAAW,IAAN1yB,GAEhB,IAAIlQ,EAAIwtG,EAAMt9F,GACV6e,EAAU/uB,EAAEgvB,MAAMu+E,GACtB,GAAIx+E,EAAS,CACX,IAAIo9D,EAAO39E,SAASugB,EAAQ,GAAI,IAC5Bk9D,EAAQz9E,SAASugB,EAAQ,GAAI,IAAM,EACnCg9D,EAAMv9E,SAASugB,EAAQ,GAAI,IAC/B,OAAO,IAAI6T,KAAKupD,EAAMF,EAAOF,EAC/B,CAGE,IAAI/oF,EAAMhD,EAAEuO,QAAQ,IAAK,KAAKA,QAAQ,IAAK,IAAIA,QAAQ,MAAO,KAE9D,OAAO,IAAIq0B,KAAKA,KAAKlO,MAAM1xB,IAAQhD,EAGzC,CACA,SAAS2tG,EAAMz9F,GACb,GAAIvN,EAAQuN,GACV,OAAOA,EAEP,IAAI8iB,EAAM,GACV,IAAK,IAAI/0B,KAAKiS,EACRvR,OAAOkB,UAAUC,eAAe1B,KAAK8R,EAAKjS,IAC5C+0B,EAAI9d,KAAK,CAACjX,EAAGiS,EAAIjS,KAGrB,OAAO+0B,CAEX,CACA,SAAS46E,EAAcC,EAAgBC,EAAYC,EAAUhnB,EAAQC,EAAQgnB,EAAYC,EAAWC,GAClG,OAAO,SAAUvtF,EAAOgM,EAAM6iD,GAC5B,IAAI2+B,EAASxtF,EAAM4H,KACfrU,EAAUG,EAAM,CAAC,EAAGw5F,GAmCxB,OAlCA35F,EAAUG,EAAMH,EAASs7D,GAAgB,CAAC,IACtC7uD,EAAMytF,oBAAsB,WAAYzhF,IAC1CmhF,EAAW55F,EAASyY,EAAK0uB,OAAQ16B,EAAMytF,oBAErCzhF,EAAKrF,OACPymF,EAAS75F,EAASyY,EAAKrF,OAIrB,QAASqF,EACXo6D,EAAO7yE,EAASyY,EAAKrsB,KAlE3B,SAAwB6tG,GACtB,IAAK,IAAIlwG,EAAI,EAAGA,EAAIkwG,EAAOjsG,OAAQjE,IAEjC,IADA,IAAIsqB,EAAO4lF,EAAOlwG,GAAGsqB,KACZna,EAAI,EAAGA,EAAIma,EAAKrmB,OAAQkM,IAC/B,GAAIma,EAAKna,GAAG,GAAK,EACf,OAAO,EAIb,OAAO,CACT,CAyDgBigG,CAAeF,IACzBpnB,EAAO7yE,EAAS,GAIdyY,EAAKtsB,KACP2mF,EAAO9yE,EAASyY,EAAKtsB,KAEnB,YAAassB,GACfqhF,EAAW95F,EAASyY,EAAK6a,SAEvB7a,EAAKnN,SACPtL,EAAQsL,OAASmN,EAAKnN,QAEpBmN,EAAK2hF,QACPL,EAAU/5F,EAASyY,EAAK2hF,QAEtB3hF,EAAK4hF,QACPL,EAAUh6F,EAASyY,EAAK4hF,QAI1Br6F,EAAUG,EAAMH,EAASyY,EAAK6hF,SAAW,CAAC,EAE5C,CACF,CACA,SAASC,EAAWvtG,EAAGC,GACrB,OAAOD,EAAE,GAAGohG,UAAYnhG,EAAE,GAAGmhG,SAC/B,CACA,SAASoM,EAAmBxtG,EAAGC,GAC7B,OAAOD,EAAE,GAAKC,EAAE,EAClB,CAGA,SAASwtG,EAAaztG,EAAGC,GACvB,OAAOD,EAAIC,CACb,CACA,SAASytG,EAAMruF,EAAQ1N,GACrB,IAAK,IAAI5U,EAAI,EAAGA,EAAIsiB,EAAOre,OAAQjE,IACjC,IAAK4U,EAAG0N,EAAOtiB,IACb,OAAO,EAGX,OAAO,CACT,CAIA,SAAS4wG,EAAkBtuF,EAAQuuF,GAEjC,QADe,IAAXA,IAAmBA,GAAS,GACV,IAAlBvuF,EAAOre,OACT,OAAO,KAKT,IAHa0sG,EAAMruF,GAAQ,SAAUhiB,GACnC,OAA+B,IAAxBA,EAAEwwG,mBAA8C,IAAnBxwG,EAAEywG,YACxC,IAEE,OAAO,KAKT,IAHWJ,EAAMruF,GAAQ,SAAUhiB,GACjC,OAA0B,IAAnBA,EAAE0wG,YACX,IAEE,MAAO,SAKT,IAHUL,EAAMruF,GAAQ,SAAUhiB,GAChC,OAAwB,IAAjBA,EAAE2wG,UACX,IAEE,MAAO,OAET,GAAIJ,EACF,MAAO,MAKT,IAHYF,EAAMruF,GAAQ,SAAUhiB,GAClC,OAAuB,IAAhBA,EAAE4wG,SACX,IACY,CACV,IAAIC,EAAY7uF,EAAO,GAAG8uF,SAI1B,OAHWT,EAAMruF,GAAQ,SAAUhiB,GACjC,OAAOA,EAAE8wG,WAAaD,CACxB,IACc,OAAS,KACzB,CAIA,OAHWR,EAAMruF,GAAQ,SAAUhiB,GACjC,OAAwB,IAAjBA,EAAE+wG,UACX,IAIO,OAFE,OAGX,CACA,SAASC,EAAOr/F,GACd,OAAQiH,MAAMu2F,EAAOx9F,KAASs9F,EAAMt9F,GAAKhO,QAAU,CACrD,CACA,SAASgV,EAAShH,GAChB,MAAsB,kBAARA,CAChB,CACA,IAAIs/F,EAAe,CAAC,QAAS,KAAM,KAAM,KAAM,KAAM,KAAM,MAC3D,SAASC,EAAYC,EAAKxwG,EAAOgV,EAAS8H,GACxC0zF,EAAMA,GAAO,GACTx7F,EAAQkd,SACNlyB,EAAQ,IACVA,IAAiB,EACjBwwG,GAAO,KAETA,GAAOx7F,EAAQkd,QAEjB,IAAIoH,EAAStkB,EAAQskB,QAAU,GAC3BktD,EAAYxxE,EAAQwxE,UACpB5uE,EAAQ5C,EAAQ4C,MACpB,GAAI5C,EAAQy7F,UAAW,CACrB,IAAI3nE,EAAW9oC,GAAS,EACnB8oC,IACH9oC,IAAU,GAEZ,IACI0wG,EADAn5D,EAAYz6B,EAAO9H,EAAQy7F,UAAYzwG,EAEvCu3C,GAAa,oBACfv3C,GAAS,mBACT0wG,EAAY,GACHn5D,GAAa,iBACtBv3C,GAAS,gBACT0wG,EAAY,GACHn5D,GAAa,eACtBv3C,GAAS,cACT0wG,EAAY,GACHn5D,GAAa,YACtBv3C,GAAS,WACT0wG,EAAY,GACHn5D,GAAa,SACtBv3C,GAAS,QACT0wG,EAAY,GACHn5D,GAAa,MACtBv3C,GAAS,KACT0wG,EAAY,GAEZA,EAAY,OAII/tG,IAAd6jF,QAAqC7jF,IAAViV,IACzB5X,GAAS,QACP0wG,EAAYJ,EAAattG,OAAS,IACpChD,EAAQ,EACR0wG,GAAa,GAGjBlqB,EAAYxmF,GAAS,IAAO,EAAI,GAElCs5B,EAAS,IAAMg3E,EAAaI,GAGvB5nE,IACH9oC,IAAU,EAEd,CACA,QAAkB2C,IAAd6jF,QAAqC7jF,IAAViV,EAC7B,MAAM6b,MAAM,2CAEd,IAAK3W,SACena,IAAd6jF,IACFxmF,EAAQA,EAAM2wG,YAAYnqB,GACrBxxE,EAAQ47F,QACX5wG,EAAQyT,WAAWzT,UAGT2C,IAAViV,GACF,GAAIA,EAAQ,EAAG,CACb,IAAI8I,EAAMxf,KAAKyO,IAAI,IAAK,EAAIiI,GAC5B5X,EAAQsP,UAAU,EAAMtP,EAAQ0gB,GAAKmwF,QAAQ,IAAMnwF,CACrD,MACE1gB,EAAQA,EAAM6wG,QAAQj5F,GACjB5C,EAAQ47F,QACX5wG,EAAQyT,WAAWzT,IAK3B,GAAIgV,EAAQ87F,WAAa97F,EAAQ2+C,QAAS,CAExC,IAAI99C,GADJ7V,EAAQsuG,EAAMtuG,IACI8V,MAAM,KACxB9V,EAAQ6V,EAAM,GACVb,EAAQ87F,YACV9wG,EAAQA,EAAMqP,QAAQ,wBAAyB2F,EAAQ87F,YAErDj7F,EAAM7S,OAAS,IACjBhD,IAAUgV,EAAQ2+C,SAAW,KAAO99C,EAAM,GAE9C,CACA,OAAO26F,EAAMxwG,EAAQs5B,CACvB,CACA,SAASy3E,EAAatvF,EAAOwtF,EAAQloE,GACnC,OAAIA,KAAUkoE,EACLA,EAAOloE,GACLA,KAAUtlB,EAAMzM,QAClByM,EAAMzM,QAAQ+xB,GAEhB,IACT,CACA,IAAIiqE,EAAc,CAChB1sF,qBAAqB,EACrBvB,WAAW,EACX2B,QAAS,CACPy3B,OAAQ,CAAC,EACTkhC,QAAS,CACPgB,eAAe,EACfj7C,UAAW,CAAC,GAEdhb,MAAO,CACL3E,KAAM,CACJjN,KAAM,IAERpF,MAAO,SAGX+S,YAAa,CAAC,GAEZ8sF,EAAmB,CACrBpsF,OAAQ,CACNnP,EAAG,CACD8L,MAAO,CACL8pC,cAAe,GAEjBljC,MAAO,CACL3E,KAAM,CACJjN,KAAM,IAERpF,MAAO,QAEToW,KAAM,CAAC,GAETpjB,EAAG,CACDojB,KAAM,CACJE,iBAAiB,GAEnBU,MAAO,CACL3E,KAAM,CACJjN,KAAM,IAERpF,MAAO,QAET48E,KAAM,CAAC,EACPxsE,MAAO,CAAC,KAMV0vF,EAAgB,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACtO,SAASC,EAAan8F,EAASmnC,EAAQyyD,QACtBjsG,IAAXw5C,GACFnnC,EAAQ0P,QAAQy3B,OAAOh1B,UAAYg1B,EAC/BA,IAAqB,IAAXA,IACZnnC,EAAQ0P,QAAQy3B,OAAOuE,SAAWvE,IAE3ByyD,IACT55F,EAAQ0P,QAAQy3B,OAAOh1B,SAAU,EAErC,CACA,SAASiqF,EAAWp8F,EAASoT,GAC3BpT,EAAQ0P,QAAQ0D,MAAMjB,SAAU,EAChCnS,EAAQ0P,QAAQ0D,MAAMC,KAAOD,CAC/B,CASA,SAASipF,EAAYr8F,EAAS5T,GAChB,OAARA,IACF4T,EAAQ6P,OAAOzgB,EAAEhD,IAAMmtG,EAAQntG,GAEnC,CACA,SAASkwG,EAAYt8F,EAAS7T,GAC5B6T,EAAQ6P,OAAOzgB,EAAEjD,IAAMotG,EAAQptG,EACjC,CACA,SAASowG,EAAav8F,EAASszB,GAC7BtzB,EAAQ6P,OAAOzgB,EAAEkkC,UAAYA,EAC7BtzB,EAAQ6P,OAAOnP,EAAE4yB,UAAYA,CAC/B,CACA,SAASkpE,EAAYx8F,EAASoT,GAC5BpT,EAAQ6P,OAAOzgB,EAAEgkB,MAAMjB,SAAU,EACjCnS,EAAQ6P,OAAOzgB,EAAEgkB,MAAMC,KAAOD,CAChC,CACA,SAASqpF,EAAYz8F,EAASoT,GAC5BpT,EAAQ6P,OAAOnP,EAAE0S,MAAMjB,SAAU,EACjCnS,EAAQ6P,OAAOnP,EAAE0S,MAAMC,KAAOD,CAChC,CAGA,SAASspF,EAAWtvG,EAAK0+E,GACvB,IAAIvnD,EAAS,4CAA4Cx1B,KAAK3B,GAC9D,OAAOm3B,EAAS,QAAUjqB,SAASiqB,EAAO,GAAI,IAAM,KAAOjqB,SAASiqB,EAAO,GAAI,IAAM,KAAOjqB,SAASiqB,EAAO,GAAI,IAAM,KAAOunD,EAAU,IAAM1+E,CAC/I,CACA,SAASuvG,EAAQvtG,GACf,OAAa,OAANA,QAAoBzB,IAANyB,CACvB,CAmBA,SAASwtG,EAAe3C,GAGtB,IAFA,IAAIrqF,EAAQ,EACRzjB,EAgHN,SAAiB8tG,GAEf,IADA,IAAI9tG,EAAM,EACDpC,EAAI,EAAGA,EAAIkwG,EAAOjsG,OAAQjE,IAEjC,IADA,IAAIsqB,EAAO4lF,EAAOlwG,GAAGsqB,KACZna,EAAI,EAAGA,EAAIma,EAAKrmB,OAAQkM,IAAK,CACpC,IAAInO,EAAIG,KAAKsW,IAAI6R,EAAKna,GAAG,IACrBnO,EAAII,IACNA,EAAMJ,EAEV,CAEF,OAAOI,CACT,CA5HY0wG,CAAQ5C,GACX9tG,GAAO,MACZyjB,GAAS,KACTzjB,GAAO,KAET,OAAOyjB,CACT,CACA,SAASktF,EAAmBrwF,EAAOzM,EAAS+8F,GAE1C,IAAIC,EAAiB,CACnBlB,UAAWrvF,EAAMzM,QAAQ87F,UACzBn9C,QAASlyC,EAAMzM,QAAQ2+C,SAIrBs+C,EAAgB98F,EAAM,CACxB+c,OAAQzQ,EAAMzM,QAAQkd,OACtBoH,OAAQ7X,EAAMzM,QAAQskB,OACtBktD,UAAW/kE,EAAMzM,QAAQwxE,UACzB5uE,MAAO6J,EAAMzM,QAAQ4C,MACrBg5F,MAAOnvF,EAAMzM,QAAQ47F,OACpBoB,GACH,GAAIvwF,EAAMzM,QAAQ8yF,MAAO,CACvB,IAAImH,EAASxtF,EAAM4H,KACD,QAAd0oF,IACF9C,EAAS,CAAC,CACR5lF,KAAM4lF,KAKVgD,EAAcxB,UAAYmB,EAAe3C,EAC3C,CACA,GAAkB,QAAd8C,EAAqB,CACvB,IAAIj1F,EAAO9H,EAAQ6P,OAAOnP,EACR,QAAdq8F,IACFj1F,EAAO9H,EAAQ6P,OAAOzgB,GAEpB6tG,EAAcxB,YACX3zF,EAAK0E,MAAM0mE,WACdprE,EAAK0E,MAAM0mE,SAAW+pB,EAAcxB,UAAY,GAE7C3zF,EAAK0E,MAAM8pC,gBACdxuC,EAAK0E,MAAM8pC,cAAgB,IAG1BxuC,EAAK0E,MAAM9N,WACdoJ,EAAK0E,MAAM9N,SAAW,SAAU1T,GAC9B,OAAOuwG,EAAY,GAAIvwG,EAAOiyG,GAAe,EAC/C,GAEiB,YAAdF,GAAyC,WAAdA,GAA4B/8F,EAAQ6P,OAAOzgB,EAAEod,MAAM9N,WACjFsB,EAAQ6P,OAAOzgB,EAAEod,MAAM9N,SAAW,SAAU1T,GAC1C,OAAOuwG,EAAY,GAAIvwG,EAAOgyG,GAAgB,EAChD,EAEJ,CACA,IAAKh9F,EAAQ0P,QAAQ24D,QAAQj6C,UAAUuM,MACrC,GAAkB,YAAdoiE,EACF/8F,EAAQ0P,QAAQ24D,QAAQj6C,UAAUuM,MAAQ,SAAUvsB,GAClD,IAAIusB,EAAQvsB,EAAQmoB,QAAQoE,OAAS,GACjCA,IACFA,GAAS,MAEX,IAAIuiE,EAAY9uF,EAAQmS,OACxB,OAAOoa,EAAQ,IAAM4gE,EAAY,GAAI2B,EAAU9tG,EAAG4tG,GAAkB,KAAOzB,EAAY,GAAI2B,EAAUx8F,EAAGu8F,GAAiB,GAC3H,OACK,GAAkB,WAAdF,EACT/8F,EAAQ0P,QAAQ24D,QAAQj6C,UAAUuM,MAAQ,SAAUvsB,GAClD,IAAIusB,EAAQvsB,EAAQmoB,QAAQoE,OAAS,GACjCA,IACFA,GAAS,MAEX,IAAIuiE,EAAY9uF,EAAQitB,IACxB,OAAOV,EAAQ,IAAM4gE,EAAY,GAAI2B,EAAU9tG,EAAG4tG,GAAkB,KAAOzB,EAAY,GAAI2B,EAAUx8F,EAAGu8F,GAAiB,KAAO1B,EAAY,GAAI2B,EAAUnxG,EAAGixG,GAAkB,GACjL,OACK,GAAkB,QAAdD,EAET/8F,EAAQ0P,QAAQ24D,QAAQj6C,UAAUuM,MAAQ,SAAUvsB,GAClD,OAAOmtF,EAAY,GAAIntF,EAAQmS,OAAQ08E,EACzC,MACK,CACL,IAAIE,EAA2B,QAAdJ,EAAsB,IAAM,IAC7C/8F,EAAQ0P,QAAQ24D,QAAQj6C,UAAUuM,MAAQ,SAAUvsB,GAElD,GAAmC,OAA/BA,EAAQmS,OAAO48E,GAAnB,CAGA,IAAIxiE,EAAQvsB,EAAQmoB,QAAQoE,OAAS,GAIrC,OAHIA,IACFA,GAAS,MAEJ4gE,EAAY5gE,EAAOvsB,EAAQmS,OAAO48E,GAAaF,EALtD,CAMF,CACF,CAKiB,SAAdF,GAAsC,SAAdA,GAAyC,WAAhBtwF,EAAM2wF,QACrDp9F,EAAQ6P,OAAOzgB,EAAEod,MAAM9N,WAC1BsB,EAAQ6P,OAAOzgB,EAAEod,MAAM9N,SAAW,SAAU1T,GAC1C,OAAOsuG,EAAMtuG,EACf,GAEGgV,EAAQ0P,QAAQ24D,QAAQj6C,UAAUhb,QACrCpT,EAAQ0P,QAAQ24D,QAAQj6C,UAAUhb,MAAQ,SAAUhF,GAClD,OAAOkrF,EAAMlrF,EAAQ,GAAGmS,OAAOnxB,EACjC,GAGN,CA4BA,IAAIiuG,EAAc3D,EAAcv5F,EAAM67F,EAAaC,GAAmBE,EAAcC,GApMpF,SAAkBp8F,EAAS5T,GACb,OAARA,IACF4T,EAAQ6P,OAAOnP,EAAEtU,IAAMmtG,EAAQntG,GAEnC,IACA,SAAkB4T,EAAS7T,GACzB6T,EAAQ6P,OAAOnP,EAAEvU,IAAMotG,EAAQptG,EACjC,GA6LoHowG,EAAcC,EAAaC,GAwF/I,SAASa,EAAY7wF,EAAOswF,GAC1B,MAAkB,WAAdA,EAhDN,SAA2BtwF,GAIzB,IAHA,IAAIwtF,EAASxtF,EAAM4H,KACfhI,EAAS,GACTlgB,EA1DN,SAAc8tG,GAGZ,IADA,IAAI9tG,EAAM,EACDpC,EAAI,EAAGA,EAAIkwG,EAAOjsG,OAAQjE,IAEjC,IADA,IAAIsqB,EAAO4lF,EAAOlwG,GAAGsqB,KACZna,EAAI,EAAGA,EAAIma,EAAKrmB,OAAQkM,IAAK,CACpC,IAAInO,EAAIsoB,EAAKna,GAAG,GACZnO,EAAII,IACNA,EAAMJ,EAEV,CAEF,OAAOI,CACT,CA6CYotE,CAAK0gC,GACNlwG,EAAI,EAAGA,EAAIkwG,EAAOjsG,OAAQjE,IAAK,CAGtC,IAFA,IAAIsqB,EAAO4lF,EAAOlwG,GAAGsqB,KACjB9M,EAAS,GACJrN,EAAI,EAAGA,EAAIma,EAAKrmB,OAAQkM,IAAK,CACpC,IAAInO,EAAIsoB,EAAKna,GACbqN,EAAOvG,KAAK,CACV5R,EAAGrD,EAAE,GACL2U,EAAG3U,EAAE,GACLlB,EAAU,GAAPkB,EAAE,GAAUI,EAEfJ,EAAGA,EAAE,IAET,CACAsgB,EAAOrL,KAAKuG,EACd,CACA,MAAO,CACLyxB,OAAQ,GACR3sB,OAAQA,EAEZ,CA0BWkxF,CAAkB9wF,GACA,WAAhBA,EAAM2wF,OAAoC,QAAdL,GAAqC,WAAdA,EAxBhE,SAA2BtwF,GAGzB,IAFA,IAAIwtF,EAASxtF,EAAM4H,KACfhI,EAAS,GACJtiB,EAAI,EAAGA,EAAIkwG,EAAOjsG,OAAQjE,IAAK,CACtC,IAAIsqB,EAAO4lF,EAAOlwG,GAAGsqB,KACrBA,EAAKmqB,KAAKg8D,GAEV,IADA,IAAIjzF,EAAS,GACJrN,EAAI,EAAGA,EAAIma,EAAKrmB,OAAQkM,IAAK,CACpC,IAAInO,EAAIsoB,EAAKna,GACbqN,EAAOvG,KAAK,CACV5R,EAAGrD,EAAE,GACL2U,EAAG3U,EAAE,IAET,CACAsgB,EAAOrL,KAAKuG,EACd,CACA,MAAO,CACLyxB,OAAQ,GACR3sB,OAAQA,EAEZ,CAKWmxF,CAAkB/wF,GA3F7B,SAA4BA,GAM1B,IALA,IAAIwtF,EAASxtF,EAAM4H,KACfopF,EAAO,CAAC,EACRzjG,EAAO,GACPg/B,EAAS,GACT3sB,EAAS,GACJtiB,EAAI,EAAGA,EAAIkwG,EAAOjsG,OAAQjE,IAEjC,IADA,IAAIsqB,EAAO4lF,EAAOlwG,GAAGsqB,KACZna,EAAI,EAAGA,EAAIma,EAAKrmB,OAAQkM,IAAK,CACpC,IAAI7P,EAAIgqB,EAAKna,GACT5O,EAAsB,aAAhBmhB,EAAM2wF,MAAuB/yG,EAAE,GAAG+jG,UAAY/jG,EAAE,GACrDozG,EAAKnyG,KACRmyG,EAAKnyG,GAAO,IAAIkD,MAAMyrG,EAAOjsG,QAC7BgM,EAAKgH,KAAK1V,IAEZmyG,EAAKnyG,GAAKvB,GAAKM,EAAE,EACnB,CAEkB,aAAhBoiB,EAAM2wF,OAAwC,WAAhB3wF,EAAM2wF,OACtCpjG,EAAKwkC,KAAKi8D,GAEZ,IAAK,IAAIiD,EAAM,EAAGA,EAAMzD,EAAOjsG,OAAQ0vG,IACrCrxF,EAAOrL,KAAK,IAEd,IAAK,IAAI28F,EAAM,EAAGA,EAAM3jG,EAAKhM,OAAQ2vG,IAAO,CAC1C,IAAIC,EAAQ5jG,EAAK2jG,GACbhjE,EAAwB,aAAhBluB,EAAM2wF,MAAuB,IAAI1uE,KAAKkvE,GAASA,EAC3D5kE,EAAOh4B,KAAK25B,GAEZ,IADA,IAAImpC,EAAM25B,EAAKG,GACNC,EAAM,EAAGA,EAAM5D,EAAOjsG,OAAQ6vG,IAAO,CAC5C,IAAI9xG,EAAI+3E,EAAI+5B,GAEZxxF,EAAOwxF,GAAK78F,UAAWrT,IAAN5B,EAAkB,KAAOA,EAC5C,CACF,CACA,MAAO,CACLitC,OAAQA,EACR3sB,OAAQA,EAEZ,CAsDWyxF,CAAmBrxF,EAE9B,CACA,SAASsxF,EAAgBtxF,EAAOzM,EAAS+8F,GAOvC,IANA,IAAIiB,EAAMV,EAAY7wF,EAAOswF,GACzB/jE,EAASglE,EAAIhlE,OACb3sB,EAAS2xF,EAAI3xF,OACb4tF,EAASxtF,EAAM4H,KACfnG,EAAW,GACX5C,EAASmB,EAAMzM,QAAQsL,QAAU4wF,EAC5BnyG,EAAI,EAAGA,EAAIkwG,EAAOjsG,OAAQjE,IAAK,CACtC,IAAI+B,EAAImuG,EAAOlwG,GAGXqS,OAAQ,EACR4R,OAAkB,EACtB,IAAIvB,EAAMzM,QAAQsL,SAAUmB,EAAMytF,oBAAqC,QAAd6C,GAAqC,WAAdA,GAA4BjxG,EAAEsQ,QAAS3N,EAAQge,EAAMzM,QAAQsL,SAAY7c,EAAQge,EAAMzM,QAAQsL,OAAO,IAOpLlP,EAAQtQ,EAAEsQ,OAASkP,EAAOvhB,GAC1BikB,EAAgC,SAAd+uF,EAAuBL,EAAWtgG,EAAO,IAAOA,MARuH,CACzLA,EAAQkP,EACR0C,EAAkB,GAClB,IAAK,IAAI9T,EAAI,EAAGA,EAAIoR,EAAOtd,OAAQkM,IACjC8T,EAAgB9T,GAAKwiG,EAAWtgG,EAAMlC,GAAI,GAE9C,CAIA,IAAIq8B,EAAU,CACZoE,MAAO7uC,EAAExB,MAAQ,GACjB+pB,KAAMhI,EAAOtiB,GACbqtB,KAAoB,SAAd2lF,EACN9uF,YAAa7R,EACb4R,gBAAiBA,EACjBqJ,YAAa,GAEX4mF,EAA2B,SAAdlB,GAAsC,SAAdA,GAAsC,YAAdA,GAAyC,WAAdA,EACxFkB,IACF1nE,EAAQ2nE,qBAAuB9hG,EAC/Bm6B,EAAQ4nE,0BAA4B/hG,EACpCm6B,EAAQ6nE,eAAiB,IAET,WAAdrB,IACFxmE,EAAQ2nE,qBAAuBlwF,EAC/BuoB,EAAQ4nE,0BAA4BnwF,EACpCuoB,EAAQ8nE,sBAAwB,GAE9BvyG,EAAEmnC,QACJsD,EAAQtD,MAAQnnC,EAAEmnC,QAGN,IADF8oE,EAAatvF,EAAO3gB,EAAG,SAEjCyqC,EAAQvT,QAAU,EACTi7E,IACT1nE,EAAQvT,QAAU,KAGL,IADF+4E,EAAatvF,EAAO3gB,EAAG,YAElCyqC,EAAQ+nE,YAAc,EACtB/nE,EAAQgoE,iBAAmB,GAE7BhoE,EAAUp2B,EAAMo2B,EAAS9pB,EAAMzM,QAAQu2B,SAAW,CAAC,GACnDA,EAAUp2B,EAAMo2B,EAASzqC,EAAEwuG,SAAW,CAAC,GACvC/jE,EAAUp2B,EAAMo2B,EAASzqC,EAAEyqC,SAAW,CAAC,GACvCroB,EAASlN,KAAKu1B,EAChB,CACA,IAAI9tB,EAAOgE,EAAMzM,QAAQyI,KACrBC,EAAO+D,EAAMzM,QAAQ0I,KAgBzB,GAfoB,aAAhB+D,EAAM2wF,OACJT,EAAQl0F,KACVzI,EAAQ6P,OAAOzgB,EAAEhD,IAAMotG,EAAO/wF,GAAM2lF,WAElCuO,EAAQj0F,KACV1I,EAAQ6P,OAAOzgB,EAAEjD,IAAMqtG,EAAO9wF,GAAM0lF,YAEb,WAAhB3hF,EAAM2wF,QACXT,EAAQl0F,KACVzI,EAAQ6P,OAAOzgB,EAAEhD,IAAMqc,GAErBk0F,EAAQj0F,KACV1I,EAAQ6P,OAAOzgB,EAAEjD,IAAMuc,IAGP,aAAhB+D,EAAM2wF,MAAsB,CAC9B,IAAIoB,EAAW7D,EAAkB3hE,GAWjC,GARsB,IAAlBA,EAAOhrC,SACL2uG,EAAQl0F,IACVuwB,EAAOh4B,KAAKw4F,EAAO/wF,IAEjBk0F,EAAQj0F,IACVswB,EAAOh4B,KAAKw4F,EAAO9wF,KAGnBswB,EAAOhrC,OAAS,EAAG,CAGrB,IAFA,IAAIywG,GAAW9B,EAAQl0F,GAAQ+wF,EAAO/wF,GAAQuwB,EAAO,IAAIo1D,UACrDsQ,GAAW/B,EAAQj0F,GAAQ8wF,EAAO9wF,GAAQswB,EAAO,IAAIo1D,UAChDsP,EAAM,EAAGA,EAAM1kE,EAAOhrC,OAAQ0vG,IAAO,CAC5C,IAAI1yG,EAAQguC,EAAO0kE,GAAKtP,UACpBpjG,EAAQyzG,IACVA,EAAUzzG,GAERA,EAAQ0zG,IACVA,EAAU1zG,EAEd,CACA,IAEMq1D,EAFFs+C,GAAYD,EAAUD,GAAW,MACrC,IAAKz+F,EAAQ6P,OAAOzgB,EAAE4pF,KAAKpH,KAwBzB,GAtBiB,SAAb4sB,GAAuBG,EAAW,MACpC3+F,EAAQ6P,OAAOzgB,EAAE4pF,KAAKpH,KAAO,OAC7BvxB,EAAO,KACe,UAAbm+C,GAAwBG,EAAW,KAC5C3+F,EAAQ6P,OAAOzgB,EAAE4pF,KAAKpH,KAAO,QAC7BvxB,EAAO,IACe,SAAbm+C,GAAoC,QAAbA,GAAsBG,EAAW,IACjE3+F,EAAQ6P,OAAOzgB,EAAE4pF,KAAKpH,KAAO,MAC7BvxB,EAAO,GACe,SAAbm+C,GAAuBG,EAAW,IAC3C3+F,EAAQ6P,OAAOzgB,EAAE4pF,KAAKU,eAAiB,CACrC9B,KAAM,cAER53E,EAAQ6P,OAAOzgB,EAAE4pF,KAAKpH,KAAO,OAC7BvxB,EAAO,EAAI,IACW,WAAbm+C,IACTx+F,EAAQ6P,OAAOzgB,EAAE4pF,KAAKU,eAAiB,CACrC/B,OAAQ,UAEV33E,EAAQ6P,OAAOzgB,EAAE4pF,KAAKpH,KAAO,SAC7BvxB,EAAO,EAAI,GAAO,IAEhBA,GAAQs+C,EAAW,EAAG,CAExB,IAAIxrF,EAAQ1G,EAAMuX,QAAQ46E,YAC1B,GAAIzrF,EAAQ,EAAG,CACb,IAAI0rF,EAAe3yG,KAAK2qD,KAAK8nD,EAAWt+C,GAAQltC,EAAQ,MACvC,SAAbqrF,GAAgC,IAATn+C,IACzBw+C,EAA+C,EAAhC3yG,KAAK2qD,KAAKgoD,EAAe,IAE1C7+F,EAAQ6P,OAAOzgB,EAAEod,MAAM0mE,SAAW2rB,CACpC,CACF,CAEG7+F,EAAQ6P,OAAOzgB,EAAE4pF,KAAK4B,gBACR,SAAb4jB,EACFx+F,EAAQ6P,OAAOzgB,EAAE4pF,KAAK4B,cAAgB,OAChB,UAAb4jB,EACTx+F,EAAQ6P,OAAOzgB,EAAE4pF,KAAK4B,cAAgB,WAChB,SAAb4jB,GAAoC,QAAbA,EAChCx+F,EAAQ6P,OAAOzgB,EAAE4pF,KAAK4B,cAAgB,KAChB,SAAb4jB,EACTx+F,EAAQ6P,OAAOzgB,EAAE4pF,KAAK4B,cAAgB,aAChB,WAAb4jB,IACTx+F,EAAQ6P,OAAOzgB,EAAE4pF,KAAK4B,cAAgB,UAG5C,CACF,CACA,MAAO,CACL5hD,OAAQA,EACR9qB,SAAUA,EAEd,CACA,IAAI4wF,EAAkB,SAAuBxE,GAC3C1+F,KAAKtR,KAAO,UACZsR,KAAK0+F,QAAUA,CACjB,EACAwE,EAAgBnzG,UAAUozG,gBAAkB,SAAyBtyF,EAAOswF,GACrEA,IACHA,EAAY,QAEd,IACI/8F,EAAUq9F,EAAY5wF,EAAOtM,EADd,CAAC,EACiCsM,EAAMzM,UAC3D88F,EAAmBrwF,EAAOzM,EAAS+8F,GACnC,IAAI1oF,EAAO0pF,EAAgBtxF,EAAOzM,EAAS+8F,GACvB,WAAhBtwF,EAAM2wF,OACRp9F,EAAQ6P,OAAOzgB,EAAEqM,KAAOuE,EAAQ6P,OAAOzgB,EAAEqM,MAAQ,SACjDuE,EAAQ6P,OAAOzgB,EAAEs8C,SAAW1rC,EAAQ6P,OAAOzgB,EAAEs8C,UAAY,UAEzD1rC,EAAQ6P,OAAOzgB,EAAEqM,KAAuB,WAAhBgR,EAAM2wF,MAAqB,WAAa,OAElExhG,KAAKojG,UAAUvyF,EAAO,OAAQ4H,EAAMrU,EACtC,EACA8+F,EAAgBnzG,UAAUszG,eAAiB,SAAwBxyF,GACjE,IAAIzM,EAAUG,EAAM,CAAC,EAAG67F,GACpBvvF,EAAMzM,QAAQk/F,QAChBl/F,EAAQ4kC,OAAS,OAEf,WAAYn4B,EAAMzM,SACpBm8F,EAAan8F,EAASyM,EAAMzM,QAAQmnC,QAElC16B,EAAMzM,QAAQoT,OAChBgpF,EAAWp8F,EAASyM,EAAMzM,QAAQoT,OAGpC0pF,EAAmBrwF,EADnBzM,EAAUG,EAAMH,EAASyM,EAAMzM,QAAQs6F,SAAW,CAAC,GAChB,OAGnC,IAFA,IAAIthE,EAAS,GACT3sB,EAAS,GACJtiB,EAAI,EAAGA,EAAI0iB,EAAM4H,KAAKrmB,OAAQjE,IAAK,CAC1C,IAAIytB,EAAQ/K,EAAM4H,KAAKtqB,GACvBivC,EAAOh4B,KAAKwW,EAAM,IAClBnL,EAAOrL,KAAKwW,EAAM,GACpB,CACA,IAAI+e,EAAU,CACZliB,KAAMhI,EACN2B,gBAAiBvB,EAAMzM,QAAQsL,QAAU4wF,GAGvC7nF,EAAO,CACT2kB,OAAQA,EACR9qB,SAAU,CAHZqoB,EAAUp2B,EAAMo2B,EAAS9pB,EAAMzM,QAAQu2B,SAAW,CAAC,KAKnD36B,KAAKojG,UAAUvyF,EAAO,MAAO4H,EAAMrU,EACrC,EACA8+F,EAAgBnzG,UAAUwzG,kBAAoB,SAA2B1yF,EAAOswF,GAC9E,IAAI/8F,EACJ,GAAkB,QAAd+8F,EAAqB,CACvB,IAAIqC,EAAaj/F,EAAM67F,EAAaC,GACpCmD,EAAWlwF,UAAY,IAGvBkwF,EAAWvvF,OAAOzgB,EAAEojB,KAAKE,iBAAkB,EAC3C0sF,EAAWvvF,OAAOnP,EAAE8R,KAAKE,iBAAkB,SACpC0sF,EAAWvvF,OAAOnP,EAAE8L,MAAM8pC,cACjCt2C,EAAU05F,EAAc0F,EAAYjD,EAAcC,EAAYC,EAAaC,EAAaC,EAAcC,EAAaC,EAAzG/C,CAAsHjtF,EAAOA,EAAMzM,QAC/I,MACEA,EAAUq9F,EAAY5wF,EAAOA,EAAMzM,SAErC88F,EAAmBrwF,EAAOzM,EAAS+8F,GACnC,IAAI1oF,EAAO0pF,EAAgBtxF,EAAOzM,EAAS,UACzB,QAAd+8F,GAleN,SAAsBtwF,EAAO4H,EAAMrU,GACjC,IAAIq/F,EAAenzG,KAAK2qD,KAAKpqC,EAAMuX,QAAQ46E,YAAc,EAAMvqF,EAAK2kB,OAAOhrC,QACvEqxG,EAAe,GACjBA,EAAe,GACNA,EAAe,KACxBA,EAAe,IAEZr/F,EAAQ6P,OAAOzgB,EAAEod,MAAM9N,WAC1BsB,EAAQ6P,OAAOzgB,EAAEod,MAAM9N,SAAW,SAAU1T,GAE1C,OADAA,EAAQsuG,EAAM19F,KAAKg/B,iBAAiB5vC,KAC1BgD,OAASqxG,EACVr0G,EAAM4mG,UAAU,EAAGyN,EAAe,GAAK,MAEvCr0G,CAEX,EAEJ,CAkdIs0G,CAAa7yF,EAAO4H,EAAMrU,GAEtB,SAAUA,EAAQmP,cACtBnP,EAAQmP,YAAYjkB,KAAO,SAE7B0Q,KAAKojG,UAAUvyF,EAAO,MAAO4H,EAAMrU,EACrC,EACA8+F,EAAgBnzG,UAAU4zG,gBAAkB,SAAyB9yF,GACnE7Q,KAAKmjG,gBAAgBtyF,EAAO,OAC9B,EACAqyF,EAAgBnzG,UAAU6zG,eAAiB,SAAwB/yF,GACjE7Q,KAAKujG,kBAAkB1yF,EAAO,MAChC,EACAqyF,EAAgBnzG,UAAU8zG,mBAAqB,SAA4BhzF,EAAOswF,GAChFA,EAAYA,GAAa,UACzB,IAAI/8F,EAAUq9F,EAAY5wF,EAAOA,EAAMzM,SACvC88F,EAAmBrwF,EAAOzM,EAAS+8F,GAC7B,aAAc/8F,IAClBA,EAAQ8P,UAAW,GAErB,IAAIuE,EAAO0pF,EAAgBtxF,EAAOzM,EAAS+8F,GAC3C/8F,EAAQ6P,OAAOzgB,EAAEqM,KAAOuE,EAAQ6P,OAAOzgB,EAAEqM,MAAQ,SACjDuE,EAAQ6P,OAAOzgB,EAAEs8C,SAAW1rC,EAAQ6P,OAAOzgB,EAAEs8C,UAAY,SAGnD,SAAU1rC,EAAQmP,cACtBnP,EAAQmP,YAAYjkB,KAAO,WAE7B0Q,KAAKojG,UAAUvyF,EAAOswF,EAAW1oF,EAAMrU,EACzC,EACA8+F,EAAgBnzG,UAAU+zG,kBAAoB,SAA2BjzF,GACvE7Q,KAAK6jG,mBAAmBhzF,EAAO,SACjC,EACAqyF,EAAgBnzG,UAAUokE,QAAU,SAAiBtjD,GAC/CA,EAAMA,OACRA,EAAMA,MAAMsjD,SAEhB,EACA+uC,EAAgBnzG,UAAUqzG,UAAY,SAAmBvyF,EAAOhR,EAAM4Y,EAAMrU,GAE1E,GADApE,KAAKm0D,QAAQtjD,IACTA,EAAMkzF,UAAV,CAGA,IAAIrkC,EAAe,CACjB7/D,KAAMA,EACN4Y,KAAMA,EACNrU,QAASA,GAEPyM,EAAMzM,QAAQ4/F,MAChBj5F,OAAO+U,QAAQmkF,IAAI,kBAAoBh0F,KAAKC,UAAUwvD,GAAgB,MAExE7uD,EAAMuX,QAAQsjE,UAAY,oBAC1B,IAAIv4E,EAAMtC,EAAMuX,QAAQ87E,qBAAqB,UAAU,GACvDrzF,EAAMA,MAAQ,IAAI7Q,KAAK0+F,QAAQvrF,EAAKusD,EAXpC,CAYF,EACA,IAAIykC,EAAmB,CACrBtzF,MAAO,CAAC,EACRovD,MAAO,CACLzoD,MAAO,CACLC,KAAM,MAER2lB,OAAQ,CACNrqB,MAAO,CACLo0C,SAAU,UAIhBi9C,MAAO,CACL5sF,MAAO,CACLC,KAAM,MAER2lB,OAAQ,CACNrqB,MAAO,CACLo0C,SAAU,UAIhB3vC,MAAO,CACLC,KAAM,MAER4sF,QAAS,CACPzpD,SAAS,GAEXrP,OAAQ,CACN9vB,YAAa,GAEfgxD,QAAS,CACP15D,MAAO,CACLo0C,SAAU,SAGdm9C,YAAa,CACXC,WAAY,CAAC,EACb1oF,KAAM,CAAC,EACPwiF,OAAQ,CACNmG,OAAQ,CAAC,IAGbpnB,KAAM,CACJqnB,QAAQ,IAGZ,SAASC,EAAatgG,EAASmnC,EAAQyyD,QACtBjsG,IAAXw5C,GACFnnC,EAAQmnC,OAAOqP,UAAYrP,EACvBA,IAAqB,IAAXA,IACG,QAAXA,GAA+B,WAAXA,EACtBnnC,EAAQmnC,OAAOo5D,cAAgBp5D,GAE/BnnC,EAAQmnC,OAAOgH,OAAS,WACxBnuC,EAAQmnC,OAAOo5D,cAAgB,SAC/BvgG,EAAQmnC,OAAOhgC,MAAQggC,KAGlByyD,IACT55F,EAAQmnC,OAAOqP,SAAU,EAE7B,CACA,SAASgqD,EAAWxgG,EAASoT,GAC3BpT,EAAQoT,MAAMC,KAAOD,CACvB,CAmBA,IAAIqtF,EAAc/G,EAAcqG,EAAkBO,EAAcE,GAlBhE,SAAkBxgG,EAAS5T,GACzB4T,EAAQggG,MAAM5zG,IAAMA,CACtB,IACA,SAAkB4T,EAAS7T,GACzB6T,EAAQggG,MAAM7zG,IAAMA,CACtB,IACA,SAAsB6T,EAASszB,GAC7B,IAAIotE,EAAeptE,GAAsB,IAAZA,EAAmB,SAAWA,EAAU,KACrEtzB,EAAQkgG,YAAYjG,OAAO0G,SAAWD,EACtC1gG,EAAQkgG,YAAYzoF,KAAKkpF,SAAWD,EACpC1gG,EAAQkgG,YAAYC,WAAWQ,SAAWD,CAC5C,IACA,SAAqB1gG,EAASoT,GAC5BpT,EAAQ67D,MAAMzoD,MAAMC,KAAOD,CAC7B,IACA,SAAqBpT,EAASoT,GAC5BpT,EAAQggG,MAAM5sF,MAAMC,KAAOD,CAC7B,IAEA,SAASwtF,EAAiBn0F,EAAOzM,EAAS+8F,GACxC,IAAIE,EAAgB,CAClB//E,OAAQzQ,EAAMzM,QAAQkd,OACtBoH,OAAQ7X,EAAMzM,QAAQskB,OACtBw3E,UAAWrvF,EAAMzM,QAAQ87F,UACzBn9C,QAASlyC,EAAMzM,QAAQ2+C,QACvB6yB,UAAW/kE,EAAMzM,QAAQwxE,UACzB5uE,MAAO6J,EAAMzM,QAAQ4C,MACrBg5F,MAAOnvF,EAAMzM,QAAQ47F,OAIL,QAAdmB,GAAwBtuG,EAAQuR,EAAQggG,QAAWhgG,EAAQggG,MAAMhnE,OAAOjtB,YAC1E/L,EAAQggG,MAAMhnE,OAAOjtB,UAAY,WAC/B,OAAOwvF,EAAY,GAAI3/F,KAAK5Q,MAAOiyG,EACrC,GAEGj9F,EAAQqoE,QAAQw4B,gBAAmB7gG,EAAQqoE,QAAQy4B,cACtD9gG,EAAQqoE,QAAQw4B,eAAiB,WAC/B,MAAO,sBAAwBjlG,KAAKQ,MAAQ,mBAAqBm/F,EAAY3/F,KAAKq+F,OAAO3vG,KAAO,QAASsR,KAAK8E,EAAGu8F,GAAiB,WACpI,EAEJ,CACA,IAAI8D,EAAkB,SAAuBzG,GAC3C1+F,KAAKtR,KAAO,aACZsR,KAAK0+F,QAAUA,CACjB,EACAyG,EAAgBp1G,UAAUozG,gBAAkB,SAAyBtyF,EAAOswF,GAE1E,IAAIzhC,EAAe,CAAC,EACF,gBAFlByhC,EAAYA,GAAa,YAGvBzhC,EAAe,CACb4kC,YAAa,CACXC,WAAY,CACVQ,SAAU,UAEZlpF,KAAM,CACJkpF,SAAU,UAEZ1G,OAAQ,CACNmG,OAAQ,CACN5pD,SAAS,QAMS,IAAxB/pC,EAAMzM,QAAQghG,QACE,eAAdjE,EACFA,EAAY,OACW,WAAdA,IACTA,EAAY,SAGhB,IAAI/8F,EAAUygG,EAAYh0F,EAAOA,EAAMzM,QAASs7D,GAC5B,WAAhB7uD,EAAM2wF,MACRp9F,EAAQ67D,MAAMpgE,KAAOuE,EAAQ67D,MAAMpgE,MAAQ,SAE3CuE,EAAQ67D,MAAMpgE,KAAuB,WAAhBgR,EAAM2wF,MAAqB,WAAa,WAE1Dp9F,EAAQyM,MAAMhR,OACjBuE,EAAQyM,MAAMhR,KAAOshG,GAEvB6D,EAAiBn0F,EAAOzM,EAAS+8F,GAEjC,IADA,IAAI9C,EAASxtF,EAAM4H,KACVtqB,EAAI,EAAGA,EAAIkwG,EAAOjsG,OAAQjE,IAAK,CACtCkwG,EAAOlwG,GAAGO,KAAO2vG,EAAOlwG,GAAGO,MAAQ,QACnC,IAAI+pB,EAAO4lF,EAAOlwG,GAAGsqB,KACrB,GAAoB,aAAhB5H,EAAM2wF,MACR,IAAK,IAAIljG,EAAI,EAAGA,EAAIma,EAAKrmB,OAAQkM,IAC/Bma,EAAKna,GAAG,GAAKma,EAAKna,GAAG,GAAGk0F,cAED,WAAhB3hF,EAAM2wF,OACf/oF,EAAKmqB,KAAKg8D,GAEZP,EAAOlwG,GAAGq2G,OAAS,CACjBa,OAAQ,WAEmB,IAAzBx0F,EAAMzM,QAAQuH,SAChB0yF,EAAOlwG,GAAGq2G,OAAO5pD,SAAU,EAE/B,CACA56C,KAAKojG,UAAUvyF,EAAOwtF,EAAQj6F,EAChC,EACA+gG,EAAgBp1G,UAAU8zG,mBAAqB,SAA4BhzF,GACzE,IAAIzM,EAAUygG,EAAYh0F,EAAOA,EAAMzM,QAAS,CAAC,GACjDA,EAAQyM,MAAMhR,KAAO,UACrBG,KAAKojG,UAAUvyF,EAAOA,EAAM4H,KAAMrU,EACpC,EACA+gG,EAAgBp1G,UAAUszG,eAAiB,SAAwBxyF,GACjE,IAAI6uD,EAAen7D,EAAM4/F,EAAkB,CAAC,GACxCtzF,EAAMzM,QAAQsL,SAChBgwD,EAAahwD,OAASmB,EAAMzM,QAAQsL,QAElCmB,EAAMzM,QAAQk/F,QAChB5jC,EAAa4kC,YAAc,CACzBgB,IAAK,CACHC,UAAW,SAIb,WAAY10F,EAAMzM,SACpBsgG,EAAahlC,EAAc7uD,EAAMzM,QAAQmnC,QAEvC16B,EAAMzM,QAAQoT,OAChBotF,EAAWllC,EAAc7uD,EAAMzM,QAAQoT,OAEzC,IAAIpT,EAAUG,EAAMm7D,EAAc7uD,EAAMzM,QAAQs6F,SAAW,CAAC,GAC5DsG,EAAiBn0F,EAAOzM,EAAS,OACjC,IAAIi6F,EAAS,CAAC,CACZx+F,KAAM,MACNnR,KAAMmiB,EAAMzM,QAAQ26B,OAAS,QAC7BtmB,KAAM5H,EAAM4H,OAEdzY,KAAKojG,UAAUvyF,EAAOwtF,EAAQj6F,EAChC,EACA+gG,EAAgBp1G,UAAUwzG,kBAAoB,SAA2B1yF,EAAOswF,GAC9EA,EAAYA,GAAa,SACzB,IAAI9C,EAASxtF,EAAM4H,KACfrU,EAAUygG,EAAYh0F,EAAOA,EAAMzM,SACnCy9F,EAAO,GACP2D,EAAa,GACjBphG,EAAQyM,MAAMhR,KAAOshG,EACrB6D,EAAiBn0F,EAAOzM,EAAS+8F,GACjC,IAAK,IAAIhzG,EAAI,EAAGA,EAAIkwG,EAAOjsG,OAAQjE,IAEjC,IADA,IAAI+B,EAAImuG,EAAOlwG,GACNmQ,EAAI,EAAGA,EAAIpO,EAAEuoB,KAAKrmB,OAAQkM,IAAK,CACtC,IAAI7P,EAAIyB,EAAEuoB,KAAKna,GACVujG,EAAKpzG,EAAE,MACVozG,EAAKpzG,EAAE,IAAM,IAAImE,MAAMyrG,EAAOjsG,QAC9BozG,EAAWpgG,KAAK3W,EAAE,KAEpBozG,EAAKpzG,EAAE,IAAIN,GAAKM,EAAE,EACpB,CAEkB,WAAhBoiB,EAAM2wF,OACRgE,EAAW5iE,KAAKi8D,GAElBz6F,EAAQ67D,MAAMulC,WAAaA,EAE3B,IADA,IAAIC,EAAY,GACP3D,EAAM,EAAGA,EAAMzD,EAAOjsG,OAAQ0vG,IAAO,CAE5C,IADA,IAAI4D,EAAM,GACDzD,EAAM,EAAGA,EAAMuD,EAAWpzG,OAAQ6vG,IACzCyD,EAAItgG,KAAKy8F,EAAK2D,EAAWvD,IAAMH,IAAQ,GAEzC,IAAI6D,EAAK,CACPj3G,KAAM2vG,EAAOyD,GAAKpzG,MAAQ,QAC1B+pB,KAAMitF,GAEJrH,EAAOyD,GAAKzqE,QACdsuE,EAAGtuE,MAAQgnE,EAAOyD,GAAKzqE,OAEzBouE,EAAUrgG,KAAKugG,EACjB,CACA3lG,KAAKojG,UAAUvyF,EAAO40F,EAAWrhG,EACnC,EACA+gG,EAAgBp1G,UAAU6zG,eAAiB,SAAwB/yF,GACjE7Q,KAAKujG,kBAAkB1yF,EAAO,MAChC,EACAs0F,EAAgBp1G,UAAU4zG,gBAAkB,SAAyB9yF,GACnE7Q,KAAKmjG,gBAAgBtyF,EAAO,aAC9B,EACAs0F,EAAgBp1G,UAAUokE,QAAU,SAAiBtjD,GAC/CA,EAAMA,OACRA,EAAMA,MAAMsjD,SAEhB,EACAgxC,EAAgBp1G,UAAUqzG,UAAY,SAAmBvyF,EAAO4H,EAAMrU,GACpEpE,KAAKm0D,QAAQtjD,GACTA,EAAMkzF,YAGV3/F,EAAQyM,MAAM+0F,SAAW/0F,EAAMuX,QAAQrmB,GACvCqC,EAAQi6F,OAAS5lF,EACb5H,EAAMzM,QAAQ4/F,MAChBj5F,OAAO+U,QAAQmkF,IAAI,wBAA0Bh0F,KAAKC,UAAU9L,GAAW,MAEzEyM,EAAMA,MAAQ,IAAI7Q,KAAK0+F,QAAQmH,MAAMzhG,GACvC,EACA,IAAImhF,EAAS,CAAC,EACV/yD,EAAY,GAGZurE,EAAiB,CACnB1+D,UAAW,CAAC,EACZymE,SAAU,gFACVC,UAAW,EACXx6D,OAAQ,CACNy6D,UAAW,CACT7+C,SAAU,GACV3mD,MAAO,QAETmuE,UAAW,SACX7+B,SAAU,SAEZm2D,UAAW,WACXC,MAAO,CACLF,UAAW,CACTxlG,MAAO,OACP2mD,SAAU,IAEZg/C,eAAgB,CAAC,EACjBC,UAAW,CACT5lG,MAAO,eAET6lG,cAAe,OACfC,WAAY,CAAC,GAEf7tE,MAAO,CACLutE,UAAW,CACTxlG,MAAO,OACP2mD,SAAU,IAEZg/C,eAAgB,CAAC,EACjBE,cAAe,OACfC,WAAY,CAAC,GAEf75B,QAAS,CACPu5B,UAAW,CACTxlG,MAAO,OACP2mD,SAAU,MAIhB,SAAS62C,EAAW55F,EAASmnC,EAAQyyD,GAEjC,IAAIluD,OADS/9C,IAAXw5C,GAKAuE,EAHGvE,GAEiB,IAAXA,EACE,QAEAA,EAJA,OAMbnnC,EAAQmnC,OAAOuE,SAAWA,GACjBkuD,IACT55F,EAAQmnC,OAAOuE,SAAW,OAE9B,CACA,SAASmuD,EAAS75F,EAASoT,GACzBpT,EAAQoT,MAAQA,EAChBpT,EAAQ+hG,eAAiB,CACvB3lG,MAAO,OACP2mD,SAAU,OAEd,CAOA,SAASo/C,EAAUniG,EAAS5T,GAC1B4T,EAAQ8hG,MAAMI,WAAW91G,IAAMA,CACjC,CACA,SAASg2G,GAAUpiG,EAAS7T,GAC1B6T,EAAQ8hG,MAAMI,WAAW/1G,IAAMA,CACjC,CACA,SAAS2tG,GAAW95F,EAASszB,GAC3BtzB,EAAQqzB,UAAYC,IAAW,CACjC,CACA,SAASymE,GAAU/5F,EAASoT,GAC1BpT,EAAQ8hG,MAAM1uF,MAAQA,EACtBpT,EAAQ8hG,MAAMC,eAAeM,QAAS,CACxC,CACA,SAASrI,GAAUh6F,EAASoT,GAC1BpT,EAAQq0B,MAAMjhB,MAAQA,EACtBpT,EAAQq0B,MAAM0tE,eAAeM,QAAS,CACxC,CACA,IAAIC,GAAY5I,EAAcC,EAAgBC,EAAYC,GAvB1D,SAAgB75F,EAAS5T,GACvB4T,EAAQq0B,MAAM6tE,WAAW91G,IAAMA,CACjC,IACA,SAAgB4T,EAAS7T,GACvB6T,EAAQq0B,MAAM6tE,WAAW/1G,IAAMA,CACjC,GAkBoF2tG,GAAYC,GAAWC,IAS3G,IAAIuI,GAAgB,SAAuBjI,GACzC1+F,KAAKtR,KAAO,SACZsR,KAAK0+F,QAAUA,CACjB,EACAiI,GAAc52G,UAAUozG,gBAAkB,SAAyBtyF,GACjE,IAAI+1F,EAAW5mG,KACfA,KAAK6mG,cAAch2F,GAAO,WACxB,IAAI6uD,EAAe,CAAC,GACQ,IAAxB7uD,EAAMzM,QAAQghG,QAChB1lC,EAAaumC,UAAY,SAEE,IAAzBp1F,EAAMzM,QAAQuH,SAChB+zD,EAAaqmC,UAAY,GAE3B,IAAI3hG,EAAUsiG,GAAU71F,EAAOA,EAAMzM,QAASs7D,GAC1CjnD,EAAOmuF,EAASzE,gBAAgBtxF,EAAM4H,KAAM5H,EAAM2wF,OACtDoF,EAASxD,UAAUvyF,EAAO,YAAa4H,EAAMrU,EAC/C,GACF,EACAuiG,GAAc52G,UAAUszG,eAAiB,SAAwBxyF,GAC/D,IAAI+1F,EAAW5mG,KACfA,KAAK6mG,cAAch2F,GAAO,WACxB,IAAI6uD,EAAe,CACjBrgC,UAAW,CACTlpB,IAAK,MACL+D,OAAQ,OAEVqxB,OAAQ,CAAC,GAEP16B,EAAMzM,QAAQsL,SAChBgwD,EAAahwD,OAASmB,EAAMzM,QAAQsL,QAElCmB,EAAMzM,QAAQk/F,QAChB5jC,EAAaonC,QAAU,IAErB,WAAYj2F,EAAMzM,SACpB45F,EAAWt+B,EAAc7uD,EAAMzM,QAAQmnC,QAErC16B,EAAMzM,QAAQoT,OAChBymF,EAASv+B,EAAc7uD,EAAMzM,QAAQoT,OAEvC,IAAIpT,EAAUG,EAAMA,EAAMw5F,EAAgBr+B,GAAe7uD,EAAMzM,QAAQs6F,SAAW,CAAC,GAC/EjmF,EAAO,IAAImuF,EAASlI,QAAQqI,cAAcC,UAC9CvuF,EAAKwuF,UAAU,SAAU,IACzBxuF,EAAKwuF,UAAU,SAAU,SACzBxuF,EAAKyuF,QAAQr2F,EAAM4H,MACnBmuF,EAASxD,UAAUvyF,EAAO,WAAY4H,EAAMrU,EAC9C,GACF,EACAuiG,GAAc52G,UAAUwzG,kBAAoB,SAA2B1yF,GACrE,IAAI+1F,EAAW5mG,KACfA,KAAK6mG,cAAch2F,GAAO,WACxB,IAAIzM,EAAUsiG,GAAU71F,EAAOA,EAAMzM,SACjCqU,EAAOmuF,EAASzE,gBAAgBtxF,EAAM4H,KAAM5H,EAAM2wF,OACtDoF,EAASxD,UAAUvyF,EAAO,cAAe4H,EAAMrU,EACjD,GACF,EACAuiG,GAAc52G,UAAU6zG,eAAiB,SAAwB/yF,GAC/D,IAAI+1F,EAAW5mG,KACfA,KAAK6mG,cAAch2F,GAAO,WACxB,IAOIzM,EAAU05F,EAAcC,EAAgBC,EAAYC,EAAUsI,EAAWC,GAAWtI,GAAYC,GAAWC,GAAjGN,CAA4GjtF,EAAOA,EAAMzM,QAPpH,CACjB8hG,MAAO,CACLE,UAAW,CACT5lG,MAAO,WAKTiY,EAAOmuF,EAASzE,gBAAgBtxF,EAAM4H,KAAM5H,EAAM2wF,OACtDoF,EAASxD,UAAUvyF,EAAO,WAAY4H,EAAMrU,EAC9C,GACF,EACAuiG,GAAc52G,UAAU4zG,gBAAkB,SAAyB9yF,GACjE,IAAI+1F,EAAW5mG,KACfA,KAAK6mG,cAAch2F,GAAO,WACxB,IAKIzM,EAAUsiG,GAAU71F,EAAOA,EAAMzM,QALlB,CACjBqzB,WAAW,EACXsuE,UAAW,EACXoB,YAAa,KAGX1uF,EAAOmuF,EAASzE,gBAAgBtxF,EAAM4H,KAAM5H,EAAM2wF,OACtDoF,EAASxD,UAAUvyF,EAAO,YAAa4H,EAAMrU,EAC/C,GACF,EACAuiG,GAAc52G,UAAUq3G,eAAiB,SAAwBv2F,GAC/D,IAAI+1F,EAAW5mG,KACfA,KAAK6mG,cAAch2F,EAAO,YAAY,WACpC,IAAI6uD,EAAe,CACjBn0B,OAAQ,OACR87D,UAAW,CACT33F,OAAQmB,EAAMzM,QAAQsL,QAAU,CAAC,UAAW,aAG5CtL,EAAUG,EAAMA,EAAMw5F,EAAgBr+B,GAAe7uD,EAAMzM,QAAQs6F,SAAW,CAAC,GAC/EjmF,EAAO,IAAImuF,EAASlI,QAAQqI,cAAcC,UAC9CvuF,EAAKwuF,UAAU,SAAU,IACzBxuF,EAAKwuF,UAAU,SAAUp2F,EAAMzM,QAAQ26B,OAAS,SAChDtmB,EAAKyuF,QAAQr2F,EAAM4H,MACnBmuF,EAASxD,UAAUvyF,EAAO,WAAY4H,EAAMrU,EAC9C,GACF,EACAuiG,GAAc52G,UAAU8zG,mBAAqB,SAA4BhzF,GACvE,IAAI+1F,EAAW5mG,KACfA,KAAK6mG,cAAch2F,GAAO,WAKxB,IAJA,IACIzM,EAAUsiG,GAAU71F,EAAOA,EAAMzM,QADlB,CAAC,GAEhBi6F,EAASxtF,EAAM4H,KACf6uF,EAAQ,GACHn5G,EAAI,EAAGA,EAAIkwG,EAAOjsG,OAAQjE,IAAK,CACtCkwG,EAAOlwG,GAAGO,KAAO2vG,EAAOlwG,GAAGO,MAAQ,QAEnC,IADA,IAAID,EAAI4vG,EAAOlwG,GAAGsqB,KACTna,EAAI,EAAGA,EAAI7P,EAAE2D,OAAQkM,IAAK,CACjC,IAAI4pE,EAAM,IAAIt1E,MAAMyrG,EAAOjsG,OAAS,GACpC81E,EAAI,GAAKz5E,EAAE6P,GAAG,GACd4pE,EAAI/5E,EAAI,GAAKM,EAAE6P,GAAG,GAClBgpG,EAAMliG,KAAK8iE,EACb,CACF,CACA,IAAIzvD,EAAO,IAAImuF,EAASlI,QAAQqI,cAAcC,UAC9CvuF,EAAKwuF,UAAU,SAAU,IACzB,IAAK,IAAInF,EAAM,EAAGA,EAAMzD,EAAOjsG,OAAQ0vG,IACrCrpF,EAAKwuF,UAAU,SAAU5I,EAAOyD,GAAKpzG,MAEvC+pB,EAAKyuF,QAAQI,GACbV,EAASxD,UAAUvyF,EAAO,eAAgB4H,EAAMrU,EAClD,GACF,EACAuiG,GAAc52G,UAAUw3G,eAAiB,SAAwB12F,GAC/D,IAAI+1F,EAAW5mG,KACfA,KAAK6mG,cAAch2F,EAAO,YAAY,WACpC,IAAI6uD,EAAe,CACjBn0B,OAAQ,QAEN16B,EAAMzM,QAAQsL,SAChBgwD,EAAahwD,OAASmB,EAAMzM,QAAQsL,QAEtC,IAAItL,EAAUG,EAAMA,EAAMw5F,EAAgBr+B,GAAe7uD,EAAMzM,QAAQs6F,SAAW,CAAC,GAC/EjmF,EAAO,IAAImuF,EAASlI,QAAQqI,cAAcC,UAC9CvuF,EAAKwuF,UAAU,CACbpnG,KAAM,SACNkC,GAAI,SAEN0W,EAAKwuF,UAAU,CACbpnG,KAAM,OACNkC,GAAI,UAEN0W,EAAKwuF,UAAU,CACbpnG,KAAM,OACNkC,GAAI,QAEN0W,EAAKyuF,QAAQr2F,EAAM4H,MACnB5H,EAAMuX,QAAQrV,MAAMC,WAAa,SACjC4zF,EAASxD,UAAUvyF,EAAO,WAAY4H,EAAMrU,EAC9C,GACF,EAGAuiG,GAAc52G,UAAUokE,QAAU,SAAiBtjD,GAC7CA,EAAMA,OACRA,EAAMA,MAAM22F,YAEhB,EACAb,GAAc52G,UAAUqzG,UAAY,SAAmBvyF,EAAOhR,EAAM4Y,EAAMrU,GA3K1E,IAAgBtB,GA4Kd9C,KAAKm0D,QAAQtjD,GACTA,EAAMkzF,aAGNlzF,EAAMzM,QAAQ4/F,MAChBj5F,OAAO+U,QAAQmkF,IAAI,iDAAmDxrF,EAAKwrE,SAAW,4CAA8CpkF,EAAO,gCAAkCoQ,KAAKC,UAAU9L,GAAW,MAEzMyM,EAAMA,MAAQ,IAAI7Q,KAAK0+F,QAAQqI,cAAclnG,GAAMgR,EAAMuX,SAnL3CtlB,EAoLP,WACL+N,EAAMA,MAAMqiB,KAAKza,EAAMrU,EACzB,EArLI2G,OAAO08F,YACT18F,OAAO08F,YAAY,WAAY3kG,GACtBiI,OAAOwgB,kBAChBxgB,OAAOwgB,iBAAiB,SAAUzoB,GAAU,GAE9CA,IAiLF,EACA6jG,GAAc52G,UAAU82G,cAAgB,SAAuBh2F,EAAO62F,EAAM5kG,GAC1E,IAAI8jG,EAAW5mG,KASf,GARK8C,IACHA,EAAW4kG,EACXA,EAAO,aAETl1E,EAAUptB,KAAK,CACbsiG,KAAMA,EACN5kG,SAAUA,IAERyiF,EAAOmiB,GACT1nG,KAAK2nG,mBACA,CACLpiB,EAAOmiB,IAAQ,EAGf,IAAIE,EAAc,CAChBC,SAAU,CAACH,GACX5kG,SAAU,WACR8jG,EAASe,cACX,GAEE9xE,EAAShlB,EAAMi3F,WACfjyE,EAAOkyE,WACTH,EAAYG,SAAWlyE,EAAOkyE,UAEnB,aAATL,GAAuB7xE,EAAOmyE,aAChCJ,EAAYI,WAAanyE,EAAOmyE,YAElChoG,KAAK0+F,QAAQlrE,OAAOy0E,KAAK,UAAWL,EACtC,CACF,EACAjB,GAAc52G,UAAU43G,aAAe,WACrC,IAAK,IAAIx5G,EAAI,EAAGA,EAAIqkC,EAAUpgC,OAAQjE,IAAK,CACzC,IAAIylC,EAAKpB,EAAUrkC,GACR6R,KAAK0+F,QAAQqI,gBAA8B,cAAZnzE,EAAG8zE,MAAwB1nG,KAAK0+F,QAAQqI,cAAcmB,WAAyB,aAAZt0E,EAAG8zE,MAAuB1nG,KAAK0+F,QAAQqI,cAAcoB,UAAwB,aAAZv0E,EAAG8zE,MAAuB1nG,KAAK0+F,QAAQqI,cAAcqB,YAEjOx0E,EAAG9wB,WACH0vB,EAAUloB,OAAOnc,EAAG,GACpBA,IAEJ,CACF,EAGAw4G,GAAc52G,UAAUoyG,gBAAkB,SAAyB9D,EAAQgK,GAGzE,IAFA,IAAIxG,EAAO,GACPyG,EAAe,GACVn6G,EAAI,EAAGA,EAAIkwG,EAAOjsG,OAAQjE,IAAK,CACtC,IAAI+B,EAAImuG,EAAOlwG,GACfkwG,EAAOlwG,GAAGO,KAAO2vG,EAAOlwG,GAAGO,MAAQ,QACnC,IAAK,IAAI4P,EAAI,EAAGA,EAAIpO,EAAEuoB,KAAKrmB,OAAQkM,IAAK,CACtC,IAAI7P,EAAIyB,EAAEuoB,KAAKna,GACX5O,EAAqB,aAAf24G,EAA4B55G,EAAE,GAAG+jG,UAAY/jG,EAAE,GACpDozG,EAAKnyG,KACRmyG,EAAKnyG,GAAO,IAAIkD,MAAMyrG,EAAOjsG,QAC7Bk2G,EAAaljG,KAAK1V,IAEpBmyG,EAAKnyG,GAAKvB,GAAKM,EAAE,EACnB,CACF,CAGA,IAFA,IAAI64G,EAAQ,GACR72F,EAAS,GACJwxF,EAAM,EAAGA,EAAMqG,EAAal2G,OAAQ6vG,IAAO,CAClD,IAAIH,EAAMwG,EAAarG,GACnB7yG,OAAQ,EACO,aAAfi5G,GACFj5G,EAAQ,IAAI0jC,KAAKgvE,GACjBrxF,EAAOrL,KAAKhW,IAEZA,EAAQ0yG,EAEVwF,EAAMliG,KAAK,CAAChW,GAAOuzC,OAAOk/D,EAAKC,IACjC,CACA,IAAI7lB,GAAM,EACV,GAAmB,aAAfosB,EACFf,EAAM1kE,KAAK+7D,GAEX1iB,EAn4CJ,SAAe2mB,GACb,MAAoB,QAAbA,GAAmC,SAAbA,GAAoC,UAAbA,GAAqC,SAAbA,CAC9E,CAi4CU2F,CADSxJ,EAAkBtuF,GAAQ,SAEpC,GAAmB,WAAf43F,EAAyB,CAClCf,EAAM1kE,KAAKg8D,GACX,IAAK,IAAImD,EAAM,EAAGA,EAAMuF,EAAMl1G,OAAQ2vG,IACpCuF,EAAMvF,GAAK,GAAKrE,EAAM4J,EAAMvF,GAAK,IAEnCsG,EAAa,QACf,CAGA,IAAI5vF,EAAO,IAAIzY,KAAK0+F,QAAQqI,cAAcC,UAC1CqB,EAA4B,aAAfA,GAA6BpsB,EAAM,OAASosB,EACzD5vF,EAAKwuF,UAAUoB,EAAY,IAC3B,IAAK,IAAIG,EAAM,EAAGA,EAAMnK,EAAOjsG,OAAQo2G,IACrC/vF,EAAKwuF,UAAU,SAAU5I,EAAOmK,GAAK95G,MAGvC,OADA+pB,EAAKyuF,QAAQI,GACN7uF,CACT,EACA,IAAI62B,GAAW,GAaf,SAASm5D,GAAW/J,GAElB,IADA,IAAIgK,EAbN,SAAwBhK,GACtB,GAAIA,EAAS,CACX,GAAwB,eAApBA,EAAQiK,QACV,OAAOxD,EACF,GAAIzG,EAAQlrE,OACjB,OAAOmzE,GACF,GAAIjhG,EAAWg5F,GACpB,OAAOwE,CAEX,CACA,MAAM,IAAIrgF,MAAM,kBAClB,CAEoB+lF,CAAelK,GACxBvwG,EAAI,EAAGA,EAAImhD,GAASl9C,OAAQjE,IACnC,GAAImhD,GAASnhD,GAAGuwG,UAAYA,EAC1B,OAGJpvD,GAASlqC,KAAK,IAAIsjG,EAAYhK,GAChC,CAeA,SAASmK,GAAY1H,EAAWtwF,GAC9B,IAAIi4F,EAAS,SAAW3H,EACpB4H,EAAcl4F,EAAMzM,QAAQo4E,QAf5B,UAAWzxE,QACb09F,GAAW19F,OAAO86F,OAEhB,eAAgB96F,QAClB09F,GAAW19F,OAAOi+F,YAEhBj+F,OAAOk+F,QAAUl+F,OAAOk+F,OAAOz1E,QACjCi1E,GAAW19F,OAAOk+F,QAUpB,IAAK,IAAI96G,EAAI,EAAGA,EAAImhD,GAASl9C,OAAQjE,IAAK,CACxC,IAAIquF,EAAUltC,GAASnhD,GACvB,KAAM46G,GAAeA,IAAgBvsB,EAAQ9tF,OAASgX,EAAW82E,EAAQssB,IAGvE,OAFAj4F,EAAM2rE,QAAUA,EAAQ9tF,KACxBmiB,EAAMq4F,gBAAkB1sB,EACjBA,EAAQssB,GAAQj4F,EAE3B,CACA,MAAIy+B,GAASl9C,OAAS,EACd,IAAIywB,MAAM,iCAAmCs+E,GAE7C,IAAIt+E,MAAM,0EAEpB,CACA,IAAIsmF,GAAY,CACd31E,OAAQ,CAAC,EACTuC,UAAW,SAAU3xB,GACnB,IAAK,IAAI1U,KAAO0U,EACVvV,OAAOkB,UAAUC,eAAe1B,KAAK8V,EAAS1U,KAChDy5G,GAAUtzE,OAAOnmC,GAAO0U,EAAQ1U,GAGtC,EACA05G,kBAAmB,SAAUvsF,GAC3BssF,GAAU/kG,QAAUyY,CACtB,EACAwsF,UAAW,SAAUvmG,GACnB,IAAK,IAAIwmG,KAAWH,GAAU31E,OACxB3kC,OAAOkB,UAAUC,eAAe1B,KAAK66G,GAAU31E,OAAQ81E,IACzDxmG,EAASqmG,GAAU31E,OAAO81E,GAGhC,EACAC,WAAY,WACV,IAAK,IAAID,KAAWH,GAAU31E,OACxB3kC,OAAOkB,UAAUC,eAAe1B,KAAK66G,GAAU31E,OAAQ81E,KACzDH,GAAU31E,OAAO81E,GAASn1C,iBACnBg1C,GAAU31E,OAAO81E,GAG9B,EACAzzE,OAAQ,CAAC,EACTzxB,QAAS,CAAC,EACVkrC,SAAUA,GACVm5D,WAAYA,GACZe,IAAK,SAAUhtB,GAEb,OADAisB,GAAWjsB,GACJ2sB,EACT,GAYF,SAASM,GAAiBhxF,EAAMixF,GAC9B,GAAgB,WAAZA,EACF,OAZJ,SAA4BjxF,GAE1B,IADA,IAAIxpB,EAAI,GACCd,EAAI,EAAGA,EAAIsqB,EAAKrmB,OAAQjE,IAC/Bc,EAAEmW,KAAK,CAACu4F,EAAQllF,EAAKtqB,GAAG,IAAKwvG,EAAQllF,EAAKtqB,GAAG,IAAKwvG,EAAQllF,EAAKtqB,GAAG,MAEpE,OAAOc,CACT,CAMW06G,CAAmBlxF,GAE5B,IAAImxF,EAEFA,EADc,WAAZF,EACQ/L,EACW,aAAZ+L,EACC9L,EAEAF,EAGZ,IADA,IAAIzuG,EAAI,GACCd,EAAI,EAAGA,EAAIsqB,EAAKrmB,OAAQjE,IAC/Bc,EAAEmW,KAAK,CAACwkG,EAAQnxF,EAAKtqB,GAAG,IAAKwvG,EAAQllF,EAAKtqB,GAAG,MAE/C,OAAOc,CACT,CAgBA,SAAS46G,GAAwBxL,EAAQyL,GACvC,IAAK,IAAI37G,EAAI,EAAGA,EAAIkwG,EAAOjsG,OAAQjE,IAEjC,IADA,IAAIsqB,EAAOolF,EAAMQ,EAAOlwG,GAAGsqB,MAClBna,EAAI,EAAGA,EAAIma,EAAKrmB,OAAQkM,IAC/B,IAAKwrG,EAAKrxF,EAAKna,GAAG,IAChB,OAAO,EAIb,OAAO,CACT,CAiBA,SAASyrG,GAAcl5F,EAAO64F,EAASM,GACrC,IAAIntF,EAAOhM,EAAMzM,QACbi6F,EAASxtF,EAAMo5F,QAGnBp5F,EAAMytF,oBAAsBzrG,EAAQwrG,KAAYhB,EAAcgB,EAAO,IACjExtF,EAAMytF,qBACRD,EAAS,CAAC,CACR3vG,KAAMmuB,EAAKkiB,MACXtmB,KAAM4lF,KAMVA,EA5BF,SAAoBA,GAElB,IADA,IAAIoH,EAAY,GACPt3G,EAAI,EAAGA,EAAIkwG,EAAOjsG,OAAQjE,IAAK,CACtC,IAAI+7G,EAAO,CAAC,EACZ,IAAK,IAAI5rG,KAAK+/F,EAAOlwG,GACfU,OAAOkB,UAAUC,eAAe1B,KAAK+vG,EAAOlwG,GAAImQ,KAClD4rG,EAAK5rG,GAAK+/F,EAAOlwG,GAAGmQ,IAGxBmnG,EAAUrgG,KAAK8kG,EACjB,CACA,OAAOzE,CACT,CAgBW0E,CAAW9L,GACpB,IAAK,IAAIlwG,EAAI,EAAGA,EAAIkwG,EAAOjsG,OAAQjE,IACjCkwG,EAAOlwG,GAAGsqB,KAAOolF,EAAMQ,EAAOlwG,GAAGsqB,MAEnC5H,EAAM2wF,MAAQkI,IAAY7sF,EAAKutF,SAAW,SA7D5C,SAAqB/L,EAAQ2L,EAAY5lG,GACvC,OAAIimG,GAAUhM,IACPj6F,EAAQyI,OAAQzI,EAAQ0I,MAAW1I,EAAQyI,OAAQ4yF,EAAOr7F,EAAQyI,OAAYzI,EAAQ0I,OAAQ2yF,EAAOr7F,EAAQ0I,MAGzG,SAFA,WAIA+8F,GAAwBxL,EAAQj3F,GAClC,UACG4iG,GAAcH,GAAwBxL,EAAQoB,GACjD,WAEA,QAEX,CA+CuD6K,CAAYjM,EAAQ2L,EAAYntF,IAGrF,IAAK,IAAIilF,EAAM,EAAGA,EAAMzD,EAAOjsG,OAAQ0vG,IACrCzD,EAAOyD,GAAKrpF,KAAOgxF,GAAiBpL,EAAOyD,GAAKrpF,KAAM5H,EAAM2wF,OAE9D,OAAOnD,CACT,CACA,SAASkM,GAAc15F,GAErB,IADA,IAAI25F,EAAc3M,EAAMhtF,EAAMo5F,SACrB97G,EAAI,EAAGA,EAAIq8G,EAAYp4G,OAAQjE,IACtCq8G,EAAYr8G,GAAK,CAACuvG,EAAM8M,EAAYr8G,GAAG,IAAKwvG,EAAQ6M,EAAYr8G,GAAG,KAErE,OAAOq8G,CACT,CACA,SAASH,GAAU5xF,EAAM0oF,GACvB,GAAkB,aAAdA,GAA0C,aAAdA,GAA0C,aAAdA,EAC1D,OAAuB,IAAhB1oF,EAAKrmB,OAEZ,IAAK,IAAIjE,EAAI,EAAGA,EAAIsqB,EAAKrmB,OAAQjE,IAC/B,GAAIsqB,EAAKtqB,GAAGsqB,KAAKrmB,OAAS,EACxB,OAAO,EAGX,OAAO,CAEX,CAoDA,IAAIq4G,GAAkB,GAClBC,GAAkB,EAClBC,GAAc,EAKlB,SAASC,KACP,GAAIF,GAAkBC,GAAa,CACjC,IAAIvZ,EAAUqZ,GAAgBxxE,QAC1Bm4D,IACFsZ,KAUWhmB,EATH0M,EAAQ,GASAyZ,EATIzZ,EAAQ,GASHjlC,EATOilC,EAAQ,IAUxCpM,EAAM,IAAIgB,gBACVC,KAAK,MAAOvB,GAAK,GACrBM,EAAIkB,iBAAiB,eAAgB,oBACrClB,EAAIoB,OAAS,WAPbskB,KACAE,KAQqB,MAAf5lB,EAAIS,OACNolB,EAAQ56F,KAAK2U,MAAMogE,EAAIW,eAEvBx5B,EAAM64B,EAAI8lB,WAEd,EACA9lB,EAAID,OApBA6lB,KAEJ,CAMF,IAAiBlmB,EAAKmmB,EAAS1+C,EACzB64B,CANN,CAsBA,SAAS+lB,GAAQ3iF,EAAS3Q,GACxB2Q,EAAQ2/D,YAActwE,CACxB,CAGA,SAASuzF,GAAW5iF,EAAS6iF,EAASC,GAC/BA,IACHD,EAAU,wBAA0BA,GAEtCF,GAAQ3iF,EAAS6iF,GACjB7iF,EAAQrV,MAAMvS,MAAQ,SACxB,CACA,SAAS2qG,GAAat6F,GACpB,IACEA,EAAMu6F,UACR,CAAE,MAAO55E,GAEP,MADAw5E,GAAWn6F,EAAMuX,QAASoJ,EAAIy5E,SACxBz5E,CACR,CACF,CACA,SAAS65E,GAAgBx6F,EAAOy6F,EAAYC,GAK1C,GAHIA,GAAe16F,EAAMzM,QAAQonG,UAAkC,kBAAfF,GAAiD,oBAAfA,IACpFP,GAAQl6F,EAAMuX,QAASvX,EAAMzM,QAAQonG,SAEb,kBAAfF,EA5DQ5mB,EA6DL4mB,EA7DUT,EA6DE,SAAUpyF,GAChC5H,EAAMo5F,QAAUxxF,EAChB0yF,GAAat6F,EACf,EAhE+Bs7C,EAgE5B,SAAU8+C,GACXD,GAAWn6F,EAAMuX,QAAS6iF,EAC5B,EAjEFR,GAAgBrlG,KAAK,CAACs/E,EAAKmmB,EAAS1+C,IACpCy+C,UAiEO,GAA0B,oBAAfU,EAChB,IACEA,GAAW,SAAU7yF,GACnB5H,EAAMo5F,QAAUxxF,EAChB0yF,GAAat6F,EACf,IAAG,SAAUo6F,GACXD,GAAWn6F,EAAMuX,QAAS6iF,GAAS,EACrC,GACF,CAAE,MAAOz5E,GACPw5E,GAAWn6F,EAAMuX,QAASoJ,GAAK,EACjC,MAEA3gB,EAAMo5F,QAAUqB,EAChBH,GAAat6F,GAhFjB,IAAqB6zE,EAAKmmB,EAAS1+C,CAkFnC,CACA,SAASs/C,GAAYtK,EAAWtwF,GAC9B,GAAIw5F,GAAUx5F,EAAM4H,KAAM0oF,GAAY,CACpC,IAAI8J,EAAUp6F,EAAMzM,QAAQsnG,OAAS76F,EAAMzM,QAAQm3F,UAAY1qF,EAAMzM,QAAQm3F,SAASmQ,OAAS,UAC/FX,GAAQl6F,EAAMuX,QAAS6iF,EACzB,MACEpC,GAAY1H,EAAWtwF,GAEnBA,EAAMzM,QAAQunG,WAAa96F,EAAM+6F,oBAAwC,YAAlB/6F,EAAM2rE,SAhJrE,SAA2B3rE,GACzB,IAAI86F,EAAW96F,EAAMzM,QAAQunG,UACZ,IAAbA,EACFA,EAAW,CAAC,EACiB,kBAAbA,IAChBA,EAAW,CACTrR,SAAUqR,IAGd,IAAIE,EAAOnkF,SAASw7D,cAAc,KAClC2oB,EAAKF,SAAWA,EAASrR,UAAY,YACrCuR,EAAK94F,MAAM+8B,SAAW,WACtB+7D,EAAK94F,MAAMoD,IAAM,OACjB01F,EAAK94F,MAAMqD,MAAQ,OACnBy1F,EAAK94F,MAAM+4F,OAAS,IACpBD,EAAK94F,MAAMC,WAAa,OACxB64F,EAAK9nG,OAAS,SAEd,IAAIgoG,EAAQrkF,SAASw7D,cAAc,OAGnC6oB,EAAMrmC,IAAM,2BAA6B6wB,mBAD/B,+wBAEVwV,EAAMC,IAAM,WACZD,EAAMh5F,MAAMwE,MAAQ,OACpBw0F,EAAMh5F,MAAMmH,OAAS,OACrB6xF,EAAMh5F,MAAMqE,OAAS,OACrBy0F,EAAKnd,YAAYqd,GACjB,IAAI3jF,EAAUvX,EAAMuX,QACpBA,EAAQrV,MAAM+8B,SAAW,WACzBj/B,EAAM+6F,oBAAqB,EAG3B/6F,EAAMo7F,aAAe7jF,EAAQmD,iBAAiB,aAAa,SAAUj6B,GACnE,IAAI46G,EAAU56G,EAAE66G,cAEVD,IAAWA,IAAYlsG,MAASA,KAAKm3C,SAAS+0D,MAAar7F,EAAMzM,QAAQunG,WAC7EE,EAAK1oB,KAAOtyE,EAAMu7F,QAAQT,GAC1BvjF,EAAQsmE,YAAYmd,GAExB,IAGAh7F,EAAMw7F,aAAejkF,EAAQmD,iBAAiB,YAAY,SAAUj6B,GAClE,IAAI46G,EAAU56G,EAAE66G,cACXD,IAAWA,IAAYlsG,MAASA,KAAKm3C,SAAS+0D,KAC7CL,EAAKhkF,YACPgkF,EAAKhkF,WAAW8/D,YAAYkkB,EAGlC,GACF,CA+FMS,CAAkBz7F,EAGxB,CAcA,IAAIg1F,GAAQ,SAAez9E,EAASkjF,EAAYlnG,GAC9CpE,KAAKooB,QAdP,SAAoBA,GAClB,GAAuB,kBAAZA,EAAsB,CAC/B,IAAImkF,EAAYnkF,EAEhB,KADAA,EAAUV,SAASonC,eAAe1mC,IAEhC,MAAM,IAAIvF,MAAM,sBAAwB0pF,EAE5C,CACA,OAAOnkF,CACT,CAKiB+lB,CAAW/lB,GAC1BpoB,KAAKoE,QAAUG,EAAM4kG,GAAU/kG,QAASA,GAAW,CAAC,GACpDpE,KAAKsrG,WAAaA,EAGdtrG,KAAKooB,QAAQrmB,KACfonG,GAAU31E,OAAOxzB,KAAKooB,QAAQrmB,IAAM/B,MAEtCqrG,GAAgBrrG,KAAMsrG,GAAY,GAC9BtrG,KAAKoE,QAAQojF,SACfxnF,KAAKwsG,cAET,EACA3G,GAAM91G,UAAUo+C,WAAa,WAC3B,OAAOnuC,KAAKooB,OACd,EACAy9E,GAAM91G,UAAU08G,cAAgB,WAC9B,OAAOzsG,KAAKsrG,UACd,EACAzF,GAAM91G,UAAU28G,QAAU,WACxB,OAAO1sG,KAAKyY,IACd,EACAotF,GAAM91G,UAAU48G,WAAa,WAC3B,OAAO3sG,KAAKoE,OACd,EACAyhG,GAAM91G,UAAU68G,eAAiB,WAC/B,OAAO5sG,KAAK6Q,KACd,EACAg1F,GAAM91G,UAAU88G,WAAa,WAC3B,OAAO7sG,KAAKw8E,OACd,EACAqpB,GAAM91G,UAAU+8G,WAAa,SAAoBxB,EAAYlnG,GAC3DpE,KAAKsrG,WAAaA,EACdlnG,GACFpE,KAAK+sG,gBAAgB3oG,GAEvBinG,GAAgBrrG,KAAMsrG,GAAY,EACpC,EACAzF,GAAM91G,UAAUi9G,WAAa,SAAoB5oG,GAC/CpE,KAAK+sG,gBAAgB3oG,GACrBpE,KAAKitG,QACP,EACApH,GAAM91G,UAAUk9G,OAAS,WACvB5B,GAAgBrrG,KAAMA,KAAKiqG,QAC7B,EACApE,GAAM91G,UAAUm9G,YAAc,WAC5B,GAA+B,kBAApBltG,KAAKsrG,WAAyB,CAEvC,IAAI6B,GAAwC,IAAlCntG,KAAKsrG,WAAWpnG,QAAQ,KAAc,IAAM,IAEtDmnG,GAAgBrrG,KADNA,KAAKsrG,WAAa6B,EAAM,MAAO,IAAIr6E,MAAO0/D,UAEtD,KAAsC,oBAApBxyF,KAAKsrG,YACrBD,GAAgBrrG,KAAMA,KAAKsrG,WAE/B,EACAzF,GAAM91G,UAAUy8G,aAAe,WAC7B,IAAI5F,EAAW5mG,KACXwnF,EAAUxnF,KAAKoE,QAAQojF,QAC3B,GAAIA,GAAsC,kBAApBxnF,KAAKsrG,YAAsD,oBAApBtrG,KAAKsrG,WAChE,MAAM,IAAIzoF,MAAM,qDAElB,IAAK7iB,KAAKotG,WAAY,CACpB,IAAI5lB,EAKF,MAAM,IAAI3kE,MAAM,uBAJhB7iB,KAAKotG,WAAavlB,aAAY,WAC5B+e,EAASsG,aACX,GAAa,IAAV1lB,EAIP,CACF,EACAqe,GAAM91G,UAAUs9G,YAAc,WACxBrtG,KAAKotG,aACPtlB,cAAc9nF,KAAKotG,YACnBptG,KAAKotG,WAAa,KAEtB,EACAvH,GAAM91G,UAAUq8G,QAAU,SAAiBT,GAEzC,GAAqB,YAAjB3rG,KAAKw8E,QAAuB,CAC9B,GAAImvB,GAAYA,EAAS2B,YAAsC,gBAAxB3B,EAAS2B,WAA8B,CAE5E,IAAIxzF,EAAS9Z,KAAK6Q,MAAMiJ,OACpB3G,EAAMnT,KAAK6Q,MAAMsC,IACjBo6F,EAAY7lF,SAASw7D,cAAc,UACnCsqB,EAASD,EAAUxzF,WAAW,MAMlC,OALAwzF,EAAUh2F,MAAQpE,EAAI2G,OAAOvC,MAC7Bg2F,EAAUrzF,OAAS/G,EAAI2G,OAAOI,OAC9BszF,EAAOrwF,UAAYwuF,EAAS2B,WAC5BE,EAAOhvF,SAAS,EAAG,EAAG+uF,EAAUh2F,MAAOg2F,EAAUrzF,QACjDszF,EAAOzyF,UAAUjB,EAAQ,EAAG,GACrByzF,EAAUl5C,UAAU,YAC7B,CACE,OAAOr0D,KAAK6Q,MAAMujD,eAEtB,CACE,MAAM,IAAIvxC,MAAM,sCAEpB,EACAgjF,GAAM91G,UAAUokE,QAAU,WACxBn0D,KAAK+jG,WAAY,EACjB/jG,KAAKqtG,cACDrtG,KAAKkpG,iBACPlpG,KAAKkpG,gBAAgB/0C,QAAQn0D,MAE3BA,KAAKisG,cACPjsG,KAAKooB,QAAQoD,oBAAoB,YAAaxrB,KAAKisG,cAEjDjsG,KAAKqsG,cACPrsG,KAAKooB,QAAQoD,oBAAoB,WAAYxrB,KAAKqsG,aAEtD,EACAxG,GAAM91G,UAAUg9G,gBAAkB,SAAyB3oG,GACzD,IAAIqpG,EAAgBrpG,EAAQojF,SAAWpjF,EAAQojF,UAAYxnF,KAAKoE,QAAQojF,QACxExnF,KAAKoE,QAAUG,EAAM4kG,GAAU/kG,QAASA,GACpCqpG,IACFztG,KAAKqtG,cACLrtG,KAAKwsG,eAET,EACA3G,GAAM91G,UAAUq7G,SAAW,WACzBprG,KAAKyY,KAAOzY,KAAK0tG,gBACjBjC,GAAYzrG,KAAK2tG,cAAe3tG,KAClC,EACA6lG,GAAM91G,UAAU+3G,SAAW,WACzB,OAAOqB,GAAUtzE,MACnB,EACA,IAAIqyE,GAAyB,SAAUrC,GACrC,SAASqC,IACPrC,EAAM3iG,MAAMlD,KAAM7N,UACpB,CAUA,OATI0zG,IAAOqC,EAAU35D,UAAYs3D,GACjCqC,EAAUn4G,UAAYlB,OAAOY,OAAOo2G,GAASA,EAAM91G,WACnDm4G,EAAUn4G,UAAU6P,YAAcsoG,EAClCA,EAAUn4G,UAAU29G,cAAgB,WAClC,OAAO3D,GAAc/pG,KACvB,EACAkoG,EAAUn4G,UAAU49G,YAAc,WAChC,MAAO,WACT,EACOzF,CACT,CAd6B,CAc3BrC,IACE+H,GAAwB,SAAU/H,GACpC,SAAS+H,IACP/H,EAAM3iG,MAAMlD,KAAM7N,UACpB,CAUA,OATI0zG,IAAO+H,EAASr/D,UAAYs3D,GAChC+H,EAAS79G,UAAYlB,OAAOY,OAAOo2G,GAASA,EAAM91G,WAClD69G,EAAS79G,UAAU6P,YAAcguG,EACjCA,EAAS79G,UAAU29G,cAAgB,WACjC,OAAOnD,GAAcvqG,KACvB,EACA4tG,EAAS79G,UAAU49G,YAAc,WAC/B,MAAO,UACT,EACOC,CACT,CAd4B,CAc1B/H,IACEgI,GAA2B,SAAUhI,GACvC,SAASgI,IACPhI,EAAM3iG,MAAMlD,KAAM7N,UACpB,CAUA,OATI0zG,IAAOgI,EAAYt/D,UAAYs3D,GACnCgI,EAAY99G,UAAYlB,OAAOY,OAAOo2G,GAASA,EAAM91G,WACrD89G,EAAY99G,UAAU6P,YAAciuG,EACpCA,EAAY99G,UAAU29G,cAAgB,WACpC,OAAO3D,GAAc/pG,KAAM,MAAM,EACnC,EACA6tG,EAAY99G,UAAU49G,YAAc,WAClC,MAAO,aACT,EACOE,CACT,CAd+B,CAc7BhI,IACEiI,GAAwB,SAAUjI,GACpC,SAASiI,IACPjI,EAAM3iG,MAAMlD,KAAM7N,UACpB,CAUA,OATI0zG,IAAOiI,EAASv/D,UAAYs3D,GAChCiI,EAAS/9G,UAAYlB,OAAOY,OAAOo2G,GAASA,EAAM91G,WAClD+9G,EAAS/9G,UAAU6P,YAAckuG,EACjCA,EAAS/9G,UAAU29G,cAAgB,WACjC,OAAO3D,GAAc/pG,KAAM,MAAM,EACnC,EACA8tG,EAAS/9G,UAAU49G,YAAc,WAC/B,MAAO,UACT,EACOG,CACT,CAd4B,CAc1BjI,IACEkI,GAAyB,SAAUlI,GACrC,SAASkI,IACPlI,EAAM3iG,MAAMlD,KAAM7N,UACpB,CAUA,OATI0zG,IAAOkI,EAAUx/D,UAAYs3D,GACjCkI,EAAUh+G,UAAYlB,OAAOY,OAAOo2G,GAASA,EAAM91G,WACnDg+G,EAAUh+G,UAAU6P,YAAcmuG,EAClCA,EAAUh+G,UAAU29G,cAAgB,WAClC,OAAO3D,GAAc/pG,KACvB,EACA+tG,EAAUh+G,UAAU49G,YAAc,WAChC,MAAO,WACT,EACOI,CACT,CAd6B,CAc3BlI,IACEuC,GAAwB,SAAUvC,GACpC,SAASuC,IACPvC,EAAM3iG,MAAMlD,KAAM7N,UACpB,CAUA,OATI0zG,IAAOuC,EAAS75D,UAAYs3D,GAChCuC,EAASr4G,UAAYlB,OAAOY,OAAOo2G,GAASA,EAAM91G,WAClDq4G,EAASr4G,UAAU6P,YAAcwoG,EACjCA,EAASr4G,UAAU29G,cAAgB,WACjC,OAAOnD,GAAcvqG,KACvB,EACAooG,EAASr4G,UAAU49G,YAAc,WAC/B,MAAO,UACT,EACOvF,CACT,CAd4B,CAc1BvC,IACEmI,GAA4B,SAAUnI,GACxC,SAASmI,IACPnI,EAAM3iG,MAAMlD,KAAM7N,UACpB,CAUA,OATI0zG,IAAOmI,EAAaz/D,UAAYs3D,GACpCmI,EAAaj+G,UAAYlB,OAAOY,OAAOo2G,GAASA,EAAM91G,WACtDi+G,EAAaj+G,UAAU6P,YAAcouG,EACrCA,EAAaj+G,UAAU29G,cAAgB,WACrC,OAAO3D,GAAc/pG,KAAM,SAC7B,EACAguG,EAAaj+G,UAAU49G,YAAc,WACnC,MAAO,cACT,EACOK,CACT,CAdgC,CAc9BnI,IACEoI,GAA2B,SAAUpI,GACvC,SAASoI,IACPpI,EAAM3iG,MAAMlD,KAAM7N,UACpB,CAUA,OATI0zG,IAAOoI,EAAY1/D,UAAYs3D,GACnCoI,EAAYl+G,UAAYlB,OAAOY,OAAOo2G,GAASA,EAAM91G,WACrDk+G,EAAYl+G,UAAU6P,YAAcquG,EACpCA,EAAYl+G,UAAU29G,cAAgB,WACpC,OAAO3D,GAAc/pG,KAAM,SAC7B,EACAiuG,EAAYl+G,UAAU49G,YAAc,WAClC,MAAO,aACT,EACOM,CACT,CAd+B,CAc7BpI,IACEsC,GAAwB,SAAUtC,GACpC,SAASsC,IACPtC,EAAM3iG,MAAMlD,KAAM7N,UACpB,CAeA,OAdI0zG,IAAOsC,EAAS55D,UAAYs3D,GAChCsC,EAASp4G,UAAYlB,OAAOY,OAAOo2G,GAASA,EAAM91G,WAClDo4G,EAASp4G,UAAU6P,YAAcuoG,EACjCA,EAASp4G,UAAU29G,cAAgB,WAEjC,IADA,IAAIj1F,EAAOzY,KAAKiqG,QACP97G,EAAI,EAAGA,EAAIsqB,EAAKrmB,OAAQjE,IAC/BsqB,EAAKtqB,GAAG,GAAKyvG,EAAOnlF,EAAKtqB,GAAG,IAC5BsqB,EAAKtqB,GAAG,GAAKyvG,EAAOnlF,EAAKtqB,GAAG,IAE9B,OAAOsqB,CACT,EACA0vF,EAASp4G,UAAU49G,YAAc,WAC/B,MAAO,UACT,EACOxF,CACT,CAnB4B,CAmB1BtC,IACFsD,GAAUjB,UAAYA,GACtBiB,GAAUyE,SAAWA,GACrBzE,GAAU0E,YAAcA,GACxB1E,GAAU2E,SAAWA,GACrB3E,GAAU4E,UAAYA,GACtB5E,GAAUf,SAAWA,GACrBe,GAAU6E,aAAeA,GACzB7E,GAAU8E,YAAcA,GACxB9E,GAAUhB,SAAWA,GAGC,qBAAXp9F,QAA2BA,OAAOo+F,YAC3Cp+F,OAAOo+F,UAAYA,GAGnBzhF,SAAS6D,iBAAiB,4BAA4B,YACf,IAAjC49E,GAAUtzE,OAAOq4E,aACnB/E,GAAUI,YAEd,IAGA7hF,SAAS6D,iBAAiB,uBAAuB,YACV,IAAjC49E,GAAUtzE,OAAOq4E,aACnB/E,GAAUI,YAEd,IAGAn5C,YAAW,WACTrlD,OAAO23E,cAAc,IAAIyrB,MAAM,kBACjC,GAAG,IAILhF,GAAUiF,QAAUjF,E,kBC/sEpB,IAAMkF,EAAWC,MACjBD,EAASjwG,OAAOmM,QAAQ8jG,E,uBCJxB,SAKA,YAEE,YACE,WACEruG,KAAKuuG,MAAQ,CACXC,kBAAmB,yGACnBC,oBAAqB,CACnB1U,SAAU,oEACV2U,QAAS,eAEXC,oBAAqB,iEACrBC,mBAAoB,OACpBC,uBAAwB,6MACxBC,oBAAqB,sMACrBC,mBAAoB,4MACpBC,kBAAmB,yCACnBC,oBAAqB,wCACrBC,sBAAuB,4EAE1B,GAAE5gH,KAAK0R,KACT,GAAE1R,KAnBW0R,MAoBd,IAAIuuG,EApBUvuG,KAoBMuuG,OACpB,YACE,WACE,IAAIY,EACJA,EAAQ,KACRZ,EAAMa,aAAe,WACnB,IAAIhN,EACJ,OAAO+M,EAAkE,OAAzD/M,EAAM16E,SAASikE,cAAc,yBAAmCyW,EAAIlK,aAAU,CAChG,EACAqW,EAAMc,SAAW,WACf,OAAgB,MAATF,EAAgBA,EAAQZ,EAAMa,cACvC,CACD,GAAE9gH,KAAK0R,MACR,WACE,IAAIsvG,EAAS/gH,EACbA,EAAIghH,QAAQx/G,UAAUkvB,SAAWswF,QAAQx/G,UAAU4yF,iBAAmB4sB,QAAQx/G,UAAU+yF,oBAAsBysB,QAAQx/G,UAAU8yF,mBAAqB0sB,QAAQx/G,UAAUy/G,kBAAoBD,QAAQx/G,UAAU6yF,sBAC7M2rB,EAAMtvF,QAAU,SAAUmJ,EAAS2xE,GACjC,OAAwB,MAApBA,EAAS2U,QACJngH,EAAED,KAAK85B,EAAS2xE,EAASA,YAAcxrG,EAAED,KAAK85B,EAAS2xE,EAAS2U,SAEhEngH,EAAED,KAAK85B,EAAS2xE,EAE3B,EACAuV,EAAU,WACVf,EAAM7B,QAAU,SAAUtkF,EAAS14B,GACjC,IAAI0yG,EACJ,OAAmC,OAA3BA,EAAMh6E,EAAQknF,IAAoBlN,EAAI1yG,QAAO,CACvD,EACA6+G,EAAMkB,QAAU,SAAUrnF,EAAS14B,EAAKN,GAItC,OAHwB,MAApBg5B,EAAQknF,KACVlnF,EAAQknF,GAAW,CAAC,GAEflnF,EAAQknF,GAAS5/G,GAAON,CACjC,EACAm/G,EAAMmB,EAAI,SAAU3V,GAClB,OAAOnnG,MAAM7C,UAAUmS,MAAM5T,KAAKo5B,SAASwkE,iBAAiB6N,GAC9D,CACD,EAAEzrG,KAAK0R,MACR,WACE,IAAI0vG,EAAGC,EAAWjV,EAClBgV,EAAInB,EAAMmB,EACVhV,EAAY6T,EAAM7T,UAAY,WAC5B,IAAIhvF,EAEJ,OADAA,EAAOgc,SAASikE,cAAc,2BACfjgF,EAAKwsF,OACtB,EACAyX,EAAYpB,EAAMoB,UAAY,WAC5B,IAAIjkG,EAEJ,OADAA,EAAOgc,SAASikE,cAAc,2BACfjgF,EAAKwsF,OACtB,EACAqW,EAAMqB,eAAiB,SAAU5qB,GAC/B,IAAI6qB,EAEJ,GAAa,OADbA,EAAQnV,KAEN,OAAO1V,EAAIkB,iBAAiB,eAAgB2pB,EAEhD,EACAtB,EAAMuB,kBAAoB,WACxB,IAAIC,EAAOF,EAGX,GAFAA,EAAQnV,IACRqV,EAAQJ,IACK,MAATE,GAA0B,MAATE,EACnB,OAAOL,EAAE,oBAAsBK,EAAQ,MAAMxlG,SAAQ,SAAUhL,GAC7D,OAAOA,EAAMnQ,MAAQygH,CACvB,GAEJ,CACD,EAAEvhH,KAAK0R,MACR,WACE,IAAIgwG,EAAaC,EAAMhxF,EAASujE,EAChCvjE,EAAUsvF,EAAMtvF,QAEW,oBAD3B+wF,EAAcjlG,OAAOilG,gBAEnBA,EAAc,SAAUhnF,EAAOgpB,GAC7B,IAAIk+D,EAGJ,OAFAA,EAAMxoF,SAAS46D,YAAY,gBACvB6tB,gBAAgBnnF,EAAOgpB,EAAOkoD,QAASloD,EAAO2Y,WAAY3Y,EAAOmoD,QAC9D+V,CACT,GACYngH,UAAYgb,OAAOojG,MAAMp+G,UACrCyyF,EAAiBwtB,EAAYjgH,UAAUyyF,eACvCwtB,EAAYjgH,UAAUyyF,eAAiB,WACrC,IAAI75D,EASJ,OARAA,EAAS65D,EAAel0F,KAAK0R,MACzBA,KAAK2qD,aAAe3qD,KAAKyiF,kBAC3B5zF,OAAOC,eAAekR,KAAM,mBAAoB,CAC9ChR,IAAK,WACH,OAAO,CACT,IAGG25B,CACT,GAEFsnF,EAAO1B,EAAM0B,KAAO,SAAU7vG,EAAK1R,EAAM+pB,GACvC,IAAIuQ,EAOJ,OANAA,EAAQ,IAAIgnF,EAAYthH,EAAM,CAC5BwrG,SAAS,EACTvvC,YAAY,EACZwvC,OAAQ1hF,IAEVrY,EAAIsiF,cAAc15D,IACVA,EAAMy5D,gBAChB,EACA8rB,EAAM6B,eAAiB,SAAU9+G,GAI/B,OAHA2+G,EAAK3+G,EAAEyS,OAAQ,yBACfzS,EAAEkxF,iBACFlxF,EAAE++G,kBACK/+G,EAAEg/G,0BACX,EACA/B,EAAMnqB,SAAW,SAAUh8D,EAAS2xE,EAAUwW,EAAWxgE,GACvD,OAAO3nB,EAAQmD,iBAAiBglF,GAAW,SAAUj/G,GACnD,IAAIyS,EAEJ,IADAA,EAASzS,EAAEyS,OACAA,aAAkBwrG,UAAYtwF,EAAQlb,EAAQg2F,IACvDh2F,EAASA,EAAO8jB,WAElB,GAAI9jB,aAAkBwrG,UAAuC,IAA5Bx/D,EAAQzhD,KAAKyV,EAAQzS,GAEpD,OADAA,EAAEkxF,iBACKlxF,EAAE++G,iBAEb,GACF,CACD,EAAE/hH,KAAK0R,MACR,WACE,IAAIwwG,EAAeZ,EAAgBhrB,EAAWyqB,EAAgBoB,EAAgBC,EAC9ErB,EAAWd,EAAMc,SAAUO,EAAiBrB,EAAMqB,eAAuBrB,EAAM0B,KAC/EO,EAAgB,CACd,IAAK,MACL/4F,KAAM,aACNk5F,KAAM,YACNC,IAAK,4BACLC,KAAM,oCACNC,OAAQ,6FAEVvC,EAAMwC,KAAO,SAAU3sG,GACrB,IAAI4gF,EAgBJ,OAfA5gF,EAAUqsG,EAAersG,GACzB4gF,EAAMJ,EAAUxgF,GAAS,WACvB,IAAIg+F,EAAKtQ,EAWT,OAVAA,EAAW4e,EAAwC,OAAvBtO,EAAMpd,EAAI8M,UAAoBsQ,EAAMpd,EAAIW,aAAcX,EAAIY,kBAAkB,iBACnE,IAAjCt1F,KAAK4W,MAAM89E,EAAIS,OAAS,KACK,oBAApBrhF,EAAQymG,SACjBzmG,EAAQymG,QAAQ/Y,EAAU9M,EAAI8lB,WAAY9lB,GAGf,oBAAlB5gF,EAAQ+nD,OACjB/nD,EAAQ+nD,MAAM2lC,EAAU9M,EAAI8lB,WAAY9lB,GAGT,oBAArB5gF,EAAQqvB,SAA0BrvB,EAAQqvB,SAASuxD,EAAKA,EAAI8lB,iBAAc,CAC1F,MAC0B,MAAtB1mG,EAAQ4sG,aAAuB5sG,EAAQ4sG,WAAWhsB,EAAK5gF,MAGvD4gF,EAAIsF,aAAetE,eAAeirB,OAC7BjsB,EAAID,KAAK3gF,EAAQqU,WAD1B,EAGF,EACAg4F,EAAiB,SAAUrsG,GAiBzB,OAhBAA,EAAQsgF,IAAMtgF,EAAQsgF,KAAOgF,SAASvG,KACtC/+E,EAAQvE,KAAOuE,EAAQvE,KAAK2F,cACP,QAAjBpB,EAAQvE,MAAkBuE,EAAQqU,OAChCrU,EAAQsgF,IAAIxgF,QAAQ,KAAO,EAC7BE,EAAQsgF,KAAO,IAAMtgF,EAAQqU,KAE7BrU,EAAQsgF,KAAO,IAAMtgF,EAAQqU,MAGM,MAAnC+3F,EAAcpsG,EAAQ8sG,YACxB9sG,EAAQ8sG,SAAW,KAErB9sG,EAAQ+sG,OAASX,EAAcpsG,EAAQ8sG,UACd,MAArB9sG,EAAQ8sG,WACV9sG,EAAQ+sG,QAAU,iBAEb/sG,CACT,EACAwgF,EAAY,SAAUxgF,EAASmtB,GAC7B,IAAIyzD,EAiBJ,OAhBAA,EAAM,IAAIgB,gBACNC,KAAK7hF,EAAQvE,KAAMuE,EAAQsgF,KAAK,GACpCM,EAAIkB,iBAAiB,SAAU9hF,EAAQ+sG,QACX,kBAAjB/sG,EAAQqU,MACjBusE,EAAIkB,iBAAiB,eAAgB,oDAElC9hF,EAAQgtG,cACXpsB,EAAIkB,iBAAiB,mBAAoB,kBACzC0pB,EAAe5qB,IAEjBA,EAAIqsB,kBAAoBjtG,EAAQitG,gBAChCrsB,EAAIssB,mBAAqB,WACvB,GAAItsB,EAAIsF,aAAetE,eAAeurB,KACpC,OAAOhgF,EAAKyzD,EAEhB,EACOA,CACT,EACA0rB,EAAkB,SAAU5e,EAAUjyF,GACpC,IAAI+8E,EAAQk0B,EACZ,GAAwB,kBAAbhf,GAAyC,kBAATjyF,EACzC,GAAIA,EAAKqf,MAAM,YACb,IACE4yE,EAAW7hF,KAAK2U,MAAMktE,EACxB,CAAE,MAAO3lC,GAAQ,MACZ,GAAItsD,EAAKqf,MAAM,4BACpB4xF,EAASppF,SAASw7D,cAAc,WACzB5pC,aAAa,QAAS+1D,KAC7ByB,EAAOr5F,KAAOq6E,EACdpqE,SAAS8d,KAAKkpD,YAAYoiB,GAAQjpF,WAAW8/D,YAAYmpB,QACpD,GAAIjxG,EAAKqf,MAAM,sBAAuB,CAC3C09D,EAAS,IAAI40B,UACb3xG,EAAOA,EAAKpB,QAAQ,MAAO,IAC3B,IACEqzF,EAAWlV,EAAO60B,gBAAgB3f,EAAUjyF,EAC9C,CAAE,MAAOssD,GAAQ,CACnB,CAEF,OAAO2lC,CACT,EACAyc,EAAMprB,KAAO,SAAU/6D,GACrB,OAAOA,EAAQ+6D,IACjB,EACAorB,EAAMmD,cAAgB,SAAUhtB,GAC9B,IAAOitB,EAAcC,GACrBD,EAAejqF,SAASw7D,cAAc,MACzBC,KAAOuG,SAASvG,KAC7ByuB,EAAYlqF,SAASw7D,cAAc,KACnC,IAEE,OADA0uB,EAAUzuB,KAAOuB,MACNktB,EAAUC,UAAmC,MAAvBD,EAAUC,YAAsBD,EAAU9pF,MAAQ6pF,EAAaE,SAAW,KAAOF,EAAa7pF,OAAS8pF,EAAUC,SAAW,KAAOD,EAAU9pF,KAChL,CAAE,MAAOqkC,GAEP,OADIA,GACG,CACT,CACF,CACD,EAAE79D,KAAK0R,MACR,WACE,IAAIif,EAAS6yF,EACb7yF,EAAUsvF,EAAMtvF,QAChB6yF,EAAU,SAAUxgH,GAClB,OAAOsB,MAAM7C,UAAUmS,MAAM5T,KAAKgD,EACpC,EACAi9G,EAAMwD,iBAAmB,SAAU3pF,EAAS4pF,GAC1C,IAAI9xF,EAAQ8xB,EAgCZ,OA/BA9xB,EAAS,CAACkI,GACNnJ,EAAQmJ,EAAS,UACnBlI,EAAS4xF,EAAQ1pF,EAAQzV,WAE3Bq/B,EAAS,GACT9xB,EAAO3V,SAAQ,SAAUhL,GACvB,GAAKA,EAAM7Q,OAAQ6Q,EAAM2/B,WAGrBjgB,EAAQ1f,EAAO,wBAGnB,OAAI0f,EAAQ1f,EAAO,UACVuyG,EAAQvyG,EAAM6E,SAASmG,SAAQ,SAAU4rB,GAC9C,GAAIA,EAAO87E,SACT,OAAOjgE,EAAO5sC,KAAK,CACjB1W,KAAM6Q,EAAM7Q,KACZU,MAAO+mC,EAAO/mC,OAGpB,IACSmQ,EAAM2yG,UAAoE,IAAzD,CAAC,QAAS,WAAY,UAAUhuG,QAAQ3E,EAAMM,MACjEmyC,EAAO5sC,KAAK,CACjB1W,KAAM6Q,EAAM7Q,KACZU,MAAOmQ,EAAMnQ,aAHV,CAMT,IACI4iH,GACFhgE,EAAO5sC,KAAK4sG,GAEPhgE,EAAOl/C,KAAI,SAAUi9G,GAC1B,OAAkB,MAAdA,EAAMrhH,KACD6nG,mBAAmBwZ,EAAMrhH,MAAQ,IAAM6nG,mBAAmBwZ,EAAM3gH,OAEhE2gH,CAEX,IAAGjtF,KAAK,IACV,EACAyrF,EAAM4D,aAAe,SAAUhW,EAAMpC,GACnC,OAAI96E,EAAQk9E,EAAM,QACT2V,EAAQ3V,EAAKxpF,UAAUwQ,QAAO,SAAUuI,GAC7C,OAAOzM,EAAQyM,EAAIquE,EACrB,IAEO+X,EAAQ3V,EAAKjQ,iBAAiB6N,GAEzC,CACD,EAAEzrG,KAAK0R,MACR,WACE,IAAIoyG,EAAanC,EAAMG,EACvBH,EAAO1B,EAAM0B,KAAMG,EAAiB7B,EAAM6B,eAC1C7B,EAAM8D,cAAgB,SAAU/gH,GAC9B,IAAK8gH,EAAYpyG,MACf,OAAOowG,EAAe9+G,EAE1B,EACAi9G,EAAM+D,QAAU,SAAUrH,EAAS7iF,GACjC,OAAOkqF,QAAQrH,EACjB,EACAmH,EAAc,SAAUhqF,GACtB,IAAImqF,EAAQzvG,EAAUmoG,EAEtB,KADAA,EAAU7iF,EAAQ4wB,aAAa,iBAE7B,OAAO,EAGT,GADAu5D,GAAS,EACLtC,EAAK7nF,EAAS,WAAY,CAC5B,IACEmqF,EAAShE,EAAM+D,QAAQrH,EAAS7iF,EAClC,CAAE,MAAO+jC,GAAQ,CACjBrpD,EAAWmtG,EAAK7nF,EAAS,mBAAoB,CAACmqF,GAChD,CACA,OAAOA,GAAUzvG,CACnB,CACD,EAAExU,KAAK0R,MACR,WACE,IAAIwyG,EAAoBC,EAAqBC,EAAoBC,EAAmBC,EAAoBC,EAAmBV,EAAczF,EAASoG,EAAe7zF,EAASwwF,EAASW,EACnLnxF,EAAUsvF,EAAMtvF,QAASytF,EAAU6B,EAAM7B,QAAS+C,EAAUlB,EAAMkB,QAASW,EAAiB7B,EAAM6B,eAAgB+B,EAAe5D,EAAM4D,aACvI5D,EAAMwE,sBAAwB,SAAUzhH,GAGtC,GADU0O,UACEk/B,SACV,OAAOkxE,EAAe9+G,EAE1B,EACAi9G,EAAMyE,cAAgB,SAAU1hH,GAC9B,IAAI82B,EACJ,GAAI92B,aAAa68G,MAAO,CACtB,GAAI2E,EAAcxhH,GAChB,OAEF82B,EAAU92B,EAAEyS,MACd,MACEqkB,EAAU92B,EAEZ,OAAI2tB,EAAQmJ,EAASmmF,EAAMU,qBAClB4D,EAAkBzqF,GAChBnJ,EAAQmJ,EAASmmF,EAAMW,wBAA0BjwF,EAAQmJ,EAASmmF,EAAMQ,oBAC1E4D,EAAkBvqF,GAChBnJ,EAAQmJ,EAASmmF,EAAMK,oBACzBgE,EAAmBxqF,QADrB,CAGT,EACAmmF,EAAM0E,eAAiB,SAAU3hH,GAC/B,IAAI82B,EAEJ,OADAA,EAAU92B,aAAa68G,MAAQ78G,EAAEyS,OAASzS,EACtC2tB,EAAQmJ,EAASmmF,EAAMU,qBAClByD,EAAmBtqF,GACjBnJ,EAAQmJ,EAASmmF,EAAMW,wBAA0BjwF,EAAQmJ,EAASmmF,EAAMO,qBAC1E0D,EAAmBpqF,GACjBnJ,EAAQmJ,EAASmmF,EAAMK,oBACzB6D,EAAoBrqF,QADtB,CAGT,EACAsqF,EAAqB,SAAUtqF,GAC7B,IAAI8qF,EACJ,IAAIxG,EAAQtkF,EAAS,gBASrB,OALmB,OADnB8qF,EAAc9qF,EAAQ4wB,aAAa,wBAEjCy2D,EAAQrnF,EAAS,kBAAmBA,EAAQsjE,WAC5CtjE,EAAQsjE,UAAYwnB,GAEtB9qF,EAAQmD,iBAAiB,QAAS6kF,GAC3BX,EAAQrnF,EAAS,gBAAgB,EAC1C,EACAyqF,EAAoB,SAAUzqF,GAC5B,IAAI+qF,EAOJ,OALoB,OADpBA,EAAezG,EAAQtkF,EAAS,sBAE9BA,EAAQsjE,UAAYynB,EACpB1D,EAAQrnF,EAAS,kBAAmB,OAEtCA,EAAQoD,oBAAoB,QAAS4kF,GAC9BX,EAAQrnF,EAAS,eAAgB,KAC1C,EACAqqF,EAAsB,SAAUtW,GAC9B,OAAOgW,EAAahW,EAAMoS,EAAMO,qBAAqBvkG,QAAQioG,EAC/D,EACAA,EAAqB,SAAUpqF,GAC7B,IAAI8qF,EACJ,IAAIxG,EAAQtkF,EAAS,gBAcrB,OAVmB,OADnB8qF,EAAc9qF,EAAQ4wB,aAAa,wBAE7B/5B,EAAQmJ,EAAS,WACnBqnF,EAAQrnF,EAAS,kBAAmBA,EAAQsjE,WAC5CtjE,EAAQsjE,UAAYwnB,IAEpBzD,EAAQrnF,EAAS,kBAAmBA,EAAQh5B,OAC5Cg5B,EAAQh5B,MAAQ8jH,IAGpB9qF,EAAQ8W,UAAW,EACZuwE,EAAQrnF,EAAS,gBAAgB,EAC1C,EACAwqF,EAAqB,SAAUzW,GAC7B,OAAOgW,EAAahW,EAAMoS,EAAMQ,oBAAoBxkG,QAAQooG,EAC9D,EACAA,EAAoB,SAAUvqF,GAC5B,IAAI+qF,EAWJ,OAToB,OADpBA,EAAezG,EAAQtkF,EAAS,sBAE1BnJ,EAAQmJ,EAAS,UACnBA,EAAQsjE,UAAYynB,EAEpB/qF,EAAQh5B,MAAQ+jH,EAElB1D,EAAQrnF,EAAS,kBAAmB,OAEtCA,EAAQ8W,UAAW,EACZuwE,EAAQrnF,EAAS,eAAgB,KAC1C,EACA0qF,EAAgB,SAAU9pF,GACxB,IAAIo5E,EAAKpd,EAET,OAA2E,OAA5D,OADfA,EAA8B,OAAvBod,EAAMp5E,EAAMmxE,QAAkBiI,EAAI,QAAK,GACxBpd,EAAIY,kBAAkB,uBAAoB,EAClE,CACD,EAAEt3F,KAAK0R,MACR,WACE,IAAIowG,EACJA,EAAiB7B,EAAM6B,eACvB7B,EAAM6E,aAAe,SAAU9hH,GAC7B,IAAIq+G,EAAWjV,EAAWyB,EAAMkX,EAAalwB,EAAM0oB,EAAMj2E,EAGzD,GADAA,GADAi2E,EAAO7rG,MACOg5C,aAAa,eAoB3B,OAhBAmqC,EAAOorB,EAAMprB,KAAK0oB,GAClBnR,EAAY6T,EAAM7T,YAClBiV,EAAYpB,EAAMoB,YAClBxT,EAAOz0E,SAASw7D,cAAc,QAC9BmwB,EAAc,gCAAkCz9E,EAAS,qBACxC,MAAb+5E,GAAkC,MAAbjV,GAAsB6T,EAAMmD,cAAcvuB,KACjEkwB,GAAe,gBAAkB1D,EAAY,YAAcjV,EAAY,sBAEzE2Y,GAAe,0BACflX,EAAKvmE,OAAS,OACdumE,EAAKvT,OAASzF,EACdgZ,EAAKp4F,OAAS8nG,EAAK9nG,OACnBo4F,EAAKzQ,UAAY2nB,EACjBlX,EAAKppF,MAAMwD,QAAU,OACrBmR,SAASglD,KAAKgiB,YAAYyN,GAC1BA,EAAKxQ,cAAc,mBAAmBqR,QAC/BoT,EAAe9+G,EACxB,CACD,EAAEhD,KAAK0R,MACR,WACE,IAAI+wG,EACFd,EACAvD,EACAgF,EACA4B,EACAr0F,EACA8yF,EACAtC,EACAW,EACAluG,EAAQ,GAAGA,MACb+c,EAAUsvF,EAAMtvF,QAASytF,EAAU6B,EAAM7B,QAAS+C,EAAUlB,EAAMkB,QAASQ,EAAO1B,EAAM0B,KAAMG,EAAiB7B,EAAM6B,eAAgBW,EAAOxC,EAAMwC,KAAMW,EAAgBnD,EAAMmD,cAAeK,EAAmBxD,EAAMwD,iBACtNuB,EAAW,SAAUlrF,GACnB,IAAIh5B,EAEJ,OAAgB,OADhBA,EAAQg5B,EAAQ4wB,aAAa,iBACK,UAAV5pD,CAC1B,EACAm/G,EAAMgF,aAAe,SAAUjiH,GAC7B,IAAIyrG,EAAQtkF,EAAMy4F,EAAU9oF,EAASwN,EAAQ8uD,EAAK2sB,EAElD,OAAKiC,EADLlrF,EAAUpoB,QAILiwG,EAAK7nF,EAAS,gBAInBipF,EAAkBjpF,EAAQ4wB,aAAa,yBACvCk4D,EAAW9oF,EAAQ4wB,aAAa,cAAgB,SAC5C/5B,EAAQmJ,EAASmmF,EAAMK,qBACzB7R,EAAS2P,EAAQtkF,EAAS,qBAC1BwN,EAAS82E,EAAQtkF,EAAS,iCAAmCA,EAAQwN,OACrE8uD,EAAMgoB,EAAQtkF,EAAS,iCAAmCA,EAAQ4wB,aAAa,WAAa0wC,SAASvG,KACxE,QAAzBvtD,EAAOpwB,gBACTk/E,EAAMA,EAAIjmF,QAAQ,QAAS,KAEL,wBAApB2pB,EAAQorF,SACV/6F,EAAO,IAAIg7F,SAASrrF,GACN,MAAV20E,GACFtkF,EAAKg/E,OAAOsF,EAAOruG,KAAMquG,EAAO3tG,QAGlCqpB,EAAOs5F,EAAiB3pF,EAAS20E,GAEnC0S,EAAQrnF,EAAS,oBAAqB,MACtCqnF,EAAQrnF,EAAS,+BAAgC,MACjDqnF,EAAQrnF,EAAS,+BAAgC,OACxCnJ,EAAQmJ,EAASmmF,EAAME,sBAAwBxvF,EAAQmJ,EAASmmF,EAAMI,sBAC/E/4E,EAASxN,EAAQ4wB,aAAa,eAC9B0rC,EAAMt8D,EAAQ4wB,aAAa,YAC3BvgC,EAAOs5F,EAAiB3pF,EAASA,EAAQ4wB,aAAa,kBAEtDpjB,EAASxN,EAAQ4wB,aAAa,eAC9B0rC,EAAM6pB,EAAMprB,KAAK/6D,GACjB3P,EAAO2P,EAAQ4wB,aAAa,gBAE9B+3D,EAAK,CACHlxG,KAAM+1B,GAAU,MAChB8uD,IAAKA,EACLjsE,KAAMA,EACNy4F,SAAUA,EACVF,WAAY,SAAUhsB,EAAK5gF,GACzB,OAAI6rG,EAAK7nF,EAAS,kBAAmB,CAAC48D,EAAK5gF,IAClC6rG,EAAK7nF,EAAS,YAAa,CAAC48D,KAEnCirB,EAAK7nF,EAAS,iBACP,EAEX,EACAyiF,QAAS,WACP,IAAI7nG,EAEJ,OADAA,EAAO,GAAK7Q,UAAUC,OAAS8P,EAAM5T,KAAK6D,UAAW,GAAK,GACnD89G,EAAK7nF,EAAS,eAAgBplB,EACvC,EACAmpD,MAAO,WACL,IAAInpD,EAEJ,OADAA,EAAO,GAAK7Q,UAAUC,OAAS8P,EAAM5T,KAAK6D,UAAW,GAAK,GACnD89G,EAAK7nF,EAAS,aAAcplB,EACrC,EACAywB,SAAU,WACR,IAAIzwB,EAEJ,OADAA,EAAO,GAAK7Q,UAAUC,OAAS8P,EAAM5T,KAAK6D,UAAW,GAAK,GACnD89G,EAAK7nF,EAAS,gBAAiBplB,EACxC,EACAouG,YAAaM,EAAchtB,GAC3B2sB,gBAAoC,MAAnBA,GAA+C,UAApBA,IAEvCjB,EAAe9+G,KA/DpB2+G,EAAK7nF,EAAS,iBACP,GA+DX,EACAmmF,EAAMmF,sBAAwB,SAAUpiH,GACtC,IAAIyrG,EAAQZ,EAGZ,GADAA,GADAY,EAAS/8F,MACKm8F,KAYd,OARIY,EAAOruG,MACT+gH,EAAQtT,EAAM,oBAAqB,CACjCztG,KAAMquG,EAAOruG,KACbU,MAAO2tG,EAAO3tG,QAGlBqgH,EAAQtT,EAAM,4BAA6BY,EAAO4W,gBAClDlE,EAAQtT,EAAM,+BAAgCY,EAAO/jD,aAAa,eAC3Dy2D,EAAQtT,EAAM,+BAAgCY,EAAO/jD,aAAa,cAC3E,EACAu1D,EAAMqF,0BAA4B,SAAUtiH,GAC1C,IAAImnB,EAAMo7F,EAAyCj+E,EAOnD,GANO51B,KACP41B,GADO51B,KACQg5C,aAAa,gBAAkB,OAAOxzC,cACrDiT,EAFOzY,KAEKg5C,aAAa,eAEzB66D,GADYviH,EAAE0jG,SAAW1jG,EAAEyjG,UACsB,QAAXn/D,IAAqBnd,EACxB,MAAZnnB,EAAEyrG,QAA+B,IAAbzrG,EAAEyrG,QACjB8W,EAC1B,OAAOviH,EAAEg/G,0BAEb,CACD,EAAEhiH,KAAK0R,MACR,WACE,IAAI0vG,EAAGE,EAAgBxrB,EAAU6uB,EAAgBD,EAAe/C,EAAMyD,EAAuBhH,EAAS2F,EAAeU,EAAuBK,EAAcG,EAAcnE,EAAcwE,EAA2B9D,EAEjN,GADAG,EAAO1B,EAAM0B,KAAM7rB,EAAWmqB,EAAMnqB,SAAUsoB,EAAU6B,EAAM7B,QAASgD,EAAInB,EAAMmB,EAAGI,EAAoBvB,EAAMuB,kBAAmBF,EAAiBrB,EAAMqB,eAAgBR,EAAeb,EAAMa,aAAc4D,EAAgBzE,EAAMyE,cAAeC,EAAiB1E,EAAM0E,eAAgBF,EAAwBxE,EAAMwE,sBAAuBV,EAAgB9D,EAAM8D,cAAeuB,EAA4BrF,EAAMqF,0BAA2BL,EAAehF,EAAMgF,aAAcG,EAAwBnF,EAAMmF,sBAAuBN,EAAe7E,EAAM6E,aACrgB,qBAAXU,QAAqC,OAAXA,QAAkC,MAAfA,OAAO/C,KAAc,CAC3E,GAAI+C,OAAOC,MACT,MAAM,IAAIlxF,MAAM,kEAElBixF,OAAOC,MAAQxF,EACfuF,OAAOE,eAAc,SAAU5vG,EAAS6vG,EAAiBjvB,GACvD,IAAK5gF,EAAQgtG,YACX,OAAOxB,EAAe5qB,EAE1B,GACF,CACAupB,EAAM1lG,MAAQ,WACZ,GAAIkC,OAAOmpG,cACT,MAAM,IAAIrxF,MAAM,sCAgDlB,OA9CA9X,OAAOwgB,iBAAiB,YAAY,WAMlC,OALAmkF,EAAEnB,EAAMQ,oBAAoBxkG,SAAQ,SAAUmhB,GAC5C,GAAIghF,EAAQhhF,EAAI,gBACd,OAAOsnF,EAActnF,EAEzB,IACOgkF,EAAEnB,EAAMU,qBAAqB1kG,SAAQ,SAAUmhB,GACpD,GAAIghF,EAAQhhF,EAAI,gBACd,OAAOsnF,EAActnF,EAEzB,GACF,IACA04D,EAAS18D,SAAU6mF,EAAMU,oBAAqB,gBAAiB+D,GAC/D5uB,EAAS18D,SAAU6mF,EAAMU,oBAAqB,eAAgB+D,GAC9D5uB,EAAS18D,SAAU6mF,EAAMW,sBAAuB,gBAAiB8D,GACjE5uB,EAAS18D,SAAU6mF,EAAMW,sBAAuB,eAAgB8D,GAChE5uB,EAAS18D,SAAU6mF,EAAMC,kBAAmB,QAASoF,GACrDxvB,EAAS18D,SAAU6mF,EAAMC,kBAAmB,QAASuE,GACrD3uB,EAAS18D,SAAU6mF,EAAMC,kBAAmB,QAAS6D,GACrDjuB,EAAS18D,SAAU6mF,EAAMC,kBAAmB,QAASyE,GACrD7uB,EAAS18D,SAAU6mF,EAAMC,kBAAmB,QAAS+E,GACrDnvB,EAAS18D,SAAU6mF,EAAMC,kBAAmB,QAAS4E,GACrDhvB,EAAS18D,SAAU6mF,EAAME,oBAAqB,QAASmF,GACvDxvB,EAAS18D,SAAU6mF,EAAME,oBAAqB,QAASsE,GACvD3uB,EAAS18D,SAAU6mF,EAAME,oBAAqB,QAAS4D,GACvDjuB,EAAS18D,SAAU6mF,EAAME,oBAAqB,QAASwE,GACvD7uB,EAAS18D,SAAU6mF,EAAME,oBAAqB,QAAS8E,GACvDnvB,EAAS18D,SAAU6mF,EAAMI,oBAAqB,SAAUoE,GACxD3uB,EAAS18D,SAAU6mF,EAAMI,oBAAqB,SAAU0D,GACxDjuB,EAAS18D,SAAU6mF,EAAMI,oBAAqB,SAAU4E,GACxDnvB,EAAS18D,SAAU6mF,EAAMK,mBAAoB,SAAUmE,GACvD3uB,EAAS18D,SAAU6mF,EAAMK,mBAAoB,SAAUyD,GACvDjuB,EAAS18D,SAAU6mF,EAAMK,mBAAoB,SAAU2E,GACvDnvB,EAAS18D,SAAU6mF,EAAMK,mBAAoB,UAAU,SAAUt9G,GAC/D,OAAO8+D,YAAW,WAChB,OAAO6iD,EAAe3hH,EACxB,GAAG,GACL,IACA8yF,EAAS18D,SAAU6mF,EAAMK,mBAAoB,YAAaqE,GAC1D7uB,EAAS18D,SAAU6mF,EAAMK,mBAAoB,gBAAiBoE,GAC9D5uB,EAAS18D,SAAU6mF,EAAMM,uBAAwB,QAAS+E,GAC1DxvB,EAAS18D,SAAU6mF,EAAMM,uBAAwB,QAASkE,GAC1D3uB,EAAS18D,SAAU6mF,EAAMM,uBAAwB,QAASwD,GAC1DjuB,EAAS18D,SAAU6mF,EAAMM,uBAAwB,QAAS6E,GAC1DhsF,SAAS6D,iBAAiB,mBAAoBukF,GAC9CpoF,SAAS6D,iBAAiB,mBAAoB6jF,GACvCrkG,OAAOmpG,eAAgB,CAChC,EACInpG,OAAOwjG,QAAUA,GAAS0B,EAAKvoF,SAAU,yBAC3C6mF,EAAM1lG,OAET,EAAEva,KAAK0R,KACT,GAAE1R,KAAK0R,MAC0B9R,EAAOD,QACvCC,EAAOD,QAAUsgH,OAEL,2BAAZ,KAAY,iCAEf,GAAEjgH,KAAK0R,K,mBCpqBC,SAAU/R,GACjB,aAEA,IAAIqhD,EAAW,CACb6kE,OAAQC,KAAKt0F,QACbu0F,UAAWD,KAAKC,WAEdF,EAAS,CACXlQ,IAAK,WACH,GAAIjkG,KAAK46C,QAAS,CAEhB,IADA,IAAI05D,EACKl4E,EAAOjqC,UAAUC,OAAQmpG,EAAW3oG,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Ek/D,EAASl/D,GAAQlqC,UAAUkqC,GAE7Bk/D,EAASn2F,KAAK0tB,KAAKC,QAClBuhF,EAAmBhlE,EAAS6kE,QAAQlQ,IAAI/gG,MAAMoxG,EAAkB,CAAC,iBAAiB3xE,OAAO44D,GAC5F,CACF,GAEEgZ,EAA4B,oBAAXrlH,QAAoD,kBAApBA,OAAO6hC,SAAwB,SAAU3wB,GAC5F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EACI+3F,EAAiB,SAAUC,EAAUC,GACvC,KAAMD,aAAoBC,GACxB,MAAM,IAAI7nE,UAAU,oCAExB,EACI8nE,EAAc,WAChB,SAAS1jF,EAAiB7Q,EAAQsb,GAChC,IAAK,IAAIlxB,EAAI,EAAGA,EAAIkxB,EAAMjtB,OAAQjE,IAAK,CACrC,IAAIs8D,EAAaprC,EAAMlxB,GACvBs8D,EAAW17D,WAAa07D,EAAW17D,aAAc,EACjD07D,EAAWlnC,cAAe,EACtB,UAAWknC,IAAYA,EAAW51C,UAAW,GACjDhmB,OAAOC,eAAeiV,EAAQ0mD,EAAW/6D,IAAK+6D,EAChD,CACF,CACA,OAAO,SAAU4tC,EAAaE,EAAYC,GAGxC,OAFID,GAAY3jF,EAAiByjF,EAAYtoG,UAAWwoG,GACpDC,GAAa5jF,EAAiByjF,EAAaG,GACxCH,CACT,CACF,CAfkB,GAgBdtlE,EAAM,WACR,OAAO,IAAID,MAAO0/D,SACpB,EACIgiB,EAAe,SAAsBp3B,GACvC,OAAQrqD,IAAQqqD,GAAQ,GAC1B,EACIia,EAAQ,SAAe5iE,EAAQjkC,EAAKD,GACtC,OAAOD,KAAKC,IAAIC,EAAKF,KAAKE,IAAID,EAAKkkC,GACrC,EACIggF,EAAoB,WACtB,SAASA,EAAkBC,GACzBvc,EAAen4F,KAAMy0G,GACrBz0G,KAAK20G,oBAAsB30G,KAAK20G,oBAAoBhlH,KAAKqQ,MACzDA,KAAK00G,WAAaA,EAClB10G,KAAK40G,kBAAoB,CAC3B,CAqFA,OApFAH,EAAkB1kH,UAAU8Y,MAAQ,WAC7B7I,KAAK60G,cACR70G,KAAK80G,UAAY/hF,WACV/yB,KAAK+0G,UACZ/0G,KAAKg1G,eACLzpF,iBAAiB,mBAAoBvrB,KAAK20G,qBAC1CR,EAAOlQ,IAAI,6CAA+CjkG,KAAKi1G,kBAAoB,OAEvF,EACAR,EAAkB1kH,UAAUkkC,KAAO,WAC7Bj0B,KAAK60G,cACP70G,KAAK+0G,UAAYhiF,IACjB/yB,KAAKk1G,cACL1pF,oBAAoB,mBAAoBxrB,KAAK20G,qBAC7CR,EAAOlQ,IAAI,6BAEf,EACAwQ,EAAkB1kH,UAAU8kH,UAAY,WACtC,OAAO70G,KAAK80G,YAAc90G,KAAK+0G,SACjC,EACAN,EAAkB1kH,UAAUolH,WAAa,WACvCn1G,KAAKo1G,SAAWriF,GAClB,EACA0hF,EAAkB1kH,UAAUslH,cAAgB,WAC1Cr1G,KAAK40G,kBAAoB,EACzB50G,KAAKm1G,oBACEn1G,KAAKs1G,eACZnB,EAAOlQ,IAAI,qCACb,EACAwQ,EAAkB1kH,UAAUwlH,iBAAmB,WAC7Cv1G,KAAKs1G,eAAiBviF,IACtBohF,EAAOlQ,IAAI,wCACb,EACAwQ,EAAkB1kH,UAAUilH,aAAe,WACzCh1G,KAAKk1G,cACLl1G,KAAKw1G,MACP,EACAf,EAAkB1kH,UAAUmlH,YAAc,WACxC/kD,aAAanwD,KAAKy1G,YACpB,EACAhB,EAAkB1kH,UAAUylH,KAAO,WACjC,IAAItc,EAAQl5F,KACZA,KAAKy1G,YAAcrlD,YAAW,WAC5B8oC,EAAMwc,mBACNxc,EAAMsc,MACR,GAAGx1G,KAAKi1G,kBACV,EACAR,EAAkB1kH,UAAUklH,gBAAkB,WAC5C,IAAIU,EAAwB31G,KAAKJ,YAAYg2G,aAC3CplH,EAAMmlH,EAAsBnlH,IAC5BD,EAAMolH,EAAsBplH,IAE1B0sF,EADW04B,EAAsBE,WACTvlH,KAAK2zG,IAAIjkG,KAAK40G,kBAAoB,GAC9D,OAAOtkH,KAAK0W,MAAkC,IAA5BqwF,EAAMpa,EAAUzsF,EAAKD,GACzC,EACAkkH,EAAkB1kH,UAAU2lH,iBAAmB,WACzC11G,KAAK81G,sBACP3B,EAAOlQ,IAAI,oEAAsEjkG,KAAK40G,kBAAoB,oBAAsB50G,KAAKi1G,kBAAoB,4BAA8BT,EAAax0G,KAAKs1G,gBAAkB,yBAA2Bt1G,KAAKJ,YAAYm2G,eAAiB,MACxR/1G,KAAK40G,oBACD50G,KAAKg2G,uBACP7B,EAAOlQ,IAAI,2DAEXkQ,EAAOlQ,IAAI,+BACXjkG,KAAK00G,WAAWuB,UAGtB,EACAxB,EAAkB1kH,UAAU+lH,kBAAoB,WAC9C,OAAOtB,EAAax0G,KAAKo1G,SAAWp1G,KAAKo1G,SAAWp1G,KAAK80G,WAAa90G,KAAKJ,YAAYm2G,cACzF,EACAtB,EAAkB1kH,UAAUimH,qBAAuB,WACjD,OAAOh2G,KAAKs1G,gBAAkBd,EAAax0G,KAAKs1G,gBAAkBt1G,KAAKJ,YAAYm2G,cACrF,EACAtB,EAAkB1kH,UAAU4kH,oBAAsB,WAChD,IAAI5Y,EAAS/7F,KACoB,YAA7B0nB,SAASwuF,iBACX9lD,YAAW,YACL2rC,EAAO+Z,qBAAwB/Z,EAAO2Y,WAAWyB,WACnDhC,EAAOlQ,IAAI,uFAAyFv8E,SAASwuF,iBAC7Gna,EAAO2Y,WAAWuB,SAEtB,GAAG,IAEP,EACOxB,CACT,CA5FwB,GA6FxBA,EAAkBmB,aAAe,CAC/BplH,IAAK,EACLD,IAAK,GACLslH,WAAY,GAEdpB,EAAkBsB,eAAiB,EACnC,IAAIK,EAAW,CACbC,cAAe,CACbC,QAAS,UACT99D,WAAY,aACZ+9D,KAAM,OACNC,aAAc,uBACdC,UAAW,uBAEbC,mBAAoB,CAClBC,aAAc,eACdC,gBAAiB,kBACjBC,eAAgB,kBAElBC,mBAAoB,SACpBC,UAAW,CAAC,sBAAuB,4BAEjCV,EAAgBD,EAASC,cAC3BU,EAAYX,EAASW,UACnBC,EAAqBD,EAAU70G,MAAM,EAAG60G,EAAU3kH,OAAS,GAC3D8R,EAAU,GAAGA,QACb+yG,EAAa,WACf,SAASA,EAAWC,GAClB/e,EAAen4F,KAAMi3G,GACrBj3G,KAAKimF,KAAOjmF,KAAKimF,KAAKt2F,KAAKqQ,MAC3BA,KAAKk3G,SAAWA,EAChBl3G,KAAKm3G,cAAgBn3G,KAAKk3G,SAASC,cACnCn3G,KAAKo3G,QAAU,IAAI3C,EAAkBz0G,MACrCA,KAAKq3G,cAAe,CACtB,CA4FA,OA3FAJ,EAAWlnH,UAAUg1F,KAAO,SAActsE,GACxC,QAAIzY,KAAKm2G,WACPn2G,KAAKs3G,UAAUvyB,KAAK90E,KAAKC,UAAUuI,KAC5B,EAIX,EACAw+F,EAAWlnH,UAAUk2F,KAAO,WAC1B,OAAIjmF,KAAKu3G,YACPpD,EAAOlQ,IAAI,uDAAyDjkG,KAAK+3F,aAClE,IAEPoc,EAAOlQ,IAAI,uCAAyCjkG,KAAK+3F,WAAa,mBAAqBgf,GACvF/2G,KAAKs3G,WACPt3G,KAAKw3G,yBAEPx3G,KAAKs3G,UAAY,IAAIhoE,EAAS+kE,UAAUr0G,KAAKk3G,SAASxyB,IAAKqyB,GAC3D/2G,KAAKy3G,uBACLz3G,KAAKo3G,QAAQvuG,SACN,EAEX,EACAouG,EAAWlnH,UAAU2nH,MAAQ,WAQ3B,IAPWvlH,UAAUC,OAAS,QAAsBL,IAAjBI,UAAU,GAAmBA,UAAU,GAAK,CAC3EwlH,gBAAgB,IAEIA,gBAEtB33G,KAAKo3G,QAAQnjF,OAEXj0B,KAAKu3G,WACP,OAAOv3G,KAAKs3G,UAAUI,OAE1B,EACAT,EAAWlnH,UAAUkmH,OAAS,WAE5B,GADA9B,EAAOlQ,IAAI,yCAA2CjkG,KAAK+3F,aACvD/3F,KAAKu3G,WAUP,OAAOv3G,KAAKimF,OATZ,IACE,OAAOjmF,KAAK03G,OACd,CAAE,MAAOvrD,GACPgoD,EAAOlQ,IAAI,6BAA8B93C,EAC3C,CAAE,QACAgoD,EAAOlQ,IAAI,0BAA4BjkG,KAAKJ,YAAYg4G,YAAc,MACtExnD,WAAWpwD,KAAKimF,KAAMjmF,KAAKJ,YAAYg4G,YACzC,CAIJ,EACAX,EAAWlnH,UAAU8nH,YAAc,WACjC,GAAI73G,KAAKs3G,UACP,OAAOt3G,KAAKs3G,UAAUzF,QAE1B,EACAoF,EAAWlnH,UAAUomH,OAAS,WAC5B,OAAOn2G,KAAK83G,QAAQ,OACtB,EACAb,EAAWlnH,UAAUwnH,SAAW,WAC9B,OAAOv3G,KAAK83G,QAAQ,OAAQ,aAC9B,EACAb,EAAWlnH,UAAUgoH,oBAAsB,WACzC,OAAO7zG,EAAQ5V,KAAK0oH,EAAoBh3G,KAAK63G,gBAAkB,CACjE,EACAZ,EAAWlnH,UAAU+nH,QAAU,WAC7B,IAAK,IAAI17E,EAAOjqC,UAAUC,OAAQ4lH,EAASplH,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC7E27E,EAAO37E,GAAQlqC,UAAUkqC,GAE3B,OAAOn4B,EAAQ5V,KAAK0pH,EAAQh4G,KAAK+3F,aAAe,CAClD,EACAkf,EAAWlnH,UAAUgoG,SAAW,WAC9B,GAAI/3F,KAAKs3G,UACP,IAAK,IAAIttB,KAAS16C,EAAS+kE,UACzB,GAAI/kE,EAAS+kE,UAAUrqB,KAAWhqF,KAAKs3G,UAAUhtB,WAC/C,OAAON,EAAMnrF,cAInB,OAAO,IACT,EACAo4G,EAAWlnH,UAAU0nH,qBAAuB,WAC1C,IAAK,IAAIQ,KAAaj4G,KAAK4S,OAAQ,CACjC,IAAIm9B,EAAU/vC,KAAK4S,OAAOqlG,GAAWtoH,KAAKqQ,MAC1CA,KAAKs3G,UAAU,KAAOW,GAAaloE,CACrC,CACF,EACAknE,EAAWlnH,UAAUynH,uBAAyB,WAC5C,IAAK,IAAIS,KAAaj4G,KAAK4S,OACzB5S,KAAKs3G,UAAU,KAAOW,GAAa,WAAa,CAEpD,EACOhB,CACT,CArGiB,GAsGjBA,EAAWW,YAAc,IACzBX,EAAWlnH,UAAU6iB,OAAS,CAC5Bq4F,QAAS,SAAiBjiF,GACxB,GAAKhpB,KAAK+3G,sBAAV,CAGA,IAAIG,EAAcjoG,KAAK2U,MAAMoE,EAAMvQ,MACjCw4E,EAAainB,EAAYjnB,WACzBga,EAAUiN,EAAYjN,QACtBkN,EAASD,EAAYC,OACrBC,EAAYF,EAAYE,UAE1B,OADSF,EAAYr4G,MAEnB,KAAKw2G,EAAcC,QAEjB,OADAt2G,KAAKo3G,QAAQ/B,gBACNr1G,KAAKm3G,cAAcjuB,SAC5B,KAAKmtB,EAAc79D,WAEjB,OADA27D,EAAOlQ,IAAI,0BAA4BkU,GAChCn4G,KAAK03G,MAAM,CAChBC,eAAgBS,IAEpB,KAAK/B,EAAcE,KACjB,OAAOv2G,KAAKo3G,QAAQjC,aACtB,KAAKkB,EAAcG,aACjB,OAAOx2G,KAAKm3G,cAAc7sD,OAAO2mC,EAAY,aAC/C,KAAKolB,EAAcI,UACjB,OAAOz2G,KAAKm3G,cAAckB,OAAOpnB,GACnC,QACE,OAAOjxF,KAAKm3G,cAAc7sD,OAAO2mC,EAAY,WAAYga,GAvB7D,CAyBF,EACAhlB,KAAM,WAGJ,GAFAkuB,EAAOlQ,IAAI,kCAAoCjkG,KAAK63G,cAAgB,iBACpE73G,KAAKq3G,cAAe,GACfr3G,KAAK+3G,sBAER,OADA5D,EAAOlQ,IAAI,gEACJjkG,KAAK03G,MAAM,CAChBC,gBAAgB,GAGtB,EACAD,MAAO,SAAe1uF,GAEpB,GADAmrF,EAAOlQ,IAAI,4BACPjkG,KAAKq3G,aAKT,OAFAr3G,KAAKq3G,cAAe,EACpBr3G,KAAKo3G,QAAQ7B,mBACNv1G,KAAKm3G,cAAcmB,UAAU,eAAgB,CAClDC,qBAAsBv4G,KAAKo3G,QAAQvC,aAEvC,EACA1oD,MAAO,WACLgoD,EAAOlQ,IAAI,0BACb,GAEF,IAAI3G,EAAS,SAAgBztG,EAAQ6lB,GACnC,GAAkB,MAAdA,EACF,IAAK,IAAIhmB,KAAOgmB,EAAY,CAC1B,IAAItmB,EAAQsmB,EAAWhmB,GACvBG,EAAOH,GAAON,CAChB,CAEF,OAAOS,CACT,EACI2oH,EAAe,WACjB,SAASA,EAAatB,GACpB,IAAIllE,EAAS7/C,UAAUC,OAAS,QAAsBL,IAAjBI,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9EsmH,EAAQtmH,UAAU,GACtBgmG,EAAen4F,KAAMw4G,GACrBx4G,KAAKk3G,SAAWA,EAChBl3G,KAAKixF,WAAahhF,KAAKC,UAAU8hC,GACjCsrD,EAAOt9F,KAAMy4G,EACf,CAgBA,OAfAD,EAAazoH,UAAU2oH,QAAU,SAAiB9vB,GAChD,IAAInwE,EAAOtmB,UAAUC,OAAS,QAAsBL,IAAjBI,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAEhF,OADAsmB,EAAKmwE,OAASA,EACP5oF,KAAK+kF,KAAKtsE,EACnB,EACA+/F,EAAazoH,UAAUg1F,KAAO,SAActsE,GAC1C,OAAOzY,KAAKk3G,SAASnyB,KAAK,CACxB4zB,QAAS,UACT1nB,WAAYjxF,KAAKixF,WACjBx4E,KAAMxI,KAAKC,UAAUuI,IAEzB,EACA+/F,EAAazoH,UAAU6oH,YAAc,WACnC,OAAO54G,KAAKk3G,SAASC,cAAchjF,OAAOn0B,KAC5C,EACOw4G,CACT,CAzBmB,GA0BfK,EAAgB,WAClB,SAASA,EAAc3B,GACrB/e,EAAen4F,KAAM64G,GACrB74G,KAAKk3G,SAAWA,EAChBl3G,KAAKm3G,cAAgB,EACvB,CA8EA,OA7EA0B,EAAc9oH,UAAUN,OAAS,SAAgBqpH,EAAaL,GAC5D,IAAIM,EAAUD,EACV9mE,EAA+E,YAAlD,qBAAZ+mE,EAA0B,YAAcxE,EAAQwE,IAAyBA,EAAU,CACtGA,QAASA,GAEPC,EAAe,IAAIR,EAAax4G,KAAKk3G,SAAUllE,EAAQymE,GAC3D,OAAOz4G,KAAK4K,IAAIouG,EAClB,EACAH,EAAc9oH,UAAU6a,IAAM,SAAaouG,GAKzC,OAJAh5G,KAAKm3G,cAAc/xG,KAAK4zG,GACxBh5G,KAAKk3G,SAAS+B,yBACdj5G,KAAKsqD,OAAO0uD,EAAc,eAC1Bh5G,KAAKk5G,YAAYF,EAAc,aACxBA,CACT,EACAH,EAAc9oH,UAAUokC,OAAS,SAAgB6kF,GAK/C,OAJAh5G,KAAKm5G,OAAOH,GACPh5G,KAAKo5G,QAAQJ,EAAa/nB,YAAY7+F,QACzC4N,KAAKk5G,YAAYF,EAAc,eAE1BA,CACT,EACAH,EAAc9oH,UAAUsoH,OAAS,SAAgBpnB,GAC/C,IAAIiI,EAAQl5F,KACZ,OAAOA,KAAKo5G,QAAQnoB,GAAYn+F,KAAI,SAAUkmH,GAG5C,OAFA9f,EAAMigB,OAAOH,GACb9f,EAAM5uC,OAAO0uD,EAAc,YACpBA,CACT,GACF,EACAH,EAAc9oH,UAAUopH,OAAS,SAAgBH,GAI/C,OAHAh5G,KAAKm3G,cAAgBn3G,KAAKm3G,cAAch0F,QAAO,SAAUjzB,GACvD,OAAOA,IAAM8oH,CACf,IACOA,CACT,EACAH,EAAc9oH,UAAUqpH,QAAU,SAAiBnoB,GACjD,OAAOjxF,KAAKm3G,cAAch0F,QAAO,SAAUjzB,GACzC,OAAOA,EAAE+gG,aAAeA,CAC1B,GACF,EACA4nB,EAAc9oH,UAAUm5F,OAAS,WAC/B,IAAI6S,EAAS/7F,KACb,OAAOA,KAAKm3G,cAAcrkH,KAAI,SAAUkmH,GACtC,OAAOjd,EAAOmd,YAAYF,EAAc,YAC1C,GACF,EACAH,EAAc9oH,UAAUuoH,UAAY,SAAmBe,GAErD,IADA,IAAIC,EAASt5G,KACJo8B,EAAOjqC,UAAUC,OAAQ4Q,EAAOpQ,MAAMwpC,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAC9Fr5B,EAAKq5B,EAAO,GAAKlqC,UAAUkqC,GAE7B,OAAOr8B,KAAKm3G,cAAcrkH,KAAI,SAAUkmH,GACtC,OAAOM,EAAOhvD,OAAOpnD,MAAMo2G,EAAQ,CAACN,EAAcK,GAAc12E,OAAO3/B,GACzE,GACF,EACA61G,EAAc9oH,UAAUu6D,OAAS,SAAgB0uD,EAAcK,GAC7D,IAAK,IAAIjuG,EAAQjZ,UAAUC,OAAQ4Q,EAAOpQ,MAAMwY,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACpGrI,EAAKqI,EAAQ,GAAKlZ,UAAUkZ,GAQ9B,OAL4B,kBAAjB2tG,EACOh5G,KAAKo5G,QAAQJ,GAEb,CAACA,IAEElmH,KAAI,SAAUkmH,GACjC,MAA6C,oBAA/BA,EAAaK,GAA+BL,EAAaK,GAAcn2G,MAAM81G,EAAch2G,QAAQjR,CACnH,GACF,EACA8mH,EAAc9oH,UAAUmpH,YAAc,SAAqBF,EAAcL,GACvE,IAAI1nB,EAAa+nB,EAAa/nB,WAC9B,OAAOjxF,KAAKk3G,SAASnyB,KAAK,CACxB4zB,QAASA,EACT1nB,WAAYA,GAEhB,EACO4nB,CACT,CApFoB,GAqFhBU,EAAW,WACb,SAASA,EAAS70B,GAChByT,EAAen4F,KAAMu5G,GACrBv5G,KAAKw5G,KAAO90B,EACZ1kF,KAAKm3G,cAAgB,IAAI0B,EAAc74G,MACvCA,KAAK00G,WAAa,IAAIuC,EAAWj3G,KACnC,CAuBA,OAtBAu5G,EAASxpH,UAAUg1F,KAAO,SAActsE,GACtC,OAAOzY,KAAK00G,WAAW3vB,KAAKtsE,EAC9B,EACA8gG,EAASxpH,UAAU0pH,QAAU,WAC3B,OAAOz5G,KAAK00G,WAAWzuB,MACzB,EACAszB,EAASxpH,UAAUyoD,WAAa,WAC9B,OAAOx4C,KAAK00G,WAAWgD,MAAM,CAC3BC,gBAAgB,GAEpB,EACA4B,EAASxpH,UAAUkpH,uBAAyB,WAC1C,IAAKj5G,KAAK00G,WAAW6C,WACnB,OAAOv3G,KAAK00G,WAAWzuB,MAE3B,EACAqS,EAAYihB,EAAU,CAAC,CACrB7pH,IAAK,MACLV,IAAK,WACH,OAAO0qH,EAAmB15G,KAAKw5G,KACjC,KAEKD,CACT,CA9Be,GA+Bf,SAASG,EAAmBh1B,GAI1B,GAHmB,oBAARA,IACTA,EAAMA,KAEJA,IAAQ,UAAU7yD,KAAK6yD,GAAM,CAC/B,IAAItzF,EAAIs2B,SAASw7D,cAAc,KAI/B,OAHA9xF,EAAE+xF,KAAOuB,EACTtzF,EAAE+xF,KAAO/xF,EAAE+xF,KACX/xF,EAAEygH,SAAWzgH,EAAEygH,SAASpzG,QAAQ,OAAQ,MACjCrN,EAAE+xF,IACX,CACE,OAAOuB,CAEX,CACA,SAASi1B,IACP,IAAIj1B,EAAMvyF,UAAUC,OAAS,QAAsBL,IAAjBI,UAAU,GAAmBA,UAAU,GAAKynH,EAAU,QAAUxD,EAASU,mBAC3G,OAAO,IAAIyC,EAAS70B,EACtB,CACA,SAASk1B,EAAUlrH,GACjB,IAAI05B,EAAUV,SAAS8d,KAAKmmD,cAAc,2BAA6Bj9F,EAAO,MAC9E,GAAI05B,EACF,OAAOA,EAAQ4wB,aAAa,UAEhC,CACA/qD,EAAQgpH,WAAaA,EACrBhpH,EAAQwmH,kBAAoBA,EAC5BxmH,EAAQsrH,SAAWA,EACnBtrH,EAAQmoH,SAAWA,EACnBnoH,EAAQuqH,aAAeA,EACvBvqH,EAAQ4qH,cAAgBA,EACxB5qH,EAAQqhD,SAAWA,EACnBrhD,EAAQyrH,mBAAqBA,EAC7BzrH,EAAQkmH,OAASA,EACjBlmH,EAAQ0rH,eAAiBA,EACzB1rH,EAAQ2rH,UAAYA,EACpB/qH,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,GAEX,CAzgBiEmmG,CAAQtnG,E,+BCDzE,6FAcAsgH,IAAM1lG,QACNy4E,IAAWz4E,QACXq0F,UAEA2c,EAAOhU,MAAQA,IACfA,IAAMv+C,SAASgtB,UAEfg6B,EAAQ,IACRA,EAAQ,GACRA,EAAQ,IAAczlG,QACtBylG,EAAQ,IAAwBzlG,QAChCylG,EAAQ,G,kCCzBR,IAAIz8G,EAGJA,EAAI,WACF,OAAOmO,IACT,CAFI,GAGJ,IAEEnO,EAAIA,GAAK,IAAIurG,SAAS,cAAb,EACX,CAAE,MAAO9rG,GAEe,kBAAXyZ,SAAqBlZ,EAAIkZ,OACtC,CAMA7c,EAAOD,QAAU4D,C,kBClBjB,IAAIiB,EAAM,CACT,wBAAyB,IAI1B,SAASgnH,EAAeC,GACvB,IAAIh4G,EAAKi4G,EAAsBD,GAC/B,OAAOhsH,EAAoBgU,EAC5B,CACA,SAASi4G,EAAsBD,GAC9B,IAAIhsH,EAAoBa,EAAEkE,EAAKinH,GAAM,CACpC,IAAIzoH,EAAI,IAAIuxB,MAAM,uBAAyBk3F,EAAM,KAEjD,MADAzoH,EAAE0yG,KAAO,mBACH1yG,CACP,CACA,OAAOwB,EAAIinH,EACZ,CACAD,EAAe17G,KAAO,WACrB,OAAOvP,OAAOuP,KAAKtL,EACpB,EACAgnH,EAAe75F,QAAU+5F,EACzB9rH,EAAOD,QAAU6rH,EACjBA,EAAe/3G,GAAK,E,gECtBL,SAASk4G,EAAaC,EAAUl3G,GAC7C,GAAIA,EAAK5Q,OAAS8nH,EAChB,MAAM,IAAI1pF,UAAU0pF,EAAW,aAAeA,EAAW,EAAI,IAAM,IAAM,uBAAyBl3G,EAAK5Q,OAAS,WAEpH,CCJA,SAASmiH,EAAQn0G,GAYf,OAREm0G,EADoB,oBAAXrlH,QAAoD,kBAApBA,OAAO6hC,SACtC,SAAiB3wB,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EAEKm0G,EAAQn0G,EACjB,CAiCe,SAASw9F,EAAOuc,GAC7BF,EAAa,EAAG9nH,WAChB,IAAIioH,EAASvrH,OAAOkB,UAAUkS,SAAS3T,KAAK6rH,GAE5C,OAAIA,aAAoBrnF,MAA8B,WAAtByhF,EAAQ4F,IAAqC,kBAAXC,EAEzD,IAAItnF,KAAKqnF,EAAS3nB,WACI,kBAAb2nB,GAAoC,oBAAXC,EAClC,IAAItnF,KAAKqnF,IAES,kBAAbA,GAAoC,oBAAXC,GAAoD,qBAAZt6F,UAE3EA,QAAQC,KAAK,sNAEbD,QAAQC,MAAK,IAAI8C,OAAQwU,QAEpB,IAAIvE,KAAKkL,KAEpB,CChEA,IAAIq8E,EAAuB,CACzBC,iBAAkB,CAChBC,IAAK,qBACL/mE,MAAO,+BAETgnE,SAAU,CACRD,IAAK,WACL/mE,MAAO,qBAETinE,YAAa,gBACbC,iBAAkB,CAChBH,IAAK,qBACL/mE,MAAO,+BAETmnE,SAAU,CACRJ,IAAK,WACL/mE,MAAO,qBAETonE,YAAa,CACXL,IAAK,eACL/mE,MAAO,yBAETqnE,OAAQ,CACNN,IAAK,SACL/mE,MAAO,mBAETsnE,MAAO,CACLP,IAAK,QACL/mE,MAAO,kBAETunE,YAAa,CACXR,IAAK,eACL/mE,MAAO,yBAETwnE,OAAQ,CACNT,IAAK,SACL/mE,MAAO,mBAETynE,aAAc,CACZV,IAAK,gBACL/mE,MAAO,0BAET0nE,QAAS,CACPX,IAAK,UACL/mE,MAAO,oBAET2nE,YAAa,CACXZ,IAAK,eACL/mE,MAAO,yBAET4nE,OAAQ,CACNb,IAAK,SACL/mE,MAAO,mBAET6nE,WAAY,CACVd,IAAK,cACL/mE,MAAO,wBAET8nE,aAAc,CACZf,IAAK,gBACL/mE,MAAO,2BAsBI,EAnBM,SAAwBq8D,EAAO/jG,EAAO1H,GACzD,IAAIukB,EACA4yF,EAAalB,EAAqBxK,GAQtC,OANElnF,EADwB,kBAAf4yF,EACAA,EACU,IAAVzvG,EACAyvG,EAAWhB,IAEXgB,EAAW/nE,MAAM/0C,QAAQ,YAAaqN,EAAM7J,YAEvC,OAAZmC,QAAgC,IAAZA,GAAsBA,EAAQo3G,UAChDp3G,EAAQq3G,YAAcr3G,EAAQq3G,WAAa,EACtC,MAAQ9yF,EAERA,EAAS,OAGbA,CACT,ECjFe,SAAS+yF,EAAkB14G,GACxC,OAAO,WACL,IAAIoB,EAAUjS,UAAUC,OAAS,QAAsBL,IAAjBI,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAE/EolB,EAAQnT,EAAQmT,MAAQkZ,OAAOrsB,EAAQmT,OAASvU,EAAK24G,aAEzD,OADa34G,EAAKksC,QAAQ33B,IAAUvU,EAAKksC,QAAQlsC,EAAK24G,aAExD,CACF,CCPA,IAgCe,EAdE,CACfppF,KAAMmpF,EAAkB,CACtBxsE,QApBc,CAChB0sE,KAAM,mBACNC,KAAM,aACNC,OAAQ,WACRC,MAAO,cAiBLJ,aAAc,SAEhBv+B,KAAMs+B,EAAkB,CACtBxsE,QAlBc,CAChB0sE,KAAM,iBACNC,KAAM,cACNC,OAAQ,YACRC,MAAO,UAeLJ,aAAc,SAEhBK,SAAUN,EAAkB,CAC1BxsE,QAhBkB,CACpB0sE,KAAM,yBACNC,KAAM,yBACNC,OAAQ,qBACRC,MAAO,sBAaLJ,aAAc,UC9BdM,EAAuB,CACzBC,SAAU,qBACVC,UAAW,mBACXC,MAAO,eACPC,SAAU,kBACVC,SAAU,cACV9oE,MAAO,KAKM,EAHM,SAAwBq8D,EAAOtgE,EAAOgtE,EAAWhtD,GACpE,OAAO0sD,EAAqBpM,EAC9B,ECVe,SAAS2M,EAAgBx5G,GACtC,OAAO,SAAUy5G,EAAYr4G,GAC3B,IACIs4G,EACJ,GAAgB,gBAFU,OAAZt4G,QAAgC,IAAZA,GAAsBA,EAAQoO,QAAUie,OAAOrsB,EAAQoO,SAAW,eAEpExP,EAAK25G,iBAAkB,CACrD,IAAIhB,EAAe34G,EAAK45G,wBAA0B55G,EAAK24G,aACnDpkG,EAAoB,OAAZnT,QAAgC,IAAZA,GAAsBA,EAAQmT,MAAQkZ,OAAOrsB,EAAQmT,OAASokG,EAC9Fe,EAAc15G,EAAK25G,iBAAiBplG,IAAUvU,EAAK25G,iBAAiBhB,EACtE,KAAO,CACL,IAAIkB,EAAgB75G,EAAK24G,aACrBmB,EAAqB,OAAZ14G,QAAgC,IAAZA,GAAsBA,EAAQmT,MAAQkZ,OAAOrsB,EAAQmT,OAASvU,EAAK24G,aACpGe,EAAc15G,EAAKyN,OAAOqsG,IAAW95G,EAAKyN,OAAOosG,EACnD,CAGA,OAAOH,EAFK15G,EAAK+5G,iBAAmB/5G,EAAK+5G,iBAAiBN,GAAcA,EAG1E,CACF,CChBA,IA0Ie,EA5BA,CACbO,cAtBkB,SAAuBC,EAAa1tD,GACtD,IAAI96B,EAASpyB,OAAO46G,GAOhBC,EAASzoF,EAAS,IACtB,GAAIyoF,EAAS,IAAMA,EAAS,GAC1B,OAAQA,EAAS,IACf,KAAK,EACH,OAAOzoF,EAAS,KAClB,KAAK,EACH,OAAOA,EAAS,KAClB,KAAK,EACH,OAAOA,EAAS,KAGtB,OAAOA,EAAS,IAClB,EAGE0oF,IAAKX,EAAgB,CACnB/rG,OAjHY,CACd2sG,OAAQ,CAAC,IAAK,KACdC,YAAa,CAAC,KAAM,MACpBC,KAAM,CAAC,gBAAiB,gBA+GtB3B,aAAc,SAEhBv/B,QAASogC,EAAgB,CACvB/rG,OAhHgB,CAClB2sG,OAAQ,CAAC,IAAK,IAAK,IAAK,KACxBC,YAAa,CAAC,KAAM,KAAM,KAAM,MAChCC,KAAM,CAAC,cAAe,cAAe,cAAe,gBA8GlD3B,aAAc,OACdoB,iBAAkB,SAA0B3gC,GAC1C,OAAOA,EAAU,CACnB,IAEFD,MAAOqgC,EAAgB,CACrB/rG,OA9Gc,CAChB2sG,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAChEC,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3FC,KAAM,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,aA4GnH3B,aAAc,SAEhB1/B,IAAKugC,EAAgB,CACnB/rG,OA7GY,CACd2sG,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACvCrB,MAAO,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAC5CsB,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACxDC,KAAM,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,aA0GvE3B,aAAc,SAEhB4B,UAAWf,EAAgB,CACzB/rG,OA3GkB,CACpB2sG,OAAQ,CACNI,GAAI,IACJC,GAAI,IACJC,SAAU,KACVC,KAAM,IACNC,QAAS,UACTC,UAAW,YACXC,QAAS,UACTC,MAAO,SAETV,YAAa,CACXG,GAAI,KACJC,GAAI,KACJC,SAAU,WACVC,KAAM,OACNC,QAAS,UACTC,UAAW,YACXC,QAAS,UACTC,MAAO,SAETT,KAAM,CACJE,GAAI,OACJC,GAAI,OACJC,SAAU,WACVC,KAAM,OACNC,QAAS,UACTC,UAAW,YACXC,QAAS,UACTC,MAAO,UA+EPpC,aAAc,OACdgB,iBA7E4B,CAC9BS,OAAQ,CACNI,GAAI,IACJC,GAAI,IACJC,SAAU,KACVC,KAAM,IACNC,QAAS,iBACTC,UAAW,mBACXC,QAAS,iBACTC,MAAO,YAETV,YAAa,CACXG,GAAI,KACJC,GAAI,KACJC,SAAU,WACVC,KAAM,OACNC,QAAS,iBACTC,UAAW,mBACXC,QAAS,iBACTC,MAAO,YAETT,KAAM,CACJE,GAAI,OACJC,GAAI,OACJC,SAAU,WACVC,KAAM,OACNC,QAAS,iBACTC,UAAW,mBACXC,QAAS,iBACTC,MAAO,aAiDPnB,uBAAwB,UCxIb,SAASoB,EAAah7G,GACnC,OAAO,SAAU4V,GACf,IAAIxU,EAAUjS,UAAUC,OAAS,QAAsBL,IAAjBI,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/EolB,EAAQnT,EAAQmT,MAChB0mG,EAAe1mG,GAASvU,EAAKk7G,cAAc3mG,IAAUvU,EAAKk7G,cAAcl7G,EAAKm7G,mBAC7EC,EAAcxlG,EAAOsG,MAAM++F,GAC/B,IAAKG,EACH,OAAO,KAET,IAOIhvH,EAPAivH,EAAgBD,EAAY,GAC5BE,EAAgB/mG,GAASvU,EAAKs7G,cAAc/mG,IAAUvU,EAAKs7G,cAAct7G,EAAKu7G,mBAC9E7uH,EAAMkD,MAAMC,QAAQyrH,GAuB5B,SAAmB/2G,EAAOi3G,GACxB,IAAK,IAAI9uH,EAAM,EAAGA,EAAM6X,EAAMnV,OAAQ1C,IACpC,GAAI8uH,EAAUj3G,EAAM7X,IAClB,OAAOA,EAGX,MACF,CA9B6Co2D,CAAUw4D,GAAe,SAAUG,GAC1E,OAAOA,EAAQ5sF,KAAKwsF,EACtB,IAaJ,SAAiBxuH,EAAQ2uH,GACvB,IAAK,IAAI9uH,KAAOG,EACd,GAAIA,EAAOG,eAAeN,IAAQ8uH,EAAU3uH,EAAOH,IACjD,OAAOA,EAGX,MACF,CApBSgvH,CAAQJ,GAAe,SAAUG,GACpC,OAAOA,EAAQ5sF,KAAKwsF,EACtB,IAKA,OAHAjvH,EAAQ4T,EAAK27G,cAAgB37G,EAAK27G,cAAcjvH,GAAOA,EAGhD,CACLN,MAHFA,EAAQgV,EAAQu6G,cAAgBv6G,EAAQu6G,cAAcvvH,GAASA,EAI7DwvH,KAHShmG,EAAO1W,MAAMm8G,EAAcjsH,QAKxC,CACF,CCvBA,ICF4C4Q,EDuDxC,EAAQ,CACVg6G,eCxD0Ch6G,EDwDP,CACjCi7G,aAvD4B,wBAwD5BY,aAvD4B,OAwD5BF,cAAe,SAAuBvvH,GACpC,OAAOsP,SAAStP,EAAO,GACzB,GC5DK,SAAUwpB,GACf,IAAIxU,EAAUjS,UAAUC,OAAS,QAAsBL,IAAjBI,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/EisH,EAAcxlG,EAAOsG,MAAMlc,EAAKi7G,cACpC,IAAKG,EAAa,OAAO,KACzB,IAAIC,EAAgBD,EAAY,GAC5BU,EAAclmG,EAAOsG,MAAMlc,EAAK67G,cACpC,IAAKC,EAAa,OAAO,KACzB,IAAI1vH,EAAQ4T,EAAK27G,cAAgB37G,EAAK27G,cAAcG,EAAY,IAAMA,EAAY,GAGlF,MAAO,CACL1vH,MAHFA,EAAQgV,EAAQu6G,cAAgBv6G,EAAQu6G,cAAcvvH,GAASA,EAI7DwvH,KAHShmG,EAAO1W,MAAMm8G,EAAcjsH,QAKxC,GDgDA+qH,IAAKa,EAAa,CAChBE,cA5DmB,CACrBd,OAAQ,UACRC,YAAa,6DACbC,KAAM,8DA0DJa,kBAAmB,OACnBG,cAzDmB,CACrBS,IAAK,CAAC,MAAO,YAyDXR,kBAAmB,QAErBniC,QAAS4hC,EAAa,CACpBE,cA1DuB,CACzBd,OAAQ,WACRC,YAAa,YACbC,KAAM,kCAwDJa,kBAAmB,OACnBG,cAvDuB,CACzBS,IAAK,CAAC,KAAM,KAAM,KAAM,OAuDtBR,kBAAmB,MACnBI,cAAe,SAAuB96G,GACpC,OAAOA,EAAQ,CACjB,IAEFs4E,MAAO6hC,EAAa,CAClBE,cA3DqB,CACvBd,OAAQ,eACRC,YAAa,sDACbC,KAAM,6FAyDJa,kBAAmB,OACnBG,cAxDqB,CACvBlB,OAAQ,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACtF2B,IAAK,CAAC,OAAQ,MAAO,QAAS,OAAQ,QAAS,QAAS,QAAS,OAAQ,MAAO,MAAO,MAAO,QAuD5FR,kBAAmB,QAErBtiC,IAAK+hC,EAAa,CAChBE,cAxDmB,CACrBd,OAAQ,YACRrB,MAAO,2BACPsB,YAAa,kCACbC,KAAM,gEAqDJa,kBAAmB,OACnBG,cApDmB,CACrBlB,OAAQ,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACnD2B,IAAK,CAAC,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,SAmDjDR,kBAAmB,QAErBhB,UAAWS,EAAa,CACtBE,cApDyB,CAC3Bd,OAAQ,6DACR2B,IAAK,kFAmDHZ,kBAAmB,MACnBG,cAlDyB,CAC3BS,IAAK,CACHvB,GAAI,MACJC,GAAI,MACJC,SAAU,OACVC,KAAM,OACNC,QAAS,WACTC,UAAW,aACXC,QAAS,WACTC,MAAO,WA0CPQ,kBAAmB,SE7FRS,ECcF,CACXhb,KAAM,QACNib,eAAgB,EAChBC,WAAY,EACZC,eAAgB,EAChBC,SAAU,EACVlgG,MH4Ea,EG3Eb9a,QAAS,CACPi7G,aAAc,EAGdC,sBAAuB,IC1BZ,SAASC,EAAUtC,GAChC,GAAoB,OAAhBA,IAAwC,IAAhBA,IAAwC,IAAhBA,EAClD,OAAOj/E,IAET,IAAIvJ,EAASpyB,OAAO46G,GACpB,OAAI51G,MAAMotB,GACDA,EAEFA,EAAS,EAAInkC,KAAK2qD,KAAKxmB,GAAUnkC,KAAK4W,MAAMutB,EACrD,CCae,SAAS+qF,EAAgBC,EAAWC,GACjDzF,EAAa,EAAG9nH,WAChB,IAAIwtH,EAAY/hB,EAAO6hB,GAAWjtB,UAC9Br0B,EAASohD,EAAUG,GACvB,OAAO,IAAI5sF,KAAK6sF,EAAYxhD,EAC9B,CCLe,SAASyhD,EAAgBH,EAAWC,GAGjD,OAFAzF,EAAa,EAAG9nH,WAETqtH,EAAgBC,GADVF,EAAUG,GAEzB,CC1Be,SAAS,EAAO37G,EAAQlU,GACrC,GAAc,MAAVkU,EACF,MAAM,IAAIysB,UAAU,iEAEtB,IAAK,IAAI1gC,KAAYD,EACfhB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,KAE/CiU,EAAOjU,GAAYD,EAAOC,IAG9B,OAAOiU,CACT,CCXA,IAAI87G,EAAoB,SAA2BpB,EAASS,GAC1D,OAAQT,GACN,IAAK,IACH,OAAOS,EAAW3sF,KAAK,CACrBhb,MAAO,UAEX,IAAK,KACH,OAAO2nG,EAAW3sF,KAAK,CACrBhb,MAAO,WAEX,IAAK,MACH,OAAO2nG,EAAW3sF,KAAK,CACrBhb,MAAO,SAGX,QACE,OAAO2nG,EAAW3sF,KAAK,CACrBhb,MAAO,SAGf,EACIuoG,EAAoB,SAA2BrB,EAASS,GAC1D,OAAQT,GACN,IAAK,IACH,OAAOS,EAAW9hC,KAAK,CACrB7lE,MAAO,UAEX,IAAK,KACH,OAAO2nG,EAAW9hC,KAAK,CACrB7lE,MAAO,WAEX,IAAK,MACH,OAAO2nG,EAAW9hC,KAAK,CACrB7lE,MAAO,SAGX,QACE,OAAO2nG,EAAW9hC,KAAK,CACrB7lE,MAAO,SAGf,EAkCIwoG,EAAiB,CACnB9vH,EAAG6vH,EACH3rH,EAnC0B,SAA+BsqH,EAASS,GAClE,IAMIc,EANA5B,EAAcK,EAAQv/F,MAAM,cAAgB,GAC5C+gG,EAAc7B,EAAY,GAC1B8B,EAAc9B,EAAY,GAC9B,IAAK8B,EACH,OAAOL,EAAkBpB,EAASS,GAGpC,OAAQe,GACN,IAAK,IACHD,EAAiBd,EAAWlD,SAAS,CACnCzkG,MAAO,UAET,MACF,IAAK,KACHyoG,EAAiBd,EAAWlD,SAAS,CACnCzkG,MAAO,WAET,MACF,IAAK,MACHyoG,EAAiBd,EAAWlD,SAAS,CACnCzkG,MAAO,SAET,MAEF,QACEyoG,EAAiBd,EAAWlD,SAAS,CACnCzkG,MAAO,SAIb,OAAOyoG,EAAevhH,QAAQ,WAAYohH,EAAkBI,EAAaf,IAAazgH,QAAQ,WAAYqhH,EAAkBI,EAAahB,GAC3I,GAKe,ICpEA,SAASiB,EAAgC5tF,GACtD,IAAI6tF,EAAU,IAAIttF,KAAKA,KAAKutF,IAAI9tF,EAAK+tF,cAAe/tF,EAAKitE,WAAYjtE,EAAK8sE,UAAW9sE,EAAK6sE,WAAY7sE,EAAK4sE,aAAc5sE,EAAK2sE,aAAc3sE,EAAK0sE,oBAEjJ,OADAmhB,EAAQG,eAAehuF,EAAK+tF,eACrB/tF,EAAKigE,UAAY4tB,EAAQ5tB,SAClC,CCfA,IAAIguB,EAA2B,CAAC,IAAK,MACjCC,EAA0B,CAAC,KAAM,QAC9B,SAASC,EAA0B7Q,GACxC,OAAoD,IAA7C2Q,EAAyBt8G,QAAQ2rG,EAC1C,CACO,SAAS8Q,EAAyB9Q,GACvC,OAAmD,IAA5C4Q,EAAwBv8G,QAAQ2rG,EACzC,CACO,SAAS+Q,EAAoB/Q,EAAOt/F,EAAQhR,GACjD,GAAc,SAAVswG,EACF,MAAM,IAAIgR,WAAW,qCAAqCl+E,OAAOpyB,EAAQ,0CAA0CoyB,OAAOpjC,EAAO,mFAC5H,GAAc,OAAVswG,EACT,MAAM,IAAIgR,WAAW,iCAAiCl+E,OAAOpyB,EAAQ,0CAA0CoyB,OAAOpjC,EAAO,mFACxH,GAAc,MAAVswG,EACT,MAAM,IAAIgR,WAAW,+BAA+Bl+E,OAAOpyB,EAAQ,sDAAsDoyB,OAAOpjC,EAAO,mFAClI,GAAc,OAAVswG,EACT,MAAM,IAAIgR,WAAW,iCAAiCl+E,OAAOpyB,EAAQ,sDAAsDoyB,OAAOpjC,EAAO,kFAE7I,CClBA,SAAS,EAAQa,GAYf,OARE,EADoB,oBAAXlR,QAAoD,kBAApBA,OAAO6hC,SACtC,SAAiB3wB,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EAEK,EAAQA,EACjB,CACA,SAAS0gH,EAAUC,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIxwF,UAAU,sDAEtBuwF,EAAShxH,UAAYlB,OAAOY,OAAOuxH,GAAcA,EAAWjxH,UAAW,CACrE6P,YAAa,CACXxQ,MAAO2xH,EACPlsG,UAAU,EACV0O,cAAc,KAGdy9F,GAAYC,EAAgBF,EAAUC,EAC5C,CACA,SAASC,EAAgBryH,EAAGqB,GAK1B,OAJAgxH,EAAkBpyH,OAAOqyH,gBAAkB,SAAyBtyH,EAAGqB,GAErE,OADArB,EAAE2/C,UAAYt+C,EACPrB,CACT,EACOqyH,EAAgBryH,EAAGqB,EAC5B,CACA,SAASkxH,EAAaC,GACpB,IAAIC,EAyBN,WACE,GAAuB,qBAAZz/F,UAA4BA,QAAQ0/F,UAAW,OAAO,EACjE,GAAI1/F,QAAQ0/F,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVtgG,MAAsB,OAAO,EACxC,IAEE,OADAugG,QAAQzxH,UAAUm0F,QAAQ51F,KAAKszB,QAAQ0/F,UAAUE,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOlwH,GACP,OAAO,CACT,CACF,CAnCkCmwH,GAChC,OAAO,WACL,IACE94F,EADE+4F,EAAQC,EAAgBP,GAE5B,GAAIC,EAA2B,CAC7B,IAAIO,EAAYD,EAAgB3hH,MAAMJ,YACtC+oB,EAAS/G,QAAQ0/F,UAAUI,EAAOvvH,UAAWyvH,EAC/C,MACEj5F,EAAS+4F,EAAMx+G,MAAMlD,KAAM7N,WAE7B,OAGJ,SAAoCiiH,EAAM9lH,GACxC,GAAIA,IAA2B,WAAlB,EAAQA,IAAsC,oBAATA,GAChD,OAAOA,EAET,OAAOuzH,EAAuBzN,EAChC,CARW0N,CAA2B9hH,KAAM2oB,EAC1C,CACF,CAOA,SAASk5F,EAAuBzN,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI2N,eAAe,6DAE3B,OAAO3N,CACT,CAYA,SAASuN,EAAgB/yH,GAIvB,OAHA+yH,EAAkB9yH,OAAOqyH,eAAiBryH,OAAOgzB,eAAiB,SAAyBjzB,GACzF,OAAOA,EAAE2/C,WAAa1/C,OAAOgzB,eAAejzB,EAC9C,EACO+yH,EAAgB/yH,EACzB,CACA,SAASozH,EAAgB5pB,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI7nE,UAAU,oCAExB,CACA,SAASyxF,EAAkBl+G,EAAQsb,GACjC,IAAK,IAAIlxB,EAAI,EAAGA,EAAIkxB,EAAMjtB,OAAQjE,IAAK,CACrC,IAAIs8D,EAAaprC,EAAMlxB,GACvBs8D,EAAW17D,WAAa07D,EAAW17D,aAAc,EACjD07D,EAAWlnC,cAAe,EACtB,UAAWknC,IAAYA,EAAW51C,UAAW,GACjDhmB,OAAOC,eAAeiV,EAAQ0mD,EAAW/6D,IAAK+6D,EAChD,CACF,CACA,SAASy3D,EAAa7pB,EAAaE,EAAYC,GAG7C,OAFID,GAAY0pB,EAAkB5pB,EAAYtoG,UAAWwoG,GACrDC,GAAaypB,EAAkB5pB,EAAaG,GACzCH,CACT,CACA,SAASpoE,EAAgB7vB,EAAK1Q,EAAKN,GAWjC,OAVIM,KAAO0Q,EACTvR,OAAOC,eAAesR,EAAK1Q,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZw0B,cAAc,EACd1O,UAAU,IAGZzU,EAAI1Q,GAAON,EAENgR,CACT,CACA,IACW+hH,EAAsB,WAC/B,SAASA,IACPH,EAAgBhiH,KAAMmiH,GACtBlyF,EAAgBjwB,KAAM,cAAe,EACvC,CAOA,OANAkiH,EAAaC,EAAQ,CAAC,CACpBzyH,IAAK,WACLN,MAAO,SAAkBgzH,EAAU7yD,GACjC,OAAO,CACT,KAEK4yD,CACT,CAZiC,GAatBE,EAA2B,SAAUC,GAC9CxB,EAAUuB,EAAaC,GACvB,IAAIC,EAASpB,EAAakB,GAC1B,SAASA,EAAYjzH,EAAOozH,EAAej7B,EAAUk7B,EAAUC,GAC7D,IAAIxpB,EAUJ,OATA8oB,EAAgBhiH,KAAMqiH,IACtBnpB,EAAQqpB,EAAOj0H,KAAK0R,OACd5Q,MAAQA,EACd8pG,EAAMspB,cAAgBA,EACtBtpB,EAAM3R,SAAWA,EACjB2R,EAAMupB,SAAWA,EACbC,IACFxpB,EAAMwpB,YAAcA,GAEfxpB,CACT,CAYA,OAXAgpB,EAAaG,EAAa,CAAC,CACzB3yH,IAAK,WACLN,MAAO,SAAkBgxH,EAASh8G,GAChC,OAAOpE,KAAKwiH,cAAcpC,EAASpgH,KAAK5Q,MAAOgV,EACjD,GACC,CACD1U,IAAK,MACLN,MAAO,SAAagxH,EAASuC,EAAOv+G,GAClC,OAAOpE,KAAKunF,SAAS64B,EAASuC,EAAO3iH,KAAK5Q,MAAOgV,EACnD,KAEKi+G,CACT,CA5BsC,CA4BpCF,GACSS,EAA0C,SAAUC,GAC7D/B,EAAU8B,EAA4BC,GACtC,IAAIC,EAAU3B,EAAayB,GAC3B,SAASA,IACP,IAAI7mB,EACJimB,EAAgBhiH,KAAM4iH,GACtB,IAAK,IAAIxmF,EAAOjqC,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Er5B,EAAKq5B,GAAQlqC,UAAUkqC,GAKzB,OAFApM,EAAgB4xF,EADhB9lB,EAAS+mB,EAAQx0H,KAAK4U,MAAM4/G,EAAS,CAAC9iH,MAAM2iC,OAAO3/B,KACH,WArDvB,IAsDzBitB,EAAgB4xF,EAAuB9lB,GAAS,eAAgB,GACzDA,CACT,CAaA,OAZAmmB,EAAaU,EAA4B,CAAC,CACxClzH,IAAK,MACLN,MAAO,SAAamjC,EAAMowF,GACxB,GAAIA,EAAMI,eACR,OAAOxwF,EAET,IAAIywF,EAAgB,IAAIlwF,KAAK,GAG7B,OAFAkwF,EAAcC,YAAY1wF,EAAK2wF,iBAAkB3wF,EAAK4wF,cAAe5wF,EAAK6wF,cAC1EJ,EAAcK,SAAS9wF,EAAK+wF,cAAe/wF,EAAKgxF,gBAAiBhxF,EAAKixF,gBAAiBjxF,EAAKkxF,sBACrFT,CACT,KAEKJ,CACT,CA3BqD,CA2BnDT,GC9KF,SAAS,EAAkBp+G,EAAQsb,GACjC,IAAK,IAAIlxB,EAAI,EAAGA,EAAIkxB,EAAMjtB,OAAQjE,IAAK,CACrC,IAAIs8D,EAAaprC,EAAMlxB,GACvBs8D,EAAW17D,WAAa07D,EAAW17D,aAAc,EACjD07D,EAAWlnC,cAAe,EACtB,UAAWknC,IAAYA,EAAW51C,UAAW,GACjDhmB,OAAOC,eAAeiV,EAAQ0mD,EAAW/6D,IAAK+6D,EAChD,CACF,CAOO,IAAI,EAAsB,WAC/B,SAASi5D,KArBX,SAAyBtrB,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI7nE,UAAU,oCAExB,CAkBI,CAAgBxwB,KAAM0jH,EACxB,CATF,IAAsBrrB,EAAaE,EAAYC,EA4B7C,OA5BoBH,EAUPqrB,GAVoBnrB,EAUZ,CAAC,CACpB7oG,IAAK,MACLN,MAAO,SAAau0H,EAAY9T,EAAO3wF,EAAO9a,GAC5C,IAAIukB,EAAS3oB,KAAK4kB,MAAM++F,EAAY9T,EAAO3wF,EAAO9a,GAClD,OAAKukB,EAGE,CACLi7F,OAAQ,IAAIvB,EAAY15F,EAAOv5B,MAAO4Q,KAAK6jH,SAAU7jH,KAAK0K,IAAK1K,KAAKyiH,SAAUziH,KAAK0iH,aACnF9D,KAAMj2F,EAAOi2F,MAJN,IAMX,GACC,CACDlvH,IAAK,WACLN,MAAO,SAAkBgzH,EAAU0B,EAAQv0D,GACzC,OAAO,CACT,MAzBc,EAAkB8oC,EAAYtoG,UAAWwoG,GACrDC,GAAa,EAAkBH,EAAaG,GA0BzCkrB,CACT,CAvBiC,GCpBjC,SAAS,EAAQtjH,GAYf,OARE,EADoB,oBAAXlR,QAAoD,kBAApBA,OAAO6hC,SACtC,SAAiB3wB,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EAEK,EAAQA,EACjB,CAMA,SAAS,EAAkB2D,EAAQsb,GACjC,IAAK,IAAIlxB,EAAI,EAAGA,EAAIkxB,EAAMjtB,OAAQjE,IAAK,CACrC,IAAIs8D,EAAaprC,EAAMlxB,GACvBs8D,EAAW17D,WAAa07D,EAAW17D,aAAc,EACjD07D,EAAWlnC,cAAe,EACtB,UAAWknC,IAAYA,EAAW51C,UAAW,GACjDhmB,OAAOC,eAAeiV,EAAQ0mD,EAAW/6D,IAAK+6D,EAChD,CACF,CAmBA,SAAS,EAAgB77D,EAAGqB,GAK1B,OAJA,EAAkBpB,OAAOqyH,gBAAkB,SAAyBtyH,EAAGqB,GAErE,OADArB,EAAE2/C,UAAYt+C,EACPrB,CACT,EACO,EAAgBA,EAAGqB,EAC5B,CACA,SAAS,EAAamxH,GACpB,IAAIC,EAyBN,WACE,GAAuB,qBAAZz/F,UAA4BA,QAAQ0/F,UAAW,OAAO,EACjE,GAAI1/F,QAAQ0/F,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVtgG,MAAsB,OAAO,EACxC,IAEE,OADAugG,QAAQzxH,UAAUm0F,QAAQ51F,KAAKszB,QAAQ0/F,UAAUE,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOlwH,GACP,OAAO,CACT,CACF,CAnCkC,GAChC,OAAO,WACL,IACEq3B,EADE+4F,EAAQ,GAAgBN,GAE5B,GAAIC,EAA2B,CAC7B,IAAIO,EAAY,GAAgB5hH,MAAMJ,YACtC+oB,EAAS/G,QAAQ0/F,UAAUI,EAAOvvH,UAAWyvH,EAC/C,MACEj5F,EAAS+4F,EAAMx+G,MAAMlD,KAAM7N,WAE7B,OAGJ,SAAoCiiH,EAAM9lH,GACxC,GAAIA,IAA2B,WAAlB,EAAQA,IAAsC,oBAATA,GAChD,OAAOA,EAET,OAAO,GAAuB8lH,EAChC,CARW,CAA2Bp0G,KAAM2oB,EAC1C,CACF,CAOA,SAAS,GAAuByrF,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI2N,eAAe,6DAE3B,OAAO3N,CACT,CAYA,SAAS,GAAgBxlH,GAIvB,OAHA,GAAkBC,OAAOqyH,eAAiBryH,OAAOgzB,eAAiB,SAAyBjzB,GACzF,OAAOA,EAAE2/C,WAAa1/C,OAAOgzB,eAAejzB,EAC9C,EACO,GAAgBA,EACzB,CACA,SAAS,GAAgBwR,EAAK1Q,EAAKN,GAWjC,OAVIM,KAAO0Q,EACTvR,OAAOC,eAAesR,EAAK1Q,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZw0B,cAAc,EACd1O,UAAU,IAGZzU,EAAI1Q,GAAON,EAENgR,CACT,CAEO,IAAI2jH,GAAyB,SAAUC,IA7E9C,SAAmBjD,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIxwF,UAAU,sDAEtBuwF,EAAShxH,UAAYlB,OAAOY,OAAOuxH,GAAcA,EAAWjxH,UAAW,CACrE6P,YAAa,CACXxQ,MAAO2xH,EACPlsG,UAAU,EACV0O,cAAc,KAGdy9F,GAAY,EAAgBD,EAAUC,EAC5C,CAkEE,CAAU+C,EAAWC,GACrB,IApFoB3rB,EAAaE,EAAYC,EAoFzC+pB,EAAS,EAAawB,GAC1B,SAASA,IACP,IAAI7qB,GApGR,SAAyBd,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI7nE,UAAU,oCAExB,CAiGI,CAAgBxwB,KAAM+jH,GACtB,IAAK,IAAI3nF,EAAOjqC,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Er5B,EAAKq5B,GAAQlqC,UAAUkqC,GAKzB,OAFA,GAAgB,GADhB68D,EAAQqpB,EAAOj0H,KAAK4U,MAAMq/G,EAAQ,CAACviH,MAAM2iC,OAAO3/B,KACD,WAAY,KAC3D,GAAgB,GAAuBk2F,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,MAC9EA,CACT,CA0CA,OAzIoBb,EAgGP0rB,GAhGoBxrB,EAgGT,CAAC,CACvB7oG,IAAK,QACLN,MAAO,SAAeu0H,EAAY9T,EAAO3wF,GACvC,OAAQ2wF,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAO3wF,EAAMi+F,IAAIwG,EAAY,CAC3BpsG,MAAO,iBACH2H,EAAMi+F,IAAIwG,EAAY,CAC1BpsG,MAAO,WAIX,IAAK,QACH,OAAO2H,EAAMi+F,IAAIwG,EAAY,CAC3BpsG,MAAO,WAKX,QACE,OAAO2H,EAAMi+F,IAAIwG,EAAY,CAC3BpsG,MAAO,UACH2H,EAAMi+F,IAAIwG,EAAY,CAC1BpsG,MAAO,iBACH2H,EAAMi+F,IAAIwG,EAAY,CAC1BpsG,MAAO,WAGf,GACC,CACD7nB,IAAK,MACLN,MAAO,SAAamjC,EAAMowF,EAAOvzH,GAI/B,OAHAuzH,EAAMxF,IAAM/tH,EACZmjC,EAAKguF,eAAenxH,EAAO,EAAG,GAC9BmjC,EAAK0xF,YAAY,EAAG,EAAG,EAAG,GACnB1xF,CACT,MAtIc,EAAkB8lE,EAAYtoG,UAAWwoG,GACrDC,GAAa,EAAkBH,EAAaG,GAuIzCurB,CACT,CAxDoC,CAwDlC,GC5HSG,IAVU5zH,KAAKyO,IAAI,GAAI,GAUA,KAUvBolH,GAAqB,KCpDrBC,GACF,iBADEA,GAGH,qBAHGA,GAKE,kCALFA,GAOH,qBAPGA,GASA,qBATAA,GAWA,qBAXAA,GAaA,iBAbAA,GAeA,iBAfAA,GAiBD,YAjBCA,GAmBD,YAnBCA,GAqBI,MArBJA,GAuBE,WAvBFA,GAyBI,WAzBJA,GA2BG,WA3BHA,GA6BQ,SA7BRA,GA8BU,QA9BVA,GAgCQ,aAhCRA,GAkCU,aAlCVA,GAoCS,aAGTC,GACa,2BADbA,GAEF,0BAFEA,GAGa,oCAHbA,GAIC,2BAJDA,GAKgB,sCC1CpB,SAASC,GAASC,EAAeC,GACtC,OAAKD,EAGE,CACLn1H,MAAOo1H,EAAMD,EAAcn1H,OAC3BwvH,KAAM2F,EAAc3F,MAJb2F,CAMX,CACO,SAASE,GAAoBhG,EAASkF,GAC3C,IAAIvF,EAAcuF,EAAWzkG,MAAMu/F,GACnC,OAAKL,EAGE,CACLhvH,MAAOsP,SAAS0/G,EAAY,GAAI,IAChCQ,KAAM+E,EAAWzhH,MAAMk8G,EAAY,GAAGhsH,SAJ/B,IAMX,CACO,SAASsyH,GAAqBjG,EAASkF,GAC5C,IAAIvF,EAAcuF,EAAWzkG,MAAMu/F,GACnC,IAAKL,EACH,OAAO,KAGT,GAAuB,MAAnBA,EAAY,GACd,MAAO,CACLhvH,MAAO,EACPwvH,KAAM+E,EAAWzhH,MAAM,IAG3B,IAAIuE,EAA0B,MAAnB23G,EAAY,GAAa,GAAK,EACrCuG,EAAQvG,EAAY,GAAK1/G,SAAS0/G,EAAY,GAAI,IAAM,EACxDwG,EAAUxG,EAAY,GAAK1/G,SAAS0/G,EAAY,GAAI,IAAM,EAC1DyG,EAAUzG,EAAY,GAAK1/G,SAAS0/G,EAAY,GAAI,IAAM,EAC9D,MAAO,CACLhvH,MAAOqX,GAAQk+G,EAAQR,GAAqBS,EAAUV,GFwBxB,IExB+CW,GAC7EjG,KAAM+E,EAAWzhH,MAAMk8G,EAAY,GAAGhsH,QAE1C,CACO,SAAS0yH,GAAqBnB,GACnC,OAAOc,GAAoBL,GAAiCT,EAC9D,CACO,SAASoB,GAAan1H,EAAG+zH,GAC9B,OAAQ/zH,GACN,KAAK,EACH,OAAO60H,GAAoBL,GAA6BT,GAC1D,KAAK,EACH,OAAOc,GAAoBL,GAA2BT,GACxD,KAAK,EACH,OAAOc,GAAoBL,GAA6BT,GAC1D,KAAK,EACH,OAAOc,GAAoBL,GAA4BT,GACzD,QACE,OAAOc,GAAoB,IAAIO,OAAO,UAAYp1H,EAAI,KAAM+zH,GAElE,CACO,SAASsB,GAAmBr1H,EAAG+zH,GACpC,OAAQ/zH,GACN,KAAK,EACH,OAAO60H,GAAoBL,GAAmCT,GAChE,KAAK,EACH,OAAOc,GAAoBL,GAAiCT,GAC9D,KAAK,EACH,OAAOc,GAAoBL,GAAmCT,GAChE,KAAK,EACH,OAAOc,GAAoBL,GAAkCT,GAC/D,QACE,OAAOc,GAAoB,IAAIO,OAAO,YAAcp1H,EAAI,KAAM+zH,GAEpE,CACO,SAASuB,GAAqB3H,GACnC,OAAQA,GACN,IAAK,UACH,OAAO,EACT,IAAK,UACH,OAAO,GACT,IAAK,KACL,IAAK,OACL,IAAK,YACH,OAAO,GAIT,QACE,OAAO,EAEb,CACO,SAAS4H,GAAsBC,EAAcC,GAClD,IAMI18F,EANA28F,EAAcD,EAAc,EAK5BE,EAAiBD,EAAcD,EAAc,EAAIA,EAErD,GAAIE,GAAkB,GACpB58F,EAASy8F,GAAgB,QACpB,CACL,IAAII,EAAWD,EAAiB,GAGhC58F,EAASy8F,EAF0C,IAA7B90H,KAAK4W,MAAMs+G,EAAW,MACpBJ,GAAgBI,EAAW,IACY,IAAM,EACvE,CACA,OAAOF,EAAc38F,EAAS,EAAIA,CACpC,CACO,SAAS88F,GAAgBppC,GAC9B,OAAOA,EAAO,MAAQ,GAAKA,EAAO,IAAM,GAAKA,EAAO,MAAQ,CAC9D,CC9GA,SAAS,GAAQj8E,GAYf,OARE,GADoB,oBAAXlR,QAAoD,kBAApBA,OAAO6hC,SACtC,SAAiB3wB,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EAEK,GAAQA,EACjB,CAMA,SAAS,GAAkB2D,EAAQsb,GACjC,IAAK,IAAIlxB,EAAI,EAAGA,EAAIkxB,EAAMjtB,OAAQjE,IAAK,CACrC,IAAIs8D,EAAaprC,EAAMlxB,GACvBs8D,EAAW17D,WAAa07D,EAAW17D,aAAc,EACjD07D,EAAWlnC,cAAe,EACtB,UAAWknC,IAAYA,EAAW51C,UAAW,GACjDhmB,OAAOC,eAAeiV,EAAQ0mD,EAAW/6D,IAAK+6D,EAChD,CACF,CAmBA,SAAS,GAAgB77D,EAAGqB,GAK1B,OAJA,GAAkBpB,OAAOqyH,gBAAkB,SAAyBtyH,EAAGqB,GAErE,OADArB,EAAE2/C,UAAYt+C,EACPrB,CACT,EACO,GAAgBA,EAAGqB,EAC5B,CACA,SAAS,GAAamxH,GACpB,IAAIC,EAyBN,WACE,GAAuB,qBAAZz/F,UAA4BA,QAAQ0/F,UAAW,OAAO,EACjE,GAAI1/F,QAAQ0/F,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVtgG,MAAsB,OAAO,EACxC,IAEE,OADAugG,QAAQzxH,UAAUm0F,QAAQ51F,KAAKszB,QAAQ0/F,UAAUE,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOlwH,GACP,OAAO,CACT,CACF,CAnCkC,GAChC,OAAO,WACL,IACEq3B,EADE+4F,EAAQ,GAAgBN,GAE5B,GAAIC,EAA2B,CAC7B,IAAIO,EAAY,GAAgB5hH,MAAMJ,YACtC+oB,EAAS/G,QAAQ0/F,UAAUI,EAAOvvH,UAAWyvH,EAC/C,MACEj5F,EAAS+4F,EAAMx+G,MAAMlD,KAAM7N,WAE7B,OAGJ,SAAoCiiH,EAAM9lH,GACxC,GAAIA,IAA2B,WAAlB,GAAQA,IAAsC,oBAATA,GAChD,OAAOA,EAET,OAAO,GAAuB8lH,EAChC,CARW,CAA2Bp0G,KAAM2oB,EAC1C,CACF,CAOA,SAAS,GAAuByrF,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI2N,eAAe,6DAE3B,OAAO3N,CACT,CAYA,SAAS,GAAgBxlH,GAIvB,OAHA,GAAkBC,OAAOqyH,eAAiBryH,OAAOgzB,eAAiB,SAAyBjzB,GACzF,OAAOA,EAAE2/C,WAAa1/C,OAAOgzB,eAAejzB,EAC9C,EACO,GAAgBA,EACzB,CACA,SAAS,GAAgBwR,EAAK1Q,EAAKN,GAWjC,OAVIM,KAAO0Q,EACTvR,OAAOC,eAAesR,EAAK1Q,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZw0B,cAAc,EACd1O,UAAU,IAGZzU,EAAI1Q,GAAON,EAENgR,CACT,CAWO,IAAI,GAA0B,SAAU4jH,IAtF/C,SAAmBjD,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIxwF,UAAU,sDAEtBuwF,EAAShxH,UAAYlB,OAAOY,OAAOuxH,GAAcA,EAAWjxH,UAAW,CACrE6P,YAAa,CACXxQ,MAAO2xH,EACPlsG,UAAU,EACV0O,cAAc,KAGdy9F,GAAY,GAAgBD,EAAUC,EAC5C,CA2EE,CAAU0E,EAAY1B,GACtB,IA7FoB3rB,EAAaE,EAAYC,EA6FzC+pB,EAAS,GAAamD,GAC1B,SAASA,IACP,IAAIxsB,GA7GR,SAAyBd,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI7nE,UAAU,oCAExB,CA0GI,CAAgBxwB,KAAM0lH,GACtB,IAAK,IAAItpF,EAAOjqC,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Er5B,EAAKq5B,GAAQlqC,UAAUkqC,GAKzB,OAFA,GAAgB,GADhB68D,EAAQqpB,EAAOj0H,KAAK4U,MAAMq/G,EAAQ,CAACviH,MAAM2iC,OAAO3/B,KACD,WAAY,KAC3D,GAAgB,GAAuBk2F,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAC5GA,CACT,CA0CA,OAlJoBb,EAyGPqtB,GAzGoBntB,EAyGR,CAAC,CACxB7oG,IAAK,QACLN,MAAO,SAAeu0H,EAAY9T,EAAO3wF,GACvC,IAAIy/F,EAAgB,SAAuBtiC,GACzC,MAAO,CACLA,KAAMA,EACNspC,eAA0B,OAAV9V,EAEpB,EACA,OAAQA,GACN,IAAK,IACH,OAAOyU,GAASS,GAAa,EAAGpB,GAAahF,GAC/C,IAAK,KACH,OAAO2F,GAASplG,EAAM89F,cAAc2G,EAAY,CAC9C3tC,KAAM,SACJ2oC,GACN,QACE,OAAO2F,GAASS,GAAalV,EAAMz9G,OAAQuxH,GAAahF,GAE9D,GACC,CACDjvH,IAAK,WACLN,MAAO,SAAkBmgD,EAAOngD,GAC9B,OAAOA,EAAMu2H,gBAAkBv2H,EAAMitF,KAAO,CAC9C,GACC,CACD3sF,IAAK,MACLN,MAAO,SAAamjC,EAAMowF,EAAOvzH,GAC/B,IAAIi2H,EAAc9yF,EAAK2wF,iBACvB,GAAI9zH,EAAMu2H,eAAgB,CACxB,IAAIC,EAAyBT,GAAsB/1H,EAAMitF,KAAMgpC,GAG/D,OAFA9yF,EAAKguF,eAAeqF,EAAwB,EAAG,GAC/CrzF,EAAK0xF,YAAY,EAAG,EAAG,EAAG,GACnB1xF,CACT,CACA,IAAI8pD,EAAS,QAASsmC,GAAwB,IAAdA,EAAMxF,IAAyB,EAAI/tH,EAAMitF,KAAvBjtF,EAAMitF,KAGxD,OAFA9pD,EAAKguF,eAAelkC,EAAM,EAAG,GAC7B9pD,EAAK0xF,YAAY,EAAG,EAAG,EAAG,GACnB1xF,CACT,MA/Ic,GAAkB8lE,EAAYtoG,UAAWwoG,GACrDC,GAAa,GAAkBH,EAAaG,GAgJzCktB,CACT,CAxDqC,CAwDnC,GC/KE,GAAiB,CAAC,EACf,SAASG,KACd,OAAO,EACT,CCCe,SAASC,GAAerG,EAAWr7G,GAChD,IAAImpB,EAAM6T,EAAOqD,EAAOshF,EAAuBC,EAAiBC,EAAuBC,EAAuBC,EAC9GlM,EAAa,EAAG9nH,WAChB,IAAI4rG,EAAiB8nB,KACjBxG,EAAeE,EAA+0B,QAAp0BhyF,EAA8hB,QAAthB6T,EAAkd,QAAzcqD,EAA6G,QAApGshF,EAAoC,OAAZ3hH,QAAgC,IAAZA,OAAqB,EAASA,EAAQi7G,oBAAoD,IAA1B0G,EAAmCA,EAAoC,OAAZ3hH,QAAgC,IAAZA,GAAqE,QAAtC4hH,EAAkB5hH,EAAQ2L,cAAwC,IAApBi2G,GAA4F,QAArDC,EAAwBD,EAAgB5hH,eAA+C,IAA1B6hH,OAA5J,EAAwMA,EAAsB5G,oBAAoC,IAAV56E,EAAmBA,EAAQs5D,EAAeshB,oBAAoC,IAAVj+E,EAAmBA,EAA4D,QAAnD8kF,EAAwBnoB,EAAehuF,cAA8C,IAA1Bm2G,GAAyG,QAA5DC,EAAyBD,EAAsB9hH,eAAgD,IAA3B+hH,OAA9E,EAA2HA,EAAuB9G,oBAAmC,IAAT9xF,EAAkBA,EAAO,GAEn4B,KAAM8xF,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAIwB,WAAW,oDAEvB,IAAItuF,EAAOqrE,EAAO6hB,GACdxjC,EAAM1pD,EAAK6zF,YACXj3E,GAAQ8sC,EAAMojC,EAAe,EAAI,GAAKpjC,EAAMojC,EAGhD,OAFA9sF,EAAK8zF,WAAW9zF,EAAK6wF,aAAej0E,GACpC5c,EAAK0xF,YAAY,EAAG,EAAG,EAAG,GACnB1xF,CACT,CCde,SAAS+zF,GAAe7G,EAAWr7G,GAChD,IAAImpB,EAAM6T,EAAOqD,EAAO8hF,EAAuBP,EAAiBC,EAAuBC,EAAuBC,EAC9GlM,EAAa,EAAG9nH,WAChB,IAAIogC,EAAOqrE,EAAO6hB,GACdpjC,EAAO9pD,EAAK2wF,iBACZnlB,EAAiB8nB,KACjBvG,EAAwBC,EAAm3B,QAAx2BhyF,EAAyjB,QAAjjB6T,EAAoe,QAA3dqD,EAAsH,QAA7G8hF,EAAoC,OAAZniH,QAAgC,IAAZA,OAAqB,EAASA,EAAQk7G,6BAA6D,IAA1BiH,EAAmCA,EAAoC,OAAZniH,QAAgC,IAAZA,GAAqE,QAAtC4hH,EAAkB5hH,EAAQ2L,cAAwC,IAApBi2G,GAA4F,QAArDC,EAAwBD,EAAgB5hH,eAA+C,IAA1B6hH,OAA5J,EAAwMA,EAAsB3G,6BAA6C,IAAV76E,EAAmBA,EAAQs5D,EAAeuhB,6BAA6C,IAAVl+E,EAAmBA,EAA4D,QAAnD8kF,EAAwBnoB,EAAehuF,cAA8C,IAA1Bm2G,GAAyG,QAA5DC,EAAyBD,EAAsB9hH,eAAgD,IAA3B+hH,OAA9E,EAA2HA,EAAuB7G,6BAA4C,IAAT/xF,EAAkBA,EAAO,GAEh7B,KAAM+xF,GAAyB,GAAKA,GAAyB,GAC3D,MAAM,IAAIuB,WAAW,6DAEvB,IAAI2F,EAAsB,IAAI1zF,KAAK,GACnC0zF,EAAoBjG,eAAelkC,EAAO,EAAG,EAAGijC,GAChDkH,EAAoBvC,YAAY,EAAG,EAAG,EAAG,GACzC,IAAIwC,EAAkBX,GAAeU,EAAqBpiH,GACtDsiH,EAAsB,IAAI5zF,KAAK,GACnC4zF,EAAoBnG,eAAelkC,EAAM,EAAGijC,GAC5CoH,EAAoBzC,YAAY,EAAG,EAAG,EAAG,GACzC,IAAI0C,EAAkBb,GAAeY,EAAqBtiH,GAC1D,OAAImuB,EAAKigE,WAAai0B,EAAgBj0B,UAC7BnW,EAAO,EACL9pD,EAAKigE,WAAam0B,EAAgBn0B,UACpCnW,EAEAA,EAAO,CAElB,CC/BA,SAAS,GAAQj8E,GAYf,OARE,GADoB,oBAAXlR,QAAoD,kBAApBA,OAAO6hC,SACtC,SAAiB3wB,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EAEK,GAAQA,EACjB,CAMA,SAAS,GAAkB2D,EAAQsb,GACjC,IAAK,IAAIlxB,EAAI,EAAGA,EAAIkxB,EAAMjtB,OAAQjE,IAAK,CACrC,IAAIs8D,EAAaprC,EAAMlxB,GACvBs8D,EAAW17D,WAAa07D,EAAW17D,aAAc,EACjD07D,EAAWlnC,cAAe,EACtB,UAAWknC,IAAYA,EAAW51C,UAAW,GACjDhmB,OAAOC,eAAeiV,EAAQ0mD,EAAW/6D,IAAK+6D,EAChD,CACF,CAmBA,SAAS,GAAgB77D,EAAGqB,GAK1B,OAJA,GAAkBpB,OAAOqyH,gBAAkB,SAAyBtyH,EAAGqB,GAErE,OADArB,EAAE2/C,UAAYt+C,EACPrB,CACT,EACO,GAAgBA,EAAGqB,EAC5B,CACA,SAAS,GAAamxH,GACpB,IAAIC,EAyBN,WACE,GAAuB,qBAAZz/F,UAA4BA,QAAQ0/F,UAAW,OAAO,EACjE,GAAI1/F,QAAQ0/F,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVtgG,MAAsB,OAAO,EACxC,IAEE,OADAugG,QAAQzxH,UAAUm0F,QAAQ51F,KAAKszB,QAAQ0/F,UAAUE,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOlwH,GACP,OAAO,CACT,CACF,CAnCkC,GAChC,OAAO,WACL,IACEq3B,EADE+4F,EAAQ,GAAgBN,GAE5B,GAAIC,EAA2B,CAC7B,IAAIO,EAAY,GAAgB5hH,MAAMJ,YACtC+oB,EAAS/G,QAAQ0/F,UAAUI,EAAOvvH,UAAWyvH,EAC/C,MACEj5F,EAAS+4F,EAAMx+G,MAAMlD,KAAM7N,WAE7B,OAGJ,SAAoCiiH,EAAM9lH,GACxC,GAAIA,IAA2B,WAAlB,GAAQA,IAAsC,oBAATA,GAChD,OAAOA,EAET,OAAO,GAAuB8lH,EAChC,CARW,CAA2Bp0G,KAAM2oB,EAC1C,CACF,CAOA,SAAS,GAAuByrF,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI2N,eAAe,6DAE3B,OAAO3N,CACT,CAYA,SAAS,GAAgBxlH,GAIvB,OAHA,GAAkBC,OAAOqyH,eAAiBryH,OAAOgzB,eAAiB,SAAyBjzB,GACzF,OAAOA,EAAE2/C,WAAa1/C,OAAOgzB,eAAejzB,EAC9C,EACO,GAAgBA,EACzB,CACA,SAAS,GAAgBwR,EAAK1Q,EAAKN,GAWjC,OAVIM,KAAO0Q,EACTvR,OAAOC,eAAesR,EAAK1Q,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZw0B,cAAc,EACd1O,UAAU,IAGZzU,EAAI1Q,GAAON,EAENgR,CACT,CAMO,IAAI,GAAmC,SAAU4jH,IAjFxD,SAAmBjD,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIxwF,UAAU,sDAEtBuwF,EAAShxH,UAAYlB,OAAOY,OAAOuxH,GAAcA,EAAWjxH,UAAW,CACrE6P,YAAa,CACXxQ,MAAO2xH,EACPlsG,UAAU,EACV0O,cAAc,KAGdy9F,GAAY,GAAgBD,EAAUC,EAC5C,CAsEE,CAAU4F,EAAqB5C,GAC/B,IAxFoB3rB,EAAaE,EAAYC,EAwFzC+pB,EAAS,GAAaqE,GAC1B,SAASA,IACP,IAAI1tB,GAxGR,SAAyBd,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI7nE,UAAU,oCAExB,CAqGI,CAAgBxwB,KAAM4mH,GACtB,IAAK,IAAIxqF,EAAOjqC,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Er5B,EAAKq5B,GAAQlqC,UAAUkqC,GAKzB,OAFA,GAAgB,GADhB68D,EAAQqpB,EAAOj0H,KAAK4U,MAAMq/G,EAAQ,CAACviH,MAAM2iC,OAAO3/B,KACD,WAAY,KAC3D,GAAgB,GAAuBk2F,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAC3HA,CACT,CA0CA,OA7IoBb,EAoGPuuB,GApGoBruB,EAoGC,CAAC,CACjC7oG,IAAK,QACLN,MAAO,SAAeu0H,EAAY9T,EAAO3wF,GACvC,IAAIy/F,EAAgB,SAAuBtiC,GACzC,MAAO,CACLA,KAAMA,EACNspC,eAA0B,OAAV9V,EAEpB,EACA,OAAQA,GACN,IAAK,IACH,OAAOyU,GAASS,GAAa,EAAGpB,GAAahF,GAC/C,IAAK,KACH,OAAO2F,GAASplG,EAAM89F,cAAc2G,EAAY,CAC9C3tC,KAAM,SACJ2oC,GACN,QACE,OAAO2F,GAASS,GAAalV,EAAMz9G,OAAQuxH,GAAahF,GAE9D,GACC,CACDjvH,IAAK,WACLN,MAAO,SAAkBmgD,EAAOngD,GAC9B,OAAOA,EAAMu2H,gBAAkBv2H,EAAMitF,KAAO,CAC9C,GACC,CACD3sF,IAAK,MACLN,MAAO,SAAamjC,EAAMowF,EAAOvzH,EAAOgV,GACtC,IAAIihH,EAAciB,GAAe/zF,EAAMnuB,GACvC,GAAIhV,EAAMu2H,eAAgB,CACxB,IAAIC,EAAyBT,GAAsB/1H,EAAMitF,KAAMgpC,GAG/D,OAFA9yF,EAAKguF,eAAeqF,EAAwB,EAAGxhH,EAAQk7G,uBACvD/sF,EAAK0xF,YAAY,EAAG,EAAG,EAAG,GACnB6B,GAAevzF,EAAMnuB,EAC9B,CACA,IAAIi4E,EAAS,QAASsmC,GAAwB,IAAdA,EAAMxF,IAAyB,EAAI/tH,EAAMitF,KAAvBjtF,EAAMitF,KAGxD,OAFA9pD,EAAKguF,eAAelkC,EAAM,EAAGj4E,EAAQk7G,uBACrC/sF,EAAK0xF,YAAY,EAAG,EAAG,EAAG,GACnB6B,GAAevzF,EAAMnuB,EAC9B,MA1Ic,GAAkBi0F,EAAYtoG,UAAWwoG,GACrDC,GAAa,GAAkBH,EAAaG,GA2IzCouB,CACT,CAxD8C,CAwD5C,GCxKa,SAASC,GAAkBpH,GACxCxF,EAAa,EAAG9nH,WAChB,IACIogC,EAAOqrE,EAAO6hB,GACdxjC,EAAM1pD,EAAK6zF,YACXj3E,GAAQ8sC,EAHO,EAGc,EAAI,GAAKA,EAHvB,EAMnB,OAFA1pD,EAAK8zF,WAAW9zF,EAAK6wF,aAAej0E,GACpC5c,EAAK0xF,YAAY,EAAG,EAAG,EAAG,GACnB1xF,CACT,CCXA,SAAS,GAAQnyB,GAYf,OARE,GADoB,oBAAXlR,QAAoD,kBAApBA,OAAO6hC,SACtC,SAAiB3wB,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EAEK,GAAQA,EACjB,CAMA,SAAS,GAAkB2D,EAAQsb,GACjC,IAAK,IAAIlxB,EAAI,EAAGA,EAAIkxB,EAAMjtB,OAAQjE,IAAK,CACrC,IAAIs8D,EAAaprC,EAAMlxB,GACvBs8D,EAAW17D,WAAa07D,EAAW17D,aAAc,EACjD07D,EAAWlnC,cAAe,EACtB,UAAWknC,IAAYA,EAAW51C,UAAW,GACjDhmB,OAAOC,eAAeiV,EAAQ0mD,EAAW/6D,IAAK+6D,EAChD,CACF,CAmBA,SAAS,GAAgB77D,EAAGqB,GAK1B,OAJA,GAAkBpB,OAAOqyH,gBAAkB,SAAyBtyH,EAAGqB,GAErE,OADArB,EAAE2/C,UAAYt+C,EACPrB,CACT,EACO,GAAgBA,EAAGqB,EAC5B,CACA,SAAS,GAAamxH,GACpB,IAAIC,EAyBN,WACE,GAAuB,qBAAZz/F,UAA4BA,QAAQ0/F,UAAW,OAAO,EACjE,GAAI1/F,QAAQ0/F,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVtgG,MAAsB,OAAO,EACxC,IAEE,OADAugG,QAAQzxH,UAAUm0F,QAAQ51F,KAAKszB,QAAQ0/F,UAAUE,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOlwH,GACP,OAAO,CACT,CACF,CAnCkC,GAChC,OAAO,WACL,IACEq3B,EADE+4F,EAAQ,GAAgBN,GAE5B,GAAIC,EAA2B,CAC7B,IAAIO,EAAY,GAAgB5hH,MAAMJ,YACtC+oB,EAAS/G,QAAQ0/F,UAAUI,EAAOvvH,UAAWyvH,EAC/C,MACEj5F,EAAS+4F,EAAMx+G,MAAMlD,KAAM7N,WAE7B,OAGJ,SAAoCiiH,EAAM9lH,GACxC,GAAIA,IAA2B,WAAlB,GAAQA,IAAsC,oBAATA,GAChD,OAAOA,EAET,OAAO,GAAuB8lH,EAChC,CARW,CAA2Bp0G,KAAM2oB,EAC1C,CACF,CAOA,SAAS,GAAuByrF,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI2N,eAAe,6DAE3B,OAAO3N,CACT,CAYA,SAAS,GAAgBxlH,GAIvB,OAHA,GAAkBC,OAAOqyH,eAAiBryH,OAAOgzB,eAAiB,SAAyBjzB,GACzF,OAAOA,EAAE2/C,WAAa1/C,OAAOgzB,eAAejzB,EAC9C,EACO,GAAgBA,EACzB,CACA,SAAS,GAAgBwR,EAAK1Q,EAAKN,GAWjC,OAVIM,KAAO0Q,EACTvR,OAAOC,eAAesR,EAAK1Q,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZw0B,cAAc,EACd1O,UAAU,IAGZzU,EAAI1Q,GAAON,EAENgR,CACT,CAKO,IAAI,GAAiC,SAAU4jH,IAhFtD,SAAmBjD,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIxwF,UAAU,sDAEtBuwF,EAAShxH,UAAYlB,OAAOY,OAAOuxH,GAAcA,EAAWjxH,UAAW,CACrE6P,YAAa,CACXxQ,MAAO2xH,EACPlsG,UAAU,EACV0O,cAAc,KAGdy9F,GAAY,GAAgBD,EAAUC,EAC5C,CAqEE,CAAU8F,EAAmB9C,GAC7B,IAvFoB3rB,EAAaE,EAAYC,EAuFzC+pB,EAAS,GAAauE,GAC1B,SAASA,IACP,IAAI5tB,GAvGR,SAAyBd,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI7nE,UAAU,oCAExB,CAoGI,CAAgBxwB,KAAM8mH,GACtB,IAAK,IAAI1qF,EAAOjqC,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Er5B,EAAKq5B,GAAQlqC,UAAUkqC,GAKzB,OAFA,GAAgB,GADhB68D,EAAQqpB,EAAOj0H,KAAK4U,MAAMq/G,EAAQ,CAACviH,MAAM2iC,OAAO3/B,KACD,WAAY,KAC3D,GAAgB,GAAuBk2F,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MACrIA,CACT,CAkBA,OApHoBb,EAmGPyuB,GAnGoBvuB,EAmGD,CAAC,CAC/B7oG,IAAK,QACLN,MAAO,SAAeu0H,EAAY9T,GAChC,OACSoV,GADK,MAAVpV,EACwB,EAEFA,EAAMz9G,OAFDuxH,EAGjC,GACC,CACDj0H,IAAK,MACLN,MAAO,SAAamgD,EAAOw3E,EAAQ33H,GACjC,IAAI43H,EAAkB,IAAIl0F,KAAK,GAG/B,OAFAk0F,EAAgBzG,eAAenxH,EAAO,EAAG,GACzC43H,EAAgB/C,YAAY,EAAG,EAAG,EAAG,GAC9B4C,GAAkBG,EAC3B,MAjHc,GAAkB3uB,EAAYtoG,UAAWwoG,GACrDC,GAAa,GAAkBH,EAAaG,GAkHzCsuB,CACT,CAhC4C,CAgC1C,GCjJF,SAAS,GAAQ1mH,GAYf,OARE,GADoB,oBAAXlR,QAAoD,kBAApBA,OAAO6hC,SACtC,SAAiB3wB,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EAEK,GAAQA,EACjB,CAMA,SAAS,GAAkB2D,EAAQsb,GACjC,IAAK,IAAIlxB,EAAI,EAAGA,EAAIkxB,EAAMjtB,OAAQjE,IAAK,CACrC,IAAIs8D,EAAaprC,EAAMlxB,GACvBs8D,EAAW17D,WAAa07D,EAAW17D,aAAc,EACjD07D,EAAWlnC,cAAe,EACtB,UAAWknC,IAAYA,EAAW51C,UAAW,GACjDhmB,OAAOC,eAAeiV,EAAQ0mD,EAAW/6D,IAAK+6D,EAChD,CACF,CAmBA,SAAS,GAAgB77D,EAAGqB,GAK1B,OAJA,GAAkBpB,OAAOqyH,gBAAkB,SAAyBtyH,EAAGqB,GAErE,OADArB,EAAE2/C,UAAYt+C,EACPrB,CACT,EACO,GAAgBA,EAAGqB,EAC5B,CACA,SAAS,GAAamxH,GACpB,IAAIC,EAyBN,WACE,GAAuB,qBAAZz/F,UAA4BA,QAAQ0/F,UAAW,OAAO,EACjE,GAAI1/F,QAAQ0/F,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVtgG,MAAsB,OAAO,EACxC,IAEE,OADAugG,QAAQzxH,UAAUm0F,QAAQ51F,KAAKszB,QAAQ0/F,UAAUE,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOlwH,GACP,OAAO,CACT,CACF,CAnCkC,GAChC,OAAO,WACL,IACEq3B,EADE+4F,EAAQ,GAAgBN,GAE5B,GAAIC,EAA2B,CAC7B,IAAIO,EAAY,GAAgB5hH,MAAMJ,YACtC+oB,EAAS/G,QAAQ0/F,UAAUI,EAAOvvH,UAAWyvH,EAC/C,MACEj5F,EAAS+4F,EAAMx+G,MAAMlD,KAAM7N,WAE7B,OAGJ,SAAoCiiH,EAAM9lH,GACxC,GAAIA,IAA2B,WAAlB,GAAQA,IAAsC,oBAATA,GAChD,OAAOA,EAET,OAAO,GAAuB8lH,EAChC,CARW,CAA2Bp0G,KAAM2oB,EAC1C,CACF,CAOA,SAAS,GAAuByrF,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI2N,eAAe,6DAE3B,OAAO3N,CACT,CAYA,SAAS,GAAgBxlH,GAIvB,OAHA,GAAkBC,OAAOqyH,eAAiBryH,OAAOgzB,eAAiB,SAAyBjzB,GACzF,OAAOA,EAAE2/C,WAAa1/C,OAAOgzB,eAAejzB,EAC9C,EACO,GAAgBA,EACzB,CACA,SAAS,GAAgBwR,EAAK1Q,EAAKN,GAWjC,OAVIM,KAAO0Q,EACTvR,OAAOC,eAAesR,EAAK1Q,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZw0B,cAAc,EACd1O,UAAU,IAGZzU,EAAI1Q,GAAON,EAENgR,CACT,CAGO,IAAI,GAAkC,SAAU4jH,IA9EvD,SAAmBjD,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIxwF,UAAU,sDAEtBuwF,EAAShxH,UAAYlB,OAAOY,OAAOuxH,GAAcA,EAAWjxH,UAAW,CACrE6P,YAAa,CACXxQ,MAAO2xH,EACPlsG,UAAU,EACV0O,cAAc,KAGdy9F,GAAY,GAAgBD,EAAUC,EAC5C,CAmEE,CAAUiG,EAAoBjD,GAC9B,IArFoB3rB,EAAaE,EAAYC,EAqFzC+pB,EAAS,GAAa0E,GAC1B,SAASA,IACP,IAAI/tB,GArGR,SAAyBd,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI7nE,UAAU,oCAExB,CAkGI,CAAgBxwB,KAAMinH,GACtB,IAAK,IAAI7qF,EAAOjqC,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Er5B,EAAKq5B,GAAQlqC,UAAUkqC,GAKzB,OAFA,GAAgB,GADhB68D,EAAQqpB,EAAOj0H,KAAK4U,MAAMq/G,EAAQ,CAACviH,MAAM2iC,OAAO3/B,KACD,WAAY,KAC3D,GAAgB,GAAuBk2F,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MACjHA,CACT,CAiBA,OAjHoBb,EAiGP4uB,GAjGoB1uB,EAiGA,CAAC,CAChC7oG,IAAK,QACLN,MAAO,SAAeu0H,EAAY9T,GAChC,OACSoV,GADK,MAAVpV,EACwB,EAEFA,EAAMz9G,OAFDuxH,EAGjC,GACC,CACDj0H,IAAK,MACLN,MAAO,SAAamjC,EAAMw0F,EAAQ33H,GAGhC,OAFAmjC,EAAKguF,eAAenxH,EAAO,EAAG,GAC9BmjC,EAAK0xF,YAAY,EAAG,EAAG,EAAG,GACnB1xF,CACT,MA9Gc,GAAkB8lE,EAAYtoG,UAAWwoG,GACrDC,GAAa,GAAkBH,EAAaG,GA+GzCyuB,CACT,CA/B6C,CA+B3C,GC9IF,SAAS,GAAQ7mH,GAYf,OARE,GADoB,oBAAXlR,QAAoD,kBAApBA,OAAO6hC,SACtC,SAAiB3wB,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EAEK,GAAQA,EACjB,CAMA,SAAS,GAAkB2D,EAAQsb,GACjC,IAAK,IAAIlxB,EAAI,EAAGA,EAAIkxB,EAAMjtB,OAAQjE,IAAK,CACrC,IAAIs8D,EAAaprC,EAAMlxB,GACvBs8D,EAAW17D,WAAa07D,EAAW17D,aAAc,EACjD07D,EAAWlnC,cAAe,EACtB,UAAWknC,IAAYA,EAAW51C,UAAW,GACjDhmB,OAAOC,eAAeiV,EAAQ0mD,EAAW/6D,IAAK+6D,EAChD,CACF,CAmBA,SAAS,GAAgB77D,EAAGqB,GAK1B,OAJA,GAAkBpB,OAAOqyH,gBAAkB,SAAyBtyH,EAAGqB,GAErE,OADArB,EAAE2/C,UAAYt+C,EACPrB,CACT,EACO,GAAgBA,EAAGqB,EAC5B,CACA,SAAS,GAAamxH,GACpB,IAAIC,EAyBN,WACE,GAAuB,qBAAZz/F,UAA4BA,QAAQ0/F,UAAW,OAAO,EACjE,GAAI1/F,QAAQ0/F,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVtgG,MAAsB,OAAO,EACxC,IAEE,OADAugG,QAAQzxH,UAAUm0F,QAAQ51F,KAAKszB,QAAQ0/F,UAAUE,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOlwH,GACP,OAAO,CACT,CACF,CAnCkC,GAChC,OAAO,WACL,IACEq3B,EADE+4F,EAAQ,GAAgBN,GAE5B,GAAIC,EAA2B,CAC7B,IAAIO,EAAY,GAAgB5hH,MAAMJ,YACtC+oB,EAAS/G,QAAQ0/F,UAAUI,EAAOvvH,UAAWyvH,EAC/C,MACEj5F,EAAS+4F,EAAMx+G,MAAMlD,KAAM7N,WAE7B,OAGJ,SAAoCiiH,EAAM9lH,GACxC,GAAIA,IAA2B,WAAlB,GAAQA,IAAsC,oBAATA,GAChD,OAAOA,EAET,OAAO,GAAuB8lH,EAChC,CARW,CAA2Bp0G,KAAM2oB,EAC1C,CACF,CAOA,SAAS,GAAuByrF,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI2N,eAAe,6DAE3B,OAAO3N,CACT,CAYA,SAAS,GAAgBxlH,GAIvB,OAHA,GAAkBC,OAAOqyH,eAAiBryH,OAAOgzB,eAAiB,SAAyBjzB,GACzF,OAAOA,EAAE2/C,WAAa1/C,OAAOgzB,eAAejzB,EAC9C,EACO,GAAgBA,EACzB,CACA,SAAS,GAAgBwR,EAAK1Q,EAAKN,GAWjC,OAVIM,KAAO0Q,EACTvR,OAAOC,eAAesR,EAAK1Q,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZw0B,cAAc,EACd1O,UAAU,IAGZzU,EAAI1Q,GAAON,EAENgR,CACT,CAGO,IAAI,GAA6B,SAAU4jH,IA9ElD,SAAmBjD,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIxwF,UAAU,sDAEtBuwF,EAAShxH,UAAYlB,OAAOY,OAAOuxH,GAAcA,EAAWjxH,UAAW,CACrE6P,YAAa,CACXxQ,MAAO2xH,EACPlsG,UAAU,EACV0O,cAAc,KAGdy9F,GAAY,GAAgBD,EAAUC,EAC5C,CAmEE,CAAUkG,EAAelD,GACzB,IArFoB3rB,EAAaE,EAAYC,EAqFzC+pB,EAAS,GAAa2E,GAC1B,SAASA,IACP,IAAIhuB,GArGR,SAAyBd,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI7nE,UAAU,oCAExB,CAkGI,CAAgBxwB,KAAMknH,GACtB,IAAK,IAAI9qF,EAAOjqC,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Er5B,EAAKq5B,GAAQlqC,UAAUkqC,GAKzB,OAFA,GAAgB,GADhB68D,EAAQqpB,EAAOj0H,KAAK4U,MAAMq/G,EAAQ,CAACviH,MAAM2iC,OAAO3/B,KACD,WAAY,KAC3D,GAAgB,GAAuBk2F,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAChIA,CACT,CA8DA,OA9JoBb,EAiGP6uB,GAjGoB3uB,EAiGL,CAAC,CAC3B7oG,IAAK,QACLN,MAAO,SAAeu0H,EAAY9T,EAAO3wF,GACvC,OAAQ2wF,GAEN,IAAK,IACL,IAAK,KAEH,OAAOkV,GAAalV,EAAMz9G,OAAQuxH,GAGpC,IAAK,KACH,OAAOzkG,EAAM89F,cAAc2G,EAAY,CACrC3tC,KAAM,YAIV,IAAK,MACH,OAAO92D,EAAMk9D,QAAQunC,EAAY,CAC/BpsG,MAAO,cACP/E,QAAS,gBACL0M,EAAMk9D,QAAQunC,EAAY,CAC9BpsG,MAAO,SACP/E,QAAS,eAIb,IAAK,QACH,OAAO0M,EAAMk9D,QAAQunC,EAAY,CAC/BpsG,MAAO,SACP/E,QAAS,eAKb,QACE,OAAO0M,EAAMk9D,QAAQunC,EAAY,CAC/BpsG,MAAO,OACP/E,QAAS,gBACL0M,EAAMk9D,QAAQunC,EAAY,CAC9BpsG,MAAO,cACP/E,QAAS,gBACL0M,EAAMk9D,QAAQunC,EAAY,CAC9BpsG,MAAO,SACP/E,QAAS,eAGjB,GACC,CACD9iB,IAAK,WACLN,MAAO,SAAkBmgD,EAAOngD,GAC9B,OAAOA,GAAS,GAAKA,GAAS,CAChC,GACC,CACDM,IAAK,MACLN,MAAO,SAAamjC,EAAMw0F,EAAQ33H,GAGhC,OAFAmjC,EAAK40F,YAA0B,GAAb/3H,EAAQ,GAAQ,GAClCmjC,EAAK0xF,YAAY,EAAG,EAAG,EAAG,GACnB1xF,CACT,MA3Jc,GAAkB8lE,EAAYtoG,UAAWwoG,GACrDC,GAAa,GAAkBH,EAAaG,GA4JzC0uB,CACT,CA5EwC,CA4EtC,GC3LF,SAAS,GAAQ9mH,GAYf,OARE,GADoB,oBAAXlR,QAAoD,kBAApBA,OAAO6hC,SACtC,SAAiB3wB,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EAEK,GAAQA,EACjB,CAMA,SAAS,GAAkB2D,EAAQsb,GACjC,IAAK,IAAIlxB,EAAI,EAAGA,EAAIkxB,EAAMjtB,OAAQjE,IAAK,CACrC,IAAIs8D,EAAaprC,EAAMlxB,GACvBs8D,EAAW17D,WAAa07D,EAAW17D,aAAc,EACjD07D,EAAWlnC,cAAe,EACtB,UAAWknC,IAAYA,EAAW51C,UAAW,GACjDhmB,OAAOC,eAAeiV,EAAQ0mD,EAAW/6D,IAAK+6D,EAChD,CACF,CAmBA,SAAS,GAAgB77D,EAAGqB,GAK1B,OAJA,GAAkBpB,OAAOqyH,gBAAkB,SAAyBtyH,EAAGqB,GAErE,OADArB,EAAE2/C,UAAYt+C,EACPrB,CACT,EACO,GAAgBA,EAAGqB,EAC5B,CACA,SAAS,GAAamxH,GACpB,IAAIC,EAyBN,WACE,GAAuB,qBAAZz/F,UAA4BA,QAAQ0/F,UAAW,OAAO,EACjE,GAAI1/F,QAAQ0/F,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVtgG,MAAsB,OAAO,EACxC,IAEE,OADAugG,QAAQzxH,UAAUm0F,QAAQ51F,KAAKszB,QAAQ0/F,UAAUE,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOlwH,GACP,OAAO,CACT,CACF,CAnCkC,GAChC,OAAO,WACL,IACEq3B,EADE+4F,EAAQ,GAAgBN,GAE5B,GAAIC,EAA2B,CAC7B,IAAIO,EAAY,GAAgB5hH,MAAMJ,YACtC+oB,EAAS/G,QAAQ0/F,UAAUI,EAAOvvH,UAAWyvH,EAC/C,MACEj5F,EAAS+4F,EAAMx+G,MAAMlD,KAAM7N,WAE7B,OAGJ,SAAoCiiH,EAAM9lH,GACxC,GAAIA,IAA2B,WAAlB,GAAQA,IAAsC,oBAATA,GAChD,OAAOA,EAET,OAAO,GAAuB8lH,EAChC,CARW,CAA2Bp0G,KAAM2oB,EAC1C,CACF,CAOA,SAAS,GAAuByrF,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI2N,eAAe,6DAE3B,OAAO3N,CACT,CAYA,SAAS,GAAgBxlH,GAIvB,OAHA,GAAkBC,OAAOqyH,eAAiBryH,OAAOgzB,eAAiB,SAAyBjzB,GACzF,OAAOA,EAAE2/C,WAAa1/C,OAAOgzB,eAAejzB,EAC9C,EACO,GAAgBA,EACzB,CACA,SAAS,GAAgBwR,EAAK1Q,EAAKN,GAWjC,OAVIM,KAAO0Q,EACTvR,OAAOC,eAAesR,EAAK1Q,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZw0B,cAAc,EACd1O,UAAU,IAGZzU,EAAI1Q,GAAON,EAENgR,CACT,CAGO,IAAI,GAAuC,SAAU4jH,IA9E5D,SAAmBjD,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIxwF,UAAU,sDAEtBuwF,EAAShxH,UAAYlB,OAAOY,OAAOuxH,GAAcA,EAAWjxH,UAAW,CACrE6P,YAAa,CACXxQ,MAAO2xH,EACPlsG,UAAU,EACV0O,cAAc,KAGdy9F,GAAY,GAAgBD,EAAUC,EAC5C,CAmEE,CAAUoG,EAAyBpD,GACnC,IArFoB3rB,EAAaE,EAAYC,EAqFzC+pB,EAAS,GAAa6E,GAC1B,SAASA,IACP,IAAIluB,GArGR,SAAyBd,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI7nE,UAAU,oCAExB,CAkGI,CAAgBxwB,KAAMonH,GACtB,IAAK,IAAIhrF,EAAOjqC,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Er5B,EAAKq5B,GAAQlqC,UAAUkqC,GAKzB,OAFA,GAAgB,GADhB68D,EAAQqpB,EAAOj0H,KAAK4U,MAAMq/G,EAAQ,CAACviH,MAAM2iC,OAAO3/B,KACD,WAAY,KAC3D,GAAgB,GAAuBk2F,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAChIA,CACT,CA8DA,OA9JoBb,EAiGP+uB,GAjGoB7uB,EAiGK,CAAC,CACrC7oG,IAAK,QACLN,MAAO,SAAeu0H,EAAY9T,EAAO3wF,GACvC,OAAQ2wF,GAEN,IAAK,IACL,IAAK,KAEH,OAAOkV,GAAalV,EAAMz9G,OAAQuxH,GAGpC,IAAK,KACH,OAAOzkG,EAAM89F,cAAc2G,EAAY,CACrC3tC,KAAM,YAIV,IAAK,MACH,OAAO92D,EAAMk9D,QAAQunC,EAAY,CAC/BpsG,MAAO,cACP/E,QAAS,gBACL0M,EAAMk9D,QAAQunC,EAAY,CAC9BpsG,MAAO,SACP/E,QAAS,eAIb,IAAK,QACH,OAAO0M,EAAMk9D,QAAQunC,EAAY,CAC/BpsG,MAAO,SACP/E,QAAS,eAKb,QACE,OAAO0M,EAAMk9D,QAAQunC,EAAY,CAC/BpsG,MAAO,OACP/E,QAAS,gBACL0M,EAAMk9D,QAAQunC,EAAY,CAC9BpsG,MAAO,cACP/E,QAAS,gBACL0M,EAAMk9D,QAAQunC,EAAY,CAC9BpsG,MAAO,SACP/E,QAAS,eAGjB,GACC,CACD9iB,IAAK,WACLN,MAAO,SAAkBmgD,EAAOngD,GAC9B,OAAOA,GAAS,GAAKA,GAAS,CAChC,GACC,CACDM,IAAK,MACLN,MAAO,SAAamjC,EAAMw0F,EAAQ33H,GAGhC,OAFAmjC,EAAK40F,YAA0B,GAAb/3H,EAAQ,GAAQ,GAClCmjC,EAAK0xF,YAAY,EAAG,EAAG,EAAG,GACnB1xF,CACT,MA3Jc,GAAkB8lE,EAAYtoG,UAAWwoG,GACrDC,GAAa,GAAkBH,EAAaG,GA4JzC4uB,CACT,CA5EkD,CA4EhD,GC3LF,SAAS,GAAQhnH,GAYf,OARE,GADoB,oBAAXlR,QAAoD,kBAApBA,OAAO6hC,SACtC,SAAiB3wB,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EAEK,GAAQA,EACjB,CAMA,SAAS,GAAkB2D,EAAQsb,GACjC,IAAK,IAAIlxB,EAAI,EAAGA,EAAIkxB,EAAMjtB,OAAQjE,IAAK,CACrC,IAAIs8D,EAAaprC,EAAMlxB,GACvBs8D,EAAW17D,WAAa07D,EAAW17D,aAAc,EACjD07D,EAAWlnC,cAAe,EACtB,UAAWknC,IAAYA,EAAW51C,UAAW,GACjDhmB,OAAOC,eAAeiV,EAAQ0mD,EAAW/6D,IAAK+6D,EAChD,CACF,CAmBA,SAAS,GAAgB77D,EAAGqB,GAK1B,OAJA,GAAkBpB,OAAOqyH,gBAAkB,SAAyBtyH,EAAGqB,GAErE,OADArB,EAAE2/C,UAAYt+C,EACPrB,CACT,EACO,GAAgBA,EAAGqB,EAC5B,CACA,SAAS,GAAamxH,GACpB,IAAIC,EAyBN,WACE,GAAuB,qBAAZz/F,UAA4BA,QAAQ0/F,UAAW,OAAO,EACjE,GAAI1/F,QAAQ0/F,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVtgG,MAAsB,OAAO,EACxC,IAEE,OADAugG,QAAQzxH,UAAUm0F,QAAQ51F,KAAKszB,QAAQ0/F,UAAUE,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOlwH,GACP,OAAO,CACT,CACF,CAnCkC,GAChC,OAAO,WACL,IACEq3B,EADE+4F,EAAQ,GAAgBN,GAE5B,GAAIC,EAA2B,CAC7B,IAAIO,EAAY,GAAgB5hH,MAAMJ,YACtC+oB,EAAS/G,QAAQ0/F,UAAUI,EAAOvvH,UAAWyvH,EAC/C,MACEj5F,EAAS+4F,EAAMx+G,MAAMlD,KAAM7N,WAE7B,OAGJ,SAAoCiiH,EAAM9lH,GACxC,GAAIA,IAA2B,WAAlB,GAAQA,IAAsC,oBAATA,GAChD,OAAOA,EAET,OAAO,GAAuB8lH,EAChC,CARW,CAA2Bp0G,KAAM2oB,EAC1C,CACF,CAOA,SAAS,GAAuByrF,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI2N,eAAe,6DAE3B,OAAO3N,CACT,CAYA,SAAS,GAAgBxlH,GAIvB,OAHA,GAAkBC,OAAOqyH,eAAiBryH,OAAOgzB,eAAiB,SAAyBjzB,GACzF,OAAOA,EAAE2/C,WAAa1/C,OAAOgzB,eAAejzB,EAC9C,EACO,GAAgBA,EACzB,CACA,SAAS,GAAgBwR,EAAK1Q,EAAKN,GAWjC,OAVIM,KAAO0Q,EACTvR,OAAOC,eAAesR,EAAK1Q,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZw0B,cAAc,EACd1O,UAAU,IAGZzU,EAAI1Q,GAAON,EAENgR,CACT,CAIO,IAAI,GAA2B,SAAU4jH,IA/EhD,SAAmBjD,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIxwF,UAAU,sDAEtBuwF,EAAShxH,UAAYlB,OAAOY,OAAOuxH,GAAcA,EAAWjxH,UAAW,CACrE6P,YAAa,CACXxQ,MAAO2xH,EACPlsG,UAAU,EACV0O,cAAc,KAGdy9F,GAAY,GAAgBD,EAAUC,EAC5C,CAoEE,CAAUqG,EAAarD,GACvB,IAtFoB3rB,EAAaE,EAAYC,EAsFzC+pB,EAAS,GAAa8E,GAC1B,SAASA,IACP,IAAInuB,GAtGR,SAAyBd,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI7nE,UAAU,oCAExB,CAmGI,CAAgBxwB,KAAMqnH,GACtB,IAAK,IAAIjrF,EAAOjqC,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Er5B,EAAKq5B,GAAQlqC,UAAUkqC,GAKzB,OAFA,GAAgB,GADhB68D,EAAQqpB,EAAOj0H,KAAK4U,MAAMq/G,EAAQ,CAACviH,MAAM2iC,OAAO3/B,KACD,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAClI,GAAgB,GAAuBk2F,GAAQ,WAAY,KACpDA,CACT,CAmEA,OApKoBb,EAkGPgvB,GAlGoB9uB,EAkGP,CAAC,CACzB7oG,IAAK,QACLN,MAAO,SAAeu0H,EAAY9T,EAAO3wF,GACvC,IAAIy/F,EAAgB,SAAuBvvH,GACzC,OAAOA,EAAQ,CACjB,EACA,OAAQygH,GAEN,IAAK,IACH,OAAOyU,GAASG,GAAoBL,GAAuBT,GAAahF,GAG1E,IAAK,KACH,OAAO2F,GAASS,GAAa,EAAGpB,GAAahF,GAG/C,IAAK,KACH,OAAO2F,GAASplG,EAAM89F,cAAc2G,EAAY,CAC9C3tC,KAAM,UACJ2oC,GAGN,IAAK,MACH,OAAOz/F,EAAMi9D,MAAMwnC,EAAY,CAC7BpsG,MAAO,cACP/E,QAAS,gBACL0M,EAAMi9D,MAAMwnC,EAAY,CAC5BpsG,MAAO,SACP/E,QAAS,eAIb,IAAK,QACH,OAAO0M,EAAMi9D,MAAMwnC,EAAY,CAC7BpsG,MAAO,SACP/E,QAAS,eAKb,QACE,OAAO0M,EAAMi9D,MAAMwnC,EAAY,CAC7BpsG,MAAO,OACP/E,QAAS,gBACL0M,EAAMi9D,MAAMwnC,EAAY,CAC5BpsG,MAAO,cACP/E,QAAS,gBACL0M,EAAMi9D,MAAMwnC,EAAY,CAC5BpsG,MAAO,SACP/E,QAAS,eAGjB,GACC,CACD9iB,IAAK,WACLN,MAAO,SAAkBmgD,EAAOngD,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACDM,IAAK,MACLN,MAAO,SAAamjC,EAAMw0F,EAAQ33H,GAGhC,OAFAmjC,EAAK40F,YAAY/3H,EAAO,GACxBmjC,EAAK0xF,YAAY,EAAG,EAAG,EAAG,GACnB1xF,CACT,MAjKc,GAAkB8lE,EAAYtoG,UAAWwoG,GACrDC,GAAa,GAAkBH,EAAaG,GAkKzC6uB,CACT,CAjFsC,CAiFpC,GCjMF,SAAS,GAAQjnH,GAYf,OARE,GADoB,oBAAXlR,QAAoD,kBAApBA,OAAO6hC,SACtC,SAAiB3wB,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EAEK,GAAQA,EACjB,CAMA,SAAS,GAAkB2D,EAAQsb,GACjC,IAAK,IAAIlxB,EAAI,EAAGA,EAAIkxB,EAAMjtB,OAAQjE,IAAK,CACrC,IAAIs8D,EAAaprC,EAAMlxB,GACvBs8D,EAAW17D,WAAa07D,EAAW17D,aAAc,EACjD07D,EAAWlnC,cAAe,EACtB,UAAWknC,IAAYA,EAAW51C,UAAW,GACjDhmB,OAAOC,eAAeiV,EAAQ0mD,EAAW/6D,IAAK+6D,EAChD,CACF,CAmBA,SAAS,GAAgB77D,EAAGqB,GAK1B,OAJA,GAAkBpB,OAAOqyH,gBAAkB,SAAyBtyH,EAAGqB,GAErE,OADArB,EAAE2/C,UAAYt+C,EACPrB,CACT,EACO,GAAgBA,EAAGqB,EAC5B,CACA,SAAS,GAAamxH,GACpB,IAAIC,EAyBN,WACE,GAAuB,qBAAZz/F,UAA4BA,QAAQ0/F,UAAW,OAAO,EACjE,GAAI1/F,QAAQ0/F,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVtgG,MAAsB,OAAO,EACxC,IAEE,OADAugG,QAAQzxH,UAAUm0F,QAAQ51F,KAAKszB,QAAQ0/F,UAAUE,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOlwH,GACP,OAAO,CACT,CACF,CAnCkC,GAChC,OAAO,WACL,IACEq3B,EADE+4F,EAAQ,GAAgBN,GAE5B,GAAIC,EAA2B,CAC7B,IAAIO,EAAY,GAAgB5hH,MAAMJ,YACtC+oB,EAAS/G,QAAQ0/F,UAAUI,EAAOvvH,UAAWyvH,EAC/C,MACEj5F,EAAS+4F,EAAMx+G,MAAMlD,KAAM7N,WAE7B,OAGJ,SAAoCiiH,EAAM9lH,GACxC,GAAIA,IAA2B,WAAlB,GAAQA,IAAsC,oBAATA,GAChD,OAAOA,EAET,OAAO,GAAuB8lH,EAChC,CARW,CAA2Bp0G,KAAM2oB,EAC1C,CACF,CAOA,SAAS,GAAuByrF,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI2N,eAAe,6DAE3B,OAAO3N,CACT,CAYA,SAAS,GAAgBxlH,GAIvB,OAHA,GAAkBC,OAAOqyH,eAAiBryH,OAAOgzB,eAAiB,SAAyBjzB,GACzF,OAAOA,EAAE2/C,WAAa1/C,OAAOgzB,eAAejzB,EAC9C,EACO,GAAgBA,EACzB,CACA,SAAS,GAAgBwR,EAAK1Q,EAAKN,GAWjC,OAVIM,KAAO0Q,EACTvR,OAAOC,eAAesR,EAAK1Q,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZw0B,cAAc,EACd1O,UAAU,IAGZzU,EAAI1Q,GAAON,EAENgR,CACT,CAIO,IAAI,GAAqC,SAAU4jH,IA/E1D,SAAmBjD,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIxwF,UAAU,sDAEtBuwF,EAAShxH,UAAYlB,OAAOY,OAAOuxH,GAAcA,EAAWjxH,UAAW,CACrE6P,YAAa,CACXxQ,MAAO2xH,EACPlsG,UAAU,EACV0O,cAAc,KAGdy9F,GAAY,GAAgBD,EAAUC,EAC5C,CAoEE,CAAUsG,EAAuBtD,GACjC,IAtFoB3rB,EAAaE,EAAYC,EAsFzC+pB,EAAS,GAAa+E,GAC1B,SAASA,IACP,IAAIpuB,GAtGR,SAAyBd,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI7nE,UAAU,oCAExB,CAmGI,CAAgBxwB,KAAMsnH,GACtB,IAAK,IAAIlrF,EAAOjqC,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Er5B,EAAKq5B,GAAQlqC,UAAUkqC,GAKzB,OAFA,GAAgB,GADhB68D,EAAQqpB,EAAOj0H,KAAK4U,MAAMq/G,EAAQ,CAACviH,MAAM2iC,OAAO3/B,KACD,WAAY,KAC3D,GAAgB,GAAuBk2F,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAC3HA,CACT,CAmEA,OApKoBb,EAkGPivB,GAlGoB/uB,EAkGG,CAAC,CACnC7oG,IAAK,QACLN,MAAO,SAAeu0H,EAAY9T,EAAO3wF,GACvC,IAAIy/F,EAAgB,SAAuBvvH,GACzC,OAAOA,EAAQ,CACjB,EACA,OAAQygH,GAEN,IAAK,IACH,OAAOyU,GAASG,GAAoBL,GAAuBT,GAAahF,GAG1E,IAAK,KACH,OAAO2F,GAASS,GAAa,EAAGpB,GAAahF,GAG/C,IAAK,KACH,OAAO2F,GAASplG,EAAM89F,cAAc2G,EAAY,CAC9C3tC,KAAM,UACJ2oC,GAGN,IAAK,MACH,OAAOz/F,EAAMi9D,MAAMwnC,EAAY,CAC7BpsG,MAAO,cACP/E,QAAS,gBACL0M,EAAMi9D,MAAMwnC,EAAY,CAC5BpsG,MAAO,SACP/E,QAAS,eAIb,IAAK,QACH,OAAO0M,EAAMi9D,MAAMwnC,EAAY,CAC7BpsG,MAAO,SACP/E,QAAS,eAKb,QACE,OAAO0M,EAAMi9D,MAAMwnC,EAAY,CAC7BpsG,MAAO,OACP/E,QAAS,gBACL0M,EAAMi9D,MAAMwnC,EAAY,CAC5BpsG,MAAO,cACP/E,QAAS,gBACL0M,EAAMi9D,MAAMwnC,EAAY,CAC5BpsG,MAAO,SACP/E,QAAS,eAGjB,GACC,CACD9iB,IAAK,WACLN,MAAO,SAAkBmgD,EAAOngD,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACDM,IAAK,MACLN,MAAO,SAAamjC,EAAMw0F,EAAQ33H,GAGhC,OAFAmjC,EAAK40F,YAAY/3H,EAAO,GACxBmjC,EAAK0xF,YAAY,EAAG,EAAG,EAAG,GACnB1xF,CACT,MAjKc,GAAkB8lE,EAAYtoG,UAAWwoG,GACrDC,GAAa,GAAkBH,EAAaG,GAkKzC8uB,CACT,CAjFgD,CAiF9C,GC7LF,IAAIC,GAAuB,OACZ,SAASC,GAAW/H,EAAWr7G,GAC5C61G,EAAa,EAAG9nH,WAChB,IAAIogC,EAAOqrE,EAAO6hB,GACdtwE,EAAO22E,GAAevzF,EAAMnuB,GAASouF,UCH5B,SAA4BitB,EAAWr7G,GACpD,IAAImpB,EAAM6T,EAAOqD,EAAO8hF,EAAuBP,EAAiBC,EAAuBC,EAAuBC,EAC9GlM,EAAa,EAAG9nH,WAChB,IAAI4rG,EAAiB8nB,KACjBvG,EAAwBC,EAAm3B,QAAx2BhyF,EAAyjB,QAAjjB6T,EAAoe,QAA3dqD,EAAsH,QAA7G8hF,EAAoC,OAAZniH,QAAgC,IAAZA,OAAqB,EAASA,EAAQk7G,6BAA6D,IAA1BiH,EAAmCA,EAAoC,OAAZniH,QAAgC,IAAZA,GAAqE,QAAtC4hH,EAAkB5hH,EAAQ2L,cAAwC,IAApBi2G,GAA4F,QAArDC,EAAwBD,EAAgB5hH,eAA+C,IAA1B6hH,OAA5J,EAAwMA,EAAsB3G,6BAA6C,IAAV76E,EAAmBA,EAAQs5D,EAAeuhB,6BAA6C,IAAVl+E,EAAmBA,EAA4D,QAAnD8kF,EAAwBnoB,EAAehuF,cAA8C,IAA1Bm2G,GAAyG,QAA5DC,EAAyBD,EAAsB9hH,eAAgD,IAA3B+hH,OAA9E,EAA2HA,EAAuB7G,6BAA4C,IAAT/xF,EAAkBA,EAAO,GAC56B8uD,EAAOiqC,GAAe7G,EAAWr7G,GACjCqjH,EAAY,IAAI30F,KAAK,GAIzB,OAHA20F,EAAUlH,eAAelkC,EAAM,EAAGijC,GAClCmI,EAAUxD,YAAY,EAAG,EAAG,EAAG,GACpB6B,GAAe2B,EAAWrjH,EAEvC,CDRuDsjH,CAAmBn1F,EAAMnuB,GAASouF,UAIvF,OAAOliG,KAAK0W,MAAMmoC,EAAOo4E,IAAwB,CACnD,CEbA,SAAS,GAAQnnH,GAYf,OARE,GADoB,oBAAXlR,QAAoD,kBAApBA,OAAO6hC,SACtC,SAAiB3wB,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EAEK,GAAQA,EACjB,CAMA,SAAS,GAAkB2D,EAAQsb,GACjC,IAAK,IAAIlxB,EAAI,EAAGA,EAAIkxB,EAAMjtB,OAAQjE,IAAK,CACrC,IAAIs8D,EAAaprC,EAAMlxB,GACvBs8D,EAAW17D,WAAa07D,EAAW17D,aAAc,EACjD07D,EAAWlnC,cAAe,EACtB,UAAWknC,IAAYA,EAAW51C,UAAW,GACjDhmB,OAAOC,eAAeiV,EAAQ0mD,EAAW/6D,IAAK+6D,EAChD,CACF,CAmBA,SAAS,GAAgB77D,EAAGqB,GAK1B,OAJA,GAAkBpB,OAAOqyH,gBAAkB,SAAyBtyH,EAAGqB,GAErE,OADArB,EAAE2/C,UAAYt+C,EACPrB,CACT,EACO,GAAgBA,EAAGqB,EAC5B,CACA,SAAS,GAAamxH,GACpB,IAAIC,EAyBN,WACE,GAAuB,qBAAZz/F,UAA4BA,QAAQ0/F,UAAW,OAAO,EACjE,GAAI1/F,QAAQ0/F,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVtgG,MAAsB,OAAO,EACxC,IAEE,OADAugG,QAAQzxH,UAAUm0F,QAAQ51F,KAAKszB,QAAQ0/F,UAAUE,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOlwH,GACP,OAAO,CACT,CACF,CAnCkC,GAChC,OAAO,WACL,IACEq3B,EADE+4F,EAAQ,GAAgBN,GAE5B,GAAIC,EAA2B,CAC7B,IAAIO,EAAY,GAAgB5hH,MAAMJ,YACtC+oB,EAAS/G,QAAQ0/F,UAAUI,EAAOvvH,UAAWyvH,EAC/C,MACEj5F,EAAS+4F,EAAMx+G,MAAMlD,KAAM7N,WAE7B,OAGJ,SAAoCiiH,EAAM9lH,GACxC,GAAIA,IAA2B,WAAlB,GAAQA,IAAsC,oBAATA,GAChD,OAAOA,EAET,OAAO,GAAuB8lH,EAChC,CARW,CAA2Bp0G,KAAM2oB,EAC1C,CACF,CAOA,SAAS,GAAuByrF,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI2N,eAAe,6DAE3B,OAAO3N,CACT,CAYA,SAAS,GAAgBxlH,GAIvB,OAHA,GAAkBC,OAAOqyH,eAAiBryH,OAAOgzB,eAAiB,SAAyBjzB,GACzF,OAAOA,EAAE2/C,WAAa1/C,OAAOgzB,eAAejzB,EAC9C,EACO,GAAgBA,EACzB,CACA,SAAS,GAAgBwR,EAAK1Q,EAAKN,GAWjC,OAVIM,KAAO0Q,EACTvR,OAAOC,eAAesR,EAAK1Q,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZw0B,cAAc,EACd1O,UAAU,IAGZzU,EAAI1Q,GAAON,EAENgR,CACT,CAOO,IAAI,GAA+B,SAAU4jH,IAlFpD,SAAmBjD,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIxwF,UAAU,sDAEtBuwF,EAAShxH,UAAYlB,OAAOY,OAAOuxH,GAAcA,EAAWjxH,UAAW,CACrE6P,YAAa,CACXxQ,MAAO2xH,EACPlsG,UAAU,EACV0O,cAAc,KAGdy9F,GAAY,GAAgBD,EAAUC,EAC5C,CAuEE,CAAU2G,EAAiB3D,GAC3B,IAzFoB3rB,EAAaE,EAAYC,EAyFzC+pB,EAAS,GAAaoF,GAC1B,SAASA,IACP,IAAIzuB,GAzGR,SAAyBd,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI7nE,UAAU,oCAExB,CAsGI,CAAgBxwB,KAAM2nH,GACtB,IAAK,IAAIvrF,EAAOjqC,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Er5B,EAAKq5B,GAAQlqC,UAAUkqC,GAKzB,OAFA,GAAgB,GADhB68D,EAAQqpB,EAAOj0H,KAAK4U,MAAMq/G,EAAQ,CAACviH,MAAM2iC,OAAO3/B,KACD,WAAY,KAC3D,GAAgB,GAAuBk2F,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAC3HA,CACT,CA0BA,OA9HoBb,EAqGPsvB,EArGoBpvB,EAqGH,CAAC,CAC7B7oG,IAAK,QACLN,MAAO,SAAeu0H,EAAY9T,EAAO3wF,GACvC,OAAQ2wF,GACN,IAAK,IACH,OAAO4U,GAAoBL,GAAsBT,GACnD,IAAK,KACH,OAAOzkG,EAAM89F,cAAc2G,EAAY,CACrC3tC,KAAM,SAEV,QACE,OAAO+uC,GAAalV,EAAMz9G,OAAQuxH,GAExC,GACC,CACDj0H,IAAK,WACLN,MAAO,SAAkBmgD,EAAOngD,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACDM,IAAK,MACLN,MAAO,SAAamjC,EAAMw0F,EAAQ33H,EAAOgV,GACvC,OAAO0hH,GCnJE,SAAoBrG,EAAWmI,EAAWxjH,GACvD61G,EAAa,EAAG9nH,WAChB,IAAIogC,EAAOqrE,EAAO6hB,GACdvjC,EAAOqjC,EAAUqI,GACjBz4E,EAAOq4E,GAAWj1F,EAAMnuB,GAAW83E,EAEvC,OADA3pD,EAAK8zF,WAAW9zF,EAAK6wF,aAAsB,EAAPj0E,GAC7B5c,CACT,CD4I4Bs1F,CAAWt1F,EAAMnjC,EAAOgV,GAAUA,EAC1D,IA3HEm0F,GAAY,GAAkBF,EAAYtoG,UAAWwoG,GACrDC,GAAa,GAAkBH,EAAaG,GA4HzCmvB,CACT,CAxC0C,CAwCxC,GExJa,SAASG,GAAkBrI,GACxCxF,EAAa,EAAG9nH,WAChB,IAAIogC,EAAOqrE,EAAO6hB,GACdpjC,EAAO9pD,EAAK2wF,iBACZ6E,EAA4B,IAAIj1F,KAAK,GACzCi1F,EAA0BxH,eAAelkC,EAAO,EAAG,EAAG,GACtD0rC,EAA0B9D,YAAY,EAAG,EAAG,EAAG,GAC/C,IAAIwC,EAAkBI,GAAkBkB,GACpCC,EAA4B,IAAIl1F,KAAK,GACzCk1F,EAA0BzH,eAAelkC,EAAM,EAAG,GAClD2rC,EAA0B/D,YAAY,EAAG,EAAG,EAAG,GAC/C,IAAI0C,EAAkBE,GAAkBmB,GACxC,OAAIz1F,EAAKigE,WAAai0B,EAAgBj0B,UAC7BnW,EAAO,EACL9pD,EAAKigE,WAAam0B,EAAgBn0B,UACpCnW,EAEAA,EAAO,CAElB,CClBA,IAAI,GAAuB,OACZ,SAAS4rC,GAAcxI,GACpCxF,EAAa,EAAG9nH,WAChB,IAAIogC,EAAOqrE,EAAO6hB,GACdtwE,EAAO03E,GAAkBt0F,GAAMigE,UCLtB,SAA+BitB,GAC5CxF,EAAa,EAAG9nH,WAChB,IAAIkqF,EAAOyrC,GAAkBrI,GACzByI,EAAkB,IAAIp1F,KAAK,GAI/B,OAHAo1F,EAAgB3H,eAAelkC,EAAM,EAAG,GACxC6rC,EAAgBjE,YAAY,EAAG,EAAG,EAAG,GAC1B4C,GAAkBqB,EAE/B,CDHiDC,CAAsB51F,GAAMigE,UAI3E,OAAOliG,KAAK0W,MAAMmoC,EAAO,IAAwB,CACnD,CEbA,SAAS,GAAQ/uC,GAYf,OARE,GADoB,oBAAXlR,QAAoD,kBAApBA,OAAO6hC,SACtC,SAAiB3wB,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EAEK,GAAQA,EACjB,CAMA,SAAS,GAAkB2D,EAAQsb,GACjC,IAAK,IAAIlxB,EAAI,EAAGA,EAAIkxB,EAAMjtB,OAAQjE,IAAK,CACrC,IAAIs8D,EAAaprC,EAAMlxB,GACvBs8D,EAAW17D,WAAa07D,EAAW17D,aAAc,EACjD07D,EAAWlnC,cAAe,EACtB,UAAWknC,IAAYA,EAAW51C,UAAW,GACjDhmB,OAAOC,eAAeiV,EAAQ0mD,EAAW/6D,IAAK+6D,EAChD,CACF,CAmBA,SAAS,GAAgB77D,EAAGqB,GAK1B,OAJA,GAAkBpB,OAAOqyH,gBAAkB,SAAyBtyH,EAAGqB,GAErE,OADArB,EAAE2/C,UAAYt+C,EACPrB,CACT,EACO,GAAgBA,EAAGqB,EAC5B,CACA,SAAS,GAAamxH,GACpB,IAAIC,EAyBN,WACE,GAAuB,qBAAZz/F,UAA4BA,QAAQ0/F,UAAW,OAAO,EACjE,GAAI1/F,QAAQ0/F,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVtgG,MAAsB,OAAO,EACxC,IAEE,OADAugG,QAAQzxH,UAAUm0F,QAAQ51F,KAAKszB,QAAQ0/F,UAAUE,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOlwH,GACP,OAAO,CACT,CACF,CAnCkC,GAChC,OAAO,WACL,IACEq3B,EADE+4F,EAAQ,GAAgBN,GAE5B,GAAIC,EAA2B,CAC7B,IAAIO,EAAY,GAAgB5hH,MAAMJ,YACtC+oB,EAAS/G,QAAQ0/F,UAAUI,EAAOvvH,UAAWyvH,EAC/C,MACEj5F,EAAS+4F,EAAMx+G,MAAMlD,KAAM7N,WAE7B,OAGJ,SAAoCiiH,EAAM9lH,GACxC,GAAIA,IAA2B,WAAlB,GAAQA,IAAsC,oBAATA,GAChD,OAAOA,EAET,OAAO,GAAuB8lH,EAChC,CARW,CAA2Bp0G,KAAM2oB,EAC1C,CACF,CAOA,SAAS,GAAuByrF,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI2N,eAAe,6DAE3B,OAAO3N,CACT,CAYA,SAAS,GAAgBxlH,GAIvB,OAHA,GAAkBC,OAAOqyH,eAAiBryH,OAAOgzB,eAAiB,SAAyBjzB,GACzF,OAAOA,EAAE2/C,WAAa1/C,OAAOgzB,eAAejzB,EAC9C,EACO,GAAgBA,EACzB,CACA,SAAS,GAAgBwR,EAAK1Q,EAAKN,GAWjC,OAVIM,KAAO0Q,EACTvR,OAAOC,eAAesR,EAAK1Q,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZw0B,cAAc,EACd1O,UAAU,IAGZzU,EAAI1Q,GAAON,EAENgR,CACT,CAOO,IAAI,GAA6B,SAAU4jH,IAlFlD,SAAmBjD,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIxwF,UAAU,sDAEtBuwF,EAAShxH,UAAYlB,OAAOY,OAAOuxH,GAAcA,EAAWjxH,UAAW,CACrE6P,YAAa,CACXxQ,MAAO2xH,EACPlsG,UAAU,EACV0O,cAAc,KAGdy9F,GAAY,GAAgBD,EAAUC,EAC5C,CAuEE,CAAUoH,EAAepE,GACzB,IAzFoB3rB,EAAaE,EAAYC,EAyFzC+pB,EAAS,GAAa6F,GAC1B,SAASA,IACP,IAAIlvB,GAzGR,SAAyBd,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI7nE,UAAU,oCAExB,CAsGI,CAAgBxwB,KAAMooH,GACtB,IAAK,IAAIhsF,EAAOjqC,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Er5B,EAAKq5B,GAAQlqC,UAAUkqC,GAKzB,OAFA,GAAgB,GADhB68D,EAAQqpB,EAAOj0H,KAAK4U,MAAMq/G,EAAQ,CAACviH,MAAM2iC,OAAO3/B,KACD,WAAY,KAC3D,GAAgB,GAAuBk2F,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAChIA,CACT,CA0BA,OA9HoBb,EAqGP+vB,EArGoB7vB,EAqGL,CAAC,CAC3B7oG,IAAK,QACLN,MAAO,SAAeu0H,EAAY9T,EAAO3wF,GACvC,OAAQ2wF,GACN,IAAK,IACH,OAAO4U,GAAoBL,GAAsBT,GACnD,IAAK,KACH,OAAOzkG,EAAM89F,cAAc2G,EAAY,CACrC3tC,KAAM,SAEV,QACE,OAAO+uC,GAAalV,EAAMz9G,OAAQuxH,GAExC,GACC,CACDj0H,IAAK,WACLN,MAAO,SAAkBmgD,EAAOngD,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACDM,IAAK,MACLN,MAAO,SAAamjC,EAAMw0F,EAAQ33H,GAChC,OAAOy3H,GCnJE,SAAuBpH,EAAW4I,GAC/CpO,EAAa,EAAG9nH,WAChB,IAAIogC,EAAOqrE,EAAO6hB,GACd6I,EAAU/I,EAAU8I,GACpBl5E,EAAO84E,GAAc11F,GAAQ+1F,EAEjC,OADA/1F,EAAK8zF,WAAW9zF,EAAK6wF,aAAsB,EAAPj0E,GAC7B5c,CACT,CD4I+Bg2F,CAAch2F,EAAMnjC,GAC/C,IA3HEmpG,GAAY,GAAkBF,EAAYtoG,UAAWwoG,GACrDC,GAAa,GAAkBH,EAAaG,GA4HzC4vB,CACT,CAxCwC,CAwCtC,GE3JF,SAAS,GAAQhoH,GAYf,OARE,GADoB,oBAAXlR,QAAoD,kBAApBA,OAAO6hC,SACtC,SAAiB3wB,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EAEK,GAAQA,EACjB,CAMA,SAAS,GAAkB2D,EAAQsb,GACjC,IAAK,IAAIlxB,EAAI,EAAGA,EAAIkxB,EAAMjtB,OAAQjE,IAAK,CACrC,IAAIs8D,EAAaprC,EAAMlxB,GACvBs8D,EAAW17D,WAAa07D,EAAW17D,aAAc,EACjD07D,EAAWlnC,cAAe,EACtB,UAAWknC,IAAYA,EAAW51C,UAAW,GACjDhmB,OAAOC,eAAeiV,EAAQ0mD,EAAW/6D,IAAK+6D,EAChD,CACF,CAmBA,SAAS,GAAgB77D,EAAGqB,GAK1B,OAJA,GAAkBpB,OAAOqyH,gBAAkB,SAAyBtyH,EAAGqB,GAErE,OADArB,EAAE2/C,UAAYt+C,EACPrB,CACT,EACO,GAAgBA,EAAGqB,EAC5B,CACA,SAAS,GAAamxH,GACpB,IAAIC,EAyBN,WACE,GAAuB,qBAAZz/F,UAA4BA,QAAQ0/F,UAAW,OAAO,EACjE,GAAI1/F,QAAQ0/F,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVtgG,MAAsB,OAAO,EACxC,IAEE,OADAugG,QAAQzxH,UAAUm0F,QAAQ51F,KAAKszB,QAAQ0/F,UAAUE,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOlwH,GACP,OAAO,CACT,CACF,CAnCkC,GAChC,OAAO,WACL,IACEq3B,EADE+4F,EAAQ,GAAgBN,GAE5B,GAAIC,EAA2B,CAC7B,IAAIO,EAAY,GAAgB5hH,MAAMJ,YACtC+oB,EAAS/G,QAAQ0/F,UAAUI,EAAOvvH,UAAWyvH,EAC/C,MACEj5F,EAAS+4F,EAAMx+G,MAAMlD,KAAM7N,WAE7B,OAGJ,SAAoCiiH,EAAM9lH,GACxC,GAAIA,IAA2B,WAAlB,GAAQA,IAAsC,oBAATA,GAChD,OAAOA,EAET,OAAO,GAAuB8lH,EAChC,CARW,CAA2Bp0G,KAAM2oB,EAC1C,CACF,CAOA,SAAS,GAAuByrF,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI2N,eAAe,6DAE3B,OAAO3N,CACT,CAYA,SAAS,GAAgBxlH,GAIvB,OAHA,GAAkBC,OAAOqyH,eAAiBryH,OAAOgzB,eAAiB,SAAyBjzB,GACzF,OAAOA,EAAE2/C,WAAa1/C,OAAOgzB,eAAejzB,EAC9C,EACO,GAAgBA,EACzB,CACA,SAAS,GAAgBwR,EAAK1Q,EAAKN,GAWjC,OAVIM,KAAO0Q,EACTvR,OAAOC,eAAesR,EAAK1Q,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZw0B,cAAc,EACd1O,UAAU,IAGZzU,EAAI1Q,GAAON,EAENgR,CACT,CAIA,IAAIooH,GAAgB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAC7DC,GAA0B,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAEhE,GAA0B,SAAUzE,IAlF/C,SAAmBjD,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIxwF,UAAU,sDAEtBuwF,EAAShxH,UAAYlB,OAAOY,OAAOuxH,GAAcA,EAAWjxH,UAAW,CACrE6P,YAAa,CACXxQ,MAAO2xH,EACPlsG,UAAU,EACV0O,cAAc,KAGdy9F,GAAY,GAAgBD,EAAUC,EAC5C,CAuEE,CAAU0H,EAAY1E,GACtB,IAzFoB3rB,EAAaE,EAAYC,EAyFzC+pB,EAAS,GAAamG,GAC1B,SAASA,IACP,IAAIxvB,GAzGR,SAAyBd,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI7nE,UAAU,oCAExB,CAsGI,CAAgBxwB,KAAM0oH,GACtB,IAAK,IAAItsF,EAAOjqC,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Er5B,EAAKq5B,GAAQlqC,UAAUkqC,GAMzB,OAHA,GAAgB,GADhB68D,EAAQqpB,EAAOj0H,KAAK4U,MAAMq/G,EAAQ,CAACviH,MAAM2iC,OAAO3/B,KACD,WAAY,IAC3D,GAAgB,GAAuBk2F,GAAQ,cAAe,GAC9D,GAAgB,GAAuBA,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MACtHA,CACT,CAmCA,OAxIoBb,EAsGPqwB,GAtGoBnwB,EAsGR,CAAC,CACxB7oG,IAAK,QACLN,MAAO,SAAeu0H,EAAY9T,EAAO3wF,GACvC,OAAQ2wF,GACN,IAAK,IACH,OAAO4U,GAAoBL,GAAsBT,GACnD,IAAK,KACH,OAAOzkG,EAAM89F,cAAc2G,EAAY,CACrC3tC,KAAM,SAEV,QACE,OAAO+uC,GAAalV,EAAMz9G,OAAQuxH,GAExC,GACC,CACDj0H,IAAK,WACLN,MAAO,SAAkBmjC,EAAMnjC,GAC7B,IACIu5H,EAAalD,GADNlzF,EAAK2wF,kBAEZ/mC,EAAQ5pD,EAAK4wF,cACjB,OAAIwF,EACKv5H,GAAS,GAAKA,GAASq5H,GAAwBtsC,GAE/C/sF,GAAS,GAAKA,GAASo5H,GAAcrsC,EAEhD,GACC,CACDzsF,IAAK,MACLN,MAAO,SAAamjC,EAAMw0F,EAAQ33H,GAGhC,OAFAmjC,EAAK8zF,WAAWj3H,GAChBmjC,EAAK0xF,YAAY,EAAG,EAAG,EAAG,GACnB1xF,CACT,MArIc,GAAkB8lE,EAAYtoG,UAAWwoG,GACrDC,GAAa,GAAkBH,EAAaG,GAsIzCkwB,CACT,CAlDqC,CAkDnC,GCrKF,SAAS,GAAQtoH,GAYf,OARE,GADoB,oBAAXlR,QAAoD,kBAApBA,OAAO6hC,SACtC,SAAiB3wB,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EAEK,GAAQA,EACjB,CAMA,SAAS,GAAkB2D,EAAQsb,GACjC,IAAK,IAAIlxB,EAAI,EAAGA,EAAIkxB,EAAMjtB,OAAQjE,IAAK,CACrC,IAAIs8D,EAAaprC,EAAMlxB,GACvBs8D,EAAW17D,WAAa07D,EAAW17D,aAAc,EACjD07D,EAAWlnC,cAAe,EACtB,UAAWknC,IAAYA,EAAW51C,UAAW,GACjDhmB,OAAOC,eAAeiV,EAAQ0mD,EAAW/6D,IAAK+6D,EAChD,CACF,CAmBA,SAAS,GAAgB77D,EAAGqB,GAK1B,OAJA,GAAkBpB,OAAOqyH,gBAAkB,SAAyBtyH,EAAGqB,GAErE,OADArB,EAAE2/C,UAAYt+C,EACPrB,CACT,EACO,GAAgBA,EAAGqB,EAC5B,CACA,SAAS,GAAamxH,GACpB,IAAIC,EAyBN,WACE,GAAuB,qBAAZz/F,UAA4BA,QAAQ0/F,UAAW,OAAO,EACjE,GAAI1/F,QAAQ0/F,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVtgG,MAAsB,OAAO,EACxC,IAEE,OADAugG,QAAQzxH,UAAUm0F,QAAQ51F,KAAKszB,QAAQ0/F,UAAUE,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOlwH,GACP,OAAO,CACT,CACF,CAnCkC,GAChC,OAAO,WACL,IACEq3B,EADE+4F,EAAQ,GAAgBN,GAE5B,GAAIC,EAA2B,CAC7B,IAAIO,EAAY,GAAgB5hH,MAAMJ,YACtC+oB,EAAS/G,QAAQ0/F,UAAUI,EAAOvvH,UAAWyvH,EAC/C,MACEj5F,EAAS+4F,EAAMx+G,MAAMlD,KAAM7N,WAE7B,OAGJ,SAAoCiiH,EAAM9lH,GACxC,GAAIA,IAA2B,WAAlB,GAAQA,IAAsC,oBAATA,GAChD,OAAOA,EAET,OAAO,GAAuB8lH,EAChC,CARW,CAA2Bp0G,KAAM2oB,EAC1C,CACF,CAOA,SAAS,GAAuByrF,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI2N,eAAe,6DAE3B,OAAO3N,CACT,CAYA,SAAS,GAAgBxlH,GAIvB,OAHA,GAAkBC,OAAOqyH,eAAiBryH,OAAOgzB,eAAiB,SAAyBjzB,GACzF,OAAOA,EAAE2/C,WAAa1/C,OAAOgzB,eAAejzB,EAC9C,EACO,GAAgBA,EACzB,CACA,SAAS,GAAgBwR,EAAK1Q,EAAKN,GAWjC,OAVIM,KAAO0Q,EACTvR,OAAOC,eAAesR,EAAK1Q,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZw0B,cAAc,EACd1O,UAAU,IAGZzU,EAAI1Q,GAAON,EAENgR,CACT,CAIO,IAAI,GAA+B,SAAU4jH,IA/EpD,SAAmBjD,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIxwF,UAAU,sDAEtBuwF,EAAShxH,UAAYlB,OAAOY,OAAOuxH,GAAcA,EAAWjxH,UAAW,CACrE6P,YAAa,CACXxQ,MAAO2xH,EACPlsG,UAAU,EACV0O,cAAc,KAGdy9F,GAAY,GAAgBD,EAAUC,EAC5C,CAoEE,CAAU4H,EAAiB5E,GAC3B,IAtFoB3rB,EAAaE,EAAYC,EAsFzC+pB,EAAS,GAAaqG,GAC1B,SAASA,IACP,IAAI1vB,GAtGR,SAAyBd,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI7nE,UAAU,oCAExB,CAmGI,CAAgBxwB,KAAM4oH,GACtB,IAAK,IAAIxsF,EAAOjqC,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Er5B,EAAKq5B,GAAQlqC,UAAUkqC,GAMzB,OAHA,GAAgB,GADhB68D,EAAQqpB,EAAOj0H,KAAK4U,MAAMq/G,EAAQ,CAACviH,MAAM2iC,OAAO3/B,KACD,WAAY,IAC3D,GAAgB,GAAuBk2F,GAAQ,cAAe,GAC9D,GAAgB,GAAuBA,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MACrIA,CACT,CAmCA,OArIoBb,EAmGPuwB,GAnGoBrwB,EAmGH,CAAC,CAC7B7oG,IAAK,QACLN,MAAO,SAAeu0H,EAAY9T,EAAO3wF,GACvC,OAAQ2wF,GACN,IAAK,IACL,IAAK,KACH,OAAO4U,GAAoBL,GAA2BT,GACxD,IAAK,KACH,OAAOzkG,EAAM89F,cAAc2G,EAAY,CACrC3tC,KAAM,SAEV,QACE,OAAO+uC,GAAalV,EAAMz9G,OAAQuxH,GAExC,GACC,CACDj0H,IAAK,WACLN,MAAO,SAAkBmjC,EAAMnjC,GAG7B,OADiBq2H,GADNlzF,EAAK2wF,kBAGP9zH,GAAS,GAAKA,GAAS,IAEvBA,GAAS,GAAKA,GAAS,GAElC,GACC,CACDM,IAAK,MACLN,MAAO,SAAamjC,EAAMw0F,EAAQ33H,GAGhC,OAFAmjC,EAAK40F,YAAY,EAAG/3H,GACpBmjC,EAAK0xF,YAAY,EAAG,EAAG,EAAG,GACnB1xF,CACT,MAlIc,GAAkB8lE,EAAYtoG,UAAWwoG,GACrDC,GAAa,GAAkBH,EAAaG,GAmIzCowB,CACT,CAlD0C,CAkDxC,GC9Ja,SAASC,GAAUpJ,EAAWqJ,EAAU1kH,GACrD,IAAImpB,EAAM6T,EAAOqD,EAAOshF,EAAuBC,EAAiBC,EAAuBC,EAAuBC,EAC9GlM,EAAa,EAAG9nH,WAChB,IAAI4rG,EAAiB8nB,KACjBxG,EAAeE,EAA+0B,QAAp0BhyF,EAA8hB,QAAthB6T,EAAkd,QAAzcqD,EAA6G,QAApGshF,EAAoC,OAAZ3hH,QAAgC,IAAZA,OAAqB,EAASA,EAAQi7G,oBAAoD,IAA1B0G,EAAmCA,EAAoC,OAAZ3hH,QAAgC,IAAZA,GAAqE,QAAtC4hH,EAAkB5hH,EAAQ2L,cAAwC,IAApBi2G,GAA4F,QAArDC,EAAwBD,EAAgB5hH,eAA+C,IAA1B6hH,OAA5J,EAAwMA,EAAsB5G,oBAAoC,IAAV56E,EAAmBA,EAAQs5D,EAAeshB,oBAAoC,IAAVj+E,EAAmBA,EAA4D,QAAnD8kF,EAAwBnoB,EAAehuF,cAA8C,IAA1Bm2G,GAAyG,QAA5DC,EAAyBD,EAAsB9hH,eAAgD,IAA3B+hH,OAA9E,EAA2HA,EAAuB9G,oBAAmC,IAAT9xF,EAAkBA,EAAO,GAEn4B,KAAM8xF,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAIwB,WAAW,oDAEvB,IAAItuF,EAAOqrE,EAAO6hB,GACdxjC,EAAMsjC,EAAUuJ,GAIhB35E,IAFY8sC,EAAM,EACM,GAAK,EACVojC,EAAe,EAAI,GAAKpjC,EAH9B1pD,EAAK6zF,YAKtB,OADA7zF,EAAK8zF,WAAW9zF,EAAK6wF,aAAej0E,GAC7B5c,CACT,CCrBA,SAAS,GAAQnyB,GAYf,OARE,GADoB,oBAAXlR,QAAoD,kBAApBA,OAAO6hC,SACtC,SAAiB3wB,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EAEK,GAAQA,EACjB,CAMA,SAAS,GAAkB2D,EAAQsb,GACjC,IAAK,IAAIlxB,EAAI,EAAGA,EAAIkxB,EAAMjtB,OAAQjE,IAAK,CACrC,IAAIs8D,EAAaprC,EAAMlxB,GACvBs8D,EAAW17D,WAAa07D,EAAW17D,aAAc,EACjD07D,EAAWlnC,cAAe,EACtB,UAAWknC,IAAYA,EAAW51C,UAAW,GACjDhmB,OAAOC,eAAeiV,EAAQ0mD,EAAW/6D,IAAK+6D,EAChD,CACF,CAmBA,SAAS,GAAgB77D,EAAGqB,GAK1B,OAJA,GAAkBpB,OAAOqyH,gBAAkB,SAAyBtyH,EAAGqB,GAErE,OADArB,EAAE2/C,UAAYt+C,EACPrB,CACT,EACO,GAAgBA,EAAGqB,EAC5B,CACA,SAAS,GAAamxH,GACpB,IAAIC,EAyBN,WACE,GAAuB,qBAAZz/F,UAA4BA,QAAQ0/F,UAAW,OAAO,EACjE,GAAI1/F,QAAQ0/F,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVtgG,MAAsB,OAAO,EACxC,IAEE,OADAugG,QAAQzxH,UAAUm0F,QAAQ51F,KAAKszB,QAAQ0/F,UAAUE,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOlwH,GACP,OAAO,CACT,CACF,CAnCkC,GAChC,OAAO,WACL,IACEq3B,EADE+4F,EAAQ,GAAgBN,GAE5B,GAAIC,EAA2B,CAC7B,IAAIO,EAAY,GAAgB5hH,MAAMJ,YACtC+oB,EAAS/G,QAAQ0/F,UAAUI,EAAOvvH,UAAWyvH,EAC/C,MACEj5F,EAAS+4F,EAAMx+G,MAAMlD,KAAM7N,WAE7B,OAGJ,SAAoCiiH,EAAM9lH,GACxC,GAAIA,IAA2B,WAAlB,GAAQA,IAAsC,oBAATA,GAChD,OAAOA,EAET,OAAO,GAAuB8lH,EAChC,CARW,CAA2Bp0G,KAAM2oB,EAC1C,CACF,CAOA,SAAS,GAAuByrF,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI2N,eAAe,6DAE3B,OAAO3N,CACT,CAYA,SAAS,GAAgBxlH,GAIvB,OAHA,GAAkBC,OAAOqyH,eAAiBryH,OAAOgzB,eAAiB,SAAyBjzB,GACzF,OAAOA,EAAE2/C,WAAa1/C,OAAOgzB,eAAejzB,EAC9C,EACO,GAAgBA,EACzB,CACA,SAAS,GAAgBwR,EAAK1Q,EAAKN,GAWjC,OAVIM,KAAO0Q,EACTvR,OAAOC,eAAesR,EAAK1Q,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZw0B,cAAc,EACd1O,UAAU,IAGZzU,EAAI1Q,GAAON,EAENgR,CACT,CAIO,IAAI,GAAyB,SAAU4jH,IA/E9C,SAAmBjD,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIxwF,UAAU,sDAEtBuwF,EAAShxH,UAAYlB,OAAOY,OAAOuxH,GAAcA,EAAWjxH,UAAW,CACrE6P,YAAa,CACXxQ,MAAO2xH,EACPlsG,UAAU,EACV0O,cAAc,KAGdy9F,GAAY,GAAgBD,EAAUC,EAC5C,CAoEE,CAAU+H,EAAW/E,GACrB,IAtFoB3rB,EAAaE,EAAYC,EAsFzC+pB,EAAS,GAAawG,GAC1B,SAASA,IACP,IAAI7vB,GAtGR,SAAyBd,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI7nE,UAAU,oCAExB,CAmGI,CAAgBxwB,KAAM+oH,GACtB,IAAK,IAAI3sF,EAAOjqC,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Er5B,EAAKq5B,GAAQlqC,UAAUkqC,GAKzB,OAFA,GAAgB,GADhB68D,EAAQqpB,EAAOj0H,KAAK4U,MAAMq/G,EAAQ,CAACviH,MAAM2iC,OAAO3/B,KACD,WAAY,IAC3D,GAAgB,GAAuBk2F,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,MACxFA,CACT,CAoEA,OArKoBb,EAkGP0wB,GAlGoBxwB,EAkGT,CAAC,CACvB7oG,IAAK,QACLN,MAAO,SAAeu0H,EAAY9T,EAAO3wF,GACvC,OAAQ2wF,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAO3wF,EAAM+8D,IAAI0nC,EAAY,CAC3BpsG,MAAO,cACP/E,QAAS,gBACL0M,EAAM+8D,IAAI0nC,EAAY,CAC1BpsG,MAAO,QACP/E,QAAS,gBACL0M,EAAM+8D,IAAI0nC,EAAY,CAC1BpsG,MAAO,SACP/E,QAAS,eAIb,IAAK,QACH,OAAO0M,EAAM+8D,IAAI0nC,EAAY,CAC3BpsG,MAAO,SACP/E,QAAS,eAIb,IAAK,SACH,OAAO0M,EAAM+8D,IAAI0nC,EAAY,CAC3BpsG,MAAO,QACP/E,QAAS,gBACL0M,EAAM+8D,IAAI0nC,EAAY,CAC1BpsG,MAAO,SACP/E,QAAS,eAKb,QACE,OAAO0M,EAAM+8D,IAAI0nC,EAAY,CAC3BpsG,MAAO,OACP/E,QAAS,gBACL0M,EAAM+8D,IAAI0nC,EAAY,CAC1BpsG,MAAO,cACP/E,QAAS,gBACL0M,EAAM+8D,IAAI0nC,EAAY,CAC1BpsG,MAAO,QACP/E,QAAS,gBACL0M,EAAM+8D,IAAI0nC,EAAY,CAC1BpsG,MAAO,SACP/E,QAAS,eAGjB,GACC,CACD9iB,IAAK,WACLN,MAAO,SAAkBmgD,EAAOngD,GAC9B,OAAOA,GAAS,GAAKA,GAAS,CAChC,GACC,CACDM,IAAK,MACLN,MAAO,SAAamjC,EAAMw0F,EAAQ33H,EAAOgV,GAGvC,OAFAmuB,EAAOs2F,GAAUt2F,EAAMnjC,EAAOgV,IACzB6/G,YAAY,EAAG,EAAG,EAAG,GACnB1xF,CACT,MAlKc,GAAkB8lE,EAAYtoG,UAAWwoG,GACrDC,GAAa,GAAkBH,EAAaG,GAmKzCuwB,CACT,CAlFoC,CAkFlC,GClMF,SAAS,GAAQ3oH,GAYf,OARE,GADoB,oBAAXlR,QAAoD,kBAApBA,OAAO6hC,SACtC,SAAiB3wB,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EAEK,GAAQA,EACjB,CAMA,SAAS,GAAkB2D,EAAQsb,GACjC,IAAK,IAAIlxB,EAAI,EAAGA,EAAIkxB,EAAMjtB,OAAQjE,IAAK,CACrC,IAAIs8D,EAAaprC,EAAMlxB,GACvBs8D,EAAW17D,WAAa07D,EAAW17D,aAAc,EACjD07D,EAAWlnC,cAAe,EACtB,UAAWknC,IAAYA,EAAW51C,UAAW,GACjDhmB,OAAOC,eAAeiV,EAAQ0mD,EAAW/6D,IAAK+6D,EAChD,CACF,CAmBA,SAAS,GAAgB77D,EAAGqB,GAK1B,OAJA,GAAkBpB,OAAOqyH,gBAAkB,SAAyBtyH,EAAGqB,GAErE,OADArB,EAAE2/C,UAAYt+C,EACPrB,CACT,EACO,GAAgBA,EAAGqB,EAC5B,CACA,SAAS,GAAamxH,GACpB,IAAIC,EAyBN,WACE,GAAuB,qBAAZz/F,UAA4BA,QAAQ0/F,UAAW,OAAO,EACjE,GAAI1/F,QAAQ0/F,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVtgG,MAAsB,OAAO,EACxC,IAEE,OADAugG,QAAQzxH,UAAUm0F,QAAQ51F,KAAKszB,QAAQ0/F,UAAUE,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOlwH,GACP,OAAO,CACT,CACF,CAnCkC,GAChC,OAAO,WACL,IACEq3B,EADE+4F,EAAQ,GAAgBN,GAE5B,GAAIC,EAA2B,CAC7B,IAAIO,EAAY,GAAgB5hH,MAAMJ,YACtC+oB,EAAS/G,QAAQ0/F,UAAUI,EAAOvvH,UAAWyvH,EAC/C,MACEj5F,EAAS+4F,EAAMx+G,MAAMlD,KAAM7N,WAE7B,OAGJ,SAAoCiiH,EAAM9lH,GACxC,GAAIA,IAA2B,WAAlB,GAAQA,IAAsC,oBAATA,GAChD,OAAOA,EAET,OAAO,GAAuB8lH,EAChC,CARW,CAA2Bp0G,KAAM2oB,EAC1C,CACF,CAOA,SAAS,GAAuByrF,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI2N,eAAe,6DAE3B,OAAO3N,CACT,CAYA,SAAS,GAAgBxlH,GAIvB,OAHA,GAAkBC,OAAOqyH,eAAiBryH,OAAOgzB,eAAiB,SAAyBjzB,GACzF,OAAOA,EAAE2/C,WAAa1/C,OAAOgzB,eAAejzB,EAC9C,EACO,GAAgBA,EACzB,CACA,SAAS,GAAgBwR,EAAK1Q,EAAKN,GAWjC,OAVIM,KAAO0Q,EACTvR,OAAOC,eAAesR,EAAK1Q,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZw0B,cAAc,EACd1O,UAAU,IAGZzU,EAAI1Q,GAAON,EAENgR,CACT,CAKO,IAAI,GAA8B,SAAU4jH,IAhFnD,SAAmBjD,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIxwF,UAAU,sDAEtBuwF,EAAShxH,UAAYlB,OAAOY,OAAOuxH,GAAcA,EAAWjxH,UAAW,CACrE6P,YAAa,CACXxQ,MAAO2xH,EACPlsG,UAAU,EACV0O,cAAc,KAGdy9F,GAAY,GAAgBD,EAAUC,EAC5C,CAqEE,CAAUgI,EAAgBhF,GAC1B,IAvFoB3rB,EAAaE,EAAYC,EAuFzC+pB,EAAS,GAAayG,GAC1B,SAASA,IACP,IAAI9vB,GAvGR,SAAyBd,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI7nE,UAAU,oCAExB,CAoGI,CAAgBxwB,KAAMgpH,GACtB,IAAK,IAAI5sF,EAAOjqC,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Er5B,EAAKq5B,GAAQlqC,UAAUkqC,GAKzB,OAFA,GAAgB,GADhB68D,EAAQqpB,EAAOj0H,KAAK4U,MAAMq/G,EAAQ,CAACviH,MAAM2iC,OAAO3/B,KACD,WAAY,IAC3D,GAAgB,GAAuBk2F,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MACrIA,CACT,CAkFA,OApLoBb,EAmGP2wB,GAnGoBzwB,EAmGJ,CAAC,CAC5B7oG,IAAK,QACLN,MAAO,SAAeu0H,EAAY9T,EAAO3wF,EAAO9a,GAC9C,IAAIu6G,EAAgB,SAAuBvvH,GACzC,IAAI65H,EAA8C,EAA9B34H,KAAK4W,OAAO9X,EAAQ,GAAK,GAC7C,OAAQA,EAAQgV,EAAQi7G,aAAe,GAAK,EAAI4J,CAClD,EACA,OAAQpZ,GAEN,IAAK,IACL,IAAK,KAEH,OAAOyU,GAASS,GAAalV,EAAMz9G,OAAQuxH,GAAahF,GAG1D,IAAK,KACH,OAAO2F,GAASplG,EAAM89F,cAAc2G,EAAY,CAC9C3tC,KAAM,QACJ2oC,GAGN,IAAK,MACH,OAAOz/F,EAAM+8D,IAAI0nC,EAAY,CAC3BpsG,MAAO,cACP/E,QAAS,gBACL0M,EAAM+8D,IAAI0nC,EAAY,CAC1BpsG,MAAO,QACP/E,QAAS,gBACL0M,EAAM+8D,IAAI0nC,EAAY,CAC1BpsG,MAAO,SACP/E,QAAS,eAIb,IAAK,QACH,OAAO0M,EAAM+8D,IAAI0nC,EAAY,CAC3BpsG,MAAO,SACP/E,QAAS,eAIb,IAAK,SACH,OAAO0M,EAAM+8D,IAAI0nC,EAAY,CAC3BpsG,MAAO,QACP/E,QAAS,gBACL0M,EAAM+8D,IAAI0nC,EAAY,CAC1BpsG,MAAO,SACP/E,QAAS,eAKb,QACE,OAAO0M,EAAM+8D,IAAI0nC,EAAY,CAC3BpsG,MAAO,OACP/E,QAAS,gBACL0M,EAAM+8D,IAAI0nC,EAAY,CAC1BpsG,MAAO,cACP/E,QAAS,gBACL0M,EAAM+8D,IAAI0nC,EAAY,CAC1BpsG,MAAO,QACP/E,QAAS,gBACL0M,EAAM+8D,IAAI0nC,EAAY,CAC1BpsG,MAAO,SACP/E,QAAS,eAGjB,GACC,CACD9iB,IAAK,WACLN,MAAO,SAAkBmgD,EAAOngD,GAC9B,OAAOA,GAAS,GAAKA,GAAS,CAChC,GACC,CACDM,IAAK,MACLN,MAAO,SAAamjC,EAAMw0F,EAAQ33H,EAAOgV,GAGvC,OAFAmuB,EAAOs2F,GAAUt2F,EAAMnjC,EAAOgV,IACzB6/G,YAAY,EAAG,EAAG,EAAG,GACnB1xF,CACT,MAjLc,GAAkB8lE,EAAYtoG,UAAWwoG,GACrDC,GAAa,GAAkBH,EAAaG,GAkLzCwwB,CACT,CAhGyC,CAgGvC,GCjNF,SAAS,GAAQ5oH,GAYf,OARE,GADoB,oBAAXlR,QAAoD,kBAApBA,OAAO6hC,SACtC,SAAiB3wB,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EAEK,GAAQA,EACjB,CAMA,SAAS,GAAkB2D,EAAQsb,GACjC,IAAK,IAAIlxB,EAAI,EAAGA,EAAIkxB,EAAMjtB,OAAQjE,IAAK,CACrC,IAAIs8D,EAAaprC,EAAMlxB,GACvBs8D,EAAW17D,WAAa07D,EAAW17D,aAAc,EACjD07D,EAAWlnC,cAAe,EACtB,UAAWknC,IAAYA,EAAW51C,UAAW,GACjDhmB,OAAOC,eAAeiV,EAAQ0mD,EAAW/6D,IAAK+6D,EAChD,CACF,CAmBA,SAAS,GAAgB77D,EAAGqB,GAK1B,OAJA,GAAkBpB,OAAOqyH,gBAAkB,SAAyBtyH,EAAGqB,GAErE,OADArB,EAAE2/C,UAAYt+C,EACPrB,CACT,EACO,GAAgBA,EAAGqB,EAC5B,CACA,SAAS,GAAamxH,GACpB,IAAIC,EAyBN,WACE,GAAuB,qBAAZz/F,UAA4BA,QAAQ0/F,UAAW,OAAO,EACjE,GAAI1/F,QAAQ0/F,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVtgG,MAAsB,OAAO,EACxC,IAEE,OADAugG,QAAQzxH,UAAUm0F,QAAQ51F,KAAKszB,QAAQ0/F,UAAUE,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOlwH,GACP,OAAO,CACT,CACF,CAnCkC,GAChC,OAAO,WACL,IACEq3B,EADE+4F,EAAQ,GAAgBN,GAE5B,GAAIC,EAA2B,CAC7B,IAAIO,EAAY,GAAgB5hH,MAAMJ,YACtC+oB,EAAS/G,QAAQ0/F,UAAUI,EAAOvvH,UAAWyvH,EAC/C,MACEj5F,EAAS+4F,EAAMx+G,MAAMlD,KAAM7N,WAE7B,OAGJ,SAAoCiiH,EAAM9lH,GACxC,GAAIA,IAA2B,WAAlB,GAAQA,IAAsC,oBAATA,GAChD,OAAOA,EAET,OAAO,GAAuB8lH,EAChC,CARW,CAA2Bp0G,KAAM2oB,EAC1C,CACF,CAOA,SAAS,GAAuByrF,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI2N,eAAe,6DAE3B,OAAO3N,CACT,CAYA,SAAS,GAAgBxlH,GAIvB,OAHA,GAAkBC,OAAOqyH,eAAiBryH,OAAOgzB,eAAiB,SAAyBjzB,GACzF,OAAOA,EAAE2/C,WAAa1/C,OAAOgzB,eAAejzB,EAC9C,EACO,GAAgBA,EACzB,CACA,SAAS,GAAgBwR,EAAK1Q,EAAKN,GAWjC,OAVIM,KAAO0Q,EACTvR,OAAOC,eAAesR,EAAK1Q,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZw0B,cAAc,EACd1O,UAAU,IAGZzU,EAAI1Q,GAAON,EAENgR,CACT,CAKO,IAAI,GAAwC,SAAU4jH,IAhF7D,SAAmBjD,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIxwF,UAAU,sDAEtBuwF,EAAShxH,UAAYlB,OAAOY,OAAOuxH,GAAcA,EAAWjxH,UAAW,CACrE6P,YAAa,CACXxQ,MAAO2xH,EACPlsG,UAAU,EACV0O,cAAc,KAGdy9F,GAAY,GAAgBD,EAAUC,EAC5C,CAqEE,CAAUkI,EAA0BlF,GACpC,IAvFoB3rB,EAAaE,EAAYC,EAuFzC+pB,EAAS,GAAa2G,GAC1B,SAASA,IACP,IAAIhwB,GAvGR,SAAyBd,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI7nE,UAAU,oCAExB,CAoGI,CAAgBxwB,KAAMkpH,GACtB,IAAK,IAAI9sF,EAAOjqC,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Er5B,EAAKq5B,GAAQlqC,UAAUkqC,GAKzB,OAFA,GAAgB,GADhB68D,EAAQqpB,EAAOj0H,KAAK4U,MAAMq/G,EAAQ,CAACviH,MAAM2iC,OAAO3/B,KACD,WAAY,IAC3D,GAAgB,GAAuBk2F,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MACrIA,CACT,CAkFA,OApLoBb,EAmGP6wB,GAnGoB3wB,EAmGM,CAAC,CACtC7oG,IAAK,QACLN,MAAO,SAAeu0H,EAAY9T,EAAO3wF,EAAO9a,GAC9C,IAAIu6G,EAAgB,SAAuBvvH,GACzC,IAAI65H,EAA8C,EAA9B34H,KAAK4W,OAAO9X,EAAQ,GAAK,GAC7C,OAAQA,EAAQgV,EAAQi7G,aAAe,GAAK,EAAI4J,CAClD,EACA,OAAQpZ,GAEN,IAAK,IACL,IAAK,KAEH,OAAOyU,GAASS,GAAalV,EAAMz9G,OAAQuxH,GAAahF,GAG1D,IAAK,KACH,OAAO2F,GAASplG,EAAM89F,cAAc2G,EAAY,CAC9C3tC,KAAM,QACJ2oC,GAGN,IAAK,MACH,OAAOz/F,EAAM+8D,IAAI0nC,EAAY,CAC3BpsG,MAAO,cACP/E,QAAS,gBACL0M,EAAM+8D,IAAI0nC,EAAY,CAC1BpsG,MAAO,QACP/E,QAAS,gBACL0M,EAAM+8D,IAAI0nC,EAAY,CAC1BpsG,MAAO,SACP/E,QAAS,eAIb,IAAK,QACH,OAAO0M,EAAM+8D,IAAI0nC,EAAY,CAC3BpsG,MAAO,SACP/E,QAAS,eAIb,IAAK,SACH,OAAO0M,EAAM+8D,IAAI0nC,EAAY,CAC3BpsG,MAAO,QACP/E,QAAS,gBACL0M,EAAM+8D,IAAI0nC,EAAY,CAC1BpsG,MAAO,SACP/E,QAAS,eAKb,QACE,OAAO0M,EAAM+8D,IAAI0nC,EAAY,CAC3BpsG,MAAO,OACP/E,QAAS,gBACL0M,EAAM+8D,IAAI0nC,EAAY,CAC1BpsG,MAAO,cACP/E,QAAS,gBACL0M,EAAM+8D,IAAI0nC,EAAY,CAC1BpsG,MAAO,QACP/E,QAAS,gBACL0M,EAAM+8D,IAAI0nC,EAAY,CAC1BpsG,MAAO,SACP/E,QAAS,eAGjB,GACC,CACD9iB,IAAK,WACLN,MAAO,SAAkBmgD,EAAOngD,GAC9B,OAAOA,GAAS,GAAKA,GAAS,CAChC,GACC,CACDM,IAAK,MACLN,MAAO,SAAamjC,EAAMw0F,EAAQ33H,EAAOgV,GAGvC,OAFAmuB,EAAOs2F,GAAUt2F,EAAMnjC,EAAOgV,IACzB6/G,YAAY,EAAG,EAAG,EAAG,GACnB1xF,CACT,MAjLc,GAAkB8lE,EAAYtoG,UAAWwoG,GACrDC,GAAa,GAAkBH,EAAaG,GAkLzC0wB,CACT,CAhGmD,CAgGjD,GCjNF,SAAS,GAAQ9oH,GAYf,OARE,GADoB,oBAAXlR,QAAoD,kBAApBA,OAAO6hC,SACtC,SAAiB3wB,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EAEK,GAAQA,EACjB,CAMA,SAAS,GAAkB2D,EAAQsb,GACjC,IAAK,IAAIlxB,EAAI,EAAGA,EAAIkxB,EAAMjtB,OAAQjE,IAAK,CACrC,IAAIs8D,EAAaprC,EAAMlxB,GACvBs8D,EAAW17D,WAAa07D,EAAW17D,aAAc,EACjD07D,EAAWlnC,cAAe,EACtB,UAAWknC,IAAYA,EAAW51C,UAAW,GACjDhmB,OAAOC,eAAeiV,EAAQ0mD,EAAW/6D,IAAK+6D,EAChD,CACF,CAmBA,SAAS,GAAgB77D,EAAGqB,GAK1B,OAJA,GAAkBpB,OAAOqyH,gBAAkB,SAAyBtyH,EAAGqB,GAErE,OADArB,EAAE2/C,UAAYt+C,EACPrB,CACT,EACO,GAAgBA,EAAGqB,EAC5B,CACA,SAAS,GAAamxH,GACpB,IAAIC,EAyBN,WACE,GAAuB,qBAAZz/F,UAA4BA,QAAQ0/F,UAAW,OAAO,EACjE,GAAI1/F,QAAQ0/F,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVtgG,MAAsB,OAAO,EACxC,IAEE,OADAugG,QAAQzxH,UAAUm0F,QAAQ51F,KAAKszB,QAAQ0/F,UAAUE,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOlwH,GACP,OAAO,CACT,CACF,CAnCkC,GAChC,OAAO,WACL,IACEq3B,EADE+4F,EAAQ,GAAgBN,GAE5B,GAAIC,EAA2B,CAC7B,IAAIO,EAAY,GAAgB5hH,MAAMJ,YACtC+oB,EAAS/G,QAAQ0/F,UAAUI,EAAOvvH,UAAWyvH,EAC/C,MACEj5F,EAAS+4F,EAAMx+G,MAAMlD,KAAM7N,WAE7B,OAGJ,SAAoCiiH,EAAM9lH,GACxC,GAAIA,IAA2B,WAAlB,GAAQA,IAAsC,oBAATA,GAChD,OAAOA,EAET,OAAO,GAAuB8lH,EAChC,CARW,CAA2Bp0G,KAAM2oB,EAC1C,CACF,CAOA,SAAS,GAAuByrF,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI2N,eAAe,6DAE3B,OAAO3N,CACT,CAYA,SAAS,GAAgBxlH,GAIvB,OAHA,GAAkBC,OAAOqyH,eAAiBryH,OAAOgzB,eAAiB,SAAyBjzB,GACzF,OAAOA,EAAE2/C,WAAa1/C,OAAOgzB,eAAejzB,EAC9C,EACO,GAAgBA,EACzB,CACA,SAAS,GAAgBwR,EAAK1Q,EAAKN,GAWjC,OAVIM,KAAO0Q,EACTvR,OAAOC,eAAesR,EAAK1Q,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZw0B,cAAc,EACd1O,UAAU,IAGZzU,EAAI1Q,GAAON,EAENgR,CACT,CAKO,IAAI,GAA4B,SAAU4jH,IAhFjD,SAAmBjD,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIxwF,UAAU,sDAEtBuwF,EAAShxH,UAAYlB,OAAOY,OAAOuxH,GAAcA,EAAWjxH,UAAW,CACrE6P,YAAa,CACXxQ,MAAO2xH,EACPlsG,UAAU,EACV0O,cAAc,KAGdy9F,GAAY,GAAgBD,EAAUC,EAC5C,CAqEE,CAAUmI,EAAcnF,GACxB,IAvFoB3rB,EAAaE,EAAYC,EAuFzC+pB,EAAS,GAAa4G,GAC1B,SAASA,IACP,IAAIjwB,GAvGR,SAAyBd,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI7nE,UAAU,oCAExB,CAoGI,CAAgBxwB,KAAMmpH,GACtB,IAAK,IAAI/sF,EAAOjqC,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Er5B,EAAKq5B,GAAQlqC,UAAUkqC,GAKzB,OAFA,GAAgB,GADhB68D,EAAQqpB,EAAOj0H,KAAK4U,MAAMq/G,EAAQ,CAACviH,MAAM2iC,OAAO3/B,KACD,WAAY,IAC3D,GAAgB,GAAuBk2F,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MACrIA,CACT,CAoFA,OAtLoBb,EAmGP8wB,EAnGoB5wB,EAmGN,CAAC,CAC1B7oG,IAAK,QACLN,MAAO,SAAeu0H,EAAY9T,EAAO3wF,GACvC,IAAIy/F,EAAgB,SAAuBvvH,GACzC,OAAc,IAAVA,EACK,EAEFA,CACT,EACA,OAAQygH,GAEN,IAAK,IACL,IAAK,KAEH,OAAOkV,GAAalV,EAAMz9G,OAAQuxH,GAGpC,IAAK,KACH,OAAOzkG,EAAM89F,cAAc2G,EAAY,CACrC3tC,KAAM,QAIV,IAAK,MACH,OAAOsuC,GAASplG,EAAM+8D,IAAI0nC,EAAY,CACpCpsG,MAAO,cACP/E,QAAS,gBACL0M,EAAM+8D,IAAI0nC,EAAY,CAC1BpsG,MAAO,QACP/E,QAAS,gBACL0M,EAAM+8D,IAAI0nC,EAAY,CAC1BpsG,MAAO,SACP/E,QAAS,eACPmsG,GAGN,IAAK,QACH,OAAO2F,GAASplG,EAAM+8D,IAAI0nC,EAAY,CACpCpsG,MAAO,SACP/E,QAAS,eACPmsG,GAGN,IAAK,SACH,OAAO2F,GAASplG,EAAM+8D,IAAI0nC,EAAY,CACpCpsG,MAAO,QACP/E,QAAS,gBACL0M,EAAM+8D,IAAI0nC,EAAY,CAC1BpsG,MAAO,SACP/E,QAAS,eACPmsG,GAIN,QACE,OAAO2F,GAASplG,EAAM+8D,IAAI0nC,EAAY,CACpCpsG,MAAO,OACP/E,QAAS,gBACL0M,EAAM+8D,IAAI0nC,EAAY,CAC1BpsG,MAAO,cACP/E,QAAS,gBACL0M,EAAM+8D,IAAI0nC,EAAY,CAC1BpsG,MAAO,QACP/E,QAAS,gBACL0M,EAAM+8D,IAAI0nC,EAAY,CAC1BpsG,MAAO,SACP/E,QAAS,eACPmsG,GAEV,GACC,CACDjvH,IAAK,WACLN,MAAO,SAAkBmgD,EAAOngD,GAC9B,OAAOA,GAAS,GAAKA,GAAS,CAChC,GACC,CACDM,IAAK,MACLN,MAAO,SAAamjC,EAAMw0F,EAAQ33H,GAGhC,OAFAmjC,EC1MS,SAAsBktF,EAAWqJ,GAC9C7O,EAAa,EAAG9nH,WAChB,IAAI8pF,EAAMsjC,EAAUuJ,GAChB7sC,EAAM,IAAM,IACdA,GAAY,GAEd,IACI1pD,EAAOqrE,EAAO6hB,GAIdtwE,IAFY8sC,EAAM,EACM,GAAK,EAJd,EAKmB,EAAI,GAAKA,EAH9B1pD,EAAK6zF,YAKtB,OADA7zF,EAAK8zF,WAAW9zF,EAAK6wF,aAAej0E,GAC7B5c,CACT,CD4La62F,CAAa72F,EAAMnjC,GAC1BmjC,EAAK0xF,YAAY,EAAG,EAAG,EAAG,GACnB1xF,CACT,IAnLEgmE,GAAY,GAAkBF,EAAYtoG,UAAWwoG,GACrDC,GAAa,GAAkBH,EAAaG,GAoLzC2wB,CACT,CAlGuC,CAkGrC,GEnNF,SAAS,GAAQ/oH,GAYf,OARE,GADoB,oBAAXlR,QAAoD,kBAApBA,OAAO6hC,SACtC,SAAiB3wB,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EAEK,GAAQA,EACjB,CAMA,SAAS,GAAkB2D,EAAQsb,GACjC,IAAK,IAAIlxB,EAAI,EAAGA,EAAIkxB,EAAMjtB,OAAQjE,IAAK,CACrC,IAAIs8D,EAAaprC,EAAMlxB,GACvBs8D,EAAW17D,WAAa07D,EAAW17D,aAAc,EACjD07D,EAAWlnC,cAAe,EACtB,UAAWknC,IAAYA,EAAW51C,UAAW,GACjDhmB,OAAOC,eAAeiV,EAAQ0mD,EAAW/6D,IAAK+6D,EAChD,CACF,CAmBA,SAAS,GAAgB77D,EAAGqB,GAK1B,OAJA,GAAkBpB,OAAOqyH,gBAAkB,SAAyBtyH,EAAGqB,GAErE,OADArB,EAAE2/C,UAAYt+C,EACPrB,CACT,EACO,GAAgBA,EAAGqB,EAC5B,CACA,SAAS,GAAamxH,GACpB,IAAIC,EAyBN,WACE,GAAuB,qBAAZz/F,UAA4BA,QAAQ0/F,UAAW,OAAO,EACjE,GAAI1/F,QAAQ0/F,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVtgG,MAAsB,OAAO,EACxC,IAEE,OADAugG,QAAQzxH,UAAUm0F,QAAQ51F,KAAKszB,QAAQ0/F,UAAUE,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOlwH,GACP,OAAO,CACT,CACF,CAnCkC,GAChC,OAAO,WACL,IACEq3B,EADE+4F,EAAQ,GAAgBN,GAE5B,GAAIC,EAA2B,CAC7B,IAAIO,EAAY,GAAgB5hH,MAAMJ,YACtC+oB,EAAS/G,QAAQ0/F,UAAUI,EAAOvvH,UAAWyvH,EAC/C,MACEj5F,EAAS+4F,EAAMx+G,MAAMlD,KAAM7N,WAE7B,OAGJ,SAAoCiiH,EAAM9lH,GACxC,GAAIA,IAA2B,WAAlB,GAAQA,IAAsC,oBAATA,GAChD,OAAOA,EAET,OAAO,GAAuB8lH,EAChC,CARW,CAA2Bp0G,KAAM2oB,EAC1C,CACF,CAOA,SAAS,GAAuByrF,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI2N,eAAe,6DAE3B,OAAO3N,CACT,CAYA,SAAS,GAAgBxlH,GAIvB,OAHA,GAAkBC,OAAOqyH,eAAiBryH,OAAOgzB,eAAiB,SAAyBjzB,GACzF,OAAOA,EAAE2/C,WAAa1/C,OAAOgzB,eAAejzB,EAC9C,EACO,GAAgBA,EACzB,CACA,SAAS,GAAgBwR,EAAK1Q,EAAKN,GAWjC,OAVIM,KAAO0Q,EACTvR,OAAOC,eAAesR,EAAK1Q,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZw0B,cAAc,EACd1O,UAAU,IAGZzU,EAAI1Q,GAAON,EAENgR,CACT,CAGO,IAAI,GAA0B,SAAU4jH,IA9E/C,SAAmBjD,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIxwF,UAAU,sDAEtBuwF,EAAShxH,UAAYlB,OAAOY,OAAOuxH,GAAcA,EAAWjxH,UAAW,CACrE6P,YAAa,CACXxQ,MAAO2xH,EACPlsG,UAAU,EACV0O,cAAc,KAGdy9F,GAAY,GAAgBD,EAAUC,EAC5C,CAmEE,CAAUqI,EAAYrF,GACtB,IArFoB3rB,EAAaE,EAAYC,EAqFzC+pB,EAAS,GAAa8G,GAC1B,SAASA,IACP,IAAInwB,GArGR,SAAyBd,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI7nE,UAAU,oCAExB,CAkGI,CAAgBxwB,KAAMqpH,GACtB,IAAK,IAAIjtF,EAAOjqC,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Er5B,EAAKq5B,GAAQlqC,UAAUkqC,GAKzB,OAFA,GAAgB,GADhB68D,EAAQqpB,EAAOj0H,KAAK4U,MAAMq/G,EAAQ,CAACviH,MAAM2iC,OAAO3/B,KACD,WAAY,IAC3D,GAAgB,GAAuBk2F,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,MACxFA,CACT,CAyCA,OAzIoBb,EAiGPgxB,GAjGoB9wB,EAiGR,CAAC,CACxB7oG,IAAK,QACLN,MAAO,SAAeu0H,EAAY9T,EAAO3wF,GACvC,OAAQ2wF,GACN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAO3wF,EAAMq+F,UAAUoG,EAAY,CACjCpsG,MAAO,cACP/E,QAAS,gBACL0M,EAAMq+F,UAAUoG,EAAY,CAChCpsG,MAAO,SACP/E,QAAS,eAEb,IAAK,QACH,OAAO0M,EAAMq+F,UAAUoG,EAAY,CACjCpsG,MAAO,SACP/E,QAAS,eAGb,QACE,OAAO0M,EAAMq+F,UAAUoG,EAAY,CACjCpsG,MAAO,OACP/E,QAAS,gBACL0M,EAAMq+F,UAAUoG,EAAY,CAChCpsG,MAAO,cACP/E,QAAS,gBACL0M,EAAMq+F,UAAUoG,EAAY,CAChCpsG,MAAO,SACP/E,QAAS,eAGjB,GACC,CACD9iB,IAAK,MACLN,MAAO,SAAamjC,EAAMw0F,EAAQ33H,GAEhC,OADAmjC,EAAK0xF,YAAYiB,GAAqB91H,GAAQ,EAAG,EAAG,GAC7CmjC,CACT,MAtIc,GAAkB8lE,EAAYtoG,UAAWwoG,GACrDC,GAAa,GAAkBH,EAAaG,GAuIzC6wB,CACT,CAvDqC,CAuDnC,GCtKF,SAAS,GAAQjpH,GAYf,OARE,GADoB,oBAAXlR,QAAoD,kBAApBA,OAAO6hC,SACtC,SAAiB3wB,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EAEK,GAAQA,EACjB,CAMA,SAAS,GAAkB2D,EAAQsb,GACjC,IAAK,IAAIlxB,EAAI,EAAGA,EAAIkxB,EAAMjtB,OAAQjE,IAAK,CACrC,IAAIs8D,EAAaprC,EAAMlxB,GACvBs8D,EAAW17D,WAAa07D,EAAW17D,aAAc,EACjD07D,EAAWlnC,cAAe,EACtB,UAAWknC,IAAYA,EAAW51C,UAAW,GACjDhmB,OAAOC,eAAeiV,EAAQ0mD,EAAW/6D,IAAK+6D,EAChD,CACF,CAmBA,SAAS,GAAgB77D,EAAGqB,GAK1B,OAJA,GAAkBpB,OAAOqyH,gBAAkB,SAAyBtyH,EAAGqB,GAErE,OADArB,EAAE2/C,UAAYt+C,EACPrB,CACT,EACO,GAAgBA,EAAGqB,EAC5B,CACA,SAAS,GAAamxH,GACpB,IAAIC,EAyBN,WACE,GAAuB,qBAAZz/F,UAA4BA,QAAQ0/F,UAAW,OAAO,EACjE,GAAI1/F,QAAQ0/F,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVtgG,MAAsB,OAAO,EACxC,IAEE,OADAugG,QAAQzxH,UAAUm0F,QAAQ51F,KAAKszB,QAAQ0/F,UAAUE,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOlwH,GACP,OAAO,CACT,CACF,CAnCkC,GAChC,OAAO,WACL,IACEq3B,EADE+4F,EAAQ,GAAgBN,GAE5B,GAAIC,EAA2B,CAC7B,IAAIO,EAAY,GAAgB5hH,MAAMJ,YACtC+oB,EAAS/G,QAAQ0/F,UAAUI,EAAOvvH,UAAWyvH,EAC/C,MACEj5F,EAAS+4F,EAAMx+G,MAAMlD,KAAM7N,WAE7B,OAGJ,SAAoCiiH,EAAM9lH,GACxC,GAAIA,IAA2B,WAAlB,GAAQA,IAAsC,oBAATA,GAChD,OAAOA,EAET,OAAO,GAAuB8lH,EAChC,CARW,CAA2Bp0G,KAAM2oB,EAC1C,CACF,CAOA,SAAS,GAAuByrF,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI2N,eAAe,6DAE3B,OAAO3N,CACT,CAYA,SAAS,GAAgBxlH,GAIvB,OAHA,GAAkBC,OAAOqyH,eAAiBryH,OAAOgzB,eAAiB,SAAyBjzB,GACzF,OAAOA,EAAE2/C,WAAa1/C,OAAOgzB,eAAejzB,EAC9C,EACO,GAAgBA,EACzB,CACA,SAAS,GAAgBwR,EAAK1Q,EAAKN,GAWjC,OAVIM,KAAO0Q,EACTvR,OAAOC,eAAesR,EAAK1Q,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZw0B,cAAc,EACd1O,UAAU,IAGZzU,EAAI1Q,GAAON,EAENgR,CACT,CAGO,IAAI,GAAkC,SAAU4jH,IA9EvD,SAAmBjD,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIxwF,UAAU,sDAEtBuwF,EAAShxH,UAAYlB,OAAOY,OAAOuxH,GAAcA,EAAWjxH,UAAW,CACrE6P,YAAa,CACXxQ,MAAO2xH,EACPlsG,UAAU,EACV0O,cAAc,KAGdy9F,GAAY,GAAgBD,EAAUC,EAC5C,CAmEE,CAAUsI,EAAoBtF,GAC9B,IArFoB3rB,EAAaE,EAAYC,EAqFzC+pB,EAAS,GAAa+G,GAC1B,SAASA,IACP,IAAIpwB,GArGR,SAAyBd,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI7nE,UAAU,oCAExB,CAkGI,CAAgBxwB,KAAMspH,GACtB,IAAK,IAAIltF,EAAOjqC,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Er5B,EAAKq5B,GAAQlqC,UAAUkqC,GAKzB,OAFA,GAAgB,GADhB68D,EAAQqpB,EAAOj0H,KAAK4U,MAAMq/G,EAAQ,CAACviH,MAAM2iC,OAAO3/B,KACD,WAAY,IAC3D,GAAgB,GAAuBk2F,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,MACxFA,CACT,CAyCA,OAzIoBb,EAiGPixB,GAjGoB/wB,EAiGA,CAAC,CAChC7oG,IAAK,QACLN,MAAO,SAAeu0H,EAAY9T,EAAO3wF,GACvC,OAAQ2wF,GACN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAO3wF,EAAMq+F,UAAUoG,EAAY,CACjCpsG,MAAO,cACP/E,QAAS,gBACL0M,EAAMq+F,UAAUoG,EAAY,CAChCpsG,MAAO,SACP/E,QAAS,eAEb,IAAK,QACH,OAAO0M,EAAMq+F,UAAUoG,EAAY,CACjCpsG,MAAO,SACP/E,QAAS,eAGb,QACE,OAAO0M,EAAMq+F,UAAUoG,EAAY,CACjCpsG,MAAO,OACP/E,QAAS,gBACL0M,EAAMq+F,UAAUoG,EAAY,CAChCpsG,MAAO,cACP/E,QAAS,gBACL0M,EAAMq+F,UAAUoG,EAAY,CAChCpsG,MAAO,SACP/E,QAAS,eAGjB,GACC,CACD9iB,IAAK,MACLN,MAAO,SAAamjC,EAAMw0F,EAAQ33H,GAEhC,OADAmjC,EAAK0xF,YAAYiB,GAAqB91H,GAAQ,EAAG,EAAG,GAC7CmjC,CACT,MAtIc,GAAkB8lE,EAAYtoG,UAAWwoG,GACrDC,GAAa,GAAkBH,EAAaG,GAuIzC8wB,CACT,CAvD6C,CAuD3C,GCtKF,SAAS,GAAQlpH,GAYf,OARE,GADoB,oBAAXlR,QAAoD,kBAApBA,OAAO6hC,SACtC,SAAiB3wB,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EAEK,GAAQA,EACjB,CAMA,SAAS,GAAkB2D,EAAQsb,GACjC,IAAK,IAAIlxB,EAAI,EAAGA,EAAIkxB,EAAMjtB,OAAQjE,IAAK,CACrC,IAAIs8D,EAAaprC,EAAMlxB,GACvBs8D,EAAW17D,WAAa07D,EAAW17D,aAAc,EACjD07D,EAAWlnC,cAAe,EACtB,UAAWknC,IAAYA,EAAW51C,UAAW,GACjDhmB,OAAOC,eAAeiV,EAAQ0mD,EAAW/6D,IAAK+6D,EAChD,CACF,CAmBA,SAAS,GAAgB77D,EAAGqB,GAK1B,OAJA,GAAkBpB,OAAOqyH,gBAAkB,SAAyBtyH,EAAGqB,GAErE,OADArB,EAAE2/C,UAAYt+C,EACPrB,CACT,EACO,GAAgBA,EAAGqB,EAC5B,CACA,SAAS,GAAamxH,GACpB,IAAIC,EAyBN,WACE,GAAuB,qBAAZz/F,UAA4BA,QAAQ0/F,UAAW,OAAO,EACjE,GAAI1/F,QAAQ0/F,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVtgG,MAAsB,OAAO,EACxC,IAEE,OADAugG,QAAQzxH,UAAUm0F,QAAQ51F,KAAKszB,QAAQ0/F,UAAUE,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOlwH,GACP,OAAO,CACT,CACF,CAnCkC,GAChC,OAAO,WACL,IACEq3B,EADE+4F,EAAQ,GAAgBN,GAE5B,GAAIC,EAA2B,CAC7B,IAAIO,EAAY,GAAgB5hH,MAAMJ,YACtC+oB,EAAS/G,QAAQ0/F,UAAUI,EAAOvvH,UAAWyvH,EAC/C,MACEj5F,EAAS+4F,EAAMx+G,MAAMlD,KAAM7N,WAE7B,OAGJ,SAAoCiiH,EAAM9lH,GACxC,GAAIA,IAA2B,WAAlB,GAAQA,IAAsC,oBAATA,GAChD,OAAOA,EAET,OAAO,GAAuB8lH,EAChC,CARW,CAA2Bp0G,KAAM2oB,EAC1C,CACF,CAOA,SAAS,GAAuByrF,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI2N,eAAe,6DAE3B,OAAO3N,CACT,CAYA,SAAS,GAAgBxlH,GAIvB,OAHA,GAAkBC,OAAOqyH,eAAiBryH,OAAOgzB,eAAiB,SAAyBjzB,GACzF,OAAOA,EAAE2/C,WAAa1/C,OAAOgzB,eAAejzB,EAC9C,EACO,GAAgBA,EACzB,CACA,SAAS,GAAgBwR,EAAK1Q,EAAKN,GAWjC,OAVIM,KAAO0Q,EACTvR,OAAOC,eAAesR,EAAK1Q,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZw0B,cAAc,EACd1O,UAAU,IAGZzU,EAAI1Q,GAAON,EAENgR,CACT,CAIO,IAAI,GAA+B,SAAU4jH,IA/EpD,SAAmBjD,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIxwF,UAAU,sDAEtBuwF,EAAShxH,UAAYlB,OAAOY,OAAOuxH,GAAcA,EAAWjxH,UAAW,CACrE6P,YAAa,CACXxQ,MAAO2xH,EACPlsG,UAAU,EACV0O,cAAc,KAGdy9F,GAAY,GAAgBD,EAAUC,EAC5C,CAoEE,CAAUuI,EAAiBvF,GAC3B,IAtFoB3rB,EAAaE,EAAYC,EAsFzC+pB,EAAS,GAAagH,GAC1B,SAASA,IACP,IAAIrwB,GAtGR,SAAyBd,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI7nE,UAAU,oCAExB,CAmGI,CAAgBxwB,KAAMupH,GACtB,IAAK,IAAIntF,EAAOjqC,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Er5B,EAAKq5B,GAAQlqC,UAAUkqC,GAKzB,OAFA,GAAgB,GADhB68D,EAAQqpB,EAAOj0H,KAAK4U,MAAMq/G,EAAQ,CAACviH,MAAM2iC,OAAO3/B,KACD,WAAY,IAC3D,GAAgB,GAAuBk2F,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,MAC9EA,CACT,CAyCA,OA1IoBb,EAkGPkxB,GAlGoBhxB,EAkGH,CAAC,CAC7B7oG,IAAK,QACLN,MAAO,SAAeu0H,EAAY9T,EAAO3wF,GACvC,OAAQ2wF,GACN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAO3wF,EAAMq+F,UAAUoG,EAAY,CACjCpsG,MAAO,cACP/E,QAAS,gBACL0M,EAAMq+F,UAAUoG,EAAY,CAChCpsG,MAAO,SACP/E,QAAS,eAEb,IAAK,QACH,OAAO0M,EAAMq+F,UAAUoG,EAAY,CACjCpsG,MAAO,SACP/E,QAAS,eAGb,QACE,OAAO0M,EAAMq+F,UAAUoG,EAAY,CACjCpsG,MAAO,OACP/E,QAAS,gBACL0M,EAAMq+F,UAAUoG,EAAY,CAChCpsG,MAAO,cACP/E,QAAS,gBACL0M,EAAMq+F,UAAUoG,EAAY,CAChCpsG,MAAO,SACP/E,QAAS,eAGjB,GACC,CACD9iB,IAAK,MACLN,MAAO,SAAamjC,EAAMw0F,EAAQ33H,GAEhC,OADAmjC,EAAK0xF,YAAYiB,GAAqB91H,GAAQ,EAAG,EAAG,GAC7CmjC,CACT,MAvIc,GAAkB8lE,EAAYtoG,UAAWwoG,GACrDC,GAAa,GAAkBH,EAAaG,GAwIzC+wB,CACT,CAvD0C,CAuDxC,GCvKF,SAAS,GAAQnpH,GAYf,OARE,GADoB,oBAAXlR,QAAoD,kBAApBA,OAAO6hC,SACtC,SAAiB3wB,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EAEK,GAAQA,EACjB,CAMA,SAAS,GAAkB2D,EAAQsb,GACjC,IAAK,IAAIlxB,EAAI,EAAGA,EAAIkxB,EAAMjtB,OAAQjE,IAAK,CACrC,IAAIs8D,EAAaprC,EAAMlxB,GACvBs8D,EAAW17D,WAAa07D,EAAW17D,aAAc,EACjD07D,EAAWlnC,cAAe,EACtB,UAAWknC,IAAYA,EAAW51C,UAAW,GACjDhmB,OAAOC,eAAeiV,EAAQ0mD,EAAW/6D,IAAK+6D,EAChD,CACF,CAmBA,SAAS,GAAgB77D,EAAGqB,GAK1B,OAJA,GAAkBpB,OAAOqyH,gBAAkB,SAAyBtyH,EAAGqB,GAErE,OADArB,EAAE2/C,UAAYt+C,EACPrB,CACT,EACO,GAAgBA,EAAGqB,EAC5B,CACA,SAAS,GAAamxH,GACpB,IAAIC,EAyBN,WACE,GAAuB,qBAAZz/F,UAA4BA,QAAQ0/F,UAAW,OAAO,EACjE,GAAI1/F,QAAQ0/F,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVtgG,MAAsB,OAAO,EACxC,IAEE,OADAugG,QAAQzxH,UAAUm0F,QAAQ51F,KAAKszB,QAAQ0/F,UAAUE,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOlwH,GACP,OAAO,CACT,CACF,CAnCkC,GAChC,OAAO,WACL,IACEq3B,EADE+4F,EAAQ,GAAgBN,GAE5B,GAAIC,EAA2B,CAC7B,IAAIO,EAAY,GAAgB5hH,MAAMJ,YACtC+oB,EAAS/G,QAAQ0/F,UAAUI,EAAOvvH,UAAWyvH,EAC/C,MACEj5F,EAAS+4F,EAAMx+G,MAAMlD,KAAM7N,WAE7B,OAGJ,SAAoCiiH,EAAM9lH,GACxC,GAAIA,IAA2B,WAAlB,GAAQA,IAAsC,oBAATA,GAChD,OAAOA,EAET,OAAO,GAAuB8lH,EAChC,CARW,CAA2Bp0G,KAAM2oB,EAC1C,CACF,CAOA,SAAS,GAAuByrF,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI2N,eAAe,6DAE3B,OAAO3N,CACT,CAYA,SAAS,GAAgBxlH,GAIvB,OAHA,GAAkBC,OAAOqyH,eAAiBryH,OAAOgzB,eAAiB,SAAyBjzB,GACzF,OAAOA,EAAE2/C,WAAa1/C,OAAOgzB,eAAejzB,EAC9C,EACO,GAAgBA,EACzB,CACA,SAAS,GAAgBwR,EAAK1Q,EAAKN,GAWjC,OAVIM,KAAO0Q,EACTvR,OAAOC,eAAesR,EAAK1Q,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZw0B,cAAc,EACd1O,UAAU,IAGZzU,EAAI1Q,GAAON,EAENgR,CACT,CAIO,IAAI,GAA+B,SAAU4jH,IA/EpD,SAAmBjD,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIxwF,UAAU,sDAEtBuwF,EAAShxH,UAAYlB,OAAOY,OAAOuxH,GAAcA,EAAWjxH,UAAW,CACrE6P,YAAa,CACXxQ,MAAO2xH,EACPlsG,UAAU,EACV0O,cAAc,KAGdy9F,GAAY,GAAgBD,EAAUC,EAC5C,CAoEE,CAAUwI,EAAiBxF,GAC3B,IAtFoB3rB,EAAaE,EAAYC,EAsFzC+pB,EAAS,GAAaiH,GAC1B,SAASA,IACP,IAAItwB,GAtGR,SAAyBd,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI7nE,UAAU,oCAExB,CAmGI,CAAgBxwB,KAAMwpH,GACtB,IAAK,IAAIptF,EAAOjqC,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Er5B,EAAKq5B,GAAQlqC,UAAUkqC,GAKzB,OAFA,GAAgB,GADhB68D,EAAQqpB,EAAOj0H,KAAK4U,MAAMq/G,EAAQ,CAACviH,MAAM2iC,OAAO3/B,KACD,WAAY,IAC3D,GAAgB,GAAuBk2F,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,MACnFA,CACT,CAkCA,OAnIoBb,EAkGPmxB,GAlGoBjxB,EAkGH,CAAC,CAC7B7oG,IAAK,QACLN,MAAO,SAAeu0H,EAAY9T,EAAO3wF,GACvC,OAAQ2wF,GACN,IAAK,IACH,OAAO4U,GAAoBL,GAAyBT,GACtD,IAAK,KACH,OAAOzkG,EAAM89F,cAAc2G,EAAY,CACrC3tC,KAAM,SAEV,QACE,OAAO+uC,GAAalV,EAAMz9G,OAAQuxH,GAExC,GACC,CACDj0H,IAAK,WACLN,MAAO,SAAkBmgD,EAAOngD,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACDM,IAAK,MACLN,MAAO,SAAamjC,EAAMw0F,EAAQ33H,GAChC,IAAIq6H,EAAOl3F,EAAK+wF,eAAiB,GAQjC,OAPImG,GAAQr6H,EAAQ,GAClBmjC,EAAK0xF,YAAY70H,EAAQ,GAAI,EAAG,EAAG,GACzBq6H,GAAkB,KAAVr6H,EAGlBmjC,EAAK0xF,YAAY70H,EAAO,EAAG,EAAG,GAF9BmjC,EAAK0xF,YAAY,EAAG,EAAG,EAAG,GAIrB1xF,CACT,MAhIc,GAAkB8lE,EAAYtoG,UAAWwoG,GACrDC,GAAa,GAAkBH,EAAaG,GAiIzCgxB,CACT,CAhD0C,CAgDxC,GChKF,SAAS,GAAQppH,GAYf,OARE,GADoB,oBAAXlR,QAAoD,kBAApBA,OAAO6hC,SACtC,SAAiB3wB,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EAEK,GAAQA,EACjB,CAMA,SAAS,GAAkB2D,EAAQsb,GACjC,IAAK,IAAIlxB,EAAI,EAAGA,EAAIkxB,EAAMjtB,OAAQjE,IAAK,CACrC,IAAIs8D,EAAaprC,EAAMlxB,GACvBs8D,EAAW17D,WAAa07D,EAAW17D,aAAc,EACjD07D,EAAWlnC,cAAe,EACtB,UAAWknC,IAAYA,EAAW51C,UAAW,GACjDhmB,OAAOC,eAAeiV,EAAQ0mD,EAAW/6D,IAAK+6D,EAChD,CACF,CAmBA,SAAS,GAAgB77D,EAAGqB,GAK1B,OAJA,GAAkBpB,OAAOqyH,gBAAkB,SAAyBtyH,EAAGqB,GAErE,OADArB,EAAE2/C,UAAYt+C,EACPrB,CACT,EACO,GAAgBA,EAAGqB,EAC5B,CACA,SAAS,GAAamxH,GACpB,IAAIC,EAyBN,WACE,GAAuB,qBAAZz/F,UAA4BA,QAAQ0/F,UAAW,OAAO,EACjE,GAAI1/F,QAAQ0/F,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVtgG,MAAsB,OAAO,EACxC,IAEE,OADAugG,QAAQzxH,UAAUm0F,QAAQ51F,KAAKszB,QAAQ0/F,UAAUE,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOlwH,GACP,OAAO,CACT,CACF,CAnCkC,GAChC,OAAO,WACL,IACEq3B,EADE+4F,EAAQ,GAAgBN,GAE5B,GAAIC,EAA2B,CAC7B,IAAIO,EAAY,GAAgB5hH,MAAMJ,YACtC+oB,EAAS/G,QAAQ0/F,UAAUI,EAAOvvH,UAAWyvH,EAC/C,MACEj5F,EAAS+4F,EAAMx+G,MAAMlD,KAAM7N,WAE7B,OAGJ,SAAoCiiH,EAAM9lH,GACxC,GAAIA,IAA2B,WAAlB,GAAQA,IAAsC,oBAATA,GAChD,OAAOA,EAET,OAAO,GAAuB8lH,EAChC,CARW,CAA2Bp0G,KAAM2oB,EAC1C,CACF,CAOA,SAAS,GAAuByrF,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI2N,eAAe,6DAE3B,OAAO3N,CACT,CAYA,SAAS,GAAgBxlH,GAIvB,OAHA,GAAkBC,OAAOqyH,eAAiBryH,OAAOgzB,eAAiB,SAAyBjzB,GACzF,OAAOA,EAAE2/C,WAAa1/C,OAAOgzB,eAAejzB,EAC9C,EACO,GAAgBA,EACzB,CACA,SAAS,GAAgBwR,EAAK1Q,EAAKN,GAWjC,OAVIM,KAAO0Q,EACTvR,OAAOC,eAAesR,EAAK1Q,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZw0B,cAAc,EACd1O,UAAU,IAGZzU,EAAI1Q,GAAON,EAENgR,CACT,CAIO,IAAI,GAA+B,SAAU4jH,IA/EpD,SAAmBjD,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIxwF,UAAU,sDAEtBuwF,EAAShxH,UAAYlB,OAAOY,OAAOuxH,GAAcA,EAAWjxH,UAAW,CACrE6P,YAAa,CACXxQ,MAAO2xH,EACPlsG,UAAU,EACV0O,cAAc,KAGdy9F,GAAY,GAAgBD,EAAUC,EAC5C,CAoEE,CAAU0I,EAAiB1F,GAC3B,IAtFoB3rB,EAAaE,EAAYC,EAsFzC+pB,EAAS,GAAamH,GAC1B,SAASA,IACP,IAAIxwB,GAtGR,SAAyBd,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI7nE,UAAU,oCAExB,CAmGI,CAAgBxwB,KAAM0pH,GACtB,IAAK,IAAIttF,EAAOjqC,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Er5B,EAAKq5B,GAAQlqC,UAAUkqC,GAKzB,OAFA,GAAgB,GADhB68D,EAAQqpB,EAAOj0H,KAAK4U,MAAMq/G,EAAQ,CAACviH,MAAM2iC,OAAO3/B,KACD,WAAY,IAC3D,GAAgB,GAAuBk2F,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAC7FA,CACT,CA2BA,OA5HoBb,EAkGPqxB,GAlGoBnxB,EAkGH,CAAC,CAC7B7oG,IAAK,QACLN,MAAO,SAAeu0H,EAAY9T,EAAO3wF,GACvC,OAAQ2wF,GACN,IAAK,IACH,OAAO4U,GAAoBL,GAAyBT,GACtD,IAAK,KACH,OAAOzkG,EAAM89F,cAAc2G,EAAY,CACrC3tC,KAAM,SAEV,QACE,OAAO+uC,GAAalV,EAAMz9G,OAAQuxH,GAExC,GACC,CACDj0H,IAAK,WACLN,MAAO,SAAkBmgD,EAAOngD,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACDM,IAAK,MACLN,MAAO,SAAamjC,EAAMw0F,EAAQ33H,GAEhC,OADAmjC,EAAK0xF,YAAY70H,EAAO,EAAG,EAAG,GACvBmjC,CACT,MAzHc,GAAkB8lE,EAAYtoG,UAAWwoG,GACrDC,GAAa,GAAkBH,EAAaG,GA0HzCkxB,CACT,CAzC0C,CAyCxC,GCzJF,SAAS,GAAQtpH,GAYf,OARE,GADoB,oBAAXlR,QAAoD,kBAApBA,OAAO6hC,SACtC,SAAiB3wB,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EAEK,GAAQA,EACjB,CAMA,SAAS,GAAkB2D,EAAQsb,GACjC,IAAK,IAAIlxB,EAAI,EAAGA,EAAIkxB,EAAMjtB,OAAQjE,IAAK,CACrC,IAAIs8D,EAAaprC,EAAMlxB,GACvBs8D,EAAW17D,WAAa07D,EAAW17D,aAAc,EACjD07D,EAAWlnC,cAAe,EACtB,UAAWknC,IAAYA,EAAW51C,UAAW,GACjDhmB,OAAOC,eAAeiV,EAAQ0mD,EAAW/6D,IAAK+6D,EAChD,CACF,CAmBA,SAAS,GAAgB77D,EAAGqB,GAK1B,OAJA,GAAkBpB,OAAOqyH,gBAAkB,SAAyBtyH,EAAGqB,GAErE,OADArB,EAAE2/C,UAAYt+C,EACPrB,CACT,EACO,GAAgBA,EAAGqB,EAC5B,CACA,SAAS,GAAamxH,GACpB,IAAIC,EAyBN,WACE,GAAuB,qBAAZz/F,UAA4BA,QAAQ0/F,UAAW,OAAO,EACjE,GAAI1/F,QAAQ0/F,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVtgG,MAAsB,OAAO,EACxC,IAEE,OADAugG,QAAQzxH,UAAUm0F,QAAQ51F,KAAKszB,QAAQ0/F,UAAUE,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOlwH,GACP,OAAO,CACT,CACF,CAnCkC,GAChC,OAAO,WACL,IACEq3B,EADE+4F,EAAQ,GAAgBN,GAE5B,GAAIC,EAA2B,CAC7B,IAAIO,EAAY,GAAgB5hH,MAAMJ,YACtC+oB,EAAS/G,QAAQ0/F,UAAUI,EAAOvvH,UAAWyvH,EAC/C,MACEj5F,EAAS+4F,EAAMx+G,MAAMlD,KAAM7N,WAE7B,OAGJ,SAAoCiiH,EAAM9lH,GACxC,GAAIA,IAA2B,WAAlB,GAAQA,IAAsC,oBAATA,GAChD,OAAOA,EAET,OAAO,GAAuB8lH,EAChC,CARW,CAA2Bp0G,KAAM2oB,EAC1C,CACF,CAOA,SAAS,GAAuByrF,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI2N,eAAe,6DAE3B,OAAO3N,CACT,CAYA,SAAS,GAAgBxlH,GAIvB,OAHA,GAAkBC,OAAOqyH,eAAiBryH,OAAOgzB,eAAiB,SAAyBjzB,GACzF,OAAOA,EAAE2/C,WAAa1/C,OAAOgzB,eAAejzB,EAC9C,EACO,GAAgBA,EACzB,CACA,SAAS,GAAgBwR,EAAK1Q,EAAKN,GAWjC,OAVIM,KAAO0Q,EACTvR,OAAOC,eAAesR,EAAK1Q,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZw0B,cAAc,EACd1O,UAAU,IAGZzU,EAAI1Q,GAAON,EAENgR,CACT,CAIO,IAAI,GAA+B,SAAU4jH,IA/EpD,SAAmBjD,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIxwF,UAAU,sDAEtBuwF,EAAShxH,UAAYlB,OAAOY,OAAOuxH,GAAcA,EAAWjxH,UAAW,CACrE6P,YAAa,CACXxQ,MAAO2xH,EACPlsG,UAAU,EACV0O,cAAc,KAGdy9F,GAAY,GAAgBD,EAAUC,EAC5C,CAoEE,CAAU2I,EAAiB3F,GAC3B,IAtFoB3rB,EAAaE,EAAYC,EAsFzC+pB,EAAS,GAAaoH,GAC1B,SAASA,IACP,IAAIzwB,GAtGR,SAAyBd,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI7nE,UAAU,oCAExB,CAmGI,CAAgBxwB,KAAM2pH,GACtB,IAAK,IAAIvtF,EAAOjqC,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Er5B,EAAKq5B,GAAQlqC,UAAUkqC,GAKzB,OAFA,GAAgB,GADhB68D,EAAQqpB,EAAOj0H,KAAK4U,MAAMq/G,EAAQ,CAACviH,MAAM2iC,OAAO3/B,KACD,WAAY,IAC3D,GAAgB,GAAuBk2F,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,MACnFA,CACT,CAgCA,OAjIoBb,EAkGPsxB,GAlGoBpxB,EAkGH,CAAC,CAC7B7oG,IAAK,QACLN,MAAO,SAAeu0H,EAAY9T,EAAO3wF,GACvC,OAAQ2wF,GACN,IAAK,IACH,OAAO4U,GAAoBL,GAAyBT,GACtD,IAAK,KACH,OAAOzkG,EAAM89F,cAAc2G,EAAY,CACrC3tC,KAAM,SAEV,QACE,OAAO+uC,GAAalV,EAAMz9G,OAAQuxH,GAExC,GACC,CACDj0H,IAAK,WACLN,MAAO,SAAkBmgD,EAAOngD,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACDM,IAAK,MACLN,MAAO,SAAamjC,EAAMw0F,EAAQ33H,GAOhC,OANWmjC,EAAK+wF,eAAiB,IACrBl0H,EAAQ,GAClBmjC,EAAK0xF,YAAY70H,EAAQ,GAAI,EAAG,EAAG,GAEnCmjC,EAAK0xF,YAAY70H,EAAO,EAAG,EAAG,GAEzBmjC,CACT,MA9Hc,GAAkB8lE,EAAYtoG,UAAWwoG,GACrDC,GAAa,GAAkBH,EAAaG,GA+HzCmxB,CACT,CA9C0C,CA8CxC,GC9JF,SAAS,GAAQvpH,GAYf,OARE,GADoB,oBAAXlR,QAAoD,kBAApBA,OAAO6hC,SACtC,SAAiB3wB,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EAEK,GAAQA,EACjB,CAMA,SAAS,GAAkB2D,EAAQsb,GACjC,IAAK,IAAIlxB,EAAI,EAAGA,EAAIkxB,EAAMjtB,OAAQjE,IAAK,CACrC,IAAIs8D,EAAaprC,EAAMlxB,GACvBs8D,EAAW17D,WAAa07D,EAAW17D,aAAc,EACjD07D,EAAWlnC,cAAe,EACtB,UAAWknC,IAAYA,EAAW51C,UAAW,GACjDhmB,OAAOC,eAAeiV,EAAQ0mD,EAAW/6D,IAAK+6D,EAChD,CACF,CAmBA,SAAS,GAAgB77D,EAAGqB,GAK1B,OAJA,GAAkBpB,OAAOqyH,gBAAkB,SAAyBtyH,EAAGqB,GAErE,OADArB,EAAE2/C,UAAYt+C,EACPrB,CACT,EACO,GAAgBA,EAAGqB,EAC5B,CACA,SAAS,GAAamxH,GACpB,IAAIC,EAyBN,WACE,GAAuB,qBAAZz/F,UAA4BA,QAAQ0/F,UAAW,OAAO,EACjE,GAAI1/F,QAAQ0/F,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVtgG,MAAsB,OAAO,EACxC,IAEE,OADAugG,QAAQzxH,UAAUm0F,QAAQ51F,KAAKszB,QAAQ0/F,UAAUE,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOlwH,GACP,OAAO,CACT,CACF,CAnCkC,GAChC,OAAO,WACL,IACEq3B,EADE+4F,EAAQ,GAAgBN,GAE5B,GAAIC,EAA2B,CAC7B,IAAIO,EAAY,GAAgB5hH,MAAMJ,YACtC+oB,EAAS/G,QAAQ0/F,UAAUI,EAAOvvH,UAAWyvH,EAC/C,MACEj5F,EAAS+4F,EAAMx+G,MAAMlD,KAAM7N,WAE7B,OAGJ,SAAoCiiH,EAAM9lH,GACxC,GAAIA,IAA2B,WAAlB,GAAQA,IAAsC,oBAATA,GAChD,OAAOA,EAET,OAAO,GAAuB8lH,EAChC,CARW,CAA2Bp0G,KAAM2oB,EAC1C,CACF,CAOA,SAAS,GAAuByrF,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI2N,eAAe,6DAE3B,OAAO3N,CACT,CAYA,SAAS,GAAgBxlH,GAIvB,OAHA,GAAkBC,OAAOqyH,eAAiBryH,OAAOgzB,eAAiB,SAAyBjzB,GACzF,OAAOA,EAAE2/C,WAAa1/C,OAAOgzB,eAAejzB,EAC9C,EACO,GAAgBA,EACzB,CACA,SAAS,GAAgBwR,EAAK1Q,EAAKN,GAWjC,OAVIM,KAAO0Q,EACTvR,OAAOC,eAAesR,EAAK1Q,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZw0B,cAAc,EACd1O,UAAU,IAGZzU,EAAI1Q,GAAON,EAENgR,CACT,CAIO,IAAI,GAA+B,SAAU4jH,IA/EpD,SAAmBjD,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIxwF,UAAU,sDAEtBuwF,EAAShxH,UAAYlB,OAAOY,OAAOuxH,GAAcA,EAAWjxH,UAAW,CACrE6P,YAAa,CACXxQ,MAAO2xH,EACPlsG,UAAU,EACV0O,cAAc,KAGdy9F,GAAY,GAAgBD,EAAUC,EAC5C,CAoEE,CAAU4I,EAAiB5F,GAC3B,IAtFoB3rB,EAAaE,EAAYC,EAsFzC+pB,EAAS,GAAaqH,GAC1B,SAASA,IACP,IAAI1wB,GAtGR,SAAyBd,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI7nE,UAAU,oCAExB,CAmGI,CAAgBxwB,KAAM4pH,GACtB,IAAK,IAAIxtF,EAAOjqC,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Er5B,EAAKq5B,GAAQlqC,UAAUkqC,GAKzB,OAFA,GAAgB,GADhB68D,EAAQqpB,EAAOj0H,KAAK4U,MAAMq/G,EAAQ,CAACviH,MAAM2iC,OAAO3/B,KACD,WAAY,IAC3D,GAAgB,GAAuBk2F,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAC7FA,CACT,CA4BA,OA7HoBb,EAkGPuxB,GAlGoBrxB,EAkGH,CAAC,CAC7B7oG,IAAK,QACLN,MAAO,SAAeu0H,EAAY9T,EAAO3wF,GACvC,OAAQ2wF,GACN,IAAK,IACH,OAAO4U,GAAoBL,GAAyBT,GACtD,IAAK,KACH,OAAOzkG,EAAM89F,cAAc2G,EAAY,CACrC3tC,KAAM,SAEV,QACE,OAAO+uC,GAAalV,EAAMz9G,OAAQuxH,GAExC,GACC,CACDj0H,IAAK,WACLN,MAAO,SAAkBmgD,EAAOngD,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACDM,IAAK,MACLN,MAAO,SAAamjC,EAAMw0F,EAAQ33H,GAChC,IAAIu1H,EAAQv1H,GAAS,GAAKA,EAAQ,GAAKA,EAEvC,OADAmjC,EAAK0xF,YAAYU,EAAO,EAAG,EAAG,GACvBpyF,CACT,MA1Hc,GAAkB8lE,EAAYtoG,UAAWwoG,GACrDC,GAAa,GAAkBH,EAAaG,GA2HzCoxB,CACT,CA1C0C,CA0CxC,GC1JF,SAAS,GAAQxpH,GAYf,OARE,GADoB,oBAAXlR,QAAoD,kBAApBA,OAAO6hC,SACtC,SAAiB3wB,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EAEK,GAAQA,EACjB,CAMA,SAAS,GAAkB2D,EAAQsb,GACjC,IAAK,IAAIlxB,EAAI,EAAGA,EAAIkxB,EAAMjtB,OAAQjE,IAAK,CACrC,IAAIs8D,EAAaprC,EAAMlxB,GACvBs8D,EAAW17D,WAAa07D,EAAW17D,aAAc,EACjD07D,EAAWlnC,cAAe,EACtB,UAAWknC,IAAYA,EAAW51C,UAAW,GACjDhmB,OAAOC,eAAeiV,EAAQ0mD,EAAW/6D,IAAK+6D,EAChD,CACF,CAmBA,SAAS,GAAgB77D,EAAGqB,GAK1B,OAJA,GAAkBpB,OAAOqyH,gBAAkB,SAAyBtyH,EAAGqB,GAErE,OADArB,EAAE2/C,UAAYt+C,EACPrB,CACT,EACO,GAAgBA,EAAGqB,EAC5B,CACA,SAAS,GAAamxH,GACpB,IAAIC,EAyBN,WACE,GAAuB,qBAAZz/F,UAA4BA,QAAQ0/F,UAAW,OAAO,EACjE,GAAI1/F,QAAQ0/F,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVtgG,MAAsB,OAAO,EACxC,IAEE,OADAugG,QAAQzxH,UAAUm0F,QAAQ51F,KAAKszB,QAAQ0/F,UAAUE,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOlwH,GACP,OAAO,CACT,CACF,CAnCkC,GAChC,OAAO,WACL,IACEq3B,EADE+4F,EAAQ,GAAgBN,GAE5B,GAAIC,EAA2B,CAC7B,IAAIO,EAAY,GAAgB5hH,MAAMJ,YACtC+oB,EAAS/G,QAAQ0/F,UAAUI,EAAOvvH,UAAWyvH,EAC/C,MACEj5F,EAAS+4F,EAAMx+G,MAAMlD,KAAM7N,WAE7B,OAGJ,SAAoCiiH,EAAM9lH,GACxC,GAAIA,IAA2B,WAAlB,GAAQA,IAAsC,oBAATA,GAChD,OAAOA,EAET,OAAO,GAAuB8lH,EAChC,CARW,CAA2Bp0G,KAAM2oB,EAC1C,CACF,CAOA,SAAS,GAAuByrF,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI2N,eAAe,6DAE3B,OAAO3N,CACT,CAYA,SAAS,GAAgBxlH,GAIvB,OAHA,GAAkBC,OAAOqyH,eAAiBryH,OAAOgzB,eAAiB,SAAyBjzB,GACzF,OAAOA,EAAE2/C,WAAa1/C,OAAOgzB,eAAejzB,EAC9C,EACO,GAAgBA,EACzB,CACA,SAAS,GAAgBwR,EAAK1Q,EAAKN,GAWjC,OAVIM,KAAO0Q,EACTvR,OAAOC,eAAesR,EAAK1Q,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZw0B,cAAc,EACd1O,UAAU,IAGZzU,EAAI1Q,GAAON,EAENgR,CACT,CAIO,IAAI,GAA4B,SAAU4jH,IA/EjD,SAAmBjD,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIxwF,UAAU,sDAEtBuwF,EAAShxH,UAAYlB,OAAOY,OAAOuxH,GAAcA,EAAWjxH,UAAW,CACrE6P,YAAa,CACXxQ,MAAO2xH,EACPlsG,UAAU,EACV0O,cAAc,KAGdy9F,GAAY,GAAgBD,EAAUC,EAC5C,CAoEE,CAAU6I,EAAc7F,GACxB,IAtFoB3rB,EAAaE,EAAYC,EAsFzC+pB,EAAS,GAAasH,GAC1B,SAASA,IACP,IAAI3wB,GAtGR,SAAyBd,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI7nE,UAAU,oCAExB,CAmGI,CAAgBxwB,KAAM6pH,GACtB,IAAK,IAAIztF,EAAOjqC,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Er5B,EAAKq5B,GAAQlqC,UAAUkqC,GAKzB,OAFA,GAAgB,GADhB68D,EAAQqpB,EAAOj0H,KAAK4U,MAAMq/G,EAAQ,CAACviH,MAAM2iC,OAAO3/B,KACD,WAAY,IAC3D,GAAgB,GAAuBk2F,GAAQ,qBAAsB,CAAC,IAAK,MACpEA,CACT,CA2BA,OA5HoBb,EAkGPwxB,GAlGoBtxB,EAkGN,CAAC,CAC1B7oG,IAAK,QACLN,MAAO,SAAeu0H,EAAY9T,EAAO3wF,GACvC,OAAQ2wF,GACN,IAAK,IACH,OAAO4U,GAAoBL,GAAwBT,GACrD,IAAK,KACH,OAAOzkG,EAAM89F,cAAc2G,EAAY,CACrC3tC,KAAM,WAEV,QACE,OAAO+uC,GAAalV,EAAMz9G,OAAQuxH,GAExC,GACC,CACDj0H,IAAK,WACLN,MAAO,SAAkBmgD,EAAOngD,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACDM,IAAK,MACLN,MAAO,SAAamjC,EAAMw0F,EAAQ33H,GAEhC,OADAmjC,EAAKu3F,cAAc16H,EAAO,EAAG,GACtBmjC,CACT,MAzHc,GAAkB8lE,EAAYtoG,UAAWwoG,GACrDC,GAAa,GAAkBH,EAAaG,GA0HzCqxB,CACT,CAzCuC,CAyCrC,GCzJF,SAAS,GAAQzpH,GAYf,OARE,GADoB,oBAAXlR,QAAoD,kBAApBA,OAAO6hC,SACtC,SAAiB3wB,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EAEK,GAAQA,EACjB,CAMA,SAAS,GAAkB2D,EAAQsb,GACjC,IAAK,IAAIlxB,EAAI,EAAGA,EAAIkxB,EAAMjtB,OAAQjE,IAAK,CACrC,IAAIs8D,EAAaprC,EAAMlxB,GACvBs8D,EAAW17D,WAAa07D,EAAW17D,aAAc,EACjD07D,EAAWlnC,cAAe,EACtB,UAAWknC,IAAYA,EAAW51C,UAAW,GACjDhmB,OAAOC,eAAeiV,EAAQ0mD,EAAW/6D,IAAK+6D,EAChD,CACF,CAmBA,SAAS,GAAgB77D,EAAGqB,GAK1B,OAJA,GAAkBpB,OAAOqyH,gBAAkB,SAAyBtyH,EAAGqB,GAErE,OADArB,EAAE2/C,UAAYt+C,EACPrB,CACT,EACO,GAAgBA,EAAGqB,EAC5B,CACA,SAAS,GAAamxH,GACpB,IAAIC,EAyBN,WACE,GAAuB,qBAAZz/F,UAA4BA,QAAQ0/F,UAAW,OAAO,EACjE,GAAI1/F,QAAQ0/F,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVtgG,MAAsB,OAAO,EACxC,IAEE,OADAugG,QAAQzxH,UAAUm0F,QAAQ51F,KAAKszB,QAAQ0/F,UAAUE,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOlwH,GACP,OAAO,CACT,CACF,CAnCkC,GAChC,OAAO,WACL,IACEq3B,EADE+4F,EAAQ,GAAgBN,GAE5B,GAAIC,EAA2B,CAC7B,IAAIO,EAAY,GAAgB5hH,MAAMJ,YACtC+oB,EAAS/G,QAAQ0/F,UAAUI,EAAOvvH,UAAWyvH,EAC/C,MACEj5F,EAAS+4F,EAAMx+G,MAAMlD,KAAM7N,WAE7B,OAGJ,SAAoCiiH,EAAM9lH,GACxC,GAAIA,IAA2B,WAAlB,GAAQA,IAAsC,oBAATA,GAChD,OAAOA,EAET,OAAO,GAAuB8lH,EAChC,CARW,CAA2Bp0G,KAAM2oB,EAC1C,CACF,CAOA,SAAS,GAAuByrF,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI2N,eAAe,6DAE3B,OAAO3N,CACT,CAYA,SAAS,GAAgBxlH,GAIvB,OAHA,GAAkBC,OAAOqyH,eAAiBryH,OAAOgzB,eAAiB,SAAyBjzB,GACzF,OAAOA,EAAE2/C,WAAa1/C,OAAOgzB,eAAejzB,EAC9C,EACO,GAAgBA,EACzB,CACA,SAAS,GAAgBwR,EAAK1Q,EAAKN,GAWjC,OAVIM,KAAO0Q,EACTvR,OAAOC,eAAesR,EAAK1Q,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZw0B,cAAc,EACd1O,UAAU,IAGZzU,EAAI1Q,GAAON,EAENgR,CACT,CAIO,IAAI,GAA4B,SAAU4jH,IA/EjD,SAAmBjD,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIxwF,UAAU,sDAEtBuwF,EAAShxH,UAAYlB,OAAOY,OAAOuxH,GAAcA,EAAWjxH,UAAW,CACrE6P,YAAa,CACXxQ,MAAO2xH,EACPlsG,UAAU,EACV0O,cAAc,KAGdy9F,GAAY,GAAgBD,EAAUC,EAC5C,CAoEE,CAAU+I,EAAc/F,GACxB,IAtFoB3rB,EAAaE,EAAYC,EAsFzC+pB,EAAS,GAAawH,GAC1B,SAASA,IACP,IAAI7wB,GAtGR,SAAyBd,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI7nE,UAAU,oCAExB,CAmGI,CAAgBxwB,KAAM+pH,GACtB,IAAK,IAAI3tF,EAAOjqC,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Er5B,EAAKq5B,GAAQlqC,UAAUkqC,GAKzB,OAFA,GAAgB,GADhB68D,EAAQqpB,EAAOj0H,KAAK4U,MAAMq/G,EAAQ,CAACviH,MAAM2iC,OAAO3/B,KACD,WAAY,IAC3D,GAAgB,GAAuBk2F,GAAQ,qBAAsB,CAAC,IAAK,MACpEA,CACT,CA2BA,OA5HoBb,EAkGP0xB,GAlGoBxxB,EAkGN,CAAC,CAC1B7oG,IAAK,QACLN,MAAO,SAAeu0H,EAAY9T,EAAO3wF,GACvC,OAAQ2wF,GACN,IAAK,IACH,OAAO4U,GAAoBL,GAAwBT,GACrD,IAAK,KACH,OAAOzkG,EAAM89F,cAAc2G,EAAY,CACrC3tC,KAAM,WAEV,QACE,OAAO+uC,GAAalV,EAAMz9G,OAAQuxH,GAExC,GACC,CACDj0H,IAAK,WACLN,MAAO,SAAkBmgD,EAAOngD,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACDM,IAAK,MACLN,MAAO,SAAamjC,EAAMw0F,EAAQ33H,GAEhC,OADAmjC,EAAKy3F,cAAc56H,EAAO,GACnBmjC,CACT,MAzHc,GAAkB8lE,EAAYtoG,UAAWwoG,GACrDC,GAAa,GAAkBH,EAAaG,GA0HzCuxB,CACT,CAzCuC,CAyCrC,GCzJF,SAAS,GAAQ3pH,GAYf,OARE,GADoB,oBAAXlR,QAAoD,kBAApBA,OAAO6hC,SACtC,SAAiB3wB,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EAEK,GAAQA,EACjB,CAMA,SAAS,GAAkB2D,EAAQsb,GACjC,IAAK,IAAIlxB,EAAI,EAAGA,EAAIkxB,EAAMjtB,OAAQjE,IAAK,CACrC,IAAIs8D,EAAaprC,EAAMlxB,GACvBs8D,EAAW17D,WAAa07D,EAAW17D,aAAc,EACjD07D,EAAWlnC,cAAe,EACtB,UAAWknC,IAAYA,EAAW51C,UAAW,GACjDhmB,OAAOC,eAAeiV,EAAQ0mD,EAAW/6D,IAAK+6D,EAChD,CACF,CAmBA,SAAS,GAAgB77D,EAAGqB,GAK1B,OAJA,GAAkBpB,OAAOqyH,gBAAkB,SAAyBtyH,EAAGqB,GAErE,OADArB,EAAE2/C,UAAYt+C,EACPrB,CACT,EACO,GAAgBA,EAAGqB,EAC5B,CACA,SAAS,GAAamxH,GACpB,IAAIC,EAyBN,WACE,GAAuB,qBAAZz/F,UAA4BA,QAAQ0/F,UAAW,OAAO,EACjE,GAAI1/F,QAAQ0/F,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVtgG,MAAsB,OAAO,EACxC,IAEE,OADAugG,QAAQzxH,UAAUm0F,QAAQ51F,KAAKszB,QAAQ0/F,UAAUE,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOlwH,GACP,OAAO,CACT,CACF,CAnCkC,GAChC,OAAO,WACL,IACEq3B,EADE+4F,EAAQ,GAAgBN,GAE5B,GAAIC,EAA2B,CAC7B,IAAIO,EAAY,GAAgB5hH,MAAMJ,YACtC+oB,EAAS/G,QAAQ0/F,UAAUI,EAAOvvH,UAAWyvH,EAC/C,MACEj5F,EAAS+4F,EAAMx+G,MAAMlD,KAAM7N,WAE7B,OAGJ,SAAoCiiH,EAAM9lH,GACxC,GAAIA,IAA2B,WAAlB,GAAQA,IAAsC,oBAATA,GAChD,OAAOA,EAET,OAAO,GAAuB8lH,EAChC,CARW,CAA2Bp0G,KAAM2oB,EAC1C,CACF,CAOA,SAAS,GAAuByrF,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI2N,eAAe,6DAE3B,OAAO3N,CACT,CAYA,SAAS,GAAgBxlH,GAIvB,OAHA,GAAkBC,OAAOqyH,eAAiBryH,OAAOgzB,eAAiB,SAAyBjzB,GACzF,OAAOA,EAAE2/C,WAAa1/C,OAAOgzB,eAAejzB,EAC9C,EACO,GAAgBA,EACzB,CACA,SAAS,GAAgBwR,EAAK1Q,EAAKN,GAWjC,OAVIM,KAAO0Q,EACTvR,OAAOC,eAAesR,EAAK1Q,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZw0B,cAAc,EACd1O,UAAU,IAGZzU,EAAI1Q,GAAON,EAENgR,CACT,CAGO,IAAI,GAAsC,SAAU4jH,IA9E3D,SAAmBjD,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIxwF,UAAU,sDAEtBuwF,EAAShxH,UAAYlB,OAAOY,OAAOuxH,GAAcA,EAAWjxH,UAAW,CACrE6P,YAAa,CACXxQ,MAAO2xH,EACPlsG,UAAU,EACV0O,cAAc,KAGdy9F,GAAY,GAAgBD,EAAUC,EAC5C,CAmEE,CAAUiJ,EAAwBjG,GAClC,IArFoB3rB,EAAaE,EAAYC,EAqFzC+pB,EAAS,GAAa0H,GAC1B,SAASA,IACP,IAAI/wB,GArGR,SAAyBd,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI7nE,UAAU,oCAExB,CAkGI,CAAgBxwB,KAAMiqH,GACtB,IAAK,IAAI7tF,EAAOjqC,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Er5B,EAAKq5B,GAAQlqC,UAAUkqC,GAKzB,OAFA,GAAgB,GADhB68D,EAAQqpB,EAAOj0H,KAAK4U,MAAMq/G,EAAQ,CAACviH,MAAM2iC,OAAO3/B,KACD,WAAY,IAC3D,GAAgB,GAAuBk2F,GAAQ,qBAAsB,CAAC,IAAK,MACpEA,CACT,CAgBA,OAhHoBb,EAiGP4xB,GAjGoB1xB,EAiGI,CAAC,CACpC7oG,IAAK,QACLN,MAAO,SAAeu0H,EAAY9T,GAIhC,OAAOyU,GAASS,GAAalV,EAAMz9G,OAAQuxH,IAHvB,SAAuBv0H,GACzC,OAAOkB,KAAK4W,MAAM9X,EAAQkB,KAAKyO,IAAI,GAAoB,EAAf8wG,EAAMz9G,QAChD,GAEF,GACC,CACD1C,IAAK,MACLN,MAAO,SAAamjC,EAAMw0F,EAAQ33H,GAEhC,OADAmjC,EAAK23F,mBAAmB96H,GACjBmjC,CACT,MA7Gc,GAAkB8lE,EAAYtoG,UAAWwoG,GACrDC,GAAa,GAAkBH,EAAaG,GA8GzCyxB,CACT,CA9BiD,CA8B/C,GC7IF,SAAS,GAAQ7pH,GAYf,OARE,GADoB,oBAAXlR,QAAoD,kBAApBA,OAAO6hC,SACtC,SAAiB3wB,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EAEK,GAAQA,EACjB,CAMA,SAAS,GAAkB2D,EAAQsb,GACjC,IAAK,IAAIlxB,EAAI,EAAGA,EAAIkxB,EAAMjtB,OAAQjE,IAAK,CACrC,IAAIs8D,EAAaprC,EAAMlxB,GACvBs8D,EAAW17D,WAAa07D,EAAW17D,aAAc,EACjD07D,EAAWlnC,cAAe,EACtB,UAAWknC,IAAYA,EAAW51C,UAAW,GACjDhmB,OAAOC,eAAeiV,EAAQ0mD,EAAW/6D,IAAK+6D,EAChD,CACF,CAmBA,SAAS,GAAgB77D,EAAGqB,GAK1B,OAJA,GAAkBpB,OAAOqyH,gBAAkB,SAAyBtyH,EAAGqB,GAErE,OADArB,EAAE2/C,UAAYt+C,EACPrB,CACT,EACO,GAAgBA,EAAGqB,EAC5B,CACA,SAAS,GAAamxH,GACpB,IAAIC,EAyBN,WACE,GAAuB,qBAAZz/F,UAA4BA,QAAQ0/F,UAAW,OAAO,EACjE,GAAI1/F,QAAQ0/F,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVtgG,MAAsB,OAAO,EACxC,IAEE,OADAugG,QAAQzxH,UAAUm0F,QAAQ51F,KAAKszB,QAAQ0/F,UAAUE,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOlwH,GACP,OAAO,CACT,CACF,CAnCkC,GAChC,OAAO,WACL,IACEq3B,EADE+4F,EAAQ,GAAgBN,GAE5B,GAAIC,EAA2B,CAC7B,IAAIO,EAAY,GAAgB5hH,MAAMJ,YACtC+oB,EAAS/G,QAAQ0/F,UAAUI,EAAOvvH,UAAWyvH,EAC/C,MACEj5F,EAAS+4F,EAAMx+G,MAAMlD,KAAM7N,WAE7B,OAGJ,SAAoCiiH,EAAM9lH,GACxC,GAAIA,IAA2B,WAAlB,GAAQA,IAAsC,oBAATA,GAChD,OAAOA,EAET,OAAO,GAAuB8lH,EAChC,CARW,CAA2Bp0G,KAAM2oB,EAC1C,CACF,CAOA,SAAS,GAAuByrF,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI2N,eAAe,6DAE3B,OAAO3N,CACT,CAYA,SAAS,GAAgBxlH,GAIvB,OAHA,GAAkBC,OAAOqyH,eAAiBryH,OAAOgzB,eAAiB,SAAyBjzB,GACzF,OAAOA,EAAE2/C,WAAa1/C,OAAOgzB,eAAejzB,EAC9C,EACO,GAAgBA,EACzB,CACA,SAAS,GAAgBwR,EAAK1Q,EAAKN,GAWjC,OAVIM,KAAO0Q,EACTvR,OAAOC,eAAesR,EAAK1Q,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZw0B,cAAc,EACd1O,UAAU,IAGZzU,EAAI1Q,GAAON,EAENgR,CACT,CAKO,IAAI,GAAsC,SAAU4jH,IAhF3D,SAAmBjD,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIxwF,UAAU,sDAEtBuwF,EAAShxH,UAAYlB,OAAOY,OAAOuxH,GAAcA,EAAWjxH,UAAW,CACrE6P,YAAa,CACXxQ,MAAO2xH,EACPlsG,UAAU,EACV0O,cAAc,KAGdy9F,GAAY,GAAgBD,EAAUC,EAC5C,CAqEE,CAAUmJ,EAAwBnG,GAClC,IAvFoB3rB,EAAaE,EAAYC,EAuFzC+pB,EAAS,GAAa4H,GAC1B,SAASA,IACP,IAAIjxB,GAvGR,SAAyBd,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI7nE,UAAU,oCAExB,CAoGI,CAAgBxwB,KAAMmqH,GACtB,IAAK,IAAI/tF,EAAOjqC,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Er5B,EAAKq5B,GAAQlqC,UAAUkqC,GAKzB,OAFA,GAAgB,GADhB68D,EAAQqpB,EAAOj0H,KAAK4U,MAAMq/G,EAAQ,CAACviH,MAAM2iC,OAAO3/B,KACD,WAAY,IAC3D,GAAgB,GAAuBk2F,GAAQ,qBAAsB,CAAC,IAAK,IAAK,MACzEA,CACT,CA2BA,OA7HoBb,EAmGP8xB,GAnGoB5xB,EAmGI,CAAC,CACpC7oG,IAAK,QACLN,MAAO,SAAeu0H,EAAY9T,GAChC,OAAQA,GACN,IAAK,IACH,OAAO6U,GAAqBL,GAAuCV,GACrE,IAAK,KACH,OAAOe,GAAqBL,GAAwBV,GACtD,IAAK,OACH,OAAOe,GAAqBL,GAAuCV,GACrE,IAAK,QACH,OAAOe,GAAqBL,GAA0CV,GAExE,QACE,OAAOe,GAAqBL,GAA2BV,GAE7D,GACC,CACDj0H,IAAK,MACLN,MAAO,SAAamjC,EAAMowF,EAAOvzH,GAC/B,OAAIuzH,EAAMI,eACDxwF,EAEF,IAAIO,KAAKP,EAAKigE,UAAYpjG,EACnC,MA1Hc,GAAkBipG,EAAYtoG,UAAWwoG,GACrDC,GAAa,GAAkBH,EAAaG,GA2HzC2xB,CACT,CAzCiD,CAyC/C,GC1JF,SAAS,GAAQ/pH,GAYf,OARE,GADoB,oBAAXlR,QAAoD,kBAApBA,OAAO6hC,SACtC,SAAiB3wB,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EAEK,GAAQA,EACjB,CAMA,SAAS,GAAkB2D,EAAQsb,GACjC,IAAK,IAAIlxB,EAAI,EAAGA,EAAIkxB,EAAMjtB,OAAQjE,IAAK,CACrC,IAAIs8D,EAAaprC,EAAMlxB,GACvBs8D,EAAW17D,WAAa07D,EAAW17D,aAAc,EACjD07D,EAAWlnC,cAAe,EACtB,UAAWknC,IAAYA,EAAW51C,UAAW,GACjDhmB,OAAOC,eAAeiV,EAAQ0mD,EAAW/6D,IAAK+6D,EAChD,CACF,CAmBA,SAAS,GAAgB77D,EAAGqB,GAK1B,OAJA,GAAkBpB,OAAOqyH,gBAAkB,SAAyBtyH,EAAGqB,GAErE,OADArB,EAAE2/C,UAAYt+C,EACPrB,CACT,EACO,GAAgBA,EAAGqB,EAC5B,CACA,SAAS,GAAamxH,GACpB,IAAIC,EAyBN,WACE,GAAuB,qBAAZz/F,UAA4BA,QAAQ0/F,UAAW,OAAO,EACjE,GAAI1/F,QAAQ0/F,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVtgG,MAAsB,OAAO,EACxC,IAEE,OADAugG,QAAQzxH,UAAUm0F,QAAQ51F,KAAKszB,QAAQ0/F,UAAUE,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOlwH,GACP,OAAO,CACT,CACF,CAnCkC,GAChC,OAAO,WACL,IACEq3B,EADE+4F,EAAQ,GAAgBN,GAE5B,GAAIC,EAA2B,CAC7B,IAAIO,EAAY,GAAgB5hH,MAAMJ,YACtC+oB,EAAS/G,QAAQ0/F,UAAUI,EAAOvvH,UAAWyvH,EAC/C,MACEj5F,EAAS+4F,EAAMx+G,MAAMlD,KAAM7N,WAE7B,OAGJ,SAAoCiiH,EAAM9lH,GACxC,GAAIA,IAA2B,WAAlB,GAAQA,IAAsC,oBAATA,GAChD,OAAOA,EAET,OAAO,GAAuB8lH,EAChC,CARW,CAA2Bp0G,KAAM2oB,EAC1C,CACF,CAOA,SAAS,GAAuByrF,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI2N,eAAe,6DAE3B,OAAO3N,CACT,CAYA,SAAS,GAAgBxlH,GAIvB,OAHA,GAAkBC,OAAOqyH,eAAiBryH,OAAOgzB,eAAiB,SAAyBjzB,GACzF,OAAOA,EAAE2/C,WAAa1/C,OAAOgzB,eAAejzB,EAC9C,EACO,GAAgBA,EACzB,CACA,SAAS,GAAgBwR,EAAK1Q,EAAKN,GAWjC,OAVIM,KAAO0Q,EACTvR,OAAOC,eAAesR,EAAK1Q,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZw0B,cAAc,EACd1O,UAAU,IAGZzU,EAAI1Q,GAAON,EAENgR,CACT,CAKO,IAAI,GAAiC,SAAU4jH,IAhFtD,SAAmBjD,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIxwF,UAAU,sDAEtBuwF,EAAShxH,UAAYlB,OAAOY,OAAOuxH,GAAcA,EAAWjxH,UAAW,CACrE6P,YAAa,CACXxQ,MAAO2xH,EACPlsG,UAAU,EACV0O,cAAc,KAGdy9F,GAAY,GAAgBD,EAAUC,EAC5C,CAqEE,CAAUoJ,EAAmBpG,GAC7B,IAvFoB3rB,EAAaE,EAAYC,EAuFzC+pB,EAAS,GAAa6H,GAC1B,SAASA,IACP,IAAIlxB,GAvGR,SAAyBd,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI7nE,UAAU,oCAExB,CAoGI,CAAgBxwB,KAAMoqH,GACtB,IAAK,IAAIhuF,EAAOjqC,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Er5B,EAAKq5B,GAAQlqC,UAAUkqC,GAKzB,OAFA,GAAgB,GADhB68D,EAAQqpB,EAAOj0H,KAAK4U,MAAMq/G,EAAQ,CAACviH,MAAM2iC,OAAO3/B,KACD,WAAY,IAC3D,GAAgB,GAAuBk2F,GAAQ,qBAAsB,CAAC,IAAK,IAAK,MACzEA,CACT,CA2BA,OA7HoBb,EAmGP+xB,GAnGoB7xB,EAmGD,CAAC,CAC/B7oG,IAAK,QACLN,MAAO,SAAeu0H,EAAY9T,GAChC,OAAQA,GACN,IAAK,IACH,OAAO6U,GAAqBL,GAAuCV,GACrE,IAAK,KACH,OAAOe,GAAqBL,GAAwBV,GACtD,IAAK,OACH,OAAOe,GAAqBL,GAAuCV,GACrE,IAAK,QACH,OAAOe,GAAqBL,GAA0CV,GAExE,QACE,OAAOe,GAAqBL,GAA2BV,GAE7D,GACC,CACDj0H,IAAK,MACLN,MAAO,SAAamjC,EAAMowF,EAAOvzH,GAC/B,OAAIuzH,EAAMI,eACDxwF,EAEF,IAAIO,KAAKP,EAAKigE,UAAYpjG,EACnC,MA1Hc,GAAkBipG,EAAYtoG,UAAWwoG,GACrDC,GAAa,GAAkBH,EAAaG,GA2HzC4xB,CACT,CAzC4C,CAyC1C,GC1JF,SAAS,GAAQhqH,GAYf,OARE,GADoB,oBAAXlR,QAAoD,kBAApBA,OAAO6hC,SACtC,SAAiB3wB,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EAEK,GAAQA,EACjB,CAMA,SAAS,GAAkB2D,EAAQsb,GACjC,IAAK,IAAIlxB,EAAI,EAAGA,EAAIkxB,EAAMjtB,OAAQjE,IAAK,CACrC,IAAIs8D,EAAaprC,EAAMlxB,GACvBs8D,EAAW17D,WAAa07D,EAAW17D,aAAc,EACjD07D,EAAWlnC,cAAe,EACtB,UAAWknC,IAAYA,EAAW51C,UAAW,GACjDhmB,OAAOC,eAAeiV,EAAQ0mD,EAAW/6D,IAAK+6D,EAChD,CACF,CAmBA,SAAS,GAAgB77D,EAAGqB,GAK1B,OAJA,GAAkBpB,OAAOqyH,gBAAkB,SAAyBtyH,EAAGqB,GAErE,OADArB,EAAE2/C,UAAYt+C,EACPrB,CACT,EACO,GAAgBA,EAAGqB,EAC5B,CACA,SAAS,GAAamxH,GACpB,IAAIC,EAyBN,WACE,GAAuB,qBAAZz/F,UAA4BA,QAAQ0/F,UAAW,OAAO,EACjE,GAAI1/F,QAAQ0/F,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVtgG,MAAsB,OAAO,EACxC,IAEE,OADAugG,QAAQzxH,UAAUm0F,QAAQ51F,KAAKszB,QAAQ0/F,UAAUE,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOlwH,GACP,OAAO,CACT,CACF,CAnCkC,GAChC,OAAO,WACL,IACEq3B,EADE+4F,EAAQ,GAAgBN,GAE5B,GAAIC,EAA2B,CAC7B,IAAIO,EAAY,GAAgB5hH,MAAMJ,YACtC+oB,EAAS/G,QAAQ0/F,UAAUI,EAAOvvH,UAAWyvH,EAC/C,MACEj5F,EAAS+4F,EAAMx+G,MAAMlD,KAAM7N,WAE7B,OAGJ,SAAoCiiH,EAAM9lH,GACxC,GAAIA,IAA2B,WAAlB,GAAQA,IAAsC,oBAATA,GAChD,OAAOA,EAET,OAAO,GAAuB8lH,EAChC,CARW,CAA2Bp0G,KAAM2oB,EAC1C,CACF,CAOA,SAAS,GAAuByrF,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI2N,eAAe,6DAE3B,OAAO3N,CACT,CAYA,SAAS,GAAgBxlH,GAIvB,OAHA,GAAkBC,OAAOqyH,eAAiBryH,OAAOgzB,eAAiB,SAAyBjzB,GACzF,OAAOA,EAAE2/C,WAAa1/C,OAAOgzB,eAAejzB,EAC9C,EACO,GAAgBA,EACzB,CACA,SAAS,GAAgBwR,EAAK1Q,EAAKN,GAWjC,OAVIM,KAAO0Q,EACTvR,OAAOC,eAAesR,EAAK1Q,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZw0B,cAAc,EACd1O,UAAU,IAGZzU,EAAI1Q,GAAON,EAENgR,CACT,CAGO,IAAI,GAAsC,SAAU4jH,IA9E3D,SAAmBjD,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIxwF,UAAU,sDAEtBuwF,EAAShxH,UAAYlB,OAAOY,OAAOuxH,GAAcA,EAAWjxH,UAAW,CACrE6P,YAAa,CACXxQ,MAAO2xH,EACPlsG,UAAU,EACV0O,cAAc,KAGdy9F,GAAY,GAAgBD,EAAUC,EAC5C,CAmEE,CAAUqJ,EAAwBrG,GAClC,IArFoB3rB,EAAaE,EAAYC,EAqFzC+pB,EAAS,GAAa8H,GAC1B,SAASA,IACP,IAAInxB,GArGR,SAAyBd,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI7nE,UAAU,oCAExB,CAkGI,CAAgBxwB,KAAMqqH,GACtB,IAAK,IAAIjuF,EAAOjqC,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Er5B,EAAKq5B,GAAQlqC,UAAUkqC,GAKzB,OAFA,GAAgB,GADhB68D,EAAQqpB,EAAOj0H,KAAK4U,MAAMq/G,EAAQ,CAACviH,MAAM2iC,OAAO3/B,KACD,WAAY,IAC3D,GAAgB,GAAuBk2F,GAAQ,qBAAsB,KAC9DA,CACT,CAcA,OA9GoBb,EAiGPgyB,GAjGoB9xB,EAiGI,CAAC,CACpC7oG,IAAK,QACLN,MAAO,SAAeu0H,GACpB,OAAOmB,GAAqBnB,EAC9B,GACC,CACDj0H,IAAK,MACLN,MAAO,SAAamgD,EAAOw3E,EAAQ33H,GACjC,MAAO,CAAC,IAAI0jC,KAAa,IAAR1jC,GAAe,CAC9B2zH,gBAAgB,GAEpB,MA3Gc,GAAkB1qB,EAAYtoG,UAAWwoG,GACrDC,GAAa,GAAkBH,EAAaG,GA4GzC6xB,CACT,CA5BiD,CA4B/C,GC3IF,SAAS,GAAQjqH,GAYf,OARE,GADoB,oBAAXlR,QAAoD,kBAApBA,OAAO6hC,SACtC,SAAiB3wB,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EAEK,GAAQA,EACjB,CAMA,SAAS,GAAkB2D,EAAQsb,GACjC,IAAK,IAAIlxB,EAAI,EAAGA,EAAIkxB,EAAMjtB,OAAQjE,IAAK,CACrC,IAAIs8D,EAAaprC,EAAMlxB,GACvBs8D,EAAW17D,WAAa07D,EAAW17D,aAAc,EACjD07D,EAAWlnC,cAAe,EACtB,UAAWknC,IAAYA,EAAW51C,UAAW,GACjDhmB,OAAOC,eAAeiV,EAAQ0mD,EAAW/6D,IAAK+6D,EAChD,CACF,CAmBA,SAAS,GAAgB77D,EAAGqB,GAK1B,OAJA,GAAkBpB,OAAOqyH,gBAAkB,SAAyBtyH,EAAGqB,GAErE,OADArB,EAAE2/C,UAAYt+C,EACPrB,CACT,EACO,GAAgBA,EAAGqB,EAC5B,CACA,SAAS,GAAamxH,GACpB,IAAIC,EAyBN,WACE,GAAuB,qBAAZz/F,UAA4BA,QAAQ0/F,UAAW,OAAO,EACjE,GAAI1/F,QAAQ0/F,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVtgG,MAAsB,OAAO,EACxC,IAEE,OADAugG,QAAQzxH,UAAUm0F,QAAQ51F,KAAKszB,QAAQ0/F,UAAUE,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOlwH,GACP,OAAO,CACT,CACF,CAnCkC,GAChC,OAAO,WACL,IACEq3B,EADE+4F,EAAQ,GAAgBN,GAE5B,GAAIC,EAA2B,CAC7B,IAAIO,EAAY,GAAgB5hH,MAAMJ,YACtC+oB,EAAS/G,QAAQ0/F,UAAUI,EAAOvvH,UAAWyvH,EAC/C,MACEj5F,EAAS+4F,EAAMx+G,MAAMlD,KAAM7N,WAE7B,OAGJ,SAAoCiiH,EAAM9lH,GACxC,GAAIA,IAA2B,WAAlB,GAAQA,IAAsC,oBAATA,GAChD,OAAOA,EAET,OAAO,GAAuB8lH,EAChC,CARW,CAA2Bp0G,KAAM2oB,EAC1C,CACF,CAOA,SAAS,GAAuByrF,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI2N,eAAe,6DAE3B,OAAO3N,CACT,CAYA,SAAS,GAAgBxlH,GAIvB,OAHA,GAAkBC,OAAOqyH,eAAiBryH,OAAOgzB,eAAiB,SAAyBjzB,GACzF,OAAOA,EAAE2/C,WAAa1/C,OAAOgzB,eAAejzB,EAC9C,EACO,GAAgBA,EACzB,CACA,SAAS,GAAgBwR,EAAK1Q,EAAKN,GAWjC,OAVIM,KAAO0Q,EACTvR,OAAOC,eAAesR,EAAK1Q,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZw0B,cAAc,EACd1O,UAAU,IAGZzU,EAAI1Q,GAAON,EAENgR,CACT,CAGO,IAAI,GAA2C,SAAU4jH,IA9EhE,SAAmBjD,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIxwF,UAAU,sDAEtBuwF,EAAShxH,UAAYlB,OAAOY,OAAOuxH,GAAcA,EAAWjxH,UAAW,CACrE6P,YAAa,CACXxQ,MAAO2xH,EACPlsG,UAAU,EACV0O,cAAc,KAGdy9F,GAAY,GAAgBD,EAAUC,EAC5C,CAmEE,CAAUsJ,EAA6BtG,GACvC,IArFoB3rB,EAAaE,EAAYC,EAqFzC+pB,EAAS,GAAa+H,GAC1B,SAASA,IACP,IAAIpxB,GArGR,SAAyBd,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAI7nE,UAAU,oCAExB,CAkGI,CAAgBxwB,KAAMsqH,GACtB,IAAK,IAAIluF,EAAOjqC,UAAUC,OAAQ4Q,EAAO,IAAIpQ,MAAMwpC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Er5B,EAAKq5B,GAAQlqC,UAAUkqC,GAKzB,OAFA,GAAgB,GADhB68D,EAAQqpB,EAAOj0H,KAAK4U,MAAMq/G,EAAQ,CAACviH,MAAM2iC,OAAO3/B,KACD,WAAY,IAC3D,GAAgB,GAAuBk2F,GAAQ,qBAAsB,KAC9DA,CACT,CAcA,OA9GoBb,EAiGPiyB,GAjGoB/xB,EAiGS,CAAC,CACzC7oG,IAAK,QACLN,MAAO,SAAeu0H,GACpB,OAAOmB,GAAqBnB,EAC9B,GACC,CACDj0H,IAAK,MACLN,MAAO,SAAamgD,EAAOw3E,EAAQ33H,GACjC,MAAO,CAAC,IAAI0jC,KAAK1jC,GAAQ,CACvB2zH,gBAAgB,GAEpB,MA3Gc,GAAkB1qB,EAAYtoG,UAAWwoG,GACrDC,GAAa,GAAkBH,EAAaG,GA4GzC8xB,CACT,CA5BsD,CA4BpD,GChESC,GAAU,CACnB91H,EAAG,IAAIsvH,GACPj/G,EAAG,IAAI,GACPpR,EAAG,IAAI,GACPO,EAAG,IAAI,GACPouF,EAAG,IAAI,GACPnuF,EAAG,IAAI,GACPs2H,EAAG,IAAI,GACPl2H,EAAG,IAAI,GACPC,EAAG,IAAI,GACPhC,EAAG,IAAI,GACPoC,EAAG,IAAI,GACPlG,EAAG,IAAI,GACPwC,EAAG,IAAI,GACPC,EAAG,IAAI,GACPI,EAAG,IAAI,GACP9C,EAAG,IAAI,GACPL,EAAG,IAAI,GACPiD,EAAG,IAAI,GACPC,EAAG,IAAI,GACPN,EAAG,IAAI,GACPV,EAAG,IAAI,GACPqE,EAAG,IAAI,GACPF,EAAG,IAAI,GACPtC,EAAG,IAAI,GACP3D,EAAG,IAAI,GACP2B,EAAG,IAAI,GACP8D,EAAG,IAAI,GACPL,EAAG,IAAI,GACPH,EAAG,IAAI,GACPnE,EAAG,IAAI,GACP0E,EAAG,IAAI,IC1GT,SAAS,GAAQqM,GAYf,OARE,GADoB,oBAAXlR,QAAoD,kBAApBA,OAAO6hC,SACtC,SAAiB3wB,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EAEK,GAAQA,EACjB,CACA,SAASqqH,GAA2B77H,EAAG87H,GACrC,IAAIC,EACJ,GAAsB,qBAAXz7H,QAAgD,MAAtBN,EAAEM,OAAO6hC,UAAmB,CAC/D,GAAIn+B,MAAMC,QAAQjE,KAAO+7H,EAgD7B,SAAqC/7H,EAAG+iC,GACtC,IAAK/iC,EAAG,OACR,GAAiB,kBAANA,EAAgB,OAAOgjC,GAAkBhjC,EAAG+iC,GACvD,IAAI/hC,EAAIf,OAAOkB,UAAUkS,SAAS3T,KAAKM,GAAGsT,MAAM,GAAI,GAC1C,WAANtS,GAAkBhB,EAAEgR,cAAahQ,EAAIhB,EAAEgR,YAAYlR,MACvD,GAAU,QAANkB,GAAqB,QAANA,EAAa,OAAOgD,MAAMiY,KAAKjc,GAClD,GAAU,cAANgB,GAAqB,2CAA2CiiC,KAAKjiC,GAAI,OAAOgiC,GAAkBhjC,EAAG+iC,EAC3G,CAvDkCG,CAA4BljC,KAAO87H,GAAkB97H,GAAyB,kBAAbA,EAAEwD,OAAqB,CAChHu4H,IAAI/7H,EAAI+7H,GACZ,IAAIx8H,EAAI,EACJgD,EAAI,WAAc,EACtB,MAAO,CACLjB,EAAGiB,EACHvB,EAAG,WACD,OAAIzB,GAAKS,EAAEwD,OAAe,CACxBm/B,MAAM,GAED,CACLA,MAAM,EACNniC,MAAOR,EAAET,KAEb,EACAmD,EAAG,SAAW2/B,GACZ,MAAMA,CACR,EACA1/B,EAAGJ,EAEP,CACA,MAAM,IAAIq/B,UAAU,wIACtB,CACA,IAEEgB,EAFEo5F,GAAmB,EACrBC,GAAS,EAEX,MAAO,CACL36H,EAAG,WACDy6H,EAAK/7H,EAAEM,OAAO6hC,WAChB,EACAnhC,EAAG,WACD,IAAI60D,EAAOkmE,EAAGtlG,OAEd,OADAulG,EAAmBnmE,EAAKlzB,KACjBkzB,CACT,EACAnzD,EAAG,SAAWw5H,GACZD,GAAS,EACTr5F,EAAMs5F,CACR,EACAv5H,EAAG,WACD,IACOq5H,GAAiC,MAAbD,EAAGl5F,QAAgBk5F,EAAGl5F,QACjD,CAAE,QACA,GAAIo5F,EAAQ,MAAMr5F,CACpB,CACF,EAEJ,CASA,SAASI,GAAkB1O,EAAKnjB,IACnB,MAAPA,GAAeA,EAAMmjB,EAAI9wB,UAAQ2N,EAAMmjB,EAAI9wB,QAC/C,IAAK,IAAIjE,EAAI,EAAG6jC,EAAO,IAAIp/B,MAAMmN,GAAM5R,EAAI4R,EAAK5R,IAC9C6jC,EAAK7jC,GAAK+0B,EAAI/0B,GAEhB,OAAO6jC,CACT,CAwBA,IAAI+4F,GAAyB,wDAGzBC,GAA6B,oCAC7BC,GAAsB,eACtBC,GAAoB,MACpBC,GAAsB,KACtBC,GAAgC,WA+SrB,SAAS,GAAMC,EAAiBC,EAAmBC,EAAoBnnH,GACpF,IAAImpB,EAAMy4F,EAAiB5kF,EAAOqD,EAAOymB,EAAOq7D,EAAuBiF,EAAkBC,EAAuBvF,EAAuBC,EAAwB36D,EAAOyH,EAAO+B,EAAO+wD,EAAuB2F,EAAkBC,EAAuBC,EAAwBC,EAC5Q5R,EAAa,EAAG9nH,WAChB,IAAIwxH,EAAalzF,OAAO46F,GACpBS,EAAer7F,OAAO66F,GACtBvtB,EAAiB8nB,KACjB91G,EAA4L,QAAlLwd,EAAgG,QAAxFy4F,EAA8B,OAAZ5hH,QAAgC,IAAZA,OAAqB,EAASA,EAAQ2L,cAAwC,IAApBi2G,EAA6BA,EAAkBjoB,EAAehuF,cAA6B,IAATwd,EAAkBA,EAAOyxF,EACjO,IAAKjvG,EAAOmP,MACV,MAAM,IAAI2hG,WAAW,sCAEvB,IAAIvB,EAAwBC,EAAu3B,QAA52Bn+E,EAA6jB,QAApjBqD,EAAue,QAA9dymB,EAAsH,QAA7Gq7D,EAAoC,OAAZniH,QAAgC,IAAZA,OAAqB,EAASA,EAAQk7G,6BAA6D,IAA1BiH,EAAmCA,EAAoC,OAAZniH,QAAgC,IAAZA,GAAsE,QAAvConH,EAAmBpnH,EAAQ2L,cAAyC,IAArBy7G,GAA8F,QAAtDC,EAAwBD,EAAiBpnH,eAA+C,IAA1BqnH,OAA/J,EAA2MA,EAAsBnM,6BAA6C,IAAVp0D,EAAmBA,EAAQ6yC,EAAeuhB,6BAA6C,IAAV76E,EAAmBA,EAA4D,QAAnDyhF,EAAwBnoB,EAAehuF,cAA8C,IAA1Bm2G,GAAyG,QAA5DC,EAAyBD,EAAsB9hH,eAAgD,IAA3B+hH,OAA9E,EAA2HA,EAAuB7G,6BAA6C,IAAVl+E,EAAmBA,EAAQ,GAEt7B,KAAMk+E,GAAyB,GAAKA,GAAyB,GAC3D,MAAM,IAAIuB,WAAW,6DAEvB,IAAIxB,EAAeE,EAAs1B,QAA30B/zD,EAAkiB,QAAzhByH,EAAqd,QAA5c+B,EAA6G,QAApG+wD,EAAoC,OAAZ3hH,QAAgC,IAAZA,OAAqB,EAASA,EAAQi7G,oBAAoD,IAA1B0G,EAAmCA,EAAoC,OAAZ3hH,QAAgC,IAAZA,GAAsE,QAAvCsnH,EAAmBtnH,EAAQ2L,cAAyC,IAArB27G,GAA8F,QAAtDC,EAAwBD,EAAiBtnH,eAA+C,IAA1BunH,OAA/J,EAA2MA,EAAsBtM,oBAAoC,IAAVrqD,EAAmBA,EAAQ+oC,EAAeshB,oBAAoC,IAAVpsD,EAAmBA,EAA6D,QAApD24D,EAAyB7tB,EAAehuF,cAA+C,IAA3B67G,GAA2G,QAA7DC,EAAyBD,EAAuBxnH,eAAgD,IAA3BynH,OAA/E,EAA4HA,EAAuBxM,oBAAoC,IAAV7zD,EAAmBA,EAAQ,GAE54B,KAAM6zD,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAIwB,WAAW,oDAEvB,GAAqB,KAAjBiL,EACF,MAAmB,KAAfnI,EACK/lB,EAAO2tB,GAEP,IAAIz4F,KAAKkL,KAGpB,IAiBE+tF,EAjBEC,EAAe,CACjB1M,sBAAuBA,EACvBD,aAAcA,EACdtvG,OAAQA,GAGNk8G,EAAU,CAAC,IAAIrJ,GACfsJ,EAASJ,EAAa5sG,MAAM8rG,IAA4Bl4H,KAAI,SAAUkjG,GACxE,IAAIm2B,EAAiBn2B,EAAU,GAC/B,OAAIm2B,KAAkB,GAEbC,EADa,EAAeD,IACdn2B,EAAWjmF,EAAOmvG,YAElClpB,CACT,IAAGlzE,KAAK,IAAI5D,MAAM6rG,IACdsB,EAAa,GACbC,EAAY7B,GAA2ByB,GAE3C,IACE,IAAIn3F,EAAQ,WACV,IAAI86E,EAAQkc,EAAM38H,MACA,OAAZgV,QAAgC,IAAZA,GAAsBA,EAAQmoH,8BAAgC5L,EAAyB9Q,IAC/G+Q,EAAoB/Q,EAAOic,EAAcT,GAEzB,OAAZjnH,QAAgC,IAAZA,GAAsBA,EAAQooH,+BAAiC9L,EAA0B7Q,IACjH+Q,EAAoB/Q,EAAOic,EAAcT,GAE3C,IAAIc,EAAiBtc,EAAM,GACvBjzB,EAAS2tC,GAAQ4B,GACrB,GAAIvvC,EAAQ,CACV,IAAI6vC,EAAqB7vC,EAAO6vC,mBAChC,GAAI75H,MAAMC,QAAQ45H,GAAqB,CACrC,IAAIC,EAAoBL,EAAWM,MAAK,SAAUC,GAChD,OAAOH,EAAmBh7G,SAASm7G,EAAU/c,QAAU+c,EAAU/c,QAAUsc,CAC7E,IACA,GAAIO,EACF,MAAM,IAAI7L,WAAW,sCAAsCl+E,OAAO+pF,EAAkBG,UAAW,WAAWlqF,OAAOktE,EAAO,sBAE5H,MAAO,GAAkC,MAA9BjzB,EAAO6vC,oBAA8BJ,EAAWj6H,OAAS,EAClE,MAAM,IAAIyuH,WAAW,sCAAsCl+E,OAAOktE,EAAO,2CAE3Ewc,EAAWjnH,KAAK,CACdyqG,MAAOsc,EACPU,UAAWhd,IAEb,IAAIiP,EAAcliC,EAAOkwC,IAAInJ,EAAY9T,EAAO9/F,EAAOmP,MAAO8sG,GAC9D,IAAKlN,EACH,MAAO,CACL3uH,EAAG,IAAI2iC,KAAKkL,MAGhBiuF,EAAQ7mH,KAAK05G,EAAY8E,QACzBD,EAAa7E,EAAYF,IAC3B,KAAO,CACL,GAAIuN,EAAejtG,MAAMksG,IACvB,MAAM,IAAIvK,WAAW,iEAAmEsL,EAAiB,KAS3G,GANc,OAAVtc,EACFA,EAAQ,IACoB,MAAnBsc,IACTtc,EAA2BA,EAuEtB3wF,MAAM+rG,IAAqB,GAAGxsH,QAAQysH,GAAmB,MApE9B,IAA9BvH,EAAWz/G,QAAQ2rG,GAGrB,MAAO,CACL1/G,EAAG,IAAI2iC,KAAKkL,MAHd2lF,EAAaA,EAAWzhH,MAAM2tG,EAAMz9G,OAMxC,CACF,EACA,IAAKk6H,EAAUp8H,MAAO67H,EAAQO,EAAU18H,KAAK2hC,MAAO,CAClD,IAAIw7F,EAAOh4F,IACX,GAAsB,WAAlB,GAAQg4F,GAAoB,OAAOA,EAAK58H,CAC9C,CACF,CAAE,MAAOqhC,IACP86F,EAAUh7H,EAAEkgC,GACd,CAAE,QACA86F,EAAU/6H,GACZ,CACA,GAAIoyH,EAAWvxH,OAAS,GAAK+4H,GAAoBt5F,KAAK8xF,GACpD,OAAO,IAAI7wF,KAAKkL,KAElB,IAAIgvF,EAAwBf,EAAQn5H,KAAI,SAAU8wH,GAChD,OAAOA,EAAOnB,QAChB,IAAG7/E,MAAK,SAAUxxC,EAAGC,GACnB,OAAOA,EAAID,CACb,IAAG+xB,QAAO,SAAUs/F,EAAU5+G,EAAO0D,GACnC,OAAOA,EAAMrD,QAAQu+G,KAAc5+G,CACrC,IAAG/Q,KAAI,SAAU2vH,GACf,OAAOwJ,EAAQ9oG,QAAO,SAAUygG,GAC9B,OAAOA,EAAOnB,WAAaA,CAC7B,IAAG7/E,MAAK,SAAUxxC,EAAGC,GACnB,OAAOA,EAAEqxH,YAActxH,EAAEsxH,WAC3B,GACF,IAAG5vH,KAAI,SAAUm6H,GACf,OAAOA,EAAY,EACrB,IACI16F,EAAOqrE,EAAO2tB,GAClB,GAAIlkH,MAAMkrB,EAAKigE,WACb,OAAO,IAAI1/D,KAAKkL,KAGlB,IAGEkvF,EAHE9M,EAAUR,EAAgBrtF,EAAM4tF,EAAgC5tF,IAChEowF,EAAQ,CAAC,EACTwK,EAAa1C,GAA2BuC,GAE5C,IACE,IAAKG,EAAWj9H,MAAOg9H,EAASC,EAAWv9H,KAAK2hC,MAAO,CACrD,IAAIqyF,GAASsJ,EAAO99H,MACpB,IAAKw0H,GAAOC,SAASzD,EAAS4L,GAC5B,OAAO,IAAIl5F,KAAKkL,KAElB,IAAIrV,GAASi7F,GAAOl5G,IAAI01G,EAASuC,EAAOqJ,GAEpCp5H,MAAMC,QAAQ81B,KAChBy3F,EAAUz3F,GAAO,GACjB,EAAOg6F,EAAOh6F,GAAO,KAErBy3F,EAAUz3F,EAEd,CACF,CAAE,MAAO6I,IACP27F,EAAW77H,EAAEkgC,GACf,CAAE,QACA27F,EAAW57H,GACb,CACA,OAAO6uH,CACT,CCthBe,SAASgN,GAASjT,EAAU/1G,GACzC,IAAIipH,EACJpT,EAAa,EAAG9nH,WAChB,IAAIm7H,EAAmB/N,EAAmH,QAAxG8N,EAAoC,OAAZjpH,QAAgC,IAAZA,OAAqB,EAASA,EAAQkpH,wBAAwD,IAA1BD,EAAmCA,EAAwB,GAC7M,GAAyB,IAArBC,GAA+C,IAArBA,GAA+C,IAArBA,EACtD,MAAM,IAAIzM,WAAW,sCAEvB,GAA0B,kBAAb1G,GAAsE,oBAA7CtrH,OAAOkB,UAAUkS,SAAS3T,KAAK6rH,GACnE,OAAO,IAAIrnF,KAAKkL,KAElB,IACIzL,EADAg7F,EA6CN,SAAyB5J,GACvB,IAEI6J,EAFAD,EAAc,CAAC,EACfhmH,EAAQo8G,EAAWz+G,MAAMuoH,GAASC,mBAItC,GAAInmH,EAAMnV,OAAS,EACjB,OAAOm7H,EAEL,IAAI17F,KAAKtqB,EAAM,IACjBimH,EAAajmH,EAAM,IAEnBgmH,EAAYh7F,KAAOhrB,EAAM,GACzBimH,EAAajmH,EAAM,GACfkmH,GAASE,kBAAkB97F,KAAK07F,EAAYh7F,QAC9Cg7F,EAAYh7F,KAAOoxF,EAAWz+G,MAAMuoH,GAASE,mBAAmB,GAChEH,EAAa7J,EAAWxsB,OAAOo2B,EAAYh7F,KAAKngC,OAAQuxH,EAAWvxH,UAGvE,GAAIo7H,EAAY,CACd,IAAI3d,EAAQ4d,GAASG,SAASz6H,KAAKq6H,GAC/B3d,GACF0d,EAAYnwC,KAAOowC,EAAW/uH,QAAQoxG,EAAM,GAAI,IAChD0d,EAAYK,SAAW/d,EAAM,IAE7B0d,EAAYnwC,KAAOowC,CAEvB,CACA,OAAOD,CACT,CA1EoBM,CAAgB1T,GAElC,GAAIoT,EAAYh7F,KAAM,CACpB,IAAIu7F,EAwER,SAAmBnK,EAAY2J,GAC7B,IAAIS,EAAQ,IAAI/I,OAAO,wBAA0B,EAAIsI,GAAoB,uBAAyB,EAAIA,GAAoB,QACtHU,EAAWrK,EAAWzkG,MAAM6uG,GAEhC,IAAKC,EAAU,MAAO,CACpB3xC,KAAMr+C,IACNiwF,eAAgB,IAElB,IAAI5xC,EAAO2xC,EAAS,GAAKtvH,SAASsvH,EAAS,IAAM,KAC7CE,EAAUF,EAAS,GAAKtvH,SAASsvH,EAAS,IAAM,KAEpD,MAAO,CACL3xC,KAAkB,OAAZ6xC,EAAmB7xC,EAAiB,IAAV6xC,EAChCD,eAAgBtK,EAAWzhH,OAAO8rH,EAAS,IAAMA,EAAS,IAAI57H,QAElE,CAvF0B+7H,CAAUZ,EAAYh7F,KAAM+6F,GAClD/6F,EAuFJ,SAAmBoxF,EAAYtnC,GAE7B,GAAa,OAATA,EAAe,OAAO,IAAIvpD,KAAKkL,KACnC,IAAIgwF,EAAWrK,EAAWzkG,MAAMkvG,IAEhC,IAAKJ,EAAU,OAAO,IAAIl7F,KAAKkL,KAC/B,IAAIqwF,IAAeL,EAAS,GACxBM,EAAYC,GAAcP,EAAS,IACnC7xC,EAAQoyC,GAAcP,EAAS,IAAM,EACrC/xC,EAAMsyC,GAAcP,EAAS,IAC7B9xC,EAAOqyC,GAAcP,EAAS,IAC9B1uB,EAAYivB,GAAcP,EAAS,IAAM,EAC7C,GAAIK,EACF,OA+DJ,SAA0BG,EAAOtyC,EAAMD,GACrC,OAAOC,GAAQ,GAAKA,GAAQ,IAAMD,GAAO,GAAKA,GAAO,CACvD,CAjESwyC,CAAiBpyC,EAAMH,EAAMojB,GA2CtC,SAA0BovB,EAAaxyC,EAAMD,GAC3C,IAAI1pD,EAAO,IAAIO,KAAK,GACpBP,EAAKguF,eAAemO,EAAa,EAAG,GACpC,IAAIC,EAAqBp8F,EAAK6zF,aAAe,EACzCj3E,EAAoB,GAAZ+sC,EAAO,GAASD,EAAM,EAAI0yC,EAEtC,OADAp8F,EAAK8zF,WAAW9zF,EAAK6wF,aAAej0E,GAC7B5c,CACT,CA/CWq8F,CAAiBvyC,EAAMH,EAAMojB,GAF3B,IAAIxsE,KAAKkL,KAIlB,IAAIzL,EAAO,IAAIO,KAAK,GACpB,OAmDJ,SAAsBupD,EAAMF,EAAO5pD,GACjC,OAAO4pD,GAAS,GAAKA,GAAS,IAAM5pD,GAAQ,GAAKA,IAASs8F,GAAa1yC,KAAW,GAAgBE,GAAQ,GAAK,IACjH,CArDSyyC,CAAazyC,EAAMF,EAAOF,IAsDnC,SAA+BI,EAAMiyC,GACnC,OAAOA,GAAa,GAAKA,IAAc,GAAgBjyC,GAAQ,IAAM,IACvE,CAxD4C0yC,CAAsB1yC,EAAMiyC,IAGpE/7F,EAAKguF,eAAelkC,EAAMF,EAAO7rF,KAAKC,IAAI+9H,EAAWryC,IAC9C1pD,GAHE,IAAIO,KAAKkL,IAKtB,CAhHWgxF,CAAUlB,EAAgBG,eAAgBH,EAAgBzxC,KACnE,CACA,IAAK9pD,GAAQlrB,MAAMkrB,EAAKigE,WACtB,OAAO,IAAI1/D,KAAKkL,KAElB,IAEIxnB,EAFAmpG,EAAYptF,EAAKigE,UACjBpV,EAAO,EAEX,GAAImwC,EAAYnwC,OACdA,EA2GJ,SAAmBowC,GACjB,IAAIQ,EAAWR,EAAWtuG,MAAM+vG,IAChC,IAAKjB,EAAU,OAAOhwF,IAEtB,IAAI2mF,EAAQuK,GAAclB,EAAS,IAC/BpJ,EAAUsK,GAAclB,EAAS,IACjCnJ,EAAUqK,GAAclB,EAAS,IACrC,IA2CF,SAAsBrJ,EAAOC,EAASC,GACpC,GAAc,KAAVF,EACF,OAAmB,IAAZC,GAA6B,IAAZC,EAE1B,OAAOA,GAAW,GAAKA,EAAU,IAAMD,GAAW,GAAKA,EAAU,IAAMD,GAAS,GAAKA,EAAQ,EAC/F,CAhDOwK,CAAaxK,EAAOC,EAASC,GAChC,OAAO7mF,IAET,OAAO2mF,EAAQR,GAAqBS,EAAUV,GAAiC,IAAVW,CACvE,CAtHWuK,CAAU7B,EAAYnwC,MACzB/1E,MAAM+1E,IACR,OAAO,IAAItqD,KAAKkL,KAGpB,IAAIuvF,EAAYK,SAKT,CACL,IAAInO,EAAY,IAAI3sF,KAAK6sF,EAAYviC,GAMjCz0D,EAAS,IAAImK,KAAK,GAGtB,OAFAnK,EAAOs6F,YAAYxD,EAAUyD,iBAAkBzD,EAAU0D,cAAe1D,EAAU2D,cAClFz6F,EAAO06F,SAAS5D,EAAU6D,cAAe7D,EAAU8D,gBAAiB9D,EAAU+D,gBAAiB/D,EAAUgE,sBAClG96F,CACT,CAdE,OADAnS,EAoHJ,SAAuB64G,GACrB,GAAuB,MAAnBA,EAAwB,OAAO,EACnC,IAAIrB,EAAWqB,EAAenwG,MAAMowG,IACpC,IAAKtB,EAAU,OAAO,EACtB,IAAIvnH,EAAuB,MAAhBunH,EAAS,IAAc,EAAI,EAClCrJ,EAAQjmH,SAASsvH,EAAS,IAC1BpJ,EAAUoJ,EAAS,IAAMtvH,SAASsvH,EAAS,KAAO,EACtD,IAkCF,SAA0BuB,EAAQ3K,GAChC,OAAOA,GAAW,GAAKA,GAAW,EACpC,CApCO4K,CAAiB7K,EAAOC,GAC3B,OAAO5mF,IAET,OAAOv3B,GAAQk+G,EAAQR,GAAqBS,EAAUV,GACxD,CA/HauL,CAAclC,EAAYK,UAC/BvmH,MAAMmP,GACD,IAAIsc,KAAKkL,KAcb,IAAIlL,KAAK6sF,EAAYviC,EAAO5mE,EACrC,CACA,IAAIi3G,GAAW,CACbC,kBAAmB,OACnBC,kBAAmB,QACnBC,SAAU,cAERQ,GAAY,gEACZa,GAAY,4EACZK,GAAgB,gCAyEpB,SAASf,GAAcn/H,GACrB,OAAOA,EAAQsP,SAAStP,GAAS,CACnC,CAaA,SAAS8/H,GAAc9/H,GACrB,OAAOA,GAASyT,WAAWzT,EAAMqP,QAAQ,IAAK,OAAS,CACzD,CAuBA,IAAIowH,GAAe,CAAC,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAClE,SAAS,GAAgBxyC,GACvB,OAAOA,EAAO,MAAQ,GAAKA,EAAO,IAAM,GAAKA,EAAO,MAAQ,CAC9D,CC9MA,SAAS,GAAQj8E,GAYf,OARE,GADoB,oBAAXlR,QAAoD,kBAApBA,OAAO6hC,SACtC,SAAiB3wB,GACzB,cAAcA,CAChB,EAEU,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXlR,QAAyBkR,EAAIR,cAAgB1Q,QAAUkR,IAAQlR,OAAOa,UAAY,gBAAkBqQ,CAC3H,EAEK,GAAQA,EACjB,CCsBe,SAASsvH,GAAQjQ,GAE9B,GADAxF,EAAa,EAAG9nH,YDYH,SAAgB/C,GAE7B,OADA6qH,EAAa,EAAG9nH,WACT/C,aAAiB0jC,MAA2B,WAAnB,GAAQ1jC,IAAiE,kBAA1CP,OAAOkB,UAAUkS,SAAS3T,KAAKc,EAChG,CCdOqwG,CAAOggB,IAAmC,kBAAdA,EAC/B,OAAO,EAET,IAAIltF,EAAOqrE,EAAO6hB,GAClB,OAAQp4G,MAAMhF,OAAOkwB,GACvB,CC1Ce,SAASo9F,GAAgBl7F,EAAQm7F,GAG9C,IAFA,IAAInpH,EAAOguB,EAAS,EAAI,IAAM,GAC1Bo7F,EAASv/H,KAAKsW,IAAI6tB,GAAQxyB,WACvB4tH,EAAOz9H,OAASw9H,GACrBC,EAAS,IAAMA,EAEjB,OAAOppH,EAAOopH,CAChB,CCOA,IAiEe,GAjEE,CAEf/qH,EAAG,SAAWytB,EAAMs9E,GASlB,IAAIigB,EAAav9F,EAAK2wF,iBAElB7mC,EAAOyzC,EAAa,EAAIA,EAAa,EAAIA,EAC7C,OAAOH,GAA0B,OAAV9f,EAAiBxzB,EAAO,IAAMA,EAAMwzB,EAAMz9G,OACnE,EAEAkC,EAAG,SAAWi+B,EAAMs9E,GAClB,IAAI1zB,EAAQ5pD,EAAK4wF,cACjB,MAAiB,MAAVtT,EAAgBp/E,OAAO0rD,EAAQ,GAAKwzC,GAAgBxzC,EAAQ,EAAG,EACxE,EAEA1tF,EAAG,SAAW8jC,EAAMs9E,GAClB,OAAO8f,GAAgBp9F,EAAK6wF,aAAcvT,EAAMz9G,OAClD,EAEAhB,EAAG,SAAWmhC,EAAMs9E,GAClB,IAAIkgB,EAAqBx9F,EAAK+wF,cAAgB,IAAM,EAAI,KAAO,KAC/D,OAAQzT,GACN,IAAK,IACL,IAAK,KACH,OAAOkgB,EAAmBvqH,cAC5B,IAAK,MACH,OAAOuqH,EACT,IAAK,QACH,OAAOA,EAAmB,GAE5B,QACE,MAA8B,OAAvBA,EAA8B,OAAS,OAEpD,EAEA1/H,EAAG,SAAWkiC,EAAMs9E,GAClB,OAAO8f,GAAgBp9F,EAAK+wF,cAAgB,IAAM,GAAIzT,EAAMz9G,OAC9D,EAEAsC,EAAG,SAAW69B,EAAMs9E,GAClB,OAAO8f,GAAgBp9F,EAAK+wF,cAAezT,EAAMz9G,OACnD,EAEA7D,EAAG,SAAWgkC,EAAMs9E,GAClB,OAAO8f,GAAgBp9F,EAAKgxF,gBAAiB1T,EAAMz9G,OACrD,EAEAlC,EAAG,SAAWqiC,EAAMs9E,GAClB,OAAO8f,GAAgBp9F,EAAKixF,gBAAiB3T,EAAMz9G,OACrD,EAEA4B,EAAG,SAAWu+B,EAAMs9E,GAClB,IAAImgB,EAAiBngB,EAAMz9G,OACvB69H,EAAe19F,EAAKkxF,qBAExB,OAAOkM,GADiBr/H,KAAK4W,MAAM+oH,EAAe3/H,KAAKyO,IAAI,GAAIixH,EAAiB,IACtCngB,EAAMz9G,OAClD,GCtEE89H,GAGQ,WAHRA,GAII,OAJJA,GAKO,UALPA,GAMS,YANTA,GAOO,UAPPA,GAQK,QAgDL,GAAa,CAEfz7H,EAAG,SAAW89B,EAAMs9E,EAAOuP,GACzB,IAAIjC,EAAM5qF,EAAK2wF,iBAAmB,EAAI,EAAI,EAC1C,OAAQrT,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAOuP,EAASjC,IAAIA,EAAK,CACvB5lG,MAAO,gBAIX,IAAK,QACH,OAAO6nG,EAASjC,IAAIA,EAAK,CACvB5lG,MAAO,WAKX,QACE,OAAO6nG,EAASjC,IAAIA,EAAK,CACvB5lG,MAAO,SAGf,EAEAzS,EAAG,SAAWytB,EAAMs9E,EAAOuP,GAEzB,GAAc,OAAVvP,EAAgB,CAClB,IAAIigB,EAAav9F,EAAK2wF,iBAElB7mC,EAAOyzC,EAAa,EAAIA,EAAa,EAAIA,EAC7C,OAAO1Q,EAASpC,cAAc3gC,EAAM,CAClCrG,KAAM,QAEV,CACA,OAAOm6C,GAAgBrrH,EAAEytB,EAAMs9E,EACjC,EAEAn8G,EAAG,SAAW6+B,EAAMs9E,EAAOuP,EAAUh7G,GACnC,IAAIgsH,EAAiB9J,GAAe/zF,EAAMnuB,GAEtCisH,EAAWD,EAAiB,EAAIA,EAAiB,EAAIA,EAEzD,MAAc,OAAVvgB,EAEK8f,GADYU,EAAW,IACO,GAGzB,OAAVxgB,EACKuP,EAASpC,cAAcqT,EAAU,CACtCr6C,KAAM,SAIH25C,GAAgBU,EAAUxgB,EAAMz9G,OACzC,EAEA6B,EAAG,SAAWs+B,EAAMs9E,GAGlB,OAAO8f,GAFW7H,GAAkBv1F,GAEAs9E,EAAMz9G,OAC5C,EAUAiwF,EAAG,SAAW9vD,EAAMs9E,GAElB,OAAO8f,GADIp9F,EAAK2wF,iBACarT,EAAMz9G,OACrC,EAEA8B,EAAG,SAAWq+B,EAAMs9E,EAAOuP,GACzB,IAAIhjC,EAAU9rF,KAAK2qD,MAAM1oB,EAAK4wF,cAAgB,GAAK,GACnD,OAAQtT,GAEN,IAAK,IACH,OAAOp/E,OAAO2rD,GAGhB,IAAK,KACH,OAAOuzC,GAAgBvzC,EAAS,GAGlC,IAAK,KACH,OAAOgjC,EAASpC,cAAc5gC,EAAS,CACrCpG,KAAM,YAIV,IAAK,MACH,OAAOopC,EAAShjC,QAAQA,EAAS,CAC/B7kE,MAAO,cACP/E,QAAS,eAIb,IAAK,QACH,OAAO4sG,EAAShjC,QAAQA,EAAS,CAC/B7kE,MAAO,SACP/E,QAAS,eAKb,QACE,OAAO4sG,EAAShjC,QAAQA,EAAS,CAC/B7kE,MAAO,OACP/E,QAAS,eAGjB,EAEAg4G,EAAG,SAAWj4F,EAAMs9E,EAAOuP,GACzB,IAAIhjC,EAAU9rF,KAAK2qD,MAAM1oB,EAAK4wF,cAAgB,GAAK,GACnD,OAAQtT,GAEN,IAAK,IACH,OAAOp/E,OAAO2rD,GAGhB,IAAK,KACH,OAAOuzC,GAAgBvzC,EAAS,GAGlC,IAAK,KACH,OAAOgjC,EAASpC,cAAc5gC,EAAS,CACrCpG,KAAM,YAIV,IAAK,MACH,OAAOopC,EAAShjC,QAAQA,EAAS,CAC/B7kE,MAAO,cACP/E,QAAS,eAIb,IAAK,QACH,OAAO4sG,EAAShjC,QAAQA,EAAS,CAC/B7kE,MAAO,SACP/E,QAAS,eAKb,QACE,OAAO4sG,EAAShjC,QAAQA,EAAS,CAC/B7kE,MAAO,OACP/E,QAAS,eAGjB,EAEAle,EAAG,SAAWi+B,EAAMs9E,EAAOuP,GACzB,IAAIjjC,EAAQ5pD,EAAK4wF,cACjB,OAAQtT,GACN,IAAK,IACL,IAAK,KACH,OAAOsgB,GAAgB77H,EAAEi+B,EAAMs9E,GAGjC,IAAK,KACH,OAAOuP,EAASpC,cAAc7gC,EAAQ,EAAG,CACvCnG,KAAM,UAIV,IAAK,MACH,OAAOopC,EAASjjC,MAAMA,EAAO,CAC3B5kE,MAAO,cACP/E,QAAS,eAIb,IAAK,QACH,OAAO4sG,EAASjjC,MAAMA,EAAO,CAC3B5kE,MAAO,SACP/E,QAAS,eAKb,QACE,OAAO4sG,EAASjjC,MAAMA,EAAO,CAC3B5kE,MAAO,OACP/E,QAAS,eAGjB,EAEAje,EAAG,SAAWg+B,EAAMs9E,EAAOuP,GACzB,IAAIjjC,EAAQ5pD,EAAK4wF,cACjB,OAAQtT,GAEN,IAAK,IACH,OAAOp/E,OAAO0rD,EAAQ,GAGxB,IAAK,KACH,OAAOwzC,GAAgBxzC,EAAQ,EAAG,GAGpC,IAAK,KACH,OAAOijC,EAASpC,cAAc7gC,EAAQ,EAAG,CACvCnG,KAAM,UAIV,IAAK,MACH,OAAOopC,EAASjjC,MAAMA,EAAO,CAC3B5kE,MAAO,cACP/E,QAAS,eAIb,IAAK,QACH,OAAO4sG,EAASjjC,MAAMA,EAAO,CAC3B5kE,MAAO,SACP/E,QAAS,eAKb,QACE,OAAO4sG,EAASjjC,MAAMA,EAAO,CAC3B5kE,MAAO,OACP/E,QAAS,eAGjB,EAEAjgB,EAAG,SAAWggC,EAAMs9E,EAAOuP,EAAUh7G,GACnC,IAAI83E,EAAOsrC,GAAWj1F,EAAMnuB,GAC5B,MAAc,OAAVyrG,EACKuP,EAASpC,cAAc9gC,EAAM,CAClClG,KAAM,SAGH25C,GAAgBzzC,EAAM2zB,EAAMz9G,OACrC,EAEAuC,EAAG,SAAW49B,EAAMs9E,EAAOuP,GACzB,IAAIkJ,EAAUL,GAAc11F,GAC5B,MAAc,OAAVs9E,EACKuP,EAASpC,cAAcsL,EAAS,CACrCtyC,KAAM,SAGH25C,GAAgBrH,EAASzY,EAAMz9G,OACxC,EAEA3D,EAAG,SAAW8jC,EAAMs9E,EAAOuP,GACzB,MAAc,OAAVvP,EACKuP,EAASpC,cAAczqF,EAAK6wF,aAAc,CAC/CptC,KAAM,SAGHm6C,GAAgB1hI,EAAE8jC,EAAMs9E,EACjC,EAEA5+G,EAAG,SAAWshC,EAAMs9E,EAAOuP,GACzB,IAAIkP,ECzUO,SAAyB7O,GACtCxF,EAAa,EAAG9nH,WAChB,IAAIogC,EAAOqrE,EAAO6hB,GACdE,EAAYptF,EAAKigE,UACrBjgE,EAAK40F,YAAY,EAAG,GACpB50F,EAAK0xF,YAAY,EAAG,EAAG,EAAG,GAC1B,IACIqM,EAAa3Q,EADUptF,EAAKigE,UAEhC,OAAOliG,KAAK4W,MAAMopH,EATM,OAS8B,CACxD,CDgUoBC,CAAgBh+F,GAChC,MAAc,OAAVs9E,EACKuP,EAASpC,cAAcsR,EAAW,CACvCt4C,KAAM,cAGH25C,GAAgBrB,EAAWze,EAAMz9G,OAC1C,EAEAlB,EAAG,SAAWqhC,EAAMs9E,EAAOuP,GACzB,IAAI9f,EAAY/sE,EAAK6zF,YACrB,OAAQvW,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAOuP,EAASnjC,IAAIqjB,EAAW,CAC7B/nF,MAAO,cACP/E,QAAS,eAIb,IAAK,QACH,OAAO4sG,EAASnjC,IAAIqjB,EAAW,CAC7B/nF,MAAO,SACP/E,QAAS,eAIb,IAAK,SACH,OAAO4sG,EAASnjC,IAAIqjB,EAAW,CAC7B/nF,MAAO,QACP/E,QAAS,eAKb,QACE,OAAO4sG,EAASnjC,IAAIqjB,EAAW,CAC7B/nF,MAAO,OACP/E,QAAS,eAGjB,EAEAlhB,EAAG,SAAWihC,EAAMs9E,EAAOuP,EAAUh7G,GACnC,IAAIk7F,EAAY/sE,EAAK6zF,YACjBoK,GAAkBlxB,EAAYl7F,EAAQi7G,aAAe,GAAK,GAAK,EACnE,OAAQxP,GAEN,IAAK,IACH,OAAOp/E,OAAO+/F,GAGhB,IAAK,KACH,OAAOb,GAAgBa,EAAgB,GAGzC,IAAK,KACH,OAAOpR,EAASpC,cAAcwT,EAAgB,CAC5Cx6C,KAAM,QAEV,IAAK,MACH,OAAOopC,EAASnjC,IAAIqjB,EAAW,CAC7B/nF,MAAO,cACP/E,QAAS,eAIb,IAAK,QACH,OAAO4sG,EAASnjC,IAAIqjB,EAAW,CAC7B/nF,MAAO,SACP/E,QAAS,eAIb,IAAK,SACH,OAAO4sG,EAASnjC,IAAIqjB,EAAW,CAC7B/nF,MAAO,QACP/E,QAAS,eAKb,QACE,OAAO4sG,EAASnjC,IAAIqjB,EAAW,CAC7B/nF,MAAO,OACP/E,QAAS,eAGjB,EAEAhkB,EAAG,SAAW+jC,EAAMs9E,EAAOuP,EAAUh7G,GACnC,IAAIk7F,EAAY/sE,EAAK6zF,YACjBoK,GAAkBlxB,EAAYl7F,EAAQi7G,aAAe,GAAK,GAAK,EACnE,OAAQxP,GAEN,IAAK,IACH,OAAOp/E,OAAO+/F,GAGhB,IAAK,KACH,OAAOb,GAAgBa,EAAgB3gB,EAAMz9G,QAG/C,IAAK,KACH,OAAOgtH,EAASpC,cAAcwT,EAAgB,CAC5Cx6C,KAAM,QAEV,IAAK,MACH,OAAOopC,EAASnjC,IAAIqjB,EAAW,CAC7B/nF,MAAO,cACP/E,QAAS,eAIb,IAAK,QACH,OAAO4sG,EAASnjC,IAAIqjB,EAAW,CAC7B/nF,MAAO,SACP/E,QAAS,eAIb,IAAK,SACH,OAAO4sG,EAASnjC,IAAIqjB,EAAW,CAC7B/nF,MAAO,QACP/E,QAAS,eAKb,QACE,OAAO4sG,EAASnjC,IAAIqjB,EAAW,CAC7B/nF,MAAO,OACP/E,QAAS,eAGjB,EAEArkB,EAAG,SAAWokC,EAAMs9E,EAAOuP,GACzB,IAAI9f,EAAY/sE,EAAK6zF,YACjBqK,EAA6B,IAAdnxB,EAAkB,EAAIA,EACzC,OAAQuQ,GAEN,IAAK,IACH,OAAOp/E,OAAOggG,GAGhB,IAAK,KACH,OAAOd,GAAgBc,EAAc5gB,EAAMz9G,QAG7C,IAAK,KACH,OAAOgtH,EAASpC,cAAcyT,EAAc,CAC1Cz6C,KAAM,QAIV,IAAK,MACH,OAAOopC,EAASnjC,IAAIqjB,EAAW,CAC7B/nF,MAAO,cACP/E,QAAS,eAIb,IAAK,QACH,OAAO4sG,EAASnjC,IAAIqjB,EAAW,CAC7B/nF,MAAO,SACP/E,QAAS,eAIb,IAAK,SACH,OAAO4sG,EAASnjC,IAAIqjB,EAAW,CAC7B/nF,MAAO,QACP/E,QAAS,eAKb,QACE,OAAO4sG,EAASnjC,IAAIqjB,EAAW,CAC7B/nF,MAAO,OACP/E,QAAS,eAGjB,EAEAphB,EAAG,SAAWmhC,EAAMs9E,EAAOuP,GACzB,IACI2Q,EADQx9F,EAAK+wF,cACgB,IAAM,EAAI,KAAO,KAClD,OAAQzT,GACN,IAAK,IACL,IAAK,KACH,OAAOuP,EAAS7B,UAAUwS,EAAoB,CAC5Cx4G,MAAO,cACP/E,QAAS,eAEb,IAAK,MACH,OAAO4sG,EAAS7B,UAAUwS,EAAoB,CAC5Cx4G,MAAO,cACP/E,QAAS,eACR3T,cACL,IAAK,QACH,OAAOugH,EAAS7B,UAAUwS,EAAoB,CAC5Cx4G,MAAO,SACP/E,QAAS,eAGb,QACE,OAAO4sG,EAAS7B,UAAUwS,EAAoB,CAC5Cx4G,MAAO,OACP/E,QAAS,eAGjB,EAEAnhB,EAAG,SAAWkhC,EAAMs9E,EAAOuP,GACzB,IACI2Q,EADApL,EAAQpyF,EAAK+wF,cASjB,OANEyM,EADY,KAAVpL,EACmBuL,GACF,IAAVvL,EACYuL,GAEAvL,EAAQ,IAAM,EAAI,KAAO,KAExC9U,GACN,IAAK,IACL,IAAK,KACH,OAAOuP,EAAS7B,UAAUwS,EAAoB,CAC5Cx4G,MAAO,cACP/E,QAAS,eAEb,IAAK,MACH,OAAO4sG,EAAS7B,UAAUwS,EAAoB,CAC5Cx4G,MAAO,cACP/E,QAAS,eACR3T,cACL,IAAK,QACH,OAAOugH,EAAS7B,UAAUwS,EAAoB,CAC5Cx4G,MAAO,SACP/E,QAAS,eAGb,QACE,OAAO4sG,EAAS7B,UAAUwS,EAAoB,CAC5Cx4G,MAAO,OACP/E,QAAS,eAGjB,EAEAzhB,EAAG,SAAWwhC,EAAMs9E,EAAOuP,GACzB,IACI2Q,EADApL,EAAQpyF,EAAK+wF,cAWjB,OAREyM,EADEpL,GAAS,GACUuL,GACZvL,GAAS,GACGuL,GACZvL,GAAS,EACGuL,GAEAA,GAEfrgB,GACN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAOuP,EAAS7B,UAAUwS,EAAoB,CAC5Cx4G,MAAO,cACP/E,QAAS,eAEb,IAAK,QACH,OAAO4sG,EAAS7B,UAAUwS,EAAoB,CAC5Cx4G,MAAO,SACP/E,QAAS,eAGb,QACE,OAAO4sG,EAAS7B,UAAUwS,EAAoB,CAC5Cx4G,MAAO,OACP/E,QAAS,eAGjB,EAEAniB,EAAG,SAAWkiC,EAAMs9E,EAAOuP,GACzB,GAAc,OAAVvP,EAAgB,CAClB,IAAI8U,EAAQpyF,EAAK+wF,cAAgB,GAEjC,OADc,IAAVqB,IAAaA,EAAQ,IAClBvF,EAASpC,cAAc2H,EAAO,CACnC3uC,KAAM,QAEV,CACA,OAAOm6C,GAAgB9/H,EAAEkiC,EAAMs9E,EACjC,EAEAn7G,EAAG,SAAW69B,EAAMs9E,EAAOuP,GACzB,MAAc,OAAVvP,EACKuP,EAASpC,cAAczqF,EAAK+wF,cAAe,CAChDttC,KAAM,SAGHm6C,GAAgBz7H,EAAE69B,EAAMs9E,EACjC,EAEAr7G,EAAG,SAAW+9B,EAAMs9E,EAAOuP,GACzB,IAAIuF,EAAQpyF,EAAK+wF,cAAgB,GACjC,MAAc,OAAVzT,EACKuP,EAASpC,cAAc2H,EAAO,CACnC3uC,KAAM,SAGH25C,GAAgBhL,EAAO9U,EAAMz9G,OACtC,EAEAF,EAAG,SAAWqgC,EAAMs9E,EAAOuP,GACzB,IAAIuF,EAAQpyF,EAAK+wF,cAEjB,OADc,IAAVqB,IAAaA,EAAQ,IACX,OAAV9U,EACKuP,EAASpC,cAAc2H,EAAO,CACnC3uC,KAAM,SAGH25C,GAAgBhL,EAAO9U,EAAMz9G,OACtC,EAEA7D,EAAG,SAAWgkC,EAAMs9E,EAAOuP,GACzB,MAAc,OAAVvP,EACKuP,EAASpC,cAAczqF,EAAKgxF,gBAAiB,CAClDvtC,KAAM,WAGHm6C,GAAgB5hI,EAAEgkC,EAAMs9E,EACjC,EAEA3/G,EAAG,SAAWqiC,EAAMs9E,EAAOuP,GACzB,MAAc,OAAVvP,EACKuP,EAASpC,cAAczqF,EAAKixF,gBAAiB,CAClDxtC,KAAM,WAGHm6C,GAAgBjgI,EAAEqiC,EAAMs9E,EACjC,EAEA77G,EAAG,SAAWu+B,EAAMs9E,GAClB,OAAOsgB,GAAgBn8H,EAAEu+B,EAAMs9E,EACjC,EAEAl8G,EAAG,SAAW4+B,EAAMs9E,EAAO6gB,EAAWtsH,GACpC,IACIusH,GADevsH,EAAQwsH,eAAiBr+F,GACVs+F,oBAClC,GAAuB,IAAnBF,EACF,MAAO,IAET,OAAQ9gB,GAEN,IAAK,IACH,OAAOihB,GAAkCH,GAK3C,IAAK,OACL,IAAK,KAEH,OAAOI,GAAeJ,GAQxB,QACE,OAAOI,GAAeJ,EAAgB,KAE5C,EAEAn9H,EAAG,SAAW++B,EAAMs9E,EAAO6gB,EAAWtsH,GACpC,IACIusH,GADevsH,EAAQwsH,eAAiBr+F,GACVs+F,oBAClC,OAAQhhB,GAEN,IAAK,IACH,OAAOihB,GAAkCH,GAK3C,IAAK,OACL,IAAK,KAEH,OAAOI,GAAeJ,GAQxB,QACE,OAAOI,GAAeJ,EAAgB,KAE5C,EAEAv8H,EAAG,SAAWm+B,EAAMs9E,EAAO6gB,EAAWtsH,GACpC,IACIusH,GADevsH,EAAQwsH,eAAiBr+F,GACVs+F,oBAClC,OAAQhhB,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,MAAO,MAAQmhB,GAAoBL,EAAgB,KAIrD,QACE,MAAO,MAAQI,GAAeJ,EAAgB,KAEpD,EAEAp8E,EAAG,SAAWhiB,EAAMs9E,EAAO6gB,EAAWtsH,GACpC,IACIusH,GADevsH,EAAQwsH,eAAiBr+F,GACVs+F,oBAClC,OAAQhhB,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,MAAO,MAAQmhB,GAAoBL,EAAgB,KAIrD,QACE,MAAO,MAAQI,GAAeJ,EAAgB,KAEpD,EAEAthI,EAAG,SAAWkjC,EAAMs9E,EAAO6gB,EAAWtsH,GACpC,IAAI6sH,EAAe7sH,EAAQwsH,eAAiBr+F,EAE5C,OAAOo9F,GADSr/H,KAAK4W,MAAM+pH,EAAaz+B,UAAY,KAClBqd,EAAMz9G,OAC1C,EAEA2B,EAAG,SAAWw+B,EAAMs9E,EAAO6gB,EAAWtsH,GAGpC,OAAOurH,IAFYvrH,EAAQwsH,eAAiBr+F,GACfigE,UACKqd,EAAMz9G,OAC1C,GAEF,SAAS4+H,GAAoBx6G,EAAQ06G,GACnC,IAAIzqH,EAAO+P,EAAS,EAAI,IAAM,IAC1B26G,EAAY7gI,KAAKsW,IAAI4P,GACrBmuG,EAAQr0H,KAAK4W,MAAMiqH,EAAY,IAC/BvM,EAAUuM,EAAY,GAC1B,GAAgB,IAAZvM,EACF,OAAOn+G,EAAOgqB,OAAOk0F,GAEvB,IAAIyM,EAAYF,GAAkB,GAClC,OAAOzqH,EAAOgqB,OAAOk0F,GAASyM,EAAYzB,GAAgB/K,EAAS,EACrE,CACA,SAASkM,GAAkCt6G,EAAQ06G,GACjD,OAAI16G,EAAS,KAAO,GACPA,EAAS,EAAI,IAAM,KAChBm5G,GAAgBr/H,KAAKsW,IAAI4P,GAAU,GAAI,GAEhDu6G,GAAev6G,EAAQ06G,EAChC,CACA,SAASH,GAAev6G,EAAQ06G,GAC9B,IAAIE,EAAYF,GAAkB,GAC9BzqH,EAAO+P,EAAS,EAAI,IAAM,IAC1B26G,EAAY7gI,KAAKsW,IAAI4P,GAGzB,OAAO/P,EAFKkpH,GAAgBr/H,KAAK4W,MAAMiqH,EAAY,IAAK,GAElCC,EADRzB,GAAgBwB,EAAY,GAAI,EAEhD,CACe,UErxBX,GAAyB,wDAGzB,GAA6B,oCAC7B,GAAsB,eACtB,GAAoB,MACpB,GAAgC,WAqSrB,SAAS5gH,GAAOkvG,EAAW4R,EAAgBjtH,GACxD,IAAImpB,EAAMy4F,EAAiB5kF,EAAOqD,EAAOymB,EAAOq7D,EAAuBiF,EAAkBC,EAAuBvF,EAAuBC,EAAwB36D,EAAOyH,EAAO+B,EAAO+wD,EAAuB2F,EAAkBC,EAAuBC,EAAwBC,EAC5Q5R,EAAa,EAAG9nH,WAChB,IAAIm/H,EAAY7gG,OAAO4gG,GACnBtzB,EAAiB8nB,KACjB91G,EAA4L,QAAlLwd,EAAgG,QAAxFy4F,EAA8B,OAAZ5hH,QAAgC,IAAZA,OAAqB,EAASA,EAAQ2L,cAAwC,IAApBi2G,EAA6BA,EAAkBjoB,EAAehuF,cAA6B,IAATwd,EAAkBA,EAAOyxF,EAC7NM,EAAwBC,EAAu3B,QAA52Bn+E,EAA6jB,QAApjBqD,EAAue,QAA9dymB,EAAsH,QAA7Gq7D,EAAoC,OAAZniH,QAAgC,IAAZA,OAAqB,EAASA,EAAQk7G,6BAA6D,IAA1BiH,EAAmCA,EAAoC,OAAZniH,QAAgC,IAAZA,GAAsE,QAAvConH,EAAmBpnH,EAAQ2L,cAAyC,IAArBy7G,GAA8F,QAAtDC,EAAwBD,EAAiBpnH,eAA+C,IAA1BqnH,OAA/J,EAA2MA,EAAsBnM,6BAA6C,IAAVp0D,EAAmBA,EAAQ6yC,EAAeuhB,6BAA6C,IAAV76E,EAAmBA,EAA4D,QAAnDyhF,EAAwBnoB,EAAehuF,cAA8C,IAA1Bm2G,GAAyG,QAA5DC,EAAyBD,EAAsB9hH,eAAgD,IAA3B+hH,OAA9E,EAA2HA,EAAuB7G,6BAA6C,IAAVl+E,EAAmBA,EAAQ,GAEt7B,KAAMk+E,GAAyB,GAAKA,GAAyB,GAC3D,MAAM,IAAIuB,WAAW,6DAEvB,IAAIxB,EAAeE,EAAs1B,QAA30B/zD,EAAkiB,QAAzhByH,EAAqd,QAA5c+B,EAA6G,QAApG+wD,EAAoC,OAAZ3hH,QAAgC,IAAZA,OAAqB,EAASA,EAAQi7G,oBAAoD,IAA1B0G,EAAmCA,EAAoC,OAAZ3hH,QAAgC,IAAZA,GAAsE,QAAvCsnH,EAAmBtnH,EAAQ2L,cAAyC,IAArB27G,GAA8F,QAAtDC,EAAwBD,EAAiBtnH,eAA+C,IAA1BunH,OAA/J,EAA2MA,EAAsBtM,oBAAoC,IAAVrqD,EAAmBA,EAAQ+oC,EAAeshB,oBAAoC,IAAVpsD,EAAmBA,EAA6D,QAApD24D,EAAyB7tB,EAAehuF,cAA+C,IAA3B67G,GAA2G,QAA7DC,EAAyBD,EAAuBxnH,eAAgD,IAA3BynH,OAA/E,EAA4HA,EAAuBxM,oBAAoC,IAAV7zD,EAAmBA,EAAQ,GAE54B,KAAM6zD,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAIwB,WAAW,oDAEvB,IAAK9wG,EAAOqvG,SACV,MAAM,IAAIyB,WAAW,yCAEvB,IAAK9wG,EAAOmvG,WACV,MAAM,IAAI2B,WAAW,2CAEvB,IAAIoQ,EAAerzB,EAAO6hB,GAC1B,IAAKiQ,GAAQuB,GACX,MAAM,IAAIpQ,WAAW,sBAKvB,IACIT,EAAUR,EAAgBqR,EADT9Q,EAAgC8Q,IAEjDM,EAAmB,CACrBjS,sBAAuBA,EACvBD,aAAcA,EACdtvG,OAAQA,EACR6gH,cAAeK,GAiCjB,OA/BaK,EAAUpyG,MAAM,IAA4BpsB,KAAI,SAAUkjG,GACrE,IAAIm2B,EAAiBn2B,EAAU,GAC/B,MAAuB,MAAnBm2B,GAA6C,MAAnBA,GAErBC,EADa,EAAeD,IACdn2B,EAAWjmF,EAAOmvG,YAElClpB,CACT,IAAGlzE,KAAK,IAAI5D,MAAM,IAAwBpsB,KAAI,SAAUkjG,GAEtD,GAAkB,OAAdA,EACF,MAAO,IAET,IAAIm2B,EAAiBn2B,EAAU,GAC/B,GAAuB,MAAnBm2B,EACF,OAmBN,SAA4B5sH,GAC1B,IAAIiyH,EAAUjyH,EAAM2f,MAAM,IAC1B,IAAKsyG,EACH,OAAOjyH,EAET,OAAOiyH,EAAQ,GAAG/yH,QAAQ,GAAmB,IAC/C,CAzBa,CAAmBu3F,GAE5B,IAAI7lF,EAAY,GAAWg8G,GAC3B,GAAIh8G,EAOF,OANkB,OAAZ/L,QAAgC,IAAZA,GAAsBA,EAAQmoH,8BAAgC5L,EAAyB3qB,IAC/G4qB,EAAoB5qB,EAAWq7B,EAAgB5gG,OAAOgvF,IAEtC,OAAZr7G,QAAgC,IAAZA,GAAsBA,EAAQooH,+BAAiC9L,EAA0B1qB,IACjH4qB,EAAoB5qB,EAAWq7B,EAAgB5gG,OAAOgvF,IAEjDtvG,EAAUiwG,EAASpqB,EAAWjmF,EAAOqvG,SAAUmS,GAExD,GAAIpF,EAAejtG,MAAM,IACvB,MAAM,IAAI2hG,WAAW,iEAAmEsL,EAAiB,KAE3G,OAAOn2B,CACT,IAAGlzE,KAAK,GAEV,CChXe,SAAS2uG,GAAQhS,EAAWC,GACzCzF,EAAa,EAAG9nH,WAChB,IAAIogC,EAAOqrE,EAAO6hB,GACdthD,EAASohD,EAAUG,GACvB,OAAIr4G,MAAM82D,GACD,IAAIrrC,KAAKkL,KAEbmgC,GAIL5rC,EAAKm/F,QAAQn/F,EAAK8sE,UAAYlhC,GACvB5rC,GAHEA,CAIX,CCbe,SAASo/F,GAAUlS,EAAWC,GAC3CzF,EAAa,EAAG9nH,WAChB,IAAIogC,EAAOqrE,EAAO6hB,GACdthD,EAASohD,EAAUG,GACvB,GAAIr4G,MAAM82D,GACR,OAAO,IAAIrrC,KAAKkL,KAElB,IAAKmgC,EAEH,OAAO5rC,EAET,IAAIq/F,EAAar/F,EAAK8sE,UASlBwyB,EAAoB,IAAI/+F,KAAKP,EAAKigE,WAGtC,OAFAq/B,EAAkBC,SAASv/F,EAAKitE,WAAarhC,EAAS,EAAG,GAErDyzD,GADcC,EAAkBxyB,UAI3BwyB,GASPt/F,EAAK0wF,YAAY4O,EAAkBvR,cAAeuR,EAAkBryB,WAAYoyB,GACzEr/F,EAEX,CCnCe,SAASw/F,GAAyBC,EAAUC,GAEzD,OADAhY,EAAa,EAAG9nH,WACTyrG,EAAOo0B,GAAUx/B,UAAYoL,EAAOq0B,GAAWz/B,SACxD,CC5BA,IAAI0/B,GAAc,CAChBj3E,KAAM3qD,KAAK2qD,KACXj0C,MAAO1W,KAAK0W,MACZE,MAAO5W,KAAK4W,MACZirH,MAAO,SAAe/iI,GACpB,OAAOA,EAAQ,EAAIkB,KAAK2qD,KAAK7rD,GAASkB,KAAK4W,MAAM9X,EACnD,GAGEgjI,GAAwB,QACrB,SAASC,GAAkBz8F,GAChC,OAAOA,EAASs8F,GAAYt8F,GAAUs8F,GAAYE,GACpD,CCSe,SAASE,GAAW7S,GACjCxF,EAAa,EAAG9nH,WAChB,IAAIogC,EAAOqrE,EAAO6hB,GAElB,OADAltF,EAAK8wF,SAAS,EAAG,EAAG,EAAG,GAChB9wF,CACT,CCvBA,IAAI,GAAsB,MCI1B,SAASggG,GAAgBP,EAAUC,GACjC,IAAI9iF,EAAO6iF,EAAS1R,cAAgB2R,EAAU3R,eAAiB0R,EAASxyB,WAAayyB,EAAUzyB,YAAcwyB,EAAS3yB,UAAY4yB,EAAU5yB,WAAa2yB,EAAS5yB,WAAa6yB,EAAU7yB,YAAc4yB,EAAS7yB,aAAe8yB,EAAU9yB,cAAgB6yB,EAAS9yB,aAAe+yB,EAAU/yB,cAAgB8yB,EAAS/yB,kBAAoBgzB,EAAUhzB,kBAClV,OAAI9vD,EAAO,GACD,EACCA,EAAO,EACT,EAEAA,CAEX,CAmDe,SAASqjF,GAAiBC,EAAeC,GACtDzY,EAAa,EAAG9nH,WAChB,IAAI6/H,EAAWp0B,EAAO60B,GAClBR,EAAYr0B,EAAO80B,GACnBjsH,EAAO8rH,GAAgBP,EAAUC,GACjC3B,EAAahgI,KAAKsW,IDrCT,SAAkC6rH,EAAeC,GAC9DzY,EAAa,EAAG9nH,WAChB,IAAIwgI,EAAiBL,GAAWG,GAC5BG,EAAkBN,GAAWI,GAC7BG,EAAgBF,EAAengC,UAAY2tB,EAAgCwS,GAC3EG,EAAiBF,EAAgBpgC,UAAY2tB,EAAgCyS,GAIjF,OAAOtiI,KAAK0W,OAAO6rH,EAAgBC,GAAkB,GACvD,CC2B4BC,CAAyBf,EAAUC,IAC7DD,EAASN,QAAQM,EAAS3yB,UAAY54F,EAAO6pH,GAG7C,IACI3nG,EAASliB,GAAQ6pH,EADEjuH,OAAOkwH,GAAgBP,EAAUC,MAAgBxrH,IAGxE,OAAkB,IAAXkiB,EAAe,EAAIA,CAC5B,CC7Ce,SAASqqG,GAAWP,EAAeC,GAChDzY,EAAa,EAAG9nH,WAChB,IAAI6/H,EAAWp0B,EAAO60B,GAClBR,EAAYr0B,EAAO80B,GACnBvjF,EAAO6iF,EAASx/B,UAAYy/B,EAAUz/B,UAC1C,OAAIrjD,EAAO,GACD,EACCA,EAAO,EACT,EAEAA,CAEX,CC1Be,SAAS8jF,GAASxT,GAC/BxF,EAAa,EAAG9nH,WAChB,IAAIogC,EAAOqrE,EAAO6hB,GAElB,OADAltF,EAAK8wF,SAAS,GAAI,GAAI,GAAI,KACnB9wF,CACT,CCLe,SAAS2gG,GAAWzT,GACjCxF,EAAa,EAAG9nH,WAChB,IAAIogC,EAAOqrE,EAAO6hB,GACdtjC,EAAQ5pD,EAAKitE,WAGjB,OAFAjtE,EAAK0wF,YAAY1wF,EAAK+tF,cAAenkC,EAAQ,EAAG,GAChD5pD,EAAK8wF,SAAS,GAAI,GAAI,GAAI,KACnB9wF,CACT,CCJe,SAAS4gG,GAAmBV,EAAeC,GACxDzY,EAAa,EAAG9nH,WAChB,IAIIw2B,EAJAqpG,EAAWp0B,EAAO60B,GAClBR,EAAYr0B,EAAO80B,GACnBjsH,EAAOusH,GAAWhB,EAAUC,GAC5B3B,EAAahgI,KAAKsW,ICLT,SAAoC6rH,EAAeC,GAChEzY,EAAa,EAAG9nH,WAChB,IAAI6/H,EAAWp0B,EAAO60B,GAClBR,EAAYr0B,EAAO80B,GAGvB,OAAkB,IAFHV,EAAS1R,cAAgB2R,EAAU3R,gBAClC0R,EAASxyB,WAAayyB,EAAUzyB,WAElD,CDF4B4zB,CAA2BpB,EAAUC,IAG/D,GAAI3B,EAAa,EACf3nG,EAAS,MACJ,CACuB,IAAxBqpG,EAASxyB,YAAoBwyB,EAAS3yB,UAAY,IAGpD2yB,EAASN,QAAQ,IAEnBM,EAASF,SAASE,EAASxyB,WAAa/4F,EAAO6pH,GAG/C,IAAI+C,EAAqBL,GAAWhB,EAAUC,MAAgBxrH,GErBnD,SAA0Bg5G,GACvCxF,EAAa,EAAG9nH,WAChB,IAAIogC,EAAOqrE,EAAO6hB,GAClB,OAAOwT,GAAS1gG,GAAMigE,YAAc0gC,GAAW3gG,GAAMigE,SACvD,EFmBQ8gC,CAAiB11B,EAAO60B,KAAkC,IAAfnC,GAA6D,IAAzC0C,GAAWP,EAAeR,KAC3FoB,GAAqB,GAEvB1qG,EAASliB,GAAQ6pH,EAAajuH,OAAOgxH,GACvC,CAEA,OAAkB,IAAX1qG,EAAe,EAAIA,CAC5B,CG7Be,SAAS4qG,GAAkBd,EAAeC,GACvDzY,EAAa,EAAG9nH,WAChB,IAAI6/H,EAAWp0B,EAAO60B,GAClBR,EAAYr0B,EAAO80B,GACnBjsH,EAAOusH,GAAWhB,EAAUC,GAC5B3B,EAAahgI,KAAKsW,ICJT,SAAmC6rH,EAAeC,GAC/DzY,EAAa,EAAG9nH,WAChB,IAAI6/H,EAAWp0B,EAAO60B,GAClBR,EAAYr0B,EAAO80B,GACvB,OAAOV,EAAS1R,cAAgB2R,EAAU3R,aAC5C,CDD4BkT,CAA0BxB,EAAUC,IAG9DD,EAAS/O,YAAY,MACrBgP,EAAUhP,YAAY,MAGtB,IAAIwQ,EAAoBT,GAAWhB,EAAUC,MAAgBxrH,EACzDkiB,EAASliB,GAAQ6pH,EAAajuH,OAAOoxH,IAEzC,OAAkB,IAAX9qG,EAAe,EAAIA,CAC5B,CEPe,SAAS+qG,GAAYjU,EAAWr7G,GAC7C,IAAImpB,EAAM6T,EAAOqD,EAAOshF,EAAuBC,EAAiBC,EAAuBC,EAAuBC,EAC9GlM,EAAa,EAAG9nH,WAChB,IAAI4rG,EAAiB8nB,KACjBxG,EAAeE,EAA+0B,QAAp0BhyF,EAA8hB,QAAthB6T,EAAkd,QAAzcqD,EAA6G,QAApGshF,EAAoC,OAAZ3hH,QAAgC,IAAZA,OAAqB,EAASA,EAAQi7G,oBAAoD,IAA1B0G,EAAmCA,EAAoC,OAAZ3hH,QAAgC,IAAZA,GAAqE,QAAtC4hH,EAAkB5hH,EAAQ2L,cAAwC,IAApBi2G,GAA4F,QAArDC,EAAwBD,EAAgB5hH,eAA+C,IAA1B6hH,OAA5J,EAAwMA,EAAsB5G,oBAAoC,IAAV56E,EAAmBA,EAAQs5D,EAAeshB,oBAAoC,IAAVj+E,EAAmBA,EAA4D,QAAnD8kF,EAAwBnoB,EAAehuF,cAA8C,IAA1Bm2G,GAAyG,QAA5DC,EAAyBD,EAAsB9hH,eAAgD,IAA3B+hH,OAA9E,EAA2HA,EAAuB9G,oBAAmC,IAAT9xF,EAAkBA,EAAO,GAEn4B,KAAM8xF,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAIwB,WAAW,oDAEvB,IAAItuF,EAAOqrE,EAAO6hB,GACdxjC,EAAM1pD,EAAKgtE,SACXpwD,GAAQ8sC,EAAMojC,EAAe,EAAI,GAAKpjC,EAAMojC,EAGhD,OAFA9sF,EAAKm/F,QAAQn/F,EAAK8sE,UAAYlwD,GAC9B5c,EAAK8wF,SAAS,EAAG,EAAG,EAAG,GAChB9wF,CACT,CCvCA,MAAMohG,GAAU,CACd10C,SAAU,4BACVrD,YAAa,mBACbE,OAAQ,eACRC,OAAQ,YACRC,KAAM,KACNC,IAAK,QACLC,KAAM,KACNC,MAAO,WACPC,QAAS,aACTC,KAAM,QAER,YAAU9sC,MAAMl7B,SAAS,CACvBu/G,IAAK,WAGL1kF,QAAS,WACP,OAAOykF,EACT,EACA/uG,MAAO,SAAUx1B,EAAO8vF,GACtB,GAAc,OAAV9vF,GAAmC,qBAAVA,EAC3B,OAAO,KAET,MAAMyQ,SAAczQ,EAUpB,MATa,WAATyQ,GAAqBzQ,aAAiB0jC,KACxC1jC,EAAQwuG,EAAOxuG,GACG,WAATyQ,IAEPzQ,EADiB,kBAAR8vF,EACD,GAAM9vF,EAAO8vF,EAAK,IAAIpsD,KAAQ9yB,KAAKoE,SAEnCgpH,GAASh+H,EAAO4Q,KAAKoE,UAG1BsrH,GAAQtgI,GAASA,EAAMojG,UAAY,IAC5C,EACAjiF,OAAQ,SAAU6sE,EAAM8B,GACtB,OAAO3uE,GAAO6sE,EAAM8B,EAAKl/E,KAAKoE,QAChC,EACAwG,IAAK,SAAUwyE,EAAMjf,EAAQ6X,GAC3B,OAAQA,GACN,IAAK,cACH,OAAOwpC,EAAgBpiC,EAAMjf,GAC/B,IAAK,SACH,OC7BO,SAAoBshD,EAAWC,GAG5C,OAFAzF,EAAa,EAAG9nH,WAETqtH,EAAgBC,EAAoB,IAD9BF,EAAUG,GAEzB,CDyBemU,CAAWz2C,EAAMjf,GAC1B,IAAK,SACH,OE9BO,SAAoBshD,EAAWC,GAG5C,OAFAzF,EAAa,EAAG9nH,WAETqtH,EAAgBC,EAvBI,IAsBdF,EAAUG,GAEzB,CF0BeoU,CAAW12C,EAAMjf,GAC1B,IAAK,OACH,OGhCO,SAAkBshD,EAAWC,GAG1C,OAFAzF,EAAa,EAAG9nH,WAETqtH,EAAgBC,EAvBE,KAsBZF,EAAUG,GAEzB,CH4BeqU,CAAS32C,EAAMjf,GACxB,IAAK,MACH,OAAOszD,GAAQr0C,EAAMjf,GACvB,IAAK,OACH,OIrCO,SAAkBshD,EAAWC,GAI1C,OAHAzF,EAAa,EAAG9nH,WAGTs/H,GAAQhS,EADK,EADPF,EAAUG,GAGzB,CJgCesU,CAAS52C,EAAMjf,GACxB,IAAK,QACH,OAAOwzD,GAAUv0C,EAAMjf,GACzB,IAAK,UACH,OKzCO,SAAqBshD,EAAWC,GAI7C,OAHAzF,EAAa,EAAG9nH,WAGTw/H,GAAUlS,EADK,EADTF,EAAUG,GAGzB,CLoCeuU,CAAY72C,EAAMjf,GAC3B,IAAK,OACH,OM3CO,SAAkBshD,EAAWC,GAG1C,OAFAzF,EAAa,EAAG9nH,WAETw/H,GAAUlS,EAAoB,GADxBF,EAAUG,GAEzB,CNuCewU,CAAS92C,EAAMjf,GACxB,QACE,OAAOif,EAEb,EACAjuC,KAAM,SAAU5+C,EAAKC,EAAKwlF,GACxB,OAAQA,GACN,IAAK,cACH,OAAO+7C,GAAyBxhI,EAAKC,GACvC,IAAK,SACH,OO/CO,SAA6BwhI,EAAUC,EAAW7tH,GAC/D61G,EAAa,EAAG9nH,WAChB,IAAIg9C,EAAO4iF,GAAyBC,EAAUC,GAAa,IAC3D,OAAOI,GAA8B,OAAZjuH,QAAgC,IAAZA,OAAqB,EAASA,EAAQ+vH,eAA5E9B,CAA4FljF,EACrG,CP2CeilF,CAAoB7jI,EAAKC,GAClC,IAAK,SACH,OQzCO,SAA6BwhI,EAAUC,EAAW7tH,GAC/D61G,EAAa,EAAG9nH,WAChB,IAAIg9C,EAAO4iF,GAAyBC,EAAUC,GAAa/N,GAC3D,OAAOmO,GAA8B,OAAZjuH,QAAgC,IAAZA,OAAqB,EAASA,EAAQ+vH,eAA5E9B,CAA4FljF,EACrG,CRqCeklF,CAAoB9jI,EAAKC,GAClC,IAAK,OACH,OSnDO,SAA2BwhI,EAAUC,EAAW7tH,GAC7D61G,EAAa,EAAG9nH,WAChB,IAAIg9C,EAAO4iF,GAAyBC,EAAUC,GAAa9N,GAC3D,OAAOkO,GAA8B,OAAZjuH,QAAgC,IAAZA,OAAqB,EAASA,EAAQ+vH,eAA5E9B,CAA4FljF,EACrG,CT+CemlF,CAAkB/jI,EAAKC,GAChC,IAAK,MACH,OAAOgiI,GAAiBjiI,EAAKC,GAC/B,IAAK,OACH,OUtCO,SAA2BwhI,EAAUC,EAAW7tH,GAC7D61G,EAAa,EAAG9nH,WAChB,IAAIg9C,EAAOqjF,GAAiBR,EAAUC,GAAa,EACnD,OAAOI,GAA8B,OAAZjuH,QAAgC,IAAZA,OAAqB,EAASA,EAAQ+vH,eAA5E9B,CAA4FljF,EACrG,CVkCeolF,CAAkBhkI,EAAKC,GAChC,IAAK,QACH,OAAO2iI,GAAmB5iI,EAAKC,GACjC,IAAK,UACH,OW/DO,SAA8BwhI,EAAUC,EAAW7tH,GAChE61G,EAAa,EAAG9nH,WAChB,IAAIg9C,EAAOgkF,GAAmBnB,EAAUC,GAAa,EACrD,OAAOI,GAA8B,OAAZjuH,QAAgC,IAAZA,OAAqB,EAASA,EAAQ+vH,eAA5E9B,CAA4FljF,EACrG,CX2DeqlF,CAAqBjkI,EAAKC,GACnC,IAAK,OACH,OAAO+iI,GAAkBhjI,EAAKC,GAChC,QACE,OAAO,EAEb,EACA4+C,QAAS,SAAUguC,EAAMpH,EAAM6I,GAC7B,OAAQ7I,GACN,IAAK,SACH,OY5EO,SAAuBypC,GACpCxF,EAAa,EAAG9nH,WAChB,IAAIogC,EAAOqrE,EAAO6hB,GAElB,OADAltF,EAAKkiG,gBAAgB,GACdliG,CACT,CZuEemiG,CAAct3C,GACvB,IAAK,SACH,Oa9EO,SAAuBqiC,GACpCxF,EAAa,EAAG9nH,WAChB,IAAIogC,EAAOqrE,EAAO6hB,GAElB,OADAltF,EAAKoiG,WAAW,EAAG,GACZpiG,CACT,CbyEeqiG,CAAcx3C,GACvB,IAAK,OACH,OchFO,SAAqBqiC,GAClCxF,EAAa,EAAG9nH,WAChB,IAAIogC,EAAOqrE,EAAO6hB,GAElB,OADAltF,EAAKsiG,WAAW,EAAG,EAAG,GACftiG,CACT,Cd2EeuiG,CAAY13C,GACrB,IAAK,MACH,OAAOk1C,GAAWl1C,GACpB,IAAK,OACH,OAAOs2C,GAAYt2C,GACrB,IAAK,UACH,OAAOs2C,GAAYt2C,EAAM,CACvBiiC,cAAexgC,IAEnB,IAAK,QACH,Oe1FO,SAAsB4gC,GACnCxF,EAAa,EAAG9nH,WAChB,IAAIogC,EAAOqrE,EAAO6hB,GAGlB,OAFAltF,EAAKm/F,QAAQ,GACbn/F,EAAK8wF,SAAS,EAAG,EAAG,EAAG,GAChB9wF,CACT,CfoFewiG,CAAa33C,GACtB,IAAK,UACH,OgB5FO,SAAwBqiC,GACrCxF,EAAa,EAAG9nH,WAChB,IAAIogC,EAAOqrE,EAAO6hB,GACduV,EAAeziG,EAAKitE,WACpBrjB,EAAQ64C,EAAeA,EAAe,EAG1C,OAFAziG,EAAKu/F,SAAS31C,EAAO,GACrB5pD,EAAK8wF,SAAS,EAAG,EAAG,EAAG,GAChB9wF,CACT,ChBoFe0iG,CAAe73C,GACxB,IAAK,OACH,OiB9FO,SAAqBqiC,GAClCxF,EAAa,EAAG9nH,WAChB,IAAI+iI,EAAYt3B,EAAO6hB,GACnBltF,EAAO,IAAIO,KAAK,GAGpB,OAFAP,EAAK0wF,YAAYiS,EAAU5U,cAAe,EAAG,GAC7C/tF,EAAK8wF,SAAS,EAAG,EAAG,EAAG,GAChB9wF,CACT,CjBuFe4iG,CAAY/3C,GACrB,QACE,OAAOA,EAEb,EACA/tC,MAAO,SAAU+tC,EAAMpH,GACrB,OAAQA,GACN,IAAK,SACH,OkBtGO,SAAqBypC,GAClCxF,EAAa,EAAG9nH,WAChB,IAAIogC,EAAOqrE,EAAO6hB,GAElB,OADAltF,EAAKkiG,gBAAgB,KACdliG,CACT,ClBiGe6iG,CAAYh4C,GACrB,IAAK,SACH,OmBxGO,SAAqBqiC,GAClCxF,EAAa,EAAG9nH,WAChB,IAAIogC,EAAOqrE,EAAO6hB,GAElB,OADAltF,EAAKoiG,WAAW,GAAI,KACbpiG,CACT,CnBmGe8iG,CAAYj4C,GACrB,IAAK,OACH,OoB1GO,SAAmBqiC,GAChCxF,EAAa,EAAG9nH,WAChB,IAAIogC,EAAOqrE,EAAO6hB,GAElB,OADAltF,EAAKsiG,WAAW,GAAI,GAAI,KACjBtiG,CACT,CpBqGe+iG,CAAUl4C,GACnB,IAAK,MACH,OAAO61C,GAAS71C,GAClB,IAAK,OACH,OqBnGO,SAAmBqiC,EAAWr7G,GAC3C,IAAImpB,EAAM6T,EAAOqD,EAAOshF,EAAuBC,EAAiBC,EAAuBC,EAAuBC,EAC9GlM,EAAa,EAAG9nH,WAChB,IAAI4rG,EAAiB8nB,KACjBxG,EAAeE,EAA+0B,QAAp0BhyF,EAA8hB,QAAthB6T,EAAkd,QAAzcqD,EAA6G,QAApGshF,EAAoC,OAAZ3hH,QAAgC,IAAZA,OAAqB,EAASA,EAAQi7G,oBAAoD,IAA1B0G,EAAmCA,EAAoC,OAAZ3hH,QAAgC,IAAZA,GAAqE,QAAtC4hH,EAAkB5hH,EAAQ2L,cAAwC,IAApBi2G,GAA4F,QAArDC,EAAwBD,EAAgB5hH,eAA+C,IAA1B6hH,OAA5J,EAAwMA,EAAsB5G,oBAAoC,IAAV56E,EAAmBA,EAAQs5D,EAAeshB,oBAAoC,IAAVj+E,EAAmBA,EAA4D,QAAnD8kF,EAAwBnoB,EAAehuF,cAA8C,IAA1Bm2G,GAAyG,QAA5DC,EAAyBD,EAAsB9hH,eAAgD,IAA3B+hH,OAA9E,EAA2HA,EAAuB9G,oBAAmC,IAAT9xF,EAAkBA,EAAO,GAEn4B,KAAM8xF,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAIwB,WAAW,oDAEvB,IAAItuF,EAAOqrE,EAAO6hB,GACdxjC,EAAM1pD,EAAKgtE,SACXpwD,EAAuC,GAA/B8sC,EAAMojC,GAAgB,EAAI,IAAUpjC,EAAMojC,GAGtD,OAFA9sF,EAAKm/F,QAAQn/F,EAAK8sE,UAAYlwD,GAC9B5c,EAAK8wF,SAAS,GAAI,GAAI,GAAI,KACnB9wF,CACT,CrBoFegjG,CAAUn4C,GACnB,IAAK,QACH,OAAO81C,GAAW91C,GACpB,IAAK,UACH,OsBlHO,SAAsBqiC,GACnCxF,EAAa,EAAG9nH,WAChB,IAAIogC,EAAOqrE,EAAO6hB,GACduV,EAAeziG,EAAKitE,WACpBrjB,EAAQ64C,EAAeA,EAAe,EAAI,EAG9C,OAFAziG,EAAKu/F,SAAS31C,EAAO,GACrB5pD,EAAK8wF,SAAS,GAAI,GAAI,GAAI,KACnB9wF,CACT,CtB0GeijG,CAAap4C,GACtB,IAAK,OACH,OuBpHO,SAAmBqiC,GAChCxF,EAAa,EAAG9nH,WAChB,IAAIogC,EAAOqrE,EAAO6hB,GACdpjC,EAAO9pD,EAAK+tF,cAGhB,OAFA/tF,EAAK0wF,YAAY5mC,EAAO,EAAG,EAAG,GAC9B9pD,EAAK8wF,SAAS,GAAI,GAAI,GAAI,KACnB9wF,CACT,CvB6GekjG,CAAUr4C,GACnB,QACE,OAAOA,EAEb,IwB1IF,UAAUosB,IAAI,I,mDCECmQ,2BCFfjyF,SAAS6D,iBAAiB,oBAAoB,SAAUvC,GA8ExD,G","file":"js/application-786deb87bd2c62026677.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 21);\n","/*!\n * @kurkle/color v0.3.2\n * https://github.com/kurkle/color#readme\n * (c) 2023 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction b2p(v) {\n return lim(round(v / 2.55), 0, 100);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\nconst map$1 = {\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3,\n 4: 4,\n 5: 5,\n 6: 6,\n 7: 7,\n 8: 8,\n 9: 9,\n A: 10,\n B: 11,\n C: 12,\n D: 13,\n E: 14,\n F: 15,\n a: 10,\n b: 11,\n c: 12,\n d: 13,\n e: 14,\n f: 15\n};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => (b & 0xF0) >> 4 === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? map$1[str[7]] << 4 | map$1[str[8]] : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f) : undefined;\n}\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = function (n) {\n let k = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (n + h / 30) % 12;\n return l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n };\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = function (n) {\n let k = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (n + h / 60) % 6;\n return v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n };\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return (g - b) / d + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h, s, d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (Array.isArray(a) ? f(a[0], a[1], a[2]) : f(a, b, c)).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return;\n }\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\nfunction hslString(v) {\n if (!v) {\n return;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255 ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})` : `hsl(${h}, ${s}%, ${l}%)`;\n}\nconst map = {\n x: 'dark',\n Z: 'light',\n Y: 're',\n X: 'blu',\n W: 'gr',\n V: 'medium',\n U: 'slate',\n A: 'ee',\n T: 'ol',\n S: 'or',\n B: 'ra',\n C: 'lateg',\n D: 'ights',\n R: 'in',\n Q: 'turquois',\n E: 'hi',\n P: 'ro',\n O: 'al',\n N: 'le',\n M: 'de',\n L: 'yello',\n F: 'en',\n K: 'ch',\n G: 'arks',\n H: 'ea',\n I: 'ightg',\n J: 'wh'\n};\nconst names$1 = {\n OiceXe: 'f0f8ff',\n antiquewEte: 'faebd7',\n aqua: 'ffff',\n aquamarRe: '7fffd4',\n azuY: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '0',\n blanKedOmond: 'ffebcd',\n Xe: 'ff',\n XeviTet: '8a2be2',\n bPwn: 'a52a2a',\n burlywood: 'deb887',\n caMtXe: '5f9ea0',\n KartYuse: '7fff00',\n KocTate: 'd2691e',\n cSO: 'ff7f50',\n cSnflowerXe: '6495ed',\n cSnsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: 'ffff',\n xXe: '8b',\n xcyan: '8b8b',\n xgTMnPd: 'b8860b',\n xWay: 'a9a9a9',\n xgYF: '6400',\n xgYy: 'a9a9a9',\n xkhaki: 'bdb76b',\n xmagFta: '8b008b',\n xTivegYF: '556b2f',\n xSange: 'ff8c00',\n xScEd: '9932cc',\n xYd: '8b0000',\n xsOmon: 'e9967a',\n xsHgYF: '8fbc8f',\n xUXe: '483d8b',\n xUWay: '2f4f4f',\n xUgYy: '2f4f4f',\n xQe: 'ced1',\n xviTet: '9400d3',\n dAppRk: 'ff1493',\n dApskyXe: 'bfff',\n dimWay: '696969',\n dimgYy: '696969',\n dodgerXe: '1e90ff',\n fiYbrick: 'b22222',\n flSOwEte: 'fffaf0',\n foYstWAn: '228b22',\n fuKsia: 'ff00ff',\n gaRsbSo: 'dcdcdc',\n ghostwEte: 'f8f8ff',\n gTd: 'ffd700',\n gTMnPd: 'daa520',\n Way: '808080',\n gYF: '8000',\n gYFLw: 'adff2f',\n gYy: '808080',\n honeyMw: 'f0fff0',\n hotpRk: 'ff69b4',\n RdianYd: 'cd5c5c',\n Rdigo: '4b0082',\n ivSy: 'fffff0',\n khaki: 'f0e68c',\n lavFMr: 'e6e6fa',\n lavFMrXsh: 'fff0f5',\n lawngYF: '7cfc00',\n NmoncEffon: 'fffacd',\n ZXe: 'add8e6',\n ZcSO: 'f08080',\n Zcyan: 'e0ffff',\n ZgTMnPdLw: 'fafad2',\n ZWay: 'd3d3d3',\n ZgYF: '90ee90',\n ZgYy: 'd3d3d3',\n ZpRk: 'ffb6c1',\n ZsOmon: 'ffa07a',\n ZsHgYF: '20b2aa',\n ZskyXe: '87cefa',\n ZUWay: '778899',\n ZUgYy: '778899',\n ZstAlXe: 'b0c4de',\n ZLw: 'ffffe0',\n lime: 'ff00',\n limegYF: '32cd32',\n lRF: 'faf0e6',\n magFta: 'ff00ff',\n maPon: '800000',\n VaquamarRe: '66cdaa',\n VXe: 'cd',\n VScEd: 'ba55d3',\n VpurpN: '9370db',\n VsHgYF: '3cb371',\n VUXe: '7b68ee',\n VsprRggYF: 'fa9a',\n VQe: '48d1cc',\n VviTetYd: 'c71585',\n midnightXe: '191970',\n mRtcYam: 'f5fffa',\n mistyPse: 'ffe4e1',\n moccasR: 'ffe4b5',\n navajowEte: 'ffdead',\n navy: '80',\n Tdlace: 'fdf5e6',\n Tive: '808000',\n TivedBb: '6b8e23',\n Sange: 'ffa500',\n SangeYd: 'ff4500',\n ScEd: 'da70d6',\n pOegTMnPd: 'eee8aa',\n pOegYF: '98fb98',\n pOeQe: 'afeeee',\n pOeviTetYd: 'db7093',\n papayawEp: 'ffefd5',\n pHKpuff: 'ffdab9',\n peru: 'cd853f',\n pRk: 'ffc0cb',\n plum: 'dda0dd',\n powMrXe: 'b0e0e6',\n purpN: '800080',\n YbeccapurpN: '663399',\n Yd: 'ff0000',\n Psybrown: 'bc8f8f',\n PyOXe: '4169e1',\n saddNbPwn: '8b4513',\n sOmon: 'fa8072',\n sandybPwn: 'f4a460',\n sHgYF: '2e8b57',\n sHshell: 'fff5ee',\n siFna: 'a0522d',\n silver: 'c0c0c0',\n skyXe: '87ceeb',\n UXe: '6a5acd',\n UWay: '708090',\n UgYy: '708090',\n snow: 'fffafa',\n sprRggYF: 'ff7f',\n stAlXe: '4682b4',\n tan: 'd2b48c',\n teO: '8080',\n tEstN: 'd8bfd8',\n tomato: 'ff6347',\n Qe: '40e0d0',\n viTet: 'ee82ee',\n JHt: 'f5deb3',\n wEte: 'ffffff',\n wEtesmoke: 'f5f5f5',\n Lw: 'ffff00',\n LwgYF: '9acd32'\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return;\n }\n if (m[7] !== r) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (v.a < 255 ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})` : `rgb(${v.r}, ${v.g}, ${v.b})`);\n}\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n var v = {\n r: 0,\n g: 0,\n b: 0,\n a: 255\n };\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {\n r: input[0],\n g: input[1],\n b: input[2],\n a: 255\n };\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {\n r: 0,\n g: 0,\n b: 0,\n a: 1\n });\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\nfunction index_esm(input) {\n return new Color(input);\n}\nexport { Color, b2n, b2p, index_esm as default, hexParse, hexString, hsl2rgb, hslString, hsv2rgb, hueParse, hwb2rgb, lim, n2b, n2p, nameParse, p2b, rgb2hsl, rgbParse, rgbString, rotate, round };","/*!\n * Chart.js v4.2.1\n * https://www.chartjs.org\n * (c) 2023 Chart.js Contributors\n * Released under the MIT License\n */\nimport { Color } from '@kurkle/color';\n\n/**\n * @namespace Chart.helpers\n */ /**\n * An empty function that can be used, for example, for optional callback.\n */\nfunction noop() {\n /* noop */}\n/**\n * Returns a unique id, sequentially generated from a global variable.\n */\nconst uid = (() => {\n let id = 0;\n return () => id++;\n})();\n/**\n * Returns true if `value` is neither null nor undefined, else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */\nfunction isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\n/**\n * Returns true if `value` is an array (including typed arrays), else returns false.\n * @param value - The value to test.\n * @function\n */\nfunction isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n return true;\n }\n return false;\n}\n/**\n * Returns true if `value` is an object (excluding null), else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */\nfunction isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\n/**\n * Returns true if `value` is a finite number, else returns false\n * @param value - The value to test.\n */\nfunction isNumberFinite(value) {\n return (typeof value === 'number' || value instanceof Number) && isFinite(+value);\n}\n/**\n * Returns `value` if finite, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is not finite.\n */\nfunction finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\n/**\n * Returns `value` if defined, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is undefined.\n */\nfunction valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension) => typeof value === 'string' && value.endsWith('%') ? parseFloat(value) / 100 : +value / dimension;\nconst toDimension = (value, dimension) => typeof value === 'string' && value.endsWith('%') ? parseFloat(value) / 100 * dimension : +value;\n/**\n * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n * @param fn - The function to call.\n * @param args - The arguments with which `fn` should be called.\n * @param [thisArg] - The value of `this` provided for the call to `fn`.\n */\nfunction callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n let i, len, keys;\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\n/**\n * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n * @param a0 - The array to compare\n * @param a1 - The array to compare\n * @private\n */\nfunction _elementsEqual(a0, a1) {\n let i, ilen, v0, v1;\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n return true;\n}\n/**\n * Returns a deep copy of `source` without keeping references on objects and arrays.\n * @param source - The value to clone.\n */\nfunction clone(source) {\n if (isArray(source)) {\n return source.map(clone);\n }\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n for (; k < klen; ++k) {\n target[keys[k]] = clone(source[keys[k]]);\n }\n return target;\n }\n return source;\n}\nfunction isValidKey(key) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\n/**\n * The default merger when Chart.helpers.merge is called without merger option.\n * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\n * @private\n */\nfunction _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n merge(tval, sval, options);\n } else {\n target[key] = clone(sval);\n }\n}\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n if (!isObject(target)) {\n return target;\n }\n options = options || {};\n const merger = options.merger || _merger;\n let current;\n for (let i = 0; i < ilen; ++i) {\n current = sources[i];\n if (!isObject(current)) {\n continue;\n }\n const keys = Object.keys(current);\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, current, options);\n }\n }\n return target;\n}\nfunction mergeIf(target, source) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return merge(target, source, {\n merger: _mergerIf\n });\n}\n/**\n * Merges source[key] in target[key] only if target[key] is undefined.\n * @private\n */\nfunction _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone(sval);\n }\n}\n/**\n * @private\n */\nfunction _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous + '\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\n// resolveObjectKey resolver cache\nconst keyResolvers = {\n // Chart.helpers.core resolveObjectKey should resolve empty key to root object\n '': v => v,\n // default resolvers\n x: o => o.x,\n y: o => o.y\n};\n/**\n * @private\n */\nfunction _splitKey(key) {\n const parts = key.split('.');\n const keys = [];\n let tmp = '';\n for (const part of parts) {\n tmp += part;\n if (tmp.endsWith('\\\\')) {\n tmp = tmp.slice(0, -1) + '.';\n } else {\n keys.push(tmp);\n tmp = '';\n }\n }\n return keys;\n}\nfunction _getKeyResolver(key) {\n const keys = _splitKey(key);\n return obj => {\n for (const k of keys) {\n if (k === '') {\n break;\n }\n obj = obj && obj[k];\n }\n return obj;\n };\n}\nfunction resolveObjectKey(obj, key) {\n const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n return resolver(obj);\n}\n/**\n * @private\n */\nfunction _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = value => typeof value !== 'undefined';\nconst isFunction = value => typeof value === 'function';\n// Adapted from https://stackoverflow.com/questions/31128855/comparing-ecma6-sets-for-equality#31129384\nconst setsEqual = (a, b) => {\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n};\n/**\n * @param e - The event\n * @private\n */\nfunction _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\n/**\n * @alias Chart.helpers.math\n * @namespace\n */\nconst PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\n/**\n * Implementation of the nice number algorithm used in determining where axis labels will go\n */\nfunction niceNum(range) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\n/**\n * Returns an array of factors sorted from 1 to sqrt(value)\n * @private\n */\nfunction _factorize(value) {\n const result = [];\n const sqrt = Math.sqrt(value);\n let i;\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n result.sort((a, b) => a - b).pop();\n return result;\n}\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return rounded - epsilon <= x && rounded + epsilon >= x;\n}\n/**\n * @private\n */\nfunction _setMinAndMaxByKey(array, target, property) {\n let i, ilen, value;\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\n/**\n * Returns the number of decimal places\n * i.e. the number of digits after the decimal point, of the value of this Number.\n * @param x - A number.\n * @returns The number of decimal places.\n * @private\n */\nfunction _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n return p;\n}\n// Gets the angle from vertical upright to the point about a centre.\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n if (angle < -0.5 * PI) {\n angle += TAU; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n }\n\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\n/**\n * Shortest distance between angles, in either direction.\n * @private\n */\nfunction _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\n/**\n * Normalize angle to be between 0 and 2*PI\n * @private\n */\nfunction _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\n/**\n * @private\n */\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || sameAngleIsFullCircle && s === e || angleToStart > angleToEnd && startToAngle < endToAngle;\n}\n/**\n * Limit `value` between `min` and `max`\n * @param value\n * @param min\n * @param max\n * @private\n */\nfunction _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\n/**\n * @param {number} value\n * @private\n */\nfunction _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\n/**\n * @param value\n * @param start\n * @param end\n * @param [epsilon]\n * @private\n */\nfunction _isBetween(value, start, end) {\n let epsilon = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1e-6;\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\nfunction _lookup(table, value, cmp) {\n cmp = cmp || (index => table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid;\n while (hi - lo > 1) {\n mid = lo + hi >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n return {\n lo,\n hi\n };\n}\n/**\n * Binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @param last - lookup last index\n * @private\n */\nconst _lookupByKey = (table, key, value, last) => _lookup(table, value, last ? index => {\n const ti = table[index][key];\n return ti < value || ti === value && table[index + 1][key] === value;\n} : index => table[index][key] < value);\n/**\n * Reverse binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @private\n */\nconst _rlookupByKey = (table, key, value) => _lookup(table, value, index => table[index][key] >= value);\n/**\n * Return subset of `values` between `min` and `max` inclusive.\n * Values are assumed to be in sorted order.\n * @param values - sorted array of values\n * @param min - min value\n * @param max - max value\n */\nfunction _filterBetween(values, min, max) {\n let start = 0;\n let end = values.length;\n while (start < end && values[start] < min) {\n start++;\n }\n while (end > start && values[end - 1] > max) {\n end--;\n }\n return start > 0 || end < values.length ? values.slice(start, end) : values;\n}\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n arrayEvents.forEach(key => {\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n const res = base.apply(this, args);\n array._chartjs.listeners.forEach(object => {\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n return res;\n }\n });\n });\n}\nfunction unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n if (listeners.length > 0) {\n return;\n }\n arrayEvents.forEach(key => {\n delete array[key];\n });\n delete array._chartjs;\n}\n/**\n * @param items\n */\nfunction _arrayUnique(items) {\n const set = new Set();\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n set.add(items[i]);\n }\n if (set.size === ilen) {\n return items;\n }\n return Array.from(set);\n}\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\n/**\n* Request animation polyfill\n*/\nconst requestAnimFrame = function () {\n if (typeof window === 'undefined') {\n return function (callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}();\n/**\n * Throttles calling `fn` once per animation frame\n * Latest arguments are used on the actual call\n */\nfunction throttled(fn, thisArg) {\n let argsToUse = [];\n let ticking = false;\n return function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n // Save the args for use later\n argsToUse = args;\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, argsToUse);\n });\n }\n };\n}\n/**\n * Debounces calling `fn` for `delay` ms\n */\nfunction debounce(fn, delay) {\n let timeout;\n return function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\n/**\n * Converts 'start' to 'left', 'end' to 'right' and others to 'center'\n * @private\n */\nconst _toLeftRightCenter = align => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\n/**\n * Returns `start`, `end` or `(start + end) / 2` depending on `align`. Defaults to `center`\n * @private\n */\nconst _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\n/**\n * Returns `left`, `right` or `(left + right) / 2` depending on `align`. Defaults to `left`\n * @private\n */\nconst _textX = (align, left, right, rtl) => {\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\n/**\n * Return start and count of visible points.\n * @private\n */\nfunction _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n const pointCount = points.length;\n let start = 0;\n let count = pointCount;\n if (meta._sorted) {\n const iScale = meta.iScale,\n _parsed = meta._parsed;\n const axis = iScale.axis;\n const _iScale$getUserBounds = iScale.getUserBounds(),\n min = _iScale$getUserBounds.min,\n max = _iScale$getUserBounds.max,\n minDefined = _iScale$getUserBounds.minDefined,\n maxDefined = _iScale$getUserBounds.maxDefined;\n if (minDefined) {\n start = _limitValue(Math.min(\n // @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, iScale.axis, min).lo,\n // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo), 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(\n // @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, iScale.axis, max, true).hi + 1,\n // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1), start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n return {\n start,\n count\n };\n}\n/**\n * Checks if the scale ranges have changed.\n * @param {object} meta - dataset meta.\n * @returns {boolean}\n * @private\n */\nfunction _scaleRangesChanged(meta) {\n const xScale = meta.xScale,\n yScale = meta.yScale,\n _scaleRanges = meta._scaleRanges;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min || _scaleRanges.xmax !== xScale.max || _scaleRanges.ymin !== yScale.min || _scaleRanges.ymax !== yScale.max;\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\nconst atEdge = t => t === 0 || t === 1;\nconst elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\n/**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easing.effects\n * @see http://www.robertpenner.com/easing/\n */\nconst effects = {\n linear: t => t,\n easeInQuad: t => t * t,\n easeOutQuad: t => -t * (t - 2),\n easeInOutQuad: t => (t /= 0.5) < 1 ? 0.5 * t * t : -0.5 * (--t * (t - 2) - 1),\n easeInCubic: t => t * t * t,\n easeOutCubic: t => (t -= 1) * t * t + 1,\n easeInOutCubic: t => (t /= 0.5) < 1 ? 0.5 * t * t * t : 0.5 * ((t -= 2) * t * t + 2),\n easeInQuart: t => t * t * t * t,\n easeOutQuart: t => -((t -= 1) * t * t * t - 1),\n easeInOutQuart: t => (t /= 0.5) < 1 ? 0.5 * t * t * t * t : -0.5 * ((t -= 2) * t * t * t - 2),\n easeInQuint: t => t * t * t * t * t,\n easeOutQuint: t => (t -= 1) * t * t * t * t + 1,\n easeInOutQuint: t => (t /= 0.5) < 1 ? 0.5 * t * t * t * t * t : 0.5 * ((t -= 2) * t * t * t * t + 2),\n easeInSine: t => -Math.cos(t * HALF_PI) + 1,\n easeOutSine: t => Math.sin(t * HALF_PI),\n easeInOutSine: t => -0.5 * (Math.cos(PI * t) - 1),\n easeInExpo: t => t === 0 ? 0 : Math.pow(2, 10 * (t - 1)),\n easeOutExpo: t => t === 1 ? 1 : -Math.pow(2, -10 * t) + 1,\n easeInOutExpo: t => atEdge(t) ? t : t < 0.5 ? 0.5 * Math.pow(2, 10 * (t * 2 - 1)) : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n easeInCirc: t => t >= 1 ? t : -(Math.sqrt(1 - t * t) - 1),\n easeOutCirc: t => Math.sqrt(1 - (t -= 1) * t),\n easeInOutCirc: t => (t /= 0.5) < 1 ? -0.5 * (Math.sqrt(1 - t * t) - 1) : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeInElastic: t => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n easeOutElastic: t => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n easeInOutElastic(t) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t : t < 0.5 ? 0.5 * elasticIn(t * 2, s, p) : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n easeInBack(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack(t) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack(t) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= 1.525) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2);\n },\n easeInBounce: t => 1 - effects.easeOutBounce(1 - t),\n easeOutBounce(t) {\n const m = 7.5625;\n const d = 2.75;\n if (t < 1 / d) {\n return m * t * t;\n }\n if (t < 2 / d) {\n return m * (t -= 1.5 / d) * t + 0.75;\n }\n if (t < 2.5 / d) {\n return m * (t -= 2.25 / d) * t + 0.9375;\n }\n return m * (t -= 2.625 / d) * t + 0.984375;\n },\n easeInOutBounce: t => t < 0.5 ? effects.easeInBounce(t * 2) * 0.5 : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5\n};\nfunction isPatternOrGradient(value) {\n if (value && typeof value === 'object') {\n const type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n return false;\n}\nfunction color(value) {\n return isPatternOrGradient(value) ? value : new Color(value);\n}\nfunction getHoverColor(value) {\n return isPatternOrGradient(value) ? value : new Color(value).saturate(0.5).darken(0.1).hexString();\n}\nconst numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\nfunction applyAnimationsDefaults(defaults) {\n defaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined\n });\n defaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: name => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn'\n });\n defaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n }\n });\n defaults.describe('animations', {\n _fallback: 'animation'\n });\n defaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0\n }\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: v => v | 0\n }\n }\n }\n });\n}\nfunction applyLayoutsDefaults(defaults) {\n defaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n });\n}\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\nconst formatters = {\n values(value) {\n return isArray(value) ? value : '' + value;\n },\n numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue;\n if (ticks.length > 1) {\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n delta = calculateDelta(tickValue, ticks);\n }\n const logDelta = log10(Math.abs(delta));\n const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n const options = {\n notation,\n minimumFractionDigits: numDecimal,\n maximumFractionDigits: numDecimal\n };\n Object.assign(options, this.options.ticks.format);\n return formatNumber(tickValue, locale, options);\n },\n logarithmic(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = ticks[index].significand || tickValue / Math.pow(10, Math.floor(log10(tickValue)));\n if ([1, 2, 3, 5, 10, 15].includes(remain) || index > 0.8 * ticks.length) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n};\nfunction calculateDelta(tickValue, ticks) {\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\nvar Ticks = {\n formatters\n};\nfunction applyScaleDefaults(defaults) {\n defaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n bounds: 'ticks',\n grace: 0,\n grid: {\n display: true,\n lineWidth: 1,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options) => options.lineWidth,\n tickColor: (_ctx, options) => options.color,\n offset: false\n },\n border: {\n display: true,\n dash: [],\n dashOffset: 0.0,\n width: 1\n },\n title: {\n display: false,\n text: '',\n padding: {\n top: 4,\n bottom: 4\n }\n },\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2\n }\n });\n defaults.route('scale.ticks', 'color', '', 'color');\n defaults.route('scale.grid', 'color', '', 'borderColor');\n defaults.route('scale.border', 'color', '', 'borderColor');\n defaults.route('scale.title', 'color', '', 'color');\n defaults.describe('scale', {\n _fallback: false,\n _scriptable: name => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: name => name !== 'borderDash' && name !== 'tickBorderDash' && name !== 'dash'\n });\n defaults.describe('scales', {\n _fallback: 'scale'\n });\n defaults.describe('scale.ticks', {\n _scriptable: name => name !== 'backdropPadding' && name !== 'callback',\n _indexable: name => name !== 'backdropPadding'\n });\n}\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\nfunction getScope$1(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for (let i = 0, n = keys.length; i < n; ++i) {\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n return merge(getScope$1(root, ''), scope);\n}\nclass Defaults {\n constructor(_descriptors, _appliers) {\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = context => context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove'];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options) => getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true,\n includeInvisible: false\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n this.describe(_descriptors);\n this.apply(_appliers);\n }\n set(scope, values) {\n return set(this, scope, values);\n }\n get(scope) {\n return getScope$1(this, scope);\n }\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n override(scope, values) {\n return set(overrides, scope, values);\n }\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope$1(this, scope);\n const targetScopeObject = getScope$1(this, targetScope);\n const privateName = '_' + name;\n Object.defineProperties(scopeObject, {\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n [name]: {\n enumerable: true,\n get() {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set(value) {\n this[privateName] = value;\n }\n }\n });\n }\n apply(appliers) {\n appliers.forEach(apply => apply(this));\n }\n}\nvar defaults = /* #__PURE__ */new Defaults({\n _scriptable: name => !name.startsWith('on'),\n _indexable: name => name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false\n }\n}, [applyAnimationsDefaults, applyLayoutsDefaults, applyScaleDefaults]);\nfunction toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n return (font.style ? font.style + ' ' : '') + (font.weight ? font.weight + ' ' : '') + font.size + 'px ' + font.family;\n}\nfunction _measureText(ctx, data, gc, longest, string) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n ctx.save();\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i, j, jlen, thing, nestedThing;\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n if (thing !== undefined && thing !== null && isArray(thing) !== true) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j];\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n ctx.restore();\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\nfunction _alignPixel(chart, pixel, width) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\nfunction clearCanvas(canvas, ctx) {\n ctx = ctx || canvas.getContext('2d');\n ctx.save();\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n drawPointLegend(ctx, options, x, y, null);\n}\nfunction drawPointLegend(ctx, options, x, y, w) {\n let type, xOffset, yOffset, size, cornerRadius, width, xOffsetW, yOffsetW;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\n switch (style) {\n default:\n if (w) {\n ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n } else {\n ctx.arc(x, y, radius, 0, TAU);\n }\n ctx.closePath();\n break;\n case 'triangle':\n width = w ? w / 2 : radius;\n ctx.moveTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n xOffsetW = Math.cos(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n yOffsetW = Math.sin(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n ctx.arc(x - xOffsetW, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffsetW, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffsetW, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffsetW, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n width = w ? w / 2 : size;\n ctx.rect(x - width, y - size, 2 * width, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n case 'rectRot':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n case 'cross':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'star':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n rad += QUARTER_PI;\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'line':\n xOffset = w ? w / 2 : Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * (w ? w / 2 : radius), y + Math.sin(rad) * radius);\n break;\n case false:\n ctx.closePath();\n break;\n }\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\nfunction _isPointInArea(point, area, margin) {\n margin = margin || 0.5;\n return !area || point && point.x > area.left - margin && point.x < area.right + margin && point.y > area.top - margin && point.y < area.bottom + margin;\n}\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\nfunction unclipArea(ctx) {\n ctx.restore();\n}\nfunction _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\nfunction _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(flip ? previous.cp1x : previous.cp2x, flip ? previous.cp1y : previous.cp2y, flip ? target.cp2x : target.cp1x, flip ? target.cp2y : target.cp1y, target.x, target.y);\n}\nfunction renderText(ctx, text, x, y, font) {\n let opts = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n const lines = isArray(text) ? text : [text];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i, line;\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n if (opts.backdrop) {\n drawBackdrop(ctx, opts.backdrop);\n }\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += font.lineHeight;\n }\n ctx.restore();\n}\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\nfunction drawBackdrop(ctx, opts) {\n const oldColor = ctx.fillStyle;\n ctx.fillStyle = opts.color;\n ctx.fillRect(opts.left, opts.top, opts.width, opts.height);\n ctx.fillStyle = oldColor;\n}\nfunction addRoundedRectPath(ctx, rect) {\n const x = rect.x,\n y = rect.y,\n w = rect.w,\n h = rect.h,\n radius = rect.radius;\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true);\n ctx.lineTo(x, y + h - radius.bottomLeft);\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n ctx.lineTo(x + w, y + radius.topRight);\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n ctx.lineTo(x + radius.topLeft, y);\n}\nconst LINE_HEIGHT = /^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/;\nconst FONT_STYLE = /^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;\n/**\n * @alias Chart.helpers.options\n * @namespace\n */ /**\n * Converts the given line height `value` in pixels for a specific font `size`.\n * @param value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n * @param size - The font size (in pixels) used to resolve relative `value`.\n * @returns The effective line height in pixels (size * 1.2 if value is invalid).\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n * @since 2.7.0\n */\nfunction toLineHeight(value, size) {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n}\nconst numberOrZero = v => +v || 0;\nfunction _readValueToProps(value, props) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value) ? objProps ? prop => valueOrDefault(value[prop], value[props[prop]]) : prop => value[prop] : () => value;\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\n/**\n * Converts the given value into a TRBL object.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left)\n * @since 3.0.0\n */\nfunction toTRBL(value) {\n return _readValueToProps(value, {\n top: 'y',\n right: 'x',\n bottom: 'y',\n left: 'x'\n });\n}\n/**\n * Converts the given value into a TRBL corners object (similar with css border-radius).\n * @param value - If a number, set the value to all TRBL corner components,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * @returns The TRBL corner values (topLeft, topRight, bottomLeft, bottomRight)\n * @since 3.0.0\n */\nfunction toTRBLCorners(value) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\n/**\n * Converts the given value into a padding object with pre-computed width/height.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left, width, height)\n * @since 2.7.0\n */\nfunction toPadding(value) {\n const obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\n/**\n * Parses font options and returns the font object.\n * @param options - A object that contains font options to be parsed.\n * @param fallback - A object that contains fallback font options.\n * @return The font object.\n * @private\n */\nfunction toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = undefined;\n }\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\n/**\n * Evaluates the given `inputs` sequentially and returns the first defined value.\n * @param inputs - An array of values, falling back to the last value.\n * @param context - If defined and the current value is a function, the value\n * is called with `context` as first argument and the result becomes the new input.\n * @param index - If defined and the current value is an array, the value\n * at `index` become the new input.\n * @param info - object to return information about resolution in\n * @param info.cacheable - Will be set to `false` if option is not cacheable.\n * @since 2.7.0\n */\nfunction resolve(inputs, context, index, info) {\n let cacheable = true;\n let i, ilen, value;\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\n/**\n * @param minmax\n * @param grace\n * @param beginAtZero\n * @private\n */\nfunction _addGrace(minmax, grace, beginAtZero) {\n const min = minmax.min,\n max = minmax.max;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\nfunction _createResolver(scopes) {\n let prefixes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [''];\n let rootScopes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : scopes;\n let fallback = arguments.length > 3 ? arguments[3] : undefined;\n let getTarget = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : () => scopes[0];\n if (!defined(fallback)) {\n fallback = _resolve('_fallback', scopes);\n }\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: rootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: scope => _createResolver([scope, ...scopes], prefixes, rootScopes, fallback)\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete target._keys;\n delete scopes[0][prop];\n return true;\n },\n get(target, prop) {\n return _cached(target, prop, () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n has(target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n set(target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value;\n delete target._keys;\n return true;\n }\n });\n}\nfunction _attachContext(proxy, context, subProxy, descriptorDefaults) {\n const cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: ctx => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: scope => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete proxy[prop];\n return true;\n },\n get(target, prop, receiver) {\n return _cached(target, prop, () => _resolveWithContext(target, prop, receiver));\n },\n getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys ? Reflect.has(proxy, prop) ? {\n enumerable: true,\n configurable: true\n } : undefined : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n set(target, prop, value) {\n proxy[prop] = value;\n delete target[prop];\n return true;\n }\n });\n}\nfunction _descriptors(proxy) {\n let defaults = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n scriptable: true,\n indexable: true\n };\n const _proxy$_scriptable = proxy._scriptable,\n _scriptable = _proxy$_scriptable === void 0 ? defaults.scriptable : _proxy$_scriptable,\n _proxy$_indexable = proxy._indexable,\n _indexable = _proxy$_indexable === void 0 ? defaults.indexable : _proxy$_indexable,\n _proxy$_allKeys = proxy._allKeys,\n _allKeys = _proxy$_allKeys === void 0 ? defaults.allKeys : _proxy$_allKeys;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n };\n}\nconst readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters' && (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n const value = resolve();\n target[prop] = value;\n return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n const _proxy = target._proxy,\n _context = target._context,\n _subProxy = target._subProxy,\n descriptors = target._descriptors;\n let value = _proxy[prop];\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\nfunction _resolveScriptable(prop, value, target, receiver) {\n const _proxy = target._proxy,\n _context = target._context,\n _subProxy = target._subProxy,\n _stack = target._stack;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n value = value(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n const _proxy = target._proxy,\n _context = target._context,\n _subProxy = target._subProxy,\n descriptors = target._descriptors;\n if (defined(_context.index) && isIndexable(prop)) {\n value = value[_context.index % value.length];\n } else if (isObject(value[0])) {\n const arr = value;\n const scopes = _proxy._scopes.filter(s => s !== arr);\n value = [];\n for (const item of arr) {\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent) => key === true ? parent : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n for (const parent of parentScopes) {\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (defined(fallback) && fallback !== key && fallback !== parentFallback) {\n return fallback;\n }\n } else if (scope === false && defined(parentFallback) && key !== parentFallback) {\n return null;\n }\n }\n return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [...parentScopes, ...rootScopes];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (defined(fallback) && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [''], rootScopes, fallback, () => subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n return value;\n }\n return target || {};\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n for (const prefix of prefixes) {\n value = _resolve(readKey(prefix, prop), scopes);\n if (defined(value)) {\n return needsSubResolver(prop, value) ? createSubResolver(scopes, proxy, prop, value) : value;\n }\n }\n}\nfunction _resolve(key, scopes) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (defined(value)) {\n return value;\n }\n }\n}\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n for (const scope of scopes) {\n for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n set.add(key);\n }\n }\n return Array.from(set);\n}\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n const iScale = meta.iScale;\n const _this$_parsing$key = this._parsing.key,\n key = _this$_parsing$key === void 0 ? 'r' : _this$_parsing$key;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n return parsed;\n}\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i) => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = indexAxis => indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n // Props to Rob Spencer at scaled innovation for his post on splining between points\n // http://scaledinnovation.com/analytics/splines/aboutSplines.html\n // This function must also respect \"skipped\" points\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n // If all points are the same, s01 & s02 will be inf\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n const fa = t * s01; // scaling factor for triangle Ta\n const fb = t * s12;\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\n/**\n * Adjust tangents to ensure monotonic properties\n */\nfunction monotoneAdjust(points, deltaK, mK) {\n const pointsLen = points.length;\n let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\nfunction monotoneCompute(points, mK) {\n let indexAxis = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'x';\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\n/**\n * This function calculates Bézier control points in a similar way than |splineCurve|,\n * but preserves monotonicity of the provided data and ensures no local extremums are added\n * between the dataset discrete points due to the interpolation.\n * See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n */\nfunction splineCurveMonotone(points) {\n let indexAxis = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'x';\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK = Array(pointsLen).fill(0);\n const mK = Array(pointsLen);\n // Calculate slopes (deltaK) and initialize tangents (mK)\n let i, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n // In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i] : !pointAfter ? deltaK[i - 1] : sign(deltaK[i - 1]) !== sign(deltaK[i]) ? 0 : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\n/**\n * @private\n */\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n // Only consider points that are drawn in case the spanGaps option is used\n if (options.spanGaps) {\n points = points.filter(pt => !pt.skip);\n }\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(prev, point, points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen], options.tension);\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\n/**\n * Note: typedefs are auto-exported, so use a made-up `dom` namespace where\n * necessary to avoid duplicates with `export * from './helpers`; see\n * https://github.com/microsoft/TypeScript/issues/46011\n * @typedef { import('../core/core.controller.js').default } dom.Chart\n * @typedef { import('../../types').ChartEvent } ChartEvent\n */ /**\n * @private\n */\nfunction _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n/**\n * @private\n */\nfunction _getParentNode(domNode) {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\n/**\n * convert max-width/max-height values that may be percentages into a number\n * @private\n */\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n // percentage * size in dimension\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n}\nconst getComputedStyle = element => element.ownerDocument.defaultView.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n for (let i = 0; i < 4; i++) {\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\nconst useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot);\n/**\n * @param e\n * @param canvas\n * @returns Canvas position\n */\nfunction getCanvasPosition(e, canvas) {\n const touches = e.touches;\n const source = touches && touches.length ? touches[0] : e;\n const offsetX = source.offsetX,\n offsetY = source.offsetY;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {\n x,\n y,\n box\n };\n}\n/**\n * Gets an event's x, y coordinates, relative to the chart area\n * @param event\n * @param chart\n * @returns x and y coordinates of the event\n */\nfunction getRelativePosition(event, chart) {\n if ('native' in event) {\n return event;\n }\n const canvas = chart.canvas,\n currentDevicePixelRatio = chart.currentDevicePixelRatio;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const _getCanvasPosition = getCanvasPosition(event, canvas),\n x = _getCanvasPosition.x,\n y = _getCanvasPosition.y,\n box = _getCanvasPosition.box;\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let width = chart.width,\n height = chart.height;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n const container = _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect(); // this is the border box of the container\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\nconst round1 = v => Math.round(v * 10) / 10;\n// eslint-disable-next-line complexity\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let width = containerSize.width,\n height = containerSize.height;\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? width / aspectRatio : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n // https://github.com/chartjs/Chart.js/issues/4659\n // If the canvas has width, but no height, default to aspectRatio of 2 (canvas default)\n height = round1(width / 2);\n }\n const maintainHeight = bbWidth !== undefined || bbHeight !== undefined;\n if (maintainHeight && aspectRatio && containerSize.height && height > containerSize.height) {\n height = containerSize.height;\n width = round1(Math.floor(height * aspectRatio));\n }\n return {\n width,\n height\n };\n}\n/**\n * @param chart\n * @param forceRatio\n * @param forceStyle\n * @returns True if the canvas context size or transformation has changed.\n */\nfunction retinaScale(chart, forceRatio, forceStyle) {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = Math.floor(chart.height);\n chart.width = Math.floor(chart.width);\n const canvas = chart.canvas;\n // If no style has been set on the canvas, the render size is used as display size,\n // making the chart visually bigger, so let's enforce it to the \"correct\" values.\n // See https://github.com/chartjs/Chart.js/issues/3575\n if (canvas.style && (forceStyle || !canvas.style.height && !canvas.style.width)) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n if (chart.currentDevicePixelRatio !== pixelRatio || canvas.height !== deviceHeight || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\n/**\n * Detects support for options object argument in addEventListener.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n * @private\n */\nconst supportsEventListenerOptions = function () {\n let passiveSupported = false;\n try {\n const options = {\n get passive() {\n passiveSupported = true;\n return false;\n }\n };\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n // continue regardless of error\n }\n return passiveSupported;\n}();\n/**\n * The \"used\" size is the final value of a dimension property after all calculations have\n * been performed. This method uses the computed style of `element` but returns undefined\n * if the computed style is not expressed in pixels. That can happen in some cases where\n * `element` has a size relative to its parent and this last one is not yet displayed,\n * for example because of `display: none` on a parent node.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n * @returns Size in pixels or undefined if unknown.\n */\nfunction readUsedSize(element, property) {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n\n/**\n * @private\n */\nfunction _pointInLine(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\n/**\n * @private\n */\nfunction _steppedInterpolation(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y : mode === 'after' ? t < 1 ? p1.y : p2.y : t > 0 ? p2.y : p1.y\n };\n}\n/**\n * @private\n */\nfunction _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {\n x: p1.cp2x,\n y: p1.cp2y\n };\n const cp2 = {\n x: p2.cp1x,\n y: p2.cp1y\n };\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\nconst getRightToLeftAdapter = function (rectX, width) {\n return {\n x(x) {\n return rectX + rectX + width - x;\n },\n setWidth(w) {\n width = w;\n },\n textAlign(align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus(x, value) {\n return x - value;\n },\n leftForLtr(x, itemWidth) {\n return x - itemWidth;\n }\n };\n};\nconst getLeftToRightAdapter = function () {\n return {\n x(x) {\n return x;\n },\n setWidth(w) {},\n textAlign(align) {\n return align;\n },\n xPlus(x, value) {\n return x + value;\n },\n leftForLtr(x, _itemWidth) {\n return x;\n }\n };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n let style, original;\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [style.getPropertyValue('direction'), style.getPropertyPriority('direction')];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle\n };\n }\n return {\n between: _isBetween,\n compare: (a, b) => a - b,\n normalize: x => x\n };\n}\nfunction normalizeSegment(_ref) {\n let start = _ref.start,\n end = _ref.end,\n count = _ref.count,\n loop = _ref.loop,\n style = _ref.style;\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\nfunction getSegment(segment, points, bounds) {\n const property = bounds.property,\n startBound = bounds.start,\n endBound = bounds.end;\n const _propertyFn = propertyFn(property),\n between = _propertyFn.between,\n normalize = _propertyFn.normalize;\n const count = points.length;\n let start = segment.start,\n end = segment.end,\n loop = segment.loop;\n let i, ilen;\n if (loop) {\n start += count;\n end += count;\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n if (end < start) {\n end += count;\n }\n return {\n start,\n end,\n loop,\n style: segment.style\n };\n}\nfunction _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n const property = bounds.property,\n startBound = bounds.start,\n endBound = bounds.end;\n const count = points.length;\n const _propertyFn2 = propertyFn(property),\n compare = _propertyFn2.compare,\n between = _propertyFn2.between,\n normalize = _propertyFn2.normalize;\n const _getSegment = getSegment(segment, points, bounds),\n start = _getSegment.start,\n end = _getSegment.end,\n loop = _getSegment.loop,\n style = _getSegment.style;\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = () => inside || startIsBefore();\n const shouldStop = () => !inside || endIsBefore();\n for (let i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n if (point.skip) {\n continue;\n }\n value = normalize(point[property]);\n if (value === prevValue) {\n continue;\n }\n inside = between(value, startBound, endBound);\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({\n start: subStart,\n end: i,\n loop,\n count,\n style\n }));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n if (subStart !== null) {\n result.push(normalizeSegment({\n start: subStart,\n end,\n loop,\n count,\n style\n }));\n }\n return result;\n}\nfunction _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n for (let i = 0; i < segments.length; i++) {\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n if (loop && !spanGaps) {\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n while (start < count && points[start].skip) {\n start++;\n }\n start %= count;\n if (loop) {\n end += start;\n }\n while (end > start && points[end % count].skip) {\n end--;\n }\n end %= count;\n return {\n start,\n end\n };\n}\nfunction solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n for (end = start + 1; end <= max; ++end) {\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({\n start: start % count,\n end: (end - 1) % count,\n loop\n });\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n if (last !== null) {\n result.push({\n start: start % count,\n end: last % count,\n loop\n });\n }\n return result;\n}\nfunction _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n if (!count) {\n return [];\n }\n const loop = !!line._loop;\n const _findStartAndEnd = findStartAndEnd(points, count, loop, spanGaps),\n start = _findStartAndEnd.start,\n end = _findStartAndEnd.end;\n if (spanGaps === true) {\n return splitByStyles(line, [{\n start,\n end,\n loop\n }], points, segmentOptions);\n }\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\nfunction splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const datasetIndex = line._datasetIndex,\n spanGaps = line.options.spanGaps;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n s += count;\n while (points[s % count].skip) {\n s -= dir;\n }\n while (points[e % count].skip) {\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({\n start: s % count,\n end: e % count,\n loop: l,\n style: st\n });\n prevStyle = st;\n start = e % count;\n }\n }\n for (const segment of segments) {\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for (i = start + 1; i <= segment.end; i++) {\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n return result;\n}\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\nfunction styleChanged(style, prevStyle) {\n return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\n}\nexport { unclipArea as $, _rlookupByKey as A, _lookupByKey as B, _isPointInArea as C, getAngleFromPoint as D, toPadding as E, each as F, getMaximumSize as G, HALF_PI as H, _getParentNode as I, readUsedSize as J, supportsEventListenerOptions as K, throttled as L, _isDomSupported as M, _factorize as N, finiteOrDefault as O, PI as P, callback as Q, _addGrace as R, _limitValue as S, TAU as T, toDegrees as U, _measureText as V, _int16Range as W, _alignPixel as X, clipArea as Y, renderText as Z, _arrayUnique as _, resolve as a, fontString as a$, toFont as a0, _toLeftRightCenter as a1, _alignStartEnd as a2, overrides as a3, merge as a4, _capitalize as a5, descriptors as a6, isFunction as a7, _attachContext as a8, _createResolver as a9, overrideTextDirection as aA, _textX as aB, restoreTextDirection as aC, drawPointLegend as aD, distanceBetweenPoints as aE, noop as aF, _setMinAndMaxByKey as aG, niceNum as aH, almostWhole as aI, almostEquals as aJ, _decimalPlaces as aK, Ticks as aL, log10 as aM, _longestText as aN, _filterBetween as aO, _lookup as aP, isPatternOrGradient as aQ, getHoverColor as aR, clone as aS, _merger as aT, _mergerIf as aU, _deprecated as aV, _splitKey as aW, toFontString as aX, splineCurve as aY, splineCurveMonotone as aZ, getStyle as a_, _descriptors as aa, mergeIf as ab, uid as ac, debounce as ad, retinaScale as ae, clearCanvas as af, setsEqual as ag, _elementsEqual as ah, _isClickEvent as ai, _isBetween as aj, _readValueToProps as ak, _updateBezierControlPoints as al, _computeSegments as am, _boundSegments as an, _steppedInterpolation as ao, _bezierInterpolation as ap, _pointInLine as aq, _steppedLineTo as ar, _bezierCurveTo as as, drawPoint as at, addRoundedRectPath as au, toTRBL as av, toTRBLCorners as aw, _boundSegment as ax, _normalizeAngle as ay, getRtlAdapter as az, isArray as b, toLineHeight as b0, PITAU as b1, INFINITY as b2, RAD_PER_DEG as b3, QUARTER_PI as b4, TWO_THIRDS_PI as b5, _angleDiff as b6, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, defined as h, isObject as i, createContext as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, _getStartAndCountOfVisiblePoints as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _scaleRangesChanged as w, isNumber as x, _parseObjectDataRadialScale as y, getRelativePosition as z };","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n/*!\n * Chart.js v4.2.1\n * https://www.chartjs.org\n * (c) 2023 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, i as isObject, d as defaults, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as defined, s as sign, j as createContext, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as _getStartAndCountOfVisiblePoints, w as _scaleRangesChanged, x as isNumber, y as _parseObjectDataRadialScale, z as getRelativePosition, A as _rlookupByKey, B as _lookupByKey, C as _isPointInArea, D as getAngleFromPoint, E as toPadding, F as each, G as getMaximumSize, I as _getParentNode, J as readUsedSize, K as supportsEventListenerOptions, L as throttled, M as _isDomSupported, N as _factorize, O as finiteOrDefault, Q as callback, R as _addGrace, S as _limitValue, U as toDegrees, V as _measureText, W as _int16Range, X as _alignPixel, Y as clipArea, Z as renderText, $ as unclipArea, a0 as toFont, a1 as _toLeftRightCenter, a2 as _alignStartEnd, a3 as overrides, a4 as merge, a5 as _capitalize, a6 as descriptors, a7 as isFunction, a8 as _attachContext, a9 as _createResolver, aa as _descriptors, ab as mergeIf, ac as uid, ad as debounce, ae as retinaScale, af as clearCanvas, ag as setsEqual, ah as _elementsEqual, ai as _isClickEvent, aj as _isBetween, ak as _readValueToProps, al as _updateBezierControlPoints, am as _computeSegments, an as _boundSegments, ao as _steppedInterpolation, ap as _bezierInterpolation, aq as _pointInLine, ar as _steppedLineTo, as as _bezierCurveTo, at as drawPoint, au as addRoundedRectPath, av as toTRBL, aw as toTRBLCorners, ax as _boundSegment, ay as _normalizeAngle, az as getRtlAdapter, aA as overrideTextDirection, aB as _textX, aC as restoreTextDirection, aD as drawPointLegend, aE as distanceBetweenPoints, aF as noop, aG as _setMinAndMaxByKey, aH as niceNum, aI as almostWhole, aJ as almostEquals, aK as _decimalPlaces, aL as Ticks, aM as log10, aN as _longestText, aO as _filterBetween, aP as _lookup } from './chunks/helpers.segment.js';\nexport { aL as Ticks, d as defaults } from './chunks/helpers.segment.js';\nimport '@kurkle/color';\nclass Animator {\n constructor() {\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n callbacks.forEach(fn => fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n this._request = requestAnimFrame.call(window, () => {\n this._update();\n this._request = null;\n if (this._running) {\n this._refresh();\n }\n });\n }\n _update() {\n let date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Date.now();\n let remaining = 0;\n this._charts.forEach((anims, chart) => {\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n for (; i >= 0; --i) {\n item = items[i];\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n remaining += items.length;\n });\n this._lastDate = date;\n if (remaining === 0) {\n this._running = false;\n }\n }\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n for (; i >= 0; --i) {\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\nvar animator = /* #__PURE__ */new Animator();\nconst transparent = 'transparent';\nconst interpolators = {\n boolean(from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n color(from, to, factor) {\n const c0 = color(from || transparent);\n const c1 = c0.valid && color(to || transparent);\n return c1 && c1.valid ? c1.mix(c0, factor).hexString() : to;\n },\n number(from, to, factor) {\n return from + (to - from) * factor;\n }\n};\nclass Animation {\n constructor(cfg, target, prop, to) {\n const currentValue = target[prop];\n to = resolve([cfg.to, to, currentValue, cfg.from]);\n const from = resolve([cfg.from, currentValue, to]);\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n active() {\n return this._active;\n }\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n this._from = resolve([cfg.from, currentValue, to]);\n }\n }\n cancel() {\n if (this._active) {\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n this._active = from !== to && (loop || elapsed < duration);\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n factor = elapsed / duration % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n this._target[prop] = this._fn(from, to, factor);\n }\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej) => {\n promises.push({\n res,\n rej\n });\n });\n }\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for (let i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\n}\nclass Animations {\n constructor(chart, config) {\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n const animationOptions = Object.keys(defaults.animation);\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach(key => {\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions) {\n resolved[option] = cfg[option];\n }\n (isArray(cfg.properties) && cfg.properties || [key]).forEach(prop => {\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(() => {\n target.options = newOptions;\n }, () => {});\n }\n return animations;\n }\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n for (i = props.length - 1; i >= 0; --i) {\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n const animations = this._createAnimations(target, values);\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for (let i = 0; i < keys.length; i++) {\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {\n $shared: false,\n $animations: {}\n });\n }\n return options;\n}\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\nfunction toClip(value) {\n let t, r, b, l;\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n return keys;\n}\nfunction applyStack(stack, value, dsIndex) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n if (value === null) {\n return;\n }\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isNumberFinite(otherValue) && (singleMode || value === 0 || sign(value) === sign(otherValue))) {\n value += otherValue;\n }\n }\n return value;\n}\nfunction convertObjectDataToArray(data) {\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n x: key,\n y: data[key]\n };\n }\n return adata;\n}\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || stacked === undefined && meta.stack !== undefined;\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n const _scale$getUserBounds = scale.getUserBounds(),\n min = _scale$getUserBounds.min,\n max = _scale$getUserBounds.max,\n minDefined = _scale$getUserBounds.minDefined,\n maxDefined = _scale$getUserBounds.maxDefined;\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n const value = stack[meta.index];\n if (positive && value > 0 || !positive && value < 0) {\n return meta.index;\n }\n }\n return null;\n}\nfunction updateStacks(controller, parsed) {\n const chart = controller.chart,\n meta = controller._cachedMeta;\n const stacks = chart._stacks || (chart._stacks = {});\n const iScale = meta.iScale,\n vScale = meta.vScale,\n datasetIndex = meta.index;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n for (let i = 0; i < ilen; ++i) {\n const item = parsed[i];\n const index = item[iAxis],\n value = item[vAxis];\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n const visualValues = stack._visualValues || (stack._visualValues = {});\n visualValues[datasetIndex] = value;\n }\n}\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n return createContext(parent, {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n });\n}\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\nfunction clearStacks(meta, items) {\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n items = items || meta._parsed;\n for (const parsed of items) {\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n if (stacks[axis]._visualValues !== undefined && stacks[axis]._visualValues[datasetIndex] !== undefined) {\n delete stacks[axis]._visualValues[datasetIndex];\n }\n }\n}\nconst isDirectUpdateMode = mode => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked && {\n keys: getSortedDatasetIndices(chart, true),\n values: null\n};\nclass DatasetController {\n constructor(chart, datasetIndex) {\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.supportsDecimation = false;\n this.$context = undefined;\n this._syncList = [];\n this.datasetElementType = new.target.datasetElementType;\n this.dataElementType = new.target.dataElementType;\n this.initialize();\n }\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n if (this.options.fill && !this.chart.isPluginEnabled('filler')) {\n console.warn(\"Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options\");\n }\n }\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale ? meta.vScale : meta.iScale;\n }\n reset() {\n this._update('reset');\n }\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n if (isObject(data)) {\n this._data = convertObjectDataToArray(data);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n addElements() {\n const meta = this._cachedMeta;\n this._dataCheck();\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n this._dataCheck();\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n this._resyncElements(resetNewElements);\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\n }\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n parse(start, count) {\n const meta = this._cachedMeta,\n data = this._data;\n const iScale = meta.iScale,\n _stacked = meta._stacked;\n const iAxis = iScale.axis;\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n const isNotInOrderComparedToPrev = () => cur[iAxis] === null || prev && cur[iAxis] < prev[iAxis];\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n parsePrimitiveData(meta, data, start, count) {\n const iScale = meta.iScale,\n vScale = meta.vScale;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const xScale = meta.xScale,\n yScale = meta.yScale;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const xScale = meta.xScale,\n yScale = meta.yScale;\n const _this$_parsing = this._parsing,\n _this$_parsing$xAxisK = _this$_parsing.xAxisKey,\n xAxisKey = _this$_parsing$xAxisK === void 0 ? 'x' : _this$_parsing$xAxisK,\n _this$_parsing$yAxisK = _this$_parsing.yAxisKey,\n yAxisKey = _this$_parsing$yAxisK === void 0 ? 'y' : _this$_parsing$yAxisK;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]._visualValues\n };\n return applyStack(stack, value, meta.index, {\n mode\n });\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {\n min: Number.POSITIVE_INFINITY,\n max: Number.NEGATIVE_INFINITY\n };\n const _getUserBounds = getUserBounds(otherScale),\n otherMin = _getUserBounds.min,\n otherMax = _getUserBounds.max;\n let i, parsed;\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n for (i = 0; i < ilen; ++i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n break;\n }\n }\n if (sorted) {\n for (i = ilen - 1; i >= 0; --i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n value = parsed[i][scale.axis];\n if (isNumberFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n getMaxOverflow() {\n return false;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n update(mode) {}\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || elements.length - start;\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n for (i = start; i < start + count; ++i) {\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n for (i = 0; i < active.length; ++i) {\n active[i].draw(ctx, area);\n }\n }\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset ? this.resolveDatasetElementOptions(mode) : this.resolveDataElementOptions(index || 0, mode);\n }\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context || (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context || (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n _resolveElementOptions(elementType) {\n let mode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'default';\n let index = arguments.length > 2 ? arguments[2] : undefined;\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n const context = () => this.getContext(index, active, mode);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n return values;\n }\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n _getSharedOptions(start, mode) {\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const previouslySharedOptions = this._sharedOptions;\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions) || sharedOptions !== previouslySharedOptions;\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n return {\n sharedOptions,\n includeOptions\n };\n }\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n options: !active && this.getSharedOptions(options) || options\n });\n }\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n for (const _ref of this._syncList) {\n var _ref2 = _slicedToArray(_ref, 3);\n const method = _ref2[0];\n const arg1 = _ref2[1];\n const arg2 = _ref2[2];\n this[method](arg1, arg2);\n }\n this._syncList = [];\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n if (count) {\n this.parse(0, count);\n }\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n _insertElements(start, count) {\n let resetNewElements = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n const move = arr => {\n arr.length += count;\n for (i = arr.length - 1; i >= end; i--) {\n arr[i] = arr[i - count];\n }\n };\n move(data);\n for (i = start; i < end; ++i) {\n data[i] = new this.dataElementType();\n }\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n updateElements(element, start, count, mode) {}\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const _args2 = _slicedToArray(args, 3),\n method = _args2[0],\n arg1 = _args2[1],\n arg2 = _args2[2];\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([this.index, ...args]);\n }\n _onDataPush() {\n const count = arguments.length;\n this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n }\n _onDataPop() {\n this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n _onDataShift() {\n this._sync(['_removeElements', 0, 1]);\n }\n _onDataSplice(start, count) {\n if (count) {\n this._sync(['_removeElements', start, count]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync(['_insertElements', start, newCount]);\n }\n }\n _onDataUnshift() {\n this._sync(['_insertElements', 0, arguments.length]);\n }\n}\nDatasetController.defaults = {};\nDatasetController.datasetElementType = null;\nDatasetController.dataElementType = null;\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n }\n return scale._cache.$bar;\n}\nfunction computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = () => {\n if (curr === 32767 || curr === -32768) {\n return;\n }\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n prev = undefined;\n for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n return min;\n}\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n size = thickness * stackCount;\n ratio = 1;\n }\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - size / 2\n };\n}\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n if (next === null) {\n next = curr + curr - prev;\n }\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n item[vScale.axis] = barEnd;\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {\n start,\n end,\n reverse,\n top,\n bottom\n };\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n if (edge === true) {\n properties.borderSkipped = {\n top: true,\n right: true,\n bottom: true,\n left: true\n };\n return;\n }\n const _borderProps = borderProps(properties),\n start = _borderProps.start,\n end = _borderProps.end,\n reverse = _borderProps.reverse,\n top = _borderProps.top,\n bottom = _borderProps.bottom;\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, _ref3, ratio) {\n let inflateAmount = _ref3.inflateAmount;\n properties.inflateAmount = inflateAmount === 'auto' ? ratio === 1 ? 0.33 : 0 : inflateAmount;\n}\nclass BarController extends DatasetController {\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseObjectData(meta, data, start, count) {\n const iScale = meta.iScale,\n vScale = meta.vScale;\n const _this$_parsing2 = this._parsing,\n _this$_parsing2$xAxis = _this$_parsing2.xAxisKey,\n xAxisKey = _this$_parsing2$xAxis === void 0 ? 'x' : _this$_parsing2$xAxis,\n _this$_parsing2$yAxis = _this$_parsing2.yAxisKey,\n yAxisKey = _this$_parsing2$yAxis === void 0 ? 'y' : _this$_parsing2$yAxis;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n getMaxOverflow() {\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale,\n vScale = meta.vScale;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom) ? '[' + custom.start + ', ' + custom.end + ']' : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const index = this.index,\n vScale = this._cachedMeta.vScale;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const _this$_getSharedOptio = this._getSharedOptions(start, mode),\n sharedOptions = _this$_getSharedOptio.sharedOptions,\n includeOptions = _this$_getSharedOptio.includeOptions;\n for (let i = start; i < start + count; i++) {\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {\n base,\n head: base\n } : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || index === stack._top || index === stack._bottom,\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n _getStacks(last, dataIndex) {\n const iScale = this._cachedMeta.iScale;\n const metasets = iScale.getMatchingVisibleMetas(this._type).filter(meta => meta.controller.options.grouped);\n const stacked = iScale.options.stacked;\n const stacks = [];\n const skipNull = meta => {\n const parsed = meta.controller.getParsed(dataIndex);\n const val = parsed && parsed[meta.vScale.axis];\n if (isNullOrUndef(val) || isNaN(val)) {\n return true;\n }\n };\n for (const meta of metasets) {\n if (dataIndex !== undefined && skipNull(meta)) {\n continue;\n }\n if (stacked === false || stacks.indexOf(meta.stack) === -1 || stacked === undefined && meta.stack === undefined) {\n stacks.push(meta.stack);\n }\n if (meta.index === last) {\n break;\n }\n }\n if (!stacks.length) {\n stacks.push(undefined);\n }\n return stacks;\n }\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = name !== undefined ? stacks.indexOf(name) : -1;\n return index === -1 ? stacks.length - 1 : index;\n }\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n _calculateBarValuePixels(index) {\n const _this$_cachedMeta = this._cachedMeta,\n vScale = _this$_cachedMeta.vScale,\n _stacked = _this$_cachedMeta._stacked,\n datasetIndex = _this$_cachedMeta.index,\n _this$options = this.options,\n baseValue = _this$options.base,\n minBarLength = _this$options.minBarLength;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n if (length !== value) {\n start = length - value;\n length = value;\n }\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n size = head - base;\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\n head = base + size;\n if (_stacked && !floating) {\n parsed._stacks[vScale.axis]._visualValues[datasetIndex] = vScale.getValueForPixel(head) - vScale.getValueForPixel(base);\n }\n }\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex' ? computeFlexCategoryTraits(index, ruler, options, stackCount) : computeFitCategoryTraits(index, ruler, options, stackCount);\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + range.chunk * stackIndex + range.chunk / 2;\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n for (; i < ilen; ++i) {\n if (this.getParsed(i)[vScale.axis] !== null) {\n rects[i].draw(this._ctx);\n }\n }\n }\n}\nBarController.id = 'bar';\nBarController.defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'base', 'width', 'height']\n }\n }\n};\nBarController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true\n }\n }\n};\nclass BubbleController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const xScale = meta.xScale,\n yScale = meta.yScale;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n update(mode) {\n const points = this._cachedMeta.data;\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const _this$_cachedMeta2 = this._cachedMeta,\n iScale = _this$_cachedMeta2.iScale,\n vScale = _this$_cachedMeta2.vScale;\n const _this$_getSharedOptio2 = this._getSharedOptions(start, mode),\n sharedOptions = _this$_getSharedOptio2.sharedOptions,\n includeOptions = _this$_getSharedOptio2.includeOptions;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n if (reset) {\n properties.options.radius = 0;\n }\n }\n this.updateElement(point, i, properties, mode);\n }\n }\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n if (values.$shared) {\n values = Object.assign({}, values, {\n $shared: false\n });\n }\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n}\nBubbleController.id = 'bubble';\nBubbleController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'borderWidth', 'radius']\n }\n }\n};\nBubbleController.overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n};\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {\n ratioX,\n ratioY,\n offsetX,\n offsetY\n };\n}\nclass DoughnutController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n linkScales() {}\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = i => +data[i];\n if (isObject(data[start])) {\n const _this$_parsing$key = this._parsing.key,\n key = _this$_parsing$key === void 0 ? 'value' : _this$_parsing$key;\n getter = i => +resolveObjectKey(data[i], key);\n }\n let i, ilen;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n meta._parsed[i] = getter(i);\n }\n }\n }\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n if (this.chart.isDatasetVisible(i) && this.chart.getDatasetMeta(i).type === this._type) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n return {\n rotation: min,\n circumference: max - min\n };\n }\n update(mode) {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n const _this$_getRotationExt = this._getRotationExtents(),\n circumference = _this$_getRotationExt.circumference,\n rotation = _this$_getRotationExt.rotation;\n const _getRatioAndOffset = getRatioAndOffset(rotation, circumference, cutout),\n ratioX = _getRatioAndOffset.ratioX,\n ratioY = _getRatioAndOffset.ratioY,\n offsetX = _getRatioAndOffset.offsetX,\n offsetY = _getRatioAndOffset.offsetY;\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n meta.total = this.calculateTotal();\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if (reset && opts.animation.animateRotate || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const _this$_getSharedOptio3 = this._getSharedOptions(start, mode),\n sharedOptions = _this$_getSharedOptio3.sharedOptions,\n includeOptions = _this$_getSharedOptio3.includeOptions;\n let startAngle = this._getRotation();\n let i;\n for (i = 0; i < start; ++i) {\n startAngle += this._circumference(i, reset);\n }\n for (i = start; i < start + count; ++i) {\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n this.updateElement(arc, i, properties, mode);\n }\n }\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n for (i = 0; i < metaData.length; i++) {\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n return total;\n }\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value\n };\n }\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n if (!arcs) {\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n if (!arcs) {\n return 0;\n }\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n getMaxOffset(arcs) {\n let max = 0;\n for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n for (let i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n }\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\nDoughnutController.id = 'doughnut';\nDoughnutController.defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n }\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r'\n};\nDoughnutController.descriptors = {\n _scriptable: name => name !== 'spacing',\n _indexable: name => name !== 'spacing'\n};\nDoughnutController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const _chart$legend$options2 = chart.legend.options.labels,\n pointStyle = _chart$legend$options2.pointStyle,\n color = _chart$legend$options2.color;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n }\n};\nclass LineController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\n super.initialize();\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset,\n _meta$data = meta.data,\n points = _meta$data === void 0 ? [] : _meta$data,\n _dataset = meta._dataset;\n const animationsDisabled = this.chart._animationsDisabled;\n let _getStartAndCountOfVi = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled),\n start = _getStartAndCountOfVi.start,\n count = _getStartAndCountOfVi.count;\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n this.updateElements(points, start, count, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const _this$_cachedMeta3 = this._cachedMeta,\n iScale = _this$_cachedMeta3.iScale,\n vScale = _this$_cachedMeta3.vScale,\n _stacked = _this$_cachedMeta3._stacked,\n _dataset = _this$_cachedMeta3._dataset;\n const _this$_getSharedOptio4 = this._getSharedOptions(start, mode),\n sharedOptions = _this$_getSharedOptio4.sharedOptions,\n includeOptions = _this$_getSharedOptio4.includeOptions;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const _this$options2 = this.options,\n spanGaps = _this$options2.spanGaps,\n segment = _this$options2.segment;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n const end = start + count;\n const pointsCount = points.length;\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = 0; i < pointsCount; ++i) {\n const point = points[i];\n const properties = directUpdate ? point : {};\n if (i < start || i >= end) {\n properties.skip = true;\n continue;\n }\n const parsed = this.getParsed(i);\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && Math.abs(parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\nLineController.id = 'line';\nLineController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false\n};\nLineController.overrides = {\n scales: {\n _index_: {\n type: 'category'\n },\n _value_: {\n type: 'linear'\n }\n }\n};\nclass PolarAreaController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {\n min: Number.POSITIVE_INFINITY,\n max: Number.NEGATIVE_INFINITY\n };\n meta.data.forEach((element, index) => {\n const parsed = this.getParsed(index).r;\n if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n return range;\n }\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? outerRadius / 100 * opts.cutoutPercentage : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n this.outerRadius = outerRadius - radiusLength * this.index;\n this.innerRadius = this.outerRadius - radiusLength;\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n const defaultAngle = 360 / this.countVisibleElements();\n for (i = 0; i < start; ++i) {\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for (i = start; i < start + count; i++) {\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n angle = endAngle;\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n this.updateElement(arc, i, properties, mode);\n }\n }\n countVisibleElements() {\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index) => {\n if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index) ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle) : 0;\n }\n}\nPolarAreaController.id = 'polarArea';\nPolarAreaController.defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n }\n },\n indexAxis: 'r',\n startAngle: 0\n};\nPolarAreaController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const _chart$legend$options3 = chart.legend.options.labels,\n pointStyle = _chart$legend$options3.pointStyle,\n color = _chart$legend$options3.color;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n },\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n};\nclass PieController extends DoughnutController {}\nPieController.id = 'pie';\nPieController.defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n};\nclass RadarController extends DatasetController {\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n this.updateElement(line, undefined, properties, mode);\n }\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n this.updateElement(point, i, properties, mode);\n }\n }\n}\nRadarController.id = 'radar';\nRadarController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n }\n};\nRadarController.overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear'\n }\n }\n};\nclass ScatterController extends DatasetController {\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const xScale = meta.xScale,\n yScale = meta.yScale;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + ')'\n };\n }\n update(mode) {\n const meta = this._cachedMeta;\n const _meta$data2 = meta.data,\n points = _meta$data2 === void 0 ? [] : _meta$data2;\n const animationsDisabled = this.chart._animationsDisabled;\n let _getStartAndCountOfVi2 = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled),\n start = _getStartAndCountOfVi2.start,\n count = _getStartAndCountOfVi2.count;\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n if (this.options.showLine) {\n const line = meta.dataset,\n _dataset = meta._dataset;\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n }\n this.updateElements(points, start, count, mode);\n }\n addElements() {\n const showLine = this.options.showLine;\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = this.chart.registry.getElement('line');\n }\n super.addElements();\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const _this$_cachedMeta4 = this._cachedMeta,\n iScale = _this$_cachedMeta4.iScale,\n vScale = _this$_cachedMeta4.vScale,\n _stacked = _this$_cachedMeta4._stacked,\n _dataset = _this$_cachedMeta4._dataset;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const _this$options3 = this.options,\n spanGaps = _this$options3.spanGaps,\n segment = _this$options3.segment;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && Math.abs(parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const data = meta.data || [];\n if (!this.options.showLine) {\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n}\nScatterController.id = 'scatter';\nScatterController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n showLine: false,\n fill: false\n};\nScatterController.overrides = {\n interaction: {\n mode: 'point'\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n};\nvar controllers = /*#__PURE__*/Object.freeze({\n __proto__: null,\n BarController: BarController,\n BubbleController: BubbleController,\n DoughnutController: DoughnutController,\n LineController: LineController,\n PolarAreaController: PolarAreaController,\n PieController: PieController,\n RadarController: RadarController,\n ScatterController: ScatterController\n});\n\n/**\n * @namespace Chart._adapters\n * @since 2.8.0\n * @private\n */\nfunction abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\n/**\n * Date adapter (current used by the time scale)\n * @namespace Chart._adapters._date\n * @memberof Chart._adapters\n * @private\n */\nclass DateAdapterBase {\n /**\n * Override default date adapter methods.\n * Accepts type parameter to define options type.\n * @example\n * Chart._adapters._date.override<{myAdapterOption: string}>({\n * init() {\n * console.log(this.options.myAdapterOption);\n * }\n * })\n */\n static override(members) {\n Object.assign(DateAdapterBase.prototype, members);\n }\n constructor(options) {\n this.options = options || {};\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n init() {}\n formats() {\n return abstract();\n }\n parse() {\n return abstract();\n }\n format() {\n return abstract();\n }\n add() {\n return abstract();\n }\n diff() {\n return abstract();\n }\n startOf() {\n return abstract();\n }\n endOf() {\n return abstract();\n }\n}\nvar adapters = {\n _date: DateAdapterBase\n};\nfunction binarySearch(metaset, axis, value, intersect) {\n const controller = metaset.controller,\n data = metaset.data,\n _sorted = metaset._sorted;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {\n lo: start.lo,\n hi: end.hi\n };\n }\n }\n }\n return {\n lo: 0,\n hi: data.length - 1\n };\n}\nfunction evaluateInteractionItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n const _metasets$i = metasets[i],\n index = _metasets$i.index,\n data = _metasets$i.data;\n const _binarySearch = binarySearch(metasets[i], axis, value, intersect),\n lo = _binarySearch.lo,\n hi = _binarySearch.hi;\n for (let j = lo; j <= hi; ++j) {\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\nfunction getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n return function (pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\nfunction getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n const items = [];\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n const evaluationFunc = function (element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n };\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const _element$getProps = element.getProps(['startAngle', 'endAngle'], useFinalPosition),\n startAngle = _element$getProps.startAngle,\n endAngle = _element$getProps.endAngle;\n const _getAngleFromPoint = getAngleFromPoint(element, {\n x: position.x,\n y: position.y\n }),\n angle = _getAngleFromPoint.angle;\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [{\n element,\n datasetIndex,\n index\n }];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n return axis === 'r' && !intersect ? getNearestRadialItems(chart, position, axis, useFinalPosition) : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => {\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\nvar Interaction = {\n evaluateInteractionItems,\n modes: {\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n const elements = [];\n if (!items.length) {\n return [];\n }\n chart.getSortedVisibleDatasetMetas().forEach(meta => {\n const index = items[0].index;\n const element = meta.data[index];\n if (element && !element.skip) {\n elements.push({\n element,\n datasetIndex: meta.index,\n index\n });\n }\n });\n return elements;\n },\n dataset(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n let items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for (let i = 0; i < data.length; ++i) {\n items.push({\n element: data[i],\n datasetIndex,\n index: i\n });\n }\n }\n return items;\n },\n point(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n x(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n y(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\nfunction filterByPosition(array, position) {\n return array.filter(v => v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b) => {\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ? v0.index - v1.index : v0.weight - v1.weight;\n });\n}\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n var _box = box;\n pos = _box.position;\n var _box$options = _box.options;\n stack = _box$options.stack;\n var _box$options$stackWei = _box$options.stackWeight;\n stackWeight = _box$options$stackWei === void 0 ? 1 : _box$options$stackWei;\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && pos + stack,\n stackWeight\n });\n }\n return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts) {\n const stack = wrap.stack,\n pos = wrap.pos,\n stackWeight = wrap.stackWeight;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {\n count: 0,\n placed: 0,\n weight: 0,\n size: 0\n });\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\nfunction setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const vBoxMaxWidth = params.vBoxMaxWidth,\n hBoxMaxHeight = params.hBoxMaxHeight;\n let i, ilen, layout;\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n const fullSize = layout.box.fullSize;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n const pos = layout.pos,\n box = layout.box;\n const maxPadding = chartArea.maxPadding;\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {\n size: 0,\n count: 1\n };\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n return layout.horizontal ? {\n same: widthChanged,\n other: heightChanged\n } : {\n same: heightChanged,\n other: widthChanged\n };\n}\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n const margin = {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n };\n positions.forEach(pos => {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal ? marginForPositions(['left', 'right']) : marginForPositions(['top', 'bottom']);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n box.update(layout.width || chartArea.w, layout.height || chartArea.h, getMargins(layout.horizontal, chartArea));\n const _updateDims = updateDims(chartArea, params, layout, stacks),\n same = _updateDims.same,\n other = _updateDims.other;\n refit |= same && refitBoxes.length;\n changed = changed || other;\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let x = chartArea.x,\n y = chartArea.y;\n for (const layout of boxes) {\n const box = layout.box;\n const stack = stacks[layout.stack] || {\n count: 1,\n placed: 0,\n weight: 1\n };\n const weight = layout.stackWeight / stack.weight || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height1 = chartArea.h * weight;\n const width1 = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width1, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width1, height1);\n }\n stack.start = x;\n stack.placed += height1;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n}\nvar layouts = {\n addBox(chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function () {\n return [{\n z: 0,\n draw(chartArea) {\n item.draw(chartArea);\n }\n }];\n };\n chart.boxes.push(item);\n },\n removeBox(chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n configure(chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n update(chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n each(chart.boxes, box => {\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) => wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w\n };\n each(boxes.chartArea, layout => {\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n });\n });\n }\n};\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n releaseContext(context) {\n return false;\n }\n addEventListener(chart, type, listener) {}\n removeEventListener(chart, type, listener) {}\n getDevicePixelRatio() {\n return 1;\n }\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n isAttached(canvas) {\n return true;\n }\n updateConfig(config) {}\n}\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\nconst EXPANDO_KEY = '$chartjs';\nconst EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\nconst isNullOrEmpty = value => value === null || value === '';\nfunction initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n style.display = style.display || 'block';\n style.boxSizing = style.boxSizing || 'border-box';\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {\n passive: true\n} : false;\nfunction addListener(node, type, listener) {\n node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const _getRelativePosition = getRelativePosition(event, chart),\n x = _getRelativePosition.x,\n y = _getRelativePosition.y;\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null\n };\n}\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList) {\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart) => {\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height) => {\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n const observer = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled(event => {\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart);\n addListener(canvas, type, proxy);\n return proxy;\n}\nclass DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n return null;\n }\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n const initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach(prop => {\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach(key => {\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n if (!proxy) {\n return;\n }\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n isAttached(canvas) {\n const container = _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\nclass Element {\n constructor() {\n this.active = false;\n }\n tooltipPosition(useFinalPosition) {\n const _this$getProps = this.getProps(['x', 'y'], useFinalPosition),\n x = _this$getProps.x,\n y = _this$getProps.y;\n return {\n x,\n y\n };\n }\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n getProps(props, final) {\n const anims = this.$animations;\n if (!final || !anims) {\n // let's not create an object, if not needed\n return this;\n }\n const ret = {};\n props.forEach(prop => {\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n });\n return ret;\n }\n}\nElement.defaults = {};\nElement.defaultRoutes = undefined;\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const determinedMaxTicks = determineMaxTicks(scale);\n const ticksLimit = Math.min(tickOpts.maxTicksLimit || determinedMaxTicks, determinedMaxTicks);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n const factors = _factorize(evenMajorSpacing);\n for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\nfunction getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n spacing = Math.ceil(spacing);\n for (i = 0; i < ticks.length; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n next = start;\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\n }\n for (i = Math.max(start, 0); i < end; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\nfunction getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n if (len < 2) {\n return false;\n }\n for (diff = arr[0], i = 1; i < len; ++i) {\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\nconst reverseAlign = align => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nconst getTicksLimit = (ticksLength, maxTicksLimit) => Math.min(maxTicksLimit || ticksLength, ticksLength);\nfunction sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6;\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\nfunction garbageCollect(caches, length) {\n each(caches, cache => {\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\nfunction getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n return lines * font.lineHeight + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\nfunction titleAlign(align, position, reverse) {\n let ret = _toLeftRightCenter(align);\n if (reverse && position !== 'right' || !reverse && position === 'right') {\n ret = reverseAlign(ret);\n }\n return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n const top = scale.top,\n left = scale.left,\n bottom = scale.bottom,\n right = scale.right,\n chart = scale.chart;\n const chartArea = chart.chartArea,\n scales = chart.scales;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID1 = Object.keys(position)[0];\n const value1 = position[positionAxisID1];\n titleX = scales[positionAxisID1].getPixelForValue(value1) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {\n titleX,\n titleY,\n maxWidth,\n rotation\n };\n}\nclass Scale extends Element {\n constructor(cfg) {\n super();\n this.id = cfg.id;\n this.type = cfg.type;\n this.options = undefined;\n this.ctx = cfg.ctx;\n this.chart = cfg.chart;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.paddingTop = undefined;\n this.paddingBottom = undefined;\n this.paddingLeft = undefined;\n this.paddingRight = undefined;\n this.axis = undefined;\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n this.ticks = [];\n this._gridLineItems = null;\n this._labelItems = null;\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n this._startPixel = undefined;\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n init(options) {\n this.options = options.setContext(this.getContext());\n this.axis = options.axis;\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n parse(raw, index) {\n return raw;\n }\n getUserBounds() {\n let _userMin = this._userMin,\n _userMax = this._userMax,\n _suggestedMin = this._suggestedMin,\n _suggestedMax = this._suggestedMax;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isNumberFinite(_userMin),\n maxDefined: isNumberFinite(_userMax)\n };\n }\n getMinMax(canStack) {\n let _this$getUserBounds = this.getUserBounds(),\n min = _this$getUserBounds.min,\n max = _this$getUserBounds.max,\n minDefined = _this$getUserBounds.minDefined,\n maxDefined = _this$getUserBounds.maxDefined;\n let range;\n if (minDefined && maxDefined) {\n return {\n min,\n max\n };\n }\n const metas = this.getMatchingVisibleMetas();\n for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n getTicks() {\n return this.ticks;\n }\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n getLabelItems() {\n let chartArea = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.chart.chartArea;\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n return items;\n }\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [this]);\n }\n update(maxWidth, maxHeight, margins) {\n const _this$options4 = this.options,\n beginAtZero = _this$options4.beginAtZero,\n grace = _this$options4.grace,\n tickOpts = _this$options4.ticks;\n const sampleSize = tickOpts.sampleSize;\n this.beforeUpdate();\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n this._maxLength = this.isHorizontal() ? this.width + margins.left + margins.right : this.height + margins.top + margins.bottom;\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n this.beforeBuildTicks();\n this.ticks = this.buildTicks() || [];\n this.afterBuildTicks();\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n this.configure();\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation();\n this.afterCalculateLabelRotation();\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n this.afterAutoSkip();\n }\n if (samplingEnabled) {\n this._convertTicksToLabels(this.ticks);\n }\n this.beforeFit();\n this.fit();\n this.afterFit();\n this.afterUpdate();\n }\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n afterUpdate() {\n callback(this.options.afterUpdate, [this]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [this]);\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = 0;\n this.bottom = this.height;\n }\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n callback(this.options.afterSetDimensions, [this]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [this]);\n }\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [this]);\n }\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [tick.value, i, ticks], this);\n }\n }\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [this]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [this]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = getTicksLimit(this.ticks.length, options.ticks.maxTicksLimit);\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid) - tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)), Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [this]);\n }\n afterAutoSkip() {}\n beforeFit() {\n callback(this.options.beforeFit, [this]);\n }\n fit() {\n const minSize = {\n width: 0,\n height: 0\n };\n const chart = this.chart,\n _this$options5 = this.options,\n tickOpts = _this$options5.ticks,\n titleOpts = _this$options5.title,\n gridOpts = _this$options5.grid;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n if (tickOpts.display && this.ticks.length) {\n const _this$_getLabelSizes = this._getLabelSizes(),\n first = _this$_getLabelSizes.first,\n last = _this$_getLabelSizes.last,\n widest = _this$_getLabelSizes.widest,\n highest = _this$_getLabelSizes.highest;\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n this._handleMargins();\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n _calculatePadding(first, last, sin, cos) {\n const _this$options6 = this.options,\n _this$options6$ticks = _this$options6.ticks,\n align = _this$options6$ticks.align,\n padding = _this$options6$ticks.padding,\n position = _this$options6.position;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else if (align !== 'inner') {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n afterFit() {\n callback(this.options.afterFit, [this]);\n }\n isHorizontal() {\n const _this$options7 = this.options,\n axis = _this$options7.axis,\n position = _this$options7.position;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n isFullSize() {\n return this.options.fullSize;\n }\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n this.generateTickLabels(ticks);\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n this.afterTickToLabelConversion();\n }\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length, this.options.ticks.maxTicksLimit);\n }\n return labelSizes;\n }\n _computeLabelSizes(ticks, length, maxTicksLimit) {\n const ctx = this.ctx,\n caches = this._longestTextCache;\n const widths = [];\n const heights = [];\n const increment = Math.floor(length / getTicksLimit(length, maxTicksLimit));\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n for (i = 0; i < length; i += increment) {\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {\n data: {},\n gc: []\n };\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n nestedLabel = label[j];\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n const valueAt = idx => ({\n width: widths[idx] || 0,\n height: heights[idx] || 0\n });\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights\n };\n }\n getLabelForValue(value) {\n return value;\n }\n getPixelForValue(value, index) {\n return NaN;\n }\n getValueForPixel(pixel) {}\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n getBaseValue() {\n const min = this.min,\n max = this.max;\n return min < 0 && max < 0 ? max : min > 0 && max > 0 ? min : 0;\n }\n getContext(index) {\n const ticks = this.ticks || [];\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context || (tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context || (this.$context = createScaleContext(this.chart.getContext(), this));\n }\n _tickSize() {\n const optionTicks = this.options.ticks;\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n return this.isHorizontal() ? h * cos > w * sin ? w / cos : h / sin : h * sin < w * cos ? h / cos : w / sin;\n }\n _isVisible() {\n const display = this.options.display;\n if (display !== 'auto') {\n return !!display;\n }\n return this.getMatchingVisibleMetas().length > 0;\n }\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const grid = options.grid,\n position = options.position,\n border = options.border;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = borderOpts.display ? borderOpts.width : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function (pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID1 = Object.keys(position)[0];\n const value1 = position[positionAxisID1];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID1].getPixelForValue(value1));\n }\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for (i = 0; i < ticksLength; i += step) {\n const context = this.getContext(i);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = optsAtIndexBorder.dash || [];\n const borderDashOffset = optsAtIndexBorder.dashOffset;\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n lineValue = getPixelForGridLine(this, i, offset);\n if (lineValue === undefined) {\n continue;\n }\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset\n });\n }\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n return items;\n }\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const position = options.position,\n optionTicks = options.ticks;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const align = optionTicks.align,\n crossAlign = optionTicks.crossAlign,\n padding = optionTicks.padding,\n mirror = optionTicks.mirror;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret1 = this._getYAxisLabelAlignment(tl);\n textAlign = ret1.textAlign;\n x = ret1.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = (chartArea.top + chartArea.bottom) / 2 + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = (chartArea.left + chartArea.right) / 2 - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID1 = Object.keys(position)[0];\n const value1 = position[positionAxisID1];\n x = this.chart.scales[positionAxisID1].getPixelForValue(value1);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n const labelSizes = this._getLabelSizes();\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n let tickTextAlign = textAlign;\n if (isHorizontal) {\n x = pixel;\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n if (rotation !== 0 && !optsAtIndex.showLabelBackdrop) {\n x += lineHeight / 2 * Math.sin(rotation);\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n let backdrop;\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n let top = textOffset - labelPadding.top;\n let left = 0 - labelPadding.left;\n switch (textBaseline) {\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n }\n switch (textAlign) {\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n }\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor\n };\n }\n items.push({\n label,\n font,\n textOffset,\n options: {\n rotation,\n color,\n strokeColor,\n strokeWidth,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [x, y],\n backdrop\n }\n });\n }\n return items;\n }\n _getXAxisLabelAlignment() {\n const _this$options8 = this.options,\n position = _this$options8.position,\n ticks = _this$options8.ticks;\n const rotation = -toRadians(this.labelRotation);\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n let align = 'center';\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n } else if (ticks.align === 'inner') {\n align = 'inner';\n }\n return align;\n }\n _getYAxisLabelAlignment(tl) {\n const _this$options9 = this.options,\n position = _this$options9.position,\n _this$options9$ticks = _this$options9.ticks,\n crossAlign = _this$options9$ticks.crossAlign,\n mirror = _this$options9$ticks.mirror,\n padding = _this$options9$ticks.padding;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let x;\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= widest / 2;\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= widest / 2;\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n return {\n textAlign,\n x\n };\n }\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n const chart = this.chart;\n const position = this.options.position;\n if (position === 'left' || position === 'right') {\n return {\n top: 0,\n left: this.left,\n bottom: chart.height,\n right: this.right\n };\n }\n if (position === 'top' || position === 'bottom') {\n return {\n top: this.top,\n left: 0,\n bottom: this.bottom,\n right: chart.width\n };\n }\n }\n drawBackground() {\n const ctx = this.ctx,\n backgroundColor = this.options.backgroundColor,\n left = this.left,\n top = this.top,\n width = this.width,\n height = this.height;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex(t => t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n const drawLine = (p1, p2, style) => {\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n if (grid.display) {\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n if (grid.drawOnChartArea) {\n drawLine({\n x: item.x1,\n y: item.y1\n }, {\n x: item.x2,\n y: item.y2\n }, item);\n }\n if (grid.drawTicks) {\n drawLine({\n x: item.tx1,\n y: item.ty1\n }, {\n x: item.tx2,\n y: item.ty2\n }, {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n });\n }\n }\n }\n }\n drawBorder() {\n const chart = this.chart,\n ctx = this.ctx,\n _this$options10 = this.options,\n border = _this$options10.border,\n grid = _this$options10.grid;\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = border.display ? borderOpts.width : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.width;\n ctx.strokeStyle = borderOpts.color;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n ctx.restore();\n }\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n if (!optionTicks.display) {\n return;\n }\n const ctx = this.ctx;\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n const items = this.getLabelItems(chartArea);\n for (const item of items) {\n const renderTextOptions = item.options;\n const tickFont = item.font;\n const label = item.label;\n const y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, renderTextOptions);\n }\n if (area) {\n unclipArea(ctx);\n }\n }\n drawTitle() {\n const ctx = this.ctx,\n _this$options11 = this.options,\n position = _this$options11.position,\n title = _this$options11.title,\n reverse = _this$options11.reverse;\n if (!title.display) {\n return;\n }\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n const _titleArgs = titleArgs(this, offset, position, align),\n titleX = _titleArgs.titleX,\n titleY = _titleArgs.titleY,\n maxWidth = _titleArgs.maxWidth,\n rotation = _titleArgs.rotation;\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [titleX, titleY]\n });\n }\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n const bz = valueOrDefault(opts.border && opts.border.z, 0);\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [{\n z: tz,\n draw: chartArea => {\n this.draw(chartArea);\n }\n }];\n }\n return [{\n z: gz,\n draw: chartArea => {\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n }, {\n z: bz,\n draw: () => {\n this.drawBorder();\n }\n }, {\n z: tz,\n draw: chartArea => {\n this.drawLabels(chartArea);\n }\n }];\n }\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\nclass TypedRegistry {\n constructor(type, scope, override) {\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n if (id in items) {\n return scope;\n }\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n return scope;\n }\n get(id) {\n return this.items[id];\n }\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n if (id in items) {\n delete items[id];\n }\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\nfunction registerDefaults(item, scope, parentScope) {\n const itemDefaults = merge(Object.create(null), [parentScope ? defaults.get(parentScope) : {}, defaults.get(scope), item.defaults]);\n defaults.set(scope, itemDefaults);\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach(property => {\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [scope].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\nclass Registry {\n constructor() {\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n this._typedRegistries = [this.controllers, this.scales, this.elements];\n }\n add() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n this._each('register', args);\n }\n remove() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n this._each('unregister', args);\n }\n addControllers() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n this._each('register', args, this.controllers);\n }\n addElements() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n this._each('register', args, this.elements);\n }\n addPlugins() {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n this._each('register', args, this.plugins);\n }\n addScales() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n this._each('register', args, this.scales);\n }\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n removeControllers() {\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n this._each('unregister', args, this.controllers);\n }\n removeElements() {\n for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {\n args[_key8] = arguments[_key8];\n }\n this._each('unregister', args, this.elements);\n }\n removePlugins() {\n for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {\n args[_key9] = arguments[_key9];\n }\n this._each('unregister', args, this.plugins);\n }\n removeScales() {\n for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {\n args[_key10] = arguments[_key10];\n }\n this._each('unregister', args, this.scales);\n }\n _each(method, args, typedRegistry) {\n [...args].forEach(arg => {\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || reg === this.plugins && arg.id) {\n this._exec(method, reg, arg);\n } else {\n each(arg, item => {\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n _getRegistryForType(type) {\n for (let i = 0; i < this._typedRegistries.length; i++) {\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n return this.plugins;\n }\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n}\nvar registry = /* #__PURE__ */new Registry();\nclass PluginService {\n constructor() {\n this._init = [];\n }\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors) {\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [chart, args, descriptor.options];\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n return true;\n }\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n const descriptors = this._cache = this._createDescriptors(chart);\n this._notifyStateChanges(chart);\n return descriptors;\n }\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\nfunction allPlugins(config) {\n const localIds = {};\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for (let i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n const local = config.plugins || [];\n for (let i1 = 0; i1 < local.length; i1++) {\n const plugin = local[i1];\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n return {\n plugins,\n localIds\n };\n}\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\nfunction createDescriptors(chart, _ref4, options, all) {\n let plugins = _ref4.plugins,\n localIds = _ref4.localIds;\n const result = [];\n const context = chart.getContext();\n for (const plugin of plugins) {\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, {\n plugin,\n local: localIds[id]\n }, opts, context)\n });\n }\n return result;\n}\nfunction pluginOpts(config, _ref5, opts, context) {\n let plugin = _ref5.plugin,\n local = _ref5.local;\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n if (local && plugin.defaults) {\n scopes.push(plugin.defaults);\n }\n return config.createResolver(scopes, context, [''], {\n scriptable: false,\n indexable: false,\n allKeys: true\n });\n}\nfunction getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\nfunction determineAxis(id, scaleOptions) {\n if (id === 'x' || id === 'y' || id === 'r') {\n return id;\n }\n id = scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.length > 1 && determineAxis(id[0].toLowerCase(), scaleOptions);\n if (id) {\n return id;\n }\n throw new Error(`Cannot determine type of '${name}' axis. Please provide 'axis' or 'position' option.`);\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {\n scales: {}\n };\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const scales = Object.create(null);\n Object.keys(configScales).forEach(id => {\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n scales[id] = mergeIf(Object.create(null), [{\n axis\n }, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n });\n config.data.datasets.forEach(dataset => {\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach(defaultID => {\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [{\n axis\n }, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n Object.keys(scales).forEach(key => {\n const scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n });\n return scales;\n}\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\nconst addIfFound = (set, obj, key) => {\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\nclass Config {\n constructor(config) {\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n get platform() {\n return this._config.platform;\n }\n get type() {\n return this._config.type;\n }\n set type(type) {\n this._config.type = type;\n }\n get data() {\n return this._config.data;\n }\n set data(data) {\n this._config.data = initData(data);\n }\n get options() {\n return this._config.options;\n }\n set options(options) {\n this._config.options = options;\n }\n get plugins() {\n return this._config.plugins;\n }\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType, () => [[`datasets.${datasetType}`, '']]);\n }\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`, () => [[`datasets.${datasetType}.transitions.${transition}`, `transitions.${transition}`], [`datasets.${datasetType}`, '']]);\n }\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`, () => [[`datasets.${datasetType}.elements.${elementType}`, `datasets.${datasetType}`, `elements.${elementType}`, '']]);\n }\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`, () => [[`plugins.${id}`, ...(plugin.additionalOptionScopes || [])]]);\n }\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n getOptionScopes(mainScope, keyLists, resetCache) {\n const options = this.options,\n type = this.type;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n const scopes = new Set();\n keyLists.forEach(keys => {\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach(key => addIfFound(scopes, mainScope, key));\n }\n keys.forEach(key => addIfFound(scopes, options, key));\n keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach(key => addIfFound(scopes, defaults, key));\n keys.forEach(key => addIfFound(scopes, descriptors, key));\n });\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n chartOptionScopes() {\n const options = this.options,\n type = this.type;\n return [options, overrides[type] || {}, defaults.datasets[type] || {}, {\n type\n }, defaults, descriptors];\n }\n resolveNamedOptions(scopes, names, context) {\n let prefixes = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [''];\n const result = {\n $shared: true\n };\n const _getResolver = getResolver(this._resolverCache, scopes, prefixes),\n resolver = _getResolver.resolver,\n subPrefixes = _getResolver.subPrefixes;\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n for (const prop of names) {\n result[prop] = options[prop];\n }\n return result;\n }\n createResolver(scopes, context) {\n let prefixes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [''];\n let descriptorDefaults = arguments.length > 3 ? arguments[3] : undefined;\n const _getResolver2 = getResolver(this._resolverCache, scopes, prefixes),\n resolver = _getResolver2.resolver;\n return isObject(context) ? _attachContext(resolver, context, undefined, descriptorDefaults) : resolver;\n }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\nconst hasFunction = value => isObject(value) && Object.getOwnPropertyNames(value).reduce((acc, key) => acc || isFunction(value[key]), false);\nfunction needContext(proxy, names) {\n const _descriptors2 = _descriptors(proxy),\n isScriptable = _descriptors2.isScriptable,\n isIndexable = _descriptors2.isIndexable;\n for (const prop of names) {\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if (scriptable && (isFunction(value) || hasFunction(value)) || indexable && isArray(value)) {\n return true;\n }\n }\n return false;\n}\nvar version = \"4.2.1\";\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x';\n}\nfunction compare2Level(l1, l2) {\n return function (a, b) {\n return a[l1] === b[l1] ? a[l2] - b[l2] : a[l1] - b[l1];\n };\n}\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [context], chart);\n}\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [context], chart);\n}\nfunction getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n item = item[0];\n }\n if (item && item.canvas) {\n item = item.canvas;\n }\n return item;\n}\nconst instances = {};\nconst getChart = key => {\n const canvas = getCanvas(key);\n return Object.values(instances).filter(c => c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys) {\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\nfunction getDatasetArea(meta) {\n const xScale = meta.xScale,\n yScale = meta.yScale;\n if (xScale && yScale) {\n return {\n left: xScale.left,\n right: xScale.right,\n top: yScale.top,\n bottom: yScale.bottom\n };\n }\n}\nclass Chart {\n static register() {\n registry.add(...arguments);\n invalidatePlugins();\n }\n static unregister() {\n registry.remove(...arguments);\n invalidatePlugins();\n }\n constructor(item, userConfig) {\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error('Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' + ' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.');\n }\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n instances[this.id] = this;\n if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n get aspectRatio() {\n const _this$options12 = this.options,\n aspectRatio = _this$options12.aspectRatio,\n maintainAspectRatio = _this$options12.maintainAspectRatio,\n width = this.width,\n height = this.height,\n _aspectRatio = this._aspectRatio;\n if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\n }\n return height ? width / height : null;\n }\n get data() {\n return this.config.data;\n }\n set data(data) {\n this.config.data = data;\n }\n get options() {\n return this._options;\n }\n set options(options) {\n this.config.options = options;\n }\n get registry() {\n return registry;\n }\n _initialize() {\n this.notifyPlugins('beforeInit');\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n this.bindEvents();\n this.notifyPlugins('afterInit');\n return this;\n }\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n stop() {\n animator.stop(this);\n return this;\n }\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {\n width,\n height\n };\n }\n }\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n this.notifyPlugins('resize', {\n size: newSize\n });\n callback(options.onResize, [this, newSize], this);\n if (this.attached) {\n if (this._doResize(mode)) {\n this.render();\n }\n }\n }\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n each(scalesOptions, (axisOptions, axisID) => {\n axisOptions.id = axisID;\n });\n }\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id) => {\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n if (scaleOpts) {\n items = items.concat(Object.keys(scaleOpts).map(id => {\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n }));\n }\n each(items, item => {\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n scale.init(scaleOptions, options);\n });\n each(updated, (hasUpdated, id) => {\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n each(scales, scale => {\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n metasets.sort((a, b) => a.index - b.index);\n if (numMeta > numData) {\n for (let i = numData; i < numMeta; ++i) {\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n _removeUnreferencedMetasets() {\n const metasets = this._metasets,\n datasets = this.data.datasets;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index) => {\n if (datasets.filter(x => x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n this._removeUnreferencedMetasets();\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const _defaults$datasets$ty = defaults.datasets[type],\n datasetElementType = _defaults$datasets$ty.datasetElementType,\n dataElementType = _defaults$datasets$ty.dataElementType;\n Object.assign(ControllerClass, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n this._updateMetasets();\n return newControllers;\n }\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex) => {\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n update(mode) {\n const config = this.config;\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n this._plugins.invalidate();\n if (this.notifyPlugins('beforeUpdate', {\n mode,\n cancelable: true\n }) === false) {\n return;\n }\n const newControllers = this.buildOrUpdateControllers();\n this.notifyPlugins('beforeElementsUpdate');\n let minPadding = 0;\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n const _this$getDatasetMeta = this.getDatasetMeta(i),\n controller = _this$getDatasetMeta.controller;\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n if (!animsDisabled) {\n each(newControllers, controller => {\n controller.reset();\n });\n }\n this._updateDatasets(mode);\n this.notifyPlugins('afterUpdate', {\n mode\n });\n this._layers.sort(compare2Level('z', '_idx'));\n const _active = this._active,\n _lastEvent = this._lastEvent;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n this.render();\n }\n _updateScales() {\n each(this.scales, scale => {\n layouts.removeBox(this, scale);\n });\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n this.unbindEvents();\n this.bindEvents();\n }\n }\n _updateHiddenIndices() {\n const _hiddenIndices = this._hiddenIndices;\n const changes = this._getUniformDataChanges() || [];\n for (const _ref6 of changes) {\n const method = _ref6.method;\n const start = _ref6.start;\n const count = _ref6.count;\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = idx => new Set(_dataChanges.filter(c => c[0] === idx).map((c, i) => i + ',' + c.splice(1).join(',')));\n const changeSet = makeSet(0);\n for (let i = 1; i < datasetCount; i++) {\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet).map(c => c.split(',')).map(a => ({\n method: a[1],\n start: +a[2],\n count: +a[3]\n }));\n }\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {\n cancelable: true\n }) === false) {\n return;\n }\n layouts.update(this, this.width, this.height, minPadding);\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n this._layers = [];\n each(this.boxes, box => {\n if (noArea && box.position === 'chartArea') {\n return;\n }\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n this._layers.forEach((item, index) => {\n item._idx = index;\n });\n this.notifyPlugins('afterLayout');\n }\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {\n mode,\n cancelable: true\n }) === false) {\n return;\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this.getDatasetMeta(i).controller.configure();\n }\n for (let i1 = 0, ilen1 = this.data.datasets.length; i1 < ilen1; ++i1) {\n this._updateDataset(i1, isFunction(mode) ? mode({\n datasetIndex: i1\n }) : mode);\n }\n this.notifyPlugins('afterDatasetsUpdate', {\n mode\n });\n }\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {\n meta,\n index,\n mode,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n meta.controller._update(mode);\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n render() {\n if (this.notifyPlugins('beforeRender', {\n cancelable: true\n }) === false) {\n return;\n }\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({\n chart: this\n });\n }\n }\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const _this$_resizeBeforeDr = this._resizeBeforeDraw,\n width = _this$_resizeBeforeDr.width,\n height = _this$_resizeBeforeDr.height;\n this._resize(width, height);\n this._resizeBeforeDraw = null;\n }\n this.clear();\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n if (this.notifyPlugins('beforeDraw', {\n cancelable: true\n }) === false) {\n return;\n }\n const layers = this._layers;\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(this.chartArea);\n }\n this._drawDatasets();\n for (; i < layers.length; ++i) {\n layers[i].draw(this.chartArea);\n }\n this.notifyPlugins('afterDraw');\n }\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n return result;\n }\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {\n cancelable: true\n }) === false) {\n return;\n }\n const metasets = this.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n this._drawDataset(metasets[i]);\n }\n this.notifyPlugins('afterDatasetsDraw');\n }\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = getDatasetArea(meta) || this.chartArea;\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n meta.controller.draw();\n if (useClip) {\n unclipArea(ctx);\n }\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\n }\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n return [];\n }\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n return meta;\n }\n getContext() {\n return this.$context || (this.$context = createContext(null, {\n chart: this,\n type: 'chart'\n }));\n }\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n const meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n anims.update(meta, {\n visible\n });\n this.update(ctx => ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._destroyDatasetMeta(i);\n }\n }\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const canvas = this.canvas,\n ctx = this.ctx;\n this._stop();\n this.config.clearCache();\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n delete instances[this.id];\n this.notifyPlugins('afterDestroy');\n }\n toBase64Image() {\n return this.canvas.toDataURL(...arguments);\n }\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const listener = (e, x, y) => {\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n each(this.options.events, type => _add(type, listener));\n }\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener) => {\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n const listener = (width, height) => {\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n let detached;\n const attached = () => {\n _remove('attach', attached);\n this.attached = true;\n this.resize();\n _add('resize', listener);\n _add('detach', detached);\n };\n detached = () => {\n this.attached = false;\n _remove('resize', listener);\n this._stop();\n this._resize(0, 0);\n _add('attach', attached);\n };\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n unbindEvents() {\n each(this._listeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n each(this._responsiveListeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(_ref7 => {\n let datasetIndex = _ref7.datasetIndex,\n index = _ref7.index;\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n if (changed) {\n this._active = active;\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n isPluginEnabled(pluginId) {\n return this._plugins._cache.filter(p => p.plugin.id === pluginId).length === 1;\n }\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n const eventFilter = plugin => (plugin.options.events || this.options.events).includes(e.native.type);\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n const changed = this._handleEvent(e, replay, args.inChartArea);\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n if (changed || args.changed) {\n this.render();\n }\n return this;\n }\n _handleEvent(e, replay, inChartArea) {\n const _this$_active = this._active,\n lastActive = _this$_active === void 0 ? [] : _this$_active,\n options = this.options;\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n if (inChartArea) {\n this._lastEvent = null;\n callback(options.onHover, [e, active, this], this);\n if (isClick) {\n callback(options.onClick, [e, active, this], this);\n }\n }\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n this._lastEvent = lastEvent;\n return changed;\n }\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\nChart.defaults = defaults;\nChart.instances = instances;\nChart.overrides = overrides;\nChart.registry = registry;\nChart.version = version;\nChart.getChart = getChart;\nfunction invalidatePlugins() {\n return each(Chart.instances, chart => chart._plugins.invalidate());\n}\nfunction clipArc(ctx, element, endAngle) {\n const startAngle = element.startAngle,\n pixelMargin = element.pixelMargin,\n x = element.x,\n y = element.y,\n outerRadius = element.outerRadius,\n innerRadius = element.innerRadius;\n let angleMargin = pixelMargin / outerRadius;\n // Draw an inner border by clipping the arc and drawing a double-width border\n // Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\n/**\n * Parse border radius from the provided options\n */\nfunction parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n // Outer limits are complicated. We want to compute the available angular distance at\n // a radius of outerRadius - borderRadius because for small angular distances, this term limits.\n // We compute at r = outerRadius - borderRadius because this circle defines the center of the border corners.\n //\n // If the borderRadius is large, that value can become negative.\n // This causes the outer borders to lose their radius entirely, which is rather unexpected. To solve that, if borderRadius > outerRadius\n // we know that the thickness term will dominate and compute the limits at that point\n const computeOuterLimit = val => {\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit)\n };\n}\n/**\n * Convert (r, 𝜃) to (x, y)\n */\nfunction rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta)\n };\n}\n/**\n * Path the arc, respecting border radius by separating into left and right halves.\n *\n * Start End\n *\n * 1--->a--->2 Outer\n * / \\\n * 8 3\n * | |\n * | |\n * 7 4\n * \\ /\n * 6<---b<---5 Inner\n */\nfunction pathArc(ctx, element, offset, spacing, end, circular) {\n const x = element.x,\n y = element.y,\n start = element.startAngle,\n pixelMargin = element.pixelMargin,\n innerR = element.innerRadius;\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n let spacingOffset = 0;\n const alpha = end - start;\n if (spacing) {\n // When spacing is present, it is the same for all items\n // So we adjust the start and end angle of the arc such that\n // the distance is the same as it would be without the spacing\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? alpha * avNogSpacingRadius / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const _parseBorderRadius$ = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle),\n outerStart = _parseBorderRadius$.outerStart,\n outerEnd = _parseBorderRadius$.outerEnd,\n innerStart = _parseBorderRadius$.innerStart,\n innerEnd = _parseBorderRadius$.innerEnd;\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n ctx.beginPath();\n if (circular) {\n // The first arc segments from point 1 to point a to point 2\n const outerMidAdjustedAngle = (outerStartAdjustedAngle + outerEndAdjustedAngle) / 2;\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerMidAdjustedAngle);\n ctx.arc(x, y, outerRadius, outerMidAdjustedAngle, outerEndAdjustedAngle);\n // The corner segment from point 2 to point 3\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n // The line from point 3 to point 4\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n // The corner segment from point 4 to point 5\n if (innerEnd > 0) {\n const pCenter1 = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter1.x, pCenter1.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n // The inner arc from point 5 to point b to point 6\n const innerMidAdjustedAngle = (endAngle - innerEnd / innerRadius + (startAngle + innerStart / innerRadius)) / 2;\n ctx.arc(x, y, innerRadius, endAngle - innerEnd / innerRadius, innerMidAdjustedAngle, true);\n ctx.arc(x, y, innerRadius, innerMidAdjustedAngle, startAngle + innerStart / innerRadius, true);\n // The corner segment from point 6 to point 7\n if (innerStart > 0) {\n const pCenter2 = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter2.x, pCenter2.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n // The line from point 7 to point 8\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n // The corner segment from point 8 to point 1\n if (outerStart > 0) {\n const pCenter3 = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter3.x, pCenter3.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n } else {\n ctx.moveTo(x, y);\n const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerStartX, outerStartY);\n const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerEndX, outerEndY);\n }\n ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing, circular) {\n const fullCircles = element.fullCircles,\n startAngle = element.startAngle,\n circumference = element.circumference;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.fill();\n return endAngle;\n}\nfunction drawBorder(ctx, element, offset, spacing, circular) {\n const fullCircles = element.fullCircles,\n startAngle = element.startAngle,\n circumference = element.circumference,\n options = element.options;\n const borderWidth = options.borderWidth,\n borderJoinStyle = options.borderJoinStyle;\n const inner = options.borderAlign === 'inner';\n if (!borderWidth) {\n return;\n }\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n if (!fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.stroke();\n }\n}\nclass ArcElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(chartX, chartY, useFinalPosition) {\n const point = this.getProps(['x', 'y'], useFinalPosition);\n const _getAngleFromPoint2 = getAngleFromPoint(point, {\n x: chartX,\n y: chartY\n }),\n angle = _getAngleFromPoint2.angle,\n distance = _getAngleFromPoint2.distance;\n const _this$getProps2 = this.getProps(['startAngle', 'endAngle', 'innerRadius', 'outerRadius', 'circumference'], useFinalPosition),\n startAngle = _this$getProps2.startAngle,\n endAngle = _this$getProps2.endAngle,\n innerRadius = _this$getProps2.innerRadius,\n outerRadius = _this$getProps2.outerRadius,\n circumference = _this$getProps2.circumference;\n const rAdjust = this.options.spacing / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n return betweenAngles && withinRadius;\n }\n getCenterPoint(useFinalPosition) {\n const _this$getProps3 = this.getProps(['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius'], useFinalPosition),\n x = _this$getProps3.x,\n y = _this$getProps3.y,\n startAngle = _this$getProps3.startAngle,\n endAngle = _this$getProps3.endAngle,\n innerRadius = _this$getProps3.innerRadius,\n outerRadius = _this$getProps3.outerRadius;\n const _this$options13 = this.options,\n offset = _this$options13.offset,\n spacing = _this$options13.spacing;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n draw(ctx) {\n const options = this.options,\n circumference = this.circumference;\n const offset = (options.offset || 0) / 4;\n const spacing = (options.spacing || 0) / 2;\n const circular = options.circular;\n this.pixelMargin = options.borderAlign === 'inner' ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n ctx.save();\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * offset, Math.sin(halfAngle) * offset);\n const fix = 1 - Math.sin(Math.min(PI, circumference || 0));\n const radiusOffset = offset * fix;\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n drawArc(ctx, this, radiusOffset, spacing, circular);\n drawBorder(ctx, this, radiusOffset, spacing, circular);\n ctx.restore();\n }\n}\nArcElement.id = 'arc';\nArcElement.defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n circular: true\n};\nArcElement.defaultRoutes = {\n backgroundColor: 'backgroundColor'\n};\nfunction setStyle(ctx, options) {\n let style = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : options;\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n return lineTo;\n}\nfunction pathVars(points, segment) {\n let params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const count = points.length;\n const _params$start = params.start,\n paramsStart = _params$start === void 0 ? 0 : _params$start,\n _params$end = params.end,\n paramsEnd = _params$end === void 0 ? count - 1 : _params$end;\n const segmentStart = segment.start,\n segmentEnd = segment.end;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\nfunction pathSegment(ctx, line, segment, params) {\n const points = line.points,\n options = line.options;\n const _pathVars = pathVars(points, segment, params),\n count = _pathVars.count,\n start = _pathVars.start,\n loop = _pathVars.loop,\n ilen = _pathVars.ilen;\n const lineMethod = getLineMethod(options);\n let _ref8 = params || {},\n _ref8$move = _ref8.move,\n move = _ref8$move === void 0 ? true : _ref8$move,\n reverse = _ref8.reverse;\n let i, point, prev;\n for (i = 0; i <= ilen; ++i) {\n point = points[(start + (reverse ? ilen - i : i)) % count];\n if (point.skip) {\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n prev = point;\n }\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n return !!loop;\n}\nfunction fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const _pathVars2 = pathVars(points, segment, params),\n count = _pathVars2.count,\n start = _pathVars2.start,\n ilen = _pathVars2.ilen;\n const _ref9 = params || {},\n _ref9$move = _ref9.move,\n move = _ref9$move === void 0 ? true : _ref9$move,\n reverse = _ref9.reverse;\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n const pointIndex = index => (start + (reverse ? ilen - index : index)) % count;\n const drawX = () => {\n if (minY !== maxY) {\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n ctx.lineTo(avgX, lastY);\n }\n };\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n for (i = 0; i <= ilen; ++i) {\n point = points[pointIndex(i)];\n if (point.skip) {\n continue;\n }\n const x = point.x;\n const y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n ctx.lineTo(x, y);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n lastY = y;\n }\n drawX();\n}\nfunction _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\nfunction _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n const segments = line.segments,\n options = line.options;\n const segmentMethod = _getSegmentMethod(line);\n for (const segment of segments) {\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {\n start,\n end: start + count - 1\n })) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\nclass LineElement extends Element {\n constructor(cfg) {\n super();\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n get points() {\n return this._points;\n }\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {\n property,\n start: value,\n end: value\n });\n if (!segments.length) {\n return;\n }\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for (i = 0, ilen = segments.length; i < ilen; ++i) {\n const _segments$i = segments[i],\n start = _segments$i.start,\n end = _segments$i.end;\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n start = start || 0;\n count = count || this.points.length - start;\n for (const segment of segments) {\n loop &= segmentMethod(ctx, this, segment, {\n start,\n end: start + count - 1\n });\n }\n return !!loop;\n }\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n if (points.length && options.borderWidth) {\n ctx.save();\n draw(ctx, this, start, count);\n ctx.restore();\n }\n if (this.animated) {\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\nLineElement.id = 'line';\nLineElement.defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0\n};\nLineElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\nLineElement.descriptors = {\n _scriptable: true,\n _indexable: name => name !== 'borderDash' && name !== 'fill'\n};\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n const _el$getProps = el.getProps([axis], useFinalPosition),\n value = _el$getProps[axis];\n return Math.abs(pos - value) < options.radius + options.hitRadius;\n}\nclass PointElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n const options = this.options;\n const _this$getProps4 = this.getProps(['x', 'y'], useFinalPosition),\n x = _this$getProps4.x,\n y = _this$getProps4.y;\n return Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2) < Math.pow(options.hitRadius + options.radius, 2);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const _this$getProps5 = this.getProps(['x', 'y'], useFinalPosition),\n x = _this$getProps5.x,\n y = _this$getProps5.y;\n return {\n x,\n y\n };\n }\n size(options) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n draw(ctx, area) {\n const options = this.options;\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n getRange() {\n const options = this.options || {};\n // @ts-expect-error Fallbacks should never be hit in practice\n return options.radius + options.hitRadius;\n }\n}\nPointElement.id = 'point';\n/**\n* @type {any}\n*/\nPointElement.defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n};\n/**\n* @type {any}\n*/\nPointElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\nfunction getBarBounds(bar, useFinalPosition) {\n const _bar$getProps = bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition),\n x = _bar$getProps.x,\n y = _bar$getProps.y,\n base = _bar$getProps.base,\n width = _bar$getProps.width,\n height = _bar$getProps.height;\n let left, right, top, bottom, half;\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n return {\n left,\n top,\n right,\n bottom\n };\n}\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n const _bar$getProps2 = bar.getProps(['enableBorderRadius']),\n enableBorderRadius = _bar$getProps2.enableBorderRadius;\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n const enableBorder = enableBorderRadius || isObject(value);\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r))\n }\n }\n };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n return bounds && (skipX || _isBetween(x, bounds.left, bounds.right)) && (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\nfunction addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount) {\n let refRect = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\nclass BarElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n draw(ctx) {\n const inflateAmount = this.inflateAmount,\n _this$options14 = this.options,\n borderColor = _this$options14.borderColor,\n backgroundColor = _this$options14.backgroundColor;\n const _boundingRects = boundingRects(this),\n inner = _boundingRects.inner,\n outer = _boundingRects.outer;\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const _this$getProps6 = this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition),\n x = _this$getProps6.x,\n y = _this$getProps6.y,\n base = _this$getProps6.base,\n horizontal = _this$getProps6.horizontal;\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\nBarElement.id = 'bar';\nBarElement.defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n};\nBarElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\nvar elements = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ArcElement: ArcElement,\n LineElement: LineElement,\n PointElement: PointElement,\n BarElement: BarElement\n});\nconst BORDER_COLORS = ['rgb(54, 162, 235)', 'rgb(255, 99, 132)', 'rgb(255, 159, 64)', 'rgb(255, 205, 86)', 'rgb(75, 192, 192)', 'rgb(153, 102, 255)', 'rgb(201, 203, 207)' // grey\n];\n// Border colors with 50% transparency\nconst BACKGROUND_COLORS = /* #__PURE__ */BORDER_COLORS.map(color => color.replace('rgb(', 'rgba(').replace(')', ', 0.5)'));\nfunction getBorderColor(i) {\n return BORDER_COLORS[i % BORDER_COLORS.length];\n}\nfunction getBackgroundColor(i) {\n return BACKGROUND_COLORS[i % BACKGROUND_COLORS.length];\n}\nfunction colorizeDefaultDataset(dataset, i) {\n dataset.borderColor = getBorderColor(i);\n dataset.backgroundColor = getBackgroundColor(i);\n return ++i;\n}\nfunction colorizeDoughnutDataset(dataset, i) {\n dataset.backgroundColor = dataset.data.map(() => getBorderColor(i++));\n return i;\n}\nfunction colorizePolarAreaDataset(dataset, i) {\n dataset.backgroundColor = dataset.data.map(() => getBackgroundColor(i++));\n return i;\n}\nfunction getColorizer(chart) {\n let i = 0;\n return (dataset, datasetIndex) => {\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n if (controller instanceof DoughnutController) {\n i = colorizeDoughnutDataset(dataset, i);\n } else if (controller instanceof PolarAreaController) {\n i = colorizePolarAreaDataset(dataset, i);\n } else if (controller) {\n i = colorizeDefaultDataset(dataset, i);\n }\n };\n}\nfunction containsColorsDefinitions(descriptors) {\n let k;\n for (k in descriptors) {\n if (descriptors[k].borderColor || descriptors[k].backgroundColor) {\n return true;\n }\n }\n return false;\n}\nfunction containsColorsDefinition(descriptor) {\n return descriptor && (descriptor.borderColor || descriptor.backgroundColor);\n}\nvar plugin_colors = {\n id: 'colors',\n defaults: {\n enabled: true,\n forceOverride: false\n },\n beforeLayout(chart, _args, options) {\n if (!options.enabled) {\n return;\n }\n const _chart$config = chart.config,\n datasets = _chart$config.data.datasets,\n chartOptions = _chart$config.options;\n const elements = chartOptions.elements;\n if (!options.forceOverride && (containsColorsDefinitions(datasets) || containsColorsDefinition(chartOptions) || elements && containsColorsDefinitions(elements))) {\n return;\n }\n const colorizer = getColorizer(chart);\n datasets.forEach(colorizer);\n }\n};\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n const samples = options.samples || availableWidth;\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n const decimated = [];\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n decimated[sampledIndex++] = data[a];\n for (i = 0; i < samples - 2; i++) {\n let avgX = 0;\n let avgY = 0;\n let j;\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n for (j = avgRangeStart; j < avgRangeEnd; j++) {\n avgX += data[j].x;\n avgY += data[j].y;\n }\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n const _data$a = data[a],\n pointAx = _data$a.x,\n pointAy = _data$a.y;\n maxArea = area = -1;\n for (j = rangeOffs; j < rangeTo; j++) {\n area = 0.5 * Math.abs((pointAx - avgX) * (data[j].y - pointAy) - (pointAx - data[j].x) * (avgY - pointAy));\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const dx = xMax - xMin;\n for (i = start; i < start + count; ++i) {\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n const lastIndex = i - 1;\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push(_objectSpread(_objectSpread({}, data[intermediateIndex1]), {}, {\n x: avgX\n }));\n }\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push(_objectSpread(_objectSpread({}, data[intermediateIndex2]), {}, {\n x: avgX\n }));\n }\n }\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n writable: true,\n value: data\n });\n }\n}\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach(dataset => {\n cleanDecimatedDataset(dataset);\n });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n let start = 0;\n let count;\n const iScale = meta.iScale;\n const _iScale$getUserBounds = iScale.getUserBounds(),\n min = _iScale$getUserBounds.min,\n max = _iScale$getUserBounds.max,\n minDefined = _iScale$getUserBounds.minDefined,\n maxDefined = _iScale$getUserBounds.maxDefined;\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n return {\n start,\n count\n };\n}\nvar plugin_decimation = {\n id: 'decimation',\n defaults: {\n algorithm: 'min-max',\n enabled: false\n },\n beforeElementsUpdate: (chart, args, options) => {\n if (!options.enabled) {\n cleanDecimatedData(chart);\n return;\n }\n const availableWidth = chart.width;\n chart.data.datasets.forEach((dataset, datasetIndex) => {\n const _data = dataset._data,\n indexAxis = dataset.indexAxis;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n return;\n }\n if (!meta.controller.supportsDecimation) {\n return;\n }\n const xAxis = chart.scales[meta.xAxisID];\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n if (chart.options.parsing) {\n return;\n }\n let _getStartAndCountOfVi3 = getStartAndCountOfVisiblePointsSimplified(meta, data),\n start = _getStartAndCountOfVi3.start,\n count = _getStartAndCountOfVi3.count;\n const threshold = options.threshold || 4 * availableWidth;\n if (count <= threshold) {\n cleanDecimatedDataset(dataset);\n return;\n }\n if (isNullOrUndef(_data)) {\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function () {\n return this._decimated;\n },\n set: function (d) {\n this._data = d;\n }\n });\n }\n let decimated;\n switch (options.algorithm) {\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n dataset._decimated = decimated;\n });\n },\n destroy(chart) {\n cleanDecimatedData(chart);\n }\n};\nfunction _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n for (const segment of segments) {\n let start = segment.start,\n end = segment.end;\n end = _findSegmentEnd(start, end, points);\n const bounds = _getBounds(property, points[start], points[end], segment.loop);\n if (!target.segments) {\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n const targetSegments = _boundSegments(target, bounds);\n for (const tgt of targetSegments) {\n const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n for (const fillSource of fillSources) {\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\nfunction _getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {\n property,\n start,\n end\n };\n}\nfunction _pointsFromSegments(boundary, line) {\n const _ref10 = boundary || {},\n _ref10$x = _ref10.x,\n x = _ref10$x === void 0 ? null : _ref10$x,\n _ref10$y = _ref10.y,\n y = _ref10$y === void 0 ? null : _ref10$y;\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(_ref11 => {\n let start = _ref11.start,\n end = _ref11.end;\n end = _findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({\n x: first.x,\n y\n });\n points.push({\n x: last.x,\n y\n });\n } else if (x !== null) {\n points.push({\n x,\n y: first.y\n });\n points.push({\n x,\n y: last.y\n });\n }\n });\n return points;\n}\nfunction _findSegmentEnd(start, end, points) {\n for (; end > start; end--) {\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\nfunction _createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = _pointsFromSegments(boundary, line);\n }\n return points.length ? new LineElement({\n points,\n options: {\n tension: 0\n },\n _loop,\n _fullLoop: _loop\n }) : null;\n}\nfunction _shouldApplyFill(source) {\n return source && source.fill !== false;\n}\nfunction _resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [index];\n let target;\n if (!propagate) {\n return fill;\n }\n while (fill !== false && visited.indexOf(fill) === -1) {\n if (!isNumberFinite(fill)) {\n return fill;\n }\n target = sources[fill];\n if (!target) {\n return false;\n }\n if (target.visible) {\n return fill;\n }\n visited.push(fill);\n fill = target.fill;\n }\n return false;\n}\nfunction _decodeFill(line, index, count) {\n const fill = parseFillOption(line);\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n let target = parseFloat(fill);\n if (isNumberFinite(target) && Math.floor(target) === target) {\n return decodeTargetIndex(fill[0], index, target, count);\n }\n return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\nfunction decodeTargetIndex(firstCh, index, target, count) {\n if (firstCh === '-' || firstCh === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n}\nfunction _getTargetPixel(fill, scale) {\n let pixel = null;\n if (fill === 'start') {\n pixel = scale.bottom;\n } else if (fill === 'end') {\n pixel = scale.top;\n } else if (isObject(fill)) {\n pixel = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n pixel = scale.getBasePixel();\n }\n return pixel;\n}\nfunction _getTargetValue(fill, scale, startValue) {\n let value;\n if (fill === 'start') {\n value = startValue;\n } else if (fill === 'end') {\n value = scale.options.reverse ? scale.min : scale.max;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n return value;\n}\nfunction parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n if (fill === false || fill === null) {\n return false;\n }\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\nfunction _buildStackLine(source) {\n const scale = source.scale,\n index = source.index,\n line = source.line;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(_createBoundaryLine({\n x: null,\n y: scale.bottom\n }, line));\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n for (let j = segment.start; j <= segment.end; j++) {\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({\n points,\n options: {}\n });\n}\nfunction getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n for (let i = 0; i < metas.length; i++) {\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for (let j = 0; j < linesBelow.length; j++) {\n const line = linesBelow[j];\n const _findPoint = findPoint(line, sourcePoint, 'x'),\n first = _findPoint.first,\n last = _findPoint.last,\n point = _findPoint.point;\n if (!point || first && last) {\n continue;\n }\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n break;\n }\n }\n }\n points.push(...postponed);\n}\nfunction findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {\n first,\n last,\n point\n };\n}\nclass simpleArc {\n constructor(opts) {\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n pathSegment(ctx, bounds, opts) {\n const x = this.x,\n y = this.y,\n radius = this.radius;\n bounds = bounds || {\n start: 0,\n end: TAU\n };\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n interpolate(point) {\n const x = this.x,\n y = this.y,\n radius = this.radius;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\nfunction _getTarget(source) {\n const chart = source.chart,\n fill = source.fill,\n line = source.line;\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n if (fill === 'stack') {\n return _buildStackLine(source);\n }\n if (fill === 'shape') {\n return true;\n }\n const boundary = computeBoundary(source);\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n return _createBoundaryLine(boundary, line);\n}\nfunction getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction computeLinearBoundary(source) {\n const _source$scale = source.scale,\n scale = _source$scale === void 0 ? {} : _source$scale,\n fill = source.fill;\n const pixel = _getTargetPixel(fill, scale);\n if (isNumberFinite(pixel)) {\n const horizontal = scale.isHorizontal();\n return {\n x: horizontal ? pixel : null,\n y: horizontal ? null : pixel\n };\n }\n return null;\n}\nfunction computeCircularBoundary(source) {\n const scale = source.scale,\n fill = source.fill;\n const options = scale.options;\n const length = scale.getLabels().length;\n const start = options.reverse ? scale.max : scale.min;\n const value = _getTargetValue(fill, scale, start);\n const target = [];\n if (options.grid.circular) {\n const center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n for (let i = 0; i < length; ++i) {\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\nfunction _drawfill(ctx, source, area) {\n const target = _getTarget(source);\n const line = source.line,\n scale = source.scale,\n axis = source.axis;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const _ref12 = fillOption || {},\n _ref12$above = _ref12.above,\n above = _ref12$above === void 0 ? color : _ref12$above,\n _ref12$below = _ref12.below,\n below = _ref12$below === void 0 ? color : _ref12$below;\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {\n line,\n target,\n above,\n below,\n area,\n scale,\n axis\n });\n unclipArea(ctx);\n }\n}\nfunction doFill(ctx, cfg) {\n const line = cfg.line,\n target = cfg.target,\n above = cfg.above,\n below = cfg.below,\n area = cfg.area,\n scale = cfg.scale;\n const property = line._loop ? 'angle' : cfg.axis;\n ctx.save();\n if (property === 'x' && below !== above) {\n clipVertical(ctx, target, area.top);\n fill(ctx, {\n line,\n target,\n color: above,\n scale,\n property\n });\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n }\n fill(ctx, {\n line,\n target,\n color: below,\n scale,\n property\n });\n ctx.restore();\n}\nfunction clipVertical(ctx, target, clipY) {\n const segments = target.segments,\n points = target.points;\n let first = true;\n let lineLoop = false;\n ctx.beginPath();\n for (const segment of segments) {\n const start = segment.start,\n end = segment.end;\n const firstPoint = points[start];\n const lastPoint = points[_findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {\n move: lineLoop\n });\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\nfunction fill(ctx, cfg) {\n const line = cfg.line,\n target = cfg.target,\n property = cfg.property,\n color = cfg.color,\n scale = cfg.scale;\n const segments = _segments(line, target, property);\n for (const _ref13 of segments) {\n const src = _ref13.source;\n const tgt = _ref13.target;\n const start = _ref13.start;\n const end = _ref13.end;\n const _src$style = src.style,\n _src$style2 = _src$style === void 0 ? {} : _src$style,\n _src$style2$backgroun = _src$style2.backgroundColor,\n backgroundColor = _src$style2$backgroun === void 0 ? color : _src$style2$backgroun;\n const notShape = target !== true;\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n ctx.beginPath();\n const lineLoop = !!line.pathSegment(ctx, src);\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n const targetLoop = !!target.pathSegment(ctx, tgt, {\n move: lineLoop,\n reverse: true\n });\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n ctx.restore();\n }\n}\nfunction clipBounds(ctx, scale, bounds) {\n const _scale$chart$chartAre = scale.chart.chartArea,\n top = _scale$chart$chartAre.top,\n bottom = _scale$chart$chartAre.bottom;\n const _ref14 = bounds || {},\n property = _ref14.property,\n start = _ref14.start,\n end = _ref14.end;\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\nvar index = {\n id: 'filler',\n afterDatasetsUpdate(chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n for (i = 0; i < count; ++i) {\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: _decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line\n };\n }\n meta.$filler = source;\n sources.push(source);\n }\n for (i = 0; i < count; ++i) {\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n source.fill = _resolveTarget(sources, i, options.propagate);\n }\n },\n beforeDraw(chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n source.line.updateControlPoints(area, source.axis);\n if (draw && source.fill) {\n _drawfill(chart.ctx, source, area);\n }\n }\n },\n beforeDatasetsDraw(chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n const metasets = chart.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (_shouldApplyFill(source)) {\n _drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n beforeDatasetDraw(chart, args, options) {\n const source = args.meta.$filler;\n if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n _drawfill(chart.ctx, source, chart.chartArea);\n },\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\nconst getBoxSize = (labelOpts, fontSize) => {\n let _labelOpts$boxHeight = labelOpts.boxHeight,\n boxHeight = _labelOpts$boxHeight === void 0 ? fontSize : _labelOpts$boxHeight,\n _labelOpts$boxWidth = labelOpts.boxWidth,\n boxWidth = _labelOpts$boxWidth === void 0 ? fontSize : _labelOpts$boxWidth;\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n }\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n constructor(config) {\n super();\n this._added = false;\n this.legendHitBoxes = [];\n this._hoveredItem = null;\n this.doughnutMode = false;\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = callback(labelOpts.generateLabels, [this.chart], this) || [];\n if (labelOpts.filter) {\n legendItems = legendItems.filter(item => labelOpts.filter(item, this.chart.data));\n }\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n }\n if (this.options.reverse) {\n legendItems.reverse();\n }\n this.legendItems = legendItems;\n }\n fit() {\n const options = this.options,\n ctx = this.ctx;\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const _getBoxSize = getBoxSize(labelOpts, fontSize),\n boxWidth = _getBoxSize.boxWidth,\n itemHeight = _getBoxSize.itemHeight;\n let width, height;\n ctx.font = labelFont.string;\n if (this.isHorizontal()) {\n width = this.maxWidth;\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight;\n width = this._fitCols(titleHeight, labelFont, boxWidth, itemHeight) + 10;\n }\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const ctx = this.ctx,\n maxWidth = this.maxWidth,\n padding = this.options.labels.padding;\n const hitboxes = this.legendHitBoxes = [];\n const lineWidths = this.lineWidths = [0];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + fontSize / 2 + ctx.measureText(legendItem.text).width;\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n hitboxes[i] = {\n left: 0,\n top,\n row,\n width: itemWidth,\n height: itemHeight\n };\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n _fitCols(titleHeight, labelFont, boxWidth, _itemHeight) {\n const ctx = this.ctx,\n maxHeight = this.maxHeight,\n padding = this.options.labels.padding;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let left = 0;\n let col = 0;\n this.legendItems.forEach((legendItem, i) => {\n const _calculateItemSize = calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight),\n itemWidth = _calculateItemSize.itemWidth,\n itemHeight = _calculateItemSize.itemHeight;\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({\n width: currentColWidth,\n height: currentColHeight\n });\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n hitboxes[i] = {\n left,\n top: currentColHeight,\n col,\n width: itemWidth,\n height: itemHeight\n };\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({\n width: currentColWidth,\n height: currentColHeight\n });\n return totalWidth;\n }\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const hitboxes = this.legendHitBoxes,\n _this$options15 = this.options,\n align = _this$options15.align,\n padding = _this$options15.labels.padding,\n rtl = _this$options15.rtl;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes) {\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox1 of hitboxes) {\n if (hitbox1.col !== col) {\n col = hitbox1.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox1.top = top;\n hitbox1.left += this.left + padding;\n hitbox1.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox1.left), hitbox1.width);\n top += hitbox1.height + padding;\n }\n }\n }\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n this._draw();\n unclipArea(ctx);\n }\n }\n _draw() {\n const opts = this.options,\n columnSizes = this.columnSizes,\n lineWidths = this.lineWidths,\n ctx = this.ctx;\n const align = opts.align,\n labelOpts = opts.labels;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const padding = labelOpts.padding;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n this.drawTitle();\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n const _getBoxSize2 = getBoxSize(labelOpts, fontSize),\n boxWidth = _getBoxSize2.boxWidth,\n boxHeight = _getBoxSize2.boxHeight,\n itemHeight = _getBoxSize2.itemHeight;\n const drawLegendBox = function (x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n ctx.save();\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n if (labelOpts.usePointStyle) {\n const drawOptions = {\n radius: boxHeight * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n } else {\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n ctx.beginPath();\n if (Object.values(borderRadius).some(v => v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n ctx.restore();\n };\n const fillText = function (x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + itemHeight / 2, labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n overrideTextDirection(this.ctx, opts.textDirection);\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i) => {\n ctx.strokeStyle = legendItem.fontColor;\n ctx.fillStyle = legendItem.fontColor;\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n rtlHelper.setWidth(this.width);\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n const realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n fillText(rtlHelper.x(x), y, legendItem);\n if (isHorizontal) {\n cursor.x += width + padding;\n } else if (typeof legendItem.text !== 'string') {\n const fontLineHeight = labelFont.lineHeight;\n cursor.y += calculateLegendItemHeight(legendItem, fontLineHeight);\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n if (!titleOpts.display) {\n return;\n }\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n let left = this.left;\n let maxWidth = this.width;\n if (this.isHorizontal()) {\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n const x = _alignStartEnd(position, left, left + maxWidth);\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n if (_isBetween(x, this.left, this.right) && _isBetween(y, this.top, this.bottom)) {\n lh = this.legendHitBoxes;\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width) && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n return this.legendItems[i];\n }\n }\n }\n return null;\n }\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n callback(opts.onLeave, [e, previous, this], this);\n }\n this._hoveredItem = hoveredItem;\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [e, hoveredItem, this], this);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [e, hoveredItem, this], this);\n }\n }\n}\nfunction calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight) {\n const itemWidth = calculateItemWidth(legendItem, boxWidth, labelFont, ctx);\n const itemHeight = calculateItemHeight(_itemHeight, legendItem, labelFont.lineHeight);\n return {\n itemWidth,\n itemHeight\n };\n}\nfunction calculateItemWidth(legendItem, boxWidth, labelFont, ctx) {\n let legendItemText = legendItem.text;\n if (legendItemText && typeof legendItemText !== 'string') {\n legendItemText = legendItemText.reduce((a, b) => a.length > b.length ? a : b);\n }\n return boxWidth + labelFont.size / 2 + ctx.measureText(legendItemText).width;\n}\nfunction calculateItemHeight(_itemHeight, legendItem, fontLineHeight) {\n let itemHeight = _itemHeight;\n if (typeof legendItem.text !== 'string') {\n itemHeight = calculateLegendItemHeight(legendItem, fontLineHeight);\n }\n return itemHeight;\n}\nfunction calculateLegendItemHeight(legendItem, fontLineHeight) {\n const labelHeight = legendItem.text ? legendItem.text.length + 0.5 : 0;\n return fontLineHeight * labelHeight;\n}\nfunction isListened(type, opts) {\n if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\nvar plugin_legend = {\n id: 'legend',\n _element: Legend,\n start(chart, _args, options) {\n const legend = chart.legend = new Legend({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n stop(chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n beforeUpdate(chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n afterUpdate(chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n afterEvent(chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n onClick(e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n onHover: null,\n onLeave: null,\n labels: {\n color: ctx => ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n generateLabels(chart) {\n const datasets = chart.data.datasets;\n const _chart$legend$options = chart.legend.options.labels,\n usePointStyle = _chart$legend$options.usePointStyle,\n pointStyle = _chart$legend$options.pointStyle,\n textAlign = _chart$legend$options.textAlign,\n color = _chart$legend$options.color,\n useBorderRadius = _chart$legend$options.useBorderRadius,\n borderRadius = _chart$legend$options.borderRadius;\n return chart._getSortedDatasetMetas().map(meta => {\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: useBorderRadius && (borderRadius || style.borderRadius),\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n title: {\n color: ctx => ctx.chart.options.color,\n display: false,\n position: 'center',\n text: ''\n }\n },\n descriptors: {\n _scriptable: name => !name.startsWith('on'),\n labels: {\n _scriptable: name => !['generateLabels', 'filter', 'sort'].includes(name)\n }\n }\n};\nclass Title extends Element {\n constructor(config) {\n super();\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight) {\n const opts = this.options;\n this.left = 0;\n this.top = 0;\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n _drawArgs(offset) {\n const top = this.top,\n left = this.left,\n bottom = this.bottom,\n right = this.right,\n options = this.options;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {\n titleX,\n titleY,\n maxWidth,\n rotation\n };\n }\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n if (!opts.display) {\n return;\n }\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const _this$_drawArgs = this._drawArgs(offset),\n titleX = _this$_drawArgs.titleX,\n titleY = _this$_drawArgs.titleY,\n maxWidth = _this$_drawArgs.maxWidth,\n rotation = _this$_drawArgs.rotation;\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [titleX, titleY]\n });\n }\n}\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\nvar plugin_title = {\n id: 'title',\n _element: Title,\n start(chart, _args, options) {\n createTitle(chart, options);\n },\n stop(chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n beforeUpdate(chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold'\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false\n }\n};\nconst map = new WeakMap();\nvar plugin_subtitle = {\n id: 'subtitle',\n start(chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n stop(chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n beforeUpdate(chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal'\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false\n }\n};\nconst positioners = {\n average(items) {\n if (!items.length) {\n return false;\n }\n let i, len;\n let x = 0;\n let y = 0;\n let count = 0;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n return {\n x: x / count,\n y: y / count\n };\n },\n nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x,\n y\n };\n }\n};\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n return base;\n}\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\nfunction createTooltipItem(chart, item) {\n const element = item.element,\n datasetIndex = item.datasetIndex,\n index = item.index;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const _controller$getLabelA = controller.getLabelAndValue(index),\n label = _controller$getLabelA.label,\n value = _controller$getLabelA.value;\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\nfunction getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const body = tooltip.body,\n footer = tooltip.footer,\n title = tooltip.title;\n const boxWidth = options.boxWidth,\n boxHeight = options.boxHeight;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight + (titleLineCount - 1) * options.titleSpacing + options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight + (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight + (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop + footerLineCount * footerFont.lineHeight + (footerLineCount - 1) * options.footerSpacing;\n }\n let widthPadding = 0;\n const maxLineWidth = function (line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? boxWidth + 2 + options.boxPadding : 0;\n each(body, bodyItem => {\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n widthPadding = 0;\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n ctx.restore();\n width += padding.width;\n return {\n width,\n height\n };\n}\nfunction determineYAlign(chart, size) {\n const y = size.y,\n height = size.height;\n if (y < height / 2) {\n return 'top';\n } else if (y > chart.height - height / 2) {\n return 'bottom';\n }\n return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const x = size.x,\n width = size.width;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n const x = size.x,\n width = size.width;\n const chartWidth = chart.width,\n _chart$chartArea = chart.chartArea,\n left = _chart$chartArea.left,\n right = _chart$chartArea.right;\n let xAlign = 'center';\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n return xAlign;\n}\nfunction determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\nfunction alignX(size, xAlign) {\n let x = size.x,\n width = size.width;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= width / 2;\n }\n return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n let y = size.y,\n height = size.height;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= height / 2;\n }\n return y;\n}\nfunction getBackgroundPoint(options, size, alignment, chart) {\n const caretSize = options.caretSize,\n caretPadding = options.caretPadding,\n cornerRadius = options.cornerRadius;\n const xAlign = alignment.xAlign,\n yAlign = alignment.yAlign;\n const paddingAndSize = caretSize + caretPadding;\n const _toTRBLCorners = toTRBLCorners(cornerRadius),\n topLeft = _toTRBLCorners.topLeft,\n topRight = _toTRBLCorners.topRight,\n bottomLeft = _toTRBLCorners.bottomLeft,\n bottomRight = _toTRBLCorners.bottomRight;\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n return align === 'center' ? tooltip.x + tooltip.width / 2 : align === 'right' ? tooltip.x + tooltip.width - padding.right : tooltip.x + padding.left;\n}\nfunction getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\nconst defaultCallbacks = {\n beforeTitle: noop,\n title(tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n return '';\n },\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n label(tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n let label = tooltipItem.dataset.label || '';\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0\n };\n },\n labelTextColor() {\n return this.options.bodyColor;\n },\n labelPointStyle(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation\n };\n },\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n};\nfunction invokeCallbackWithFallback(callbacks, name, ctx, arg) {\n const result = callbacks[name].call(ctx, arg);\n if (typeof result === 'undefined') {\n return defaultCallbacks[name].call(ctx, arg);\n }\n return result;\n}\nclass Tooltip extends Element {\n constructor(config) {\n super();\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n if (cached) {\n return cached;\n }\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n return animations;\n }\n getContext() {\n return this.$context || (this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const callbacks = options.callbacks;\n const beforeTitle = invokeCallbackWithFallback(callbacks, 'beforeTitle', this, context);\n const title = invokeCallbackWithFallback(callbacks, 'title', this, context);\n const afterTitle = invokeCallbackWithFallback(callbacks, 'afterTitle', this, context);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(invokeCallbackWithFallback(options.callbacks, 'beforeBody', this, tooltipItems));\n }\n getBody(tooltipItems, options) {\n const callbacks = options.callbacks;\n const bodyItems = [];\n each(tooltipItems, context => {\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(invokeCallbackWithFallback(scoped, 'beforeLabel', this, context)));\n pushOrConcat(bodyItem.lines, invokeCallbackWithFallback(scoped, 'label', this, context));\n pushOrConcat(bodyItem.after, splitNewlines(invokeCallbackWithFallback(scoped, 'afterLabel', this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(invokeCallbackWithFallback(options.callbacks, 'afterBody', this, tooltipItems));\n }\n getFooter(tooltipItems, options) {\n const callbacks = options.callbacks;\n const beforeFooter = invokeCallbackWithFallback(callbacks, 'beforeFooter', this, tooltipItems);\n const footer = invokeCallbackWithFallback(callbacks, 'footer', this, tooltipItems);\n const afterFooter = invokeCallbackWithFallback(callbacks, 'afterFooter', this, tooltipItems);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n }\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n }\n each(tooltipItems, context => {\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(invokeCallbackWithFallback(scoped, 'labelColor', this, context));\n labelPointStyles.push(invokeCallbackWithFallback(scoped, 'labelPointStyle', this, context));\n labelTextColors.push(invokeCallbackWithFallback(scoped, 'labelTextColor', this, context));\n });\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n if (changed && options.external) {\n options.external.call(this, {\n chart: this.chart,\n tooltip: this,\n replay\n });\n }\n }\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n getCaretPosition(tooltipPoint, size, options) {\n const xAlign = this.xAlign,\n yAlign = this.yAlign;\n const caretSize = options.caretSize,\n cornerRadius = options.cornerRadius;\n const _toTRBLCorners2 = toTRBLCorners(cornerRadius),\n topLeft = _toTRBLCorners2.topLeft,\n topRight = _toTRBLCorners2.topRight,\n bottomLeft = _toTRBLCorners2.bottomLeft,\n bottomRight = _toTRBLCorners2.bottomRight;\n const ptX = tooltipPoint.x,\n ptY = tooltipPoint.y;\n const width = size.width,\n height = size.height;\n let x1, x2, x3, y1, y2, y3;\n if (yAlign === 'center') {\n y2 = ptY + height / 2;\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {\n x1,\n x2,\n x3,\n y1,\n y2,\n y3\n };\n }\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColors = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const boxHeight = options.boxHeight,\n boxWidth = options.boxWidth,\n boxPadding = options.boxPadding;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.fillStyle = labelColors.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = isObject(labelColors.borderWidth) ? Math.max(...Object.values(labelColors.borderWidth)) : labelColors.borderWidth || 1;\n ctx.strokeStyle = labelColors.borderColor;\n ctx.setLineDash(labelColors.borderDash || []);\n ctx.lineDashOffset = labelColors.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth - boxPadding);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2);\n const borderRadius = toTRBLCorners(labelColors.borderRadius);\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius\n });\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius\n });\n ctx.fill();\n } else {\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n ctx.fillStyle = this.labelTextColors[i];\n }\n drawBody(pt, ctx, options) {\n const body = this.body;\n const bodySpacing = options.bodySpacing,\n bodyAlign = options.bodyAlign,\n displayColors = options.displayColors,\n boxHeight = options.boxHeight,\n boxWidth = options.boxWidth,\n boxPadding = options.boxPadding;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n const fillLineOfText = function (line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right' ? bodyAlign === 'center' ? boxWidth / 2 + boxPadding : boxWidth + 2 + boxPadding : 0;\n for (i = 0, ilen = body.length; i < ilen; ++i) {\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n each(bodyItem.after, fillLineOfText);\n }\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n drawBackground(pt, ctx, tooltipSize, options) {\n const xAlign = this.xAlign,\n yAlign = this.yAlign;\n const x = pt.x,\n y = pt.y;\n const width = tooltipSize.width,\n height = tooltipSize.height;\n const _toTRBLCorners3 = toTRBLCorners(options.cornerRadius),\n topLeft = _toTRBLCorners3.topLeft,\n topRight = _toTRBLCorners3.topRight,\n bottomLeft = _toTRBLCorners3.bottomLeft,\n bottomRight = _toTRBLCorners3.bottomRight;\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n _willRender() {\n return !!this.opacity;\n }\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n if (!opacity) {\n return;\n }\n this._updateAnimationTarget(options);\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n this.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n this.drawTitle(pt, ctx, options);\n this.drawBody(pt, ctx, options);\n this.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(_ref15 => {\n let datasetIndex = _ref15.datasetIndex,\n index = _ref15.index;\n const meta = this.chart.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n handleEvent(e, replay) {\n let inChartArea = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n const positionChanged = this._positionChanged(active, e);\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n if (changed) {\n this._active = active;\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n this.update(true, replay);\n }\n }\n return changed;\n }\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n if (options.reverse) {\n active.reverse();\n }\n return active;\n }\n _positionChanged(active, e) {\n const caretX = this.caretX,\n caretY = this.caretY,\n options = this.options;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\nTooltip.positioners = positioners;\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({\n chart,\n options\n });\n }\n },\n beforeUpdate(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n reset(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n afterDraw(chart) {\n const tooltip = chart.tooltip;\n if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', _objectSpread(_objectSpread({}, args), {}, {\n cancelable: true\n })) === false) {\n return;\n }\n tooltip.draw(chart.ctx);\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n afterEvent(chart, args) {\n if (chart.tooltip) {\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n args.changed = true;\n }\n }\n },\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold'\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {},\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold'\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts) => opts.bodyFont.size,\n boxWidth: (ctx, opts) => opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart'\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY']\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: defaultCallbacks\n },\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n descriptors: {\n _scriptable: name => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n additionalOptionScopes: ['interaction']\n};\nvar plugins = /*#__PURE__*/Object.freeze({\n __proto__: null,\n Colors: plugin_colors,\n Decimation: plugin_decimation,\n Filler: index,\n Legend: plugin_legend,\n SubTitle: plugin_subtitle,\n Title: plugin_title,\n Tooltip: plugin_tooltip\n});\nconst addIfString = (labels, raw, index, addedLabels) => {\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({\n index,\n label: raw\n });\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\nfunction _getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n}\nclass CategoryScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const _ref16 of added) {\n const index = _ref16.index;\n const label = _ref16.label;\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n determineDataLimits() {\n const _this$getUserBounds2 = this.getUserBounds(),\n minDefined = _this$getUserBounds2.minDefined,\n maxDefined = _this$getUserBounds2.maxDefined;\n let _this$getMinMax = this.getMinMax(true),\n min = _this$getMinMax.min,\n max = _this$getMinMax.max;\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n labels = min === 0 && max === labels.length - 1 ? labels : labels.slice(min, max + 1);\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n for (let value = min; value <= max; value++) {\n ticks.push({\n value\n });\n }\n return ticks;\n }\n getLabelForValue(value) {\n return _getLabelForValue.call(this, value);\n }\n configure() {\n super.configure();\n if (!this.isHorizontal()) {\n this._reversePixels = !this._reversePixels;\n }\n }\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n getBasePixel() {\n return this.bottom;\n }\n}\nCategoryScale.id = 'category';\nCategoryScale.defaults = {\n ticks: {\n callback: _getLabelForValue\n }\n};\nfunction generateTicks$1(generationOptions, dataRange) {\n const ticks = [];\n const MIN_SPACING = 1e-14;\n const bounds = generationOptions.bounds,\n step = generationOptions.step,\n min = generationOptions.min,\n max = generationOptions.max,\n precision = generationOptions.precision,\n count = generationOptions.count,\n maxTicks = generationOptions.maxTicks,\n maxDigits = generationOptions.maxDigits,\n includeBounds = generationOptions.includeBounds;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const rmin = dataRange.min,\n rmax = dataRange.max;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [{\n value: rmin\n }, {\n value: rmax\n }];\n }\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n const decimalPlaces = Math.max(_decimalPlaces(spacing), _decimalPlaces(niceMin));\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({\n value: min\n });\n if (niceMin < min) {\n j++;\n }\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n for (; j < numSpaces; ++j) {\n ticks.push({\n value: Math.round((niceMin + j * spacing) * factor) / factor\n });\n }\n if (maxDefined && includeBounds && niceMax !== max) {\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({\n value: max\n });\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({\n value: niceMax\n });\n }\n return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, _ref17) {\n let horizontal = _ref17.horizontal,\n minRotation = _ref17.minRotation;\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._endValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n return +raw;\n }\n handleTickRangeOptions() {\n const beginAtZero = this.options.beginAtZero;\n const _this$getUserBounds3 = this.getUserBounds(),\n minDefined = _this$getUserBounds3.minDefined,\n maxDefined = _this$getUserBounds3.maxDefined;\n let min = this.min,\n max = this.max;\n const setMin = v => min = minDefined ? min : v;\n const setMax = v => max = maxDefined ? max : v;\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n if (min === max) {\n let offset = max === 0 ? 1 : Math.abs(max * 0.05);\n setMax(max + offset);\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n getTickLimit() {\n const tickOpts = this.options.ticks;\n let maxTicksLimit = tickOpts.maxTicksLimit,\n stepSize = tickOpts.stepSize;\n let maxTicks;\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n return maxTicks;\n }\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n super.configure();\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\nclass LinearScale extends LinearScaleBase {\n determineDataLimits() {\n const _this$getMinMax2 = this.getMinMax(true),\n min = _this$getMinMax2.min,\n max = _this$getMinMax2.max;\n this.min = isNumberFinite(min) ? min : 0;\n this.max = isNumberFinite(max) ? max : 1;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\nLinearScale.id = 'linear';\nLinearScale.defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n};\nconst log10Floor = v => Math.floor(log10(v));\nconst changeExponent = (v, m) => Math.pow(10, log10Floor(v) + m);\nfunction isMajor(tickVal) {\n const remain = tickVal / Math.pow(10, log10Floor(tickVal));\n return remain === 1;\n}\nfunction steps(min, max, rangeExp) {\n const rangeStep = Math.pow(10, rangeExp);\n const start = Math.floor(min / rangeStep);\n const end = Math.ceil(max / rangeStep);\n return end - start;\n}\nfunction startExp(min, max) {\n const range = max - min;\n let rangeExp = log10Floor(range);\n while (steps(min, max, rangeExp) > 10) {\n rangeExp++;\n }\n while (steps(min, max, rangeExp) < 10) {\n rangeExp--;\n }\n return Math.min(rangeExp, log10Floor(min));\n}\nfunction generateTicks(generationOptions, _ref18) {\n let min = _ref18.min,\n max = _ref18.max;\n min = finiteOrDefault(generationOptions.min, min);\n const ticks = [];\n const minExp = log10Floor(min);\n let exp = startExp(min, max);\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n const stepSize = Math.pow(10, exp);\n const base = minExp > exp ? Math.pow(10, minExp) : 0;\n const start = Math.round((min - base) * precision) / precision;\n const offset = Math.floor((min - base) / stepSize / 10) * stepSize * 10;\n let significand = Math.floor((start - offset) / Math.pow(10, exp));\n let value = finiteOrDefault(generationOptions.min, Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision);\n while (value < max) {\n ticks.push({\n value,\n major: isMajor(value),\n significand\n });\n if (significand >= 10) {\n significand = significand < 15 ? 15 : 20;\n } else {\n significand++;\n }\n if (significand >= 20) {\n exp++;\n significand = 2;\n precision = exp >= 0 ? 1 : precision;\n }\n value = Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision;\n }\n const lastTick = finiteOrDefault(generationOptions.max, value);\n ticks.push({\n value: lastTick,\n major: isMajor(lastTick),\n significand\n });\n return ticks;\n}\nclass LogarithmicScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n determineDataLimits() {\n const _this$getMinMax3 = this.getMinMax(true),\n min = _this$getMinMax3.min,\n max = _this$getMinMax3.max;\n this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n if (this._zero && this.min !== this._suggestedMin && !isNumberFinite(this._userMin)) {\n this.min = min === changeExponent(this.min, 0) ? changeExponent(this.min, -1) : changeExponent(this.min, 0);\n }\n this.handleTickRangeOptions();\n }\n handleTickRangeOptions() {\n const _this$getUserBounds4 = this.getUserBounds(),\n minDefined = _this$getUserBounds4.minDefined,\n maxDefined = _this$getUserBounds4.maxDefined;\n let min = this.min;\n let max = this.max;\n const setMin = v => min = minDefined ? min : v;\n const setMax = v => max = maxDefined ? max : v;\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(changeExponent(min, -1));\n setMax(changeExponent(max, +1));\n }\n }\n if (min <= 0) {\n setMin(changeExponent(max, -1));\n }\n if (max <= 0) {\n setMax(changeExponent(min, +1));\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const opts = this.options;\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n getLabelForValue(value) {\n return value === undefined ? '0' : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n configure() {\n const start = this.min;\n super.configure();\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min ? 0 : (log10(value) - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\nLogarithmicScale.id = 'logarithmic';\nLogarithmicScale.defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n};\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [label];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - size / 2,\n end: pos + size / 2\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n return {\n start: pos,\n end: pos + size\n };\n}\nfunction fitWithPointLabels(scale) {\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n scale.setCenterPoint(orig.l - limits.l, limits.r - orig.r, orig.t - limits.t, limits.b - orig.b);\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const extra = getTickBackdropHeight(opts) / 2;\n const outerDistance = scale.drawingArea;\n const additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const size = labelSizes[i];\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n items.push({\n x: pointLabelPosition.x,\n y,\n textAlign,\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n });\n }\n return items;\n}\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= w / 2;\n }\n return x;\n}\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= h / 2;\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\nfunction drawPointLabels(scale, labelCount) {\n const ctx = scale.ctx,\n pointLabels = scale.options.pointLabels;\n for (let i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n const plFont = toFont(optsAtIndex.font);\n const _scale$_pointLabelIte = scale._pointLabelItems[i],\n x = _scale$_pointLabelIte.x,\n y = _scale$_pointLabelIte.y,\n textAlign = _scale$_pointLabelIte.textAlign,\n left = _scale$_pointLabelIte.left,\n top = _scale$_pointLabelIte.top,\n right = _scale$_pointLabelIte.right,\n bottom = _scale$_pointLabelIte.bottom;\n const backdropColor = optsAtIndex.backdropColor;\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(optsAtIndex.borderRadius);\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillStyle = backdropColor;\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\n }\n renderText(ctx, scale._pointLabels[i], x, y + plFont.lineHeight / 2, plFont, {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n });\n }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const ctx = scale.ctx;\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n for (let i = 1; i < labelCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount, borderOpts) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const color = gridLineOpts.color,\n lineWidth = gridLineOpts.lineWidth;\n if (!circular && !labelCount || !color || !lineWidth || radius < 0) {\n return;\n }\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(borderOpts.dash);\n ctx.lineDashOffset = borderOpts.dashOffset;\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\nclass RadialLinearScale extends LinearScaleBase {\n constructor(cfg) {\n super(cfg);\n this.xCenter = undefined;\n this.yCenter = undefined;\n this.drawingArea = undefined;\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n setDimensions() {\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n determineDataLimits() {\n const _this$getMinMax4 = this.getMinMax(false),\n min = _this$getMinMax4.min,\n max = _this$getMinMax4.max;\n this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels().map((value, index) => {\n const label = callback(this.options.pointLabels.callback, [value, index], this);\n return label || label === 0 ? label : '';\n }).filter((v, i) => this.chart.getDataVisibility(i));\n }\n fit() {\n const opts = this.options;\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n getPointPosition(index, distanceFromCenter) {\n let additionalAngle = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n getPointLabelPosition(index) {\n const _this$_pointLabelItem = this._pointLabelItems[index],\n left = _this$_pointLabelItem.left,\n top = _this$_pointLabelItem.top,\n right = _this$_pointLabelItem.right,\n bottom = _this$_pointLabelItem.bottom;\n return {\n left,\n top,\n right,\n bottom\n };\n }\n drawBackground() {\n const _this$options16 = this.options,\n backgroundColor = _this$options16.backgroundColor,\n circular = _this$options16.grid.circular;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const angleLines = opts.angleLines,\n grid = opts.grid,\n border = opts.border;\n const labelCount = this._pointLabels.length;\n let i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach((tick, index) => {\n if (index !== 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const context = this.getContext(index);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n drawRadiusLine(this, optsAtIndex, offset, labelCount, optsAtIndexBorder);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\n for (i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const color = optsAtIndex.color,\n lineWidth = optsAtIndex.lineWidth;\n if (!lineWidth || !color) {\n continue;\n }\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n ctx.restore();\n }\n }\n drawBorder() {}\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\n }\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n this.ticks.forEach((tick, index) => {\n if (index === 0 && !opts.reverse) {\n return;\n }\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(-width / 2 - padding.left, -offset - tickFont.size / 2 - padding.top, width + padding.width, tickFont.size + padding.height);\n }\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color\n });\n });\n ctx.restore();\n }\n drawTitle() {}\n}\nRadialLinearScale.id = 'radialLinear';\nRadialLinearScale.defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n callback(label) {\n return label;\n },\n padding: 5,\n centerPointLabels: false\n }\n};\nRadialLinearScale.defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n};\nRadialLinearScale.descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n};\nconst INTERVALS = {\n millisecond: {\n common: true,\n size: 1,\n steps: 1000\n },\n second: {\n common: true,\n size: 1000,\n steps: 60\n },\n minute: {\n common: true,\n size: 60000,\n steps: 60\n },\n hour: {\n common: true,\n size: 3600000,\n steps: 24\n },\n day: {\n common: true,\n size: 86400000,\n steps: 30\n },\n week: {\n common: false,\n size: 604800000,\n steps: 4\n },\n month: {\n common: true,\n size: 2.628e9,\n steps: 12\n },\n quarter: {\n common: false,\n size: 7.884e9,\n steps: 4\n },\n year: {\n common: true,\n size: 3.154e10\n }\n};\nconst UNITS = /* #__PURE__ */Object.keys(INTERVALS);\nfunction sorter(a, b) {\n return a - b;\n}\nfunction parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n const adapter = scale._adapter;\n const _scale$_parseOpts = scale._parseOpts,\n parser = _scale$_parseOpts.parser,\n round = _scale$_parseOpts.round,\n isoWeekday = _scale$_parseOpts.isoWeekday;\n let value = input;\n if (typeof parser === 'function') {\n value = parser(value);\n }\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string' ? adapter.parse(value, parser) : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true) ? adapter.startOf(value, 'isoWeek', isoWeekday) : adapter.startOf(value, round);\n }\n return +value;\n}\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n return UNITS[ilen - 1];\n}\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\nfunction determineMajorUnit(unit) {\n for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\nfunction addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const _lookup2 = _lookup(timestamps, time),\n lo = _lookup2.lo,\n hi = _lookup2.hi;\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n for (i = 0; i < ilen; ++i) {\n value = values[i];\n map[value] = i;\n ticks.push({\n value,\n major: false\n });\n }\n return ilen === 0 || !majorUnit ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n constructor(props) {\n super(props);\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n this._unit = 'day';\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n init(scaleOpts) {\n let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const time = scaleOpts.time || (scaleOpts.time = {});\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n adapter.init(opts);\n mergeIf(time.displayFormats, adapter.formats());\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n super.init(scaleOpts);\n this._normalized = opts.normalized;\n }\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n let _this$getUserBounds5 = this.getUserBounds(),\n min = _this$getUserBounds5.min,\n max = _this$getUserBounds5.max,\n minDefined = _this$getUserBounds5.minDefined,\n maxDefined = _this$getUserBounds5.maxDefined;\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n if (!minDefined || !maxDefined) {\n _applyBounds(this._getLabelBounds());\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {\n min,\n max\n };\n }\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n const min = this.min;\n const max = this.max;\n const ticks = _filterBetween(timestamps, min, max);\n this._unit = timeOpts.unit || (tickOpts.autoSkip ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min)) : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n if (options.reverse) {\n ticks.reverse();\n }\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n afterAutoSkip() {\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map(tick => +tick.value));\n }\n }\n initOffsets() {\n let timestamps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let start = 0;\n let end = 0;\n let first, last;\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n this._offsets = {\n start,\n end,\n factor: 1 / (start + 1 + end)\n };\n }\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(options.ticks.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n addTick(ticks, time, timestamps);\n }\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n return Object.keys(ticks).sort((a, b) => a - b).map(x => +x);\n }\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n format(value, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const fmt = format || formats[unit];\n return this._adapter.format(value, fmt);\n }\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formatter = options.ticks.callback;\n if (formatter) {\n return callback(formatter, [time, index, ticks], this);\n }\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n return this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n }\n generateTickLabels(ticks) {\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n return {\n w: tickLabelWidth * cosRotation + tickFontSize * sinRotation,\n h: tickLabelWidth * sinRotation + tickFontSize * cosRotation\n };\n }\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const metas = this.getMatchingVisibleMetas();\n if (this._normalized && metas.length) {\n return this._cache.data = metas[0].controller.getAllParsedValues(this);\n }\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n return this._cache.data = this.normalize(timestamps);\n }\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const labels = this.getLabels();\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n timestamps.push(parse(this, labels[i]));\n }\n return this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps);\n }\n normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n}\nTimeScale.id = 'time';\nTimeScale.defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n callback: false,\n major: {\n enabled: false\n }\n }\n};\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n var _lookupByKey2 = _lookupByKey(table, 'pos', val);\n lo = _lookupByKey2.lo;\n hi = _lookupByKey2.hi;\n }\n var _table$lo = table[lo];\n prevSource = _table$lo.pos;\n prevTarget = _table$lo.time;\n var _table$hi = table[hi];\n nextSource = _table$hi.pos;\n nextTarget = _table$hi.time;\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n var _lookupByKey3 = _lookupByKey(table, 'time', val);\n lo = _lookupByKey3.lo;\n hi = _lookupByKey3.hi;\n }\n var _table$lo2 = table[lo];\n prevSource = _table$lo2.time;\n prevTarget = _table$lo2.pos;\n var _table$hi2 = table[hi];\n nextSource = _table$hi2.time;\n nextTarget = _table$hi2.pos;\n }\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n constructor(props) {\n super(props);\n this._table = [];\n this._minPos = undefined;\n this._tableRange = undefined;\n }\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n buildLookupTable(timestamps) {\n const min = this.min,\n max = this.max;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n if (items.length < 2) {\n return [{\n time: min,\n pos: 0\n }, {\n time: max,\n pos: 1\n }];\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({\n time: curr,\n pos: i / (ilen - 1)\n });\n }\n }\n return table;\n }\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n if (timestamps.length) {\n return timestamps;\n }\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n return timestamps;\n }\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\nTimeSeriesScale.id = 'timeseries';\nTimeSeriesScale.defaults = TimeScale.defaults;\nvar scales = /*#__PURE__*/Object.freeze({\n __proto__: null,\n CategoryScale: CategoryScale,\n LinearScale: LinearScale,\n LogarithmicScale: LogarithmicScale,\n RadialLinearScale: RadialLinearScale,\n TimeScale: TimeScale,\n TimeSeriesScale: TimeSeriesScale\n});\nconst registerables = [controllers, elements, plugins, scales];\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, plugin_colors as Colors, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, index as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, elements, layouts, plugins, registerables, registry, scales };","import { Chart, registerables } from '../dist/chart.js';\nChart.register(...registerables);\nexport * from '../dist/chart.js';\nexport default Chart;","/*\nTurbolinks 5.2.0\nCopyright © 2018 Basecamp, LLC\n */\n(function () {\n var t = this;\n (function () {\n (function () {\n this.Turbolinks = {\n supported: function () {\n return null != window.history.pushState && null != window.requestAnimationFrame && null != window.addEventListener;\n }(),\n visit: function (t, r) {\n return e.controller.visit(t, r);\n },\n clearCache: function () {\n return e.controller.clearCache();\n },\n setProgressBarDelay: function (t) {\n return e.controller.setProgressBarDelay(t);\n }\n };\n }).call(this);\n }).call(t);\n var e = t.Turbolinks;\n (function () {\n (function () {\n var t,\n r,\n n,\n o = [].slice;\n e.copyObject = function (t) {\n var e, r, n;\n r = {};\n for (e in t) n = t[e], r[e] = n;\n return r;\n }, e.closest = function (e, r) {\n return t.call(e, r);\n }, t = function () {\n var t, e;\n return t = document.documentElement, null != (e = t.closest) ? e : function (t) {\n var e;\n for (e = this; e;) {\n if (e.nodeType === Node.ELEMENT_NODE && r.call(e, t)) return e;\n e = e.parentNode;\n }\n };\n }(), e.defer = function (t) {\n return setTimeout(t, 1);\n }, e.throttle = function (t) {\n var e;\n return e = null, function () {\n var r;\n return r = 1 <= arguments.length ? o.call(arguments, 0) : [], null != e ? e : e = requestAnimationFrame(function (n) {\n return function () {\n return e = null, t.apply(n, r);\n };\n }(this));\n };\n }, e.dispatch = function (t, e) {\n var r, o, i, s, a, u;\n return a = null != e ? e : {}, u = a.target, r = a.cancelable, o = a.data, i = document.createEvent(\"Events\"), i.initEvent(t, !0, r === !0), i.data = null != o ? o : {}, i.cancelable && !n && (s = i.preventDefault, i.preventDefault = function () {\n return this.defaultPrevented || Object.defineProperty(this, \"defaultPrevented\", {\n get: function () {\n return !0;\n }\n }), s.call(this);\n }), (null != u ? u : document).dispatchEvent(i), i;\n }, n = function () {\n var t;\n return t = document.createEvent(\"Events\"), t.initEvent(\"test\", !0, !0), t.preventDefault(), t.defaultPrevented;\n }(), e.match = function (t, e) {\n return r.call(t, e);\n }, r = function () {\n var t, e, r, n;\n return t = document.documentElement, null != (e = null != (r = null != (n = t.matchesSelector) ? n : t.webkitMatchesSelector) ? r : t.msMatchesSelector) ? e : t.mozMatchesSelector;\n }(), e.uuid = function () {\n var t, e, r;\n for (r = \"\", t = e = 1; 36 >= e; t = ++e) r += 9 === t || 14 === t || 19 === t || 24 === t ? \"-\" : 15 === t ? \"4\" : 20 === t ? (Math.floor(4 * Math.random()) + 8).toString(16) : Math.floor(15 * Math.random()).toString(16);\n return r;\n };\n }).call(this), function () {\n e.Location = function () {\n function t(t) {\n var e, r;\n null == t && (t = \"\"), r = document.createElement(\"a\"), r.href = t.toString(), this.absoluteURL = r.href, e = r.hash.length, 2 > e ? this.requestURL = this.absoluteURL : (this.requestURL = this.absoluteURL.slice(0, -e), this.anchor = r.hash.slice(1));\n }\n var e, r, n, o;\n return t.wrap = function (t) {\n return t instanceof this ? t : new this(t);\n }, t.prototype.getOrigin = function () {\n return this.absoluteURL.split(\"/\", 3).join(\"/\");\n }, t.prototype.getPath = function () {\n var t, e;\n return null != (t = null != (e = this.requestURL.match(/\\/\\/[^\\/]*(\\/[^?;]*)/)) ? e[1] : void 0) ? t : \"/\";\n }, t.prototype.getPathComponents = function () {\n return this.getPath().split(\"/\").slice(1);\n }, t.prototype.getLastPathComponent = function () {\n return this.getPathComponents().slice(-1)[0];\n }, t.prototype.getExtension = function () {\n var t, e;\n return null != (t = null != (e = this.getLastPathComponent().match(/\\.[^.]*$/)) ? e[0] : void 0) ? t : \"\";\n }, t.prototype.isHTML = function () {\n return this.getExtension().match(/^(?:|\\.(?:htm|html|xhtml))$/);\n }, t.prototype.isPrefixedBy = function (t) {\n var e;\n return e = r(t), this.isEqualTo(t) || o(this.absoluteURL, e);\n }, t.prototype.isEqualTo = function (t) {\n return this.absoluteURL === (null != t ? t.absoluteURL : void 0);\n }, t.prototype.toCacheKey = function () {\n return this.requestURL;\n }, t.prototype.toJSON = function () {\n return this.absoluteURL;\n }, t.prototype.toString = function () {\n return this.absoluteURL;\n }, t.prototype.valueOf = function () {\n return this.absoluteURL;\n }, r = function (t) {\n return e(t.getOrigin() + t.getPath());\n }, e = function (t) {\n return n(t, \"/\") ? t : t + \"/\";\n }, o = function (t, e) {\n return t.slice(0, e.length) === e;\n }, n = function (t, e) {\n return t.slice(-e.length) === e;\n }, t;\n }();\n }.call(this), function () {\n var t = function (t, e) {\n return function () {\n return t.apply(e, arguments);\n };\n };\n e.HttpRequest = function () {\n function r(r, n, o) {\n this.delegate = r, this.requestCanceled = t(this.requestCanceled, this), this.requestTimedOut = t(this.requestTimedOut, this), this.requestFailed = t(this.requestFailed, this), this.requestLoaded = t(this.requestLoaded, this), this.requestProgressed = t(this.requestProgressed, this), this.url = e.Location.wrap(n).requestURL, this.referrer = e.Location.wrap(o).absoluteURL, this.createXHR();\n }\n return r.NETWORK_FAILURE = 0, r.TIMEOUT_FAILURE = -1, r.timeout = 60, r.prototype.send = function () {\n var t;\n return this.xhr && !this.sent ? (this.notifyApplicationBeforeRequestStart(), this.setProgress(0), this.xhr.send(), this.sent = !0, \"function\" == typeof (t = this.delegate).requestStarted ? t.requestStarted() : void 0) : void 0;\n }, r.prototype.cancel = function () {\n return this.xhr && this.sent ? this.xhr.abort() : void 0;\n }, r.prototype.requestProgressed = function (t) {\n return t.lengthComputable ? this.setProgress(t.loaded / t.total) : void 0;\n }, r.prototype.requestLoaded = function () {\n return this.endRequest(function (t) {\n return function () {\n var e;\n return 200 <= (e = t.xhr.status) && 300 > e ? t.delegate.requestCompletedWithResponse(t.xhr.responseText, t.xhr.getResponseHeader(\"Turbolinks-Location\")) : (t.failed = !0, t.delegate.requestFailedWithStatusCode(t.xhr.status, t.xhr.responseText));\n };\n }(this));\n }, r.prototype.requestFailed = function () {\n return this.endRequest(function (t) {\n return function () {\n return t.failed = !0, t.delegate.requestFailedWithStatusCode(t.constructor.NETWORK_FAILURE);\n };\n }(this));\n }, r.prototype.requestTimedOut = function () {\n return this.endRequest(function (t) {\n return function () {\n return t.failed = !0, t.delegate.requestFailedWithStatusCode(t.constructor.TIMEOUT_FAILURE);\n };\n }(this));\n }, r.prototype.requestCanceled = function () {\n return this.endRequest();\n }, r.prototype.notifyApplicationBeforeRequestStart = function () {\n return e.dispatch(\"turbolinks:request-start\", {\n data: {\n url: this.url,\n xhr: this.xhr\n }\n });\n }, r.prototype.notifyApplicationAfterRequestEnd = function () {\n return e.dispatch(\"turbolinks:request-end\", {\n data: {\n url: this.url,\n xhr: this.xhr\n }\n });\n }, r.prototype.createXHR = function () {\n return this.xhr = new XMLHttpRequest(), this.xhr.open(\"GET\", this.url, !0), this.xhr.timeout = 1e3 * this.constructor.timeout, this.xhr.setRequestHeader(\"Accept\", \"text/html, application/xhtml+xml\"), this.xhr.setRequestHeader(\"Turbolinks-Referrer\", this.referrer), this.xhr.onprogress = this.requestProgressed, this.xhr.onload = this.requestLoaded, this.xhr.onerror = this.requestFailed, this.xhr.ontimeout = this.requestTimedOut, this.xhr.onabort = this.requestCanceled;\n }, r.prototype.endRequest = function (t) {\n return this.xhr ? (this.notifyApplicationAfterRequestEnd(), null != t && t.call(this), this.destroy()) : void 0;\n }, r.prototype.setProgress = function (t) {\n var e;\n return this.progress = t, \"function\" == typeof (e = this.delegate).requestProgressed ? e.requestProgressed(this.progress) : void 0;\n }, r.prototype.destroy = function () {\n var t;\n return this.setProgress(1), \"function\" == typeof (t = this.delegate).requestFinished && t.requestFinished(), this.delegate = null, this.xhr = null;\n }, r;\n }();\n }.call(this), function () {\n var t = function (t, e) {\n return function () {\n return t.apply(e, arguments);\n };\n };\n e.ProgressBar = function () {\n function e() {\n this.trickle = t(this.trickle, this), this.stylesheetElement = this.createStylesheetElement(), this.progressElement = this.createProgressElement();\n }\n var r;\n return r = 300, e.defaultCSS = \".turbolinks-progress-bar {\\n position: fixed;\\n display: block;\\n top: 0;\\n left: 0;\\n height: 3px;\\n background: #0076ff;\\n z-index: 9999;\\n transition: width \" + r + \"ms ease-out, opacity \" + r / 2 + \"ms \" + r / 2 + \"ms ease-in;\\n transform: translate3d(0, 0, 0);\\n}\", e.prototype.show = function () {\n return this.visible ? void 0 : (this.visible = !0, this.installStylesheetElement(), this.installProgressElement(), this.startTrickling());\n }, e.prototype.hide = function () {\n return this.visible && !this.hiding ? (this.hiding = !0, this.fadeProgressElement(function (t) {\n return function () {\n return t.uninstallProgressElement(), t.stopTrickling(), t.visible = !1, t.hiding = !1;\n };\n }(this))) : void 0;\n }, e.prototype.setValue = function (t) {\n return this.value = t, this.refresh();\n }, e.prototype.installStylesheetElement = function () {\n return document.head.insertBefore(this.stylesheetElement, document.head.firstChild);\n }, e.prototype.installProgressElement = function () {\n return this.progressElement.style.width = 0, this.progressElement.style.opacity = 1, document.documentElement.insertBefore(this.progressElement, document.body), this.refresh();\n }, e.prototype.fadeProgressElement = function (t) {\n return this.progressElement.style.opacity = 0, setTimeout(t, 1.5 * r);\n }, e.prototype.uninstallProgressElement = function () {\n return this.progressElement.parentNode ? document.documentElement.removeChild(this.progressElement) : void 0;\n }, e.prototype.startTrickling = function () {\n return null != this.trickleInterval ? this.trickleInterval : this.trickleInterval = setInterval(this.trickle, r);\n }, e.prototype.stopTrickling = function () {\n return clearInterval(this.trickleInterval), this.trickleInterval = null;\n }, e.prototype.trickle = function () {\n return this.setValue(this.value + Math.random() / 100);\n }, e.prototype.refresh = function () {\n return requestAnimationFrame(function (t) {\n return function () {\n return t.progressElement.style.width = 10 + 90 * t.value + \"%\";\n };\n }(this));\n }, e.prototype.createStylesheetElement = function () {\n var t;\n return t = document.createElement(\"style\"), t.type = \"text/css\", t.textContent = this.constructor.defaultCSS, t;\n }, e.prototype.createProgressElement = function () {\n var t;\n return t = document.createElement(\"div\"), t.className = \"turbolinks-progress-bar\", t;\n }, e;\n }();\n }.call(this), function () {\n var t = function (t, e) {\n return function () {\n return t.apply(e, arguments);\n };\n };\n e.BrowserAdapter = function () {\n function r(r) {\n this.controller = r, this.showProgressBar = t(this.showProgressBar, this), this.progressBar = new e.ProgressBar();\n }\n var n, o, i;\n return i = e.HttpRequest, n = i.NETWORK_FAILURE, o = i.TIMEOUT_FAILURE, r.prototype.visitProposedToLocationWithAction = function (t, e) {\n return this.controller.startVisitToLocationWithAction(t, e);\n }, r.prototype.visitStarted = function (t) {\n return t.issueRequest(), t.changeHistory(), t.loadCachedSnapshot();\n }, r.prototype.visitRequestStarted = function (t) {\n return this.progressBar.setValue(0), t.hasCachedSnapshot() || \"restore\" !== t.action ? this.showProgressBarAfterDelay() : this.showProgressBar();\n }, r.prototype.visitRequestProgressed = function (t) {\n return this.progressBar.setValue(t.progress);\n }, r.prototype.visitRequestCompleted = function (t) {\n return t.loadResponse();\n }, r.prototype.visitRequestFailedWithStatusCode = function (t, e) {\n switch (e) {\n case n:\n case o:\n return this.reload();\n default:\n return t.loadResponse();\n }\n }, r.prototype.visitRequestFinished = function (t) {\n return this.hideProgressBar();\n }, r.prototype.visitCompleted = function (t) {\n return t.followRedirect();\n }, r.prototype.pageInvalidated = function () {\n return this.reload();\n }, r.prototype.showProgressBarAfterDelay = function () {\n return this.progressBarTimeout = setTimeout(this.showProgressBar, this.controller.progressBarDelay);\n }, r.prototype.showProgressBar = function () {\n return this.progressBar.show();\n }, r.prototype.hideProgressBar = function () {\n return this.progressBar.hide(), clearTimeout(this.progressBarTimeout);\n }, r.prototype.reload = function () {\n return window.location.reload();\n }, r;\n }();\n }.call(this), function () {\n var t = function (t, e) {\n return function () {\n return t.apply(e, arguments);\n };\n };\n e.History = function () {\n function r(e) {\n this.delegate = e, this.onPageLoad = t(this.onPageLoad, this), this.onPopState = t(this.onPopState, this);\n }\n return r.prototype.start = function () {\n return this.started ? void 0 : (addEventListener(\"popstate\", this.onPopState, !1), addEventListener(\"load\", this.onPageLoad, !1), this.started = !0);\n }, r.prototype.stop = function () {\n return this.started ? (removeEventListener(\"popstate\", this.onPopState, !1), removeEventListener(\"load\", this.onPageLoad, !1), this.started = !1) : void 0;\n }, r.prototype.push = function (t, r) {\n return t = e.Location.wrap(t), this.update(\"push\", t, r);\n }, r.prototype.replace = function (t, r) {\n return t = e.Location.wrap(t), this.update(\"replace\", t, r);\n }, r.prototype.onPopState = function (t) {\n var r, n, o, i;\n return this.shouldHandlePopState() && (i = null != (n = t.state) ? n.turbolinks : void 0) ? (r = e.Location.wrap(window.location), o = i.restorationIdentifier, this.delegate.historyPoppedToLocationWithRestorationIdentifier(r, o)) : void 0;\n }, r.prototype.onPageLoad = function (t) {\n return e.defer(function (t) {\n return function () {\n return t.pageLoaded = !0;\n };\n }(this));\n }, r.prototype.shouldHandlePopState = function () {\n return this.pageIsLoaded();\n }, r.prototype.pageIsLoaded = function () {\n return this.pageLoaded || \"complete\" === document.readyState;\n }, r.prototype.update = function (t, e, r) {\n var n;\n return n = {\n turbolinks: {\n restorationIdentifier: r\n }\n }, history[t + \"State\"](n, null, e);\n }, r;\n }();\n }.call(this), function () {\n e.HeadDetails = function () {\n function t(t) {\n var e, r, n, s, a, u;\n for (this.elements = {}, n = 0, a = t.length; a > n; n++) u = t[n], u.nodeType === Node.ELEMENT_NODE && (s = u.outerHTML, r = null != (e = this.elements)[s] ? e[s] : e[s] = {\n type: i(u),\n tracked: o(u),\n elements: []\n }, r.elements.push(u));\n }\n var e, r, n, o, i;\n return t.fromHeadElement = function (t) {\n var e;\n return new this(null != (e = null != t ? t.childNodes : void 0) ? e : []);\n }, t.prototype.hasElementWithKey = function (t) {\n return t in this.elements;\n }, t.prototype.getTrackedElementSignature = function () {\n var t, e;\n return function () {\n var r, n;\n r = this.elements, n = [];\n for (t in r) e = r[t].tracked, e && n.push(t);\n return n;\n }.call(this).join(\"\");\n }, t.prototype.getScriptElementsNotInDetails = function (t) {\n return this.getElementsMatchingTypeNotInDetails(\"script\", t);\n }, t.prototype.getStylesheetElementsNotInDetails = function (t) {\n return this.getElementsMatchingTypeNotInDetails(\"stylesheet\", t);\n }, t.prototype.getElementsMatchingTypeNotInDetails = function (t, e) {\n var r, n, o, i, s, a;\n o = this.elements, s = [];\n for (n in o) i = o[n], a = i.type, r = i.elements, a !== t || e.hasElementWithKey(n) || s.push(r[0]);\n return s;\n }, t.prototype.getProvisionalElements = function () {\n var t, e, r, n, o, i, s;\n r = [], n = this.elements;\n for (e in n) o = n[e], s = o.type, i = o.tracked, t = o.elements, null != s || i ? t.length > 1 && r.push.apply(r, t.slice(1)) : r.push.apply(r, t);\n return r;\n }, t.prototype.getMetaValue = function (t) {\n var e;\n return null != (e = this.findMetaElementByName(t)) ? e.getAttribute(\"content\") : void 0;\n }, t.prototype.findMetaElementByName = function (t) {\n var r, n, o, i;\n r = void 0, i = this.elements;\n for (o in i) n = i[o].elements, e(n[0], t) && (r = n[0]);\n return r;\n }, i = function (t) {\n return r(t) ? \"script\" : n(t) ? \"stylesheet\" : void 0;\n }, o = function (t) {\n return \"reload\" === t.getAttribute(\"data-turbolinks-track\");\n }, r = function (t) {\n var e;\n return e = t.tagName.toLowerCase(), \"script\" === e;\n }, n = function (t) {\n var e;\n return e = t.tagName.toLowerCase(), \"style\" === e || \"link\" === e && \"stylesheet\" === t.getAttribute(\"rel\");\n }, e = function (t, e) {\n var r;\n return r = t.tagName.toLowerCase(), \"meta\" === r && t.getAttribute(\"name\") === e;\n }, t;\n }();\n }.call(this), function () {\n e.Snapshot = function () {\n function t(t, e) {\n this.headDetails = t, this.bodyElement = e;\n }\n return t.wrap = function (t) {\n return t instanceof this ? t : \"string\" == typeof t ? this.fromHTMLString(t) : this.fromHTMLElement(t);\n }, t.fromHTMLString = function (t) {\n var e;\n return e = document.createElement(\"html\"), e.innerHTML = t, this.fromHTMLElement(e);\n }, t.fromHTMLElement = function (t) {\n var r, n, o, i;\n return o = t.querySelector(\"head\"), r = null != (i = t.querySelector(\"body\")) ? i : document.createElement(\"body\"), n = e.HeadDetails.fromHeadElement(o), new this(n, r);\n }, t.prototype.clone = function () {\n return new this.constructor(this.headDetails, this.bodyElement.cloneNode(!0));\n }, t.prototype.getRootLocation = function () {\n var t, r;\n return r = null != (t = this.getSetting(\"root\")) ? t : \"/\", new e.Location(r);\n }, t.prototype.getCacheControlValue = function () {\n return this.getSetting(\"cache-control\");\n }, t.prototype.getElementForAnchor = function (t) {\n try {\n return this.bodyElement.querySelector(\"[id='\" + t + \"'], a[name='\" + t + \"']\");\n } catch (e) {}\n }, t.prototype.getPermanentElements = function () {\n return this.bodyElement.querySelectorAll(\"[id][data-turbolinks-permanent]\");\n }, t.prototype.getPermanentElementById = function (t) {\n return this.bodyElement.querySelector(\"#\" + t + \"[data-turbolinks-permanent]\");\n }, t.prototype.getPermanentElementsPresentInSnapshot = function (t) {\n var e, r, n, o, i;\n for (o = this.getPermanentElements(), i = [], r = 0, n = o.length; n > r; r++) e = o[r], t.getPermanentElementById(e.id) && i.push(e);\n return i;\n }, t.prototype.findFirstAutofocusableElement = function () {\n return this.bodyElement.querySelector(\"[autofocus]\");\n }, t.prototype.hasAnchor = function (t) {\n return null != this.getElementForAnchor(t);\n }, t.prototype.isPreviewable = function () {\n return \"no-preview\" !== this.getCacheControlValue();\n }, t.prototype.isCacheable = function () {\n return \"no-cache\" !== this.getCacheControlValue();\n }, t.prototype.isVisitable = function () {\n return \"reload\" !== this.getSetting(\"visit-control\");\n }, t.prototype.getSetting = function (t) {\n return this.headDetails.getMetaValue(\"turbolinks-\" + t);\n }, t;\n }();\n }.call(this), function () {\n var t = [].slice;\n e.Renderer = function () {\n function e() {}\n var r;\n return e.render = function () {\n var e, r, n, o;\n return n = arguments[0], r = arguments[1], e = 3 <= arguments.length ? t.call(arguments, 2) : [], o = function (t, e, r) {\n r.prototype = t.prototype;\n var n = new r(),\n o = t.apply(n, e);\n return Object(o) === o ? o : n;\n }(this, e, function () {}), o.delegate = n, o.render(r), o;\n }, e.prototype.renderView = function (t) {\n return this.delegate.viewWillRender(this.newBody), t(), this.delegate.viewRendered(this.newBody);\n }, e.prototype.invalidateView = function () {\n return this.delegate.viewInvalidated();\n }, e.prototype.createScriptElement = function (t) {\n var e;\n return \"false\" === t.getAttribute(\"data-turbolinks-eval\") ? t : (e = document.createElement(\"script\"), e.textContent = t.textContent, e.async = !1, r(e, t), e);\n }, r = function (t, e) {\n var r, n, o, i, s, a, u;\n for (i = e.attributes, a = [], r = 0, n = i.length; n > r; r++) s = i[r], o = s.name, u = s.value, a.push(t.setAttribute(o, u));\n return a;\n }, e;\n }();\n }.call(this), function () {\n var t,\n r,\n n = function (t, e) {\n function r() {\n this.constructor = t;\n }\n for (var n in e) o.call(e, n) && (t[n] = e[n]);\n return r.prototype = e.prototype, t.prototype = new r(), t.__super__ = e.prototype, t;\n },\n o = {}.hasOwnProperty;\n e.SnapshotRenderer = function (e) {\n function o(t, e, r) {\n this.currentSnapshot = t, this.newSnapshot = e, this.isPreview = r, this.currentHeadDetails = this.currentSnapshot.headDetails, this.newHeadDetails = this.newSnapshot.headDetails, this.currentBody = this.currentSnapshot.bodyElement, this.newBody = this.newSnapshot.bodyElement;\n }\n return n(o, e), o.prototype.render = function (t) {\n return this.shouldRender() ? (this.mergeHead(), this.renderView(function (e) {\n return function () {\n return e.replaceBody(), e.isPreview || e.focusFirstAutofocusableElement(), t();\n };\n }(this))) : this.invalidateView();\n }, o.prototype.mergeHead = function () {\n return this.copyNewHeadStylesheetElements(), this.copyNewHeadScriptElements(), this.removeCurrentHeadProvisionalElements(), this.copyNewHeadProvisionalElements();\n }, o.prototype.replaceBody = function () {\n var t;\n return t = this.relocateCurrentBodyPermanentElements(), this.activateNewBodyScriptElements(), this.assignNewBody(), this.replacePlaceholderElementsWithClonedPermanentElements(t);\n }, o.prototype.shouldRender = function () {\n return this.newSnapshot.isVisitable() && this.trackedElementsAreIdentical();\n }, o.prototype.trackedElementsAreIdentical = function () {\n return this.currentHeadDetails.getTrackedElementSignature() === this.newHeadDetails.getTrackedElementSignature();\n }, o.prototype.copyNewHeadStylesheetElements = function () {\n var t, e, r, n, o;\n for (n = this.getNewHeadStylesheetElements(), o = [], e = 0, r = n.length; r > e; e++) t = n[e], o.push(document.head.appendChild(t));\n return o;\n }, o.prototype.copyNewHeadScriptElements = function () {\n var t, e, r, n, o;\n for (n = this.getNewHeadScriptElements(), o = [], e = 0, r = n.length; r > e; e++) t = n[e], o.push(document.head.appendChild(this.createScriptElement(t)));\n return o;\n }, o.prototype.removeCurrentHeadProvisionalElements = function () {\n var t, e, r, n, o;\n for (n = this.getCurrentHeadProvisionalElements(), o = [], e = 0, r = n.length; r > e; e++) t = n[e], o.push(document.head.removeChild(t));\n return o;\n }, o.prototype.copyNewHeadProvisionalElements = function () {\n var t, e, r, n, o;\n for (n = this.getNewHeadProvisionalElements(), o = [], e = 0, r = n.length; r > e; e++) t = n[e], o.push(document.head.appendChild(t));\n return o;\n }, o.prototype.relocateCurrentBodyPermanentElements = function () {\n var e, n, o, i, s, a, u;\n for (a = this.getCurrentBodyPermanentElements(), u = [], e = 0, n = a.length; n > e; e++) i = a[e], s = t(i), o = this.newSnapshot.getPermanentElementById(i.id), r(i, s.element), r(o, i), u.push(s);\n return u;\n }, o.prototype.replacePlaceholderElementsWithClonedPermanentElements = function (t) {\n var e, n, o, i, s, a, u;\n for (u = [], o = 0, i = t.length; i > o; o++) a = t[o], n = a.element, s = a.permanentElement, e = s.cloneNode(!0), u.push(r(n, e));\n return u;\n }, o.prototype.activateNewBodyScriptElements = function () {\n var t, e, n, o, i, s;\n for (i = this.getNewBodyScriptElements(), s = [], e = 0, o = i.length; o > e; e++) n = i[e], t = this.createScriptElement(n), s.push(r(n, t));\n return s;\n }, o.prototype.assignNewBody = function () {\n return document.body = this.newBody;\n }, o.prototype.focusFirstAutofocusableElement = function () {\n var t;\n return null != (t = this.newSnapshot.findFirstAutofocusableElement()) ? t.focus() : void 0;\n }, o.prototype.getNewHeadStylesheetElements = function () {\n return this.newHeadDetails.getStylesheetElementsNotInDetails(this.currentHeadDetails);\n }, o.prototype.getNewHeadScriptElements = function () {\n return this.newHeadDetails.getScriptElementsNotInDetails(this.currentHeadDetails);\n }, o.prototype.getCurrentHeadProvisionalElements = function () {\n return this.currentHeadDetails.getProvisionalElements();\n }, o.prototype.getNewHeadProvisionalElements = function () {\n return this.newHeadDetails.getProvisionalElements();\n }, o.prototype.getCurrentBodyPermanentElements = function () {\n return this.currentSnapshot.getPermanentElementsPresentInSnapshot(this.newSnapshot);\n }, o.prototype.getNewBodyScriptElements = function () {\n return this.newBody.querySelectorAll(\"script\");\n }, o;\n }(e.Renderer), t = function (t) {\n var e;\n return e = document.createElement(\"meta\"), e.setAttribute(\"name\", \"turbolinks-permanent-placeholder\"), e.setAttribute(\"content\", t.id), {\n element: e,\n permanentElement: t\n };\n }, r = function (t, e) {\n var r;\n return (r = t.parentNode) ? r.replaceChild(e, t) : void 0;\n };\n }.call(this), function () {\n var t = function (t, e) {\n function n() {\n this.constructor = t;\n }\n for (var o in e) r.call(e, o) && (t[o] = e[o]);\n return n.prototype = e.prototype, t.prototype = new n(), t.__super__ = e.prototype, t;\n },\n r = {}.hasOwnProperty;\n e.ErrorRenderer = function (e) {\n function r(t) {\n var e;\n e = document.createElement(\"html\"), e.innerHTML = t, this.newHead = e.querySelector(\"head\"), this.newBody = e.querySelector(\"body\");\n }\n return t(r, e), r.prototype.render = function (t) {\n return this.renderView(function (e) {\n return function () {\n return e.replaceHeadAndBody(), e.activateBodyScriptElements(), t();\n };\n }(this));\n }, r.prototype.replaceHeadAndBody = function () {\n var t, e;\n return e = document.head, t = document.body, e.parentNode.replaceChild(this.newHead, e), t.parentNode.replaceChild(this.newBody, t);\n }, r.prototype.activateBodyScriptElements = function () {\n var t, e, r, n, o, i;\n for (n = this.getScriptElements(), i = [], e = 0, r = n.length; r > e; e++) o = n[e], t = this.createScriptElement(o), i.push(o.parentNode.replaceChild(t, o));\n return i;\n }, r.prototype.getScriptElements = function () {\n return document.documentElement.querySelectorAll(\"script\");\n }, r;\n }(e.Renderer);\n }.call(this), function () {\n e.View = function () {\n function t(t) {\n this.delegate = t, this.htmlElement = document.documentElement;\n }\n return t.prototype.getRootLocation = function () {\n return this.getSnapshot().getRootLocation();\n }, t.prototype.getElementForAnchor = function (t) {\n return this.getSnapshot().getElementForAnchor(t);\n }, t.prototype.getSnapshot = function () {\n return e.Snapshot.fromHTMLElement(this.htmlElement);\n }, t.prototype.render = function (t, e) {\n var r, n, o;\n return o = t.snapshot, r = t.error, n = t.isPreview, this.markAsPreview(n), null != o ? this.renderSnapshot(o, n, e) : this.renderError(r, e);\n }, t.prototype.markAsPreview = function (t) {\n return t ? this.htmlElement.setAttribute(\"data-turbolinks-preview\", \"\") : this.htmlElement.removeAttribute(\"data-turbolinks-preview\");\n }, t.prototype.renderSnapshot = function (t, r, n) {\n return e.SnapshotRenderer.render(this.delegate, n, this.getSnapshot(), e.Snapshot.wrap(t), r);\n }, t.prototype.renderError = function (t, r) {\n return e.ErrorRenderer.render(this.delegate, r, t);\n }, t;\n }();\n }.call(this), function () {\n var t = function (t, e) {\n return function () {\n return t.apply(e, arguments);\n };\n };\n e.ScrollManager = function () {\n function r(r) {\n this.delegate = r, this.onScroll = t(this.onScroll, this), this.onScroll = e.throttle(this.onScroll);\n }\n return r.prototype.start = function () {\n return this.started ? void 0 : (addEventListener(\"scroll\", this.onScroll, !1), this.onScroll(), this.started = !0);\n }, r.prototype.stop = function () {\n return this.started ? (removeEventListener(\"scroll\", this.onScroll, !1), this.started = !1) : void 0;\n }, r.prototype.scrollToElement = function (t) {\n return t.scrollIntoView();\n }, r.prototype.scrollToPosition = function (t) {\n var e, r;\n return e = t.x, r = t.y, window.scrollTo(e, r);\n }, r.prototype.onScroll = function (t) {\n return this.updatePosition({\n x: window.pageXOffset,\n y: window.pageYOffset\n });\n }, r.prototype.updatePosition = function (t) {\n var e;\n return this.position = t, null != (e = this.delegate) ? e.scrollPositionChanged(this.position) : void 0;\n }, r;\n }();\n }.call(this), function () {\n e.SnapshotCache = function () {\n function t(t) {\n this.size = t, this.keys = [], this.snapshots = {};\n }\n var r;\n return t.prototype.has = function (t) {\n var e;\n return e = r(t), e in this.snapshots;\n }, t.prototype.get = function (t) {\n var e;\n if (this.has(t)) return e = this.read(t), this.touch(t), e;\n }, t.prototype.put = function (t, e) {\n return this.write(t, e), this.touch(t), e;\n }, t.prototype.read = function (t) {\n var e;\n return e = r(t), this.snapshots[e];\n }, t.prototype.write = function (t, e) {\n var n;\n return n = r(t), this.snapshots[n] = e;\n }, t.prototype.touch = function (t) {\n var e, n;\n return n = r(t), e = this.keys.indexOf(n), e > -1 && this.keys.splice(e, 1), this.keys.unshift(n), this.trim();\n }, t.prototype.trim = function () {\n var t, e, r, n, o;\n for (n = this.keys.splice(this.size), o = [], t = 0, r = n.length; r > t; t++) e = n[t], o.push(delete this.snapshots[e]);\n return o;\n }, r = function (t) {\n return e.Location.wrap(t).toCacheKey();\n }, t;\n }();\n }.call(this), function () {\n var t = function (t, e) {\n return function () {\n return t.apply(e, arguments);\n };\n };\n e.Visit = function () {\n function r(r, n, o) {\n this.controller = r, this.action = o, this.performScroll = t(this.performScroll, this), this.identifier = e.uuid(), this.location = e.Location.wrap(n), this.adapter = this.controller.adapter, this.state = \"initialized\", this.timingMetrics = {};\n }\n var n;\n return r.prototype.start = function () {\n return \"initialized\" === this.state ? (this.recordTimingMetric(\"visitStart\"), this.state = \"started\", this.adapter.visitStarted(this)) : void 0;\n }, r.prototype.cancel = function () {\n var t;\n return \"started\" === this.state ? (null != (t = this.request) && t.cancel(), this.cancelRender(), this.state = \"canceled\") : void 0;\n }, r.prototype.complete = function () {\n var t;\n return \"started\" === this.state ? (this.recordTimingMetric(\"visitEnd\"), this.state = \"completed\", \"function\" == typeof (t = this.adapter).visitCompleted && t.visitCompleted(this), this.controller.visitCompleted(this)) : void 0;\n }, r.prototype.fail = function () {\n var t;\n return \"started\" === this.state ? (this.state = \"failed\", \"function\" == typeof (t = this.adapter).visitFailed ? t.visitFailed(this) : void 0) : void 0;\n }, r.prototype.changeHistory = function () {\n var t, e;\n return this.historyChanged ? void 0 : (t = this.location.isEqualTo(this.referrer) ? \"replace\" : this.action, e = n(t), this.controller[e](this.location, this.restorationIdentifier), this.historyChanged = !0);\n }, r.prototype.issueRequest = function () {\n return this.shouldIssueRequest() && null == this.request ? (this.progress = 0, this.request = new e.HttpRequest(this, this.location, this.referrer), this.request.send()) : void 0;\n }, r.prototype.getCachedSnapshot = function () {\n var t;\n return !(t = this.controller.getCachedSnapshotForLocation(this.location)) || null != this.location.anchor && !t.hasAnchor(this.location.anchor) || \"restore\" !== this.action && !t.isPreviewable() ? void 0 : t;\n }, r.prototype.hasCachedSnapshot = function () {\n return null != this.getCachedSnapshot();\n }, r.prototype.loadCachedSnapshot = function () {\n var t, e;\n return (e = this.getCachedSnapshot()) ? (t = this.shouldIssueRequest(), this.render(function () {\n var r;\n return this.cacheSnapshot(), this.controller.render({\n snapshot: e,\n isPreview: t\n }, this.performScroll), \"function\" == typeof (r = this.adapter).visitRendered && r.visitRendered(this), t ? void 0 : this.complete();\n })) : void 0;\n }, r.prototype.loadResponse = function () {\n return null != this.response ? this.render(function () {\n var t, e;\n return this.cacheSnapshot(), this.request.failed ? (this.controller.render({\n error: this.response\n }, this.performScroll), \"function\" == typeof (t = this.adapter).visitRendered && t.visitRendered(this), this.fail()) : (this.controller.render({\n snapshot: this.response\n }, this.performScroll), \"function\" == typeof (e = this.adapter).visitRendered && e.visitRendered(this), this.complete());\n }) : void 0;\n }, r.prototype.followRedirect = function () {\n return this.redirectedToLocation && !this.followedRedirect ? (this.location = this.redirectedToLocation, this.controller.replaceHistoryWithLocationAndRestorationIdentifier(this.redirectedToLocation, this.restorationIdentifier), this.followedRedirect = !0) : void 0;\n }, r.prototype.requestStarted = function () {\n var t;\n return this.recordTimingMetric(\"requestStart\"), \"function\" == typeof (t = this.adapter).visitRequestStarted ? t.visitRequestStarted(this) : void 0;\n }, r.prototype.requestProgressed = function (t) {\n var e;\n return this.progress = t, \"function\" == typeof (e = this.adapter).visitRequestProgressed ? e.visitRequestProgressed(this) : void 0;\n }, r.prototype.requestCompletedWithResponse = function (t, r) {\n return this.response = t, null != r && (this.redirectedToLocation = e.Location.wrap(r)), this.adapter.visitRequestCompleted(this);\n }, r.prototype.requestFailedWithStatusCode = function (t, e) {\n return this.response = e, this.adapter.visitRequestFailedWithStatusCode(this, t);\n }, r.prototype.requestFinished = function () {\n var t;\n return this.recordTimingMetric(\"requestEnd\"), \"function\" == typeof (t = this.adapter).visitRequestFinished ? t.visitRequestFinished(this) : void 0;\n }, r.prototype.performScroll = function () {\n return this.scrolled ? void 0 : (\"restore\" === this.action ? this.scrollToRestoredPosition() || this.scrollToTop() : this.scrollToAnchor() || this.scrollToTop(), this.scrolled = !0);\n }, r.prototype.scrollToRestoredPosition = function () {\n var t, e;\n return t = null != (e = this.restorationData) ? e.scrollPosition : void 0, null != t ? (this.controller.scrollToPosition(t), !0) : void 0;\n }, r.prototype.scrollToAnchor = function () {\n return null != this.location.anchor ? (this.controller.scrollToAnchor(this.location.anchor), !0) : void 0;\n }, r.prototype.scrollToTop = function () {\n return this.controller.scrollToPosition({\n x: 0,\n y: 0\n });\n }, r.prototype.recordTimingMetric = function (t) {\n var e;\n return null != (e = this.timingMetrics)[t] ? e[t] : e[t] = new Date().getTime();\n }, r.prototype.getTimingMetrics = function () {\n return e.copyObject(this.timingMetrics);\n }, n = function (t) {\n switch (t) {\n case \"replace\":\n return \"replaceHistoryWithLocationAndRestorationIdentifier\";\n case \"advance\":\n case \"restore\":\n return \"pushHistoryWithLocationAndRestorationIdentifier\";\n }\n }, r.prototype.shouldIssueRequest = function () {\n return \"restore\" === this.action ? !this.hasCachedSnapshot() : !0;\n }, r.prototype.cacheSnapshot = function () {\n return this.snapshotCached ? void 0 : (this.controller.cacheSnapshot(), this.snapshotCached = !0);\n }, r.prototype.render = function (t) {\n return this.cancelRender(), this.frame = requestAnimationFrame(function (e) {\n return function () {\n return e.frame = null, t.call(e);\n };\n }(this));\n }, r.prototype.cancelRender = function () {\n return this.frame ? cancelAnimationFrame(this.frame) : void 0;\n }, r;\n }();\n }.call(this), function () {\n var t = function (t, e) {\n return function () {\n return t.apply(e, arguments);\n };\n };\n e.Controller = function () {\n function r() {\n this.clickBubbled = t(this.clickBubbled, this), this.clickCaptured = t(this.clickCaptured, this), this.pageLoaded = t(this.pageLoaded, this), this.history = new e.History(this), this.view = new e.View(this), this.scrollManager = new e.ScrollManager(this), this.restorationData = {}, this.clearCache(), this.setProgressBarDelay(500);\n }\n return r.prototype.start = function () {\n return e.supported && !this.started ? (addEventListener(\"click\", this.clickCaptured, !0), addEventListener(\"DOMContentLoaded\", this.pageLoaded, !1), this.scrollManager.start(), this.startHistory(), this.started = !0, this.enabled = !0) : void 0;\n }, r.prototype.disable = function () {\n return this.enabled = !1;\n }, r.prototype.stop = function () {\n return this.started ? (removeEventListener(\"click\", this.clickCaptured, !0), removeEventListener(\"DOMContentLoaded\", this.pageLoaded, !1), this.scrollManager.stop(), this.stopHistory(), this.started = !1) : void 0;\n }, r.prototype.clearCache = function () {\n return this.cache = new e.SnapshotCache(10);\n }, r.prototype.visit = function (t, r) {\n var n, o;\n return null == r && (r = {}), t = e.Location.wrap(t), this.applicationAllowsVisitingLocation(t) ? this.locationIsVisitable(t) ? (n = null != (o = r.action) ? o : \"advance\", this.adapter.visitProposedToLocationWithAction(t, n)) : window.location = t : void 0;\n }, r.prototype.startVisitToLocationWithAction = function (t, r, n) {\n var o;\n return e.supported ? (o = this.getRestorationDataForIdentifier(n), this.startVisit(t, r, {\n restorationData: o\n })) : window.location = t;\n }, r.prototype.setProgressBarDelay = function (t) {\n return this.progressBarDelay = t;\n }, r.prototype.startHistory = function () {\n return this.location = e.Location.wrap(window.location), this.restorationIdentifier = e.uuid(), this.history.start(), this.history.replace(this.location, this.restorationIdentifier);\n }, r.prototype.stopHistory = function () {\n return this.history.stop();\n }, r.prototype.pushHistoryWithLocationAndRestorationIdentifier = function (t, r) {\n return this.restorationIdentifier = r, this.location = e.Location.wrap(t), this.history.push(this.location, this.restorationIdentifier);\n }, r.prototype.replaceHistoryWithLocationAndRestorationIdentifier = function (t, r) {\n return this.restorationIdentifier = r, this.location = e.Location.wrap(t), this.history.replace(this.location, this.restorationIdentifier);\n }, r.prototype.historyPoppedToLocationWithRestorationIdentifier = function (t, r) {\n var n;\n return this.restorationIdentifier = r, this.enabled ? (n = this.getRestorationDataForIdentifier(this.restorationIdentifier), this.startVisit(t, \"restore\", {\n restorationIdentifier: this.restorationIdentifier,\n restorationData: n,\n historyChanged: !0\n }), this.location = e.Location.wrap(t)) : this.adapter.pageInvalidated();\n }, r.prototype.getCachedSnapshotForLocation = function (t) {\n var e;\n return null != (e = this.cache.get(t)) ? e.clone() : void 0;\n }, r.prototype.shouldCacheSnapshot = function () {\n return this.view.getSnapshot().isCacheable();\n }, r.prototype.cacheSnapshot = function () {\n var t, r;\n return this.shouldCacheSnapshot() ? (this.notifyApplicationBeforeCachingSnapshot(), r = this.view.getSnapshot(), t = this.lastRenderedLocation, e.defer(function (e) {\n return function () {\n return e.cache.put(t, r.clone());\n };\n }(this))) : void 0;\n }, r.prototype.scrollToAnchor = function (t) {\n var e;\n return (e = this.view.getElementForAnchor(t)) ? this.scrollToElement(e) : this.scrollToPosition({\n x: 0,\n y: 0\n });\n }, r.prototype.scrollToElement = function (t) {\n return this.scrollManager.scrollToElement(t);\n }, r.prototype.scrollToPosition = function (t) {\n return this.scrollManager.scrollToPosition(t);\n }, r.prototype.scrollPositionChanged = function (t) {\n var e;\n return e = this.getCurrentRestorationData(), e.scrollPosition = t;\n }, r.prototype.render = function (t, e) {\n return this.view.render(t, e);\n }, r.prototype.viewInvalidated = function () {\n return this.adapter.pageInvalidated();\n }, r.prototype.viewWillRender = function (t) {\n return this.notifyApplicationBeforeRender(t);\n }, r.prototype.viewRendered = function () {\n return this.lastRenderedLocation = this.currentVisit.location, this.notifyApplicationAfterRender();\n }, r.prototype.pageLoaded = function () {\n return this.lastRenderedLocation = this.location, this.notifyApplicationAfterPageLoad();\n }, r.prototype.clickCaptured = function () {\n return removeEventListener(\"click\", this.clickBubbled, !1), addEventListener(\"click\", this.clickBubbled, !1);\n }, r.prototype.clickBubbled = function (t) {\n var e, r, n;\n return this.enabled && this.clickEventIsSignificant(t) && (r = this.getVisitableLinkForNode(t.target)) && (n = this.getVisitableLocationForLink(r)) && this.applicationAllowsFollowingLinkToLocation(r, n) ? (t.preventDefault(), e = this.getActionForLink(r), this.visit(n, {\n action: e\n })) : void 0;\n }, r.prototype.applicationAllowsFollowingLinkToLocation = function (t, e) {\n var r;\n return r = this.notifyApplicationAfterClickingLinkToLocation(t, e), !r.defaultPrevented;\n }, r.prototype.applicationAllowsVisitingLocation = function (t) {\n var e;\n return e = this.notifyApplicationBeforeVisitingLocation(t), !e.defaultPrevented;\n }, r.prototype.notifyApplicationAfterClickingLinkToLocation = function (t, r) {\n return e.dispatch(\"turbolinks:click\", {\n target: t,\n data: {\n url: r.absoluteURL\n },\n cancelable: !0\n });\n }, r.prototype.notifyApplicationBeforeVisitingLocation = function (t) {\n return e.dispatch(\"turbolinks:before-visit\", {\n data: {\n url: t.absoluteURL\n },\n cancelable: !0\n });\n }, r.prototype.notifyApplicationAfterVisitingLocation = function (t) {\n return e.dispatch(\"turbolinks:visit\", {\n data: {\n url: t.absoluteURL\n }\n });\n }, r.prototype.notifyApplicationBeforeCachingSnapshot = function () {\n return e.dispatch(\"turbolinks:before-cache\");\n }, r.prototype.notifyApplicationBeforeRender = function (t) {\n return e.dispatch(\"turbolinks:before-render\", {\n data: {\n newBody: t\n }\n });\n }, r.prototype.notifyApplicationAfterRender = function () {\n return e.dispatch(\"turbolinks:render\");\n }, r.prototype.notifyApplicationAfterPageLoad = function (t) {\n return null == t && (t = {}), e.dispatch(\"turbolinks:load\", {\n data: {\n url: this.location.absoluteURL,\n timing: t\n }\n });\n }, r.prototype.startVisit = function (t, e, r) {\n var n;\n return null != (n = this.currentVisit) && n.cancel(), this.currentVisit = this.createVisit(t, e, r), this.currentVisit.start(), this.notifyApplicationAfterVisitingLocation(t);\n }, r.prototype.createVisit = function (t, r, n) {\n var o, i, s, a, u;\n return i = null != n ? n : {}, a = i.restorationIdentifier, s = i.restorationData, o = i.historyChanged, u = new e.Visit(this, t, r), u.restorationIdentifier = null != a ? a : e.uuid(), u.restorationData = e.copyObject(s), u.historyChanged = o, u.referrer = this.location, u;\n }, r.prototype.visitCompleted = function (t) {\n return this.notifyApplicationAfterPageLoad(t.getTimingMetrics());\n }, r.prototype.clickEventIsSignificant = function (t) {\n return !(t.defaultPrevented || t.target.isContentEditable || t.which > 1 || t.altKey || t.ctrlKey || t.metaKey || t.shiftKey);\n }, r.prototype.getVisitableLinkForNode = function (t) {\n return this.nodeIsVisitable(t) ? e.closest(t, \"a[href]:not([target]):not([download])\") : void 0;\n }, r.prototype.getVisitableLocationForLink = function (t) {\n var r;\n return r = new e.Location(t.getAttribute(\"href\")), this.locationIsVisitable(r) ? r : void 0;\n }, r.prototype.getActionForLink = function (t) {\n var e;\n return null != (e = t.getAttribute(\"data-turbolinks-action\")) ? e : \"advance\";\n }, r.prototype.nodeIsVisitable = function (t) {\n var r;\n return (r = e.closest(t, \"[data-turbolinks]\")) ? \"false\" !== r.getAttribute(\"data-turbolinks\") : !0;\n }, r.prototype.locationIsVisitable = function (t) {\n return t.isPrefixedBy(this.view.getRootLocation()) && t.isHTML();\n }, r.prototype.getCurrentRestorationData = function () {\n return this.getRestorationDataForIdentifier(this.restorationIdentifier);\n }, r.prototype.getRestorationDataForIdentifier = function (t) {\n var e;\n return null != (e = this.restorationData)[t] ? e[t] : e[t] = {};\n }, r;\n }();\n }.call(this), function () {\n !function () {\n var t, e;\n if ((t = e = document.currentScript) && !e.hasAttribute(\"data-turbolinks-suppress-warning\")) for (; t = t.parentNode;) if (t === document.body) return console.warn(\"You are loading Turbolinks from a